diff --git a/COPYING b/COPYING index d159169d1..829ec6417 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/Doxyfile b/Doxyfile index 8a1f02e03..957ba60e1 100644 --- a/Doxyfile +++ b/Doxyfile @@ -97,7 +97,7 @@ EXCLUDE_PATTERNS = */3rdparty */.svn */script/api EXAMPLE_PATH = EXAMPLE_PATTERNS = * EXAMPLE_RECURSIVE = NO -IMAGE_PATH = +IMAGE_PATH =./docs/ INPUT_FILTER = FILTER_PATTERNS = FILTER_SOURCE_FILES = NO @@ -202,7 +202,7 @@ SKIP_FUNCTION_MACROS = YES # Configuration::additions related to external references #--------------------------------------------------------------------------- TAGFILES = -GENERATE_TAGFILE = openttd.tag +GENERATE_TAGFILE = objs/openttd.tag ALLEXTERNALS = NO EXTERNAL_GROUPS = YES PERL_PATH = /usr/bin/perl diff --git a/Makefile.bundle.in b/Makefile.bundle.in index 64fb11ab7..63edb62d9 100644 --- a/Makefile.bundle.in +++ b/Makefile.bundle.in @@ -26,11 +26,13 @@ endif # An OSX application bundle needs the data files, lang files and openttd executable in a different location. ifdef OSXAPP AI_DIR = $(BUNDLE_DIR)/$(OSXAPP)/Contents/Resources/ai +GAME_DIR = $(BUNDLE_DIR)/$(OSXAPP)/Contents/Resources/game BASESET_DIR = $(BUNDLE_DIR)/$(OSXAPP)/Contents/Resources/baseset LANG_DIR = $(BUNDLE_DIR)/$(OSXAPP)/Contents/Resources/lang TTD_DIR = $(BUNDLE_DIR)/$(OSXAPP)/Contents/MacOS else AI_DIR = $(BUNDLE_DIR)/ai +GAME_DIR = $(BUNDLE_DIR)/game BASESET_DIR = $(BUNDLE_DIR)/baseset LANG_DIR = $(BUNDLE_DIR)/lang TTD_DIR = $(BUNDLE_DIR) @@ -45,6 +47,7 @@ bundle: all $(Q)mkdir -p "$(BUNDLE_DIR)/scripts" $(Q)mkdir -p "$(TTD_DIR)" $(Q)mkdir -p "$(AI_DIR)" + $(Q)mkdir -p "$(GAME_DIR)" $(Q)mkdir -p "$(BASESET_DIR)" $(Q)mkdir -p "$(LANG_DIR)" ifdef OSXAPP @@ -59,6 +62,7 @@ ifeq ($(OS),UNIX) endif $(Q)cp "$(BIN_DIR)/$(TTD)" "$(TTD_DIR)/" $(Q)cp "$(BIN_DIR)/ai/"compat_*.nut "$(AI_DIR)/" + $(Q)cp "$(BIN_DIR)/game/"compat_*.nut "$(GAME_DIR)/" $(Q)cp "$(BIN_DIR)/baseset/"*.grf "$(BASESET_DIR)/" $(Q)cp "$(BIN_DIR)/baseset/"*.obg "$(BASESET_DIR)/" $(Q)cp "$(BIN_DIR)/baseset/"*.obs "$(BASESET_DIR)/" @@ -86,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 45fb919f5..81089efb1 100644 --- a/Makefile.grf.in +++ b/Makefile.grf.in @@ -20,6 +20,8 @@ ROOT_DIR = !!ROOT_DIR!! GRF_DIR = $(ROOT_DIR)/media/extra_grf +BASESET_DIR = $(ROOT_DIR)/media/baseset +LANG_DIR = $(ROOT_DIR)/src/lang BIN_DIR = !!BIN_DIR!!/baseset OBJS_DIR = !!GRF_OBJS_DIR!! OS = !!OS!! @@ -36,6 +38,7 @@ endif GRFCODEC := !!GRFCODEC!! NFORENUM := !!NFORENUM!! +CC_BUILD := !!CC_BUILD!! MD5SUM := $(shell [ "$(OS)" = "OSX" ] && echo "md5 -r" || echo "md5sum") # Some "should not be changed" settings. @@ -44,7 +47,7 @@ PNG_FILES := $(GRF_DIR)/*.png $(GRF_DIR)/rivers/*.png # Build the GRF. ifdef GRFCODEC -all: $(BIN_DIR)/openttd.grf +all: $(BIN_DIR)/openttd.grf $(BIN_DIR)/orig_dos.obg $(BIN_DIR)/orig_dos_de.obg $(BIN_DIR)/orig_win.obg $(BIN_DIR)/orig_dos.obs $(BIN_DIR)/orig_win.obs $(BIN_DIR)/no_sound.obs $(BIN_DIR)/orig_win.obm $(BIN_DIR)/no_music.obm else all: endif @@ -53,20 +56,33 @@ endif $(OBJS_DIR)/sprites: $(Q)-mkdir "$@" -# Generic -$(BIN_DIR)/openttd.grf: $(OBJS_DIR)/openttd.grf - $(Q)cp $(OBJS_DIR)/openttd.grf $(BIN_DIR)/openttd.grf - $(E) '$(STAGE) Updating base graphics sets' - $(Q) for grf in $(BIN_DIR)/orig*.obg; do sed 's/^OPENTTD.GRF = [0-9a-f]*$$/OPENTTD.GRF = '`$(MD5SUM) $(BIN_DIR)/openttd.grf | sed 's@ .*@@'`'/' $$grf > $$grf.tmp && mv $$grf.tmp $$grf; done +$(OBJS_DIR)/langfiles.tmp: $(LANG_DIR)/*.txt + $(E) '$(STAGE) Collecting baseset translations' + $(Q) cat $^ > $@ + +$(BIN_DIR)/%.obg: $(BASESET_DIR)/%.obg $(BIN_DIR)/openttd.grf $(OBJS_DIR)/langfiles.tmp $(BASESET_DIR)/translations.awk + $(E) '$(STAGE) Updating $(notdir $@)' + $(Q) sed 's/^OPENTTD.GRF = *[0-9a-f]*$$/OPENTTD.GRF = '`$(MD5SUM) $(BIN_DIR)/openttd.grf | sed 's@ .*@@'`'/' $< > $@.tmp + $(Q) awk -v langfiles='$(OBJS_DIR)/langfiles.tmp' -f $(BASESET_DIR)/translations.awk $@.tmp >$@ + $(Q) rm $@.tmp + +$(BIN_DIR)/%.obs: $(BASESET_DIR)/%.obs $(OBJS_DIR)/langfiles.tmp $(BASESET_DIR)/translations.awk + $(E) '$(STAGE) Updating $(notdir $@)' + $(Q) awk -v langfiles='$(OBJS_DIR)/langfiles.tmp' -f $(BASESET_DIR)/translations.awk $< >$@ -# Yeah, we'd like to use -i in the sed, but Mac OS X's sed and GNU sed just can't agree on the usage of -i. In any case either one of them fails. -$(OBJS_DIR)/openttd.grf: $(PNG_FILES) $(NFO_FILES) $(OBJS_DIR)/sprites +$(BIN_DIR)/%.obm: $(BASESET_DIR)/%.obm $(OBJS_DIR)/langfiles.tmp $(BASESET_DIR)/translations.awk + $(E) '$(STAGE) Updating $(notdir $@)' + $(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 $(E) '$(STAGE) Assembling openttd.nfo' $(Q)-cp $(PNG_FILES) $(OBJS_DIR)/sprites 2> /dev/null - $(Q) gcc -I$(GRF_DIR) -C -E - < "$(GRF_DIR)/openttd.nfo" | sed -e '/^#/d' -e '/^$$/d' > $(OBJS_DIR)/sprites/openttd.nfo + $(Q) $(CC_BUILD) -nostdinc -I$(GRF_DIR) -C -E - < "$(GRF_DIR)/openttd.nfo" | sed -e '/^#/d' -e '/^$$/d' > $(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 + $(Q)cp $(OBJS_DIR)/openttd.grf $(BIN_DIR)/openttd.grf # Clean up temporary files. clean: diff --git a/Makefile.in b/Makefile.in index b947e436f..0d50fc1b1 100644 --- a/Makefile.in +++ b/Makefile.in @@ -144,17 +144,15 @@ mrproper: # output of profiling $(Q)rm -f $(BIN_DIR)/gmon.out # output of generating 'API' documentation - $(Q)rm -f $(ROOT_DIR)/openttd.tag $(Q)rm -rf $(ROOT_DIR)/docs/source -# output of generating AI API documentation - $(Q)rm -f $(SRC_DIR)/ai/api/openttd.tag $(Q)rm -rf $(ROOT_DIR)/docs/aidocs + $(Q)rm -rf $(ROOT_DIR)/docs/gamedocs # directories created by OpenTTD on regression testing $(Q)rm -rf $(BIN_DIR)/ai/regression/content_download $(BIN_DIR)/ai/regression/save $(BIN_DIR)/ai/regression/scenario distclean: mrproper maintainer-clean: distclean - $(Q)rm -f $(BIN_DIR)/baseset/openttd.grf + $(Q)rm -f $(BIN_DIR)/baseset/openttd.grf $(BIN_DIR)/baseset/*.obg $(BIN_DIR)/baseset/*.obs $(BIN_DIR)/baseset/*.obm depend: @for dir in $(SRC_DIRS); do \ diff --git a/Makefile.lang.in b/Makefile.lang.in index 3df524d74..fbed06b79 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 fa00c7b90..d89501d21 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 df515e03a..1d654d283 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 $@ $< @@ -276,7 +288,7 @@ endian_target.h: $(ENDIAN_CHECK) $(CONFIG_CACHE_ENDIAN) $(ENDIAN_CHECK): $(SRC_DIR)/endian_check.cpp $(E) '$(STAGE) Compiling and Linking $@' - $(Q)$(CXX_BUILD) $(CFLAGS_BUILD) $(CXXFLAGS_BUILD) $< -o $@ + $(Q)$(CXX_BUILD) $(CFLAGS_BUILD) $(CXXFLAGS_BUILD) $(LDFLAGS_BUILD) $< -o $@ # Revision files diff --git a/bin/ai/compat_0.7.nut b/bin/ai/compat_0.7.nut index a2c605ed2..44e6acff9 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 9d226cf89..5e7dd441f 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 cb539a721..32127b438 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 f039c59d8..0082415e4 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 fe985b90d..036f3b5c3 100644 --- a/bin/ai/compat_1.3.nut +++ b/bin/ai/compat_1.3.nut @@ -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.3 API compatibility in effect."); diff --git a/bin/ai/compat_1.4.nut b/bin/ai/compat_1.4.nut new file mode 100644 index 000000000..3829bcc8e --- /dev/null +++ b/bin/ai/compat_1.4.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.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 000000000..fe985b90d --- /dev/null +++ b/bin/ai/compat_1.5.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/regression.nut b/bin/ai/regression/regression.nut index 5e8533a2e..72a0c5a97 100644 --- a/bin/ai/regression/regression.nut +++ b/bin/ai/regression/regression.nut @@ -1234,10 +1234,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,6 +1250,25 @@ function Regression::Station() print(" GetNearestTown(): " + AIStation.GetNearestTown(10000)); print(" GetNearestTown(): " + AIStation.GetNearestTown(3)); + print(""); + 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)); + } + } + } + } + local list = AIStationList(AIStation.STATION_BUS_STOP + AIStation.STATION_TRUCK_STOP); print(""); diff --git a/bin/ai/regression/regression.txt b/bin/ai/regression/regression.txt index 0d3736e41..e6f30d220 100644 --- a/bin/ai/regression/regression.txt +++ b/bin/ai/regression/regression.txt @@ -588,7 +588,7 @@ ERROR: IsEnd() is invalid as Begin() is never called SetName(): false GetLastErrorString(): ERR_NAME_IS_NOT_UNIQUE GetName(): Regression - GetPresidentName(): P. Sharkey + GetPresidentName(): E. McAlpine SetPresidentName(): true GetPresidentName(): Regression AI GetBankBalance(): 100000 @@ -877,7 +877,7 @@ ERROR: IsEnd() is invalid as Begin() is never called GetName(): Wooden rail bridge GetMaxSpeed(): 32 GetPrice(): 450 - GetMaxLength(): 102 + GetMaxLength(): 66 GetMinLength(): 2 Bridge 1 IsValidBridge(): true @@ -905,14 +905,14 @@ ERROR: IsEnd() is invalid as Begin() is never called GetName(): Steel suspension rail bridge GetMaxSpeed(): 96 GetPrice(): 1042 - GetMaxLength(): 102 + GetMaxLength(): 66 GetMinLength(): 5 Bridge 5 IsValidBridge(): true GetName(): Steel suspension rail bridge GetMaxSpeed(): 112 GetPrice(): 1081 - GetMaxLength(): 102 + GetMaxLength(): 66 GetMinLength(): 5 Bridge 6 IsValidBridge(): true @@ -1012,9 +1012,9 @@ ERROR: IsEnd() is invalid as Begin() is never called 1 => 630 0 => 450 MaxLength ListDump: - 5 => 102 - 4 => 102 - 0 => 102 + 5 => 66 + 4 => 66 + 0 => 66 3 => 12 8 => 11 7 => 10 @@ -5079,7 +5079,7 @@ ERROR: IsEnd() is invalid as Begin() is never called GetPlaneType(): -1 Engine 211 IsValidEngine(): true - GetName(): Yate Cargo ship + GetName(): Yate Cargo Ship GetCargoType(): 5 CanRefitCargo(): true GetCapacity(): 160 @@ -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,6 +7501,44 @@ ERROR: IsEnd() is invalid as Begin() is never called GetNearestTown(): 65535 GetNearestTown(): 10 +--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 + --StationList-- Count(): 2 Location ListDump: @@ -9118,8 +9153,8 @@ ERROR: IsEnd() is invalid as Begin() is never called 5 => 0 4 => 0 CargoRating(1) ListDump: - 5 => 69 - 4 => 69 + 5 => -1 + 4 => -1 DistanceManhattanToTile(30000) ListDump: 5 => 106 4 => 96 diff --git a/bin/ai/regression/regression_info.nut b/bin/ai/regression/regression_info.nut index e4846840e..6eb19140d 100644 --- a/bin/ai/regression/regression_info.nut +++ b/bin/ai/regression/regression_info.nut @@ -6,7 +6,7 @@ class Regression extends AIInfo { 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 GetVersion() { return 1; } - function GetAPIVersion() { return "1.3"; } + function GetAPIVersion() { return "1.5"; } function GetDate() { return "2007-03-18"; } function CreateInstance() { return "Regression"; } } diff --git a/bin/baseset/no_music.obm b/bin/baseset/no_music.obm index d32f75435..9482979c2 100644 --- a/bin/baseset/no_music.obm +++ b/bin/baseset/no_music.obm @@ -10,34 +10,50 @@ 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.bg_BG = Празен музикален пакет. description.ca_ES = Un joc de música sense cap música. description.cs_CZ = Prázná hudební sada. -description.da_DA = En musikpakke uden musik. +description.cy_GB = Pecyn cerddoriaeth heb unrhyw gerddoriaeth ynddo. +description.da_DK = En musikpakke uden musik. description.de_DE = Ein Musikset ohne Musik. description.el_GR = Ένα πάκετο μουσικής χωρίς πραγματική μουσική. -description.en_GB = A music pack without actual music. +description.en_AU = A music pack without actual music. description.en_US = A music pack without actual music. description.es_ES = Un conjunto de música vacío. -description.et_ET = Muusikakomplekt ilma igasuguse muusikata. +description.et_EE = Muusikakogu ilma muusikata. description.fi_FI = Musiikkipaketti, jossa ei ole musiikkia. description.fr_FR = Un pack de musiques sans musiques. +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. description.hu_HU = Zenei alapcsomag zene nélkül. -description.id_ID = Paket musik tanpa berisi musik. +description.id_ID = Paket musik tanpa musik sungguhan. +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.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. description.pl_PL = Zestaw utworów muzycznych nie zawierający żadnej muzyki. +description.pt_BR = Um pacote de músicas sem músicas. description.pt_PT = Um conjunto de música vazio. description.ro_RO = Un set de muzică fără muzică inclusă. description.ru_RU = "Пустой" набор музыкального оформления, не содержащий никакой музыки. description.sk_SK = Sada hudby neobsahujúca hudbu. -description.sl_SL = Glasbeni paket z vključeno glasbo. +description.sl_SI = Glasbeni paket z vključeno glasbo. description.sr_RS = Prazan skup muzičkih numera. 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 = 不含任何音樂的音樂集。 [files] diff --git a/bin/baseset/no_sound.obs b/bin/baseset/no_sound.obs index 003c368f3..3fa75d2f9 100644 --- a/bin/baseset/no_sound.obs +++ b/bin/baseset/no_sound.obs @@ -10,34 +10,50 @@ 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.bg_BG = Празен звуков пакет. description.ca_ES = Un joc de sons sense cap so. description.cs_CZ = Prázdná sada zvuků. -description.da_DA = En lydpakke uden lyde. +description.cy_GB = Pecyn sain heb unrhyw effeithiau sain ynddo. +description.da_DK = En lydpakke uden lyde. description.de_DE = Basissounds ohne Sound. description.el_GR = Ένα πάκετο ήχων χώρις ήχους. -description.en_GB = A sound pack without any sounds. +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_ET = Ilma häälteta helipakk. -description.fi_FI = Äänipaketti ilman ääniä. +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.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. description.hu_HU = Hang alapcsomag hangok nélkül. -description.id_ID = Paket efek suara tanpa berisi suara. +description.id_ID = Paket efek suara tanpa suara apapun. +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.lt_LT = Garsų pakas be jokių garsų. description.nb_NO = En lydpakke uten noen lyder. description.nl_NL = Een geluidset zonder geluid. description.nn_NO = Ei lydpakke utan nokon lydar. description.pl_PL = Zestaw dźwięków nie zawierający żadnych dźwięków. +description.pt_BR = Um pacote de sons sem sons. description.pt_PT = Um conjunto de sons vazio. description.ro_RO = Un set de sunete fără nici un sunet inclus. description.ru_RU = "Пустой" набор звукового оформления, не содержащий никаких звуков. description.sk_SK = Zvuková sada neobsahujúca zvuky. -description.sl_SL = Zvočni paket brez zvoka. +description.sl_SI = Zvočni paket brez zvoka. description.sr_RS = Prazan skup zvukova. 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 = 不含任何音效的音效集。 [files] diff --git a/bin/baseset/openttd.grf b/bin/baseset/openttd.grf index 554a330f5..5ee311580 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 72e5e5255..d5f20332b 100644 --- a/bin/baseset/orig_dos.obg +++ b/bin/baseset/orig_dos.obg @@ -11,34 +11,49 @@ 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.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). -description.da_DA = Originalgrafik fra Transport Tycoon Deluxe DOS-version. +description.cy_GB = Graffeg gwreiddiol fersiwn DOS o Transport Tycoon Deluxe. +description.da_DK = Originalgrafik fra Transport Tycoon Deluxe DOS-version. description.de_DE = Original Transport Tycoon Deluxe DOS Basisgrafiken. description.el_GR = Αρχικά γραφικά από το Transport Tycoon Deluxe έκδοση DOS. -description.en_GB = Original Transport Tycoon Deluxe DOS edition graphics. +description.en_AU = Original Transport Tycoon Deluxe DOS edition graphics. description.en_US = Original Transport Tycoon Deluxe DOS edition graphics. description.es_ES = Gráficos originales de Transport Tycoon Deluxe versión DOS. -description.et_ET = Algse Transport Tycoon Deluxe DOSi versiooni graafika. -description.fi_FI = Alkuperäiset Transport Tycoon Deluxe DOS grafiikat. +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.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. description.hu_HU = Az eredeti Transport Tycoon Deluxe DOS verziójának grafikája. description.id_ID = Grafik orisinil Transport Tycoon Deluxe versi DOS. +description.is_IS = Upprunalega grafíkin úr Transport Tycoon Deluxe DOS útgáfunni. description.it_IT = Grafica originale di Transport Tycoon Deluxe, edizione DOS. +description.ja_JP = Transport Tycoon Deluxe オリジナル版 グラフィック (DOS) +description.ko_KR = 오리지널 트랜스포트 타이쿤 디럭스 도스 에디션의 그래픽입니다. +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. description.nl_NL = Originele graphics van de Transport Tycoon Deluxe DOS-versie. description.nn_NO = Original grafikk frå Transport Tycoon Deluxe for DOS. description.pl_PL = Oryginalna edycja grafik dla Transport Tycoon Deluxe DOS. +description.pt_BR = Gráficos Originais do Transport Tycoon Deluxe, Edição DOS. description.pt_PT = Gráficos originais da edição DOS de Transport Tycoon Deluxe. description.ro_RO = Setul grafic original al Transport Tycoon Deluxe pentru DOS. description.ru_RU = Оригинальная графика из Transport Tycoon Deluxe для DOS. description.sk_SK = Pôvodná grafika Transport Tycoon Deluxe (DOS). -description.sl_SL = Originalna grafika Transport Tycoon Deluxe za različico DOS. +description.sl_SI = Originalna grafika Transport Tycoon Deluxe za različico DOS. description.sr_RS = Originalni skup grafika Transport Tycoon Deluxe DOS izdanja. description.sv_SE = Originalgrafiken från Transport Tycoon Deluxe, DOS-utgåvan. -description.tr_TR = Orijinal Transport Tycoon Deluxe DOS sürümü grafikleri. +description.ta_IN = அசல் டிரான்ஸ்ஃபோர்ட் டைகூன் டீலக்ஸ் DOS பதிப்பு அசைவூட்டங்கள். +description.th_TH = กราฟฟิกต้นตำหรับของ Transport Tycoon Deluxe DOS edition +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 版的圖形。 [files] @@ -55,7 +70,7 @@ TRGI.GRF = da6a6c9dcc451eec88d79211437b76a8 TRGC.GRF = ed446637e034104c5559b32c18afe78d TRGH.GRF = ee6616fb0e6ef6b24892c58c93d86fc9 TRGT.GRF = e30e8a398ae86c03dc534a8ac7dfb3b6 -OPENTTD.GRF = 891f2dc7c81346d8fd5fbf4cf42dc5bd +OPENTTD.GRF = 75a93cea2ed455c2fd5dcbda39e53538 [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 1f3d9b26f..4546e0c73 100644 --- a/bin/baseset/orig_dos.obs +++ b/bin/baseset/orig_dos.obs @@ -10,34 +10,49 @@ 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.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). -description.da_DA = Originallyd fra Transport Tycoon Deluxe DOS-version. +description.cy_GB = Effeithiau sain gwreiddiol fersiwn DOS o Transport Tycoon Deluxe. +description.da_DK = Originallyd fra Transport Tycoon Deluxe DOS-version. description.de_DE = Original Transport Tycoon Deluxe DOS Basissounds. description.el_GR = Αρχικοί ήχοι από το Transport Tycoon Deluxe έκδοση DOS. -description.en_GB = Original Transport Tycoon Deluxe DOS edition sounds. +description.en_AU = Original Transport Tycoon Deluxe DOS edition sounds. description.en_US = Original Transport Tycoon Deluxe DOS edition sounds. description.es_ES = Sonidos originales de Transport Tycoon Deluxe versión DOS. -description.et_ET = Algse Transport Tycoon Deluxe DOSi versiooni helid. -description.fi_FI = Alkuperäiset Transport Tycoon Deluxe DOS äänet. +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.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. description.hu_HU = Az eredeti Transport Tycoon Deluxe DOS verziójának hangjai. -description.fr_FR = Sons originaux de Transport Tycoon Deluxe (version DOS). description.id_ID = Efek suara orisinil Transport Tycoon Deluxe versi DOS. +description.is_IS = Upprunalega hljóðið úr Transport Tycoon Deluxe DOS útgáfunni. description.it_IT = Suoni originali di Transport Tycoon Deluxe, edizione DOS. +description.ja_JP = Transport Tycoon Deluxe オリジナル版 効果音 (DOS) +description.ko_KR = 오리지널 트랜스포트 타이쿤 도스 에디션의 효과음입니다. +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. description.nl_NL = Originele geluiden van de Transport Tycoon Deluxe DOS-versie. description.nn_NO = Originale lydar frå Transport Tycoon Deluxe for DOS. description.pl_PL = Oryginalna edycja dźwięków dla Transport Tycoon Deluxe DOS. +description.pt_BR = Sons Originais do Transport Tycoon Deluxe, Edição DOS. description.pt_PT = Sons originais da edição DOS de Transport Tycoon Deluxe. description.ro_RO = Setul de sunete original al Transport Tycoon Deluxe pentru DOS. description.ru_RU = Оригинальный набор звукового оформления из игры Transport Tycoon Deluxe для DOS. description.sk_SK = Pôvodné zvuky Transport Tycoon Deluxe (DOS). -description.sl_SL = Originalni zvoki Transport Tycoon Deluxe različice DOS. +description.sl_SI = Originalni zvoki Transport Tycoon Deluxe različice DOS. description.sr_RS = Originalni skup zvukova Transport Tycoon Deluxe DOS izdanja. description.sv_SE = Originalljuden från Transport Tycoon Deluxe, DOS-utgåvan. -description.tr_TR = Orijinal Transport Tycoon Deluxe DOS sürümü sesleri. +description.ta_IN = அசல் டிரான்ஸ்ஃபோர்ட் டைகூன் டீலக்ஸ் DOS பதிப்பு ஒலிகள். +description.th_TH = เสียงต้นตำหรับของ Transport Tycoon Deluxe DOS edition +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 版的音效。 [files] diff --git a/bin/baseset/orig_dos_de.obg b/bin/baseset/orig_dos_de.obg index bfa7fe56c..4cc59f48c 100644 --- a/bin/baseset/orig_dos_de.obg +++ b/bin/baseset/orig_dos_de.obg @@ -11,34 +11,49 @@ 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.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). -description.da_DA = Originalgrafik fra Transport Tycoon Deluxe DOS (Tysk) version. +description.cy_GB = Graffeg gwreiddiol fersiwn DOS (Almaenig) o Transport Tycoon Deluxe. +description.da_DK = Originalgrafik fra Transport Tycoon Deluxe DOS (Tysk) version. description.de_DE = Original Transport Tycoon Deluxe DOS (Deutsch) Basisgrafiken. description.el_GR = Αρχικά γραφικά από το Transport Tycoon Deluxe έκδοση DOS (Γερμανικό). -description.en_GB = Original Transport Tycoon Deluxe DOS (German) edition graphics. +description.en_AU = Original Transport Tycoon Deluxe DOS (German) edition graphics. description.en_US = Original Transport Tycoon Deluxe DOS (German) edition graphics. description.es_ES = Gráficos originales de Transport Tycoon Deluxe versión DOS (Alemán). -description.et_ET = Algse Transport Tycoon Deluxe DOSi (Saksa) versiooni graafika. -description.fi_FI = Alkuperäiset Transport Tycoon Deluxe DOS (Saksalainen) grafiikat. +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.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. description.hu_HU = Az eredeti Transport Tycoon Deluxe DOS (német) verziójának grafikája. description.id_ID = Grafik orisinil Transport Tycoon Deluxe versi DOS (Jerman). +description.is_IS = Upprunalega grafíkin úr Transport Tycoon Deluxe DOS (þýsku) útgáfunni. description.it_IT = Grafica originale di Transport Tycoon Deluxe (tedesco), edizione DOS. +description.ja_JP = Transport Tycoon Deluxe オリジナル版 グラフィック (DOS・ドイツ版) +description.ko_KR = 오리지널 트랜스포트 타이쿤 디럭스 도스 에디션(독일)의 그래픽입니다. +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). description.nl_NL = Originele graphics van de Duitse Transport Tycoon Deluxe DOS-versie. description.nn_NO = Original grafikk frå Transport Tycoon Deluxe for DOS (tysk). description.pl_PL = Oryginalna edycja grafik dla Transport Tycoon Deluxe DOS (German). +description.pt_BR = Gráficos Originais do Transport Tycoon Deluxe, Edição DOS alemã. description.pt_PT = Gráficos originais da edição DOS (Alemã) de Transport Tycoon Deluxe. description.ro_RO = Setul grafic original al Transport Tycoon Deluxe pentru DOS (ediţia germană). description.ru_RU = Оригинальная графика из немецкой версии Transport Tycoon Deluxe для DOS. description.sk_SK = Pôvodná grafika Transport Tycoon Deluxe (DOS) (v jazyku nemčina). -description.sl_SL = Originalna grafika Transport Tycoon Deluxe za nemško različico DOS. +description.sl_SI = Originalna grafika Transport Tycoon Deluxe za nemško različico DOS. description.sr_RS = Originalni skup grafika nemačkog Transport Tycoon Deluxe DOS izdanja. description.sv_SE = Originalgrafiken från Transport Tycoon Deluxe, DOS-utgåvan (tyska). -description.tr_TR = Orijinal Transport Tycoon Deluxe DOS (Almanca) sürümü grafikleri. +description.ta_IN = அசல் டிரான்ஸ்ஃபோர்ட் டைகூன் டீலக்ஸ் DOS (செருமன்) பதிப்பு அசைவூட்டங்கள். +description.th_TH = กราฟฟิกต้นตำหรับของ Transport Tycoon Deluxe DOS (German) edition +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 版 (德國版) 的圖形。 [files] @@ -55,7 +70,7 @@ TRGI.GRF = da6a6c9dcc451eec88d79211437b76a8 TRGC.GRF = ed446637e034104c5559b32c18afe78d TRGH.GRF = ee6616fb0e6ef6b24892c58c93d86fc9 TRGT.GRF = fcde1d7e8a74197d72a62695884b909e -OPENTTD.GRF = 891f2dc7c81346d8fd5fbf4cf42dc5bd +OPENTTD.GRF = 75a93cea2ed455c2fd5dcbda39e53538 [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 8edf60094..ac1165bb4 100644 --- a/bin/baseset/orig_win.obg +++ b/bin/baseset/orig_win.obg @@ -11,34 +11,49 @@ 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.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). -description.da_DA = Originalgrafik fra Transport Tycoon Deluxe Windows-version. +description.cy_GB = Graffeg gwreiddiol fersiwn Windows o Transport Tycoon Deluxe. +description.da_DK = Originalgrafik fra Transport Tycoon Deluxe Windows-version. description.de_DE = Original Transport Tycoon Deluxe Windows Basisgrafiken. description.el_GR = Αρχικά γραφικά από το Transport Tycoon Deluxe έκδοση Windows. -description.en_GB = Original Transport Tycoon Deluxe Windows edition graphics. +description.en_AU = Original Transport Tycoon Deluxe Windows edition graphics. description.en_US = Original Transport Tycoon Deluxe Windows edition graphics. description.es_ES = Gráficos originales de Transport Tycoon Deluxe versión Windows. -description.et_ET = Algse Transport Tycoon Deluxe Windowsi versiooni graafika. -description.fi_FI = Alkuperäiset Transport Tycoon Deluxe Windows grafiikat. +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.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. description.hu_HU = Az eredeti Transport Tycoon Deluxe Windows verziójának grafikája. 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.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. description.nl_NL = Originele graphics van de Transport Tycoon Deluxe Windows-versie. description.nn_NO = Original grafikk frå Transport Tycoon Deluxe for Windows. description.pl_PL = Oryginalna edycja grafik dla Transport Tycoon Deluxe Windows. +description.pt_BR = Gráficos Originais do Transport Tycoon, Edição Windows. description.pt_PT = Gráficos originais da edição Windows de Transport Tycoon Deluxe. description.ro_RO = Setul grafic original al Transport Tycoon Deluxe pentru Windows. description.ru_RU = Оригинальная графика из Transport Tycoon Deluxe для Windows. description.sk_SK = Pôvodná grafika Transport Tycoon Deluxe (Windows). -description.sl_SL = Originalna grafika Transport Tycoon Deluxe za različico oken(windows). +description.sl_SI = Originalna grafika Transport Tycoon Deluxe za različico oken(windows). description.sr_RS = Originalni skup grafika Transport Tycoon Deluxe Windows izdanja. description.sv_SE = Originalgrafiken från Transport Tycoon Deluxe, Windows-utgåvan. -description.tr_TR = Orijinal Transport Tycoon Deluxe Windows sürümü grafikleri. +description.ta_IN = அசல் டிரான்ஸ்ஃபோர்ட் டைகூன் டீலக்ஸ் விண்டோஸ் பதிப்பு அசைவூட்டங்கள். +description.th_TH = กราฟฟิกต้ำตำหรับของ Transport Tycoon Deluxe Windows edition +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 版的圖形。 [files] @@ -55,7 +70,7 @@ TRGIR.GRF = 0c2484ff6be49fc63a83be6ab5c38f32 TRGCR.GRF = 3668f410c761a050b5e7095a2b14879b TRGHR.GRF = 06bf2b7a31766f048baac2ebe43457b1 TRGTR.GRF = de53650517fe661ceaa3138c6edb0eb8 -OPENTTD.GRF = 891f2dc7c81346d8fd5fbf4cf42dc5bd +OPENTTD.GRF = 75a93cea2ed455c2fd5dcbda39e53538 [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 054fa069e..73a3a6c52 100644 --- a/bin/baseset/orig_win.obm +++ b/bin/baseset/orig_win.obm @@ -10,34 +10,50 @@ 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.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). -description.da_DA = Originalmusik fra Transport Tycoon Deluxe Windows-version. +description.cy_GB = Cerddoriaeth gwreiddiol fersion Windows o Transport Tycoon Deluxe. +description.da_DK = Originalmusik fra Transport Tycoon Deluxe Windows-version. description.de_DE = Original Transport Tycoon Deluxe Windows Musikset. description.el_GR = Αρχική μουσική από το Transport Tycoon Deluxe έκδοση Windows. -description.en_GB = Original Transport Tycoon Deluxe Windows edition music. +description.en_AU = Original Transport Tycoon Deluxe Windows edition music. description.en_US = Original Transport Tycoon Deluxe Windows edition music. description.es_ES = Música original de Transport Tycoon Deluxe versión Windows. -description.et_ET = Algse Transport Tycoon Deluxe Windowsi versiooni muusika. -description.fi_FI = Alkuperäinen Transport Tycoon Deluxe Windows musiikki. +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.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. description.hu_HU = Az eredeti Transport Tycoon Deluxe Windows verziójának zenéje. description.id_ID = Musik pengiring orisinil Transport Tycoon Deluxe versi Windows. +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.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. description.pl_PL = Oryginalna edycja utworów muzycznych w Transport Tycoon Deluxe Windows. +description.pt_BR = Música Original do Transport Tycoon Deluxe, Edição Windows description.pt_PT = Música original da edição Windows de Transport Tycoon Deluxe. description.ro_RO = Setul de muzică original al Transport Tycoon Deluxe pentru Windows. -description.ru_RU = Оригинальный набор музыкального оформления из игры Transport Tycoon Deluxe. +description.ru_RU = Оригинальный набор музыкального оформления из игры Transport Tycoon Deluxe для Windows. description.sk_SK = Pôvodná hudba z Transport Tycoon Deluxe (Windows). -description.sl_SL = Originalna glasba Transport Tycoon Deluxe različice oken(windows). +description.sl_SI = Originalna glasba Transport Tycoon Deluxe različice oken(windows). description.sr_RS = Originalni skup muzičkih numera Transport Tycoon Deluxe Windows izdanja. description.sv_SE = Originalmusiken från Transport Tycoon Deluxe, Windows-utgåvan. -description.tr_TR = Orijinal Transport Tycoon Deluxe Windows sürümü müzikleri. +description.ta_IN = அசல் டிரான்ஸ்ஃபோர்ட் டைகூன் டீலக்ஸ் விண்டோஸ் பதிப்பு இசை. +description.th_TH = เพลงต้นตำหรับชอง Transport Tycoon Deluxe Windows edition +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 版的音樂。 [files] diff --git a/bin/baseset/orig_win.obs b/bin/baseset/orig_win.obs index 0ed03fd51..215ff16a3 100644 --- a/bin/baseset/orig_win.obs +++ b/bin/baseset/orig_win.obs @@ -10,34 +10,49 @@ 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.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). -description.da_DA = Originallyd fra Transport Tycoon Deluxe Windows-version. +description.cy_GB = Effeithiau sain gwreiddiol fersiwn Windows o Transport Tycoon Deluxe. +description.da_DK = Originallyd fra Transport Tycoon Deluxe Windows-version. description.de_DE = Original Transport Tycoon Deluxe Windows Basissounds. description.el_GR = Αρχικοί ήχοι από το Transport Tycoon Deluxe έκδοση Windows. -description.en_GB = Original Transport Tycoon Deluxe Windows edition sounds. +description.en_AU = Original Transport Tycoon Deluxe Windows edition sounds. description.en_US = Original Transport Tycoon Deluxe Windows edition sounds. description.es_ES = Sonidos originales de Transport Tycoon Deluxe versión Windows. -description.et_ET = Algse Transport Tycoon Deluxe Windowsi versiooni helid. -description.fi_FI = Alkuperäiset Transport Tycoon Deluxe Windows äänet. +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.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. description.hu_HU = Az eredeti Transport Tycoon Deluxe Windows verziójának hangjai. -description.fr_FR = Sons originaux de Transport Tycoon Deluxe (version Windows). 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.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. description.nl_NL = Originele geluiden van de Transport Tycoon Deluxe Windows-versie. description.nn_NO = Originale lydar frå Transport Tycoon Deluxe for Windows. description.pl_PL = Oryginalna edycja dźwięków dla Transport Tycoon Deluxe Windows. +description.pt_BR = Sons Originais do Transport Tycoon Deluxe, Edição Windows. description.pt_PT = Sons originais da edição Windows de Transport Tycoon Deluxe. description.ro_RO = Setul de sunete original al Transport Tycoon Deluxe pentru Windows. description.ru_RU = Оригинальный набор звукового оформления из игры Transport Tycoon Deluxe для Windows. description.sk_SK = Pôvodné zvuky Transport Tycoon Deluxe (Windows). -description.sl_SL = Originalni zvoki Transport Tycoon Deluxe različice oken(windows). +description.sl_SI = Originalni zvoki Transport Tycoon Deluxe različice oken(windows). description.sr_RS = Originalni skup zvukova Transport Tycoon Deluxe Windows izdanja. description.sv_SE = Originalljuden från Transport Tycoon Deluxe, Windows-utgåvan. -description.tr_TR = Orijinal Transport Tycoon Deluxe Windows sürümü sesleri. +description.ta_IN = அசல் டிரான்ஸ்ஃபோர்ட் டைகூன் டீலக்ஸ் விண்டோஸ் பதிப்பு ஒலிகள். +description.th_TH = เสียงต้นตำหรับของ Transport Tycoon Deluxe Windows edition +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 版的音效。 [files] diff --git a/bin/game/compat_1.2.nut b/bin/game/compat_1.2.nut index f9a63e698..37ff5907d 100644 --- a/bin/game/compat_1.2.nut +++ b/bin/game/compat_1.2.nut @@ -7,4 +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 . */ -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); +} diff --git a/bin/game/compat_1.3.nut b/bin/game/compat_1.3.nut index fe985b90d..4116addbb 100644 --- a/bin/game/compat_1.3.nut +++ b/bin/game/compat_1.3.nut @@ -6,3 +6,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 . */ + +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); +} diff --git a/bin/game/compat_1.4.nut b/bin/game/compat_1.4.nut new file mode 100644 index 000000000..969c1e865 --- /dev/null +++ b/bin/game/compat_1.4.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.4 API compatibility in effect."); diff --git a/bin/game/compat_1.5.nut b/bin/game/compat_1.5.nut new file mode 100644 index 000000000..fe985b90d --- /dev/null +++ b/bin/game/compat_1.5.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 fb0736432..1da7d4d1b 100644 --- a/changelog.txt +++ b/changelog.txt @@ -1,3 +1,446 @@ +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) + + +1.3.1-RC1 (2013-05-17) +------------------------------------------------------------------------ +- Feature: Translations of baseset descriptions via language files (r25209, r25205) +- Feature: Faroese and Scottish Gaelic translations (r25198, r25176) +- Feature: Plural form to be used by Scottish Gaelic (1,11; 2,12; 3..10, 13..19; other) (r25078) +- Change: [strgen] Allow any number of colour codes in translations (r25193, r25192, r25191) +- Change: [Win32] MSVC 2010 comes with stdint.h (r25128) +- 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 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 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) +- Fix: [Win32] Do not statically link to SHGetFolderPath as it may not exist, and improve its emulation [FS#5522] (r25155, r25153) +- Fix: [Win32] Do not store invalid paths in the search path list (r25154) +- Fix: Remove stray reservation from savegames affected by FS#5510 et al. upon loading [FS#5520] (r25152) +- Fix: [Script] XXBase::Chance function did not work for large values (>65535) [FS#5517] (r25148) +- Fix: Several typos/inconsistencies in English strings [FS#5496] (r25144, r25143) +- Fix: When extra dynamite was disabled, towns would be allowed to clear bridges with trams (r25141) +- Fix: Towns are build as OWNER_TOWN, so they also need to be removed as OWNER_TOWN otherwise parts might remain [FS#5519] (r25140) +- Fix: Editboxes could become too small when resizing windows (r25121) +- Fix: Game script language files did not work, when inside a tar [FS#5509] (r25117, r25114) +- Fix: [NewGRF] Acceleration of NewGRF aircraft was too fast, while acceleration of default aircraft was way too slow (r25115) +- Fix: Pass $LDFLAGS_BUILD to all endian_check compilations (r25108) + + +1.3.0 (2013-04-01) +------------------------------------------------------------------------ +- Fix: Station rebuilding could leave reserved tiles which caused crashes later on [FS#5510, FS#5516] (r25132) +- Fix: When the count for a scrollbar was 0, the inter distance was subtracted too much causing a scrollbar with a negative size (r25123) + + +1.3.0-RC3 (2013-03-18) +------------------------------------------------------------------------ +- Fix: Limit aircraft property 0D to 19, since the conversion result to km-ish/h needs to fit into a byte [FS#5492] (r25099) +- Fix: Clicking the statusbar crashed, when news were pending but no news were shown yet [FS#5486] (r25093) +- Fix: Make editbox character filters also apply to pasted content from clipboard (r25090, r25089) +- Fix: Catch exception anonymously, if the exception content is not of interest [FS#5500] (r25081) + + +1.3.0-RC2 (2013-03-05) +------------------------------------------------------------------------ +- Fix: Make sizes of the station preview list and direction selection identical in the station build window [FS#5472] (r25064) +- Fix: When allocation of the sprite cache fails, try to allocate less memory and display an error message later on (r25061) +- Fix: Refactor Script Debug GUI to only set widget states in OnInvalidateData [FS#5490] (r25052) +- Fix: Do not let gcc include files from the 'standard C' include directories to avoid inclusion of header files at the top of the preprocessed nfo files, which cause NFOrenum/GRFcodec to make invalid assumptions about the NFO version (r25050) +- Fix: Minimise gaps feature caused removal to only happen at the signal build interval instead of the implicit interval of 1 [FS#5479] (r25038) +- Fix: Green path signals would be shown when building them 'under' a train, and they would keep showing green until they were passed again [FS#5480] (r25037) + + +1.3.0-RC1 (2013-02-19) +------------------------------------------------------------------------ +- Feature: Searching of (missing) content via GrfCrawler (r25024, r25023) +- 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 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) + + +1.3.0-beta2 (2013-02-07) +------------------------------------------------------------------------ +- Feature: [NewGRF] Station randomisation triggers (r24906, r24905) +- Feature: Settings type filter included in the advanced settings GUI (r24862, r24863) +- Change: Revert to opening the vehicle GUI again when cloning vehicles using the clone-button from the depot GUI [FS#4458] (r24955) +- Fix: Additional zoom in levels could glitch by a few pixels due to incorrect rounding [FS#5463] (r24975) +- Fix: Honour pause_on_newgame setting when running as a dedicated server [FS#5279] (r24974) +- Fix: [NewGRF] Prevent access to tile-based variables when tile is invalid [FS#5462] (r24973) +- Fix: Do not make overbuilding rivers with canals insanely expensive [FS#5258] (r24972) +- Fix: Crash when an infinite loop occurred during loading of a script [FS#5346] (r24970) +- Fix: company window was not updated when shares were enabled/disabled [FS#5379] (r24968) +- Fix: Trams would get stuck on water [FS#5228] (r24966) +- Fix: With YAPF the docking behaviour differed per direction; now favour docking in the direction you approached [FS#5416] (r24964) +- Fix: Do not stop loading if there are reservations left [FS#5435] (r24963) +- Fix: Reserve all capacity while unloading to avoid 'stealing' cargo, i.e. loading cargo onto a second vehicle when the first cannot be fully filled yet [FS#5438] (r24962) +- Fix: If a platform is enlarged and there is a reservation, reserve the whole platform [FS#5362] (r24961) +- Fix: Inconsistencies in the 'thanks to' lists [FS#5423] (r24960) +- Fix: Set 'replace when old' flag when replacing an autoreplace (r24950) +- Fix: Deleting implicit orders was not able to deal with the various side-effects of DeleteOrder [FS#5452] (r24944) +- Fix: Redraw autoreplace window properly in network games (r24939) +- Fix: Never put a space between cargo name and subtype [FS#5447] (r24938) +- Fix: Do not allow order refit to be set for no-load orders [FS#5446] (r24936) +- Fix: Make group names unique per company and vehicle type [FS#3473] (r24933) +- Fix: Prevent more NewGRFs being selected than is possible to load [FS#5158] (r24932) +- Fix: [GS] Do not try to pause or unpause crashed scripts [FS#5415] (r24929) +- Fix: [Squirrel] Update line information before processing 'while' token of 'do'-'while' statement [FS#5408] (r24928) +- Fix: Add a tooltip to the mapsize selection mentioning possible deviations [FS#5395] (r24925) +- Fix: When an object built on a river is removed, restore the river [FS#5441] (r24923) +- Fix: Upgrading bridges could steal road types [FS#5389] (r24912) +- Fix: [GS] Allow GSs to pass negative integer string parameters (r24908) +- Fix: 'Train loads/unloads cargo' station animation triggers on individual platform (r24904) +- Fix: Cached station animation triggers were only set when removing parts of a station (r24903) +- Fix: The station build window did not update when the station spread changed [FS#5434] (r24899) +- Fix: Do not unpause the game when closing the highscore window if it was already paused before the highscore screen was shown (r24898) +- Fix: Improvements and fixes for the base translation [FS#5411, FS#5420, FS#5421, FS#5422, FS#5427] (r24896, r24875, r24872, r24869) +- Fix: Allow downgrade of road bridges in the scenario editor [FS#5436] (r24895) +- Fix: Invalidate station selection window when station spread changes [FS#5434] (r24894) +- Fix: Distribute GS compat_.nut with OpenTTD (r24890) +- Fix: Pass proper UTF-16 strings instead of UCS-2 to ICU in order to preserve characters outside the BMP (r24885) +- Fix: A completely emptied vehicle could trigger an assert (r24883) +- Fix: Desync when NewGRF changes the stats related to acceleration (power, weight, tractive effort, etc) during service or 32 day triggers (r24882) +- Fix: Incorrect Romanian own name (r24874) +- Fix: Make invalid sprite references to mapgen sprites behave the same as invalid references between recolour and real sprites [FS#5404] (r24858) +- Fix: Do not let UFOs and coal mines clear water (r24857) +- Fix: Do not let UFOs and coal mines destroy depots [FS#5406] (r24856) +- Fix: Do not send aircraft to depots that are out of range of the next destination [FS#5405] (r24855) +- Fix: Only consider vehicles available in the climate for purchase/depot cell size (r24854) +- Fix: Extend widget data member to 32 bits so that sprite IDs >= 2^16 can be used (r24853) + + 1.3.0-beta1 (2012-12-24) ------------------------------------------------------------------------ - Feature: Advanced settings to disable certain sound effects (r24846) @@ -83,10 +526,10 @@ - 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: Don't 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 wasn't always updated when modifying vehicle consists [FS#5396] (r24834) +- 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) - Fix: [NewGRF] Incorrect values are better than a crash when a NewGRF queries vehicle variable 4C before vehicle initialisation is completed [FS#5398] (r24831) - Fix: determineversion.vbs could hang in a git checkout (r24826) - Fix: Close pending preview windows when the engine is introduced to everyone (r24812) @@ -193,13 +636,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) @@ -227,8 +670,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) @@ -258,7 +701,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) @@ -273,9 +716,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) @@ -326,9 +769,9 @@ - Fix: [SDL] Handle the SDL_VIDEOEXPOSE event to solve issues with SDL 1.3 (r23910) - Fix: [SDL] Fix keyboard-related segfault when compiling against SDL 1.3 (r23909) - 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: [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) @@ -336,7 +779,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) @@ -353,26 +796,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) @@ -412,7 +855,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) @@ -461,7 +904,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) @@ -476,7 +919,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) @@ -490,7 +933,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) @@ -537,8 +980,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) @@ -559,12 +1002,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) @@ -629,7 +1072,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) @@ -666,7 +1109,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) @@ -685,11 +1128,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) @@ -710,7 +1153,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) @@ -734,7 +1177,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) @@ -751,7 +1194,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) @@ -814,7 +1257,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) @@ -834,7 +1277,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) @@ -888,7 +1331,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) @@ -898,7 +1341,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) @@ -925,7 +1368,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) @@ -937,7 +1380,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) @@ -960,7 +1403,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) @@ -994,7 +1437,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) @@ -1007,7 +1450,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) @@ -1039,7 +1482,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) @@ -1065,7 +1508,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) @@ -1083,8 +1526,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) @@ -1096,7 +1539,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) @@ -1167,7 +1610,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) @@ -1203,7 +1646,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) @@ -1278,7 +1721,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) @@ -1353,7 +1796,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) @@ -1384,7 +1827,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) @@ -1405,7 +1848,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) @@ -1500,7 +1943,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) @@ -1525,7 +1968,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) @@ -1608,7 +2051,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) @@ -1623,17 +2066,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) @@ -1649,11 +2092,11 @@ - 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) -- Fix: Refitting a non-refittable vehicle to it's default cargotype failed, causing problems for AIs [FS#3475] (r18724) +- Fix: Refitting a non-refittable vehicle to its default cargotype failed, causing problems for AIs [FS#3475] (r18724) - Fix: The join station window did not account for scrolling, so if you did scroll the station was not joined with the selected station [FS#3476] (r18713) - Fix: The wrong town is mentioned in the error when trying to make one way roads of town owned roads [FS#3478] (r18710) - Fix: Animation buffer for 32bpp-anim blitter was only validated during sprite blitting, other drawing operations did not check it. Initial startup and window resize could therefore lead to crash [FS#3464] (r18709) @@ -1719,14 +2162,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) @@ -1749,17 +2192,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) @@ -1767,8 +2210,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) @@ -1785,7 +2228,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) @@ -1805,7 +2248,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) @@ -1821,7 +2264,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) @@ -1837,7 +2280,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) @@ -1849,7 +2292,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) @@ -1920,7 +2363,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) @@ -1932,11 +2375,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) @@ -1969,7 +2412,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) @@ -2010,7 +2453,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) @@ -2037,7 +2480,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) @@ -2050,12 +2493,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) @@ -2143,7 +2586,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) @@ -2198,9 +2641,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) @@ -2208,7 +2651,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) @@ -2224,7 +2667,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) @@ -2273,14 +2716,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) @@ -2292,7 +2735,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) @@ -2314,7 +2757,7 @@ - Feature: [NewGRF] Add support for property 0x13 for Bridges. In other words, one can now specifies a 16 bits cost multiplier (r14172) - Feature: Make it possible to choose between the DOS and Windows graphics packs while retaining the possibility to override the palette (r14151) - Feature: Increase the size of the console backlog. Now it'll only remove backlog items when there are more than a threshold and when they are there longer than (another) threshold (r14056) -- Feature: Make it possible to filter list_patches output like it's done for other list_* console commands (r14041) +- Feature: Make it possible to filter list_patches output like it is done for other list_* console commands (r14041) - Feature: Path based signalling (r13926-13967) - Feature: Show [total-]cargo info in depot when [ctrl-]right-clicking on vehicle (r13923) - Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file (r13781) @@ -2325,10 +2768,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) @@ -2339,7 +2782,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) @@ -2348,7 +2791,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) @@ -2360,7 +2803,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) @@ -2394,7 +2837,7 @@ - Fix: Order pool seemed to look full when it was not as it only checked whether it was possible to allocate a new block of pool items instead of checking for free pool items (r14547) - Fix: Do not deliver cargo to industries not inside station catchment area [FS#2138] (r14530) - Fix: Allocate stub (empty) sound entries when loading an empty/corrupt/incorrectly sized sample.cat instead of making valid NewGRFs fail to load (r14527) -- Fix: Make sure trains stop at the end of a station; a 3/8th length train did stop 2/8th of it's length too early causing a 63/8th long train not to fit in a 4 tile station [FS#2379] (r14526) +- Fix: Make sure trains stop at the end of a station; a 3/8th length train did stop 2/8th of its length too early causing a 63/8th long train not to fit in a 4 tile station [FS#2379] (r14526) - Fix: Small possible chance of desync due to sorting on pointer instead of by (station) index [FS#2348] (r14463) - Fix: When a road stop gets moved make sure to update the destination of RVs going to that road stop [FS#2330] (r14446) - Fix: Support for spaces in directories passed to ./configure [FS#1802] (r14440) @@ -2403,7 +2846,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) @@ -2442,7 +2885,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) @@ -2465,11 +2908,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) @@ -2496,7 +2939,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) @@ -2510,7 +2953,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) @@ -2521,19 +2964,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) @@ -2563,7 +3006,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) @@ -2592,7 +3035,7 @@ - Fix: Do not crash very hard on unrecognised savegames, just go back to the intro menu instead (r12707) - Fix: In some cases a news messages would not be shown [FS#1906] (r12683) - Fix: Removing road pieces from a town gave you twice the intended penalty [FS#1920] (r12682) -- Fix: When a road vehicle has a tram only stop multiple times in a row in it's orders, only the first one would be skipped [FS#1918] (r12678) +- Fix: When a road vehicle has a tram only stop multiple times in a row in its orders, only the first one would be skipped [FS#1918] (r12678) - Fix: Colour remaps on station sprites only worked for company colours [FS#1902] (r12674) - Fix: Remove buggy buoys at tile 0 from old TTDP savegames (r12642) - Fix: Possible NULL pointer dereference when reading some NewGRF data [FS#1913] (r12637) @@ -2600,7 +3043,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) @@ -2637,7 +3080,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) @@ -2645,7 +3088,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) @@ -2680,8 +3123,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) @@ -2700,14 +3143,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) @@ -2746,7 +3189,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) @@ -2756,9 +3199,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) @@ -2791,12 +3234,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) @@ -2841,7 +3284,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) @@ -2889,7 +3332,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) @@ -2901,7 +3344,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) @@ -3002,7 +3445,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) @@ -3041,7 +3484,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) @@ -3106,12 +3549,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) @@ -3155,8 +3598,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) @@ -3180,7 +3623,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) @@ -3305,11 +3748,11 @@ - Fix: Some disaster-events fixed: combat chopper shoots from right position, submarine once again moves around (r8140, r8158) - Fix: 'out of sprite memory' warning messages due to incorrect assumption of requested memory for sprites (r8133) - Fix: Buoys are now built and numbered 1..9 not 9..1 [FS#538] (r8123) -- Fix: Clicking for more news properly cycles through the news history backwards, and does not show the first item doubly if it's already open (r8049) +- Fix: Clicking for more news properly cycles through the news history backwards, and does not show the first item doubly if it is already open (r8049) - 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) @@ -3328,7 +3771,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) @@ -3341,7 +3784,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) @@ -3350,7 +3793,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) @@ -3358,9 +3801,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) @@ -3379,14 +3822,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) @@ -3398,8 +3841,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) @@ -3407,7 +3850,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) @@ -3426,11 +3869,11 @@ - Codechange: Show more correct capacity of articulated wagons in the train purchase list (r6650) - Codechange: When showing tooltips, properly position the tooltip taking into account window dimensions and cursor (r6405) - Codechange: Speed up the animated cursors a bit so they move once in a while at least (r6367) -- Codechange: Remove the 'unsorted' vehicle sorter, because it's plain useless (r6270) +- Codechange: Remove the 'unsorted' vehicle sorter, because it is plain useless (r6270) - 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) @@ -3453,9 +3896,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) @@ -3478,7 +3921,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) @@ -3510,7 +3953,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 @@ -3523,7 +3966,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 @@ -3533,9 +3976,9 @@ - Fix: The wrong IP could get unbanned, e.g. 'unban 1.2.3.42' could result in unbanning 1.2.3.4 - Fix: It was possible to convert the railtype of a bridge while a train was on it - Fix: It was possible to rename signs or waypoints with the chat box -- Fix: Be more strict what it means for an aircraft to be in a hangar: It's not just being stopped on a hangar tile -- Fix: If a road vehicle is on a road depot tile and stopped does not mean it's in the depot. Use the proper test for this -- Fix: [AI] The AI should send a plane into a hangar if it's not in a hangar _or_ not stopped, not when it's not in a hangar _and_ not stopped +- Fix: Be more strict what it means for an aircraft to be in a hangar: It is not just being stopped on a hangar tile +- Fix: If a road vehicle is on a road depot tile and stopped does not mean it is in the depot. Use the proper test for this +- Fix: [AI] The AI should send a plane into a hangar if it is not in a hangar _or_ not stopped, not when it is not in a hangar _and_ not stopped - Fix: [AI] The trolly AI used information from the wrong industry when calculating the amount of to be transported goods - Fix: [NTP] Fix NTP over bridges: do not check the rail type when on a bridge - Fix: Truncate text in dropdown lists to stop text overflowing @@ -3557,12 +4000,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 @@ -3581,8 +4024,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) @@ -3595,7 +4038,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) @@ -3607,12 +4050,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's 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) @@ -3628,7 +4071,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) @@ -3645,7 +4088,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) @@ -3662,7 +4105,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) @@ -3693,7 +4136,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) @@ -3708,12 +4151,12 @@ - Fix: Spaces in the path to the MIDI files caused the Windows MIDI player to fail (r2563) - Fix: Set server map name to the loaded name of the game/scenario (r2610) - Fix: Improve the old pathfinder. Changed it to A* instead of Dijkstra. Benchmark shows that NTP is now around 10x faster than NPF (r2635) -- Fix: Correctly save and load company_value, it's 64 bits wide, not 32 bits (r2684) +- Fix: Correctly save and load company_value, it is 64 bits wide, not 32 bits (r2684) - Fix: Volume control works now for the DirectMusic MIDI backend (r2712) - 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) @@ -3740,15 +4183,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) @@ -3769,7 +4212,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) @@ -3799,7 +4242,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 @@ -3825,7 +4268,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] @@ -3834,16 +4277,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's 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] @@ -3861,10 +4304,10 @@ - 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's not invented yet +- Fix: [Autoreplace] Cheaters can no longer exploit autoreplace to get vehicles, that is not invented yet - Fix: [Autoreplace] Fixed a stupid bug introduced in r1687, that made a crash if anybody tried to autoreplace anything but an aircraft - Fix: Expand rail stations beyond maximum spread - Fix: [Autoreplace] Fixed a typo that could prevent autoreplaced aircraft from automatically go to a hangar @@ -3880,7 +4323,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 @@ -3896,7 +4339,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') @@ -3950,8 +4393,8 @@ - Fix: Aircraft in hangar messages are now revalidated before display [SF#1104969] - Fix: Destroyed train locks crossings [SF#1105112] - Fix: Upgrade rail fails when train under bridge [SF#1105281] -- Fix: Trains do not think they're 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: 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 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] @@ -3965,7 +4408,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 @@ -4033,8 +4476,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 @@ -4042,7 +4485,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 @@ -4055,14 +4498,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] @@ -4071,7 +4514,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] @@ -4105,7 +4548,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 @@ -4124,7 +4567,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) @@ -4151,11 +4594,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 @@ -4169,7 +4612,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 @@ -4212,7 +4655,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] @@ -4246,7 +4689,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 @@ -4273,7 +4716,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) @@ -4287,10 +4730,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 @@ -4312,10 +4755,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 @@ -4335,7 +4778,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 @@ -4401,8 +4844,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 @@ -4443,7 +4886,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 @@ -4490,7 +4933,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 @@ -4588,12 +5031,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 @@ -4661,7 +5104,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 @@ -4676,7 +5119,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 6f215455a..0b355cdd3 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";; @@ -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. @@ -1012,6 +1029,12 @@ check_params() { if [ -d "$ROOT_DIR/.svn" ] && [ -n "`svn help 2>/dev/null`" ]; then log 1 "checking revision... svn detection" + elif [ -d "$ROOT_DIR/../.svn" ] && [ -n "`svn help 2>/dev/null`" ] && [ -n "`LC_ALL=C svn info $ROOT_DIR/.. | grep '^URL:.*tags$'`" ]; then + # subversion changed its behaviour; now not all folders have a .svn folder, + # but only the root folder. Since making tags requires a (sparse) checkout + # of the tags folder, the folder of the tag does not have a .svn folder + # anymore and this fails to detect the subversion repository checkout. + 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 @@ -1449,12 +1472,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 @@ -1474,6 +1501,9 @@ make_cflags_and_ldflags() { 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 @@ -1481,15 +1511,18 @@ make_cflags_and_ldflags() { LDFLAGS="$LDFLAGS -mwin32" fi if [ "$os" = "MINGW" ] || [ "$os" = "CYGWIN" ]; then - flags="$flags -mno-cygwin" + if [ $cc_version -lt 46 ]; then + flags="$flags -mno-cygwin" + LDFLAGS="$LDFLAGS -mno-cygwin" + fi if [ "$enable_console" != "0" ]; then - LDFLAGS="$LDFLAGS -mno-cygwin -Wl,--subsystem,console" + LDFLAGS="$LDFLAGS -Wl,--subsystem,console" else - LDFLAGS="$LDFLAGS -mno-cygwin -Wl,--subsystem,windows" + LDFLAGS="$LDFLAGS -Wl,--subsystem,windows" fi - LIBS="$LIBS -lws2_32 -lwinmm -lgdi32 -ldxguid -lole32" + LIBS="$LIBS -lws2_32 -lwinmm -lgdi32 -ldxguid -lole32 -limm32" if [ $cc_version -ge 44 ]; then LDFLAGS_BUILD="$LDFLAGS_BUILD -static-libgcc -static-libstdc++" @@ -1549,7 +1582,7 @@ make_cflags_and_ldflags() { LDFLAGS="$OSX_LD_SYSROOT $LDFLAGS" fi - if [ "$enable_universal" = "0" ] && [ $cc_version -ge 40 ]; then + if [ "$enable_universal" = "0" ] && [ $cc_version -gt 40 ]; then # Only set the min version when not doing an universal build. # Universal builds set the version elsewhere. if [ "$cpu_type" = "64" ]; then @@ -1648,6 +1681,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" @@ -1656,17 +1700,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 @@ -1709,9 +1754,9 @@ make_cflags_and_ldflags() { # Some icu-configs have the 'feature' of not adding a space where others do add the space if [ "$static_icu" != "0" ]; then - LIBS="$LIBS `$icu_config --ldflags-searchpath` `$icu_config --ldflags-libsonly | tr '\n\r' ' ' | sed s/licu/lsicu/g`" + LIBS="$LIBS `$icu_config --ldflags-searchpath` `($icu_config --ldflags-libsonly; $icu_config --ldflags-layout) | tr '\n\r' ' ' | sed s/licu/lsicu/g`" else - LIBS="$LIBS `$icu_config --ldflags-searchpath` `$icu_config --ldflags-libsonly | tr '\n\r' ' '`" + LIBS="$LIBS `$icu_config --ldflags-searchpath` `($icu_config --ldflags-libsonly; $icu_config --ldflags-layout) | tr '\n\r' ' '`" fi fi @@ -1745,7 +1790,7 @@ make_cflags_and_ldflags() { fi fi - if [ "$have_non_const_iconv" != "no" ]; then + if [ "$os" != "OSX" ] && [ "$have_non_const_iconv" != "no" ]; then CFLAGS="$CFLAGS -DHAVE_NON_CONST_ICONV" fi fi @@ -2671,42 +2716,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() { @@ -2733,33 +2800,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() { @@ -2854,39 +2895,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() { @@ -3169,9 +3178,9 @@ detect_grfcodec() { log 2 " returned $version" log 2 " exit code $ret" - if [ -z "$version" ] || [ "$ret" != "0" ] || [ "$version" -lt "913" ]; then - if [ -n "$version" ] && [ "$version" -lt "913" ]; then - log 1 "checking grfcodec... needs at least version 5.1.4 (r913), disabled" + 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" else log 1 "checking grfcodec... not found" fi @@ -3211,9 +3220,9 @@ detect_nforenum() { log 2 " returned $version" log 2 " exit code $ret" - if [ -z "$version" ] || [ "$ret" != "0" ] || [ "$version" -lt "913" ]; then - if [ -n "$version" ] && [ "$version" -lt "913" ]; then - log 1 "checking nforenum... needs at least version 5.1.4 (r913), disabled" + 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" else log 1 "checking nforenum... not found" fi @@ -3252,6 +3261,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" @@ -3429,7 +3472,7 @@ generate_settings() { } generate_grf() { - STAGE="[GRF]" + STAGE="[BASESET]" make_sed @@ -3479,7 +3522,7 @@ generate_src_osx() { CFLAGS="-isysroot $osx_sdk_path $CFLAGS_orig" LDFLAGS="-Wl,-syslibroot,$osx_sdk_path $LDFLAGS_orig" fi - CFLAGS="$CFLAGS -D_SQ64 -DHAVE_NON_CONST_ICONV -DNO_QUICKTIME -UENABLE_COCOA_QUICKDRAW" + CFLAGS="$CFLAGS -D_SQ64 -DNO_QUICKTIME -UENABLE_COCOA_QUICKDRAW" LIBS="`echo $LIBS | sed 's/-framework QuickTime//'`" fi @@ -3622,13 +3665,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)" @@ -3638,6 +3684,9 @@ showhelp() { echo " --with-makedepend[=makedepend] enables makedepend support" 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" @@ -3648,6 +3697,9 @@ showhelp() { echo " LDFLAGS linker flags, e.g. -L if you" echo " have libraries in a nonstandard" echo " directory " + echo " CFLAGS_BUILD C compiler flags for build time tool generation" + echo " CXXFLAGS_BUILD C++ compiler flags for build time tool generation" + echo " LDFLAGS_BUILD linker flags for build time tool generation" echo "" echo "Use these variables to override the choices made by 'configure' or to help" echo "it to find libraries and programs with nonstandard names/locations." diff --git a/configure b/configure index c80fb2f23..6b2c9d87b 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/admin_network.txt b/docs/admin_network.txt index 1922a4d6d..904f3ca20 100644 --- a/docs/admin_network.txt +++ b/docs/admin_network.txt @@ -150,7 +150,8 @@ Table of contents Note: No additional authentication is required for rcon commands. - The server will reply with a ADMIN_PACKET_SERVER_RCON packet. Applications + The server will reply with one or more ADMIN_PACKET_SERVER_RCON packets. + Finally an ADMIN_PACKET_ADMIN_RCON_END packet will be sent. Applications will not receive the answer twice if they have asked for the AdminUpdateType ADMIN_UPDATE_CONSOLE, as the result is not printed on the servers console (just like clients rcon commands). @@ -160,6 +161,13 @@ Table of contents Chat from the server itself will only be sent to the admin network when it was not sent from the admin network. + Note that when content is queried or updated via rcon, the processing + happens asynchronously. But the ADMIN_PACKET_ADMIN_RCON_END packet is sent + already right after the content is requested as there's no immediate output. + Thus other packages and the output of content rcon command may be sent at + an arbitrary later time, mixing into the output of other console activity, + e.g. also of possible subsequent other rcon commands sent. + 5.0) Sending chat ---- ------------ diff --git a/docs/desync.txt b/docs/desync.txt new file mode 100644 index 000000000..fb53b62ae --- /dev/null +++ b/docs/desync.txt @@ -0,0 +1,262 @@ +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'. + - 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 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 1cf2bf1d9..abf01c9d8 100644 --- a/docs/landscape.html +++ b/docs/landscape.html @@ -640,7 +640,7 @@

Landscape

  • m1 bits 4..0: owner of the depot
  • m2: Depot index
  • -
  • m5 bits 3..0: exit towards: +
  • m5 bits 1..0: exit towards: @@ -1593,41 +1593,14 @@

    Landscape

    diff --git a/docs/landscape_grid.html b/docs/landscape_grid.html index 5c73be794..e2f3c1f97 100644 --- a/docs/landscape_grid.html +++ b/docs/landscape_grid.html @@ -115,7 +115,7 @@

    Landscape

    - + @@ -208,7 +208,7 @@

    Landscape

    - + @@ -311,7 +311,7 @@

    Landscape

    - + diff --git a/docs/linkgraph.txt b/docs/linkgraph.txt new file mode 100644 index 000000000..2515185a4 --- /dev/null +++ b/docs/linkgraph.txt @@ -0,0 +1,30 @@ +Some clarifications about the link graph +---------------------------------------- + +InitializeLinkGraphs joins all threads, so if the game is abandoned +with some threads still running, they're joined as soon as the next game +(possibly the title game) is started. See also InitializeGame. + +The MCF (multi-commodity flow) algorithm can be quite CPU-hungry as it's +NP-hard and takes exponential time (though with a very small constant +factor) in the number of nodes. +This is why it is run in a separate thread where possible. However after +some time the thread is joined and if it hasn't finished by then the game +will hang. This problem gets worse if we are running on a platform without +threads. However, as those are usually the ones with less CPU power I +assume the contention for the CPU would make the game hard to play even +with threads or even without cargodist (autosave ...). I might be wrong, +but I won't put any work into this before someone shows me some problem. + +You can configure the link graph recalculation time. A link graph +recalculation time of X days means that each link graph job has X days +to run before it is joined. The downside is that the flow stats won't be +updated before the job is finished and thus a high value means less +updates and longer times until changes in capacities are accounted for. +If you play a very large map with a complicated link graph you may want to +raise the time setting to avoid lags. The same holds for systems with slow +CPUs. + +Another option to avoid excessive lags is to reduce the accuracy of link +graph calculations. Generally the accuracy is inversely correlated to the +CPU requirements of the MCF algorithm. diff --git a/findversion.sh b/findversion.sh index 35568de0c..c0d500a8f 100755 --- a/findversion.sh +++ b/findversion.sh @@ -70,7 +70,7 @@ ROOT_DIR=`pwd` # Determine if we are using a modified version # Assume the dir is not modified MODIFIED="0" -if [ -d "$ROOT_DIR/.svn" ]; then +if [ -d "$ROOT_DIR/.svn" ] || [ -d "$ROOT_DIR/../.svn" ]; then # We are an svn checkout if [ -n "`svnversion | grep 'M'`" ]; then MODIFIED="2" diff --git a/known-bugs.txt b/known-bugs.txt index ea76ecb95..d26ef9ff8 100644 --- a/known-bugs.txt +++ b/known-bugs.txt @@ -1,14 +1,13 @@ OpenTTD's known bugs -Last updated: 2012-06-01 -Release version: 1.2.1 +Last updated: 2014-02-25 +Release version: 1.4.0-beta5 ------------------------------------------------------------------------ Table of contents ----------------- 1.0) About -2.0) Known bugs in this release - * 2.1) Known bugs that will not be solved +2.0) Known bugs 1.0) About @@ -17,36 +16,13 @@ All bugs listed below are marked as known. Please do not submit any bugs that are the same as these. If you do, do not act surprised, because we WILL flame you!! -Of course if you have more knowledge about any of these bugs, have more -specifics, we welcome you to report them. React to the given bug indicated -by the number below on http://bugs.openttd.org. +The current list of known bugs that we intend to fix can be found in our +bug tracking system at: http://bugs.openttd.org +Also check the closed bugs when searching for your bug in this system as +we might have fixed the bug in the mean time. -2.0) Known bugs in this release ----- -------------------------- -The following bugs are known to exist in this release and we intend to -fix them. Some bugs are known but are not fixable or fixing them would -cause further problems. Those bugs can be found in the "Known bugs that -will not be solved" section. - -The bugs in this section all refer to a ticket in our bug tracking system -that you can find at: http://bugs.openttd.org -If the bugs are closed but still listed here it means that the bug is fixed -and that the nightlies and next major release will not have that bug. - -Issues prefixed with [OSX] are required to be fixed before we consider -officially supporting Mac OS X again. For now it remains unsupported and -we only apply bug fixes provided by the community but we are unable to fix -these bugs ourselves. - -- 4857 [OSX] No support for detecting mono space font -- 4847 [OSX] No support for bootstrap downloading of base graphics -- 4744 [OSX] Crash when switching to full screen with OS X Lion -- 4689 [OSX] Crash when hiding window after coming from full screen -- 4420 [OSX] OS' mouse pointer still shows -- 2484 [OSX] Cannot enter CJK characters - -2.1) Known bugs that will not be solved +2.0) Known bugs ---- ---------------------------------- This section lists all known bugs that we do not intend to fix and the reasons why we think that fixing them is infeasible. We might make some @@ -57,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 @@ -427,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/baseset/no_music.obm b/media/baseset/no_music.obm new file mode 100644 index 000000000..fd75cfef3 --- /dev/null +++ b/media/baseset/no_music.obm @@ -0,0 +1,50 @@ +; $Id$ +; +; This represents more or less nothingness +; +[metadata] +name = NoMusic +shortname = NULL +version = 0 +fallback = true +!! description STR_BASEMUSIC_NONE_DESCRIPTION + +[files] +theme = +old_0 = +old_1 = +old_2 = +old_3 = +old_4 = +old_5 = +old_6 = +old_7 = +old_8 = +old_9 = +new_0 = +new_1 = +new_2 = +new_3 = +new_4 = +new_5 = +new_6 = +new_7 = +new_8 = +new_9 = +ezy_0 = +ezy_1 = +ezy_2 = +ezy_3 = +ezy_4 = +ezy_5 = +ezy_6 = +ezy_7 = +ezy_8 = +ezy_9 = + +[md5s] + +[names] + +[origin] +default = This file was part of your OpenTTD installation. diff --git a/media/baseset/no_sound.obs b/media/baseset/no_sound.obs new file mode 100644 index 000000000..e9d5741a0 --- /dev/null +++ b/media/baseset/no_sound.obs @@ -0,0 +1,18 @@ +; $Id$ +; +; This represents more or less nothingness +; +[metadata] +name = NoSound +shortname = NULL +version = 2 +fallback = true +!! description STR_BASESOUNDS_NONE_DESCRIPTION + +[files] +samples = + +[md5s] + +[origin] +default = This file was part of your OpenTTD installation. diff --git a/media/baseset/orig_dos.obg b/media/baseset/orig_dos.obg new file mode 100644 index 000000000..b4cde6400 --- /dev/null +++ b/media/baseset/orig_dos.obg @@ -0,0 +1,31 @@ +; $Id$ +; +; This represents the original graphics as on the non-German Transport +; Tycoon Deluxe DOS CD. +; +[metadata] +name = original_dos +shortname = TTDD +version = 1 +palette = DOS +!! description STR_BASEGRAPHICS_DOS_DESCRIPTION + +[files] +base = TRG1.GRF +logos = TRGI.GRF +arctic = TRGC.GRF +tropical = TRGH.GRF +toyland = TRGT.GRF +extra = OPENTTD.GRF + +[md5s] +TRG1.GRF = 9311676280e5b14077a8ee41c1b42192 +TRGI.GRF = da6a6c9dcc451eec88d79211437b76a8 +TRGC.GRF = ed446637e034104c5559b32c18afe78d +TRGH.GRF = ee6616fb0e6ef6b24892c58c93d86fc9 +TRGT.GRF = e30e8a398ae86c03dc534a8ac7dfb3b6 +OPENTTD.GRF = + +[origin] +default = You can find it on your Transport Tycoon Deluxe CD-ROM. +OPENTTD.GRF = This file was part of your OpenTTD installation. diff --git a/media/baseset/orig_dos.obs b/media/baseset/orig_dos.obs new file mode 100644 index 000000000..e095b6221 --- /dev/null +++ b/media/baseset/orig_dos.obs @@ -0,0 +1,19 @@ +; $Id$ +; +; This represents the original sounds as on the Transport +; Tycoon Deluxe DOS CD. +; +[metadata] +name = original_dos +shortname = TTDO +version = 0 +!! description STR_BASESOUNDS_DOS_DESCRIPTION + +[files] +samples = SAMPLE.CAT + +[md5s] +SAMPLE.CAT = 422ea3dd074d2859bb51639a6e0e85da + +[origin] +default = You can find it on your Transport Tycoon Deluxe CD-ROM. diff --git a/media/baseset/orig_dos_de.obg b/media/baseset/orig_dos_de.obg new file mode 100644 index 000000000..8cfcc2707 --- /dev/null +++ b/media/baseset/orig_dos_de.obg @@ -0,0 +1,31 @@ +; $Id$ +; +; This represents the original graphics as on the German Transport +; Tycoon Deluxe DOS CD. It contains one broken sprite. +; +[metadata] +name = original_dos_de +shortname = TTDD +version = 0 +palette = DOS +!! description STR_BASEGRAPHICS_DOS_DE_DESCRIPTION + +[files] +base = TRG1.GRF +logos = TRGI.GRF +arctic = TRGC.GRF +tropical = TRGH.GRF +toyland = TRGT.GRF +extra = OPENTTD.GRF + +[md5s] +TRG1.GRF = 9311676280e5b14077a8ee41c1b42192 +TRGI.GRF = da6a6c9dcc451eec88d79211437b76a8 +TRGC.GRF = ed446637e034104c5559b32c18afe78d +TRGH.GRF = ee6616fb0e6ef6b24892c58c93d86fc9 +TRGT.GRF = fcde1d7e8a74197d72a62695884b909e +OPENTTD.GRF = + +[origin] +default = You can find it on your Transport Tycoon Deluxe CD-ROM. +OPENTTD.GRF = This file was part of your OpenTTD installation. diff --git a/media/baseset/orig_win.obg b/media/baseset/orig_win.obg new file mode 100644 index 000000000..82a5c2a61 --- /dev/null +++ b/media/baseset/orig_win.obg @@ -0,0 +1,31 @@ +; $Id$ +; +; This represents the original graphics as on the Transport +; Tycoon Deluxe for Windows CD. +; +[metadata] +name = original_windows +shortname = TTDW +version = 0 +palette = Windows +!! description STR_BASEGRAPHICS_WIN_DESCRIPTION + +[files] +base = TRG1R.GRF +logos = TRGIR.GRF +arctic = TRGCR.GRF +tropical = TRGHR.GRF +toyland = TRGTR.GRF +extra = OPENTTD.GRF + +[md5s] +TRG1R.GRF = b04ce593d8c5016e07473a743d7d3358 +TRGIR.GRF = 0c2484ff6be49fc63a83be6ab5c38f32 +TRGCR.GRF = 3668f410c761a050b5e7095a2b14879b +TRGHR.GRF = 06bf2b7a31766f048baac2ebe43457b1 +TRGTR.GRF = de53650517fe661ceaa3138c6edb0eb8 +OPENTTD.GRF = + +[origin] +default = You can find it on your Transport Tycoon Deluxe CD-ROM. +OPENTTD.GRF = This file was part of your OpenTTD installation. diff --git a/media/baseset/orig_win.obm b/media/baseset/orig_win.obm new file mode 100644 index 000000000..8b35b6de9 --- /dev/null +++ b/media/baseset/orig_win.obm @@ -0,0 +1,94 @@ +; $Id$ +; +; This represents the original music as on the Transport +; Tycoon Deluxe for Windows CD. +; +[metadata] +name = original_windows +shortname = TTDW +version = 1 +!! description STR_BASEMUSIC_WIN_DESCRIPTION + +[files] +theme = GM_TT00.GM +old_0 = GM_TT02.GM +old_1 = GM_TT06.GM +old_2 = GM_TT03.GM +old_3 = GM_TT12.GM +old_4 = GM_TT08.GM +old_5 = GM_TT13.GM +old_6 = GM_TT14.GM +old_7 = GM_TT10.GM +old_8 = +old_9 = +new_0 = GM_TT04.GM +new_1 = GM_TT01.GM +new_2 = GM_TT05.GM +new_3 = GM_TT15.GM +new_4 = GM_TT11.GM +new_5 = GM_TT16.GM +new_6 = GM_TT09.GM +new_7 = +new_8 = +new_9 = +ezy_0 = GM_TT18.GM +ezy_1 = GM_TT19.GM +ezy_2 = GM_TT21.GM +ezy_3 = GM_TT17.GM +ezy_4 = GM_TT20.GM +ezy_5 = GM_TT07.GM +ezy_6 = +ezy_7 = +ezy_8 = +ezy_9 = + +[md5s] +GM_TT00.GM = 45cfec1b9d8c7a0ad45e755833cbf221 +GM_TT01.GM = ab14ed3392d848abd2a2e90a9d75d121 +GM_TT02.GM = dd4f696e4be5987ce738257b08b50171 +GM_TT03.GM = a1bfde23343df9e4063419bf29c166b8 +GM_TT04.GM = 4e6943aa0c455203d76c79389054747d +GM_TT05.GM = cee281cb85a2e2343552d97640545a47 +GM_TT06.GM = 26d1de5efa8675f94065784e9d539e49 +GM_TT07.GM = 6f2691e17558f552ec4c565e4ab7139c +GM_TT08.GM = a42bf2cb3340a822f1a69646fc7a487d +GM_TT09.GM = eb35761a58a8df3c59ed8929cce13916 +GM_TT10.GM = 42fecd686720a785d20a78590c466a82 +GM_TT11.GM = 50ef1ef02e49d2112786dd45e69dc3ee +GM_TT12.GM = 4ce707a0e0e72419f0681dd9bd95271b +GM_TT13.GM = e765753be29d889ec818f38009103619 +GM_TT14.GM = 270e2d63bd32b95a4d007ce15a6ce45f +GM_TT15.GM = 89e116a1c0c69f1845cc903a9bfbe460 +GM_TT16.GM = f824e2371b3bedfe61aad4b9c62dd6be +GM_TT17.GM = 1b23eebb0796c1ab99cd97fa7082cf7b +GM_TT18.GM = 15650de3bad645d0e88c4f5c7a2df92a +GM_TT19.GM = 7aec079e15bd09588660b85545ac4dfc +GM_TT20.GM = 1509097889dee617aa1e9a1738a5a930 +GM_TT21.GM = a8d0aaad02e1a762d8d54cf81da56bab + +[names] +GM_TT00.GM = Tycoon DELUXE Theme +GM_TT01.GM = Snarl Up +GM_TT02.GM = Easy Driver +GM_TT03.GM = Little Red Diesel +GM_TT04.GM = City Groove +GM_TT05.GM = Aliens Ate My Railway +GM_TT06.GM = Stoke It +GM_TT07.GM = Don't Walk! +GM_TT08.GM = Sawyer's Tune +GM_TT09.GM = Fell Apart On Me +GM_TT10.GM = Can't Get There From Here +GM_TT11.GM = Hard Drivin' +GM_TT12.GM = Road Hog +GM_TT13.GM = Hold That Train! +GM_TT14.GM = Broomer's Oil Rag +GM_TT15.GM = Goss Groove +GM_TT16.GM = Small Town +GM_TT17.GM = Cruise Control +GM_TT18.GM = Stroll On +GM_TT19.GM = Funk Central +GM_TT20.GM = Jammit +GM_TT21.GM = Movin' On + +[origin] +default = You can find it on your Transport Tycoon Deluxe CD-ROM. diff --git a/media/baseset/orig_win.obs b/media/baseset/orig_win.obs new file mode 100644 index 000000000..e1c2c4e11 --- /dev/null +++ b/media/baseset/orig_win.obs @@ -0,0 +1,19 @@ +; $Id$ +; +; This represents the original sounds as on the Transport +; Tycoon Deluxe for Windows CD. +; +[metadata] +name = original_windows +shortname = TTDO +version = 0 +!! description STR_BASESOUNDS_WIN_DESCRIPTION + +[files] +samples = SAMPLE.CAT + +[md5s] +SAMPLE.CAT = 9212e81e72badd4bbe1eaeae66458e10 + +[origin] +default = You can find it on your Transport Tycoon Deluxe CD-ROM. diff --git a/media/baseset/translations.awk b/media/baseset/translations.awk new file mode 100644 index 000000000..f15cb43ff --- /dev/null +++ b/media/baseset/translations.awk @@ -0,0 +1,69 @@ +# $Id: openttd.desktop.translation.awk 24100 2012-04-08 14:29:31Z rubidium $ + +# This file is part of OpenTTD. +# OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. +# OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . + +# +# Awk script to extract translations for baseset descriptions +# from lang files for insertion into .obg/obs/obm files. +# If there is no translation, there is no output. +# +# The input file is scanned for the pattern +# !! +# +# The lang files (passed as variable 'langfiles') are scanned for and +# the translations are added to the output file: +# . = +# + +# Simple insertion sort since not all AWKs have a sort implementation +function isort(A) { + n = 0 + for (val in A) { + n++; + } + + for (i = 2; i <= n; i++) { + j = i; + hold = A[j] + while (A[j - 1] > hold) { + j--; + A[j + 1] = A[j] + } + A[j] = hold + } + + return n +} + +/^!!/ { + ini_key = $2; + str_id = $3; + + file = langfiles + while ((getline < file) > 0) { + if (match($0, "##isocode") > 0) { + lang = $2; + } else if (match($0, "^" str_id " *:") > 0) { + sub("^[^:]*:", "", $0) + i++; + if (lang == "en_GB") { + texts[i] = ini_key " = "$0; + } else { + texts[i] = ini_key "." lang " = "$0; + } + } + } + close(file); + + count = isort(texts); + for (i = 1; i <= count; i++) { + print texts[i] + } + + next +} + +{ print } diff --git a/media/extra_grf/openttdgui.nfo b/media/extra_grf/openttdgui.nfo index 8c435e4e3..1b17b8651 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 A8 + -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 @@ -176,3 +176,10 @@ -1 sprites/openttdgui.png 8bpp 296 440 8 8 0 0 normal -1 sprites/openttdgui.png 8bpp 312 440 14 10 0 0 normal -1 sprites/openttdgui.png 8bpp 328 440 14 10 0 0 normal + -1 sprites/openttdgui.png 8bpp 348 440 8 8 0 0 normal + -1 sprites/openttdgui.png 8bpp 362 440 20 20 0 0 normal + -1 sprites/openttdgui.png 8bpp 388 440 20 20 0 0 normal + -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 00017335b..28ad2fbaf 100644 Binary files a/media/extra_grf/openttdgui.png and b/media/extra_grf/openttdgui.png differ diff --git a/media/openttd.desktop.in b/media/openttd.desktop.in index 11b3cc631..c037e3c75 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 4fe91571b..1ff0deed6 100644 --- a/os/debian/changelog +++ b/os/debian/changelog @@ -1,278 +1,398 @@ -openttd (1.3.0-beta1) unstable; urgency=low +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 + + -- OpenTTD Mon, 01 Apr 2013 00:00:00 +0200 + +openttd (1.3.0~RC3) unstable; urgency=low + + * New upstream release 1.3.0-RC3 + + -- OpenTTD Mon, 18 Mar 2013 00:00:00 +0100 + +openttd (1.3.0~RC2) unstable; urgency=low + + * New upstream release 1.3.0-RC2 + + -- OpenTTD Tue, 05 Mar 2013 00:00:00 +0100 + +openttd (1.3.0~RC1) unstable; urgency=low + + * New upstream release 1.3.0-RC1 + + -- OpenTTD Tue, 19 Feb 2013 00:00:00 +0100 + +openttd (1.3.0~beta2) unstable; urgency=low + + * New upstream release 1.3.0-beta2 + + -- OpenTTD Thu, 07 Feb 2013 00:00:00 +0100 + +openttd (1.3.0~beta1) unstable; urgency=low * New upstream release 1.3.0-beta1 - -- Matthijs Kooijman Mon, 24 Dec 2012 00:00:00 +0100 + -- OpenTTD Mon, 24 Dec 2012 00:00:00 +0100 openttd (1.2.3) unstable; urgency=low * New upstream release 1.2.3 - -- Matthijs Kooijman Thu, 01 Nov 2012 00:00:00 +0200 + -- OpenTTD Thu, 01 Nov 2012 00:00:00 +0200 openttd (1.2.3~RC1) unstable; urgency=low * New upstream release 1.2.3-RC1 - -- Matthijs Kooijman Wed, 17 Oct 2012 00:00:00 +0200 + -- OpenTTD Wed, 17 Oct 2012 00:00:00 +0200 openttd (1.2.2) unstable; urgency=low * New upstream release 1.2.2 - -- Matthijs Kooijman Thu, 16 Aug 2012 20:00:00 +0200 + -- OpenTTD Thu, 16 Aug 2012 20:00:00 +0200 openttd (1.2.2~RC1) unstable; urgency=low * New upstream release 1.2.2-RC1 - -- Matthijs Kooijman Wed, 01 Aug 2012 00:00:00 +0200 + -- OpenTTD Wed, 01 Aug 2012 00:00:00 +0200 openttd (1.2.1) unstable; urgency=low * New upstream release 1.2.1 - -- Matthijs Kooijman Fri, 01 Jun 2012 00:00:00 +0200 + -- OpenTTD Fri, 01 Jun 2012 00:00:00 +0200 openttd (1.2.1~RC1) unstable; urgency=low * New upstream release 1.2.1-RC1 - -- Matthijs Kooijman Wed, 16 Apr 2012 22:00:00 +0200 + -- OpenTTD Wed, 16 Apr 2012 22:00:00 +0200 openttd (1.2.0) unstable; urgency=low * New upstream release 1.2.0 - -- Matthijs Kooijman Sun, 15 Apr 2012 14:00:00 +0200 + -- OpenTTD Sun, 15 Apr 2012 14:00:00 +0200 openttd (1.2.0~RC4) unstable; urgency=low * New upstream release 1.2.0-RC4 - -- Matthijs Kooijman Sun, 01 Apr 2012 00:00:00 +0200 + -- OpenTTD Sun, 01 Apr 2012 00:00:00 +0200 openttd (1.2.0~RC3) unstable; urgency=low * New upstream release 1.2.0-RC3 - -- Matthijs Kooijman Sun, 18 Mar 2012 18:00:00 +0100 + -- OpenTTD Sun, 18 Mar 2012 18:00:00 +0100 openttd (1.2.0~RC2) unstable; urgency=low * New upstream release 1.2.0-RC2 - -- Matthijs Kooijman Sun, 04 Mar 2012 18:00:00 +0100 + -- OpenTTD Sun, 04 Mar 2012 18:00:00 +0100 openttd (1.2.0~RC1) unstable; urgency=low * New upstream release 1.2.0-RC1 - -- Matthijs Kooijman Sun, 19 Feb 2012 23:00:00 +0100 + -- OpenTTD Sun, 19 Feb 2012 23:00:00 +0100 openttd (1.2.0~beta4) unstable; urgency=low * New upstream release 1.2.0-beta4 - -- Matthijs Kooijman Sat, 04 Feb 2012 16:00:00 +0100 + -- OpenTTD Sat, 04 Feb 2012 16:00:00 +0100 openttd (1.2.0~beta3) unstable; urgency=low * New upstream release 1.2.0-beta3 - -- Matthijs Kooijman Sat, 21 Jan 2012 16:00:00 +0100 + -- OpenTTD Sat, 21 Jan 2012 16:00:00 +0100 openttd (1.2.0~beta2) unstable; urgency=low * New upstream release 1.2.0-beta2 - -- Matthijs Kooijman Sat, 07 Jan 2012 00:00:00 +0100 + -- OpenTTD Sat, 07 Jan 2012 00:00:00 +0100 openttd (1.2.0~beta1) unstable; urgency=low * New upstream release 1.2.0-beta1 - -- Matthijs Kooijman Sat, 24 Dec 2011 00:00:00 +0100 + -- OpenTTD Sat, 24 Dec 2011 00:00:00 +0100 openttd (1.1.4) unstable; urgency=low * New upstream release 1.1.4 - -- Matthijs Kooijman Mon, 05 Dec 2011 00:00:00 +0400 + -- OpenTTD Mon, 05 Dec 2011 00:00:00 +0400 openttd (1.1.4-RC1) unstable; urgency=low * New upstream release 1.1.4-RC1 - -- Matthijs Kooijman Sun, 20 Nov 2011 17:00:00 +0100 + -- OpenTTD Sun, 20 Nov 2011 17:00:00 +0100 openttd (1.1.3) unstable; urgency=low * New upstream release 1.1.3 - -- Matthijs Kooijman Thu, 15 Sep 2011 21:00:00 +0200 + -- OpenTTD Thu, 15 Sep 2011 21:00:00 +0200 openttd (1.1.3-RC1) unstable; urgency=low * New upstream release 1.1.3-RC1 - -- Matthijs Kooijman Sun, 04 Sep 2011 17:00:00 +0200 + -- OpenTTD Sun, 04 Sep 2011 17:00:00 +0200 openttd (1.1.2) unstable; urgency=low * New upstream release 1.1.2 - -- Matthijs Kooijman Sun, 14 Aug 2011 17:00:00 +0200 + -- OpenTTD Sun, 14 Aug 2011 17:00:00 +0200 openttd (1.1.2~RC2) unstable; urgency=low * New upstream release 1.1.2-RC2 - -- Matthijs Kooijman Sat, 30 Jul 2011 21:00:00 +0200 + -- OpenTTD Sat, 30 Jul 2011 21:00:00 +0200 openttd (1.1.2~RC1) unstable; urgency=low * New upstream release 1.1.2-RC1 - -- Matthijs Kooijman Sun, 24 Jul 2011 21:00:00 +0200 + -- OpenTTD Sun, 24 Jul 2011 21:00:00 +0200 openttd (1.1.1) unstable; urgency=low * New upstream release 1.1.1 - -- Matthijs Kooijman Wed, 01 Jun 2011 00:00:00 +0200 + -- OpenTTD Wed, 01 Jun 2011 00:00:00 +0200 openttd (1.1.1~RC1) unstable; urgency=low * New upstream release 1.1.1-RC1 - -- Matthijs Kooijman Sun, 15 May 2011 21:00:00 +0200 + -- OpenTTD Sun, 15 May 2011 21:00:00 +0200 openttd (1.1.0) unstable; urgency=low * New upstream release 1.1.0 - -- Matthijs Kooijman Fri, 01 Apr 2011 00:00:00 +0100 + -- OpenTTD Fri, 01 Apr 2011 00:00:00 +0100 openttd (1.1.0~RC3) unstable; urgency=low * New upstream release 1.1.0-RC3 - -- Matthijs Kooijman Fri, 18 Mar 2011 22:00:00 +0100 + -- OpenTTD Fri, 18 Mar 2011 22:00:00 +0100 openttd (1.1.0~RC2) unstable; urgency=low * New upstream release 1.1.0-RC2 - -- Matthijs Kooijman Fri, 04 Mar 2011 22:00:00 +0100 + -- OpenTTD Fri, 04 Mar 2011 22:00:00 +0100 openttd (1.1.0~RC1) unstable; urgency=low * New upstream release 1.1.0-RC1 - -- Matthijs Kooijman Fri, 18 Feb 2011 22:00:00 +0100 + -- OpenTTD Fri, 18 Feb 2011 22:00:00 +0100 openttd (1.1.0~beta5) unstable; urgency=low * New upstream release 1.1.0-beta5 - -- Matthijs Kooijman Fri, 04 Feb 2011 22:00:00 +0100 + -- OpenTTD Fri, 04 Feb 2011 22:00:00 +0100 openttd (1.1.0~beta4) unstable; urgency=low * New upstream release 1.1.0-beta4 - -- Matthijs Kooijman Fri, 21 Jan 2011 00:00:00 +0100 + -- OpenTTD Fri, 21 Jan 2011 00:00:00 +0100 openttd (1.1.0~beta3) unstable; urgency=low * New upstream release 1.1.0-beta3 - -- Matthijs Kooijman Sun, 09 Jan 2011 18:00:00 +0100 + -- OpenTTD Sun, 09 Jan 2011 18:00:00 +0100 openttd (1.1.0~beta2) unstable; urgency=low * New upstream release 1.1.0-beta2 - -- Matthijs Kooijman Fri, 31 Dec 2010 18:00:00 +0100 + -- OpenTTD Fri, 31 Dec 2010 18:00:00 +0100 openttd (1.1.0~beta1) unstable; urgency=low * New upstream release 1.1.0-beta1 - -- Matthijs Kooijman Fri, 24 Dec 2010 00:00:00 +0100 + -- OpenTTD Fri, 24 Dec 2010 00:00:00 +0100 openttd (1.0.5-0) unstable; urgency=low * New upstream release 1.0.5 - -- Matthijs Kooijman Sat, 20 Nov 2010 21:00:00 +0000 + -- OpenTTD Sat, 20 Nov 2010 21:00:00 +0000 openttd (1.0.5~rc2-0) unstable; urgency=low * New upstream release 1.0.5~rc2 - -- Matthijs Kooijman Sun, 14 Nov 2010 15:00:00 +0000 + -- OpenTTD Sun, 14 Nov 2010 15:00:00 +0000 openttd (1.0.5~rc1-0) unstable; urgency=low * New upstream release 1.0.5-RC1 - -- Matthijs Kooijman Sun, 31 Oct 2010 15:00:00 +0000 + -- OpenTTD Sun, 31 Oct 2010 15:00:00 +0000 openttd (1.0.4-0) unstable; urgency=low * New upstream release 1.0.4 - -- Matthijs Kooijman Tue, 14 Sep 2010 20:00:00 +0000 + -- OpenTTD Tue, 14 Sep 2010 20:00:00 +0000 openttd (1.0.4~rc1-0) unstable; urgency=low * New upstream release 1.0.4-RC1 - -- Matthijs Kooijman Mon, 30 Aug 2010 20:00:00 +0000 + -- OpenTTD Mon, 30 Aug 2010 20:00:00 +0000 openttd (1.0.3-0) unstable; urgency=low * New upstream release 1.0.3 - -- Matthijs Kooijman Sun, 01 Aug 2010 00:00:00 +0000 + -- OpenTTD Sun, 01 Aug 2010 00:00:00 +0000 openttd (1.0.3~rc1-0) unstable; urgency=low * New upstream release 1.0.3-RC1 - -- Matthijs Kooijman Sat, 05 Jul 2010 17:37:21 +0000 + -- OpenTTD Sat, 05 Jul 2010 17:37:21 +0000 openttd (1.0.2-0) unstable; urgency=low * New upstream release 1.0.2 - -- Matthijs Kooijman Sat, 19 Jun 2010 18:36:21 +0000 + -- OpenTTD Sat, 19 Jun 2010 18:36:21 +0000 openttd (1.0.2~rc1-0) unstable; urgency=low * New upstream release 1.0.2-RC1 - -- Matthijs Kooijman Sat, 05 Jun 2010 23:36:21 +0000 + -- OpenTTD Sat, 05 Jun 2010 23:36:21 +0000 openttd (1.0.1-0) unstable; urgency=low * New upstream release 1.0.1 - -- Matthijs Kooijman Sat, 01 May 2010 00:00:00 +0200 + -- OpenTTD Sat, 01 May 2010 00:00:00 +0200 openttd (1.0.1~rc2-0) unstable; urgency=low * New upstream release 1.0.1-RC2 - -- Matthijs Kooijman Wed, 21 Apr 2010 21:36:21 +0200 + -- OpenTTD Wed, 21 Apr 2010 21:36:21 +0200 openttd (1.0.1~rc1-0) unstable; urgency=low * New upstream release 1.0.1-RC1 - -- Matthijs Kooijman Sat, 17 Apr 2010 23:36:21 +0000 + -- OpenTTD Sat, 17 Apr 2010 23:36:21 +0000 openttd (1.0.0-1) unstable; urgency=low diff --git a/os/debian/control b/os/debian/control index de22a807a..54e14ce5d 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 c361d80dd..be573b482 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 58e23aaa0..3afa6e08e 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 97094b0c5..dfd39253e 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 000000000..112b02a08 --- /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 000000000..112b02a08 --- /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 c21e29d2c..259e50237 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 86ee60f57..289b6ea54 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-beta1 +set OPENTTD_VERSION=1.5.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 d35501110..cd19fd921 100644 --- a/os/rpm/openttd.spec +++ b/os/rpm/openttd.spec @@ -17,9 +17,9 @@ # Name: openttd -Version: 1.3.beta1 +Version: 1.5.beta1 Release: 0 -%define srcver 1.3.0-beta1 +%define srcver 1.5.0-beta1 Summary: An open source reimplementation of Chris Sawyer's Transport Tycoon Deluxe License: GPL-2.0 Group: Amusements/Games/Strategy/Other @@ -227,11 +227,13 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : %dir %{_datadir}/%{name}/baseset %dir %{_datadir}/%{name}/scripts %dir %{_datadir}/%{name}/ai +%dir %{_datadir}/%{name}/game %{_datadir}/doc/%{name}/* %{_datadir}/%{name}/lang/* %{_datadir}/%{name}/baseset/* %{_datadir}/%{name}/scripts/* %{_datadir}/%{name}/ai/* +%{_datadir}/%{name}/game/* %doc %{_mandir}/man6/%{name}.6.* %files gui diff --git a/os/windows/installer/install.nsi b/os/windows/installer/install.nsi index 6fef11d2e..cca07eade 100644 --- a/os/windows/installer/install.nsi +++ b/os/windows/installer/install.nsi @@ -1,6 +1,6 @@ # Version numbers to update !define APPV_MAJOR 1 -!define APPV_MINOR 3 +!define APPV_MINOR 5 !define APPV_MAINT 0 !define APPV_BUILD 0 !define APPV_EXTRA "-beta1" @@ -124,6 +124,10 @@ Section "!OpenTTD" Section1 SetOutPath "$INSTDIR\ai\" File ${PATH_ROOT}bin\ai\compat_*.nut + ; Copy Game Script files + SetOutPath "$INSTDIR\game\" + File ${PATH_ROOT}bin\game\compat_*.nut + ; Copy data files SetOutPath "$INSTDIR\baseset\" File ${PATH_ROOT}bin\baseset\*.grf @@ -398,6 +402,9 @@ Section "Uninstall" ; AI files Delete "$INSTDIR\ai\compat_*.nut" + ; Game Script files + Delete "$INSTDIR\game\compat_*.nut" + ; Baseset files Delete "$INSTDIR\baseset\opntitle.dat" Delete "$INSTDIR\baseset\openttd.grf" @@ -469,6 +476,7 @@ Section "Uninstall" RMDir "$SMPROGRAMS\$SHORTCUTS\Docs\" RMDir "$SMPROGRAMS\$SHORTCUTS" RMDir "$INSTDIR\ai" + RMDir "$INSTDIR\game" RMDir "$INSTDIR\data" RMDir "$INSTDIR\baseset" RMDir "$INSTDIR\gm" @@ -537,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.vbs b/projects/generate.vbs index 87c27ab38..4e1e88687 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/generate_vs100.vcxproj b/projects/generate_vs100.vcxproj index 4417308e6..ac1596af3 100644 --- a/projects/generate_vs100.vcxproj +++ b/projects/generate_vs100.vcxproj @@ -1,4 +1,4 @@ - + @@ -14,6 +14,7 @@ Utility + v110 @@ -39,4 +40,4 @@ - + \ No newline at end of file diff --git a/projects/langs_vs100.vcxproj b/projects/langs_vs100.vcxproj index e88509ec5..1b78cd404 100644 --- a/projects/langs_vs100.vcxproj +++ b/projects/langs_vs100.vcxproj @@ -1,4 +1,4 @@ - + @@ -16,6 +16,7 @@ Utility false + v110 @@ -137,6 +138,12 @@ ..\src\lang\english.txt;..\objs\strgen\strgen.exe;%(AdditionalInputs) ..\bin\lang\estonian.lng;%(Outputs) + + Generating faroese language file + ..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "%(FullPath)" + ..\src\lang\english.txt;..\objs\strgen\strgen.exe;%(AdditionalInputs) + ..\bin\lang\faroese.lng;%(Outputs) + Generating finnish language file ..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "%(FullPath)" @@ -149,6 +156,12 @@ ..\src\lang\english.txt;..\objs\strgen\strgen.exe;%(AdditionalInputs) ..\bin\lang\french.lng;%(Outputs) + + Generating gaelic language file + ..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "%(FullPath)" + ..\src\lang\english.txt;..\objs\strgen\strgen.exe;%(AdditionalInputs) + ..\bin\lang\gaelic.lng;%(Outputs) + Generating galician language file ..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "%(FullPath)" @@ -311,6 +324,18 @@ ..\src\lang\english.txt;..\objs\strgen\strgen.exe;%(AdditionalInputs) ..\bin\lang\swedish.lng;%(Outputs) + + Generating tamil language file + ..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "%(FullPath)" + ..\src\lang\english.txt;..\objs\strgen\strgen.exe;%(AdditionalInputs) + ..\bin\lang\tamil.lng;%(Outputs) + + + Generating thai language file + ..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "%(FullPath)" + ..\src\lang\english.txt;..\objs\strgen\strgen.exe;%(AdditionalInputs) + ..\bin\lang\thai.lng;%(Outputs) + Generating traditional_chinese language file ..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "%(FullPath)" @@ -351,4 +376,4 @@ - + \ No newline at end of file diff --git a/projects/langs_vs100.vcxproj.filters b/projects/langs_vs100.vcxproj.filters index f631cc78e..64221319e 100644 --- a/projects/langs_vs100.vcxproj.filters +++ b/projects/langs_vs100.vcxproj.filters @@ -52,12 +52,18 @@ Translations + + Translations + Translations Translations + + Translations + Translations @@ -139,6 +145,12 @@ Translations + + Translations + + + Translations + Translations diff --git a/projects/langs_vs80.vcproj b/projects/langs_vs80.vcproj index 958b8e5a9..6cea19753 100644 --- a/projects/langs_vs80.vcproj +++ b/projects/langs_vs80.vcproj @@ -288,6 +288,21 @@ /> + + + + + @@ -318,6 +333,21 @@ /> + + + + + @@ -723,6 +753,36 @@ /> + + + + + + + + + + diff --git a/projects/langs_vs90.vcproj b/projects/langs_vs90.vcproj index 6885287b3..5fe8dca8d 100644 --- a/projects/langs_vs90.vcproj +++ b/projects/langs_vs90.vcproj @@ -289,6 +289,21 @@ /> + + + + + @@ -319,6 +334,21 @@ /> + + + + + @@ -724,6 +754,36 @@ /> + + + + + + + + + + diff --git a/projects/openttd_vs100.vcxproj b/projects/openttd_vs100.vcxproj index 4ab6f45e7..5e5f7f9f0 100644 --- a/projects/openttd_vs100.vcxproj +++ b/projects/openttd_vs100.vcxproj @@ -1,4 +1,4 @@ - + @@ -28,23 +28,27 @@ Application false Unicode + v110 Application false Unicode true + v110 Application false Unicode + v110 Application false Unicode true + v110 @@ -88,6 +92,22 @@ $(SolutionDir)..\objs\$(Platform)\$(Configuration)\ $(ProjectDir)..\bin + + C:\Users\Andi\Documents\Visual Studio 2012\Projects\OpenTTD-useful\x64\include;$(IncludePath) + C:\Users\Andi\Documents\Visual Studio 2012\Projects\OpenTTD-useful\x64\library;$(LibraryPath) + + + C:\Users\Andi\Documents\Visual Studio 2012\Projects\OpenTTD-useful\x64\include;$(IncludePath) + C:\Users\Andi\Documents\Visual Studio 2012\Projects\OpenTTD-useful\x64\library;$(LibraryPath) + + + C:\Users\Andi\Documents\Visual Studio 2012\Projects\OpenTTD-useful\x32\include;$(IncludePath) + C:\Users\Andi\Documents\Visual Studio 2012\Projects\OpenTTD-useful\x32\library;$(LibraryPath) + + + C:\Users\Andi\Documents\Visual Studio 2012\Projects\OpenTTD-useful\x32\include;$(IncludePath) + C:\Users\Andi\Documents\Visual Studio 2012\Projects\OpenTTD-useful\x32\library;$(LibraryPath) + .\Release/openttd.tlb @@ -102,7 +122,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 @@ -131,7 +151,7 @@ 0x0809 - winmm.lib;ws2_32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;icuuc.lib;icuin.lib;icudt.lib;%(AdditionalDependencies) + winmm.lib;ws2_32.lib;imm32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;icuuc.lib;icuin.lib;icudt.lib;icule.lib;iculx.lib;%(AdditionalDependencies) true %(IgnoreSpecificDefaultLibraries) true @@ -156,7 +176,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 @@ -176,7 +196,7 @@ 0x0809 - winmm.lib;ws2_32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;icuuc.lib;icuin.lib;icudt.lib;%(AdditionalDependencies) + winmm.lib;ws2_32.lib;imm32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;icuuc.lib;icuin.lib;icudt.lib;icule.lib;iculx.lib;%(AdditionalDependencies) true LIBCMT.lib;%(IgnoreSpecificDefaultLibraries) true @@ -204,7 +224,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;_XKEYCHECK_H;%(PreprocessorDefinitions) true Sync MultiThreaded @@ -233,7 +253,7 @@ 0x0809 - winmm.lib;ws2_32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;icuuc.lib;icuin.lib;icudt.lib;%(AdditionalDependencies) + winmm.lib;ws2_32.lib;imm32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;icuuc.lib;icuin.lib;icudt.lib;icule.lib;iculx.lib;%(AdditionalDependencies) true %(IgnoreSpecificDefaultLibraries) true @@ -256,7 +276,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;_XKEYCHECK_H;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebug @@ -280,7 +300,7 @@ 0x0809 - winmm.lib;ws2_32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;icuuc.lib;icuin.lib;icudt.lib;%(AdditionalDependencies) + winmm.lib;ws2_32.lib;imm32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;icuuc.lib;icuin.lib;icudt.lib;icule.lib;iculx.lib;%(AdditionalDependencies) true LIBCMT.lib;%(IgnoreSpecificDefaultLibraries) true @@ -296,6 +316,7 @@ + @@ -303,6 +324,7 @@ + @@ -317,11 +339,13 @@ + + @@ -330,6 +354,13 @@ + + + + + + + @@ -344,7 +375,6 @@ - @@ -364,6 +394,7 @@ + @@ -374,6 +405,7 @@ + @@ -392,6 +424,7 @@ + @@ -410,6 +443,7 @@ + @@ -440,11 +474,13 @@ + + @@ -467,6 +503,18 @@ + + + + + + + + + + + + @@ -540,6 +588,7 @@ + @@ -568,7 +617,10 @@ + + + @@ -611,6 +663,7 @@ + @@ -640,6 +693,7 @@ + @@ -647,6 +701,8 @@ + + @@ -672,6 +728,7 @@ + @@ -693,6 +750,7 @@ + @@ -731,6 +789,7 @@ + @@ -750,6 +809,7 @@ + @@ -805,6 +865,7 @@ + @@ -822,6 +883,7 @@ + @@ -994,6 +1056,9 @@ + + + @@ -1055,6 +1120,9 @@ + + + @@ -1072,12 +1140,22 @@ + + + + + + + + + + @@ -1199,6 +1277,7 @@ + @@ -1234,4 +1313,4 @@ - + \ No newline at end of file diff --git a/projects/openttd_vs100.vcxproj.filters b/projects/openttd_vs100.vcxproj.filters index 34a8b4d00..f51295d38 100644 --- a/projects/openttd_vs100.vcxproj.filters +++ b/projects/openttd_vs100.vcxproj.filters @@ -117,6 +117,9 @@ Source Files + + Source Files + Source Files @@ -138,6 +141,9 @@ Source Files + + Source Files + Source Files @@ -180,6 +186,9 @@ Source Files + + Source Files + Source Files @@ -195,6 +204,9 @@ Source Files + + Source Files + Source Files @@ -219,6 +231,27 @@ Source Files + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + Source Files @@ -261,9 +294,6 @@ Source Files - - Source Files - Source Files @@ -321,6 +351,9 @@ Source Files + + Source Files + Source Files @@ -351,6 +384,9 @@ Source Files + + Source Files + Source Files @@ -405,6 +441,9 @@ Header Files + + Header Files + Header Files @@ -459,6 +498,9 @@ Header Files + + Header Files + Header Files @@ -549,6 +591,9 @@ Header Files + + Header Files + Header Files @@ -564,6 +609,9 @@ Header Files + + Header Files + Header Files @@ -630,6 +678,42 @@ Header Files + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + Header Files @@ -849,6 +933,9 @@ Header Files + + Header Files + Header Files @@ -933,9 +1020,18 @@ Header Files + + Header Files + + + Header Files + Header Files + + Header Files + Header Files @@ -1062,6 +1158,9 @@ Header Files + + Header Files + Header Files @@ -1149,6 +1248,9 @@ Core Source Code + + Core Source Code + Core Source Code @@ -1170,6 +1272,12 @@ Core Source Code + + Core Source Code + + + Core Source Code + Core Source Code @@ -1245,6 +1353,9 @@ GUI Source Code + + GUI Source Code + GUI Source Code @@ -1308,6 +1419,9 @@ GUI Source Code + + GUI Source Code + GUI Source Code @@ -1422,6 +1536,9 @@ Widgets + + Widgets + Widgets @@ -1479,6 +1596,9 @@ Widgets + + Widgets + Widgets @@ -1644,6 +1764,9 @@ Save/Load handlers + + Save/Load handlers + Save/Load handlers @@ -1695,6 +1818,9 @@ Save/Load handlers + + Save/Load handlers + Save/Load handlers @@ -2211,6 +2337,15 @@ Script API + + Script API + + + Script API + + + Script API + Script API @@ -2394,6 +2529,15 @@ Script API Implementation + + Script API Implementation + + + Script API Implementation + + + Script API Implementation + Script API Implementation @@ -2445,6 +2589,12 @@ Blitters + + Blitters + + + Blitters + Blitters @@ -2463,6 +2613,30 @@ Blitters + + Blitters + + + Blitters + + + Blitters + + + Blitters + + + Blitters + + + Blitters + + + Blitters + + + Blitters + Blitters @@ -2826,6 +3000,9 @@ YAPF + + YAPF + Video diff --git a/projects/openttd_vs100.vcxproj.in b/projects/openttd_vs100.vcxproj.in index 54b0063ec..7a4f0bce8 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 @@ -131,7 +131,7 @@ 0x0809 - winmm.lib;ws2_32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;icuuc.lib;icuin.lib;icudt.lib;%(AdditionalDependencies) + winmm.lib;ws2_32.lib;imm32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;icuuc.lib;icuin.lib;icudt.lib;icule.lib;iculx.lib;%(AdditionalDependencies) true %(IgnoreSpecificDefaultLibraries) true @@ -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 @@ -176,7 +176,7 @@ 0x0809 - winmm.lib;ws2_32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;icuuc.lib;icuin.lib;icudt.lib;%(AdditionalDependencies) + winmm.lib;ws2_32.lib;imm32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;icuuc.lib;icuin.lib;icudt.lib;icule.lib;iculx.lib;%(AdditionalDependencies) true LIBCMT.lib;%(IgnoreSpecificDefaultLibraries) true @@ -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 @@ -233,7 +233,7 @@ 0x0809 - winmm.lib;ws2_32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;icuuc.lib;icuin.lib;icudt.lib;%(AdditionalDependencies) + winmm.lib;ws2_32.lib;imm32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;icuuc.lib;icuin.lib;icudt.lib;icule.lib;iculx.lib;%(AdditionalDependencies) true %(IgnoreSpecificDefaultLibraries) true @@ -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 @@ -280,7 +280,7 @@ 0x0809 - winmm.lib;ws2_32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;icuuc.lib;icuin.lib;icudt.lib;%(AdditionalDependencies) + winmm.lib;ws2_32.lib;imm32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;icuuc.lib;icuin.lib;icudt.lib;icule.lib;iculx.lib;%(AdditionalDependencies) true LIBCMT.lib;%(IgnoreSpecificDefaultLibraries) true diff --git a/projects/openttd_vs80.vcproj b/projects/openttd_vs80.vcproj index c6e3e595f..f7d087146 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" @@ -87,7 +87,7 @@ /> + + @@ -482,6 +486,10 @@ RelativePath=".\..\src\console_cmds.cpp" > + + @@ -538,6 +546,10 @@ RelativePath=".\..\src\fontcache.cpp" > + + @@ -558,6 +570,10 @@ RelativePath=".\..\src\gfxinit.cpp" > + + @@ -590,6 +606,34 @@ RelativePath=".\..\src\landscape.cpp" > + + + + + + + + + + + + + + @@ -646,10 +690,6 @@ RelativePath=".\..\src\order_backup.cpp" > - - @@ -726,6 +766,10 @@ RelativePath=".\..\src\strings.cpp" > + + @@ -766,6 +810,10 @@ RelativePath=".\..\src\viewport.cpp" > + + @@ -842,6 +890,10 @@ RelativePath=".\..\src\cargo_type.h" > + + @@ -914,6 +966,10 @@ RelativePath=".\..\src\console_type.h" > + + @@ -1034,6 +1090,10 @@ RelativePath=".\..\src\fontcache.h" > + + @@ -1054,6 +1114,10 @@ RelativePath=".\..\src\gfx_func.h" > + + @@ -1142,6 +1206,54 @@ RelativePath=".\..\src\language.h" > + + + + + + + + + + + + + + + + + + + + + + + + @@ -1434,6 +1546,10 @@ RelativePath=".\..\src\roadveh.h" > + + @@ -1546,10 +1662,22 @@ RelativePath=".\..\src\stdafx.h" > + + + + + + @@ -1718,6 +1846,10 @@ RelativePath=".\..\src\viewport_func.h" > + + @@ -1838,6 +1970,10 @@ RelativePath=".\..\src\core\mem_func.hpp" > + + @@ -1866,6 +2002,14 @@ RelativePath=".\..\src\core\smallmap_type.hpp" > + + + + @@ -1970,6 +2114,10 @@ RelativePath=".\..\src\intro_gui.cpp" > + + @@ -2054,6 +2202,10 @@ RelativePath=".\..\src\statusbar_gui.cpp" > + + @@ -2210,6 +2362,10 @@ RelativePath=".\..\src\widgets\intro_widget.h" > + + @@ -2286,6 +2442,10 @@ RelativePath=".\..\src\widgets\statusbar_widget.h" > + + @@ -2514,6 +2674,10 @@ RelativePath=".\..\src\saveload\labelmaps_sl.cpp" > + + @@ -2582,6 +2746,10 @@ RelativePath=".\..\src\saveload\strings_sl.cpp" > + + @@ -3310,6 +3478,18 @@ RelativePath=".\..\src\script\api\script_stationlist.hpp" > + + + + + + @@ -3558,6 +3738,18 @@ RelativePath=".\..\src\script\api\script_stationlist.cpp" > + + + + + + @@ -3630,6 +3822,14 @@ RelativePath=".\..\src\blitter\32bpp_anim.hpp" > + + + + @@ -3654,6 +3854,38 @@ RelativePath=".\..\src\blitter\32bpp_simple.hpp" > + + + + + + + + + + + + + + + + @@ -4174,6 +4406,10 @@ RelativePath=".\..\src\pathfinder\yapf\yapf_ship.cpp" > + + + + @@ -479,6 +483,10 @@ RelativePath=".\..\src\console_cmds.cpp" > + + @@ -535,6 +543,10 @@ RelativePath=".\..\src\fontcache.cpp" > + + @@ -555,6 +567,10 @@ RelativePath=".\..\src\gfxinit.cpp" > + + @@ -587,6 +603,34 @@ RelativePath=".\..\src\landscape.cpp" > + + + + + + + + + + + + + + @@ -643,10 +687,6 @@ RelativePath=".\..\src\order_backup.cpp" > - - @@ -723,6 +763,10 @@ RelativePath=".\..\src\strings.cpp" > + + @@ -763,6 +807,10 @@ RelativePath=".\..\src\viewport.cpp" > + + @@ -839,6 +887,10 @@ RelativePath=".\..\src\cargo_type.h" > + + @@ -911,6 +963,10 @@ RelativePath=".\..\src\console_type.h" > + + @@ -1031,6 +1087,10 @@ RelativePath=".\..\src\fontcache.h" > + + @@ -1051,6 +1111,10 @@ RelativePath=".\..\src\gfx_func.h" > + + @@ -1139,6 +1203,54 @@ RelativePath=".\..\src\language.h" > + + + + + + + + + + + + + + + + + + + + + + + + @@ -1431,6 +1543,10 @@ RelativePath=".\..\src\roadveh.h" > + + @@ -1543,10 +1659,22 @@ RelativePath=".\..\src\stdafx.h" > + + + + + + @@ -1715,6 +1843,10 @@ RelativePath=".\..\src\viewport_func.h" > + + @@ -1835,6 +1967,10 @@ RelativePath=".\..\src\core\mem_func.hpp" > + + @@ -1863,6 +1999,14 @@ RelativePath=".\..\src\core\smallmap_type.hpp" > + + + + @@ -1967,6 +2111,10 @@ RelativePath=".\..\src\intro_gui.cpp" > + + @@ -2051,6 +2199,10 @@ RelativePath=".\..\src\statusbar_gui.cpp" > + + @@ -2207,6 +2359,10 @@ RelativePath=".\..\src\widgets\intro_widget.h" > + + @@ -2283,6 +2439,10 @@ RelativePath=".\..\src\widgets\statusbar_widget.h" > + + @@ -2511,6 +2671,10 @@ RelativePath=".\..\src\saveload\labelmaps_sl.cpp" > + + @@ -2579,6 +2743,10 @@ RelativePath=".\..\src\saveload\strings_sl.cpp" > + + @@ -3307,6 +3475,18 @@ RelativePath=".\..\src\script\api\script_stationlist.hpp" > + + + + + + @@ -3555,6 +3735,18 @@ RelativePath=".\..\src\script\api\script_stationlist.cpp" > + + + + + + @@ -3627,6 +3819,14 @@ RelativePath=".\..\src\blitter\32bpp_anim.hpp" > + + + + @@ -3651,6 +3851,38 @@ RelativePath=".\..\src\blitter\32bpp_simple.hpp" > + + + + + + + + + + + + + + + + @@ -4171,6 +4403,10 @@ RelativePath=".\..\src\pathfinder\yapf\yapf_ship.cpp" > + + Makefile + v110 @@ -23,7 +24,7 @@ -..\objs\settings\settings_gen.exe -o ..\objs\settings\table\settings.h -b ..\src\table\settings.h.preamble -a ..\src\table\settings.h.postamble ..\src\table\company_settings.ini ..\src\table\currency_settings.ini ..\src\table\gameopt_settings.ini ..\src\table\misc_settings.ini ..\src\table\settings.ini ..\src\table\win32_settings.ini +..\objs\settings\settings_gen.exe -o ..\objs\settings\table\settings.h -b ..\src\table\settings.h.preamble -a ..\src\table\settings.h.postamble ..\src\table\company_settings.ini ..\src\table\currency_settings.ini ..\src\table\gameopt_settings.ini ..\src\table\misc_settings.ini ..\src\table\settings.ini ..\src\table\win32_settings.ini ..\src\table\window_settings.ini @@ -42,6 +43,7 @@ + @@ -50,4 +52,4 @@ - + \ No newline at end of file diff --git a/projects/settings_vs100.vcxproj.filters b/projects/settings_vs100.vcxproj.filters index 2c579391b..8caf9fa0a 100644 --- a/projects/settings_vs100.vcxproj.filters +++ b/projects/settings_vs100.vcxproj.filters @@ -24,6 +24,9 @@ INI + + INI + diff --git a/projects/settings_vs80.vcproj b/projects/settings_vs80.vcproj index 9ecc87097..0084dcbc5 100644 --- a/projects/settings_vs80.vcproj +++ b/projects/settings_vs80.vcproj @@ -24,7 +24,7 @@ Name="VCPreBuildEventTool" Description="Generating settings.h" CommandLine=" -..\objs\settings\settings_gen.exe -o ..\objs\settings\table\settings.h -b ..\src\table\settings.h.preamble -a ..\src\table\settings.h.postamble ..\src\table\company_settings.ini ..\src\table\currency_settings.ini ..\src\table\gameopt_settings.ini ..\src\table\misc_settings.ini ..\src\table\settings.ini ..\src\table\win32_settings.ini +..\objs\settings\settings_gen.exe -o ..\objs\settings\table\settings.h -b ..\src\table\settings.h.preamble -a ..\src\table\settings.h.postamble ..\src\table\company_settings.ini ..\src\table\currency_settings.ini ..\src\table\gameopt_settings.ini ..\src\table\misc_settings.ini ..\src\table\settings.ini ..\src\table\win32_settings.ini ..\src\table\window_settings.ini " /> + + + + Application MultiByte + v110 diff --git a/projects/strgen_vs100.vcxproj b/projects/strgen_vs100.vcxproj index 7a43b4deb..0dc5945cb 100644 --- a/projects/strgen_vs100.vcxproj +++ b/projects/strgen_vs100.vcxproj @@ -1,4 +1,4 @@ - + @@ -16,6 +16,7 @@ Application false MultiByte + v110 @@ -91,4 +92,4 @@ - + \ No newline at end of file diff --git a/projects/version_vs100.vcxproj b/projects/version_vs100.vcxproj index 008e6dd66..7d9212866 100644 --- a/projects/version_vs100.vcxproj +++ b/projects/version_vs100.vcxproj @@ -15,6 +15,7 @@ Makefile MultiByte + v110 diff --git a/readme.txt b/readme.txt index 12a04a4ff..e89965cc3 100644 --- a/readme.txt +++ b/readme.txt @@ -1,6 +1,5 @@ -OpenTTD readme -Last updated: 2012-12-24 -Release version: 1.3.0-beta1 +Last updated: 2014-02-25 +Release version: 1.4.0-beta5 ------------------------------------------------------------------------ @@ -22,10 +21,12 @@ Table of contents 7.0) Compiling * 7.1) Required/optional libraries * 7.2) Supported compilers + * 7.3) Compilation of base sets 8.0) Translating * 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 ---- ---------- @@ -218,9 +219,9 @@ The Windows installer can optionally download and install these packages. 4.1.2) Original Transport Tycoon Deluxe graphics and sound files ------ --------------------------------------------------------- If you want to play with the original Transport Tycoon Deluxe data files you -have to copy the data files from the CD-ROM into the data/ directory. It does -not matter whether you copy them from the DOS or Windows version of Transport -Tycoon Deluxe. The Windows install can optionally copy these files. +have to copy the data files from the CD-ROM into the baseset/ directory. It +does not matter whether you copy them from the DOS or Windows version of +Transport Tycoon Deluxe. The Windows install can optionally copy these files. You need to copy the following files: - sample.cat - trg1r.grf or TRG1.GRF @@ -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) @@ -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 @@ -409,7 +414,6 @@ Information logged: original Transport Tycoon version * Running a modified OpenTTD build * Changing settings affecting NewGRF behaviour (non-network-safe settings) -* Changing landscape (by cheat) * Triggering NewGRF bugs No personal information is stored. @@ -477,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 ---- --------------------------- @@ -501,21 +505,15 @@ open most older savegames or use the content downloading system. Without libSDL/liballegro on non-Windows and non-MacOS X machines you have no graphical user interface; you would be building a dedicated server. -To recompile the extra graphics needed to play with the original Transport -Tycoon Deluxe graphics you need GRFCodec (which includes NFORenum) as well. -GRFCodec can be found at: http://www.openttd.org/download-grfcodec -The compilation of these extra graphics does generally not happen, unless -you remove the graphics file using 'make maintainer-clean'. - 7.2) Supported compilers ---- ------------------- The following compilers are known to compile OpenTTD: - Microsoft Visual C++ (MSVC) 2005, 2008 and 2010. Version 2005 gives bogus warnings about scoping issues. - - GNU Compiler Collection (GCC) 3.3 - 4.7. + - GNU Compiler Collection (GCC) 3.3 - 4.4, 4.6 - 4.8. Versions 4.1 and earlier give bogus warnings about uninitialised variables. - Versions 4.4 - 4.6 give bogus warnings about freeing non-heap objects. - Versions 4.5 and later give invalid warnings when lto is enabled. + Versions 4.4, 4.6 give bogus warnings about freeing non-heap objects. + Versions 4.6 and later give invalid warnings when lto is enabled. - Intel C++ Compiler (ICC) 12.0. - Clang/LLVM 2.9 - 3.0 Version 2.9 gives bogus warnings about code nonconformity. @@ -524,6 +522,8 @@ The following compilers are known not to compile OpenTTD: - Microsoft Visual C++ (MSVC) 2003 and earlier. - GNU Compiler Collection (GCC) 3.2 and earlier. These old versions fail due to OpenTTD's template usage. + - GNU Compiler Collection (GCC) 4.5. It optimizes enums too aggressively. + See http://bugs.openttd.org/task/5513 and references therein. - Intel C++ Compiler (ICC) 11.1 and earlier. Version 10.0 and earlier fail a configure check and fail with recent system headers. @@ -535,6 +535,21 @@ The following compilers are known not to compile OpenTTD: If any of these compilers can compile OpenTTD again, please let us know. Patches to support more compilers are welcome. +7.3) Compilation of base sets +----------------------------- +To recompile the extra graphics needed to play with the original Transport +Tycoon Deluxe graphics you need GRFCodec (which includes NFORenum) as well. +GRFCodec can be found at: http://www.openttd.org/download-grfcodec +The compilation of these extra graphics does generally not happen, unless +you remove the graphics file using 'make maintainer-clean'. + +Re-compilation of the base sets, thus also use of --maintainer-clean can +leave the repository in a modified state as different grfcodec versions can +cause binary differences in the resulting grf. Also translations might have +been added for the base sets which are not yet included in the base set +information files. Use the configure option --without-grfcodec to avoid +modification of the base set files by the build process. + 8.0) Translating ---- ----------- @@ -572,10 +587,9 @@ Note: Do not alter the following parts of the file: 8.2) Previewing ---- ---------- In order to view the translation in the game, you need to compile your language -file with the strgen utility. You can download the precompiled strgen from: -http://www.openttd.org/download-strgen -To compile it yourself just take the normal OpenTTD sources and build that. -During the build process the strgen utility will be made. +file with the strgen utility. As this utility is tailored to a specific OpenTTD +version, you need to compile it yourself. Just take the normal OpenTTD sources +and build that. During the build process the strgen utility will be made. strgen is a command-line utility. It takes the language filename as parameter. Example: @@ -633,6 +647,29 @@ 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 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 ---- ------- @@ -640,6 +677,7 @@ 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 @@ -670,7 +708,7 @@ Retired Developers: Thanks to: Josef Drexler - For his great work on TTDPatch. - Marcin Grzegorczyk - For his TTDPatch work and documentation of Transport Tycoon Deluxe internals and graphics (signals and track foundations) + 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 @@ -684,7 +722,6 @@ Thanks to: George - Canal graphics Andrew Parkhouse (andythenorth) - River graphics David Dallaston (Pikka) - Tram tracks - Marcin Grzegorczyk - Foundations for tracks on slopes, All Translators - For their support to make OpenTTD a truly international game Bug Reporters - Thanks for all bug reports Chris Sawyer - For an amazing game! diff --git a/source.list b/source.list index 83dc19e83..d39274e79 100644 --- a/source.list +++ b/source.list @@ -4,6 +4,7 @@ animated_tile.cpp articulated_vehicles.cpp autoreplace.cpp bmp.cpp +cargoaction.cpp cargomonitor.cpp cargopacket.cpp cargotype.cpp @@ -11,6 +12,7 @@ cheat.cpp command.cpp console.cpp console_cmds.cpp +cpu.cpp crashlog.cpp currency.cpp date.cpp @@ -25,11 +27,13 @@ engine.cpp fileio.cpp fios.cpp fontcache.cpp +fontdetection.cpp base_consist.cpp gamelog.cpp genworld.cpp gfx.cpp gfxinit.cpp +gfx_layout.cpp goal.cpp ground_vehicle.cpp heightmap.cpp @@ -38,6 +42,13 @@ hotkeys.cpp ini.cpp ini_load.cpp landscape.cpp +linkgraph/demands.cpp +linkgraph/flowmapper.cpp +linkgraph/linkgraph.cpp +linkgraph/linkgraphjob.cpp +linkgraph/linkgraphschedule.cpp +linkgraph/mcf.cpp +linkgraph/refresh.cpp map.cpp misc.cpp mixer.cpp @@ -52,7 +63,6 @@ network/network_server.cpp network/network_udp.cpp openttd.cpp order_backup.cpp -os_timer.cpp pbs.cpp progress.cpp rail.cpp @@ -74,6 +84,7 @@ strgen/strgen_base.cpp string.cpp stringfilter.cpp strings.cpp +story.cpp subsidy.cpp textbuf.cpp texteff.cpp @@ -100,6 +111,9 @@ townname.cpp vehicle.cpp vehiclelist.cpp viewport.cpp +#if SSE +viewport_sprite_sorter_sse4.cpp +#end waypoint.cpp widget.cpp window.cpp @@ -125,6 +139,7 @@ base_station_base.h bmp.h bridge.h cargo_type.h +cargoaction.h cargomonitor.h cargopacket.h cargotype.h @@ -143,6 +158,7 @@ console_func.h console_gui.h console_internal.h console_type.h +cpu.h crashlog.h currency.h date_func.h @@ -173,11 +189,13 @@ fileio_func.h fileio_type.h fios.h fontcache.h +fontdetection.h base_consist.h gamelog.h gamelog_internal.h genworld.h gfx_func.h +gfx_layout.h gfx_type.h gfxinit.h goal_base.h @@ -200,6 +218,18 @@ ini_type.h landscape.h landscape_type.h language.h +linkgraph/demands.h +linkgraph/flowmapper.h +linkgraph/init.h +linkgraph/linkgraph.h +linkgraph/linkgraph_base.h +linkgraph/linkgraph_gui.h +linkgraph/linkgraph_type.h +linkgraph/linkgraphjob.h +linkgraph/linkgraphjob_base.h +linkgraph/linkgraphschedule.h +linkgraph/mcf.h +linkgraph/refresh.h livery.h map_func.h map_type.h @@ -273,6 +303,7 @@ road_internal.h road_type.h roadstop_base.h roadveh.h +safeguards.h screenshot.h sdl.h sound/sdl_s.h @@ -301,7 +332,10 @@ station_gui.h station_type.h statusbar_gui.h stdafx.h +story_base.h +story_type.h strgen/strgen.h +string_base.h string_func.h string_type.h stringfilter_type.h @@ -344,6 +378,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 @@ -390,6 +425,7 @@ core/geometry_type.hpp core/math_func.cpp core/math_func.hpp core/mem_func.hpp +core/multimap.hpp core/overflowsafe_type.hpp core/pool_func.cpp core/pool_func.hpp @@ -397,6 +433,8 @@ core/pool_type.hpp 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 @@ -424,6 +462,7 @@ group_gui.cpp highscore_gui.cpp industry_gui.cpp intro_gui.cpp +linkgraph/linkgraph_gui.cpp main_gui.cpp misc_gui.cpp music_gui.cpp @@ -445,6 +484,7 @@ signs_gui.cpp smallmap_gui.cpp station_gui.cpp statusbar_gui.cpp +story_gui.cpp subsidy_gui.cpp terraform_gui.cpp textfile_gui.cpp @@ -485,6 +525,7 @@ widgets/group_widget.h widgets/highscore_widget.h widgets/industry_widget.h widgets/intro_widget.h +widgets/link_graph_legend_widget.h widgets/main_widget.h widgets/misc_widget.h widgets/music_widget.h @@ -504,6 +545,7 @@ widgets/sign_widget.h widgets/smallmap_widget.h widgets/station_widget.h widgets/statusbar_widget.h +widgets/story_widget.h widgets/subsidy_widget.h widgets/terraform_widget.h widgets/timetable_widget.h @@ -563,6 +605,7 @@ saveload/goal_sl.cpp saveload/group_sl.cpp saveload/industry_sl.cpp saveload/labelmaps_sl.cpp +saveload/linkgraph_sl.cpp saveload/map_sl.cpp saveload/misc_sl.cpp saveload/newgrf_sl.cpp @@ -580,6 +623,7 @@ saveload/signs_sl.cpp saveload/station_sl.cpp saveload/storage_sl.cpp saveload/strings_sl.cpp +saveload/story_sl.cpp saveload/subsidy_sl.cpp saveload/town_sl.cpp saveload/vehicle_sl.cpp @@ -772,6 +816,9 @@ script/api/script_sign.hpp 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 @@ -835,6 +882,9 @@ script/api/script_sign.cpp 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 @@ -856,12 +906,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 @@ -1002,6 +1066,7 @@ pathfinder/yapf/yapf_node_ship.hpp pathfinder/yapf/yapf_rail.cpp pathfinder/yapf/yapf_road.cpp pathfinder/yapf/yapf_ship.cpp +pathfinder/yapf/yapf_type.hpp # Video video/dedicated_v.cpp @@ -1044,7 +1109,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 000000000..112b02a08 --- /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 d2d6fbab7..2111a8eb8 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/squirrel/include/squirrel.h b/src/3rdparty/squirrel/include/squirrel.h index 1fe023dff..6da1f744d 100644 --- a/src/3rdparty/squirrel/include/squirrel.h +++ b/src/3rdparty/squirrel/include/squirrel.h @@ -49,33 +49,14 @@ extern "C" { #define SQUIRREL_API extern #endif -#if (defined(_WIN64) || defined(_LP64)) -#ifndef _SQ64 -#define _SQ64 -#endif +#if defined(__GNUC__) + #define __int64 long long #endif -#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 +65,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; @@ -186,6 +158,12 @@ typedef char SQChar; #define MAX_CHAR 0xFFFF #endif +#if defined(_MSC_VER) || defined(__MINGW32__) + #define SQ_PRINTF64 _SC("%I64d") +#else + #define SQ_PRINTF64 _SC("%lld") +#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") diff --git a/src/3rdparty/squirrel/squirrel/sqcompiler.cpp b/src/3rdparty/squirrel/squirrel/sqcompiler.cpp index 6598c7dcf..b9eace1c6 100644 --- a/src/3rdparty/squirrel/squirrel/sqcompiler.cpp +++ b/src/3rdparty/squirrel/squirrel/sqcompiler.cpp @@ -917,6 +917,7 @@ class SQCompiler _last_stacksize = _fs->GetStackSize(); Statement(); CleanStack(stacksize); + _fs->AddLineInfos(_lex._currentline, _lineinfo, true); Expect(TK_WHILE); SQInteger continuetrg = _fs->GetCurrentPos(); Expect(_SC('(')); CommaExpr(); Expect(_SC(')')); diff --git a/src/3rdparty/squirrel/squirrel/sqdebug.cpp b/src/3rdparty/squirrel/squirrel/sqdebug.cpp index c683697d7..77f88d1c4 100644 --- a/src/3rdparty/squirrel/squirrel/sqdebug.cpp +++ b/src/3rdparty/squirrel/squirrel/sqdebug.cpp @@ -75,11 +75,7 @@ SQString *SQVM::PrintObjVal(const SQObject &o) 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 + scsprintf(_sp(rsl(NUMBER_MAX_CHAR+1)), SQ_PRINTF64, _integer(o)); return SQString::Create(_ss(this), _spval); break; case OT_FLOAT: diff --git a/src/3rdparty/squirrel/squirrel/sqfuncstate.cpp b/src/3rdparty/squirrel/squirrel/sqfuncstate.cpp index b4f354173..fd8caf2e4 100644 --- a/src/3rdparty/squirrel/squirrel/sqfuncstate.cpp +++ b/src/3rdparty/squirrel/squirrel/sqfuncstate.cpp @@ -80,11 +80,7 @@ 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_INTEGER: scprintf(_SC("{") SQ_PRINTF64 _SC("}"),_integer(o));break; 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 } @@ -541,7 +537,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/sqmem.cpp b/src/3rdparty/squirrel/squirrel/sqmem.cpp index 6faf8165a..26d07047e 100644 --- a/src/3rdparty/squirrel/squirrel/sqmem.cpp +++ b/src/3rdparty/squirrel/squirrel/sqmem.cpp @@ -2,8 +2,8 @@ see copyright notice in squirrel.h */ #include "sqpcheader.h" -void *sq_vm_malloc(SQUnsignedInteger size){ return malloc(size); } +void *sq_vm_malloc(SQUnsignedInteger size){ return malloc((size_t)size); } -void *sq_vm_realloc(void *p, SQUnsignedInteger oldsize, SQUnsignedInteger size){ return realloc(p, size); } +void *sq_vm_realloc(void *p, SQUnsignedInteger oldsize, SQUnsignedInteger size){ return realloc(p, (size_t)size); } void sq_vm_free(void *p, SQUnsignedInteger size){ free(p); } diff --git a/src/3rdparty/squirrel/squirrel/sqstate.cpp b/src/3rdparty/squirrel/squirrel/sqstate.cpp index 45b533776..659d59c17 100644 --- a/src/3rdparty/squirrel/squirrel/sqstate.cpp +++ b/src/3rdparty/squirrel/squirrel/sqstate.cpp @@ -507,26 +507,26 @@ 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); + 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)rsl(len)))) return s; //found } SQString *t=(SQString *)SQ_MALLOC(rsl(len)+sizeof(SQString)); new (t) SQString; - memcpy(t->_val,news,rsl(len)); + memcpy(t->_val,news,(size_t)rsl(len)); t->_val[len] = _SC('\0'); t->_len = len; - t->_hash = ::_hashstr(news,len); + t->_hash = ::_hashstr(news,(size_t)len); t->_next = _strings[h]; _strings[h] = t; _slotused++; diff --git a/src/3rdparty/squirrel/squirrel/squtils.h b/src/3rdparty/squirrel/squirrel/squtils.h index 5f7e2e239..28c6cbec2 100644 --- a/src/3rdparty/squirrel/squirrel/squtils.h +++ b/src/3rdparty/squirrel/squirrel/squtils.h @@ -37,9 +37,13 @@ template class sqvector ~sqvector() { if(_allocated) { - for(SQUnsignedInteger i = 0; i < _size; i++) + /* Break freeing loops, if this vector (indirectly) links to itself. */ + size_t allocated_size = _allocated * sizeof(T); + _allocated = 0; + + for(size_t i = 0; i < _size; i++) _vals[i].~T(); - SQ_FREE(_vals, (_allocated * sizeof(T))); + SQ_FREE(_vals, allocated_size); } } void reserve(SQUnsignedInteger newsize) { _realloc(newsize); } @@ -57,7 +61,7 @@ template class sqvector for(SQUnsignedInteger i = newsize; i < _size; i++) { _vals[i].~T(); } - _size = newsize; + _size = (size_t)newsize; } } void shrinktofit() { if(_size > 4) { _realloc(_size); } } @@ -86,7 +90,7 @@ template class sqvector { _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--; } @@ -99,10 +103,10 @@ template class sqvector { 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 dae5ff4a2..6f2894774 100644 --- a/src/3rdparty/squirrel/squirrel/sqvm.cpp +++ b/src/3rdparty/squirrel/squirrel/sqvm.cpp @@ -107,6 +107,7 @@ SQVM::SQVM(SQSharedState *ss) _errorhandler = _null_; _debughook = _null_; _can_suspend = false; + _in_stackoverflow = false; _ops_till_suspend = 0; ci = NULL; INIT_CHAIN();ADD_TO_CHAIN(&_ss(this)->_gc_chain,this); @@ -258,11 +259,7 @@ void SQVM::ToString(const SQObjectPtr &o,SQObjectPtr &res) scsprintf(_sp(rsl(NUMBER_MAX_CHAR+1)),_SC("%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 + scsprintf(_sp(rsl(NUMBER_MAX_CHAR+1)),SQ_PRINTF64,_integer(o)); break; case OT_BOOL: scsprintf(_sp(rsl(6)),_integer(o)?_SC("true"):_SC("false")); @@ -292,8 +289,8 @@ bool SQVM::StringCat(const SQObjectPtr &str,const SQObjectPtr &obj,SQObjectPtr & 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)); + memcpy(s, _stringval(a), (size_t)rsl(l)); + memcpy(s + l, _stringval(b), (size_t)rsl(ol)); dest = SQString::Create(_ss(this), _spval, l + ol); return true; } @@ -1190,7 +1187,7 @@ bool SQVM::CallNative(SQNativeClosure *nclosure,SQInteger nargs,SQInteger stackb throw; } - assert(cstksize == _callsstacksize); + _callsstacksize = cstksize; _nnativecalls--; suspend = false; diff --git a/src/3rdparty/squirrel/squirrel/sqvm.h b/src/3rdparty/squirrel/squirrel/sqvm.h index 4b922c370..d272d152e 100644 --- a/src/3rdparty/squirrel/squirrel/sqvm.h +++ b/src/3rdparty/squirrel/squirrel/sqvm.h @@ -170,6 +170,7 @@ typedef sqvector CallInfoVec; SQBool _can_suspend; SQInteger _ops_till_suspend; + SQBool _in_stackoverflow; bool ShouldSuspend() { @@ -200,8 +201,10 @@ inline SQObjectPtr &stack_get(HSQUIRRELVM v,SQInteger idx){return ((idx>=0)?(v-> #define PUSH_CALLINFO(v,nci){ \ if(v->_callsstacksize == v->_alloccallsstacksize) { \ - if (v->_callsstacksize > 65535) {\ + if (v->_callsstacksize > 65535 && !v->_in_stackoverflow) {\ + v->_in_stackoverflow = true; \ v->Raise_Error(_SC("stack overflow"));\ + v->CallErrorHandler(v->_lasterror);\ return false;\ }\ v->GrowCallStack(); \ diff --git a/src/ai/ai.hpp b/src/ai/ai.hpp index d3381fb8a..065367d03 100644 --- a/src/ai/ai.hpp +++ b/src/ai/ai.hpp @@ -26,7 +26,7 @@ typedef std::map ScriptInfoList class AI { public: /** - * The default months AIs start after eachother. + * The default months AIs start after each other. */ enum StartNext { START_NEXT_EASY = DAYS_IN_YEAR * 2, diff --git a/src/ai/ai_config.cpp b/src/ai/ai_config.cpp index 3b3c09a42..f920d3101 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 ab8510f09..d4ff23311 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; @@ -47,6 +49,7 @@ /* Load default data and store the name in the settings */ config->Change(info->GetName(), -1, false, true); } + config->AnchorUnchangeableSettings(); Backup cur_company(_current_company, company, FILE_LINE); Company *c = Company::Get(company); @@ -197,7 +200,7 @@ /* static */ void AI::ResetConfig() { - /* Check for both newgame as current game if we can reload the AIInfo insde + /* Check for both newgame as current game if we can reload the AIInfo inside * the AIConfig. If not, remove the AI from the list (which will assign * a random new AI on reload). */ for (CompanyID c = COMPANY_FIRST; c < MAX_COMPANIES; c++) { diff --git a/src/ai/ai_gui.cpp b/src/ai/ai_gui.cpp index acb95a4a3..2c1051f05 100644 --- a/src/ai/ai_gui.cpp +++ b/src/ai/ai_gui.cpp @@ -30,6 +30,7 @@ #include "../hotkeys.h" #include "ai.hpp" +#include "ai_gui.hpp" #include "../script/api/script_log.hpp" #include "ai_config.hpp" #include "ai_info.hpp" @@ -39,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(); @@ -65,7 +67,7 @@ struct AIListWindow : public Window { * @param desc The description of the window. * @param slot The company we're changing the AI for. */ - AIListWindow(const WindowDesc *desc, CompanyID slot) : Window(), + AIListWindow(WindowDesc *desc, CompanyID slot) : Window(desc), slot(slot) { if (slot == OWNER_DEITY) { @@ -74,9 +76,9 @@ struct AIListWindow : public Window { this->info_list = AI::GetUniqueInfoList(); } - this->CreateNestedTree(desc); + this->CreateNestedTree(); this->vscroll = this->GetScrollbar(WID_AIL_SCROLLBAR); - this->FinishInitNested(desc); // Initializes 'this->line_height' as side effect. + this->FinishInitNested(); // Initializes 'this->line_height' as side effect. this->vscroll->SetCount((int)this->info_list->size() + 1); @@ -110,7 +112,7 @@ struct AIListWindow : public Window { resize->width = 1; resize->height = this->line_height; - size->height = GB(this->GetWidget(widget)->widget_data, MAT_ROW_START, MAT_ROW_BITS) * this->line_height; + size->height = 5 * this->line_height; } } @@ -209,9 +211,7 @@ struct AIListWindow : public Window { virtual void OnResize() { - NWidgetCore *nwi = this->GetWidget(WID_AIL_LIST); - this->vscroll->SetCapacity(nwi->current_y / this->line_height); - nwi->widget_data = (this->vscroll->GetCapacity() << MAT_ROW_START) + (1 << MAT_COL_START); + this->vscroll->SetCapacityFromWidget(this, WID_AIL_LIST); } /** @@ -240,9 +240,10 @@ static const NWidgetPart _nested_ai_list_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_MAUVE), NWidget(WWT_CAPTION, COLOUR_MAUVE, WID_AIL_CAPTION), SetDataTip(STR_AI_LIST_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_DEFSIZEBOX, COLOUR_MAUVE), EndContainer(), NWidget(NWID_HORIZONTAL), - NWidget(WWT_MATRIX, COLOUR_MAUVE, WID_AIL_LIST), SetMinimalSize(188, 112), SetFill(1, 1), SetResize(1, 1), SetDataTip(0x501, STR_AI_LIST_TOOLTIP), SetScrollbar(WID_AIL_SCROLLBAR), + NWidget(WWT_MATRIX, COLOUR_MAUVE, WID_AIL_LIST), SetMinimalSize(188, 112), SetFill(1, 1), SetResize(1, 1), SetMatrixDataTip(1, 0, STR_AI_LIST_TOOLTIP), SetScrollbar(WID_AIL_SCROLLBAR), NWidget(NWID_VSCROLLBAR, COLOUR_MAUVE, WID_AIL_SCROLLBAR), EndContainer(), NWidget(WWT_PANEL, COLOUR_MAUVE, WID_AIL_INFO_BG), SetMinimalTextLines(8, WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM), SetResize(1, 0), @@ -257,8 +258,8 @@ static const NWidgetPart _nested_ai_list_widgets[] = { }; /** Window definition for the ai list window. */ -static const WindowDesc _ai_list_desc( - WDP_CENTER, 200, 234, +static WindowDesc _ai_list_desc( + WDP_CENTER, "settings_script_list", 200, 234, WC_AI_LIST, WC_NONE, 0, _nested_ai_list_widgets, lengthof(_nested_ai_list_widgets) @@ -296,7 +297,7 @@ struct AISettingsWindow : public Window { * @param desc The description of the window. * @param slot The company we're changing the settings for. */ - AISettingsWindow(const WindowDesc *desc, CompanyID slot) : Window(), + AISettingsWindow(WindowDesc *desc, CompanyID slot) : Window(desc), slot(slot), clicked_button(-1), clicked_dropdown(false), @@ -306,9 +307,9 @@ struct AISettingsWindow : public Window { this->ai_config = GetConfig(slot); this->RebuildVisibleSettings(); - this->CreateNestedTree(desc); + this->CreateNestedTree(); this->vscroll = this->GetScrollbar(WID_AIS_SCROLLBAR); - this->FinishInitNested(desc, slot); // Initializes 'this->line_height' as side effect. + this->FinishInitNested(slot); // Initializes 'this->line_height' as side effect. this->SetWidgetDisabledState(WID_AIS_RESET, _game_mode != GM_MENU && Company::IsValidID(this->slot)); @@ -349,7 +350,7 @@ struct AISettingsWindow : public Window { resize->width = 1; resize->height = this->line_height; - size->height = GB(this->GetWidget(widget)->widget_data, MAT_ROW_START, MAT_ROW_BITS) * this->line_height; + size->height = 5 * this->line_height; } } @@ -476,7 +477,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); @@ -559,9 +560,7 @@ struct AISettingsWindow : public Window { virtual void OnResize() { - NWidgetCore *nwi = this->GetWidget(WID_AIS_BACKGROUND); - this->vscroll->SetCapacity(nwi->current_y / this->line_height); - nwi->widget_data = (this->vscroll->GetCapacity() << MAT_ROW_START) + (1 << MAT_COL_START); + this->vscroll->SetCapacityFromWidget(this, WID_AIS_BACKGROUND); } virtual void OnTick() @@ -588,9 +587,10 @@ static const NWidgetPart _nested_ai_settings_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_MAUVE), NWidget(WWT_CAPTION, COLOUR_MAUVE, WID_AIS_CAPTION), SetDataTip(STR_AI_SETTINGS_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_DEFSIZEBOX, COLOUR_MAUVE), EndContainer(), NWidget(NWID_HORIZONTAL), - NWidget(WWT_MATRIX, COLOUR_MAUVE, WID_AIS_BACKGROUND), SetMinimalSize(188, 182), SetResize(1, 1), SetFill(1, 0), SetDataTip(0x501, STR_NULL), SetScrollbar(WID_AIS_SCROLLBAR), + NWidget(WWT_MATRIX, COLOUR_MAUVE, WID_AIS_BACKGROUND), SetMinimalSize(188, 182), SetResize(1, 1), SetFill(1, 0), SetMatrixDataTip(1, 0, STR_NULL), SetScrollbar(WID_AIS_SCROLLBAR), NWidget(NWID_VSCROLLBAR, COLOUR_MAUVE, WID_AIS_SCROLLBAR), EndContainer(), NWidget(NWID_HORIZONTAL), @@ -603,8 +603,8 @@ static const NWidgetPart _nested_ai_settings_widgets[] = { }; /** Window definition for the AI settings window. */ -static const WindowDesc _ai_settings_desc( - WDP_CENTER, 500, 208, +static WindowDesc _ai_settings_desc( + WDP_CENTER, "settings_script", 500, 208, WC_AI_SETTINGS, WC_NONE, 0, _nested_ai_settings_widgets, lengthof(_nested_ai_settings_widgets) @@ -674,13 +674,13 @@ static const NWidgetPart _nested_ai_config_widgets[] = { EndContainer(), NWidget(WWT_FRAME, COLOUR_MAUVE), SetDataTip(STR_AI_CONFIG_AI, STR_NULL), SetPadding(0, 5, 0, 5), NWidget(NWID_HORIZONTAL), - NWidget(WWT_MATRIX, COLOUR_MAUVE, WID_AIC_LIST), SetMinimalSize(288, 112), SetFill(1, 0), SetDataTip(0x801, STR_AI_CONFIG_AILIST_TOOLTIP), SetScrollbar(WID_AIC_SCROLLBAR), + NWidget(WWT_MATRIX, COLOUR_MAUVE, WID_AIC_LIST), SetMinimalSize(288, 112), SetFill(1, 0), SetMatrixDataTip(1, 8, STR_AI_CONFIG_AILIST_TOOLTIP), SetScrollbar(WID_AIC_SCROLLBAR), NWidget(NWID_VSCROLLBAR, COLOUR_MAUVE, WID_AIC_SCROLLBAR), EndContainer(), EndContainer(), NWidget(NWID_SPACER), SetMinimalSize(0, 9), NWidget(WWT_FRAME, COLOUR_MAUVE), SetDataTip(STR_AI_CONFIG_GAMESCRIPT, STR_NULL), SetPadding(0, 5, 4, 5), - NWidget(WWT_MATRIX, COLOUR_MAUVE, WID_AIC_GAMELIST), SetMinimalSize(288, 14), SetFill(1, 0), SetDataTip(0x101, STR_AI_CONFIG_GAMELIST_TOOLTIP), + NWidget(WWT_MATRIX, COLOUR_MAUVE, WID_AIC_GAMELIST), SetMinimalSize(288, 14), SetFill(1, 0), SetMatrixDataTip(1, 1, STR_AI_CONFIG_GAMELIST_TOOLTIP), EndContainer(), NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), SetPIP(7, 0, 7), NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_AIC_CHANGE), SetFill(1, 0), SetMinimalSize(93, 12), SetDataTip(STR_AI_CONFIG_CHANGE, STR_AI_CONFIG_CHANGE_TOOLTIP), @@ -697,8 +697,8 @@ static const NWidgetPart _nested_ai_config_widgets[] = { }; /** Window definition for the configure AI window. */ -static const WindowDesc _ai_config_desc( - WDP_CENTER, 0, 0, +static WindowDesc _ai_config_desc( + WDP_CENTER, "settings_script_config", 0, 0, WC_GAME_OPTIONS, WC_NONE, 0, _nested_ai_config_widgets, lengthof(_nested_ai_config_widgets) @@ -712,15 +712,14 @@ struct AIConfigWindow : public Window { int line_height; ///< Height of a single AI-name line. Scrollbar *vscroll; ///< Cache of the vertical scrollbar. - AIConfigWindow() : Window() + AIConfigWindow() : Window(&_ai_config_desc) { - this->InitNested(&_ai_config_desc, WN_GAME_OPTIONS_AI); // Initializes 'this->line_height' as a side effect. + this->InitNested(WN_GAME_OPTIONS_AI); // Initializes 'this->line_height' as a side effect. this->vscroll = this->GetScrollbar(WID_AIC_SCROLLBAR); this->selected_slot = INVALID_COMPANY; NWidgetCore *nwi = this->GetWidget(WID_AIC_LIST); this->vscroll->SetCapacity(nwi->current_y / this->line_height); this->vscroll->SetCount(MAX_COMPANIES); - nwi->widget_data = (this->vscroll->GetCapacity() << MAT_ROW_START) + (1 << MAT_COL_START); this->OnInvalidateData(0); } @@ -758,9 +757,13 @@ struct AIConfigWindow : public Window { { switch (widget) { case WID_AIC_GAMELIST: + this->line_height = FONT_HEIGHT_NORMAL + WD_MATRIX_TOP + WD_MATRIX_BOTTOM; + size->height = 1 * this->line_height; + break; + case WID_AIC_LIST: this->line_height = FONT_HEIGHT_NORMAL + WD_MATRIX_TOP + WD_MATRIX_BOTTOM; - size->height = GB(this->GetWidget(widget)->widget_data, MAT_ROW_START, MAT_ROW_BITS) * this->line_height; + size->height = 8 * this->line_height; break; } } @@ -772,7 +775,7 @@ struct AIConfigWindow : public Window { */ static bool IsEditable(CompanyID slot) { - if (slot == OWNER_DEITY) return _game_mode != GM_NORMAL; + if (slot == OWNER_DEITY) return _game_mode != GM_NORMAL || Game::GetInstance() != NULL; if (_game_mode != GM_NORMAL) { return slot > 0 && slot <= GetGameSettings().difficulty.max_no_competitors; @@ -851,7 +854,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; } @@ -920,7 +923,7 @@ struct AIConfigWindow : public Window { this->SetWidgetDisabledState(WID_AIC_DECREASE, GetGameSettings().difficulty.max_no_competitors == 0); this->SetWidgetDisabledState(WID_AIC_INCREASE, GetGameSettings().difficulty.max_no_competitors == MAX_COMPANIES - 1); - this->SetWidgetDisabledState(WID_AIC_CHANGE, this->selected_slot == INVALID_COMPANY); + this->SetWidgetDisabledState(WID_AIC_CHANGE, (this->selected_slot == OWNER_DEITY && _game_mode == GM_NORMAL) || this->selected_slot == INVALID_COMPANY); this->SetWidgetDisabledState(WID_AIC_CONFIGURE, this->selected_slot == INVALID_COMPANY || GetConfig(this->selected_slot)->GetConfigList()->size() == 0); this->SetWidgetDisabledState(WID_AIC_MOVE_UP, this->selected_slot == OWNER_DEITY || this->selected_slot == INVALID_COMPANY || !IsEditable((CompanyID)(this->selected_slot - 1))); this->SetWidgetDisabledState(WID_AIC_MOVE_DOWN, this->selected_slot == OWNER_DEITY || this->selected_slot == INVALID_COMPANY || !IsEditable((CompanyID)(this->selected_slot + 1))); @@ -987,28 +990,70 @@ struct AIDebugWindow : public Window { return (ScriptLog::LogData *)Company::Get(ai_debug_company)->ai_instance->GetLogPointer(); } + /** + * Check whether the currently selected AI/GS is dead. + * @return true if dead. + */ + bool IsDead() const + { + if (ai_debug_company == OWNER_DEITY) { + GameInstance *game = Game::GetInstance(); + return game == NULL || game->IsDead(); + } + return !Company::IsValidAiID(ai_debug_company) || Company::Get(ai_debug_company)->ai_instance->IsDead(); + } + + /** + * Check whether a company is a valid AI company or GS. + * @param company Company to check for validity. + * @return true if company is valid for debugging. + */ + bool IsValidDebugCompany(CompanyID company) const + { + switch (company) { + case INVALID_COMPANY: return false; + case OWNER_DEITY: return Game::GetInstance() != NULL; + default: return Company::IsValidAiID(company); + } + } + + /** + * Ensure that \c ai_debug_company refers to a valid AI company or GS, or is set to #INVALID_COMPANY. + * If no valid company is selected, it selects the first valid AI or GS if any. + */ + void SelectValidDebugCompany() + { + /* Check if the currently selected company is still active. */ + if (this->IsValidDebugCompany(ai_debug_company)) return; + + ai_debug_company = INVALID_COMPANY; + + const Company *c; + FOR_ALL_COMPANIES(c) { + if (c->is_ai) { + ChangeToAI(c->index); + return; + } + } + + /* If no AI is available, see if there is a game script. */ + if (Game::GetInstance() != NULL) ChangeToAI(OWNER_DEITY); + } + /** * Constructor for the window. * @param desc The description of the window. * @param number The window number (actually unused). */ - AIDebugWindow(const WindowDesc *desc, WindowNumber number) : break_editbox(MAX_BREAK_STR_STRING_LENGTH) + AIDebugWindow(WindowDesc *desc, WindowNumber number) : Window(desc), break_editbox(MAX_BREAK_STR_STRING_LENGTH) { - this->CreateNestedTree(desc); + this->CreateNestedTree(); this->vscroll = this->GetScrollbar(WID_AID_SCROLLBAR); this->show_break_box = _settings_client.gui.ai_developer_tools; this->GetWidget(WID_AID_BREAK_STRING_WIDGETS)->SetDisplayedPlane(this->show_break_box ? 0 : SZSP_HORIZONTAL); - this->FinishInitNested(desc, number); + this->FinishInitNested(number); if (!this->show_break_box) break_check_enabled = false; - /* Disable the companies who are not active or not an AI */ - for (CompanyID i = COMPANY_FIRST; i < MAX_COMPANIES; i++) { - this->SetWidgetDisabledState(i + WID_AID_COMPANY_BUTTON_START, !Company::IsValidAiID(i)); - } - this->EnableWidget(WID_AID_SCRIPT_GAME); - this->DisableWidget(WID_AID_RELOAD_TOGGLE); - this->DisableWidget(WID_AID_SETTINGS); - this->DisableWidget(WID_AID_CONTINUE_BTN); this->last_vscroll_pos = 0; this->autoscroll = true; @@ -1016,20 +1061,13 @@ struct AIDebugWindow : public Window { this->querystrings[WID_AID_BREAK_STR_EDIT_BOX] = &this->break_editbox; + SetWidgetsDisabledState(!this->show_break_box, WID_AID_BREAK_STR_ON_OFF_BTN, WID_AID_BREAK_STR_EDIT_BOX, WID_AID_MATCH_CASE_BTN, WIDGET_LIST_END); + /* Restore the break string value from static variable */ this->break_editbox.text.Assign(this->break_string); - /* Restore button state from static class variables */ - if (ai_debug_company == OWNER_DEITY) { - this->LowerWidget(WID_AID_SCRIPT_GAME); - this->SetWidgetDisabledState(WID_AID_CONTINUE_BTN, !Game::IsPaused()); - } else if (ai_debug_company != INVALID_COMPANY) { - this->LowerWidget(ai_debug_company + WID_AID_COMPANY_BUTTON_START); - this->SetWidgetDisabledState(WID_AID_CONTINUE_BTN, !AI::IsPaused(ai_debug_company)); - } - this->SetWidgetLoweredState(WID_AID_BREAK_STR_ON_OFF_BTN, this->break_check_enabled); - this->SetWidgetLoweredState(WID_AID_MATCH_CASE_BTN, this->case_sensitive_break_check); - + this->SelectValidDebugCompany(); + this->InvalidateData(-1); } virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) @@ -1042,67 +1080,31 @@ struct AIDebugWindow : public Window { virtual void OnPaint() { - /* Check if the currently selected company is still active. */ - if (ai_debug_company == INVALID_COMPANY || (ai_debug_company != OWNER_DEITY && !Company::IsValidAiID(ai_debug_company))) { - if (ai_debug_company != INVALID_COMPANY) { - /* Raise the widget for the previous selection. */ - this->RaiseWidget(ai_debug_company + WID_AID_COMPANY_BUTTON_START); - - ai_debug_company = INVALID_COMPANY; - } - - const Company *c; - FOR_ALL_COMPANIES(c) { - if (c->is_ai) { - /* Lower the widget corresponding to this company. */ - this->LowerWidget(c->index + WID_AID_COMPANY_BUTTON_START); - - ai_debug_company = c->index; - break; - } - } - - /* If no AI is available, see if there is a game script. */ - if (ai_debug_company == INVALID_COMPANY && Game::GetInstance() != NULL) { - /* Lower the widget corresponding to the game script. */ - this->LowerWidget(WID_AID_SCRIPT_GAME); - - ai_debug_company = OWNER_DEITY; - } - } - - /* Update "Reload AI" and "AI settings" buttons */ - this->SetWidgetDisabledState(WID_AID_SETTINGS, ai_debug_company == INVALID_COMPANY); - this->SetWidgetDisabledState(WID_AID_RELOAD_TOGGLE, ai_debug_company == INVALID_COMPANY || ai_debug_company == OWNER_DEITY); - this->SetWidgetDisabledState(WID_AID_SCRIPT_GAME, Game::GetGameInstance() == NULL); + this->SelectValidDebugCompany(); /* Draw standard stuff */ this->DrawWidgets(); if (this->IsShaded()) return; // Don't draw anything when the window is shaded. + bool dirty = false; + /* Paint the company icons */ for (CompanyID i = COMPANY_FIRST; i < MAX_COMPANIES; i++) { NWidgetCore *button = this->GetWidget(i + WID_AID_COMPANY_BUTTON_START); - bool dirty = false; bool valid = Company::IsValidAiID(i); - bool disabled = !valid; - if (button->IsDisabled() != disabled) { - /* Invalid/non-AI companies have button disabled */ - button->SetDisabled(disabled); - dirty = true; - } + + /* Check whether the validity of the company changed */ + dirty |= (button->IsDisabled() == valid); /* Mark dead/paused AIs by setting the background colour. */ bool dead = valid && Company::Get(i)->ai_instance->IsDead(); bool paused = valid && Company::Get(i)->ai_instance->IsPaused(); /* Re-paint if the button was updated. * (note that it is intentional that SetScriptButtonColour is always called) */ - dirty = SetScriptButtonColour(*button, dead, paused) || dirty; + dirty |= SetScriptButtonColour(*button, dead, paused); - /* Do we need a repaint? */ - if (dirty) this->SetDirty(); /* Draw company icon only for valid AI companies */ if (!valid) continue; @@ -1112,13 +1114,14 @@ struct AIDebugWindow : public Window { /* Set button colour for Game Script. */ GameInstance *game = Game::GetInstance(); - bool dead = game != NULL && game->IsDead(); - bool paused = game != NULL && game->IsPaused(); + bool valid = game != NULL; + bool dead = valid && game->IsDead(); + bool paused = valid && game->IsPaused(); + NWidgetCore *button = this->GetWidget(WID_AID_SCRIPT_GAME); - if (SetScriptButtonColour(*button, dead, paused)) { - /* Re-paint if the button was updated. */ - this->SetWidgetDirty(WID_AID_SCRIPT_GAME); - } + dirty |= (button->IsDisabled() == valid) || SetScriptButtonColour(*button, dead, paused); + + if (dirty) this->InvalidateData(-1); /* If there are no active companies, don't display anything else. */ if (ai_debug_company == INVALID_COMPANY) return; @@ -1220,30 +1223,19 @@ struct AIDebugWindow : public Window { */ void ChangeToAI(CompanyID show_ai) { - if (ai_debug_company == OWNER_DEITY) { - this->RaiseWidget(WID_AID_SCRIPT_GAME); - } else { - this->RaiseWidget(ai_debug_company + WID_AID_COMPANY_BUTTON_START); - } + if (!this->IsValidDebugCompany(show_ai)) return; + ai_debug_company = show_ai; - ScriptLog::LogData *log = this->GetLogPointer(); - this->vscroll->SetCount((log == NULL) ? 0 : log->used); + this->highlight_row = -1; // The highlight of one AI make little sense for another AI. - if (ai_debug_company == OWNER_DEITY) { - this->LowerWidget(WID_AID_SCRIPT_GAME); - this->SetWidgetDisabledState(WID_AID_CONTINUE_BTN, !Game::IsPaused()); - } else { - this->LowerWidget(ai_debug_company + WID_AID_COMPANY_BUTTON_START); - this->SetWidgetDisabledState(WID_AID_CONTINUE_BTN, !AI::IsPaused(ai_debug_company)); - } + /* Close AI settings window to prevent confusion */ + DeleteWindowByClass(WC_AI_SETTINGS); + + this->InvalidateData(-1); - this->highlight_row = -1; // The highlight of one AI make little sense for another AI. this->autoscroll = true; this->last_vscroll_pos = this->vscroll->GetPosition(); - this->SetDirty(); - /* Close AI settings window to prevent confusion */ - DeleteWindowByClass(WC_AI_SETTINGS); } virtual void OnClick(Point pt, int widget, int click_count) @@ -1274,24 +1266,22 @@ struct AIDebugWindow : public Window { case WID_AID_BREAK_STR_ON_OFF_BTN: this->break_check_enabled = !this->break_check_enabled; - this->SetWidgetLoweredState(WID_AID_BREAK_STR_ON_OFF_BTN, this->break_check_enabled); - this->SetWidgetDirty(WID_AID_BREAK_STR_ON_OFF_BTN); + this->InvalidateData(-1); break; case WID_AID_MATCH_CASE_BTN: this->case_sensitive_break_check = !this->case_sensitive_break_check; - this->SetWidgetLoweredState(WID_AID_MATCH_CASE_BTN, this->case_sensitive_break_check); - this->SetWidgetDirty(WID_AID_MATCH_CASE_BTN); + this->InvalidateData(-1); break; case WID_AID_CONTINUE_BTN: /* Unpause current AI / game script and mark the corresponding script button dirty. */ - if (ai_debug_company == OWNER_DEITY) { - Game::Unpause(); - this->SetWidgetDirty(WID_AID_SCRIPT_GAME); - } else { - AI::Unpause(ai_debug_company); - this->SetWidgetDirty(WID_AID_COMPANY_BUTTON_START + ai_debug_company); + if (!this->IsDead()) { + if (ai_debug_company == OWNER_DEITY) { + Game::Unpause(); + } else { + AI::Unpause(ai_debug_company); + } } /* If the last AI/Game Script is unpaused, unpause the game too. */ @@ -1313,29 +1303,11 @@ struct AIDebugWindow : public Window { } this->highlight_row = -1; - this->SetWidgetDirty(WID_AID_LOG_PANEL); - this->DisableWidget(WID_AID_CONTINUE_BTN); + this->InvalidateData(-1); break; } } - virtual EventState OnKeyPress(uint16 key, uint16 keycode) - { - EventState state = ES_NOT_HANDLED; - int num = CheckHotkeyMatch(aidebug_hotkeys, keycode, this); - if (num != -1) { - if (this->show_break_box && num == WID_AID_BREAK_STR_EDIT_BOX) { - this->SetFocusedWidget(WID_AID_BREAK_STR_EDIT_BOX); - SetFocusedWindow(this); - state = ES_HANDLED; - } else if (this->show_break_box || num < WID_AID_BREAK_STRING_WIDGETS) { - this->OnClick(Point(), num, 1); - state = ES_HANDLED; - } - } - return state; - } - virtual void OnEditboxChanged(int wid) { if (wid == WID_AID_BREAK_STR_EDIT_BOX) { @@ -1348,15 +1320,14 @@ struct AIDebugWindow : public Window { /** * Some data on this window has become invalid. * @param data Information about the changed data. + * This is the company ID of the AI/GS which wrote a new log message, or -1 in other cases. * @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 (data == -1 || ai_debug_company == data) this->SetDirty(); - /* If the log message is related to the active company tab, check the break string. * This needs to be done in gameloop-scope, so the AI is suspended immediately. */ - if (!gui_scope && data == ai_debug_company && this->break_check_enabled && !this->break_string_filter.IsEmpty()) { + if (!gui_scope && data == ai_debug_company && this->IsValidDebugCompany(ai_debug_company) && this->break_check_enabled && !this->break_string_filter.IsEmpty()) { /* Get the log instance of the active company */ ScriptLog::LogData *log = this->GetLogPointer(); @@ -1365,10 +1336,12 @@ struct AIDebugWindow : public Window { this->break_string_filter.AddLine(log->lines[log->pos]); if (this->break_string_filter.GetState()) { /* Pause execution of script. */ - if (ai_debug_company == OWNER_DEITY) { - Game::Pause(); - } else { - AI::Pause(ai_debug_company); + if (!this->IsDead()) { + if (ai_debug_company == OWNER_DEITY) { + Game::Pause(); + } else { + AI::Pause(ai_debug_company); + } } /* Pause the game. */ @@ -1376,15 +1349,35 @@ struct AIDebugWindow : public Window { DoCommandP(0, PM_PAUSED_NORMAL, 1, CMD_PAUSE); } - /* Make it possible to click on the continue button */ - this->EnableWidget(WID_AID_CONTINUE_BTN); - this->SetWidgetDirty(WID_AID_CONTINUE_BTN); - /* Highlight row that matched */ this->highlight_row = log->pos; } } } + + if (!gui_scope) return; + + this->SelectValidDebugCompany(); + + ScriptLog::LogData *log = ai_debug_company != INVALID_COMPANY ? this->GetLogPointer() : NULL; + this->vscroll->SetCount((log == NULL) ? 0 : log->used); + + /* Update company buttons */ + for (CompanyID i = COMPANY_FIRST; i < MAX_COMPANIES; i++) { + this->SetWidgetDisabledState(i + WID_AID_COMPANY_BUTTON_START, !Company::IsValidAiID(i)); + this->SetWidgetLoweredState(i + WID_AID_COMPANY_BUTTON_START, ai_debug_company == i); + } + + this->SetWidgetDisabledState(WID_AID_SCRIPT_GAME, Game::GetGameInstance() == NULL); + this->SetWidgetLoweredState(WID_AID_SCRIPT_GAME, ai_debug_company == OWNER_DEITY); + + this->SetWidgetLoweredState(WID_AID_BREAK_STR_ON_OFF_BTN, this->break_check_enabled); + this->SetWidgetLoweredState(WID_AID_MATCH_CASE_BTN, this->case_sensitive_break_check); + + this->SetWidgetDisabledState(WID_AID_SETTINGS, ai_debug_company == INVALID_COMPANY); + this->SetWidgetDisabledState(WID_AID_RELOAD_TOGGLE, ai_debug_company == INVALID_COMPANY || ai_debug_company == OWNER_DEITY); + this->SetWidgetDisabledState(WID_AID_CONTINUE_BTN, ai_debug_company == INVALID_COMPANY || + (ai_debug_company == OWNER_DEITY ? !Game::IsPaused() : !AI::IsPaused(ai_debug_company))); } virtual void OnResize() @@ -1392,7 +1385,7 @@ struct AIDebugWindow : public Window { this->vscroll->SetCapacityFromWidget(this, WID_AID_LOG_PANEL); } - static Hotkey aidebug_hotkeys[]; + static HotkeyList hotkeys; }; const int AIDebugWindow::top_offset = WD_FRAMERECT_TOP + 2; @@ -1409,32 +1402,45 @@ NWidgetBase *MakeCompanyButtonRowsAIDebug(int *biggest_index) return MakeCompanyButtonRows(biggest_index, WID_AID_COMPANY_BUTTON_START, WID_AID_COMPANY_BUTTON_END, 8, STR_AI_DEBUG_SELECT_AI_TOOLTIP); } -Hotkey AIDebugWindow::aidebug_hotkeys[] = { - Hotkey('1', "company_1", WID_AID_COMPANY_BUTTON_START), - Hotkey('2', "company_2", WID_AID_COMPANY_BUTTON_START + 1), - Hotkey('3', "company_3", WID_AID_COMPANY_BUTTON_START + 2), - Hotkey('4', "company_4", WID_AID_COMPANY_BUTTON_START + 3), - Hotkey('5', "company_5", WID_AID_COMPANY_BUTTON_START + 4), - Hotkey('6', "company_6", WID_AID_COMPANY_BUTTON_START + 5), - Hotkey('7', "company_7", WID_AID_COMPANY_BUTTON_START + 6), - Hotkey('8', "company_8", WID_AID_COMPANY_BUTTON_START + 7), - Hotkey('9', "company_9", WID_AID_COMPANY_BUTTON_START + 8), - Hotkey((uint16)0, "company_10", WID_AID_COMPANY_BUTTON_START + 9), - Hotkey((uint16)0, "company_11", WID_AID_COMPANY_BUTTON_START + 10), - Hotkey((uint16)0, "company_12", WID_AID_COMPANY_BUTTON_START + 11), - Hotkey((uint16)0, "company_13", WID_AID_COMPANY_BUTTON_START + 12), - Hotkey((uint16)0, "company_14", WID_AID_COMPANY_BUTTON_START + 13), - Hotkey((uint16)0, "company_15", WID_AID_COMPANY_BUTTON_START + 14), - Hotkey('S', "settings", WID_AID_SETTINGS), - Hotkey('0', "game_script", WID_AID_SCRIPT_GAME), - Hotkey((uint16)0, "reload", WID_AID_RELOAD_TOGGLE), - Hotkey('B', "break_toggle", WID_AID_BREAK_STR_ON_OFF_BTN), - Hotkey('F', "break_string", WID_AID_BREAK_STR_EDIT_BOX), - Hotkey('C', "match_case", WID_AID_MATCH_CASE_BTN), - Hotkey(WKC_RETURN, "continue", WID_AID_CONTINUE_BTN), - HOTKEY_LIST_END(AIDebugWindow) +/** + * Handler for global hotkeys of the AIDebugWindow. + * @param hotkey Hotkey + * @return ES_HANDLED if hotkey was accepted. + */ +static EventState AIDebugGlobalHotkeys(int hotkey) +{ + if (_game_mode != GM_NORMAL) return ES_NOT_HANDLED; + Window *w = ShowAIDebugWindow(INVALID_COMPANY); + if (w == NULL) return ES_NOT_HANDLED; + return w->OnHotkey(hotkey); +} + +static Hotkey aidebug_hotkeys[] = { + Hotkey('1', "company_1", WID_AID_COMPANY_BUTTON_START), + Hotkey('2', "company_2", WID_AID_COMPANY_BUTTON_START + 1), + Hotkey('3', "company_3", WID_AID_COMPANY_BUTTON_START + 2), + Hotkey('4', "company_4", WID_AID_COMPANY_BUTTON_START + 3), + Hotkey('5', "company_5", WID_AID_COMPANY_BUTTON_START + 4), + Hotkey('6', "company_6", WID_AID_COMPANY_BUTTON_START + 5), + Hotkey('7', "company_7", WID_AID_COMPANY_BUTTON_START + 6), + Hotkey('8', "company_8", WID_AID_COMPANY_BUTTON_START + 7), + Hotkey('9', "company_9", WID_AID_COMPANY_BUTTON_START + 8), + Hotkey((uint16)0, "company_10", WID_AID_COMPANY_BUTTON_START + 9), + Hotkey((uint16)0, "company_11", WID_AID_COMPANY_BUTTON_START + 10), + Hotkey((uint16)0, "company_12", WID_AID_COMPANY_BUTTON_START + 11), + Hotkey((uint16)0, "company_13", WID_AID_COMPANY_BUTTON_START + 12), + Hotkey((uint16)0, "company_14", WID_AID_COMPANY_BUTTON_START + 13), + Hotkey((uint16)0, "company_15", WID_AID_COMPANY_BUTTON_START + 14), + Hotkey('S', "settings", WID_AID_SETTINGS), + Hotkey('0', "game_script", WID_AID_SCRIPT_GAME), + Hotkey((uint16)0, "reload", WID_AID_RELOAD_TOGGLE), + Hotkey('B', "break_toggle", WID_AID_BREAK_STR_ON_OFF_BTN), + Hotkey('F', "break_string", WID_AID_BREAK_STR_EDIT_BOX), + Hotkey('C', "match_case", WID_AID_MATCH_CASE_BTN), + Hotkey(WKC_RETURN, "continue", WID_AID_CONTINUE_BTN), + HOTKEY_LIST_END }; -Hotkey *_aidebug_hotkeys = AIDebugWindow::aidebug_hotkeys; +HotkeyList AIDebugWindow::hotkeys("aidebug", aidebug_hotkeys, AIDebugGlobalHotkeys); /** Widgets for the AI debug window. */ static const NWidgetPart _nested_ai_debug_widgets[] = { @@ -1442,6 +1448,7 @@ static const NWidgetPart _nested_ai_debug_widgets[] = { NWidget(WWT_CLOSEBOX, COLOUR_GREY), NWidget(WWT_CAPTION, COLOUR_GREY), SetDataTip(STR_AI_DEBUG, 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, WID_AID_VIEW), @@ -1481,11 +1488,12 @@ static const NWidgetPart _nested_ai_debug_widgets[] = { }; /** Window definition for the AI debug window. */ -static const WindowDesc _ai_debug_desc( - WDP_AUTO, 600, 450, +static WindowDesc _ai_debug_desc( + WDP_AUTO, "script_debug", 600, 450, WC_AI_DEBUG, WC_NONE, 0, - _nested_ai_debug_widgets, lengthof(_nested_ai_debug_widgets) + _nested_ai_debug_widgets, lengthof(_nested_ai_debug_widgets), + &AIDebugWindow::hotkeys ); /** @@ -1506,18 +1514,6 @@ Window *ShowAIDebugWindow(CompanyID show_company) return NULL; } -/** - * Handler for global AI debug window hotkeys. - */ -EventState AIDebugGlobalHotkeys(uint16 key, uint16 keycode) -{ - int num = CheckHotkeyMatch(_aidebug_hotkeys, keycode, NULL, true); - if (num == -1) return ES_NOT_HANDLED; - Window *w = ShowAIDebugWindow(INVALID_COMPANY); - if (w == NULL) return ES_NOT_HANDLED; - return w->OnKeyPress(key, keycode); -} - /** * Reset the AI windows to their initial state. */ diff --git a/src/ai/ai_info.cpp b/src/ai/ai_info.cpp index b40f07b08..e048a5457 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; + 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; } #if defined(WIN32) @@ -67,8 +72,8 @@ template <> const char *GetClassName() { return "AIInfo"; } 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 4d808e055..1c304c856 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") {} @@ -238,8 +240,17 @@ ScriptInfo *AIInstance::FindLibrary(const char *library, int version) */ void CcAI(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2) { - Company::Get(_current_company)->ai_instance->DoCommandCallback(result, tile, p1, p2); - Company::Get(_current_company)->ai_instance->Continue(); + /* + * The company might not exist anymore. Check for this. + * The command checks are not useful since this callback + * is also called when the command fails, which is does + * when the company does not exist anymore. + */ + const Company *c = Company::GetIfValid(_current_company); + if (c == NULL || c->ai_instance == NULL) return; + + c->ai_instance->DoCommandCallback(result, tile, p1, p2); + c->ai_instance->Continue(); } CommandCallback *AIInstance::GetDoCommandCallback() diff --git a/src/ai/ai_scanner.cpp b/src/ai/ai_scanner.cpp index 64b877c6c..4eb207147 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 97fdba04c..d8e8a6993 100644 --- a/src/ai/ai_scanner.hpp +++ b/src/ai/ai_scanner.hpp @@ -30,7 +30,7 @@ class AIScannerInfo : public ScriptScanner { /** * Check if we have an AI by name and version available in our list. * @param nameParam The name of the AI. - * @param versionParam The versionof the AI, or -1 if you want the latest. + * @param versionParam The version of the AI, or -1 if you want the latest. * @param force_exact_match Only match name+version, never latest. * @return NULL if no match found, otherwise the AI that matched. */ @@ -42,7 +42,7 @@ class AIScannerInfo : public ScriptScanner { 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 @@ class AIScannerLibrary : public ScriptScanner { 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_cmd.cpp b/src/aircraft_cmd.cpp index d273b8f36..2f49158eb 100644 --- a/src/aircraft_cmd.cpp +++ b/src/aircraft_cmd.cpp @@ -39,6 +39,8 @@ #include "table/strings.h" +#include "safeguards.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). @@ -99,6 +101,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 +168,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 +198,7 @@ static SpriteID GetAircraftIcon(EngineID engine, EngineImageType image_type) spritenum = e->original_image_index; } + assert(IsValidImageIndex(spritenum)); return DIR_W + _aircraft_sprite[spritenum]; } @@ -242,7 +252,7 @@ CommandCost CmdBuildAircraft(TileIndex tile, DoCommandFlag flags, const Engine * /* Prevent building aircraft types at places which can't handle them */ if (!CanVehicleUseStation(e->index, st)) return CMD_ERROR; - /* Make sure all aircraft end up in the first tile of the hanger. */ + /* Make sure all aircraft end up in the first tile of the hangar. */ tile = st->airport.GetHangarTile(st->airport.GetHangarNum(tile)); if (flags & DC_EXEC) { @@ -271,13 +281,16 @@ CommandCost CmdBuildAircraft(TileIndex tile, DoCommandFlag flags, const Engine * v->spritenum = avi->image_index; v->cargo_cap = avi->passenger_capacity; + v->refit_cap = 0; u->cargo_cap = avi->mail_capacity; + u->refit_cap = 0; v->cargo_type = e->GetDefaultCargoType(); u->cargo_type = CT_MAIL; v->name = NULL; v->last_station_visited = INVALID_STATION; + v->last_loading_station = INVALID_STATION; v->acceleration = avi->acceleration; v->engine_type = e->index; @@ -302,7 +315,7 @@ CommandCost CmdBuildAircraft(TileIndex tile, DoCommandFlag flags, const Engine * v->targetairport = GetStationIndex(tile); v->SetNext(u); - v->service_interval = Company::Get(_current_company)->settings.vehicle.servint_aircraft; + v->SetServiceInterval(Company::Get(_current_company)->settings.vehicle.servint_aircraft); v->date_of_last_service = _date; v->build_year = u->build_year = _cur_year; @@ -314,6 +327,7 @@ CommandCost CmdBuildAircraft(TileIndex tile, DoCommandFlag flags, const Engine * v->vehicle_flags = 0; if (e->flags & ENGINE_EXCLUSIVE_PREVIEW) SetBit(v->vehicle_flags, VF_BUILT_AS_PROTOTYPE); + v->SetServiceIntervalIsPercent(Company::Get(_current_company)->settings.vehicle.servint_ispercent); v->InvalidateNewGRFCacheOfChain(); @@ -597,7 +611,14 @@ enum AircraftSpeedLimits { */ static int UpdateAircraftSpeed(Aircraft *v, uint speed_limit = SPEED_LIMIT_NONE, bool hard_limit = true) { - uint spd = v->acceleration * 16; + /** + * 'acceleration' has the unit 3/8 mph/tick. This function is called twice per tick. + * So the speed amount we need to accelerate is: + * acceleration * 3 / 16 mph = acceleration * 3 / 16 * 16 / 10 km-ish/h + * = acceleration * 3 / 10 * 256 * (km-ish/h / 256) + * ~ acceleration * 77 (km-ish/h / 256) + */ + uint spd = v->acceleration * 77; byte t; /* Adjust speed limits by plane speed factor to prevent taxiing @@ -635,7 +656,7 @@ static int UpdateAircraftSpeed(Aircraft *v, uint speed_limit = SPEED_LIMIT_NONE, /* Adjust distance moved by plane speed setting */ if (_settings_game.vehicle.plane_speed > 1) spd /= _settings_game.vehicle.plane_speed; - /* Convert direction-indepenent speed into direction-dependent speed. (old movement method) */ + /* Convert direction-independent speed into direction-dependent speed. (old movement method) */ spd = v->GetOldAdvanceSpeed(spd); spd += v->progress; @@ -660,7 +681,7 @@ int GetAircraftFlyingAltitude(const Aircraft *v) int base_altitude = PLANE_HOLDING_ALTITUDE; /* Make sure eastbound and westbound planes do not "crash" into each - * other by providing them with vertical seperation + * other by providing them with vertical separation */ switch (v->direction) { case DIR_N: @@ -1013,7 +1034,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; @@ -1058,7 +1079,12 @@ static bool HandleCrashedAircraft(Aircraft *v) } -static void HandleAircraftSmoke(Aircraft *v) +/** + * Handle smoke of broken aircraft. + * @param v Aircraft + * @param mode Is this the non-first call for this vehicle in this tick? + */ +static void HandleAircraftSmoke(Aircraft *v, bool mode) { static const struct { int8 x; @@ -1076,13 +1102,15 @@ static void HandleAircraftSmoke(Aircraft *v) if (!(v->vehstatus & VS_AIRCRAFT_BROKEN)) return; + /* Stop smoking when landed */ if (v->cur_speed < 10) { v->vehstatus &= ~VS_AIRCRAFT_BROKEN; v->breakdown_ctr = 0; return; } - if ((v->tick_counter & 0x1F) == 0) { + /* Spawn effect et most once per Tick, i.e. !mode */ + if (!mode && (v->tick_counter & 0x0F) == 0) { CreateEffectVehicleRel(v, smoke_pos[v->direction].x, smoke_pos[v->direction].y, @@ -1135,7 +1163,8 @@ TileIndex Aircraft::GetOrderStationLocation(StationID station) void Aircraft::MarkDirty() { - this->UpdateViewport(false, false); + this->colourmap = PAL_NONE; + this->UpdateViewport(true, false); if (this->subtype == AIR_HELICOPTER) this->Next()->Next()->cur_image = GetRotorImage(this, EIT_ON_MAP); } @@ -1159,8 +1188,8 @@ static void CrashAirplane(Aircraft *v) uint pass = v->Crash(); SetDParam(0, pass); - v->cargo.Truncate(0); - v->Next()->cargo.Truncate(0); + v->cargo.Truncate(); + v->Next()->cargo.Truncate(); const Station *st = GetTargetAirportIfValid(v); StringID newsitem; if (st == NULL) { @@ -1204,7 +1233,7 @@ static void MaybeCrashAirplane(Aircraft *v) /* Crash the airplane. Remove all goods stored at the station. */ for (CargoID i = 0; i < NUM_CARGO; i++) { st->goods[i].rating = 1; - st->goods[i].cargo.Truncate(0); + st->goods[i].cargo.Truncate(); } CrashAirplane(v); @@ -1380,7 +1409,7 @@ static void AircraftEventHandler_AtTerminal(Aircraft *v, const AirportFTAClass * * and get serviced at the same time - setting */ if (_settings_game.order.serviceathelipad) { if (v->subtype == AIR_HELICOPTER && apc->num_helipads > 0) { - /* an exerpt of ServiceAircraft, without the invisibility stuff */ + /* an excerpt of ServiceAircraft, without the invisibility stuff */ v->date_of_last_service = _date; v->breakdowns_since_last_service = 0; v->reliability = v->GetEngine()->reliability; @@ -1402,7 +1431,7 @@ static void AircraftEventHandler_AtTerminal(Aircraft *v, const AirportFTAClass * switch (v->current_order.GetType()) { case OT_GOTO_STATION: // ready to fly to another airport break; - case OT_GOTO_DEPOT: // visit hangar for serivicing, sale, etc. + case OT_GOTO_DEPOT: // visit hangar for servicing, sale, etc. go_to_hangar = v->current_order.GetDestination() == v->targetairport; break; case OT_CONDITIONAL: @@ -1885,8 +1914,6 @@ static void AircraftHandleDestTooFar(Aircraft *v, bool too_far) static bool AircraftEventHandler(Aircraft *v, int loop) { - v->tick_counter++; - if (v->vehstatus & VS_CRASHED) { return HandleCrashedAircraft(v); } @@ -1895,7 +1922,7 @@ static bool AircraftEventHandler(Aircraft *v, int loop) v->HandleBreakdown(); - HandleAircraftSmoke(v); + HandleAircraftSmoke(v, loop != 0); ProcessOrders(v); v->HandleLoading(loop != 0); @@ -1925,6 +1952,8 @@ bool Aircraft::Tick() { if (!this->IsNormalAircraft()) return true; + this->tick_counter++; + if (!(this->vehstatus & VS_STOPPED)) this->running_ticks++; if (this->subtype == AIR_HELICOPTER) HelicopterTickHandler(this); diff --git a/src/aircraft_gui.cpp b/src/aircraft_gui.cpp index faefaa907..2c58b68c8 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 * @@ -39,7 +41,7 @@ void DrawAircraftDetails(const Aircraft *v, int left, int right, int y) SetDParam(0, u->engine_type); SetDParam(1, u->build_year); SetDParam(2, u->value); - DrawString(left, right, y, STR_VEHICLE_INFO_BUILT_VALUE, TC_FROMSTRING, SA_LEFT | SA_STRIP); + DrawString(left, right, y, STR_VEHICLE_INFO_BUILT_VALUE); SetDParam(0, u->cargo_type); SetDParam(1, u->cargo_cap); @@ -50,7 +52,7 @@ void DrawAircraftDetails(const Aircraft *v, int left, int right, int y) } if (u->cargo_cap != 0) { - uint cargo_count = u->cargo.Count(); + uint cargo_count = u->cargo.StoredCount(); y_offset += FONT_HEIGHT_NORMAL + 1; if (cargo_count != 0) { diff --git a/src/airport.cpp b/src/airport.cpp index 1a58be465..a50c049c2 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. @@ -22,7 +24,7 @@ * @param terminals The terminals. * @param num_helipads Number of heli pads. * @param flags Information about the class of FTA. - * @param delta_z Height of the arport above the land. + * @param delta_z Height of the airport above the land. */ #define AIRPORT_GENERIC(name, terminals, num_helipads, flags, delta_z) \ static AirportFTAClass _airportfta_ ## name(_airport_moving_data_ ## name, terminals, \ @@ -41,7 +43,7 @@ * Define a heliport. * @param name Suffix of the names of the helipad data. * @param num_helipads Number of heli pads. - * @param delta_z Height of the arport above the land. + * @param delta_z Height of the airport above the land. */ #define HELIPORT(name, num_helipads, delta_z) \ AIRPORT_GENERIC(name, NULL, num_helipads, AirportFTAClass::HELICOPTERS, delta_z) diff --git a/src/airport.h b/src/airport.h index 7f0cac494..31c68ef00 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 8d97add91..761466f1a 100644 --- a/src/airport_gui.cpp +++ b/src/airport_gui.cpp @@ -27,9 +27,12 @@ #include "core/geometry_func.hpp" #include "hotkeys.h" #include "vehicle_func.h" +#include "gui.h" #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 @@ -43,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(); } @@ -67,9 +70,9 @@ static void PlaceAirport(TileIndex tile) struct BuildAirToolbarWindow : Window { int last_user_action; // Last started user action. - BuildAirToolbarWindow(const WindowDesc *desc, WindowNumber window_number) : Window() + BuildAirToolbarWindow(WindowDesc *desc, WindowNumber window_number) : Window(desc) { - this->InitNested(desc, window_number); + this->InitNested(window_number); if (_settings_client.gui.link_terraform_toolbar) ShowTerraformToolbar(this); this->last_user_action = WIDGET_LIST_END; } @@ -99,14 +102,6 @@ struct BuildAirToolbarWindow : Window { } - virtual EventState OnKeyPress(uint16 key, uint16 keycode) - { - int num = CheckHotkeyMatch(airtoolbar_hotkeys, keycode, this); - if (num == -1) return ES_NOT_HANDLED; - this->OnClick(Point(), num, 1); - return ES_HANDLED; - } - virtual void OnPlaceObject(Point pt, TileIndex tile) { switch (this->last_user_action) { @@ -142,15 +137,28 @@ struct BuildAirToolbarWindow : Window { DeleteWindowById(WC_SELECT_STATION, 0); } - static Hotkey airtoolbar_hotkeys[]; + static HotkeyList hotkeys; }; -Hotkey BuildAirToolbarWindow::airtoolbar_hotkeys[] = { - Hotkey('1', "airport", WID_AT_AIRPORT), - Hotkey('2', "demolish", WID_AT_DEMOLISH), - HOTKEY_LIST_END(BuildAirToolbarWindow) +/** + * Handler for global hotkeys of the BuildAirToolbarWindow. + * @param hotkey Hotkey + * @return ES_HANDLED if hotkey was accepted. + */ +static EventState AirportToolbarGlobalHotkeys(int hotkey) +{ + if (_game_mode != GM_NORMAL || !CanBuildVehicleInfrastructure(VEH_AIRCRAFT)) return ES_NOT_HANDLED; + Window *w = ShowBuildAirToolbar(); + if (w == NULL) return ES_NOT_HANDLED; + return w->OnHotkey(hotkey); +} + +static Hotkey airtoolbar_hotkeys[] = { + Hotkey('1', "airport", WID_AT_AIRPORT), + Hotkey('2', "demolish", WID_AT_DEMOLISH), + HOTKEY_LIST_END }; -Hotkey *_airtoolbar_hotkeys = BuildAirToolbarWindow::airtoolbar_hotkeys; +HotkeyList BuildAirToolbarWindow::hotkeys("airtoolbar", airtoolbar_hotkeys, AirportToolbarGlobalHotkeys); static const NWidgetPart _nested_air_toolbar_widgets[] = { NWidget(NWID_HORIZONTAL), @@ -165,11 +173,12 @@ static const NWidgetPart _nested_air_toolbar_widgets[] = { EndContainer(), }; -static const WindowDesc _air_toolbar_desc( - WDP_ALIGN_TOOLBAR, 0, 0, +static WindowDesc _air_toolbar_desc( + WDP_ALIGN_TOOLBAR, "toolbar_air", 0, 0, WC_BUILD_TOOLBAR, WC_NONE, WDF_CONSTRUCTION, - _nested_air_toolbar_widgets, lengthof(_nested_air_toolbar_widgets) + _nested_air_toolbar_widgets, lengthof(_nested_air_toolbar_widgets), + &BuildAirToolbarWindow::hotkeys ); /** @@ -187,16 +196,6 @@ Window *ShowBuildAirToolbar() return AllocateWindowDescFront(&_air_toolbar_desc, TRANSPORT_AIR); } -EventState AirportToolbarGlobalHotkeys(uint16 key, uint16 keycode) -{ - if (!CanBuildVehicleInfrastructure(VEH_AIRCRAFT)) return ES_NOT_HANDLED; - int num = CheckHotkeyMatch(_airtoolbar_hotkeys, keycode, NULL, true); - if (num == -1) return ES_NOT_HANDLED; - Window *w = ShowBuildAirToolbar(); - if (w == NULL) return ES_NOT_HANDLED; - return w->OnKeyPress(key, keycode); -} - class BuildAirportWindow : public PickerWindowBase { SpriteID preview_sprite; ///< Cached airport preview sprite. int line_height; @@ -208,22 +207,22 @@ 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; } public: - BuildAirportWindow(const WindowDesc *desc, Window *parent) : PickerWindowBase(parent) + BuildAirportWindow(WindowDesc *desc, Window *parent) : PickerWindowBase(desc, parent) { - this->CreateNestedTree(desc); + this->CreateNestedTree(); this->vscroll = this->GetScrollbar(WID_AP_SCROLLBAR); this->vscroll->SetCapacity(5); this->vscroll->SetPosition(0); - this->FinishInitNested(desc, TRANSPORT_AIR); + this->FinishInitNested(TRANSPORT_AIR); this->SetWidgetLoweredState(WID_AP_BTN_DONTHILIGHT, !_settings_client.gui.station_show_coverage); this->SetWidgetLoweredState(WID_AP_BTN_DOHILIGHT, _settings_client.gui.station_show_coverage); @@ -287,7 +286,7 @@ class BuildAirportWindow : public PickerWindowBase { } this->line_height = FONT_HEIGHT_NORMAL + WD_MATRIX_TOP + WD_MATRIX_BOTTOM; - size->height = this->vscroll->GetCapacity() * this->line_height; + size->height = 5 * this->line_height; break; } @@ -338,7 +337,7 @@ class BuildAirportWindow : public PickerWindowBase { if (!as->IsAvailable()) { GfxFillRect(r.left + 1, y + 1, r.right - 1, y + this->line_height - 2, PC_BLACK, FILLRECT_CHECKER); } - DrawString(r.left + WD_MATRIX_LEFT, r.right + WD_MATRIX_RIGHT, y + WD_MATRIX_TOP, as->name, ((int)i == _selected_airport_index) ? TC_WHITE : TC_BLACK); + DrawString(r.left + WD_MATRIX_LEFT, r.right - WD_MATRIX_RIGHT, y + WD_MATRIX_TOP, as->name, ((int)i == _selected_airport_index) ? TC_WHITE : TC_BLACK); y += this->line_height; } break; @@ -391,8 +390,10 @@ class BuildAirportWindow : public PickerWindowBase { top = DrawStationCoverageAreaText(panel_nwi->pos_x + WD_FRAMERECT_LEFT, right - WD_FRAMERECT_RIGHT, top, SCT_ALL, rad, true) + WD_PAR_VSEP_NORMAL; } - /* Resize background if the text is not equally long as the window. */ - if (top > bottom || (top < bottom && panel_nwi->current_y > panel_nwi->smallest_y)) { + /* Resize background if the window is too small. + * 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); } } @@ -525,8 +526,9 @@ 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), SetDataTip(0x501, STR_STATION_BUILD_AIRPORT_TOOLTIP), SetScrollbar(WID_AP_SCROLLBAR), + 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), EndContainer(), NWidget(NWID_HORIZONTAL), @@ -534,7 +536,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. */ @@ -554,8 +555,8 @@ static const NWidgetPart _nested_build_airport_widgets[] = { EndContainer(), }; -static const WindowDesc _build_airport_desc( - WDP_AUTO, 0, 0, +static WindowDesc _build_airport_desc( + WDP_AUTO, "build_station_air", 0, 0, WC_BUILD_STATION, WC_BUILD_TOOLBAR, WDF_CONSTRUCTION, _nested_build_airport_widgets, lengthof(_nested_build_airport_widgets) diff --git a/src/animated_tile.cpp b/src/animated_tile.cpp index 8995275e9..78dda8b3b 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 a889ab3d8..859d9a750 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. /** @@ -68,7 +70,7 @@ bool IsArticulatedEngine(EngineID engine_type) * Count the number of articulated parts of an engine. * @param engine_type The engine to get the number of parts of. * @param purchase_window Whether we are in the scope of the purchase window or not, i.e. whether we cannot allocate vehicles. - * @return The nmumber of parts. + * @return The number of parts. */ uint CountArticulatedParts(EngineID engine_type, bool purchase_window) { @@ -98,7 +100,7 @@ uint CountArticulatedParts(EngineID engine_type, bool purchase_window) /** * Returns the default (non-refitted) capacity of a specific EngineID. - * @param engine the EngineID of iterest + * @param engine the EngineID of interest * @param cargo_type returns the default cargo type, if needed * @return capacity */ @@ -113,7 +115,7 @@ static inline uint16 GetVehicleDefaultCapacity(EngineID engine, CargoID *cargo_t /** * Returns all cargoes a vehicle can carry. - * @param engine the EngineID of iterest + * @param engine the EngineID of interest * @param include_initial_cargo_type if true the default cargo type of the vehicle is included; if false only the refit_mask * @return bit set of CargoIDs */ @@ -355,6 +357,7 @@ void AddArticulatedParts(Vehicle *first) t->cargo_type = front->cargo_type; // Needed for livery selection t->cargo_cap = 0; } + t->refit_cap = 0; t->SetArticulatedPart(); break; @@ -381,6 +384,7 @@ void AddArticulatedParts(Vehicle *first) rv->cargo_type = front->cargo_type; // Needed for livery selection rv->cargo_cap = 0; } + rv->refit_cap = 0; rv->SetArticulatedPart(); break; diff --git a/src/autoreplace.cpp b/src/autoreplace.cpp index 1ba64d7b8..3b7f73972 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; @@ -87,7 +89,10 @@ CommandCost AddEngineReplacement(EngineRenewList *erl, EngineID old_engine, Engi /* Check if the old vehicle is already in the list */ EngineRenew *er = GetEngineReplacement(*erl, old_engine, group); if (er != NULL) { - if (flags & DC_EXEC) er->to = new_engine; + if (flags & DC_EXEC) { + er->to = new_engine; + er->replace_when_old = replace_when_old; + } return CommandCost(); } diff --git a/src/autoreplace_cmd.cpp b/src/autoreplace_cmd.cpp index de4bcb00f..e69ac66eb 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); @@ -66,18 +68,18 @@ bool CheckAutoreplaceValidity(EngineID from, EngineID to, CompanyID company) /* make sure the railtypes are compatible */ if ((GetRailTypeInfo(e_from->u.rail.railtype)->compatible_railtypes & GetRailTypeInfo(e_to->u.rail.railtype)->compatible_railtypes) == 0) return false; - /* make sure we do not replace wagons with engines or vise versa */ + /* make sure we do not replace wagons with engines or vice versa */ if ((e_from->u.rail.railveh_type == RAILVEH_WAGON) != (e_to->u.rail.railveh_type == RAILVEH_WAGON)) return false; break; } case VEH_ROAD: - /* make sure that we do not replace a tram with a normal road vehicles or vise versa */ + /* make sure that we do not replace a tram with a normal road vehicles or vice versa */ if (HasBit(e_from->info.misc_flags, EF_ROAD_TRAM) != HasBit(e_to->info.misc_flags, EF_ROAD_TRAM)) return false; break; case VEH_AIRCRAFT: - /* make sure that we do not replace a plane with a helicopter or vise versa */ + /* make sure that we do not replace a plane with a helicopter or vice versa */ if ((e_from->u.air.subtype & AIR_CTOL) != (e_to->u.air.subtype & AIR_CTOL)) return false; break; @@ -91,27 +93,32 @@ bool CheckAutoreplaceValidity(EngineID from, EngineID to, CompanyID company) /** * Check the capacity of all vehicles in a chain and spread cargo if needed. * @param v The vehicle to check. + * @pre You can only do this if the consist is not loading or unloading. It + * must not carry reserved cargo, nor cargo to be unloaded or transferred. */ void CheckCargoCapacity(Vehicle *v) { assert(v == NULL || v->First() == v); for (Vehicle *src = v; src != NULL; src = src->Next()) { + assert(src->cargo.TotalCount() == src->cargo.ActionCount(VehicleCargoList::MTA_KEEP)); + /* Do we need to more cargo away? */ - if (src->cargo.Count() <= src->cargo_cap) continue; + if (src->cargo.TotalCount() <= src->cargo_cap) continue; /* We need to move a particular amount. Try that on the other vehicles. */ - uint to_spread = src->cargo.Count() - src->cargo_cap; + uint to_spread = src->cargo.TotalCount() - src->cargo_cap; for (Vehicle *dest = v; dest != NULL && to_spread != 0; dest = dest->Next()) { - if (dest->cargo.Count() >= dest->cargo_cap || dest->cargo_type != src->cargo_type) continue; + assert(dest->cargo.TotalCount() == dest->cargo.ActionCount(VehicleCargoList::MTA_KEEP)); + if (dest->cargo.TotalCount() >= dest->cargo_cap || dest->cargo_type != src->cargo_type) continue; - uint amount = min(to_spread, dest->cargo_cap - dest->cargo.Count()); - src->cargo.MoveTo(&dest->cargo, amount, VehicleCargoList::MTA_UNLOAD, NULL); + uint amount = min(to_spread, dest->cargo_cap - dest->cargo.TotalCount()); + src->cargo.Shift(amount, &dest->cargo); to_spread -= amount; } /* Any left-overs will be thrown away, but not their feeder share. */ - src->cargo.Truncate(src->cargo_cap); + if (src->cargo_cap < src->cargo.TotalCount()) src->cargo.Truncate(src->cargo.TotalCount() - src->cargo_cap); } } @@ -120,21 +127,26 @@ void CheckCargoCapacity(Vehicle *v) * @param old_veh Old vehicle that will be sold * @param new_head Head of the completely constructed new vehicle chain * @param part_of_chain The vehicle is part of a train + * @pre You can only do this if both consists are not loading or unloading. + * They must not carry reserved cargo, nor cargo to be unloaded or + * transferred. */ static void TransferCargo(Vehicle *old_veh, Vehicle *new_head, bool part_of_chain) { assert(!part_of_chain || new_head->IsPrimaryVehicle()); /* Loop through source parts */ for (Vehicle *src = old_veh; src != NULL; src = src->Next()) { + assert(src->cargo.TotalCount() == src->cargo.ActionCount(VehicleCargoList::MTA_KEEP)); if (!part_of_chain && src->type == VEH_TRAIN && src != old_veh && src != Train::From(old_veh)->other_multiheaded_part && !src->IsArticulatedPart()) { /* Skip vehicles, which do not belong to old_veh */ src = src->GetLastEnginePart(); continue; } - if (src->cargo_type >= NUM_CARGO || src->cargo.Count() == 0) continue; + if (src->cargo_type >= NUM_CARGO || src->cargo.TotalCount() == 0) continue; /* Find free space in the new chain */ - for (Vehicle *dest = new_head; dest != NULL && src->cargo.Count() > 0; dest = dest->Next()) { + for (Vehicle *dest = new_head; dest != NULL && src->cargo.TotalCount() > 0; dest = dest->Next()) { + assert(dest->cargo.TotalCount() == dest->cargo.ActionCount(VehicleCargoList::MTA_KEEP)); if (!part_of_chain && dest->type == VEH_TRAIN && dest != new_head && dest != Train::From(new_head)->other_multiheaded_part && !dest->IsArticulatedPart()) { /* Skip vehicles, which do not belong to new_head */ dest = dest->GetLastEnginePart(); @@ -142,15 +154,15 @@ static void TransferCargo(Vehicle *old_veh, Vehicle *new_head, bool part_of_chai } if (dest->cargo_type != src->cargo_type) continue; - uint amount = min(src->cargo.Count(), dest->cargo_cap - dest->cargo.Count()); + uint amount = min(src->cargo.TotalCount(), dest->cargo_cap - dest->cargo.TotalCount()); if (amount <= 0) continue; - src->cargo.MoveTo(&dest->cargo, amount, VehicleCargoList::MTA_UNLOAD, NULL); + src->cargo.Shift(amount, &dest->cargo); } } /* 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); } /** @@ -263,7 +275,7 @@ static CommandCost GetNewEngineType(const Vehicle *v, const Company *c, bool alw * Builds and refits a replacement vehicle * Important: The old vehicle is still in the original vehicle chain (used for determining the cargo when the old vehicle did not carry anything, but the new one does) * @param old_veh A single (articulated/multiheaded) vehicle that shall be replaced. - * @param new_vehicle Returns the newly build and refittet vehicle + * @param new_vehicle Returns the newly build and refitted vehicle * @param part_of_chain The vehicle is part of a train * @return cost or error */ @@ -766,7 +778,7 @@ CommandCost CmdSetAutoReplace(TileIndex tile, DoCommandFlag flags, uint32 p1, ui if (flags & DC_EXEC) { GroupStatistics::UpdateAutoreplace(_current_company); - SetWindowClassesDirty(GetWindowClassForVehicleType(Engine::Get(old_engine_type)->type)); + if (IsLocalCompany()) SetWindowDirty(WC_REPLACE_VEHICLE, Engine::Get(old_engine_type)->type); } if ((flags & DC_EXEC) && IsLocalCompany()) InvalidateAutoreplaceWindow(old_engine_type, id_g); diff --git a/src/autoreplace_gui.cpp b/src/autoreplace_gui.cpp index 6477797ed..e6ce64cfa 100644 --- a/src/autoreplace_gui.cpp +++ b/src/autoreplace_gui.cpp @@ -28,6 +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); @@ -45,7 +47,7 @@ static int CDECL EngineNumberSorter(const EngineID *a, const EngineID *b) * @param id_g The group the engine belongs to * Note: this function only works if it is called either * - when a new vehicle is build, but before it's counted in num_engines - * - when a vehicle is deleted and after it's substracted from num_engines + * - when a vehicle is deleted and after it's subtracted from num_engines * - when not changing the count (used when changing replace orders) */ void InvalidateAutoreplaceWindow(EngineID e, GroupID id_g) @@ -164,10 +166,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); } } } @@ -186,11 +199,10 @@ class ReplaceVehicleWindow : public Window { EngineID veh_from = this->sel_engine[0]; EngineID veh_to = this->sel_engine[1]; DoCommandP(0, (replace_when_old ? 1 : 0) | (this->sel_group << 16), veh_from + (veh_to << 16), CMD_SET_AUTOREPLACE); - this->SetDirty(); } public: - ReplaceVehicleWindow(const WindowDesc *desc, VehicleType vehicletype, GroupID id_g) : Window() + ReplaceVehicleWindow(WindowDesc *desc, VehicleType vehicletype, GroupID id_g) : Window(desc) { if (vehicletype == VEH_TRAIN) { /* For rail vehicles find the most used vehicle type, which is usually @@ -218,10 +230,10 @@ class ReplaceVehicleWindow : public Window { this->sel_engine[0] = INVALID_ENGINE; this->sel_engine[1] = INVALID_ENGINE; - this->CreateNestedTree(desc); + this->CreateNestedTree(); this->vscroll[0] = this->GetScrollbar(WID_RV_LEFT_SCROLLBAR); this->vscroll[1] = this->GetScrollbar(WID_RV_RIGHT_SCROLLBAR); - this->FinishInitNested(desc, vehicletype); + this->FinishInitNested(vehicletype); this->owner = _local_company; this->sel_group = id_g; @@ -266,10 +278,8 @@ class ReplaceVehicleWindow : public Window { } 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); @@ -341,20 +351,21 @@ class ReplaceVehicleWindow : public Window { switch (widget) { 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; } @@ -455,7 +466,6 @@ class ReplaceVehicleWindow : public Window { case WID_RV_STOP_REPLACE: { // Stop replacing EngineID veh_from = this->sel_engine[0]; DoCommandP(0, this->sel_group << 16, veh_from + (INVALID_ENGINE << 16), CMD_SET_AUTOREPLACE); - this->SetDirty(); break; } @@ -511,9 +521,6 @@ class ReplaceVehicleWindow : public Window { { this->vscroll[0]->SetCapacityFromWidget(this, WID_RV_LEFT_MATRIX); this->vscroll[1]->SetCapacityFromWidget(this, WID_RV_RIGHT_MATRIX); - - this->GetWidget(WID_RV_LEFT_MATRIX)->widget_data = - this->GetWidget(WID_RV_RIGHT_MATRIX)->widget_data = (this->vscroll[0]->GetCapacity() << MAT_ROW_START) + (1 << MAT_COL_START); } /** @@ -537,12 +544,13 @@ static const NWidgetPart _nested_replace_rail_vehicle_widgets[] = { NWidget(WWT_CLOSEBOX, COLOUR_GREY), NWidget(WWT_CAPTION, COLOUR_GREY, WID_RV_CAPTION), SetDataTip(STR_REPLACE_VEHICLES_WHITE, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), NWidget(WWT_SHADEBOX, COLOUR_GREY), + NWidget(WWT_DEFSIZEBOX, COLOUR_GREY), NWidget(WWT_STICKYBOX, COLOUR_GREY), EndContainer(), NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), - NWidget(WWT_MATRIX, COLOUR_GREY, WID_RV_LEFT_MATRIX), SetMinimalSize(216, 0), SetFill(1, 1), SetDataTip(0x1, STR_REPLACE_HELP_LEFT_ARRAY), SetResize(1, 1), SetScrollbar(WID_RV_LEFT_SCROLLBAR), + 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), - NWidget(WWT_MATRIX, COLOUR_GREY, WID_RV_RIGHT_MATRIX), SetMinimalSize(216, 0), SetFill(1, 1), SetDataTip(0x1, STR_REPLACE_HELP_RIGHT_ARRAY), SetResize(1, 1), SetScrollbar(WID_RV_RIGHT_SCROLLBAR), + NWidget(WWT_MATRIX, COLOUR_GREY, WID_RV_RIGHT_MATRIX), SetMinimalSize(216, 0), SetFill(1, 1), SetMatrixDataTip(1, 0, STR_REPLACE_HELP_RIGHT_ARRAY), SetResize(1, 1), SetScrollbar(WID_RV_RIGHT_SCROLLBAR), NWidget(NWID_VSCROLLBAR, COLOUR_GREY, WID_RV_RIGHT_SCROLLBAR), EndContainer(), NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), @@ -565,8 +573,8 @@ static const NWidgetPart _nested_replace_rail_vehicle_widgets[] = { EndContainer(), }; -static const WindowDesc _replace_rail_vehicle_desc( - WDP_AUTO, 500, 140, +static WindowDesc _replace_rail_vehicle_desc( + WDP_AUTO, "replace_vehicle_train", 500, 140, WC_REPLACE_VEHICLE, WC_NONE, WDF_CONSTRUCTION, _nested_replace_rail_vehicle_widgets, lengthof(_nested_replace_rail_vehicle_widgets) @@ -577,12 +585,13 @@ static const NWidgetPart _nested_replace_vehicle_widgets[] = { NWidget(WWT_CLOSEBOX, COLOUR_GREY), NWidget(WWT_CAPTION, COLOUR_GREY, WID_RV_CAPTION), SetMinimalSize(433, 14), SetDataTip(STR_REPLACE_VEHICLES_WHITE, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), NWidget(WWT_SHADEBOX, COLOUR_GREY), + NWidget(WWT_DEFSIZEBOX, COLOUR_GREY), NWidget(WWT_STICKYBOX, COLOUR_GREY), EndContainer(), NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), - NWidget(WWT_MATRIX, COLOUR_GREY, WID_RV_LEFT_MATRIX), SetMinimalSize(216, 0), SetFill(1, 1), SetDataTip(0x1, STR_REPLACE_HELP_LEFT_ARRAY), SetResize(1, 1), SetScrollbar(WID_RV_LEFT_SCROLLBAR), + 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), - NWidget(WWT_MATRIX, COLOUR_GREY, WID_RV_RIGHT_MATRIX), SetMinimalSize(216, 0), SetFill(1, 1), SetDataTip(0x1, STR_REPLACE_HELP_RIGHT_ARRAY), SetResize(1, 1), SetScrollbar(WID_RV_RIGHT_SCROLLBAR), + NWidget(WWT_MATRIX, COLOUR_GREY, WID_RV_RIGHT_MATRIX), SetMinimalSize(216, 0), SetFill(1, 1), SetMatrixDataTip(1, 0, STR_REPLACE_HELP_RIGHT_ARRAY), SetResize(1, 1), SetScrollbar(WID_RV_RIGHT_SCROLLBAR), NWidget(NWID_VSCROLLBAR, COLOUR_GREY, WID_RV_RIGHT_SCROLLBAR), EndContainer(), NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), @@ -597,8 +606,8 @@ static const NWidgetPart _nested_replace_vehicle_widgets[] = { EndContainer(), }; -static const WindowDesc _replace_vehicle_desc( - WDP_AUTO, 456, 118, +static WindowDesc _replace_vehicle_desc( + WDP_AUTO, "replace_vehicle", 456, 118, WC_REPLACE_VEHICLE, WC_NONE, WDF_CONSTRUCTION, _nested_replace_vehicle_widgets, lengthof(_nested_replace_vehicle_widgets) diff --git a/src/base_consist.cpp b/src/base_consist.cpp index 005c88672..c7fcdec21 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; diff --git a/src/base_consist.h b/src/base_consist.h index 5e45d354d..3679afd35 100644 --- a/src/base_consist.h +++ b/src/base_consist.h @@ -24,12 +24,12 @@ struct BaseConsist { int32 lateness_counter; ///< How many ticks late (or early if negative) this vehicle is. Date timetable_start; ///< When the vehicle is supposed to start the timetable. - Date service_interval; ///< The interval for (automatic) servicing; either in days or %. + uint16 service_interval; ///< The interval for (automatic) servicing; either in days or %. VehicleOrderID cur_real_order_index;///< The index to the current real (non-implicit) order VehicleOrderID cur_implicit_order_index;///< The index to the current implicit order - byte vehicle_flags; ///< Used for gradual loading and other miscellaneous things (@see VehicleFlags enum) + uint16 vehicle_flags; ///< Used for gradual loading and other miscellaneous things (@see VehicleFlags enum) BaseConsist() : name(NULL) {} virtual ~BaseConsist(); diff --git a/src/base_media_func.h b/src/base_media_func.h index a28435fe6..e3678d5a1 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'; @@ -269,7 +269,7 @@ template if (missing == 0) { p += seprintf(p, last, " (%i corrupt file%s)\n", invalid, invalid == 1 ? "" : "s"); } else { - p += seprintf(p, last, " (unuseable: %i missing file%s)\n", missing, missing == 1 ? "" : "s"); + p += seprintf(p, last, " (unusable: %i missing file%s)\n", missing, missing == 1 ? "" : "s"); } } else { p += seprintf(p, last, "\n"); diff --git a/src/base_station_base.h b/src/base_station_base.h index 7cfd8c2e9..53e104a82 100644 --- a/src/base_station_base.h +++ b/src/base_station_base.h @@ -71,6 +71,7 @@ struct BaseStation : StationPool::PoolItem<&_station_pool> { uint16 random_bits; ///< Random bits assigned to this station byte waiting_triggers; ///< Waiting triggers (NewGRF) for this station uint8 cached_anim_triggers; ///< NOSAVE: Combined animation trigger bitmask, used to determine if trigger processing should happen. + uint32 cached_cargo_triggers; ///< NOSAVE: Combined cargo trigger bitmask TileArea train_station; ///< Tile area the train 'station' part covers StationRect rect; ///< NOSAVE: Station spread out rectangle maintained by StationRect::xxx() functions @@ -102,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 7681d25ed..6127ff3a0 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,46 @@ 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_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 +250,7 @@ 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; } } @@ -439,7 +482,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 c03062dc2..e707c4437 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 @@ class Blitter_32bppAnim FINAL : public Blitter_32bppOptimized { }; /** 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 000000000..f25683a10 --- /dev/null +++ b/src/blitter/32bpp_anim_sse4.cpp @@ -0,0 +1,401 @@ +/* $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; + } + +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; + } +} + +#endif /* WITH_SSE */ diff --git a/src/blitter/32bpp_anim_sse4.hpp b/src/blitter/32bpp_anim_sse4.hpp new file mode 100644 index 000000000..e2d4cfc23 --- /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 cf2a78f7e..26dd2f037 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; @@ -107,7 +109,7 @@ void Blitter_32bppBase::ScrollBuffer(void *video, int &left, int &top, int &widt dst = (uint32 *)video + left + top * _screen.pitch; src = dst - scroll_y * _screen.pitch; - /* Decrese height. (scroll_y is <=0). */ + /* Decrease height. (scroll_y is <=0). */ height += scroll_y; assert(height > 0); diff --git a/src/blitter/32bpp_base.hpp b/src/blitter/32bpp_base.hpp index ca58f0353..26c3dee3f 100644 --- a/src/blitter/32bpp_base.hpp +++ b/src/blitter/32bpp_base.hpp @@ -112,6 +112,19 @@ class Blitter_32bppBase : public Blitter { 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 1c1ac816d..9b7d7115c 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,40 @@ 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_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 +240,11 @@ 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; } } -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 c8cfd91cf..c261aa33d 100644 --- a/src/blitter/32bpp_optimized.hpp +++ b/src/blitter/32bpp_optimized.hpp @@ -24,7 +24,7 @@ class Blitter_32bppOptimized : public Blitter_32bppSimple { }; /* 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 @@ class Blitter_32bppOptimized : public Blitter_32bppSimple { }; /** 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 73487e54c..0ad7418db 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,17 @@ 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_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 +105,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 f09920d0e..0751f6f75 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 000000000..ae2b3ccc5 --- /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 000000000..d6b17f679 --- /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 000000000..723264f03 --- /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 000000000..9c59d253f --- /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 000000000..6b60ba664 --- /dev/null +++ b/src/blitter/32bpp_sse_func.hpp @@ -0,0 +1,455 @@ +/* $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; + } + +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; + } +} +#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 000000000..ac8da1be7 --- /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 000000000..ab6c9eba5 --- /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 000000000..e9cac8ff0 --- /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 39960f8e9..eab6eaa0d 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; @@ -112,7 +114,7 @@ void Blitter_8bppBase::ScrollBuffer(void *video, int &left, int &top, int &width dst = (uint8 *)video + left + top * _screen.pitch; src = dst - scroll_y * _screen.pitch; - /* Decrese height. (scroll_y is <=0). */ + /* Decrease height. (scroll_y is <=0). */ height += scroll_y; assert(height > 0); diff --git a/src/blitter/8bpp_optimized.cpp b/src/blitter/8bpp_optimized.cpp index 77fc36576..bcd8dc282 100644 --- a/src/blitter/8bpp_optimized.cpp +++ b/src/blitter/8bpp_optimized.cpp @@ -15,6 +15,8 @@ #include "../core/math_func.hpp" #include "8bpp_optimized.hpp" +#include "../safeguards.h" + /** Instantiation of the 8bpp optimised blitter factory. */ static FBlitter_8bppOptimized iFBlitter_8bppOptimized; @@ -83,7 +85,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]; @@ -112,7 +115,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 66fbe4091..b5b5324b9 100644 --- a/src/blitter/8bpp_optimized.hpp +++ b/src/blitter/8bpp_optimized.hpp @@ -25,16 +25,15 @@ class Blitter_8bppOptimized FINAL : public Blitter_8bppBase { }; /* 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 f8a808186..d24d8caac 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; @@ -55,10 +58,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 28102fcab..c00c75ac0 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 bb8b9f234..e83df2e71 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 0a761a156..3314eddfe 100644 --- a/src/blitter/base.hpp +++ b/src/blitter/base.hpp @@ -20,6 +20,7 @@ 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. }; /** @@ -77,7 +78,7 @@ class Blitter { /** * 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,12 +119,13 @@ class Blitter { * @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. - * @param video The destionation pointer (video-buffer). + * @param video The destination pointer (video-buffer). * @param src The buffer from which the data will be read. * @param width The width of the buffer. * @param height The height of the buffer. diff --git a/src/blitter/factory.hpp b/src/blitter/factory.hpp index e480459cc..01faca68f 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 @@ class BlitterFactoryBase { 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 @@ class BlitterFactoryBase { * @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 @@ class BlitterFactoryBase { 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 @@ class BlitterFactoryBase { 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 @@ class BlitterFactoryBase { } /** - * 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 470b88354..e968abe13 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 584afd030..a6fed2ebc 100644 --- a/src/blitter/null.hpp +++ b/src/blitter/null.hpp @@ -20,11 +20,11 @@ class Blitter_Null : public Blitter { /* 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) {}; @@ -37,11 +37,10 @@ class Blitter_Null : public Blitter { /* virtual */ int GetBytesPerPixel() { return 0; } }; -/** Factory for the blitter that doesn nothing. */ -class FBlitter_Null: public BlitterFactory { +/** Factory for the blitter that does nothing. */ +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 a93785d4f..1033d89f1 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 89b743070..7abc38563 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), @@ -37,8 +39,8 @@ static const struct NWidgetPart _background_widgets[] = { /** * Window description for the background window to prevent smearing. */ -static const WindowDesc _background_desc( - WDP_MANUAL, 0, 0, +static WindowDesc _background_desc( + WDP_MANUAL, NULL, 0, 0, WC_BOOTSTRAP, WC_NONE, 0, _background_widgets, lengthof(_background_widgets) @@ -47,9 +49,9 @@ static const WindowDesc _background_desc( /** The background for the game. */ class BootstrapBackground : public Window { public: - BootstrapBackground() : Window() + BootstrapBackground() : Window(&_background_desc) { - this->InitNested(&_background_desc, 0); + this->InitNested(0); CLRBITS(this->flags, WF_WHITE_BORDER); ResizeWindow(this, _screen.width, _screen.height); } @@ -70,8 +72,8 @@ static const NWidgetPart _nested_boostrap_download_status_window_widgets[] = { }; /** Window description for the download window */ -static const WindowDesc _bootstrap_download_status_window_desc( - WDP_CENTER, 0, 0, +static WindowDesc _bootstrap_download_status_window_desc( + WDP_CENTER, NULL, 0, 0, WC_NETWORK_STATUS_WINDOW, WC_NONE, WDF_MODAL, _nested_boostrap_download_status_window_widgets, lengthof(_nested_boostrap_download_status_window_widgets) @@ -115,8 +117,8 @@ static const NWidgetPart _bootstrap_query_widgets[] = { }; /** The window description for the query. */ -static const WindowDesc _bootstrap_query_desc( - WDP_CENTER, 0, 0, +static WindowDesc _bootstrap_query_desc( + WDP_CENTER, NULL, 0, 0, WC_CONFIRM_POPUP_QUERY, WC_NONE, 0, _bootstrap_query_widgets, lengthof(_bootstrap_query_widgets) @@ -128,9 +130,9 @@ class BootstrapAskForDownloadWindow : public Window, ContentCallback { public: /** Start listening to the content client events. */ - BootstrapAskForDownloadWindow() : Window() + BootstrapAskForDownloadWindow() : Window(&_bootstrap_query_desc) { - this->InitNested(&_bootstrap_query_desc, WN_CONFIRM_POPUP_QUERY_BOOTSTRAP); + this->InitNested(WN_CONFIRM_POPUP_QUERY_BOOTSTRAP); _network_content_client.AddCallback(this); } @@ -205,7 +207,7 @@ class BootstrapAskForDownloadWindow : public Window, ContentCallback { #endif /* defined(ENABLE_NETWORK) && defined(WITH_FREETYPE) */ /** - * Handle all procedures for bootstrapping OpenTTD without a base grapics set. + * Handle all procedures for bootstrapping OpenTTD without a base graphics set. * This requires all kinds of trickery that is needed to avoid the use of * sprites from the base graphics set which are pretty interwoven. * @return True if a base set exists, otherwise false. @@ -215,10 +217,10 @@ 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(__APPLE__) && (defined(WITH_FONTCONFIG) || defined(WIN32)) +#if defined(ENABLE_NETWORK) && defined(WITH_FREETYPE) && (defined(WITH_FONTCONFIG) || defined(WIN32) || defined(__APPLE__)) if (!_network_available) goto failure; /* First tell the game we're bootstrapping. */ @@ -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 e5480dc37..95c9d7137 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 */ @@ -76,7 +78,6 @@ void CcBuildBridge(const CommandCost &result, TileIndex end_tile, uint32 p1, uin class BuildBridgeWindow : public Window { private: /* Runtime saved values */ - static uint16 last_size; ///< Last size of the bridge GUI window. static Listing last_sorting; ///< Last setting of the sort. /* Constants for sorting the bridges */ @@ -134,17 +135,17 @@ class BuildBridgeWindow : public Window { } public: - BuildBridgeWindow(const WindowDesc *desc, TileIndex start, TileIndex end, uint32 br_type, GUIBridgeList *bl) : Window(), + BuildBridgeWindow(WindowDesc *desc, TileIndex start, TileIndex end, uint32 br_type, GUIBridgeList *bl) : Window(desc), start_tile(start), end_tile(end), type(br_type), bridges(bl) { - this->CreateNestedTree(desc); + this->CreateNestedTree(); this->vscroll = this->GetScrollbar(WID_BBS_SCROLLBAR); /* Change the data, or the caption of the gui. Set it to road or rail, accordingly. */ this->GetWidget(WID_BBS_CAPTION)->widget_data = (GB(this->type, 15, 2) == TRANSPORT_ROAD) ? STR_SELECT_ROAD_BRIDGE_CAPTION : STR_SELECT_RAIL_BRIDGE_CAPTION; - this->FinishInitNested(desc, GB(br_type, 15, 2)); // Initializes 'this->bridgetext_offset'. + this->FinishInitNested(GB(br_type, 15, 2)); // Initializes 'this->bridgetext_offset'. this->parent = FindWindowById(WC_BUILD_TOOLBAR, GB(this->type, 15, 2)); this->bridges->SetListing(this->last_sorting); @@ -153,13 +154,6 @@ class BuildBridgeWindow : public Window { this->SortBridgeList(); this->vscroll->SetCount(bl->Length()); - if (this->last_size < this->vscroll->GetCapacity()) this->last_size = this->vscroll->GetCapacity(); - if (this->last_size > this->vscroll->GetCount()) this->last_size = this->vscroll->GetCount(); - /* Resize the bridge selection window if we used a bigger one the last time. */ - if (this->last_size > this->vscroll->GetCapacity()) { - ResizeWindow(this, 0, (this->last_size - this->vscroll->GetCapacity()) * this->resize.step_height); - } - this->GetWidget(WID_BBS_BRIDGE_LIST)->widget_data = (this->vscroll->GetCapacity() << MAT_ROW_START) + (1 << MAT_COL_START); } ~BuildBridgeWindow() @@ -213,7 +207,7 @@ class BuildBridgeWindow : public Window { } } - virtual Point OnInitialPosition(const WindowDesc *desc, int16 sm_width, int16 sm_height, int window_number) + virtual Point OnInitialPosition(int16 sm_width, int16 sm_height, int window_number) { /* Position the window so hopefully the first bridge from the list is under the mouse pointer. */ NWidgetBase *list = this->GetWidget(WID_BBS_BRIDGE_LIST); @@ -249,7 +243,7 @@ class BuildBridgeWindow : public Window { } } - virtual EventState OnKeyPress(uint16 key, uint16 keycode) + virtual EventState OnKeyPress(WChar key, uint16 keycode) { const uint8 i = keycode - '1'; if (i < 9 && i < this->bridges->Length()) { @@ -297,14 +291,9 @@ class BuildBridgeWindow : public Window { virtual void OnResize() { this->vscroll->SetCapacityFromWidget(this, WID_BBS_BRIDGE_LIST); - this->GetWidget(WID_BBS_BRIDGE_LIST)->widget_data = (this->vscroll->GetCapacity() << MAT_ROW_START) + (1 << MAT_COL_START); - - this->last_size = max(this->vscroll->GetCapacity(), this->last_size); } }; -/** Set the default size of the Build Bridge Window. */ -uint16 BuildBridgeWindow::last_size = 4; /** Set the default sorting for the bridges */ Listing BuildBridgeWindow::last_sorting = {true, 2}; @@ -329,6 +318,7 @@ static const NWidgetPart _nested_build_bridge_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_DARK_GREEN), NWidget(WWT_CAPTION, COLOUR_DARK_GREEN, WID_BBS_CAPTION), SetDataTip(STR_SELECT_RAIL_BRIDGE_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_DEFSIZEBOX, COLOUR_DARK_GREEN), EndContainer(), NWidget(NWID_HORIZONTAL), @@ -339,7 +329,7 @@ static const NWidgetPart _nested_build_bridge_widgets[] = { NWidget(WWT_DROPDOWN, COLOUR_DARK_GREEN, WID_BBS_DROPDOWN_CRITERIA), SetFill(1, 0), SetDataTip(0x0, STR_TOOLTIP_SORT_CRITERIA), EndContainer(), /* Matrix. */ - NWidget(WWT_MATRIX, COLOUR_DARK_GREEN, WID_BBS_BRIDGE_LIST), SetFill(1, 0), SetResize(0, 22), SetDataTip(0x401, STR_SELECT_BRIDGE_SELECTION_TOOLTIP), SetScrollbar(WID_BBS_SCROLLBAR), + NWidget(WWT_MATRIX, COLOUR_DARK_GREEN, WID_BBS_BRIDGE_LIST), SetFill(1, 0), SetResize(0, 22), SetMatrixDataTip(1, 0, STR_SELECT_BRIDGE_SELECTION_TOOLTIP), SetScrollbar(WID_BBS_SCROLLBAR), EndContainer(), /* scrollbar + resize button */ @@ -351,8 +341,8 @@ static const NWidgetPart _nested_build_bridge_widgets[] = { }; /** Window definition for the rail bridge selection window. */ -static const WindowDesc _build_bridge_desc( - WDP_AUTO, 200, 114, +static WindowDesc _build_bridge_desc( + WDP_AUTO, "build_bridge", 200, 114, WC_BUILD_BRIDGE, WC_BUILD_TOOLBAR, WDF_CONSTRUCTION, _nested_build_bridge_widgets, lengthof(_nested_build_bridge_widgets) @@ -381,7 +371,7 @@ void ShowBuildBridgeWindow(TileIndex start, TileIndex end, TransportType transpo /* The bridge length without ramps. */ const uint bridge_len = GetTunnelBridgeLength(start, end); - /* If Ctrl is being pressed, check wether the last bridge built is available + /* If Ctrl is being pressed, check whether the last bridge built is available * If so, return this bridge type. Otherwise continue normally. * We store bridge types for each transport type, so we have to check for * the transport type beforehand. diff --git a/src/bridge_map.cpp b/src/bridge_map.cpp index 6ebf80424..d1e0d6024 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 8c6bf839a..8ee658ce7 100644 --- a/src/bridge_map.h +++ b/src/bridge_map.h @@ -41,7 +41,7 @@ static inline bool IsBridgeTile(TileIndex 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 migh be present + * @return true if a bridge might be present */ static inline bool MayHaveBridgeAbove(TileIndex t) { @@ -161,15 +161,17 @@ static inline void MakeBridgeRamp(TileIndex t, Owner o, BridgeType bridgetype, D * Make a bridge ramp for roads. * @param t the tile to make a bridge ramp * @param o the new owner of the bridge ramp + * @param owner_road the new owner of the road on the bridge + * @param owner_tram the new owner of the tram on the bridge * @param bridgetype the type of bridge this bridge ramp belongs to * @param d the direction this ramp must be facing * @param r the road type of the bridge */ -static inline void MakeRoadBridgeRamp(TileIndex t, Owner o, BridgeType bridgetype, DiagDirection d, RoadTypes r) +static inline void MakeRoadBridgeRamp(TileIndex t, Owner o, Owner owner_road, Owner owner_tram, BridgeType bridgetype, DiagDirection d, RoadTypes r) { MakeBridgeRamp(t, o, bridgetype, d, TRANSPORT_ROAD, 0); - SetRoadOwner(t, ROADTYPE_ROAD, o); - if (o != OWNER_TOWN) SetRoadOwner(t, ROADTYPE_TRAM, o); + SetRoadOwner(t, ROADTYPE_ROAD, owner_road); + if (owner_tram != OWNER_TOWN) SetRoadOwner(t, ROADTYPE_TRAM, owner_tram); SetRoadTypes(t, r); } diff --git a/src/build_vehicle_gui.cpp b/src/build_vehicle_gui.cpp index 8971e4fa8..57e306e88 100644 --- a/src/build_vehicle_gui.cpp +++ b/src/build_vehicle_gui.cpp @@ -13,6 +13,7 @@ #include "engine_base.h" #include "engine_func.h" #include "station_base.h" +#include "network/network.h" #include "articulated_vehicles.h" #include "textbuf_gui.h" #include "command_func.h" @@ -36,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 @@ -51,6 +54,7 @@ static const NWidgetPart _nested_build_vehicle_widgets[] = { NWidget(WWT_CLOSEBOX, COLOUR_GREY), NWidget(WWT_CAPTION, COLOUR_GREY, WID_BV_CAPTION), SetDataTip(STR_WHITE_STRING, 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), @@ -67,7 +71,7 @@ static const NWidgetPart _nested_build_vehicle_widgets[] = { EndContainer(), /* Vehicle list. */ NWidget(NWID_HORIZONTAL), - NWidget(WWT_MATRIX, COLOUR_GREY, WID_BV_LIST), SetResize(1, 1), SetFill(1, 0), SetDataTip(0x101, STR_NULL), SetScrollbar(WID_BV_SCROLLBAR), + NWidget(WWT_MATRIX, COLOUR_GREY, WID_BV_LIST), SetResize(1, 1), SetFill(1, 0), SetMatrixDataTip(1, 0, STR_NULL), SetScrollbar(WID_BV_SCROLLBAR), NWidget(NWID_VSCROLLBAR, COLOUR_GREY, WID_BV_SCROLLBAR), EndContainer(), /* Panel with details. */ @@ -272,7 +276,7 @@ static int CDECL EnginePowerVsRunningCostSorter(const EngineID *a, const EngineI * we will actually calculate cunning cost/power (to make it more than 1). * Because of this, the return value have to be reversed as well and we return b - a instead of a - b. * Another thing is that both power and running costs should be doubled for multiheaded engines. - * Since it would be multipling with 2 in both numerator and denumerator, it will even themselves out and we skip checking for multiheaded. */ + * Since it would be multiplying with 2 in both numerator and denominator, it will even themselves out and we skip checking for multiheaded. */ Money va = (e_a->GetRunningCost()) / max(1U, (uint)e_a->GetPower()); Money vb = (e_b->GetRunningCost()) / max(1U, (uint)e_b->GetPower()); int r = ClampToI32(vb - va); @@ -770,13 +774,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; } @@ -889,7 +894,7 @@ void DrawEngineList(VehicleType type, int l, int r, int y, const GUIEngineList * int count_width = 0; if (show_count) { replace_icon = GetSpriteSize(SPR_GROUP_REPLACE_ACTIVE); - SetDParamMaxDigits(0, 3); + SetDParamMaxDigits(0, 3, FS_SMALL); count_width = GetStringBoundingBox(STR_TINY_BLACK_COMA).width; } @@ -909,7 +914,7 @@ void DrawEngineList(VehicleType type, int l, int r, int y, const GUIEngineList * const uint num_engines = GetGroupNumEngines(_local_company, selected_group, engine); SetDParam(0, engine); - DrawString(text_left, text_right, y + normal_text_y_offset, STR_ENGINE_NAME, engine == selected_id ? TC_WHITE : TC_BLACK, SA_STRIP | (rtl ? SA_RIGHT : SA_LEFT)); + DrawString(text_left, text_right, y + normal_text_y_offset, STR_ENGINE_NAME, engine == selected_id ? TC_WHITE : TC_BLACK); 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); @@ -938,7 +943,7 @@ struct BuildVehicleWindow : Window { int details_height; ///< Minimal needed height of the details panels (found so far). Scrollbar *vscroll; - BuildVehicleWindow(const WindowDesc *desc, TileIndex tile, VehicleType type) : Window() + BuildVehicleWindow(WindowDesc *desc, TileIndex tile, VehicleType type) : Window(desc) { this->vehicle_type = type; this->window_number = tile == INVALID_TILE ? (int)type : tile; @@ -962,14 +967,17 @@ struct BuildVehicleWindow : Window { this->listview_mode = (this->window_number <= VEH_END); - this->CreateNestedTree(desc); + this->CreateNestedTree(); this->vscroll = this->GetScrollbar(WID_BV_SCROLLBAR); /* If we are just viewing the list of vehicles, we do not need the Build button. - * So we just hide it, and enlarge the Rename buton by the now vacant place. */ + * So we just hide it, and enlarge the Rename button by the now vacant place. */ if (this->listview_mode) this->GetWidget(WID_BV_BUILD_SEL)->SetDisplayedPlane(SZSP_NONE); + /* disable renaming engines in network games if you are not the server */ + this->SetWidgetDisabledState(WID_BV_RENAME, _networking && !_network_server); + NWidgetCore *widget = this->GetWidget(WID_BV_LIST); widget->tool_tip = STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP + type; @@ -983,7 +991,7 @@ struct BuildVehicleWindow : Window { this->details_height = ((this->vehicle_type == VEH_TRAIN) ? 10 : 9) * FONT_HEIGHT_NORMAL + WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM; - this->FinishInitNested(desc, tile == INVALID_TILE ? (int)type : tile); + this->FinishInitNested(tile == INVALID_TILE ? (int)type : tile); this->owner = (tile != INVALID_TILE) ? GetTileOwner(tile) : _local_company; @@ -1400,12 +1408,11 @@ struct BuildVehicleWindow : Window { virtual void OnResize() { this->vscroll->SetCapacityFromWidget(this, WID_BV_LIST); - this->GetWidget(WID_BV_LIST)->widget_data = (this->vscroll->GetCapacity() << MAT_ROW_START) + (1 << MAT_COL_START); } }; -static const WindowDesc _build_vehicle_desc( - WDP_AUTO, 240, 268, +static WindowDesc _build_vehicle_desc( + WDP_AUTO, "build_vehicle", 240, 268, WC_BUILD_VEHICLE, WC_NONE, WDF_CONSTRUCTION, _nested_build_vehicle_widgets, lengthof(_nested_build_vehicle_widgets) diff --git a/src/cargoaction.cpp b/src/cargoaction.cpp new file mode 100644 index 000000000..96ddc3708 --- /dev/null +++ b/src/cargoaction.cpp @@ -0,0 +1,240 @@ +/* $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 cargoaction.cpp Implementation of cargo actions. */ + +#include "stdafx.h" +#include "economy_base.h" +#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. + * @return Either new packet if splitting was necessary or the given one + * otherwise. + */ +template +CargoPacket *CargoMovement::Preprocess(CargoPacket *cp) +{ + if (this->max_move < cp->Count()) { + cp = cp->Split(this->max_move); + this->max_move = 0; + } else { + this->max_move -= cp->Count(); + } + return cp; +} + +/** + * Determines the amount of cargo to be removed from a packet and removes that + * from the metadata of the list. + * @param cp Packet to be removed completely or partially. + * @return Amount of cargo to be removed. + */ +template +uint CargoRemoval::Preprocess(CargoPacket *cp) +{ + if (this->max_move >= cp->Count()) { + this->max_move -= cp->Count(); + return cp->Count(); + } else { + uint ret = this->max_move; + this->max_move = 0; + return ret; + } +} + +/** + * Finalize cargo removal. Either delete the packet or reduce it. + * @param cp Packet to be removed or reduced. + * @param remove Amount of cargo to be removed. + * @return True if the packet was deleted, False if it was reduced. + */ +template +bool CargoRemoval::Postprocess(CargoPacket *cp, uint remove) +{ + if (remove == cp->Count()) { + delete cp; + return true; + } else { + cp->Reduce(remove); + return false; + } +} + +/** + * Removes some cargo from a StationCargoList. + * @param cp Packet to be removed. + * @return True if the packet was completely delivered, false if only part of + * it was. + */ +template<> +bool CargoRemoval::operator()(CargoPacket *cp) +{ + uint remove = this->Preprocess(cp); + this->source->RemoveFromCache(cp, remove); + return this->Postprocess(cp, remove); +} + +/** + * Removes some cargo from a VehicleCargoList. + * @param cp Packet to be removed. + * @return True if the packet was completely delivered, false if only part of + * it was. + */ +template<> +bool CargoRemoval::operator()(CargoPacket *cp) +{ + uint remove = this->Preprocess(cp); + this->source->RemoveFromMeta(cp, VehicleCargoList::MTA_KEEP, remove); + return this->Postprocess(cp, remove); +} + +/** + * Delivers some cargo. + * @param cp Packet to be delivered. + * @return True if the packet was completely delivered, false if only part of + * it was. + */ +bool CargoDelivery::operator()(CargoPacket *cp) +{ + uint remove = this->Preprocess(cp); + this->source->RemoveFromMeta(cp, VehicleCargoList::MTA_DELIVER, remove); + this->payment->PayFinalDelivery(cp, remove); + return this->Postprocess(cp, remove); +} + +/** + * Loads some cargo onto a vehicle. + * @param cp Packet to be loaded. + * @return True if the packet was completely loaded, false if part of it was. + */ +bool CargoLoad::operator()(CargoPacket *cp) +{ + CargoPacket *cp_new = this->Preprocess(cp); + if (cp_new == NULL) return false; + cp_new->SetLoadPlace(this->load_place); + this->source->RemoveFromCache(cp_new, cp_new->Count()); + this->destination->Append(cp_new, VehicleCargoList::MTA_KEEP); + return cp_new == cp; +} + +/** + * Reserves some cargo for loading. + * @param cp Packet to be reserved. + * @return True if the packet was completely reserved, false if part of it was. + */ +bool CargoReservation::operator()(CargoPacket *cp) +{ + CargoPacket *cp_new = this->Preprocess(cp); + if (cp_new == NULL) return false; + cp_new->SetLoadPlace(this->load_place); + this->source->reserved_count += cp_new->Count(); + this->source->RemoveFromCache(cp_new, cp_new->Count()); + this->destination->Append(cp_new, VehicleCargoList::MTA_LOAD); + return cp_new == cp; +} + +/** + * Returns some reserved cargo. + * @param cp Packet to be returned. + * @return True if the packet was completely returned, false if part of it was. + */ +bool CargoReturn::operator()(CargoPacket *cp) +{ + CargoPacket *cp_new = this->Preprocess(cp); + if (cp_new == NULL) cp_new = cp; + assert(cp_new->Count() <= this->destination->reserved_count); + this->source->RemoveFromMeta(cp_new, VehicleCargoList::MTA_LOAD, cp_new->Count()); + this->destination->reserved_count -= cp_new->Count(); + this->destination->Append(cp_new, this->next); + return cp_new == cp; +} + +/** + * Transfers some cargo from a vehicle to a station. + * @param cp Packet to be transfered. + * @return True if the packet was completely reserved, false if part of it was. + */ +bool CargoTransfer::operator()(CargoPacket *cp) +{ + CargoPacket *cp_new = this->Preprocess(cp); + if (cp_new == NULL) return false; + this->source->RemoveFromMeta(cp_new, VehicleCargoList::MTA_TRANSFER, cp_new->Count()); + /* No transfer credits here as they were already granted during Stage(). */ + this->destination->Append(cp_new, cp_new->NextStation()); + return cp_new == cp; +} + +/** + * Shifts some cargo from a vehicle to another one. + * @param cp Packet to be shifted. + * @return True if the packet was completely shifted, false if part of it was. + */ +bool CargoShift::operator()(CargoPacket *cp) +{ + CargoPacket *cp_new = this->Preprocess(cp); + if (cp_new == NULL) cp_new = cp; + this->source->RemoveFromMeta(cp_new, VehicleCargoList::MTA_KEEP, cp_new->Count()); + this->destination->Append(cp_new, VehicleCargoList::MTA_KEEP); + return cp_new == cp; +} + +/** + * Reroutes some cargo from one Station sublist to another. + * @param cp Packet to be rerouted. + * @return True if the packet was completely rerouted, false if part of it was. + */ +bool StationCargoReroute::operator()(CargoPacket *cp) +{ + CargoPacket *cp_new = this->Preprocess(cp); + if (cp_new == NULL) cp_new = cp; + StationID next = this->ge->GetVia(cp_new->SourceStation(), this->avoid, this->avoid2); + assert(next != this->avoid && next != this->avoid2); + if (this->source != this->destination) { + this->source->RemoveFromCache(cp_new, cp_new->Count()); + this->destination->AddToCache(cp_new); + } + + /* Legal, as insert doesn't invalidate iterators in the MultiMap, however + * this might insert the packet between range.first and range.second (which might be end()) + * This is why we check for GetKey above to avoid infinite loops. */ + this->destination->packets.Insert(next, cp_new); + return cp_new == cp; +} + +/** + * Reroutes some cargo in a VehicleCargoList. + * @param cp Packet to be rerouted. + * @return True if the packet was completely rerouted, false if part of it was. + */ +bool VehicleCargoReroute::operator()(CargoPacket *cp) +{ + CargoPacket *cp_new = this->Preprocess(cp); + if (cp_new == NULL) cp_new = cp; + if (cp_new->NextStation() == this->avoid || cp_new->NextStation() == this->avoid2) { + cp->SetNextStation(this->ge->GetVia(cp_new->SourceStation(), this->avoid, this->avoid2)); + } + if (this->source != this->destination) { + this->source->RemoveFromMeta(cp_new, 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. */ + this->destination->packets.push_front(cp_new); + return cp_new == cp; +} + +template uint CargoRemoval::Preprocess(CargoPacket *cp); +template uint CargoRemoval::Preprocess(CargoPacket *cp); +template bool CargoRemoval::Postprocess(CargoPacket *cp, uint remove); +template bool CargoRemoval::Postprocess(CargoPacket *cp, uint remove); diff --git a/src/cargoaction.h b/src/cargoaction.h new file mode 100644 index 000000000..0311efcae --- /dev/null +++ b/src/cargoaction.h @@ -0,0 +1,146 @@ +/* $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 cargoaction.h Actions to be applied to cargo packets. */ + +#ifndef CARGOACTION_H +#define CARGOACTION_H + +#include "cargopacket.h" + +/** + * Abstract action of removing cargo from a vehicle or a station. + * @tparam Tsource CargoList subclass to remove cargo from. + */ +template +class CargoRemoval { +protected: + Tsource *source; ///< Source of the cargo. + uint max_move; ///< Maximum amount of cargo to be removed with this action. + uint Preprocess(CargoPacket *cp); + bool Postprocess(CargoPacket *cp, uint remove); +public: + CargoRemoval(Tsource *source, uint max_move) : source(source), max_move(max_move) {} + + /** + * Returns how much more cargo can be removed with this action. + * @return Amount of cargo this action can still remove. + */ + uint MaxMove() { return this->max_move; } + + bool operator()(CargoPacket *cp); +}; + +/** Action of final delivery of cargo. */ +class CargoDelivery : public CargoRemoval { +protected: + CargoPayment *payment; ///< Payment object where payments will be registered. +public: + CargoDelivery(VehicleCargoList *source, uint max_move, CargoPayment *payment) : + CargoRemoval(source, max_move), payment(payment) {} + bool operator()(CargoPacket *cp); +}; + +/** + * Abstract action for moving cargo from one list to another. + * @tparam Tsource CargoList subclass to remove cargo from. + * @tparam Tdest CargoList subclass to add cargo to. + */ +template +class CargoMovement { +protected: + Tsource *source; ///< Source of the cargo. + Tdest *destination; ///< Destination for the cargo. + uint max_move; ///< Maximum amount of cargo to be moved with this action. + CargoPacket *Preprocess(CargoPacket *cp); +public: + CargoMovement(Tsource *source, Tdest *destination, uint max_move) : source(source), destination(destination), max_move(max_move) {} + + /** + * Returns how much more cargo can be moved with this action. + * @return Amount of cargo this action can still move. + */ + uint MaxMove() { return this->max_move; } +}; + +/** Action of transferring cargo from a vehicle to a station. */ +class CargoTransfer : public CargoMovement { +public: + CargoTransfer(VehicleCargoList *source, StationCargoList *destination, uint max_move) : + CargoMovement(source, destination, max_move) {} + bool operator()(CargoPacket *cp); +}; + +/** Action of loading cargo from a station onto a vehicle. */ +class CargoLoad : public CargoMovement { +protected: + TileIndex load_place; ///< TileIndex to be saved in the packets' loaded_at_xy. +public: + CargoLoad(StationCargoList *source, VehicleCargoList *destination, uint max_move, TileIndex load_place) : + CargoMovement(source, destination, max_move), load_place(load_place) {} + bool operator()(CargoPacket *cp); +}; + +/** Action of reserving cargo from a station to be loaded onto a vehicle. */ +class CargoReservation : public CargoLoad { +public: + CargoReservation(StationCargoList *source, VehicleCargoList *destination, uint max_move, TileIndex load_place) : + CargoLoad(source, destination, max_move, load_place) {} + bool operator()(CargoPacket *cp); +}; + +/** Action of returning previously reserved cargo from the vehicle to the station. */ +class CargoReturn : public CargoMovement { + StationID next; +public: + CargoReturn(VehicleCargoList *source, StationCargoList *destination, uint max_move, StationID next) : + CargoMovement(source, destination, max_move), next(next) {} + bool operator()(CargoPacket *cp); +}; + +/** Action of shifting cargo from one vehicle to another. */ +class CargoShift : public CargoMovement { +public: + CargoShift(VehicleCargoList *source, VehicleCargoList *destination, uint max_move) : + CargoMovement(source, destination, max_move) {} + bool operator()(CargoPacket *cp); +}; + +/** Action of rerouting cargo between different cargo lists and/or next hops. */ +template +class CargoReroute : public CargoMovement { +protected: + StationID avoid; + StationID avoid2; + const GoodsEntry *ge; +public: + CargoReroute(Tlist *source, Tlist *dest, uint max_move, StationID avoid, StationID avoid2, const GoodsEntry *ge) : + CargoMovement(source, dest, max_move), avoid(avoid), avoid2(avoid2), ge(ge) {} +}; + +/** Action of rerouting cargo in a station. */ +class StationCargoReroute : public CargoReroute { +public: + StationCargoReroute(StationCargoList *source, StationCargoList *dest, uint max_move, StationID avoid, StationID avoid2, const GoodsEntry *ge) : + CargoReroute(source, dest, max_move, avoid, avoid2, ge) {} + bool operator()(CargoPacket *cp); +}; + +/** Action of rerouting cargo staged for transfer in a vehicle. */ +class VehicleCargoReroute : public CargoReroute { +public: + VehicleCargoReroute(VehicleCargoList *source, VehicleCargoList *dest, uint max_move, StationID avoid, StationID avoid2, const GoodsEntry *ge) : + CargoReroute(source, dest, max_move, avoid, avoid2, ge) + { + assert(this->max_move <= source->ActionCount(VehicleCargoList::MTA_TRANSFER)); + } + bool operator()(CargoPacket *cp); +}; + +#endif /* CARGOACTION_H */ diff --git a/src/cargomonitor.cpp b/src/cargomonitor.cpp index be808fd8e..b1d52d6b1 100644 --- a/src/cargomonitor.cpp +++ b/src/cargomonitor.cpp @@ -13,29 +13,63 @@ #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. -/** Clear all pick-up cargo monitors. */ -void ClearCargoPickupMonitoring() +/** + * 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. + */ +static void ClearCargoMonitoring(CargoMonitorMap &cargo_monitor_map, CompanyID company = INVALID_OWNER) +{ + if (company == INVALID_OWNER) { + cargo_monitor_map.clear(); + return; + } + + CargoMonitorMap::iterator next; + for (CargoMonitorMap::iterator it = cargo_monitor_map.begin(); it != cargo_monitor_map.end(); it = next) { + next = it; + next++; + if (DecodeMonitorCompany(it->first) == company) { + cargo_monitor_map.erase(it); + } + } +} + +/** + * Clear all pick-up cargo monitors. + * @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) { - _cargo_pickups.clear(); + ClearCargoMonitoring(_cargo_pickups, company); } -/** Clear all delivery cargo monitors. */ -void ClearCargoDeliveryMonitoring() +/** + * Clear all delivery cargo monitors. + * @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) { - _cargo_deliveries.clear(); + ClearCargoMonitoring(_cargo_deliveries, company); } /** * Get and reset the amount associated with a cargo monitor. * @param[in,out] monitor_map Monitoring map to search (and reset for the queried entry). - * @oaram monitor Cargo monitor to query/reset. + * @param monitor Cargo monitor to query/reset. * @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()) { @@ -45,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; @@ -58,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); } @@ -70,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 1c7123b77..061a1821a 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; @@ -139,10 +140,10 @@ static inline TownID DecodeMonitorTown(CargoMonitorID num) return GB(num, CCB_TOWN_IND_NUMBER_START, CCB_TOWN_IND_NUMBER_LENGTH); } -void ClearCargoPickupMonitoring(); -void ClearCargoDeliveryMonitoring(); -uint32 GetDeliveryAmount(CargoMonitorID monitor, bool keep_monitoring); -uint32 GetPickupAmount(CargoMonitorID monitor, bool keep_monitoring); +void ClearCargoPickupMonitoring(CompanyID company = INVALID_OWNER); +void ClearCargoDeliveryMonitoring(CompanyID company = INVALID_OWNER); +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 0b92de0c8..9b96be62e 100644 --- a/src/cargopacket.cpp +++ b/src/cargopacket.cpp @@ -10,8 +10,14 @@ /** @file cargopacket.cpp Implementation of the cargo packets. */ #include "stdafx.h" +#include "station_base.h" #include "core/pool_func.hpp" +#include "core/random_func.hpp" #include "economy_base.h" +#include "cargoaction.h" +#include "order_type.h" + +#include "safeguards.h" /* Initialize the cargopacket-pool */ CargoPacketPool _cargopacket_pool("CargoPacket"); @@ -79,14 +85,14 @@ CargoPacket::CargoPacket(uint16 count, byte days_in_transit, StationID source, T /** * Split this packet in two and return the split off part. - * @param new_size Size of the remaining part. + * @param new_size Size of the split part. * @return Split off part, or NULL if no packet could be allocated! */ -inline CargoPacket *CargoPacket::Split(uint new_size) +CargoPacket *CargoPacket::Split(uint new_size) { if (!CargoPacket::CanAllocateItem()) return NULL; - Money fs = this->feeder_share * new_size / static_cast(this->count); + Money fs = this->FeederShare(new_size); CargoPacket *cp_new = new CargoPacket(new_size, this->days_in_transit, this->source, this->source_xy, this->loaded_at_xy, fs, this->source_type, this->source_id); this->feeder_share -= fs; this->count -= new_size; @@ -97,13 +103,24 @@ inline CargoPacket *CargoPacket::Split(uint new_size) * Merge another packet into this one. * @param cp Packet to be merged in. */ -inline void CargoPacket::Merge(CargoPacket *cp) +void CargoPacket::Merge(CargoPacket *cp) { this->count += cp->count; this->feeder_share += cp->feeder_share; delete cp; } +/** + * Reduce the packet by the given amount and remove the feeder share. + * @param count Amount to be removed. + */ +void CargoPacket::Reduce(uint count) +{ + assert(count < this->count); + this->feeder_share -= this->FeederShare(count); + this->count -= count; +} + /** * Invalidates (sets source_id to INVALID_SOURCE) all cargo packets from given source. * @param src_type Type of source. @@ -138,8 +155,8 @@ inline void CargoPacket::Merge(CargoPacket *cp) /** * Destroy the cargolist ("frees" all cargo packets). */ -template -CargoList::~CargoList() +template +CargoList::~CargoList() { for (Iterator it(this->packets.begin()); it != this->packets.end(); ++it) { delete *it; @@ -150,22 +167,24 @@ CargoList::~CargoList() * Empty the cargo list, but don't free the cargo packets; * the cargo packets are cleaned by CargoPacket's CleanPool. */ -template -void CargoList::OnCleanPool() +template +void CargoList::OnCleanPool() { this->packets.clear(); } /** - * Update the cached values to reflect the removal of this packet. + * Update the cached values to reflect the removal of this packet or part of it. * Decreases count and days_in_transit. * @param cp Packet to be removed from cache. + * @param count Amount of cargo from the given packet to be removed. */ -template -void CargoList::RemoveFromCache(const CargoPacket *cp) +template +void CargoList::RemoveFromCache(const CargoPacket *cp, uint count) { - this->count -= cp->count; - this->cargo_days_in_transit -= cp->days_in_transit * cp->count; + assert(count <= cp->count); + this->count -= count; + this->cargo_days_in_transit -= cp->days_in_transit * count; } /** @@ -173,194 +192,152 @@ void CargoList::RemoveFromCache(const CargoPacket *cp) * Increases count and days_in_transit. * @param cp New packet to be inserted. */ -template -void CargoList::AddToCache(const CargoPacket *cp) +template +void CargoList::AddToCache(const CargoPacket *cp) { this->count += cp->count; this->cargo_days_in_transit += cp->days_in_transit * cp->count; } +/** Invalidates the cached data and rebuilds it. */ +template +void CargoList::InvalidateCache() +{ + this->count = 0; + this->cargo_days_in_transit = 0; + + for (ConstIterator it(this->packets.begin()); it != this->packets.end(); it++) { + static_cast(this)->AddToCache(*it); + } +} + +/** + * Tries to merge the second packet into the first and return if that was + * successful. + * @param icp Packet to be merged into. + * @param cp Packet to be eliminated. + * @return If the packets could be merged. + */ +template +/* static */ bool CargoList::TryMerge(CargoPacket *icp, CargoPacket *cp) +{ + if (Tinst::AreMergable(icp, cp) && + icp->count + cp->count <= CargoPacket::MAX_COUNT) { + icp->Merge(cp); + return true; + } else { + return false; + } +} + +/* + * + * Vehicle cargo list implementation. + * + */ + /** * Appends the given cargo packet. Tries to merge it with another one in the - * packets list. If no fitting packet is found, appends it. + * packets list. If no fitting packet is found, appends it. You can only append + * packets to the ranges of packets designated for keeping or loading. + * Furthermore if there are already packets reserved for loading you cannot + * directly add packets to the "keep" list. You first have to load the reserved + * ones. * @warning After appending this packet may not exist anymore! * @note Do not use the cargo packet anymore after it has been appended to this CargoList! * @param cp Cargo packet to add. + * @param action Either MTA_KEEP if you want to add the packet directly or MTA_LOAD + * if you want to reserve it first. * @pre cp != NULL + * @pre action == MTA_LOAD || (action == MTA_KEEP && this->designation_counts[MTA_LOAD] == 0) */ -template -void CargoList::Append(CargoPacket *cp) +void VehicleCargoList::Append(CargoPacket *cp, MoveToAction action) { assert(cp != NULL); - static_cast(this)->AddToCache(cp); + assert(action == MTA_LOAD || + (action == MTA_KEEP && this->action_counts[MTA_LOAD] == 0)); + this->AddToMeta(cp, action); + + if (this->count == cp->count) { + this->packets.push_back(cp); + return; + } - for (List::reverse_iterator it(this->packets.rbegin()); it != this->packets.rend(); it++) { + uint sum = cp->count; + for (ReverseIterator it(this->packets.rbegin()); it != this->packets.rend(); it++) { CargoPacket *icp = *it; - if (Tinst::AreMergable(icp, cp) && icp->count + cp->count <= CargoPacket::MAX_COUNT) { - icp->Merge(cp); + if (VehicleCargoList::TryMerge(icp, cp)) return; + sum += icp->count; + if (sum >= this->action_counts[action]) { + this->packets.push_back(cp); return; } } - /* The packet could not be merged with another one */ - this->packets.push_back(cp); + NOT_REACHED(); } /** - * Truncates the cargo in this list to the given amount. It leaves the - * first count cargo entities and removes the rest. - * @param max_remaining Maximum amount of entities to be in the list after the command. + * Shifts cargo from the front of the packet list and applies some action to it. + * @tparam Taction Action class or function to be used. It should define + * "bool operator()(CargoPacket *)". If true is returned the + * cargo packet will be removed from the list. Otherwise it + * will be kept and the loop will be aborted. + * @param action Action instance to be applied. */ -template -void CargoList::Truncate(uint max_remaining) +template +void VehicleCargoList::ShiftCargo(Taction action) { - for (Iterator it(packets.begin()); it != packets.end(); /* done during loop*/) { + Iterator it(this->packets.begin()); + while (it != this->packets.end() && action.MaxMove() > 0) { CargoPacket *cp = *it; - if (max_remaining == 0) { - /* Nothing should remain, just remove the packets. */ + if (action(cp)) { it = this->packets.erase(it); - static_cast(this)->RemoveFromCache(cp); - delete cp; - continue; - } - - uint local_count = cp->count; - if (local_count > max_remaining) { - uint diff = local_count - max_remaining; - this->count -= diff; - this->cargo_days_in_transit -= cp->days_in_transit * diff; - cp->count = max_remaining; - max_remaining = 0; } else { - max_remaining -= local_count; + break; } - ++it; } } /** - * Moves the given amount of cargo to another list. - * Depending on the value of mta the side effects of this function differ: - * - MTA_FINAL_DELIVERY: Destroys the packets that do not originate from a specific station. - * - MTA_CARGO_LOAD: Sets the loaded_at_xy value of the moved packets. - * - MTA_TRANSFER: Just move without side effects. - * - MTA_UNLOAD: Just move without side effects. - * @param dest Destination to move the cargo to. - * @param max_move Amount of cargo entities to move. - * @param mta How to handle the moving (side effects). - * @param data Depending on mta the data of this variable differs: - * - MTA_FINAL_DELIVERY - Station ID of packet's origin not to remove. - * - MTA_CARGO_LOAD - Station's tile index of load. - * - MTA_TRANSFER - Unused. - * - MTA_UNLOAD - Unused. - * @param payment The payment helper. - * - * @pre mta == MTA_FINAL_DELIVERY || dest != NULL - * @pre mta == MTA_UNLOAD || mta == MTA_CARGO_LOAD || payment != NULL - * @return True if there are still packets that might be moved from this cargo list. + * Pops cargo from the back of the packet list and applies some action to it. + * @tparam Taction Action class or function to be used. It should define + * "bool operator()(CargoPacket *)". If true is returned the + * cargo packet will be removed from the list. Otherwise it + * will be kept and the loop will be aborted. + * @param action Action instance to be applied. */ -template -template -bool CargoList::MoveTo(Tother_inst *dest, uint max_move, MoveToAction mta, CargoPayment *payment, uint data) +template +void VehicleCargoList::PopCargo(Taction action) { - assert(mta == MTA_FINAL_DELIVERY || dest != NULL); - assert(mta == MTA_UNLOAD || mta == MTA_CARGO_LOAD || payment != NULL); - - Iterator it(this->packets.begin()); - while (it != this->packets.end() && max_move > 0) { + if (this->packets.empty()) return; + Iterator it(--(this->packets.end())); + Iterator begin(this->packets.begin()); + while (action.MaxMove() > 0) { CargoPacket *cp = *it; - if (cp->source == data && mta == MTA_FINAL_DELIVERY) { - /* Skip cargo that originated from this station. */ - ++it; - continue; - } - - if (cp->count <= max_move) { - /* Can move the complete packet */ - max_move -= cp->count; - it = this->packets.erase(it); - static_cast(this)->RemoveFromCache(cp); - switch (mta) { - case MTA_FINAL_DELIVERY: - payment->PayFinalDelivery(cp, cp->count); - delete cp; - continue; // of the loop - - case MTA_CARGO_LOAD: - cp->loaded_at_xy = data; - break; - - case MTA_TRANSFER: - cp->feeder_share += payment->PayTransfer(cp, cp->count); - break; - - case MTA_UNLOAD: - break; + if (action(cp)) { + if (it != begin) { + this->packets.erase(it--); + } else { + this->packets.erase(it); + break; } - dest->Append(cp); - continue; - } - - /* Can move only part of the packet */ - if (mta == MTA_FINAL_DELIVERY) { - /* Final delivery doesn't need package splitting. */ - payment->PayFinalDelivery(cp, max_move); - - /* Remove the delivered data from the cache */ - uint left = cp->count - max_move; - cp->count = max_move; - static_cast(this)->RemoveFromCache(cp); - - /* Final delivery payment pays the feeder share, so we have to - * reset that so it is not 'shown' twice for partial unloads. */ - cp->feeder_share = 0; - cp->count = left; } else { - /* But... the rest needs package splitting. */ - CargoPacket *cp_new = cp->Split(max_move); - - /* We could not allocate a CargoPacket? Is the map that full? */ - if (cp_new == NULL) return false; - - static_cast(this)->RemoveFromCache(cp_new); // this reflects the changes in cp. - - if (mta == MTA_TRANSFER) { - /* Add the feeder share before inserting in dest. */ - cp_new->feeder_share += payment->PayTransfer(cp_new, max_move); - } else if (mta == MTA_CARGO_LOAD) { - cp_new->loaded_at_xy = data; - } - - dest->Append(cp_new); + break; } - - max_move = 0; - } - - return it != packets.end(); -} - -/** Invalidates the cached data and rebuilds it. */ -template -void CargoList::InvalidateCache() -{ - this->count = 0; - this->cargo_days_in_transit = 0; - - for (ConstIterator it(this->packets.begin()); it != this->packets.end(); it++) { - static_cast(this)->AddToCache(*it); } } /** - * Update the cached values to reflect the removal of this packet. + * Update the cached values to reflect the removal of this packet or part of it. * Decreases count, feeder share and days_in_transit. * @param cp Packet to be removed from cache. + * @param count Amount of cargo from the given packet to be removed. */ -void VehicleCargoList::RemoveFromCache(const CargoPacket *cp) +void VehicleCargoList::RemoveFromCache(const CargoPacket *cp, uint count) { - this->feeder_share -= cp->feeder_share; - this->Parent::RemoveFromCache(cp); + this->feeder_share -= cp->FeederShare(count); + this->Parent::RemoveFromCache(cp, count); } /** @@ -374,6 +351,34 @@ void VehicleCargoList::AddToCache(const CargoPacket *cp) this->Parent::AddToCache(cp); } +/** + * Removes a packet or part of it from the metadata. + * @param cp Packet to be removed. + * @param action MoveToAction of the packet (for updating the counts). + * @param count Amount of cargo to be removed. + */ +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; + this->AssertCountConsistency(); +} + +/** + * Adds a packet to the metadata. + * @param cp Packet to be added. + * @param action MoveToAction of the packet. + */ +void VehicleCargoList::AddToMeta(const CargoPacket *cp, MoveToAction action) +{ + this->AssertCountConsistency(); + this->AddToCache(cp); + this->action_counts[action] += cp->count; + this->AssertCountConsistency(); +} + /** * Ages the all cargo in this list. */ @@ -389,6 +394,150 @@ void VehicleCargoList::AgeCargo() } } +/** + * Sets loaded_at_xy to the current station for all cargo to be transfered. + * This is done when stopping or skipping while the vehicle is unloading. In + * that case the vehicle will get part of its transfer credits early and it may + * get more transfer credits than it's entitled to. + * @param xy New loaded_at_xy for the cargo. + */ +void VehicleCargoList::SetTransferLoadPlace(TileIndex xy) +{ + uint sum = 0; + for (Iterator it = this->packets.begin(); sum < this->action_counts[MTA_TRANSFER]; ++it) { + CargoPacket *cp = *it; + cp->loaded_at_xy = xy; + sum += cp->count; + } +} + +/** + * 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 + * same time the designation_counts are updated to reflect the size of those + * chunks. + * @param accepted If the cargo will be accepted at the station. + * @param current_station ID of the station. + * @param next_station ID of the station the vehicle will go to next. + * @param order_flags OrderUnloadFlags that will apply to the unload operation. + * @param ge GoodsEntry for getting the flows. + * @param payment Payment object for registering transfers. + * return If any cargo will be unloaded. + */ +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); + this->action_counts[MTA_TRANSFER] = this->action_counts[MTA_DELIVER] = this->action_counts[MTA_KEEP] = 0; + Iterator deliver = this->packets.end(); + Iterator it = this->packets.begin(); + uint sum = 0; + + bool force_keep = (order_flags & OUFB_NO_UNLOAD) != 0; + bool force_unload = (order_flags & OUFB_UNLOAD) != 0; + bool force_transfer = (order_flags & (OUFB_TRANSFER | OUFB_UNLOAD)) != 0; + assert(this->count > 0 || it == this->packets.end()); + while (sum < this->count) { + CargoPacket *cp = *it; + + this->packets.erase(it++); + StationID cargo_next = INVALID_STATION; + MoveToAction action = MTA_LOAD; + if (force_keep) { + action = MTA_KEEP; + } else if (force_unload && accepted && cp->source != current_station) { + action = MTA_DELIVER; + } else if (force_transfer) { + action = MTA_TRANSFER; + /* 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; + } + bool restricted = false; + FlowStatMap::const_iterator flow_it(ge->flows.find(cp->source)); + if (flow_it == ge->flows.end()) { + cargo_next = INVALID_STATION; + } else { + 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; + switch (action) { + case MTA_KEEP: + this->packets.push_back(cp); + if (deliver == this->packets.end()) --deliver; + break; + case MTA_DELIVER: + this->packets.insert(deliver, cp); + break; + case MTA_TRANSFER: + this->packets.push_front(cp); + /* Add feeder share here to allow reusing field for next station. */ + share = payment->PayTransfer(cp, cp->count); + cp->AddFeederShare(share); + this->feeder_share += share; + cp->next_station = cargo_next; + break; + default: + NOT_REACHED(); + } + this->action_counts[action] += cp->count; + sum += cp->count; + } + this->AssertCountConsistency(); + return this->action_counts[MTA_DELIVER] > 0 || this->action_counts[MTA_TRANSFER] > 0; +} + /** Invalidates the cached data and rebuild it. */ void VehicleCargoList::InvalidateCache() { @@ -396,15 +545,330 @@ void VehicleCargoList::InvalidateCache() this->Parent::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), 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. + */ +template<> +uint VehicleCargoList::Reassign(uint max_move, TileOrStationID next_station) +{ + 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; +} + +/** + * Returns reserved cargo to the station and removes it from the cache. + * @param max_move Maximum amount of cargo to move. + * @param dest Station the cargo is returned to. + * @param ID of next the station the cargo wants to go next. + * @return Amount of cargo actually returned. + */ +uint VehicleCargoList::Return(uint max_move, StationCargoList *dest, StationID next) +{ + max_move = min(this->action_counts[MTA_LOAD], max_move); + this->PopCargo(CargoReturn(this, dest, max_move, next)); + return max_move; +} + +/** + * Shifts cargo between two vehicles. + * @param dest Other vehicle's cargo list. + * @param max_move Maximum amount of cargo to be moved. + * @return Amount of cargo actually moved. + */ +uint VehicleCargoList::Shift(uint max_move, VehicleCargoList *dest) +{ + max_move = min(this->count, max_move); + this->PopCargo(CargoShift(this, dest, max_move)); + return max_move; +} + +/** + * Unloads cargo at the given station. Deliver or transfer, depending on the + * ranges defined by designation_counts. + * @param dest StationCargoList to add transferred cargo to. + * @param max_move Maximum amount of cargo to move. + * @param payment Payment object to register payments in. + * @return Amount of cargo actually unloaded. + */ +uint VehicleCargoList::Unload(uint max_move, StationCargoList *dest, CargoPayment *payment) +{ + uint moved = 0; + if (this->action_counts[MTA_TRANSFER] > 0) { + uint move = min(this->action_counts[MTA_TRANSFER], max_move); + this->ShiftCargo(CargoTransfer(this, dest, move)); + moved += move; + } + if (this->action_counts[MTA_TRANSFER] == 0 && this->action_counts[MTA_DELIVER] > 0 && moved < max_move) { + uint move = min(this->action_counts[MTA_DELIVER], max_move - moved); + this->ShiftCargo(CargoDelivery(this, move, payment)); + moved += move; + } + return moved; +} + +/** + * Truncates the cargo in this list to the given amount. It leaves the + * first cargo entities and removes max_move from the back of the list. + * @param max_move Maximum amount of entities to be removed from the list. + * @return Amount of entities actually moved. + */ +uint VehicleCargoList::Truncate(uint max_move) +{ + max_move = min(this->count, max_move); + this->PopCargo(CargoRemoval(this, max_move)); + return max_move; +} + +/** + * Routes packets with station "avoid" as next hop to a different place. + * @param max_move Maximum amount of cargo to move. + * @param dest List to prepend the cargo to. + * @param avoid Station to exclude from routing and current next hop of packets to reroute. + * @param avoid2 Additional station to exclude from routing. + * @oaram ge GoodsEntry to get the routing info from. + */ +uint VehicleCargoList::Reroute(uint max_move, VehicleCargoList *dest, StationID avoid, StationID avoid2, const GoodsEntry *ge) +{ + max_move = min(this->action_counts[MTA_TRANSFER], max_move); + this->ShiftCargo(VehicleCargoReroute(this, dest, max_move, avoid, avoid2, ge)); + return max_move; +} + /* - * We have to instantiate everything we want to be usable. + * + * Station cargo list implementation. + * + */ + +/** + * Appends the given cargo packet to the range of packets with the same next station + * @warning After appending this packet may not exist anymore! + * @note Do not use the cargo packet anymore after it has been appended to this CargoList! + * @param next the next hop + * @param cp the cargo packet to add + * @pre cp != NULL + */ +void StationCargoList::Append(CargoPacket *cp, StationID next) +{ + assert(cp != NULL); + this->AddToCache(cp); + + StationCargoPacketMap::List &list = this->packets[next]; + for (StationCargoPacketMap::List::reverse_iterator it(list.rbegin()); + it != list.rend(); it++) { + if (StationCargoList::TryMerge(*it, cp)) return; + } + + /* The packet could not be merged with another one */ + list.push_back(cp); +} + +/** + * Shifts cargo from the front of the packet list for a specific station and + * applies some action to it. + * @tparam Taction Action class or function to be used. It should define + * "bool operator()(CargoPacket *)". If true is returned the + * cargo packet will be removed from the list. Otherwise it + * will be kept and the loop will be aborted. + * @param action Action instance to be applied. + * @param next Next hop the cargo wants to visit. + * @return True if all packets with the given next hop have been removed, + * False otherwise. + */ +template +bool StationCargoList::ShiftCargo(Taction &action, StationID next) +{ + std::pair range(this->packets.equal_range(next)); + for (Iterator it(range.first); it != range.second && it.GetKey() == next;) { + if (action.MaxMove() == 0) return false; + CargoPacket *cp = *it; + if (action(cp)) { + it = this->packets.erase(it); + } else { + return false; + } + } + return true; +} + +/** + * Shifts cargo from the front of the packet list for a specific station and + * and optional also from the list for "any station", then applies some action + * to it. + * @tparam Taction Action class or function to be used. It should define + * "bool operator()(CargoPacket *)". If true is returned the + * cargo packet will be removed from the list. Otherwise it + * will be kept and the loop will be aborted. + * @param action Action instance to be applied. + * @param next Next hop the cargo wants to visit. + * @param include_invalid If cargo from the INVALID_STATION list should be + * used if necessary. + * @return Amount of cargo actually moved. + */ +template +uint StationCargoList::ShiftCargo(Taction action, StationIDStack next, bool include_invalid) +{ + uint max_move = action.MaxMove(); + 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(); +} + +/** + * Truncates where each destination loses roughly the same percentage of its + * cargo. This is done by randomizing the selection of packets to be removed. + * Optionally count the cargo by origin station. + * @param max_move Maximum amount of cargo to remove. + * @param cargo_per_source Container for counting the cargo by origin. + * @return Amount of cargo actually moved. */ -template class CargoList; -template class CargoList; +uint StationCargoList::Truncate(uint max_move, StationCargoAmountMap *cargo_per_source) +{ + max_move = min(max_move, this->count); + uint prev_count = this->count; + uint moved = 0; + uint loop = 0; + bool do_count = cargo_per_source != NULL; + while (max_move > moved) { + for (Iterator it(this->packets.begin()); it != this->packets.end();) { + CargoPacket *cp = *it; + if (prev_count > max_move && RandomRange(prev_count) < prev_count - max_move) { + if (do_count && loop == 0) { + (*cargo_per_source)[cp->source] += cp->count; + } + ++it; + continue; + } + uint diff = max_move - moved; + if (cp->count > diff) { + if (diff > 0) { + this->RemoveFromCache(cp, diff); + cp->Reduce(diff); + moved += diff; + } + if (loop > 0) { + if (do_count) (*cargo_per_source)[cp->source] -= diff; + return moved; + } else { + if (do_count) (*cargo_per_source)[cp->source] += cp->count; + ++it; + } + } else { + it = this->packets.erase(it); + if (do_count && loop > 0) { + (*cargo_per_source)[cp->source] -= cp->count; + } + moved += cp->count; + this->RemoveFromCache(cp, cp->count); + delete cp; + } + } + loop++; + } + return moved; +} -/** Autoreplace Vehicle -> Vehicle 'transfer'. */ -template bool CargoList::MoveTo(VehicleCargoList *, uint max_move, MoveToAction mta, CargoPayment *payment, uint data); -/** Cargo unloading at a station. */ -template bool CargoList::MoveTo(StationCargoList *, uint max_move, MoveToAction mta, CargoPayment *payment, uint data); -/** Cargo loading at a station. */ -template bool CargoList::MoveTo(VehicleCargoList *, uint max_move, MoveToAction mta, CargoPayment *payment, uint data); +/** + * Reserves cargo for loading onto the vehicle. + * @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(s) the loading vehicle will visit. + * @return Amount of cargo actually reserved. + */ +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); +} + +/** + * Loads cargo onto a vehicle. If the vehicle has reserved cargo load that. + * Otherwise load cargo from the station. + * @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(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, StationIDStack next_station) +{ + uint move = min(dest->ActionCount(VehicleCargoList::MTA_LOAD), max_move); + if (move > 0) { + this->reserved_count -= move; + dest->Reassign(move); + return move; + } else { + return this->ShiftCargo(CargoLoad(this, dest, max_move, load_place), next_station, true); + } +} + +/** + * Routes packets with station "avoid" as next hop to a different place. + * @param max_move Maximum amount of cargo to move. + * @param dest List to append the cargo to. + * @param avoid Station to exclude from routing and current next hop of packets to reroute. + * @param avoid2 Additional station to exclude from routing. + * @oaram ge GoodsEntry to get the routing info from. + */ +uint StationCargoList::Reroute(uint max_move, StationCargoList *dest, StationID avoid, StationID avoid2, const GoodsEntry *ge) +{ + return this->ShiftCargo(StationCargoReroute(this, dest, max_move, avoid, avoid2, ge), avoid, false); +} + +/* + * We have to instantiate everything we want to be usable. + */ +template class CargoList; +template class CargoList; +template uint VehicleCargoList::Reassign(uint, TileOrStationID); diff --git a/src/cargopacket.h b/src/cargopacket.h index 7964ea76a..0ed4fd9bb 100644 --- a/src/cargopacket.h +++ b/src/cargopacket.h @@ -15,8 +15,10 @@ #include "core/pool_type.hpp" #include "economy_type.h" #include "station_type.h" +#include "order_type.h" #include "cargo_type.h" #include "vehicle_type.h" +#include "core/multimap.hpp" #include /** Unique identifier for a single cargo packet. */ @@ -28,9 +30,14 @@ typedef Pool /** The actual pool with cargo packets. */ extern CargoPacketPool _cargopacket_pool; -template class CargoList; +struct GoodsEntry; // forward-declare for Stage() and RerouteStalePackets() + +template class CargoList; +class StationCargoList; // forward-declare, so we can use it in VehicleCargoList. extern const struct SaveLoad *GetCargoPacketDesc(); +typedef uint32 TileOrStationID; + /** * Container for cargo from the same location and time. */ @@ -43,10 +50,13 @@ struct CargoPacket : CargoPacketPool::PoolItem<&_cargopacket_pool> { SourceID source_id; ///< Index of source, INVALID_SOURCE if unknown/invalid. StationID source; ///< The station where the cargo came from first. TileIndex source_xy; ///< The origin of the cargo (first station in feeder chain). - TileIndex loaded_at_xy; ///< Location where this cargo has been loaded into the vehicle. + union { + TileOrStationID loaded_at_xy; ///< Location where this cargo has been loaded into the vehicle. + TileOrStationID next_station; ///< Station where the cargo wants to go next. + }; /** The CargoList caches, thus needs to know about it. */ - template friend class CargoList; + template friend class CargoList; friend class VehicleCargoList; friend class StationCargoList; /** We want this to be saved, right? */ @@ -64,6 +74,25 @@ struct CargoPacket : CargoPacketPool::PoolItem<&_cargopacket_pool> { CargoPacket *Split(uint new_size); void Merge(CargoPacket *cp); + void Reduce(uint count); + + /** + * Sets the tile where the packet was loaded last. + * @param load_place Tile where the packet was loaded last. + */ + void SetLoadPlace(TileIndex load_place) { this->loaded_at_xy = load_place; } + + /** + * Sets the station where the packet is supposed to go next. + * @param next_station Next station the packet should go to. + */ + void SetNextStation(StationID next_station) { this->next_station = next_station; } + + /** + * Adds some feeder share to the packet. + * @param new_share Feeder share to be added. + */ + void AddFeederShare(Money new_share) { this->feeder_share += new_share; } /** * Gets the number of 'items' in this packet. @@ -84,6 +113,17 @@ struct CargoPacket : CargoPacketPool::PoolItem<&_cargopacket_pool> { return this->feeder_share; } + /** + * Gets part of the amount of money already paid to earlier vehicles in + * the feeder chain. + * @param part Amount of cargo to get the share for. + * @return Feeder share for the given amount of cargo. + */ + inline Money FeederShare(uint part) const + { + return this->feeder_share * part / static_cast(this->count); + } + /** * Gets the number of days this cargo has been in transit. * This number isn't really in days, but in 2.5 days (CARGO_AGING_TICKS = 185 ticks) and @@ -117,7 +157,7 @@ struct CargoPacket : CargoPacketPool::PoolItem<&_cargopacket_pool> { * 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; } @@ -140,6 +180,14 @@ struct CargoPacket : CargoPacketPool::PoolItem<&_cargopacket_pool> { return this->loaded_at_xy; } + /** + * Gets the ID of station the cargo wants to go next. + * @return Next station for this packets. + */ + inline StationID NextStation() const + { + return this->next_station; + } static void InvalidateAllFrom(SourceType src_type, SourceID src); static void InvalidateAllFrom(StationID sid); @@ -161,35 +209,42 @@ struct CargoPacket : CargoPacketPool::PoolItem<&_cargopacket_pool> { /** * Simple collection class for a list of cargo packets. - * @tparam Tinst Actual instantation of this cargo list. + * @tparam Tinst Actual instantiation of this cargo list. */ -template +template class CargoList { public: - /** Container with cargo packets. */ - typedef std::list List; /** The iterator for our container. */ - typedef List::iterator Iterator; + typedef typename Tcont::iterator Iterator; + /** The reverse iterator for our container. */ + typedef typename Tcont::reverse_iterator ReverseIterator; /** The const iterator for our container. */ - typedef List::const_iterator ConstIterator; + typedef typename Tcont::const_iterator ConstIterator; + /** The const reverse iterator for our container. */ + typedef typename Tcont::const_reverse_iterator ConstReverseIterator; /** Kind of actions that could be done with packets on move. */ enum MoveToAction { - MTA_FINAL_DELIVERY, ///< "Deliver" the packet to the final destination, i.e. destroy the packet. - MTA_CARGO_LOAD, ///< Load the packet onto a vehicle, i.e. set the last loaded station ID. - MTA_TRANSFER, ///< The cargo is moved as part of a transfer. - MTA_UNLOAD, ///< The cargo is moved as part of a forced unload. + MTA_BEGIN = 0, + MTA_TRANSFER = 0, ///< Transfer the cargo to the station. + MTA_DELIVER, ///< Deliver the cargo to some town or industry. + MTA_KEEP, ///< Keep the cargo in the vehicle. + MTA_LOAD, ///< Load the cargo from the station. + MTA_END, + NUM_MOVE_TO_ACTION = MTA_END }; protected: uint count; ///< Cache for the number of cargo entities. uint cargo_days_in_transit; ///< Cache for the sum of number of days in transit of each entity; comparable to man-hours. - List packets; ///< The cargo packets in this list. + Tcont packets; ///< The cargo packets in this list. void AddToCache(const CargoPacket *cp); - void RemoveFromCache(const CargoPacket *cp); + void RemoveFromCache(const CargoPacket *cp, uint count); + + static bool TryMerge(CargoPacket *cp, CargoPacket *icp); public: /** Create the cargo list. */ @@ -203,38 +258,11 @@ class CargoList { * Returns a pointer to the cargo packet list (so you can iterate over it etc). * @return Pointer to the packet list. */ - inline const List *Packets() const + inline const Tcont *Packets() const { return &this->packets; } - /** - * Checks whether this list is empty. - * @return True if and only if the list is empty. - */ - inline bool Empty() const - { - return this->count == 0; - } - - /** - * Returns the number of cargo entities in this list. - * @return The before mentioned number. - */ - inline uint Count() const - { - return this->count; - } - - /** - * Returns source of the first cargo packet in this list. - * @return The before mentioned source. - */ - inline StationID Source() const - { - return this->Empty() ? INVALID_STATION : this->packets.front()->source; - } - /** * Returns average number of days in transit for a cargo entity. * @return The before mentioned number. @@ -244,35 +272,73 @@ class CargoList { return this->count == 0 ? 0 : this->cargo_days_in_transit / this->count; } - - void Append(CargoPacket *cp); - void Truncate(uint max_remaining); - - template - bool MoveTo(Tother_inst *dest, uint count, MoveToAction mta, CargoPayment *payment, uint data = 0); - void InvalidateCache(); }; +typedef std::list CargoPacketList; + /** * CargoList that is used for vehicles. */ -class VehicleCargoList : public CargoList { +class VehicleCargoList : public CargoList { protected: /** The (direct) parent of this class. */ - typedef CargoList Parent; + typedef CargoList Parent; + + Money feeder_share; ///< Cache for the feeder share. + uint action_counts[NUM_MOVE_TO_ACTION]; ///< Counts of cargo to be transfered, delivered, kept and loaded. - Money feeder_share; ///< Cache for the feeder share. + template + void ShiftCargo(Taction action); + + template + void PopCargo(Taction action); + + /** + * Assert that the designation counts add up. + */ + inline void AssertCountConsistency() const + { + assert(this->action_counts[MTA_KEEP] + + this->action_counts[MTA_DELIVER] + + this->action_counts[MTA_TRANSFER] + + this->action_counts[MTA_LOAD] == this->count); + } void AddToCache(const CargoPacket *cp); - void RemoveFromCache(const CargoPacket *cp); + void RemoveFromCache(const CargoPacket *cp, uint count); + + 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; /** The super class ought to know what it's doing. */ - friend class CargoList; + friend class CargoList; /** The vehicles have a cargo list (and we want that saved). */ friend const struct SaveLoad *GetVehicleDescription(VehicleType vt); + friend class CargoShift; + friend class CargoTransfer; + friend class CargoDelivery; + template + friend class CargoRemoval; + friend class CargoReturn; + friend class VehicleCargoReroute; + + /** + * Returns source of the first cargo packet in this list. + * @return The before mentioned source. + */ + inline StationID Source() const + { + return this->count == 0 ? INVALID_STATION : this->packets.front()->source; + } + /** * Returns total sum of the feeder share for all packets. * @return The before mentioned number. @@ -282,10 +348,95 @@ class VehicleCargoList : public CargoList { return this->feeder_share; } + /** + * Returns the amount of cargo designated for a given purpose. + * @param action Action the cargo is designated for. + * @return Amount of cargo designated for the given action. + */ + inline uint ActionCount(MoveToAction action) const + { + return this->action_counts[action]; + } + + /** + * Returns sum of cargo on board the vehicle (ie not only + * reserved). + * @return Cargo on board the vehicle. + */ + inline uint StoredCount() const + { + return this->count - this->action_counts[MTA_LOAD]; + } + + /** + * Returns sum of cargo, including reserved cargo. + * @return Sum of cargo. + */ + inline uint TotalCount() const + { + return this->count; + } + + /** + * Returns sum of reserved cargo. + * @return Sum of reserved cargo. + */ + inline uint ReservedCount() const + { + return this->action_counts[MTA_LOAD]; + } + + /** + * Returns sum of cargo to be moved out of the vehicle at the current station. + * @return Cargo to be moved. + */ + inline uint UnloadCount() const + { + return this->action_counts[MTA_TRANSFER] + this->action_counts[MTA_DELIVER]; + } + + /** + * Returns the sum of cargo to be kept in the vehicle at the current station. + * @return Cargo to be kept or loaded. + */ + inline uint RemainingCount() const + { + return this->action_counts[MTA_KEEP] + this->action_counts[MTA_LOAD]; + } + + void Append(CargoPacket *cp, MoveToAction action = MTA_KEEP); + void AgeCargo(); void InvalidateCache(); + void SetTransferLoadPlace(TileIndex xy); + + 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 + * loading old savegames. When loading is aborted the reserved cargo has + * to be returned first. + */ + inline void KeepAll() + { + this->action_counts[MTA_DELIVER] = this->action_counts[MTA_TRANSFER] = this->action_counts[MTA_LOAD] = 0; + this->action_counts[MTA_KEEP] = this->count; + } + + /* Methods for moving cargo around. First parameter is always maximum + * amount of cargo to be moved. Second parameter is destination (if + * applicable), return value is amount of cargo actually moved. */ + + 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); + uint Truncate(uint max_move = UINT_MAX); + uint Reroute(uint max_move, VehicleCargoList *dest, StationID avoid, StationID avoid2, const GoodsEntry *ge); + /** * Are two the two CargoPackets mergeable in the context of * a list of CargoPackets for a Vehicle? @@ -303,16 +454,104 @@ class VehicleCargoList : public CargoList { } }; +typedef MultiMap StationCargoPacketMap; +typedef std::map StationCargoAmountMap; + /** * CargoList that is used for stations. */ -class StationCargoList : public CargoList { +class StationCargoList : public CargoList { +protected: + /** The (direct) parent of this class. */ + typedef CargoList Parent; + + uint reserved_count; ///< Amount of cargo being reserved for loading. + public: /** The super class ought to know what it's doing. */ - friend class CargoList; + friend class CargoList; /** The stations, via GoodsEntry, have a CargoList. */ friend const struct SaveLoad *GetGoodsDesc(); + friend class CargoLoad; + friend class CargoTransfer; + template + friend class CargoRemoval; + friend class CargoReservation; + friend class CargoReturn; + friend class StationCargoReroute; + + static void InvalidateAllFrom(SourceType src_type, SourceID src); + + template + bool ShiftCargo(Taction &action, StationID next); + + template + uint ShiftCargo(Taction action, StationIDStack next, bool include_invalid); + + void Append(CargoPacket *cp, StationID next); + + /** + * Check for cargo headed for a specific station. + * @param next Station the cargo is headed for. + * @return If there is any cargo for that station. + */ + inline bool HasCargoFor(StationIDStack next) const + { + 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(); + } + + /** + * Returns source of the first cargo packet in this list. + * @return The before mentioned source. + */ + inline StationID Source() const + { + return this->count == 0 ? INVALID_STATION : this->packets.begin()->second.front()->source; + } + + /** + * Returns sum of cargo still available for loading at the sation. + * (i.e. not counting cargo which is already reserved for loading) + * @return Cargo on board the vehicle. + */ + inline uint AvailableCount() const + { + return this->count; + } + + /** + * Returns sum of cargo reserved for loading onto vehicles. + * @return Cargo reserved for loading. + */ + inline uint ReservedCount() const + { + return this->reserved_count; + } + + /** + * Returns total count of cargo at the station, including + * cargo which is already reserved for loading. + * @return Total cargo count. + */ + inline uint TotalCount() const + { + return this->count + this->reserved_count; + } + + /* Methods for moving cargo around. First parameter is always maximum + * 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, 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); + /** * Are two the two CargoPackets mergeable in the context of * a list of CargoPackets for a Vehicle? diff --git a/src/cargotype.cpp b/src/cargotype.cpp index 6d601e255..863c58561 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/cargotype.h b/src/cargotype.h index 43e7cd6a7..fee461d7f 100644 --- a/src/cargotype.h +++ b/src/cargotype.h @@ -46,7 +46,7 @@ enum CargoClass { CC_LIQUID = 1 << 6, ///< Liquids (Oil, Water, Rubber) CC_REFRIGERATED = 1 << 7, ///< Refrigerated cargo (Food, Fruit) CC_HAZARDOUS = 1 << 8, ///< Hazardous cargo (Nuclear Fuel, Explosives, etc.) - CC_COVERED = 1 << 9, ///< Covered/Sheltered Freight (Transporation in Box Vans, Silo Wagons, etc.) + CC_COVERED = 1 << 9, ///< Covered/Sheltered Freight (Transportation in Box Vans, Silo Wagons, etc.) CC_SPECIAL = 1 << 15, ///< Special bit used for livery refit tricks instead of normal cargoes. }; @@ -163,13 +163,13 @@ static inline bool IsCargoInClass(CargoID c, CargoClass cc) * @param var Reference getting the cargospec. * @see CargoSpec */ -#define FOR_ALL_SORTED_CARGOSPECS(var) for (uint8 index = 0; var = _sorted_cargo_specs[index], index < _sorted_cargo_specs_size; index++) +#define FOR_ALL_SORTED_CARGOSPECS(var) for (uint8 index = 0; index < _sorted_cargo_specs_size && (var = _sorted_cargo_specs[index], true) ; index++) /** * Loop header for iterating over 'real' cargoes, sorted by name. Phony cargoes like regearing cargoes are skipped. * @param var Reference getting the cargospec. * @see CargoSpec */ -#define FOR_ALL_SORTED_STANDARD_CARGOSPECS(var) for (uint8 index = 0; var = _sorted_cargo_specs[index], index < _sorted_standard_cargo_specs_size; index++) +#define FOR_ALL_SORTED_STANDARD_CARGOSPECS(var) for (uint8 index = 0; index < _sorted_standard_cargo_specs_size && (var = _sorted_cargo_specs[index], true); index++) #endif /* CARGOTYPE_H */ diff --git a/src/cheat.cpp b/src/cheat.cpp index f8dae235f..8b300c966 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 6b37079bd..b2006053a 100644 --- a/src/cheat_gui.cpp +++ b/src/cheat_gui.cpp @@ -24,11 +24,14 @@ #include "rail_gui.h" #include "settings_gui.h" #include "company_gui.h" +#include "linkgraph/linkgraphschedule.h" #include "widgets/cheat_widget.h" #include "table/sprites.h" +#include "safeguards.h" + /** * The 'amount' to cheat with. @@ -75,7 +78,7 @@ static int32 ClickChangeCompanyCheat(int32 p1, int32 p2) * Allow (or disallow) changing production of all industries. * @param p1 new value * @param p2 unused - * @return New value allwing change of industry production. + * @return New value allowing change of industry production. */ static int32 ClickSetProdCheat(int32 p1, int32 p2) { @@ -100,7 +103,9 @@ static int32 ClickChangeDateCheat(int32 p1, int32 p2) p1 = Clamp(p1, MIN_YEAR, MAX_YEAR); if (p1 == _cur_year) return _cur_year; - SetDate(ConvertYMDToDate(p1, ymd.month, ymd.day), _date_fract); + Date new_date = ConvertYMDToDate(p1, ymd.month, ymd.day); + LinkGraphSchedule::Instance()->ShiftDates(new_date - _date); + SetDate(new_date, _date_fract); EnginesMonthlyLoop(); SetWindowDirty(WC_STATUS_BAR, 0); InvalidateWindowClassesData(WC_BUILD_STATION, 0); @@ -170,9 +175,9 @@ struct CheatWindow : Window { int clicked; int header_height; - CheatWindow(const WindowDesc *desc) : Window() + CheatWindow(WindowDesc *desc) : Window(desc) { - this->InitNested(desc); + this->InitNested(); } virtual void DrawWidget(const Rect &r, int widget) const @@ -348,8 +353,8 @@ struct CheatWindow : Window { }; /** Window description of the cheats GUI. */ -static const WindowDesc _cheats_desc( - WDP_AUTO, 0, 0, +static WindowDesc _cheats_desc( + WDP_AUTO, "cheats", 0, 0, WC_CHEATS, WC_NONE, 0, _nested_cheat_widgets, lengthof(_nested_cheat_widgets) diff --git a/src/clear_cmd.cpp b/src/clear_cmd.cpp index f69c5d42b..ad73ed143 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); } } @@ -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; } @@ -190,12 +192,12 @@ static void TileLoopClearAlps(TileIndex tile) } } /* Update snow density. */ - uint curent_density = GetClearDensity(tile); + uint current_density = GetClearDensity(tile); uint req_density = (k < 0) ? 0u : min((uint)k, 3); - if (curent_density < req_density) { + if (current_density < req_density) { AddClearDensity(tile, 1); - } else if (curent_density > req_density) { + } else if (current_density > req_density) { AddClearDensity(tile, -1); } else { /* Density at the required level. */ @@ -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 54c2eb1b2..ca1d1043e 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(_m[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(_m[t].m6, 2, 3, h); break; + } } diff --git a/src/command.cpp b/src/command.cpp index aa2723e90..b694ce496 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; @@ -142,6 +144,7 @@ CommandProc CmdClearArea; CommandProc CmdGiveMoney; CommandProc CmdMoneyCheat; +CommandProc CmdChangeBankBalance; CommandProc CmdBuildCanal; CommandProc CmdBuildLock; @@ -150,8 +153,19 @@ CommandProc CmdCompanyCtrl; CommandProc CmdCustomNewsItem; CommandProc CmdCreateGoal; CommandProc CmdRemoveGoal; +CommandProc CmdSetGoalText; +CommandProc CmdSetGoalProgress; +CommandProc CmdSetGoalCompleted; CommandProc CmdGoalQuestion; CommandProc CmdGoalQuestionAnswer; +CommandProc CmdCreateStoryPage; +CommandProc CmdCreateStoryPageElement; +CommandProc CmdUpdateStoryPageElement; +CommandProc CmdSetStoryPageTitle; +CommandProc CmdSetStoryPageDate; +CommandProc CmdShowStoryPage; +CommandProc CmdRemoveStoryPage; +CommandProc CmdRemoveStoryPageElement; CommandProc CmdLevelLand; @@ -168,7 +182,7 @@ CommandProc CmdDepotSellAllVehicles; CommandProc CmdDepotMassAutoReplace; CommandProc CmdCreateGroup; -CommandProc CmdRenameGroup; +CommandProc CmdAlterGroup; CommandProc CmdDeleteGroup; CommandProc CmdAddVehicleGroup; CommandProc CmdAddSharedVehicleGroup; @@ -180,6 +194,7 @@ CommandProc CmdChangeTimetable; CommandProc CmdSetVehicleOnTime; CommandProc CmdAutofillTimetable; CommandProc CmdSetTimetableStart; +CommandProc CmdReinitSeparation; CommandProc CmdOpenCloseAirport; @@ -209,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 @@ -251,17 +266,17 @@ static const Command _command_proc_table[] = { DEF_CMD(CmdWantEnginePreview, 0, CMDT_VEHICLE_MANAGEMENT ), // CMD_WANT_ENGINE_PREVIEW - DEF_CMD(CmdRenameVehicle, CMD_STR_CTRL, CMDT_OTHER_MANAGEMENT ), // CMD_RENAME_VEHICLE - DEF_CMD(CmdRenameEngine, CMD_STR_CTRL, CMDT_OTHER_MANAGEMENT ), // CMD_RENAME_ENGINE + DEF_CMD(CmdRenameVehicle, 0, CMDT_OTHER_MANAGEMENT ), // CMD_RENAME_VEHICLE + DEF_CMD(CmdRenameEngine, CMD_SERVER, CMDT_OTHER_MANAGEMENT ), // CMD_RENAME_ENGINE - DEF_CMD(CmdRenameCompany, CMD_STR_CTRL, CMDT_OTHER_MANAGEMENT ), // CMD_RENAME_COMPANY - DEF_CMD(CmdRenamePresident, CMD_STR_CTRL, CMDT_OTHER_MANAGEMENT ), // CMD_RENAME_PRESIDENT + DEF_CMD(CmdRenameCompany, 0, CMDT_OTHER_MANAGEMENT ), // CMD_RENAME_COMPANY + DEF_CMD(CmdRenamePresident, 0, CMDT_OTHER_MANAGEMENT ), // CMD_RENAME_PRESIDENT - DEF_CMD(CmdRenameStation, CMD_STR_CTRL, CMDT_OTHER_MANAGEMENT ), // CMD_RENAME_STATION - DEF_CMD(CmdRenameDepot, CMD_STR_CTRL, CMDT_OTHER_MANAGEMENT ), // CMD_RENAME_DEPOT + DEF_CMD(CmdRenameStation, 0, CMDT_OTHER_MANAGEMENT ), // CMD_RENAME_STATION + DEF_CMD(CmdRenameDepot, 0, CMDT_OTHER_MANAGEMENT ), // CMD_RENAME_DEPOT - DEF_CMD(CmdPlaceSign, CMD_STR_CTRL | CMD_DEITY, CMDT_OTHER_MANAGEMENT ), // CMD_PLACE_SIGN - DEF_CMD(CmdRenameSign, CMD_STR_CTRL | CMD_DEITY, CMDT_OTHER_MANAGEMENT ), // CMD_RENAME_SIGN + DEF_CMD(CmdPlaceSign, CMD_DEITY, CMDT_OTHER_MANAGEMENT ), // CMD_PLACE_SIGN + DEF_CMD(CmdRenameSign, CMD_DEITY, CMDT_OTHER_MANAGEMENT ), // CMD_RENAME_SIGN DEF_CMD(CmdTurnRoadVeh, 0, CMDT_VEHICLE_MANAGEMENT ), // CMD_TURN_ROADVEH @@ -271,8 +286,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_STR_CTRL | 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 @@ -286,14 +301,26 @@ 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 DEF_CMD(CmdCustomNewsItem, CMD_STR_CTRL | CMD_DEITY, CMDT_OTHER_MANAGEMENT ), // CMD_CUSTOM_NEWS_ITEM DEF_CMD(CmdCreateGoal, CMD_STR_CTRL | CMD_DEITY, CMDT_OTHER_MANAGEMENT ), // CMD_CREATE_GOAL DEF_CMD(CmdRemoveGoal, CMD_DEITY, CMDT_OTHER_MANAGEMENT ), // CMD_REMOVE_GOAL + DEF_CMD(CmdSetGoalText, CMD_STR_CTRL | CMD_DEITY, CMDT_OTHER_MANAGEMENT ), // CMD_SET_GOAL_TEXT + DEF_CMD(CmdSetGoalProgress, CMD_STR_CTRL | CMD_DEITY, CMDT_OTHER_MANAGEMENT ), // CMD_SET_GOAL_PROGRESS + DEF_CMD(CmdSetGoalCompleted, CMD_STR_CTRL | CMD_DEITY, CMDT_OTHER_MANAGEMENT ), // CMD_SET_GOAL_COMPLETED DEF_CMD(CmdGoalQuestion, CMD_STR_CTRL | CMD_DEITY, CMDT_OTHER_MANAGEMENT ), // CMD_GOAL_QUESTION DEF_CMD(CmdGoalQuestionAnswer, CMD_DEITY, CMDT_OTHER_MANAGEMENT ), // CMD_GOAL_QUESTION_ANSWER + DEF_CMD(CmdCreateStoryPage, CMD_STR_CTRL | CMD_DEITY, CMDT_OTHER_MANAGEMENT ), // CMD_CREATE_STORY_PAGE + 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_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 @@ -314,7 +341,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, CMD_STR_CTRL, 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 @@ -324,14 +351,14 @@ static const Command _command_proc_table[] = { DEF_CMD(CmdSetVehicleOnTime, 0, CMDT_ROUTE_MANAGEMENT ), // CMD_SET_VEHICLE_ON_TIME DEF_CMD(CmdAutofillTimetable, 0, CMDT_ROUTE_MANAGEMENT ), // CMD_AUTOFILL_TIMETABLE DEF_CMD(CmdSetTimetableStart, 0, CMDT_ROUTE_MANAGEMENT ), // CMD_SET_TIMETABLE_START - + DEF_CMD(CmdReinitSeparation, 0, CMDT_ROUTE_MANAGEMENT ), // CMD_REINIT_SEPARATION DEF_CMD(CmdOpenCloseAirport, 0, CMDT_ROUTE_MANAGEMENT ), // CMD_OPEN_CLOSE_AIRPORT }; /*! * This function range-checks a cmd, and checks if the cmd is not NULL * - * @param cmd The integervalue of a command + * @param cmd The integer value of a command * @return true if the command is valid (and got a CommandProc function) */ bool IsValidCommand(uint32 cmd) @@ -551,7 +578,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); @@ -577,7 +604,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. @@ -621,7 +648,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; @@ -630,7 +657,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); @@ -641,8 +668,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. */ @@ -661,7 +689,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 @@ -677,7 +705,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)); @@ -685,8 +713,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(); @@ -707,7 +736,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 @@ -717,7 +746,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. */ @@ -731,7 +760,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 @@ -759,13 +788,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 ee7b1a956..fd75b29c5 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 @@ class CommandCost { /** * 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 @@ class CommandCost { 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. @@ -259,6 +271,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 @@ -266,8 +279,19 @@ enum Commands { CMD_CUSTOM_NEWS_ITEM, ///< create a custom news message CMD_CREATE_GOAL, ///< create a new goal CMD_REMOVE_GOAL, ///< remove a goal + CMD_SET_GOAL_TEXT, ///< update goal text of a goal + CMD_SET_GOAL_PROGRESS, ///< update goal progress text of a goal + CMD_SET_GOAL_COMPLETED, ///< update goal completed status of a goal CMD_GOAL_QUESTION, ///< ask a goal related question CMD_GOAL_QUESTION_ANSWER, ///< answer(s) to CMD_GOAL_QUESTION + CMD_CREATE_STORY_PAGE, ///< create a new story page + 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 @@ -277,7 +301,7 @@ enum Commands { CMD_GIVE_MONEY, ///< give money to another company CMD_CHANGE_SETTING, ///< change a setting - CMD_CHANGE_COMPANY_SETTING, ///< change a company etting + CMD_CHANGE_COMPANY_SETTING, ///< change a company setting CMD_SET_AUTOREPLACE, ///< set an autoreplace entry @@ -290,7 +314,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 @@ -301,6 +325,7 @@ enum Commands { CMD_SET_VEHICLE_ON_TIME, ///< set the vehicle on time feature (timetable) CMD_AUTOFILL_TIMETABLE, ///< autofill the timetable CMD_SET_TIMETABLE_START, ///< set the date that a timetable should start + CMD_REINIT_SEPARATION, ///< reinit timetable separation with new parameters CMD_OPEN_CLOSE_AIRPORT, ///< open/close an airport to incoming aircraft diff --git a/src/company_cmd.cpp b/src/company_cmd.cpp index 0abd8c6fb..3dfcc3234 100644 --- a/src/company_cmd.cpp +++ b/src/company_cmd.cpp @@ -34,9 +34,13 @@ #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" + 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. @@ -82,6 +86,7 @@ void Company::PostDestructor(size_t index) InvalidateWindowData(WC_GRAPH_LEGEND, 0, (int)index); InvalidateWindowData(WC_PERFORMANCE_DETAIL, 0, (int)index); InvalidateWindowData(WC_COMPANY_LEAGUE, 0, 0); + InvalidateWindowData(WC_LINKGRAPH_LEGEND, 0); /* If the currently shown error message has this company in it, then close it. */ InvalidateWindowData(WC_ERRMSG, 0); } @@ -550,7 +555,7 @@ Company *DoStartupNewCompany(bool is_ai, CompanyID company = INVALID_COMPANY) c->avail_railtypes = GetCompanyRailtypes(c->index); c->avail_roadtypes = GetCompanyRoadtypes(c->index); c->inaugurated_year = _cur_year; - RandomCompanyManagerFaceBits(c->face, (GenderEthnicity)Random(), false); // create a random company manager face + RandomCompanyManagerFaceBits(c->face, (GenderEthnicity)Random(), false, false); // create a random company manager face SetDefaultCompanySettings(c->index); @@ -559,6 +564,7 @@ Company *DoStartupNewCompany(bool is_ai, CompanyID company = INVALID_COMPANY) SetWindowDirty(WC_GRAPH_LEGEND, 0); SetWindowClassesDirty(WC_CLIENT_LIST_POPUP); SetWindowDirty(WC_CLIENT_LIST, 0); + InvalidateWindowData(WC_LINKGRAPH_LEGEND, 0); BuildOwnerLegend(); InvalidateWindowData(WC_SMALLMAP, 0, 1); @@ -849,59 +855,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); @@ -932,6 +900,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; } @@ -1052,6 +1022,7 @@ CommandCost CmdSetCompanyColour(TileIndex tile, DoCommandFlag flags, uint32 p1, InvalidateWindowData(WC_DELIVERED_CARGO, 0); InvalidateWindowData(WC_PERFORMANCE_HISTORY, 0); InvalidateWindowData(WC_COMPANY_VALUE, 0); + InvalidateWindowData(WC_LINKGRAPH_LEGEND, 0); /* The smallmap owner view also stores the company colours. */ BuildOwnerLegend(); InvalidateWindowData(WC_SMALLMAP, 0, 1); @@ -1105,7 +1076,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); } @@ -1154,12 +1125,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); } } @@ -1170,3 +1141,21 @@ CommandCost CmdRenamePresident(TileIndex tile, DoCommandFlag flags, uint32 p1, u return CommandCost(); } + +/** + * Get the service interval for the given company and vehicle type. + * @param c The company, or NULL for client-default settings. + * @param type The vehicle type to get the interval for. + * @return The service interval. + */ +int CompanyServiceInterval(const Company *c, VehicleType type) +{ + const VehicleDefaultSettings *vds = (c == NULL) ? &_settings_client.company.vehicle : &c->settings.vehicle; + switch (type) { + default: NOT_REACHED(); + case VEH_TRAIN: return vds->servint_trains; + case VEH_ROAD: return vds->servint_roadveh; + case VEH_AIRCRAFT: return vds->servint_aircraft; + case VEH_SHIP: return vds->servint_ships; + } +} diff --git a/src/company_func.h b/src/company_func.h index 394bf44a3..29650d78c 100644 --- a/src/company_func.h +++ b/src/company_func.h @@ -15,6 +15,7 @@ #include "command_type.h" #include "company_type.h" #include "gfx_type.h" +#include "vehicle_type.h" bool MayCompanyTakeOver(CompanyID cbig, CompanyID small); void ChangeOwnershipOfCompanyItems(Owner old_owner, Owner new_owner); @@ -56,4 +57,6 @@ static inline bool IsInteractiveCompany(CompanyID company) return company == _local_company; } +int CompanyServiceInterval(const Company *c, VehicleType type); + #endif /* COMPANY_FUNC_H */ diff --git a/src/company_gui.cpp b/src/company_gui.cpp index c6ddd6bd0..3a854ccbf 100644 --- a/src/company_gui.cpp +++ b/src/company_gui.cpp @@ -38,6 +38,8 @@ #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. @@ -273,12 +275,12 @@ struct CompanyFinancesWindow : Window { static Money max_money; ///< The maximum amount of money a company has had this 'run' bool small; ///< Window is toggled to 'small'. - CompanyFinancesWindow(const WindowDesc *desc, CompanyID company) : Window() + CompanyFinancesWindow(WindowDesc *desc, CompanyID company) : Window(desc) { this->small = false; - this->CreateNestedTree(desc); + this->CreateNestedTree(); this->SetupWidgets(); - this->FinishInitNested(desc, company); + this->FinishInitNested(company); this->owner = (Owner)this->window_number; } @@ -463,8 +465,8 @@ struct CompanyFinancesWindow : Window { /** First conservative estimate of the maximum amount of money */ Money CompanyFinancesWindow::max_money = INT32_MAX; -static const WindowDesc _company_finances_desc( - WDP_AUTO, 0, 0, +static WindowDesc _company_finances_desc( + WDP_AUTO, "company_finances", 0, 0, WC_FINANCES, WC_NONE, 0, _nested_company_finances_widgets, lengthof(_nested_company_finances_widgets) @@ -526,7 +528,7 @@ class DropDownListColourItem : public DropDownListItem { uint Height(uint width) const { - return max(FONT_HEIGHT_NORMAL, (byte)14); + return max(FONT_HEIGHT_NORMAL, 14); } bool Selectable() const @@ -574,14 +576,14 @@ struct SelectCompanyLiveryWindow : public Window { 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); } public: - SelectCompanyLiveryWindow(const WindowDesc *desc, CompanyID company) : Window() + SelectCompanyLiveryWindow(WindowDesc *desc, CompanyID company) : Window(desc) { this->livery_class = LC_OTHER; this->sel = 1; @@ -590,7 +592,7 @@ struct SelectCompanyLiveryWindow : public Window { this->box = maxdim(GetSpriteSize(SPR_BOX_CHECKED), GetSpriteSize(SPR_BOX_EMPTY)); this->line_height = max(max(this->square.height, this->box.height), (uint)FONT_HEIGHT_NORMAL) + 4; - this->InitNested(desc, company); + this->InitNested(company); this->owner = company; this->LowerWidget(WID_SCL_CLASS_GENERAL); this->InvalidateData(1); @@ -838,11 +840,11 @@ static const NWidgetPart _nested_select_company_livery_widgets [] = { NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_SCL_SEC_COL_DROPDOWN), SetMinimalSize(125, 12), SetFill(0, 1), SetDataTip(STR_BLACK_STRING, STR_LIVERY_SECONDARY_TOOLTIP), EndContainer(), - NWidget(WWT_MATRIX, COLOUR_GREY, WID_SCL_MATRIX), SetMinimalSize(275, 15), SetFill(1, 0), SetDataTip((1 << MAT_ROW_START) | (1 << MAT_COL_START), STR_LIVERY_PANEL_TOOLTIP), + NWidget(WWT_MATRIX, COLOUR_GREY, WID_SCL_MATRIX), SetMinimalSize(275, 15), SetFill(1, 0), SetMatrixDataTip(1, 1, STR_LIVERY_PANEL_TOOLTIP), }; -static const WindowDesc _select_company_livery_desc( - WDP_AUTO, 0, 0, +static WindowDesc _select_company_livery_desc( + WDP_AUTO, "company_livery", 0, 0, WC_COMPANY_COLOUR, WC_NONE, 0, _nested_select_company_livery_widgets, lengthof(_nested_select_company_livery_widgets) @@ -1077,12 +1079,12 @@ class SelectCompanyManagerFaceWindow : public Window } public: - SelectCompanyManagerFaceWindow(const WindowDesc *desc, Window *parent) : Window() + SelectCompanyManagerFaceWindow(WindowDesc *desc, Window *parent) : Window(desc) { this->advanced = false; - this->CreateNestedTree(desc); + this->CreateNestedTree(); this->SelectDisplayPlanes(this->advanced); - this->FinishInitNested(desc, parent->window_number); + this->FinishInitNested(parent->window_number); this->parent = parent; this->owner = (Owner)this->window_number; this->face = Company::Get((CompanyID)this->window_number)->face; @@ -1099,7 +1101,7 @@ class SelectCompanyManagerFaceWindow : public Window 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) { @@ -1479,8 +1481,8 @@ const StringID SelectCompanyManagerFaceWindow::PART_TEXTS[] = { }; /** Company manager face selection window description */ -static const WindowDesc _select_company_manager_face_desc( - WDP_AUTO, 0, 0, +static WindowDesc _select_company_manager_face_desc( + WDP_AUTO, "company_face", 0, 0, WC_COMPANY_MANAGER_FACE, WC_NONE, WDF_CONSTRUCTION, _nested_select_company_manager_face_widgets, lengthof(_nested_select_company_manager_face_widgets) @@ -1545,11 +1547,11 @@ struct CompanyInfrastructureWindow : Window uint total_width; ///< String width of the total cost line. - CompanyInfrastructureWindow(const WindowDesc *desc, WindowNumber window_number) : Window() + CompanyInfrastructureWindow(WindowDesc *desc, WindowNumber window_number) : Window(desc) { this->UpdateRailRoadTypes(); - this->InitNested(desc, window_number); + this->InitNested(window_number); this->owner = (Owner)this->window_number; } @@ -1692,15 +1694,19 @@ struct CompanyInfrastructureWindow : Window max_cost = max(max_cost, AirportMaintenanceCost(c->index)); SetDParamMaxValue(0, max_val); - SetDParamMaxValue(1, max_cost * 12); // Convert to per year - size->width = max(size->width, GetStringBoundingBox(_settings_game.economy.infrastructure_maintenance ? STR_COMPANY_INFRASTRUCTURE_VIEW_COST : STR_WHITE_COMMA).width + 20); // Reserve some wiggle room. + uint count_width = GetStringBoundingBox(STR_WHITE_COMMA).width + 20; // Reserve some wiggle room if (_settings_game.economy.infrastructure_maintenance) { SetDParamMaxValue(0, this->GetTotalMaintenanceCost() * 12); // Convert to per year this->total_width = GetStringBoundingBox(STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL).width + 20; size->width = max(size->width, this->total_width); + + SetDParamMaxValue(0, max_cost * 12); // Convert to per year + count_width += max(this->total_width, GetStringBoundingBox(STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL).width); } + size->width = max(size->width, count_width); + /* Set height of the total line. */ if (widget == WID_CI_TOTAL) { size->height = _settings_game.economy.infrastructure_maintenance ? max(size->height, EXP_LINESPACE + FONT_HEIGHT_NORMAL) : 0; @@ -1710,6 +1716,25 @@ struct CompanyInfrastructureWindow : Window } } + /** + * Helper for drawing the counts line. + * @param r The bounds to draw in. + * @param y The y position to draw at. + * @param count The count to show on this line. + * @param monthly_cost The monthly costs. + */ + void DrawCountLine(const Rect &r, int &y, int count, Money monthly_cost) const + { + SetDParam(0, count); + DrawString(r.left, r.right, y += FONT_HEIGHT_NORMAL, STR_WHITE_COMMA, TC_FROMSTRING, SA_RIGHT); + + if (_settings_game.economy.infrastructure_maintenance) { + SetDParam(0, monthly_cost * 12); // Convert to per year + int left = _current_text_dir == TD_RTL ? r.right - this->total_width : r.left; + DrawString(left, left + this->total_width, y, STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL, TC_FROMSTRING, SA_RIGHT); + } + } + virtual void DrawWidget(const Rect &r, int widget) const { const Company *c = Company::Get((CompanyID)this->window_number); @@ -1743,15 +1768,11 @@ struct CompanyInfrastructureWindow : Window uint32 rail_total = c->infrastructure.GetRailTotal(); for (RailType rt = RAILTYPE_BEGIN; rt != RAILTYPE_END; rt++) { if (HasBit(this->railtypes, rt)) { - SetDParam(0, c->infrastructure.rail[rt]); - SetDParam(1, RailMaintenanceCost(rt, c->infrastructure.rail[rt], rail_total) * 12); // Convert to per year - DrawString(r.left, r.right, y += FONT_HEIGHT_NORMAL, _settings_game.economy.infrastructure_maintenance ? STR_COMPANY_INFRASTRUCTURE_VIEW_COST : STR_WHITE_COMMA); + this->DrawCountLine(r, y, c->infrastructure.rail[rt], RailMaintenanceCost(rt, c->infrastructure.rail[rt], rail_total)); } } if (this->railtypes != RAILTYPES_NONE) { - SetDParam(0, c->infrastructure.signal); - SetDParam(1, SignalMaintenanceCost(c->infrastructure.signal) * 12); // Convert to per year - DrawString(r.left, r.right, y += FONT_HEIGHT_NORMAL, _settings_game.economy.infrastructure_maintenance ? STR_COMPANY_INFRASTRUCTURE_VIEW_COST : STR_WHITE_COMMA); + this->DrawCountLine(r, y, c->infrastructure.signal, SignalMaintenanceCost(c->infrastructure.signal)); } break; } @@ -1771,14 +1792,10 @@ struct CompanyInfrastructureWindow : Window case WID_CI_ROAD_COUNT: if (HasBit(this->roadtypes, ROADTYPE_ROAD)) { - SetDParam(0, c->infrastructure.road[ROADTYPE_ROAD]); - SetDParam(1, RoadMaintenanceCost(ROADTYPE_ROAD, c->infrastructure.road[ROADTYPE_ROAD]) * 12); // Convert to per year - DrawString(r.left, r.right, y += FONT_HEIGHT_NORMAL, _settings_game.economy.infrastructure_maintenance ? STR_COMPANY_INFRASTRUCTURE_VIEW_COST : STR_WHITE_COMMA); + this->DrawCountLine(r, y, c->infrastructure.road[ROADTYPE_ROAD], RoadMaintenanceCost(ROADTYPE_ROAD, c->infrastructure.road[ROADTYPE_ROAD])); } if (HasBit(this->roadtypes, ROADTYPE_TRAM)) { - SetDParam(0, c->infrastructure.road[ROADTYPE_TRAM]); - SetDParam(1, RoadMaintenanceCost(ROADTYPE_TRAM, c->infrastructure.road[ROADTYPE_TRAM]) * 12); // Convert to per year - DrawString(r.left, r.right, y += FONT_HEIGHT_NORMAL, _settings_game.economy.infrastructure_maintenance ? STR_COMPANY_INFRASTRUCTURE_VIEW_COST : STR_WHITE_COMMA); + this->DrawCountLine(r, y, c->infrastructure.road[ROADTYPE_TRAM], RoadMaintenanceCost(ROADTYPE_TRAM, c->infrastructure.road[ROADTYPE_TRAM])); } break; @@ -1788,17 +1805,16 @@ struct CompanyInfrastructureWindow : Window break; case WID_CI_WATER_COUNT: - SetDParam(0, c->infrastructure.water); - SetDParam(1, CanalMaintenanceCost(c->infrastructure.water) * 12); // Convert to per year - DrawString(r.left, r.right, y += FONT_HEIGHT_NORMAL, _settings_game.economy.infrastructure_maintenance ? STR_COMPANY_INFRASTRUCTURE_VIEW_COST : STR_WHITE_COMMA); + this->DrawCountLine(r, y, c->infrastructure.water, CanalMaintenanceCost(c->infrastructure.water)); break; case WID_CI_TOTAL: if (_settings_game.economy.infrastructure_maintenance) { - GfxFillRect(r.left, y, r.left + this->total_width, y, PC_WHITE); + int left = _current_text_dir == TD_RTL ? r.right - this->total_width : r.left; + GfxFillRect(left, y, left + this->total_width, y, PC_WHITE); y += EXP_LINESPACE; SetDParam(0, this->GetTotalMaintenanceCost() * 12); // Convert to per year - DrawString(r.left, r.right, y, STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL); + DrawString(left, left + this->total_width, y, STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL, TC_FROMSTRING, SA_RIGHT); } break; @@ -1809,12 +1825,8 @@ struct CompanyInfrastructureWindow : Window break; case WID_CI_STATION_COUNT: - SetDParam(0, c->infrastructure.station); - SetDParam(1, StationMaintenanceCost(c->infrastructure.station) * 12); // Convert to per year - DrawString(r.left, r.right, y += FONT_HEIGHT_NORMAL, _settings_game.economy.infrastructure_maintenance ? STR_COMPANY_INFRASTRUCTURE_VIEW_COST : STR_WHITE_COMMA); - SetDParam(0, c->infrastructure.airport); - SetDParam(1, AirportMaintenanceCost(c->index) * 12); // Convert to per year - DrawString(r.left, r.right, y += FONT_HEIGHT_NORMAL, _settings_game.economy.infrastructure_maintenance ? STR_COMPANY_INFRASTRUCTURE_VIEW_COST : STR_WHITE_COMMA); + this->DrawCountLine(r, y, c->infrastructure.station, StationMaintenanceCost(c->infrastructure.station)); + this->DrawCountLine(r, y, c->infrastructure.airport, AirportMaintenanceCost(c->index)); break; } } @@ -1833,8 +1845,8 @@ struct CompanyInfrastructureWindow : Window } }; -static const WindowDesc _company_infrastructure_desc( - WDP_AUTO, 0, 0, +static WindowDesc _company_infrastructure_desc( + WDP_AUTO, "company_infrastructure", 0, 0, WC_COMPANY_INFRASTRUCTURE, WC_NONE, 0, _nested_company_infrastructure_widgets, lengthof(_nested_company_infrastructure_widgets) @@ -1983,10 +1995,11 @@ struct CompanyWindow : Window CWP_BUTTONS_OTHER, ///< Buttons of the other companies. }; - CompanyWindow(const WindowDesc *desc, WindowNumber window_number) : Window() + CompanyWindow(WindowDesc *desc, WindowNumber window_number) : Window(desc) { - this->InitNested(desc, window_number); + this->InitNested(window_number); this->owner = (Owner)this->window_number; + this->OnInvalidateData(); } virtual void OnPaint() @@ -2002,7 +2015,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; } @@ -2055,25 +2068,6 @@ struct CompanyWindow : Window } } - if (!local) { - if (_settings_game.economy.allow_shares) { // Shares are allowed - /* If all shares are owned by someone (none by nobody), disable buy button */ - this->SetWidgetDisabledState(WID_C_BUY_SHARE, GetAmountOwnedBy(c, INVALID_OWNER) == 0 || - /* Only 25% left to buy. If the company is human, disable buying it up.. TODO issues! */ - (GetAmountOwnedBy(c, INVALID_OWNER) == 1 && !c->is_ai) || - /* Spectators cannot do anything of course */ - _local_company == COMPANY_SPECTATOR); - - /* If the company doesn't own any shares, disable sell button */ - this->SetWidgetDisabledState(WID_C_SELL_SHARE, (GetAmountOwnedBy(c, _local_company) == 0) || - /* Spectators cannot do anything of course */ - _local_company == COMPANY_SPECTATOR); - } else { // Shares are not allowed, disable buy/sell buttons - this->DisableWidget(WID_C_BUY_SHARE); - this->DisableWidget(WID_C_SELL_SHARE); - } - } - this->DrawWidgets(); } @@ -2396,10 +2390,40 @@ struct CompanyWindow : Window #endif /* ENABLE_NETWORK */ } } + + + /** + * 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 (this->window_number == _local_company) return; + + if (_settings_game.economy.allow_shares) { // Shares are allowed + const Company *c = Company::Get(this->window_number); + + /* If all shares are owned by someone (none by nobody), disable buy button */ + this->SetWidgetDisabledState(WID_C_BUY_SHARE, GetAmountOwnedBy(c, INVALID_OWNER) == 0 || + /* Only 25% left to buy. If the company is human, disable buying it up.. TODO issues! */ + (GetAmountOwnedBy(c, INVALID_OWNER) == 1 && !c->is_ai) || + /* Spectators cannot do anything of course */ + _local_company == COMPANY_SPECTATOR); + + /* If the company doesn't own any shares, disable sell button */ + this->SetWidgetDisabledState(WID_C_SELL_SHARE, (GetAmountOwnedBy(c, _local_company) == 0) || + /* Spectators cannot do anything of course */ + _local_company == COMPANY_SPECTATOR); + } else { // Shares are not allowed, disable buy/sell buttons + this->DisableWidget(WID_C_BUY_SHARE); + this->DisableWidget(WID_C_SELL_SHARE); + } + } }; -static const WindowDesc _company_desc( - WDP_AUTO, 0, 0, +static WindowDesc _company_desc( + WDP_AUTO, "company", 0, 0, WC_COMPANY, WC_NONE, 0, _nested_company_widgets, lengthof(_nested_company_widgets) @@ -2427,9 +2451,9 @@ void DirtyCompanyInfrastructureWindows(CompanyID company) } struct BuyCompanyWindow : Window { - BuyCompanyWindow(const WindowDesc *desc, WindowNumber window_number) : Window() + BuyCompanyWindow(WindowDesc *desc, WindowNumber window_number) : Window(desc) { - this->InitNested(desc, window_number); + this->InitNested(window_number); } virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) @@ -2510,8 +2534,8 @@ static const NWidgetPart _nested_buy_company_widgets[] = { EndContainer(), }; -static const WindowDesc _buy_company_desc( - WDP_AUTO, 0, 0, +static WindowDesc _buy_company_desc( + WDP_AUTO, NULL, 0, 0, WC_BUY_COMPANY, WC_NONE, WDF_CONSTRUCTION, _nested_buy_company_widgets, lengthof(_nested_buy_company_widgets) diff --git a/src/company_manager_face.h b/src/company_manager_face.h index 11e007199..993e539cc 100644 --- a/src/company_manager_face.h +++ b/src/company_manager_face.h @@ -120,7 +120,7 @@ static inline void SetCompanyManagerFaceBits(CompanyManagerFace &cmf, CompanyMan /** * Increase/Decrease the company manager's face variable by the given amount. * If the new value greater than the max value for this variable it will be set to 0. - * Or is it negativ (< 0) it will be set to max value. + * Or is it negative (< 0) it will be set to max value. * * @param cmf the company manager face to write the bits to * @param cmfv the company manager face variable to write the data of @@ -201,12 +201,15 @@ static inline void ScaleAllCompanyManagerFaceBits(CompanyManagerFace &cmf) * @param cmf the company manager's face to write the bits to * @param ge the gender and ethnicity of the old company manager's face * @param adv if it for the advanced company manager's face window + * @param interactive is the call from within the user interface? * * @pre scale 'ge' to a valid gender/ethnicity combination */ -static inline void RandomCompanyManagerFaceBits(CompanyManagerFace &cmf, GenderEthnicity ge, bool adv) +static inline void RandomCompanyManagerFaceBits(CompanyManagerFace &cmf, GenderEthnicity ge, bool adv, bool interactive = true) { - cmf = InteractiveRandom(); // random all company manager's face bits + /* This method is called from a command when not interactive and + * then we must use Random to get the same result on all clients. */ + cmf = interactive ? InteractiveRandom() : Random(); // random all company manager's face bits /* scale ge: 0 == GE_WM, 1 == GE_WF, 2 == GE_BM, 3 == GE_BF (and maybe in future: ...) */ ge = (GenderEthnicity)((uint)ge % GE_END); diff --git a/src/console.cpp b/src/console.cpp index 5ffc4ed52..511019281 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,51 +326,46 @@ 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 seperator, 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; case '%': // Some or all parameters cmdptr++; switch (*cmdptr) { - case '+': { // All parameters seperated: "[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++] = ' '; + case '+': { // All parameters separated: "[param 1]" "[param 2]" + 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,26 +378,32 @@ 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); } /** * Execute a given command passed to us. First chop it up into - * individual tokens (seperated by spaces), then execute it if possible + * individual tokens (separated by spaces), then execute it if possible * @param cmdstr string to be parsed and executed */ void IConsoleCmdExec(const char *cmdstr) @@ -439,14 +430,14 @@ void IConsoleCmdExec(const char *cmdstr) memset(&tokens, 0, sizeof(tokens)); memset(&tokenstream, 0, sizeof(tokenstream)); - /* 1. Split up commandline into tokens, seperated by spaces, commands + /* 1. Split up commandline into tokens, separated by spaces, commands * enclosed in "" are taken as one token. We can only go as far as the amount * of characters in our stream or the max amount of tokens we can handle */ for (cmdptr = cmdstr, t_index = 0, tstream_i = 0; *cmdptr != '\0'; cmdptr++) { if (t_index >= lengthof(tokens) || tstream_i >= lengthof(tokenstream)) break; switch (*cmdptr) { - case ' ': // Token seperator + case ' ': // Token separator if (!foundtoken) break; if (longtoken) { @@ -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 cef6e89fa..8d9e04113 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). @@ -965,7 +967,7 @@ DEF_CONSOLE_CMD(ConExec) } if (ferror(script_file)) { - IConsoleError("Encountered errror while trying to read from script file"); + IConsoleError("Encountered error while trying to read from script file"); } _script_running = false; @@ -1066,7 +1068,7 @@ DEF_CONSOLE_CMD(ConRestart) } /** - * Print a text buffer line by line to the console. Lines are seperated by '\n'. + * Print a text buffer line by line to the console. Lines are separated by '\n'. * @param buf The buffer to print. * @note All newlines are replace by '\0' characters. */ @@ -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 e97e458ff..ed46938cd 100644 --- a/src/console_gui.cpp +++ b/src/console_gui.cpp @@ -21,11 +21,14 @@ #include "settings_type.h" #include "console_func.h" #include "rev.h" +#include "video/video_driver.hpp" #include "widgets/console_widget.h" #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; @@ -158,8 +161,8 @@ static const struct NWidgetPart _nested_console_window_widgets[] = { NWidget(WWT_EMPTY, INVALID_COLOUR, WID_C_BACKGROUND), SetResize(1, 1), }; -static const WindowDesc _console_window_desc( - WDP_MANUAL, 0, 0, +static WindowDesc _console_window_desc( + WDP_MANUAL, NULL, 0, 0, WC_CONSOLE, WC_NONE, 0, _nested_console_window_widgets, lengthof(_nested_console_window_widgets) @@ -171,19 +174,20 @@ struct IConsoleWindow : Window int line_height; ///< Height of one line of text in the console. int line_offset; - IConsoleWindow() : Window() + IConsoleWindow() : Window(&_console_window_desc) { _iconsole_mode = ICONSOLE_OPENED; this->line_height = FONT_HEIGHT_NORMAL + ICON_LINE_SPACING; this->line_offset = GetStringBoundingBox("] ").width + 5; - this->InitNested(&_console_window_desc, 0); + this->InitNested(0); ResizeWindow(this, _screen.width, _screen.height / 3); } ~IConsoleWindow() { _iconsole_mode = ICONSOLE_CLOSED; + VideoDriver::GetInstance()->EditBoxLostFocus(); } /** @@ -215,6 +219,9 @@ struct IConsoleWindow : Window delta = 0; } + /* If we have a marked area, draw a background highlight. */ + if (_iconsole_cmdline.marklength != 0) GfxFillRect(this->line_offset + delta + _iconsole_cmdline.markxoffs, this->height - this->line_height, this->line_offset + delta + _iconsole_cmdline.markxoffs + _iconsole_cmdline.marklength, this->height - 1, PC_DARK_RED); + DrawString(this->line_offset + delta, right, this->height - this->line_height, _iconsole_cmdline.buf, (TextColour)CC_COMMAND, SA_LEFT | SA_FORCE); if (_focused_window == this && _iconsole_cmdline.caret) { @@ -236,7 +243,7 @@ struct IConsoleWindow : Window if (_iconsole_cmdline.HandleCaret()) this->SetDirty(); } - virtual EventState OnKeyPress(uint16 key, uint16 keycode) + virtual EventState OnKeyPress(WChar key, uint16 keycode) { if (_focused_window != this) return ES_NOT_HANDLED; @@ -290,46 +297,13 @@ struct IConsoleWindow : Window MarkWholeScreenDirty(); break; -#ifdef WITH_COCOA - case (WKC_META | 'V'): -#endif - case (WKC_CTRL | 'V'): - if (_iconsole_cmdline.InsertClipboard()) { - IConsoleResetHistoryPos(); - this->SetDirty(); - } - break; - case (WKC_CTRL | 'L'): IConsoleCmdExec("clear"); break; -#ifdef WITH_COCOA - case (WKC_META | 'U'): -#endif - case (WKC_CTRL | 'U'): - _iconsole_cmdline.DeleteAll(); - this->SetDirty(); - break; - - case WKC_BACKSPACE: case WKC_DELETE: - if (_iconsole_cmdline.DeleteChar(keycode)) { - IConsoleResetHistoryPos(); - this->SetDirty(); - } - break; - - case WKC_LEFT: case WKC_RIGHT: case WKC_END: case WKC_HOME: - if (_iconsole_cmdline.MovePos(keycode)) { - IConsoleResetHistoryPos(); - this->SetDirty(); - } - break; - default: - if (IsValidChar(key, CS_ALPHANUMERAL)) { + if (_iconsole_cmdline.HandleKeyPress(key, keycode) != HKPR_NOT_HANDLED) { IConsoleWindow::scroll = 0; - _iconsole_cmdline.InsertChar(key); IConsoleResetHistoryPos(); this->SetDirty(); } else { @@ -340,10 +314,70 @@ struct IConsoleWindow : Window return ES_HANDLED; } + virtual void InsertTextString(int wid, const char *str, bool marked, const char *caret, const char *insert_location, const char *replacement_end) + { + if (_iconsole_cmdline.InsertString(str, marked, caret, insert_location, replacement_end)) { + IConsoleWindow::scroll = 0; + IConsoleResetHistoryPos(); + this->SetDirty(); + } + } + + virtual const char *GetFocusedText() const + { + return _iconsole_cmdline.buf; + } + + virtual const char *GetCaret() const + { + return _iconsole_cmdline.buf + _iconsole_cmdline.caretpos; + } + + virtual const char *GetMarkedText(size_t *length) const + { + if (_iconsole_cmdline.markend == 0) return NULL; + + *length = _iconsole_cmdline.markend - _iconsole_cmdline.markpos; + return _iconsole_cmdline.buf + _iconsole_cmdline.markpos; + } + + virtual Point GetCaretPosition() const + { + int delta = min(this->width - this->line_offset - _iconsole_cmdline.pixels - ICON_RIGHT_BORDERWIDTH, 0); + Point pt = {this->line_offset + delta + _iconsole_cmdline.caretxoffs, this->height - this->line_height}; + + return pt; + } + + virtual Rect GetTextBoundingRect(const char *from, const char *to) const + { + int delta = min(this->width - this->line_offset - _iconsole_cmdline.pixels - ICON_RIGHT_BORDERWIDTH, 0); + + Point p1 = GetCharPosInString(_iconsole_cmdline.buf, from, FS_NORMAL); + Point p2 = from != to ? GetCharPosInString(_iconsole_cmdline.buf, from) : p1; + + Rect r = {this->line_offset + delta + p1.x, this->height - this->line_height, this->line_offset + delta + p2.x, this->height}; + return r; + } + + virtual const char *GetTextCharacterAtPosition(const Point &pt) const + { + int delta = min(this->width - this->line_offset - _iconsole_cmdline.pixels - ICON_RIGHT_BORDERWIDTH, 0); + + if (!IsInsideMM(pt.y, this->height - this->line_height, this->height)) return NULL; + + return GetCharAtPosition(_iconsole_cmdline.buf, pt.x - delta); + } + virtual void OnMouseWheel(int wheel) { this->Scroll(-wheel); } + + virtual void OnFocusLost() + { + VideoDriver::GetInstance()->EditBoxLostFocus(); + } }; int IConsoleWindow::scroll = 0; @@ -431,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/console_internal.h b/src/console_internal.h index 8cbf1a133..1b63b26f0 100644 --- a/src/console_internal.h +++ b/src/console_internal.h @@ -28,7 +28,7 @@ enum ConsoleHookResult { * --Commands-- * Commands are commands, or functions. They get executed once and any * effect they produce are carried out. The arguments to the commands - * are given to them, each input word seperated by a double-quote (") is an argument + * are given to them, each input word separated by a double-quote (") is an argument * If you want to handle multiple words as one, enclose them in double-quotes * eg. 'say "hello sexy boy"' */ @@ -50,7 +50,7 @@ struct IConsoleCmd { * (eg. 'ng' for 'load %A; unpause; debug_level 5'). Aliases can parse the arguments * given to them in the command line. * - "%A - %Z" substitute arguments 1 t/m 26 - * - "%+" lists all parameters keeping them seperated + * - "%+" lists all parameters keeping them separated * - "%!" also lists all parameters but presenting them to the aliased command as one argument * - ";" allows for combining commands (see example 'ng') */ diff --git a/src/core/alloc_func.cpp b/src/core/alloc_func.cpp index d2b3a4b6c..b78023f4d 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 12937168a..776322731 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, @@ -27,7 +29,7 @@ const uint8 _ffb_64[64] = { * Search the first set bit in a 32 bit variable. * * This algorithm is a static implementation of a log - * conguence search algorithm. It checks the first half + * congruence search algorithm. It checks the first half * if there is a bit set search there further. And this * way further. If no bit is set return 0. * @@ -55,7 +57,7 @@ uint8 FindFirstBit(uint32 x) * Search the last set bit in a 64 bit variable. * * This algorithm is a static implementation of a log - * conguence search algorithm. It checks the second half + * congruence search algorithm. It checks the second half * if there is a bit set search there further. And this * way further. If no bit is set return 0. * diff --git a/src/core/bitmath_func.hpp b/src/core/bitmath_func.hpp index bbb59c2b0..31e679b00 100644 --- a/src/core/bitmath_func.hpp +++ b/src/core/bitmath_func.hpp @@ -26,6 +26,8 @@ * @param x The value to read some bits. * @param s The start position to read some bits. * @param n The number of bits to read. + * @pre n < sizeof(T) * 8 + * @pre s + n <= sizeof(T) * 8 * @return The selected bits, aligned to a LSB. */ template @@ -50,6 +52,8 @@ static inline uint GB(const T x, const uint8 s, const uint8 n) * @param s The start position for the new bits * @param n The size/window for the new bits * @param d The actually new bits to save in the defined position. + * @pre n < sizeof(T) * 8 + * @pre s + n <= sizeof(T) * 8 * @return The new value of \a x */ template @@ -72,6 +76,8 @@ static inline T SB(T &x, const uint8 s, const uint8 n, const U d) * @param x The variable to add some bits at some position * @param s The start position of the addition * @param n The size/window for the addition + * @pre n < sizeof(T) * 8 + * @pre s + n <= sizeof(T) * 8 * @param i The value to add at the given start position in the given window. * @return The new value of \a x */ @@ -92,6 +98,7 @@ static inline T AB(T &x, const uint8 s, const uint8 n, const U i) * * @param x The value to check * @param y The position of the bit to check, started from the LSB + * @pre y < sizeof(T) * 8 * @return True if the bit is set, false else. */ template @@ -109,6 +116,7 @@ static inline bool HasBit(const T x, const uint8 y) * * @param x The variable to set a bit * @param y The bit position to set + * @pre y < sizeof(T) * 8 * @return The new value of the old value with the bit set */ template @@ -138,6 +146,7 @@ static inline T SetBit(T &x, const uint8 y) * * @param x The variable to clear the bit * @param y The bit position to clear + * @pre y < sizeof(T) * 8 * @return The new value of the old value with the bit cleared */ template @@ -167,6 +176,7 @@ static inline T ClrBit(T &x, const uint8 y) * * @param x The variable to toggle the bit * @param y The bit position to toggle + * @pre y < sizeof(T) * 8 * @return The new value of the old value with the bit toggled */ template @@ -286,6 +296,7 @@ static inline bool HasAtMostOneBit(T value) * @note Assumes a byte has 8 bits * @param x The value which we want to rotate * @param n The number how many we want to rotate + * @pre n < sizeof(T) * 8 * @return A bit rotated number */ template @@ -300,6 +311,7 @@ static inline T ROL(const T x, const uint8 n) * @note Assumes a byte has 8 bits * @param x The value which we want to rotate * @param n The number how many we want to rotate + * @pre n < sizeof(T) * 8 * @return A bit rotated number */ template @@ -353,8 +365,8 @@ static inline T ROR(const T x, const uint8 n) * (since it will use hardware swapping if available). * Even though they should return uint16 and uint32, we get * warnings if we don't cast those (why?) */ - #define BSWAP32(x) ((uint32)Endian32_Swap(x)) - #define BSWAP16(x) ((uint16)Endian16_Swap(x)) + #define BSWAP32(x) ((uint32)CFSwapInt32(x)) + #define BSWAP16(x) ((uint16)CFSwapInt16(x)) #elif defined(_MSC_VER) /* MSVC has intrinsics for swapping, resulting in faster code */ #define BSWAP32(x) (_byteswap_ulong(x)) diff --git a/src/core/enum_type.hpp b/src/core/enum_type.hpp index a6332296a..35a0cb292 100644 --- a/src/core/enum_type.hpp +++ b/src/core/enum_type.hpp @@ -89,7 +89,7 @@ template struct TinyEnumT; template struct TinyEnumT { typedef Tenum_t enum_type; ///< expose our enumeration type (i.e. Trackdir) to outside - typedef EnumPropsT Props; ///< make easier access to our enumeration propeties + typedef EnumPropsT Props; ///< make easier access to our enumeration properties typedef typename Props::storage storage_type; ///< small storage type static const enum_type begin = Props::begin; ///< enum beginning (i.e. TRACKDIR_BEGIN) static const enum_type end = Props::end; ///< enum end (i.e. TRACKDIR_END) diff --git a/src/core/geometry_func.cpp b/src/core/geometry_func.cpp index 1a1588738..86f317a37 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 2b8ca3309..d92770208 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. @@ -47,6 +49,27 @@ int GreatestCommonDivisor(int a, int b) } +/** + * Deterministic approximate division. + * Cancels out division errors stemming from the integer nature of the division over multiple runs. + * @param a Dividend. + * @param b Divisor. + * @return a/b or (a/b)+1. + */ +int DivideApprox(int a, int b) +{ + int random_like = ((a + b) * (a - b)) % b; + + int remainder = a % b; + + int ret = a / b; + if (abs(random_like) < abs(remainder)) { + ret += ((a < 0) ^ (b < 0)) ? -1 : 1; + } + + return ret; +} + /** * Compute the integer square root. * @param num Radicand. diff --git a/src/core/math_func.hpp b/src/core/math_func.hpp index b613d1e6a..df9142462 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. * @@ -317,6 +305,7 @@ static inline uint ToPercent16(uint i) int LeastCommonMultiple(int a, int b); int GreatestCommonDivisor(int a, int b); +int DivideApprox(int a, int b); /** * Computes ceil(a / b) for non-negative a and b. diff --git a/src/core/multimap.hpp b/src/core/multimap.hpp new file mode 100644 index 000000000..e90667714 --- /dev/null +++ b/src/core/multimap.hpp @@ -0,0 +1,388 @@ +/* $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 multimap.hpp Multimap with deterministic ordering of items with equal keys. */ + +#ifndef MULTIMAP_HPP +#define MULTIMAP_HPP + +#include +#include + +template +class MultiMap; + +/** + * STL-style iterator for MultiMap. + * @tparam Tmap_iter Iterator type for the map in the MultiMap. + * @tparam Tlist_iter Iterator type for the lists in the MultiMap. + * @tparam Tkey Key type of the MultiMap. + * @tparam Tvalue Value type of the MultMap. + * @tparam Tcompare Comparator type for keys of the MultiMap. + */ +template +class MultiMapIterator { +protected: + friend class MultiMap; + typedef MultiMapIterator Self; + + Tlist_iter list_iter; ///< Iterator pointing to current position in the current list of items with equal keys. + Tmap_iter map_iter; ///< Iterator pointing to the position of the current list of items with equal keys in the map. + + /** + * Flag to show that the iterator has just "walked" a step in the map. + * We cannot check the current list for that as we might have reached end() of the map. In that case we'd need to + * set list_iter to some sort of "invalid" state, but that's impossible as operator== yields undefined behaviour + * if the iterators don't belong to the same list and there is no list at end(). So if we created a static empty + * list and an "invalid" iterator in that we could not determine if the iterator is invalid while it's valid. We + * can also not determine if the map iterator is valid while we don't have the map; so in the end it's easiest to + * just introduce an extra flag. + */ + bool list_valid; + +public: + /** + * Simple, dangerous constructor to allow later assignment with operator=. + */ + MultiMapIterator() : list_valid(false) {} + + /** + * Constructor to allow possibly const iterators to be assigned from possibly + * non-const map iterators. You can assign end() like this. + * @tparam Tnon_const Iterator type assignable to Tmap_iter (which might be const). + * @param mi One such iterator. + */ + template + MultiMapIterator(Tnon_const mi) : map_iter(mi), list_valid(false) {} + + /** + * Constructor to allow specifying an exact position in map and list. You cannot + * construct end() like this as the constructor will actually check li and mi->second + * for list_valid. + * @param mi Iterator in the map. + * @param li Iterator in the list. + */ + MultiMapIterator(Tmap_iter mi, Tlist_iter li) : list_iter(li), map_iter(mi) + { + this->list_valid = (this->list_iter != this->map_iter->second.begin()); + } + + /** + * Assignment iterator like constructor with the same signature. + * @tparam Tnon_const Iterator type assignable to Tmap_iter (which might be const). + * @param mi One such iterator. + * @return This iterator. + */ + template + Self &operator=(Tnon_const mi) + { + this->map_iter = mi; + this->list_valid = false; + return *this; + } + + /** + * Dereference operator. Works just like usual STL operator*() on various containers. + * Doesn't do a lot of checks for sanity, just like STL. + * @return The value associated with the item this iterator points to. + */ + Tvalue &operator*() const + { + assert(!this->map_iter->second.empty()); + return this->list_valid ? + this->list_iter.operator*() : + this->map_iter->second.begin().operator*(); + } + + /** + * Same as operator*(), but returns a pointer. + * @return Pointer to the value this iterator points to. + */ + Tvalue *operator->() const + { + assert(!this->map_iter->second.empty()); + return this->list_valid ? + this->list_iter.operator->() : + this->map_iter->second.begin().operator->(); + } + + inline const Tmap_iter &GetMapIter() const { return this->map_iter; } + inline const Tlist_iter &GetListIter() const { return this->list_iter; } + inline bool ListValid() const { return this->list_valid; } + + const Tkey &GetKey() const { return this->map_iter->first; } + + /** + * Prefix increment operator. Increment the iterator and set it to the + * next item in the MultiMap. This either increments the list iterator + * or the map iterator and sets list_valid accordingly. + * @return This iterator after incrementing. + */ + Self &operator++() + { + assert(!this->map_iter->second.empty()); + if (this->list_valid) { + if (++this->list_iter == this->map_iter->second.end()) { + ++this->map_iter; + this->list_valid = false; + } + } else { + this->list_iter = ++(this->map_iter->second.begin()); + if (this->list_iter == this->map_iter->second.end()) { + ++this->map_iter; + } else { + this->list_valid = true; + } + } + return *this; + } + + /** + * Postfix increment operator. Same as prefix increment, but return the + * previous state. + * @param dummy param to mark postfix. + * @return This iterator before incrementing. + */ + Self operator++(int) + { + Self tmp = *this; + this->operator++(); + return tmp; + } + + /** + * Prefix decrement operator. Decrement the iterator and set it to the + * previous item in the MultiMap. + * @return This iterator after decrementing. + */ + Self &operator--() + { + assert(!this->map_iter->second.empty()); + if (!this->list_valid) { + --this->map_iter; + this->list_iter = this->map_iter->second.end(); + assert(!this->map_iter->second.empty()); + } + + this->list_valid = (--this->list_iter != this->map_iter->second.begin()); + return *this; + } + + /** + * Postfix decrement operator. Same as prefix decrement, but return the + * previous state. + * @param dummy param to mark postfix. + * @return This iterator before decrementing. + */ + Self operator--(int) + { + Self tmp = *this; + this->operator--(); + return tmp; + } +}; + +/* Generic comparison functions for const/non-const MultiMap iterators and map iterators */ + +/** + * Compare two MultiMap iterators. Iterators are equal if + * 1. Their map iterators are equal. + * 2. They agree about list_valid. + * 3. If list_valid they agree about list_iter. + * Lots of template parameters to make all possible const and non-const types of MultiMap iterators + * (on maps with const and non-const values) comparable to each other. + * @param iter1 First iterator to compare. + * @param iter2 Second iterator to compare. + * @return If iter1 and iter2 are equal. + */ +template +bool operator==(const MultiMapIterator &iter1, const MultiMapIterator &iter2) +{ + if (iter1.GetMapIter() != iter2.GetMapIter()) return false; + if (!iter1.ListValid()) return !iter2.ListValid(); + return iter2.ListValid() ? + iter1.GetListIter() == iter2.GetListIter() : false; +} + +/** + * Inverse of operator==(). + * Lots of template parameters to make all possible const and non-const types of MultiMap iterators + * (on maps with const and non-const values) comparable to each other. + * @param iter1 First iterator to compare. + * @param iter2 Second iterator to compare. + * @return If iter1 and iter2 are not equal. + */ +template +bool operator!=(const MultiMapIterator &iter1, const MultiMapIterator &iter2) +{ + return !(iter1 == iter2); +} + +/** + * Check if a MultiMap iterator is at the begin of a list pointed to by the given map iterator. + * Lots of template parameters to make all possible const and non-const types of MultiMap iterators + * (on maps with const and non-const values) comparable to all possible types of map iterators. + * @param iter1 MultiMap iterator. + * @param iter2 Map iterator. + * @return If iter1 points to the begin of the list pointed to by iter2. + */ +template +bool operator==(const MultiMapIterator &iter1, const Tmap_iter2 &iter2) +{ + return !iter1.ListValid() && iter1.GetMapIter() == iter2; +} + +/** + * Inverse of operator==() with same signature. + * @param iter1 MultiMap iterator. + * @param iter2 Map iterator. + * @return If iter1 doesn't point to the begin of the list pointed to by iter2. + */ +template +bool operator!=(const MultiMapIterator &iter1, const Tmap_iter2 &iter2) +{ + return iter1.ListValid() || iter1.GetMapIter() != iter2; +} + +/** + * Same as operator==() with reversed order of arguments. + * @param iter2 Map iterator. + * @param iter1 MultiMap iterator. + * @return If iter1 points to the begin of the list pointed to by iter2. + */ +template +bool operator==(const Tmap_iter2 &iter2, const MultiMapIterator &iter1) +{ + return !iter1.ListValid() && iter1.GetMapIter() == iter2; +} + +/** + * Same as operator!=() with reversed order of arguments. + * @param iter2 Map iterator. + * @param iter1 MultiMap iterator. + * @return If iter1 doesn't point to the begin of the list pointed to by iter2. + */ +template +bool operator!=(const Tmap_iter2 &iter2, const MultiMapIterator &iter1) +{ + return iter1.ListValid() || iter1.GetMapIter() != iter2; +} + + +/** + * Hand-rolled multimap as map of lists. Behaves mostly like a list, but is sorted + * by Tkey so that you can easily look up ranges of equal keys. Those ranges are + * internally ordered in a deterministic way (contrary to STL multimap). All + * STL-compatible members are named in STL style, all others are named in OpenTTD + * style. + */ +template > +class MultiMap : public std::map, Tcompare > { +public: + typedef typename std::list List; + typedef typename List::iterator ListIterator; + typedef typename List::const_iterator ConstListIterator; + + typedef typename std::map Map; + typedef typename Map::iterator MapIterator; + typedef typename Map::const_iterator ConstMapIterator; + + typedef MultiMapIterator iterator; + typedef MultiMapIterator const_iterator; + + /** + * Erase the value pointed to by an iterator. The iterator may be invalid afterwards. + * @param it Iterator pointing at some value. + * @return Iterator to the element after the deleted one (or invalid). + */ + iterator erase(iterator it) + { + List &list = it.map_iter->second; + assert(!list.empty()); + if (it.list_valid) { + it.list_iter = list.erase(it.list_iter); + /* This can't be the first list element as otherwise list_valid would have + * to be false. So the list cannot be empty here. */ + if (it.list_iter == list.end()) { + ++it.map_iter; + it.list_valid = false; + } + } else { + list.erase(list.begin()); + if (list.empty()) this->Map::erase(it.map_iter++); + } + return it; + } + + /** + * Insert a value at the end of the range with the specified key. + * @param key Key to be inserted at. + * @param val Value to be inserted. + */ + void Insert(const Tkey &key, const Tvalue &val) + { + List &list = (*this)[key]; + list.push_back(val); + assert(!list.empty()); + } + + /** + * Count all items in this MultiMap. This involves iterating over the map. + * @return Number of items in the MultiMap. + */ + size_t size() const + { + size_t ret = 0; + for (ConstMapIterator it = this->Map::begin(); it != this->Map::end(); ++it) { + ret += it->second.size(); + } + return ret; + } + + /** + * Count the number of ranges with equal keys in this MultiMap. + * @return Number of ranges with equal keys. + */ + size_t MapSize() const + { + return this->Map::size(); + } + + /** + * Get a pair of iterators specifying a range of items with equal keys. + * @param key Key to look for. + * @return Range of items with given key. + */ + std::pair equal_range(const Tkey &key) + { + MapIterator begin(this->lower_bound(key)); + if (begin != this->Map::end() && begin->first == key) { + MapIterator end = begin; + return std::make_pair(begin, ++end); + } + return std::make_pair(begin, begin); + } + + /** + * Get a pair of constant iterators specifying a range of items with equal keys. + * @param key Key to look for. + * @return Constant range of items with given key. + */ + std::pair equal_range(const Tkey &key) const + { + ConstMapIterator begin(this->lower_bound(key)); + if (begin != this->Map::end() && begin->first == key) { + ConstMapIterator end = begin; + return std::make_pair(begin, ++end); + } + return std::make_pair(begin, begin); + } +}; + +#endif /* MULTIMAP_HPP */ diff --git a/src/core/overflowsafe_type.hpp b/src/core/overflowsafe_type.hpp index cfc245c6c..edc25d275 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 fa410850f..f8ff93cec 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 729f7d84a..4648f50d1 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) @@ -108,7 +111,7 @@ DEFINE_POOL_METHOD(inline void *)::AllocateItem(size_t size, size_t index) item = (Titem *)this->alloc_cache; this->alloc_cache = this->alloc_cache->next; if (Tzero) { - /* Explicitly casting to (void *) prevets a clang warning - + /* Explicitly casting to (void *) prevents a clang warning - * we are actually memsetting a (not-yet-constructed) object */ memset((void *)item, 0, sizeof(Titem)); } diff --git a/src/core/pool_type.hpp b/src/core/pool_type.hpp index f4b155842..4d20ed1ab 100644 --- a/src/core/pool_type.hpp +++ b/src/core/pool_type.hpp @@ -45,7 +45,7 @@ struct PoolBase { static void Clean(PoolType); /** - * Contructor registers this object in the pool vector. + * Constructor registers this object in the pool vector. * @param pt type of this pool. */ PoolBase(PoolType pt) : type(pt) @@ -59,6 +59,13 @@ struct PoolBase { * Virtual method that deletes all items in the pool. */ virtual void CleanPool() = 0; + +private: + /** + * Dummy private copy constructor to prevent compilers from + * copying the structure, which fails due to GetPools(). + */ + PoolBase(const PoolBase &other); }; /** @@ -74,6 +81,9 @@ struct PoolBase { */ 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 @@ -93,7 +103,7 @@ struct Pool : PoolBase { virtual void CleanPool(); /** - * Returs Titem with given index + * Returns Titem with given index * @param index of item to get * @return pointer to Titem * @pre index < this->first_unused @@ -154,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); @@ -227,7 +238,7 @@ struct Pool : PoolBase { } /** - * Returs Titem with given index + * Returns Titem with given index * @param index of item to get * @return pointer to Titem * @pre index < this->first_unused @@ -238,7 +249,7 @@ struct Pool : PoolBase { } /** - * Returs Titem with given index + * Returns Titem with given index * @param index of item to get * @return pointer to Titem * @note returns NULL for invalid index @@ -278,7 +289,7 @@ struct Pool : PoolBase { }; private: - static const size_t NO_FREE_ITEM = MAX_UVALUE(size_t); ///< Contant to indicate we can't allocate any more items + static const size_t NO_FREE_ITEM = MAX_UVALUE(size_t); ///< Constant to indicate we can't allocate any more items /** * Helper struct to cache 'freed' PoolItems so we diff --git a/src/core/random_func.cpp b/src/core/random_func.cpp index 7800591e6..5c1d07940 100644 --- a/src/core/random_func.cpp +++ b/src/core/random_func.cpp @@ -13,6 +13,8 @@ #include "random_func.hpp" #include "bitmath_func.hpp" +#include "../safeguards.h" + Randomizer _random, _interactive_random; /** @@ -29,13 +31,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; } /** @@ -75,8 +78,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 e91413de2..0c6b8f1ca 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/smallmatrix_type.hpp b/src/core/smallmatrix_type.hpp new file mode 100644 index 000000000..9ebf0372c --- /dev/null +++ b/src/core/smallmatrix_type.hpp @@ -0,0 +1,322 @@ +/* $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 smallmatrix_type.hpp Simple matrix class that allows allocating an item without the need to copy this->data needlessly. */ + +#ifndef SMALLMATRIX_TYPE_HPP +#define SMALLMATRIX_TYPE_HPP + +#include "alloc_func.hpp" +#include "mem_func.hpp" + +/** + * Simple matrix template class. + * + * Allocating a matrix in one piece reduces overhead in allocations compared + * with allocating a vector of vectors and saves some pointer dereferencing. + * However, you can only get rectangular matrixes like this and if you're + * changing their height very often performance will probably be worse than + * with a vector of vectors, due to more frequent copying of memory blocks. + * + * No iterators are provided as iterating the columns would require persistent + * column objects. Those do not exist. Providing iterators with transient + * column objects would tie each iterator to a column object, thus replacing + * previously retrieved columns when iterating and defeating the point of + * iteration. + * + * It's expected that the items don't need to be constructed or deleted by the + * container. Only memory allocation and deallocation is performed. This is the + * same for all openttd "SmallContainer" classes. + * + * @tparam T The type of the items stored + */ +template +class SmallMatrix { +protected: + T *data; ///< The pointer to the first item + uint width; ///< Number of items over first axis + uint height; ///< Number of items over second axis + uint capacity; ///< The available space for storing items + +public: + + SmallMatrix() : data(NULL), width(0), height(0), capacity(0) {} + + /** + * Copy constructor. + * @param other The other matrix to copy. + */ + SmallMatrix(const SmallMatrix &other) : data(NULL), width(0), height(0), capacity(0) + { + this->Assign(other); + } + + ~SmallMatrix() + { + free(this->data); + } + + /** + * Assignment. + * @param other The other matrix to assign. + */ + SmallMatrix &operator=(const SmallMatrix &other) + { + this->Assign(other); + return *this; + } + + /** + * Assign items from other vector. + */ + inline void Assign(const SmallMatrix &other) + { + if (&other == this) return; + + this->height = other.Height(); + this->width = other.Width(); + uint num_items = this->width * this->height; + if (num_items > this->capacity) { + this->capacity = num_items; + free(this->data); + this->data = MallocT(num_items); + MemCpyT(this->data, other[0], num_items); + } else if (num_items > 0) { + MemCpyT(this->data, other[0], num_items); + } + } + + /** + * Remove all rows from the matrix. + */ + inline void Clear() + { + /* In fact we just reset the width avoiding the need to + * probably reallocate the same amount of memory the matrix was + * previously using. */ + this->width = 0; + } + + /** + * Remove all items from the list and free allocated memory. + */ + inline void Reset() + { + this->height = 0; + this->width = 0; + this->capacity = 0; + free(this->data); + this->data = NULL; + } + + /** + * Compact the matrix down to the smallest possible size. + */ + inline void Compact() + { + uint capacity = this->height * this->width; + if (capacity >= this->capacity) return; + this->capacity = capacity; + this->data = ReallocT(this->data, this->capacity); + } + + /** + * Erase a column, replacing it with the last one. + * @param x Position of the column. + */ + void EraseColumn(uint x) + { + if (x < --this->width) { + MemCpyT(this->data + x * this->height, + this->data + this->width * this->height, + this->height); + } + } + + /** + * Remove columns from the matrix while preserving the order of other columns. + * @param x First column to remove. + * @param count Number of consecutive columns to remove. + */ + void EraseColumnPreservingOrder(uint x, uint count = 1) + { + if (count == 0) return; + assert(x < this->width); + assert(x + count <= this->width); + this->width -= count; + uint to_move = (this->width - x) * this->height; + if (to_move > 0) { + MemMoveT(this->data + x * this->height, + this->data + (x + count) * this->height, to_move); + } + } + + /** + * Erase a row, replacing it with the last one. + * @param x Position of the row. + */ + void EraseRow(uint y) + { + if (y < this->height - 1) { + for (uint x = 0; x < this->width; ++x) { + this->data[x * this->height + y] = + this->data[(x + 1) * this->height - 1]; + } + } + this->Resize(this->width, this->height - 1); + } + + /** + * Remove columns from the matrix while preserving the order of other columns. + * @param x First column to remove. + * @param count Number of consecutive columns to remove. + */ + void EraseRowPreservingOrder(uint y, uint count = 1) + { + if (this->height > count + y) { + for (uint x = 0; x < this->width; ++x) { + MemMoveT(this->data + x * this->height + y, + this->data + x * this->height + y + count, + this->height - count - y); + } + } + this->Resize(this->width, this->height - count); + } + + /** + * Append rows. + * @param to_add Number of rows to append. + */ + inline void AppendRow(uint to_add = 1) + { + this->Resize(this->width, to_add + this->height); + } + + /** + * Append rows. + * @param to_add Number of rows to append. + */ + inline void AppendColumn(uint to_add = 1) + { + this->Resize(to_add + this->width, this->height); + } + + /** + * Set the size to a specific width and height, preserving item positions + * as far as possible in the process. + * @param width Target width. + * @param height Target height. + */ + inline void Resize(uint new_width, uint new_height) + { + uint new_capacity = new_width * new_height; + T *new_data = NULL; + void (*copy)(T *dest, const T *src, size_t count) = NULL; + if (new_capacity > this->capacity) { + /* If the data doesn't fit into current capacity, resize and copy ... */ + new_data = MallocT(new_capacity); + copy = &MemCpyT; + } else { + /* ... otherwise just move the columns around, if necessary. */ + new_data = this->data; + copy = &MemMoveT; + } + if (this->height != new_height || new_data != this->data) { + if (this->height > 0) { + if (new_height > this->height) { + /* If matrix is growing, copy from the back to avoid + * overwriting uncopied data. */ + for (uint x = this->width; x > 0; --x) { + if (x * new_height > new_capacity) continue; + (*copy)(new_data + (x - 1) * new_height, + this->data + (x - 1) * this->height, + min(this->height, new_height)); + } + } else { + /* If matrix is shrinking copy from the front. */ + for (uint x = 0; x < this->width; ++x) { + if ((x + 1) * new_height > new_capacity) break; + (*copy)(new_data + x * new_height, + this->data + x * this->height, + min(this->height, new_height)); + } + } + } + this->height = new_height; + if (new_data != this->data) { + free(this->data); + this->data = new_data; + this->capacity = new_capacity; + } + } + this->width = new_width; + } + + inline uint Height() const + { + return this->height; + } + + inline uint Width() const + { + return this->width; + } + + /** + * Get item x/y (const). + * + * @param x X-position of the item. + * @param y Y-position of the item. + * @return Item at specified position. + */ + inline const T &Get(uint x, uint y) const + { + assert(x < this->width && y < this->height); + return this->data[x * this->height + y]; + } + + /** + * Get item x/y. + * + * @param x X-position of the item. + * @param y Y-position of the item. + * @return Item at specified position. + */ + inline T &Get(uint x, uint y) + { + assert(x < this->width && y < this->height); + return this->data[x * this->height + y]; + } + + /** + * Get column "number" (const) + * + * @param X Position of the column. + * @return Column at "number". + */ + inline const T *operator[](uint x) const + { + assert(x < this->width); + return this->data + x * this->height; + } + + /** + * Get column "number" (const) + * + * @param X Position of the column. + * @return Column at "number". + */ + inline T *operator[](uint x) + { + assert(x < this->width); + return this->data + x * this->height; + } +}; + +#endif /* SMALLMATRIX_TYPE_HPP */ diff --git a/src/core/smallstack_type.hpp b/src/core/smallstack_type.hpp new file mode 100644 index 000000000..31edba081 --- /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/core/smallvec_type.hpp b/src/core/smallvec_type.hpp index ccf8dbaec..62de176a5 100644 --- a/src/core/smallvec_type.hpp +++ b/src/core/smallvec_type.hpp @@ -144,6 +144,20 @@ class SmallVector { return &this->data[begin]; } + /** + * Set the size of the vector, effectively truncating items from the end or appending uninitialised ones. + * @param num_items Target size. + */ + inline void Resize(uint num_items) + { + this->items = num_items; + + if (this->items > this->capacity) { + this->capacity = Align(this->items, S); + this->data = ReallocT(this->data, this->capacity); + } + } + /** * Search for the first occurrence of an item. * The '!=' operator of T is used for comparison. @@ -212,6 +226,21 @@ class SmallVector { *item = this->data[--this->items]; } + /** + * Remove items from the vector while preserving the order of other items. + * @param pos First item to remove. + * @param count Number of consecutive items to remove. + */ + void ErasePreservingOrder(uint pos, uint count = 1) + { + if (count == 0) return; + assert(pos < this->items); + assert(pos + count <= this->items); + this->items -= count; + uint to_move = this->items - pos; + if (to_move > 0) MemMoveT(this->data + pos, this->data + pos + count, to_move); + } + /** * Tests whether a item is present in the vector, and appends it to the end if not. * The '!=' operator of T is used for comparison. diff --git a/src/core/sort_func.hpp b/src/core/sort_func.hpp index 4181fd63a..470a0ccf4 100644 --- a/src/core/sort_func.hpp +++ b/src/core/sort_func.hpp @@ -37,7 +37,7 @@ static inline void QSortT(T *base, uint num, int (CDECL *comparator)(const T*, c /** * Type safe Gnome Sort. * - * This is a slightly modifyied Gnome search. The basic + * This is a slightly modified Gnome search. The basic * Gnome search tries to sort already sorted list parts. * The modification skips these. * 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 47cc1afd5..c48b8cbd4 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 000000000..08495dfc1 --- /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 6881ff31f..e8290a7c3 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/crashlog.h b/src/crashlog.h index 4dd8c83d8..6f7fb3c21 100644 --- a/src/crashlog.h +++ b/src/crashlog.h @@ -72,7 +72,7 @@ class CrashLog { virtual char *LogRegisters(char *buffer, const char *last) const; /** - * Writes the dynamically linked libaries/modules to the buffer, if there + * Writes the dynamically linked libraries/modules to the buffer, if there * is information about it available. * @param buffer The begin where to write at. * @param last The last position in the buffer to write to. diff --git a/src/currency.cpp b/src/currency.cpp index 005ad9842..56111022c 100644 --- a/src/currency.cpp +++ b/src/currency.cpp @@ -10,6 +10,8 @@ /** @file currency.cpp Support for different currencies. */ #include "stdafx.h" +#include "core/bitmath_func.hpp" + #include "currency.h" #include "news_func.h" #include "settings_type.h" @@ -18,12 +20,14 @@ #include "table/strings.h" +#include "safeguards.h" + /* exchange rate prefix symbol_pos * | separator | postfix | * | | Euro year | | | name * | | | | | | | */ /** The original currency specifications. */ -static const CurrencySpec origin_currency_specs[NUM_CURRENCY] = { +static const CurrencySpec origin_currency_specs[CURRENCY_END] = { { 1, "", CF_NOEURO, "\xC2\xA3", "", 0, STR_GAME_OPTIONS_CURRENCY_GBP }, ///< british pound { 2, "", CF_NOEURO, "$", "", 0, STR_GAME_OPTIONS_CURRENCY_USD }, ///< american dollar { 2, "", CF_ISEURO, "\xE2\x82\xAC", "", 0, STR_GAME_OPTIONS_CURRENCY_EUR }, ///< euro @@ -55,49 +59,13 @@ static const CurrencySpec origin_currency_specs[NUM_CURRENCY] = { { 4, "", 2014, "", 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 + { 1, "", CF_NOEURO, "", "", 2, STR_GAME_OPTIONS_CURRENCY_CUSTOM }, ///< custom currency (add further languages below) + { 3, "", CF_NOEURO, "", NBSP "GEL", 1, STR_GAME_OPTIONS_CURRENCY_GEL }, ///< Georgian Lari + { 4901, "", CF_NOEURO, "", NBSP "Rls", 1, STR_GAME_OPTIONS_CURRENCY_IRR }, ///< Iranian Rial }; /** Array of currencies used by the system */ -CurrencySpec _currency_specs[NUM_CURRENCY]; - -/** - * These enums are only declared in order to make sens - * out of the TTDPatch_To_OTTDIndex array that will follow - * Every currency used by Ottd is there, just in case TTDPatch will - * add those missing in its code - */ -enum Currencies { - CURR_GBP, - CURR_USD, - CURR_EUR, - CURR_JPY, - CURR_ATS, - CURR_BEF, - CURR_CHF, - CURR_CZK, - CURR_DEM, - CURR_DKK, - CURR_ESP, - CURR_FIM, - CURR_FRF, - CURR_GRD, - CURR_HUF, - CURR_ISK, - CURR_ITL, - CURR_NLG, - CURR_NOK, - CURR_PLN, - CURR_RON, - CURR_RUR, - CURR_SIT, - CURR_SEK, - CURR_YTL, - CURR_SKK, - CURR_BRL, - CURR_EEK, - CURR_LTL, -}; +CurrencySpec _currency_specs[CURRENCY_END]; /** * This array represent the position of OpenTTD's currencies, @@ -107,29 +75,29 @@ enum Currencies { */ const byte TTDPatch_To_OTTDIndex[] = { - CURR_GBP, - CURR_USD, - CURR_FRF, - CURR_DEM, - CURR_JPY, - CURR_ESP, - CURR_HUF, - CURR_PLN, - CURR_ATS, - CURR_BEF, - CURR_DKK, - CURR_FIM, - CURR_GRD, - CURR_CHF, - CURR_NLG, - CURR_ITL, - CURR_SEK, - CURR_RUR, - CURR_EUR, + CURRENCY_GBP, + CURRENCY_USD, + CURRENCY_FRF, + CURRENCY_DEM, + CURRENCY_JPY, + CURRENCY_ESP, + CURRENCY_HUF, + CURRENCY_PLN, + CURRENCY_ATS, + CURRENCY_BEF, + CURRENCY_DKK, + CURRENCY_FIM, + CURRENCY_GRD, + CURRENCY_CHF, + CURRENCY_NLG, + CURRENCY_ITL, + CURRENCY_SEK, + CURRENCY_RUR, + CURRENCY_EUR, }; /** - * Will return the ottd's index correspondance to + * Will return the ottd's index correspondence to * the ttdpatch's id. If the id is bigger than the array, * it is a grf written for ottd, thus returning the same id. * Only called from newgrf.cpp @@ -145,19 +113,19 @@ byte GetNewgrfCurrencyIdConverted(byte grfcurr_id) * get a mask of the allowed currencies depending on the year * @return mask of currencies */ -uint GetMaskOfAllowedCurrencies() +uint64 GetMaskOfAllowedCurrencies() { - uint mask = 0; + uint64 mask = 0LL; uint i; - for (i = 0; i < NUM_CURRENCY; i++) { + for (i = 0; i < CURRENCY_END; i++) { Year to_euro = _currency_specs[i].to_euro; if (to_euro != CF_NOEURO && to_euro != CF_ISEURO && _cur_year >= to_euro) continue; if (to_euro == CF_ISEURO && _cur_year < 2000) continue; - mask |= (1 << i); + SetBit(mask, i); } - mask |= (1 << CUSTOM_CURRENCY_ID); // always allow custom currency + SetBit(mask, CURRENCY_CUSTOM); // always allow custom currency return mask; } @@ -178,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 curreny 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]; + } } /** @@ -195,11 +163,11 @@ void ResetCurrencies(bool preserve_custom) StringID *BuildCurrencyDropdown() { /* Allow room for all currencies, plus a terminator entry */ - static StringID names[NUM_CURRENCY + 1]; + static StringID names[CURRENCY_END + 1]; uint i; /* Add each name */ - for (i = 0; i < NUM_CURRENCY; i++) { + for (i = 0; i < CURRENCY_END; i++) { names[i] = _currency_specs[i].name; } /* Terminate the list */ diff --git a/src/currency.h b/src/currency.h index 40a110968..ab8026002 100644 --- a/src/currency.h +++ b/src/currency.h @@ -17,8 +17,49 @@ static const int CF_NOEURO = 0; ///< Currency never switches to the Euro (as far as known). static const int CF_ISEURO = 1; ///< Currency _is_ the Euro. -static const uint NUM_CURRENCY = 32; ///< Number of currencies. -static const int CUSTOM_CURRENCY_ID = NUM_CURRENCY - 1; ///< Index of the custom currency. + +/** + * This enum gives the currencies a unique id which must be maintained for + * savegame compatibility and in order to refer to them quickly, especially + * for referencing the custom one. + */ +enum Currencies { + CURRENCY_GBP, ///< British Pound + CURRENCY_USD, ///< US Dollar + CURRENCY_EUR, ///< Euro + CURRENCY_JPY, ///< Japanese Yen + CURRENCY_ATS, ///< Austrian Schilling + CURRENCY_BEF, ///< Belgian Franc + CURRENCY_CHF, ///< Swiss Franc + CURRENCY_CZK, ///< Czech Koruna + CURRENCY_DEM, ///< Deutsche Mark + CURRENCY_DKK, ///< Danish Krona + CURRENCY_ESP, ///< Spanish Peseta + CURRENCY_FIM, ///< Finish Markka + CURRENCY_FRF, ///< French Franc + CURRENCY_GRD, ///< Greek Drachma + CURRENCY_HUF, ///< Hungarian Forint + CURRENCY_ISK, ///< Icelandic Krona + CURRENCY_ITL, ///< Italian Lira + CURRENCY_NLG, ///< Dutch Gulden + CURRENCY_NOK, ///< Norwegian Krone + CURRENCY_PLN, ///< Polish Zloty + CURRENCY_RON, ///< Romenian Leu + CURRENCY_RUR, ///< Russian Rouble + CURRENCY_SIT, ///< Slovenian Tolar + CURRENCY_SEK, ///< Swedish Krona + CURRENCY_YTL, ///< Turkish Lira + CURRENCY_SKK, ///< Slovak Kornuna + CURRENCY_BRL, ///< Brazilian Real + CURRENCY_EEK, ///< Estonian Krooni + CURRENCY_LTL, ///< Lithuanian Litas + CURRENCY_KRW, ///< South Korean Won + CURRENCY_ZAR, ///< South African Rand + CURRENCY_CUSTOM, ///< Custom currency + CURRENCY_GEL, ///< Georgian Lari + CURRENCY_IRR, ///< Iranian Rial + CURRENCY_END, ///< always the last item +}; /** Specification of a currency. */ struct CurrencySpec { @@ -40,14 +81,13 @@ struct CurrencySpec { StringID name; }; - -extern CurrencySpec _currency_specs[NUM_CURRENCY]; +extern CurrencySpec _currency_specs[CURRENCY_END]; /* XXX small hack, but makes the rest of the code a bit nicer to read */ -#define _custom_currency (_currency_specs[CUSTOM_CURRENCY_ID]) +#define _custom_currency (_currency_specs[CURRENCY_CUSTOM]) #define _currency ((const CurrencySpec*)&_currency_specs[GetGameSettings().locale.currency]) -uint GetMaskOfAllowedCurrencies(); +uint64 GetMaskOfAllowedCurrencies(); void CheckSwitchToEuro(); void ResetCurrencies(bool preserve_custom = true); StringID *BuildCurrencyDropdown(); diff --git a/src/date.cpp b/src/date.cpp index db066263d..a853591b4 100644 --- a/src/date.cpp +++ b/src/date.cpp @@ -18,8 +18,11 @@ #include "date_func.h" #include "vehicle_base.h" #include "rail_gui.h" +#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) @@ -138,7 +141,7 @@ void ConvertDateToYMD(Date date, YearMonthDay *ymd) } /** - * Converts a tupe of Year, Month and Day to a Date. + * Converts a tuple of Year, Month and Day to a Date. * @param year is a number between 0..MAX_YEAR * @param month is a number between 0..11 * @param day is a number between 1..31 @@ -154,6 +157,15 @@ Date ConvertYMDToDate(Year year, Month month, Day day) return DAYS_TILL(year) + days; } +/** + * Converts the current day counter and date fraction into an absolute tick value. + * @returns current time as ticks + */ +Ticks GetCurrentTickCount() +{ + return _date * DAY_TICKS + _date_fract; +} + /** Functions used by the IncreaseDate function */ extern void EnginesDailyLoop(); @@ -204,13 +216,16 @@ static void OnNewYear() /* check if we reached the maximum year, decrement dates by a year */ } else if (_cur_year == MAX_YEAR + 1) { Vehicle *v; - uint days_this_year; + int days_this_year; _cur_year--; days_this_year = IsLeapYear(_cur_year) ? DAYS_IN_LEAP_YEAR : DAYS_IN_YEAR; _date -= days_this_year; FOR_ALL_VEHICLES(v) v->date_of_last_service -= days_this_year; + LinkGraph *lg; + FOR_ALL_LINK_GRAPHS(lg) lg->ShiftDates(-days_this_year); + #ifdef ENABLE_NETWORK /* Because the _date wraps here, and text-messages expire by game-days, we have to clean out * all of them if the date is set back, else those messages will hang for ever */ diff --git a/src/date_func.h b/src/date_func.h index 6bbde5955..0ca380a01 100644 --- a/src/date_func.h +++ b/src/date_func.h @@ -23,6 +23,7 @@ extern uint16 _tick_counter; void SetDate(Date date, DateFract fract); void ConvertDateToYMD(Date date, YearMonthDay *ymd); Date ConvertYMDToDate(Year year, Month month, Day day); +Ticks GetCurrentTickCount(); /** * Checks whether the given year is a leap year or not. diff --git a/src/date_gui.cpp b/src/date_gui.cpp index b2421556c..468a74db9 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 { @@ -38,22 +40,22 @@ struct SetDateWindow : Window { * @param max_year the maximum year (inclusive) to show in the year dropdown * @param callback the callback to call once a date has been selected */ - SetDateWindow(const WindowDesc *desc, WindowNumber window_number, Window *parent, Date initial_date, Year min_year, Year max_year, SetDateCallback *callback) : - Window(), + SetDateWindow(WindowDesc *desc, WindowNumber window_number, Window *parent, Date initial_date, Year min_year, Year max_year, SetDateCallback *callback) : + Window(desc), callback(callback), min_year(max(MIN_YEAR, min_year)), max_year(min(MAX_YEAR, max_year)) { assert(this->min_year <= this->max_year); this->parent = parent; - this->InitNested(desc, window_number); + this->InitNested(window_number); if (initial_date == 0) initial_date = _date; ConvertDateToYMD(initial_date, &this->date); this->date.year = Clamp(this->date.year, min_year, max_year); } - virtual Point OnInitialPosition(const WindowDesc *desc, int16 sm_width, int16 sm_height, int window_number) + virtual Point OnInitialPosition(int16 sm_width, int16 sm_height, int window_number) { Point pt = { this->parent->left + this->parent->width / 2 - sm_width / 2, this->parent->top + this->parent->height / 2 - sm_height / 2 }; return pt; @@ -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; } @@ -146,7 +148,7 @@ struct SetDateWindow : Window { break; case WID_SD_SET_DATE: - if (this->callback != NULL) this->callback(this->parent, ConvertYMDToDate(this->date.year, this->date.month, this->date.day)); + if (this->callback != NULL) this->callback(this, ConvertYMDToDate(this->date.year, this->date.month, this->date.day)); delete this; break; } @@ -194,8 +196,8 @@ static const NWidgetPart _nested_set_date_widgets[] = { }; /** Description of the date setting window. */ -static const WindowDesc _set_date_desc( - WDP_CENTER, 0, 0, +static WindowDesc _set_date_desc( + WDP_CENTER, NULL, 0, 0, WC_SET_DATE, WC_NONE, 0, _nested_set_date_widgets, lengthof(_nested_set_date_widgets) diff --git a/src/date_type.h b/src/date_type.h index a004413a7..b20ace91e 100644 --- a/src/date_type.h +++ b/src/date_type.h @@ -33,6 +33,7 @@ static const int DAYS_IN_LEAP_YEAR = 366; ///< sometimes, you need one day more. static const int STATION_RATING_TICKS = 185; ///< cycle duration for updating station rating static const int STATION_ACCEPTANCE_TICKS = 250; ///< cycle duration for updating station acceptance +static const int STATION_LINKGRAPH_TICKS = 504; ///< cycle duration for cleaning dead links static const int CARGO_AGING_TICKS = 185; ///< cycle duration for aging cargo static const int INDUSTRY_PRODUCE_TICKS = 256; ///< cycle duration for industry production static const int TOWN_GROWTH_TICKS = 70; ///< cycle duration for towns trying to grow. (this originates from the size of the town array in TTD diff --git a/src/debug.cpp b/src/debug.cpp index e6fb61292..16eecadad 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; } @@ -131,13 +135,14 @@ static void debug_print(const char *dbg, const char *buf) fflush(f); #endif } else { + char buffer[512]; + seprintf(buffer, lastof(buffer), "%sdbg: [%s] %s\n", GetLogPrefix(), dbg, buf); #if defined(WINCE) - /* We need to do OTTD2FS twice, but as it uses a static buffer, we need to store one temporary */ - TCHAR tbuf[512]; - _sntprintf(tbuf, sizeof(tbuf), _T("%s"), OTTD2FS(dbg)); - NKDbgPrintfW(_T("dbg: [%s] %s\n"), tbuf, OTTD2FS(buf)); + NKDbgPrintfW(OTTD2FS(buffer)); +#elif defined(WIN32) || defined(WIN64) + _fputts(OTTD2FS(buffer, true), stderr); #else - fprintf(stderr, "%sdbg: [%s] %s\n", GetLogPrefix(), dbg, buf); + fputs(buffer, stderr); #endif #ifdef ENABLE_NETWORK NetworkAdminConsole(dbg, buf); @@ -158,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); @@ -233,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 ecb6a59b7..7da72da1d 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: @@ -83,7 +79,7 @@ uint64 ottd_rdtsc(); * * for (int i = 0; i < 5; i++) { * TIC(); - * --Do yuor code-- + * --Do your code-- * TOC("A name", 5); * } * diff --git a/src/dedicated.cpp b/src/dedicated.cpp index 83c6c1d21..ce383ee4a 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 1805e3286..d4b102ddc 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. @@ -83,7 +160,7 @@ class File { * @param filename the file to open * @post the file is open; otherwise the application is killed. */ - File(const char *filename) : filename(filename) + File(const char *filename) { this->fp = fopen(filename, "r"); if (this->fp == NULL) { @@ -129,7 +206,6 @@ class File { private: FILE *fp; ///< The currently opened file. char *dirname; ///< The directory of the file. - const char *filename; ///< The name of the file. }; /** A token returned by the tokenizer. */ @@ -435,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 == '.') { @@ -445,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 == '.') { @@ -463,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); } @@ -667,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; @@ -896,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; @@ -907,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 4fb69c8e3..821399fd2 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 7027554bd..5101b7c2c 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 4c1ccca10..6b44428af 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. @@ -45,11 +47,12 @@ static const NWidgetPart _nested_train_depot_widgets[] = { NWidget(WWT_CLOSEBOX, COLOUR_GREY), NWidget(WWT_CAPTION, COLOUR_GREY, WID_D_CAPTION), SetDataTip(STR_DEPOT_CAPTION, STR_NULL), NWidget(WWT_SHADEBOX, COLOUR_GREY), + NWidget(WWT_DEFSIZEBOX, COLOUR_GREY), NWidget(WWT_STICKYBOX, COLOUR_GREY), EndContainer(), NWidget(NWID_HORIZONTAL), NWidget(NWID_VERTICAL), - NWidget(WWT_MATRIX, COLOUR_GREY, WID_D_MATRIX), SetDataTip(0x0, STR_NULL), SetResize(1, 1), SetScrollbar(WID_D_V_SCROLL), + NWidget(WWT_MATRIX, COLOUR_GREY, WID_D_MATRIX), SetResize(1, 1), SetScrollbar(WID_D_V_SCROLL), NWidget(NWID_SELECTION, INVALID_COLOUR, WID_D_SHOW_H_SCROLL), NWidget(NWID_HSCROLLBAR, COLOUR_GREY, WID_D_H_SCROLL), EndContainer(), @@ -78,29 +81,29 @@ static const NWidgetPart _nested_train_depot_widgets[] = { EndContainer(), }; -static const WindowDesc _train_depot_desc( - WDP_AUTO, 362, 123, +static WindowDesc _train_depot_desc( + WDP_AUTO, "depot_train", 362, 123, WC_VEHICLE_DEPOT, WC_NONE, 0, _nested_train_depot_widgets, lengthof(_nested_train_depot_widgets) ); -static const WindowDesc _road_depot_desc( - WDP_AUTO, 316, 97, +static WindowDesc _road_depot_desc( + WDP_AUTO, "depot_roadveh", 316, 97, WC_VEHICLE_DEPOT, WC_NONE, 0, _nested_train_depot_widgets, lengthof(_nested_train_depot_widgets) ); -static const WindowDesc _ship_depot_desc( - WDP_AUTO, 306, 99, +static WindowDesc _ship_depot_desc( + WDP_AUTO, "depot_ship", 306, 99, WC_VEHICLE_DEPOT, WC_NONE, 0, _nested_train_depot_widgets, lengthof(_nested_train_depot_widgets) ); -static const WindowDesc _aircraft_depot_desc( - WDP_AUTO, 332, 99, +static WindowDesc _aircraft_depot_desc( + WDP_AUTO, "depot_aircraft", 332, 99, WC_VEHICLE_DEPOT, WC_NONE, 0, _nested_train_depot_widgets, lengthof(_nested_train_depot_widgets) @@ -229,7 +232,7 @@ struct DepotWindow : Window { Scrollbar *hscroll; ///< Only for trains. Scrollbar *vscroll; - DepotWindow(const WindowDesc *desc, TileIndex tile, VehicleType type) : Window() + DepotWindow(WindowDesc *desc, TileIndex tile, VehicleType type) : Window(desc) { assert(IsCompanyBuildableVehicleType(type)); // ensure that we make the call with a valid type @@ -239,16 +242,17 @@ struct DepotWindow : Window { this->type = type; this->num_columns = 1; // for non-trains this gets set in FinishInitNested() - this->CreateNestedTree(desc); + this->CreateNestedTree(); this->hscroll = (this->type == VEH_TRAIN ? this->GetScrollbar(WID_D_H_SCROLL) : NULL); this->vscroll = this->GetScrollbar(WID_D_V_SCROLL); /* Don't show 'rename button' of aircraft hangar */ this->GetWidget(WID_D_SHOW_RENAME)->SetDisplayedPlane(type == VEH_AIRCRAFT ? SZSP_NONE : 0); /* Only train depots have a horizontal scrollbar and a 'sell chain' button */ + if (type == VEH_TRAIN) this->GetWidget(WID_D_MATRIX)->widget_data = 1 << MAT_COL_START; this->GetWidget(WID_D_SHOW_H_SCROLL)->SetDisplayedPlane(type == VEH_TRAIN ? 0 : SZSP_HORIZONTAL); this->GetWidget(WID_D_SHOW_SELL_CHAIN)->SetDisplayedPlane(type == VEH_TRAIN ? 0 : SZSP_NONE); this->SetupWidgetData(type); - this->FinishInitNested(desc, tile); + this->FinishInitNested(tile); this->owner = GetTileOwner(tile); OrderBackup::Reset(); @@ -334,27 +338,26 @@ struct DepotWindow : Window { bool rtl = _current_text_dir == TD_RTL; /* Set the row and number of boxes in each row based on the number of boxes drawn in the matrix */ - uint16 mat_data = this->GetWidget(WID_D_MATRIX)->widget_data; - uint16 rows_in_display = GB(mat_data, MAT_ROW_START, MAT_ROW_BITS); - uint16 boxes_in_each_row = GB(mat_data, MAT_COL_START, MAT_COL_BITS); + const NWidgetCore *wid = this->GetWidget(WID_D_MATRIX); + uint16 rows_in_display = wid->current_y / wid->resize_y; - uint16 num = this->vscroll->GetPosition() * boxes_in_each_row; - int maxval = min(this->vehicle_list.Length(), num + (rows_in_display * boxes_in_each_row)); + uint16 num = this->vscroll->GetPosition() * this->num_columns; + int maxval = min(this->vehicle_list.Length(), num + (rows_in_display * this->num_columns)); int y; for (y = r.top + 1; num < maxval; y += this->resize.step_height) { // Draw the rows - for (byte i = 0; i < boxes_in_each_row && num < maxval; i++, num++) { + for (byte i = 0; i < this->num_columns && num < maxval; i++, num++) { /* Draw all vehicles in the current row */ const Vehicle *v = this->vehicle_list[num]; - if (boxes_in_each_row == 1) { + if (this->num_columns == 1) { this->DrawVehicleInDepot(v, r.left, r.right, y); } else { - int x = r.left + (rtl ? (boxes_in_each_row - i - 1) : i) * this->resize.step_width; + int x = r.left + (rtl ? (this->num_columns - i - 1) : i) * this->resize.step_width; this->DrawVehicleInDepot(v, x, x + this->resize.step_width - 1, y); } } } - maxval = min(this->vehicle_list.Length() + this->wagon_list.Length(), (this->vscroll->GetPosition() * boxes_in_each_row) + (rows_in_display * boxes_in_each_row)); + maxval = min(this->vehicle_list.Length() + this->wagon_list.Length(), (this->vscroll->GetPosition() * this->num_columns) + (rows_in_display * this->num_columns)); /* Draw the train wagons without an engine in front. */ for (; num < maxval; num++, y += this->resize.step_height) { @@ -404,8 +407,7 @@ struct DepotWindow : Window { uint row = y / this->resize.step_height; if (row >= this->vscroll->GetCapacity()) return MODE_ERROR; - uint boxes_in_each_row = GB(matrix_widget->widget_data, MAT_COL_START, MAT_COL_BITS); - uint pos = ((row + this->vscroll->GetPosition()) * boxes_in_each_row) + xt; + uint pos = ((row + this->vscroll->GetPosition()) * this->num_columns) + xt; if (this->vehicle_list.Length() + this->wagon_list.Length() <= pos) { /* Clicking on 'line' / 'block' without a vehicle */ @@ -442,6 +444,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; @@ -600,7 +603,7 @@ struct DepotWindow : Window { uint min_height = 0; if (this->type == VEH_TRAIN) { - SetDParamMaxValue(0, 1000); + SetDParamMaxValue(0, 1000, 0, FS_SMALL); SetDParam(1, 1); this->count_width = GetStringBoundingBox(STR_TINY_BLACK_DECIMAL).width + WD_FRAMERECT_LEFT + WD_FRAMERECT_RIGHT; } else { @@ -744,7 +747,7 @@ struct DepotWindow : Window { } case WID_D_SELL_ALL: - /* Only open the confimation window if there are anything to sell */ + /* Only open the confirmation window if there are anything to sell */ if (this->vehicle_list.Length() != 0 || this->wagon_list.Length() != 0) { TileIndex tile = this->window_number; byte vehtype = this->type; @@ -802,7 +805,7 @@ struct DepotWindow : Window { for (const Vehicle *w = v; w != NULL; w = w->Next()) { if (w->cargo_cap > 0 && w->cargo_type < NUM_CARGO) { capacity[w->cargo_type] += w->cargo_cap; - loaded [w->cargo_type] += w->cargo.Count(); + loaded [w->cargo_type] += w->cargo.StoredCount(); } if (w->type == VEH_TRAIN && !w->HasArticulatedPart()) { @@ -842,8 +845,7 @@ struct DepotWindow : Window { */ virtual bool OnVehicleSelect(const Vehicle *v) { - /* Suppress the vehicle GUI when share-cloning. There is no point to it, starting vehicles can also be done via the depot GUI. */ - if (DoCommandP(this->window_number, v->index, _ctrl_pressed ? 1 : 0, CMD_CLONE_VEHICLE | CMD_MSG(STR_ERROR_CAN_T_BUY_TRAIN + v->type), _ctrl_pressed ? NULL : CcCloneVehicle)) { + if (DoCommandP(this->window_number, v->index, _ctrl_pressed ? 1 : 0, CMD_CLONE_VEHICLE | CMD_MSG(STR_ERROR_CAN_T_BUY_TRAIN + v->type), CcCloneVehicle)) { ResetObjectToPlace(); } return true; @@ -968,14 +970,12 @@ struct DepotWindow : Window { virtual void OnResize() { - NWidgetCore *nwi = this->GetWidget(WID_D_MATRIX); this->vscroll->SetCapacityFromWidget(this, WID_D_MATRIX); + NWidgetCore *nwi = this->GetWidget(WID_D_MATRIX); if (this->type == VEH_TRAIN) { this->hscroll->SetCapacity(nwi->current_x - this->header_width - this->count_width); - nwi->widget_data = (this->vscroll->GetCapacity() << MAT_ROW_START) + (1 << MAT_COL_START); } else { this->num_columns = nwi->current_x / nwi->resize_x; - nwi->widget_data = (this->vscroll->GetCapacity() << MAT_ROW_START) + (this->num_columns << MAT_COL_START); } } @@ -1010,7 +1010,7 @@ void ShowDepotWindow(TileIndex tile, VehicleType type) { if (BringWindowToFrontById(WC_VEHICLE_DEPOT, tile) != NULL) return; - const WindowDesc *desc; + WindowDesc *desc; switch (type) { default: NOT_REACHED(); case VEH_TRAIN: desc = &_train_depot_desc; break; diff --git a/src/depot_map.h b/src/depot_map.h index b4f7a11ec..c304790f8 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 bf92a9ad6..888948584 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); } @@ -93,11 +131,12 @@ static inline DiagDirection ReverseDiagDir(DiagDirection d) * the new DiagDirection. * * @param d The DiagDirection - * @param delta The difference to applie on + * @param delta The difference to apply on * @return The new direction which was calculated */ 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 interger 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/direction_type.h b/src/direction_type.h index c14ab5150..e6e08a182 100644 --- a/src/direction_type.h +++ b/src/direction_type.h @@ -66,7 +66,7 @@ enum DirDiff { DIRDIFF_SAME = 0, ///< Both directions faces to the same direction DIRDIFF_45RIGHT = 1, ///< Angle of 45 degrees right DIRDIFF_90RIGHT = 2, ///< Angle of 90 degrees right - DIRDIFF_REVERSE = 4, ///< One direction is the opposit of the other one + DIRDIFF_REVERSE = 4, ///< One direction is the opposite of the other one DIRDIFF_90LEFT = 6, ///< Angle of 90 degrees left DIRDIFF_45LEFT = 7, ///< Angle of 45 degrees left }; @@ -119,7 +119,7 @@ DECLARE_POSTFIX_INCREMENT(DiagDirDiff) /** * Enumeration for the two axis X and Y * - * This enumeration represente the two axis X and Y in the game. + * This enumeration represents the two axis X and Y in the game. * The X axis is the one which goes align the north-west edge * (and south-east edge). The Y axis must be so the one which goes * align the north-east edge (and south-west) edge. diff --git a/src/disaster_cmd.cpp b/src/disaster_cmd.cpp index c5bca0aed..1be0f217a 100644 --- a/src/disaster_cmd.cpp +++ b/src/disaster_cmd.cpp @@ -47,6 +47,8 @@ #include "table/strings.h" +#include "safeguards.h" + /** Delay counter for considering the next disaster. */ uint16 _disaster_delay; @@ -382,7 +384,7 @@ static void DestructIndustry(Industry *i) /** * Aircraft handling, v->current_order.dest states: - * 0: Fly towards the targetted industry + * 0: Fly towards the targeted industry * 1: If within 15 tiles, fire away rockets and destroy industry * 2: Industry explosions * 3: Fly out of the map diff --git a/src/dock_gui.cpp b/src/dock_gui.cpp index 4779feb72..94b735573 100644 --- a/src/dock_gui.cpp +++ b/src/dock_gui.cpp @@ -25,12 +25,15 @@ #include "tilehighlight_func.h" #include "company_base.h" #include "hotkeys.h" +#include "gui.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); @@ -40,13 +43,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); } @@ -87,14 +90,14 @@ static TileIndex GetOtherAqueductEnd(TileIndex tile_from, TileIndex *tile_to = N return endtile; } -/** Toolbar window for constructing water infra structure. */ +/** Toolbar window for constructing water infrastructure. */ struct BuildDocksToolbarWindow : Window { DockToolbarWidgets last_clicked_widget; ///< Contains the last widget that has been clicked on this toolbar. - BuildDocksToolbarWindow(const WindowDesc *desc, WindowNumber window_number) : Window() + BuildDocksToolbarWindow(WindowDesc *desc, WindowNumber window_number) : Window(desc) { this->last_clicked_widget = WID_DT_INVALID; - this->InitNested(desc, window_number); + this->InitNested(window_number); this->OnInvalidateData(); if (_settings_client.gui.link_terraform_toolbar) ShowTerraformToolbar(this); } @@ -163,14 +166,6 @@ struct BuildDocksToolbarWindow : Window { this->last_clicked_widget = (DockToolbarWidgets)widget; } - virtual EventState OnKeyPress(uint16 key, uint16 keycode) - { - int num = CheckHotkeyMatch(dockstoolbar_hotkeys, keycode, this); - if (num == -1) return ES_NOT_HANDLED; - this->OnClick(Point(), num, 1); - return ES_HANDLED; - } - virtual void OnPlaceObject(Point pt, TileIndex tile) { switch (this->last_clicked_widget) { @@ -273,23 +268,36 @@ struct BuildDocksToolbarWindow : Window { VpSetPresizeRange(tile_from, tile_to); } - static Hotkey dockstoolbar_hotkeys[]; + static HotkeyList hotkeys; }; +/** + * Handler for global hotkeys of the BuildDocksToolbarWindow. + * @param hotkey Hotkey + * @return ES_HANDLED if hotkey was accepted. + */ +static EventState DockToolbarGlobalHotkeys(int hotkey) +{ + if (_game_mode != GM_NORMAL) return ES_NOT_HANDLED; + Window *w = ShowBuildDocksToolbar(); + if (w == NULL) return ES_NOT_HANDLED; + return w->OnHotkey(hotkey); +} + const uint16 _dockstoolbar_aqueduct_keys[] = {'B', '8', 0}; -Hotkey BuildDocksToolbarWindow::dockstoolbar_hotkeys[] = { - Hotkey('1', "canal", WID_DT_CANAL), - Hotkey('2', "lock", WID_DT_LOCK), - Hotkey('3', "demolish", WID_DT_DEMOLISH), - Hotkey('4', "depot", WID_DT_DEPOT), - Hotkey('5', "dock", WID_DT_STATION), - Hotkey('6', "buoy", WID_DT_BUOY), - Hotkey('7', "river", WID_DT_RIVER), - Hotkey(_dockstoolbar_aqueduct_keys, "aqueduct", WID_DT_BUILD_AQUEDUCT), - HOTKEY_LIST_END(BuildDocksToolbarWindow) +static Hotkey dockstoolbar_hotkeys[] = { + Hotkey('1', "canal", WID_DT_CANAL), + Hotkey('2', "lock", WID_DT_LOCK), + Hotkey('3', "demolish", WID_DT_DEMOLISH), + Hotkey('4', "depot", WID_DT_DEPOT), + Hotkey('5', "dock", WID_DT_STATION), + Hotkey('6', "buoy", WID_DT_BUOY), + Hotkey('7', "river", WID_DT_RIVER), + Hotkey(_dockstoolbar_aqueduct_keys, "aqueduct", WID_DT_BUILD_AQUEDUCT), + HOTKEY_LIST_END }; -Hotkey *_dockstoolbar_hotkeys = BuildDocksToolbarWindow::dockstoolbar_hotkeys; +HotkeyList BuildDocksToolbarWindow::hotkeys("dockstoolbar", dockstoolbar_hotkeys, DockToolbarGlobalHotkeys); /** * Nested widget parts of docks toolbar, game version. @@ -313,11 +321,12 @@ static const NWidgetPart _nested_build_docks_toolbar_widgets[] = { EndContainer(), }; -static const WindowDesc _build_docks_toolbar_desc( - WDP_ALIGN_TOOLBAR, 0, 0, +static WindowDesc _build_docks_toolbar_desc( + WDP_ALIGN_TOOLBAR, "toolbar_water", 0, 0, WC_BUILD_TOOLBAR, WC_NONE, WDF_CONSTRUCTION, - _nested_build_docks_toolbar_widgets, lengthof(_nested_build_docks_toolbar_widgets) + _nested_build_docks_toolbar_widgets, lengthof(_nested_build_docks_toolbar_widgets), + &BuildDocksToolbarWindow::hotkeys ); /** @@ -335,15 +344,6 @@ Window *ShowBuildDocksToolbar() return AllocateWindowDescFront(&_build_docks_toolbar_desc, TRANSPORT_WATER); } -EventState DockToolbarGlobalHotkeys(uint16 key, uint16 keycode) -{ - int num = CheckHotkeyMatch(_dockstoolbar_hotkeys, keycode, NULL, true); - if (num == -1) return ES_NOT_HANDLED; - Window *w = ShowBuildDocksToolbar(); - if (w == NULL) return ES_NOT_HANDLED; - return w->OnKeyPress(key, keycode); -} - /** * Nested widget parts of docks toolbar, scenario editor version. * Positions of #WID_DT_DEPOT, #WID_DT_STATION, and #WID_DT_BUOY widgets have changed. @@ -365,8 +365,8 @@ static const NWidgetPart _nested_build_docks_scen_toolbar_widgets[] = { }; /** Window definition for the build docks in scenario editor window. */ -static const WindowDesc _build_docks_scen_toolbar_desc( - WDP_AUTO, 0, 0, +static WindowDesc _build_docks_scen_toolbar_desc( + WDP_AUTO, "toolbar_water_scen", 0, 0, WC_SCEN_BUILD_TOOLBAR, WC_NONE, WDF_CONSTRUCTION, _nested_build_docks_scen_toolbar_widgets, lengthof(_nested_build_docks_scen_toolbar_widgets) @@ -392,9 +392,9 @@ enum BuildDockStationWidgets { struct BuildDocksStationWindow : public PickerWindowBase { public: - BuildDocksStationWindow(const WindowDesc *desc, Window *parent) : PickerWindowBase(parent) + BuildDocksStationWindow(WindowDesc *desc, Window *parent) : PickerWindowBase(desc, parent) { - this->InitNested(desc, TRANSPORT_WATER); + this->InitNested(TRANSPORT_WATER); this->LowerWidget(_settings_client.gui.station_show_coverage + BDSW_LT_OFF); } @@ -422,8 +422,10 @@ struct BuildDocksStationWindow : public PickerWindowBase { int bottom = back_nwi->pos_y + back_nwi->current_y; top = DrawStationCoverageAreaText(back_nwi->pos_x + WD_FRAMERECT_LEFT, right - WD_FRAMERECT_RIGHT, top, SCT_ALL, rad, false) + WD_PAR_VSEP_NORMAL; top = DrawStationCoverageAreaText(back_nwi->pos_x + WD_FRAMERECT_LEFT, right - WD_FRAMERECT_RIGHT, top, SCT_ALL, rad, true) + WD_PAR_VSEP_NORMAL; - /* Resize background if the text is not equally long as the window. */ - if (top > bottom || (top < bottom && back_nwi->current_y > back_nwi->smallest_y)) { + /* Resize background if the window is too small. + * 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); } } @@ -465,8 +467,8 @@ static const NWidgetPart _nested_build_dock_station_widgets[] = { EndContainer(), }; -static const WindowDesc _build_dock_station_desc( - WDP_AUTO, 0, 0, +static WindowDesc _build_dock_station_desc( + WDP_AUTO, NULL, 0, 0, WC_BUILD_STATION, WC_BUILD_TOOLBAR, WDF_CONSTRUCTION, _nested_build_dock_station_widgets, lengthof(_nested_build_dock_station_widgets) @@ -489,9 +491,9 @@ struct BuildDocksDepotWindow : public PickerWindowBase { } public: - BuildDocksDepotWindow(const WindowDesc *desc, Window *parent) : PickerWindowBase(parent) + BuildDocksDepotWindow(WindowDesc *desc, Window *parent) : PickerWindowBase(desc, parent) { - this->InitNested(desc, TRANSPORT_WATER); + this->InitNested(TRANSPORT_WATER); this->LowerWidget(_ship_depot_direction + WID_BDD_X); UpdateDocksDirection(); } @@ -542,8 +544,8 @@ static const NWidgetPart _nested_build_docks_depot_widgets[] = { EndContainer(), }; -static const WindowDesc _build_docks_depot_desc( - WDP_AUTO, 0, 0, +static WindowDesc _build_docks_depot_desc( + WDP_AUTO, NULL, 0, 0, WC_BUILD_DEPOT, WC_BUILD_TOOLBAR, WDF_CONSTRUCTION, _nested_build_docks_depot_widgets, lengthof(_nested_build_docks_depot_widgets) diff --git a/src/driver.cpp b/src/driver.cpp index 6419cdd4c..825c489b9 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 10a6863bc..12ca4474d 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 @@ class DriverFactoryBase { 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 @@ class DriverFactoryBase { } } - 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 92f9a0cd5..e36e43147 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" @@ -42,13 +43,19 @@ #include "economy_base.h" #include "core/pool_func.hpp" #include "core/backup_type.hpp" +#include "cargo_type.h" #include "water.h" #include "game/game.hpp" #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"); @@ -291,7 +298,7 @@ void ChangeOwnershipOfCompanyItems(Owner old_owner, Owner new_owner) #endif /* ENABLE_NETWORK */ if (old_owner == _local_company) { /* Single player cheated to AI company. - * There are no specatators in single player, so we must pick some other company. */ + * There are no spectators in single player, so we must pick some other company. */ assert(!_networking); Backup cur_company(_current_company, FILE_LINE); Company *c; @@ -461,7 +468,7 @@ void ChangeOwnershipOfCompanyItems(Owner old_owner, Owner new_owner) if (new_owner != INVALID_OWNER) { /* Update all signals because there can be new segment that was owned by two companies * and signals were not propagated - * Similiar with crossings - it is needed to bar crossings that weren't before + * Similar with crossings - it is needed to bar crossings that weren't before * because of different owner of crossing and approaching train */ tile = 0; @@ -508,6 +515,20 @@ void ChangeOwnershipOfCompanyItems(Owner old_owner, Owner new_owner) if (si->owner == old_owner) si->owner = new_owner == INVALID_OWNER ? OWNER_NONE : new_owner; } + /* Remove Game Script created Goals, CargoMonitors and Story pages. */ + Goal *g; + FOR_ALL_GOALS(g) { + if (g->company == old_owner) delete g; + } + + ClearCargoPickupMonitoring(old_owner); + ClearCargoDeliveryMonitoring(old_owner); + + StoryPage *sp; + FOR_ALL_STORY_PAGES(sp) { + if (sp->company == old_owner) delete sp; + } + /* Change colour of existing windows */ if (new_owner != INVALID_OWNER) ChangeWindowOwner(old_owner, new_owner); @@ -545,7 +566,7 @@ static void CompanyCheckBankrupt(Company *c) case 9: break; - /* Warn about bancruptcy after 3 months */ + /* Warn about bankruptcy after 3 months */ case 4: { CompanyNewsInformation *cni = MallocT(1); cni->FillData(c); @@ -560,19 +581,19 @@ static void CompanyCheckBankrupt(Company *c) /* Offer company for sale after 6 months */ case 7: { - /* Check if the company has any value. If not, declare it bankrupt - * right now */ + /* Don't consider the loan */ Money val = CalculateCompanyValue(c, false); - if (val > 0) { - c->bankrupt_value = val; - c->bankrupt_asked = 1 << c->index; // Don't ask the owner - c->bankrupt_timeout = 0; - break; - } - /* FALL THROUGH to case 10 */ + + c->bankrupt_value = val; + c->bankrupt_asked = 1 << c->index; // Don't ask the owner + c->bankrupt_timeout = 0; + + /* The company assets should always have some value */ + assert(c->bankrupt_value > 0); + break; } - /* Bancrupt company after 6 months (if the company has no value) or latest + /* Bankrupt company after 6 months (if the company has no value) or latest * after 9 months (if it still had value after 6 months) */ default: case 10: { @@ -696,7 +717,7 @@ bool AddInflation(bool check_year) /* Approximation for (100 + infl_amount)% ** (1 / 12) - 100% * scaled by 65536 * 12 -> months per year - * This is only a good approxiamtion for small values + * This is only a good approximation for small values */ _economy.inflation_prices += (_economy.inflation_prices * _economy.infl_amount * 54) >> 16; _economy.inflation_payment += (_economy.inflation_payment * _economy.infl_amount_pr * 54) >> 16; @@ -866,7 +887,7 @@ void StartupIndustryDailyChanges(bool init_counter) * which stands for the days in a month. * Using just 31 will make it so that a monthly reset (based on the real number of days of that month) * would not be needed. - * Since it is based on "fractionnal parts", the leftover days will not make much of a difference + * Since it is based on "fractional parts", the leftover days will not make much of a difference * on the overall total number of changes performed */ _economy.industry_daily_increment = (1 << map_size) / 31; @@ -1048,9 +1069,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 */ @@ -1130,21 +1151,23 @@ CargoPayment::~CargoPayment() this->front->cargo_payment = NULL; - if (this->visual_profit == 0) return; + if (this->visual_profit == 0 && this->visual_transfer == 0) return; Backup cur_company(_current_company, this->front->owner, FILE_LINE); SubtractMoneyFromCompany(CommandCost(this->front->GetExpenseType(true), -this->route_profit)); - this->front->profit_this_year += this->visual_profit << 8; + this->front->profit_this_year += (this->visual_profit + this->visual_transfer) << 8; - if (this->route_profit != 0) { - if (IsLocalCompany() && !PlayVehicleSound(this->front, VSE_LOAD_UNLOAD)) { - SndPlayVehicleFx(SND_14_CASHTILL, this->front); - } + if (this->route_profit != 0 && IsLocalCompany() && !PlayVehicleSound(this->front, VSE_LOAD_UNLOAD)) { + SndPlayVehicleFx(SND_14_CASHTILL, this->front); + } - ShowCostOrIncomeAnimation(this->front->x_pos, this->front->y_pos, this->front->z_pos, -this->visual_profit); - } else { - ShowFeederIncomeAnimation(this->front->x_pos, this->front->y_pos, this->front->z_pos, this->visual_profit); + if (this->visual_transfer != 0) { + ShowFeederIncomeAnimation(this->front->x_pos, this->front->y_pos, + this->front->z_pos, this->visual_transfer, -this->visual_profit); + } else if (this->visual_profit != 0) { + ShowCostOrIncomeAnimation(this->front->x_pos, this->front->y_pos, + this->front->z_pos, -this->visual_profit); } cur_company.Restore(); @@ -1166,7 +1189,7 @@ void CargoPayment::PayFinalDelivery(const CargoPacket *cp, uint count) this->route_profit += profit; /* The vehicle's profit is whatever route profit there is minus feeder shares. */ - this->visual_profit += profit - cp->FeederShare(); + this->visual_profit += profit - cp->FeederShare(count); } /** @@ -1186,81 +1209,369 @@ Money CargoPayment::PayTransfer(const CargoPacket *cp, uint count) profit = profit * _settings_game.economy.feeder_payment_share / 100; - this->visual_profit += profit; // accumulate transfer profits for whole vehicle + this->visual_transfer += profit; // accumulate transfer profits for whole vehicle return profit; // account for the (virtual) profit already made for the cargo packet } /** * Prepare the vehicle to be unloaded. + * @param curr_station the station where the consist is at the moment * @param front_v the vehicle to be unloaded */ void PrepareUnload(Vehicle *front_v) { + Station *curr_station = Station::Get(front_v->last_station_visited); + curr_station->loading_vehicles.push_back(front_v); + /* At this moment loading cannot be finished */ ClrBit(front_v->vehicle_flags, VF_LOADING_FINISHED); - /* Start unloading in at the first possible moment */ + /* Start unloading at the first possible moment */ front_v->load_unload_ticks = 1; - if ((front_v->current_order.GetUnloadType() & OUFB_NO_UNLOAD) == 0) { - for (Vehicle *v = front_v; v != NULL; v = v->Next()) { - if (v->cargo_cap > 0 && !v->cargo.Empty()) { - SetBit(v->vehicle_flags, VF_CARGO_UNLOADING); - } - } - } - assert(front_v->cargo_payment == NULL); /* One CargoPayment per vehicle and the vehicle limit equals the * limit in number of CargoPayments. Can't go wrong. */ assert_compile(CargoPaymentPool::MAX_SIZE == VehiclePool::MAX_SIZE); assert(CargoPayment::CanAllocateItem()); front_v->cargo_payment = new CargoPayment(front_v); + + 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->status, GoodsEntry::GES_ACCEPTANCE), + front_v->last_station_visited, next_station, + front_v->current_order.GetUnloadType(), ge, + front_v->cargo_payment); + if (v->cargo.UnloadCount() > 0) SetBit(v->vehicle_flags, VF_CARGO_UNLOADING); + } + } + } } /** - * Checks whether an articulated vehicle is empty. - * @param v Vehicle - * @return true if all parts are empty. + * Gets the amount of cargo the given vehicle can load in the current tick. + * This is only about loading speed. The free capacity is ignored. + * @param v Vehicle to be queried. + * @return Amount of cargo the vehicle can load at once. */ -static bool IsArticulatedVehicleEmpty(Vehicle *v) +static uint GetLoadAmount(Vehicle *v) { - v = v->GetFirstEnginePart(); + const Engine *e = v->GetEngine(); + uint load_amount = e->info.load_amount; + + /* The default loadamount for mail is 1/4 of the load amount for passengers */ + bool air_mail = v->type == VEH_AIRCRAFT && !Aircraft::From(v)->IsNormalAircraft(); + if (air_mail) load_amount = CeilDiv(load_amount, 4); + + if (_settings_game.order.gradual_loading) { + uint16 cb_load_amount = CALLBACK_FAILED; + if (e->GetGRF() != NULL && e->GetGRF()->grf_version >= 8) { + /* Use callback 36 */ + cb_load_amount = GetVehicleProperty(v, PROP_VEHICLE_LOAD_AMOUNT, CALLBACK_FAILED); + } else if (HasBit(e->info.callback_mask, CBM_VEHICLE_LOAD_AMOUNT)) { + /* Use callback 12 */ + cb_load_amount = GetVehicleCallback(CBID_VEHICLE_LOAD_AMOUNT, 0, 0, v->engine_type, v); + } + if (cb_load_amount != CALLBACK_FAILED) { + if (e->GetGRF()->grf_version < 8) cb_load_amount = GB(cb_load_amount, 0, 8); + if (cb_load_amount >= 0x100) { + ErrorUnknownCallbackResult(e->GetGRFID(), CBID_VEHICLE_LOAD_AMOUNT, cb_load_amount); + } else if (cb_load_amount != 0) { + load_amount = cb_load_amount; + } + } + } + + /* Scale load amount the same as capacity */ + if (HasBit(e->info.misc_flags, EF_NO_DEFAULT_CARGO_MULTIPLIER) && !air_mail) load_amount = CeilDiv(load_amount * CargoSpec::Get(v->cargo_type)->multiplier, 0x100); + + return load_amount; +} - for (; v != NULL; v = v->HasArticulatedPart() ? v->GetNextArticulatedPart() : NULL) { - if (v->cargo.Count() != 0) return false; +/** + * 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 void ReserveConsist(Station *st, Vehicle *u, CargoArray *consist_capleft, StationIDStack next_station) +{ + 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; + } + + CargoID current_cargo = next_cargo->cargo_type; + + 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; + } + + assert(v->cargo_cap >= v->cargo.RemainingCount()); + uint cap = v->cargo_cap - v->cargo.RemainingCount(); + + /* 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); + } + + if (consist_capleft != NULL) { + (*consist_capleft)[current_cargo] += cap; + } + } } +} +/** + * 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. + */ +template +bool IterateVehicleParts(Vehicle *v, Taction action) +{ + 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; } /** - * Loads/unload the vehicle if possible. - * @param front the vehicle to be (un)loaded - * @param cargo_left the amount of each cargo type that is - * virtually left on the platform to be - * picked up by another vehicle when all - * previous vehicles have loaded. + * Action to check if a vehicle has no stored cargo. */ -static void LoadUnloadVehicle(Vehicle *front, int *cargo_left) +struct IsEmptyAction { - assert(front->current_order.IsType(OT_LOADING)); + /** + * 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; + } +}; - /* We have not waited enough time till the next round of loading/unloading */ - if (front->load_unload_ticks != 0) { - if (_settings_game.order.improved_load && (front->current_order.GetLoadType() & OLFB_FULL_LOAD)) { - /* 'Reserve' this cargo for this vehicle, because we were first. */ - for (Vehicle *v = front; v != NULL; v = v->Next()) { - int cap_left = v->cargo_cap - v->cargo.Count(); - if (cap_left > 0) cargo_left[v->cargo_type] -= cap_left; +/** + * Refit preparation action. + */ +struct PrepareRefitAction +{ + CargoArray &consist_capleft; ///< Capacities left in the consist. + uint32 &refit_mask; ///< Bitmask of possible refit cargoes. + + /** + * 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; + } +}; + +/** + * 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; + } +}; + +/** + * 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. + + /** + * 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. + */ + FinalizeRefitAction(CargoArray &consist_capleft, Station *st, StationIDStack &next_station) : + consist_capleft(consist_capleft), st(st), next_station(next_station) {} + + /** + * 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) + { + this->st->goods[v->cargo_type].cargo.Reserve(v->cargo_cap - v->cargo.RemainingCount(), + &v->cargo, st->xy, 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)); + + 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)) { + /* 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; + } } } - return; } + /* Refit if given a valid cargo. */ + if (new_cid < NUM_CARGO && new_cid != v_start->cargo_type) { + IterateVehicleParts(v_start, ReturnCargoAction(st, StationIDStack(next_station).Pop())); + 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)); + + cur_company.Restore(); +} + +/** + * 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); +} + +/** + * Loads/unload the vehicle if possible. + * @param front the vehicle to be (un)loaded + */ +static void LoadUnloadVehicle(Vehicle *front) +{ + assert(front->current_order.IsType(OT_LOADING)); + StationID last_visited = front->last_station_visited; Station *st = Station::Get(last_visited); + 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)) { + ReserveConsist(st, front, + (use_autorefit && front->load_unload_ticks != 0) ? &consist_capleft : NULL, + next_station); + } + + /* We have not waited enough time till the next round of loading/unloading */ + if (front->load_unload_ticks != 0) return; + if (front->type == VEH_TRAIN && (!IsTileType(front->tile, MP_STATION) || GetStationIndex(front->tile) != st->index)) { /* The train reversed in the station. Take the "easy" way * out and let the train just leave as it always did. */ @@ -1269,26 +1580,17 @@ static void LoadUnloadVehicle(Vehicle *front, int *cargo_left) return; } - bool use_autorefit = front->current_order.IsRefit() && front->current_order.GetRefitCargo() == CT_AUTO_REFIT; - CargoArray consist_capleft; - if (use_autorefit) { - /* Sum cargo, that can be loaded without refitting */ - for (Vehicle *v = front; v != NULL; v = v->Next()) { - int cap_left = v->cargo_cap - v->cargo.Count(); - if (cap_left > 0) consist_capleft[v->cargo_type] += cap_left; - } - } - - int unloading_time = 0; + int new_load_unload_ticks = 0; bool dirty_vehicle = false; bool dirty_station = false; bool completely_emptied = true; - bool anything_unloaded = false; - bool anything_loaded = false; + bool anything_unloaded = false; + bool anything_loaded = false; uint32 full_load_amount = 0; - uint32 cargo_not_full = 0; - uint32 cargo_full = 0; + uint32 cargo_not_full = 0; + uint32 cargo_full = 0; + uint32 reservation_left = 0; front->cur_speed = 0; @@ -1300,81 +1602,65 @@ static void LoadUnloadVehicle(Vehicle *front, int *cargo_left) if (v->cargo_cap == 0) continue; artic_part++; - const Engine *e = v->GetEngine(); - byte load_amount = e->info.load_amount; - - /* The default loadamount for mail is 1/4 of the load amount for passengers */ - if (v->type == VEH_AIRCRAFT && !Aircraft::From(v)->IsNormalAircraft()) load_amount = CeilDiv(load_amount, 4); - - if (_settings_game.order.gradual_loading) { - uint16 cb_load_amount = CALLBACK_FAILED; - if (e->GetGRF() != NULL && e->GetGRF()->grf_version >= 8) { - /* Use callback 36 */ - cb_load_amount = GetVehicleProperty(v, PROP_VEHICLE_LOAD_AMOUNT, CALLBACK_FAILED); - } else if (HasBit(e->info.callback_mask, CBM_VEHICLE_LOAD_AMOUNT)) { - /* Use callback 12 */ - cb_load_amount = GetVehicleCallback(CBID_VEHICLE_LOAD_AMOUNT, 0, 0, v->engine_type, v); - } - if (cb_load_amount != CALLBACK_FAILED) { - if (e->GetGRF()->grf_version < 8) cb_load_amount = GB(cb_load_amount, 0, 8); - if (cb_load_amount >= 0x100) { - ErrorUnknownCallbackResult(e->GetGRFID(), CBID_VEHICLE_LOAD_AMOUNT, cb_load_amount); - } else if (cb_load_amount != 0) { - load_amount = cb_load_amount; - } - } - } + uint load_amount = GetLoadAmount(v); GoodsEntry *ge = &st->goods[v->cargo_type]; if (HasBit(v->vehicle_flags, VF_CARGO_UNLOADING) && (front->current_order.GetUnloadType() & OUFB_NO_UNLOAD) == 0) { - uint cargo_count = v->cargo.Count(); + uint cargo_count = v->cargo.UnloadCount(); uint amount_unloaded = _settings_game.order.gradual_loading ? min(cargo_count, load_amount) : cargo_count; bool remaining = false; // Are there cargo entities in this vehicle that can still be unloaded here? - bool accepted = false; // Is the cargo accepted by the station? payment->SetCargo(v->cargo_type); - if (HasBit(ge->acceptance_pickup, GoodsEntry::GES_ACCEPTANCE) && !(front->current_order.GetUnloadType() & OUFB_TRANSFER)) { - /* The cargo has reached its final destination, the packets may now be destroyed */ - remaining = v->cargo.MoveTo(NULL, amount_unloaded, VehicleCargoList::MTA_FINAL_DELIVERY, payment, last_visited); + 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), INVALID_STATION); + } else { + uint new_remaining = v->cargo.RemainingCount() + v->cargo.ActionCount(VehicleCargoList::MTA_DELIVER); + if (v->cargo_cap < new_remaining) { + /* Return some of the reserved cargo to not overload the vehicle. */ + v->cargo.Return(new_remaining - v->cargo_cap, &ge->cargo, INVALID_STATION); + } - dirty_vehicle = true; - accepted = true; - } + /* Keep instead of delivering. This may lead to no cargo being unloaded, so ...*/ + v->cargo.Reassign( + v->cargo.ActionCount(VehicleCargoList::MTA_DELIVER)); - /* The !accepted || v->cargo.Count == cargo_count clause is there - * to make it possible to force unload vehicles at the station where - * they were loaded, but to not force unload the vehicle when the - * station is still accepting the cargo in the vehicle. It doesn't - * accept cargo that was loaded at the same station. */ - if ((front->current_order.GetUnloadType() & (OUFB_UNLOAD | OUFB_TRANSFER)) && (!accepted || v->cargo.Count() == cargo_count)) { - remaining = v->cargo.MoveTo(&ge->cargo, amount_unloaded, front->current_order.GetUnloadType() & OUFB_TRANSFER ? VehicleCargoList::MTA_TRANSFER : VehicleCargoList::MTA_UNLOAD, payment); - if (!HasBit(ge->acceptance_pickup, GoodsEntry::GES_PICKUP)) { - SetBit(ge->acceptance_pickup, GoodsEntry::GES_PICKUP); - InvalidateWindowData(WC_STATION_LIST, last_visited); + /* ... say we unloaded something, otherwise we'll think we didn't unload + * something and we didn't load something, so we must be finished + * at this station. Setting the unloaded means that we will get a + * retry for loading in the next cycle. */ + anything_unloaded = true; } + } - dirty_vehicle = dirty_station = true; - } else if (!accepted) { - /* The order changed while unloading (unset unload/transfer) or the - * station does not accept our goods. */ - ClrBit(v->vehicle_flags, VF_CARGO_UNLOADING); + if (v->cargo.ActionCount(VehicleCargoList::MTA_TRANSFER) > 0) { + /* Mark the station dirty if we transfer, but not if we only deliver. */ + dirty_station = true; - /* Say we loaded something, otherwise we'll think we didn't unload - * something and we didn't load something, so we must be finished - * at this station. Setting the unloaded means that we will get a - * retry for loading in the next cycle. */ - anything_unloaded = true; - continue; + 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); + } } - /* Deliver goods to the station */ - st->time_since_unload = 0; + 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; + new_load_unload_ticks += amount_unloaded; - unloading_time += amount_unloaded; + /* Deliver goods to the station */ + st->time_since_unload = 0; + } - anything_unloaded = true; if (_settings_game.order.gradual_loading && remaining) { completely_emptied = false; } else { @@ -1389,67 +1675,14 @@ static void LoadUnloadVehicle(Vehicle *front, int *cargo_left) 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.Count() == 0))) { - Vehicle *v_start = v->GetFirstEnginePart(); - CargoID new_cid = front->current_order.GetRefitCargo(); - byte new_subtype = front->current_order.GetRefitSubtype(); - - /* 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 = e->info.refit_mask; - Vehicle *w = v_start; - while (w->HasArticulatedPart()) { - w = w->GetNextArticulatedPart(); - if (w->cargo.Count() > 0) new_cid = CT_NO_REFIT; - refit_mask |= EngInfo(w->engine_type)->refit_mask; - } - - if (new_cid == CT_AUTO_REFIT) { - /* Get refittable cargo type with the most waiting cargo. */ - int amount = 0; - CargoID cid; - FOR_EACH_SET_CARGO_ID(cid, refit_mask) { - /* Consider refitting to this cargo, if other vehicles of the consist cannot - * already take the cargo without refitting */ - if (cargo_left[cid] > (int)consist_capleft[cid] + amount) { - /* Try to find out if auto-refitting would succeed. In case the refit is allowed, - * the returned refit capacity will be greater than zero. */ - new_subtype = GetBestFittingSubType(v, v, cid); - DoCommand(v_start->tile, v_start->index, cid | 1U << 6 | new_subtype << 8 | 1U << 16, DC_QUERY_COST, GetCmdRefitVeh(v_start)); // Auto-refit and only this vehicle including artic parts. - if (_returned_refit_capacity > 0) { - amount = cargo_left[cid] - consist_capleft[cid]; - new_cid = cid; - } - } - } - } - - /* Refit if given a valid cargo. */ - if (new_cid < NUM_CARGO) { - CommandCost cost = DoCommand(v_start->tile, v_start->index, new_cid | 1U << 6 | new_subtype << 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 */ - 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; - } - - 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. */ + v->refit_cap = v->cargo_cap; + /* update stats */ int t; switch (front->type) { @@ -1474,51 +1707,28 @@ static void LoadUnloadVehicle(Vehicle *front, int *cargo_left) ge->last_age = min(_cur_year - front->build_year, 255); ge->time_since_pickup = 0; + assert(v->cargo_cap >= v->cargo.StoredCount()); /* If there's goods waiting at the station, and the vehicle * has capacity for it, load it on the vehicle. */ - int cap_left = v->cargo_cap - v->cargo.Count(); - if (!ge->cargo.Empty() && cap_left > 0) { - uint cap = cap_left; - uint count = ge->cargo.Count(); - - /* Skip loading this vehicle if another train/vehicle is already handling - * the same cargo type at this station */ - if (_settings_game.order.improved_load && cargo_left[v->cargo_type] <= 0) { - SetBit(cargo_not_full, v->cargo_type); - continue; - } - - if (cap > count) cap = count; - if (_settings_game.order.gradual_loading) { - cap = min(cap, load_amount); - cap_left = min(cap_left, load_amount); - } - if (_settings_game.order.improved_load) { - /* Don't load stuff that is already 'reserved' for other vehicles */ - cap = min((uint)cargo_left[v->cargo_type], cap); - count = cargo_left[v->cargo_type]; - if (use_autorefit) { - /* When using autorefit, reserve all cargo for this wagon to prevent other wagons - * from feeling the need to refit. */ - int total_cap_left = v->cargo_cap - v->cargo.Count(); - cargo_left[v->cargo_type] -= total_cap_left; - consist_capleft[v->cargo_type] -= total_cap_left; - } else { - /* Update cargo left; but don't reserve everything yet, so other wagons - * of the same consist load in parallel. */ - cargo_left[v->cargo_type] -= cap; - } + uint cap_left = v->cargo_cap - v->cargo.StoredCount(); + if (cap_left > 0 && (v->cargo.ActionCount(VehicleCargoList::MTA_LOAD) > 0 || ge->cargo.AvailableCount() > 0)) { + if (_settings_game.order.gradual_loading) cap_left = min(cap_left, load_amount); + if (v->cargo.StoredCount() == 0) TriggerVehicle(v, VEHICLE_TRIGGER_NEW_CARGO); + + uint loaded = ge->cargo.Load(cap_left, &v->cargo, st->xy, next_station); + if (v->cargo.ActionCount(VehicleCargoList::MTA_LOAD) > 0) { + /* Remember if there are reservations left so that we don't stop + * loading before they're loaded. */ + SetBit(reservation_left, v->cargo_type); } /* Store whether the maximum possible load amount was loaded or not.*/ - if (count >= (uint)cap_left) { + if (loaded == cap_left) { SetBit(full_load_amount, v->cargo_type); } else { ClrBit(full_load_amount, v->cargo_type); } - if (v->cargo.Empty()) TriggerVehicle(v, VEHICLE_TRIGGER_NEW_CARGO); - /* TODO: Regarding this, when we do gradual loading, we * should first unload all vehicles and then start * loading them. Since this will cause @@ -1526,25 +1736,26 @@ static void LoadUnloadVehicle(Vehicle *front, int *cargo_left) * the whole vehicle chain is really totally empty, the * completely_emptied assignment can then be safely * removed; that's how TTDPatch behaves too. --pasky */ - completely_emptied = false; - anything_loaded = true; - - ge->cargo.MoveTo(&v->cargo, cap, StationCargoList::MTA_CARGO_LOAD, NULL, st->xy); + if (loaded > 0) { + completely_emptied = false; + anything_loaded = true; - st->time_since_load = 0; - st->last_vehicle_type = v->type; + st->time_since_load = 0; + st->last_vehicle_type = v->type; - if (ge->cargo.Empty()) { - TriggerStationAnimation(st, st->xy, SAT_CARGO_TAKEN, v->cargo_type); - AirportAnimationTrigger(st, AAT_STATION_CARGO_TAKEN, v->cargo_type); - } + if (ge->cargo.TotalCount() == 0) { + TriggerStationRandomisation(st, st->xy, SRT_CARGO_TAKEN, v->cargo_type); + TriggerStationAnimation(st, st->xy, SAT_CARGO_TAKEN, v->cargo_type); + AirportAnimationTrigger(st, AAT_STATION_CARGO_TAKEN, v->cargo_type); + } - unloading_time += cap; + new_load_unload_ticks += loaded; - dirty_vehicle = dirty_station = true; + dirty_vehicle = dirty_station = true; + } } - if (v->cargo.Count() >= v->cargo_cap) { + if (v->cargo.StoredCount() >= v->cargo_cap) { SetBit(cargo_full, v->cargo_type); } else { SetBit(cargo_not_full, v->cargo_type); @@ -1552,26 +1763,15 @@ static void LoadUnloadVehicle(Vehicle *front, int *cargo_left) } if (anything_loaded || anything_unloaded) { - if (front->type == VEH_TRAIN) TriggerStationAnimation(st, st->xy, SAT_TRAIN_LOADS); + if (front->type == VEH_TRAIN) { + TriggerStationRandomisation(st, front->tile, SRT_TRAIN_LOADS); + TriggerStationAnimation(st, front->tile, SAT_TRAIN_LOADS); + } } /* Only set completely_emptied, if we just unloaded all remaining cargo */ completely_emptied &= anything_unloaded; - /* For consists without autorefit-order we adjust the reserved cargo at the station after loading, - * so that all wagons start loading if the consist is the first consist. - * - * If we use autorefit otoh, we only want to load/refit a vehicle if the other wagons cannot already hold the cargo, - * to keep the option to still refit the vehicle when new cargo of different type shows up. - */ - if (_settings_game.order.improved_load && (front->current_order.GetLoadType() & OLFB_FULL_LOAD) && !use_autorefit) { - /* Update left cargo */ - for (Vehicle *v = front; v != NULL; v = v->Next()) { - int cap_left = v->cargo_cap - v->cargo.Count(); - if (cap_left > 0) cargo_left[v->cargo_type] -= cap_left; - } - } - if (!anything_unloaded) delete payment; ClrBit(front->vehicle_flags, VF_STOP_LOADING); @@ -1581,42 +1781,42 @@ static void LoadUnloadVehicle(Vehicle *front, int *cargo_left) * 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 && !(front->current_order.GetLoadType() & OLFB_FULL_LOAD) && - front->current_order_time >= (uint)max(front->current_order.wait_time - front->lateness_counter, 0)) { + 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.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) { /* if the aircraft carries passengers and is NOT full, then * continue loading, no matter how much mail is in */ - if ((front->type == VEH_AIRCRAFT && IsCargoInClass(front->cargo_type, CC_PASSENGERS) && front->cargo_cap > front->cargo.Count()) || + if ((front->type == VEH_AIRCRAFT && IsCargoInClass(front->cargo_type, CC_PASSENGERS) && front->cargo_cap > front->cargo.StoredCount()) || (cargo_not_full && (cargo_full & ~cargo_not_full) == 0)) { // There are still non-full cargoes finished_loading = false; } } else if (cargo_not_full != 0) { finished_loading = false; } + + /* Refresh next hop stats if we're full loading to make the links + * known to the distribution algorithm and allow cargo to be sent + * 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) 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 ) @@ -1633,10 +1833,10 @@ static void LoadUnloadVehicle(Vehicle *front, int *cargo_left) } } - /* 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. */ + dirty_vehicle = true; TriggerVehicle(front, VEHICLE_TRIGGER_EMPTY); } @@ -1648,6 +1848,7 @@ static void LoadUnloadVehicle(Vehicle *front, int *cargo_left) if (dirty_station) { st->MarkTilesDirty(true); SetWindowDirty(WC_STATION_VIEW, last_visited); + InvalidateWindowData(WC_STATION_LIST, last_visited); } } @@ -1683,13 +1884,9 @@ void LoadUnloadStation(Station *st) */ if (last_loading == NULL) return; - int cargo_left[NUM_CARGO]; - - for (uint i = 0; i < NUM_CARGO; i++) cargo_left[i] = st->goods[i].cargo.Count(); - for (iter = st->loading_vehicles.begin(); iter != st->loading_vehicles.end(); ++iter) { Vehicle *v = *iter; - if (!(v->vehstatus & (VS_STOPPED | VS_CRASHED))) LoadUnloadVehicle(v, cargo_left); + if (!(v->vehstatus & (VS_STOPPED | VS_CRASHED))) LoadUnloadVehicle(v); if (v == last_loading) break; } @@ -1797,7 +1994,7 @@ CommandCost CmdBuyShareInCompany(TileIndex tile, DoCommandFlag flags, uint32 p1, break; } } - SetWindowDirty(WC_COMPANY, target_company); + InvalidateWindowData(WC_COMPANY, target_company); CompanyAdminUpdate(c); } return cost; @@ -1835,7 +2032,7 @@ CommandCost CmdSellShareInCompany(TileIndex tile, DoCommandFlag flags, uint32 p1 OwnerByte *b = c->share_owners; while (*b != _current_company) b++; // share owners is guaranteed to contain company *b = COMPANY_SPECTATOR; - SetWindowDirty(WC_COMPANY, target_company); + InvalidateWindowData(WC_COMPANY, target_company); CompanyAdminUpdate(c); } return CommandCost(EXPENSES_OTHER, cost); diff --git a/src/economy_base.h b/src/economy_base.h index 742d01878..60b0964a9 100644 --- a/src/economy_base.h +++ b/src/economy_base.h @@ -24,9 +24,10 @@ extern CargoPaymentPool _cargo_payment_pool; * Helper class to perform the cargo payment. */ struct CargoPayment : CargoPaymentPool::PoolItem<&_cargo_payment_pool> { - Vehicle *front; ///< The front vehicle to do the payment of - Money route_profit; ///< The amount of money to add/remove from the bank account - Money visual_profit; ///< The visual profit to show + Vehicle *front; ///< The front vehicle to do the payment of + Money route_profit; ///< The amount of money to add/remove from the bank account + Money visual_profit; ///< The visual profit to show + Money visual_transfer; ///< The transfer credits to be shown /* Unsaved variables */ Company *owner; ///< The owner of the vehicle diff --git a/src/economy_type.h b/src/economy_type.h index a15f4b5e3..7e7a57241 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 861b728a6..48f3e6cdf 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) { @@ -547,7 +549,7 @@ static EffectInitProc * const _effect_init_procs[] = { }; assert_compile(lengthof(_effect_init_procs) == EV_END); -/** Functions for controling effect vehicles at each tick. */ +/** Functions for controlling effect vehicles at each tick. */ static EffectTickProc * const _effect_tick_procs[] = { ChimneySmokeTick, // EV_CHIMNEY_SMOKE SteamSmokeTick, // EV_STEAM_SMOKE diff --git a/src/elrail.cpp b/src/elrail.cpp index 3ef3fab84..8116bff2c 100644 --- a/src/elrail.cpp +++ b/src/elrail.cpp @@ -25,7 +25,7 @@ * Group 0: Tiles with both an even X coordinate and an even Y coordinate * Group 1: Tiles with an even X and an odd Y coordinate * Group 2: Tiles with an odd X and an even Y coordinate - * Group 3: Tiles with both an odd X and Y coordnate. + * Group 3: Tiles with both an odd X and Y coordinate. * *

    Pylon Points

    *

    Control Points

    @@ -39,7 +39,7 @@ * other tile. * * Now on each edge there are two PCPs: One from each adjacent tile. Both PCPs - * are merged using an OR operation (i. e. if one tile needs a PCP at the postion + * are merged using an OR operation (i. e. if one tile needs a PCP at the position * in question, both tiles get it). * *

    Position Points

    @@ -49,8 +49,8 @@ * that are impossible (because the pylon would be situated on the track) and * some that are preferred (because the pylon would be rectangular to the track). * - * - * + * @image html elrail_tile.png + * @image html elrail_track.png * */ @@ -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. @@ -127,7 +129,7 @@ static TrackBits MaskWireBits(TileIndex t, TrackBits tracks) TrackdirBits neighbour_tdb = TRACKDIR_BIT_NONE; for (DiagDirection d = DIAGDIR_BEGIN; d < DIAGDIR_END; d++) { - /* If the neighbor tile is either not electrified or has no tracks that can be reached + /* If the neighbour tile is either not electrified or has no tracks that can be reached * from this tile, mark all trackdirs that can be reached from the neighbour tile * as needing no catenary. We make an exception for blocked station tiles with a matching * axis that still display wires to preserve visual continuity. */ @@ -376,7 +378,7 @@ static void DrawCatenaryRailway(const TileInfo *ti) /* Station and road crossings are always "flat", so adjust the tileh accordingly */ if (IsTileType(neighbour, MP_STATION) || IsTileType(neighbour, MP_ROAD)) tileh[TS_NEIGHBOUR] = SLOPE_FLAT; - /* Read the foundataions if they are present, and adjust the tileh */ + /* Read the foundations if they are present, and adjust the tileh */ if (trackconfig[TS_NEIGHBOUR] != TRACK_BIT_NONE && IsTileType(neighbour, MP_RAILWAY) && HasCatenary(GetRailType(neighbour))) foundation = GetRailFoundation(tileh[TS_NEIGHBOUR], trackconfig[TS_NEIGHBOUR]); if (IsBridgeTile(neighbour)) { foundation = GetBridgeFoundation(tileh[TS_NEIGHBOUR], DiagDirToAxis(GetTunnelBridgeDirection(neighbour))); @@ -426,7 +428,7 @@ static void DrawCatenaryRailway(const TileInfo *ti) /* Don't build the pylon if it would be outside the tile */ if (!HasBit(OwnedPPPonPCP[i], temp)) { - /* We have a neighour that will draw it, bail out */ + /* We have a neighbour that will draw it, bail out */ if (trackconfig[TS_NEIGHBOUR] != TRACK_BIT_NONE) break; continue; // No neighbour, go looking for a better position } @@ -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 04ceec768..362bd014a 100644 --- a/src/engine.cpp +++ b/src/engine.cpp @@ -30,10 +30,13 @@ #include "company_base.h" #include "vehicle_func.h" #include "articulated_vehicles.h" +#include "error.h" #include "table/strings.h" #include "table/engines.h" +#include "safeguards.h" + EnginePool _engine_pool("Engine"); INSTANTIATE_POOL_METHODS(Engine) @@ -854,7 +857,7 @@ void EnginesDailyLoop() * 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 * @param tile unused - * @param flags operation to perfom + * @param flags operation to perform * @param p1 engine-prototype offered * @param p2 unused * @param text unused @@ -1000,7 +1003,7 @@ static bool IsUniqueEngineName(const char *name) /** * Rename an engine. * @param tile unused - * @param flags operation to perfom + * @param flags operation to perform * @param p1 engine ID to rename * @param p2 unused * @param text the new name or an empty string when resetting to the default @@ -1024,7 +1027,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(); @@ -1098,3 +1101,29 @@ bool IsEngineRefittable(EngineID engine) CargoID default_cargo = e->GetDefaultCargoType(); return default_cargo != CT_INVALID && ei->refit_mask != 1U << default_cargo; } + +/** + * Check for engines that have an appropriate availability. + */ +void CheckEngines() +{ + const Engine *e; + Date min_date = INT32_MAX; + + FOR_ALL_ENGINES(e) { + if (!e->IsEnabled()) continue; + + /* We have an available engine... yay! */ + if ((e->flags & ENGINE_AVAILABLE) != 0 && e->company_avail != 0) return; + + /* Okay, try to find the earliest date. */ + min_date = min(min_date, e->info.base_intro); + } + + if (min_date < INT32_MAX) { + SetDParam(0, min_date); + ShowErrorMessage(STR_ERROR_NO_VEHICLES_AVAILABLE_YET, STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION, WL_WARNING); + } else { + ShowErrorMessage(STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL, STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION, WL_WARNING); + } +} diff --git a/src/engine_base.h b/src/engine_base.h index 789a26d1a..99a15aaea 100644 --- a/src/engine_base.h +++ b/src/engine_base.h @@ -72,7 +72,7 @@ struct Engine : EnginePool::PoolItem<&_engine_pool> { * Usually a valid cargo is returned, even though the vehicle has zero capacity, and can therefore not carry anything. But the cargotype is still used * for livery selection etc.. * - * Vehicles with CT_INVALID as default cargo are usally not available, but it can appear as default cargo of articulated parts. + * Vehicles with CT_INVALID as default cargo are usually not available, but it can appear as default cargo of articulated parts. * * @return The default cargo type. * @see CanCarryCargo diff --git a/src/engine_func.h b/src/engine_func.h index bb7e2fcac..faa8e8e02 100644 --- a/src/engine_func.h +++ b/src/engine_func.h @@ -18,6 +18,7 @@ void SetupEngines(); void StartupEngines(); +void CheckEngines(); /* Original engine data counts and offsets */ extern const uint8 _engine_counts[4]; diff --git a/src/engine_gui.cpp b/src/engine_gui.cpp index a2f5b919c..3ac261d15 100644 --- a/src/engine_gui.cpp +++ b/src/engine_gui.cpp @@ -25,6 +25,8 @@ #include "table/strings.h" +#include "safeguards.h" + /** * Return the category of an engine. * @param engine Engine to examine. @@ -61,9 +63,9 @@ static const NWidgetPart _nested_engine_preview_widgets[] = { struct EnginePreviewWindow : Window { static const int VEHICLE_SPACE = 40; // The space to show the vehicle image - EnginePreviewWindow(const WindowDesc *desc, WindowNumber window_number) : Window() + EnginePreviewWindow(WindowDesc *desc, WindowNumber window_number) : Window(desc) { - this->InitNested(desc, window_number); + this->InitNested(window_number); /* There is no way to recover the window; so disallow closure via DEL; unless SHIFT+DEL */ this->flags |= WF_STICKY; @@ -120,8 +122,8 @@ struct EnginePreviewWindow : Window { } }; -static const WindowDesc _engine_preview_desc( - WDP_CENTER, 0, 0, +static WindowDesc _engine_preview_desc( + WDP_CENTER, "engine_preview", 0, 0, WC_ENGINE_PREVIEW, WC_NONE, WDF_CONSTRUCTION, _nested_engine_preview_widgets, lengthof(_nested_engine_preview_widgets) diff --git a/src/error.h b/src/error.h index 34fb3fb2c..597b62efb 100644 --- a/src/error.h +++ b/src/error.h @@ -16,9 +16,11 @@ #include "company_type.h" #include "core/geometry_type.hpp" +struct GRFFile; + /** Message severity/type */ enum WarningLevel { - WL_INFO, ///< Used for DoCommand-like (and some nonfatal AI GUI) errors/information + WL_INFO, ///< Used for DoCommand-like (and some non-fatal AI GUI) errors/information WL_WARNING, ///< Other information WL_ERROR, ///< Errors (eg. saving/loading failed) WL_CRITICAL, ///< Critical errors, the MessageBox is shown in all cases @@ -30,6 +32,7 @@ class ErrorMessageData { 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,10 @@ class ErrorMessageData { 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; } void SetDParam(uint n, uint64 v); void SetDParamStr(uint n, const char *str); @@ -50,7 +56,7 @@ class ErrorMessageData { 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 6c4c2e9c6..98988de5a 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), @@ -39,8 +41,8 @@ static const NWidgetPart _nested_errmsg_widgets[] = { EndContainer(), }; -static const WindowDesc _errmsg_desc( - WDP_MANUAL, 0, 0, +static WindowDesc _errmsg_desc( + WDP_MANUAL, "error", 0, 0, WC_ERRMSG, WC_NONE, 0, _nested_errmsg_widgets, lengthof(_nested_errmsg_widgets) @@ -59,15 +61,15 @@ static const NWidgetPart _nested_errmsg_face_widgets[] = { EndContainer(), }; -static const WindowDesc _errmsg_face_desc( - WDP_MANUAL, 0, 0, +static WindowDesc _errmsg_face_desc( + WDP_MANUAL, "error_face", 0, 0, WC_ERRMSG, WC_NONE, 0, _nested_errmsg_face_widgets, lengthof(_nested_errmsg_face_widgets) ); /** - * Copy the given data into our instace. + * Copy the given data into our instance. * @param data The data to copy. */ ErrorMessageData::ErrorMessageData(const ErrorMessageData &data) @@ -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. */ @@ -171,9 +175,9 @@ struct ErrmsgWindow : public Window, ErrorMessageData { uint height_detailed; ///< Height of the #detailed_msg string in pixels in the #WID_EM_MESSAGE widget. public: - ErrmsgWindow(const ErrorMessageData &data) : Window(), ErrorMessageData(data) + ErrmsgWindow(const ErrorMessageData &data) : Window(data.HasFace() ? &_errmsg_face_desc : &_errmsg_desc), ErrorMessageData(data) { - this->InitNested((this->face == INVALID_COMPANY) ? &_errmsg_desc : &_errmsg_face_desc); + this->InitNested(); } virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) @@ -181,7 +185,7 @@ struct ErrmsgWindow : public Window, ErrorMessageData { 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); + 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); @@ -195,7 +199,7 @@ struct ErrmsgWindow : public Window, ErrorMessageData { size->height = max(size->height, panel_height); } - virtual Point OnInitialPosition(const WindowDesc *desc, int16 sm_width, int16 sm_height, int window_number) + virtual Point OnInitialPosition(int16 sm_width, int16 sm_height, int window_number) { /* Position (0, 0) given, center the window. */ if (this->position.x == 0 && this->position.y == 0) { @@ -253,7 +257,7 @@ struct ErrmsgWindow : public Window, ErrorMessageData { 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, @@ -300,7 +304,7 @@ struct ErrmsgWindow : public Window, ErrorMessageData { if (_window_system_initialized) ShowFirstError(); } - virtual EventState OnKeyPress(uint16 key, uint16 keycode) + virtual EventState OnKeyPress(WChar key, uint16 keycode) { if (keycode != WKC_SPACE) return ES_NOT_HANDLED; delete this; @@ -358,19 +362,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 +395,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 924141a85..a72950bc7 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) @@ -238,7 +246,7 @@ static void FioFreeHandle() * @param slot Index to assign. * @param filename Name of the file at the disk. * @param subdir The sub directory to search this file in. - */ + */ void FioOpenFile(int slot, const char *filename, Subdirectory subdir) { FILE *f; @@ -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; } @@ -643,7 +658,7 @@ static void SimplifyFileName(char *name) /* Force lowercase */ strtolower(name); - /* Tar-files always have '/' path-seperator, but we want our PATHSEPCHAR */ + /* Tar-files always have '/' path-separator, but we want our PATHSEPCHAR */ #if (PATHSEPCHAR != '/') for (char *n = name; *n != '\0'; n++) if (*n == '/') *n = PATHSEPCHAR; #endif @@ -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,53 +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", 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 }; @@ -1328,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 */ @@ -1364,7 +1444,7 @@ static uint ScanTar(FileScanner *fs, const char *extension, TarFileList::iterato } /** - * Scan for files with the given extention in the given search path. + * Scan for files with the given extension in the given search path. * @param extension the extension of files to search for. * @param sd the sub directory to search in. * @param tars whether to search in the tars too. @@ -1385,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); } @@ -1410,7 +1490,7 @@ uint FileScanner::Scan(const char *extension, Subdirectory sd, bool tars, bool r } /** - * Scan for files with the given extention in the given search path. + * Scan for files with the given extension in the given search path. * @param extension the extension of files to search for. * @param directory the sub directory to search in. * @param recursive whether to search recursively @@ -1421,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 d85c8630c..443460b2d 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 3f21be6dd..87cb2d1a8 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 b2ed1ec50..00ed5a484 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 aca7ff407..b26fe0092 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(); } @@ -88,9 +89,9 @@ enum FileSlots { CONFIG_SLOT = 0, /** Slot for the sound. */ SOUND_SLOT = 1, - /** First slot useable for (New)GRFs used during the game. */ + /** First slot usable for (New)GRFs used during the game. */ FIRST_GRF_SLOT = 2, - /** Last slot useable for (New)GRFs used during the game. */ + /** Last slot usable for (New)GRFs used during the game. */ LAST_GRF_SLOT = 63, /** Maximum number of slots. */ MAX_FILE_SLOTS = 64 @@ -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 5bc542c04..14c335e94 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. @@ -73,6 +75,7 @@ static const NWidgetPart _nested_load_dialog_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_GREY), NWidget(WWT_CAPTION, COLOUR_GREY, WID_SL_CAPTION), + NWidget(WWT_DEFSIZEBOX, COLOUR_GREY), EndContainer(), NWidget(WWT_PANEL, COLOUR_GREY, WID_SL_BACKGROUND), SetFill(1, 0), SetResize(1, 0), EndContainer(), NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), @@ -115,6 +118,7 @@ static const NWidgetPart _nested_load_heightmap_dialog_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_GREY), NWidget(WWT_CAPTION, COLOUR_GREY, WID_SL_CAPTION), + NWidget(WWT_DEFSIZEBOX, COLOUR_GREY), EndContainer(), NWidget(WWT_PANEL, COLOUR_GREY, WID_SL_BACKGROUND), SetFill(1, 0), SetResize(1, 0), EndContainer(), NWidget(NWID_VERTICAL), @@ -131,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(), @@ -145,6 +151,7 @@ static const NWidgetPart _nested_save_dialog_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_GREY), NWidget(WWT_CAPTION, COLOUR_GREY, WID_SL_CAPTION), + NWidget(WWT_DEFSIZEBOX, COLOUR_GREY), EndContainer(), NWidget(WWT_PANEL, COLOUR_GREY, WID_SL_BACKGROUND), SetFill(1, 0), SetResize(1, 0), EndContainer(), NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), @@ -243,7 +250,7 @@ struct SaveLoadWindow : public Window { this->filename_editbox.text.UpdateSize(); } - SaveLoadWindow(const WindowDesc *desc, SaveLoadDialogMode mode) : filename_editbox(64) + SaveLoadWindow(WindowDesc *desc, SaveLoadDialogMode mode) : Window(desc), filename_editbox(64) { static const StringID saveload_captions[] = { STR_SAVELOAD_LOAD_CAPTION, @@ -266,14 +273,13 @@ struct SaveLoadWindow : public Window { this->querystrings[WID_SL_SAVE_OSK_TITLE] = &this->filename_editbox; this->filename_editbox.ok_button = WID_SL_SAVE_GAME; - this->filename_editbox.afilter = CS_ALPHANUMERAL; - this->CreateNestedTree(desc, true); + this->CreateNestedTree(true); if (mode == SLD_LOAD_GAME) this->GetWidget(WID_SL_CONTENT_DOWNLOAD_SEL)->SetDisplayedPlane(SZSP_HORIZONTAL); this->GetWidget(WID_SL_CAPTION)->widget_data = saveload_captions[mode]; this->vscroll = this->GetScrollbar(WID_SL_SCROLLBAR); - this->FinishInitNested(desc, 0); + this->FinishInitNested(0); this->LowerWidget(WID_SL_DRIVES_DIRECTORIES_LIST); @@ -292,17 +298,17 @@ struct SaveLoadWindow : public Window { 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: @@ -519,16 +525,21 @@ struct SaveLoadWindow : public Window { 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; @@ -541,7 +552,7 @@ struct SaveLoadWindow : public Window { 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 @@ -616,7 +627,7 @@ struct SaveLoadWindow : public Window { } } - virtual EventState OnKeyPress(uint16 key, uint16 keycode) + virtual EventState OnKeyPress(WChar key, uint16 keycode) { if (keycode == WKC_ESC) { delete this; @@ -643,10 +654,10 @@ struct SaveLoadWindow : public Window { } 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) */ @@ -677,9 +688,12 @@ struct SaveLoadWindow : public Window { 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, @@ -697,24 +711,24 @@ struct SaveLoadWindow : public Window { }; /** Load game/scenario */ -static const WindowDesc _load_dialog_desc( - WDP_CENTER, 500, 294, +static WindowDesc _load_dialog_desc( + WDP_CENTER, "load_game", 500, 294, WC_SAVELOAD, WC_NONE, 0, _nested_load_dialog_widgets, lengthof(_nested_load_dialog_widgets) ); /** Load heightmap */ -static const WindowDesc _load_heightmap_dialog_desc( - WDP_CENTER, 257, 320, +static WindowDesc _load_heightmap_dialog_desc( + WDP_CENTER, "load_heightmap", 257, 320, WC_SAVELOAD, WC_NONE, 0, _nested_load_heightmap_dialog_widgets, lengthof(_nested_load_heightmap_dialog_widgets) ); /** Save game/scenario */ -static const WindowDesc _save_dialog_desc( - WDP_CENTER, 500, 294, +static WindowDesc _save_dialog_desc( + WDP_CENTER, "save_game", 500, 294, WC_SAVELOAD, WC_NONE, 0, _nested_save_dialog_widgets, lengthof(_nested_save_dialog_widgets) @@ -741,7 +755,7 @@ void ShowSaveLoadDialog(SaveLoadDialogMode mode) { DeleteWindowById(WC_SAVELOAD, 0); - const WindowDesc *sld; + WindowDesc *sld; switch (mode) { case SLD_SAVE_GAME: case SLD_SAVE_SCENARIO: diff --git a/src/fontcache.cpp b/src/fontcache.cpp index 46233150f..0f949c544 100644 --- a/src/fontcache.cpp +++ b/src/fontcache.cpp @@ -11,829 +11,300 @@ #include "stdafx.h" #include "fontcache.h" +#include "fontdetection.h" #include "blitter/factory.hpp" #include "core/math_func.hpp" +#include "core/smallmap_type.hpp" #include "strings_func.h" #include "zoom_type.h" +#include "gfx_layout.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. -/** Semi-constant for the height of the different sizes of fonts. */ -int _font_height[FS_END]; +/** Default heights for the different sizes of fonts. */ +static const int _default_font_height[FS_END] = {10, 6, 18, 10}; +static const int _default_font_ascender[FS_END] = { 8, 5, 15, 8}; /** - * Reset the font sizes to the defaults of the sprite based fonts. - * @param monospace Whether to reset the monospace or regular fonts. + * Create a new font cache. + * @param fs The size of the font. */ -void ResetFontSizes(bool monospace) +FontCache::FontCache(FontSize fs) : parent(FontCache::Get(fs)), fs(fs), height(_default_font_height[fs]), + ascender(_default_font_ascender[fs]), descender(_default_font_ascender[fs] - _default_font_height[fs]), + units_per_em(1) { - if (monospace) { - _font_height[FS_MONO] = 10; - } else { - _font_height[FS_SMALL] = 6; - _font_height[FS_NORMAL] = 10; - _font_height[FS_LARGE] = 18; - } + assert(parent == NULL || this->fs == parent->fs); + FontCache::caches[this->fs] = this; + Layouter::ResetFontCache(this->fs); } -#ifdef WITH_FREETYPE -#include -#include FT_FREETYPE_H -#include FT_GLYPH_H +/** Clean everything up. */ +FontCache::~FontCache() +{ + assert(this->fs == parent->fs); + FontCache::caches[this->fs] = this->parent; + Layouter::ResetFontCache(this->fs); +} -#ifdef WITH_FONTCONFIG -#include -#endif -static FT_Library _library = NULL; -static FT_Face _face_small = NULL; -static FT_Face _face_medium = NULL; -static FT_Face _face_large = NULL; -static FT_Face _face_mono = NULL; -static int _ascender[FS_END]; +/** + * Get height of a character for a given font size. + * @param size Font size to get height of + * @return Height of characters in the given font (pixels) + */ +int GetCharacterHeight(FontSize size) +{ + return FontCache::Get(size)->GetHeight(); +} -FreeTypeSettings _freetype; -static const byte FACE_COLOUR = 1; -static const byte SHADOW_COLOUR = 2; +/** Font cache for fonts that are based on a freetype font. */ +class SpriteFontCache : public FontCache { +private: + SpriteID **glyph_to_spriteid_map; ///< Mapping of glyphs to sprite IDs. + + void ClearGlyphToSpriteMap(); +public: + SpriteFontCache(FontSize fs); + ~SpriteFontCache(); + virtual SpriteID GetUnicodeGlyph(WChar key); + virtual void SetUnicodeGlyph(WChar key, SpriteID sprite); + virtual void InitializeUnicodeGlyphMap(); + virtual void ClearFontCache(); + virtual const Sprite *GetGlyph(GlyphID key); + virtual uint GetGlyphWidth(GlyphID key); + 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"; } +}; /** - * Get the font loaded into a Freetype face by using a font-name. - * If no appropriate font is found, the function returns an error + * Create a new sprite font cache. + * @param fs The font size to create the cache for. */ - -/* ======================================================================================== - * Windows support - * ======================================================================================== */ - -#ifdef WIN32 -#include -#include /* SHGetFolderPath */ -#include "os/windows/win32.h" +SpriteFontCache::SpriteFontCache(FontSize fs) : FontCache(fs), glyph_to_spriteid_map(NULL) +{ + this->InitializeUnicodeGlyphMap(); +} /** - * Get the short DOS 8.3 format for paths. - * FreeType doesn't support Unicode filenames and Windows' fopen (as used - * by FreeType) doesn't support UTF-8 filenames. So we have to convert the - * filename into something that isn't UTF-8 but represents the Unicode file - * name. This is the short DOS 8.3 format. This does not contain any - * characters that fopen doesn't support. - * @param long_path the path in UTF-8. - * @return the short path in ANSI (ASCII). + * Free everything we allocated. */ -char *GetShortPath(const char *long_path) +SpriteFontCache::~SpriteFontCache() { - static char short_path[MAX_PATH]; -#ifdef UNICODE - /* The non-unicode GetShortPath doesn't support UTF-8..., - * so convert the path to wide chars, then get the short - * path and convert it back again. */ - wchar_t long_path_w[MAX_PATH]; - MultiByteToWideChar(CP_UTF8, 0, long_path, -1, long_path_w, MAX_PATH); - - wchar_t short_path_w[MAX_PATH]; - GetShortPathNameW(long_path_w, short_path_w, MAX_PATH); - - WideCharToMultiByte(CP_ACP, 0, short_path_w, -1, short_path, MAX_PATH, NULL, NULL); -#else - /* Technically not needed, but do it for consistency. */ - GetShortPathNameA(long_path, short_path, MAX_PATH); -#endif - return short_path; + this->ClearGlyphToSpriteMap(); } -/* Get the font file to be loaded into Freetype by looping the registry - * location where windows lists all installed fonts. Not very nice, will - * surely break if the registry path changes, but it works. Much better - * solution would be to use CreateFont, and extract the font data from it - * by GetFontData. The problem with this is that the font file needs to be - * kept in memory then until the font is no longer needed. This could mean - * an additional memory usage of 30MB (just for fonts!) when using an eastern - * font for all font sizes */ -#define FONT_DIR_NT "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Fonts" -#define FONT_DIR_9X "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Fonts" -static FT_Error GetFontByFaceName(const char *font_name, FT_Face *face) +SpriteID SpriteFontCache::GetUnicodeGlyph(GlyphID key) { - FT_Error err = FT_Err_Cannot_Open_Resource; - HKEY hKey; - LONG ret; - TCHAR vbuffer[MAX_PATH], dbuffer[256]; - TCHAR *font_namep; - char *font_path; - uint index; - - /* On windows NT (2000, NT3.5, XP, etc.) the fonts are stored in the - * "Windows NT" key, on Windows 9x in the Windows key. To save us having - * to retrieve the windows version, we'll just query both */ - ret = RegOpenKeyEx(HKEY_LOCAL_MACHINE, _T(FONT_DIR_NT), 0, KEY_READ, &hKey); - if (ret != ERROR_SUCCESS) ret = RegOpenKeyEx(HKEY_LOCAL_MACHINE, _T(FONT_DIR_9X), 0, KEY_READ, &hKey); - - if (ret != ERROR_SUCCESS) { - DEBUG(freetype, 0, "Cannot open registry key HKLM\\SOFTWARE\\Microsoft\\Windows (NT)\\CurrentVersion\\Fonts"); - return err; - } + if (this->glyph_to_spriteid_map[GB(key, 8, 8)] == NULL) return 0; + return this->glyph_to_spriteid_map[GB(key, 8, 8)][GB(key, 0, 8)]; +} - /* For Unicode we need some conversion between widechar and - * normal char to match the data returned by RegEnumValue, - * otherwise just use parameter */ -#if defined(UNICODE) - font_namep = MallocT(MAX_PATH); - MB_TO_WIDE_BUFFER(font_name, font_namep, MAX_PATH * sizeof(TCHAR)); -#else - font_namep = const_cast(font_name); // only cast because in unicode pointer is not const -#endif +void SpriteFontCache::SetUnicodeGlyph(GlyphID key, SpriteID sprite) +{ + if (this->glyph_to_spriteid_map == NULL) this->glyph_to_spriteid_map = CallocT(256); + if (this->glyph_to_spriteid_map[GB(key, 8, 8)] == NULL) this->glyph_to_spriteid_map[GB(key, 8, 8)] = CallocT(256); + this->glyph_to_spriteid_map[GB(key, 8, 8)][GB(key, 0, 8)] = sprite; +} - for (index = 0;; index++) { - TCHAR *s; - DWORD vbuflen = lengthof(vbuffer); - DWORD dbuflen = lengthof(dbuffer); - - ret = RegEnumValue(hKey, index, vbuffer, &vbuflen, NULL, NULL, (byte*)dbuffer, &dbuflen); - if (ret != ERROR_SUCCESS) goto registry_no_font_found; - - /* The font names in the registry are of the following 3 forms: - * - ADMUI3.fon - * - Book Antiqua Bold (TrueType) - * - Batang & BatangChe & Gungsuh & GungsuhChe (TrueType) - * We will strip the font-type '()' if any and work with the font name - * itself, which must match exactly; if... - * TTC files, font files which contain more than one font are seperated - * byt '&'. Our best bet will be to do substr match for the fontname - * and then let FreeType figure out which index to load */ - s = _tcschr(vbuffer, _T('(')); - if (s != NULL) s[-1] = '\0'; - - if (_tcschr(vbuffer, _T('&')) == NULL) { - if (_tcsicmp(vbuffer, font_namep) == 0) break; +void SpriteFontCache::InitializeUnicodeGlyphMap() +{ + /* Clear out existing glyph map if it exists */ + this->ClearGlyphToSpriteMap(); + + SpriteID base; + switch (this->fs) { + default: NOT_REACHED(); + case FS_MONO: // Use normal as default for mono spaced font, i.e. FALL THROUGH + case FS_NORMAL: base = SPR_ASCII_SPACE; break; + case FS_SMALL: base = SPR_ASCII_SPACE_SMALL; break; + case FS_LARGE: base = SPR_ASCII_SPACE_BIG; break; + } + + for (uint i = ASCII_LETTERSTART; i < 256; i++) { + SpriteID sprite = base + i - ASCII_LETTERSTART; + if (!SpriteExists(sprite)) continue; + this->SetUnicodeGlyph(i, sprite); + this->SetUnicodeGlyph(i + SCC_SPRITE_START, sprite); + } + + for (uint i = 0; i < lengthof(_default_unicode_map); i++) { + 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. */ + this->SetUnicodeGlyph(_default_unicode_map[i].code, 0); } else { - if (_tcsstr(vbuffer, font_namep) != NULL) break; + SpriteID sprite = base + key - ASCII_LETTERSTART; + this->SetUnicodeGlyph(_default_unicode_map[i].code, sprite); } } - - if (!SUCCEEDED(SHGetFolderPath(NULL, CSIDL_FONTS, NULL, SHGFP_TYPE_CURRENT, vbuffer))) { - DEBUG(freetype, 0, "SHGetFolderPath cannot return fonts directory"); - goto folder_error; - } - - /* Some fonts are contained in .ttc files, TrueType Collection fonts. These - * contain multiple fonts inside this single file. GetFontData however - * returns the whole file, so we need to check each font inside to get the - * proper font. - * Also note that FreeType does not support UNICODE filesnames! */ -#if defined(UNICODE) - /* We need a cast here back from wide because FreeType doesn't support - * widechar filenames. Just use the buffer we allocated before for the - * font_name search */ - font_path = (char*)font_namep; - WIDE_TO_MB_BUFFER(vbuffer, font_path, MAX_PATH * sizeof(TCHAR)); -#else - font_path = vbuffer; -#endif - - ttd_strlcat(font_path, "\\", MAX_PATH * sizeof(TCHAR)); - ttd_strlcat(font_path, WIDE_TO_MB(dbuffer), MAX_PATH * sizeof(TCHAR)); - - /* Convert the path into something that FreeType understands */ - font_path = GetShortPath(font_path); - - index = 0; - do { - err = FT_New_Face(_library, font_path, index, face); - if (err != FT_Err_Ok) break; - - if (strncasecmp(font_name, (*face)->family_name, strlen((*face)->family_name)) == 0) break; - /* Try english name if font name failed */ - if (strncasecmp(font_name + strlen(font_name) + 1, (*face)->family_name, strlen((*face)->family_name)) == 0) break; - err = FT_Err_Cannot_Open_Resource; - - } while ((FT_Long)++index != (*face)->num_faces); - - -folder_error: -registry_no_font_found: -#if defined(UNICODE) - free(font_namep); -#endif - RegCloseKey(hKey); - return err; } /** - * Fonts can have localised names and when the system locale is the same as - * one of those localised names Windows will always return that localised name - * instead of allowing to get the non-localised (English US) name of the font. - * This will later on give problems as freetype uses the non-localised name of - * the font and we need to compare based on that name. - * Windows furthermore DOES NOT have an API to get the non-localised name nor - * can we override the system locale. This means that we have to actually read - * the font itself to gather the font name we want. - * Based on: http://blogs.msdn.com/michkap/archive/2006/02/13/530814.aspx - * @param logfont the font information to get the english name of. - * @return the English name (if it could be found). + * Clear the glyph to sprite mapping. */ -static const char *GetEnglishFontName(const ENUMLOGFONTEX *logfont) +void SpriteFontCache::ClearGlyphToSpriteMap() { - static char font_name[MAX_PATH]; - const char *ret_font_name = NULL; - uint pos = 0; - HDC dc; - HGDIOBJ oldfont; - byte *buf; - DWORD dw; - uint16 format, count, stringOffset, platformId, encodingId, languageId, nameId, length, offset; - - HFONT font = CreateFontIndirect(&logfont->elfLogFont); - if (font == NULL) goto err1; - - dc = GetDC(NULL); - oldfont = SelectObject(dc, font); - dw = GetFontData(dc, 'eman', 0, NULL, 0); - if (dw == GDI_ERROR) goto err2; - - buf = MallocT(dw); - dw = GetFontData(dc, 'eman', 0, buf, dw); - if (dw == GDI_ERROR) goto err3; - - format = buf[pos++] << 8; - format += buf[pos++]; - assert(format == 0); - count = buf[pos++] << 8; - count += buf[pos++]; - stringOffset = buf[pos++] << 8; - stringOffset += buf[pos++]; - for (uint i = 0; i < count; i++) { - platformId = buf[pos++] << 8; - platformId += buf[pos++]; - encodingId = buf[pos++] << 8; - encodingId += buf[pos++]; - languageId = buf[pos++] << 8; - languageId += buf[pos++]; - nameId = buf[pos++] << 8; - nameId += buf[pos++]; - if (nameId != 1) { - pos += 4; // skip length and offset - continue; - } - length = buf[pos++] << 8; - length += buf[pos++]; - offset = buf[pos++] << 8; - offset += buf[pos++]; - - /* Don't buffer overflow */ - length = min(length, MAX_PATH - 1); - for (uint j = 0; j < length; j++) font_name[j] = buf[stringOffset + offset + j]; - font_name[length] = '\0'; - - if ((platformId == 1 && languageId == 0) || // Macintosh English - (platformId == 3 && languageId == 0x0409)) { // Microsoft English (US) - ret_font_name = font_name; - break; - } - } - -err3: - free(buf); -err2: - SelectObject(dc, oldfont); - ReleaseDC(NULL, dc); - DeleteObject(font); -err1: - return ret_font_name == NULL ? WIDE_TO_MB((const TCHAR*)logfont->elfFullName) : ret_font_name; -} - -class FontList { -protected: - TCHAR **fonts; - uint items; - uint capacity; + if (this->glyph_to_spriteid_map == NULL) return; -public: - FontList() : fonts(NULL), items(0), capacity(0) { }; - - ~FontList() { - if (this->fonts == NULL) return; - - for (uint i = 0; i < this->items; i++) { - free(this->fonts[i]); - } - - free(this->fonts); + for (uint i = 0; i < 256; i++) { + free(this->glyph_to_spriteid_map[i]); } + free(this->glyph_to_spriteid_map); + this->glyph_to_spriteid_map = NULL; +} - bool Add(const TCHAR *font) { - for (uint i = 0; i < this->items; i++) { - if (_tcscmp(this->fonts[i], font) == 0) return false; - } - - if (this->items == this->capacity) { - this->capacity += 10; - this->fonts = ReallocT(this->fonts, this->capacity); - } - - this->fonts[this->items++] = _tcsdup(font); - - return true; - } -}; - -struct EFCParam { - FreeTypeSettings *settings; - LOCALESIGNATURE locale; - MissingGlyphSearcher *callback; - FontList fonts; -}; - -static int CALLBACK EnumFontCallback(const ENUMLOGFONTEX *logfont, const NEWTEXTMETRICEX *metric, DWORD type, LPARAM lParam) +void SpriteFontCache::ClearFontCache() { - EFCParam *info = (EFCParam *)lParam; - - /* Skip duplicates */ - if (!info->fonts.Add((const TCHAR*)logfont->elfFullName)) return 1; - /* Only use TrueType fonts */ - if (!(type & TRUETYPE_FONTTYPE)) return 1; - /* Don't use SYMBOL fonts */ - if (logfont->elfLogFont.lfCharSet == SYMBOL_CHARSET) return 1; - /* Use monospaced fonts when asked for it. */ - if (info->callback->Monospace() && (logfont->elfLogFont.lfPitchAndFamily & (FF_MODERN | FIXED_PITCH)) != (FF_MODERN | FIXED_PITCH)) return 1; - - /* The font has to have at least one of the supported locales to be usable. */ - if ((metric->ntmFontSig.fsCsb[0] & info->locale.lsCsbSupported[0]) == 0 && (metric->ntmFontSig.fsCsb[1] & info->locale.lsCsbSupported[1]) == 0) { - /* On win9x metric->ntmFontSig seems to contain garbage. */ - FONTSIGNATURE fs; - memset(&fs, 0, sizeof(fs)); - HFONT font = CreateFontIndirect(&logfont->elfLogFont); - if (font != NULL) { - HDC dc = GetDC(NULL); - HGDIOBJ oldfont = SelectObject(dc, font); - GetTextCharsetInfo(dc, &fs, 0); - SelectObject(dc, oldfont); - ReleaseDC(NULL, dc); - DeleteObject(font); - } - if ((fs.fsCsb[0] & info->locale.lsCsbSupported[0]) == 0 && (fs.fsCsb[1] & info->locale.lsCsbSupported[1]) == 0) return 1; - } - - char font_name[MAX_PATH]; -#if defined(UNICODE) - WIDE_TO_MB_BUFFER((const TCHAR*)logfont->elfFullName, font_name, lengthof(font_name)); -#else - strecpy(font_name, (const TCHAR*)logfont->elfFullName, lastof(font_name)); -#endif - - /* Add english name after font name */ - const char *english_name = GetEnglishFontName(logfont); - strecpy(font_name + strlen(font_name) + 1, english_name, lastof(font_name)); - - /* Check whether we can actually load the font. */ - bool ft_init = _library != NULL; - bool found = false; - FT_Face face; - /* Init FreeType if needed. */ - if ((ft_init || FT_Init_FreeType(&_library) == FT_Err_Ok) && GetFontByFaceName(font_name, &face) == FT_Err_Ok) { - FT_Done_Face(face); - found = true; - } - if (!ft_init) { - /* Uninit FreeType if we did the init. */ - FT_Done_FreeType(_library); - _library = NULL; - } - - if (!found) return 1; - - info->callback->SetFontNames(info->settings, font_name); - if (info->callback->FindMissingGlyphs(NULL)) return 1; - DEBUG(freetype, 1, "Fallback font: %s (%s)", font_name, english_name); - return 0; // stop enumerating + Layouter::ResetFontCache(this->fs); } -bool SetFallbackFont(FreeTypeSettings *settings, const char *language_isocode, int winlangid, MissingGlyphSearcher *callback) +const Sprite *SpriteFontCache::GetGlyph(GlyphID key) { - DEBUG(freetype, 1, "Trying fallback fonts"); - EFCParam langInfo; - if (GetLocaleInfo(MAKELCID(winlangid, SORT_DEFAULT), LOCALE_FONTSIGNATURE, (LPTSTR)&langInfo.locale, sizeof(langInfo.locale) / sizeof(TCHAR)) == 0) { - /* Invalid langid or some other mysterious error, can't determine fallback font. */ - DEBUG(freetype, 1, "Can't get locale info for fallback font (langid=0x%x)", winlangid); - return false; - } - langInfo.settings = settings; - langInfo.callback = callback; - - LOGFONT font; - /* Enumerate all fonts. */ - font.lfCharSet = DEFAULT_CHARSET; - font.lfFaceName[0] = '\0'; - font.lfPitchAndFamily = 0; - - HDC dc = GetDC(NULL); - int ret = EnumFontFamiliesEx(dc, &font, (FONTENUMPROC)&EnumFontCallback, (LPARAM)&langInfo, 0); - ReleaseDC(NULL, dc); - return ret == 0; + SpriteID sprite = this->GetUnicodeGlyph(key); + if (sprite == 0) sprite = this->GetUnicodeGlyph('?'); + return GetSprite(sprite, ST_FONT); } -#elif defined(__APPLE__) /* end ifdef Win32 */ -/* ======================================================================================== - * OSX support - * ======================================================================================== */ - -#include "os/macosx/macos.h" - -FT_Error GetFontByFaceName(const char *font_name, FT_Face *face) +uint SpriteFontCache::GetGlyphWidth(GlyphID key) { - FT_Error err = FT_Err_Cannot_Open_Resource; - - /* Get font reference from name. */ - CFStringRef name = CFStringCreateWithCString(kCFAllocatorDefault, font_name, kCFStringEncodingUTF8); - ATSFontRef font = ATSFontFindFromName(name, kATSOptionFlagsDefault); - CFRelease(name); - if (font == kInvalidFont) return err; - - /* Get a file system reference for the font. */ - FSRef ref; - OSStatus os_err = -1; -#if (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5) - if (MacOSVersionIsAtLeast(10, 5, 0)) { - os_err = ATSFontGetFileReference(font, &ref); - } else -#endif - { -#if (MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5) && !__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 -#endif - FSSpec spec; - os_err = ATSFontGetFileSpecification(font, (ATSFSSpec *)&spec); - if (os_err == noErr) os_err = FSpMakeFSRef(&spec, &ref); -#endif - } - - if (os_err == noErr) { - /* Get unix path for file. */ - UInt8 file_path[PATH_MAX]; - if (FSRefMakePath(&ref, file_path, sizeof(file_path)) == noErr) { - DEBUG(freetype, 3, "Font path for %s: %s", font_name, file_path); - err = FT_New_Face(_library, (const char *)file_path, 0, face); - } - } - - return err; + SpriteID sprite = this->GetUnicodeGlyph(key); + if (sprite == 0) sprite = this->GetUnicodeGlyph('?'); + return SpriteExists(sprite) ? GetSprite(sprite, ST_FONT)->width + (this->fs != FS_NORMAL) : 0; } -bool SetFallbackFont(FreeTypeSettings *settings, const char *language_isocode, int winlangid, MissingGlyphSearcher *callback) +bool SpriteFontCache::GetDrawGlyphShadow() { - const char *str; - bool result = false; - - callback->FindMissingGlyphs(&str); - -#if (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5) - if (MacOSVersionIsAtLeast(10, 5, 0)) { - /* Determine fallback font using CoreText. This uses the language isocode - * to find a suitable font. CoreText is available from 10.5 onwards. */ - char lang[16]; - if (strcmp(language_isocode, "zh_TW") == 0) { - /* Traditional Chinese */ - strecpy(lang, "zh-Hant", lastof(lang)); - } else if (strcmp(language_isocode, "zh_CN") == 0) { - /* Simplified Chinese */ - strecpy(lang, "zh-Hans", lastof(lang)); - } else if (strncmp(language_isocode, "ur", 2) == 0) { - /* The urdu alphabet is variant of persian. As OS X has no default - * font that advertises an urdu language code, search for persian - * support instead. */ - strecpy(lang, "fa", lastof(lang)); - } else { - /* Just copy the first part of the isocode. */ - strecpy(lang, language_isocode, lastof(lang)); - char *sep = strchr(lang, '_'); - if (sep != NULL) *sep = '\0'; - } - - CFStringRef lang_code; - lang_code = CFStringCreateWithCString(kCFAllocatorDefault, lang, kCFStringEncodingUTF8); - - /* Create a font iterator and iterate over all fonts that - * are available to the application. */ - ATSFontIterator itr; - ATSFontRef font; - ATSFontIteratorCreate(kATSFontContextLocal, NULL, NULL, kATSOptionFlagsUnRestrictedScope, &itr); - while (!result && ATSFontIteratorNext(itr, &font) == noErr) { - /* Get CoreText font handle. */ - CTFontRef font_ref = CTFontCreateWithPlatformFont(font, 0.0, NULL, NULL); - CFArrayRef langs = CTFontCopySupportedLanguages(font_ref); - if (langs != NULL) { - /* Font has a list of supported languages. */ - for (CFIndex i = 0; i < CFArrayGetCount(langs); i++) { - CFStringRef lang = (CFStringRef)CFArrayGetValueAtIndex(langs, i); - if (CFStringCompare(lang, lang_code, kCFCompareAnchored) == kCFCompareEqualTo) { - /* Lang code is supported by font, get full font name. */ - CFStringRef font_name = CTFontCopyFullName(font_ref); - char name[128]; - CFStringGetCString(font_name, name, lengthof(name), kCFStringEncodingUTF8); - CFRelease(font_name); - /* Skip some inappropriate or ugly looking fonts that have better alternatives. */ - if (strncmp(name, "Courier", 7) == 0 || strncmp(name, "Apple Symbols", 13) == 0 || - strncmp(name, ".Aqua", 5) == 0 || strncmp(name, "LastResort", 10) == 0 || - strncmp(name, "GB18030 Bitmap", 14) == 0) continue; - - /* Save result. */ - callback->SetFontNames(settings, name); - DEBUG(freetype, 2, "CT-Font for %s: %s", language_isocode, name); - result = true; - break; - } - } - CFRelease(langs); - } - CFRelease(font_ref); - } - ATSFontIteratorRelease(&itr); - CFRelease(lang_code); - } else -#endif - { -#if (MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5) && !__LP64__ - /* Determine fallback font using ATSUI. This uses a string sample with - * missing characters. This is not failure-proof, but a better way like - * using the isocode as in the CoreText code path is not available. - * ATSUI was deprecated with 10.6 and is only partially available in - * 64-bit mode. */ - - /* Remove all control characters in the range from SCC_CONTROL_START to - * SCC_CONTROL_END as well as all ASCII < 0x20 from the string as it will - * mess with the automatic font detection */ - char buff[256]; // This length is enough to find a suitable replacement font - strecpy(buff, str, lastof(buff)); - str_validate(buff, lastof(buff), SVS_ALLOW_NEWLINE); - - /* Extract a UniChar represenation of the sample string. */ - CFStringRef cf_str = CFStringCreateWithCString(kCFAllocatorDefault, buff, kCFStringEncodingUTF8); - if (cf_str == NULL) { - /* Something went wrong. Corrupt/invalid sample string? */ - return false; - } - CFIndex str_len = CFStringGetLength(cf_str); - UniChar string[str_len]; - CFStringGetCharacters(cf_str, CFRangeMake(0, str_len), string); - - /* Create a default text style with the default font. */ - ATSUStyle style; - ATSUCreateStyle(&style); - - /* Create a text layout object from the sample string using the text style. */ - UniCharCount run_len = kATSUToTextEnd; - ATSUTextLayout text_layout; - ATSUCreateTextLayoutWithTextPtr(string, kATSUFromTextBeginning, kATSUToTextEnd, str_len, 1, &run_len, &style, &text_layout); - - /* Try to match a font for the sample text. ATSUMatchFontsToText stops after - * it finds the first continous character run not renderable with the currently - * selected font starting at offset. The matching needs to be repeated until - * the end of the string is reached to make sure the fallback font matches for - * all characters in the string and not only the first run. */ - UniCharArrayOffset offset = kATSUFromTextBeginning; - OSStatus os_err; - do { - ATSUFontID font; - UniCharCount run_len; - os_err = ATSUMatchFontsToText(text_layout, offset, kATSUToTextEnd, &font, &offset, &run_len); - if (os_err == kATSUFontsMatched) { - /* Found a better fallback font. Update the text layout - * object with the new font. */ - ATSUAttributeTag tag = kATSUFontTag; - ByteCount size = sizeof(font); - ATSUAttributeValuePtr val = &font; - ATSUSetAttributes(style, 1, &tag, &size, &val); - offset += run_len; - } - /* Exit if the end of the string is reached or some other error occurred. */ - } while (os_err == kATSUFontsMatched && offset < (UniCharArrayOffset)str_len); - - if (os_err == noErr || os_err == kATSUFontsMatched) { - /* ATSUMatchFontsToText exited normally. Extract font - * out of the text layout object. */ - ATSUFontID font; - ByteCount act_len; - ATSUGetAttribute(style, kATSUFontTag, sizeof(font), &font, &act_len); - - /* Get unique font name. The result is not a c-string, we have - * to leave space for a \0 and terminate it ourselves. */ - char name[128]; - ATSUFindFontName(font, kFontUniqueName, kFontNoPlatformCode, kFontNoScriptCode, kFontNoLanguageCode, 127, name, &act_len, NULL); - name[act_len > 127 ? 127 : act_len] = '\0'; - - /* Save Result. */ - callback->SetFontNames(settings, name); - DEBUG(freetype, 2, "ATSUI-Font for %s: %s", language_isocode, name); - result = true; - } - - ATSUDisposeTextLayout(text_layout); - ATSUDisposeStyle(style); - CFRelease(cf_str); -#endif - } - - if (result && strncmp(settings->medium_font, "Geeza Pro", 9) == 0) { - /* The font 'Geeza Pro' is often found for arabic characters, but - * it has the 'tiny' problem of not having any latin characters. - * 'Arial Unicode MS' on the other hand has arabic and latin glyphs, - * but seems to 'forget' to inform the OS about this fact. Manually - * substitute the latter for the former if it is loadable. */ - bool ft_init = _library != NULL; - FT_Face face; - /* Init FreeType if needed. */ - if ((ft_init || FT_Init_FreeType(&_library) == FT_Err_Ok) && GetFontByFaceName("Arial Unicode MS", &face) == FT_Err_Ok) { - FT_Done_Face(face); - callback->SetFontNames(settings, "Arial Unicode MS"); - DEBUG(freetype, 1, "Replacing font 'Geeza Pro' with 'Arial Unicode MS'"); - } - if (!ft_init) { - /* Uninit FreeType if we did the init. */ - FT_Done_FreeType(_library); - _library = NULL; - } - } - - callback->FindMissingGlyphs(NULL); - return result; + return false; } -#elif defined(WITH_FONTCONFIG) /* end ifdef __APPLE__ */ -/* ======================================================================================== - * FontConfig (unix) support - * ======================================================================================== */ -static FT_Error GetFontByFaceName(const char *font_name, FT_Face *face) -{ - FT_Error err = FT_Err_Cannot_Open_Resource; +/*static */ FontCache *FontCache::caches[FS_END] = { new SpriteFontCache(FS_NORMAL), new SpriteFontCache(FS_SMALL), new SpriteFontCache(FS_LARGE), new SpriteFontCache(FS_MONO) }; - if (!FcInit()) { - ShowInfoF("Unable to load font configuration"); - } else { - FcPattern *match; - FcPattern *pat; - FcFontSet *fs; - FcResult result; - char *font_style; - char *font_family; - - /* Split & strip the font's style */ - font_family = strdup(font_name); - font_style = strchr(font_family, ','); - if (font_style != NULL) { - font_style[0] = '\0'; - font_style++; - while (*font_style == ' ' || *font_style == '\t') font_style++; - } +#ifdef WITH_FREETYPE +#include +#include FT_FREETYPE_H +#include FT_GLYPH_H +#include FT_TRUETYPE_TABLES_H + +/** Font cache for fonts that are based on a freetype font. */ +class FreeTypeFontCache : public FontCache { +private: + FT_Face face; ///< The font face associated with this font. + + typedef SmallMap > FontTable; ///< Table with font table cache + FontTable font_tables; ///< Cached font tables. + + /** Container for information about a glyph. */ + struct GlyphEntry { + Sprite *sprite; ///< The loaded sprite. + byte width; ///< The width of the glyph. + bool duplicate; ///< Whether this glyph entry is a duplicate, i.e. may this be freed? + }; + + /** + * The glyph cache. This is structured to reduce memory consumption. + * 1) There is a 'segment' table for each font size. + * 2) Each segment table is a discrete block of characters. + * 3) Each block contains 256 (aligned) characters sequential characters. + * + * The cache is accessed in the following way: + * For character 0x0041 ('A'): glyph_to_sprite[0x00][0x41] + * For character 0x20AC (Euro): glyph_to_sprite[0x20][0xAC] + * + * Currently only 256 segments are allocated, "limiting" us to 65536 characters. + * This can be simply changed in the two functions Get & SetGlyphPtr. + */ + GlyphEntry **glyph_to_sprite; + + GlyphEntry *GetGlyphPtr(GlyphID key); + void SetGlyphPtr(GlyphID key, const GlyphEntry *glyph, bool duplicate = false); - /* Resolve the name and populate the information structure */ - pat = FcNameParse((FcChar8*)font_family); - if (font_style != NULL) FcPatternAddString(pat, FC_STYLE, (FcChar8*)font_style); - FcConfigSubstitute(0, pat, FcMatchPattern); - FcDefaultSubstitute(pat); - fs = FcFontSetCreate(); - match = FcFontMatch(0, pat, &result); +public: + FreeTypeFontCache(FontSize fs, FT_Face face, int pixels); + ~FreeTypeFontCache(); + virtual SpriteID GetUnicodeGlyph(WChar key) { return this->parent->GetUnicodeGlyph(key); } + virtual void SetUnicodeGlyph(WChar key, SpriteID sprite) { this->parent->SetUnicodeGlyph(key, sprite); } + virtual void InitializeUnicodeGlyphMap() { this->parent->InitializeUnicodeGlyphMap(); } + virtual void ClearFontCache(); + virtual const Sprite *GetGlyph(GlyphID key); + virtual uint GetGlyphWidth(GlyphID key); + 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; } +}; - if (fs != NULL && match != NULL) { - int i; - FcChar8 *family; - FcChar8 *style; - FcChar8 *file; - FcFontSetAdd(fs, match); - - for (i = 0; err != FT_Err_Ok && i < fs->nfont; i++) { - /* Try the new filename */ - if (FcPatternGetString(fs->fonts[i], FC_FILE, 0, &file) == FcResultMatch && - FcPatternGetString(fs->fonts[i], FC_FAMILY, 0, &family) == FcResultMatch && - FcPatternGetString(fs->fonts[i], FC_STYLE, 0, &style) == FcResultMatch) { - - /* The correct style? */ - if (font_style != NULL && strcasecmp(font_style, (char*)style) != 0) continue; - - /* Font config takes the best shot, which, if the family name is spelled - * wrongly a 'random' font, so check whether the family name is the - * same as the supplied name */ - if (strcasecmp(font_family, (char*)family) == 0) { - err = FT_New_Face(_library, (char *)file, 0, face); - } - } - } - } +FT_Library _library = NULL; - free(font_family); - FcPatternDestroy(pat); - FcFontSetDestroy(fs); - FcFini(); - } +FreeTypeSettings _freetype; - return err; -} +static const byte FACE_COLOUR = 1; +static const byte SHADOW_COLOUR = 2; -bool SetFallbackFont(FreeTypeSettings *settings, const char *language_isocode, int winlangid, MissingGlyphSearcher *callback) +/** + * Create a new FreeTypeFontCache. + * @param fs The font size that is going to be cached. + * @param face The font that has to be loaded. + * @param pixels The number of pixels this font should be high. + */ +FreeTypeFontCache::FreeTypeFontCache(FontSize fs, FT_Face face, int pixels) : FontCache(fs), face(face), glyph_to_sprite(NULL) { - if (!FcInit()) return false; - - bool ret = false; - - /* Fontconfig doesn't handle full language isocodes, only the part - * before the _ of e.g. en_GB is used, so "remove" everything after - * the _. */ - char lang[16]; - seprintf(lang, lastof(lang), ":lang=%s", language_isocode); - char *split = strchr(lang, '_'); - if (split != NULL) *split = '\0'; - - /* First create a pattern to match the wanted language. */ - FcPattern *pat = FcNameParse((FcChar8*)lang); - /* We only want to know the filename. */ - FcObjectSet *os = FcObjectSetBuild(FC_FILE, FC_SPACING, FC_SLANT, FC_WEIGHT, NULL); - /* Get the list of filenames matching the wanted language. */ - FcFontSet *fs = FcFontList(NULL, pat, os); - - /* We don't need these anymore. */ - FcObjectSetDestroy(os); - FcPatternDestroy(pat); - - if (fs != NULL) { - int best_weight = -1; - const char *best_font = NULL; - - for (int i = 0; i < fs->nfont; i++) { - FcPattern *font = fs->fonts[i]; - - FcChar8 *file = NULL; - FcResult res = FcPatternGetString(font, FC_FILE, 0, &file); - if (res != FcResultMatch || file == NULL) { - continue; - } - - /* Get a font with the right spacing .*/ - int value = 0; - FcPatternGetInteger(font, FC_SPACING, 0, &value); - if (callback->Monospace() != (value == FC_MONO) && value != FC_DUAL) continue; - - /* Do not use those that explicitly say they're slanted. */ - FcPatternGetInteger(font, FC_SLANT, 0, &value); - if (value != 0) continue; - - /* We want the fatter font as they look better at small sizes. */ - FcPatternGetInteger(font, FC_WEIGHT, 0, &value); - if (value <= best_weight) continue; + assert(face != NULL); - callback->SetFontNames(settings, (const char*)file); + if (pixels == 0) { + /* Try to determine a good height based on the minimal height recommended by the font. */ + pixels = _default_font_height[this->fs]; - bool missing = callback->FindMissingGlyphs(NULL); - DEBUG(freetype, 1, "Font \"%s\" misses%s glyphs", file, missing ? "" : " no"); - - if (!missing) { - best_weight = value; - best_font = (const char *)file; - } - } - - if (best_font != NULL) { - ret = true; - callback->SetFontNames(settings, best_font); - InitFreeType(callback->Monospace()); + TT_Header *head = (TT_Header *)FT_Get_Sfnt_Table(this->face, ft_sfnt_head); + if (head != NULL) { + /* Font height is minimum height plus the difference between the default + * height for this font size and the small size. */ + int diff = _default_font_height[this->fs] - _default_font_height[FS_SMALL]; + pixels = Clamp(min(head->Lowest_Rec_PPEM, 20) + diff, _default_font_height[this->fs], MAX_FONT_SIZE); } - - /* Clean up the list of filenames. */ - FcFontSetDestroy(fs); } - FcFini(); - return ret; -} - -#else /* without WITH_FONTCONFIG */ -FT_Error GetFontByFaceName(const char *font_name, FT_Face *face) {return FT_Err_Cannot_Open_Resource;} -bool SetFallbackFont(FreeTypeSettings *settings, const char *language_isocode, int winlangid, MissingGlyphSearcher *callback) { return false; } -#endif /* WITH_FONTCONFIG */ - -static void SetFontGeometry(FT_Face face, FontSize size, int pixels) -{ - FT_Error err = FT_Set_Pixel_Sizes(face, 0, pixels); - if (err == FT_Err_Invalid_Pixel_Size) { + FT_Error err = FT_Set_Pixel_Sizes(this->face, 0, pixels); + if (err != FT_Err_Ok) { /* Find nearest size to that requested */ - FT_Bitmap_Size *bs = face->available_sizes; - int i = face->num_fixed_sizes; - int n = bs->height; - for (; --i; bs++) { - if (abs(pixels - bs->height) < abs(pixels - n)) n = bs->height; - } + FT_Bitmap_Size *bs = this->face->available_sizes; + int i = this->face->num_fixed_sizes; + 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(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); + } } - int asc = face->size->metrics.ascender >> 6; - int dec = face->size->metrics.descender >> 6; - - _ascender[size] = asc; - _font_height[size] = asc - dec; + 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."); + } } /** @@ -841,231 +312,135 @@ static void SetFontGeometry(FT_Face face, FontSize size, int pixels) * First type to load the fontname as if it were a path. If that fails, * try to resolve the filename of the font using fontconfig, where the * format is 'font family name' or 'font family name, font style'. + * @param fs The font size to load. */ -static void LoadFreeTypeFont(const char *font_name, FT_Face *face, const char *type) +static void LoadFreeTypeFont(FontSize fs) { - FT_Error error; + FreeTypeSubSetting *settings = NULL; + switch (fs) { + default: NOT_REACHED(); + case FS_SMALL: settings = &_freetype.small; break; + case FS_NORMAL: settings = &_freetype.medium; break; + case FS_LARGE: settings = &_freetype.large; break; + case FS_MONO: settings = &_freetype.mono; break; + } - if (StrEmpty(font_name)) return; + if (StrEmpty(settings->font)) return; + + if (_library == NULL) { + if (FT_Init_FreeType(&_library) != FT_Err_Ok) { + ShowInfoF("Unable to initialize FreeType, using sprite fonts instead"); + return; + } + + DEBUG(freetype, 2, "Initialized"); + } - error = FT_New_Face(_library, font_name, 0, face); + FT_Face face = NULL; + FT_Error error = FT_New_Face(_library, settings->font, 0, &face); - if (error != FT_Err_Ok) error = GetFontByFaceName(font_name, face); + if (error != FT_Err_Ok) error = GetFontByFaceName(settings->font, &face); if (error == FT_Err_Ok) { - DEBUG(freetype, 2, "Requested '%s', using '%s %s'", font_name, (*face)->family_name, (*face)->style_name); + DEBUG(freetype, 2, "Requested '%s', using '%s %s'", settings->font, face->family_name, face->style_name); /* Attempt to select the unicode character map */ - error = FT_Select_Charmap(*face, ft_encoding_unicode); - if (error == FT_Err_Ok) return; // Success + error = FT_Select_Charmap(face, ft_encoding_unicode); + if (error == FT_Err_Ok) goto found_face; // Success if (error == FT_Err_Invalid_CharMap_Handle) { /* Try to pick a different character map instead. We default to * the first map, but platform_id 0 encoding_id 0 should also * be unicode (strange system...) */ - FT_CharMap found = (*face)->charmaps[0]; + FT_CharMap found = face->charmaps[0]; int i; - for (i = 0; i < (*face)->num_charmaps; i++) { - FT_CharMap charmap = (*face)->charmaps[i]; + for (i = 0; i < face->num_charmaps; i++) { + FT_CharMap charmap = face->charmaps[i]; if (charmap->platform_id == 0 && charmap->encoding_id == 0) { found = charmap; } } if (found != NULL) { - error = FT_Set_Charmap(*face, found); - if (error == FT_Err_Ok) return; + error = FT_Set_Charmap(face, found); + if (error == FT_Err_Ok) goto found_face; } } } - FT_Done_Face(*face); - *face = NULL; + FT_Done_Face(face); - ShowInfoF("Unable to use '%s' for %s font, FreeType reported error 0x%X, using sprite font instead", font_name, type, error); -} - - -static void ResetGlyphCache(bool monospace); + static const char *SIZE_TO_NAME[] = { "medium", "small", "large", "mono" }; + ShowInfoF("Unable to use '%s' for %s font, FreeType reported error 0x%X, using sprite font instead", settings->font, SIZE_TO_NAME[fs], error); + return; -/** - * Unload a face and set it to NULL. - * @param face the face to unload - */ -static void UnloadFace(FT_Face *face) -{ - if (*face == NULL) return; - - FT_Done_Face(*face); - *face = NULL; +found_face: + new FreeTypeFontCache(fs, face, settings->size); } -/** - * (Re)initialize the freetype related things, i.e. load the non-sprite fonts. - * @param monospace Whether to initialise the monospace or regular fonts. - */ -void InitFreeType(bool monospace) -{ - ResetFontSizes(monospace); - ResetGlyphCache(monospace); - - if (monospace) { - UnloadFace(&_face_mono); - } else { - UnloadFace(&_face_small); - UnloadFace(&_face_medium); - UnloadFace(&_face_large); - } - - if (StrEmpty(_freetype.small_font) && StrEmpty(_freetype.medium_font) && StrEmpty(_freetype.large_font) && StrEmpty(_freetype.mono_font)) { - DEBUG(freetype, 1, "No font faces specified, using sprite fonts instead"); - return; - } - - if (_library == NULL) { - if (FT_Init_FreeType(&_library) != FT_Err_Ok) { - ShowInfoF("Unable to initialize FreeType, using sprite fonts instead"); - return; - } - - DEBUG(freetype, 2, "Initialized"); - } - - /* Load each font */ - if (monospace) { - LoadFreeTypeFont(_freetype.mono_font , &_face_mono, "mono"); - - if (_face_mono != NULL) { - SetFontGeometry(_face_mono, FS_MONO, _freetype.mono_size); - } - } else { - LoadFreeTypeFont(_freetype.small_font, &_face_small, "small"); - LoadFreeTypeFont(_freetype.medium_font, &_face_medium, "medium"); - LoadFreeTypeFont(_freetype.large_font, &_face_large, "large"); - - /* Set each font size */ - if (_face_small != NULL) { - SetFontGeometry(_face_small, FS_SMALL, _freetype.small_size); - } - if (_face_medium != NULL) { - SetFontGeometry(_face_medium, FS_NORMAL, _freetype.medium_size); - } - if (_face_large != NULL) { - SetFontGeometry(_face_large, FS_LARGE, _freetype.large_size); - } - } -} /** - * Free everything allocated w.r.t. fonts. + * Free everything that was allocated for this font cache. */ -void UninitFreeType() +FreeTypeFontCache::~FreeTypeFontCache() { - ResetGlyphCache(true); - ResetGlyphCache(false); + FT_Done_Face(this->face); + this->ClearFontCache(); - UnloadFace(&_face_small); - UnloadFace(&_face_medium); - UnloadFace(&_face_large); - UnloadFace(&_face_mono); - - FT_Done_FreeType(_library); - _library = NULL; + for (FontTable::iterator iter = this->font_tables.Begin(); iter != this->font_tables.End(); iter++) { + free(iter->second.second); + } } /** * Reset cached glyphs. */ -void ClearFontCache() +void FreeTypeFontCache::ClearFontCache() { - ResetGlyphCache(true); - ResetGlyphCache(false); -} - -static FT_Face GetFontFace(FontSize size) -{ - switch (size) { - default: NOT_REACHED(); - case FS_NORMAL: return _face_medium; - case FS_SMALL: return _face_small; - case FS_LARGE: return _face_large; - case FS_MONO: return _face_mono; - } -} + if (this->glyph_to_sprite == NULL) return; - -struct GlyphEntry { - Sprite *sprite; - byte width; - bool duplicate; -}; - - -/* The glyph cache. This is structured to reduce memory consumption. - * 1) There is a 'segment' table for each font size. - * 2) Each segment table is a discrete block of characters. - * 3) Each block contains 256 (aligned) characters sequential characters. - * - * The cache is accessed in the following way: - * For character 0x0041 ('A'): _glyph_ptr[FS_NORMAL][0x00][0x41] - * For character 0x20AC (Euro): _glyph_ptr[FS_NORMAL][0x20][0xAC] - * - * Currently only 256 segments are allocated, "limiting" us to 65536 characters. - * This can be simply changed in the two functions Get & SetGlyphPtr. - */ -static GlyphEntry **_glyph_ptr[FS_END]; - -/** - * Clear the complete cache - * @param monospace Whether to reset the monospace or regular font. - */ -static void ResetGlyphCache(bool monospace) -{ - for (FontSize i = FS_BEGIN; i < FS_END; i++) { - if (monospace != (i == FS_MONO)) continue; - if (_glyph_ptr[i] == NULL) continue; + for (int i = 0; i < 256; i++) { + if (this->glyph_to_sprite[i] == NULL) continue; for (int j = 0; j < 256; j++) { - if (_glyph_ptr[i][j] == NULL) continue; - - for (int k = 0; k < 256; k++) { - if (_glyph_ptr[i][j][k].duplicate) continue; - free(_glyph_ptr[i][j][k].sprite); - } - - free(_glyph_ptr[i][j]); + if (this->glyph_to_sprite[i][j].duplicate) continue; + free(this->glyph_to_sprite[i][j].sprite); } - free(_glyph_ptr[i]); - _glyph_ptr[i] = NULL; + free(this->glyph_to_sprite[i]); } + + free(this->glyph_to_sprite); + this->glyph_to_sprite = NULL; + + Layouter::ResetFontCache(this->fs); } -static GlyphEntry *GetGlyphPtr(FontSize size, WChar key) +FreeTypeFontCache::GlyphEntry *FreeTypeFontCache::GetGlyphPtr(GlyphID key) { - if (_glyph_ptr[size] == NULL) return NULL; - if (_glyph_ptr[size][GB(key, 8, 8)] == NULL) return NULL; - return &_glyph_ptr[size][GB(key, 8, 8)][GB(key, 0, 8)]; + if (this->glyph_to_sprite == NULL) return NULL; + if (this->glyph_to_sprite[GB(key, 8, 8)] == NULL) return NULL; + return &this->glyph_to_sprite[GB(key, 8, 8)][GB(key, 0, 8)]; } -static void SetGlyphPtr(FontSize size, WChar key, const GlyphEntry *glyph, bool duplicate = false) +void FreeTypeFontCache::SetGlyphPtr(GlyphID key, const GlyphEntry *glyph, bool duplicate) { - if (_glyph_ptr[size] == NULL) { - DEBUG(freetype, 3, "Allocating root glyph cache for size %u", size); - _glyph_ptr[size] = CallocT(256); + if (this->glyph_to_sprite == NULL) { + DEBUG(freetype, 3, "Allocating root glyph cache for size %u", this->fs); + this->glyph_to_sprite = CallocT(256); } - if (_glyph_ptr[size][GB(key, 8, 8)] == NULL) { - DEBUG(freetype, 3, "Allocating glyph cache for range 0x%02X00, size %u", GB(key, 8, 8), size); - _glyph_ptr[size][GB(key, 8, 8)] = CallocT(256); + if (this->glyph_to_sprite[GB(key, 8, 8)] == NULL) { + DEBUG(freetype, 3, "Allocating glyph cache for range 0x%02X00, size %u", GB(key, 8, 8), this->fs); + this->glyph_to_sprite[GB(key, 8, 8)] = CallocT(256); } - DEBUG(freetype, 4, "Set glyph for unicode character 0x%04X, size %u", key, size); - _glyph_ptr[size][GB(key, 8, 8)][GB(key, 0, 8)].sprite = glyph->sprite; - _glyph_ptr[size][GB(key, 8, 8)][GB(key, 0, 8)].width = glyph->width; - _glyph_ptr[size][GB(key, 8, 8)][GB(key, 0, 8)].duplicate = duplicate; + DEBUG(freetype, 4, "Set glyph for unicode character 0x%04X, size %u", key, this->fs); + this->glyph_to_sprite[GB(key, 8, 8)][GB(key, 0, 8)].sprite = glyph->sprite; + this->glyph_to_sprite[GB(key, 8, 8)][GB(key, 0, 8)].width = glyph->width; + this->glyph_to_sprite[GB(key, 8, 8)][GB(key, 0, 8)].duplicate = duplicate; } static void *AllocateFont(size_t size) @@ -1078,99 +453,101 @@ 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(); - case FS_NORMAL: return _freetype.medium_aa; - case FS_SMALL: return _freetype.small_aa; - case FS_LARGE: return _freetype.large_aa; - case FS_MONO: return _freetype.mono_aa; + case FS_NORMAL: return _freetype.medium.aa; + case FS_SMALL: return _freetype.small.aa; + case FS_LARGE: return _freetype.large.aa; + case FS_MONO: return _freetype.mono.aa; } } -const Sprite *GetGlyph(FontSize size, WChar key) +const Sprite *FreeTypeFontCache::GetGlyph(GlyphID key) { - FT_Face face = GetFontFace(size); - FT_GlyphSlot slot; - GlyphEntry new_glyph; - GlyphEntry *glyph; - SpriteLoader::Sprite sprite; - int width; - int height; - int x; - int y; - - assert(IsPrintable(key)); - - /* Bail out if no face loaded, or for our special characters */ - if (face == NULL || (key >= SCC_SPRITE_START && key <= SCC_SPRITE_END)) { - SpriteID sprite = GetUnicodeGlyph(size, key); - if (sprite == 0) sprite = GetUnicodeGlyph(size, '?'); - - /* Load the sprite if it's known. */ - if (sprite != 0) return GetSprite(sprite, ST_FONT); - - /* For the 'rare' case there is no font available at all. */ - if (face == NULL) error("No sprite font and no real font either... bailing!"); - - /* Use the '?' from the freetype font. */ - key = '?'; - } + if ((key & SPRITE_GLYPH) != 0) return parent->GetGlyph(key); /* Check for the glyph in our cache */ - glyph = GetGlyphPtr(size, key); + GlyphEntry *glyph = this->GetGlyphPtr(key); if (glyph != NULL && glyph->sprite != NULL) return glyph->sprite; - slot = face->glyph; + FT_GlyphSlot slot = this->face->glyph; - bool aa = GetFontAAState(size); + bool aa = GetFontAAState(this->fs); - FT_UInt glyph_index = FT_Get_Char_Index(face, key); - if (glyph_index == 0) { - if (key == '?') { - /* The font misses the '?' character. Use sprite font. */ - SpriteID sprite = GetUnicodeGlyph(size, key); - Sprite *spr = (Sprite*)GetRawSprite(sprite, ST_FONT, AllocateFont); + GlyphEntry new_glyph; + if (key == 0) { + GlyphID question_glyph = this->MapCharToGlyph('?'); + if (question_glyph == 0) { + /* 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 + (size != FS_NORMAL); - SetGlyphPtr(size, key, &new_glyph, false); + new_glyph.width = spr->width + (this->fs != FS_NORMAL); + this->SetGlyphPtr(key, &new_glyph, false); return new_glyph.sprite; } else { /* Use '?' for missing characters. */ - GetGlyph(size, '?'); - glyph = GetGlyphPtr(size, '?'); - SetGlyphPtr(size, key, glyph, true); + this->GetGlyph(question_glyph); + glyph = this->GetGlyphPtr(question_glyph); + this->SetGlyphPtr(key, glyph, true); return glyph->sprite; } } - FT_Load_Glyph(face, glyph_index, FT_LOAD_DEFAULT); - FT_Render_Glyph(face->glyph, aa ? FT_RENDER_MODE_NORMAL : FT_RENDER_MODE_MONO); + FT_Load_Glyph(this->face, key, FT_LOAD_DEFAULT); + FT_Render_Glyph(this->face->glyph, aa ? FT_RENDER_MODE_NORMAL : FT_RENDER_MODE_MONO); /* Despite requesting a normal glyph, FreeType may have returned a bitmap */ 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 */ - width = max(1, slot->bitmap.width + (size == FS_NORMAL)); - height = max(1, slot->bitmap.rows + (size == FS_NORMAL)); + int width = max(1, slot->bitmap.width + (this->fs == FS_NORMAL)); + int height = max(1, 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"); /* FreeType has rendered the glyph, now we allocate a sprite and copy the image into it */ + SpriteLoader::Sprite sprite; sprite.AllocateData(ZOOM_LVL_NORMAL, width * height); sprite.type = ST_FONT; sprite.width = width; sprite.height = height; sprite.x_offs = slot->bitmap_left; - sprite.y_offs = _ascender[size] - slot->bitmap_top; + sprite.y_offs = this->ascender - slot->bitmap_top; /* Draw shadow for medium size */ - if (size == FS_NORMAL && !aa) { - for (y = 0; y < slot->bitmap.rows; y++) { - for (x = 0; x < slot->bitmap.width; x++) { + if (this->fs == FS_NORMAL && !aa) { + for (int y = 0; y < slot->bitmap.rows; y++) { + for (int x = 0; x < 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; @@ -1179,8 +556,8 @@ const Sprite *GetGlyph(FontSize size, WChar key) } } - for (y = 0; y < slot->bitmap.rows; y++) { - for (x = 0; x < slot->bitmap.width; x++) { + for (int y = 0; y < slot->bitmap.rows; y++) { + for (int x = 0; x < 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; @@ -1188,111 +565,100 @@ const Sprite *GetGlyph(FontSize size, WChar key) } } - new_glyph.sprite = BlitterFactoryBase::GetCurrentBlitter()->Encode(&sprite, AllocateFont); + new_glyph.sprite = BlitterFactory::GetCurrentBlitter()->Encode(&sprite, AllocateFont); new_glyph.width = slot->advance.x >> 6; - SetGlyphPtr(size, key, &new_glyph); + this->SetGlyphPtr(key, &new_glyph); return new_glyph.sprite; } -bool GetDrawGlyphShadow() +bool FreeTypeFontCache::GetDrawGlyphShadow() { - return GetFontFace(FS_NORMAL) != NULL && GetFontAAState(FS_NORMAL); + return this->fs == FS_NORMAL && GetFontAAState(FS_NORMAL); } -uint GetGlyphWidth(FontSize size, WChar key) +uint FreeTypeFontCache::GetGlyphWidth(GlyphID key) { - FT_Face face = GetFontFace(size); - GlyphEntry *glyph; - - if (face == NULL || (key >= SCC_SPRITE_START && key <= SCC_SPRITE_END)) { - SpriteID sprite = GetUnicodeGlyph(size, key); - if (sprite == 0) sprite = GetUnicodeGlyph(size, '?'); - return SpriteExists(sprite) ? GetSprite(sprite, ST_FONT)->width + (size != FS_NORMAL && size != FS_MONO) : 0; - } + if ((key & SPRITE_GLYPH) != 0) return this->parent->GetGlyphWidth(key); - glyph = GetGlyphPtr(size, key); + GlyphEntry *glyph = this->GetGlyphPtr(key); if (glyph == NULL || glyph->sprite == NULL) { - GetGlyph(size, key); - glyph = GetGlyphPtr(size, key); + this->GetGlyph(key); + glyph = this->GetGlyphPtr(key); } return glyph->width; } +GlyphID FreeTypeFontCache::MapCharToGlyph(WChar key) +{ + assert(IsPrintable(key)); -#endif /* WITH_FREETYPE */ - -/* Sprite based glyph mapping */ - -#include "table/unicode.h" - -static SpriteID **_unicode_glyph_map[FS_END]; + if (key >= SCC_SPRITE_START && key <= SCC_SPRITE_END) { + return this->parent->MapCharToGlyph(key); + } + return FT_Get_Char_Index(this->face, key); +} -/** Get the SpriteID of the first glyph for the given font size */ -static SpriteID GetFontBase(FontSize size) +const void *FreeTypeFontCache::GetFontTable(uint32 tag, size_t &length) { - switch (size) { - default: NOT_REACHED(); - case FS_NORMAL: return SPR_ASCII_SPACE; - case FS_SMALL: return SPR_ASCII_SPACE_SMALL; - case FS_LARGE: return SPR_ASCII_SPACE_BIG; - case FS_MONO: return SPR_ASCII_SPACE; + const FontTable::iterator iter = this->font_tables.Find(tag); + if (iter != this->font_tables.End()) { + length = iter->second.first; + return iter->second.second; } -} + FT_ULong len = 0; + FT_Byte *result = NULL; -SpriteID GetUnicodeGlyph(FontSize size, uint32 key) -{ - if (_unicode_glyph_map[size][GB(key, 8, 8)] == NULL) return 0; - return _unicode_glyph_map[size][GB(key, 8, 8)][GB(key, 0, 8)]; -} + FT_Load_Sfnt_Table(this->face, tag, 0, NULL, &len); + if (len > 0) { + result = MallocT(len); + FT_Load_Sfnt_Table(this->face, tag, 0, result, &len); + } + length = len; -void SetUnicodeGlyph(FontSize size, uint32 key, SpriteID sprite) -{ - if (_unicode_glyph_map[size] == NULL) _unicode_glyph_map[size] = CallocT(256); - if (_unicode_glyph_map[size][GB(key, 8, 8)] == NULL) _unicode_glyph_map[size][GB(key, 8, 8)] = CallocT(256); - _unicode_glyph_map[size][GB(key, 8, 8)][GB(key, 0, 8)] = sprite; + this->font_tables.Insert(tag, SmallPair(length, result)); + return result; } +#endif /* WITH_FREETYPE */ -void InitializeUnicodeGlyphMap() +/** + * (Re)initialize the freetype related things, i.e. load the non-sprite fonts. + * @param monospace Whether to initialise the monospace or regular fonts. + */ +void InitFreeType(bool monospace) { - for (FontSize size = FS_BEGIN; size != FS_END; size++) { - /* Clear out existing glyph map if it exists */ - if (_unicode_glyph_map[size] != NULL) { - for (uint i = 0; i < 256; i++) { - free(_unicode_glyph_map[size][i]); - } - free(_unicode_glyph_map[size]); - _unicode_glyph_map[size] = NULL; - } + for (FontSize fs = FS_BEGIN; fs < FS_END; fs++) { + if (monospace != (fs == FS_MONO)) continue; - SpriteID base = GetFontBase(size); + FontCache *fc = FontCache::Get(fs); + if (fc->HasParent()) delete fc; - for (uint i = ASCII_LETTERSTART; i < 256; i++) { - SpriteID sprite = base + i - ASCII_LETTERSTART; - if (!SpriteExists(sprite)) continue; - SetUnicodeGlyph(size, i, sprite); - SetUnicodeGlyph(size, i + SCC_SPRITE_START, sprite); - } +#ifdef WITH_FREETYPE + LoadFreeTypeFont(fs); +#endif + } +} - for (uint i = 0; i < lengthof(_default_unicode_map); i++) { - 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. */ - SetUnicodeGlyph(size, _default_unicode_map[i].code, 0); - } else { - SpriteID sprite = base + key - ASCII_LETTERSTART; - SetUnicodeGlyph(size, _default_unicode_map[i].code, sprite); - } - } +/** + * Free everything allocated w.r.t. fonts. + */ +void UninitFreeType() +{ + for (FontSize fs = FS_BEGIN; fs < FS_END; fs++) { + FontCache *fc = FontCache::Get(fs); + if (fc->HasParent()) delete fc; } + +#ifdef WITH_FREETYPE + FT_Done_FreeType(_library); + _library = NULL; +#endif /* WITH_FREETYPE */ } diff --git a/src/fontcache.h b/src/fontcache.h index d3ee5b1ea..804ad2c4b 100644 --- a/src/fontcache.h +++ b/src/fontcache.h @@ -12,84 +12,207 @@ #ifndef FONTCACHE_H #define FONTCACHE_H +#include "string_type.h" #include "spritecache.h" +/** Glyphs are characters from a font. */ +typedef uint32 GlyphID; +static const GlyphID SPRITE_GLYPH = 1U << 30; + +/** Font cache for basic fonts. */ +class FontCache { +private: + static FontCache *caches[FS_END]; ///< All the font caches. +protected: + FontCache *parent; ///< The parent of this font cache. + const FontSize fs; ///< The size of the font. + int height; ///< The height of the font. + int ascender; ///< The ascender value of the font. + int descender; ///< The descender value of the font. + int units_per_em; ///< The units per EM value of the font. +public: + FontCache(FontSize fs); + virtual ~FontCache(); + + /** + * Get the FontSize of the font. + * @return The FontSize. + */ + inline FontSize GetSize() const { return this->fs; } + + /** + * Get the height of the font. + * @return The height of the font. + */ + inline int GetHeight() const { return this->height; } + + /** + * Get the ascender value of the font. + * @return The ascender value of the font. + */ + inline int GetAscender() const { return this->ascender; } + + /** + * Get the descender value of the font. + * @return The descender value of the font. + */ + inline int GetDescender() const{ return this->descender; } + + /** + * Get the units per EM value of the font. + * @return The units per EM value of the font. + */ + inline int GetUnitsPerEM() const { return this->units_per_em; } + + /** + * Get the SpriteID mapped to the given key + * @param key The key to get the sprite for. + * @return The sprite. + */ + virtual SpriteID GetUnicodeGlyph(WChar key) = 0; + + /** + * Map a SpriteID to the key + * @param key The key to map to. + * @param sprite The sprite that is being mapped. + */ + virtual void SetUnicodeGlyph(WChar key, SpriteID sprite) = 0; + + /** Initialize the glyph map */ + virtual void InitializeUnicodeGlyphMap() = 0; + + /** Clear the font cache. */ + virtual void ClearFontCache() = 0; + + /** + * Get the glyph (sprite) of the given key. + * @param key The key to look up. + * @return The sprite. + */ + virtual const Sprite *GetGlyph(GlyphID key) = 0; + + /** + * Get the width of the glyph with the given key. + * @param key The key to look up. + * @return The width. + */ + virtual uint GetGlyphWidth(GlyphID key) = 0; + + /** + * Do we need to draw a glyph shadow? + * @return True if it has to be done, otherwise false. + */ + virtual bool GetDrawGlyphShadow() = 0; + + /** + * Map a character into a glyph. + * @param key The character. + * @return The glyph ID used to draw the character. + */ + virtual GlyphID MapCharToGlyph(WChar key) = 0; + + /** + * Read a font table from the font. + * @param tag The of the table to load. + * @param length The length of the read data. + * @return The loaded table data. + */ + 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. + * @return The font cache. + */ + static inline FontCache *Get(FontSize fs) + { + assert(fs < FS_END); + return FontCache::caches[fs]; + } + + /** + * Check whether the font cache has a parent. + */ + inline bool HasParent() + { + return this->parent != NULL; + } +}; + /** Get the SpriteID mapped to the given font size and key */ -SpriteID GetUnicodeGlyph(FontSize size, uint32 key); +static inline SpriteID GetUnicodeGlyph(FontSize size, WChar key) +{ + return FontCache::Get(size)->GetUnicodeGlyph(key); +} /** Map a SpriteID to the font size and key */ -void SetUnicodeGlyph(FontSize size, uint32 key, SpriteID sprite); +static inline void SetUnicodeGlyph(FontSize size, WChar key, SpriteID sprite) +{ + FontCache::Get(size)->SetUnicodeGlyph(key, sprite); +} /** Initialize the glyph map */ -void InitializeUnicodeGlyphMap(); - -#ifdef WITH_FREETYPE - -struct FreeTypeSettings { - char small_font[MAX_PATH]; - char medium_font[MAX_PATH]; - char large_font[MAX_PATH]; - char mono_font[MAX_PATH]; - uint small_size; - uint medium_size; - uint large_size; - uint mono_size; - bool small_aa; - bool medium_aa; - bool large_aa; - bool mono_aa; -}; - -extern FreeTypeSettings _freetype; - -void InitFreeType(bool monospace); -void UninitFreeType(); -void ClearFontCache(); -const Sprite *GetGlyph(FontSize size, uint32 key); -uint GetGlyphWidth(FontSize size, uint32 key); -bool GetDrawGlyphShadow(); - -/** - * We would like to have a fallback font as the current one - * doesn't contain all characters we need. - * This function must set all fonts of settings. - * @param settings the settings to overwrite the fontname of. - * @param language_isocode the language, e.g. en_GB. - * @param winlangid the language ID windows style. - * @param callback The function to call to check for missing glyphs. - * @return true if a font has been set, false otherwise. - */ -bool SetFallbackFont(FreeTypeSettings *settings, const char *language_isocode, int winlangid, class MissingGlyphSearcher *callback); - -#else +static inline void InitializeUnicodeGlyphMap() +{ + for (FontSize fs = FS_BEGIN; fs < FS_END; fs++) { + FontCache::Get(fs)->InitializeUnicodeGlyphMap(); + } +} -/* Stub for initializiation */ -static inline void InitFreeType(bool monospace) { extern void ResetFontSizes(bool monospace); ResetFontSizes(monospace); } -static inline void UninitFreeType() {} -static inline void ClearFontCache() {} +static inline void ClearFontCache() +{ + for (FontSize fs = FS_BEGIN; fs < FS_END; fs++) { + FontCache::Get(fs)->ClearFontCache(); + } +} /** Get the Sprite for a glyph */ -static inline const Sprite *GetGlyph(FontSize size, uint32 key) +static inline const Sprite *GetGlyph(FontSize size, WChar key) { - SpriteID sprite = GetUnicodeGlyph(size, key); - if (sprite == 0) sprite = GetUnicodeGlyph(size, '?'); - return GetSprite(sprite, ST_FONT); + FontCache *fc = FontCache::Get(size); + return fc->GetGlyph(fc->MapCharToGlyph(key)); } - /** Get the width of a glyph */ -static inline uint GetGlyphWidth(FontSize size, uint32 key) +static inline uint GetGlyphWidth(FontSize size, WChar key) { - SpriteID sprite = GetUnicodeGlyph(size, key); - if (sprite == 0) sprite = GetUnicodeGlyph(size, '?'); - return SpriteExists(sprite) ? GetSprite(sprite, ST_FONT)->width + (size != FS_NORMAL) : 0; + FontCache *fc = FontCache::Get(size); + return fc->GetGlyphWidth(fc->MapCharToGlyph(key)); } -static inline bool GetDrawGlyphShadow() +static inline bool GetDrawGlyphShadow(FontSize size) { - return false; + return FontCache::Get(size)->GetDrawGlyphShadow(); } +#ifdef WITH_FREETYPE + +/** Settings for a single freetype font. */ +struct FreeTypeSubSetting { + char font[MAX_PATH]; ///< The name of the font, or path to the font. + uint size; ///< The (requested) size of the font. + bool aa; ///< Whether to do anti aliasing or not. +}; + +/** Settings for the freetype fonts. */ +struct FreeTypeSettings { + FreeTypeSubSetting small; ///< The smallest font; mostly used for zoomed out view. + FreeTypeSubSetting medium; ///< The normal font size. + FreeTypeSubSetting large; ///< The largest font; mostly used for newspapers. + FreeTypeSubSetting mono; ///< The mono space font used for license/readme viewers. +}; + +extern FreeTypeSettings _freetype; + #endif /* WITH_FREETYPE */ +void InitFreeType(bool monospace); +void UninitFreeType(); + #endif /* FONTCACHE_H */ diff --git a/src/fontdetection.cpp b/src/fontdetection.cpp new file mode 100644 index 000000000..0033cdfa7 --- /dev/null +++ b/src/fontdetection.cpp @@ -0,0 +1,701 @@ +/* $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 fontdetection.cpp Detection of the right font. */ + +#ifdef WITH_FREETYPE + +#include "stdafx.h" +#include "debug.h" +#include "fontdetection.h" +#include "string_func.h" +#include "strings_func.h" + +extern FT_Library _library; + +/** + * Get the font loaded into a Freetype face by using a font-name. + * If no appropriate font is found, the function returns an error + */ + +/* ======================================================================================== + * Windows support + * ======================================================================================== */ + +#ifdef WIN32 +#include "core/alloc_func.hpp" +#include "core/math_func.hpp" +#include +#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 + * by FreeType) doesn't support UTF-8 filenames. So we have to convert the + * filename into something that isn't UTF-8 but represents the Unicode file + * name. This is the short DOS 8.3 format. This does not contain any + * characters that fopen doesn't support. + * @param long_path the path in system encoding. + * @return the short path in ANSI (ASCII). + */ +const char *GetShortPath(const TCHAR *long_path) +{ + static char short_path[MAX_PATH]; +#ifdef UNICODE + WCHAR short_path_w[MAX_PATH]; + GetShortPathName(long_path, short_path_w, lengthof(short_path_w)); + WideCharToMultiByte(CP_ACP, 0, short_path_w, -1, short_path, lengthof(short_path), NULL, NULL); +#else + /* Technically not needed, but do it for consistency. */ + GetShortPathName(long_path, short_path, lengthof(short_path)); +#endif + return short_path; +} + +/* Get the font file to be loaded into Freetype by looping the registry + * location where windows lists all installed fonts. Not very nice, will + * surely break if the registry path changes, but it works. Much better + * solution would be to use CreateFont, and extract the font data from it + * by GetFontData. The problem with this is that the font file needs to be + * kept in memory then until the font is no longer needed. This could mean + * an additional memory usage of 30MB (just for fonts!) when using an eastern + * font for all font sizes */ +#define FONT_DIR_NT "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Fonts" +#define FONT_DIR_9X "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Fonts" +FT_Error GetFontByFaceName(const char *font_name, FT_Face *face) +{ + FT_Error err = FT_Err_Cannot_Open_Resource; + HKEY hKey; + LONG ret; + TCHAR vbuffer[MAX_PATH], dbuffer[256]; + TCHAR *pathbuf; + const char *font_path; + uint index; + size_t path_len; + + /* On windows NT (2000, NT3.5, XP, etc.) the fonts are stored in the + * "Windows NT" key, on Windows 9x in the Windows key. To save us having + * to retrieve the windows version, we'll just query both */ + ret = RegOpenKeyEx(HKEY_LOCAL_MACHINE, _T(FONT_DIR_NT), 0, KEY_READ, &hKey); + if (ret != ERROR_SUCCESS) ret = RegOpenKeyEx(HKEY_LOCAL_MACHINE, _T(FONT_DIR_9X), 0, KEY_READ, &hKey); + + if (ret != ERROR_SUCCESS) { + DEBUG(freetype, 0, "Cannot open registry key HKLM\\SOFTWARE\\Microsoft\\Windows (NT)\\CurrentVersion\\Fonts"); + return err; + } + + /* Convert font name to file system encoding. */ + TCHAR *font_namep = _tcsdup(OTTD2FS(font_name)); + + for (index = 0;; index++) { + TCHAR *s; + DWORD vbuflen = lengthof(vbuffer); + DWORD dbuflen = lengthof(dbuffer); + + ret = RegEnumValue(hKey, index, vbuffer, &vbuflen, NULL, NULL, (byte*)dbuffer, &dbuflen); + if (ret != ERROR_SUCCESS) goto registry_no_font_found; + + /* The font names in the registry are of the following 3 forms: + * - ADMUI3.fon + * - Book Antiqua Bold (TrueType) + * - Batang & BatangChe & Gungsuh & GungsuhChe (TrueType) + * We will strip the font-type '()' if any and work with the font name + * itself, which must match exactly; if... + * TTC files, font files which contain more than one font are separated + * by '&'. Our best bet will be to do substr match for the fontname + * and then let FreeType figure out which index to load */ + s = _tcschr(vbuffer, _T('(')); + if (s != NULL) s[-1] = '\0'; + + if (_tcschr(vbuffer, _T('&')) == NULL) { + if (_tcsicmp(vbuffer, font_namep) == 0) break; + } else { + if (_tcsstr(vbuffer, font_namep) != NULL) break; + } + } + + if (!SUCCEEDED(OTTDSHGetFolderPath(NULL, CSIDL_FONTS, NULL, SHGFP_TYPE_CURRENT, vbuffer))) { + DEBUG(freetype, 0, "SHGetFolderPath cannot return fonts directory"); + goto folder_error; + } + + /* Some fonts are contained in .ttc files, TrueType Collection fonts. These + * contain multiple fonts inside this single file. GetFontData however + * returns the whole file, so we need to check each font inside to get the + * proper font. */ + path_len = _tcslen(vbuffer) + _tcslen(dbuffer) + 2; // '\' and terminating nul. + pathbuf = AllocaM(TCHAR, path_len); + _sntprintf(pathbuf, path_len, _T("%s\\%s"), vbuffer, dbuffer); + + /* Convert the path into something that FreeType understands. */ + font_path = GetShortPath(pathbuf); + + index = 0; + do { + err = FT_New_Face(_library, font_path, index, face); + if (err != FT_Err_Ok) break; + + if (strncasecmp(font_name, (*face)->family_name, strlen((*face)->family_name)) == 0) break; + /* Try english name if font name failed */ + if (strncasecmp(font_name + strlen(font_name) + 1, (*face)->family_name, strlen((*face)->family_name)) == 0) break; + err = FT_Err_Cannot_Open_Resource; + + } while ((FT_Long)++index != (*face)->num_faces); + + +folder_error: +registry_no_font_found: + free(font_namep); + RegCloseKey(hKey); + return err; +} + +/** + * Fonts can have localised names and when the system locale is the same as + * one of those localised names Windows will always return that localised name + * instead of allowing to get the non-localised (English US) name of the font. + * This will later on give problems as freetype uses the non-localised name of + * the font and we need to compare based on that name. + * Windows furthermore DOES NOT have an API to get the non-localised name nor + * can we override the system locale. This means that we have to actually read + * the font itself to gather the font name we want. + * Based on: http://blogs.msdn.com/michkap/archive/2006/02/13/530814.aspx + * @param logfont the font information to get the english name of. + * @return the English name (if it could be found). + */ +static const char *GetEnglishFontName(const ENUMLOGFONTEX *logfont) +{ + static char font_name[MAX_PATH]; + const char *ret_font_name = NULL; + uint pos = 0; + HDC dc; + HGDIOBJ oldfont; + byte *buf; + DWORD dw; + uint16 format, count, stringOffset, platformId, encodingId, languageId, nameId, length, offset; + + HFONT font = CreateFontIndirect(&logfont->elfLogFont); + if (font == NULL) goto err1; + + dc = GetDC(NULL); + oldfont = SelectObject(dc, font); + dw = GetFontData(dc, 'eman', 0, NULL, 0); + if (dw == GDI_ERROR) goto err2; + + buf = MallocT(dw); + dw = GetFontData(dc, 'eman', 0, buf, dw); + if (dw == GDI_ERROR) goto err3; + + format = buf[pos++] << 8; + format += buf[pos++]; + assert(format == 0); + count = buf[pos++] << 8; + count += buf[pos++]; + stringOffset = buf[pos++] << 8; + stringOffset += buf[pos++]; + for (uint i = 0; i < count; i++) { + platformId = buf[pos++] << 8; + platformId += buf[pos++]; + encodingId = buf[pos++] << 8; + encodingId += buf[pos++]; + languageId = buf[pos++] << 8; + languageId += buf[pos++]; + nameId = buf[pos++] << 8; + nameId += buf[pos++]; + if (nameId != 1) { + pos += 4; // skip length and offset + continue; + } + length = buf[pos++] << 8; + length += buf[pos++]; + offset = buf[pos++] << 8; + offset += buf[pos++]; + + /* Don't buffer overflow */ + length = min(length, MAX_PATH - 1); + for (uint j = 0; j < length; j++) font_name[j] = buf[stringOffset + offset + j]; + font_name[length] = '\0'; + + if ((platformId == 1 && languageId == 0) || // Macintosh English + (platformId == 3 && languageId == 0x0409)) { // Microsoft English (US) + ret_font_name = font_name; + break; + } + } + +err3: + free(buf); +err2: + SelectObject(dc, oldfont); + ReleaseDC(NULL, dc); + DeleteObject(font); +err1: + return ret_font_name == NULL ? WIDE_TO_MB((const TCHAR*)logfont->elfFullName) : ret_font_name; +} + +class FontList { +protected: + TCHAR **fonts; + uint items; + uint capacity; + +public: + FontList() : fonts(NULL), items(0), capacity(0) { }; + + ~FontList() { + if (this->fonts == NULL) return; + + for (uint i = 0; i < this->items; i++) { + free(this->fonts[i]); + } + + free(this->fonts); + } + + bool Add(const TCHAR *font) { + for (uint i = 0; i < this->items; i++) { + if (_tcscmp(this->fonts[i], font) == 0) return false; + } + + if (this->items == this->capacity) { + this->capacity += 10; + this->fonts = ReallocT(this->fonts, this->capacity); + } + + this->fonts[this->items++] = _tcsdup(font); + + return true; + } +}; + +struct EFCParam { + FreeTypeSettings *settings; + LOCALESIGNATURE locale; + MissingGlyphSearcher *callback; + FontList fonts; +}; + +static int CALLBACK EnumFontCallback(const ENUMLOGFONTEX *logfont, const NEWTEXTMETRICEX *metric, DWORD type, LPARAM lParam) +{ + EFCParam *info = (EFCParam *)lParam; + + /* Skip duplicates */ + if (!info->fonts.Add((const TCHAR*)logfont->elfFullName)) return 1; + /* Only use TrueType fonts */ + if (!(type & TRUETYPE_FONTTYPE)) return 1; + /* Don't use SYMBOL fonts */ + if (logfont->elfLogFont.lfCharSet == SYMBOL_CHARSET) return 1; + /* Use monospaced fonts when asked for it. */ + if (info->callback->Monospace() && (logfont->elfLogFont.lfPitchAndFamily & (FF_MODERN | FIXED_PITCH)) != (FF_MODERN | FIXED_PITCH)) return 1; + + /* The font has to have at least one of the supported locales to be usable. */ + if ((metric->ntmFontSig.fsCsb[0] & info->locale.lsCsbSupported[0]) == 0 && (metric->ntmFontSig.fsCsb[1] & info->locale.lsCsbSupported[1]) == 0) { + /* On win9x metric->ntmFontSig seems to contain garbage. */ + FONTSIGNATURE fs; + memset(&fs, 0, sizeof(fs)); + HFONT font = CreateFontIndirect(&logfont->elfLogFont); + if (font != NULL) { + HDC dc = GetDC(NULL); + HGDIOBJ oldfont = SelectObject(dc, font); + GetTextCharsetInfo(dc, &fs, 0); + SelectObject(dc, oldfont); + ReleaseDC(NULL, dc); + DeleteObject(font); + } + if ((fs.fsCsb[0] & info->locale.lsCsbSupported[0]) == 0 && (fs.fsCsb[1] & info->locale.lsCsbSupported[1]) == 0) return 1; + } + + char font_name[MAX_PATH]; + convert_from_fs((const TCHAR *)logfont->elfFullName, font_name, lengthof(font_name)); + + /* Add english name after font name */ + const char *english_name = GetEnglishFontName(logfont); + strecpy(font_name + strlen(font_name) + 1, english_name, lastof(font_name)); + + /* Check whether we can actually load the font. */ + bool ft_init = _library != NULL; + bool found = false; + FT_Face face; + /* Init FreeType if needed. */ + if ((ft_init || FT_Init_FreeType(&_library) == FT_Err_Ok) && GetFontByFaceName(font_name, &face) == FT_Err_Ok) { + FT_Done_Face(face); + found = true; + } + if (!ft_init) { + /* Uninit FreeType if we did the init. */ + FT_Done_FreeType(_library); + _library = NULL; + } + + if (!found) return 1; + + info->callback->SetFontNames(info->settings, font_name); + if (info->callback->FindMissingGlyphs(NULL)) return 1; + DEBUG(freetype, 1, "Fallback font: %s (%s)", font_name, english_name); + return 0; // stop enumerating +} + +bool SetFallbackFont(FreeTypeSettings *settings, const char *language_isocode, int winlangid, MissingGlyphSearcher *callback) +{ + DEBUG(freetype, 1, "Trying fallback fonts"); + EFCParam langInfo; + if (GetLocaleInfo(MAKELCID(winlangid, SORT_DEFAULT), LOCALE_FONTSIGNATURE, (LPTSTR)&langInfo.locale, sizeof(langInfo.locale) / sizeof(TCHAR)) == 0) { + /* Invalid langid or some other mysterious error, can't determine fallback font. */ + DEBUG(freetype, 1, "Can't get locale info for fallback font (langid=0x%x)", winlangid); + return false; + } + langInfo.settings = settings; + langInfo.callback = callback; + + LOGFONT font; + /* Enumerate all fonts. */ + font.lfCharSet = DEFAULT_CHARSET; + font.lfFaceName[0] = '\0'; + font.lfPitchAndFamily = 0; + + HDC dc = GetDC(NULL); + int ret = EnumFontFamiliesEx(dc, &font, (FONTENUMPROC)&EnumFontCallback, (LPARAM)&langInfo, 0); + ReleaseDC(NULL, dc); + return ret == 0; +} + +#elif defined(__APPLE__) /* end ifdef Win32 */ +/* ======================================================================================== + * OSX support + * ======================================================================================== */ + +#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; + + /* Get font reference from name. */ + CFStringRef name = CFStringCreateWithCString(kCFAllocatorDefault, font_name, kCFStringEncodingUTF8); + ATSFontRef font = ATSFontFindFromName(name, kATSOptionFlagsDefault); + CFRelease(name); + if (font == kInvalidFont) return err; + + /* Get a file system reference for the font. */ + FSRef ref; + OSStatus os_err = -1; +#if (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5) + if (MacOSVersionIsAtLeast(10, 5, 0)) { + os_err = ATSFontGetFileReference(font, &ref); + } else +#endif + { +#if (MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5) && !__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 +#endif + FSSpec spec; + os_err = ATSFontGetFileSpecification(font, (ATSFSSpec *)&spec); + if (os_err == noErr) os_err = FSpMakeFSRef(&spec, &ref); +#endif + } + + if (os_err == noErr) { + /* Get unix path for file. */ + UInt8 file_path[PATH_MAX]; + if (FSRefMakePath(&ref, file_path, sizeof(file_path)) == noErr) { + DEBUG(freetype, 3, "Font path for %s: %s", font_name, file_path); + err = FT_New_Face(_library, (const char *)file_path, 0, face); + } + } + + return err; +} + +bool SetFallbackFont(FreeTypeSettings *settings, const char *language_isocode, int winlangid, MissingGlyphSearcher *callback) +{ + bool result = false; + +#if (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5) + if (MacOSVersionIsAtLeast(10, 5, 0)) { + /* Determine fallback font using CoreText. This uses the language isocode + * to find a suitable font. CoreText is available from 10.5 onwards. */ + char lang[16]; + if (strcmp(language_isocode, "zh_TW") == 0) { + /* Traditional Chinese */ + strecpy(lang, "zh-Hant", lastof(lang)); + } else if (strcmp(language_isocode, "zh_CN") == 0) { + /* Simplified Chinese */ + strecpy(lang, "zh-Hans", lastof(lang)); + } else { + /* Just copy the first part of the isocode. */ + strecpy(lang, language_isocode, lastof(lang)); + char *sep = strchr(lang, '_'); + if (sep != NULL) *sep = '\0'; + } + + /* Create a font descriptor matching the wanted language and latin (english) glyphs. */ + CFStringRef lang_codes[2]; + lang_codes[0] = CFStringCreateWithCString(kCFAllocatorDefault, lang, kCFStringEncodingUTF8); + lang_codes[1] = CFSTR("en"); + CFArrayRef lang_arr = CFArrayCreate(kCFAllocatorDefault, (const void **)lang_codes, lengthof(lang_codes), &kCFTypeArrayCallBacks); + CFDictionaryRef lang_attribs = CFDictionaryCreate(kCFAllocatorDefault, (const void**)&kCTFontLanguagesAttribute, (const void **)&lang_arr, 1, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks); + CTFontDescriptorRef lang_desc = CTFontDescriptorCreateWithAttributes(lang_attribs); + CFRelease(lang_arr); + CFRelease(lang_attribs); + CFRelease(lang_codes[0]); + + /* Get array of all font descriptors for the wanted language. */ + CFSetRef mandatory_attribs = CFSetCreate(kCFAllocatorDefault, (const void **)&kCTFontLanguagesAttribute, 1, &kCFTypeSetCallBacks); + CFArrayRef descs = CTFontDescriptorCreateMatchingFontDescriptors(lang_desc, mandatory_attribs); + CFRelease(mandatory_attribs); + CFRelease(lang_desc); + + for (CFIndex i = 0; descs != NULL && i < CFArrayGetCount(descs); i++) { + CTFontDescriptorRef font = (CTFontDescriptorRef)CFArrayGetValueAtIndex(descs, i); + + /* Get font traits. */ + CFDictionaryRef traits = (CFDictionaryRef)CTFontDescriptorCopyAttribute(font, kCTFontTraitsAttribute); + CTFontSymbolicTraits symbolic_traits; + CFNumberGetValue((CFNumberRef)CFDictionaryGetValue(traits, kCTFontSymbolicTrait), kCFNumberIntType, &symbolic_traits); + CFRelease(traits); + + /* Skip symbol fonts and vertical fonts. */ + if ((symbolic_traits & kCTFontClassMaskTrait) == (CTFontStylisticClass)kCTFontSymbolicClass || (symbolic_traits & kCTFontVerticalTrait)) continue; + /* Skip bold fonts (especially Arial Bold, which looks worse than regular Arial). */ + if (symbolic_traits & kCTFontBoldTrait) continue; + /* Select monospaced fonts if asked for. */ + if (((symbolic_traits & kCTFontMonoSpaceTrait) == kCTFontMonoSpaceTrait) != callback->Monospace()) continue; + + /* Get font name. */ + char name[128]; + CFStringRef font_name = (CFStringRef)CTFontDescriptorCopyAttribute(font, kCTFontDisplayNameAttribute); + CFStringGetCString(font_name, name, lengthof(name), kCFStringEncodingUTF8); + CFRelease(font_name); + + /* There are some special fonts starting with an '.' and the last + * resort font that aren't usable. Skip them. */ + if (name[0] == '.' || strncmp(name, "LastResort", 10) == 0) continue; + + /* Save result. */ + callback->SetFontNames(settings, name); + if (!callback->FindMissingGlyphs(NULL)) { + DEBUG(freetype, 2, "CT-Font for %s: %s", language_isocode, name); + result = true; + break; + } + } + if (descs != NULL) CFRelease(descs); + } else +#endif + { + /* Create a font iterator and iterate over all fonts that + * are available to the application. */ + ATSFontIterator itr; + ATSFontRef font; + ATSFontIteratorCreate(kATSFontContextLocal, NULL, NULL, kATSOptionFlagsDefaultScope, &itr); + while (!result && ATSFontIteratorNext(itr, &font) == noErr) { + /* Get font name. */ + char name[128]; + CFStringRef font_name; + ATSFontGetName(font, kATSOptionFlagsDefault, &font_name); + CFStringGetCString(font_name, name, lengthof(name), kCFStringEncodingUTF8); + + bool monospace = IsMonospaceFont(font_name); + CFRelease(font_name); + + /* Select monospaced fonts if asked for. */ + if (monospace != callback->Monospace()) continue; + + /* We only want the base font and not bold or italic variants. */ + if (strstr(name, "Italic") != NULL || strstr(name, "Bold")) continue; + + /* Skip some inappropriate or ugly looking fonts that have better alternatives. */ + if (name[0] == '.' || strncmp(name, "Apple Symbols", 13) == 0 || strncmp(name, "LastResort", 10) == 0) continue; + + /* Save result. */ + callback->SetFontNames(settings, name); + if (!callback->FindMissingGlyphs(NULL)) { + DEBUG(freetype, 2, "ATS-Font for %s: %s", language_isocode, name); + result = true; + break; + } + } + ATSFontIteratorRelease(&itr); + } + + if (!result) { + /* For some OS versions, the font 'Arial Unicode MS' does not report all languages it + * supports. If we didn't find any other font, just try it, maybe we get lucky. */ + callback->SetFontNames(settings, "Arial Unicode MS"); + result = !callback->FindMissingGlyphs(NULL); + } + + callback->FindMissingGlyphs(NULL); + return result; +} + +#elif defined(WITH_FONTCONFIG) /* end ifdef __APPLE__ */ + +#include + +#include "safeguards.h" + +/* ======================================================================================== + * FontConfig (unix) support + * ======================================================================================== */ +FT_Error GetFontByFaceName(const char *font_name, FT_Face *face) +{ + FT_Error err = FT_Err_Cannot_Open_Resource; + + if (!FcInit()) { + ShowInfoF("Unable to load font configuration"); + } else { + FcPattern *match; + FcPattern *pat; + FcFontSet *fs; + FcResult result; + char *font_style; + char *font_family; + + /* Split & strip the font's style */ + font_family = stredup(font_name); + font_style = strchr(font_family, ','); + if (font_style != NULL) { + font_style[0] = '\0'; + font_style++; + while (*font_style == ' ' || *font_style == '\t') font_style++; + } + + /* Resolve the name and populate the information structure */ + pat = FcNameParse((FcChar8*)font_family); + if (font_style != NULL) FcPatternAddString(pat, FC_STYLE, (FcChar8*)font_style); + FcConfigSubstitute(0, pat, FcMatchPattern); + FcDefaultSubstitute(pat); + fs = FcFontSetCreate(); + match = FcFontMatch(0, pat, &result); + + if (fs != NULL && match != NULL) { + int i; + FcChar8 *family; + FcChar8 *style; + FcChar8 *file; + FcFontSetAdd(fs, match); + + for (i = 0; err != FT_Err_Ok && i < fs->nfont; i++) { + /* Try the new filename */ + if (FcPatternGetString(fs->fonts[i], FC_FILE, 0, &file) == FcResultMatch && + FcPatternGetString(fs->fonts[i], FC_FAMILY, 0, &family) == FcResultMatch && + FcPatternGetString(fs->fonts[i], FC_STYLE, 0, &style) == FcResultMatch) { + + /* The correct style? */ + if (font_style != NULL && strcasecmp(font_style, (char*)style) != 0) continue; + + /* Font config takes the best shot, which, if the family name is spelled + * wrongly a 'random' font, so check whether the family name is the + * same as the supplied name */ + if (strcasecmp(font_family, (char*)family) == 0) { + err = FT_New_Face(_library, (char *)file, 0, face); + } + } + } + } + + free(font_family); + FcPatternDestroy(pat); + FcFontSetDestroy(fs); + FcFini(); + } + + return err; +} + +bool SetFallbackFont(FreeTypeSettings *settings, const char *language_isocode, int winlangid, MissingGlyphSearcher *callback) +{ + if (!FcInit()) return false; + + bool ret = false; + + /* Fontconfig doesn't handle full language isocodes, only the part + * before the _ of e.g. en_GB is used, so "remove" everything after + * the _. */ + char lang[16]; + seprintf(lang, lastof(lang), ":lang=%s", language_isocode); + char *split = strchr(lang, '_'); + if (split != NULL) *split = '\0'; + + /* First create a pattern to match the wanted language. */ + FcPattern *pat = FcNameParse((FcChar8*)lang); + /* We only want to know the filename. */ + FcObjectSet *os = FcObjectSetBuild(FC_FILE, FC_SPACING, FC_SLANT, FC_WEIGHT, NULL); + /* Get the list of filenames matching the wanted language. */ + FcFontSet *fs = FcFontList(NULL, pat, os); + + /* We don't need these anymore. */ + FcObjectSetDestroy(os); + FcPatternDestroy(pat); + + if (fs != NULL) { + int best_weight = -1; + const char *best_font = NULL; + + for (int i = 0; i < fs->nfont; i++) { + FcPattern *font = fs->fonts[i]; + + FcChar8 *file = NULL; + FcResult res = FcPatternGetString(font, FC_FILE, 0, &file); + if (res != FcResultMatch || file == NULL) { + continue; + } + + /* Get a font with the right spacing .*/ + int value = 0; + FcPatternGetInteger(font, FC_SPACING, 0, &value); + if (callback->Monospace() != (value == FC_MONO) && value != FC_DUAL) continue; + + /* Do not use those that explicitly say they're slanted. */ + FcPatternGetInteger(font, FC_SLANT, 0, &value); + if (value != 0) continue; + + /* We want the fatter font as they look better at small sizes. */ + FcPatternGetInteger(font, FC_WEIGHT, 0, &value); + if (value <= best_weight) continue; + + callback->SetFontNames(settings, (const char*)file); + + bool missing = callback->FindMissingGlyphs(NULL); + DEBUG(freetype, 1, "Font \"%s\" misses%s glyphs", file, missing ? "" : " no"); + + if (!missing) { + best_weight = value; + best_font = (const char *)file; + } + } + + if (best_font != NULL) { + ret = true; + callback->SetFontNames(settings, best_font); + InitFreeType(callback->Monospace()); + } + + /* Clean up the list of filenames. */ + FcFontSetDestroy(fs); + } + + FcFini(); + return ret; +} + +#else /* without WITH_FONTCONFIG */ +FT_Error GetFontByFaceName(const char *font_name, FT_Face *face) {return FT_Err_Cannot_Open_Resource;} +bool SetFallbackFont(FreeTypeSettings *settings, const char *language_isocode, int winlangid, MissingGlyphSearcher *callback) { return false; } +#endif /* WITH_FONTCONFIG */ + +#endif /* WITH_FREETYPE */ diff --git a/src/fontdetection.h b/src/fontdetection.h new file mode 100644 index 000000000..edb961e6d --- /dev/null +++ b/src/fontdetection.h @@ -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 fontdetection.h Functions related to detecting/finding the right font. */ + +#ifndef FONTDETECTION_H +#define FONTDETECTION_H + +#include "fontcache.h" + +#ifdef WITH_FREETYPE + +#include +#include FT_FREETYPE_H + +/** + * Load a freetype font face with the given font name. + * @param font_name The name of the font to load. + * @param face The face that has been found. + * @return The error we encountered. + */ +FT_Error GetFontByFaceName(const char *font_name, FT_Face *face); + +/** + * We would like to have a fallback font as the current one + * doesn't contain all characters we need. + * This function must set all fonts of settings. + * @param settings the settings to overwrite the fontname of. + * @param language_isocode the language, e.g. en_GB. + * @param winlangid the language ID windows style. + * @param callback The function to call to check for missing glyphs. + * @return true if a font has been set, false otherwise. + */ +bool SetFallbackFont(FreeTypeSettings *settings, const char *language_isocode, int winlangid, class MissingGlyphSearcher *callback); + +#endif /* WITH_FREETYPE */ + +#endif diff --git a/src/game/game.hpp b/src/game/game.hpp index 66a155bd5..faa9650bf 100644 --- a/src/game/game.hpp +++ b/src/game/game.hpp @@ -112,11 +112,6 @@ class Game { */ static class GameInstance *GetInstance() { return Game::instance; } - /** - * Get the current active mainscript. - */ - static const char *GetMainScript(); - #if defined(ENABLE_NETWORK) /** Wrapper function for GameScanner::HasGame */ static bool HasGame(const struct ContentInfo *ci, bool md5sum); diff --git a/src/game/game_config.cpp b/src/game/game_config.cpp index a85c2f467..50cd5da4e 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 f32a99b27..2f95e2622 100644 --- a/src/game/game_core.cpp +++ b/src/game/game_core.cpp @@ -21,17 +21,14 @@ #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; /* static */ GameScannerInfo *Game::scanner_info = NULL; /* static */ GameScannerLibrary *Game::scanner_library = NULL; -/* static */ const char *Game::GetMainScript() -{ - return Game::info->GetMainScript(); -} - /* static */ void Game::GameLoop() { if (_networking && !_network_server) return; @@ -76,6 +73,8 @@ GameInfo *info = config->GetInfo(); if (info == NULL) return; + config->AnchorUnchangeableSettings(); + Backup cur_company(_current_company, FILE_LINE); cur_company.Change(OWNER_DEITY); @@ -159,7 +158,7 @@ /* static */ void Game::ResetConfig() { - /* Check for both newgame as current game if we can reload the GameInfo insde + /* Check for both newgame as current game if we can reload the GameInfo inside * the GameConfig. If not, remove the Game from the list. */ if (_settings_game.game_config != NULL && _settings_game.game_config->HasScript()) { if (!_settings_game.game_config->ResetInfo(true)) { diff --git a/src/game/game_info.cpp b/src/game/game_info.cpp index e69eae073..e6ec3657b 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; + 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; } #if defined(WIN32) diff --git a/src/game/game_instance.cpp b/src/game/game_instance.cpp index df52ca91a..9d030f296 100644 --- a/src/game/game_instance.cpp +++ b/src/game/game_instance.cpp @@ -66,6 +66,9 @@ #include "../script/api/game/game_signlist.hpp.sq" #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" @@ -82,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,6 +174,9 @@ void GameInstance::RegisterAPI() SQGSStation_Register(this->engine); SQGSStationList_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 f8c2b4f22..bc02f6afd 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 8f43d145c..071d19d38 100644 --- a/src/game/game_scanner.hpp +++ b/src/game/game_scanner.hpp @@ -21,14 +21,14 @@ class GameScannerInfo : public ScriptScanner { /** * Check if we have a game by name and version available in our list. * @param nameParam The name of the game script. - * @param versionParam The versionof the game script, or -1 if you want the latest. + * @param versionParam The version of the game script, or -1 if you want the latest. * @param force_exact_match Only match name+version, never latest. * @return NULL if no match found, otherwise the game script that matched. */ 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 @@ class GameScannerLibrary : public ScriptScanner { 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 07388c842..d4a137904 100644 --- a/src/game/game_text.cpp +++ b/src/game/game_text.cpp @@ -13,21 +13,25 @@ #include "../strgen/strgen.h" #include "../debug.h" #include "../fileio_func.h" +#include "../tar_type.h" #include "../script/squirrel_class.hpp" #include "../strings_func.h" #include "game_text.hpp" #include "game.hpp" +#include "game_info.hpp" #include "table/strings.h" #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++; @@ -38,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++; @@ -49,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(); @@ -58,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. */ @@ -86,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) { @@ -104,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; @@ -113,8 +124,10 @@ LanguageStrings *ReadRawLanguageStrings(const char *file) } } + fclose(fh); return ret; } catch (...) { + if (fh != NULL) fclose(fh); delete ret; return NULL; } @@ -138,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; @@ -199,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) @@ -208,22 +221,6 @@ struct StringNameWriter : HeaderWriter { } }; -static void GetBasePath(char *buffer, size_t length) -{ - strecpy(buffer, Game::GetMainScript(), buffer + length); - char *s = strrchr(buffer, PATHSEPCHAR); - if (s != NULL) { - /* Keep the PATHSEPCHAR there, remove the rest */ - s++; - *s = '\0'; - } - - /* Tars dislike opening files with '/' on Windows.. so convert it to '\\' */ -#if (PATHSEPCHAR != '/') - for (char *n = buffer; *n != '\0'; n++) if (*n == '/') *n = PATHSEPCHAR; -#endif -} - /** * Scanner to find language files in a GameScript directory. */ @@ -234,7 +231,7 @@ class LanguageScanner : protected FileScanner { 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); } /** @@ -260,20 +257,45 @@ class LanguageScanner : protected FileScanner { */ GameStrings *LoadTranslations() { + const GameInfo *info = Game::GetInfo(); + char filename[512]; + strecpy(filename, info->GetMainScript(), lastof(filename)); + char *e = strrchr(filename, PATHSEPCHAR); + if (e == NULL) return NULL; + e++; // Make 'e' point after the PATHSEPCHAR + + strecpy(e, "lang" PATHSEP "english.txt", lastof(filename)); + if (!FioCheckFileExists(filename, GAME_DIR)) return NULL; + GameStrings *gs = new GameStrings(); try { - char filename[512]; - GetBasePath(filename, sizeof(filename)); - char *e = filename + strlen(filename); - - seprintf(e, filename + sizeof(filename), "lang" PATHSEP "english.txt"); - if (!FioCheckFileExists(filename, GAME_DIR)) throw std::exception(); *gs->raw_strings.Append() = ReadRawLanguageStrings(filename); /* Scan for other language files */ LanguageScanner scanner(gs, filename); - strecpy(e, "lang" PATHSEP, filename + sizeof(filename)); - scanner.Scan(filename); + strecpy(e, "lang" PATHSEP, lastof(filename)); + size_t len = strlen(filename); + + const char *tar_filename = info->GetTarFile(); + TarList::iterator iter; + if (tar_filename != NULL && (iter = _tar_list[GAME_DIR].find(tar_filename)) != _tar_list[GAME_DIR].end()) { + /* The main script is in a tar file, so find all files that + * are in the same tar and add them to the langfile scanner. */ + TarFileList::iterator tar; + FOR_ALL_TARS(tar, GAME_DIR) { + /* Not in the same tar. */ + if (tar->second.tar_filename != iter->first) continue; + + /* Check the path and extension. */ + if (tar->first.size() <= len || tar->first.compare(0, len, filename) != 0) continue; + if (tar->first.compare(tar->first.size() - 4, 4, ".txt") != 0) continue; + + scanner.AddFile(tar->first.c_str(), 0, tar_filename); + } + } else { + /* Scan filesystem */ + scanner.Scan(filename); + } gs->Compile(); return gs; @@ -357,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 b367e63f9..19a31049e 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 b4b9fd7a6..400c0d22f 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 78fa6e3e7..88e1b84a5 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_gui.cpp b/src/genworld_gui.cpp index 85647bdb7..a95a32630 100644 --- a/src/genworld_gui.cpp +++ b/src/genworld_gui.cpp @@ -32,6 +32,8 @@ #include "widgets/genworld_widget.h" +#include "safeguards.h" + extern void MakeNewgameSettingsLive(); @@ -78,11 +80,10 @@ static const NWidgetPart _nested_generate_landscape_widgets[] = { NWidget(NWID_HORIZONTAL), SetPIP(0, 3, 0), /* Left column with labels. */ NWidget(NWID_VERTICAL, NC_EQUALSIZE), SetPIP(0, 4, 0), - NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_MAPSIZE, STR_NULL), SetFill(1, 1), + NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_MAPSIZE, STR_MAPGEN_MAPSIZE_TOOLTIP), SetFill(1, 1), 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_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), @@ -92,14 +93,13 @@ static const NWidgetPart _nested_generate_landscape_widgets[] = { NWidget(NWID_VERTICAL, NC_EQUALSIZE), SetPIP(0, 4, 0), /* Mapsize X * Y. */ NWidget(NWID_HORIZONTAL), SetPIP(0, 4, 0), - NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_MAPSIZE_X_PULLDOWN), SetDataTip(STR_JUST_INT, STR_NULL), SetFill(1, 0), + NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_MAPSIZE_X_PULLDOWN), SetDataTip(STR_JUST_INT, STR_MAPGEN_MAPSIZE_TOOLTIP), SetFill(1, 0), 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), + NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_MAPSIZE_Y_PULLDOWN), SetDataTip(STR_JUST_INT, STR_MAPGEN_MAPSIZE_TOOLTIP), SetFill(1, 0), EndContainer(), 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_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), @@ -113,6 +113,7 @@ static const NWidgetPart _nested_generate_landscape_widgets[] = { NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_SNOW_LINE_HEIGHT, 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. */ @@ -129,13 +130,9 @@ static const NWidgetPart _nested_generate_landscape_widgets[] = { 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), EndContainer(), @@ -199,7 +196,6 @@ static const NWidgetPart _nested_heightmap_load_widgets[] = { NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_MAPSIZE, 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), @@ -217,7 +213,6 @@ static const NWidgetPart _nested_heightmap_load_widgets[] = { EndContainer(), 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), @@ -243,7 +238,6 @@ static const NWidgetPart _nested_heightmap_load_widgets[] = { 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), EndContainer(), @@ -284,7 +278,7 @@ 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; @@ -309,19 +303,13 @@ struct GenerateLandscapeWindow : public Window { uint y; char name[64]; GenenerateLandscapeWindowMode mode; - QueryString seed_editbox; - GenerateLandscapeWindow(const WindowDesc *desc, WindowNumber number = 0) : seed_editbox(11) + GenerateLandscapeWindow(WindowDesc *desc, WindowNumber number = 0) : Window(desc) { - this->InitNested(desc, number); + 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.afilter = CS_NUMERAL; - this->mode = (GenenerateLandscapeWindowMode)this->window_number; /* Disable town, industry and trees in SE */ @@ -547,12 +535,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; @@ -693,17 +675,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) { @@ -796,15 +767,15 @@ struct GenerateLandscapeWindow : public Window { } }; -static const WindowDesc _generate_landscape_desc( - WDP_CENTER, 0, 0, +static WindowDesc _generate_landscape_desc( + WDP_CENTER, NULL, 0, 0, WC_GENERATE_LANDSCAPE, WC_NONE, 0, _nested_generate_landscape_widgets, lengthof(_nested_generate_landscape_widgets) ); -static const WindowDesc _heightmap_load_desc( - WDP_CENTER, 0, 0, +static WindowDesc _heightmap_load_desc( + WDP_CENTER, NULL, 0, 0, WC_GENERATE_LANDSCAPE, WC_NONE, 0, _nested_heightmap_load_widgets, lengthof(_nested_heightmap_load_widgets) @@ -817,8 +788,8 @@ static void _ShowGenerateLandscape(GenenerateLandscapeWindowMode mode) 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 */ @@ -870,9 +841,9 @@ struct CreateScenarioWindow : public Window { uint widget_id; - CreateScenarioWindow(const WindowDesc *desc, WindowNumber window_number) : Window() + CreateScenarioWindow(WindowDesc *desc, WindowNumber window_number) : Window(desc) { - this->InitNested(desc, window_number); + this->InitNested(window_number); this->LowerWidget(_settings_newgame.game_creation.landscape + WID_CS_TEMPERATE); } @@ -1097,8 +1068,8 @@ static const NWidgetPart _nested_create_scenario_widgets[] = { EndContainer(), }; -static const WindowDesc _create_scenario_desc( - WDP_CENTER, 0, 0, +static WindowDesc _create_scenario_desc( + WDP_CENTER, NULL, 0, 0, WC_GENERATE_LANDSCAPE, WC_NONE, 0, _nested_create_scenario_widgets, lengthof(_nested_create_scenario_widgets) @@ -1125,8 +1096,8 @@ static const NWidgetPart _nested_generate_progress_widgets[] = { }; -static const WindowDesc _generate_progress_desc( - WDP_CENTER, 0, 0, +static WindowDesc _generate_progress_desc( + WDP_CENTER, NULL, 0, 0, WC_MODAL_PROGRESS, WC_NONE, 0, _nested_generate_progress_widgets, lengthof(_nested_generate_progress_widgets) @@ -1170,9 +1141,9 @@ static void AbortGeneratingWorldCallback(Window *w, bool confirmed) struct GenerateProgressWindow : public Window { - GenerateProgressWindow() : Window() + GenerateProgressWindow() : Window(&_generate_progress_desc) { - this->InitNested(&_generate_progress_desc); + this->InitNested(); } virtual void OnClick(Point pt, int widget, int click_count) diff --git a/src/gfx.cpp b/src/gfx.cpp index eb62e56fb..20e27519a 100644 --- a/src/gfx.cpp +++ b/src/gfx.cpp @@ -10,8 +10,7 @@ /** @file gfx.cpp Handling of drawing text and other gfx related stuff. */ #include "stdafx.h" -#include "gfx_func.h" -#include "fontcache.h" +#include "gfx_layout.h" #include "progress.h" #include "zoom_func.h" #include "blitter/factory.hpp" @@ -27,8 +26,11 @@ #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? @@ -45,9 +47,6 @@ SwitchMode _switch_mode; ///< The next mainloop command. PauseModeByte _pause_mode; Palette _cur_palette; -static Dimension _max_char_size[FS_END]; ///< Cache of the maximum size of any character of a font. -static int _max_char_height; ///< Cache of the height of the largest font -static int _max_char_width; ///< Cache of the width of the largest font static byte _stringwidth_table[FS_END][224]; ///< Cache containing width of often used characters. @see GetCharacterWidth() DrawPixelInfo *_cur_dpi; byte _colour_gradient[COLOUR_END][8]; @@ -55,43 +54,6 @@ byte _colour_gradient[COLOUR_END][8]; static void GfxMainBlitterViewport(const Sprite *sprite, int x, int y, BlitterMode mode, const SubSprite *sub = NULL, SpriteID sprite_id = SPR_CURSOR_MOUSE); static void GfxMainBlitter(const Sprite *sprite, int x, int y, BlitterMode mode, const SubSprite *sub = NULL, SpriteID sprite_id = SPR_CURSOR_MOUSE, ZoomLevel zoom = ZOOM_LVL_NORMAL); -/** - * Text drawing parameters, which can change while drawing a line, but are kept between multiple parts - * of the same text, e.g. on line breaks. - */ -struct DrawStringParams { - FontSize fontsize; - TextColour cur_colour, prev_colour; - - DrawStringParams(TextColour colour, FontSize fontsize) : fontsize(fontsize), cur_colour(colour), prev_colour(colour) {} - - /** - * Switch to new colour \a c. - * @param c New colour to use. - */ - inline void SetColour(TextColour c) - { - assert(c >= TC_BLUE && c <= TC_BLACK); - this->prev_colour = this->cur_colour; - this->cur_colour = c; - } - - /** Switch to previous colour. */ - inline void SetPreviousColour() - { - Swap(this->cur_colour, this->prev_colour); - } - - /** - * Switch to using a new font \a f. - * @param f New font to use. - */ - inline void SetFontSize(FontSize f) - { - this->fontsize = f; - } -}; - static ReusableBuffer _cursor_backup; /** @@ -114,7 +76,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; @@ -126,7 +88,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); } @@ -146,7 +108,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; @@ -191,46 +153,115 @@ void GfxFillRect(int left, int top, int right, int bottom, int colour, FillRectM } } -void GfxDrawLine(int x, int y, int x2, int y2, int colour, int width) +/** + * Check line clipping by using a linear equation and draw the visible part of + * the line given by x/y and x2/y2. + * @param video Destination pointer to draw into. + * @param x X coordinate of first point. + * @param y Y coordinate of first point. + * @param x2 X coordinate of second point. + * @param y2 Y coordinate of second point. + * @param screen_width With of the screen to check clipping against. + * @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, int dash = 0) { - Blitter *blitter = BlitterFactoryBase::GetCurrentBlitter(); - DrawPixelInfo *dpi = _cur_dpi; + Blitter *blitter = BlitterFactory::GetCurrentBlitter(); assert(width > 0); - x -= dpi->left; - x2 -= dpi->left; - y -= dpi->top; - y2 -= dpi->top; + 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, dash); + 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, dash); + return; + } + + int grade_y = y2 - y; + int grade_x = x2 - x; - /* Check clipping */ - if (x + width / 2 < 0 && x2 + width / 2 < 0 ) return; - if (y + width / 2 < 0 && y2 + width / 2 < 0 ) return; - if (x - width / 2 > dpi->width && x2 - width / 2 > dpi->width ) return; - if (y - width / 2 > dpi->height && y2 - width / 2 > dpi->height) return; + /* prevent integer overflows. */ + int margin = 1; + while (INT_MAX / abs(grade_y) < max(abs(x), abs(screen_width - x))) { + grade_y /= 2; + grade_x /= 2; + margin *= 2; // account for rounding errors + } - blitter->DrawLine(dpi->dst_ptr, x, y, x2, y2, dpi->width, dpi->height, colour, width); + /* 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)) { + return; + } + + /* It is possible to use the line equation to further reduce the amount of + * work the blitter has to do by shortening the effective line segment. + * However, in order to get that right and prevent the flickering effects + * 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, dash); } -void GfxDrawLineUnscaled(int x, int y, int x2, int y2, int colour) +/** + * Align parameters of a line to the given DPI and check simple clipping. + * @param dpi Screen parameters to align with. + * @param x X coordinate of first point. + * @param y Y coordinate of first point. + * @param x2 X coordinate of second point. + * @param y2 Y coordinate of second point. + * @param width Width of the line. + * @return True if the line is likely to be visible, false if it's certainly + * invisible. + */ +static inline bool GfxPreprocessLine(DrawPixelInfo *dpi, int &x, int &y, int &x2, int &y2, int width) { - Blitter *blitter = BlitterFactoryBase::GetCurrentBlitter(); - DrawPixelInfo *dpi = _cur_dpi; - x -= dpi->left; x2 -= dpi->left; y -= dpi->top; y2 -= dpi->top; - /* Check clipping */ - if (x < 0 && x2 < 0) return; - if (y < 0 && y2 < 0) return; - if (x > dpi->width && x2 > dpi->width) return; - if (y > dpi->height && y2 > dpi->height) return; + /* Check simple clipping */ + if (x + width / 2 < 0 && x2 + width / 2 < 0 ) return false; + if (y + width / 2 < 0 && y2 + width / 2 < 0 ) return false; + if (x - width / 2 > dpi->width && x2 - width / 2 > dpi->width ) return false; + if (y - width / 2 > dpi->height && y2 - width / 2 > dpi->height) return false; + return true; +} + +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, dash); + } +} - blitter->DrawLine(dpi->dst_ptr, UnScaleByZoom(x, dpi->zoom), UnScaleByZoom(y, dpi->zoom), - UnScaleByZoom(x2, dpi->zoom), UnScaleByZoom(y2, dpi->zoom), - UnScaleByZoom(dpi->width, dpi->zoom), UnScaleByZoom(dpi->height, dpi->zoom), colour, 1); +void GfxDrawLineUnscaled(int x, int y, int x2, int y2, int colour) +{ + DrawPixelInfo *dpi = _cur_dpi; + if (GfxPreprocessLine(dpi, x, y, x2, y2, 1)) { + GfxDoDrawLine(dpi->dst_ptr, + UnScaleByZoom(x, dpi->zoom), UnScaleByZoom(y, dpi->zoom), + UnScaleByZoom(x2, dpi->zoom), UnScaleByZoom(y2, dpi->zoom), + UnScaleByZoom(dpi->width, dpi->zoom), UnScaleByZoom(dpi->height, dpi->zoom), colour, 1); + } } /** @@ -296,319 +327,159 @@ static void SetColourRemap(TextColour colour) _colour_remap_ptr = _string_colourremap; } -#if !defined(WITH_ICU) -typedef WChar UChar; -static UChar *HandleBiDiAndArabicShapes(UChar *text) { return text; } -#else -#include -#include - /** - * Function to be able to handle right-to-left text and Arabic chars properly. - * - * First: right-to-left (RTL) is stored 'logically' in almost all applications - * and so do we. This means that their text is stored from right to the - * left in memory and any non-RTL text (like numbers or English) are - * then stored from left-to-right. When we want to actually draw the - * text we need to reverse the RTL text in memory, which is what - * happens in ubidi_writeReordered. - * Second: Arabic characters "differ" based on their context. To draw the - * correct variant we pass it through u_shapeArabic. This function can - * add or remove some characters. This is the reason for the lastof - * so we know till where we can fill the output. - * - * Sadly enough these functions work with a custom character format, UChar, - * which isn't the same size as WChar. Because of that we need to transform - * our text first to UChars and then back to something we can use. - * - * To be able to truncate strings properly you must truncate before passing to - * this function. This way the logical begin of the string remains and the end - * gets chopped of instead of the other way around. + * Drawing routine for drawing a laid out line of text. + * @param line String to draw. + * @param y The top most position to draw on. + * @param left The left most position to draw on. + * @param right The right most position to draw on. + * @param align The alignment of the string when drawing left-to-right. In the + * case a right-to-left language is chosen this is inverted so it + * will be drawn in the right direction. + * @param underline Whether to underline what has been drawn or not. + * @param truncation Whether to perform string truncation or not. * - * The reshaping of Arabic characters might increase or decrease the width of - * the characters/string. So it might still overflow after truncation, though - * the chance is fairly slim as most characters get shorter instead of longer. - * @param buffer the buffer to read from/to - * @param lastof the end of the buffer - * @return the buffer to draw from + * @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 UChar *HandleBiDiAndArabicShapes(UChar *buffer) +static int DrawLayoutLine(const ParagraphLayouter::Line *line, int y, int left, int right, StringAlignment align, bool underline, bool truncation) { - static UChar input_output[DRAW_STRING_BUFFER]; - UChar intermediate[DRAW_STRING_BUFFER]; - - UChar *t = buffer; - size_t length = 0; - while (*t != '\0' && length < lengthof(input_output) - 1) { - input_output[length++] = *t++; - } - input_output[length] = 0; - - UErrorCode err = U_ZERO_ERROR; - UBiDi *para = ubidi_openSized((int32_t)length, 0, &err); - if (para == NULL) return buffer; - - ubidi_setPara(para, input_output, (int32_t)length, _current_text_dir == TD_RTL ? UBIDI_DEFAULT_RTL : UBIDI_DEFAULT_LTR, NULL, &err); - ubidi_writeReordered(para, intermediate, (int32_t)length, UBIDI_REMOVE_BIDI_CONTROLS, &err); - length = u_shapeArabic(intermediate, (int32_t)length, input_output, lengthof(input_output), U_SHAPE_TEXT_DIRECTION_VISUAL_LTR | U_SHAPE_LETTERS_SHAPE, &err); - ubidi_close(para); - - if (U_FAILURE(err)) return buffer; - - input_output[length] = '\0'; - return input_output; -} -#endif /* WITH_ICU */ + if (line->CountRuns() == 0) return 0; + int w = line->GetWidth(); + int h = line->GetLeading(); -/** - * Truncate a given string to a maximum width if neccessary. - * If the string is truncated, add three dots ('...') to show this. - * @param *str string that is checked and possibly truncated - * @param maxw maximum width in pixels of the string - * @param ignore_setxy whether to ignore SETX(Y) or not - * @param start_fontsize Fontsize to start the text with - * @return new width of (truncated) string - */ -static int TruncateString(char *str, int maxw, bool ignore_setxy, FontSize start_fontsize) -{ - int w = 0; - FontSize size = start_fontsize; - int ddd, ddd_w; + /* + * The following is needed for truncation. + * Depending on the text direction, we either remove bits at the rear + * or the front. For this we shift the entire area to draw so it fits + * within the left/right bounds and the side we do not truncate it on. + * Then we determine the truncation location, i.e. glyphs that fall + * outside of the range min_x - max_x will not be drawn; they are thus + * the truncated glyphs. + * + * At a later step we insert the dots. + */ - WChar c; - char *ddd_pos; + int max_w = right - left + 1; // The maximum width. - ddd_w = ddd = GetCharacterWidth(size, '.') * 3; + int offset_x = 0; // The offset we need for positioning the glyphs + int min_x = left; // The minimum x position to draw normal glyphs on. + int max_x = right; // The maximum x position to draw normal glyphs on. - for (ddd_pos = str; (c = Utf8Consume(const_cast(&str))) != '\0'; ) { - if (IsPrintable(c) && !IsTextDirectionChar(c)) { - w += GetCharacterWidth(size, c); + truncation &= max_w < w; // Whether we need to do truncation. + int dot_width = 0; // Cache for the width of the dot. + const Sprite *dot_sprite = NULL; // Cache for the sprite of the dot. - if (w > maxw) { - /* string got too big... insert dotdotdot, but make sure we do not - * print anything beyond the string termination character. */ - for (int i = 0; *ddd_pos != '\0' && i < 3; i++, ddd_pos++) *ddd_pos = '.'; - *ddd_pos = '\0'; - return ddd_w; - } + if (truncation) { + /* + * Assumption may be made that all fonts of a run are of the same size. + * In any case, we'll use these dots for the abbreviation, so even if + * 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; + GlyphID dot_glyph = fc->MapCharToGlyph('.'); + dot_width = fc->GetGlyphWidth(dot_glyph); + dot_sprite = fc->GetGlyph(dot_glyph); + + if (_current_text_dir == TD_RTL) { + min_x += 3 * dot_width; + offset_x = w - 3 * dot_width - max_w; } else { - if (c == SCC_SETX) { - if (!ignore_setxy) w = *str; - str++; - } else if (c == SCC_SETXY) { - if (!ignore_setxy) w = *str; - str += 2; - } else if (c == SCC_TINYFONT) { - size = FS_SMALL; - ddd = GetCharacterWidth(size, '.') * 3; - } else if (c == SCC_BIGFONT) { - size = FS_LARGE; - ddd = GetCharacterWidth(size, '.') * 3; - } else if (c == '\n') { - DEBUG(misc, 0, "Drawing string using newlines with DrawString instead of DrawStringMultiLine. Please notify the developers of this: [%s]", str); - } + max_x -= 3 * dot_width; } - /* Remember the last position where three dots fit. */ - if (w + ddd < maxw) { - ddd_w = w + ddd; - ddd_pos = str; - } + w = max_w; } - return w; -} - -static int ReallyDoDrawString(const UChar *string, int x, int y, DrawStringParams ¶ms, bool parse_string_also_when_clipped = false); + /* In case we have a RTL language we swap the alignment. */ + if (!(align & SA_FORCE) && _current_text_dir == TD_RTL && (align & SA_HOR_MASK) != SA_HOR_CENTER) align ^= SA_RIGHT; -/** - * Get the real width of the string. - * @param str the string to draw - * @param start_fontsize Fontsize to start the text with - * @return the width. - */ -static int GetStringWidth(const UChar *str, FontSize start_fontsize) -{ - FontSize size = start_fontsize; - int max_width; - int width; - WChar c; - - width = max_width = 0; - for (;;) { - c = *str++; - if (c == 0) break; - if (IsPrintable(c) && !IsTextDirectionChar(c)) { - width += GetCharacterWidth(size, c); - } else { - switch (c) { - case SCC_SETX: - case SCC_SETXY: - /* At this point there is no SCC_SETX(Y) anymore */ - NOT_REACHED(); - break; - case SCC_TINYFONT: size = FS_SMALL; break; - case SCC_BIGFONT: size = FS_LARGE; break; - case '\n': - max_width = max(max_width, width); - break; - } - } - } + /* right is the right most position to draw on. In this case we want to do + * calculations with the width of the string. In comparison right can be + * seen as lastof(todraw) and width as lengthof(todraw). They differ by 1. + * So most +1/-1 additions are to move from lengthof to 'indices'. + */ + switch (align & SA_HOR_MASK) { + case SA_LEFT: + /* right + 1 = left + w */ + right = left + w - 1; + break; - return max(max_width, width); -} + case SA_HOR_CENTER: + left = RoundDivSU(right + 1 + left - w, 2); + /* right + 1 = left + w */ + right = left + w - 1; + break; -/** - * Draw string, possibly truncated to make it fit in its allocated space - * - * @param left The left most position to draw on. - * @param right The right most position to draw on. - * @param top The top most position to draw on. - * @param str String to draw. - * @param last The end of the string buffer to draw. - * @param params Text drawing parameters. - * @param align The alignment of the string when drawing left-to-right. In the - * case a right-to-left language is chosen this is inverted so it - * will be drawn in the right direction. - * @param underline Whether to underline what has been drawn or not. - * @param truncate Whether to truncate the string or not. - * - * @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 DrawString(int left, int right, int top, char *str, const char *last, DrawStringParams ¶ms, StringAlignment align, bool underline = false, bool truncate = true) -{ - /* We need the outer limits of both left/right */ - int min_left = INT32_MAX; - int max_right = INT32_MIN; + case SA_RIGHT: + left = right + 1 - w; + break; - int initial_left = left; - int initial_right = right; - int initial_top = top; + default: + NOT_REACHED(); + } - if (truncate) TruncateString(str, right - left + 1, (align & SA_STRIP) == SA_STRIP, params.fontsize); + 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(); - /* - * To support SETX and SETXY properly with RTL languages we have to - * calculate the offsets from the right. To do this we need to split - * the string and draw the parts separated by SETX(Y). - * So here we split - */ - static SmallVector setx_offsets; - setx_offsets.Clear(); + FontCache *fc = f->fc; + colour = f->colour; + SetColourRemap(colour); - UChar draw_buffer[DRAW_STRING_BUFFER]; - UChar *p = draw_buffer; + DrawPixelInfo *dpi = _cur_dpi; + int dpi_left = dpi->left; + int dpi_right = dpi->left + dpi->width - 1; - *setx_offsets.Append() = p; + draw_shadow = fc->GetDrawGlyphShadow() && colour != TC_BLACK; - char *loc = str; - for (;;) { - WChar c; - /* We cannot use Utf8Consume as we need the location of the SETX(Y) */ - size_t len = Utf8Decode(&c, loc); - *p++ = c; + for (int i = 0; i < run->GetGlyphCount(); i++) { + GlyphID glyph = run->GetGlyphs()[i]; - if (c == '\0') break; - if (p >= lastof(draw_buffer) - 3) { - /* Make sure we never overflow (even if copying SCC_SETX(Y)). */ - *p = '\0'; - break; - } - if (c != SCC_SETX && c != SCC_SETXY) { - loc += len; - continue; - } + /* Not a valid glyph (empty) */ + if (glyph == 0xFFFF) continue; - if (align & SA_STRIP) { - /* We do not want to keep the SETX(Y)!. It was already copied, so - * remove it and undo the incrementing of the pointer! */ - *p-- = '\0'; - loc += len + (c == SCC_SETXY ? 2 : 1); - 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; - if ((align & SA_HOR_MASK) != SA_LEFT) { - DEBUG(grf, 1, "Using SETX and/or SETXY when not aligned to the left. Fixing alignment..."); + /* Truncated away. */ + if (truncation && (begin_x < min_x || end_x > max_x)) continue; - /* For left alignment and change the left so it will roughly be in the - * middle. This will never cause the string to be completely centered, - * but once SETX is used you cannot be sure the actual content of the - * string is centered, so it doesn't really matter. */ - align = SA_LEFT | SA_FORCE; - initial_left = left = max(left, (left + right - (int)GetStringBoundingBox(str).width) / 2); - } + const Sprite *sprite = fc->GetGlyph(glyph); + /* Check clipping (the "+ 1" is for the shadow). */ + if (begin_x + sprite->x_offs > dpi_right || begin_x + sprite->x_offs + sprite->width /* - 1 + 1 */ < dpi_left) continue; - /* We add the begin of the string, but don't add it twice */ - if (p != draw_buffer) { - *setx_offsets.Append() = p; - p[-1] = '\0'; - *p++ = c; + if (draw_shadow && (glyph & SPRITE_GLYPH) == 0) { + SetColourRemap(TC_BLACK); + GfxMainBlitter(sprite, begin_x + 1, top + 1, BM_COLOUR_REMAP); + SetColourRemap(colour); + } + GfxMainBlitter(sprite, begin_x, top, BM_COLOUR_REMAP); } - - /* Skip the SCC_SETX(Y) ... */ - loc += len; - /* ... copy the x coordinate ... */ - *p++ = *loc++; - /* ... and finally copy the y coordinate if it exists */ - if (c == SCC_SETXY) *p++ = *loc++; } - /* In case we have a RTL language we swap the alignment. */ - if (!(align & SA_FORCE) && _current_text_dir == TD_RTL && !(align & SA_STRIP) && (align & SA_HOR_MASK) != SA_HOR_CENTER) align ^= SA_RIGHT; - - for (UChar **iter = setx_offsets.Begin(); iter != setx_offsets.End(); iter++) { - UChar *to_draw = *iter; - int offset = 0; - - /* Skip the SETX(Y) and set the appropriate offsets. */ - if (*to_draw == SCC_SETX || *to_draw == SCC_SETXY) { - to_draw++; - offset = *to_draw++; - if (*to_draw == SCC_SETXY) top = initial_top + *to_draw++; - } - - to_draw = HandleBiDiAndArabicShapes(to_draw); - int w = GetStringWidth(to_draw, params.fontsize); - - /* right is the right most position to draw on. In this case we want to do - * calculations with the width of the string. In comparison right can be - * seen as lastof(todraw) and width as lengthof(todraw). They differ by 1. - * So most +1/-1 additions are to move from lengthof to 'indices'. - */ - switch (align & SA_HOR_MASK) { - case SA_LEFT: - /* right + 1 = left + w */ - left = initial_left + offset; - right = left + w - 1; - break; - - case SA_HOR_CENTER: - left = RoundDivSU(initial_right + 1 + initial_left - w, 2); - /* right + 1 = left + w */ - right = left + w - 1; - break; - - case SA_RIGHT: - left = initial_right + 1 - w - offset; - break; - - default: - NOT_REACHED(); + 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); } + } - min_left = min(left, min_left); - max_right = max(right, max_right); - - ReallyDoDrawString(to_draw, left, top, params, !truncate); - if (underline) { - GfxFillRect(left, top + FONT_HEIGHT_NORMAL, right, top + FONT_HEIGHT_NORMAL, _string_colourremap[1]); - } + if (underline) { + GfxFillRect(left, y + h, right, y + h, _string_colourremap[1]); } - return (align & SA_HOR_MASK) == SA_RIGHT ? min_left : max_right; + return (align & SA_HOR_MASK) == SA_RIGHT ? left : right; } /** @@ -624,13 +495,26 @@ static int DrawString(int left, int right, int top, char *str, const char *last, * will be drawn in the right direction. * @param underline Whether to underline what has been drawn or not. * @param fontsize The size of the initial characters. + * @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. */ int DrawString(int left, int right, int top, const char *str, TextColour colour, StringAlignment align, bool underline, FontSize fontsize) { - char buffer[DRAW_STRING_BUFFER]; - strecpy(buffer, str, lastof(buffer)); - DrawStringParams params(colour, fontsize); - return DrawString(left, right, top, buffer, lastof(buffer), params, align, underline); + /* The string may contain control chars to change the font, just use the biggest font for clipping. */ + int max_height = max(max(FONT_HEIGHT_SMALL, FONT_HEIGHT_NORMAL), max(FONT_HEIGHT_LARGE, FONT_HEIGHT_MONO)); + + /* Funny glyphs may extent outside the usual bounds, so relax the clipping somewhat. */ + int extra = max_height / 2; + + if (_cur_dpi->top + _cur_dpi->height + extra < top || _cur_dpi->top > top + max_height + extra || + _cur_dpi->left + _cur_dpi->width + extra < left || _cur_dpi->left > right + extra) { + return 0; + } + + Layouter layout(str, INT32_MAX, colour, fontsize); + if (layout.Length() == 0) return 0; + + return DrawLayoutLine(*layout.Begin(), top, left, right, align, underline, true); } /** @@ -646,169 +530,54 @@ int DrawString(int left, int right, int top, const char *str, TextColour colour, * will be drawn in the right direction. * @param underline Whether to underline what has been drawn or not. * @param fontsize The size of the initial characters. + * @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. */ int DrawString(int left, int right, int top, StringID str, TextColour colour, StringAlignment align, bool underline, FontSize fontsize) { char buffer[DRAW_STRING_BUFFER]; GetString(buffer, str, lastof(buffer)); - DrawStringParams params(colour, fontsize); - return DrawString(left, right, top, buffer, lastof(buffer), params, align, underline); + return DrawString(left, right, top, buffer, colour, align, underline, fontsize); } /** - * 'Correct' a string to a maximum length. Longer strings will be cut into - * additional lines at whitespace characters if possible. The string parameter - * is modified with terminating characters mid-string which are the - * placeholders for the newlines. - * The string WILL be truncated if there was no whitespace for the current - * line's maximum width. - * - * @note To know if the terminating '\0' is the string end or just a - * newline, the returned 'num' value should be consulted. The num'th '\0', - * starting with index 0 is the real string end. - * - * @param str string to check and correct for length restrictions - * @param last the last valid location (for '\0') in the buffer of str - * @param maxw the maximum width the string can have on one line - * @param size Fontsize to start the text with - * @return return a 32bit wide number consisting of 2 packed values: - * 0 - 15 the number of lines ADDED to the string - * 16 - 31 the fontsize in which the length calculation was done at + * Calculates height of string (in pixels). The string is changed to a multiline string if needed. + * @param str string to check + * @param maxw maximum string width + * @return height of pixels of string when it is drawn */ -uint32 FormatStringLinebreaks(char *str, const char *last, int maxw, FontSize size) +int GetStringHeight(const char *str, int maxw, FontSize fontsize) { - int num = 0; - - assert(maxw > 0); - - for (;;) { - /* The character *after* the last space. */ - char *last_space = NULL; - int w = 0; - - for (;;) { - WChar c = Utf8Consume(const_cast(&str)); - /* whitespace is where we will insert the line-break */ - if (IsWhitespace(c)) last_space = str; - - if (IsPrintable(c) && !IsTextDirectionChar(c)) { - int char_w = GetCharacterWidth(size, c); - w += char_w; - if (w > maxw) { - /* The string is longer than maximum width so we need to decide - * what to do with it. */ - if (w == char_w) { - /* The character is wider than allowed width; don't know - * what to do with this case... bail out! */ - return num + (size << 16); - } - if (last_space == NULL) { - /* No space has been found. Just terminate at our current - * location. This usually happens for languages that do not - * require spaces in strings, like Chinese, Japanese and - * Korean. For other languages terminating mid-word might - * not be the best, but terminating the whole string instead - * of continuing the word at the next line is worse. */ - str = Utf8PrevChar(str); - size_t len = strlen(str); - char *terminator = str + len; - - /* The string location + length of the string + 1 for '\0' - * always fits; otherwise there's no trailing '\0' and it - * it not a valid string. */ - assert(terminator <= last); - assert(*terminator == '\0'); - - /* If the string is too long we have to terminate it earlier. */ - if (terminator == last) { - /* Get the 'begin' of the previous character and make that - * the terminator of the string; we truncate it 'early'. */ - *Utf8PrevChar(terminator) = '\0'; - len = strlen(str); - } - /* Also move the terminator! */ - memmove(str + 1, str, len + 1); - *str = '\0'; - /* str needs to point to the character *after* the last space */ - str++; - } else { - /* A space is found; perfect place to terminate */ - str = last_space; - } - break; - } - } else { - switch (c) { - case '\0': return num + (size << 16); - case SCC_SETX: str++; break; - case SCC_SETXY: str += 2; break; - case SCC_TINYFONT: size = FS_SMALL; break; - case SCC_BIGFONT: size = FS_LARGE; break; - case '\n': goto end_of_inner_loop; - } - } - } -end_of_inner_loop: - /* String didn't fit on line (or a '\n' was encountered), so 'dummy' terminate - * and increase linecount. We use Utf8PrevChar() as also non 1 char long - * whitespace seperators are supported */ - num++; - char *s = Utf8PrevChar(str); - *s++ = '\0'; - - /* In which case (see above) we will shift remainder to left and close the gap */ - if (str - s >= 1) { - for (; str[-1] != '\0';) *s++ = *str++; - } - } + Layouter layout(str, maxw, TC_FROMSTRING, fontsize); + return layout.GetBounds().height; } - /** - * Calculates height of string (in pixels). Accepts multiline string with '\0' as separators. - * @param src string to check - * @param num number of extra lines (output of FormatStringLinebreaks()) - * @param start_fontsize Fontsize to start the text with - * @note assumes text won't be truncated. FormatStringLinebreaks() is a good way to ensure that. + * Calculates height of string (in pixels). The string is changed to a multiline string if needed. + * @param str string to check + * @param maxw maximum string width * @return height of pixels of string when it is drawn */ -static int GetMultilineStringHeight(const char *src, int num, FontSize start_fontsize) +int GetStringHeight(StringID str, int maxw) { - int maxy = 0; - int y = 0; - int fh = GetCharacterHeight(start_fontsize); - - for (;;) { - WChar c = Utf8Consume(&src); - - switch (c) { - case 0: y += fh; if (--num < 0) return maxy; break; - case '\n': y += fh; break; - case SCC_SETX: src++; break; - case SCC_SETXY: src++; y = (int)*src++; break; - case SCC_TINYFONT: fh = GetCharacterHeight(FS_SMALL); break; - case SCC_BIGFONT: fh = GetCharacterHeight(FS_LARGE); break; - default: maxy = max(maxy, y + fh); break; - } - } + char buffer[DRAW_STRING_BUFFER]; + GetString(buffer, str, lastof(buffer)); + return GetStringHeight(buffer, maxw); } - /** - * Calculates height of string (in pixels). The string is changed to a multiline string if needed. + * Calculates number of lines of string. The string is changed to a multiline string if needed. * @param str string to check * @param maxw maximum string width - * @return height of pixels of string when it is drawn + * @return number of lines of string when it is drawn */ -int GetStringHeight(StringID str, int maxw) +int GetStringLineCount(StringID str, int maxw) { char buffer[DRAW_STRING_BUFFER]; - GetString(buffer, str, lastof(buffer)); - uint32 tmp = FormatStringLinebreaks(buffer, lastof(buffer), maxw); - - return GetMultilineStringHeight(buffer, GB(tmp, 0, 16), FS_NORMAL); + Layouter layout(buffer, maxw); + return layout.Length(); } /** @@ -823,24 +592,6 @@ Dimension GetStringMultiLineBoundingBox(StringID str, const Dimension &suggestio return box; } - -/** - * Calculates height of string (in pixels). The string is changed to a multiline string if needed. - * @param str string to check - * @param maxw maximum string width - * @return height of pixels of string when it is drawn - */ -int GetStringHeight(const char *str, int maxw) -{ - char buffer[DRAW_STRING_BUFFER]; - - strecpy(buffer, str, lastof(buffer)); - - uint32 tmp = FormatStringLinebreaks(buffer, lastof(buffer), maxw); - - return GetMultilineStringHeight(buffer, GB(tmp, 0, 16), FS_NORMAL); -} - /** * Calculate string bounding box for multi-line strings. * @param str String to check. @@ -861,7 +612,6 @@ Dimension GetStringMultiLineBoundingBox(const char *str, const Dimension &sugges * @param top The top most position to draw on. * @param bottom The bottom most position to draw on. * @param str String to draw. - * @param last The end of the string buffer to draw. * @param colour Colour used for drawing the string, see DoDrawString() for details * @param align The horizontal and vertical alignment of the string. * @param underline Whether to underline all strings @@ -869,7 +619,7 @@ Dimension GetStringMultiLineBoundingBox(const char *str, const Dimension &sugges * * @return If \a align is #SA_BOTTOM, the top to where we have written, else the bottom to where we have written. */ -static int DrawStringMultiLine(int left, int right, int top, int bottom, char *str, const char *last, TextColour colour, StringAlignment align, bool underline, FontSize fontsize) +int DrawStringMultiLine(int left, int right, int top, int bottom, const char *str, TextColour colour, StringAlignment align, bool underline, FontSize fontsize) { int maxw = right - left + 1; int maxh = bottom - top + 1; @@ -878,25 +628,8 @@ static int DrawStringMultiLine(int left, int right, int top, int bottom, char *s * do we really want to support fonts of 0 or less pixels high? */ if (maxh <= 0) return top; - uint32 tmp = FormatStringLinebreaks(str, last, maxw); - int num = GB(tmp, 0, 16) + 1; - - int mt = GetCharacterHeight((FontSize)GB(tmp, 16, 16)); - int total_height = num * mt; - - int skip_lines = 0; - if (total_height > maxh) { - if (maxh < mt) return top; // Not enough room for a single line. - if ((align & SA_VERT_MASK) == SA_BOTTOM) { - skip_lines = num; - num = maxh / mt; - skip_lines -= num; - } else { - num = maxh / mt; - } - total_height = num * mt; - } - + Layouter layout(str, maxw, colour, fontsize); + int total_height = layout.GetBounds().height; int y; switch (align & SA_VERT_MASK) { case SA_TOP: @@ -914,66 +647,23 @@ static int DrawStringMultiLine(int left, int right, int top, int bottom, char *s default: NOT_REACHED(); } - const char *src = str; - DrawStringParams params(colour, fontsize); - int written_top = bottom; // Uppermost position of rendering a line of text - for (;;) { - if (skip_lines == 0) { - char buf2[DRAW_STRING_BUFFER]; - strecpy(buf2, src, lastof(buf2)); - DrawString(left, right, y, buf2, lastof(buf2), params, align, underline, false); - if (written_top > y) written_top = y; - y += mt; - num--; - } + int last_line = top; + int first_line = bottom; - for (;;) { - WChar c = Utf8Consume(&src); - if (c == 0) { - break; - } else if (c == SCC_SETX) { - src++; - } else if (c == SCC_SETXY) { - src += 2; - } else if (skip_lines > 0) { - /* Skipped drawing, so do additional processing to update params. */ - if (c >= SCC_BLUE && c <= SCC_BLACK) { - params.SetColour((TextColour)(c - SCC_BLUE)); - } else if (c == SCC_PREVIOUS_COLOUR) { // Revert to the previous colour. - params.SetPreviousColour(); - } else if (c == SCC_TINYFONT) { - params.SetFontSize(FS_SMALL); - } else if (c == SCC_BIGFONT) { - params.SetFontSize(FS_LARGE); - } + for (const ParagraphLayouter::Line **iter = layout.Begin(); iter != layout.End(); iter++) { + const ParagraphLayouter::Line *line = *iter; - } + int line_height = line->GetLeading(); + if (y >= top && y < bottom) { + last_line = y + line_height; + if (first_line > y) first_line = y; + + DrawLayoutLine(line, y, left, right, align, underline, false); } - if (skip_lines > 0) skip_lines--; - if (num == 0) return ((align & SA_VERT_MASK) == SA_BOTTOM) ? written_top : y; + y += line_height; } -} -/** - * Draw string, possibly over multiple lines. - * - * @param left The left most position to draw on. - * @param right The right most position to draw on. - * @param top The top most position to draw on. - * @param bottom The bottom most position to draw on. - * @param str String to draw. - * @param colour Colour used for drawing the string, see DoDrawString() for details - * @param align The horizontal and vertical alignment of the string. - * @param underline Whether to underline all strings - * @param fontsize The size of the initial characters. - * - * @return If \a align is #SA_BOTTOM, the top to where we have written, else the bottom to where we have written. - */ -int DrawStringMultiLine(int left, int right, int top, int bottom, const char *str, TextColour colour, StringAlignment align, bool underline, FontSize fontsize) -{ - char buffer[DRAW_STRING_BUFFER]; - strecpy(buffer, str, lastof(buffer)); - return DrawStringMultiLine(left, right, top, bottom, buffer, lastof(buffer), colour, align, underline, fontsize); + return ((align & SA_VERT_MASK) == SA_BOTTOM) ? first_line : last_line; } /** @@ -995,7 +685,7 @@ int DrawStringMultiLine(int left, int right, int top, int bottom, StringID str, { char buffer[DRAW_STRING_BUFFER]; GetString(buffer, str, lastof(buffer)); - return DrawStringMultiLine(left, right, top, bottom, buffer, lastof(buffer), colour, align, underline, fontsize); + return DrawStringMultiLine(left, right, top, bottom, buffer, colour, align, underline, fontsize); } /** @@ -1010,38 +700,8 @@ int DrawStringMultiLine(int left, int right, int top, int bottom, StringID str, */ Dimension GetStringBoundingBox(const char *str, FontSize start_fontsize) { - FontSize size = start_fontsize; - Dimension br; - uint max_width; - WChar c; - - br.width = br.height = max_width = 0; - for (;;) { - c = Utf8Consume(&str); - if (c == 0) break; - if (IsPrintable(c) && !IsTextDirectionChar(c)) { - br.width += GetCharacterWidth(size, c); - } else { - switch (c) { - case SCC_SETX: br.width = max((uint)*str++, br.width); break; - case SCC_SETXY: - br.width = max((uint)*str++, br.width); - br.height = max((uint)*str++, br.height); - break; - case SCC_TINYFONT: size = FS_SMALL; break; - case SCC_BIGFONT: size = FS_LARGE; break; - case '\n': - br.height += GetCharacterHeight(size); - if (br.width > max_width) max_width = br.width; - br.width = 0; - break; - } - } - } - br.height += GetCharacterHeight(size); - - br.width = max(br.width, max_width); - return br; + Layouter layout(str, INT32_MAX, TC_FROMSTRING, start_fontsize); + return layout.GetBounds(); } /** @@ -1058,6 +718,35 @@ Dimension GetStringBoundingBox(StringID strid) return GetStringBoundingBox(buffer); } +/** + * Get the leading corner of a character in a single-line string relative + * to the start of the string. + * @param str String containing the character. + * @param ch Pointer to the character in the string. + * @param start_fontsize Font size to start the text with. + * @return Upper left corner of the glyph associated with the character. + */ +Point GetCharPosInString(const char *str, const char *ch, FontSize start_fontsize) +{ + Layouter layout(str, INT32_MAX, TC_FROMSTRING, start_fontsize); + return layout.GetCharPosition(ch); +} + +/** + * Get the character from a string that is drawn at a specific position. + * @param str String to test. + * @param x Position relative to the start of the string. + * @param start_fontsize Font size to start the text with. + * @return Pointer to the character at the position or NULL if there is no character at the position. + */ +const char *GetCharAtPosition(const char *str, int x, FontSize start_fontsize) +{ + if (x < 0) return NULL; + + Layouter layout(str, INT32_MAX, TC_FROMSTRING, start_fontsize); + return layout.GetCharAtPosition(x); +} + /** * Draw single character horizontally centered around (x,y) * @param c Character (glyph) to draw @@ -1071,89 +760,6 @@ void DrawCharCentered(WChar c, int x, int y, TextColour colour) GfxMainBlitter(GetGlyph(FS_NORMAL, c), x - GetCharacterWidth(FS_NORMAL, c) / 2, y, BM_COLOUR_REMAP); } -/** - * Draw a string at the given coordinates with the given colour. - * While drawing the string, parse it in case some formatting is specified, - * like new colour, new size or even positionning. - * @param string The string to draw. This is already bidi reordered. - * @param x Offset from left side of the screen - * @param y Offset from top side of the screen - * @param params Text drawing parameters - * @param parse_string_also_when_clipped - * By default, always test the available space where to draw the string. - * When in multipline drawing, it would already be done, - * so no need to re-perform the same kind (more or less) of verifications. - * It's not only an optimisation, it's also a way to ensures the string will be parsed - * (as there are certain side effects on global variables, which are important for the next line) - * @return the x-coordinates where the drawing has finished. - * If nothing is drawn, the originally passed x-coordinate is returned - */ -static int ReallyDoDrawString(const UChar *string, int x, int y, DrawStringParams ¶ms, bool parse_string_also_when_clipped) -{ - DrawPixelInfo *dpi = _cur_dpi; - bool draw_shadow = GetDrawGlyphShadow(); - UChar c; - int xo = x; - - if (!parse_string_also_when_clipped) { - /* in "mode multiline", the available space have been verified. Not in regular one. - * So if the string cannot be drawn, return the original start to say so.*/ - if (x >= dpi->left + dpi->width || y >= dpi->top + dpi->height) return x; - } - -switch_colour:; - SetColourRemap(params.cur_colour); - -check_bounds: - if (y + _max_char_height <= dpi->top || dpi->top + dpi->height <= y) { -skip_char:; - for (;;) { - c = *string++; - if (!IsPrintable(c)) goto skip_cont; - } - } - - for (;;) { - c = *string++; -skip_cont:; - if (c == 0) { - return x; // Nothing more to draw, get out. And here is the new x position - } - if (IsPrintable(c) && !IsTextDirectionChar(c)) { - if (x >= dpi->left + dpi->width) goto skip_char; - if (x + _max_char_width >= dpi->left) { - const Sprite *glyph = GetGlyph(params.fontsize, c); - if (draw_shadow && params.fontsize == FS_NORMAL && params.cur_colour != TC_BLACK && !(c >= SCC_SPRITE_START && c <= SCC_SPRITE_END)) { - SetColourRemap(TC_BLACK); - GfxMainBlitter(glyph, x + 1, y + 1, BM_COLOUR_REMAP); - SetColourRemap(params.cur_colour); - } - GfxMainBlitter(glyph, x, y, BM_COLOUR_REMAP); - } - x += GetCharacterWidth(params.fontsize, c); - } else if (c == '\n') { // newline = {} - x = xo; // We require a new line, so the x coordinate is reset - y += GetCharacterHeight(params.fontsize); - goto check_bounds; - } else if (c >= SCC_BLUE && c <= SCC_BLACK) { // change colour? - params.SetColour((TextColour)(c - SCC_BLUE)); - goto switch_colour; - } else if (c == SCC_PREVIOUS_COLOUR) { // revert to the previous colour - params.SetPreviousColour(); - goto switch_colour; - } else if (c == SCC_SETX || c == SCC_SETXY) { // {SETX}/{SETXY} - /* The characters are handled before calling this. */ - NOT_REACHED(); - } else if (c == SCC_TINYFONT) { // {TINYFONT} - params.SetFontSize(FS_SMALL); - } else if (c == SCC_BIGFONT) { // {BIGFONT} - params.SetFontSize(FS_LARGE); - } else if (!IsTextDirectionChar(c)) { - DEBUG(misc, 0, "[utf8] unknown string command character %d", c); - } - } -} - /** * Get the size of a sprite. * @param sprid Sprite to examine. @@ -1192,7 +798,7 @@ void DrawSpriteViewport(SpriteID img, PaletteID pal, int x, int y, const SubSpri 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); + GfxMainBlitterViewport(GetSprite(real_sprite, ST_NORMAL), x, y, pal == PALETTE_CRASH ? BM_CRASH_REMAP : BM_COLOUR_REMAP, sub, real_sprite); } else { GfxMainBlitterViewport(GetSprite(real_sprite, ST_NORMAL), x, y, BM_NORMAL, sub, real_sprite); } @@ -1215,147 +821,70 @@ void DrawSprite(SpriteID img, PaletteID pal, int x, int y, const SubSprite *sub, 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); + GfxMainBlitter(GetSprite(real_sprite, ST_NORMAL), x, y, pal == PALETTE_CRASH ? BM_CRASH_REMAP : BM_COLOUR_REMAP, 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; - } 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; - } - - 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; + 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.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); - } - } + /* 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); } - 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; @@ -1367,37 +896,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; @@ -1408,7 +939,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); @@ -1422,7 +953,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(); @@ -1442,7 +983,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]; @@ -1455,7 +996,7 @@ void DoPaletteAnimations() } Colour *palette_pos = &_cur_palette.palette[PALETTE_ANIM_START]; // Points to where animations are taking place on the palette - /* Makes a copy of the current anmation palette in old_val, + /* Makes a copy of the current animation palette in old_val, * so the work on the current palette could be compared, see if there has been any changes */ memcpy(old_val, palette_pos, sizeof(old_val)); @@ -1568,23 +1109,9 @@ TextColour GetContrastColour(uint8 background) void LoadStringWidthTable(bool monospace) { for (FontSize fs = monospace ? FS_MONO : FS_BEGIN; fs < (monospace ? FS_END : FS_MONO); fs++) { - _max_char_size[fs].width = 0; - _max_char_size[fs].height = GetCharacterHeight(fs); for (uint i = 0; i != 224; i++) { _stringwidth_table[fs][i] = GetGlyphWidth(fs, i + 32); - _max_char_size[fs].width = max(_max_char_size[fs].width, _stringwidth_table[fs][i]); } - - /* Needed because they need to be 1 more than the widest. */ - _max_char_size[fs].width++; - _max_char_size[fs].height++; - } - - _max_char_width = 0; - _max_char_height = 0; - for (FontSize fs = FS_BEGIN; fs < FS_END; fs++) { - _max_char_width = max(_max_char_width, _max_char_size[fs].width); - _max_char_height = max(_max_char_height, _max_char_size[fs].height); } ReInitAllWindows(); @@ -1618,6 +1145,24 @@ byte GetDigitWidth(FontSize size) return width; } +/** + * Determine the broadest digits for guessing the maximum width of a n-digit number. + * @param [out] front Broadest digit, which is not 0. (Use this digit as first digit for numbers with more than one digit.) + * @param [out] next Broadest digit, including 0. (Use this digit for all digits, except the first one; or for numbers with only one digit.) + * @param size Font of the digit + */ +void GetBroadestDigit(uint *front, uint *next, FontSize size) +{ + int width = -1; + for (char c = '9'; c >= '0'; c--) { + int w = GetCharacterWidth(size, c); + if (w > width) { + width = w; + *next = c - '0'; + if (c != '0') *front = c - '0'; + } + } +} void ScreenSizeChanged() { @@ -1638,10 +1183,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); } } @@ -1655,7 +1200,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; @@ -1701,7 +1246,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; @@ -1725,7 +1270,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); } /** @@ -1837,7 +1382,7 @@ void DrawDirtyBlocks() * @param left The left edge of the rectangle * @param top The top edge of the rectangle * @param right The right edge of the rectangle - * @param bottom The bottm edge of the rectangle + * @param bottom The bottom edge of the rectangle * @see DrawDirtyBlocks * * @todo The name of the function should be called like @c AddDirtyBlock as @@ -1908,7 +1453,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; @@ -2034,12 +1579,12 @@ void SetAnimatedMouseCursor(const AnimCursor *table) 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 2425a4059..6576dee4f 100644 --- a/src/gfx_func.h +++ b/src/gfx_func.h @@ -26,10 +26,10 @@ * This whole mechanism is controlled by an rectangle defined in #_invalid_rect. This * rectangle defines the area on the screen which must be repaint. If a new object * needs to be repainted this rectangle is extended to 'catch' the object on the - * screen. At some point (which is normaly uninteressted for patch writers) this + * screen. At some point (which is normally uninteresting for patch writers) this * rectangle is send to the video drivers method * VideoDriver::MakeDirty and it is truncated back to an empty rectangle. At some - * later point (which is uninteressted, too) the video driver + * later point (which is uninteresting, too) the video driver * repaints all these saved rectangle instead of the whole screen and drop the * rectangle informations. Then a new round begins by marking objects "dirty". * @@ -44,6 +44,7 @@ #include "gfx_type.h" #include "strings_type.h" +#include "string_type.h" void GameLoop(); @@ -51,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? @@ -69,7 +71,8 @@ extern Dimension _resolutions[32]; extern Dimension _cur_resolution; extern Palette _cur_palette; ///< Current palette -void HandleKeypress(uint32 key); +void HandleKeypress(uint keycode, WChar key); +void HandleTextInput(const char *str, bool marked = false, const char *caret = NULL, const char *insert_location = NULL, const char *replacement_end = NULL); void HandleCtrlChanged(); void HandleMouseEvents(); void CSleep(int milliseconds); @@ -105,7 +108,6 @@ enum StringAlignment { SA_CENTER = SA_HOR_CENTER | SA_VERT_CENTER, ///< Center both horizontally and vertically. SA_FORCE = 1 << 4, ///< Force the alignment, i.e. don't swap for RTL languages. - SA_STRIP = 1 << 5, ///< Strip the SETX/SETXY commands from the string }; DECLARE_ENUM_AS_BIT_SET(StringAlignment) @@ -117,22 +119,26 @@ 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); -uint32 FormatStringLinebreaks(char *str, const char *last, int maxw, FontSize start_fontsize = FS_NORMAL); +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); Dimension GetStringMultiLineBoundingBox(const char *str, const Dimension &suggestion); void LoadStringWidthTable(bool monospace = false); +Point GetCharPosInString(const char *str, const char *ch, FontSize start_fontsize = FS_NORMAL); +const char *GetCharAtPosition(const char *str, int x, FontSize start_fontsize = FS_NORMAL); void DrawDirtyBlocks(); 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); @@ -150,18 +156,9 @@ bool ToggleFullScreen(bool fs); /* gfx.cpp */ byte GetCharacterWidth(FontSize size, uint32 key); byte GetDigitWidth(FontSize size = FS_NORMAL); +void GetBroadestDigit(uint *front, uint *next, FontSize size = FS_NORMAL); -/** - * Get height of a character for a given font size. - * @param size Font size to get height of - * @return Height of characters in the given font (pixels) - */ -static inline byte GetCharacterHeight(FontSize size) -{ - assert(size < FS_END); - extern int _font_height[FS_END]; - return _font_height[size]; -} +int GetCharacterHeight(FontSize size); /** Height of characters in the small (#FS_SMALL) font. */ #define FONT_HEIGHT_SMALL (GetCharacterHeight(FS_SMALL)) diff --git a/src/gfx_layout.cpp b/src/gfx_layout.cpp new file mode 100644 index 000000000..2dba6a204 --- /dev/null +++ b/src/gfx_layout.cpp @@ -0,0 +1,852 @@ +/* $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 gfx_layout.cpp Handling of laying out text. */ + +#include "stdafx.h" +#include "gfx_layout.h" +#include "string_func.h" +#include "strings_func.h" +#include "debug.h" + +#include "table/control_codes.h" + +#ifdef WITH_ICU +#include +#endif /* WITH_ICU */ + +#include "safeguards.h" + + +/** Cache of ParagraphLayout lines. */ +Layouter::LineCache *Layouter::linecache; + +/** Cache of Font instances. */ +Layouter::FontColourMap Layouter::fonts[FS_END]; + + +/** + * Construct a new font. + * @param size The font size to use for this font. + * @param colour The colour to draw this font in. + */ +Font::Font(FontSize size, TextColour colour) : + fc(FontCache::Get(size)), colour(colour) +{ + assert(size < FS_END); +} + +#ifdef WITH_ICU +/* Implementation details of LEFontInstance */ + +le_int32 Font::getUnitsPerEM() const +{ + return this->fc->GetUnitsPerEM(); +} + +le_int32 Font::getAscent() const +{ + return this->fc->GetAscender(); +} + +le_int32 Font::getDescent() const +{ + return -this->fc->GetDescender(); +} + +le_int32 Font::getLeading() const +{ + return this->fc->GetHeight(); +} + +float Font::getXPixelsPerEm() const +{ + return (float)this->fc->GetHeight(); +} + +float Font::getYPixelsPerEm() const +{ + return (float)this->fc->GetHeight(); +} + +float Font::getScaleFactorX() const +{ + return 1.0f; +} + +float Font::getScaleFactorY() const +{ + return 1.0f; +} + +const void *Font::getFontTable(LETag tableTag) const +{ + size_t length; + return this->getFontTable(tableTag, length); +} + +const void *Font::getFontTable(LETag tableTag, size_t &length) const +{ + return this->fc->GetFontTable(tableTag, length); +} + +LEGlyphID Font::mapCharToGlyph(LEUnicode32 ch) const +{ + if (IsTextDirectionChar(ch)) return 0; + return this->fc->MapCharToGlyph(ch); +} + +void Font::getGlyphAdvance(LEGlyphID glyph, LEPoint &advance) const +{ + advance.fX = glyph == 0xFFFF ? 0 : this->fc->GetGlyphWidth(glyph); + advance.fY = 0; +} + +le_bool Font::getGlyphPoint(LEGlyphID glyph, le_int32 pointNumber, LEPoint &point) const +{ + return FALSE; +} + +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; + UErrorCode err = U_ZERO_ERROR; + u_strFromUTF32(buff, buffer_last - buff, &length, (UChar32*)&c, 1, &err); + return length; +} + +/** + * 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; + + if (length == 0) { + /* ICU's ParagraphLayout cannot handle empty strings, so fake one. */ + buff[0] = ' '; + length = 1; + fontMapping.End()[-1].first++; + } + + /* Fill ICU's FontRuns with the right data. */ + FontRuns runs(fontMapping.Length()); + for (FontMap::iterator iter = fontMapping.Begin(); iter != fontMapping.End(); iter++) { + runs.add(iter->second, iter->first); + } + + 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. */ + 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); +} + +#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. + * @param font The font to use for this run. + * @param chars The characters to use for this run. + * @param char_count The number of characters in this run. + * @param x The initial x position for this run. + */ +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); + this->glyph_to_char = MallocT(this->glyph_count); + + /* Positions contains the location of the begin of each of the glyphs, and the end of the last one. */ + this->positions = MallocT(this->glyph_count * 2 + 2); + this->positions[0] = x; + this->positions[1] = 0; + + for (int i = 0; i < this->glyph_count; i++) { + this->glyphs[i] = font->fc->MapCharToGlyph(chars[i]); + this->positions[2 * i + 2] = this->positions[2 * i] + font->fc->GetGlyphWidth(this->glyphs[i]); + this->positions[2 * i + 3] = 0; + this->glyph_to_char[i] = i; + } +} + +/** Free all data. */ +FallbackParagraphLayout::FallbackVisualRun::~FallbackVisualRun() +{ + free(this->positions); + free(this->glyph_to_char); + free(this->glyphs); +} + +/** + * Get the font associated with this run. + * @return The font. + */ +const Font *FallbackParagraphLayout::FallbackVisualRun::GetFont() const +{ + return this->font; +} + +/** + * Get the number of glyphs in this run. + * @return The number of glyphs. + */ +int FallbackParagraphLayout::FallbackVisualRun::GetGlyphCount() const +{ + return this->glyph_count; +} + +/** + * Get the glyphs of this run. + * @return The glyphs. + */ +const GlyphID *FallbackParagraphLayout::FallbackVisualRun::GetGlyphs() const +{ + return this->glyphs; +} + +/** + * Get the positions of this run. + * @return The positions. + */ +const float *FallbackParagraphLayout::FallbackVisualRun::GetPositions() const +{ + return this->positions; +} + +/** + * Get the glyph-to-character map for this visual run. + * @return The glyph-to-character map. + */ +const int *FallbackParagraphLayout::FallbackVisualRun::GetGlyphToCharMap() const +{ + return this->glyph_to_char; +} + +/** + * Get the height of this font. + * @return The height of the font. + */ +int FallbackParagraphLayout::FallbackVisualRun::GetLeading() const +{ + return this->GetFont()->fc->GetHeight(); +} + +/** + * Get the height of the line. + * @return The maximum height of the line. + */ +int FallbackParagraphLayout::FallbackLine::GetLeading() const +{ + int leading = 0; + for (const FallbackVisualRun * const *run = this->Begin(); run != this->End(); run++) { + leading = max(leading, (*run)->GetLeading()); + } + + return leading; +} + +/** + * Get the width of this line. + * @return The width of the line. + */ +int FallbackParagraphLayout::FallbackLine::GetWidth() const +{ + if (this->Length() == 0) return 0; + + /* + * The last X position of a run contains is the end of that run. + * 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 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 FallbackParagraphLayout::FallbackLine::CountRuns() const +{ + return this->Length(); +} + +/** + * Get a specific visual run. + * @return The visual run. + */ +const ParagraphLayouter::VisualRun *FallbackParagraphLayout::FallbackLine::GetVisualRun(int run) const +{ + return *this->Get(run); +} + +/** + * Create a new paragraph layouter. + * @param buffer The characters of the paragraph. + * @param length The length of the paragraph. + * @param runs The font mapping of this paragraph. + */ +FallbackParagraphLayout::FallbackParagraphLayout(WChar *buffer, int length, FontMap &runs) : buffer_begin(buffer), buffer(buffer), runs(runs) +{ + assert(runs.End()[-1].first == length); +} + +/** + * Reset the position to the start of the paragraph. + */ +void FallbackParagraphLayout::Reflow() +{ + this->buffer = this->buffer_begin; +} + +/** + * Construct a new line with a maximum width. + * @param max_width The maximum width of the string. + * @return A Line, or NULL when at the end of the paragraph. + */ +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. + * - split for a visual run whenever a new line happens, or the font changes. + */ + if (this->buffer == NULL) return NULL; + + FallbackLine *l = new FallbackLine(); + + if (*this->buffer == '\0') { + /* Only a newline. */ + this->buffer = NULL; + *l->Append() = new FallbackVisualRun(this->runs.Begin()->second, this->buffer, 0, 0); + return l; + } + + const WChar *begin = this->buffer; + const WChar *last_space = NULL; + const WChar *last_char = begin; + int width = 0; + + int offset = this->buffer - this->buffer_begin; + FontMap::iterator iter = this->runs.Begin(); + while (iter->first <= offset) { + iter++; + assert(iter != this->runs.End()); + } + + const FontCache *fc = iter->second->fc; + const WChar *next_run = this->buffer_begin + iter->first; + + for (;;) { + WChar c = *this->buffer; + last_char = this->buffer; + + if (c == '\0') { + this->buffer = NULL; + break; + } + + if (this->buffer == next_run) { + int w = l->GetWidth(); + *l->Append() = new FallbackVisualRun(iter->second, begin, this->buffer - begin, w); + iter++; + assert(iter != this->runs.End()); + + next_run = this->buffer_begin + iter->first; + begin = this->buffer; + + last_space = NULL; + } + + if (IsWhitespace(c)) last_space = this->buffer; + + if (IsPrintable(c) && !IsTextDirectionChar(c)) { + int char_width = GetCharacterWidth(fc->GetSize(), c); + width += char_width; + if (width > max_width) { + /* The string is longer than maximum width so we need to decide + * what to do with it. */ + if (width == char_width) { + /* The character is wider than allowed width; don't know + * what to do with this case... bail out! */ + this->buffer = NULL; + return l; + } + + if (last_space == NULL) { + /* No space has been found. Just terminate at our current + * location. This usually happens for languages that do not + * require spaces in strings, like Chinese, Japanese and + * Korean. For other languages terminating mid-word might + * not be the best, but terminating the whole string instead + * of continuing the word at the next line is worse. */ + last_char = this->buffer; + } else { + /* A space is found; perfect place to terminate */ + this->buffer = last_space + 1; + last_char = last_space; + } + break; + } + } + + this->buffer++; + } + + if (l->Length() == 0 || last_char - begin != 0) { + int w = l->GetWidth(); + *l->Append() = new FallbackVisualRun(iter->second, begin, last_char - begin, w); + } + return l; +} + +/** + * Appand a wide character to the internal buffer. + * @param buff The buffer to append to. + * @param buffer_last The end of the buffer. + * @param c The character to add. + * @return The number of buffer spaces that were used. + */ +static size_t AppendToBuffer(WChar *buff, const WChar *buffer_last, WChar c) +{ + *buff = c; + return 1; +} + +/** + * Get the actual ParagraphLayout for the given buffer. + * @param buff The begin of the buffer. + * @param buff_end The location after the last element in the buffer. + * @param fontMapping THe mapping of the fonts. + * @return The ParagraphLayout instance. + */ +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) +{ + 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; +} + +/** + * Create a new layouter. + * @param str The string to create the layout for. + * @param maxw The maximum width. + * @param colour The colour of the font. + * @param fontsize The size of font to use. + */ +Layouter::Layouter(const char *str, int maxw, TextColour colour, FontSize fontsize) : string(str) +{ + FontState state(colour, fontsize); + WChar c = 0; + + do { + /* Scan string for end of line */ + const char *lineend = str; + for (;;) { + size_t len = Utf8Decode(&c, lineend); + if (c == '\0' || c == '\n') break; + lineend += len; + } + + LineCacheItem& line = GetCachedParagraphLayout(str, lineend - str, state); + if (line.layout != NULL) { + /* Line is in cache */ + str = lineend + 1; + state = line.state_after; + line.layout->Reflow(); + } else { + /* Line is new, layout it */ +#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; + } + + state = old_state; + str = old_str; + GetLayouter(line, str, state); + } +#else + GetLayouter(line, str, state); +#endif + } + + /* Copy all lines into a local cache so we can reuse them later on more easily. */ + const ParagraphLayouter::Line *l; + while ((l = line.layout->NextLine(maxw)) != NULL) { + *this->Append() = l; + } + + } while (c != '\0'); +} + +/** + * Get the boundaries of this paragraph. + * @return The boundaries. + */ +Dimension Layouter::GetBounds() +{ + Dimension d = { 0, 0 }; + for (const ParagraphLayouter::Line **l = this->Begin(); l != this->End(); l++) { + d.width = max(d.width, (*l)->GetWidth()); + d.height += (*l)->GetLeading(); + } + return d; +} + +/** + * Get the position of a character in the layout. + * @param ch Character to get the position of. + * @return Upper left corner of the character relative to the start of the string. + * @note Will only work right for single-line strings. + */ +Point Layouter::GetCharPosition(const char *ch) const +{ + /* Find the code point index which corresponds to the char + * pointer into our UTF-8 source string. */ + size_t index = 0; + const char *str = this->string; + while (str < ch) { + WChar c; + size_t len = Utf8Decode(&c, str); + if (c == '\0' || c == '\n') break; + str += len; + index += (*this->Begin())->GetInternalCharLength(c); + } + + if (str == ch) { + /* Valid character. */ + 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 }; + 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 ParagraphLayouter::VisualRun *run = line->GetVisualRun(run_index); + + 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] }; + return p; + } + } + } + } + + Point p = { 0, 0 }; + return p; +} + +/** + * Get the character that is at a position. + * @param x Position in the string. + * @return Pointer to the character at the position or NULL if no character is at the position. + */ +const char *Layouter::GetCharAtPosition(int x) const +{ + const ParagraphLayouter::Line *line = *this->Begin(); + + 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++) { + /* Not a valid glyph (empty). */ + if (run->GetGlyphs()[i] == 0xFFFF) continue; + + 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 cur_idx = 0; + for (const char *str = this->string; *str != '\0'; ) { + if (cur_idx == index) return str; + + WChar c = Utf8Consume(&str); + cur_idx += line->GetInternalCharLength(c); + } + } + } + } + + return NULL; +} + +/** + * Get a static font instance. + */ +Font *Layouter::GetFont(FontSize size, TextColour colour) +{ + FontColourMap::iterator it = fonts[size].Find(colour); + if (it != fonts[size].End()) return it->second; + + Font *f = new Font(size, colour); + *fonts[size].Append() = FontColourMap::Pair(colour, f); + return f; +} + +/** + * Reset cached font information. + * @param size Font size to reset. + */ +void Layouter::ResetFontCache(FontSize size) +{ + for (FontColourMap::iterator it = fonts[size].Begin(); it != fonts[size].End(); ++it) { + delete it->second; + } + fonts[size].Clear(); + + /* We must reset the linecache since it references the just freed fonts */ + ResetLineCache(); +} + +/** + * Get reference to cache item. + * If the item does not exist yet, it is default constructed. + * @param str Source string of the line (including colour and font size codes). + * @param len Length of \a str in bytes (no termination). + * @param state State of the font at the beginning of the line. + * @return Reference to cache item. + */ +Layouter::LineCacheItem &Layouter::GetCachedParagraphLayout(const char *str, size_t len, const FontState &state) +{ + if (linecache == NULL) { + /* Create linecache on first access to avoid trouble with initialisation order of static variables. */ + linecache = new LineCache(); + } + + LineCacheKey key; + key.state_before = state; + key.str.assign(str, len); + return (*linecache)[key]; +} + +/** + * Clear line cache. + */ +void Layouter::ResetLineCache() +{ + if (linecache != NULL) linecache->clear(); +} + +/** + * Reduce the size of linecache if necessary to prevent infinite growth. + */ +void Layouter::ReduceLineCache() +{ + if (linecache != NULL) { + /* TODO LRU cache would be fancy, but not exactly necessary */ + if (linecache->size() > 4096) ResetLineCache(); + } +} diff --git a/src/gfx_layout.h b/src/gfx_layout.h new file mode 100644 index 000000000..7cd70ce28 --- /dev/null +++ b/src/gfx_layout.h @@ -0,0 +1,190 @@ +/* $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 gfx_layout.h Functions related to laying out the texts. */ + +#ifndef GFX_LAYOUT_H +#define GFX_LAYOUT_H + +#include "fontcache.h" +#include "gfx_func.h" +#include "core/smallmap_type.hpp" + +#include +#include + +#ifdef WITH_ICU +#include "layout/ParagraphLayout.h" +#define ICU_FONTINSTANCE : public LEFontInstance +#else /* WITH_ICU */ +#define ICU_FONTINSTANCE +#endif /* WITH_ICU */ + +/** + * Text drawing parameters, which can change while drawing a line, but are kept between multiple parts + * of the same text, e.g. on line breaks. + */ +struct FontState { + FontSize fontsize; ///< Current font size. + TextColour cur_colour; ///< Current text colour. + TextColour prev_colour; ///< Text colour from before the last colour switch. + + FontState() : fontsize(FS_END), cur_colour(TC_INVALID), prev_colour(TC_INVALID) {} + FontState(TextColour colour, FontSize fontsize) : fontsize(fontsize), cur_colour(colour), prev_colour(colour) {} + + /** + * Switch to new colour \a c. + * @param c New colour to use. + */ + inline void SetColour(TextColour c) + { + assert(c >= TC_BLUE && c <= TC_BLACK); + this->prev_colour = this->cur_colour; + this->cur_colour = c; + } + + /** Switch to previous colour. */ + inline void SetPreviousColour() + { + Swap(this->cur_colour, this->prev_colour); + } + + /** + * Switch to using a new font \a f. + * @param f New font to use. + */ + inline void SetFontSize(FontSize f) + { + this->fontsize = f; + } +}; + +/** + * Container with information about a font. + */ +class Font ICU_FONTINSTANCE { +public: + FontCache *fc; ///< The font we are using. + TextColour colour; ///< The colour this font has to be. + + Font(FontSize size, TextColour colour); + +#ifdef WITH_ICU + /* Implementation details of LEFontInstance */ + + le_int32 getUnitsPerEM() const; + le_int32 getAscent() const; + le_int32 getDescent() const; + le_int32 getLeading() const; + float getXPixelsPerEm() const; + float getYPixelsPerEm() const; + float getScaleFactorX() const; + float getScaleFactorY() const; + const void *getFontTable(LETag tableTag) const; + const void *getFontTable(LETag tableTag, size_t &length) const; + LEGlyphID mapCharToGlyph(LEUnicode32 ch) const; + void getGlyphAdvance(LEGlyphID glyph, LEPoint &advance) const; + le_bool getGlyphPoint(LEGlyphID glyph, le_int32 pointNumber, LEPoint &point) const; +#endif /* WITH_ICU */ +}; + +/** Mapping from index to font. */ +typedef SmallMap FontMap; + +/** + * Interface to glue fallback and normal layouter into one. + */ +class ParagraphLayouter { +public: + virtual ~ParagraphLayouter() {} + + /** Visual run contains data about the bit of text with the same font. */ + class VisualRun { + public: + 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: + 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; + }; + + virtual void Reflow() = 0; + virtual const Line *NextLine(int max_width) = 0; +}; + +/** + * The layouter performs all the layout work. + * + * It also accounts for the memory allocations and frees. + */ +class Layouter : public AutoDeleteSmallVector { + const char *string; ///< Pointer to the original string. + + /** Key into the linecache */ + struct LineCacheKey { + FontState state_before; ///< Font state at the beginning of the line. + std::string str; ///< Source string of the line (including colour and font size codes). + + /** Comparison operator for std::map */ + bool operator<(const LineCacheKey &other) const + { + if (this->state_before.fontsize != other.state_before.fontsize) return this->state_before.fontsize < other.state_before.fontsize; + if (this->state_before.cur_colour != other.state_before.cur_colour) return this->state_before.cur_colour < other.state_before.cur_colour; + if (this->state_before.prev_colour != other.state_before.prev_colour) return this->state_before.prev_colour < other.state_before.prev_colour; + return this->str < other.str; + } + }; +public: + /** Item in the linecache */ + struct LineCacheItem { + /* Stuff that cannot be freed until the ParagraphLayout is freed */ + 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. + ParagraphLayouter *layout; ///< Layout of the line. + + LineCacheItem() : buffer(NULL), layout(NULL) {} + ~LineCacheItem() { delete layout; free(buffer); } + }; +private: + typedef std::map LineCache; + static LineCache *linecache; + + static LineCacheItem &GetCachedParagraphLayout(const char *str, size_t len, const FontState &state); + + typedef SmallMap FontColourMap; + static FontColourMap fonts[FS_END]; +public: + static Font *GetFont(FontSize size, TextColour colour); + + Layouter(const char *str, int maxw = INT32_MAX, TextColour colour = TC_FROMSTRING, FontSize fontsize = FS_NORMAL); + Dimension GetBounds(); + Point GetCharPosition(const char *ch) const; + const char *GetCharAtPosition(int x) const; + + static void ResetFontCache(FontSize size); + static void ResetLineCache(); + static void ReduceLineCache(); +}; + +#endif /* GFX_LAYOUT_H */ diff --git a/src/gfx_type.h b/src/gfx_type.h index 2b792d090..0633bdd52 100644 --- a/src/gfx_type.h +++ b/src/gfx_type.h @@ -300,4 +300,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 50efd9ad8..72ded8f76 100644 --- a/src/gfxinit.cpp +++ b/src/gfxinit.cpp @@ -15,6 +15,7 @@ #include "3rdparty/md5/md5.h" #include "fontcache.h" #include "gfx_func.h" +#include "transparency.h" #include "blitter/factory.hpp" #include "video/video_driver.hpp" @@ -24,6 +25,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 +228,82 @@ 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(); } /** Initialise and load all the sprites. */ @@ -352,7 +408,7 @@ template const Tbase_set *best = NULL; for (const Tbase_set *c = BaseMedia::available_sets; c != NULL; c = c->next) { - /* Skip unuseable sets */ + /* Skip unusable sets */ if (c->GetNumMissing() != 0) continue; if (best == NULL || diff --git a/src/goal.cpp b/src/goal.cpp index 59edec787..2f6ca242a 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,9 +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; } @@ -106,14 +123,110 @@ 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(); } +/** + * Update goal text of a goal. + * @param tile unused. + * @param flags type of operation + * @param p1 GoalID to update. + * @param p2 unused + * @param text Text of the goal. + * @return the cost of this operation or an error + */ +CommandCost CmdSetGoalText(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) +{ + if (_current_company != OWNER_DEITY) return CMD_ERROR; + if (!Goal::IsValidID(p1)) return CMD_ERROR; + if (StrEmpty(text)) return CMD_ERROR; + + if (flags & DC_EXEC) { + Goal *g = Goal::Get(p1); + free(g->text); + g->text = stredup(text); + + if (g->company == INVALID_COMPANY) { + InvalidateWindowClassesData(WC_GOALS_LIST); + } else { + InvalidateWindowData(WC_GOALS_LIST, g->company); + } + } + + return CommandCost(); +} + +/** + * Update progress text of a goal. + * @param tile unused. + * @param flags type of operation + * @param p1 GoalID to update. + * @param p2 unused + * @param text Progress text of the goal. + * @return the cost of this operation or an error + */ +CommandCost CmdSetGoalProgress(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) +{ + if (_current_company != OWNER_DEITY) return CMD_ERROR; + if (!Goal::IsValidID(p1)) return CMD_ERROR; + + if (flags & DC_EXEC) { + Goal *g = Goal::Get(p1); + free(g->progress); + if (StrEmpty(text)) { + g->progress = NULL; + } else { + g->progress = stredup(text); + } + + if (g->company == INVALID_COMPANY) { + InvalidateWindowClassesData(WC_GOALS_LIST); + } else { + InvalidateWindowData(WC_GOALS_LIST, g->company); + } + } + + return CommandCost(); +} + +/** + * Update completed state of a goal. + * @param tile unused. + * @param flags type of operation + * @param p1 GoalID to update. + * @param p2 completed state. If goal is completed, set to 1, otherwise 0. + * @param text unused + * @return the cost of this operation or an error + */ +CommandCost CmdSetGoalCompleted(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) +{ + if (_current_company != OWNER_DEITY) return CMD_ERROR; + if (!Goal::IsValidID(p1)) return CMD_ERROR; + + if (flags & DC_EXEC) { + Goal *g = Goal::Get(p1); + g->completed = p2 == 1; + + if (g->company == INVALID_COMPANY) { + InvalidateWindowClassesData(WC_GOALS_LIST); + } else { + InvalidateWindowData(WC_GOALS_LIST, g->company); + } + } + + return CommandCost(); +} /** * Ask a goal related question diff --git a/src/goal_base.h b/src/goal_base.h index 6afbbd28b..7453196c8 100644 --- a/src/goal_base.h +++ b/src/goal_base.h @@ -16,15 +16,17 @@ #include "goal_type.h" #include "core/pool_type.hpp" -typedef Pool GoalPool; +typedef Pool GoalPool; extern GoalPool _goal_pool; -/** Struct about subsidies, offered and awarded */ +/** Struct about goals, current and completed */ struct Goal : GoalPool::PoolItem<&_goal_pool> { CompanyByte company; ///< Goal is for a specific company; INVALID_COMPANY if it is global GoalTypeByte type; ///< Type of the goal GoalTypeID dst; ///< Index of type char *text; ///< Text of the goal. + char *progress; ///< Progress text of the goal. + bool completed; ///< Is the goal completed or not? /** * We need an (empty) constructor so struct isn't zeroed (as C++ standard states) @@ -34,7 +36,7 @@ struct Goal : GoalPool::PoolItem<&_goal_pool> { /** * (Empty) destructor has to be defined else operator delete might be called with NULL parameter */ - inline ~Goal() { free(this->text); } + inline ~Goal() { free(this->text); free(this->progress); } }; #define FOR_ALL_GOALS_FROM(var, start) FOR_ALL_ITEMS_FROM(Goal, goal_index, var, start) diff --git a/src/goal_gui.cpp b/src/goal_gui.cpp index cf0e63398..f98189d18 100644 --- a/src/goal_gui.cpp +++ b/src/goal_gui.cpp @@ -20,28 +20,53 @@ #include "goal_base.h" #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" -struct GoalListWindow : Window { - Scrollbar *vscroll; +#include "safeguards.h" - GoalListWindow(const WindowDesc *desc, WindowNumber window_number) : Window() +/** Goal list columns. */ +enum GoalColumn { + GC_GOAL = 0, ///< Goal text column. + GC_PROGRESS, ///< Goal progress column. +}; + +/** Window for displaying goals. */ +struct GoalListWindow : public Window { + Scrollbar *vscroll; ///< Reference to the scrollbar widget. + + GoalListWindow(WindowDesc *desc, WindowNumber window_number) : Window(desc) { - this->CreateNestedTree(desc); - this->vscroll = this->GetScrollbar(WID_GL_SCROLLBAR); - this->FinishInitNested(desc, window_number); + this->CreateNestedTree(); + this->vscroll = this->GetScrollbar(WID_GOAL_SCROLLBAR); + this->FinishInitNested(window_number); + this->owner = (Owner)this->window_number; this->OnInvalidateData(0); } - virtual void OnClick(Point pt, int widget, int click_count) + /* virtual */ void SetStringParameters(int widget) const + { + if (widget != WID_GOAL_CAPTION) return; + + if (this->window_number == INVALID_COMPANY) { + SetDParam(0, STR_GOALS_SPECTATOR_CAPTION); + } else { + SetDParam(0, STR_GOALS_CAPTION); + SetDParam(1, this->window_number); + } + } + + /* virtual */ void OnClick(Point pt, int widget, int click_count) { - if (widget != WID_GL_PANEL) return; + if (widget != WID_GOAL_LIST) return; - int y = this->vscroll->GetScrolledRowFromWidget(pt.y, this, WID_GL_PANEL, WD_FRAMERECT_TOP); + int y = this->vscroll->GetScrolledRowFromWidget(pt.y, this, WID_GOAL_LIST, WD_FRAMERECT_TOP); int num = 0; const Goal *s; FOR_ALL_GOALS(s) { @@ -56,15 +81,15 @@ struct GoalListWindow : Window { } if (num == 0) { - y--; // "None" + y--; // "None" line. if (y < 0) return; } - y -= 2; // "Company specific goals:" + y -= 2; // "Company specific goals:" line. if (y < 0) return; FOR_ALL_GOALS(s) { - if (s->company == _local_company) { + if (s->company == this->window_number) { y--; if (y == 0) { this->HandleClick(s); @@ -74,9 +99,13 @@ struct GoalListWindow : Window { } } + /** + * Handle clicking at a goal. + * @param s @Goal clicked at. + */ void HandleClick(const Goal *s) { - /* determine dst coordinate for goal and try to scroll to it */ + /* Determine dst coordinate for goal and try to scroll to it. */ TileIndex xy; switch (s->type) { case GT_NONE: return; @@ -97,6 +126,21 @@ struct GoalListWindow : 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(); } @@ -109,23 +153,23 @@ struct GoalListWindow : Window { /** * Count the number of lines in this window. - * @return the number of lines + * @return the number of lines. */ uint CountLines() { - /* Count number of (non) awarded goals */ + /* Count number of (non) awarded goals. */ uint num_global = 0; uint num_company = 0; const Goal *s; FOR_ALL_GOALS(s) { if (s->company == INVALID_COMPANY) { num_global++; - } else if (s->company == _local_company) { + } else if (s->company == this->window_number) { num_company++; } } - /* Count the 'none' lines */ + /* Count the 'none' lines. */ if (num_global == 0) num_global = 1; if (num_company == 0) num_company = 1; @@ -133,9 +177,9 @@ struct GoalListWindow : Window { return 3 + num_global + num_company; } - virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) + /* virtual */ void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) { - if (widget != WID_GL_PANEL) return; + if (widget != WID_GOAL_LIST) return; Dimension d = maxdim(GetStringBoundingBox(STR_GOALS_GLOBAL_TITLE), GetStringBoundingBox(STR_GOALS_COMPANY_TITLE)); resize->height = d.height; @@ -148,21 +192,46 @@ struct GoalListWindow : Window { /** * Draws either the global goals or the company goal section. - * This is a helper method for DrawWidget. + * This is a helper method for #DrawWidget. + * @param pos [inout] Vertical line number to draw. + * @param cap Number of lines to draw in the window. + * @param x Left edge of the text line to draw. + * @param y Vertical position of the top edge of the window. + * @param right Right edge of the text line to draw. + * @param global_section Whether the global goals are printed. + * @param column Which column to draw. */ - void DrawPartialGoalList(int &pos, const int cap, int x, int y, int right, bool global_section) const + void DrawPartialGoalList(int &pos, const int cap, int x, int y, int right, uint progress_col_width, bool global_section, GoalColumn column) const { - if (IsInsideMM(pos, 0, cap)) DrawString(x, right, y + pos * FONT_HEIGHT_NORMAL, global_section ? STR_GOALS_GLOBAL_TITLE : STR_GOALS_COMPANY_TITLE); + if (column == GC_GOAL && IsInsideMM(pos, 0, cap)) DrawString(x, right, y + pos * FONT_HEIGHT_NORMAL, global_section ? STR_GOALS_GLOBAL_TITLE : STR_GOALS_COMPANY_TITLE); pos++; + bool rtl = _current_text_dir == TD_RTL; + uint num = 0; const Goal *s; FOR_ALL_GOALS(s) { - if (global_section ? s->company == INVALID_COMPANY : s->company == _local_company && s->company != INVALID_COMPANY) { + if (global_section ? s->company == INVALID_COMPANY : (s->company == this->window_number && s->company != INVALID_COMPANY)) { if (IsInsideMM(pos, 0, cap)) { - /* Display the goal */ - SetDParamStr(0, s->text); - DrawString(x, right, y + pos * FONT_HEIGHT_NORMAL, STR_GOALS_TEXT); + switch (column) { + case GC_GOAL: { + /* Display the goal. */ + SetDParamStr(0, s->text); + uint width_reduction = progress_col_width > 0 ? progress_col_width + WD_FRAMERECT_LEFT + WD_FRAMERECT_RIGHT : 0; + DrawString(x + (rtl ? width_reduction : 0), right - (rtl ? 0 : width_reduction), y + pos * FONT_HEIGHT_NORMAL, STR_GOALS_TEXT); + break; + } + + case GC_PROGRESS: + if (s->progress != NULL) { + SetDParamStr(0, s->progress); + StringID str = s->completed ? STR_GOALS_PROGRESS_COMPLETE : STR_GOALS_PROGRESS; + int progress_x = x; + int progress_right = rtl ? x + progress_col_width : right; + DrawString(progress_x, progress_right, y + pos * FONT_HEIGHT_NORMAL, str, TC_FROMSTRING, SA_RIGHT | SA_FORCE); + } + break; + } } pos++; num++; @@ -170,36 +239,69 @@ struct GoalListWindow : Window { } if (num == 0) { - if (IsInsideMM(pos, 0, cap)) DrawString(x, right, y + pos * FONT_HEIGHT_NORMAL, STR_GOALS_NONE); + 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); + } pos++; } } - virtual void DrawWidget(const Rect &r, int widget) const + /** + * Draws a given column of the goal list. + * @param column Which column to draw. + * @wid Pointer to the goal list widget. + * @progress_col_width Width of the progress column. + * @return max width of drawn text + */ + void DrawListColumn(GoalColumn column, NWidgetBase *wid, uint progress_col_width) const { - if (widget != WID_GL_PANEL) return; - - YearMonthDay ymd; - ConvertDateToYMD(_date, &ymd); - - int right = r.right - WD_FRAMERECT_RIGHT; - int y = r.top + WD_FRAMERECT_TOP; - int x = r.left + WD_FRAMERECT_LEFT; + /* Get column draw area. */ + int y = wid->pos_y + WD_FRAMERECT_TOP; + int x = wid->pos_x + WD_FRAMERECT_LEFT; + int right = x + wid->current_x - WD_FRAMERECT_RIGHT; int pos = -this->vscroll->GetPosition(); const int cap = this->vscroll->GetCapacity(); - /* Draw partial list with global goals */ - DrawPartialGoalList(pos, cap, x, y, right, true); + /* Draw partial list with global goals. */ + DrawPartialGoalList(pos, cap, x, y, right, progress_col_width, true, column); - /* Draw partial list with company goals */ + /* Draw partial list with company goals. */ pos++; - DrawPartialGoalList(pos, cap, x, y, right, false); + DrawPartialGoalList(pos, cap, x, y, right, progress_col_width, false, column); } - virtual void OnResize() + /* virtual */ void OnPaint() { - this->vscroll->SetCapacityFromWidget(this, WID_GL_PANEL); + 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; + FOR_ALL_GOALS(s) { + if (s->progress != NULL) { + SetDParamStr(0, s->progress); + StringID str = s->completed ? STR_GOALS_PROGRESS_COMPLETE : STR_GOALS_PROGRESS; + uint str_width = GetStringBoundingBox(str).width; + if (str_width > max_width) max_width = str_width; + } + } + + NWidgetBase *wid = this->GetWidget(WID_GOAL_LIST); + uint progress_col_width = min(max_width, wid->current_x); + + /* Draw goal list. */ + this->DrawListColumn(GC_PROGRESS, wid, progress_col_width); + this->DrawListColumn(GC_GOAL, wid, progress_col_width); + + } + + /* virtual */ void OnResize() + { + this->vscroll->SetCapacityFromWidget(this, WID_GOAL_LIST); } /** @@ -207,55 +309,65 @@ struct GoalListWindow : Window { * @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) + /* virtual */ void OnInvalidateData(int data = 0, bool gui_scope = true) { if (!gui_scope) return; this->vscroll->SetCount(this->CountLines()); + this->SetWidgetDirty(WID_GOAL_LIST); } }; +/** Widgets of the #GoalListWindow. */ static const NWidgetPart _nested_goals_list_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_BROWN), - NWidget(WWT_CAPTION, COLOUR_BROWN), SetDataTip(STR_GOALS_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_CAPTION, COLOUR_BROWN, WID_GOAL_CAPTION), SetDataTip(STR_JUST_STRING, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), NWidget(WWT_SHADEBOX, COLOUR_BROWN), + NWidget(WWT_DEFSIZEBOX, COLOUR_BROWN), NWidget(WWT_STICKYBOX, COLOUR_BROWN), EndContainer(), NWidget(NWID_HORIZONTAL), - NWidget(WWT_PANEL, COLOUR_BROWN, WID_GL_PANEL), SetDataTip(0x0, STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER), SetResize(1, 1), SetScrollbar(WID_GL_SCROLLBAR), EndContainer(), + NWidget(WWT_PANEL, COLOUR_BROWN), SetDataTip(0x0, STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER), SetScrollbar(WID_GOAL_SCROLLBAR), + NWidget(WWT_EMPTY, COLOUR_GREY, WID_GOAL_LIST), SetResize(1, 1), SetMinimalTextLines(2, 0), SetFill(1, 1), SetPadding(WD_FRAMERECT_TOP, 2, WD_FRAMETEXT_BOTTOM, 2), + EndContainer(), NWidget(NWID_VERTICAL), - NWidget(NWID_VSCROLLBAR, COLOUR_BROWN, WID_GL_SCROLLBAR), + NWidget(NWID_VSCROLLBAR, COLOUR_BROWN, WID_GOAL_SCROLLBAR), NWidget(WWT_RESIZEBOX, COLOUR_BROWN), EndContainer(), EndContainer(), }; -static const WindowDesc _goals_list_desc( - WDP_AUTO, 500, 127, +static WindowDesc _goals_list_desc( + WDP_AUTO, "list_goals", 500, 127, WC_GOALS_LIST, WC_NONE, 0, _nested_goals_list_widgets, lengthof(_nested_goals_list_widgets) ); -void ShowGoalsList() +/** + * Open a goal list window. + * @param company %Company to display the goals for, use #INVALID_COMPANY to display global goals. + */ +void ShowGoalsList(CompanyID company) { - AllocateWindowDescFront(&_goals_list_desc, 0); -} - + if (!Company::IsValidID(company)) company = (CompanyID)INVALID_COMPANY; + AllocateWindowDescFront(&_goals_list_desc, company); +} -struct GoalQuestionWindow : Window { - char *question; - int buttons; - int button[3]; - byte type; +/** Ask a question about a goal. */ +struct GoalQuestionWindow : public Window { + char *question; ///< Question to ask (private copy). + int buttons; ///< Number of valid buttons in #button. + int button[3]; ///< Buttons to display. + byte type; ///< Type of question. - GoalQuestionWindow(const WindowDesc *desc, WindowNumber window_number, byte type, uint32 button_mask, const char *question) : Window(), type(type) + 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 */ + /* Figure out which buttons we have to enable. */ uint bit; int n = 0; FOR_EACH_SET_BIT(bit, button_mask) { @@ -266,9 +378,9 @@ struct GoalQuestionWindow : Window { this->buttons = n; assert(this->buttons > 0 && this->buttons < 4); - this->CreateNestedTree(desc); + this->CreateNestedTree(); this->GetWidget(WID_GQ_BUTTONS)->SetDisplayedPlane(this->buttons - 1); - this->FinishInitNested(desc, window_number); + this->FinishInitNested(window_number); } ~GoalQuestionWindow() @@ -276,7 +388,7 @@ struct GoalQuestionWindow : Window { free(this->question); } - virtual void SetStringParameters(int widget) const + /* virtual */ void SetStringParameters(int widget) const { switch (widget) { case WID_GQ_CAPTION: @@ -297,7 +409,7 @@ struct GoalQuestionWindow : Window { } } - virtual void OnClick(Point pt, int widget, int click_count) + /* virtual */ void OnClick(Point pt, int widget, int click_count) { switch (widget) { case WID_GQ_BUTTON_1: @@ -317,7 +429,7 @@ struct GoalQuestionWindow : Window { } } - virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) + /* virtual */ void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) { if (widget != WID_GQ_QUESTION) return; @@ -325,7 +437,7 @@ struct GoalQuestionWindow : Window { size->height = GetStringHeight(STR_JUST_RAW_STRING, size->width) + WD_PAR_VSEP_WIDE; } - virtual void DrawWidget(const Rect &r, int widget) const + /* virtual */ void DrawWidget(const Rect &r, int widget) const { if (widget != WID_GQ_QUESTION) return; @@ -334,6 +446,7 @@ struct GoalQuestionWindow : Window { } }; +/** Widgets of the goal question window. */ static const NWidgetPart _nested_goal_question_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_LIGHT_BLUE), @@ -359,14 +472,20 @@ static const NWidgetPart _nested_goal_question_widgets[] = { EndContainer(), }; -static const WindowDesc _goal_question_list_desc( - WDP_CENTER, 0, 0, +static WindowDesc _goal_question_list_desc( + WDP_CENTER, NULL, 0, 0, WC_GOAL_QUESTION, WC_NONE, WDF_CONSTRUCTION, _nested_goal_question_widgets, lengthof(_nested_goal_question_widgets) ); - +/** + * Display a goal question. + * @param id Window number to use. + * @param type Type of question. + * @param button_mask Buttons to display. + * @param question Question to ask. + */ void ShowGoalQuestion(uint16 id, byte type, uint32 button_mask, const char *question) { new GoalQuestionWindow(&_goal_question_list_desc, id, type, button_mask, question); diff --git a/src/goal_type.h b/src/goal_type.h index 75b4c13f6..aa9dee349 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 82d862d33..c12c6ace4 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; @@ -43,9 +45,9 @@ static const uint INVALID_DATAPOINT_POS = UINT_MAX; // Used to determine if the /****************/ struct GraphLegendWindow : Window { - GraphLegendWindow(const WindowDesc *desc, WindowNumber window_number) : Window() + GraphLegendWindow(WindowDesc *desc, WindowNumber window_number) : Window(desc) { - this->InitNested(desc, window_number); + this->InitNested(window_number); for (CompanyID c = COMPANY_FIRST; c < MAX_COMPANIES; c++) { if (!HasBit(_legend_excluded_companies, c)) this->LowerWidget(c + WID_GL_FIRST_COMPANY); @@ -140,8 +142,8 @@ static const NWidgetPart _nested_graph_legend_widgets[] = { EndContainer(), }; -static const WindowDesc _graph_legend_desc( - WDP_AUTO, 0, 0, +static WindowDesc _graph_legend_desc( + WDP_AUTO, "graph_legend", 0, 0, WC_GRAPH_LEGEND, WC_NONE, 0, _nested_graph_legend_widgets, lengthof(_nested_graph_legend_widgets) @@ -200,6 +202,8 @@ struct BaseGraphWindow : Window { */ 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; @@ -285,7 +289,7 @@ struct BaseGraphWindow : Window { ValuesInterval interval; ///< Interval that contains all of the graph data. int x_axis_offset; ///< Distance from the top of the graph to the x axis. - /* the colours and cost array of GraphDrawer must accomodate + /* the colours and cost array of GraphDrawer must accommodate * both values for cargo and companies. So if any are higher, quit */ assert_compile(GRAPH_MAX_DATASETS >= (int)NUM_CARGO && GRAPH_MAX_DATASETS >= (int)MAX_COMPANIES); assert(this->num_vert_lines > 0); @@ -423,7 +427,7 @@ struct BaseGraphWindow : Window { if (datapoint != INVALID_DATAPOINT) { /* * Check whether we need to reduce the 'accuracy' of the - * datapoint value and the highest value to splut overflows. + * datapoint value and the highest value to split overflows. * And when 'drawing' 'one million' or 'one million and one' * there is no significant difference, so the least * significant bits can just be removed. @@ -463,8 +467,8 @@ struct BaseGraphWindow : Window { } - BaseGraphWindow(int widget, StringID format_str_y_axis) : - Window(), + BaseGraphWindow(WindowDesc *desc, int widget, StringID format_str_y_axis) : + Window(desc), format_str_y_axis(format_str_y_axis) { SetWindowDirty(WC_GRAPH_LEGEND, 0); @@ -472,12 +476,12 @@ struct BaseGraphWindow : Window { this->graph_widget = widget; } - void InitializeWindow(const WindowDesc *desc, WindowNumber number) + void InitializeWindow(WindowNumber number) { /* Initialise the dataset */ this->UpdateStatistics(true); - this->InitNested(desc, number); + this->InitNested(number); } public: @@ -504,7 +508,7 @@ struct BaseGraphWindow : Window { } } else { /* Draw the label under the data point rather than on the grid line. */ - SetDParamMaxValue(0, this->x_values_start + this->num_on_x_axis * this->x_values_increment); + SetDParamMaxValue(0, this->x_values_start + this->num_on_x_axis * this->x_values_increment, 0, FS_SMALL); x_label_width = GetStringBoundingBox(STR_GRAPH_Y_LABEL_NUMBER).width; } @@ -611,10 +615,10 @@ struct BaseGraphWindow : Window { /********************/ struct OperatingProfitGraphWindow : BaseGraphWindow { - OperatingProfitGraphWindow(const WindowDesc *desc, WindowNumber window_number) : - BaseGraphWindow(WID_CV_GRAPH, STR_JUST_CURRENCY_SHORT) + OperatingProfitGraphWindow(WindowDesc *desc, WindowNumber window_number) : + BaseGraphWindow(desc, WID_CV_GRAPH, STR_JUST_CURRENCY_SHORT) { - this->InitializeWindow(desc, window_number); + this->InitializeWindow(window_number); } virtual OverflowSafeInt64 GetGraphData(const Company *c, int j) @@ -629,6 +633,7 @@ static const NWidgetPart _nested_operating_profit_widgets[] = { NWidget(WWT_CAPTION, COLOUR_GREY), SetDataTip(STR_GRAPH_OPERATING_PROFIT_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_CV_KEY_BUTTON), SetMinimalSize(50, 0), SetMinimalTextLines(1, WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM + 2), SetDataTip(STR_GRAPH_KEY_BUTTON, STR_GRAPH_KEY_TOOLTIP), NWidget(WWT_SHADEBOX, COLOUR_GREY), + NWidget(WWT_DEFSIZEBOX, COLOUR_GREY), NWidget(WWT_STICKYBOX, COLOUR_GREY), EndContainer(), NWidget(WWT_PANEL, COLOUR_GREY, WID_CV_BACKGROUND), @@ -642,8 +647,8 @@ static const NWidgetPart _nested_operating_profit_widgets[] = { EndContainer(), }; -static const WindowDesc _operating_profit_desc( - WDP_AUTO, 0, 0, +static WindowDesc _operating_profit_desc( + WDP_AUTO, "graph_operating_profit", 0, 0, WC_OPERATING_PROFIT, WC_NONE, 0, _nested_operating_profit_widgets, lengthof(_nested_operating_profit_widgets) @@ -661,10 +666,10 @@ void ShowOperatingProfitGraph() /****************/ struct IncomeGraphWindow : BaseGraphWindow { - IncomeGraphWindow(const WindowDesc *desc, WindowNumber window_number) : - BaseGraphWindow(WID_CV_GRAPH, STR_JUST_CURRENCY_SHORT) + IncomeGraphWindow(WindowDesc *desc, WindowNumber window_number) : + BaseGraphWindow(desc, WID_CV_GRAPH, STR_JUST_CURRENCY_SHORT) { - this->InitializeWindow(desc, window_number); + this->InitializeWindow(window_number); } virtual OverflowSafeInt64 GetGraphData(const Company *c, int j) @@ -679,6 +684,7 @@ static const NWidgetPart _nested_income_graph_widgets[] = { NWidget(WWT_CAPTION, COLOUR_GREY), SetDataTip(STR_GRAPH_INCOME_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_CV_KEY_BUTTON), SetMinimalSize(50, 0), SetMinimalTextLines(1, WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM + 2), SetDataTip(STR_GRAPH_KEY_BUTTON, STR_GRAPH_KEY_TOOLTIP), NWidget(WWT_SHADEBOX, COLOUR_GREY), + NWidget(WWT_DEFSIZEBOX, COLOUR_GREY), NWidget(WWT_STICKYBOX, COLOUR_GREY), EndContainer(), NWidget(WWT_PANEL, COLOUR_GREY, WID_CV_BACKGROUND), @@ -692,8 +698,8 @@ static const NWidgetPart _nested_income_graph_widgets[] = { EndContainer(), }; -static const WindowDesc _income_graph_desc( - WDP_AUTO, 0, 0, +static WindowDesc _income_graph_desc( + WDP_AUTO, "graph_income", 0, 0, WC_INCOME_GRAPH, WC_NONE, 0, _nested_income_graph_widgets, lengthof(_nested_income_graph_widgets) @@ -709,10 +715,10 @@ void ShowIncomeGraph() /*******************/ struct DeliveredCargoGraphWindow : BaseGraphWindow { - DeliveredCargoGraphWindow(const WindowDesc *desc, WindowNumber window_number) : - BaseGraphWindow(WID_CV_GRAPH, STR_JUST_COMMA) + DeliveredCargoGraphWindow(WindowDesc *desc, WindowNumber window_number) : + BaseGraphWindow(desc, WID_CV_GRAPH, STR_JUST_COMMA) { - this->InitializeWindow(desc, window_number); + this->InitializeWindow(window_number); } virtual OverflowSafeInt64 GetGraphData(const Company *c, int j) @@ -727,6 +733,7 @@ static const NWidgetPart _nested_delivered_cargo_graph_widgets[] = { NWidget(WWT_CAPTION, COLOUR_GREY), SetDataTip(STR_GRAPH_CARGO_DELIVERED_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_CV_KEY_BUTTON), SetMinimalSize(50, 0), SetMinimalTextLines(1, WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM + 2), SetDataTip(STR_GRAPH_KEY_BUTTON, STR_GRAPH_KEY_TOOLTIP), NWidget(WWT_SHADEBOX, COLOUR_GREY), + NWidget(WWT_DEFSIZEBOX, COLOUR_GREY), NWidget(WWT_STICKYBOX, COLOUR_GREY), EndContainer(), NWidget(WWT_PANEL, COLOUR_GREY, WID_CV_BACKGROUND), @@ -740,8 +747,8 @@ static const NWidgetPart _nested_delivered_cargo_graph_widgets[] = { EndContainer(), }; -static const WindowDesc _delivered_cargo_graph_desc( - WDP_AUTO, 0, 0, +static WindowDesc _delivered_cargo_graph_desc( + WDP_AUTO, "graph_delivered_cargo", 0, 0, WC_DELIVERED_CARGO, WC_NONE, 0, _nested_delivered_cargo_graph_widgets, lengthof(_nested_delivered_cargo_graph_widgets) @@ -757,10 +764,10 @@ void ShowDeliveredCargoGraph() /***********************/ struct PerformanceHistoryGraphWindow : BaseGraphWindow { - PerformanceHistoryGraphWindow(const WindowDesc *desc, WindowNumber window_number) : - BaseGraphWindow(WID_PHG_GRAPH, STR_JUST_COMMA) + PerformanceHistoryGraphWindow(WindowDesc *desc, WindowNumber window_number) : + BaseGraphWindow(desc, WID_PHG_GRAPH, STR_JUST_COMMA) { - this->InitializeWindow(desc, window_number); + this->InitializeWindow(window_number); } virtual OverflowSafeInt64 GetGraphData(const Company *c, int j) @@ -782,6 +789,7 @@ static const NWidgetPart _nested_performance_history_widgets[] = { NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_PHG_DETAILED_PERFORMANCE), SetMinimalSize(50, 0), SetMinimalTextLines(1, WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM + 2), SetDataTip(STR_PERFORMANCE_DETAIL_KEY, STR_GRAPH_PERFORMANCE_DETAIL_TOOLTIP), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_PHG_KEY), SetMinimalSize(50, 0), SetMinimalTextLines(1, WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM + 2), SetDataTip(STR_GRAPH_KEY_BUTTON, STR_GRAPH_KEY_TOOLTIP), NWidget(WWT_SHADEBOX, COLOUR_GREY), + NWidget(WWT_DEFSIZEBOX, COLOUR_GREY), NWidget(WWT_STICKYBOX, COLOUR_GREY), EndContainer(), NWidget(WWT_PANEL, COLOUR_GREY, WID_PHG_BACKGROUND), @@ -795,8 +803,8 @@ static const NWidgetPart _nested_performance_history_widgets[] = { EndContainer(), }; -static const WindowDesc _performance_history_desc( - WDP_AUTO, 0, 0, +static WindowDesc _performance_history_desc( + WDP_AUTO, "graph_performance", 0, 0, WC_PERFORMANCE_HISTORY, WC_NONE, 0, _nested_performance_history_widgets, lengthof(_nested_performance_history_widgets) @@ -812,10 +820,10 @@ void ShowPerformanceHistoryGraph() /*****************/ struct CompanyValueGraphWindow : BaseGraphWindow { - CompanyValueGraphWindow(const WindowDesc *desc, WindowNumber window_number) : - BaseGraphWindow(WID_CV_GRAPH, STR_JUST_CURRENCY_SHORT) + CompanyValueGraphWindow(WindowDesc *desc, WindowNumber window_number) : + BaseGraphWindow(desc, WID_CV_GRAPH, STR_JUST_CURRENCY_SHORT) { - this->InitializeWindow(desc, window_number); + this->InitializeWindow(window_number); } virtual OverflowSafeInt64 GetGraphData(const Company *c, int j) @@ -830,6 +838,7 @@ static const NWidgetPart _nested_company_value_graph_widgets[] = { NWidget(WWT_CAPTION, COLOUR_GREY), SetDataTip(STR_GRAPH_COMPANY_VALUES_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_CV_KEY_BUTTON), SetMinimalSize(50, 0), SetMinimalTextLines(1, WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM + 2), SetDataTip(STR_GRAPH_KEY_BUTTON, STR_GRAPH_KEY_TOOLTIP), NWidget(WWT_SHADEBOX, COLOUR_GREY), + NWidget(WWT_DEFSIZEBOX, COLOUR_GREY), NWidget(WWT_STICKYBOX, COLOUR_GREY), EndContainer(), NWidget(WWT_PANEL, COLOUR_GREY, WID_CV_BACKGROUND), @@ -843,8 +852,8 @@ static const NWidgetPart _nested_company_value_graph_widgets[] = { EndContainer(), }; -static const WindowDesc _company_value_graph_desc( - WDP_AUTO, 0, 0, +static WindowDesc _company_value_graph_desc( + WDP_AUTO, "graph_company_value", 0, 0, WC_COMPANY_VALUE, WC_NONE, 0, _nested_company_value_graph_widgets, lengthof(_nested_company_value_graph_widgets) @@ -861,8 +870,8 @@ void ShowCompanyValueGraph() struct PaymentRatesGraphWindow : BaseGraphWindow { bool first_init; ///< This value is true until the first initialization of the window has finished. - PaymentRatesGraphWindow(const WindowDesc *desc, WindowNumber window_number) : - BaseGraphWindow(WID_CPR_GRAPH, STR_JUST_CURRENCY_SHORT) + PaymentRatesGraphWindow(WindowDesc *desc, WindowNumber window_number) : + BaseGraphWindow(desc, WID_CPR_GRAPH, STR_JUST_CURRENCY_SHORT) { this->first_init = true; this->num_on_x_axis = 20; @@ -874,7 +883,7 @@ struct PaymentRatesGraphWindow : BaseGraphWindow { /* Initialise the dataset */ this->OnHundredthTick(); - this->InitNested(desc, window_number); + this->InitNested(window_number); this->UpdateLoweredWidgets(); } @@ -1044,6 +1053,7 @@ static const NWidgetPart _nested_cargo_payment_rates_widgets[] = { NWidget(WWT_CLOSEBOX, COLOUR_GREY), NWidget(WWT_CAPTION, COLOUR_GREY), SetDataTip(STR_GRAPH_CARGO_PAYMENT_RATES_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, WID_CPR_BACKGROUND), SetMinimalSize(568, 128), @@ -1073,8 +1083,8 @@ static const NWidgetPart _nested_cargo_payment_rates_widgets[] = { EndContainer(), }; -static const WindowDesc _cargo_payment_rates_desc( - WDP_AUTO, 0, 0, +static WindowDesc _cargo_payment_rates_desc( + WDP_AUTO, "graph_cargo_payment_rates", 0, 0, WC_PAYMENT_RATES, WC_NONE, 0, _nested_cargo_payment_rates_widgets, lengthof(_nested_cargo_payment_rates_widgets) @@ -1147,9 +1157,9 @@ class CompanyLeagueWindow : public Window { } public: - CompanyLeagueWindow(const WindowDesc *desc, WindowNumber window_number) : Window() + CompanyLeagueWindow(WindowDesc *desc, WindowNumber window_number) : Window(desc) { - this->InitNested(desc, window_number); + this->InitNested(window_number); this->companies.ForceRebuild(); this->companies.NeedResort(); } @@ -1262,8 +1272,8 @@ static const NWidgetPart _nested_company_league_widgets[] = { NWidget(WWT_PANEL, COLOUR_GREY, WID_CL_BACKGROUND), SetMinimalSize(400, 0), SetMinimalTextLines(15, WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM), }; -static const WindowDesc _company_league_desc( - WDP_AUTO, 0, 0, +static WindowDesc _company_league_desc( + WDP_AUTO, "league", 0, 0, WC_COMPANY_LEAGUE, WC_NONE, 0, _nested_company_league_widgets, lengthof(_nested_company_league_widgets) @@ -1282,11 +1292,11 @@ struct PerformanceRatingDetailWindow : Window { static CompanyID company; int timeout; - PerformanceRatingDetailWindow(const WindowDesc *desc, WindowNumber window_number) : Window() + PerformanceRatingDetailWindow(WindowDesc *desc, WindowNumber window_number) : Window(desc) { this->UpdateCompanyStats(); - this->InitNested(desc, window_number); + this->InitNested(window_number); this->OnInvalidateData(INVALID_COMPANY); } @@ -1561,8 +1571,8 @@ static const NWidgetPart _nested_performance_rating_detail_widgets[] = { NWidgetFunction(MakePerformanceDetailPanels), }; -static const WindowDesc _performance_rating_detail_desc( - WDP_AUTO, 0, 0, +static WindowDesc _performance_rating_detail_desc( + WDP_AUTO, "league_details", 0, 0, WC_PERFORMANCE_DETAIL, WC_NONE, 0, _nested_performance_rating_detail_widgets, lengthof(_nested_performance_rating_detail_widgets) diff --git a/src/ground_vehicle.cpp b/src/ground_vehicle.cpp index 5712b28f9..f3134608a 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. */ diff --git a/src/group.h b/src/group.h index d8680c294..91ee77e60 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 388ccf796..8712c378f 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); @@ -340,45 +351,72 @@ CommandCost CmdDeleteGroup(TileIndex tile, DoCommandFlag flags, uint32 p1, uint3 return CommandCost(); } -static bool IsUniqueGroupName(const char *name) +static bool IsUniqueGroupNameForVehicleType(const char *name, VehicleType type) { const Group *g; FOR_ALL_GROUPS(g) { - if (g->name != NULL && strcmp(g->name, name) == 0) return false; + if (g->name != NULL && g->vehicle_type == type && strcmp(g->name, name) == 0) return false; } return true; } /** - * 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 (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. */ + const Group *looptest = pg; + while (looptest->parent != INVALID_GROUP) { + if (looptest->parent == g->index) return CMD_ERROR; + looptest = Group::Get(looptest->parent); + } + } - if (!reset) { - if (Utf8StringLength(text) >= MAX_LENGTH_GROUP_NAME_CHARS) return CMD_ERROR; - if (!IsUniqueGroupName(text)) return_cmd_error(STR_ERROR_NAME_MUST_BE_UNIQUE); + 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 +580,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 +603,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 +613,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); @@ -639,8 +696,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 +713,25 @@ 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 (search == NEW_GROUP || + search == ALL_GROUP || + search == DEFAULT_GROUP || + search == INVALID_GROUP) 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 3996ddc18..c332c934d 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[] = { @@ -37,6 +41,7 @@ static const NWidgetPart _nested_group_widgets[] = { NWidget(WWT_CLOSEBOX, COLOUR_GREY), NWidget(WWT_CAPTION, COLOUR_GREY, WID_GL_CAPTION), NWidget(WWT_SHADEBOX, COLOUR_GREY), + NWidget(WWT_DEFSIZEBOX, COLOUR_GREY), NWidget(WWT_STICKYBOX, COLOUR_GREY), EndContainer(), NWidget(NWID_HORIZONTAL), @@ -46,7 +51,7 @@ static const NWidgetPart _nested_group_widgets[] = { NWidget(WWT_PANEL, COLOUR_GREY, WID_GL_ALL_VEHICLES), SetFill(1, 0), EndContainer(), NWidget(WWT_PANEL, COLOUR_GREY, WID_GL_DEFAULT_VEHICLES), SetFill(1, 0), EndContainer(), NWidget(NWID_HORIZONTAL), - NWidget(WWT_MATRIX, COLOUR_GREY, WID_GL_LIST_GROUP), SetDataTip(0x701, STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP), + NWidget(WWT_MATRIX, COLOUR_GREY, WID_GL_LIST_GROUP), SetMatrixDataTip(1, 0, STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP), SetFill(1, 0), SetResize(0, 1), SetScrollbar(WID_GL_LIST_GROUP_SCROLLBAR), NWidget(NWID_VSCROLLBAR, COLOUR_GREY, WID_GL_LIST_GROUP_SCROLLBAR), EndContainer(), @@ -70,7 +75,7 @@ static const NWidgetPart _nested_group_widgets[] = { NWidget(WWT_PANEL, COLOUR_GREY), SetMinimalSize(12, 12), SetResize(1, 0), EndContainer(), EndContainer(), NWidget(NWID_HORIZONTAL), - NWidget(WWT_MATRIX, COLOUR_GREY, WID_GL_LIST_VEHICLE), SetMinimalSize(248, 0), SetDataTip(0x701, STR_NULL), SetResize(1, 1), SetFill(1, 0), SetScrollbar(WID_GL_LIST_VEHICLE_SCROLLBAR), + NWidget(WWT_MATRIX, COLOUR_GREY, WID_GL_LIST_VEHICLE), SetMinimalSize(248, 0), SetMatrixDataTip(1, 0, STR_NULL), SetResize(1, 1), SetFill(1, 0), SetScrollbar(WID_GL_LIST_VEHICLE_SCROLLBAR), NWidget(NWID_VSCROLLBAR, COLOUR_GREY, WID_GL_LIST_VEHICLE_SCROLLBAR), EndContainer(), NWidget(WWT_PANEL, COLOUR_GREY), SetMinimalSize(1, 0), SetFill(1, 1), SetResize(1, 0), EndContainer(), @@ -104,34 +109,27 @@ class VehicleGroupWindow : public BaseVehicleListWindow { }; 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 */ @@ -157,6 +155,36 @@ class VehicleGroupWindow : public BaseVehicleListWindow { 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. @@ -182,7 +210,7 @@ class VehicleGroupWindow : public BaseVehicleListWindow { } this->tiny_step_height = max(this->tiny_step_height, this->column_size[VGC_PROFIT].height); - SetDParamMaxValue(0, GroupStatistics::Get(this->vli.company, ALL_GROUP, this->vli.vtype).num_vehicle, 3); + SetDParamMaxValue(0, GroupStatistics::Get(this->vli.company, ALL_GROUP, this->vli.vtype).num_vehicle, 3, FS_SMALL); this->column_size[VGC_NUMBER] = GetStringBoundingBox(STR_TINY_COMMA); this->tiny_step_height = max(this->tiny_step_height, this->column_size[VGC_NUMBER].height); @@ -203,9 +231,10 @@ class VehicleGroupWindow : public BaseVehicleListWindow { * @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) { @@ -230,7 +259,7 @@ class VehicleGroupWindow : public BaseVehicleListWindow { 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; @@ -277,9 +306,9 @@ class VehicleGroupWindow : public BaseVehicleListWindow { } public: - VehicleGroupWindow(const WindowDesc *desc, WindowNumber window_number) : BaseVehicleListWindow(window_number) + VehicleGroupWindow(WindowDesc *desc, WindowNumber window_number) : BaseVehicleListWindow(desc, window_number) { - this->CreateNestedTree(desc); + this->CreateNestedTree(); this->vscroll = this->GetScrollbar(WID_GL_LIST_VEHICLE_SCROLLBAR); this->group_sb = this->GetScrollbar(WID_GL_LIST_GROUP_SCROLLBAR); @@ -294,6 +323,7 @@ class VehicleGroupWindow : public BaseVehicleListWindow { 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; @@ -307,7 +337,6 @@ class VehicleGroupWindow : public BaseVehicleListWindow { 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; @@ -317,7 +346,7 @@ class VehicleGroupWindow : public BaseVehicleListWindow { this->GetWidget(WID_GL_DELETE_GROUP)->widget_data += this->vli.vtype; this->GetWidget(WID_GL_REPLACE_PROTECTION)->widget_data += this->vli.vtype; - this->FinishInitNested(desc, window_number); + this->FinishInitNested(window_number); this->owner = vli.company; } @@ -441,7 +470,6 @@ class VehicleGroupWindow : public BaseVehicleListWindow { this->SortVehicleList(); this->BuildGroupList(this->owner); - this->groups.Sort(&GroupNameSorter); this->group_sb->SetCount(this->groups.Length()); this->vscroll->SetCount(this->vehicles.Length()); @@ -507,7 +535,7 @@ class VehicleGroupWindow : public BaseVehicleListWindow { 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; } @@ -522,11 +550,33 @@ class VehicleGroupWindow : public BaseVehicleListWindow { 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) { @@ -559,7 +609,9 @@ class VehicleGroupWindow : public BaseVehicleListWindow { 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(); @@ -589,10 +641,8 @@ class VehicleGroupWindow : public BaseVehicleListWindow { } 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; } @@ -619,14 +669,46 @@ class VehicleGroupWindow : public BaseVehicleListWindow { 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 | (_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 @@ -667,24 +749,26 @@ class VehicleGroupWindow : public BaseVehicleListWindow { 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; } virtual void OnResize() { - NWidgetCore *nwi = this->GetWidget(WID_GL_LIST_GROUP); - this->group_sb->SetCapacity(nwi->current_y / this->tiny_step_height); - nwi->widget_data = (this->group_sb->GetCapacity() << MAT_ROW_START) + (1 << MAT_COL_START); - - nwi = this->GetWidget(WID_GL_LIST_VEHICLE); + this->group_sb->SetCapacityFromWidget(this, WID_GL_LIST_GROUP); this->vscroll->SetCapacityFromWidget(this, WID_GL_LIST_VEHICLE); - nwi->widget_data = (this->vscroll->GetCapacity() << MAT_ROW_START) + (1 << MAT_COL_START); } virtual void OnDropdownSelect(int widget, int index) @@ -746,7 +830,7 @@ class VehicleGroupWindow : public BaseVehicleListWindow { 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; @@ -763,7 +847,11 @@ class VehicleGroupWindow : public BaseVehicleListWindow { } /* 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) { @@ -799,14 +887,14 @@ class VehicleGroupWindow : public BaseVehicleListWindow { static WindowDesc _other_group_desc( - WDP_AUTO, 460, 246, + WDP_AUTO, "list_groups", 460, 246, WC_INVALID, WC_NONE, 0, _nested_group_widgets, lengthof(_nested_group_widgets) ); -static const WindowDesc _train_group_desc( - WDP_AUTO, 525, 246, +static WindowDesc _train_group_desc( + WDP_AUTO, "list_groups_train", 525, 246, WC_TRAINS_LIST, WC_NONE, 0, _nested_group_widgets, lengthof(_nested_group_widgets) diff --git a/src/gui.h b/src/gui.h index 8b31c6c98..39f1ea661 100644 --- a/src/gui.h +++ b/src/gui.h @@ -16,6 +16,8 @@ #include "economy_type.h" #include "tile_type.h" #include "transport_type.h" +#include "story_type.h" +#include "company_type.h" struct Window; @@ -49,8 +51,9 @@ void ShowTownDirectory(); void ShowIndustryDirectory(); void ShowIndustryCargoesWindow(); void ShowSubsidiesList(); -void ShowGoalsList(); +void ShowGoalsList(CompanyID company); void ShowGoalQuestion(uint16 id, byte type, uint32 button_mask, const char *question); +void ShowStoryBook(CompanyID company, uint16 page_id = INVALID_STORY_PAGE); void ShowEstimatedCostOrIncome(Money cost, int x, int y); diff --git a/src/heightmap.cpp b/src/heightmap.cpp index be51dc004..93cfa0a62 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 { @@ -344,7 +348,7 @@ static void GrayscaleToMapHeights(uint img_width, uint img_height, byte *map) (col < col_pad) || (col >= (width - col_pad - (_settings_game.construction.freeform_edges ? 0 : 1)))) { SetTileHeight(tile, 0); } else { - /* Use nearest neighbor resizing to scale map data. + /* Use nearest neighbour resizing to scale map data. * We rotate the map 45 degrees (counter)clockwise */ img_row = (((row - row_pad) * num_div) / img_scale); switch (_settings_game.game_creation.heightmap_rotation) { @@ -364,8 +368,7 @@ static void GrayscaleToMapHeights(uint img_width, uint img_height, byte *map) SetTileHeight(tile, map[img_row * img_width + img_col] / 16); } /* 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); } } @@ -464,7 +467,7 @@ bool GetHeightmapDimensions(char *filename, uint *x, uint *y) * Load a heightmap from file and change the map in his current dimensions * to a landscape representing the heightmap. * It converts pixels to height. The brighter, the higher. - * @param filename of the heighmap file to be imported + * @param filename of the heightmap file to be imported */ void LoadHeightmap(char *filename) { diff --git a/src/highscore.cpp b/src/highscore.cpp index 0a38acf2e..86e4f5ae8 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,15 +166,15 @@ 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; } - *lastof(hs->company) = '\0'; + str_validate(hs->company, lastof(hs->company), SVS_NONE); hs->title = EndGameGetPerformanceTitleFromValue(hs->score); } } diff --git a/src/highscore.h b/src/highscore.h index 65c6aa40f..5d4b919ee 100644 --- a/src/highscore.h +++ b/src/highscore.h @@ -17,9 +17,14 @@ #include "settings_type.h" struct HighScore { - char company[100]; + /** + * The name of the company and president. + * The + 5 is for the comma and space or possibly other characters + * that join the two names in this single string and the '\0'. + */ + char company[(MAX_LENGTH_COMPANY_NAME_CHARS + MAX_LENGTH_PRESIDENT_NAME_CHARS + 5) * MAX_CHAR_LENGTH]; StringID title; ///< NOSAVE, has troubles with changing string-numbers. - uint16 score; ///< do NOT change type, will break hs.dat + uint16 score; ///< The score for this high score. Do NOT change type, will break hs.dat }; extern HighScore _highscore_table[SP_HIGHSCORE_END][5]; diff --git a/src/highscore_gui.cpp b/src/highscore_gui.cpp index af4dbf6dd..35ada7266 100644 --- a/src/highscore_gui.cpp +++ b/src/highscore_gui.cpp @@ -25,13 +25,15 @@ #include "widgets/highscore_widget.h" +#include "safeguards.h" + struct EndGameHighScoreBaseWindow : Window { uint32 background_img; int8 rank; - EndGameHighScoreBaseWindow(const WindowDesc *desc) : Window() + EndGameHighScoreBaseWindow(WindowDesc *desc) : Window(desc) { - this->InitNested(desc); + this->InitNested(); CLRBITS(this->flags, WF_WHITE_BORDER); ResizeWindow(this, _screen.width - this->width, _screen.height - this->height); } @@ -63,7 +65,7 @@ struct EndGameHighScoreBaseWindow : Window { delete this; } - virtual EventState OnKeyPress(uint16 key, uint16 keycode) + virtual EventState OnKeyPress(WChar key, uint16 keycode) { /* All keys are 'handled' by this window but we want to make * sure that 'quit' still works correctly. Not handling the @@ -89,7 +91,7 @@ struct EndGameHighScoreBaseWindow : Window { /** End game window shown at the end of the game */ struct EndGameWindow : EndGameHighScoreBaseWindow { - EndGameWindow(const WindowDesc *desc) : EndGameHighScoreBaseWindow(desc) + EndGameWindow(WindowDesc *desc) : EndGameHighScoreBaseWindow(desc) { /* Pause in single-player to have a look at the highscore at your own leisure */ if (!_networking) DoCommandP(0, PM_PAUSED_NORMAL, 1, CMD_PAUSE); @@ -148,10 +150,13 @@ struct EndGameWindow : EndGameHighScoreBaseWindow { }; struct HighScoreWindow : EndGameHighScoreBaseWindow { - HighScoreWindow(const WindowDesc *desc, int difficulty, int8 ranking) : EndGameHighScoreBaseWindow(desc) + bool game_paused_by_player; ///< True if the game was paused by the player when the highscore window was opened. + + HighScoreWindow(WindowDesc *desc, int difficulty, int8 ranking) : EndGameHighScoreBaseWindow(desc) { /* pause game to show the chart */ - if (!_networking) DoCommandP(0, PM_PAUSED_NORMAL, 1, CMD_PAUSE); + this->game_paused_by_player = _pause_mode == PM_PAUSED_NORMAL; + if (!_networking && !this->game_paused_by_player) DoCommandP(0, PM_PAUSED_NORMAL, 1, CMD_PAUSE); /* Close all always on-top windows to get a clean screen */ if (_game_mode != GM_MENU) HideVitalWindows(); @@ -166,7 +171,7 @@ struct HighScoreWindow : EndGameHighScoreBaseWindow { { if (_game_mode != GM_MENU) ShowVitalWindows(); - if (!_networking) DoCommandP(0, PM_PAUSED_NORMAL, 0, CMD_PAUSE); // unpause + if (!_networking && !this->game_paused_by_player) DoCommandP(0, PM_PAUSED_NORMAL, 0, CMD_PAUSE); // unpause } virtual void OnPaint() @@ -187,7 +192,8 @@ struct HighScoreWindow : EndGameHighScoreBaseWindow { if (hs[i].company[0] != '\0') { TextColour colour = (this->rank == i) ? TC_RED : TC_BLACK; // draw new highscore in red - DrawString(pt.x + 71, pt.x + 569, pt.y + 140 + (i * 55), hs[i].company, colour); + SetDParamStr(0, hs[i].company); + DrawString(pt.x + 71, pt.x + 569, pt.y + 140 + (i * 55), STR_JUST_BIG_RAW_STRING, colour); SetDParam(0, hs[i].title); SetDParam(1, hs[i].score); DrawString(pt.x + 71, pt.x + 569, pt.y + 140 + FONT_HEIGHT_LARGE + (i * 55), STR_HIGHSCORE_STATS, colour); @@ -197,18 +203,18 @@ struct HighScoreWindow : EndGameHighScoreBaseWindow { }; static const NWidgetPart _nested_highscore_widgets[] = { - NWidget(WWT_PANEL, COLOUR_END, WID_H_BACKGROUND), SetMinimalSize(641, 481), SetResize(1, 1), EndContainer(), + NWidget(WWT_PANEL, COLOUR_BROWN, WID_H_BACKGROUND), SetMinimalSize(641, 481), SetResize(1, 1), EndContainer(), }; -static const WindowDesc _highscore_desc( - WDP_MANUAL, 0, 0, +static WindowDesc _highscore_desc( + WDP_MANUAL, NULL, 0, 0, WC_HIGHSCORE, WC_NONE, 0, _nested_highscore_widgets, lengthof(_nested_highscore_widgets) ); -static const WindowDesc _endgame_desc( - WDP_MANUAL, 0, 0, +static WindowDesc _endgame_desc( + WDP_MANUAL, NULL, 0, 0, WC_ENDSCREEN, WC_NONE, 0, _nested_highscore_widgets, lengthof(_nested_highscore_widgets) diff --git a/src/hotkeys.cpp b/src/hotkeys.cpp index 1b3c6eacc..84288a0e8 100644 --- a/src/hotkeys.cpp +++ b/src/hotkeys.cpp @@ -16,8 +16,16 @@ #include "string_func.h" #include "window_gui.h" +#include "safeguards.h" + char *_hotkeys_file; +/** + * List of all HotkeyLists. + * This is a pointer to ensure initialisation order with the various static HotkeyList instances. + */ +static SmallVector *_hotkey_lists = NULL; + /** String representation of a keycode */ struct KeycodeNames { const char *name; ///< Name of the keycode @@ -48,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}, @@ -116,8 +123,7 @@ static uint16 ParseKeycode(const char *start, const char *end) * @param hotkey The hotkey object to add the keycodes to * @param value The string to parse */ -template -static void ParseHotkeys(Hotkey *hotkey, const char *value) +static void ParseHotkeys(Hotkey *hotkey, const char *value) { const char *start = value; while (*start != '\0') { @@ -131,11 +137,11 @@ static void ParseHotkeys(Hotkey *hotkey, const char *value) /** * Convert a hotkey to it's string representation so it can be written to the - * config file. Seperate parts of the keycode (like "CTRL" and "F1" are split + * config file. Separate parts of the keycode (like "CTRL" and "F1" are split * 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) @@ -189,11 +195,10 @@ 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. */ -template -const char *SaveKeycodes(const Hotkey *hotkey) +const char *SaveKeycodes(const Hotkey *hotkey) { static char buf[128]; buf[0] = '\0'; @@ -205,11 +210,66 @@ const char *SaveKeycodes(const Hotkey *hotkey) return buf; } -template -void LoadHotkeyGroup(IniGroup *group, T *hotkey_list) +/** + * Create a new Hotkey object with a single default keycode. + * @param default_keycode The default keycode for this hotkey. + * @param name The name of this hotkey. + * @param num Number of this hotkey, should be unique within the hotkey list. + */ +Hotkey::Hotkey(uint16 default_keycode, const char *name, int num) : + name(name), + num(num) +{ + if (default_keycode != 0) this->AddKeycode(default_keycode); +} + +/** + * Create a new Hotkey object with multiple default keycodes. + * @param default_keycodes An array of default keycodes terminated with 0. + * @param name The name of this hotkey. + * @param num Number of this hotkey, should be unique within the hotkey list. + */ +Hotkey::Hotkey(const uint16 *default_keycodes, const char *name, int num) : + name(name), + num(num) +{ + const uint16 *keycode = default_keycodes; + while (*keycode != 0) { + this->AddKeycode(*keycode); + keycode++; + } +} + +/** + * Add a keycode to this hotkey, from now that keycode will be matched + * in addition to any previously added keycodes. + * @param keycode The keycode to add. + */ +void Hotkey::AddKeycode(uint16 keycode) +{ + this->keycodes.Include(keycode); +} + +HotkeyList::HotkeyList(const char *ini_group, Hotkey *items, GlobalHotkeyHandlerFunc global_hotkey_handler) : + global_hotkey_handler(global_hotkey_handler), ini_group(ini_group), items(items) +{ + if (_hotkey_lists == NULL) _hotkey_lists = new SmallVector(); + *_hotkey_lists->Append() = this; +} + +HotkeyList::~HotkeyList() { - for (uint i = 0; hotkey_list[i].num != -1; i++) { - T *hotkey = &hotkey_list[i]; + _hotkey_lists->Erase(_hotkey_lists->Find(this)); +} + +/** + * Load HotkeyList from IniFile. + * @param ini IniFile to load from. + */ +void HotkeyList::Load(IniFile *ini) +{ + IniGroup *group = ini->GetGroup(this->ini_group); + for (Hotkey *hotkey = this->items; hotkey->name != NULL; ++hotkey) { IniItem *item = group->GetItem(hotkey->name, false); if (item != NULL) { hotkey->keycodes.Clear(); @@ -218,66 +278,49 @@ void LoadHotkeyGroup(IniGroup *group, T *hotkey_list) } } -template -void SaveHotkeyGroup(IniGroup *group, T *hotkey_list) +/** + * Save HotkeyList to IniFile. + * @param ini IniFile to save to. + */ +void HotkeyList::Save(IniFile *ini) const { - for (uint i = 0; hotkey_list[i].num != -1; i++) { - T *hotkey = &hotkey_list[i]; + IniGroup *group = ini->GetGroup(this->ini_group); + for (const Hotkey *hotkey = this->items; hotkey->name != NULL; ++hotkey) { IniItem *item = group->GetItem(hotkey->name, true); item->SetValue(SaveKeycodes(hotkey)); } } -template -void SaveLoadHotkeyGroup(IniGroup *group, T *hotkey_list, bool save) +/** + * Check if a keycode is bound to something. + * @param keycode The keycode that was pressed + * @param global_only Limit the search to hotkeys defined as 'global'. + * @return The number of the matching hotkey or -1. + */ +int HotkeyList::CheckMatch(uint16 keycode, bool global_only) const { - if (save) { - SaveHotkeyGroup(group, hotkey_list); - } else { - LoadHotkeyGroup(group, hotkey_list); + for (const Hotkey *list = this->items; list->name != NULL; ++list) { + if (list->keycodes.Contains(keycode | WKC_GLOBAL_HOTKEY) || (!global_only && list->keycodes.Contains(keycode))) { + return list->num; + } } + return -1; } -struct MainWindow; -struct MainToolbarWindow; -struct ScenarioEditorToolbarWindow; -struct TerraformToolbarWindow; -struct ScenarioEditorLandscapeGenerationWindow; -struct OrdersWindow; -struct BuildAirToolbarWindow; -struct BuildDocksToolbarWindow; -struct BuildRailToolbarWindow; -struct BuildRoadToolbarWindow; -struct SignListWindow; -struct AIDebugWindow; static void SaveLoadHotkeys(bool save) { IniFile *ini = new IniFile(); ini->LoadFromDisk(_hotkeys_file, BASE_DIR); - IniGroup *group; - -#define SL_HOTKEYS(name, window_name) \ - extern Hotkey *_##name##_hotkeys;\ - group = ini->GetGroup(#name);\ - SaveLoadHotkeyGroup(group, _##name##_hotkeys, save); - - SL_HOTKEYS(global, MainWindow); - SL_HOTKEYS(maintoolbar, MainToolbarWindow); - SL_HOTKEYS(scenedit_maintoolbar, ScenarioEditorToolbarWindow); - SL_HOTKEYS(terraform, TerraformToolbarWindow); - SL_HOTKEYS(terraform_editor, ScenarioEditorLandscapeGenerationWindow); - SL_HOTKEYS(order, OrdersWindow); - SL_HOTKEYS(airtoolbar, BuildAirToolbarWindow); - SL_HOTKEYS(dockstoolbar, BuildDocksToolbarWindow); - SL_HOTKEYS(railtoolbar, BuildRailToolbarWindow); - SL_HOTKEYS(roadtoolbar, BuildRoadToolbarWindow); - SL_HOTKEYS(signlist, SignListWindow); - SL_HOTKEYS(aidebug, AIDebugWindow); - + for (HotkeyList **list = _hotkey_lists->Begin(); list != _hotkey_lists->End(); ++list) { + if (save) { + (*list)->Save(ini); + } else { + (*list)->Load(ini); + } + } -#undef SL_HOTKEYS if (save) ini->SaveToDisk(_hotkeys_file); delete ini; } @@ -295,45 +338,13 @@ void SaveHotkeysToConfig() SaveLoadHotkeys(true); } -typedef EventState GlobalHotkeyHandler(uint16, uint16); - -GlobalHotkeyHandler RailToolbarGlobalHotkeys; -GlobalHotkeyHandler DockToolbarGlobalHotkeys; -GlobalHotkeyHandler AirportToolbarGlobalHotkeys; -GlobalHotkeyHandler TerraformToolbarGlobalHotkeys; -GlobalHotkeyHandler TerraformToolbarEditorGlobalHotkeys; -GlobalHotkeyHandler RoadToolbarGlobalHotkeys; -GlobalHotkeyHandler RoadToolbarEditorGlobalHotkeys; -GlobalHotkeyHandler SignListGlobalHotkeys; -GlobalHotkeyHandler AIDebugGlobalHotkeys; - - -GlobalHotkeyHandler *_global_hotkey_handlers[] = { - RailToolbarGlobalHotkeys, - DockToolbarGlobalHotkeys, - AirportToolbarGlobalHotkeys, - TerraformToolbarGlobalHotkeys, - RoadToolbarGlobalHotkeys, - SignListGlobalHotkeys, - AIDebugGlobalHotkeys, -}; - -GlobalHotkeyHandler *_global_hotkey_handlers_editor[] = { - TerraformToolbarEditorGlobalHotkeys, - RoadToolbarEditorGlobalHotkeys, -}; - - -void HandleGlobalHotkeys(uint16 key, uint16 keycode) +void HandleGlobalHotkeys(WChar key, uint16 keycode) { - if (_game_mode == GM_NORMAL) { - for (uint i = 0; i < lengthof(_global_hotkey_handlers); i++) { - if (_global_hotkey_handlers[i](key, keycode) == ES_HANDLED) return; - } - } else if (_game_mode == GM_EDITOR) { - for (uint i = 0; i < lengthof(_global_hotkey_handlers_editor); i++) { - if (_global_hotkey_handlers_editor[i](key, keycode) == ES_HANDLED) return; - } + for (HotkeyList **list = _hotkey_lists->Begin(); list != _hotkey_lists->End(); ++list) { + if ((*list)->global_hotkey_handler == NULL) continue; + + int hotkey = (*list)->CheckMatch(keycode, true); + if (hotkey >= 0 && ((*list)->global_hotkey_handler(hotkey) == ES_HANDLED)) return; } } diff --git a/src/hotkeys.h b/src/hotkeys.h index b87787e1b..25a489b3f 100644 --- a/src/hotkeys.h +++ b/src/hotkeys.h @@ -14,115 +14,53 @@ #include "core/smallvec_type.hpp" #include "gfx_type.h" +#include "window_type.h" +#include "string_type.h" /** * All data for a single hotkey. The name (for saving/loading a configfile), * a list of keycodes and a number to help identifying this hotkey. */ -template struct Hotkey { - typedef void (T::*hotkey_callback)(int); + Hotkey(uint16 default_keycode, const char *name, int num); + Hotkey(const uint16 *default_keycodes, const char *name, int num); - /** - * A wrapper around the callback function. This wrapper is needed because - * the size of a pointer to a member function depends on the class - * definition. The possible solutions are to either wrap the callback - * pointer in a class and dynamically allocate memory for it like we do - * now or making all class definitions available in hotkeys.cpp. - */ - struct CallbackWrapper { - CallbackWrapper(hotkey_callback callback) : - callback(callback) - {} - hotkey_callback callback; - }; - - /** - * Create a new Hotkey object with a single default keycode. - * @param default_keycode The default keycode for this hotkey. - * @param name The name of this hotkey. - * @param num Number of this hotkey, should be unique within the hotkey list. - * @param callback The function to call if the hotkey is pressed. - */ - Hotkey(uint16 default_keycode, const char *name, int num, hotkey_callback callback = NULL) : - name(name), - num(num) - { - if (callback == NULL) { - this->callback = NULL; - } else { - this->callback = new CallbackWrapper(callback); - } - if (default_keycode != 0) this->AddKeycode(default_keycode); - } - - /** - * Create a new Hotkey object with multiple default keycodes. - * @param default_keycodes An array of default keycodes terminated with 0. - * @param name The name of this hotkey. - * @param num Number of this hotkey, should be unique within the hotkey list. - * @param callback The function to call if the hotkey is pressed. - */ - Hotkey(const uint16 *default_keycodes, const char *name, int num, hotkey_callback callback = NULL) : - name(name), - num(num) - { - if (callback == NULL) { - this->callback = NULL; - } else { - this->callback = new CallbackWrapper(callback); - } - - const uint16 *keycode = default_keycodes; - while (*keycode != 0) { - this->AddKeycode(*keycode); - keycode++; - } - } - - ~Hotkey() - { - delete this->callback; - } - - /** - * Add a keycode to this hotkey, from now that keycode will be matched - * in addition to any previously added keycodes. - * @param keycode The keycode to add. - */ - void AddKeycode(uint16 keycode) - { - this->keycodes.Include(keycode); - } + void AddKeycode(uint16 keycode); const char *name; int num; SmallVector keycodes; - CallbackWrapper *callback; }; -#define HOTKEY_LIST_END(window_class) Hotkey((uint16)0, NULL, -1) +#define HOTKEY_LIST_END Hotkey((uint16)0, NULL, -1) + +struct IniFile; /** - * Check if a keycode is bound to something. - * @param list The list with hotkeys to check - * @param keycode The keycode that was pressed - * @param w The window-pointer to give to the callback function (if any). - * @param global_only Limit the search to hotkeys defined as 'global'. - * @return The number of the matching hotkey or -1. + * List of hotkeys for a window. */ -template -int CheckHotkeyMatch(Hotkey *list, uint16 keycode, T *w, bool global_only = false) -{ - while (list->num != -1) { - if (list->keycodes.Contains(keycode | WKC_GLOBAL_HOTKEY) || (!global_only && list->keycodes.Contains(keycode))) { - if (!global_only && list->callback != NULL) (w->*(list->callback->callback))(-1); - return list->num; - } - list++; - } - return -1; -} +struct HotkeyList { + typedef EventState (*GlobalHotkeyHandlerFunc)(int hotkey); + + HotkeyList(const char *ini_group, Hotkey *items, GlobalHotkeyHandlerFunc global_hotkey_handler = NULL); + ~HotkeyList(); + + void Load(IniFile *ini); + void Save(IniFile *ini) const; + + int CheckMatch(uint16 keycode, bool global_only = false) const; + + GlobalHotkeyHandlerFunc global_hotkey_handler; +private: + const char *ini_group; + Hotkey *items; + + /** + * Dummy private copy constructor to prevent compilers from + * copying the structure, which fails due to _hotkey_lists. + */ + HotkeyList(const HotkeyList &other); +}; bool IsQuitKey(uint16 keycode); @@ -130,6 +68,6 @@ void LoadHotkeysFromConfig(); void SaveHotkeysToConfig(); -void HandleGlobalHotkeys(uint16 key, uint16 keycode); +void HandleGlobalHotkeys(WChar key, uint16 keycode); #endif /* HOTKEYS_H */ diff --git a/src/house.h b/src/house.h index 9d5d5529d..ddc2a448c 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.h b/src/industry.h index f6e32b27b..5e5d04688 100644 --- a/src/industry.h +++ b/src/industry.h @@ -79,7 +79,7 @@ struct Industry : IndustryPool::PoolItem<&_industry_pool> { /** * Check if a given tile belongs to this industry. * @param tile The tile to check. - * @return True if the tils is part of this industry. + * @return True if the tile is part of this industry. */ inline bool TileBelongsToIndustry(TileIndex tile) const { diff --git a/src/industry_cmd.cpp b/src/industry_cmd.cpp index 1ca511f01..9deb04363 100644 --- a/src/industry_cmd.cpp +++ b/src/industry_cmd.cpp @@ -45,6 +45,8 @@ #include "table/industry_land.h" #include "table/build_industry.h" +#include "safeguards.h" + IndustryPool _industry_pool("Industry"); INSTANTIATE_POOL_METHODS(Industry) @@ -329,7 +331,7 @@ static void DrawTile_Industry(TileInfo *ti) SpriteID image = dits->ground.sprite; - /* DrawFoundation() modifes ti->z and ti->tileh */ + /* DrawFoundation() modifies ti->z and ti->tileh */ if (ti->tileh != SLOPE_FLAT) DrawFoundation(ti, FOUNDATION_LEVELED); /* If the ground sprite is the default flat water sprite, draw also canal/river borders. @@ -518,7 +520,7 @@ static void TransportIndustryGoods(TileIndex tile) if (newgfx != INDUSTRYTILE_NOANIM) { ResetIndustryConstructionStage(tile); - SetIndustryCompleted(tile, true); + SetIndustryCompleted(tile); SetIndustryGfx(tile, newgfx); MarkTileDirtyByTile(tile); } @@ -718,7 +720,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 +856,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 +942,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 +977,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 +1005,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 +1017,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 +1029,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,7 +1383,7 @@ 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 { @@ -1568,7 +1565,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 +2020,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])); } /** @@ -2600,6 +2620,7 @@ static void ChangeIndustryProduction(Industry *i, bool monthly) /* Close if needed and allowed */ if (closeit && !CheckIndustryCloseDownProtection(i->type)) { i->prod_level = PRODLEVEL_CLOSURE; + SetWindowDirty(WC_INDUSTRY_VIEW, i->index); str = indspec->closure_text; } @@ -2655,7 +2676,7 @@ void IndustryDailyLoop() * is sufficient for an industry. */ uint16 change_loop = _economy.industry_daily_change_counter >> 16; - /* Reset the active part of the counter, just keeping the "factional part" */ + /* Reset the active part of the counter, just keeping the "fractional part" */ _economy.industry_daily_change_counter &= 0xFFFF; if (change_loop == 0) { diff --git a/src/industry_gui.cpp b/src/industry_gui.cpp index 2d9c3771f..6f944b187 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,6 +42,8 @@ #include "table/strings.h" +#include "safeguards.h" + bool _ignore_restrictions; uint64 _displayed_industries; ///< Communication from the industry chain window to the smallmap window about what industries to display. @@ -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). @@ -170,10 +171,11 @@ static const NWidgetPart _nested_build_industry_widgets[] = { NWidget(WWT_CLOSEBOX, COLOUR_DARK_GREEN), NWidget(WWT_CAPTION, COLOUR_DARK_GREEN), SetDataTip(STR_FUND_INDUSTRY_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), NWidget(WWT_SHADEBOX, COLOUR_DARK_GREEN), + NWidget(WWT_DEFSIZEBOX, COLOUR_DARK_GREEN), NWidget(WWT_STICKYBOX, COLOUR_DARK_GREEN), EndContainer(), NWidget(NWID_HORIZONTAL), - NWidget(WWT_MATRIX, COLOUR_DARK_GREEN, WID_DPI_MATRIX_WIDGET), SetDataTip(0x801, STR_FUND_INDUSTRY_SELECTION_TOOLTIP), SetFill(1, 0), SetResize(1, 1), SetScrollbar(WID_DPI_SCROLLBAR), + NWidget(WWT_MATRIX, COLOUR_DARK_GREEN, WID_DPI_MATRIX_WIDGET), SetMatrixDataTip(1, 0, STR_FUND_INDUSTRY_SELECTION_TOOLTIP), SetFill(1, 0), SetResize(1, 1), SetScrollbar(WID_DPI_SCROLLBAR), NWidget(NWID_VSCROLLBAR, COLOUR_DARK_GREEN, WID_DPI_SCROLLBAR), EndContainer(), NWidget(WWT_PANEL, COLOUR_DARK_GREEN, WID_DPI_INFOPANEL), SetResize(1, 0), @@ -187,8 +189,8 @@ static const NWidgetPart _nested_build_industry_widgets[] = { }; /** Window definition of the dynamic place industries gui */ -static const WindowDesc _build_industry_desc( - WDP_AUTO, 170, 212, +static WindowDesc _build_industry_desc( + WDP_AUTO, "build_industry", 170, 212, WC_BUILD_INDUSTRY, WC_NONE, WDF_CONSTRUCTION, _nested_build_industry_widgets, lengthof(_nested_build_industry_widgets) @@ -247,7 +249,7 @@ class BuildIndustryWindow : public Window { } } - /* first indutry type is selected if the current selection is invalid. + /* first industry type is selected if the current selection is invalid. * I'll be damned if there are none available ;) */ if (this->selected_index == -1) { this->selected_index = 0; @@ -265,7 +267,7 @@ class BuildIndustryWindow : public Window { } public: - BuildIndustryWindow() : Window() + BuildIndustryWindow() : Window(&_build_industry_desc) { this->timer_enabled = _loaded_newgrf_features.has_newindustries; @@ -274,9 +276,9 @@ class BuildIndustryWindow : public Window { this->callback_timer = DAY_TICKS; - this->CreateNestedTree(&_build_industry_desc); + this->CreateNestedTree(); this->vscroll = this->GetScrollbar(WID_DPI_SCROLLBAR); - this->FinishInitNested(&_build_industry_desc, 0); + this->FinishInitNested(0); this->SetButtons(); } @@ -378,24 +380,37 @@ class BuildIndustryWindow : public Window { virtual void DrawWidget(const Rect &r, int widget) const { switch (widget) { - case WID_DPI_MATRIX_WIDGET: + case WID_DPI_MATRIX_WIDGET: { + uint text_left, text_right, icon_left, icon_right; + if (_current_text_dir == TD_RTL) { + icon_right = r.right - WD_MATRIX_RIGHT; + icon_left = icon_right - 10; + text_right = icon_right - BuildIndustryWindow::MATRIX_TEXT_OFFSET; + text_left = r.left + WD_MATRIX_LEFT; + } else { + icon_left = r.left + WD_MATRIX_LEFT; + icon_right = icon_left + 10; + text_left = icon_left + BuildIndustryWindow::MATRIX_TEXT_OFFSET; + text_right = r.right - WD_MATRIX_RIGHT; + } + for (byte i = 0; i < this->vscroll->GetCapacity() && i + this->vscroll->GetPosition() < this->count; i++) { - int x = r.left + WD_MATRIX_LEFT; int y = r.top + WD_MATRIX_TOP + i * this->resize.step_height; bool selected = this->selected_index == i + this->vscroll->GetPosition(); if (this->index[i + this->vscroll->GetPosition()] == INVALID_INDUSTRYTYPE) { - DrawString(x + MATRIX_TEXT_OFFSET, r.right - WD_MATRIX_RIGHT, y, STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES, selected ? TC_WHITE : TC_ORANGE); + DrawString(text_left, text_right, y, STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES, selected ? TC_WHITE : TC_ORANGE); continue; } const IndustrySpec *indsp = GetIndustrySpec(this->index[i + this->vscroll->GetPosition()]); /* Draw the name of the industry in white is selected, otherwise, in orange */ - DrawString(x + MATRIX_TEXT_OFFSET, r.right - WD_MATRIX_RIGHT, y, indsp->name, selected ? TC_WHITE : TC_ORANGE); - GfxFillRect(x, y + 1, x + 10, y + 7, selected ? PC_WHITE : PC_BLACK); - GfxFillRect(x + 1, y + 2, x + 9, y + 6, indsp->map_colour); + DrawString(text_left, text_right, y, indsp->name, selected ? TC_WHITE : TC_ORANGE); + GfxFillRect(icon_left, y + 1, icon_right, y + 7, selected ? PC_WHITE : PC_BLACK); + GfxFillRect(icon_left + 1, y + 2, icon_right - 1, y + 6, indsp->map_colour); } break; + } case WID_DPI_INFOPANEL: { int y = r.top + WD_FRAMERECT_TOP; @@ -457,7 +472,7 @@ class BuildIndustryWindow : public Window { } 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(); } @@ -527,7 +542,6 @@ class BuildIndustryWindow : public Window { { /* Adjust the number of items in the matrix depending of the resize */ this->vscroll->SetCapacityFromWidget(this, WID_DPI_MATRIX_WIDGET); - this->GetWidget(WID_DPI_MATRIX_WIDGET)->widget_data = (this->vscroll->GetCapacity() << MAT_ROW_START) + (1 << MAT_COL_START); } virtual void OnPlaceObject(Point pt, TileIndex tile) @@ -626,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 @@ -654,7 +669,7 @@ class IndustryViewWindow : public Window int info_height; ///< Height needed for the #WID_IV_INFO panel public: - IndustryViewWindow(const WindowDesc *desc, WindowNumber window_number) : Window() + IndustryViewWindow(WindowDesc *desc, WindowNumber window_number) : Window(desc) { this->flags |= WF_DISABLE_VP_SCROLL; this->editbox_line = IL_NONE; @@ -662,7 +677,7 @@ class IndustryViewWindow : public Window this->clicked_button = 0; this->info_height = WD_FRAMERECT_TOP + 2 * FONT_HEIGHT_NORMAL + WD_FRAMERECT_BOTTOM + 1; // Info panel has at least two lines text. - this->InitNested(desc, window_number); + this->InitNested(window_number); NWidgetViewport *nvp = this->GetWidget(WID_IV_VIEWPORT); nvp->InitializeViewport(this, Industry::Get(window_number)->location.GetCenterTile(), ZOOM_LVL_INDUSTRY); @@ -700,6 +715,11 @@ class IndustryViewWindow : public Window bool has_accept = false; char cargo_suffix[3][512]; + if (i->prod_level == PRODLEVEL_CLOSURE) { + DrawString(left + WD_FRAMERECT_LEFT, right - WD_FRAMERECT_RIGHT, y, STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE); + y += 2 * FONT_HEIGHT_NORMAL; + } + if (HasBit(ind->callback_mask, CBM_IND_PRODUCTION_CARGO_ARRIVAL) || HasBit(ind->callback_mask, CBM_IND_PRODUCTION_256_TICKS)) { GetAllCargoSuffixes(0, CST_VIEW, i, i->type, ind, i->accepts_cargo, cargo_suffix); for (byte j = 0; j < lengthof(i->accepts_cargo); j++) { @@ -782,7 +802,7 @@ class IndustryViewWindow : public Window 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. */ @@ -995,6 +1015,7 @@ static const NWidgetPart _nested_industry_view_widgets[] = { NWidget(WWT_CAPTION, COLOUR_CREAM, WID_IV_CAPTION), SetDataTip(STR_INDUSTRY_VIEW_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), NWidget(WWT_DEBUGBOX, COLOUR_CREAM), NWidget(WWT_SHADEBOX, COLOUR_CREAM), + NWidget(WWT_DEFSIZEBOX, COLOUR_CREAM), NWidget(WWT_STICKYBOX, COLOUR_CREAM), EndContainer(), NWidget(WWT_PANEL, COLOUR_CREAM), @@ -1012,8 +1033,8 @@ static const NWidgetPart _nested_industry_view_widgets[] = { }; /** Window definition of the view industry gui */ -static const WindowDesc _industry_view_desc( - WDP_AUTO, 260, 120, +static WindowDesc _industry_view_desc( + WDP_AUTO, "view_industry", 260, 120, WC_INDUSTRY_VIEW, WC_NONE, 0, _nested_industry_view_widgets, lengthof(_nested_industry_view_widgets) @@ -1030,6 +1051,7 @@ static const NWidgetPart _nested_industry_directory_widgets[] = { NWidget(WWT_CLOSEBOX, COLOUR_BROWN), NWidget(WWT_CAPTION, COLOUR_BROWN), SetDataTip(STR_INDUSTRY_DIRECTORY_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), NWidget(WWT_SHADEBOX, COLOUR_BROWN), + NWidget(WWT_DEFSIZEBOX, COLOUR_BROWN), NWidget(WWT_STICKYBOX, COLOUR_BROWN), EndContainer(), NWidget(NWID_HORIZONTAL), @@ -1208,9 +1230,9 @@ class IndustryDirectoryWindow : public Window { } public: - IndustryDirectoryWindow(const WindowDesc *desc, WindowNumber number) : Window() + IndustryDirectoryWindow(WindowDesc *desc, WindowNumber number) : Window(desc) { - this->CreateNestedTree(desc); + this->CreateNestedTree(); this->vscroll = this->GetScrollbar(WID_ID_SCROLLBAR); this->industries.SetListing(this->last_sorting); @@ -1218,7 +1240,7 @@ class IndustryDirectoryWindow : public Window { this->industries.ForceRebuild(); this->BuildSortIndustriesList(); - this->FinishInitNested(desc, 0); + this->FinishInitNested(0); } ~IndustryDirectoryWindow() @@ -1383,8 +1405,8 @@ const StringID IndustryDirectoryWindow::sorter_names[] = { /** Window definition of the industry directory gui */ -static const WindowDesc _industry_directory_desc( - WDP_AUTO, 428, 190, +static WindowDesc _industry_directory_desc( + WDP_AUTO, "list_industries", 428, 190, WC_INDUSTRY_DIRECTORY, WC_NONE, 0, _nested_industry_directory_widgets, lengthof(_nested_industry_directory_widgets) @@ -1401,6 +1423,7 @@ static const NWidgetPart _nested_industry_cargoes_widgets[] = { NWidget(WWT_CLOSEBOX, COLOUR_BROWN), NWidget(WWT_CAPTION, COLOUR_BROWN, WID_IC_CAPTION), SetDataTip(STR_INDUSTRY_CARGOES_INDUSTRY_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), NWidget(WWT_SHADEBOX, COLOUR_BROWN), + NWidget(WWT_DEFSIZEBOX, COLOUR_BROWN), NWidget(WWT_STICKYBOX, COLOUR_BROWN), EndContainer(), NWidget(NWID_HORIZONTAL), @@ -1424,8 +1447,8 @@ static const NWidgetPart _nested_industry_cargoes_widgets[] = { }; /** Window description for the industry cargoes window. */ -static const WindowDesc _industry_cargoes_desc( - WDP_AUTO, 300, 210, +static WindowDesc _industry_cargoes_desc( + WDP_AUTO, "industry_cargoes", 300, 210, WC_INDUSTRY_CARGOES, WC_NONE, 0, _nested_industry_cargoes_widgets, lengthof(_nested_industry_cargoes_widgets) @@ -1648,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; @@ -1940,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); } @@ -1975,7 +1997,7 @@ 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; @@ -2031,12 +2053,12 @@ struct IndustryCargoesWindow : public Window { Dimension ind_textsize; ///< Size to hold any industry type text, as well as STR_INDUSTRY_CARGOES_SELECT_INDUSTRY. Scrollbar *vscroll; - IndustryCargoesWindow(int id) : Window() + IndustryCargoesWindow(int id) : Window(&_industry_cargoes_desc) { this->OnInit(); - this->CreateNestedTree(&_industry_cargoes_desc); + this->CreateNestedTree(); this->vscroll = this->GetScrollbar(WID_IC_SCROLLBAR); - this->FinishInitNested(&_industry_cargoes_desc, 0); + this->FinishInitNested(0); this->OnInvalidateData(id); } @@ -2167,7 +2189,7 @@ 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; @@ -2569,13 +2591,13 @@ 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; } - int selected = (this->ind_cargo >= NUM_INDUSTRYTYPES) ? this->ind_cargo - NUM_INDUSTRYTYPES : -1; + int selected = (this->ind_cargo >= NUM_INDUSTRYTYPES) ? (int)(this->ind_cargo - NUM_INDUSTRYTYPES) : -1; ShowDropDownList(this, lst, selected, WID_IC_CARGO_DROPDOWN, 0, true); break; } @@ -2586,13 +2608,13 @@ struct IndustryCargoesWindow : public Window { 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; } - int selected = (this->ind_cargo < NUM_INDUSTRYTYPES) ? this->ind_cargo : -1; + int selected = (this->ind_cargo < NUM_INDUSTRYTYPES) ? (int)this->ind_cargo : -1; ShowDropDownList(this, lst, selected, WID_IC_IND_DROPDOWN, 0, true); break; } diff --git a/src/industry_map.h b/src/industry_map.h index 33f60ff5d..7d927a13c 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); } /** @@ -157,7 +156,7 @@ static inline void SetIndustryGfx(TileIndex t, IndustryGfx gfx) } /** - * Returns this indutry tile's construction counter value + * Returns this industry tile's construction counter value * @param tile the tile to query * @pre IsTileType(tile, MP_INDUSTRY) * @return the construction counter @@ -169,7 +168,7 @@ static inline byte GetIndustryConstructionCounter(TileIndex tile) } /** - * Sets this indutry tile's construction counter value + * Sets this industry tile's construction counter value * @param tile the tile to query * @param value the new value for the construction counter * @pre IsTileType(tile, MP_INDUSTRY) diff --git a/src/industry_type.h b/src/industry_type.h index 34650d785..11828c530 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 = 64; ///< maximum number of industry types per NewGRF + +static const IndustryType NEW_INDUSTRYOFFSET = 37; ///< original number of industry types +static const IndustryType NUM_INDUSTRYTYPES = 64; ///< total number of industry types, new and old 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 diff --git a/src/industrytype.h b/src/industrytype.h index 81025482a..03b6c7973 100644 --- a/src/industrytype.h +++ b/src/industrytype.h @@ -143,7 +143,7 @@ struct IndustrySpec { }; /** - * Defines the data structure of each indivudual tile of an industry. + * Defines the data structure of each individual tile of an industry. */ struct IndustryTileSpec { CargoID accepts_cargo[3]; ///< Cargo accepted by this tile diff --git a/src/ini.cpp b/src/ini.cpp index e82daaceb..ccce19239 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 6a2087303..389dcab03 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 05133c77f..ce383b959 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 1c4235df0..9de927408 100644 --- a/src/intro_gui.cpp +++ b/src/intro_gui.cpp @@ -33,12 +33,14 @@ #include "table/strings.h" #include "table/sprites.h" +#include "safeguards.h" + struct SelectGameWindow : public Window { - SelectGameWindow(const WindowDesc *desc) : Window() + SelectGameWindow(WindowDesc *desc) : Window(desc) { - this->CreateNestedTree(desc); - this->FinishInitNested(desc, 0); + this->CreateNestedTree(); + this->FinishInitNested(0); this->OnInvalidateData(); } @@ -246,8 +248,8 @@ static const NWidgetPart _nested_select_game_widgets[] = { EndContainer(), }; -static const WindowDesc _select_game_desc( - WDP_CENTER, 0, 0, +static WindowDesc _select_game_desc( + WDP_CENTER, NULL, 0, 0, WC_SELECT_GAME, WC_NONE, 0, _nested_select_game_widgets, lengthof(_nested_select_game_widgets) diff --git a/src/landscape.cpp b/src/landscape.cpp index a4b12f857..c4116eaaf 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); @@ -937,8 +939,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 +975,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 +1099,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 +1126,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 +1143,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 +1174,7 @@ static bool FlowRiver(bool *marks, TileIndex spring, TileIndex begin) } } + marks.clear(); if (found) BuildRiver(begin, end); return found; } @@ -1184,19 +1189,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); @@ -1295,6 +1297,7 @@ void OnTick_Station(); void OnTick_Industry(); void OnTick_Companies(); +void OnTick_LinkGraph(); void CallLandscapeTick() { @@ -1304,4 +1307,5 @@ void CallLandscapeTick() OnTick_Industry(); OnTick_Companies(); + OnTick_LinkGraph(); } diff --git a/src/lang/afrikaans.txt b/src/lang/afrikaans.txt index 59d6376f5..af12261c2 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 @@ -58,7 +58,7 @@ STR_CARGO_PLURAL_BUBBLES :Borrels STR_CARGO_PLURAL_TOFFEE :Toffie STR_CARGO_PLURAL_BATTERIES :Batterye STR_CARGO_PLURAL_PLASTIC :Plastiek -STR_CARGO_PLURAL_FIZZY_DRINKS :Gas Koeldrank +STR_CARGO_PLURAL_FIZZY_DRINKS :Gaskoeldrank # Singular cargo name STR_CARGO_SINGULAR_NOTHING : @@ -92,7 +92,7 @@ STR_CARGO_SINGULAR_BUBBLE :Borrel STR_CARGO_SINGULAR_TOFFEE :Toffie STR_CARGO_SINGULAR_BATTERY :Battery STR_CARGO_SINGULAR_PLASTIC :Plastiek -STR_CARGO_SINGULAR_FIZZY_DRINK :Gas Koeldrank +STR_CARGO_SINGULAR_FIZZY_DRINK :Gaskoeldrank # Quantity of cargo STR_QUANTITY_NOTHING : @@ -100,15 +100,15 @@ STR_QUANTITY_PASSENGERS :{COMMA} passasi STR_QUANTITY_COAL :{WEIGHT_LONG} steenkool STR_QUANTITY_MAIL :{COMMA} sak{P "" ke} pos STR_QUANTITY_OIL :{VOLUME_LONG} olie -STR_QUANTITY_LIVESTOCK :{COMMA} item{P "" s} lewende hawe +STR_QUANTITY_LIVESTOCK :{COMMA} item{P "" s} lewendehawe STR_QUANTITY_GOODS :{COMMA} 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} 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_FOOD :{WEIGHT_LONG} kos @@ -118,16 +118,16 @@ STR_QUANTITY_WATER :{VOLUME_LONG} w 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_TOYS :{COMMA} ton speelgoed STR_QUANTITY_SWEETS :{COMMA} sak{P "" ke} lekkers -STR_QUANTITY_COLA :{VOLUME_LONG} Kola +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 @@ -168,20 +168,20 @@ STR_ABBREV_ALL :{TINY_FONT}ALMA # '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{P "" s} +STR_TONS :{COMMA} ton +STR_LITERS :{COMMA} liter STR_ITEMS :{COMMA} item{P "" s} STR_CRATES :{COMMA} 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 @@ -193,34 +193,43 @@ STR_COLOUR_WHITE :Wit # Units used in OpenTTD STR_UNITS_VELOCITY_IMPERIAL :{COMMA} mpu -STR_UNITS_VELOCITY_METRIC :{COMMA} km/u +STR_UNITS_VELOCITY_METRIC :{COMMA} km/h STR_UNITS_VELOCITY_SI :{COMMA} m/s STR_UNITS_POWER_IMPERIAL :{COMMA}pk STR_UNITS_POWER_METRIC :{COMMA}pk 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 STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} ton STR_UNITS_WEIGHT_LONG_SI :{COMMA} 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_LONG_METRIC :{COMMA} liter{P "" s} +STR_UNITS_VOLUME_LONG_IMPERIAL :{COMMA} gelling{P "" s} +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} vt +STR_UNITS_HEIGHT_METRIC :{COMMA} m STR_UNITS_HEIGHT_SI :{COMMA} m # Common window strings +STR_LIST_FILTER_TITLE :{BLACK}Filter string: STR_LIST_FILTER_OSKTITLE :{BLACK}Sleutel filter string in STR_LIST_FILTER_TOOLTIP :{BLACK}Tik 'n sleutelwoord in om die lys te filter +STR_TOOLTIP_GROUP_ORDER :{BLACK}Kies groepeervolgorde STR_TOOLTIP_SORT_ORDER :{BLACK}Kies hoe om te rangskik (dalende/stygende) STR_TOOLTIP_SORT_CRITERIA :{BLACK}Kies kriterea om volgens te rangskik STR_TOOLTIP_FILTER_CRITERIA :{BLACK}Kies kriteria om volgens te filter @@ -232,8 +241,9 @@ 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_STICKY :{BLACK}Merk die venster as ontoemaakbaar met die"Sluit Alle Vensters" sleutel -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 @@ -256,7 +266,6 @@ STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}Area: {N # These are used in buttons -STR_SORT_BY_CAPTION_POPULATION :{BLACK}Populasie STR_SORT_BY_CAPTION_NAME :{BLACK}Naam STR_SORT_BY_CAPTION_DATE :{BLACK}Datum # These are used in dropdowns @@ -265,11 +274,11 @@ STR_SORT_BY_PRODUCTION :Produksie STR_SORT_BY_TYPE :Tipe STR_SORT_BY_TRANSPORTED :Vervoer STR_SORT_BY_NUMBER :Nommer -STR_SORT_BY_PROFIT_LAST_YEAR :Profyt verlede jaar -STR_SORT_BY_PROFIT_THIS_YEAR :Profyt die jaar +STR_SORT_BY_PROFIT_LAST_YEAR :Wins verlede jaar +STR_SORT_BY_PROFIT_THIS_YEAR :Wins huidige jaar STR_SORT_BY_AGE :Ouderdom STR_SORT_BY_RELIABILITY :Betroubaarheid -STR_SORT_BY_TOTAL_CAPACITY_PER_CARGOTYPE :Totaale kapasiteit per vrag tipe +STR_SORT_BY_TOTAL_CAPACITY_PER_CARGOTYPE :Totale kapasiteit per vragtipe STR_SORT_BY_MAX_SPEED :Maksimum spoed STR_SORT_BY_MODEL :Model STR_SORT_BY_VALUE :Waarde @@ -277,9 +286,10 @@ STR_SORT_BY_LENGTH :Lengte STR_SORT_BY_LIFE_TIME :Oorblywende leeftyd STR_SORT_BY_TIMETABLE_DELAY :Rooster vertraging STR_SORT_BY_FACILITY :Stasie tipe -STR_SORT_BY_WAITING :Wagtend vrag waarde -STR_SORT_BY_RATING_MAX :Hoogste vrag gradering -STR_SORT_BY_RATING_MIN :Laagte vrag gradering +STR_SORT_BY_WAITING_TOTAL :Totale wagtende vrag +STR_SORT_BY_WAITING_AVAILABLE :Beskikbare wagtende vrag +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 @@ -289,6 +299,8 @@ STR_SORT_BY_RUNNING_COST :Loopkoste STR_SORT_BY_POWER_VS_RUNNING_COST :Krag/Loopkoste STR_SORT_BY_CARGO_CAPACITY :Vrag Kapasiteit STR_SORT_BY_RANGE :Afstand +STR_SORT_BY_POPULATION :Bevolking +STR_SORT_BY_RATING :Waardering # Tooltips for the main toolbar STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Pouseer spel @@ -301,20 +313,22 @@ STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Toon sub STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Vertoon lys van maatskappy se stasies STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Vertoon maatskappy se finasiële inligting STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Vertoon algemene maatskappy inligting +STR_TOOLBAR_TOOLTIP_DISPLAY_STORY_BOOK :{BLACK}Toon storieboek +STR_TOOLBAR_TOOLTIP_DISPLAY_GOALS_LIST :{BLACK}Toon doellys 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 @@ -326,7 +340,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 @@ -339,8 +353,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 @@ -354,7 +368,7 @@ STR_SETTINGS_MENU_NEWGRF_SETTINGS :NewGRF stelling 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 @@ -371,19 +385,19 @@ STR_FILE_MENU_SEPARATOR : STR_FILE_MENU_EXIT :Verlaat ############ range ends here -############ range for map menu starts +# map menu STR_MAP_MENU_MAP_OF_WORLD :Kaart van wêreld -STR_MAP_MENU_EXTRA_VIEW_PORT :Ekstra gesigswerf +STR_MAP_MENU_EXTRA_VIEW_PORT :Ekstra toonvenster +STR_MAP_MENU_LINGRAPH_LEGEND :Vragverspreidingsleutel STR_MAP_MENU_SIGN_LIST :Teken lys -############ range for town menu starts, yet the town directory is shown in the map menu in the scenario editor + +############ range for town menu starts STR_TOWN_MENU_TOWN_DIRECTORY :Dorp gids -############ end of the 'Display map' dropdown STR_TOWN_MENU_FOUND_TOWN :Stig dorp -############ end of the 'Town' dropdown +############ range ends here ############ range for subsidies menu starts STR_SUBSIDIES_MENU_SUBSIDIES :Subsidies -STR_SUBSIDIES_MENU_GOAL :Huidige doelwitte ############ range ends here ############ range for graph menu starts @@ -392,23 +406,25 @@ STR_GRAPH_MENU_INCOME_GRAPH :Inkomste grafie STR_GRAPH_MENU_DELIVERED_CARGO_GRAPH :Gelewerde vrag grafiek STR_GRAPH_MENU_PERFORMANCE_HISTORY_GRAPH :Werkverrigting geskiedenis grafiek STR_GRAPH_MENU_COMPANY_VALUE_GRAPH :Maatskappy waarde grafiek -STR_GRAPH_MENU_CARGO_PAYMENT_RATES :Vrag vergoeding koerse +STR_GRAPH_MENU_CARGO_PAYMENT_RATES :Vragbetalingstariewe ############ range ends here ############ range for company league menu starts STR_GRAPH_MENU_COMPANY_LEAGUE_TABLE :Maatskappy verbond tabel STR_GRAPH_MENU_DETAILED_PERFORMANCE_RATING :Omstandig prestasie gradering +STR_GRAPH_MENU_HIGHSCORE :Hoogste tellings tafel ############ range ends here ############ range for industry menu starts STR_INDUSTRY_MENU_INDUSTRY_DIRECTORY :Nywerheid Gids +STR_INDUSTRY_MENU_INDUSTRY_CHAIN :Nywerheidsskakels STR_INDUSTRY_MENU_FUND_NEW_INDUSTRY :Konsolideer nuwe nywerheid ############ 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_MONORAIL_CONSTRUCTION :Enkelspoor 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 @@ -426,7 +442,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 @@ -437,7 +453,7 @@ STR_TOOLBAR_SOUND_MUSIC :Klank/musiek ############ range for message menu starts STR_NEWS_MENU_LAST_MESSAGE_NEWS_REPORT :Laaste boodskap/nuus verslag -STR_NEWS_MENU_MESSAGE_HISTORY_MENU :Boodskap Geskidenis +STR_NEWS_MENU_MESSAGE_HISTORY_MENU :Boodskapgeskiedenis ############ range ends here ############ range for about menu starts @@ -455,7 +471,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 @@ -471,22 +487,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 @@ -525,15 +559,15 @@ 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}Bedryfswins Grafiek -STR_GRAPH_INCOME_CAPTION :{WHITE}Inkome Grafiek +STR_GRAPH_OPERATING_PROFIT_CAPTION :{WHITE}Bedryfswins grafiek +STR_GRAPH_INCOME_CAPTION :{WHITE}Inkomstegrafiek STR_GRAPH_CARGO_DELIVERED_CAPTION :{WHITE}Eenheide van vrag afgelewer STR_GRAPH_COMPANY_PERFORMANCE_RATINGS_CAPTION :{WHITE}Maatskappy prestasie graderings (maksimum gradering=1000) -STR_GRAPH_COMPANY_VALUES_CAPTION :{WHITE}Maatskappy waarde +STR_GRAPH_COMPANY_VALUES_CAPTION :{WHITE}Maatskappywaarde -STR_GRAPH_CARGO_PAYMENT_RATES_CAPTION :{WHITE}Vrag Betaalings Grade +STR_GRAPH_CARGO_PAYMENT_RATES_CAPTION :{WHITE}Vragbetalingstariewe STR_GRAPH_CARGO_PAYMENT_RATES_X_LABEL :{TINY_FONT}{BLACK}Dae in deurtog -STR_GRAPH_CARGO_PAYMENT_RATES_TITLE :{TINY_FONT}{BLACK}Betaaling vir aflewering van 10 eenhuide (of 10,000 liters) van vrag 'n afstand van 20 blokkies +STR_GRAPH_CARGO_PAYMENT_RATES_TITLE :{TINY_FONT}{BLACK}Inkomste vir aflewering van 10 eenhede (of 10,000 liter) vrag oor 'n afstand van 20 teëls STR_GRAPH_CARGO_ENABLE_ALL :{TINY_FONT}{BLACK}Skakel alles aan STR_GRAPH_CARGO_DISABLE_ALL :{TINY_FONT}{BLACK}Skakel alles af STR_GRAPH_CARGO_TOOLTIP_ENABLE_ALL :{BLACK}Vertoon alle vragte op die vrag koste grafiek @@ -545,7 +579,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 @@ -558,7 +592,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 @@ -570,7 +604,7 @@ STR_PERFORMANCE_DETAIL_SELECT_COMPANY_TOOLTIP :{BLACK}Kyk beso ############ Those following lines need to be in this order!! STR_PERFORMANCE_DETAIL_VEHICLES :{BLACK}Voertuie: STR_PERFORMANCE_DETAIL_STATIONS :{BLACK}Stasies: -STR_PERFORMANCE_DETAIL_MIN_PROFIT :{BLACK}Min. profyt: +STR_PERFORMANCE_DETAIL_MIN_PROFIT :{BLACK}Min. wins: STR_PERFORMANCE_DETAIL_MIN_INCOME :{BLACK}Min. inkomste: STR_PERFORMANCE_DETAIL_MAX_INCOME :{BLACK}Maks. inkomste: STR_PERFORMANCE_DETAIL_DELIVERED :{BLACK}Afgelewer: @@ -579,16 +613,16 @@ STR_PERFORMANCE_DETAIL_MONEY :{BLACK}Geld: STR_PERFORMANCE_DETAIL_LOAN :{BLACK}Lening: STR_PERFORMANCE_DETAIL_TOTAL :{BLACK}Totaal: ############ End of order list -STR_PERFORMANCE_DETAIL_VEHICLES_TOOLTIP :{BLACK}Nommer van voertuie wat 'n profyt gemaak het laas jaar; dit sluit in pad voertuie, treine, skepe en vliegtuie +STR_PERFORMANCE_DETAIL_VEHICLES_TOOLTIP :{BLACK}Aantal voertuie wat verlede jaar wins gemaak het (insl. padvoertuie, treine, skepe en vliegtuie) STR_PERFORMANCE_DETAIL_STATIONS_TOOLTIP :{BLACK}Aantal stasies wat onlangs herstel is. Treinstasies, busstasies, lughawens ensovoorts word apart getel selfs al behoort hulle aan dieselfde stasie STR_PERFORMANCE_DETAIL_MIN_PROFIT_TOOLTIP :{BLACK}Die wins van die voertuig met die laagste inkomste (van alle voertuie ouer as 2 jaar) -STR_PERFORMANCE_DETAIL_MIN_INCOME_TOOLTIP :{BLACK}Bedrag van kontant gemaak in die maand met die laagste profyt in die laaste 12 kwartiers -STR_PERFORMANCE_DETAIL_MAX_INCOME_TOOLTIP :{BLACK}Bedrag van kontant gemaak in die maand met die hoogste profyt in die laaste 12 kwartiers -STR_PERFORMANCE_DETAIL_DELIVERED_TOOLTIP :{BLACK}Eenheide van vrag afgelewer in die laaste vier kwartiers -STR_PERFORMANCE_DETAIL_CARGO_TOOLTIP :{BLACK}Nommer van vrag tipes afgelewer in die verlede kwartier +STR_PERFORMANCE_DETAIL_MIN_INCOME_TOOLTIP :{BLACK}Kontant verdien in die laaste kwartaal met die laagste wins van die laaste 12 kwartale +STR_PERFORMANCE_DETAIL_MAX_INCOME_TOOLTIP :{BLACK}Kontant verdien in die laaste kwartaal met die grootste wins van die laaste 12 kwartale +STR_PERFORMANCE_DETAIL_DELIVERED_TOOLTIP :{BLACK}Eenhede vrag in die laaste vier kwartale afgelewer +STR_PERFORMANCE_DETAIL_CARGO_TOOLTIP :{BLACK}Aantal vragtipes afgelewer in die verlede kwartaal STR_PERFORMANCE_DETAIL_MONEY_TOOLTIP :{BLACK}Bedrag van geld die maatskappy het in die bank STR_PERFORMANCE_DETAIL_LOAN_TOOLTIP :{BLACK}Die bedrag van geld dat die maatskappy het gevat op lening -STR_PERFORMANCE_DETAIL_TOTAL_TOOLTIP :{BLACK}Totaale punte uit van moontlike punte +STR_PERFORMANCE_DETAIL_TOTAL_TOOLTIP :{BLACK}Totale punte uit moontlike punte # Music window STR_MUSIC_JAZZ_JUKEBOX_CAPTION :{WHITE}Jazz Blêrkas @@ -611,7 +645,7 @@ STR_MUSIC_TRACK :{TINY_FONT}{BLA STR_MUSIC_XTITLE :{TINY_FONT}{BLACK}Titel STR_MUSIC_SHUFFLE :{TINY_FONT}{BLACK}Skommel STR_MUSIC_PROGRAM :{TINY_FONT}{BLACK}Musiek lys -STR_MUSIC_TOOLTIP_SKIP_TO_PREVIOUS_TRACK :{BLACK}Gaan terug na vorig liedjie in seleksie +STR_MUSIC_TOOLTIP_SKIP_TO_PREVIOUS_TRACK :{BLACK}Gaan terug na vorige liedjie in keuse-lys STR_MUSIC_TOOLTIP_SKIP_TO_NEXT_TRACK_IN_SELECTION :{BLACK}Gaan na volgende liedjie in seleksie STR_MUSIC_TOOLTIP_STOP_PLAYING_MUSIC :{BLACK}Hou op musiek speel STR_MUSIC_TOOLTIP_START_PLAYING_MUSIC :{BLACK}Begin musiek speel @@ -625,7 +659,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 @@ -634,8 +668,8 @@ 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} @@ -648,7 +682,7 @@ STR_HIGHSCORE_PERFORMANCE_TITLE_CAPITALIST :Kapitalis STR_HIGHSCORE_PERFORMANCE_TITLE_MAGNATE :Magnaat STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL :Magnaat STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY :Magnaat van die Eeu -STR_HIGHSCORE_NAME :{BIG_FONT}{PRESIDENT_NAME}, {COMPANY} +STR_HIGHSCORE_NAME :{PRESIDENT_NAME}, {COMPANY} STR_HIGHSCORE_STATS :{BIG_FONT}'{STRING}' ({COMMA}) STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{BLACK}{COMPANY} behaal '{STRING}' status! STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{WHITE}{PRESIDENT_NAME} van {COMPANY} behaal '{STRING}' status! @@ -659,17 +693,20 @@ STR_SMALLMAP_CAPTION :{WHITE}Kaart - STR_SMALLMAP_TYPE_CONTOURS :Kontoere STR_SMALLMAP_TYPE_VEHICLES :Voertuie STR_SMALLMAP_TYPE_INDUSTRIES :Nywerhede +STR_SMALLMAP_TYPE_ROUTEMAP :Vragverspreiding STR_SMALLMAP_TYPE_ROUTES :Roetes STR_SMALLMAP_TYPE_VEGETATION :Plantegroei STR_SMALLMAP_TYPE_OWNERS :Eienaars STR_SMALLMAP_TOOLTIP_SHOW_LAND_CONTOURS_ON_MAP :{BLACK}Vertoon land hoogtelyne op kaart STR_SMALLMAP_TOOLTIP_SHOW_VEHICLES_ON_MAP :{BLACK}Vertoon voertuie op kaart STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRIES_ON_MAP :{BLACK}Wys nywerhede op kaart +STR_SMALLMAP_TOOLTIP_SHOW_LINK_STATS_ON_MAP :{BLACK}Vertoon vragverspreiding op kaart 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_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ë @@ -677,12 +714,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 @@ -703,6 +740,7 @@ STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLA STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Skakel dorp name aan/af op kaart STR_SMALLMAP_CENTER :{BLACK}Senter die kleinkaart op die huidige posisie 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}Sper alle @@ -710,9 +748,11 @@ 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 +STR_SMALLMAP_TOOLTIP_ENABLE_ALL_CARGOS :{BLACK}Vertoon alle vrag op die kaart # Status bar messages STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Wys laaste boodskap of nuus verslag @@ -722,26 +762,26 @@ STR_STATUSBAR_AUTOSAVE :{RED}OUTOSTOOR STR_STATUSBAR_SAVING_GAME :{RED}* * STOOR SPELETJIE * * # News message history -STR_MESSAGE_HISTORY :{WHITE}Boodskap Geskidenis +STR_MESSAGE_HISTORY :{WHITE}Boodskapgeskiedenis STR_MESSAGE_HISTORY_TOOLTIP :{BLACK}'n Lys van al die onlangs nuus boodskappe STR_MESSAGE_NEWS_FORMAT :{STRING} - {STRING} STR_NEWS_MESSAGE_CAPTION :{WHITE}Boodskap STR_NEWS_CUSTOM_ITEM :{BIG_FONT}{BLACK}{STRING} -STR_NEWS_FIRST_TRAIN_ARRIVAL :{BIG_FONT}{BLACK}Burgers vier fees . . .{}Eerste trein arriveer by {STATION}! -STR_NEWS_FIRST_BUS_ARRIVAL :{BIG_FONT}{BLACK}Burgers vier fees . . .{}Eerste bus arriveer by {STATION}! -STR_NEWS_FIRST_TRUCK_ARRIVAL :{BIG_FONT}{BLACK}Burgers vier fees . . .{}Eerste trok arriveer by {STATION}! -STR_NEWS_FIRST_PASSENGER_TRAM_ARRIVAL :{BIG_FONT}{BLACK}Burgers vier fees . . .{}Eerste passasier trem arriveer by {STATION}! -STR_NEWS_FIRST_CARGO_TRAM_ARRIVAL :{BIG_FONT}{BLACK}Burgers vier fees . . .{}Eerste vrag trem arriveer by {STATION}! -STR_NEWS_FIRST_SHIP_ARRIVAL :{BIG_FONT}{BLACK}Burgers vier fees . . .{}Eerste skip arriveer by {STATION}! -STR_NEWS_FIRST_AIRCRAFT_ARRIVAL :{BIG_FONT}{BLACK}Burgers vier fees . . .{}Eerste vliegtuig arriveer by {STATION}! +STR_NEWS_FIRST_TRAIN_ARRIVAL :{BIG_FONT}{BLACK}Burgers vier fees . . .{}Die eerste trein het by {STATION} aangekom! +STR_NEWS_FIRST_BUS_ARRIVAL :{BIG_FONT}{BLACK}Burgers vier fees . . .{}Die eerste bus het by {STATION} aangekom! +STR_NEWS_FIRST_TRUCK_ARRIVAL :{BIG_FONT}{BLACK}Burgers vier fees . . .{}Die eerste trok het by {STATION} aangekom! +STR_NEWS_FIRST_PASSENGER_TRAM_ARRIVAL :{BIG_FONT}{BLACK}Burgers vier fees . . .{}Die eerste passasiertrem het by {STATION} aangekom! +STR_NEWS_FIRST_CARGO_TRAM_ARRIVAL :{BIG_FONT}{BLACK}Burgers vier fees . . .{}Die eerste vragtrem het by {STATION} aangekom! +STR_NEWS_FIRST_SHIP_ARRIVAL :{BIG_FONT}{BLACK}Burgers vier fees . . .{}Die eerste boot het by {STATION} aangekom! +STR_NEWS_FIRST_AIRCRAFT_ARRIVAL :{BIG_FONT}{BLACK}Burgers vier fees . . .{}Die eerste vliegtuig het by {STATION} aagekom! STR_NEWS_TRAIN_CRASH :{BIG_FONT}{BLACK}Trein Botsing!{}{COMMA} sterf in vuurbol na botsing STR_NEWS_ROAD_VEHICLE_CRASH_DRIVER :{BIG_FONT}{BLACK}Pad Voertuig Botsing!{}Bestuurder sterf in vuurbol na botsing met trein STR_NEWS_ROAD_VEHICLE_CRASH :{BIG_FONT}{BLACK}Pad voertuig Botsing!{}{COMMA} sterf in vuurbol na botsing met trein -STR_NEWS_AIRCRAFT_CRASH :{BIG_FONT}{BLACK}Vliegtuig Botsing!{}{COMMA} stef in die vuurbol by {STATION} -STR_NEWS_PLANE_CRASH_OUT_OF_FUEL :{BIG_FONT}{BLACK}Vliegtuig Ongeluk!{}Vliegtuig het geen petrol nie, {COMMA} sterf in 'n bal van vuur! +STR_NEWS_AIRCRAFT_CRASH :{BIG_FONT}{BLACK}Vliegongeluk!{}{COMMA} sterf in die neerstorting naby {STATION} +STR_NEWS_PLANE_CRASH_OUT_OF_FUEL :{BIG_FONT}{BLACK}Vliegongeluk!{}Vliegtuig het nie genoeg brandstof nie, {COMMA} sterf in neerstorting! STR_NEWS_DISASTER_ZEPPELIN :{BIG_FONT}{BLACK}Zeppelin ramp by {STATION}! STR_NEWS_DISASTER_SMALL_UFO :{BIG_FONT}{BLACK}Pad voertuig vernietig in 'VVV' botsing! @@ -752,11 +792,11 @@ STR_NEWS_DISASTER_COAL_MINE_SUBSIDENCE :{BIG_FONT}{BLAC 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! @@ -764,12 +804,12 @@ STR_PRESIDENT_NAME_MANAGER :{BLACK}{PRESIDE STR_NEWS_NEW_TOWN :{BLACK}{BIG_FONT}{STRING} borg konstruksie van nuwe dorp {TOWN}! -STR_NEWS_INDUSTRY_CONSTRUCTION :{BIG_FONT}{BLACK}Nuwe {STRING} word gebou naby {TOWN}! +STR_NEWS_INDUSTRY_CONSTRUCTION :{BIG_FONT}{BLACK}'n Nuwe {STRING} word naby {TOWN} gebou! STR_NEWS_INDUSTRY_PLANTED :{BIG_FONT}{BLACK}Nuwe {STRING} word naby {TOWN} beplant! -STR_NEWS_INDUSTRY_CLOSURE_GENERAL :{BIG_FONT}{BLACK}{STRING} aankondig dreigend sluiting! -STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS :{BIG_FONT}{BLACK}Lewering probleme veroorsaak {STRING} om dreigend sluting te aankondig! -STR_NEWS_INDUSTRY_CLOSURE_LACK_OF_TREES :{BIG_FONT}{BLACK}Tekort van naby boome veroorsaak {STRING} om dreigend sluiting te aankondig! +STR_NEWS_INDUSTRY_CLOSURE_GENERAL :{BIG_FONT}{BLACK}{STRING} het aangekondig dat hulle binnekort gaan sluit! +STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS :{BIG_FONT}{BLACK}{STRING} het aangekondig dat hulle binnekort gaan sluit as gevolg van 'n tekort aan die vereiste rou materiaal! +STR_NEWS_INDUSTRY_CLOSURE_LACK_OF_TREES :{BIG_FONT}{BLACK}{STRING} het aangekondig dat hulle binnekort gaan sluit as gevolg van 'n tekort aan bome in die omgewing! STR_NEWS_EURO_INTRODUCTION :{BIG_FONT}{BLACK}Europees Geldelik Samesmelting!{}{}Die Euro is bekend gestel as die enigste geldeenheid vir daagliks transaksies in u land! STR_NEWS_BEGIN_OF_RECESSION :{BIG_FONT}{BLACK}Wêreld Resessie!{}{}Finasiële kenners vrees die ergste terwyl ekonomie val! @@ -781,7 +821,7 @@ STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_OIL :{BIG_FONT}{BLAC 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 @@ -789,20 +829,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 @@ -817,8 +856,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! @@ -830,65 +869,62 @@ STR_NEWS_EXCLUSIVE_RIGHTS_TITLE :{BIG_FONT}{BLAC STR_NEWS_EXCLUSIVE_RIGHTS_DESCRIPTION :{BIG_FONT}{BLACK} die dorpsraad van {TOWN} het 'n kontrak met {STRING} aan gegaan vir een jaaar se eksklusiewe vervoer regte # Extra view window -STR_EXTRA_VIEW_PORT_TITLE :{WHITE}Gesigswerf {COMMA} -STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}Kopie na gesigswerf -STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}Kopieer die ligging van die hoof vertoning na die gesigswerf -STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}Deeg van gesigswerf +STR_EXTRA_VIEW_PORT_TITLE :{WHITE}Toonvenster {COMMA} +STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}Kopie na toonvenster +STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}Dupliseer die ligging van die hooftoonvenster na die toonvenster +STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}Plak vanaf toonvenster STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}Plak die lokasie van die gesigspunt na die hoofskerm # 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... +STR_GAME_OPTIONS_CURRENCY_GEL :Georgiaanse Lari (GEL) +STR_GAME_OPTIONS_CURRENCY_IRR :Iraanse Rial (IRR) ############ end of currency region -STR_GAME_OPTIONS_MEASURING_UNITS_FRAME :{BLACK}Meet eenhede -STR_GAME_OPTIONS_MEASURING_UNITS_DROPDOWN_TOOLTIP :{BLACK}Meet eenhede keuse ############ start of measuring units region -STR_GAME_OPTIONS_MEASURING_UNITS_IMPERIAL :Imperiaal -STR_GAME_OPTIONS_MEASURING_UNITS_METRIC :Metriek -STR_GAME_OPTIONS_MEASURING_UNITS_SI :SI ############ 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 op linkerkant -STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_RIGHT :Bestuur op regterkant +STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :Bestuur aan linkerkant +STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_RIGHT :Bestuur aan regterkant STR_GAME_OPTIONS_TOWN_NAMES_FRAME :{BLACK}Dorp name STR_GAME_OPTIONS_TOWN_NAMES_DROPDOWN_TOOLTIP :{BLACK}Kies dorp naam styl @@ -920,11 +956,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 @@ -936,13 +974,10 @@ 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_BASE_GRF :{BLACK}Basis grafiek stel -STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Kies die basis grafiek stel om te gebruik +STR_GAME_OPTIONS_BASE_GRF :{BLACK}Basis-grafikastel +STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Kies die basis-grafikastel stel om te gebruik STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} verlore / korrupte ler{P "" s} -STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Addisionele informasie oor die basis grapfiek stel +STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Meer inligting oor die basis-grafikastel STR_GAME_OPTIONS_BASE_SFX :{BLACK}Basis klank stel STR_GAME_OPTIONS_BASE_SFX_TOOLTIP :{BLACK}Kies die basis klank stel om te gebruik @@ -953,6 +988,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 @@ -1040,6 +1076,9 @@ STR_WARNING_NO_SUITABLE_AI :{WHITE}Geen ges # Advanced settings window STR_CONFIG_SETTING_CAPTION :{WHITE}Gevorderde 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 STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT :(geen verduideliking beskikbaar) STR_CONFIG_SETTING_DEFAULT_VALUE :{LTBLUE}Standaard waarde: {ORANGE}{STRING} STR_CONFIG_SETTING_TYPE :{LTBLUE}Stelling tipe: {ORANGE}{STRING} @@ -1049,12 +1088,30 @@ 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_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 verstellings +STR_CONFIG_SETTING_RESTRICT_ADVANCED :Gevorderde verstellings +STR_CONFIG_SETTING_RESTRICT_ALL :Ekspert verstellings / alle 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-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 -STR_CONFIG_SETTING_DISABLED :gedeaktiveer +STR_CONFIG_SETTING_DISABLED :Gedeaktiveer STR_CONFIG_SETTING_COMPANIES_OFF :Af STR_CONFIG_SETTING_COMPANIES_OWN :Eie maatskappy @@ -1068,10 +1125,30 @@ STR_CONFIG_SETTING_HORIZONTAL_POS_LEFT :Links STR_CONFIG_SETTING_HORIZONTAL_POS_CENTER :Senter STR_CONFIG_SETTING_HORIZONTAL_POS_RIGHT :Regs - -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_MAXIMUM_INITIAL_LOAN :Maksimum aanvanklike lening: {STRING} +STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Maksimum bedrag wat 'n maatskappy kan leen (sonder die inagneming van inflasie) +STR_CONFIG_SETTING_INTEREST_RATE :Rentekoers: {STRING} +STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Lening rentekoers: beheer ook inflasie indien aangeskakel +STR_CONFIG_SETTING_RUNNING_COSTS :Bedryfskostes: {STRING} +STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT :Verstel die vlak van instandhouding en bedryfskoste van voertuie en infrastruktuur +STR_CONFIG_SETTING_CONSTRUCTION_SPEED :Konstruksie spoed: {STRING} +STR_CONFIG_SETTING_CONSTRUCTION_SPEED_HELPTEXT :Beperk die hoeveelheid konstruksie aksies vir die AIs +STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS :Voertuig onklaarrakings: {STRING} +STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS_HELPTEXT :Beheer hoe gereeld voertuie breek as hulle in 'n toestand van swak instandhouding verkeer +STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER :Subsidie vermenigvuldiger: {STRING} +STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT :Verstel hoeveel is betaalbaar vir gesubsidieerde aansluitings +STR_CONFIG_SETTING_CONSTRUCTION_COSTS :Konstruksie kostes: {STRING} +STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :Verstel die vlak van konstruksie en aankoop-kostes +STR_CONFIG_SETTING_RECESSIONS :Resessies: {STRING} +STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :As dit geaktiveer is, kan resessie elke paar jaar voorkom. Gedurende 'n resessie word is vervaardiging drasties minder en aan die einde van die resessie word dit weer herstel na normale vlakke. +STR_CONFIG_SETTING_TRAIN_REVERSING :Verhoed dat treine kan omdraai in stasies: {STRING} +STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :As dit geaktiveer is, sal treine nie in deurstasies omdraai nie, selfs al is daar 'n korter roete deur om te draai. +STR_CONFIG_SETTING_DISASTERS :Rampe: {STRING} +STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Skakel rampe aan wat af en toe voertuie of infrastruktuur kan blokkeer of vernietig. +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_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_HELPTEXT :Laat verskillende groote opvang gebiede toe vir verskillende tipes stasies en lughawens @@ -1094,24 +1171,18 @@ 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_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_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 -STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :vooruitsigting +STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :Geen +STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :As ander nywerhede +STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :Vooruitsigting STR_CONFIG_SETTING_INDUSTRY_PLATFORM :Plat area rondom nywerhede: {STRING} STR_CONFIG_SETTING_INDUSTRY_PLATFORM_HELPTEXT :Hoeveelheid van plat ruimte om 'n bedryf. Dit verseker dat leë ruimte beskikbaar sal bly, om 'n bedryf, vir die bou van spore, ensovoorts STR_CONFIG_SETTING_MULTIPINDTOWN :Laat meer as een soortgelyke nywerhede per dorp toe: {STRING} @@ -1130,10 +1201,12 @@ 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_DISABLED :gedeaktiveer +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 +STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT_FULLSCREEN :Hoof skerm, slegs volskerm +STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT :Hoof skerm +STR_CONFIG_SETTING_AUTOSCROLL_EVERY_VIEWPORT :Elke skerm STR_CONFIG_SETTING_BRIBE :Laat omkooping van die plaaslike raad toe: {STRING} STR_CONFIG_SETTING_BRIBE_HELPTEXT :Laat maatskappye die plaaslike dorpsraad probeer omkoop. Indien 'n inspekteur die omkoopgeld opgemerk, sal die maatskappy nie in staat wees om in die dorp te werk vir ses maande. STR_CONFIG_SETTING_ALLOW_EXCLUSIVE :Laat die koop van eksklusief vervoer regte toe: {STRING} @@ -1151,17 +1224,13 @@ STR_CONFIG_SETTING_PLANE_SPEED_HELPTEXT :Stel die relati STR_CONFIG_SETTING_PLANE_SPEED_VALUE :1 / {COMMA} STR_CONFIG_SETTING_PLANE_CRASHES :Aantal vliegtuig botsings: {STRING} STR_CONFIG_SETTING_PLANE_CRASHES_HELPTEXT :Stel die kans van 'n vliegtuig ongeluk om te gebeur -STR_CONFIG_SETTING_PLANE_CRASHES_NONE :geen -STR_CONFIG_SETTING_PLANE_CRASHES_REDUCED :verminderd -STR_CONFIG_SETTING_PLANE_CRASHES_NORMAL :normaal +STR_CONFIG_SETTING_PLANE_CRASHES_NONE :Geen +STR_CONFIG_SETTING_PLANE_CRASHES_REDUCED :Verminderd +STR_CONFIG_SETTING_PLANE_CRASHES_NORMAL :Normaal STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Laat deur-ry padhalte op dorp besite paaie toe: {STRING} 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 @@ -1173,70 +1242,95 @@ STR_CONFIG_SETTING_WARN_LOST_VEHICLE :Waarsku indien STR_CONFIG_SETTING_WARN_LOST_VEHICLE_HELPTEXT :veroorsaak boodskappe oor voertuie wat nie in staat is om 'n pad na hul bestel bestemming te vind nie STR_CONFIG_SETTING_ORDER_REVIEW :Hersien voertuig se opdrae: {STRING} STR_CONFIG_SETTING_ORDER_REVIEW_HELPTEXT :As dit geaktiveer is, word die voertuie se bevel van tyd tot tyd nagegaan, en 'n paar ooglopende kwessies sal berig word, met 'n nuus boodskap, as dit opgespoor word -STR_CONFIG_SETTING_ORDER_REVIEW_OFF :nee -STR_CONFIG_SETTING_ORDER_REVIEW_EXDEPOT :ja, maar sluit stil staande voertuie uit -STR_CONFIG_SETTING_ORDER_REVIEW_ON :van alle voertuie +STR_CONFIG_SETTING_ORDER_REVIEW_OFF :Nee +STR_CONFIG_SETTING_ORDER_REVIEW_EXDEPOT :Ja, maar sluit stilstaande voertuie uit +STR_CONFIG_SETTING_ORDER_REVIEW_ON :Van alle voertuie STR_CONFIG_SETTING_WARN_INCOME_LESS :Waarsku as 'n voertuig se inkomste negatief is: {STRING} STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :As dit geaktiveer is, word daar 'n nuus boodskap gestuur wanneer, in 'n kalenderjaar, 'n voertuig nie wins gemaak het nie. STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Voertuie verval nooit nie: {STRING} 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 STR_CONFIG_SETTING_AUTORENEW_MONEY :Outohernuwe minimum vereisde geld vir hernuwe: {STRING} STR_CONFIG_SETTING_AUTORENEW_MONEY_HELPTEXT :Minimale bedrag geld wat in die bank moet bly, voor die oorweging van motor-vernuwing voertuie STR_CONFIG_SETTING_ERRMSG_DURATION :Tyd wat fout boodskap wys: {STRING} +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_VALUE :Sweef vir {COMMA} sekonde{P 0 "" s} -STR_CONFIG_SETTING_HOVER_DELAY_DISABLED :Regs kliek -STR_CONFIG_SETTING_POPULATION_IN_LABEL :Toon dorp populasie in die dorp naam etiket: {STRING} -STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :Vertoon die populasie van 'n dorp in die naam etiket op die kaart +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 STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR :Verbind landereye werktuigbaan na spoor/pad/water/lughawe werktuigbaan: {STRING} +STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR_HELPTEXT :Vertoon die landskapwerktuigbaan wanneer 'n konstruksiewerktuigbaan vertoon word. STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR :Land kleur gebruik op die klein landkaart: {STRING} STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :Kleur van die terrein in die klein landkaart STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :Groen STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :Donkergroen STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Violet STR_CONFIG_SETTING_REVERSE_SCROLLING :Agteruit rol rigting: {STRING} +STR_CONFIG_SETTING_REVERSE_SCROLLING_HELPTEXT :As dit geaktiveer is, skuif die muis die kaart, andersins skuif die muis die kamera. STR_CONFIG_SETTING_SMOOTH_SCROLLING :Maak kykpoort beweegings glad: {STRING} +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_LIVERIES :Toon maatskappy lewerye: {STRING} +STR_CONFIG_SETTING_MEASURE_TOOLTIP_HELPTEXT :Vertoon teëlafstand en hoogteverskil gedurende bouwerk. +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 STR_CONFIG_SETTING_LIVERIES_ALL :Alle maatskappye STR_CONFIG_SETTING_PREFER_TEAMCHAT :Verkies span klets met : {STRING} +STR_CONFIG_SETTING_PREFER_TEAMCHAT_HELPTEXT :Wissel die en sleutels om spanklets en openbare klets oop te maak. STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING :Funksie van rolwiel: {STRING} STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING_HELPTEXT :Aktiveer "scrolling" met twee-dimensieële muis-wiele STR_CONFIG_SETTING_SCROLLWHEEL_ZOOM :Zoem kaart @@ -1244,14 +1338,24 @@ STR_CONFIG_SETTING_SCROLLWHEEL_SCROLL :Rol kaart STR_CONFIG_SETTING_SCROLLWHEEL_OFF :Af STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER :Kaart rolwiel spoed: {STRING} STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER_HELPTEXT :Kontroleer die sensitiwiteit van die muis-wiel "scrolling" - -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 :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-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 @@ -1259,20 +1363,18 @@ STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :lank (31ste Des 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_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_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 veranderings 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_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 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 STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :Vertoon rooster in "ticks" liewer as dae: {STRING} STR_CONFIG_SETTING_TIMETABLE_IN_TICKS_HELPTEXT :Wys die rystye in tydroosters in speletjie "ticks" inplaas van dae STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE :Toon aankoms en vertrek in tydroosters: {STRING} @@ -1280,91 +1382,155 @@ STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE_HELPTEXT :Vertoon verwagt 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_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 STR_CONFIG_SETTING_EXPENSES_LAYOUT :Groep uitgawes in maatskappy finansies venster: {STRING} - +STR_CONFIG_SETTING_EXPENSES_LAYOUT_HELPTEXT :Verstel die uitleg van die maatskappy uitgawes venster + +STR_CONFIG_SETTING_SOUND_TICKER :Nuustikker: {STRING} +STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :Speel klank vir opgesomde nuus boodskappe +STR_CONFIG_SETTING_SOUND_NEWS :Koerant: {STRING} +STR_CONFIG_SETTING_SOUND_NEWS_HELPTEXT :Speel klank wanneer koerante vertoon word +STR_CONFIG_SETTING_SOUND_NEW_YEAR :Einde van jaar: {STRING} +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 :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} +STR_CONFIG_SETTING_SOUND_VEHICLE_HELPTEXT :Speel klanke vir voertuie +STR_CONFIG_SETTING_SOUND_AMBIENT :Omgewing: {STRING} +STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :Speel omgewingsklankeffekte van die landskap, industriëe en dorpe STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING :Deaktiveer infrastruktuur bouery as geen geskikte voertuie beskikbaar is nie: {STRING} -STR_CONFIG_SETTING_MAX_TRAINS :Max treine per speler: {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 :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} +STR_CONFIG_SETTING_AI_BUILDS_TRAINS_HELPTEXT :Aktiveer om te verhoed dat die rekenaar speler kan treine bou STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES :Sper pad voertuie vir rekenaar: {STRING} +STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES_HELPTEXT :Aktiveer om te verhoed dat die rekenaar speler kan pad voertuie bou STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT :Sper vliegtuie vir rekenaar: {STRING} +STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT_HELPTEXT :Aktiveer om te verhoed dat die rekenaar speler kan vliegtuie bou STR_CONFIG_SETTING_AI_BUILDS_SHIPS :Sper skepe vir rekenaar: {STRING} +STR_CONFIG_SETTING_AI_BUILDS_SHIPS_HELPTEXT :Aktiveer om te verhoed dat die rekenaar speler kan skepe bou +STR_CONFIG_SETTING_AI_PROFILE :Verstek verstellings profiel: {STRING} +STR_CONFIG_SETTING_AI_PROFILE_HELPTEXT :Kies watter stellingsprofiel om te gebruik vir rekenaarspelers of beginwaardes vir nuwe rekenaarspelers +STR_CONFIG_SETTING_AI_PROFILE_EASY :Maklik +STR_CONFIG_SETTING_AI_PROFILE_MEDIUM :Middelmatig +STR_CONFIG_SETTING_AI_PROFILE_HARD :Moeilik STR_CONFIG_SETTING_AI_IN_MULTIPLAYER :Laat AI in multispeler toe: {STRING} STR_CONFIG_SETTING_AI_IN_MULTIPLAYER_HELPTEXT :Laat AI Rekenaaar spelers by 'n multi-speler spel toe STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES :#opcodes voor die skripte gestaak word: {STRING} +STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES_HELPTEXT :Die maksimum hoeveelheid berekeningstappe wat 'n skrip kan vat in een beurt STR_CONFIG_SETTING_SERVINT_ISPERCENT :Diens pouse is in persente: {STRING} +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_DISABLED :gedeaktiveer +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 STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Standaard diens interval vir vliegtuie: {STRING} +STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Kies die standaard diensskedule vir nuwe vliegtuie as geen diensskedule aangedui is nie STR_CONFIG_SETTING_SERVINT_SHIPS :Standaard diens interval vir bote: {STRING} +STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Kies die standaard diensskedule vir nuwe skepe as geen diensskedule aangedui is nie STR_CONFIG_SETTING_NOSERVICE :Sper diens wanneer komplikasies is na geen gestel: {STRING} +STR_CONFIG_SETTING_NOSERVICE_HELPTEXT :As dit geaktiveerd is, word voertuie nie gediens as hulle nie kan onklaar raak nie STR_CONFIG_SETTING_WAGONSPEEDLIMITS :Laat wa spoed beperkings toe: {STRING} -STR_CONFIG_SETTING_DISABLE_ELRAILS :Deaktiveer elektriese spoore: {STRING} +STR_CONFIG_SETTING_WAGONSPEEDLIMITS_HELPTEXT :As dit geaktiveer is bepaal die spoedbeperking van treinwaens ook die maksimum spoed van die hele trein +STR_CONFIG_SETTING_DISABLE_ELRAILS :Deaktiveer elektriese spore: {STRING} +STR_CONFIG_SETTING_DISABLE_ELRAILS_HELPTEXT :As dit geaktiveerd is, is dit nie nodig om spore te elektrifiseer voordat elektriese treine die spore kan gebruik nie STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN :Aankoms van eerste voertuig by speler se stasie: {STRING} +STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN_HELPTEXT :Vertoon 'n koerantberig waneer die eerste voertuig by 'n nuwe speler se stasie arriveer STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER :Aankoms van eerste voertuig by mededinger se stasie: {STRING} +STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER_HELPTEXT :Vertoon 'n koerantberig waneer die eerste voertuig by 'n nuwe teenstander se stasie arriveer STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS :Ongelukke / rampe: {STRING} +STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS_HELPTEXT :Vertoon 'n koerantberig wanneer daar ongelukke of natuurrampe voorkom STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION :Maatskappy informasie: {STRING} +STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION_HELPTEXT :Vertoon 'n koerantberig wanneer 'n nuwe maatskappy begin, of wanneer 'n maatskappy in gevaar is om bankkrot te speel STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN :Opening van industrieë: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN_HELPTEXT :Vertoon die koerant wanneer 'n nuwe nywerheid oopmaak STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE :Toemaak van industrieë: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE_HELPTEXT :Vertoon die koerant wanneer 'n nywerheid toemaak STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES :Ekonomie veranderings: {STRING} +STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES_HELPTEXT :Vertoon die koerant vir enige globale veranderinge aan die ekonomie STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY :Verandering in produksie van industrieë voorsien deur die maatskapy: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY_HELPTEXT :Vertoon die koerant indien enige produksie vlakke van nywerhede bedien deur die maatskappy verander STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER :Produksie veranderings van nywerhede wat deur mededingers bedien word: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER_HELPTEXT :Vertoon die koerant indien enige produksie vlakke van nywerhede bedien deur die kompetisie verander STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED :Ander nywerheid produksie veranderings: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED_HELPTEXT :Vertoon 'n koerant wanner die produksievlak van industriëe verander, wat nie tans bedien word deur die maatskappy of kompeteerders nie STR_CONFIG_SETTING_NEWS_ADVICE :Advies / informasie van maatskappy se voertuie: {STRING} +STR_CONFIG_SETTING_NEWS_ADVICE_HELPTEXT :Vertoon boodskappe aangaande voertuie wat aandag nodig het STR_CONFIG_SETTING_NEWS_NEW_VEHICLES :Nuwe voertuie: {STRING} +STR_CONFIG_SETTING_NEWS_NEW_VEHICLES_HELPTEXT :Vertoon 'n koerant wanneer 'n nuwe tipe voertuig beskikbaar raak STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE :Veranderings van vrag aanvaarding: {STRING} +STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE_HELPTEXT :Vertoon boodskappe aangaande stasies wat hul aanvaarde vrag verander STR_CONFIG_SETTING_NEWS_SUBSIDIES :Subsidies: {STRING} +STR_CONFIG_SETTING_NEWS_SUBSIDIES_HELPTEXT :Vertoon 'n koerant aangaande subsidie-verwante gebeurtenisse STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION :Algemene informasie: {STRING} +STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION_HELPTEXT :Vertoon koerant aangaande algemene gebeurtenisse, soos die aankoop van eksklusiewe regte of fondsing van padrekonstruksies STR_CONFIG_SETTING_NEWS_MESSAGES_OFF :Af STR_CONFIG_SETTING_NEWS_MESSAGES_SUMMARY :Opsomming STR_CONFIG_SETTING_NEWS_MESSAGES_FULL :Vol STR_CONFIG_SETTING_COLOURED_NEWS_YEAR :Gekleurde nuus verskyn in: {STRING} +STR_CONFIG_SETTING_COLOURED_NEWS_YEAR_HELPTEXT :In watter jaar begin koerante in kleur vertoon. Voor dit is hulle swart en wit. STR_CONFIG_SETTING_STARTING_YEAR :Jaar om te begin: {STRING} STR_CONFIG_SETTING_SMOOTH_ECONOMY :Aktiveer geleike ekonomie (meer, kleiner veranderings): {STRING} +STR_CONFIG_SETTING_SMOOTH_ECONOMY_HELPTEXT :As dit geaktiveer is sal nywerheidsvervaarding meer gereeld verander met kleiner veranderinge elke keer. Hierdie stelling het gewoonlik geen effek met nywerhede van NewGRFs nie. STR_CONFIG_SETTING_ALLOW_SHARES :Laat die koop van aandeele van ander maatskappye toe: {STRING} +STR_CONFIG_SETTING_ALLOW_SHARES_HELPTEXT :As dit geaktiveer is, kan aandele in maatskappye gekoop en verkoop word. Aandele is net in maatskappye beskikbaar na 'n sekere aantal jaar. STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE :Persentasie van wins om te betaal in voerder systeem: {STRING} +STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE_HELPTEXT :Persentasie wins wat gedeel word met die tussengangerstasies in oordragstelsels vir beter beheer oor die wins +STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY :Wanneer die muis gesleep word, plaas 'n sein elke: {STRING} +STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_HELPTEXT :Bepaal die afstand tussen seine wat geplaas word tot by die volgende sein of spooraansluiting STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_VALUE :{COMMA} teël{P 0 "" s} STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE :Wanneer signale getrek word, behou konstante afstand: {STRING} +STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :Bepaal wat gebeur as Ctrl ingehou word terwyl seine geplaas word terwyl die muis gesleep word. As dit nie geaktiveer is nie, word seine by tonnels en brûe ook geplaas om lang afstande sonder seine te verhoed. As dit geaktiveer is, word seine elke n teëls geplaas wat dit maklik maak om ooreenstemmende seine oor parallel spore te plaas. 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+klik te gebruik om te bepaal watter sein-tipes geplaas 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 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 STR_CONFIG_SETTING_TOWN_LAYOUT :Pad uitleg vir nuwe dorpe: {STRING} STR_CONFIG_SETTING_TOWN_LAYOUT_HELPTEXT :Pad netwerk uitleg van paaie vir dorpe -STR_CONFIG_SETTING_TOWN_LAYOUT_DEFAULT :oorspronkilik -STR_CONFIG_SETTING_TOWN_LAYOUT_BETTER_ROADS :beter paaie +STR_CONFIG_SETTING_TOWN_LAYOUT_DEFAULT :Oorspronkilik +STR_CONFIG_SETTING_TOWN_LAYOUT_BETTER_ROADS :Beter paaie STR_CONFIG_SETTING_TOWN_LAYOUT_2X2_GRID :2x2 grid STR_CONFIG_SETTING_TOWN_LAYOUT_3X3_GRID :3x3 grid -STR_CONFIG_SETTING_TOWN_LAYOUT_RANDOM :ewekansige +STR_CONFIG_SETTING_TOWN_LAYOUT_RANDOM :Willekeurig STR_CONFIG_SETTING_ALLOW_TOWN_ROADS :Dorpe word toegelaat om paaie te bou: {STRING} STR_CONFIG_SETTING_ALLOW_TOWN_ROADS_HELPTEXT :Laat dorpe toe om paaie te bou vir groei. Deaktiveer om stad owerhede te verhoed om paaie hulself te bou STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :Dorpe word toegelaat om vlak kruising te bou: {STRING} @@ -1373,15 +1539,15 @@ STR_CONFIG_SETTING_NOISE_LEVEL :Laat dorp-behee STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :Met deaktivering van hierdie stelling, kan daar twee lughawens in elke dorp wees. Met hierdie stelling word die getal van lughawens in 'n stad beperk deur die geluid aanvaarding van die dorp, wat afhanklik is van die bevolking en die lughawe grootte en afstand tussen van mekaar STR_CONFIG_SETTING_TOWN_FOUNDING :Stigting van dorpe binne speletjie: {STRING} STR_CONFIG_SETTING_TOWN_FOUNDING_HELPTEXT :Aktiveering van die stelling laat spelers toe om dorpe te stig in die speletjie -STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :verbode -STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :toegelaat -STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :toegelaat, eie dorp uitleg +STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :Verbode +STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :Toegelaat +STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :Toegelaat, eie dorp uitleg STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT :Binne speletjie plasing van bome: {STRING} STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_HELPTEXT :Beheer die ewekansige voorkoms van bome tydens die spel. Dit kan 'n invloed op nywerhede hê wat staatmaak op die groei van bome, byvoorbeeld hout meulens -STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NONE :geen {RED}(breek timmerhout meul) +STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NONE :Geen {RED}(breek timmerhout meul) STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_RAINFOREST :Slegs in reënwoude -STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_ALL :orals +STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_ALL :Orals STR_CONFIG_SETTING_TOOLBAR_POS :Posisie van hoof werktuigbaan: {STRING} STR_CONFIG_SETTING_TOOLBAR_POS_HELPTEXT :Horisontale posisie van die hoof nutsbalk aan die bokant van die skerm @@ -1390,8 +1556,8 @@ STR_CONFIG_SETTING_STATUSBAR_POS_HELPTEXT :Horisontale pos STR_CONFIG_SETTING_SNAP_RADIUS :Window klamp radius: {STRING} STR_CONFIG_SETTING_SNAP_RADIUS_HELPTEXT :Afstand tussen vensters voor dat die venster outomaties in lyn met die nabygeleë vensters geskuif word STR_CONFIG_SETTING_SNAP_RADIUS_VALUE :{COMMA} pixel{P 0 "" s} -STR_CONFIG_SETTING_SNAP_RADIUS_DISABLED :gedeaktiveer -STR_CONFIG_SETTING_SOFT_LIMIT :Maksimum nommer nie-taaierige vensters: {STRING} +STR_CONFIG_SETTING_SNAP_RADIUS_DISABLED :Gedeaktiveer +STR_CONFIG_SETTING_SOFT_LIMIT :Maksimum aantal nie-taaierige vensters: {STRING} STR_CONFIG_SETTING_SOFT_LIMIT_HELPTEXT :Aantal non-sticky oop vensters voordat ou vensters outomaties toe gemaak word om die ruimte te maak vir nuwe vensters STR_CONFIG_SETTING_SOFT_LIMIT_VALUE :{COMMA} STR_CONFIG_SETTING_SOFT_LIMIT_DISABLED :gedeaktiveer @@ -1415,29 +1581,93 @@ STR_CONFIG_SETTING_TOWN_GROWTH_VERY_FAST :Baie vinnig STR_CONFIG_SETTING_LARGER_TOWNS :Verhouding van dorpe wat stede sal word: {STRING} STR_CONFIG_SETTING_LARGER_TOWNS_HELPTEXT :Hoeveelheid van dorpe wat 'n stad sal word, dus 'n dorp wat groot begin en vinniger groei STR_CONFIG_SETTING_LARGER_TOWNS_VALUE :1 in {COMMA} -STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :geen +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_GUI :{ORANGE}koppelvlak -STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}Konstruksie +STR_CONFIG_SETTING_LINKGRAPH_INTERVAL :Herreken die verspreingskaart elke {STRING} 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_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 +STR_CONFIG_SETTING_DISTRIBUTION_SYMMETRIC :simmetries +STR_CONFIG_SETTING_DISTRIBUTION_PAX :Verspreidingsmodel vir passasiers: {STRING} +STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :"simmetries" beteken dat ongeveer dieselfde hoeveelheid passasiers tussen twee stasies gestuur word. "asimmetries" beteken passasiers word na willekeur tussen twee stasies gestuur. "handmatig" beteken dat passasiers nie outomaties versprei word nie. +STR_CONFIG_SETTING_DISTRIBUTION_MAIL :Verspreidingsmodel vir pos: {STRING} +STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :"simmetries" beteken dat ongeveer dieselfde hoeveelheid pos tussen twee stasies gestuur word. "asimmetries" beteken pos word na willekeur tussen twee stasies gestuur. "handmatig" beteken dat geen pos nie outomaties versprei word nie +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 :"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} +STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT :As hierdie stelling hoër as 0 is, dan bepaal die afstand van die bron en die bestemming, hoeveel vrag tussen die twee gestuur word. Hoe verder uitmekaar die bron en bestemming, hoe minder vrag sal gestuur word. Hoër waardes beteken minder vrag word gestuur tussen stasies wat verder uitmekaar is. +STR_CONFIG_SETTING_DEMAND_SIZE :Hoeveelheid vrag om terug te stuur in die simetriese verspreidingsmodel: {STRING} +STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :Stel hierdie na minder as 100% om die simmetriese verspreidingmodel meer soos die assimetries verspreidingsmodel te laat werk. Minder vrag sal dan teruggestuur word as wat oorspronklik na die stasie toe gestuur is. As die waarde 0% is, dan werk die simmetriese model net soos die assimetriese model. +STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Versadigingsvlak van korter roetes voor ander roetes met kapasiteit gebruik word: {STRING} +STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Daar is gereeld verskeie roetes tussen twee stasies. Cargodist sal die kortste roete eerste versadig, dan die tweede korste roete en so aan. Die beraamde kapasiteit en beplande gebruik van die pad word gebruik om te bepaal of 'n roete versadig is. As daar nogsteeds aanvraag is nadat alle roetes versadig is, sal die huidige roetes oorlaai word met voorrang vir die hoë-kapasiteitsroetes. Die algoritme is nie altyd akuraat om kapasiteit te bepaal nie. Hierdie stelling laat jou toe om te kies hoeveel 'n roete versadig is voordat 'n volgende roete gebruik word. Om oorvol stasies te voorkom, stel hierdie na minder as 'n 100%. + +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Spoed eenheid: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_HELPTEXT :Wys spoed in die eenheid wat gekies is +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_IMPERIAL :Empiries (mph) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_METRIC :Metries (km/h) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_SI :SI (m/s) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER :Trekkrag eenheid: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_HELPTEXT :Wys trekkrag in die eenheid wat gekies is +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_IMPERIAL :Empiries (perdekrag) +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_METRIC :Metries (perdekrag) +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_SI :SI (kW) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT :Massa eenheid: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_HELPTEXT :Wys massa in die eenheid wat gekies is +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_IMPERIAL :Empiries (kort ton) +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_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_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_IMPERIAL :Empiries (vt) +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :Metries (m) +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI (m) + +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_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_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 @@ -1468,9 +1698,11 @@ STR_CONFIG_ERROR_INVALID_GRF_INCOMPATIBLE :onversoenbaar m STR_CONFIG_ERROR_INVALID_GRF_UNKNOWN :onbekend STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_LEVEL :{WHITE}... kompressie vlak '{STRING}' is ongeldig STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_ALGORITHM :{WHITE}... savegame formaat '{STRING}' is nie beskikbaar. Keer terug na '{STRING}' -STR_CONFIG_ERROR_INVALID_BASE_GRAPHICS_NOT_FOUND :{WHITE}... ignoreer Basis Grafiek stel '{STRING}': nie gevind nie +STR_CONFIG_ERROR_INVALID_BASE_GRAPHICS_NOT_FOUND :{WHITE}... gaan die basis-grafikastel '{STRING}' ignoreer: nie gevind nie STR_CONFIG_ERROR_INVALID_BASE_SOUNDS_NOT_FOUND :{WHITE}... ignoreer Basis Klank stel '{STRING}': nie gevind nie STR_CONFIG_ERROR_INVALID_BASE_MUSIC_NOT_FOUND :{WHITE}... ignoreer Basis Musiek stel '{STRING}': nie gevind +STR_CONFIG_ERROR_OUT_OF_MEMORY :{WHITE}Program is uit geheue uit +STR_CONFIG_ERROR_SPRITECACHE_TOO_BIG :{WHITE}Allokering van {BYTES} kasgeheue vir grafika het gefaal. Die kasgeheue is verminder na {BYTES}. Dit sal OpenTDD stadiger maak. Om geheue-aanvraag te verminder, kan u 32bpp grafika en/of zoom-vlakke afskakel. # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} @@ -1478,30 +1710,32 @@ 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_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 -STR_INTRO_TOOLTIP_TEMPERATE :{BLACK}Kies 'matige' landskap styl -STR_INTRO_TOOLTIP_SUB_ARCTIC_LANDSCAPE :{BLACK}Kies 'toendra' landskap styl -STR_INTRO_TOOLTIP_SUB_TROPICAL_LANDSCAPE :{BLACK}Kies 'subtropise' landskap styl -STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Kies 'speelgoedland' landskap styl +STR_INTRO_TOOLTIP_TEMPERATE :{BLACK}Kies 'matige' klimaat +STR_INTRO_TOOLTIP_SUB_ARCTIC_LANDSCAPE :{BLACK}Kies sub-arktiese' klimaat +STR_INTRO_TOOLTIP_SUB_TROPICAL_LANDSCAPE :{BLACK}Kies 'subtropiese' klimaat +STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Kies 'speelgoedland' klimaat 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_NEWGRF_SETTINGS :{BLACK}Wys NewGRF stellings STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Kyk vir nuwe of bygewerkde inhoud om af te laai @@ -1537,12 +1771,12 @@ STR_ABANDON_SCENARIO_QUERY :{YELLOW}Is jy s STR_CHEATS :{WHITE}Kullery STR_CHEATS_TOOLTIP :{BLACK}Keuseblokkies wys aan as jy die kulkode voorheen gebruik het STR_CHEATS_WARNING :{BLACK}Waarskuwing! U staan op die punt om jou mededinger te veraai. Hou in gedagte dat so 'n skande vir ewigheid sal onthou word. -STR_CHEAT_MONEY :{LTBLUE}Vermeerder geld by {CURRENCY_LONG} +STR_CHEAT_MONEY :{LTBLUE}Vermeerder geld met {CURRENCY_LONG} STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Speel as maatskappy: {ORANGE}{COMMA} 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_SWITCH_CLIMATE_TEMPERATE_LANDSCAPE :Magtig landskap +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 STR_CHEAT_SWITCH_CLIMATE_TOYLAND_LANDSCAPE :Speelgoedland landskap @@ -1553,36 +1787,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_DEFAULT :Standaard Lewery -STR_LIVERY_STEAM :Stoom Enjin -STR_LIVERY_DIESEL :Diesel Enjin -STR_LIVERY_ELECTRIC :Elektriese Enjin -STR_LIVERY_MONORAIL :Eenspoor Enjin -STR_LIVERY_MAGLEV :Maglev Enjin -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 :Passasier koets (Monospeer) -STR_LIVERY_PASSENGER_WAGON_MAGLEV :Passasier koets (Maglev) -STR_LIVERY_FREIGHT_WAGON :Vraag Wa +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 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 :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 @@ -1590,6 +1824,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 @@ -1645,28 +1880,28 @@ STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}Verander # Network server list STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}Multispeler -STR_NETWORK_SERVER_LIST_CONNECTION :{BLACK}Verbinding: -STR_NETWORK_SERVER_LIST_CONNECTION_TOOLTIP :{BLACK}Kies teen internet spel of 'n Plaaslike Area Netwerk (LAN) spel -STR_NETWORK_SERVER_LIST_LAN :LAN -STR_NETWORK_SERVER_LIST_INTERNET :Internet +STR_NETWORK_SERVER_LIST_ADVERTISED :{BLACK}Openbaar +STR_NETWORK_SERVER_LIST_ADVERTISED_TOOLTIP :{BLACK}Kies tussen 'n openbare (internet) of 'n plaaslike (LAN) spel +STR_NETWORK_SERVER_LIST_ADVERTISED_NO :Nee +STR_NETWORK_SERVER_LIST_ADVERTISED_YES :Ja STR_NETWORK_SERVER_LIST_PLAYER_NAME :{BLACK}Speler naam: STR_NETWORK_SERVER_LIST_ENTER_NAME_TOOLTIP :{BLACK}Die is die naam waarmee ander spelers sal jou aanwys 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 @@ -1707,16 +1942,16 @@ STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP :{BLACK}Die spel STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}Stel wagwoord STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Beskerm jou spel met 'n wagwoord as jy wil dit nie publieke toepassing laat wees nie -STR_NETWORK_START_SERVER_LAN_INTERNET :LAN / Internet -STR_NETWORK_START_SERVER_INTERNET_ADVERTISE :Internet (adverteer) +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 nommer van kliente. Alle gleufe 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 @@ -1829,6 +2064,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 @@ -1848,14 +2084,14 @@ STR_COMPANY_VIEW_SET_PASSWORD :{BLACK}Stel maa STR_NETWORK_CHAT_SEND :{BLACK}Stuur STR_NETWORK_CHAT_COMPANY_CAPTION :[Span] : STR_NETWORK_CHAT_CLIENT_CAPTION :[Privaat] {STRING}: -STR_NETWORK_CHAT_ALL_CAPTION :[All] : +STR_NETWORK_CHAT_ALL_CAPTION :[Almal] : STR_NETWORK_CHAT_COMPANY :[Span] {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_TO_COMPANY :[Span] Na {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_CLIENT :[Privaat] {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_TO_CLIENT :[Privaat] Na {STRING}:{WHITE}{STRING} -STR_NETWORK_CHAT_ALL :[All] {STRING}: {WHITE}{STRING} -STR_NETWORK_CHAT_OSKTITLE :{BLACK}Tik woord in vir netwerk kominikasie +STR_NETWORK_CHAT_ALL :[Almal] {STRING}: {WHITE}{STRING} +STR_NETWORK_CHAT_OSKTITLE :{BLACK}Tik boodskap vir klets # Network messages STR_NETWORK_ERROR_NOTAVAILABLE :{WHITE}Geen netwerk ontwerp gevind of voldoen sonder ENABLE_NETWORK @@ -1872,7 +2108,7 @@ STR_NETWORK_ERROR_SERVER_ERROR :{WHITE}A protok STR_NETWORK_ERROR_WRONG_REVISION :{WHITE}Die hersiening van die klient is nie gelyk aan die verskaffer se hersiening nie STR_NETWORK_ERROR_WRONG_PASSWORD :{WHITE}Verkeerde wagwoord STR_NETWORK_ERROR_SERVER_FULL :{WHITE}Die verskaffer is vol -STR_NETWORK_ERROR_SERVER_BANNED :{WHITE}Jy is van die verskaffer verban +STR_NETWORK_ERROR_SERVER_BANNED :{WHITE}Jy is verban op hierdie server STR_NETWORK_ERROR_KICKED :{WHITE}Jy is van die spel geskop STR_NETWORK_ERROR_CHEATER :{WHITE}Kullery word nie toegelaat op hierdie bediener STR_NETWORK_ERROR_TOO_MANY_COMMANDS :{WHITE}Jy het te veel opdragte na die bediener gestuur @@ -1894,8 +2130,8 @@ STR_NETWORK_ERROR_CLIENT_WRONG_REVISION :verkeerde hersi STR_NETWORK_ERROR_CLIENT_NAME_IN_USE :naam reeds in gebruik STR_NETWORK_ERROR_CLIENT_WRONG_PASSWORD :verkeerde wagwoord STR_NETWORK_ERROR_CLIENT_COMPANY_MISMATCH :verkeerde maatskapy-id in DoenBevel -STR_NETWORK_ERROR_CLIENT_KICKED :geskop by verskaffer -STR_NETWORK_ERROR_CLIENT_CHEATER :het probeer om 'n bedreig te gebruik +STR_NETWORK_ERROR_CLIENT_KICKED :geskop deur die bediener +STR_NETWORK_ERROR_CLIENT_CHEATER :het probeer kul STR_NETWORK_ERROR_CLIENT_SERVER_FULL :verskaffer vol STR_NETWORK_ERROR_CLIENT_TOO_MANY_COMMANDS :het te veel opdragte gestuur STR_NETWORK_ERROR_CLIENT_TIMEOUT_PASSWORD :het geen wagwoord betyds gekry nie @@ -1917,7 +2153,7 @@ STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_3 :Spel nog steeds 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 @@ -1926,7 +2162,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 @@ -1940,17 +2176,21 @@ 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 STR_CONTENT_SELECT_UPDATES_CAPTION_TOOLTIP :{BLACK}Merk alle inhoud wat 'n opgradering is vir bestande inhoud om af te laai word STR_CONTENT_UNSELECT_ALL_CAPTION :{BLACK}Onselekteer alles STR_CONTENT_UNSELECT_ALL_CAPTION_TOOLTIP :{BLACK}Merk alle inhoud wat nie afgelaai moet word nie +STR_CONTENT_SEARCH_EXTERNAL :{BLACK}Soek deur eksterne webwerwe +STR_CONTENT_SEARCH_EXTERNAL_TOOLTIP :{BLACK}Soek vir inhoud wat nie op OpenTTD's se inhoudsdiens beskikbaar is nie op bedieners wat geen verbintenis aan OpenTTD het nie +STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER_CAPTION :{WHITE}Jy gaan OpenTDD verlaat! +STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER :{WHITE}Die voorwaardes om inhoud van ander bedieners af te laai wissel.{}Verwys na die eksterne webwerf vir instruksies om die inhoud in OpenTTD in te laai.{}Wil jy voortgaan? 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 @@ -1969,16 +2209,16 @@ STR_CONTENT_DETAIL_FILESIZE :{SILVER}Aflaai STR_CONTENT_DETAIL_SELECTED_BECAUSE_OF :{SILVER}Geselekteer weens: {WHITE}{STRING} STR_CONTENT_DETAIL_DEPENDENCIES :{SILVER}Afhanklikes: {WHITE}{STRING} STR_CONTENT_DETAIL_TAGS :{SILVER}Merkers: {WHITE}{STRING} -STR_CONTENT_NO_ZLIB :{WHITE}OpenTTD is gebou sonder "zlib" hulp... +STR_CONTENT_NO_ZLIB :{WHITE}OpenTTD word gebou sonder "zlib" ondersteuning... STR_CONTENT_NO_ZLIB_SUB :{WHITE}... aflaai van inhoud is nie moentlik nie! # Order of these is important! -STR_CONTENT_TYPE_BASE_GRAPHICS :Basis grafike +STR_CONTENT_TYPE_BASE_GRAPHICS :Basis-grafikastel 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 @@ -1987,7 +2227,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} %) @@ -2005,17 +2245,28 @@ 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 +STR_LINKGRAPH_LEGEND_CAPTION :{BLACK}Vragverspreidingsleutel +STR_LINKGRAPH_LEGEND_ALL :{BLACK}Almal +STR_LINKGRAPH_LEGEND_NONE :{BLACK}Geen +STR_LINKGRAPH_LEGEND_SELECT_COMPANIES :{BLACK}Kies maatskappye om te ws + +# Linkgraph legend window and linkgraph legend in smallmap +STR_LINKGRAPH_LEGEND_UNUSED :{TINY_FONT}{BLACK}ongebruik +STR_LINKGRAPH_LEGEND_SATURATED :{TINY_FONT}{BLACK}versadig +STR_LINKGRAPH_LEGEND_OVERLOADED :{TINY_FONT}{BLACK}oorlaai + # Base for station construction window(s) STR_STATION_BUILD_COVERAGE_AREA_TITLE :{BLACK}Dekking area verlig STR_STATION_BUILD_COVERAGE_OFF :{BLACK}Af @@ -2023,35 +2274,35 @@ 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 :Spoorweg Kostruksie -STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :Elektrifiseerde Spoorweg Konstruksie -STR_RAIL_TOOLBAR_MONORAIL_CONSTRUCTION_CAPTION :Enkelspoor Konstruksie +STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Spoorwegkonstruksie +STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :Elektriese spoorwegkonstruksie +STR_RAIL_TOOLBAR_MONORAIL_CONSTRUCTION_CAPTION :Monospoor Konstruksie STR_RAIL_TOOLBAR_MAGLEV_CONSTRUCTION_CAPTION :Magneetsweeftrein Konstruksie -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Bou spoore. Ctrl skakel Bou/verwydering van spoorweg knstruksie. Shift skakel Bou/wys koste beraming +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Bou spore. Ctrl skakel Bou/verwydering van spoorwegkonstruksie. Shift skakel Bou/wys koste beraming 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 spoore 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_MONORAIL :Enkelspoor +STR_RAIL_NAME_ELRAIL :Elektriese spoor +STR_RAIL_NAME_MONORAIL :Monospoor STR_RAIL_NAME_MAGLEV :Maglev # Rail depot construction window @@ -2059,17 +2310,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_NUMBER_OF_TRACKS :{BLACK}Nommer van spoore -STR_STATION_BUILD_NUMBER_OF_TRACKS_TOOLTIP :{BLACK}Kies nommer van verhoogte vir spoorweg stasie -STR_STATION_BUILD_PLATFORM_LENGTH :{BLACK}Verhoog lengte -STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP :{BLACK}Kies lengte van spoorweg stasie +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 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 @@ -2077,23 +2328,23 @@ 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 STR_BUILD_SIGNAL_SEMAPHORE_NORM_TOOLTIP :{BLACK}Blok aanwyser (seinpaal){}Die eenvoudigste tipe aanwyser, laat slegs een trein in 'n blok toe -STR_BUILD_SIGNAL_SEMAPHORE_ENTRY_TOOLTIP :{BLACK}Ingang-aanwyser (seinpaal){}Wys groen so lank die volgende gedeelte treinspoor 'n groen uitgang-aanwyser het, anders wys dit rooi -STR_BUILD_SIGNAL_SEMAPHORE_EXIT_TOOLTIP :{BLACK}Uitgang aanwyser (seinpaal){}Werk soos 'n blok aanwyser maar word benodig om die regte kleur te aktiveer op kombinasie & ingang aanwysers -STR_BUILD_SIGNAL_SEMAPHORE_COMBO_TOOLTIP :{BLACK}Kombinasie aanwyser(seinpaal){}Dien as 'n ingang aanwyser sowel as 'n uitgang aanwyser. Groot uitbreidings van pre-aanwysers kan hiermee gebou word +STR_BUILD_SIGNAL_SEMAPHORE_ENTRY_TOOLTIP :{BLACK}Ingang Sinjaal (semafoor){}Wys groen so lank die volgende gedeelte treinspoor 'n groen uitgang sinjaal het, anders wys dit rooi. +STR_BUILD_SIGNAL_SEMAPHORE_EXIT_TOOLTIP :{BLACK}Uitgang Sinjaal (semafoor){}Werk soos 'n blok sinjaal maar word benodig om die regte kleur te aktiveer op kombinasie en ingang sinjale. +STR_BUILD_SIGNAL_SEMAPHORE_COMBO_TOOLTIP :{BLACK}Kombinasie Sinjaal (semafoor){}Dien as 'n ingang sinjaal sowel as 'n uitgang sinjaal. Groot uitbreidings van pre-sinjale kan hiermee gebou word. STR_BUILD_SIGNAL_SEMAPHORE_PBS_TOOLTIP :{BLACK}Pad aanwyser (seinpaal){}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_SEMAPHORE_PBS_OWAY_TOOLTIP :{BLACK}Een-rigting pad aanwyser (seinpaal){}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_ELECTRIC_NORM_TOOLTIP :{BLACK}Blok aanwyser (robot){}Die eenvoudigste tipe aanwyser, laat slegs een trein per blok toe -STR_BUILD_SIGNAL_ELECTRIC_ENTRY_TOOLTIP :{BLACK}Ingang aanwyser (robot){}Wys groen solank die volgende gedeelte treinspoor 'n groen uitgang aanwyser het, anders wys dit rooi -STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}Uitgang aanwyser(robot){}Werk soos 'n blok aanwyser maar word benodig om die regte kleur te aktiveer op kombinasie & ingang aanwysers -STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}Kombinasie aanwyser(robot){}Dien as 'n ingang aanwyser sowel as 'n uitgang aanwyser. Groot uitbreidings van pre-aanwysers kan hiermee gebou word +STR_BUILD_SIGNAL_ELECTRIC_ENTRY_TOOLTIP :{BLACK}Ingang Sinjaal (elektries){}Vertoon groen solank die volgende gedeelte treinspoor 'n groen uitgang sinjaal het, anders wys dit rooi. +STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}Uitgang Sinjaal(robot){}Werk soos 'n blok sinjaal maar word benodig om die regte kleur te aktiveer op kombinasie en ingang sinjale. +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 aanwyser{}Kliek op 'n bestaande aanwyser 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 @@ -2101,17 +2352,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 @@ -2198,10 +2449,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 @@ -2220,7 +2471,7 @@ STR_PLANT_TREE_TOOLTIP :{BLACK}Kies tip STR_TREES_RANDOM_TYPE :{BLACK}Bome van lukraake tipe STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}Plant bome van enige soort. Shift kies tussen bou.kwotasie STR_TREES_RANDOM_TREES_BUTTON :{BLACK}Lukraak Boome -STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Beplant bome wildweg oor landskap +STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Beplant bome lukraak oor die landskap # Land generation window (SE) STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}Land Generasie @@ -2239,7 +2490,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 @@ -2247,7 +2498,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 @@ -2284,12 +2535,16 @@ 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 STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP_TOOLTIP :{BLACK}Selekteer die vertoonde industrie ook op die kleinkaart +STR_INDUSTRY_CARGOES_SELECT_CARGO :{BLACK}Selekteer vrag +STR_INDUSTRY_CARGOES_SELECT_CARGO_TOOLTIP :{BLACK}Selekteer die vrag om te vertoon +STR_INDUSTRY_CARGOES_SELECT_INDUSTRY :{BLACK}Kies die nywerheid +STR_INDUSTRY_CARGOES_SELECT_INDUSTRY_TOOLTIP :{BLACK}Kies die nywerheid om te vertoon # Land area window STR_LAND_AREA_INFORMATION_CAPTION :{WHITE}Land gebied informasie @@ -2314,6 +2569,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 @@ -2362,18 +2618,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 @@ -2386,7 +2642,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 @@ -2410,16 +2666,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-2012 Die OpenTTD span +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2014 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 @@ -2429,6 +2685,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} @@ -2439,6 +2696,7 @@ STR_SAVELOAD_OSKTITLE :{BLACK}Tik 'n n # World generation STR_MAPGEN_WORLD_GENERATION_CAPTION :{WHITE}Wêreld generasie STR_MAPGEN_MAPSIZE :{BLACK}Kaart groote: +STR_MAPGEN_MAPSIZE_TOOLTIP :{BLACK}Kies kaartgrootte teëls. Die aantal werklike beskikbare teëls sal ietwat minder wees. STR_MAPGEN_BY :{BLACK}* STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Hoev. dorpe: STR_MAPGEN_DATE :{BLACK}Datum: @@ -2446,17 +2704,13 @@ STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Hoev. ny 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 @@ -2471,38 +2725,37 @@ STR_MAPGEN_BORDER_RANDOM :{BLACK}Lukraak STR_MAPGEN_BORDER_RANDOMIZE :{BLACK}Lukraak STR_MAPGEN_BORDER_MANUAL :{BLACK}Manual -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_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 @@ -2531,13 +2784,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_FILE_TOOLTIP :{BLACK}'n Lys van die NewGRF lêers wat geïnstaleer is. +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 @@ -2555,6 +2810,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 @@ -2613,7 +2878,8 @@ STR_NEWGRF_ERROR_INVALID_ID :Poging on 'n on STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} bevat 'n korrupte prent. Korrupte prente sal as 'n rooi vraagteken gewys word (?) STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Bevat veelvoudige Aksie 8 inskrywings (sprite {3:NUM}) STR_NEWGRF_ERROR_READ_BOUNDS :Lees verby die einde van die pseudo-sprite (sprite {3:NUM}) -STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}Die huideige grafiese stel ontbreek 'n paar sprites.{}Opdateer die grafiese stel asseblief na die nuutste +STR_NEWGRF_ERROR_MISSING_SPRITES :WHITE}Die huidige basis-grafikastel ontbreek sommige sprites.{}Opdateer die basis-grafikastel. +STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}Die huidige basis-grafikastel ontbreek sommige sprites.{}Opdateer die basis-grafikastel.{}Aangesien jy 'n {YELLOW}ontwikkelingsweergawe van OpenTTD{WHITE} het, mag jy dalk 'n {YELLOW}ontwikkelingsweergawe{WHITE} van die basis-grafikastel benodig{WHITE} STR_NEWGRF_ERROR_GRM_FAILED :Aangevraagde GRF hulpbronne is nie beskikbaar nie (sprite {3:NUM}) STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} was gedeaktiveer deur {2:STRING} STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Ongeldige/onbekende sprite uitleg formaat (sprite {3:NUM}) @@ -2624,6 +2890,7 @@ STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}Jy wil STR_NEWGRF_DUPLICATE_GRFID :{WHITE}Kan nie lêer byvoeg nie: gedupliseerde GRF ID STR_NEWGRF_COMPATIBLE_LOADED :{ORANGE}Gelyke lêer nie gevind nie (versoenbaar GRF gelaai) +STR_NEWGRF_TOO_MANY_NEWGRFS :{WHITE}Kan nie lêer byvoeg nie: NewGRF lêer limiet bereik STR_NEWGRF_COMPATIBLE_LOAD_WARNING :{WHITE}Versoenbare GRF(s) gelaai vir vermiste lêers STR_NEWGRF_DISABLED_WARNING :{WHITE}Vermiste GRF lêers is gedeaktiveer @@ -2640,6 +2907,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. @@ -2654,6 +2922,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 @@ -2676,26 +2947,26 @@ 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_POPULATION :{BLACK}Wêreld populasie: {COMMA} +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 STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN} STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} (City) -STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}Populasie: {ORANGE}{COMMA}{BLACK} Huise: {ORANGE}{COMMA} +STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}Bevolking: {ORANGE}{COMMA}{BLACK} Huise: {ORANGE}{COMMA} STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}Passasiers verlede maand: {ORANGE}{COMMA}{BLACK} maks: {ORANGE}{COMMA} STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}Pos verlede maand: {ORANGE}{COMMA}{BLACK} maks: {ORANGE}{COMMA} STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}Vrag nodig om dorp te laat groei: STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{ORANGE}{STRING}{RED} vereis STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} vereis in winter -STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED_GENERAL :{ORANGE}{STRING}{GREEN} af gelewer +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} (af gelewer) +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_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 @@ -2712,21 +2983,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} @@ -2735,12 +3006,16 @@ STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT :{YELLOW} Koop 1 STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}Koop die plaaslike regering om vir 'n gunstige gradering, indien die komplot ontdek word sal 'n groot boete opgelê word.{}Cost: {CURRENCY_LONG} # Goal window -STR_GOALS_CAPTION :{WHITE}Doelwitte +STR_GOALS_CAPTION :{WHITE}{COMPANY} Doelwitte +STR_GOALS_SPECTATOR_CAPTION :{WHITE}Globale Doelwitte STR_GOALS_GLOBAL_TITLE :{BLACK}Globale doelwitte: STR_GOALS_TEXT :{ORANGE}{STRING} STR_GOALS_NONE :{ORANGE}- Geen - +STR_GOALS_SPECTATOR_NONE :{ORANGE}- Nie van toepassing - +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 @@ -2771,14 +3046,26 @@ STR_GOAL_QUESTION_BUTTON_CLOSE :Maak toe # 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 +STR_STORY_BOOK_SPECTATOR_CAPTION :{WHITE}Globale Storieboek +STR_STORY_BOOK_TITLE :{YELLOW}{STRING} +STR_STORY_BOOK_GENERIC_PAGE_ITEM :Bladsy {NUM} +STR_STORY_BOOK_SEL_PAGE_TOOLTIP :{BLACK}Kies 'n bladsy om na toe te gaan in hierdie lys +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} @@ -2790,9 +3077,9 @@ 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} op roete vanaf {STATION}) +STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} vanaf {STATION}) +STR_STATION_VIEW_RESERVED :{YELLOW}({CARGO_SHORT} gereserveer vir oplaai) STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Aanvaar STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Wys lys van aanvaarde vrag @@ -2803,21 +3090,44 @@ STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPAN STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Graderings STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Toon stasie graderings -STR_STATION_VIEW_CARGO_RATINGS_TITLE :{BLACK}Plaaslike gradering van vervoer diens -STR_STATION_VIEW_CARGO_RATING :{WHITE}{STRING}: {YELLOW}{STRING} ({COMMA}%) +STR_STATION_VIEW_SUPPLY_RATINGS_TITLE :{BLACK}Maandelike verskaffing en plaaslike waardering: +STR_STATION_VIEW_CARGO_SUPPLY_RATING :{WHITE}{STRING}: {YELLOW}{COMMA} / {STRING} ({COMMA}%) + +STR_STATION_VIEW_GROUP :{BLACK}Groepeer +STR_STATION_VIEW_WAITING_STATION :Stasie: Wagtend +STR_STATION_VIEW_WAITING_AMOUNT :Hoeveelheid: Wagtend +STR_STATION_VIEW_PLANNED_STATION :Stasie: Beplan +STR_STATION_VIEW_PLANNED_AMOUNT :Hoeveelheid: Beplan +STR_STATION_VIEW_FROM :{YELLOW}{CARGO_SHORT} vanaf {STATION} +STR_STATION_VIEW_VIA :{YELLOW}{CARGO_SHORT} via {STATION} +STR_STATION_VIEW_TO :{YELLOW}{CARGO_SHORT} na {STATION} +STR_STATION_VIEW_FROM_ANY :{RED}{CARGO_SHORT} vanaf onbekende stasie +STR_STATION_VIEW_TO_ANY :{RED}{CARGO_SHORT} na enige stasie +STR_STATION_VIEW_VIA_ANY :{RED}{CARGO_SHORT} via enige stasie +STR_STATION_VIEW_FROM_HERE :{GREEN}{CARGO_SHORT} vanaf hierdie stasie +STR_STATION_VIEW_VIA_HERE :{GREEN}{CARGO_SHORT} stop by hierdie stasie +STR_STATION_VIEW_TO_HERE :{GREEN}{CARGO_SHORT} na hierdie stasie toe +STR_STATION_VIEW_NONSTOP :{YELLOW}{CARGO_SHORT} sonder-stop + +STR_STATION_VIEW_GROUP_S_V_D :Bron-via-bestemming +STR_STATION_VIEW_GROUP_S_D_V :Bron-bestemming-via +STR_STATION_VIEW_GROUP_V_S_D :Via-bron-bestemming +STR_STATION_VIEW_GROUP_V_D_S :Via-bestemming-bron +STR_STATION_VIEW_GROUP_D_S_V :Bestemming-bron-via +STR_STATION_VIEW_GROUP_D_V_S :Bestemming-via-bron ############ 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_EXCELLENT :Uitsteekent +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 @@ -2832,16 +3142,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 @@ -2865,15 +3175,15 @@ STR_FINANCES_MAX_LOAN :{WHITE}Maksimum STR_FINANCES_TOTAL_CURRENCY :{BLACK}{CURRENCY_LONG} 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}Terugbetaal {CURRENCY_LONG} -STR_FINANCES_REPAY_TOOLTIP :{BLACK}Betaal gedeelte van lening terug. Ctrl+Kliek betaal so veel moontlik terug +STR_FINANCES_REPAY_BUTTON :{BLACK}Betaal {CURRENCY_LONG} 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 STR_COMPANY_VIEW_CAPTION :{WHITE}{COMPANY} {BLACK}{COMPANY_NUM} STR_COMPANY_VIEW_PRESIDENT_MANAGER_TITLE :{WHITE}{PRESIDENT_NAME}{}{GOLD}(Bestuurder) -STR_COMPANY_VIEW_INAUGURATED_TITLE :{GOLD}Bevestig: {WHITE}{NUM} +STR_COMPANY_VIEW_INAUGURATED_TITLE :{GOLD}Jaar gestig: {WHITE}{NUM} STR_COMPANY_VIEW_COLOUR_SCHEME_TITLE :{GOLD}Kleur Skema STR_COMPANY_VIEW_VEHICLES_TITLE :{GOLD}Voertuie STR_COMPANY_VIEW_TRAINS :{WHITE}{COMMA} trein{P "" e} @@ -2884,10 +3194,10 @@ STR_COMPANY_VIEW_VEHICLES_NONE :{WHITE}Geen STR_COMPANY_VIEW_COMPANY_VALUE :{GOLD}Maatskappy waarde: {WHITE}{CURRENCY_LONG} STR_COMPANY_VIEW_SHARES_OWNED_BY :{WHITE}({COMMA}% besit by {COMPANY}) STR_COMPANY_VIEW_INFRASTRUCTURE :{GOLD}Infrastruktuur: -STR_COMPANY_VIEW_INFRASTRUCTURE_RAIL :{WHITE}{COMMA} spoor stuk{P "" s} -STR_COMPANY_VIEW_INFRASTRUCTURE_ROAD :{WHITE}{COMMA} pad stuk{P "" s} -STR_COMPANY_VIEW_INFRASTRUCTURE_WATER :{WHITE}{COMMA} water teel{P "" s} -STR_COMPANY_VIEW_INFRASTRUCTURE_STATION :{WHITE}{COMMA} stasie teel{P "" s} +STR_COMPANY_VIEW_INFRASTRUCTURE_RAIL :{WHITE}{COMMA} spoorstuk{P "" ke} +STR_COMPANY_VIEW_INFRASTRUCTURE_ROAD :{WHITE}{COMMA} padstuk{P "" ke} +STR_COMPANY_VIEW_INFRASTRUCTURE_WATER :{WHITE}{COMMA} waterteël{P "" s} +STR_COMPANY_VIEW_INFRASTRUCTURE_STATION :{WHITE}{COMMA} stasieteël{P "" s} STR_COMPANY_VIEW_INFRASTRUCTURE_AIRPORT :{WHITE}{COMMA} lughawe{P "" s} STR_COMPANY_VIEW_INFRASTRUCTURE_NONE :{WHITE}Geen @@ -2895,15 +3205,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 @@ -2911,8 +3221,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 @@ -2920,34 +3230,34 @@ STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :Bestuurder se N STR_BUY_COMPANY_MESSAGE :{WHITE}Ons is opsoek na 'n vervoer maatskappy wat ons se maatskappy sal oorvat.{}{}Wil jy {COMPANY} koop vir {CURRENCY_LONG}? # Company infrastructure window -STR_COMPANY_INFRASTRUCTURE_VIEW_CAPTION :{WHITE}Infrastruktuur van {COMPANY} -STR_COMPANY_INFRASTRUCTURE_VIEW_RAIL_SECT :{GOLD}Spoor dele: +STR_COMPANY_INFRASTRUCTURE_VIEW_CAPTION :{WHITE}{COMPANY} se infrastruktuur +STR_COMPANY_INFRASTRUCTURE_VIEW_RAIL_SECT :{GOLD}Spoorstukke: STR_COMPANY_INFRASTRUCTURE_VIEW_SIGNALS :{WHITE}Seine -STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD_SECT :{GOLD}Pad dele: +STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD_SECT :{GOLD}Padstukke: STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD :{WHITE}Pad STR_COMPANY_INFRASTRUCTURE_VIEW_TRAMWAY :{WHITE}Tremweg -STR_COMPANY_INFRASTRUCTURE_VIEW_WATER_SECT :{GOLD}Water teels: +STR_COMPANY_INFRASTRUCTURE_VIEW_WATER_SECT :{GOLD}Waterteëls: STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS :{WHITE}Kanale STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}Stasies: -STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}Stasie teels +STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}Stasieteëls STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}Lughawens -STR_COMPANY_INFRASTRUCTURE_VIEW_COST :{WHITE}{1:CURRENCY_LONG}/jr ({0:COMMA}) STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL :{WHITE}{CURRENCY_LONG}/jr # 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}% uitgevoer) -STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Skuif skerm na nywerheid. Ctrl+Kliek maak 'n nuwe venster oor die nywerheid oop +STR_INDUSTRY_VIEW_TRANSPORTED :{YELLOW}{CARGO_LONG}{STRING}{BLACK} ({COMMA}% vervoer) +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! ############ range for requires starts STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Vereis: {YELLOW}{STRING}{STRING} @@ -2971,14 +3281,14 @@ 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_TRAINS :Beskikbare treine STR_VEHICLE_LIST_AVAILABLE_ROAD_VEHICLES :Beskikbaar Voertuie STR_VEHICLE_LIST_AVAILABLE_SHIPS :Beskikbaar Skepe STR_VEHICLE_LIST_AVAILABLE_AIRCRAFT :Beskikbaar Vliegtuie @@ -2987,15 +3297,15 @@ STR_VEHICLE_LIST_AVAILABLE_ENGINES_TOOLTIP :{BLACK}Vertoon 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} @@ -3010,11 +3320,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 @@ -3022,9 +3335,9 @@ STR_GROUP_REMOVE_ALL_VEHICLES :Verwyder alle v STR_GROUP_RENAME_CAPTION :{BLACK}Hernoem 'n groep # Build vehicle window -STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :Nuwe Spoor Voertuie +STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :Nuwe treine STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :Nuwe Elektries Spoor Voertuie -STR_BUY_VEHICLE_TRAIN_MONORAIL_CAPTION :Nuwe Eenspoor Voertuie +STR_BUY_VEHICLE_TRAIN_MONORAIL_CAPTION :Nuwe monospoor voertuie STR_BUY_VEHICLE_TRAIN_MAGLEV_CAPTION :Nuwe Maglev Voertuie STR_BUY_VEHICLE_TRAIN_ALL_CAPTION :Spoorweg Voertuie @@ -3032,7 +3345,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} @@ -3040,8 +3353,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} @@ -3053,20 +3366,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 +STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Pad voertuig kieslys - klik op voertuig vir inligting +STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Skip kieslys - klik op skip vir inligting +STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Vliegtuig kieslys - klik op vliegtuig vir inligting 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 @@ -3094,10 +3407,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 @@ -3131,30 +3444,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. 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? @@ -3162,13 +3475,13 @@ 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 :eenspoor lokomotief +STR_ENGINE_PREVIEW_MONORAIL_LOCOMOTIVE :monospoor lokomotief STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :maglev lokomotief -STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Kos: {CURRENCY_LONG} Gewig: {WEIGHT_SHORT}{}Spoed: {VELOCITY} Krag: {POWER}{}Loopkoste: {CURRENCY_LONG}/jr{}Kapasitiet: {CARGO_LONG} +STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Koste: {CURRENCY_LONG} Massa: {WEIGHT_SHORT}{}Spoed: {VELOCITY} Krag: {POWER}{}Loopkoste: {CURRENCY_LONG}/jr{}Kapasitiet: {CARGO_LONG} STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}Koste: {CURRENCY_LONG} Gewig: {WEIGHT_SHORT}{}Spoed: {VELOCITY} Krag: {POWER} Maks. Treg Krag: {6:FORCE}{}Lopende Koste: {4:CURRENCY_LONG}/jaar{}Kapasitiet: {5:CARGO_LONG} STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST :{BLACK}Koste: {CURRENCY_LONG} Maks. Spoed: {VELOCITY}{}Kapasiteit: {CARGO_LONG}, {CARGO_LONG}{}Lopende Koste: {CURRENCY_LONG}/jaar STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK}Koste: {CURRENCY_LONG} Maks. Spoed: {VELOCITY}{}Kapasiteit: {CARGO_LONG}{}Lopende Koste: {CURRENCY_LONG}/jaar @@ -3185,14 +3498,14 @@ STR_REPLACE_VEHICLE_AIRCRAFT :Vliegtuig 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} @@ -3202,9 +3515,9 @@ 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_MONORAIL_VEHICLES :Eenspoor Voertuie +STR_REPLACE_RAIL_VEHICLES :Treine +STR_REPLACE_ELRAIL_VEHICLES :Elektriese treine +STR_REPLACE_MONORAIL_VEHICLES :Monospoor voertuie STR_REPLACE_MAGLEV_VEHICLES :Maglev Voertuie STR_REPLACE_REMOVE_WAGON :{BLACK}Wa verwydering: {ORANGE}{STRING} @@ -3213,20 +3526,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 @@ -3238,20 +3551,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 @@ -3264,10 +3577,10 @@ STR_VEHICLE_STATUS_TRAIN_NO_POWER :{RED}Geen Krag STR_VEHICLE_STATUS_TRAIN_STUCK :{ORANGE}Wag vir beskikbare pad STR_VEHICLE_STATUS_AIRCRAFT_TOO_FAR :{ORANGE}Te ver na volgende bestemming -STR_VEHICLE_STATUS_HEADING_FOR_STATION_VEL :{LTBLUE}Op pad na {STATION}, {VELOCITY} +STR_VEHICLE_STATUS_HEADING_FOR_STATION_VEL :{LTBLUE}Oppad na {STATION}, {VELOCITY} STR_VEHICLE_STATUS_NO_ORDERS_VEL :{LTBLUE}Geen opdrae, {VELOCITY} -STR_VEHICLE_STATUS_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}Op pad na {WAYPOINT}, {VELOCITY} -STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_VEL :{ORANGE}Op pad na {DEPOT}, {VELOCITY} +STR_VEHICLE_STATUS_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}Oppad na {WAYPOINT}, {VELOCITY} +STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_VEL :{ORANGE}Oppad na {DEPOT}, {VELOCITY} STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_SERVICE_VEL :{LTBLUE}Diens by {DEPOT}, {VELOCITY} # Vehicle stopped/started animations @@ -3285,7 +3598,7 @@ STR_VEHICLE_DETAILS_ROAD_VEHICLE_RENAME :{BLACK}Benoem p STR_VEHICLE_DETAILS_SHIP_RENAME :{BLACK}Benoem skip STR_VEHICLE_DETAILS_AIRCRAFT_RENAME :{BLACK}Benoem vliegtuig -STR_VEHICLE_INFO_AGE_RUNNING_COST_YR :{BLACK}Ouderdom: {LTBLUE}{STRING}{BLACK} Lopende kostes: {LTBLUE}{CURRENCY_LONG}/yr +STR_VEHICLE_INFO_AGE_RUNNING_COST_YR :{BLACK}Ouderdom: {LTBLUE}{STRING}{BLACK} Lopende koste: {LTBLUE}{CURRENCY_LONG}/jaar # The next two need to stay in this order STR_VEHICLE_INFO_AGE :{COMMA} ja{P ar re} ({COMMA}) STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} ja{P ar re} ({COMMA}) @@ -3293,10 +3606,10 @@ STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} ja STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Maks. spoed: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_MAX_SPEED_RANGE :{BLACK}Max. spoed: {LTBLUE}{VELOCITY} {BLACK}Afstand: {LTBLUE}{COMMA} teëls STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Gewig: {LTBLUE}{WEIGHT_SHORT} {BLACK}Krag: {LTBLUE}{POWER}{BLACK} Maks. spoed: {LTBLUE}{VELOCITY} -STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Gewig: {LTBLUE}{WEIGHT_SHORT} {BLACK}Krag: {LTBLUE}{POWER}{BLACK} Maks. spoed: {LTBLUE}{VELOCITY} {BLACK}Maks. T.E.: {LTBLUE}{FORCE} +STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Massa: {LTBLUE}{WEIGHT_SHORT} {BLACK}Krag: {LTBLUE}{POWER}{BLACK} Maks. spoed: {LTBLUE}{VELOCITY} {BLACK}Maks. T.E.: {LTBLUE}{FORCE} STR_VEHICLE_INFO_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Wins hierdie jaar: {LTBLUE}{CURRENCY_LONG} (vorige jaar: {CURRENCY_LONG}) -STR_VEHICLE_INFO_RELIABILITY_BREAKDOWNS :{BLACK}Betroubaarheid: {LTBLUE}{COMMA}% {BLACK}Brekings sedert laaste diens: {LTBLUE}{COMMA} +STR_VEHICLE_INFO_RELIABILITY_BREAKDOWNS :{BLACK}Betroubaarheid: {LTBLUE}{COMMA}% {BLACK}Hoeveel keer onklaar sedert laaste diens: {LTBLUE}{COMMA} STR_VEHICLE_INFO_BUILT_VALUE :{LTBLUE}{ENGINE} {BLACK}Gebou: {LTBLUE}{NUM}{BLACK} Waarde: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_INFO_NO_CAPACITY :{BLACK}Kapasiteit: {LTBLUE}Geen{STRING} @@ -3304,12 +3617,17 @@ STR_VEHICLE_INFO_CAPACITY :{BLACK}Kapasite 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_INFO_FEEDER_CARGO_VALUE :{BLACK}oordra Krediete: {LTBLUE}{CURRENCY_LONG} +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_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 +STR_VEHICLE_DETAILS_DAYS :Dae +STR_VEHICLE_DETAILS_PERCENT :Persentasie STR_QUERY_RENAME_TRAIN_CAPTION :{WHITE}Benoem trein STR_QUERY_RENAME_ROAD_VEHICLE_CAPTION :{WHITE}Benoem pad voertuig @@ -3320,7 +3638,7 @@ STR_QUERY_RENAME_AIRCRAFT_CAPTION :{WHITE}Benoem v STR_VEHICLE_DETAILS_TRAIN_ENGINE_BUILT_AND_VALUE :{LTBLUE}{ENGINE}{BLACK} Gebou: {LTBLUE}{NUM}{BLACK} Waarde: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_DETAILS_TRAIN_WAGON_VALUE :{LTBLUE}{ENGINE}{BLACK} Waarde: {LTBLUE}{CURRENCY_LONG} -STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY_TEXT :{BLACK}Totaale vrag kapasitiet van die trein: +STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY_TEXT :{BLACK}Totale vragkapasiteit van die trein: 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}) @@ -3334,8 +3652,8 @@ STR_VEHICLE_DETAIL_TAB_INFORMATION :{BLACK}Inligtin STR_VEHICLE_DETAILS_TRAIN_INFORMATION_TOOLTIP :{BLACK}Wys besonderhede van trein voertuie STR_VEHICLE_DETAIL_TAB_CAPACITIES :{BLACK}Kapasiteite STR_VEHICLE_DETAILS_TRAIN_CAPACITIES_TOOLTIP :{BLACK}Wys kapasiteite van elke voertuig -STR_VEHICLE_DETAIL_TAB_TOTAL_CARGO :{BLACK}Totaale Vrag -STR_VEHICLE_DETAILS_TRAIN_TOTAL_CARGO_TOOLTIP :{BLACK}Toon totaale kapasitiet van trein, verdeel by vrag tipe +STR_VEHICLE_DETAIL_TAB_TOTAL_CARGO :{BLACK}Totale Vrag +STR_VEHICLE_DETAILS_TRAIN_TOTAL_CARGO_TOOLTIP :{BLACK}Toon totale kapasiteit van trein, per vragtipe STR_VEHICLE_DETAILS_TRAIN_ARTICULATED_RV_CAPACITY :{BLACK}Kapasiteit: {LTBLUE} @@ -3343,8 +3661,10 @@ STR_VEHICLE_DETAILS_TRAIN_ARTICULATED_RV_CAPACITY :{BLACK}Kapasite STR_REFIT_CAPTION :{WHITE}{VEHICLE} (Herbou) STR_REFIT_TITLE :{GOLD}Kies vrag tipe vir skip te ontvoer: STR_REFIT_NEW_CAPACITY_COST_OF_REFIT :{BLACK}Nuwe kapasiteit: {GOLD}{CARGO_LONG}{}{BLACK}Herboukoste: {RED}{CURRENCY_LONG} +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_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_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}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 @@ -3366,7 +3686,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} @@ -3383,8 +3703,8 @@ STR_ORDER_TOOLTIP_NON_STOP :{BLACK}Verander STR_ORDER_TOGGLE_FULL_LOAD :{BLACK}Vol laai enige vrag STR_ORDER_DROP_LOAD_IF_POSSIBLE :Laai indien beskikbaar -STR_ORDER_DROP_FULL_LOAD_ALL :Vol laai alle vragte -STR_ORDER_DROP_FULL_LOAD_ANY :Vol laai eenigge vrag +STR_ORDER_DROP_FULL_LOAD_ALL :Vol laai alle vrag +STR_ORDER_DROP_FULL_LOAD_ANY :Vol laai enige vrag STR_ORDER_DROP_NO_LOADING :Geen laai STR_ORDER_TOOLTIP_FULL_LOAD :{BLACK}Verander die op-laai gedrag van die geselekteerde bevel @@ -3396,14 +3716,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 @@ -3432,14 +3752,14 @@ STR_ORDER_CONDITIONAL_COMPARATOR_IS_FALSE :is fals STR_ORDER_CONDITIONAL_VALUE_TOOLTIP :{BLACK}Die waarde teen die voertuig data te vergelyk STR_ORDER_CONDITIONAL_VALUE_CAPT :{WHITE}Tik in die waarde om teen te vergelyk -STR_ORDERS_SKIP_BUTTON :{BLACK}Ignoreer -STR_ORDERS_SKIP_TOOLTIP :{BLACK}Ignoreer die huidige opdrag, en begin die volgende. CTRL + kliek spring na verkieste opdrag +STR_ORDERS_SKIP_BUTTON :{BLACK}Slaan oor +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 @@ -3458,10 +3778,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} @@ -3489,23 +3809,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) @@ -3514,21 +3834,25 @@ 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} @@ -3544,7 +3868,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}Selekteer 'n datum as beginpunt van die rooster +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 @@ -3562,11 +3886,11 @@ 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 -STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Verander tussen verwag en skedule +STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Verander tussen verwagte tyd en geskeduleerde tyd STR_TIMETABLE_ARRIVAL_ABBREVIATION :A: STR_TIMETABLE_DEPARTURE_ABBREVIATION :D: @@ -3633,7 +3957,7 @@ STR_AI_CONFIG_CONFIGURE_TOOLTIP :{BLACK}Konfigur STR_AI_LIST_CAPTION :{WHITE}Beskikbaar {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} @@ -3658,6 +3982,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 @@ -3679,7 +4005,11 @@ STR_INCOME_FLOAT_COST :{RED}Koste: {CU STR_INCOME_FLOAT_INCOME_SMALL :{TINY_FONT}{GREEN}Inkomste: {CURRENCY_LONG} STR_INCOME_FLOAT_INCOME :{GREEN}Inkomste: {CURRENCY_LONG} STR_FEEDER_TINY :{TINY_FONT}{YELLOW}Oorplaas: {CURRENCY_LONG} -STR_FEEDER :{YELLOW}Oorplaas: {CURRENCY_LONG} +STR_FEEDER :{YELLOW}Oordrag: {CURRENCY_LONG} +STR_FEEDER_INCOME_TINY :{TINY_FONT}{YELLOW}Oordrag: {CURRENCY_LONG}{WHITE} / {GREEN}Inkomste: {CURRENCY_LONG} +STR_FEEDER_INCOME :{YELLOW}Oordrag: {CURRENCY_LONG}{WHITE} / {GREEN}Inkomste: {CURRENCY_LONG} +STR_FEEDER_COST_TINY :{TINY_FONT}{YELLOW}Oordrag: {CURRENCY_LONG}{WHITE} / {RED}Koste: {CURRENCY_LONG} +STR_FEEDER_COST :{YELLOW} Oordrag: {CURRENCY_LONG}{WHITE} / {RED}Koste: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_COST :{WHITE}Beraamde Koste: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Beraamde Inkomste: {CURRENCY_LONG} @@ -3720,6 +4050,8 @@ STR_WARNING_HEIGHTMAP_SCALE_MESSAGE :{YELLOW}Om die STR_WARNING_FALLBACK_SOUNDSET :{WHITE}Kon slegs 'n nood klank stel op spoor. Gaan na 'Aanlyn Inhoud' om klank stelle af te laai # Screenshot related messages +STR_WARNING_SCREENSHOT_SIZE_CAPTION :{WHITE}Groot skermskoot +STR_WARNING_SCREENSHOT_SIZE_MESSAGE :{YELLOW}Die skermskoot sal 'n resolusie van {COMMA} x {COMMA} pixels beslaan. Hierdie skermskoot mag 'n tydjie neem. Wil u aangaan?? STR_MESSAGE_SCREENSHOT_SUCCESSFULLY :{WHITE}Skermkiekie suksesvol gestoor as '{STRING}' STR_ERROR_SCREENSHOT_FAILED :{WHITE}Skermskoot het misluk! @@ -3741,7 +4073,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 @@ -3774,7 +4106,7 @@ STR_ERROR_CURRENCY_REQUIRED :{WHITE}... {CUR STR_ERROR_CAN_T_REPAY_LOAN :{WHITE}Kan nie lening terugbetaal nie... STR_ERROR_INSUFFICIENT_FUNDS :{WHITE}Kan nie geld wat van die bank geleen is weggee nie... STR_ERROR_CAN_T_BUY_COMPANY :{WHITE}Maatskappy kan nie aangekoop word nie... -STR_ERROR_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}Maatskappy hoofkwartiers kan nie hier gebou word nie... +STR_ERROR_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}Maatskappy hoofkwartier kan nie hier gebou word nie... STR_ERROR_CAN_T_BUY_25_SHARE_IN_THIS :{WHITE}Kan nie 25% aandeel in die maatskappy koop nie... STR_ERROR_CAN_T_SELL_25_SHARE_IN :{WHITE}Kan nie 25% aandeel in die maatskappy verkoop nie... STR_ERROR_PROTECTED :{WHITE}Die maatskappy is nie oud genoeg om aandeele te handel nie... @@ -3813,7 +4145,7 @@ STR_ERROR_CAN_ONLY_BE_BUILT_ABOVE_SNOW_LINE :{WHITE}... kan STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE}... kan slegs onder sneeu-lyn gebou word # 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... @@ -3833,12 +4165,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... @@ -3846,7 +4178,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 @@ -3855,15 +4187,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! @@ -3906,8 +4238,8 @@ STR_ERROR_MUST_REMOVE_RAILROAD_TRACK :{WHITE}Moet eer STR_ERROR_CROSSING_ON_ONEWAY_ROAD :{WHITE}Pad is een rigting of geblok STR_ERROR_CROSSING_DISALLOWED :{WHITE}Vlak kruisings word nie toegelaat vir die spoor tipe nie STR_ERROR_CAN_T_BUILD_SIGNALS_HERE :{WHITE}Kan nie seinligte hier bou nie... -STR_ERROR_CAN_T_BUILD_RAILROAD_TRACK :{WHITE}Kan nie spoore hier bou nie... -STR_ERROR_CAN_T_REMOVE_RAILROAD_TRACK :{WHITE}Kan nie spoore vanaf hier verwyder nie... +STR_ERROR_CAN_T_BUILD_RAILROAD_TRACK :{WHITE}Kan nie spore hier bou nie... +STR_ERROR_CAN_T_REMOVE_RAILROAD_TRACK :{WHITE}Kan nie spore hier verwyder nie... STR_ERROR_CAN_T_REMOVE_SIGNALS_FROM :{WHITE}Kan nie seinligte vanaf hier verwyder nie... STR_ERROR_SIGNAL_CAN_T_CONVERT_SIGNALS_HERE :{WHITE}Kan nie seine hier verander nie... STR_ERROR_THERE_IS_NO_RAILROAD_TRACK :{WHITE}... daar is geen trein spoor @@ -3928,7 +4260,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 @@ -3947,7 +4279,7 @@ 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_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 @@ -3959,7 +4291,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 @@ -3974,12 +4306,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 @@ -4029,6 +4362,11 @@ STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}Kan nie STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... voertuig is vernietig +STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL :{WHITE}Geen voertuie gaan beskikbaar wees nie +STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Verander jou NewGRF stellings +STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}Geen voertuie is op die oomblik beskikbaar nie +STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Begin na {DATE_SHORT} of gebruik 'n NewGRF wat voertuie vroeër beskikbaar stel + # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Kan nie trein forseer om sein te vermy op gevaar... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Kan nie rigting van trein verander nie... @@ -4054,7 +4392,7 @@ STR_ERROR_CAN_T_ADD_ORDER_SHARED :{WHITE}... 'n v STR_ERROR_CAN_T_SHARE_ORDER_LIST :{WHITE}Kan nie opdraglys deel nie... STR_ERROR_CAN_T_STOP_SHARING_ORDER_LIST :{WHITE}Kan nie opdraglys ophou deel nie...... STR_ERROR_CAN_T_COPY_ORDER_LIST :{WHITE}Kan nie opdrag lys kopie nie... -STR_ERROR_TOO_FAR_FROM_PREVIOUS_DESTINATION :{WHITE}... te ver van vorige destinasie +STR_ERROR_TOO_FAR_FROM_PREVIOUS_DESTINATION :{WHITE}... te ver van vorige bestemming STR_ERROR_AIRCRAFT_NOT_ENOUGH_RANGE :{WHITE}... vliegtuig kan nie so ver vlieg nie # Timetable related errors @@ -4071,6 +4409,16 @@ STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}Kan nie # Translatable comment for OpenTTD's desktop shortcut STR_DESKTOP_SHORTCUT_COMMENT :'n Simulasie speletjie wat gebaseer is op Transport Tycoon Deluxe +# Translatable descriptions in media/baseset/*.ob* files +STR_BASEGRAPHICS_DOS_DESCRIPTION :Oorspronklike Transport Tycoon Deluxe DOS uitgawe grafieke. +STR_BASEGRAPHICS_DOS_DE_DESCRIPTION :Oorspronklike Transport Tycoon Deluxe DOS (German) uitgawe grafieke. +STR_BASEGRAPHICS_WIN_DESCRIPTION :Oorspronklike Transport Tycoon Deluxe Windows uitgawe grafieke. +STR_BASESOUNDS_DOS_DESCRIPTION :Oorspronklike Transport Tycoon Deluxe DOS uitgawe klanke. +STR_BASESOUNDS_WIN_DESCRIPTION :Oorspronklike Transport Tycoon Deluxe Windows uitgawe klanke. +STR_BASESOUNDS_NONE_DESCRIPTION :'n Klank stel sonder enige klanke. +STR_BASEMUSIC_WIN_DESCRIPTION :Oorspronklike Transport Tycoon Deluxe Windows uitgawe musiek. +STR_BASEMUSIC_NONE_DESCRIPTION :'n Musiek stel sonder enige musiek. + ##id 0x2000 # Town building names STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1 :Hoog kantoor blok @@ -4084,7 +4432,7 @@ STR_TOWN_BUILDING_NAME_STATUE_1 :Standbeeld STR_TOWN_BUILDING_NAME_FOUNTAIN_1 :Fontein STR_TOWN_BUILDING_NAME_PARK_1 :Park STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_2 :Kantoor blok -STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_1 :Winkels en kantoore +STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_1 :Winkels en kantore STR_TOWN_BUILDING_NAME_MODERN_OFFICE_BUILDING_1 :Moderne kantoor gebou STR_TOWN_BUILDING_NAME_WAREHOUSE_1 :Pakhuis STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_3 :Kantoor blok @@ -4098,7 +4446,7 @@ STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_2 :Winkels en kant STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_3 :Winkels en kantoore STR_TOWN_BUILDING_NAME_THEATER_1 :Teatre STR_TOWN_BUILDING_NAME_STADIUM_2 :Stadion -STR_TOWN_BUILDING_NAME_OFFICES_1 :Kantoore +STR_TOWN_BUILDING_NAME_OFFICES_1 :Kantore STR_TOWN_BUILDING_NAME_HOUSES_2 :Huise STR_TOWN_BUILDING_NAME_CINEMA_1 :Kinema STR_TOWN_BUILDING_NAME_SHOPPING_MALL_1 :Winkelsentrum @@ -4109,43 +4457,43 @@ STR_TOWN_BUILDING_NAME_PIGGY_BANK_1 :Varkie-Bank ##id 0x4800 # industry names -STR_INDUSTRY_NAME_COAL_MINE :Kool Myn -STR_INDUSTRY_NAME_POWER_STATION :Krag Stasie +STR_INDUSTRY_NAME_COAL_MINE :Steenkoolmyn +STR_INDUSTRY_NAME_POWER_STATION :Kragsentrale STR_INDUSTRY_NAME_SAWMILL :Saagmeul STR_INDUSTRY_NAME_FOREST :Woud -STR_INDUSTRY_NAME_OIL_REFINERY :Olie Raffineerdery +STR_INDUSTRY_NAME_OIL_REFINERY :Olieraffinadery STR_INDUSTRY_NAME_OIL_RIG :Olieboor STR_INDUSTRY_NAME_FACTORY :Fabriek STR_INDUSTRY_NAME_PRINTING_WORKS :Drukwerke -STR_INDUSTRY_NAME_STEEL_MILL :Staal Meule -STR_INDUSTRY_NAME_FARM :Boerdery -STR_INDUSTRY_NAME_COPPER_ORE_MINE :Koper Erts Myn -STR_INDUSTRY_NAME_OIL_WELLS :Olie Bron +STR_INDUSTRY_NAME_STEEL_MILL :Staalfabriek +STR_INDUSTRY_NAME_FARM :Plaas +STR_INDUSTRY_NAME_COPPER_ORE_MINE :Kopermyn +STR_INDUSTRY_NAME_OIL_WELLS :Olieboorgat STR_INDUSTRY_NAME_BANK :Bank -STR_INDUSTRY_NAME_FOOD_PROCESSING_PLANT :Kos Verwerkings Fabriek +STR_INDUSTRY_NAME_FOOD_PROCESSING_PLANT :Kosfabriek STR_INDUSTRY_NAME_PAPER_MILL :Papiermeul -STR_INDUSTRY_NAME_GOLD_MINE :Goud Myn +STR_INDUSTRY_NAME_GOLD_MINE :Goudmyn STR_INDUSTRY_NAME_BANK_TROPIC_ARCTIC :Bank -STR_INDUSTRY_NAME_DIAMOND_MINE :Diamant Myn -STR_INDUSTRY_NAME_IRON_ORE_MINE :Yster Erts Myn +STR_INDUSTRY_NAME_DIAMOND_MINE :Diamantmyn +STR_INDUSTRY_NAME_IRON_ORE_MINE :Ystermyn STR_INDUSTRY_NAME_FRUIT_PLANTATION :Vrugte Plantasie STR_INDUSTRY_NAME_RUBBER_PLANTATION :Rubber Plantasie -STR_INDUSTRY_NAME_WATER_SUPPLY :Water Verskaf -STR_INDUSTRY_NAME_WATER_TOWER :Water Toring +STR_INDUSTRY_NAME_WATER_SUPPLY :Watertoevoer +STR_INDUSTRY_NAME_WATER_TOWER :Watertoring STR_INDUSTRY_NAME_FACTORY_2 :Fabriek -STR_INDUSTRY_NAME_FARM_2 :Boerdery -STR_INDUSTRY_NAME_LUMBER_MILL :Timmerhout Meule -STR_INDUSTRY_NAME_COTTON_CANDY_FOREST :Spookasem Woud -STR_INDUSTRY_NAME_CANDY_FACTORY :Lekker Fabriek -STR_INDUSTRY_NAME_BATTERY_FARM :Battery Boerdery +STR_INDUSTRY_NAME_FARM_2 :Plaas +STR_INDUSTRY_NAME_LUMBER_MILL :Houtmeul +STR_INDUSTRY_NAME_COTTON_CANDY_FOREST :Spookasemwoud +STR_INDUSTRY_NAME_CANDY_FACTORY :Lekkergoedfabriek +STR_INDUSTRY_NAME_BATTERY_FARM :Batteryplaas STR_INDUSTRY_NAME_COLA_WELLS :Cola Spruite -STR_INDUSTRY_NAME_TOY_SHOP :Speelgoed Winkel -STR_INDUSTRY_NAME_TOY_FACTORY :Speelgoed Fabriek -STR_INDUSTRY_NAME_PLASTIC_FOUNTAINS :Plastiek Fonteine -STR_INDUSTRY_NAME_FIZZY_DRINK_FACTORY :Koeldrank Fabriek -STR_INDUSTRY_NAME_BUBBLE_GENERATOR :Borrel Genereerder +STR_INDUSTRY_NAME_TOY_SHOP :Speelgoedwinkel +STR_INDUSTRY_NAME_TOY_FACTORY :Speelgoedfabriek +STR_INDUSTRY_NAME_PLASTIC_FOUNTAINS :Plastiekfontein +STR_INDUSTRY_NAME_FIZZY_DRINK_FACTORY :Koeldrankfabriek +STR_INDUSTRY_NAME_BUBBLE_GENERATOR :Borrelopwekker STR_INDUSTRY_NAME_TOFFEE_QUARRY :Tamletjie Prooi -STR_INDUSTRY_NAME_SUGAR_MINE :Suiker Myn +STR_INDUSTRY_NAME_SUGAR_MINE :Suikermyn ############ WARNING, using range 0x6000 for strings that are stored in the savegame ############ These strings may never get a new id, or savegames will break! @@ -4157,34 +4505,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} Werfe +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} Wisselspoore -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 @@ -4193,7 +4541,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) @@ -4216,7 +4564,7 @@ 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_OIL_TANKER :Olie Tenkwa @@ -4226,7 +4574,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 @@ -4246,9 +4594,9 @@ 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 :Kool Trok +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COAL_CAR :Steenkoolwa STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_OIL_TANKER :Olie Tenkwa STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_LIVESTOCK_VAN :Lewende Hawe Wa STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_GOODS_VAN :Goedere Wa @@ -4256,7 +4604,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 @@ -4278,7 +4626,7 @@ 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_OIL_TANKER :Olie Tenkwa @@ -4288,7 +4636,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 @@ -4342,9 +4690,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 @@ -4400,10 +4748,10 @@ STR_VEHICLE_NAME_SHIP_FFP_PASSENGER_FERRY :FFP Passasier V STR_VEHICLE_NAME_SHIP_BAKEWELL_300_HOVERCRAFT :Bakewell 300 Skeertuig STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :Chugger-Chug Passasier Veerboot STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :Shivershake Passasier Veerboot -STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :Yate Vrag skip -STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :Bakewell Vrag skip -STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :Mightymover Vrag skip -STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :Powernaut Vrag skip +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_POWERNAUT_CARGO_SHIP :Powernaut vragskip STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :Sampson U52 STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :Coleman Count STR_VEHICLE_NAME_AIRCRAFT_FFP_DART :FFP Dart @@ -4458,8 +4806,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} @@ -4517,8 +4865,9 @@ 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_SPACE_STRING :{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} @@ -4542,9 +4891,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 e7578123d..1d354563b 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} من النفط @@ -222,7 +222,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}اعادة تسمية @@ -255,7 +255,6 @@ STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}المس # These are used in buttons -STR_SORT_BY_CAPTION_POPULATION :{BLACK}عدد السكان STR_SORT_BY_CAPTION_NAME :{BLACK}اسم STR_SORT_BY_CAPTION_DATE :{BLACK}تاريخ # These are used in dropdowns @@ -276,7 +275,6 @@ STR_SORT_BY_LENGTH :الطول STR_SORT_BY_LIFE_TIME :العمر المتبقي STR_SORT_BY_TIMETABLE_DELAY :تاخير جدولة الاوامر STR_SORT_BY_FACILITY :نوع المحطة -STR_SORT_BY_WAITING :قيمة الشحنة المنتظرة STR_SORT_BY_RATING_MAX :اعلى نسبة شحن STR_SORT_BY_RATING_MIN :اقل نسبة شحن STR_SORT_BY_ENGINE_ID :نوع المحرك (قياسي( @@ -288,6 +286,7 @@ 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 :عدد السكان # Tooltips for the main toolbar STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}ايقاف اللعبة @@ -346,10 +345,10 @@ STR_SCENEDIT_FILE_MENU_QUIT :انهاء ############ range for SE file menu starts ############ range for settings menu starts -STR_SETTINGS_MENU_GAME_OPTIONS :خيارات اللعبة +STR_SETTINGS_MENU_GAME_OPTIONS :إعدادات اللعبه STR_SETTINGS_MENU_CONFIG_SETTINGS :اعدادات متقدمة 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 :عرض اسماء المحطات @@ -370,19 +369,18 @@ STR_FILE_MENU_SEPARATOR : STR_FILE_MENU_EXIT :خروج ############ range ends here -############ range for map menu starts +# map menu STR_MAP_MENU_MAP_OF_WORLD :خريطة العالم STR_MAP_MENU_EXTRA_VIEW_PORT :شاشة عرض اضافية STR_MAP_MENU_SIGN_LIST :قائمة العلامات -############ range for town menu starts, yet the town directory is shown in the map menu in the scenario editor + +############ range for town menu starts STR_TOWN_MENU_TOWN_DIRECTORY :دليل المدن -############ end of the 'Display map' dropdown STR_TOWN_MENU_FOUND_TOWN :جد المدينة -############ end of the 'Town' dropdown +############ range ends here ############ range for subsidies menu starts STR_SUBSIDIES_MENU_SUBSIDIES :العروض -STR_SUBSIDIES_MENU_GOAL :الاهداف الحالية ############ range ends here ############ range for graph menu starts @@ -453,7 +451,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 @@ -469,22 +467,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 @@ -623,7 +639,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}برنامج اختيار الموسيقى @@ -646,7 +662,7 @@ STR_HIGHSCORE_PERFORMANCE_TITLE_CAPITALIST :عمدة الت STR_HIGHSCORE_PERFORMANCE_TITLE_MAGNATE :وزير التجارة و النقل STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL :ملك التجارة و النقل STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY :امبراطور القرن -STR_HIGHSCORE_NAME :{BIG_FONT}{PRESIDENT_NAME}. {COMPANY} +STR_HIGHSCORE_NAME :{PRESIDENT_NAME}. {COMPANY} STR_HIGHSCORE_STATS :{BIG_FONT}'{STRING}' ({COMMA}) STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{BLACK}حققت شركة {COMPANY} بجدارة'{STRING}' STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{WHITE}حقق {PRESIDENT_NAME}مدير شركة {COMPANY} '{STRING}' بجدارة @@ -735,7 +751,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} @@ -787,13 +803,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} اصبحت قديمة جدا @@ -833,7 +847,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}اختيار وحدة العملة @@ -869,13 +883,8 @@ STR_GAME_OPTIONS_CURRENCY_EEK :كرونا اس STR_GAME_OPTIONS_CURRENCY_CUSTOM :مخصص ... ############ end of currency region -STR_GAME_OPTIONS_MEASURING_UNITS_FRAME :{BLACK}وحدات القياس -STR_GAME_OPTIONS_MEASURING_UNITS_DROPDOWN_TOOLTIP :{BLACK}اختيار وحدات القياس ############ start of measuring units region -STR_GAME_OPTIONS_MEASURING_UNITS_IMPERIAL :امبريل -STR_GAME_OPTIONS_MEASURING_UNITS_METRIC :متري -STR_GAME_OPTIONS_MEASURING_UNITS_SI :النظام الدولي للوحدات ( م-كجم-ث) ############ end of measuring units region STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}العربات البرية @@ -913,11 +922,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}اختر لغة الواجهه @@ -929,9 +940,6 @@ 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} اختر مجموعة الواجهة الرسومية STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} ملف مفقود او غير صالح @@ -941,7 +949,7 @@ 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}معلومات اضافية عن الموسيقى الاساسية @@ -1032,8 +1040,11 @@ STR_CITY_APPROVAL_HOSTILE :معاد STR_WARNING_NO_SUITABLE_AI :{WHITE}لايوجد ذكاء اصطناعي متاح ...{}تستطيع تجميل العديد من الذكاء الاصطناعي عن طريق اللانترنت # Advanced settings window -STR_CONFIG_SETTING_CAPTION :{WHITE}الاعدادات المتقدمة +STR_CONFIG_SETTING_CAPTION :{WHITE}إعدادات متقدمه +STR_CONFIG_SETTING_EXPAND_ALL :مدد الكل +STR_CONFIG_SETTING_COLLAPSE_ALL :إسحب الكل +STR_CONFIG_SETTING_RESTRICT_BASIC :اﻹعدادات الاساسيه STR_CONFIG_SETTING_TYPE_DROPDOWN_HELPTEXT :{BLACK}احصر القائمة على انواع اعدادات محددة STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :كل الاعدادات @@ -1060,7 +1071,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} @@ -1069,10 +1079,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 :ككل المصانع الأخرى @@ -1084,7 +1091,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} @@ -1096,10 +1102,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} @@ -1134,7 +1138,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_EDGES_NOT_EMPTY :{WHITE}مربع او اكثر غير فارغ في الحدود الشمالية STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}مربع او اكثر من حدود الخريطة لا يكون بحر @@ -1165,15 +1168,12 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :عدم استخ STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :تصفح بالزر الايسر: {STRING} + 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 :لا تصرف @@ -1240,11 +1240,17 @@ STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES :التغيرا STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY :تغير في انتاج مصنع مشمول بخدمات الشركة: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER :تغير في انتاج مصنع مشمول بخدمات الشركات الأخرى: {STRING} 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 :ملخص @@ -1253,7 +1259,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} @@ -1302,27 +1308,23 @@ 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_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 @@ -1359,10 +1361,12 @@ STR_INTRO_PLAY_HEIGHTMAP :{BLACK}العب STR_INTRO_SCENARIO_EDITOR :{BLACK}محرر الخريطة STR_INTRO_MULTIPLAYER :{BLACK}لعب جماعي -STR_INTRO_GAME_OPTIONS :{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_ONLINE_CONTENT :{BLACK} إبحث عن المحتوى عبر الشبكه العنكبوتيه +STR_INTRO_SCRIPT_SETTINGS :{BLACK}إعدادات الذكاء الصناعى STR_INTRO_QUIT :{BLACK}خروج STR_INTRO_TOOLTIP_NEW_GAME :{BLACK}بدأ لعبة جديدة @@ -1379,7 +1383,7 @@ 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' @@ -1404,19 +1408,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 :مناطق مدارية @@ -1465,6 +1469,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}اختر وجة رجل @@ -1520,10 +1525,6 @@ STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}غير # Network server list STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}تعدد اللاعبين -STR_NETWORK_SERVER_LIST_CONNECTION :{BLACK}اتصال -STR_NETWORK_SERVER_LIST_CONNECTION_TOOLTIP :{BLACK}أختر بين لعبة على الإنترنت أو الشبكة المحلية (LAN) -STR_NETWORK_SERVER_LIST_LAN :شبكة محلية -STR_NETWORK_SERVER_LIST_INTERNET :انترنت STR_NETWORK_SERVER_LIST_PLAYER_NAME :{BLACK}أسم اللاعب STR_NETWORK_SERVER_LIST_ENTER_NAME_TOOLTIP :{BLACK}هذا الآسم الذي ستعرف به في اللعبة @@ -1550,7 +1551,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} @@ -1564,7 +1565,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}اضف خادم (سيرفر) و الذي سوف يفحص اذا كان هناك لعبة قيد التشغيل حاليا @@ -1582,8 +1583,6 @@ 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_LAN_INTERNET :شبكة محلية / انترنت -STR_NETWORK_START_SERVER_INTERNET_ADVERTISE :انترنت (دعاية) STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM}عميل STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}اقصى عدد عملاء: STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}أختر أقصى عدد للعملاء @@ -1683,8 +1682,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 +1702,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 +1799,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 +1811,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} @@ -1877,6 +1876,10 @@ STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK} غير STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}غير الشفافية لنسبة التحميل. مفتاح كنترول للاغلاق. STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}اخفاء الاجرام تماما بدلا من الشفافية +# Linkgraph legend window + +# Linkgraph legend window and linkgraph legend in smallmap + # Base for station construction window(s) STR_STATION_BUILD_COVERAGE_AREA_TITLE :{BLACK}وضح منطقة التغطية STR_STATION_BUILD_COVERAGE_OFF :{BLACK}غلق @@ -2117,7 +2120,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} المدن الكبيرة تنمو اسرع من المدن العادية. {} كلما كانت اكبر عند انشائها, بالاعتماد على الاعدادات. @@ -2271,7 +2274,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-2012 فريق النسخة المفتوحة +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}النسخة المفتوحة {COPYRIGHT}2002-2014 فريق النسخة المفتوحة # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}حفظ اللعبة @@ -2307,10 +2310,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} نوع التضاريس @@ -2337,7 +2336,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}غير سنة البداية @@ -2356,7 +2354,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} مولد الخريطة @@ -2366,15 +2364,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}حفظ القائمة الحالية كمجموعة اعدادات @@ -2414,6 +2412,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}غير خصائص الاضافات الجديدة STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}اغلق @@ -2472,7 +2472,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حمل) @@ -2506,6 +2506,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 STR_NEWGRF_SCAN_CAPTION :{WHITE}بحث اضافات جديدة STR_NEWGRF_SCAN_MESSAGE :{BLACK}تحديث الاضافات. وقت البحث يعتمدعلى عدد الاضافات. من الممكن ان يستغرق وقتا اطول... @@ -2550,10 +2552,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}حذف المدينة كليا @@ -2606,6 +2608,8 @@ STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}العر STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING} من {STRING} الى {STRING}{YELLOW} - {COMPANY}{YELLOW}, حتى {DATE_SHORT}- STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}اضغط على الخدمة لتوسيط الخريطة على المصنع/المدينة. اضغط + كنترول لفتح شاشة عرض جديدة للمدينة. +# Story book window + # Station list window STR_STATION_LIST_TOOLTIP :{BLACK}اسم المحطة - اضغط على اسم المحطة لتوسيطها في الشاشة. اضغط + كنترول لفتح شاشة عرض جديدة بمنطقة المحطة. STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}اضغط بشكل متواصل على مفتاح كنترول لاختيار اكثر من وحدة @@ -2619,7 +2623,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}) @@ -2630,8 +2633,8 @@ STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}يقبل STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}معدل النقل STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}اظهار معدل النقل للمحطة -STR_STATION_VIEW_CARGO_RATINGS_TITLE :{BLACK}التقييم المحلي لخدمات النقل: -STR_STATION_VIEW_CARGO_RATING :{WHITE}{STRING} :{YELLOW}{STRING} ) {COMMA}%) + + ############ range for rating starts STR_CARGO_RATING_APPALLING :منعدم @@ -2818,6 +2821,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 :أزل جميع المركبات @@ -3020,9 +3024,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}اجبر القطار على التحرك بدون انتظار الاشارة الخضراء @@ -3105,6 +3109,7 @@ STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}فترا STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}زيادة فترات الصيانة بقدر 10. ومع مفتاح كنترول بمقدار 5. STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK} انقاص فترات الصيانة بمعدل 10. Ctrl+ الضغط الانقاص بمعدل 5. + STR_QUERY_RENAME_TRAIN_CAPTION :{WHITE}اسم القطار STR_QUERY_RENAME_ROAD_VEHICLE_CAPTION :{WHITE}تسمية العربة STR_QUERY_RENAME_SHIP_CAPTION :{WHITE}تسمية السفينة @@ -3318,7 +3323,7 @@ STR_TIMETABLE_TOOLTIP :{BLACK}جدول STR_TIMETABLE_NO_TRAVEL :لا رحيل STR_TIMETABLE_NOT_TIMETABLEABLE :المغادرة (ذاتي: بواسطة الامر اليدوي التالي) -STR_TIMETABLE_TRAVEL_NOT_TIMETABLED :مسافر (ليس هناك جدولة) +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} @@ -3328,24 +3333,23 @@ 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_STARTING_DATE_TOOLTIP :{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}ازل تحديد السرعة @@ -3394,10 +3398,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 :ذكاء صناعي عشوائي @@ -3464,7 +3468,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 :لايمكن قراءة الملف @@ -3521,7 +3525,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}محاولتك لرشوة السلطات اكتشفت بواسطة مراقب محلي @@ -3553,7 +3557,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}... قريبة جدا من حافة الخريطة @@ -3568,7 +3572,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}... يجب بناء مدينة اولا @@ -3585,136 +3589,136 @@ 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}نهايات الجسر ليست على استقامة واحدة @@ -3725,7 +3729,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}نفق آخر في مسار هذا النفق @@ -3800,6 +3804,9 @@ 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}لا يمكن السماح للقطار بالعبور من الاشارة في وضع الخطر STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}لا يمكن عكس اتجاة القطار... @@ -3841,6 +3848,16 @@ STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}لا ي # Translatable comment for OpenTTD's desktop shortcut 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_BASESOUNDS_DOS_DESCRIPTION :النسخة الاصلية من ترانسبورت تايكون ديلوكس الصوتية نسخة الدوس +STR_BASESOUNDS_WIN_DESCRIPTION :النسخة الاصلية من ترانسبورت تايكون ديلوكس الصوتية نسخة وندوز +STR_BASESOUNDS_NONE_DESCRIPTION :مجموعة صوت بدوت اصوات مضافة +STR_BASEMUSIC_WIN_DESCRIPTION :النسخة الاصلية من ترانسبورت تايكون ديلوكس الموسيقية نسخة وندوز +STR_BASEMUSIC_NONE_DESCRIPTION :مجموعة موسيقى بدون موسيقى + ##id 0x2000 # Town building names STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1 :مبنى مكاتب عالي @@ -4287,8 +4304,9 @@ 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_SPACE_STRING :{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} @@ -4312,9 +4330,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 be426199b..9ae41e9da 100644 --- a/src/lang/basque.txt +++ b/src/lang/basque.txt @@ -199,21 +199,26 @@ STR_UNITS_POWER_IMPERIAL :{COMMA}hp STR_UNITS_POWER_METRIC :{COMMA}hp 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} tona{P "" s} STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} tona STR_UNITS_WEIGHT_LONG_SI :{COMMA} kg +STR_UNITS_VOLUME_SHORT_IMPERIAL :{COMMA}galoi STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}l STR_UNITS_VOLUME_SHORT_SI :{COMMA}m³ +STR_UNITS_VOLUME_LONG_IMPERIAL :{COMMA} galoi{P "" s} STR_UNITS_VOLUME_LONG_METRIC :{COMMA} litro STR_UNITS_VOLUME_LONG_SI :{COMMA} m³ 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 +226,7 @@ STR_LIST_FILTER_TITLE :{BLACK}Lokarri 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 @@ -256,7 +262,6 @@ STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}Area: {N # These are used in buttons -STR_SORT_BY_CAPTION_POPULATION :{BLACK}Biztanleria STR_SORT_BY_CAPTION_NAME :{BLACK}Izena STR_SORT_BY_CAPTION_DATE :{BLACK}Data # These are used in dropdowns @@ -277,7 +282,6 @@ STR_SORT_BY_LENGTH :Luzera STR_SORT_BY_LIFE_TIME :Geratzen zaion bizitza denbora STR_SORT_BY_TIMETABLE_DELAY :Ordutegiko atzerapena STR_SORT_BY_FACILITY :Geltoki mota -STR_SORT_BY_WAITING :Itxaroten dagoen zamaren balioa STR_SORT_BY_RATING_MAX :Zama balorazio handiena STR_SORT_BY_RATING_MIN :Zama balorazio txikiena STR_SORT_BY_ENGINE_ID :MotoreID (ordenatze klasikoa) @@ -289,6 +293,8 @@ STR_SORT_BY_RUNNING_COST :Mantenimendu ko STR_SORT_BY_POWER_VS_RUNNING_COST :Potentzia/Mantenimendu kosteak 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 @@ -371,19 +377,18 @@ STR_FILE_MENU_SEPARATOR : STR_FILE_MENU_EXIT :Irten ############ range ends here -############ range for map menu starts +# map menu STR_MAP_MENU_MAP_OF_WORLD :Munduko mapa STR_MAP_MENU_EXTRA_VIEW_PORT :lehio extra STR_MAP_MENU_SIGN_LIST :Seinale zerrenda -############ range for town menu starts, yet the town directory is shown in the map menu in the scenario editor + +############ range for town menu starts STR_TOWN_MENU_TOWN_DIRECTORY :Herri direktorioa -############ end of the 'Display map' dropdown STR_TOWN_MENU_FOUND_TOWN :Herria eraiki -############ end of the 'Town' dropdown +############ range ends here ############ range for subsidies menu starts STR_SUBSIDIES_MENU_SUBSIDIES :Subsidioak -STR_SUBSIDIES_MENU_GOAL :Oraingo helmugak ############ range ends here ############ range for graph menu starts @@ -457,7 +462,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. @@ -473,22 +478,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 @@ -650,7 +673,7 @@ STR_HIGHSCORE_PERFORMANCE_TITLE_CAPITALIST :Kapitalista STR_HIGHSCORE_PERFORMANCE_TITLE_MAGNATE :Magnatea STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL :Handikia STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY :Mendeko Tycoona -STR_HIGHSCORE_NAME :{BIG_FONT}{PRESIDENT_NAME}, {COMPANY} +STR_HIGHSCORE_NAME :{PRESIDENT_NAME}, {COMPANY} STR_HIGHSCORE_STATS :{BIG_FONT}'{STRING}' ({COMMA}) STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{BLACK}{COMPANY} lorpenak '{STRING}' estatusa! STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{WHITE}{PRESIDENT_NAME} {COMPANY} lorpenak '{STRING}' estatusa! @@ -705,6 +728,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 @@ -715,6 +739,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 @@ -791,13 +817,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 @@ -878,13 +902,8 @@ STR_GAME_OPTIONS_CURRENCY_ZAR :Hego Afrikako R STR_GAME_OPTIONS_CURRENCY_CUSTOM :Pertsonalizatua... ############ end of currency region -STR_GAME_OPTIONS_MEASURING_UNITS_FRAME :{BLACK}Neurtze unitateak -STR_GAME_OPTIONS_MEASURING_UNITS_DROPDOWN_TOOLTIP :{BLACK}Neurtze unitateen selekzioa ############ start of measuring units region -STR_GAME_OPTIONS_MEASURING_UNITS_IMPERIAL :Imperiala -STR_GAME_OPTIONS_MEASURING_UNITS_METRIC :Metrikoa -STR_GAME_OPTIONS_MEASURING_UNITS_SI :SI ############ end of measuring units region STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Errepideko garraioak @@ -922,11 +941,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 @@ -938,9 +959,6 @@ 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 STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} galdutako/hautsitako artxiboa{P "" k} @@ -1054,7 +1072,8 @@ 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 @@ -1062,6 +1081,7 @@ STR_CONFIG_SETTING_RESTRICT_ALL :Adituentzako ez 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 @@ -1082,7 +1102,7 @@ STR_CONFIG_SETTING_HORIZONTAL_POS_RIGHT :Eskuina STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN :Gehienezko mailegua joko hasieran: {STRING} STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Konpainiek eskatu dezaketen gehienezko mailegua(inflazioa kontua hartu gabe) STR_CONFIG_SETTING_INTEREST_RATE :Interes tasa: {STRING} -STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Maileguen interes tasa; inflazioa ere kontrolatuko du (Gaitua badago) +STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Maileguen interes tasa; inflazioa ere kontrolatuko du, gaitzen bada STR_CONFIG_SETTING_RUNNING_COSTS :Mantenimendu kostea: {STRING} STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT :Ibilgailu eta azpigiturak mantentzea kostatuko duena ezarri STR_CONFIG_SETTING_CONSTRUCTION_SPEED :Eraikitzeko abiadura: {STRING} @@ -1094,7 +1114,7 @@ STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT :Subsidio garrai STR_CONFIG_SETTING_CONSTRUCTION_COSTS :Eraikuntza kosteak: {STRING} STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :Erosketa eta eraikuntza kostuak ezarri STR_CONFIG_SETTING_RECESSIONS :Atzerapen ekonomikoak: {STRING} -STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Gaitua dagoenean, atzeratze ekonomikoa urte gutxika gertatuko da. Atzeratze ekonomikoan, fabriken ekoizpena dexente gutxituko da (Aurreko balioetara bueltatuko da atzerapena amaitzerakoan) +STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Gaitua dagoenean, atzeratze ekonomikoa urte gutxika gertatuko da. Atzeratze ekonomikoan, ekoizpen orokorra dexente gutxituko da (Aurreko balioetara bueltatuko da atzerapena amaitzerakoan) STR_CONFIG_SETTING_TRAIN_REVERSING :Trenak geltokietan buelta eman ahal izatea: {STRING} STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :Gaitua dagoenean, trenak ezingo dute geltokietan (trebidea bertan bukatzen ez denean) buelta eman, nahiz eta biderik motzena izan helmugara iristeko STR_CONFIG_SETTING_DISASTERS :Hondamendiak: {STRING} @@ -1102,8 +1122,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} @@ -1128,14 +1146,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} @@ -1163,8 +1175,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 @@ -1195,10 +1205,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 @@ -1256,8 +1262,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 @@ -1308,17 +1312,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} @@ -1509,26 +1509,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}Soinu efektuak +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 +1595,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} @@ -1683,6 +1717,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,10 +1773,8 @@ STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}Aldatu k # Network server list STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}Multijokalaria -STR_NETWORK_SERVER_LIST_CONNECTION :{BLACK}Konexioa: -STR_NETWORK_SERVER_LIST_CONNECTION_TOOLTIP :{BLACK}Aukeratu interneteko jokoa edo LAN jokoarean artean -STR_NETWORK_SERVER_LIST_LAN :LAN -STR_NETWORK_SERVER_LIST_INTERNET :Internet +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 @@ -1800,8 +1833,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_LAN_INTERNET :LAN / Internet -STR_NETWORK_START_SERVER_INTERNET_ADVERTISE :Internet (Iragarkiak) +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 @@ -1922,6 +1955,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 @@ -2040,6 +2074,7 @@ STR_CONTENT_SELECT_UPDATES_CAPTION :{BLACK}Bertsio STR_CONTENT_SELECT_UPDATES_CAPTION_TOOLTIP :{BLACK}Haukeratu dituzun edukiak berrituko dituzten edukiak deskargatuak izateko STR_CONTENT_UNSELECT_ALL_CAPTION :{BLACK}Guztia desmarkatu STR_CONTENT_UNSELECT_ALL_CAPTION_TOOLTIP :{BLACK}Dekargatuak izango ez diren eduki guztiak markatu +STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER_CAPTION :{WHITE}OpenTTD uzten zaude! STR_CONTENT_FILTER_TITLE :{BLACK}Etiketa/izen iragazkia: STR_CONTENT_OPEN_URL :{BLACK}Webgunera joan STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}Eduki honen webgunera joan @@ -2062,7 +2097,7 @@ STR_CONTENT_DETAIL_FILESIZE :{SILVER}Deskarg STR_CONTENT_DETAIL_SELECTED_BECAUSE_OF :{SILVER}Honengatik aurkeratua: {WHITE}{STRING} STR_CONTENT_DETAIL_DEPENDENCIES :{SILVER}Menpekotasunak: {WHITE}{STRING} STR_CONTENT_DETAIL_TAGS :{SILVER}Etiketak: {WHITE}{STRING} -STR_CONTENT_NO_ZLIB :{WHITE}OpenTTD "zlib" euskarria gabe eraikia izan da... +STR_CONTENT_NO_ZLIB :{WHITE}OpenTTD "zlib" euskarria gabe eraikita dago... STR_CONTENT_NO_ZLIB_SUB :{WHITE}... ezin da edukia deskargatu! # Order of these is important! @@ -2109,6 +2144,14 @@ STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}katenari STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Zama adierazleen gardentasuna aldatu. Ktrl+Klik blokeatzeko 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 STR_STATION_BUILD_COVERAGE_OFF :{BLACK}Itzali @@ -2169,21 +2212,21 @@ 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_EXIT_TOOLTIP :{BLACK}Irteera seinalea (mekanikoa){} Blokeo seinalea bezala funtzionatzen du, baina beharrezko da sarrera seinaleak eta konbo aurre-seinaleak kolore egokia izateko -STR_BUILD_SIGNAL_SEMAPHORE_COMBO_TOOLTIP :{BLACK}Konbo seinalea (mekanikoa){}Sarrera seinale eta irteera seinale bezala funtzionatzen du. Honek ahalbidetzen du aurre-seinale zuhaitz haundiak eraikitzea +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 STR_BUILD_SIGNAL_SEMAPHORE_PBS_OWAY_TOOLTIP :{BLACK}Norabide bakarreko bide seinalea (mekanikoa){}Norabide bakarreko bide seinalea bloke berdinean tren bat baino gehiago egotea ahalbidetzen du, trenak gelditzeko tokia aurkitu badezake. Ezin dira atzekaldetik pasa STR_BUILD_SIGNAL_ELECTRIC_NORM_TOOLTIP :{BLACK}Blokeo seinalea (elektrikoa){}Oinarrizkoena den seinale mota, bloke berdinean tren bakarra egotea ahalbidetzen duena -STR_BUILD_SIGNAL_ELECTRIC_ENTRY_TOOLTIP :{BLACK}Sarrera seinalea (elektrikoa){}Berde egongo da hurrengo sekzioan irteera seinale bat edo bat baino gehiago berde badago. Bestela gorria egongo da -STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}Irteera seinalea (elektrikoa){} Blokeo seinalea bezala funtzionatzen du, baina beharrezko da sarrera seinaleak eta konbo aurre-seinaleak kolore egokia izateko -STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}Konbo seinalea (elektrikoa){}Sarrera seinale eta irteera seinale bezala funtzionatzen du. Honek ahalbidetzen du aurre-seinale zuhaitz haundiak eraikitzea +STR_BUILD_SIGNAL_ELECTRIC_ENTRY_TOOLTIP :{BLACK}Sarrera seinalea (elektrikoa){}Berde egongo da hurrengo sekzioan irteera seinale bat edo bat baino gehiago berde badago. Bestela gorri egongo da +STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}Irteera seinalea (elektrikoa){} Blokeo seinalea bezala funtzionatzen du, baina beharrezkoa da sarrera seinaleak eta konbo aurre-seinaleen kolorea egokia izatea +STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}Konbo seinalea (elektrikoa){}Sarrera seinale eta irteera seinale bezala funtzionatzen du. Honek aurre-seinale "zuhaitz" haundiak eraikitzea ahalbidetzen du STR_BUILD_SIGNAL_ELECTRIC_PBS_TOOLTIP :{BLACK}Bide seinalea (elektrikoa){}Bide seinalea bloke batean tren bat baino gehiago egotea ahalbidetzen du, trenak gelditzeko bide egokia erreserbatu badezake. Oinarrizko bide seinaleak atzekaldetik pasa daitezke STR_BUILD_SIGNAL_ELECTRIC_PBS_OWAY_TOOLTIP :{BLACK}Norabide bakarreko bide seinalea (elektrikoa){}Norabide bakarreko bide seinalea bloke berdinean tren bat baino gehiago egotea ahalbidetzen du, trenak gelditzeko tokia aurkitu badezake. Ezin dira atzekaldetik pasa STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}Seinaleak aldatu{}Aukeratua dagoenean, aukeratutako seinalea aldatuko da hautatutako seinale motagatik. Krtl+Klik mota aldatuko du, Shift+Klik gutxi gora beherako kostea erakutsiko du @@ -2411,6 +2454,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 @@ -2507,7 +2551,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-2012 The OpenTTD team +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2014 The OpenTTD team # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Gordetako jokoa @@ -2526,6 +2570,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} @@ -2543,10 +2588,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: @@ -2573,7 +2614,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 @@ -2628,7 +2668,7 @@ STR_NEWGRF_SETTINGS_MOVEUP :{BLACK}Gora mug STR_NEWGRF_SETTINGS_MOVEUP_TOOLTIP :{BLACK}Aukeratutako NewGRFa gora mugitu STR_NEWGRF_SETTINGS_MOVEDOWN :{BLACK}Behera mugitu STR_NEWGRF_SETTINGS_MOVEDOWN_TOOLTIP :{BLACK}Mugitu aukeratutako NewGRFa zerrendan behera -STR_NEWGRF_SETTINGS_FILE_TOOLTIP :{BLACK}Instalatutako NewGRFen zerrenda +STR_NEWGRF_SETTINGS_FILE_TOOLTIP :{BLACK}Instalatutako NewGRF fitxategien zerrenda STR_NEWGRF_SETTINGS_SET_PARAMETERS :{BLACK}Parametroak ezarri STR_NEWGRF_SETTINGS_SHOW_PARAMETERS :{BLACK}Erakutsi parametroak @@ -2652,6 +2692,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 @@ -2751,6 +2793,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... @@ -2832,10 +2877,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}Helburuak +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 @@ -2874,6 +2922,15 @@ STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}Subentzi STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING} {STRING}tik {STRING}{YELLOW}ra ({COMPANY}{YELLOW}, {DATE_SHORT} arte) 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 STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}Mantendu Ktrl geltoki bat baino gehiago aukeratzeko @@ -2887,7 +2944,6 @@ 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) @@ -2900,8 +2956,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_RATINGS_TITLE :{BLACK}Herriko garraio zerbitzuen balorazioa: -STR_STATION_VIEW_CARGO_RATING :{WHITE}{STRING}: {YELLOW}{STRING} ({COMMA}%) +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 @@ -3028,7 +3103,6 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS :{WHITE}Kanalak STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}Geltokiak: STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}Geltoki sailak STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}Aireportuak -STR_COMPANY_INFRASTRUCTURE_VIEW_COST :{WHITE}{1:CURRENCY_LONG}/urtero ({0:COMMA}) STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL :{WHITE}{CURRENCY_LONG}/urtea # Industry directory @@ -3045,6 +3119,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} @@ -3113,6 +3188,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 @@ -3160,10 +3236,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 @@ -3408,6 +3484,10 @@ STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Mantenim 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 STR_QUERY_RENAME_SHIP_CAPTION :{WHITE}Itsasontzia izendatu @@ -3643,7 +3723,6 @@ STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}Ordutegi STR_TIMETABLE_STATUS_START_AT :{BLACK} {STRING} hasiko da ordutegia STR_TIMETABLE_STARTING_DATE :{BLACK}Hasiera data -STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Aukeratu data ordutegiaren hasiera puntu bezala STR_TIMETABLE_CHANGE_TIME :{BLACK}Denbora aldatu STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Piztutako agindua betzeko denbora aldatu @@ -3757,6 +3836,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 @@ -3779,6 +3859,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} @@ -4130,6 +4214,10 @@ 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... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Ezin da trenaren norabidea aldatu... @@ -4172,6 +4260,9 @@ STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}Ezin da # Translatable comment for OpenTTD's desktop shortcut 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 STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1 :Ofizina eraikin handia @@ -4294,7 +4385,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) @@ -4503,7 +4594,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 @@ -4618,8 +4709,9 @@ 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_SPACE_STRING :{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} @@ -4643,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 225d40e18..6a5373316 100644 --- a/src/lang/belarusian.txt +++ b/src/lang/belarusian.txt @@ -512,21 +512,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 :{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 :{COMMA} лiтр{P "" ы аў} STR_UNITS_VOLUME_LONG_SI :{COMMA} м³ +STR_UNITS_FORCE_IMPERIAL :{COMMA} фунт{P "" а аў}-сілы +STR_UNITS_FORCE_METRIC :{COMMA} кгс STR_UNITS_FORCE_SI :{COMMA} кН STR_UNITS_HEIGHT_IMPERIAL :{COMMA} фут{P "" ы аў} +STR_UNITS_HEIGHT_METRIC :{COMMA} м STR_UNITS_HEIGHT_SI :{COMMA} м # Common window strings @@ -534,6 +541,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}Выберыце фiльтр @@ -545,7 +553,8 @@ 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}Пракрутка ўверх/уніз @@ -569,7 +578,6 @@ STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}Плош # These are used in buttons -STR_SORT_BY_CAPTION_POPULATION :{BLACK}Насельніцтва STR_SORT_BY_CAPTION_NAME :{BLACK}Назва STR_SORT_BY_CAPTION_DATE :{BLACK}Дата # These are used in dropdowns @@ -590,7 +598,8 @@ STR_SORT_BY_LENGTH :Даўжыня STR_SORT_BY_LIFE_TIME :Рэшткавы тэрмін службы STR_SORT_BY_TIMETABLE_DELAY :Адставаньне ад ґрафіку STR_SORT_BY_FACILITY :Тып станцыі -STR_SORT_BY_WAITING :Коль-ць грузу на станцыі +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 :Назва, серыя @@ -602,6 +611,8 @@ STR_SORT_BY_RUNNING_COST :Кошт абс 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 :Рэйтынґ # Tooltips for the main toolbar STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Паўза @@ -614,6 +625,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}Сьпіс існуючых прадпрыемстваў; заснаваньне новых @@ -684,19 +697,19 @@ STR_FILE_MENU_SEPARATOR : STR_FILE_MENU_EXIT :Выхад ############ range ends here -############ range for map menu starts +# 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, yet the town directory is shown in the map menu in the scenario editor + +############ range for town menu starts STR_TOWN_MENU_TOWN_DIRECTORY :Сьпіс гарадоў -############ end of the 'Display map' dropdown STR_TOWN_MENU_FOUND_TOWN :Заснаваць горад -############ end of the 'Town' dropdown +############ range ends here ############ range for subsidies menu starts STR_SUBSIDIES_MENU_SUBSIDIES :Субсыдыі -STR_SUBSIDIES_MENU_GOAL :Бягучыя задачы ############ range ends here ############ range for graph menu starts @@ -770,7 +783,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-е @@ -786,22 +799,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 @@ -963,7 +994,7 @@ STR_HIGHSCORE_PERFORMANCE_TITLE_CAPITALIST :Капітал STR_HIGHSCORE_PERFORMANCE_TITLE_MAGNATE :Маґнат STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL :Транспартны кароль STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY :Аліґарх стагоддзя -STR_HIGHSCORE_NAME :{BIG_FONT}{PRESIDENT_NAME}, {COMPANY} +STR_HIGHSCORE_NAME :{PRESIDENT_NAME}, {COMPANY} STR_HIGHSCORE_STATS :{BIG_FONT}«{STRING}» ({COMMA}) STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{BLACK}Дырэктара кампаніі «{COMPANY}» называюць {STRING.abl}! STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{WHITE}{PRESIDENT_NAME}, прэзідэнт кампаніі «{COMPANY}», заслужыў тытул «{STRING}»! @@ -974,17 +1005,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}Чыгункі @@ -1018,6 +1052,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}Выключыць усё @@ -1028,6 +1063,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}Паказаць апошняе паведамленьне ці навіну @@ -1104,13 +1141,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} цалкам састарэў @@ -1189,15 +1224,12 @@ STR_GAME_OPTIONS_CURRENCY_LTL :Летувiск 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 -STR_GAME_OPTIONS_MEASURING_UNITS_FRAME :{BLACK}Адзінкі вымярэньня -STR_GAME_OPTIONS_MEASURING_UNITS_DROPDOWN_TOOLTIP :{BLACK}Выбар сістэмы адзінак вымярэньня ############ start of measuring units region -STR_GAME_OPTIONS_MEASURING_UNITS_IMPERIAL :Брытанская -STR_GAME_OPTIONS_MEASURING_UNITS_METRIC :Мэтрычная -STR_GAME_OPTIONS_MEASURING_UNITS_SI :СІ ############ end of measuring units region STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Дарожны рух @@ -1235,11 +1267,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}Выбраць мову інтэрфэйсу @@ -1251,9 +1285,6 @@ 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_BASE_GRF :{BLACK}Набор базавай ґрафікі STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Выбар базавага набору ґрафічных аб'ектаў STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} адсутнічаюч{P ы ых ых}/пашкоджан{P ы ых ых} файл{P "" ы аў} @@ -1367,7 +1398,8 @@ 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 :Пашыраныя наладкі @@ -1377,11 +1409,15 @@ 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 :так @@ -1416,14 +1452,12 @@ 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_AUTOSLOPE :Дазволіць зьмену ляндшафту пад будынкамі, дарогамі й г. д. (аўтаспускі): {STRING} STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Дазволіць зьмену ляндшафту пад будынкамі й рэйкамi, не выдаляючы іx STR_CONFIG_SETTING_CATCHMENT :Зона пакрыцьця залежыць ад тыпу станцыі: {STRING} @@ -1448,14 +1482,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} @@ -1483,8 +1511,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 :няма @@ -1515,10 +1541,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 :Калі ўключана, інфраструктура патрабуе выдаткаў на ўтрыманьне. Кошт расьце прапарцыянальна памерам сеткі, таму гэта больш датычыць вялікіх кампаніяў, ніж малых. @@ -1576,8 +1598,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}Адна ці некалькі клетак берага без вады @@ -1628,17 +1648,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-е Сту 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} @@ -1669,22 +1685,22 @@ STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Захавац STR_CONFIG_SETTING_EXPENSES_LAYOUT :Групаваць выдаткі ў вакне фінансаў кампаніі: {STRING} STR_CONFIG_SETTING_EXPENSES_LAYOUT_HELPTEXT :Захаваць памер вакна выдаткаў кампаніі. -STR_CONFIG_SETTING_SOUND_TICKER :Беглы радок: {STRING} -STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :Прайграваць гук пры з'яўленні беглага радка з навінамі -STR_CONFIG_SETTING_SOUND_NEWS :Навіны: {STRING} -STR_CONFIG_SETTING_SOUND_NEWS_HELPTEXT :Прайграваць гукавыя эфекты пры публікацыі навінавых артыкулаў +STR_CONFIG_SETTING_SOUND_TICKER :Бягучы радок: {STRING} +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} -STR_CONFIG_SETTING_SOUND_DISASTER_HELPTEXT :Прайграваць гук аварый і катастроф +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 :Калі ўключана, інфраструктура даступна, толькі калі транспарт таксама даступны. Прадухіляе марнаваньне грошай і часу на бескарысную інфраструктуру. @@ -1737,35 +1753,35 @@ STR_CONFIG_SETTING_DISABLE_ELRAILS :Адключы STR_CONFIG_SETTING_DISABLE_ELRAILS_HELPTEXT :Уключэньне гэтай наладкі скасуе неабходнасьць электрыфікаваць чыгунку для запуску цягнікоў на электрычнай цязе. 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_OWN_HELPTEXT :Паказваць ґазэту, калі першы транспартны сродак прыбывае на станцыю гульца STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER :Першы транспартны сродак на станцыю канкурэнта: {STRING} -STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER_HELPTEXT :Паказваць навіны пра першы транспартны сродак, які прыбывае на станцыю канкурэнта +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_COMPANY_INFORMATION_HELPTEXT :Паказваць ґазэту, калі новая кампанія распачынае дзейнасьць або існуючая кампанія рызыкуе банкруцтвам STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN :Адкрыцьцё новых прадпрыемстваў: {STRING} -STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN_HELPTEXT :Паказваць навіны пра прадпрыемствы, якія адкрываюцца +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_INDUSTRY_CLOSE_HELPTEXT :Паказаць ґазэту, калі нейкае прадпрыемства закрываецца STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES :Зьмены ў эканоміцы: {STRING} -STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES_HELPTEXT :Паказваць навіны пра глабальныя змены ў эканоміцы +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_COMPANY_HELPTEXT :Паказаць ґазэту, калі зьмяняецца прадукцыйнасьць прадпрыемстваў, якія абслугоўваюцца кампаніяй гульца STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER :Зьмены ў прадукцыйнасьці прадпрыемстваў, якія абслугоўвае канкурэнт(-ы): {STRING} -STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER_HELPTEXT :Паказваць навіны пра змену прадукцыйнасці прадпрыемстваў, абслугоўваных канкурэнтамі +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_INDUSTRY_CHANGES_UNSERVED_HELPTEXT :Паказаць ґазэту, калі зьмяняецца ўзровень прадукцыйнасьці прадпрыемства, якое нікім не абслугоўваецца STR_CONFIG_SETTING_NEWS_ADVICE :Парады / зьвесткі аб транспартных сродках гульца: {STRING} -STR_CONFIG_SETTING_NEWS_ADVICE_HELPTEXT :Паказваць паведамленьні пра транспартныя сродкі, на якія варта звярнуць увагу +STR_CONFIG_SETTING_NEWS_ADVICE_HELPTEXT :Паказаць паведамленьні аб транспартных сродках, якія патрабуюць увагі STR_CONFIG_SETTING_NEWS_NEW_VEHICLES :Новы транспарт: {STRING} -STR_CONFIG_SETTING_NEWS_NEW_VEHICLES_HELPTEXT :Паказваць навіны пра новыя мадэлі транспартных сродкаў +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_SUBSIDIES_HELPTEXT :Паказваць ґазэту з навінамі аб субсыдыях STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION :Агульная інфармацыя: {STRING} -STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION_HELPTEXT :Паказваць агульныя навіны, накшталт куплі эксклюзіўных транспартных правоў ці правядзеньня рэканструкцыі дарог +STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION_HELPTEXT :Паказваць ґазэты з агульнымі навінамі, накшталт куплі эксклюзыўных транспартных правоў ці правядзеньня рэканструкцыі дарогаў STR_CONFIG_SETTING_NEWS_MESSAGES_OFF :Выкл. STR_CONFIG_SETTING_NEWS_MESSAGES_SUMMARY :Сьцісла @@ -1860,28 +1876,78 @@ 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} д{P 0:2 зень ні зён} +STR_CONFIG_SETTING_LINKGRAPH_INTERVAL_HELPTEXT :Перыяд пераразьліку ґрафаў размеркаваньня. У кожным цыкле разьлічваецца не ґраф цалкам, а толькі адзін зь яго кампанэнтаў. Чым менш гэта значэньне, тым больш будзе нагрузка на працэсар. Чым больш значэньне, тым больш часу пройдзе перад пачаткам разьліку ґрафаў для новых маршрутаў. +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 :Каштоўныя грузы — гэта каштоўнасьці, алмазы й золата. Модулі 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_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 @@ -1915,6 +1981,8 @@ STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_ALGORITHM :{WHITE}... фа 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}Недахоп апэратыўнай памяці +STR_CONFIG_ERROR_SPRITECACHE_TOO_BIG :{WHITE}Не атрымалася вылучыць {BYTES} для кэша спрайтаў. Памер кэша зніжаны да {BYTES}. Гэта адмоўна адаб'ецца на прадукцыйнасьці OpenTTD. Каб зьменшыць выдаткі памяці, адключыце 32-бітную ґрафіку й зьменшыце максімальны ўзровень набліжэньня. # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} @@ -2036,6 +2104,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}Выбар мужчынскіх твараў @@ -2091,10 +2160,10 @@ STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}Зьмя # Network server list STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}Сеткавая гульня -STR_NETWORK_SERVER_LIST_CONNECTION :{BLACK}Злучэньне: -STR_NETWORK_SERVER_LIST_CONNECTION_TOOLTIP :{BLACK}Выберыце паміж гульнёй па Інтэрнэце й па лакальнай сетцы (LAN) -STR_NETWORK_SERVER_LIST_LAN :Лакальная сетка (LAN) -STR_NETWORK_SERVER_LIST_INTERNET :Інтэрнэт +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}Гэта ваша імя, якое будзе бачна іншым гульцам @@ -2153,8 +2222,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_LAN_INTERNET :Лакальная сетка / Інтэрнэт -STR_NETWORK_START_SERVER_INTERNET_ADVERTISE :Інтэрнэт (зьмясьціць у агульны сьпіс) +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_TOOLTIP :{BLACK}Выбар максымальнай колькасьці кліентаў. Ня ўсе месцы павінны быць занятыя @@ -2275,6 +2344,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}Не захоўваць уведзены пароль @@ -2393,6 +2463,10 @@ 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}Наведаць вэб-старонку для гэтага кантэнту @@ -2478,6 +2552,17 @@ STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}Пера STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Пераключыць празрыстасьць для індыкатараў загрузкі. Ctrl+клік — заблякаваць. 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}Падсьветка зоны пакрыцьця STR_STATION_BUILD_COVERAGE_OFF :{BLACK}Выкл. @@ -2784,6 +2869,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 :Камяні @@ -2880,7 +2966,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-2012 Каманда распрацоўнікаў OpenTTD +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002–2014 Каманда распрацоўнікаў OpenTTD # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Захаваць гульню @@ -2899,6 +2985,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} @@ -2909,6 +2996,7 @@ STR_SAVELOAD_OSKTITLE :{BLACK}Увяд # World generation STR_MAPGEN_WORLD_GENERATION_CAPTION :{WHITE}Стварэньне сусьвету STR_MAPGEN_MAPSIZE :{BLACK}Памер мапы: +STR_MAPGEN_MAPSIZE_TOOLTIP :{BLACK}Выберыце памер памы ў клетках. Колькасьць даступных клетак будзе трохі меншай STR_MAPGEN_BY :{BLACK}* STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Колькасьць гарадоў: STR_MAPGEN_DATE :{BLACK}Дата: @@ -2916,10 +3004,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}Тып ляндшафту: @@ -2946,7 +3030,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}Увядзіце выпадковую лiчбу STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Зьмяніць вышыню сьнегавой лініі STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Зьмяніць год пачатку гульні @@ -3025,6 +3108,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}Закрыць @@ -3095,6 +3180,7 @@ STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}Вы м STR_NEWGRF_DUPLICATE_GRFID :{WHITE}Немагчыма дадаць файл: дублююцца GRF ID STR_NEWGRF_COMPATIBLE_LOADED :{ORANGE}Адпаведны файл ня знойдзены (загружаны сумяшчальны GRF) +STR_NEWGRF_TOO_MANY_NEWGRFS :{WHITE}Не магу дадаць файл: ліміт файлаў NewGRF дасягнены STR_NEWGRF_COMPATIBLE_LOAD_WARNING :{WHITE}Замест адсутных загружаны сумяшчальныя файлы NewGRF STR_NEWGRF_DISABLED_WARNING :{WHITE}Адсутныя файлы NewGRF былі адключаны @@ -3111,6 +3197,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}» падае няправільную інфармацыю. @@ -3125,6 +3212,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. Гэта зойме некаторы час... @@ -3206,10 +3296,14 @@ STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT :{YELLOW}Куп STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}Даць хабар гарадзкой адміністрацыі для павышэньня рэйтынґу. Існуе рызыка санкцыяў, калі факт хабару раскрыецца.{}Кошт: {CURRENCY_LONG} # Goal window -STR_GOALS_CAPTION :{WHITE}Задачы +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+пстрычка паказвае ў новым вакне. @@ -3248,6 +3342,18 @@ STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}Марш STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING} па маршруце з {STRING} у {STRING}{YELLOW} ({COMPANY}{YELLOW}, да {DATE_SHORT}) 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к паказвае ў дадатковым вакне. STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}Націсьніце й ўтрымлівайце Ctrl для выбару больш за адзін варыянт @@ -3261,9 +3367,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}Паказаць сьпіс прымаемых грузаў @@ -3274,8 +3380,31 @@ STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPAN STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Рэйтынґ STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Паказаць рэйтынґ станцыі -STR_STATION_VIEW_CARGO_RATINGS_TITLE :{BLACK}Мясцовы рэйтынґ транспартнай кампаніі: -STR_STATION_VIEW_CARGO_RATING :{WHITE}{STRING}: {YELLOW}{STRING} ({COMMA}%) +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 :Жудасны @@ -3402,7 +3531,6 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS :{WHITE}Кана STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}Станцыi: STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}Станцыйныя клеткi STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}Аэрапорты -STR_COMPANY_INFRASTRUCTURE_VIEW_COST :{WHITE}{1:CURRENCY_LONG}/год ({0:COMMA}) STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL :{WHITE}{CURRENCY_LONG}/год # Industry directory @@ -3419,6 +3547,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} @@ -3481,12 +3610,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 :Выдаліць усе @@ -3802,6 +3934,11 @@ STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Агля STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Павялiчыць інтэрвал абслугоўваньня на 10. Ctrl+клік — павялічыць інтэрвал абслугоўваньня на 5. STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Зьменшыць інтэрвал абслугоўваньня на 10. Ctrl+клік — паменшыць інтэрвал абслугоўваньня на 5. +STR_SERVICE_INTERVAL_DROPDOWN_TOOLTIP :{BLACK}Зьмяніць прынцып разьліку інтэрвалу абслугоўваньня +STR_VEHICLE_DETAILS_DEFAULT :Па змоўчаньні +STR_VEHICLE_DETAILS_DAYS :У днях +STR_VEHICLE_DETAILS_PERCENT :У адсотках + STR_QUERY_RENAME_TRAIN_CAPTION :{WHITE}Назва цягнiка STR_QUERY_RENAME_ROAD_VEHICLE_CAPTION :{WHITE}Назва аўтамабiля STR_QUERY_RENAME_SHIP_CAPTION :{WHITE}Назва карабля @@ -3904,7 +4041,7 @@ STR_ORDER_SERVICE_TOOLTIP :{BLACK}Прап STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}Парамэтр транспарту для параўнаньня # Conditional order variables, must follow order of OrderConditionVariable enum -STR_ORDER_CONDITIONAL_LOAD_PERCENTAGE :Працэнт пагрузкі +STR_ORDER_CONDITIONAL_LOAD_PERCENTAGE :Адсотак пагрузкі STR_ORDER_CONDITIONAL_RELIABILITY :Надзейнасьць STR_ORDER_CONDITIONAL_MAX_SPEED :Макс. хуткасьць STR_ORDER_CONDITIONAL_AGE :Узрост (гадоў) @@ -4037,7 +4174,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}Зьмяніць дату пачатку гэтага раскладу +STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Выберыце пачатковую дату для гэтага ґрафіка. Ctrl+пстрычка ўсталюе пачатковую дату і раўнамерна разьмяркуе ўсе транспартныя сродкі, якія рухаюцца па гэтым маршруце, калі час руху па ім цалкам разьлічаны. STR_TIMETABLE_CHANGE_TIME :{BLACK}Зьмяніць час STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Зьмяніць час для вылучанага заданьня @@ -4151,6 +4288,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}Ліцэнзія @@ -4173,6 +4312,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} @@ -4469,6 +4612,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}Не атрымалася дадаць транспарт з агульнымі заданьнямі ў групу... @@ -4524,6 +4668,11 @@ 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}Немагчыма іґнараваць сыґнал. Небясьпечна... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Не атрымалася завярнуць цягнік... @@ -4566,6 +4715,16 @@ STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}Не а # Translatable comment for OpenTTD's desktop shortcut 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 :"Пусты" набор музычнага афармлення, які не зьмяшчае ніякай музыкі. + ##id 0x2000 # Town building names STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1 :Вышынны офісны будынак @@ -4808,7 +4967,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 @@ -5017,7 +5176,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 @@ -5132,8 +5291,9 @@ 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_SPACE_STRING :{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} @@ -5157,9 +5317,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 87f2878a4..a83c08058 100644 --- a/src/lang/brazilian_portuguese.txt +++ b/src/lang/brazilian_portuguese.txt @@ -38,7 +38,7 @@ 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 STR_CARGO_PLURAL_STEEL :{G=m}Aço -STR_CARGO_PLURAL_VALUABLES :{G=f}Preciosidades +STR_CARGO_PLURAL_VALUABLES :{G=f}Objetos de Valor STR_CARGO_PLURAL_COPPER_ORE :{G=m}Minério de Cobre STR_CARGO_PLURAL_MAIZE :{G=m}Milho STR_CARGO_PLURAL_FRUIT :{G=f}Fruta @@ -200,27 +200,36 @@ STR_UNITS_POWER_IMPERIAL :{COMMA}cv STR_UNITS_POWER_METRIC :{COMMA}cv 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} tonelada{P "" s} STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} tonelada{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} gal{P ão ões} STR_UNITS_VOLUME_LONG_METRIC :{COMMA} litro{P "" s} 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} pés +STR_UNITS_HEIGHT_METRIC :{COMMA} m STR_UNITS_HEIGHT_SI :{COMMA} m # Common window strings +STR_LIST_FILTER_TITLE :{BLACK}Filtro: STR_LIST_FILTER_OSKTITLE :{BLACK}Digite o filtro de série STR_LIST_FILTER_TOOLTIP :{BLACK}Digite uma palavra-chave para filtrar a lista +STR_TOOLTIP_GROUP_ORDER :{BLACK}Selecionar ordem de agrupamento STR_TOOLTIP_SORT_ORDER :{BLACK}Selecione ordem de classificação (descendente/ascendente) STR_TOOLTIP_SORT_CRITERIA :{BLACK}Selecione critério de classificação STR_TOOLTIP_FILTER_CRITERIA :{BLACK}Selecione critério para filtração @@ -232,7 +241,8 @@ STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Fechar j STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Título da janela - arraste isto para mover a janela STR_TOOLTIP_SHADE :{BLACK}Obscurecer janela - mostrar apenas a barra de título STR_TOOLTIP_DEBUG :{BLACK}Mostrar informações de depuração do NewGRF -STR_TOOLTIP_STICKY :{BLACK}Marcar esta janela como infechável pela tecla 'Fechar Todas as Janelas' +STR_TOOLTIP_DEFSIZE :{BLACK}Redimensiona a janela ao tamanho padrão. Ctrl+Clique para salvar o tamanho atual como padrão +STR_TOOLTIP_STICKY :{BLACK}Marcar esta janela como infechável pela tecla 'Fechar Todas as Janelas'. Ctrl+Clique torna essa opção padrão STR_TOOLTIP_RESIZE :{BLACK}Clique e arraste para redimensionar esta janela STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Alternar entre janela de tamanho grande/pequena STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Barra de rolagem - rola a lista acima/abaixo @@ -256,7 +266,6 @@ STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}Área: { # These are used in buttons -STR_SORT_BY_CAPTION_POPULATION :{BLACK}População STR_SORT_BY_CAPTION_NAME :{BLACK}Nome STR_SORT_BY_CAPTION_DATE :{BLACK}Data # These are used in dropdowns @@ -277,7 +286,8 @@ STR_SORT_BY_LENGTH :Comprimento STR_SORT_BY_LIFE_TIME :Tempo de uso restante STR_SORT_BY_TIMETABLE_DELAY :Atraso de horário STR_SORT_BY_FACILITY :Tipo de estação -STR_SORT_BY_WAITING :Valor da carga em espera +STR_SORT_BY_WAITING_TOTAL :Carga total aguardando +STR_SORT_BY_WAITING_AVAILABLE :Carga disponível aguardando STR_SORT_BY_RATING_MAX :Maior avaliação de carga STR_SORT_BY_RATING_MIN :Menor avaliação de carga STR_SORT_BY_ENGINE_ID :RG da Locomotiva (classificação clássica) @@ -289,6 +299,8 @@ STR_SORT_BY_RUNNING_COST :Custo de Manute STR_SORT_BY_POWER_VS_RUNNING_COST :Potência/Custo de Manutenção STR_SORT_BY_CARGO_CAPACITY :Capacidade de Carga STR_SORT_BY_RANGE :Alcance +STR_SORT_BY_POPULATION :População +STR_SORT_BY_RATING :Classificação # Tooltips for the main toolbar STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Pausar jogo @@ -301,6 +313,8 @@ STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Exibir s STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Exibir lista de estações da empresa STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Exibir informações financeiras da empresa STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Exibir informações gerais da empresa +STR_TOOLBAR_TOOLTIP_DISPLAY_STORY_BOOK :{BLACK}Exibe o livro de histórias +STR_TOOLBAR_TOOLTIP_DISPLAY_GOALS_LIST :{BLACK}Exibie a lista de objetivos STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Exibir gráficos STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Exibir tabela de classificação das empresas STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Fundar construção de nova indústria or listar todas as indústrias @@ -371,19 +385,19 @@ STR_FILE_MENU_SEPARATOR : STR_FILE_MENU_EXIT :Sair ############ range ends here -############ range for map menu starts +# map menu STR_MAP_MENU_MAP_OF_WORLD :Mapa do mundo STR_MAP_MENU_EXTRA_VIEW_PORT :Janela extra +STR_MAP_MENU_LINGRAPH_LEGEND :Legenda do Fluxo de Carga STR_MAP_MENU_SIGN_LIST :Lista de sinais -############ range for town menu starts, yet the town directory is shown in the map menu in the scenario editor + +############ range for town menu starts STR_TOWN_MENU_TOWN_DIRECTORY :Lista de cidades -############ end of the 'Display map' dropdown STR_TOWN_MENU_FOUND_TOWN :Fundar cidade -############ end of the 'Town' dropdown +############ range ends here ############ range for subsidies menu starts STR_SUBSIDIES_MENU_SUBSIDIES :Subsídios -STR_SUBSIDIES_MENU_GOAL :{G=m}Objetivos atuais ############ range ends here ############ range for graph menu starts @@ -398,10 +412,12 @@ STR_GRAPH_MENU_CARGO_PAYMENT_RATES :Taxa de pagamen ############ range for company league menu starts STR_GRAPH_MENU_COMPANY_LEAGUE_TABLE :Tabela da liga de empresa STR_GRAPH_MENU_DETAILED_PERFORMANCE_RATING :Avaliação detalhada de performance +STR_GRAPH_MENU_HIGHSCORE :Tabela de Pontuações ############ range ends here ############ range for industry menu starts STR_INDUSTRY_MENU_INDUSTRY_DIRECTORY :Catálogo de indústrias +STR_INDUSTRY_MENU_INDUSTRY_CHAIN :Cadeias de indústrias STR_INDUSTRY_MENU_FUND_NEW_INDUSTRY :Financiar nova indústria ############ range ends here @@ -455,7 +471,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 @@ -471,22 +487,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 @@ -648,7 +682,7 @@ STR_HIGHSCORE_PERFORMANCE_TITLE_CAPITALIST :Capitalista STR_HIGHSCORE_PERFORMANCE_TITLE_MAGNATE :Magnata STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL :Mandachuva STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY :Magnata do Século -STR_HIGHSCORE_NAME :{BIG_FONT}{PRESIDENT_NAME}, {COMPANY} +STR_HIGHSCORE_NAME :{PRESIDENT_NAME}, {COMPANY} STR_HIGHSCORE_STATS :{BIG_FONT}'{STRING}' ({COMMA}) STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{BLACK}{COMPANY} alcança o status de '{STRING}'! STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{WHITE}{PRESIDENT_NAME} de {COMPANY} alcança o status de '{STRING}'! @@ -659,17 +693,20 @@ STR_SMALLMAP_CAPTION :{WHITE}Mapa - { STR_SMALLMAP_TYPE_CONTOURS :Contorno 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}Exibir contornos do terreno no mapa STR_SMALLMAP_TOOLTIP_SHOW_VEHICLES_ON_MAP :{BLACK}Exibir veículos no mapa STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRIES_ON_MAP :{BLACK}Exibir indústrias no mapa +STR_SMALLMAP_TOOLTIP_SHOW_LINK_STATS_ON_MAP :{BLACK}Exibir fluxo de carga no mapa STR_SMALLMAP_TOOLTIP_SHOW_TRANSPORT_ROUTES_ON :{BLACK}Exibir rotas de transporte no mapa STR_SMALLMAP_TOOLTIP_SHOW_VEGETATION_ON_MAP :{BLACK}Exibir vegetação no mapa STR_SMALLMAP_TOOLTIP_SHOW_LAND_OWNERS_ON_MAP :{BLACK}Exibir proprietários de terreno no mapa STR_SMALLMAP_TOOLTIP_INDUSTRY_SELECTION :{BLACK}Clique em um tipo de indústria para alternar sua exibição. Ctrl+Clique desabilita todos os tipos exceto a selecionada. Ctrl+Clique nela novamente para habilitar todos os tipos de indústrias STR_SMALLMAP_TOOLTIP_COMPANY_SELECTION :{BLACK}Clique em uma compania para alternar a exibição de suas propriedades. Ctrl+Clique desabilita todas as companias exceto a selecionada. Ctrl+Clique nela novamente para habilitar todas as companias +STR_SMALLMAP_TOOLTIP_CARGO_SELECTION :{BLACK}Clique numa carga para alternar a exibição de sua propriedade. Ctrl+Clique desativa todas as cargas exceto a selecionada. Ctrl+Clique novamente para exibir todas STR_SMALLMAP_LEGENDA_ROADS :{TINY_FONT}{BLACK}Rodovias STR_SMALLMAP_LEGENDA_RAILROADS :{TINY_FONT}{BLACK}Ferrovias @@ -703,6 +740,7 @@ STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLA STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Liga/desliga nomes de cidades no mapa STR_SMALLMAP_CENTER :{BLACK}Centralizar o minimapa na posição atual 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}Desabilitar tudo @@ -713,6 +751,8 @@ STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES :{BLACK}Exibir t STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}Alternar a exibição de mapa topográfico STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES :{BLACK}Não exibir propriedade da empresa no mapa STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}Exibir todas as propriedades da empresa no mapa +STR_SMALLMAP_TOOLTIP_DISABLE_ALL_CARGOS :{BLACK}Exibe nenhuma carga no mapa +STR_SMALLMAP_TOOLTIP_ENABLE_ALL_CARGOS :{BLACK}Exibe todas as cargas no mapa # Status bar messages STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Exibir a última mensagem ou notícia @@ -789,13 +829,11 @@ 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_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} está ficando velho STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} está ficando muito velho @@ -874,15 +912,12 @@ STR_GAME_OPTIONS_CURRENCY_LTL :Litas Lituano ( STR_GAME_OPTIONS_CURRENCY_KRW :Won Sul-Coreano (KRW) STR_GAME_OPTIONS_CURRENCY_ZAR :Rand Sul-Africano (ZAR) STR_GAME_OPTIONS_CURRENCY_CUSTOM :Personalizado... +STR_GAME_OPTIONS_CURRENCY_GEL :Lari da Georgia +STR_GAME_OPTIONS_CURRENCY_IRR :Rial Iraniano ############ end of currency region -STR_GAME_OPTIONS_MEASURING_UNITS_FRAME :{BLACK}Unidades de medidas -STR_GAME_OPTIONS_MEASURING_UNITS_DROPDOWN_TOOLTIP :{BLACK}Seleção de unidades de medidas ############ start of measuring units region -STR_GAME_OPTIONS_MEASURING_UNITS_IMPERIAL :Imperial -STR_GAME_OPTIONS_MEASURING_UNITS_METRIC :Métrico -STR_GAME_OPTIONS_MEASURING_UNITS_SI :Sistema Internacional ############ end of measuring units region STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Automóveis @@ -920,11 +955,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 @@ -936,9 +973,6 @@ 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_BASE_GRF :{BLACK}Conjunto de gráficos base STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Selecionar o conjunto de gráficos base para usar STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} arquivo{P "" s} faltando/corrompido{P "" s} @@ -953,6 +987,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 @@ -1052,18 +1087,30 @@ 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_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 :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_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 :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. -STR_CONFIG_SETTING_DISABLED :desativado +STR_CONFIG_SETTING_DISABLED :Desativado STR_CONFIG_SETTING_COMPANIES_OFF :Desligado STR_CONFIG_SETTING_COMPANIES_OWN :Própria empresa @@ -1077,10 +1124,30 @@ STR_CONFIG_SETTING_HORIZONTAL_POS_LEFT :Esquerda STR_CONFIG_SETTING_HORIZONTAL_POS_CENTER :Centro STR_CONFIG_SETTING_HORIZONTAL_POS_RIGHT :Direita - -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_MAXIMUM_INITIAL_LOAN :Empréstimo Inicial Máximo: {STRING} +STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Quantia máxima a ser emprestada para uma companhia (sem levar em conta a inflação) +STR_CONFIG_SETTING_INTEREST_RATE :Taxa de Juros: {STRING} +STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Juros de empréstimo; também controla inflação, se ativado +STR_CONFIG_SETTING_RUNNING_COSTS :Custos de Operação: {STRING} +STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT :Define o nível e custos de manutenção de veículos e infraestrutura +STR_CONFIG_SETTING_CONSTRUCTION_SPEED :Velocidade de construção: {STRING} +STR_CONFIG_SETTING_CONSTRUCTION_SPEED_HELPTEXT :Limita ações de construção para IA's +STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS :Quebra de veículos: {STRING} +STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS_HELPTEXT :Controla o quanto veículos mal conservados podem quebrar +STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER :Multiplicador de subsídios: {STRING} +STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT :Define quando é pago por conexões subsidiadas +STR_CONFIG_SETTING_CONSTRUCTION_COSTS :Custos de construção: {STRING} +STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :Define o nível de construção e custos de compra +STR_CONFIG_SETTING_RECESSIONS :Recessões: {STRING} +STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Se ativado, recessões podem ocorrer a alguns anos. Durante recessões, toda produção é significativamente menor (retorna ao nível normal após a recessão) +STR_CONFIG_SETTING_TRAIN_REVERSING :Desabilitar reversão de trens nas estações: {STRING} +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 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_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 @@ -1104,23 +1171,17 @@ 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_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} STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_HELPTEXT :Método de fundação de indústrias primárias. 'nenhum' significa que não é possível fundar novas indústrias. 'prospecção' permite a fundação, mas o local de construção é aleatório, e pode falhar, 'como as outras' permite que você escolha onde construir -STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :nenhum -STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :como as outras indústrias -STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :em prospecção +STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :Nenhum +STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :Como as outras indústrias +STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :Em prospecção STR_CONFIG_SETTING_INDUSTRY_PLATFORM :Área plana ao redor de indústrias: {STRING} STR_CONFIG_SETTING_INDUSTRY_PLATFORM_HELPTEXT :Área plana ao redor de uma indústria. Isso garante uma área disponível para se construir estações, vias, etc STR_CONFIG_SETTING_MULTIPINDTOWN :Permitir várias indústrias semelhantes por cidade: {STRING} @@ -1139,14 +1200,12 @@ 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 -STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT_FULLSCREEN :visualização principal apenas em modo tela-cheia -STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT :visualização principal -STR_CONFIG_SETTING_AUTOSCROLL_EVERY_VIEWPORT :todas as janelas +STR_CONFIG_SETTING_AUTOSCROLL_DISABLED :Desativado +STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT_FULLSCREEN :Visualização principal apenas em modo tela-cheia +STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT :Visualização principal +STR_CONFIG_SETTING_AUTOSCROLL_EVERY_VIEWPORT :Todas as janelas STR_CONFIG_SETTING_BRIBE :Permitir o suborno da prefeitura: {STRING} STR_CONFIG_SETTING_BRIBE_HELPTEXT :Permite companhias subornar prefeituras. Se o suborno for notado por um inspetor, a companhia não poderá subornar a prefeitura por seis meses STR_CONFIG_SETTING_ALLOW_EXCLUSIVE :Permtir compra de direitos exclusivos de transporte: {STRING} @@ -1164,17 +1223,13 @@ STR_CONFIG_SETTING_PLANE_SPEED_HELPTEXT :Define a vel. r STR_CONFIG_SETTING_PLANE_SPEED_VALUE :1 / {COMMA} STR_CONFIG_SETTING_PLANE_CRASHES :Número de acidentes de avião: {STRING} STR_CONFIG_SETTING_PLANE_CRASHES_HELPTEXT :Define a chance de um acidente aéreo -STR_CONFIG_SETTING_PLANE_CRASHES_NONE :nenhum -STR_CONFIG_SETTING_PLANE_CRASHES_REDUCED :reduzido -STR_CONFIG_SETTING_PLANE_CRASHES_NORMAL :normal +STR_CONFIG_SETTING_PLANE_CRASHES_NONE :Nenhum +STR_CONFIG_SETTING_PLANE_CRASHES_REDUCED :Reduzido +STR_CONFIG_SETTING_PLANE_CRASHES_NORMAL :Normal STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Permitir estações drive-through em ruas locais: {STRING} 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 @@ -1188,14 +1243,14 @@ STR_CONFIG_SETTING_ORDER_REVIEW :Analisar ordens STR_CONFIG_SETTING_ORDER_REVIEW_HELPTEXT :Quando ativado, as ordens dos veículos são periodicamente checadas, e problemas óbvios são relatados com mensagens quando detectados STR_CONFIG_SETTING_ORDER_REVIEW_OFF :Não STR_CONFIG_SETTING_ORDER_REVIEW_EXDEPOT :Sim, mas excluir veículos parados -STR_CONFIG_SETTING_ORDER_REVIEW_ON :de todos os veículos +STR_CONFIG_SETTING_ORDER_REVIEW_ON :De todos os veículos STR_CONFIG_SETTING_WARN_INCOME_LESS :Avisar se o lucro de um veículo se torna negativo: {STRING} STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :Quando ativado, uma mensagem é enviada quando um veículo não gerou lucro durante um ano-calendário STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Veículos nunca saem de linha: {STRING} 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 @@ -1216,28 +1271,39 @@ STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Grossura da lin STR_CONFIG_SETTING_LAND_GENERATOR :Gerador de Terreno: {STRING} 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_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 @@ -1254,7 +1320,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 @@ -1268,6 +1334,12 @@ STR_CONFIG_SETTING_SCROLLWHEEL_SCROLL :Scroll map STR_CONFIG_SETTING_SCROLLWHEEL_OFF :Desligado STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER :Velocidade do scrollwheel do mapa: {STRING} STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER_HELPTEXT :Controla a sensitividade do rolamento com a roda do mouser +STR_CONFIG_SETTING_OSK_ACTIVATION :Teclado na tela: {STRING} +STR_CONFIG_SETTING_OSK_ACTIVATION_HELPTEXT :Selecione o método para se abrir o teclado na tela para digitar usando se o mouse ou touchscreen. É útil para dispositivos pequenos que não possuem teclados +STR_CONFIG_SETTING_OSK_ACTIVATION_DISABLED :Desativado +STR_CONFIG_SETTING_OSK_ACTIVATION_DOUBLE_CLICK :Clique duplo +STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK_FOCUS :Clique simples (quando em foco) +STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK :Clique simples (imediatamente) STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU :Emulação do clique direito: {STRING} STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_HELPTEXT :Seleciona o método para emular cliques com o botão direito @@ -1278,26 +1350,24 @@ 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} STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_HELPTEXT :Selecione quais ações podem ser feitas com o jogo pausado -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 além de 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_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 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 @@ -1312,23 +1382,39 @@ 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 STR_CONFIG_SETTING_EXPENSES_LAYOUT :Agrupar despesas na janela de financas da companhia: {STRING} STR_CONFIG_SETTING_EXPENSES_LAYOUT_HELPTEXT :Define o layout para os gastos da companhia +STR_CONFIG_SETTING_SOUND_TICKER :Notícias: {STRING} +STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :Toca um som para mensagens resumidas +STR_CONFIG_SETTING_SOUND_NEWS :Jornal: {STRING} +STR_CONFIG_SETTING_SOUND_NEWS_HELPTEXT :Toca efeito sonoro ao exibir jornais +STR_CONFIG_SETTING_SOUND_NEW_YEAR :Fim de ano: {STRING} +STR_CONFIG_SETTING_SOUND_NEW_YEAR_HELPTEXT :Toca um efeito sonoro ao final de cada ano, resumindo a performance da companhia nesse ano comparado ao ano passado +STR_CONFIG_SETTING_SOUND_CONFIRM :Construção: {STRING} +STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT :Toca efeito sonoro ao construir com sucesso ou em outras ações +STR_CONFIG_SETTING_SOUND_CLICK :Cliques: {STRING} +STR_CONFIG_SETTING_SOUND_CLICK_HELPTEXT :Bipe ao clicar botões +STR_CONFIG_SETTING_SOUND_DISASTER :Desastres/acidentes: {STRING} +STR_CONFIG_SETTING_SOUND_DISASTER_HELPTEXT :Toca efeitos sonoros de acidentes e desastres +STR_CONFIG_SETTING_SOUND_VEHICLE :Veículos: {STRING} +STR_CONFIG_SETTING_SOUND_VEHICLE_HELPTEXT :Toca efeitos sonoros dos veículos +STR_CONFIG_SETTING_SOUND_AMBIENT :Ambiente: {STRING} +STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :Tocar som ambiente para paisagismo, indústrias e cidades 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} @@ -1340,6 +1426,11 @@ STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT_HELPTEXT :Ativado, impede STR_CONFIG_SETTING_AI_BUILDS_SHIPS :Desativar embarcação para o computador: {STRING} STR_CONFIG_SETTING_AI_BUILDS_SHIPS_HELPTEXT :Ativado, impede que jogadores controlados pelo computador construam embarcações +STR_CONFIG_SETTING_AI_PROFILE :Perfil de configs. padrão: {STRING} +STR_CONFIG_SETTING_AI_PROFILE_HELPTEXT :Escolhe qual perfil de configurações a ser usado em IAs aleatórias ou em valores iniciais ao se adicionar uma nova IA ou GameScript +STR_CONFIG_SETTING_AI_PROFILE_EASY :Fácil +STR_CONFIG_SETTING_AI_PROFILE_MEDIUM :Médio +STR_CONFIG_SETTING_AI_PROFILE_HARD :Difícil STR_CONFIG_SETTING_AI_IN_MULTIPLAYER :Permitir IA em multiplayer: {STRING} STR_CONFIG_SETTING_AI_IN_MULTIPLAYER_HELPTEXT :Permite jogadores controlados pelo computador participar em jogos multijogador @@ -1351,7 +1442,7 @@ STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Define se a man 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_DISABLED :desativado +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 STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Intervalo padrão de manutenção para aeronaves: {STRING} @@ -1366,20 +1457,35 @@ STR_CONFIG_SETTING_DISABLE_ELRAILS :Desativar ferro STR_CONFIG_SETTING_DISABLE_ELRAILS_HELPTEXT :Ativado, remove a necessidade de trilhos elétricos para locomotivas elétricas, permitindo-nas usar trilhos normais STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN :Chegada do primeiro veículo à estação do jogador: {STRING} +STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN_HELPTEXT :Exibe um jornal quando o primeiro veículo chega numa estação do jogador STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER :Chegada do primeiro veículo na estação concorrente: {STRING} +STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER_HELPTEXT :Exibe um jornal quando o primeiro veículo chega numa estação de um competidor STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS :Acidentes / desastres: {STRING} +STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS_HELPTEXT :Exibir jornal quando acidentes ou desastres acontecem STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION :Informações da empresa: {STRING} +STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION_HELPTEXT :Exibe um jornal quando uma companhia é aberta, ou quando estão próximas da bancarrota STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN :Abertura de indústrias: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN_HELPTEXT :Exibe um jornal quando indústrias abrem STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE :Fechamento de indústrias: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE_HELPTEXT :Exibe um jornal quando indústrias fecham STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES :Mudanças econômicas: {STRING} +STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES_HELPTEXT :Exibe um jornal referente a mudanças globais na economia STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY :Mudanças na produção das indústrias servidas pela empresa: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY_HELPTEXT :Exibe um jornal quando a produção de indústrias muda, que são atendidas pela companhia STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER :Mudanças na produção de indústrias servida pelo(s) concorrente(es): {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER_HELPTEXT :Exibe um jornal quando a produção de indústrias muda, que são atendidas pelos competidores STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED :Outras mudanças de produção das indústrias: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED_HELPTEXT :{G=f}Exibe um jornal quando a produção de indústrias muda, que não não atendidas pela companhia ou competidores STR_CONFIG_SETTING_NEWS_ADVICE :Conselhos / informações sobre os veículos da empresa: {STRING} +STR_CONFIG_SETTING_NEWS_ADVICE_HELPTEXT :Exibe mensagens sobre veículos precisando de atenção STR_CONFIG_SETTING_NEWS_NEW_VEHICLES :Novos veículos: {STRING} +STR_CONFIG_SETTING_NEWS_NEW_VEHICLES_HELPTEXT :Exibe um jornal quando um novo tipo de veículo se torna disponível STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE :Mudanças à aceitação de carga: {STRING} +STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE_HELPTEXT :Exibe mensagens sobre estações alterando aceitação de algumas cargas STR_CONFIG_SETTING_NEWS_SUBSIDIES :Subsídios: {STRING} +STR_CONFIG_SETTING_NEWS_SUBSIDIES_HELPTEXT :Exibe um jornal sobre eventos relacionados a subsídios STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION :Informações gerais: {STRING} +STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION_HELPTEXT :Exibe um jornal sobre eventos gerais, como a compra de direitos exclusivos ou fundação de reconstrução viária STR_CONFIG_SETTING_NEWS_MESSAGES_OFF :Desligado STR_CONFIG_SETTING_NEWS_MESSAGES_SUMMARY :Resumo @@ -1398,7 +1504,7 @@ STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY :Ao arrastar, co STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_HELPTEXT :Define a distância a cada qual sinais serão construídos até o próximo obstáculo (sinal, intersecção), ao clicar e arrastar sinais STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_VALUE :{COMMA} quadrado{P "" s} STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE :Ao arrastar, manter distância fixa entre os sinais: {STRING} -STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :Selecione o comportamento da construção de sinais ao Ctrl+Clicar. Se desativado, sinais são colocados ao redor de túneis ou pontes para evitar trechos compridos sem sinalização. Se ativado, sinais são colocados a cada N quadrados, tornando o alinhamento de sinais em trilhos paralelos mais fácil +STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :Selecione o comportamento da construção de sinais ao Ctrl+Arrastar. Se desativado, sinais são colocados ao redor de túneis ou pontes para evitar trechos compridos sem sinalização. Se ativado, sinais são colocados a cada N quadrados, tornando o alinhamento de sinais em trilhos paralelos mais fácil STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :Construir sinaleiros até: {STRING} STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE_HELPTEXT :Seleciona o ano a partir do qual semáforos substituirão sinais. Antes desse ano, serão utilizados sinais de placa (diferença puramente estética) STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI :Ativar interface de sinais: {STRING} @@ -1416,28 +1522,28 @@ STR_CONFIG_SETTING_CYCLE_SIGNAL_ALL :Todos STR_CONFIG_SETTING_TOWN_LAYOUT :Disposição de ruas para novas cidades: {STRING} STR_CONFIG_SETTING_TOWN_LAYOUT_HELPTEXT :Define como as estradas construídas por cidades serão planejadas -STR_CONFIG_SETTING_TOWN_LAYOUT_DEFAULT :padrão -STR_CONFIG_SETTING_TOWN_LAYOUT_BETTER_ROADS :melhores estradas +STR_CONFIG_SETTING_TOWN_LAYOUT_DEFAULT :Padrão +STR_CONFIG_SETTING_TOWN_LAYOUT_BETTER_ROADS :Melhores estradas STR_CONFIG_SETTING_TOWN_LAYOUT_2X2_GRID :grade 2x2 STR_CONFIG_SETTING_TOWN_LAYOUT_3X3_GRID :grade 3x3 -STR_CONFIG_SETTING_TOWN_LAYOUT_RANDOM :aleatório +STR_CONFIG_SETTING_TOWN_LAYOUT_RANDOM :Aleatório STR_CONFIG_SETTING_ALLOW_TOWN_ROADS :Permitir cidades construir novas ruas?: {STRING} STR_CONFIG_SETTING_ALLOW_TOWN_ROADS_HELPTEXT :Permite cidades construírem ruas para o crescimento. Desative para prevenir as prefeituras construírem as ruas por si sós 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 :permitido, layout de cidades customizável +STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :Proibido +STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :Permitido +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 -STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NONE :nenhum {RED}(extingue a serraria) -STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_RAINFOREST :apenas nas florestas tropicais -STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_ALL :em todo o lugar +STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NONE :Nenhum {RED}(extingue a serraria) +STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_RAINFOREST :Apenas nas florestas tropicais +STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_ALL :Em todo o lugar STR_CONFIG_SETTING_TOOLBAR_POS :Posição da barra de ferramentas principal: {STRING} STR_CONFIG_SETTING_TOOLBAR_POS_HELPTEXT :Posição horizontal da barra de ferramentas principal no topo da tela @@ -1446,7 +1552,7 @@ STR_CONFIG_SETTING_STATUSBAR_POS_HELPTEXT :Posição horiz STR_CONFIG_SETTING_SNAP_RADIUS :Dist. mín para autoalinhamento das janelas: {STRING} STR_CONFIG_SETTING_SNAP_RADIUS_HELPTEXT :Distância mínima entre janelas arrastadas para que sejam automaticamente alinhadas e juntas para organização STR_CONFIG_SETTING_SNAP_RADIUS_VALUE :{COMMA} pixel{P "" s} -STR_CONFIG_SETTING_SNAP_RADIUS_DISABLED :desativ. +STR_CONFIG_SETTING_SNAP_RADIUS_DISABLED :Desativado STR_CONFIG_SETTING_SOFT_LIMIT :Limite de janelas não presas: {STRING} STR_CONFIG_SETTING_SOFT_LIMIT_HELPTEXT :Número de janelas não presas antes que janelas antigas sejam fechadas para darem lugar a janelas mais novas STR_CONFIG_SETTING_SOFT_LIMIT_VALUE :{COMMA} @@ -1471,29 +1577,93 @@ STR_CONFIG_SETTING_TOWN_GROWTH_VERY_FAST :Muito rápido STR_CONFIG_SETTING_LARGER_TOWNS :Proporção de cidades que virarão cidades grandes: {STRING} STR_CONFIG_SETTING_LARGER_TOWNS_HELPTEXT :Quantidade de cidades que se tornação uma cidade grande, ou seja, uma cidade que começa maior e cresce mais rápido STR_CONFIG_SETTING_LARGER_TOWNS_VALUE :1 a cada {COMMA} -STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :nenhuma +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_GUI :{ORANGE}Interface -STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}Construção +STR_CONFIG_SETTING_LINKGRAPH_INTERVAL :Atualizar gráfico de distribuição a cada {STRING} 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_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 +STR_CONFIG_SETTING_DISTRIBUTION_SYMMETRIC :simétrico +STR_CONFIG_SETTING_DISTRIBUTION_PAX :Modo de distribuição para passageiros: {STRING} +STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :"simétrico" significa que aproximadamente a mesma quantidade de passageiros será enviada da estação A para a estação B assim como de B para A. "assimétrico" significa que a quantidade de passageiros enviada em ambas as direções será arbitrária. "manual" significa que não haverá distribuição automática. +STR_CONFIG_SETTING_DISTRIBUTION_MAIL :Modo de distribuição para correios: {STRING} +STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :"simétrico" significa que aproximadamente a mesma quantidade de correio será enviada da estação A para a estação B assim como de B para A. "assimétrico" significa que a quantidade de correio enviada em ambas as direções será arbitrária. "manual" significa que não haverá distribuição automática. +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 :"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 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} +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_HELPTEXT :Sempre que uma velocidade for exibida na interface do usuário, será exibida 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 :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_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_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_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_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_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_LOCALISATION :{ORANGE}Localizaçã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_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_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 @@ -1527,6 +1697,8 @@ STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_ALGORITHM :{WHITE}... form STR_CONFIG_ERROR_INVALID_BASE_GRAPHICS_NOT_FOUND :{WHITE}... ignorando conj. de Gráficos Base '{STRING}': não encontrado STR_CONFIG_ERROR_INVALID_BASE_SOUNDS_NOT_FOUND :{WHITE}... ignorando conj. de Sons Base '{STRING}': não encontrado STR_CONFIG_ERROR_INVALID_BASE_MUSIC_NOT_FOUND :{WHITE}... ignorando conj. de Músicas Base '{STRING}': não encontrado +STR_CONFIG_ERROR_OUT_OF_MEMORY :{WHITE}Sem memória +STR_CONFIG_ERROR_SPRITECACHE_TOO_BIG :{WHITE}A alocação {BYTES} de spritecache falhou. O spritecache foi reduzido a {BYTES}. A performance do jogo será reduzida. Para reduzir a necessidade de memória tente disabilitar 32bpp gráficos e/ou reduzir o zoom. # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} @@ -1539,6 +1711,7 @@ STR_INTRO_SCENARIO_EDITOR :{BLACK}Editor d STR_INTRO_MULTIPLAYER :{BLACK}Multi-jogador 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_NEWGRF_SETTINGS :{BLACK}Configurar NewGRF STR_INTRO_ONLINE_CONTENT :{BLACK}Checar conteúdo on-line @@ -1558,6 +1731,7 @@ STR_INTRO_TOOLTIP_SUB_TROPICAL_LANDSCAPE :{BLACK}Selecion STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Selecionar cenário do estilo 'toyland' 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_NEWGRF_SETTINGS :{BLACK}Exibir configs. dos NewGRF STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Checar por conteúdo novo e atualizado para baixar @@ -1646,6 +1820,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 @@ -1701,10 +1876,10 @@ STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}Alterar # Network server list STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}Multi-jogador -STR_NETWORK_SERVER_LIST_CONNECTION :{BLACK}Conexão: -STR_NETWORK_SERVER_LIST_CONNECTION_TOOLTIP :{BLACK}Escolha entre um jogo pela Internet ou pela rede local -STR_NETWORK_SERVER_LIST_LAN :Rede Local -STR_NETWORK_SERVER_LIST_INTERNET :Internet +STR_NETWORK_SERVER_LIST_ADVERTISED :[BLACK}Publicado +STR_NETWORK_SERVER_LIST_ADVERTISED_TOOLTIP :{BLACK}Selecione entre um jogo publicado (internet) ou não publicado (Rede de Área 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: STR_NETWORK_SERVER_LIST_ENTER_NAME_TOOLTIP :{BLACK}Este é o nome pelo qual os outros jogadores irão te identificar @@ -1763,16 +1938,16 @@ STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP :{BLACK}O nome d STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}Definir senha STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Proteja o jogo com uma senha se não desejar que seja publicamente acessível -STR_NETWORK_START_SERVER_LAN_INTERNET :Rede Local / Internet -STR_NETWORK_START_SERVER_INTERNET_ADVERTISE :Internet (divulgar) +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. @@ -1885,6 +2060,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 @@ -2003,6 +2179,10 @@ STR_CONTENT_SELECT_UPDATES_CAPTION :{BLACK}Selecion STR_CONTENT_SELECT_UPDATES_CAPTION_TOOLTIP :{BLACK}Seleciona tudo que consistir em upgrades para conteúdo existente para ser baixado STR_CONTENT_UNSELECT_ALL_CAPTION :{BLACK}Desmarcar tudo STR_CONTENT_UNSELECT_ALL_CAPTION_TOOLTIP :{BLACK}Desceleciona todos +STR_CONTENT_SEARCH_EXTERNAL :{BLACK}Procurar em sites externos +STR_CONTENT_SEARCH_EXTERNAL_TOOLTIP :{BLACK}Conteúdo procurado não está disponível no servidor de conteúdo do OpenTTD se hospedado em websites não relacionados ao OpenTTD +STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER_CAPTION :{WHITE}Você está saindo do OpenTTD! +STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER :{WHITE}Os termos e condições ao baixar conteúdo de fontes externas pode varias.{}Você deverá consultar as fontes para obter instruções de como instalar o conteúdo no OpenTTD.{} Deseja continuar? STR_CONTENT_FILTER_TITLE :{BLACK}Tag/nome do filtro: STR_CONTENT_OPEN_URL :{BLACK}Visitar website STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}Visitar o site desse conteúdo @@ -2025,7 +2205,7 @@ STR_CONTENT_DETAIL_FILESIZE :{SILVER}Tamanho STR_CONTENT_DETAIL_SELECTED_BECAUSE_OF :{SILVER}Selecionado pois: {WHITE}{STRING} STR_CONTENT_DETAIL_DEPENDENCIES :{SILVER}Dependentes: {WHITE}{STRING} STR_CONTENT_DETAIL_TAGS :{SILVER}Tags: {WHITE}{STRING} -STR_CONTENT_NO_ZLIB :{WHITE}OpenTTD não suporta "zlib"... +STR_CONTENT_NO_ZLIB :{WHITE}OpenTTD foi feito sem suporte a "zlib"... STR_CONTENT_NO_ZLIB_SUB :{WHITE}... impossível baixar conteúdo! # Order of these is important! @@ -2072,6 +2252,17 @@ STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}Alternar STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Altera transparência para os indicadores de carga. Ctrl+Clique para travar STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}Definir objetivos como invisíveis ao invés de transparentes. +# Linkgraph legend window +STR_LINKGRAPH_LEGEND_CAPTION :{BLACK}Legenda do Fluxo de Carga +STR_LINKGRAPH_LEGEND_ALL :{BLACK}Todas +STR_LINKGRAPH_LEGEND_NONE :{BLACK}Nenhuma +STR_LINKGRAPH_LEGEND_SELECT_COMPANIES :{BLACK}Selecione companhias a serem exibidas + +# Linkgraph legend window and linkgraph legend in smallmap +STR_LINKGRAPH_LEGEND_UNUSED :{TINY_FONT}{BLACK}não utilizado +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}Destacar cobertura STR_STATION_BUILD_COVERAGE_OFF :{BLACK}Desativar @@ -2139,14 +2330,14 @@ STR_STATION_CLASS_WAYP :Pontos de contr STR_BUILD_SIGNAL_CAPTION :{WHITE}Seleção de Sinais STR_BUILD_SIGNAL_SEMAPHORE_NORM_TOOLTIP :{BLACK}Sinais padrão (semáforos){}Sinais são necessários para impedir trens de colidirem nas malhas ferroviárias com mais de um trem STR_BUILD_SIGNAL_SEMAPHORE_ENTRY_TOOLTIP :{BLACK}Sinal de Entrada (semáforo){}Verde enquanto haja um ou mais sinais de saída verdes na atual seção dos trilhos. Do contrário, mostra vermelho -STR_BUILD_SIGNAL_SEMAPHORE_EXIT_TOOLTIP :{BLACK}Sinal de saída (semáforo){}Funciona como um sinal normal, porém é necessário para o funcionamento correto do sistema de sinais combo ou de entrada +STR_BUILD_SIGNAL_SEMAPHORE_EXIT_TOOLTIP :{BLACK}Sinal de saída (semáforo){}Funciona como um sinal normal, porém é necessário para o funcionamento correto do sistema de pré-sinais combo ou de entrada STR_BUILD_SIGNAL_SEMAPHORE_COMBO_TOOLTIP :{BLACK}Sinal combo (semáforo){}O sinal combo funciona tanto como um sinal de entrada quanto de saída. Permite construir várias ramificações STR_BUILD_SIGNAL_SEMAPHORE_PBS_TOOLTIP :{BLACK}Sinal avançado(Semáforo){}Um sinal avançado permite mais de um trem em um bloco de ferrovia, Se o trem no bloco puder reservar um local seguro para parar, o sinal avançado já permite a passada do próximo STR_BUILD_SIGNAL_SEMAPHORE_PBS_OWAY_TOOLTIP :{BLACK}Sinal avançado de mão única(Semáforo){}Um sinal avançado permite mais de um trem em um bloco de ferrovia, Se o trem no bloco puder reservar um local seguro para parar, o sinal avançado já permite a passada do próximo, porém não permite a passagem na via contrária STR_BUILD_SIGNAL_ELECTRIC_NORM_TOOLTIP :{BLACK}Sinal Padrão (elétrico){}Sinais são necessários para impedir que trens batam em redes de ferrovias com mais de uma máquina -STR_BUILD_SIGNAL_ELECTRIC_ENTRY_TOOLTIP :{BLACK}Sinal de entrada (elétrico){}Verde enquanto haja um ou mais sinais de saída verdes na atual seção dos trilhos. Do contrário, mostra vermelho -STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}Sinal de saída(elétrico){}Funciona como um sinal normal, porém é necessário para o funcionamento correto do sistema de sinais combo ou de entrada -STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}Sinal combo (elétrico){}O sinal combo funciona tanto como um sinal de entrada quanto de saída. Permite construir várias ramificações +STR_BUILD_SIGNAL_ELECTRIC_ENTRY_TOOLTIP :{BLACK}Sinal de Entrada (elétrico){}Verde enquanto haja um ou mais sinais de saída verdes na atual seção dos trilhos. Do contrário, mostra vermelho +STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}Sinal de saída(elétrico){}Funciona como um sinal normal, porém é necessário para o funcionamento correto do sistema de pré-sinais combo ou de entrada +STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}Sinal Combo (elétrico){}O sinal combo funciona tanto como um sinal de entrada quanto de saída. Permite construir várias ramificações de pré-sinais STR_BUILD_SIGNAL_ELECTRIC_PBS_TOOLTIP :{BLACK}Sinal de trajeto(Elétrico){}Um sinal de trajeto permite mais de um trem entrar em um bloco de sinal ao mesmo tempo, se o trem puder reservar um trajeto para um ponto seguro de parada. Sinais de trajeto padrões podem ser passados pelo lado de trás STR_BUILD_SIGNAL_ELECTRIC_PBS_OWAY_TOOLTIP :{BLACK}Sinal avançado de mão única(Elétrico){}Um sinal avançado permite mais de um trem em um bloco de ferrovia, Se o trem no bloco puder reservar um local seguro para parar, o sinal avançado já permite a passada do próximo, porém não permite a passagem na via contrária STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}Converter sinal{}Quando selecionado, clicar num sinal existente converte-o para o tipo selecionado e suas variantes. Ctrl+Clique muda a variante atual. Shift+Clique mostra o preço estimado da conversão @@ -2276,7 +2467,7 @@ STR_PLANT_TREE_TOOLTIP :{BLACK}Selecion STR_TREES_RANDOM_TYPE :{BLACK}Árvores de tipo aleatório STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}Plantar árvores de tipo aleatório, Shift alterna entre construção/preço estimado STR_TREES_RANDOM_TREES_BUTTON :{BLACK}Plantar Aleatoriamente -STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Planta árvores aleatoriamente no terreno +STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Planta árvores aleatoriamente pelo terreno # Land generation window (SE) STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}Gerar Terreno @@ -2346,6 +2537,10 @@ STR_INDUSTRY_DISPLAY_CHAIN :{BLACK}Exibir c STR_INDUSTRY_DISPLAY_CHAIN_TOOLTIP :{BLACK}Exibe indústrias que suprem e aceitam carga STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP :{BLACK}Exiba também no minimapa STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP_TOOLTIP :{BLACK}Selecione as indústrias exibidas no minimapa também +STR_INDUSTRY_CARGOES_SELECT_CARGO :{BLACK}Seleciona carga +STR_INDUSTRY_CARGOES_SELECT_CARGO_TOOLTIP :{BLACK}Seleciona a carga que você deseja exibir +STR_INDUSTRY_CARGOES_SELECT_INDUSTRY :{BLACK}Seleciona indústria +STR_INDUSTRY_CARGOES_SELECT_INDUSTRY_TOOLTIP :{BLACK}Seleciona a indústria que você deseja exibir # Land area window STR_LAND_AREA_INFORMATION_CAPTION :{WHITE}Informações do Terreno @@ -2370,6 +2565,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 @@ -2466,7 +2662,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-2012 A equipe do OpenTTD +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2014 A equipe do OpenTTD # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Salvar Jogo @@ -2485,6 +2681,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} @@ -2495,6 +2692,7 @@ STR_SAVELOAD_OSKTITLE :{BLACK}Coloque # World generation STR_MAPGEN_WORLD_GENERATION_CAPTION :{WHITE}Geração de mundo STR_MAPGEN_MAPSIZE :{BLACK}Dimensões do mapa: +STR_MAPGEN_MAPSIZE_TOOLTIP :{BLACK}Seleciona o tamanho do mapa em quadrados. O número de quadrados disponíveis será um pouco menor STR_MAPGEN_BY :{BLACK}* STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}No. de cidades: STR_MAPGEN_DATE :{BLACK}Data: @@ -2502,10 +2700,6 @@ STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}No. de i 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 @@ -2532,7 +2726,6 @@ 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_SNOW_LINE_QUERY_CAPT :{WHITE}Mudar linha da neve STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Mudar data de início @@ -2587,7 +2780,9 @@ 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_FILE_TOOLTIP :{BLACK}Lista dos NewGRF instalados. +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 STR_NEWGRF_SETTINGS_SHOW_PARAMETERS :{BLACK}Exibir parâmetros @@ -2611,6 +2806,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 @@ -2670,6 +2875,7 @@ STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Contém multiplas entradas de Ação 8 (sprite {3:NUM}) STR_NEWGRF_ERROR_READ_BOUNDS :Leitura após o final do pseudo-sprite (sprite {3:NUM}) STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}Estão faltando alguns sprites na base de gráficos em uso.{}Por favor atualize a base de gráficos +STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}O pacote de gráficos base atuais está faltando alguns sprites.{}Favor atualizar o pacote de gráficos base.{}Já que você está usando um {YELLOW}snapshot em desenvolvimento do OpenTTD{WHITE}, você também precisa do {YELLOW}Snapshot do pacote de gráficos base em desenvolvimento{WHITE} STR_NEWGRF_ERROR_GRM_FAILED :Recursos GRF requeridos indisponíveis (sprite {3:NUM}) STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} foi desativado por {STRING} STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Formato de layout de sprite inválido/desconhecido (sprite {3:NUM}) @@ -2680,6 +2886,7 @@ STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}Você e STR_NEWGRF_DUPLICATE_GRFID :{WHITE}Impossível adicionar: registro de GRF já existe STR_NEWGRF_COMPATIBLE_LOADED :{ORANGE}Arquivo procurado não encontrado (carregado compatível com GRF) +STR_NEWGRF_TOO_MANY_NEWGRFS :{WHITE}Impossível adicionar arquivo: Limite de NewGRF's atingido STR_NEWGRF_COMPATIBLE_LOAD_WARNING :{WHITE}GRG(s) compatível(eis) carregados para os arquivos que faltam STR_NEWGRF_DISABLED_WARNING :{WHITE}arquivo(s) GRF em falta foram desativados @@ -2696,6 +2903,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 @@ -2710,6 +2918,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... @@ -2791,10 +3002,14 @@ STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT :{YELLOW} Compra STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}Subornar a prefeitura para aumentar a sua avaliação, correndo o risco de uma penalidade severa se apanhado.{}Preço: {CURRENCY_LONG} # Goal window -STR_GOALS_CAPTION :{G=m}{WHITE}Objetivos +STR_GOALS_CAPTION :{WHITE}{COMPANY} Objetivos +STR_GOALS_SPECTATOR_CAPTION :{WHITE}Objetivos globais STR_GOALS_GLOBAL_TITLE :{G=m}{BLACK}Objetivos globais: STR_GOALS_TEXT :{ORANGE}{STRING} STR_GOALS_NONE :{G=m}{ORANGE}- Nenhum - +STR_GOALS_SPECTATOR_NONE :{ORANGE}- Não aplicável - +STR_GOALS_PROGRESS :{ORANGE}{STRING} +STR_GOALS_PROGRESS_COMPLETE :{GREEN}{STRING} STR_GOALS_COMPANY_TITLE :{G=m}{BLACK}Objetivos da empresa: STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Clique num objetivo para centralizar a visualização principal numa indústria/cidade.Ctrl+Clique abre uma nova janela na localização da indústria/cidade @@ -2833,6 +3048,18 @@ STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}Transpor STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING} de {STRING} para {STRING}{YELLOW} ({COMPANY}{YELLOW}, até {DATE_SHORT}) STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Clique num serviço para centralizar a visualização principal numa indústria/cidade.Ctrl+Clique abre uma nova janela na localização da indústria/cidade +# Story book window +STR_STORY_BOOK_CAPTION :{WHITE}Livro de Histórias de {COMPANY} +STR_STORY_BOOK_SPECTATOR_CAPTION :{WHITE}Livro de Histórias Global +STR_STORY_BOOK_TITLE :{YELLOW}{STRING} +STR_STORY_BOOK_GENERIC_PAGE_ITEM :Pág. {NUM} +STR_STORY_BOOK_SEL_PAGE_TOOLTIP :{BLACK}Vai para uma página específicao selecionar da lista +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 STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}Segure Ctrl para selecionar mais de um item @@ -2846,9 +3073,9 @@ 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) STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Aceita STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Exibir lista de carga aceita @@ -2859,8 +3086,31 @@ STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPAN STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Avaliações STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Exibir avaliações da estação -STR_STATION_VIEW_CARGO_RATINGS_TITLE :{BLACK}Avaliação local do serviço de transporte: -STR_STATION_VIEW_CARGO_RATING :{WHITE}{STRING}: {YELLOW}{STRING} ({COMMA}%) +STR_STATION_VIEW_SUPPLY_RATINGS_TITLE :{BLACK}Suprimento mensal e avaliação local: +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: Aguardando +STR_STATION_VIEW_WAITING_AMOUNT :Quantidade: Aguardando +STR_STATION_VIEW_PLANNED_STATION :Estação: Planejada +STR_STATION_VIEW_PLANNED_AMOUNT :Quantidade: Planejada +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} dessa estação +STR_STATION_VIEW_VIA_HERE :{GREEN}{CARGO_SHORT} parando nessa estação +STR_STATION_VIEW_TO_HERE :{GREEN}{CARGO_SHORT} a essa estação +STR_STATION_VIEW_NONSTOP :{YELLOW}{CARGO_SHORT} sem parar + +STR_STATION_VIEW_GROUP_S_V_D :Origem-Via-Destino +STR_STATION_VIEW_GROUP_S_D_V :Origem-Destino-Via +STR_STATION_VIEW_GROUP_V_S_D :Via-Origem-Destino +STR_STATION_VIEW_GROUP_V_D_S :Via-Destino-Origem +STR_STATION_VIEW_GROUP_D_S_V :Destino-Origem-Via +STR_STATION_VIEW_GROUP_D_V_S :Destino-Via-Origem ############ range for rating starts STR_CARGO_RATING_APPALLING :Inexistente @@ -2987,7 +3237,6 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS :{WHITE}Canais STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}Estações: STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}Partes de estações STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}Aeroportos -STR_COMPANY_INFRASTRUCTURE_VIEW_COST :{WHITE}{1:CURRENCY_LONG}/ano ({0:COMMA}) STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL :{WHITE}{CURRENCY_LONG}/ano # Industry directory @@ -3004,6 +3253,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 visão no local da indústria.Ctrl+Clique abre uma nova janela no local 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 fechamento iminente! ############ range for requires starts STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Requer: {YELLOW}{STRING}{STRING} @@ -3066,12 +3316,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 @@ -3367,6 +3620,11 @@ STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Interval 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 +STR_SERVICE_INTERVAL_DROPDOWN_TOOLTIP :{BLACK}Alterar o tipo de intervalo entre manutenções +STR_VEHICLE_DETAILS_DEFAULT :Padrão +STR_VEHICLE_DETAILS_DAYS :Dias +STR_VEHICLE_DETAILS_PERCENT :Porcentagem + STR_QUERY_RENAME_TRAIN_CAPTION :{WHITE}Renomear trem STR_QUERY_RENAME_ROAD_VEHICLE_CAPTION :{WHITE}Renomear automóvel STR_QUERY_RENAME_SHIP_CAPTION :{WHITE}Renomear embarcação @@ -3455,8 +3713,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 @@ -3547,18 +3805,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 @@ -3584,7 +3842,7 @@ STR_TIMETABLE_TOOLTIP :{BLACK}Horário 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_TRAVEL_NOT_TIMETABLED_SPEED :Viagem a no máximo {2:VELOCITY} (sem plano de horário) STR_TIMETABLE_TRAVEL_FOR :Viajar para {STRING} STR_TIMETABLE_TRAVEL_FOR_SPEED :Viaje por {STRING} em até {VELOCITY} STR_TIMETABLE_STAY_FOR :e ficar durante {STRING} @@ -3602,7 +3860,7 @@ STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}Este hor STR_TIMETABLE_STATUS_START_AT :{BLACK}Este horário começará em{STRING} STR_TIMETABLE_STARTING_DATE :{BLACK}Data de início -STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Selecione uma data como ponto de início para este horário +STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Seleciona uma data como ponto de partida para esse horário. Ctrl+Clique define o ponto de partida desse horário, e distribui todos os veículos que compartilham essa ordem igualmente, baseados na sua ordem relativa, mesmo que a ordem esteja totalmente tabelada STR_TIMETABLE_CHANGE_TIME :{BLACK}Mudar horário STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Mudar a quantidade de tempo que a ordem destacada deverá levar @@ -3624,7 +3882,7 @@ STR_TIMETABLE_AUTOFILL_TOOLTIP :{BLACK}Preenche STR_TIMETABLE_EXPECTED :{BLACK}Esperado STR_TIMETABLE_SCHEDULED :{BLACK}Agendado -STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Mudar entre esperado e agendado +STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Trocar entre esperado e agendado STR_TIMETABLE_ARRIVAL_ABBREVIATION :C: STR_TIMETABLE_DEPARTURE_ABBREVIATION :P: @@ -3716,6 +3974,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 @@ -3738,6 +3998,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}Transferência: {CURRENCY_LONG}{WHITE} / {GREEN}Lucro: {CURRENCY_LONG} +STR_FEEDER_INCOME :{YELLOW}Transferência: {CURRENCY_LONG}{WHITE} / {GREEN}Lucro: {CURRENCY_LONG} +STR_FEEDER_COST_TINY :{TINY_FONT}{YELLOW}Transferência: {CURRENCY_LONG}{WHITE} / {RED}Custo: {CURRENCY_LONG} +STR_FEEDER_COST :{YELLOW}Transferência: {CURRENCY_LONG}{WHITE} / {RED}Custo: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_COST :{WHITE}Preço Estimado: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Renda Estimada: {CURRENCY_LONG} @@ -3778,6 +4042,8 @@ STR_WARNING_HEIGHTMAP_SCALE_MESSAGE :{YELLOW}Alterar STR_WARNING_FALLBACK_SOUNDSET :{WHITE}Apenas um conjunto de som vazio foi encontrado. Se quiser sons, instale um conjunto através do sistema de download de conteúdo # Screenshot related messages +STR_WARNING_SCREENSHOT_SIZE_CAPTION :{WHITE}Captura de tela gigante +STR_WARNING_SCREENSHOT_SIZE_MESSAGE :{YELLOW}A captura de tela terá uma resolução de {COMMA}x{COMMA} pixels. Pode levar algum tempo. Deseja continuar? STR_MESSAGE_SCREENSHOT_SUCCESSFULLY :{WHITE}Foto salvado com sucesso como '{STRING}' STR_ERROR_SCREENSHOT_FAILED :{WHITE}Falha ao tirar foto! @@ -4032,6 +4298,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... @@ -4087,6 +4354,11 @@ STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}Impossí STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... veículo está destruído +STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL :{WHITE}Não haverá nenhum veículo disponível +STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Altere sua configuração de NewGRF +STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}Não há veículos disponíveis ainda +STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :[WHITE]Inicie um jogo após {DATE_SHORT} ou use um NewGRF que tenha veículos anteriores + # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Impossível fazer o trem passar o sinal de perigo... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Impossível inverter a direção do trem... @@ -4129,6 +4401,16 @@ STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}Impossí # Translatable comment for OpenTTD's desktop shortcut STR_DESKTOP_SHORTCUT_COMMENT :Um jogo de simulação baseado no Transport Tycoon Deluxe +# Translatable descriptions in media/baseset/*.ob* files +STR_BASEGRAPHICS_DOS_DESCRIPTION :Gráficos Originais do Transport Tycoon Deluxe, Edição DOS. +STR_BASEGRAPHICS_DOS_DE_DESCRIPTION :Gráficos Originais do Transport Tycoon Deluxe, Edição DOS alemã. +STR_BASEGRAPHICS_WIN_DESCRIPTION :Gráficos Originais do Transport Tycoon, Edição Windows. +STR_BASESOUNDS_DOS_DESCRIPTION :Sons Originais do Transport Tycoon Deluxe, Edição DOS. +STR_BASESOUNDS_WIN_DESCRIPTION :Sons Originais do Transport Tycoon Deluxe, Edição Windows. +STR_BASESOUNDS_NONE_DESCRIPTION :Um pacote de sons sem sons. +STR_BASEMUSIC_WIN_DESCRIPTION :Música Original do Transport Tycoon Deluxe, Edição Windows +STR_BASEMUSIC_NONE_DESCRIPTION :Um pacote de músicas sem músicas. + ##id 0x2000 # Town building names STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1 :Edifício alto de escritórios @@ -4251,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 (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) @@ -4460,7 +4742,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 @@ -4575,8 +4857,9 @@ 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_SPACE_STRING :{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} @@ -4600,9 +4883,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 00df1ce0c..fcc12d25a 100644 --- a/src/lang/bulgarian.txt +++ b/src/lang/bulgarian.txt @@ -46,7 +46,7 @@ STR_CARGO_PLURAL_FRUIT :Плодове STR_CARGO_PLURAL_DIAMONDS :Диаманти STR_CARGO_PLURAL_FOOD :Храна STR_CARGO_PLURAL_PAPER :Хартия -STR_CARGO_PLURAL_GOLD :злато +STR_CARGO_PLURAL_GOLD :Злато STR_CARGO_PLURAL_WATER :Вода STR_CARGO_PLURAL_WHEAT :Пшеница STR_CARGO_PLURAL_RUBBER :Каучук @@ -63,7 +63,7 @@ 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 :Нефт @@ -80,7 +80,7 @@ STR_CARGO_SINGULAR_FRUIT :Плодове STR_CARGO_SINGULAR_DIAMOND :Диаманти STR_CARGO_SINGULAR_FOOD :Храна STR_CARGO_SINGULAR_PAPER :Хартия -STR_CARGO_SINGULAR_GOLD :злато +STR_CARGO_SINGULAR_GOLD :Злато STR_CARGO_SINGULAR_WATER :Вода STR_CARGO_SINGULAR_WHEAT :Пшеница STR_CARGO_SINGULAR_RUBBER :Каучук @@ -201,24 +201,32 @@ 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_LONG_IMPERIAL :{COMMA} галон{P "" и} STR_UNITS_VOLUME_LONG_METRIC :{COMMA} лит{P ър ри} STR_UNITS_VOLUME_LONG_SI :{COMMA} куб. м. +STR_UNITS_FORCE_IMPERIAL :{COMMA} lbf +STR_UNITS_FORCE_METRIC :{COMMA} kgf STR_UNITS_FORCE_SI :{COMMA} kN STR_UNITS_HEIGHT_IMPERIAL :{COMMA} фут +STR_UNITS_HEIGHT_METRIC :{COMMA} м STR_UNITS_HEIGHT_SI :{COMMA} м # Common window strings +STR_LIST_FILTER_TITLE :{BLACK}Филтриращ низ: STR_LIST_FILTER_OSKTITLE :{BLACK}Въведете филтър STR_LIST_FILTER_TOOLTIP :{BLACK}Въведете ключова дума за филтър на списъка @@ -233,7 +241,7 @@ 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}Лента за позициониране - превърта списъка нагоре/надолу @@ -257,7 +265,6 @@ STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}Площ # These are used in buttons -STR_SORT_BY_CAPTION_POPULATION :{BLACK}Население STR_SORT_BY_CAPTION_NAME :{BLACK}Име STR_SORT_BY_CAPTION_DATE :{BLACK}Дата # These are used in dropdowns @@ -278,7 +285,8 @@ STR_SORT_BY_LENGTH :Дължина STR_SORT_BY_LIFE_TIME :Оставащо време за експлоатация STR_SORT_BY_TIMETABLE_DELAY :Закъснение STR_SORT_BY_FACILITY :Вид на гарата -STR_SORT_BY_WAITING :Цена на чакащият товар +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 :Двигател № (класическо сортиране) @@ -289,18 +297,22 @@ 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_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_GOALS_LIST :{BLACK}Покази списък с целите STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Покажи графиките STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Покажи класирането на компаниите STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Инвестирай в нова индустрия @@ -334,11 +346,12 @@ STR_SCENEDIT_TOOLBAR_INDUSTRY_GENERATION :{BLACK}Създ STR_SCENEDIT_TOOLBAR_ROAD_CONSTRUCTION :{BLACK}Строене на път STR_SCENEDIT_TOOLBAR_PLANT_TREES :{BLACK}Посаждане дърва. Shift показва евентуалната цена на засаждането. STR_SCENEDIT_TOOLBAR_PLACE_SIGN :{BLACK}Поставяне табела -STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}Постави обект +STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}Постави обект. Shift превключва строеж/цена за построяване ############ range for SE file menu starts STR_SCENEDIT_FILE_MENU_SAVE_SCENARIO :Запис на сценарий STR_SCENEDIT_FILE_MENU_LOAD_SCENARIO :Зареждане на сценарий +STR_SCENEDIT_FILE_MENU_SAVE_HEIGHTMAP :Запис на височинна карта STR_SCENEDIT_FILE_MENU_LOAD_HEIGHTMAP :Отвори височинна карта STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :Изход от редактора STR_SCENEDIT_FILE_MENU_SEPARATOR : @@ -348,16 +361,18 @@ 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 :Настройки на прозрачност 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 :Прозрачни табели на станциите +STR_SETTINGS_MENU_TRANSPARENT_SIGNS :Прозрачни табели ############ range ends here ############ range for file menu starts @@ -368,19 +383,18 @@ STR_FILE_MENU_SEPARATOR : STR_FILE_MENU_EXIT :Изход ############ range ends here -############ range for map menu starts +# map menu STR_MAP_MENU_MAP_OF_WORLD :Карта на света STR_MAP_MENU_EXTRA_VIEW_PORT :Допълнителна камера STR_MAP_MENU_SIGN_LIST :Списък с табели -############ range for town menu starts, yet the town directory is shown in the map menu in the scenario editor + +############ range for town menu starts STR_TOWN_MENU_TOWN_DIRECTORY :Списък с градовете -############ end of the 'Display map' dropdown STR_TOWN_MENU_FOUND_TOWN :Основи град -############ end of the 'Town' dropdown +############ range ends here ############ range for subsidies menu starts STR_SUBSIDIES_MENU_SUBSIDIES :Субсидии -STR_SUBSIDIES_MENU_GOAL :Настоящи цели ############ range ends here ############ range for graph menu starts @@ -395,10 +409,12 @@ STR_GRAPH_MENU_CARGO_PAYMENT_RATES :Тарифи з ############ 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 @@ -447,9 +463,12 @@ STR_ABOUT_MENU_ZOOMIN_SCREENSHOT :Напълно STR_ABOUT_MENU_DEFAULTZOOM_SCREENSHOT :Увеличение по подразбиране STR_ABOUT_MENU_GIANT_SCREENSHOT :Огромен Screenshot STR_ABOUT_MENU_ABOUT_OPENTTD :За 'OpenTTD' +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-ти @@ -465,22 +484,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 @@ -574,14 +611,14 @@ STR_PERFORMANCE_DETAIL_LOAN :{BLACK}Заем STR_PERFORMANCE_DETAIL_TOTAL :{BLACK}Общо: ############ End of order list STR_PERFORMANCE_DETAIL_VEHICLES_TOOLTIP :{BLACK}Брой превозни средства с печалба за миналата година.Това включва автомобили, влакове, кораби и самолети -STR_PERFORMANCE_DETAIL_STATIONS_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}Единици товар доставени през последната година STR_PERFORMANCE_DETAIL_CARGO_TOOLTIP :{BLACK}Брой различни видове товари доставени през последните 4 месеца STR_PERFORMANCE_DETAIL_MONEY_TOOLTIP :{BLACK}Сума пари тази компания има в банката -STR_PERFORMANCE_DETAIL_LOAN_TOOLTIP :{BLACK}Сума пари тази компания е всела от банката +STR_PERFORMANCE_DETAIL_LOAN_TOOLTIP :{BLACK}Големина на заема, който компанията е взела STR_PERFORMANCE_DETAIL_TOTAL_TOOLTIP :{BLACK}Натрупани точки от общия възможен брой # Music window @@ -642,7 +679,7 @@ STR_HIGHSCORE_PERFORMANCE_TITLE_CAPITALIST :Капитал STR_HIGHSCORE_PERFORMANCE_TITLE_MAGNATE :Магнат STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL :Завоевател STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY :Акула на века -STR_HIGHSCORE_NAME :{BIG_FONT}{PRESIDENT_NAME}, {COMPANY} +STR_HIGHSCORE_NAME :{PRESIDENT_NAME}, {COMPANY} STR_HIGHSCORE_STATS :{BIG_FONT}'{STRING}' ({COMMA}) STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{BLACK}{COMPANY} достигна статус '{STRING}'! STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{WHITE}{PRESIDENT_NAME} от {COMPANY} достигна статус '{STRING}'! @@ -662,6 +699,8 @@ STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRIES_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}Натисни върху вид индустрия за превключване на показването.Click on an industry type to toggle displaying it. Ctrl деактивира всички освен избраната. Ctrl отново за активиране на всички +STR_SMALLMAP_TOOLTIP_COMPANY_SELECTION :{BLACK}Натисни върху компания за показване/скриване на нейната собственост. Ctrl деактивира всички компании освен избраната. Ctrl отново за активиране на всички компании STR_SMALLMAP_LEGENDA_ROADS :{TINY_FONT}{BLACK}Пътища STR_SMALLMAP_LEGENDA_RAILROADS :{TINY_FONT}{BLACK}ЖП @@ -781,13 +820,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} е много остаряло @@ -795,6 +832,7 @@ STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD_AND :{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} спря поради провалена задача за преоборудване STR_NEWS_VEHICLE_AUTORENEW_FAILED :{WHITE}Неуспешна автоматична замяна на {VEHICLE}{}{STRING} @@ -817,6 +855,8 @@ STR_NEWS_SERVICE_SUBSIDY_AWARDED_TRIPLE :{BIG_FONT}{BLAC STR_NEWS_SERVICE_SUBSIDY_AWARDED_QUADRUPLE :{BIG_FONT}{BLACK}{STRING} спечели субсидия!!{}{}Превозът на {STRING} от {STRING} до {STRING} ще се заплаща четворно през следващата година! 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}Местните власти на {TOWN} подписаха договор с {STRING} за едногодишни ексклузивни транспортни права # Extra view window STR_EXTRA_VIEW_PORT_TITLE :{WHITE}Камера {COMMA} @@ -859,16 +899,16 @@ STR_GAME_OPTIONS_CURRENCY_TRY :турска л STR_GAME_OPTIONS_CURRENCY_SKK :словашка крона (SKK) STR_GAME_OPTIONS_CURRENCY_BRL :бразилски реал (BRL) STR_GAME_OPTIONS_CURRENCY_EEK :Естонски крони (EEK) +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 :Грузинско лари (ГЕЛ) +STR_GAME_OPTIONS_CURRENCY_IRR :Ирански Риал (ИРР) ############ end of currency region -STR_GAME_OPTIONS_MEASURING_UNITS_FRAME :{BLACK}Система мерни единици -STR_GAME_OPTIONS_MEASURING_UNITS_DROPDOWN_TOOLTIP :{BLACK}Избор на система от мерни единици ############ start of measuring units region -STR_GAME_OPTIONS_MEASURING_UNITS_IMPERIAL :имперскa -STR_GAME_OPTIONS_MEASURING_UNITS_METRIC :метричнa -STR_GAME_OPTIONS_MEASURING_UNITS_SI :международна (SI) ############ end of measuring units region STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Движение по пътищата @@ -906,11 +946,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}Избор на език @@ -922,9 +964,6 @@ 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}Изберете базов графичен набор STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} липсващи/повредени файлове @@ -970,6 +1009,8 @@ STR_CURRENCY_CHANGE_PARAMETER :{BLACK}Пром STR_DIFFICULTY_LEVEL_SETTING_MAXIMUM_NO_COMPETITORS :{LTBLUE}Максимален брой конкуренти: {ORANGE}{COMMA} STR_NONE :николко +STR_FUNDING_ONLY :Единствено финансиране +STR_MINIMAL :Минимален STR_NUM_VERY_LOW :Mн. малко STR_NUM_LOW :малко STR_NUM_NORMAL :нормално @@ -997,6 +1038,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_DISASTER_NONE :без STR_DISASTER_REDUCED :намалени @@ -1020,13 +1065,37 @@ STR_WARNING_NO_SUITABLE_AI :{WHITE}Няма # Advanced settings window STR_CONFIG_SETTING_CAPTION :{WHITE}Настройки за напреднали - - +STR_CONFIG_SETTING_FILTER_TITLE :{BLACK}Филтриращ низ: +STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}Разгъни всички +STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}Сгъни всички +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_COMPANY_INGAME :Настройки на компанията (запаметени в записа; влияят само на текущата компания) + +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_SETTINGS_NONE :{WHITE}- Нищо - STR_CONFIG_SETTING_OFF :изключено STR_CONFIG_SETTING_ON :включено -STR_CONFIG_SETTING_DISABLED :изключено +STR_CONFIG_SETTING_DISABLED :Изключено STR_CONFIG_SETTING_COMPANIES_OFF :изключен STR_CONFIG_SETTING_COMPANIES_OWN :само за собствената компания @@ -1048,64 +1117,155 @@ STR_CONFIG_SETTING_HORIZONTAL_POS_LEFT :ляво 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_INTEREST_RATE :Лихвен процент: {STRING} +STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Лихвен процент на заемите; също така контролира инфлацията ако е разрешена +STR_CONFIG_SETTING_RUNNING_COSTS :Цени за опериране на превозните средства: {STRING} +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_SUBSIDY_MULTIPLIER :Умножител на субсидии: {STRING} +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_TRAIN_REVERSING :Забрани обръщане на посоката на влакове в гарите: {STRING} +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_AUTOSLOPE :Тераформиране под постройки (autoslope): {STRING} +STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Разреши промяна на наклона на терена под постройки и пътища без необходимост от премахване STR_CONFIG_SETTING_CATCHMENT :По-реалистична зона за обслужване: {STRING} +STR_CONFIG_SETTING_CATCHMENT_HELPTEXT :Трява да имате различни размери каптирани зони за различните видове гари и летища STR_CONFIG_SETTING_EXTRADYNAMITE :Разрушаване на повече градска собственост: {STRING.n} +STR_CONFIG_SETTING_EXTRADYNAMITE_HELPTEXT :По-лесно премахване на градски структури и сгради +STR_CONFIG_SETTING_TRAIN_LENGTH :Максимална дължина на влаковете: {STRING} +STR_CONFIG_SETTING_TRAIN_LENGTH_HELPTEXT :Задава максимална дължина на влаковете +STR_CONFIG_SETTING_TILE_LENGTH :{COMMA} поле{P 0 "" та} STR_CONFIG_SETTING_SMOKE_AMOUNT :Количество на дим/искри от превозното средство: {STRING} +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_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_FORBID_90_DEG :Забрани 90 градусовите завои: {STRING} +STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :90 градусови завои, това е, когато хоризонтални релси са последвани от вертикални, следователно влакът прави 90 градусов завой когато преминава през тях, вместо нормалният 45 градусов завой при останалите комбинации от релси. Това се отнася и за завоите на корабите STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :Позволено е присъединяването на станции, които не се допират: {STRING} -STR_CONFIG_SETTING_IMPROVEDLOAD :Подобрен алгоритъм за зареждане: {STRING} -STR_CONFIG_SETTING_GRADUAL_LOADING :Постепенно зареждане на автомобилите: {STRING} +STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Позволява добавянето на части към дадена гара без директно на докосва вече съществуващи нейни части. Натиснете Ctrl+Click докато поставяте новите части STR_CONFIG_SETTING_INFLATION :Инфлация: {STRING} -STR_CONFIG_SETTING_SELECTGOODS :Доставяне на стока до станция само ако има търсене: {STRING} +STR_CONFIG_SETTING_INFLATION_HELPTEXT :Разрешава инфлация на икономиката, при което цените ще се покачват малко по-бързо от заплащането +STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH :Максимална дължина на мост: {STRING} +STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_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_NONE :нищо -STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :като други промишлености -STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :предстоящ +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_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_LEFT :От ляво +STR_CONFIG_SETTING_SIGNALSIDE_DRIVING_SIDE :От страната на движението +STR_CONFIG_SETTING_SIGNALSIDE_RIGHT :От дясно STR_CONFIG_SETTING_SHOWFINANCES :Финансов отчет в края на годината: {STRING.m} +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_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_AUTOSCROLL :Местене на екрана когато мишката е в края: {STRING.n} +STR_CONFIG_SETTING_AUTOSCROLL_HELPTEXT :Ако тази опция бъде активирана, viewports ще се "скролват" кога курсора на мишката доближи края на прозореца +STR_CONFIG_SETTING_AUTOSCROLL_DISABLED :Изключен +STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT_FULLSCREEN :Главна камера, само в режим на цял екран +STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT :Главна камера +STR_CONFIG_SETTING_AUTOSCROLL_EVERY_VIEWPORT :Всяка камера STR_CONFIG_SETTING_BRIBE :Подкупване на местната власт: {STRING} +STR_CONFIG_SETTING_BRIBE_HELPTEXT :Позволява на компаниите да се опитват да подкупят местните власти. Ако опитът за подкуп бъде разкрит от местен следовател, тази компания няма да може да действа в града за шест месеца STR_CONFIG_SETTING_ALLOW_EXCLUSIVE :Позволи купуване на изклучителни транспортни права: {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 :Позволява на компаниите да финансират градовете за поправка на пътищата, като така възпрепятстват движението в града STR_CONFIG_SETTING_ALLOW_GIVE_MONEY :Позволи изпращане на пари до други компаний: {STRING} +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_VALUE :1 / {COMMA} STR_CONFIG_SETTING_PLANE_CRASHES :Разбивания на самолети: {STRING} -STR_CONFIG_SETTING_PLANE_CRASHES_NONE :никакви -STR_CONFIG_SETTING_PLANE_CRASHES_REDUCED :намалени -STR_CONFIG_SETTING_PLANE_CRASHES_NORMAL :нормални +STR_CONFIG_SETTING_PLANE_CRASHES_HELPTEXT :Задава вероятността за катастрофа на летателно средство +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_HELPTEXT :Позволява строежа на ЖП линии пресичащи път притежаван от даден град STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :Преминаване през спирки на пътища, собственост на конкуренти: {STRING} -STR_CONFIG_SETTING_ADJACENT_STATIONS :Позвалявай допрени гари: {STRING} -STR_CONFIG_SETTING_DYNAMIC_ENGINES :Няколко NewGRF алгоритъма едновременно: {STRING} +STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT :Позволява строежа на ЖП линии пресичащи път притежаван от други компании STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}Промяната не е възможна, когато има превозни средства. +STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :Поддръжка на инфраструктурата: {STRING} +STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :Когато е разрешено, съществуват разходи за поддръжка на инфраструктурата. Разходите се увеличават пропорционално на размера на пътната мрежа, влияейки повече на големите компании отколкото на по-малките STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :Летишата не губят валидност: {STRING} +STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS_HELPTEXT :Разрешавайки тази настройка, всеки вид летище остава завинаги достъпно след неговото представяне +STR_CONFIG_SETTING_WARN_LOST_VEHICLE :Предупреди за загубено превозно средство: {STRING} +STR_CONFIG_SETTING_WARN_LOST_VEHICLE_HELPTEXT :Съобщава за превозни средства, които не могат да намерят пък към назначената цел STR_CONFIG_SETTING_ORDER_REVIEW :Преглед на заповеди: {STRING} -STR_CONFIG_SETTING_ORDER_REVIEW_OFF :изключен -STR_CONFIG_SETTING_ORDER_REVIEW_EXDEPOT :включен, но без спрените ПС -STR_CONFIG_SETTING_ORDER_REVIEW_ON :включен +STR_CONFIG_SETTING_ORDER_REVIEW_HELPTEXT :Ако тази опция бъде активирана, заповедите на превозните средства периодично се проверяват, ако има някакви очевидни проблеми ще получите съобщение, когато те бъдат открити +STR_CONFIG_SETTING_ORDER_REVIEW_OFF :Изключен +STR_CONFIG_SETTING_ORDER_REVIEW_EXDEPOT :Включен, но без спрените ПС +STR_CONFIG_SETTING_ORDER_REVIEW_ON :На всички превозни средства STR_CONFIG_SETTING_WARN_INCOME_LESS :Предупреждение ако превозното средство е на загуба: {STRING} +STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :Ако тази опция бъде активирана, ще получите съобщение ако някое от вашите превозни средства не е донесло печалба през изминалата календарна година STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :ПС не губят валидност: {STRING.n} +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_HELPTEXT :Относителна възраст на превозното средство за да се предприеме автоматично обновяване +STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_BEFORE :{COMMA} месец{P 0 "" а} преди +STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_AFTER :{COMMA} месец{P 0 "" а} след STR_CONFIG_SETTING_AUTORENEW_MONEY :Минимална сума за начало на подновяване: {STRING} +STR_CONFIG_SETTING_AUTORENEW_MONEY_HELPTEXT :Минимално количество пари, които трябва да останат в банката преди да могат вашите превозни средства да бъдат автоматично обновени +STR_CONFIG_SETTING_ERRMSG_DURATION :Продължителност на съобщението за грешка: {STRING} +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_DISABLED :Десен бутон STR_CONFIG_SETTING_POPULATION_IN_LABEL :Население в табелата на града: {STRING.n} +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_ORIGINAL :оригинален STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :тера-генезис +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 :много полегат @@ -1120,181 +1280,366 @@ 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_EDGES_NOT_EMPTY :{WHITE}Една или повече плочи в северния край не са празни STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}Един или повече от плочките в един от краищата не е вода +STR_CONFIG_SETTING_STATION_SPREAD :Максимално разпростиране на гарата: {STRING} +STR_CONFIG_SETTING_STATION_SPREAD_HELPTEXT :Максималната зона в която може да се разпростират индивидуалните части от дадена гара. По-голяма стойност може да забави играта STR_CONFIG_SETTING_SERVICEATHELIPAD :Автоматичен сервиз на хеликоптерите при кацане на хелипад: {STRING} +STR_CONFIG_SETTING_SERVICEATHELIPAD_HELPTEXT :Хеликоптерите да бъдат обслужвани след всяко тяхно кацане, дори и да няма депо на даденото летище STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR :Инструменти за терен при другите инструменти: {STRING.p} +STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR_HELPTEXT :Когато отворите лентата за строене на даден транспорт, автоматично да се отваря и лентата за тераформиране STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR :Цвят на земята на малката карта: {STRING} +STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :Цвят на земята на малката карта STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :Зелен STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :Тъмно зелен STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Виолетов STR_CONFIG_SETTING_REVERSE_SCROLLING :Обърната посока на преместване: {STRING.n} +STR_CONFIG_SETTING_REVERSE_SCROLLING_HELPTEXT :Когато опцията бъде активирана, когато "скролвате" картата с десния бутон на мишката ще местите картата, когато опцията не е активирана, мишката ще мести камерата STR_CONFIG_SETTING_SMOOTH_SCROLLING :Плавно местене на камера: {STRING.n} +STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Ако опцията е активирана, когато натиснете на малката карта камерата ще се придвижи до там плавно, ако не е активирана камерата ще отиде там директно STR_CONFIG_SETTING_MEASURE_TOOLTIP :Подсказка за разстояние при строене: {STRING.f} +STR_CONFIG_SETTING_MEASURE_TOOLTIP_HELPTEXT :Показване на разстояните между плочките и разликите във височините им докато строите 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 :Разговор с отбора при натискане на : {STRING.n} +STR_CONFIG_SETTING_PREFER_TEAMCHAT_HELPTEXT :Размени копчетата на чата на компанията и общия чат на респективно на STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING :Колелото на мишката: {STRING} +STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING_HELPTEXT :Разрешава придвижването с колелцата на мишката за двете направления STR_CONFIG_SETTING_SCROLLWHEEL_ZOOM :променя увеличението STR_CONFIG_SETTING_SCROLLWHEEL_SCROLL :превърта картата STR_CONFIG_SETTING_SCROLLWHEEL_OFF :не прави нищо STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER :Превъртане на картата: {STRING} клетк{P 0:2 а и} +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 :Команда-щракане STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Контрол-щракане 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 :дълъг (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_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_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_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_HELPTEXT :Разрешава използването на разширени пътни листи при групиране на ПС STR_CONFIG_SETTING_LOADING_INDICATORS :Товарни индикатори: {STRING} +STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :Изберете дали индикаторът за зареждане се показва над превозните средства, които товарят и разтоварват STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :Разписанието в цикли вместо дни: {STRING.n} +STR_CONFIG_SETTING_TIMETABLE_IN_TICKS_HELPTEXT :Показва времената за придвижване в таблиците в игрови единици, вместо в дни 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_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_MOST_USED :най-използваните 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 :Остави отворени инструментите за строеж на мостове, тунели и др. след като са използвани STR_CONFIG_SETTING_EXPENSES_LAYOUT :Групирай разходите във финансовия прозорец на компанията: {STRING} - +STR_CONFIG_SETTING_EXPENSES_LAYOUT_HELPTEXT :Изберете оформлението на прозореца за разходите на компанията + +STR_CONFIG_SETTING_SOUND_TICKER :Новинарски тикер: {STRING} +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_CONFIRM :Конструкция: {STRING} +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_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_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_HELPTEXT :Максимално количество пътни превозни средства на компанията STR_CONFIG_SETTING_MAX_AIRCRAFT :Макс. брой самолети за компания: {STRING} +STR_CONFIG_SETTING_MAX_AIRCRAFT_HELPTEXT :Максимално количество самолети на компанията 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_AIRCRAFT :Премахване на летателните машини за компютърния играч: {STRING} +STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT_HELPTEXT :Активирането на тази опция, прави невъзможно управляваните от ИИ играчи да строят въздушни превозни средства STR_CONFIG_SETTING_AI_BUILDS_SHIPS :Премахване на корабите за компютърния играч: {STRING} +STR_CONFIG_SETTING_AI_BUILDS_SHIPS_HELPTEXT :Активирането на тази опция, прави невъзможно управляваните от ИИ играчи да строят кораби +STR_CONFIG_SETTING_AI_PROFILE :Профил на настройки по подразбиране: {STRING} +STR_CONFIG_SETTING_AI_PROFILE_HELPTEXT :Избира кои профилни опции да се използват за случайните ИИ или за началните стойности, когато добавяте ново ИИ или Game Script STR_CONFIG_SETTING_AI_PROFILE_EASY :Лесно STR_CONFIG_SETTING_AI_PROFILE_MEDIUM :Средно STR_CONFIG_SETTING_AI_PROFILE_HARD :Трудно STR_CONFIG_SETTING_AI_IN_MULTIPLAYER :Позволи AI в мрежова игра: {STRING} +STR_CONFIG_SETTING_AI_IN_MULTIPLAYER_HELPTEXT :Разреши ИИ играчите да участват в мрежови игри +STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES :#opcodes before scripts are suspended: {STRING} +STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES_HELPTEXT :Максималният брой изчислителни стъпки, които даден script може да направи за един ход STR_CONFIG_SETTING_SERVINT_ISPERCENT :Интервал на сервиз е в проценти: {STRING.n} +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_DISABLED :Изключен +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.n} +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_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_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 :Обобщение 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_ALLOW_SHARES :Разреши купуване на акции от други компании: {STRING} +STR_CONFIG_SETTING_ALLOW_SHARES_HELPTEXT :Ако тази опция бъде активирана, ще можете да купувате и продавате дялове на компании. Това ще бъде възможно единствено когато дадената компания достигне определена възраст +STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE :Процент от leg profit to pay in feeder systems: {STRING} +STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE_HELPTEXT :Процент от приходите, който се плаща на intermediate legs in feeder systems, давайки ви повече контрол върху приходите +STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY :При влачене, поставя сигнализация на всеки: {STRING} +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 и влачите мишката, за да поставяте сигнали. Ако е изключено, сигналите ще се поставят около тунели или мостове зада се избегнат дългите отсечки без сигнали. Ако е включено, сигналите ще се поставят на всеки Х плочки, правейки поставянето на сигнали паралелно с поставянето на релси по-лесно STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :Поставяне на семафори преди: {STRING} година -STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI :Инструменти за сигналите: {STRING.p} +STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE_HELPTEXT :Задайте година, когато електрическите сигнали ще бъдат използвани при ЖП линиите. Преди тази година, ще бъдат използвани сигнали, които не са електрически ( те имат абсолютно същата функция, но изглеждат по различен начин) +STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI :Покажи интерфейса за сигналите: {STRING.p} +STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI_HELPTEXT :Покажи прозорец за избирането на видове сигнали за строене, вместо само ротация на сигналите чрез Ctrl+Click 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+clicking на строенето на сигнал 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_DEFAULT :default -STR_CONFIG_SETTING_TOWN_LAYOUT_BETTER_ROADS :по-добри пътища +STR_CONFIG_SETTING_TOWN_LAYOUT_HELPTEXT :Тип на пътната мрежа в градовете +STR_CONFIG_SETTING_TOWN_LAYOUT_DEFAULT :Оригинален +STR_CONFIG_SETTING_TOWN_LAYOUT_BETTER_ROADS :По-добри пътища STR_CONFIG_SETTING_TOWN_LAYOUT_2X2_GRID :2х2 мрежа STR_CONFIG_SETTING_TOWN_LAYOUT_3X3_GRID :3х3 мрежа -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} +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_FORBIDDEN :забранено -STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :разрешено -STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :разрешено с избираем план на града +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 :Разрешено с избираем план на града STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT :Разпределяне на дърветата в гората: {STRING} -STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NONE :без {RED}(разваля дъскорезницата) -STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_RAINFOREST :само в дъждовни гори -STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_ALL :навсякъде +STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_HELPTEXT :Контролирайте случайното появяване на дървета по време на игра. Това може да засегне промишленостите, които зависят от растежа на дървета, като например дърводелниците +STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NONE :Без {RED}(разваля дъскорезницата) +STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_RAINFOREST :Само в дъждовни гори +STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_ALL :Навсякъде STR_CONFIG_SETTING_TOOLBAR_POS :Позиция на лентата за инструменти: {STRING} +STR_CONFIG_SETTING_TOOLBAR_POS_HELPTEXT :Хоризонтално позициониране на основната лента в горната част на екрана STR_CONFIG_SETTING_STATUSBAR_POS :Разположение на лентата за състоянието: {STRING} +STR_CONFIG_SETTING_STATUSBAR_POS_HELPTEXT :Хоризонтално позициониране на статус лентата в най-долната част на екрана +STR_CONFIG_SETTING_SNAP_RADIUS :Window snap radius: {STRING} +STR_CONFIG_SETTING_SNAP_RADIUS_HELPTEXT :Разстояние между прозорците, преди прозорецът да бъде автоматично добавен към близкостоящите до него прозорци +STR_CONFIG_SETTING_SNAP_RADIUS_VALUE :{COMMA} пиксел{P 0 "" s} +STR_CONFIG_SETTING_SNAP_RADIUS_DISABLED :Изключен STR_CONFIG_SETTING_SOFT_LIMIT :Максимално количество на прозореците без залепване: {STRING} +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_LVL_MIN :4x +STR_CONFIG_SETTING_ZOOM_LVL_IN_2X :2x +STR_CONFIG_SETTING_ZOOM_LVL_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 :Скорост на разтеж на града: {STRING} +STR_CONFIG_SETTING_TOWN_GROWTH_HELPTEXT :Скорост на растеж на града STR_CONFIG_SETTING_TOWN_GROWTH_NONE :Никаква STR_CONFIG_SETTING_TOWN_GROWTH_SLOW :Бавна STR_CONFIG_SETTING_TOWN_GROWTH_NORMAL :Нормална STR_CONFIG_SETTING_TOWN_GROWTH_FAST :Бърза STR_CONFIG_SETTING_TOWN_GROWTH_VERY_FAST :Много бърза +STR_CONFIG_SETTING_LARGER_TOWNS :Количество на градовете които ще станат мегаполиси: {STRING} +STR_CONFIG_SETTING_LARGER_TOWNS_HELPTEXT :Количество на градовете които ще станат мегаполиси, които са по-големи и нарастват по-бързо +STR_CONFIG_SETTING_LARGER_TOWNS_VALUE :1 на {COMMA} +STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :Без 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_CITY_SIZE_MULTIPLIER_HELPTEXT :Относителен размер на мегаполисите в сравнение с градовете в началото на играта + + +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 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_SHIPS :Пътенамирач за кораби: {STRING} +STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT :Маршрутизатор използван за кораби +STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :Автоматично обръщане при сигнали: {STRING} +STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT :Позволява на влаковете да обръщат ако са чакали твърде дълго STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}Промяна стойноста на настройка # Config errors +STR_CONFIG_ERROR :{WHITE}Грешка във файла с настройки... +STR_CONFIG_ERROR_ARRAY :{WHITE}... грешка в масива '{STRING}' +STR_CONFIG_ERROR_INVALID_VALUE :{WHITE}... грешна стойност '{STRING}' за '{STRING}' +STR_CONFIG_ERROR_TRAILING_CHARACTERS :{WHITE}... крайни символи в низа '{STRING}' +STR_CONFIG_ERROR_DUPLICATE_GRFID :{WHITE}... игнорира NewGRF '{STRING}': дублиран GRF ID с '{STRING}' +STR_CONFIG_ERROR_INVALID_GRF :{WHITE}... игнорира невалидиня NewGRF '{STRING}': {STRING} +STR_CONFIG_ERROR_INVALID_GRF_NOT_FOUND :не е открит +STR_CONFIG_ERROR_INVALID_GRF_UNSAFE :не е безопасно за статична употреба +STR_CONFIG_ERROR_INVALID_GRF_SYSTEM :системен NewGRF +STR_CONFIG_ERROR_INVALID_GRF_INCOMPATIBLE :несъвместимо с тази версия на OpenTTD +STR_CONFIG_ERROR_INVALID_GRF_UNKNOWN :неизвестна +STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_LEVEL :{WHITE}... степен на компресия '{STRING}' е невалидна +STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_ALGORITHM :{WHITE}... savegame форматът '{STRING}' не е достъпен. Връщане към '{STRING}' +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} @@ -1307,10 +1652,12 @@ STR_INTRO_SCENARIO_EDITOR :{BLACK}Реда 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_QUIT :{BLACK}Излез +STR_INTRO_SCRIPT_SETTINGS :{BLACK}ИИ/Игрови настройки +STR_INTRO_QUIT :{BLACK}Изход STR_INTRO_TOOLTIP_NEW_GAME :{BLACK}Започни нова игра. Ctrl+Click пропуска конфигурацията на картата STR_INTRO_TOOLTIP_LOAD_GAME :{BLACK}Отвори запасена игра @@ -1325,11 +1672,14 @@ 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_ONLINE_CONTENT :{BLACK}Провери за ново съдържание за сваляне -STR_INTRO_TOOLTIP_QUIT :{BLACK}Излез от играта 'OpenTTD' +STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}Показва настройките на ИИ +STR_INTRO_TOOLTIP_QUIT :{BLACK}Изход от 'OpenTTD' +STR_INTRO_TRANSLATION :{BLACK}На този превод му липсват {NUM} string{P "" s}. Помогнете на OpenTTD като се запишете за преводач. Вижте readme.txt за повече информация. # Quit window STR_QUIT_CAPTION :{WHITE}Изход @@ -1379,8 +1729,8 @@ 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}Изберете основния цвят за избранта схема -STR_LIVERY_SECONDARY_TOOLTIP :{BLACK}Изберете допълнителен жвят за избраната схема +STR_LIVERY_PRIMARY_TOOLTIP :{BLACK}Изберете основния цвят за избраната схема. Ctrl присвоява цвета за всички схеми +STR_LIVERY_SECONDARY_TOOLTIP :{BLACK}Изберете допълнителен цвят за избраната схема. Ctrl присвоява цвета за всички схеми STR_LIVERY_PANEL_TOOLTIP :{BLACK}Изберете цветова схема за промяна или няколко - CTRL+щрак. Натиснете в кутията за да превключите използването на схемата STR_LIVERY_DEFAULT :Стандартен Ливъри @@ -1411,6 +1761,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}Избери мъжки лица @@ -1466,10 +1817,10 @@ STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}Cмен # Network server list STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}Онлайн играчи -STR_NETWORK_SERVER_LIST_CONNECTION :{BLACK}Връзка: -STR_NETWORK_SERVER_LIST_CONNECTION_TOOLTIP :{BLACK}Избор между игра в интернет или локална мрежа (LAN) -STR_NETWORK_SERVER_LIST_LAN :LAN -STR_NETWORK_SERVER_LIST_INTERNET :Интернет +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}Чрез това име другите играчи ще ви идентифицират @@ -1528,8 +1879,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_LAN_INTERNET :LAN / Интернет -STR_NETWORK_START_SERVER_INTERNET_ADVERTISE :Интернет (реклама) +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}Избор на максималния брой клиенти. Не всички слотове трябва да се попълнят @@ -1650,6 +2000,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}Незапазвай паролата @@ -1698,7 +2049,9 @@ STR_NETWORK_ERROR_KICKED :{WHITE}Бяхт 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_COMPUTER :{WHITE}Твоя компютър е твърде бавен за да поддържа актуална връзка със сървъра +STR_NETWORK_ERROR_TIMEOUT_MAP :{WHITE}Отне твърде много време за изтегляне на картата +STR_NETWORK_ERROR_TIMEOUT_JOIN :{WHITE}Отне твърде много време за свързване със сървъра ############ Leave those lines in this order!! STR_NETWORK_ERROR_CLIENT_GENERAL :обща грешка @@ -1717,6 +2070,10 @@ STR_NETWORK_ERROR_CLIENT_KICKED :изхрърл 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_MAP :изтеглянето на картата отне много време +STR_NETWORK_ERROR_CLIENT_TIMEOUT_JOIN :обработката на картата отне много време ############ End of leave-in-this-order STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION_CAPTION :{WHITE}Възможна загуба на връзката @@ -1762,6 +2119,9 @@ 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_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}Посети уебсайта за това съдържание @@ -1813,10 +2173,14 @@ 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}Липсват графики +STR_MISSING_GRAPHICS_SET_MESSAGE :{BLACK}OpenTTD изисква графики, които не могат да бъдат намерени. Ще позволите ли на OpenTTD да изтегли и инсталира тези графики? +STR_MISSING_GRAPHICS_YES_DOWNLOAD :{BLACK}Да, изтегли графиките +STR_MISSING_GRAPHICS_NO_QUIT :{BLACK}Не, изход от OpenTTD # Transparency settings window STR_TRANSPARENCY_CAPTION :{WHITE}Настройки на прозрачност -STR_TRANSPARENT_SIGNS_TOOLTIP :{BLACK}Използвай прозрачност за знаци на гара. Ctrl+Click за заключване +STR_TRANSPARENT_SIGNS_TOOLTIP :{BLACK}Превключва прозрачност за знаци. Ctrl за заключване STR_TRANSPARENT_TREES_TOOLTIP :{BLACK}Използвай прозрачност за дървета. Ctrl+Click за заключване STR_TRANSPARENT_HOUSES_TOOLTIP :{BLACK}Използвай прозрачност за къщи. Ctrl+Click за заключване STR_TRANSPARENT_INDUSTRIES_TOOLTIP :{BLACK}Използвай прозрачност за промишленост. Ctrl+Click за заключване @@ -1827,6 +2191,10 @@ STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}Акти STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Вклучи прозрачност за товарещи указатели. Ctrl+Click за заключване STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}Направи обектите невидими вместо прозрачни +# Linkgraph legend window + +# Linkgraph legend window and linkgraph legend in smallmap + # Base for station construction window(s) STR_STATION_BUILD_COVERAGE_AREA_TITLE :{BLACK}Маркиране на Отбелязаната зона STR_STATION_BUILD_COVERAGE_OFF :{BLACK}Изключен @@ -1849,17 +2217,21 @@ 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 показва семафорната/светлинната сигнализация. -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 строеж/цена за построяване +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 :Електрифициран ЖП път +STR_RAIL_NAME_MONORAIL :Монорелсов +STR_RAIL_NAME_MAGLEV :Маглев # Rail depot construction window STR_BUILD_DEPOT_TRAIN_ORIENTATION_CAPTION :{WHITE}Посока на входа на влаковото депо @@ -1889,18 +2261,18 @@ 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_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_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-click ще смени съществуващия вариант. +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}Увеличава плътноста на сигналите при влачене @@ -1924,21 +2296,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}Превключване строене/разрушаване на трамвайни консктрукции @@ -1953,20 +2325,20 @@ 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}Направи реки. @@ -1979,7 +2351,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}Избор на летище @@ -2006,14 +2378,14 @@ STR_STATION_BUILD_NOISE :{BLACK}Прои # Landscaping toolbar STR_LANDSCAPING_TOOLBAR :{WHITE}Тераформиране -STR_LANDSCAPING_TOOLTIP_LOWER_A_CORNER_OF_LAND :{BLACK}Понижи ъгъл от земята. Влаченето понижава първия маркиран ъгъл и изравнява останалия терен към вече понижения терен. Ctrl за маркиране по диагонал -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} плочки @@ -2023,9 +2395,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}Засаждане дървета на произволни места @@ -2046,9 +2418,9 @@ 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_RANDOM_TOWN_TOOLTIP :{BLACK}Основаване на град на произволно място STR_FOUND_TOWN_MANY_RANDOM_TOWNS :{BLACK}Много случайни градове STR_FOUND_TOWN_RANDOM_TOWNS_TOOLTIP :{BLACK}Покриване на картата със случайно поставени градове @@ -2097,6 +2469,10 @@ 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}Изберете товар +STR_INDUSTRY_CARGOES_SELECT_CARGO_TOOLTIP :{BLACK}Изберете товар за показване +STR_INDUSTRY_CARGOES_SELECT_INDUSTRY :{BLACK}Изберете индустрия +STR_INDUSTRY_CARGOES_SELECT_INDUSTRY_TOOLTIP :{BLACK}Изберете индустрия за показване # Land area window STR_LAND_AREA_INFORMATION_CAPTION :{WHITE}Информация за земята @@ -2131,6 +2507,29 @@ STR_LAI_CLEAR_DESCRIPTION_FIELDS :Поля 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_TRAIN_DEPOT :{STRING} влаково депо STR_LAI_ROAD_DESCRIPTION_ROAD :път STR_LAI_ROAD_DESCRIPTION_ROAD_WITH_STREETLIGHTS :Асфалтов път с улично осветление @@ -2194,7 +2593,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-2012 The OpenTTD team +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2014 The OpenTTD team # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Запази играта @@ -2202,6 +2601,7 @@ STR_SAVELOAD_LOAD_CAPTION :{WHITE}Отва 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_BYTES_FREE :{BLACK}{BYTES} свободно STR_SAVELOAD_LIST_TOOLTIP :{BLACK}Списък с хард-дисковете, директориите и запазените игри @@ -2222,6 +2622,7 @@ STR_SAVELOAD_OSKTITLE :{BLACK}Въве # World generation STR_MAPGEN_WORLD_GENERATION_CAPTION :{WHITE}Световна генерация STR_MAPGEN_MAPSIZE :{BLACK}Размер: +STR_MAPGEN_MAPSIZE_TOOLTIP :{BLACK}Изберете големината на картата в полета. Броя на наличните полета ще е малко по-малък. STR_MAPGEN_BY :{BLACK}* STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Брой градове: STR_MAPGEN_DATE :{BLACK}Дата: @@ -2229,14 +2630,11 @@ 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}Тип на терен: STR_MAPGEN_QUANTITY_OF_SEA_LAKES :{BLACK}Морско ниво: +STR_MAPGEN_QUANTITY_OF_RIVERS :{BLACK}Реки: STR_MAPGEN_SMOOTHNESS :{BLACK}Полегатост: STR_MAPGEN_VARIETY :{BLACK}Разнообразност: STR_MAPGEN_GENERATE :{WHITE}Генериране @@ -2258,7 +2656,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}Промяна началната година @@ -2281,6 +2678,7 @@ STR_GENERATION_ABORT_MESSAGE :{YELLOW}Иск STR_GENERATION_PROGRESS :{WHITE}{NUM}% готово STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / {NUM} STR_GENERATION_WORLD_GENERATION :{BLACK}Генерация на свят +STR_GENERATION_RIVER_GENERATION :{BLACK}Създаване на река STR_GENERATION_TREE_GENERATION :{BLACK}Генерация на дърва STR_GENERATION_OBJECT_GENERATION :{BLACK}Генерация на статични STR_GENERATION_CLEARING_TILES :{BLACK}Създаване на твърда и скална повърност @@ -2312,7 +2710,7 @@ 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_FILE_TOOLTIP :{BLACK}Списък на инсталираните NewGRF файлове. Изберете файл за да промените параметрите му +STR_NEWGRF_SETTINGS_FILE_TOOLTIP :{BLACK}Списък на инсталираните NewGRF файлове STR_NEWGRF_SETTINGS_SET_PARAMETERS :{BLACK}Настройване на параметрите STR_NEWGRF_SETTINGS_SHOW_PARAMETERS :{BLACK}Покажи параметрите @@ -2336,6 +2734,8 @@ STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}Не е н STR_NEWGRF_SETTINGS_DISABLED :{RED}Изключен STR_NEWGRF_SETTINGS_INCOMPATIBLE :{G=n}{RED}Несъвместимо с тази версия на OpenTTD +# NewGRF save preset window + # NewGRF parameters window STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}Промени параметрите на новите графики (NewGRF) STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Затвори @@ -2357,6 +2757,7 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :Вид желе STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}Параметър на променливата 60+x на NewGRF (hexadecimal) # Sprite aligner window +STR_SPRITE_ALIGNER_CAPTION :{WHITE}Aligning sprite {COMMA} ({STRING}) STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Следващ sprite STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Продължи към следващия нормален sprite, Пропускайки всички псевдо/прерисувани/текстови sprite и ги облечи в края STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Иди на sprite @@ -2376,7 +2777,7 @@ STR_NEWGRF_ERROR_MSG_INFO :{SILVER}{STRING STR_NEWGRF_ERROR_MSG_WARNING :{RED}Внимание: {SILVER}{STRING} STR_NEWGRF_ERROR_MSG_ERROR :{RED}Грешка: {SILVER}{STRING} STR_NEWGRF_ERROR_MSG_FATAL :{RED}Критично: {SILVER}{STRING} -STR_NEWGRF_ERROR_FATAL_POPUP :{WHITE}Фатална грешка в NewGRF е открита : {}{STRING} +STR_NEWGRF_ERROR_FATAL_POPUP :{WHITE}Настъпи фатална грешка в NewGRF: {}{STRING} STR_NEWGRF_ERROR_VERSION_NUMBER :{1:STRING} няма да работи с версията на TTDPatch указана от OpenTTD. STR_NEWGRF_ERROR_DOS_OR_WINDOWS :{1:STRING} е за {STRING} версията на TTD. STR_NEWGRF_ERROR_UNSET_SWITCH :{1:STRING} е проектиран да работи с {STRING} @@ -2387,8 +2788,17 @@ STR_NEWGRF_ERROR_OTTD_VERSION_NUMBER :{1:STRING} из STR_NEWGRF_ERROR_AFTER_TRANSLATED_FILE :GRF файлат беше предназначен да преведе STR_NEWGRF_ERROR_TOO_MANY_NEWGRFS_LOADED :Прекалено много графики (NewGRF) са заредени. STR_NEWGRF_ERROR_STATIC_GRF_CAUSES_DESYNC :Зареждане на {1:STRING} като статичен NewGRF заедно с {STRING} може да доведе до проблеми. +STR_NEWGRF_ERROR_UNEXPECTED_SPRITE :Unexpected sprite (sprite {3:NUM}) +STR_NEWGRF_ERROR_UNKNOWN_PROPERTY :Unknown Action 0 property {4:HEX} (sprite {3:NUM}) +STR_NEWGRF_ERROR_INVALID_ID :Опит за използване на невалидно ID (sprite {3:NUM}) STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} съдържа повреден обект. Вскички повредени обекти ще бъдат показани като червена въпросителна (?). +STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Contains multiple Action 8 entries (sprite {3:NUM}) +STR_NEWGRF_ERROR_READ_BOUNDS :Read past end of pseudo-sprite (sprite {3:NUM}) STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}Текущите основни графики имат празни картинки.{}Моля обновете си основните графики. +STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}Текущо използвания графичен сет има липсващи спрайтове.{}Моля обновете графичния сет.{}Тъй като играете {YELLOW}версия на OpenTTD в процес на разработка{WHITE}, може да се нуждаете и от {YELLOW}версията на графичния сет, която е в разработка{WHITE} +STR_NEWGRF_ERROR_GRM_FAILED :Изискваните GRF resources не са на разположение (sprite {3:NUM}) +STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} беше изключено от {2:STRING} +STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Invalid/unknown sprite layout format (sprite {3:NUM}) # NewGRF related 'general' warnings STR_NEWGRF_POPUP_CAUTION_CAPTION :{WHITE}Внимание! @@ -2396,6 +2806,7 @@ STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}На п STR_NEWGRF_DUPLICATE_GRFID :{WHITE}Не може да се добави файл: дупликиран GRF ID 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 файлове са изключени @@ -2417,6 +2828,7 @@ STR_BROKEN_VEHICLE_LENGTH :{WHITE}Влак STR_NEWGRF_BUGGY :{WHITE}NewGRF '{STRING}' дава невярна информация. STR_NEWGRF_BUGGY_ARTICULATED_CARGO :{WHITE}Информация за товар/преобразувания на '{1:ENGINE}' се различава от листа с покупките. Това може да доведе до грешка при подновяване/преустройване STR_NEWGRF_BUGGY_ENDLESS_PRODUCTION_CALLBACK :{WHITE}'{1:STRING}' предизвика вечен цикъл в callback на производството +STR_NEWGRF_BUGGY_UNKNOWN_CALLBACK_RESULT :{WHITE}Подизпълнение {1:HEX} върна неизвестен/невалиден резултат {2:HEX} # 'User removed essential NewGRFs'-placeholders for stuff without specs STR_NEWGRF_INVALID_CARGO :<невалиден товар> @@ -2425,10 +2837,19 @@ 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-и. Може да отнеме време, в зависимост от количеството... +STR_NEWGRF_SCAN_STATUS :{BLACK}{NUM} NewGRF{P "" s} сканирани от общо {NUM} NewGRF{P "" s} +STR_NEWGRF_SCAN_ARCHIVES :Търси за архиви # Sign list window STR_SIGN_LIST_CAPTION :{WHITE}Списък с табели - {COMMA} Табел{P а и} +STR_SIGN_LIST_MATCH_CASE :{BLACK}Съвпадане на регистъра +STR_SIGN_LIST_MATCH_CASE_TOOLTIP :{BLACK}Превключва съвпадение на регистъра (малки/големи букви) когато сравнява имената с филтъра # Sign window STR_EDIT_SIGN_CAPTION :{WHITE}Промяна текста на знака @@ -2441,7 +2862,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+Click отваря нова гледна точка от позицията на града. +STR_TOWN_DIRECTORY_LIST_TOOLTIP :{BLACK}Имена на градовете - натисни на името за да фокусираш този град. Ctrl отваря нов изглед към града. STR_TOWN_POPULATION :{BLACK}Обща популация на картата: {COMMA} # Town view window @@ -2453,6 +2874,12 @@ STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}Поща 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_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_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 отваря прозорец на нов изглед върху града. STR_TOWN_VIEW_LOCAL_AUTHORITY_BUTTON :{BLACK}Местни власти @@ -2494,14 +2921,19 @@ STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT :{YELLOW}Пок STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW} Подкупването на местната власт за да увеличи рейтинга носи огромен риск ако бъдете хванати.{} Цена: {CURRENCY_LONG} # Goal window -STR_GOALS_CAPTION :{WHITE}Цели +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+Click отваря нов прозорец центриран на фабрика/град/плочка # Goal question window STR_GOAL_QUESTION_CAPTION_QUESTION :Въпрос +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 :Недобре @@ -2530,7 +2962,10 @@ STR_SUBSIDIES_OFFERED_FROM_TO :{ORANGE}{STRING STR_SUBSIDIES_NONE :{ORANGE}- Николко - STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}Субсидирани превози на: STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING} от {STRING} до {STRING}{YELLOW} ({COMPANY}{YELLOW}, до {DATE_SHORT}) -STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Кликни върху услугата, за да се фокусира върху индустрията/града +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}Имена на станции - натиснете върху името, за да фиксирате главния прозорец върху станцията @@ -2545,19 +2980,22 @@ 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}Покажи списък с приетите товари STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}Приема: {WHITE}{CARGO_LIST} +STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Тази станция има специални транспортни привилегии за града +STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} закупи специални транспортни привилегии за града. STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Рейтинги STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Покажи нивото на обслужване -STR_STATION_VIEW_CARGO_RATINGS_TITLE :{BLACK}Местно ниво на обслужване: -STR_STATION_VIEW_CARGO_RATING :{WHITE}{STRING}: {YELLOW}{STRING} ({COMMA}%) + + +STR_STATION_VIEW_GROUP_D_V_S :Посока-през-Източника ############ range for rating starts STR_CARGO_RATING_APPALLING :Плачевно @@ -2580,6 +3018,8 @@ STR_STATION_VIEW_SCHEDULED_SHIPS_TOOLTIP :{BLACK}Пока 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} @@ -2618,6 +3058,7 @@ STR_FINANCES_BORROW_BUTTON :{BLACK}Изте STR_FINANCES_BORROW_TOOLTIP :{BLACK}Увеличи размера на заема. Ctrl+Click заема възможно най много STR_FINANCES_REPAY_BUTTON :{BLACK}Изплати {CURRENCY_LONG} STR_FINANCES_REPAY_TOOLTIP :{BLACK}Изплати част от заема. Ctrl+Click изплаща възможно най-много +STR_FINANCES_INFRASTRUCTURE_BUTTON :{BLACK}Инфраструктура # Company view STR_COMPANY_VIEW_CAPTION :{WHITE}{COMPANY} {BLACK}{COMPANY_NUM} @@ -2633,13 +3074,22 @@ 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} релсов{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} част{P "" и} на станци +STR_COMPANY_VIEW_INFRASTRUCTURE_AIRPORT :{WHITE}{COMMA} летищ{P е а} +STR_COMPANY_VIEW_INFRASTRUCTURE_NONE :{WHITE}Нищо STR_COMPANY_VIEW_BUILD_HQ_BUTTON :{BLACK}Построй Централен Офис 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}Детайлна бройка на инфраструктурите STR_COMPANY_VIEW_NEW_FACE_BUTTON :{BLACK}Ново лице STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}Избери друго лице за управителя @@ -2652,8 +3102,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 показва цената на 25% от акциите +STR_COMPANY_VIEW_SELL_SHARE_TOOLTIP :{BLACK}Продай 25% от акциите на тази компания. Shift показва цената на 25% от акциите STR_COMPANY_VIEW_COMPANY_NAME_QUERY_CAPTION :Име на компанията STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :Име на управителя @@ -2661,6 +3111,18 @@ STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :Име на у STR_BUY_COMPANY_MESSAGE :{WHITE}Ние търсим транспортна компания, която да поеме нашата компания.{}{}Do you want to purchase {COMPANY} for {CURRENCY_LONG}? # Company infrastructure window +STR_COMPANY_INFRASTRUCTURE_VIEW_CAPTION :{WHITE}Инфраструктура на {COMPANY} +STR_COMPANY_INFRASTRUCTURE_VIEW_RAIL_SECT :{GOLD}Релсови части: +STR_COMPANY_INFRASTRUCTURE_VIEW_SIGNALS :{WHITE}Сигнали +STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD_SECT :{GOLD}Пътни части: +STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD :{WHITE}Път +STR_COMPANY_INFRASTRUCTURE_VIEW_TRAMWAY :{WHITE}Трамвай +STR_COMPANY_INFRASTRUCTURE_VIEW_WATER_SECT :{GOLD}Водни части: +STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS :{WHITE}Канали +STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}Станции: +STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}Части на станции +STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}Летища +STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL :{WHITE}{CURRENCY_LONG}/година # Industry directory STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}Индустрии @@ -2676,6 +3138,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} @@ -2744,6 +3207,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 :Премахни всички превозни средсва @@ -2763,6 +3227,8 @@ STR_BUY_VEHICLE_AIRCRAFT_CAPTION :Нова лет STR_PURCHASE_INFO_COST_WEIGHT :{BLACK}Цена: {GOLD}{CURRENCY_LONG}{BLACK} Тегло: {GOLD}{WEIGHT_SHORT} STR_PURCHASE_INFO_SPEED_POWER :{BLACK}Скорост: {GOLD}{VELOCITY}{BLACK} Мощност: {GOLD}{POWER} STR_PURCHASE_INFO_SPEED :{BLACK}Скорост: {GOLD}{VELOCITY} +STR_PURCHASE_INFO_SPEED_OCEAN :{BLACK}Скорост в океана: {GOLD}{VELOCITY} +STR_PURCHASE_INFO_SPEED_CANAL :{BLACK}Скорост в канал/река: {GOLD}{VELOCITY} STR_PURCHASE_INFO_RUNNINGCOST :{BLACK}Разход: {GOLD}{CURRENCY_LONG}/год. STR_PURCHASE_INFO_CAPACITY :{BLACK}Капацитет: {GOLD}{CARGO_LONG} {STRING} STR_PURCHASE_INFO_REFITTABLE :(преустроим) @@ -2777,6 +3243,7 @@ STR_PURCHASE_INFO_REFITTABLE_TO :{BLACK}Прео STR_PURCHASE_INFO_ALL_TYPES :Всички видове товар STR_PURCHASE_INFO_ALL_BUT :Всичко освен {CARGO_LIST} STR_PURCHASE_INFO_MAX_TE :{BLACK}Макс. теглеща сила: {GOLD}{FORCE} +STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Обхват: {GOLD}{COMMA} полета STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Списък с влакове - натисни върху влак за информация STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Списък с избор на МПС-та - натисни върху МПС за информация @@ -2788,10 +3255,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}Преименувай @@ -2856,10 +3323,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}Фокусирай върху мястото на влаковото депо STR_DEPOT_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Фокусирай общия план върху местонахождението на МПС-депото @@ -2897,6 +3364,8 @@ STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Цена STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}Цена: {CURRENCY_LONG} Тегло: {WEIGHT_SHORT}{}Скорост: {VELOCITY} Мощност: {POWER} Макс. Т.С.: {6:FORCE}{}Експлоатационни разходи: {4:CURRENCY_LONG}/год.{}Вместимост: {5:CARGO_LONG} STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST :{BLACK}Цена: {CURRENCY_LONG} Макс. Скорост: {VELOCITY}{}Вместимост: {CARGO_LONG}, {CARGO_LONG}{}Експлоатационни разходи: {CURRENCY_LONG}/год. STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK}Цена: {CURRENCY_LONG} Макс. Скорост: {VELOCITY}{}Вместимост: {CARGO_LONG}{}Експлоатационни разходи: {CURRENCY_LONG}/год. +STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_CAPACITY_RUNCOST:{BLACK}Цена: {CURRENCY_LONG} Макс. Скорост: {VELOCITY} Обхват: {COMMA} полета{}Капацитет: {CARGO_LONG}, {CARGO_LONG}{}Транспортни разходи: {CURRENCY_LONG}/година +STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}Цена: {CURRENCY_LONG} Макс. Скорост: {VELOCITY} Обхват: {COMMA} полета{}Капацитет: {CARGO_LONG}{}Транспортни разходи: {CURRENCY_LONG}/година # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}Замяна {STRING} - {STRING} @@ -2909,9 +3378,12 @@ STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Избо STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Изберете нов двигател, който бихте желали да поставите на мястото на избрания в ляво двигател 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_VEHICLE_SELECTED :{BLACK}Няма избрани превозни средства +STR_REPLACE_REPLACING_WHEN_OLD :{ENGINE} когато е стар STR_REPLACE_VEHICLES_STOP :{BLACK}Спиране на замяната STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Натиснете за спиране подновяването на избрания в ляво двигател @@ -2943,10 +3415,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}Изпращане на самолета в хангар -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}Игнориране на семафор @@ -3011,6 +3483,7 @@ STR_VEHICLE_INFO_AGE :{COMMA} год STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} годин{P а и} ({COMMA}) STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Макс. скорост: {LTBLUE}{VELOCITY} +STR_VEHICLE_INFO_MAX_SPEED_RANGE :{BLACK}Макс. скорост: {LTBLUE}{VELOCITY} {BLACK}Обхват: {LTBLUE}{COMMA} полета STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Тегло: {LTBLUE}{WEIGHT_SHORT} {BLACK}Мощност: {LTBLUE}{POWER}{BLACK} Макс. Скорост: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Тегло: {LTBLUE}{WEIGHT_SHORT} {BLACK}Мощност: {LTBLUE}{POWER}{BLACK} Макс. Скорост: {LTBLUE}{VELOCITY} {BLACK}Макс. Т.С.: {LTBLUE}{FORCE} @@ -3030,6 +3503,11 @@ STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Инте STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Удължава периода за сервиз с 10. Ctrl-click удължава периода за сервиз с 5 STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Намалява периода за сервиз с 10. Ctrl-click намалява периода за сервиз с 5 +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_SHIP_CAPTION :{WHITE}Наименувай кораба @@ -3062,7 +3540,10 @@ STR_VEHICLE_DETAILS_TRAIN_ARTICULATED_RV_CAPACITY :{BLACK}Капа STR_REFIT_CAPTION :{WHITE}{VEHICLE} (Преустройване) STR_REFIT_TITLE :{GOLD}Изберете вид товар за превозване: STR_REFIT_NEW_CAPACITY_COST_OF_REFIT :{BLACK}Нов капацитет: {GOLD}{CARGO_LONG}{}{BLACK}Цена за преустройство: {RED}{CURRENCY_LONG} +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+Click ще избере дадено превозно средство и всяко последващо превозно средство, което цъкнете STR_REFIT_TRAIN_LIST_TOOLTIP :{BLACK}Избор тип на товар за влак STR_REFIT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Избор тип това за автомобила да превозва @@ -3100,9 +3581,9 @@ 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_FULL_LOAD_ALL :Напълно нотовари всичкиат товар -STR_ORDER_DROP_FULL_LOAD_ANY :Напълно нотовари какъвто и да е товар +STR_ORDER_DROP_LOAD_IF_POSSIBLE :Натовари ако е възможно +STR_ORDER_DROP_FULL_LOAD_ALL :Натовари догоре целият товар +STR_ORDER_DROP_FULL_LOAD_ANY :Пълно товарене на какъвто и да е товар STR_ORDER_DROP_NO_LOADING :Ненатаваряй STR_ORDER_TOOLTIP_FULL_LOAD :{BLACK}Промени начинат на натоваряне на осветената заповед @@ -3115,6 +3596,10 @@ 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+Click за да премахнете инструкциите за промяна на товара. Автоматичната промяна на товара ще се случи само ако превозното средство го позволява +STR_ORDER_DROP_REFIT_AUTO :Фиксиран товар +STR_ORDER_DROP_REFIT_AUTO_ANY :Наличен товар STR_ORDER_SERVICE :{BLACK}Ремонт STR_ORDER_DROP_GO_ALWAYS_DEPOT :Винаги напред @@ -3125,12 +3610,13 @@ STR_ORDER_SERVICE_TOOLTIP :{BLACK}Проп STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}Данни за превозното средство, на които се базира # Conditional order variables, must follow order of OrderConditionVariable enum -STR_ORDER_CONDITIONAL_LOAD_PERCENTAGE :Процент товарене +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 :Оставащ живот (години) STR_ORDER_CONDITIONAL_COMPARATOR_TOOLTIP :{BLACK}Как да сравня данните за превозното средсвто с дадената стойност STR_ORDER_CONDITIONAL_COMPARATOR_EQUALS :е равно на @@ -3159,7 +3645,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 добавяте назначение за 'Напълно натовари какъвто и да е товар', назначение за пътна точка 'без спиране' и назначение за депо 'обслужване'. 'Споделяне на назначенията' или Ctrl позволява на това превозно средство да сподели назначенията с друго избрано такова, когато се кликне върху него. +STR_ORDERS_GO_TO_TOOLTIP :{BLACK}Добавяне на назначение преди избраната или в края на списъка. Ctrl добавя назначение за 'Напълно натовари какъвто и да е товар', назначение за пътна точка 'без спиране' и назначение за депо 'обслужване'. 'Споделяне на назначенията' или Ctrl позволява на това превозно средство да сподели назначенията с друго избрано такова, когато се кликне върху него. Назначението за депо спира автоматичното обслужване на превозното средство STR_ORDERS_VEH_WITH_SHARED_ORDERS_LIST_TOOLTIP :{BLACK}Показване на всички превозни средства които споделят разписанието @@ -3187,26 +3673,41 @@ STR_ORDER_GO_TO_STATION :{STRING} {STATI STR_ORDER_IMPLICIT :{G=n}(Автоматично) STR_ORDER_FULL_LOAD :(Напълно натовари) -STR_ORDER_FULL_LOAD_ANY :(Напълно натовари какъвто и да е товар) +STR_ORDER_FULL_LOAD_ANY :(Натовари догоре какъвто и да е товар) STR_ORDER_NO_LOAD :(Ненатоваряй) -STR_ORDER_UNLOAD :(Ненатоваряй и вземи товар) +STR_ORDER_UNLOAD :(Разтовари и вземи товар) 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_FULL_LOAD_ANY :(Смени и чакай за какъвто и да е пълен товар) +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}) +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 :наличен товар STR_ORDER_STOP_LOCATION_NEAR_END :[в близкия край] STR_ORDER_STOP_LOCATION_MIDDLE :[по средата] STR_ORDER_STOP_LOCATION_FAR_END :[в далечния край] +STR_ORDER_OUT_OF_RANGE :{RED} (Следващата цел е извън обхват) STR_ORDER_CONDITIONAL_UNCONDITIONAL :Премини на заповед {COMMA} STR_ORDER_CONDITIONAL_NUM :Премини на заповед {COMMA} когато {STRING} {STRING} {COMMA} @@ -3222,8 +3723,11 @@ STR_TIMETABLE_ORDER_VIEW_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} (not timetabled) 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 "" а} @@ -3239,7 +3743,6 @@ STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}Това STR_TIMETABLE_STATUS_START_AT :{BLACK}Това разписание ще започне на {STRING} STR_TIMETABLE_STARTING_DATE :{BLACK}Дата на започване -STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Избери дата за начална точка на това разписание STR_TIMETABLE_CHANGE_TIME :{BLACK}Промени времето STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Промени времетраенето на маркираната заповед @@ -3247,7 +3750,11 @@ STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Пром STR_TIMETABLE_CLEAR_TIME :{BLACK}Изчисти времето STR_TIMETABLE_CLEAR_TIME_TOOLTIP :{BLACK}Изчисти времетраенето на маркираната заповед +STR_TIMETABLE_CHANGE_SPEED :{BLACK}Промяна на ограничението на скоростта +STR_TIMETABLE_CHANGE_SPEED_TOOLTIP :{BLACK}Промени максималната скорост за пътуване на маркираната заповед +STR_TIMETABLE_CLEAR_SPEED :{BLACK}Изчиства ограничението на скоростта +STR_TIMETABLE_CLEAR_SPEED_TOOLTIP :{BLACK}Премахни максималната скорост за пътуване на маркираната заповед STR_TIMETABLE_RESET_LATENESS :{BLACK}Преправи закъснялата бройка STR_TIMETABLE_RESET_LATENESS_TOOLTIP :{BLACK}Reset the lateness counter, so the vehicle will be on time @@ -3273,37 +3780,50 @@ STR_DATE_YEAR_TOOLTIP :{BLACK}Избе # AI debug window -STR_AI_DEBUG :{WHITE}AI Debug +STR_AI_DEBUG :{WHITE}ИИ Дебъг STR_AI_DEBUG_NAME_AND_VERSION :{BLACK}{STRING} (v{NUM}) STR_AI_DEBUG_NAME_TOOLTIP :{BLACK}Име на AI STR_AI_DEBUG_SETTINGS :{BLACK}Настройки STR_AI_DEBUG_SETTINGS_TOOLTIP :{BLACK}Промени настройките на програмния език STR_AI_DEBUG_RELOAD :{BLACK}Презареждане AI STR_AI_DEBUG_RELOAD_TOOLTIP :{BLACK}Прекрати AI, презареди скрипта и рестартирай AI +STR_AI_DEBUG_BREAK_STR_ON_OFF_TOOLTIP :{BLACK}Включи/изключи breaking when an AI log message matches the break string 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_MATCH_CASE :{BLACK}Съвпадане на регистъра +STR_AI_DEBUG_MATCH_CASE_TOOLTIP :{BLACK}Променя съвпадането на регистъра (малки/ големи букви) при сравнението на ИИ логовете с низа +STR_AI_DEBUG_CONTINUE :{BLACK}Продължи +STR_AI_DEBUG_CONTINUE_TOOLTIP :{BLACK}Възстанови от пауза и продължи ИИ STR_AI_DEBUG_SELECT_AI_TOOLTIP :{BLACK}Покажи прозорец за debug на AI +STR_AI_GAME_SCRIPT :{BLACK}Игрови скрипт +STR_AI_GAME_SCRIPT_TOOLTIP :{BLACK}Провери лога на Игровия скрипт -STR_ERROR_AI_PLEASE_REPORT_CRASH :{WHITE}Един от работещите AI се е счупил . Моля съобщете това на автора на AI със скрииншот на AI Debug Прозореца. -STR_ERROR_AI_DEBUG_SERVER_ONLY :{YELLOW}AI Debug прозореца е на разположение само на сървъра +STR_ERROR_AI_NO_AI_FOUND :Не е намерен подходящ ИИ, който да бъде зареден.{}Това ИИ няма да прави нищо.{}Можете да изтеглите ИИ чрез системата за 'Онлайн Съдържание' +STR_ERROR_AI_PLEASE_REPORT_CRASH :{WHITE}Един от работещите ИИ се е сринал . Моля съобщете това на автора на ИИ със скрииншот на ИИ Дебъг прозореца +STR_ERROR_AI_DEBUG_SERVER_ONLY :{YELLOW}ИИ Дебъг прозореца е на разположение само на сървъра # AI configuration window -STR_AI_CONFIG_CAPTION :{WHITE}AI Конфигурация +STR_AI_CONFIG_CAPTION :{WHITE}ИИ Настройки +STR_AI_CONFIG_GAMELIST_TOOLTIP :{BLACK}Иговия скрипт ще бъде зареден в следващата игра +STR_AI_CONFIG_AILIST_TOOLTIP :{BLACK}ИИ-тата ще бъдат заредени в следващата игра STR_AI_CONFIG_HUMAN_PLAYER :Човешки играч STR_AI_CONFIG_RANDOM_AI :Случаен AI +STR_AI_CONFIG_NONE :(нищо) STR_AI_CONFIG_MOVE_UP :{BLACK}Премести нагоре STR_AI_CONFIG_MOVE_UP_TOOLTIP :{BLACK}Премести маркирания AI нагоре в списъка STR_AI_CONFIG_MOVE_DOWN :{BLACK}Премести надолу STR_AI_CONFIG_MOVE_DOWN_TOOLTIP :{BLACK}Премести маркирания AI надолу в списъка +STR_AI_CONFIG_GAMESCRIPT :{SILVER}Игрови скрипт STR_AI_CONFIG_AI :{SILVER}AI-та STR_AI_CONFIG_CHANGE :{BLACK}Избери {STRING} STR_AI_CONFIG_CHANGE_NONE : STR_AI_CONFIG_CHANGE_AI :AI STR_AI_CONFIG_CHANGE_GAMESCRIPT :Програмен език на играта +STR_AI_CONFIG_CHANGE_TOOLTIP :{BLACK}Зареди друг скрипт STR_AI_CONFIG_CONFIGURE :{BLACK}Конфигуриране STR_AI_CONFIG_CONFIGURE_TOOLTIP :{BLACK}Конфигурирайте параметрите на AI @@ -3329,9 +3849,18 @@ 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 :Броят дни докато този ИИ бъде стартиран след предишния (give or take): {ORANGE}{STRING} # Textfile window +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}Лиценз # Vehicle loading indicators @@ -3341,6 +3870,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}Цена: {CURRENCY_LONG} @@ -3349,6 +3880,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} @@ -3380,14 +3915,17 @@ STR_ERROR_PNGMAP_MISC :{WHITE}... не STR_ERROR_BMPMAP :{WHITE}Не може да отвориш пейзаж от BMP.. STR_ERROR_BMPMAP_IMAGE_TYPE :{WHITE}... не може да се промени вида на снимката. +STR_ERROR_HEIGHTMAP_TOO_LARGE :{WHITE}... изображението е твърде голямо STR_WARNING_HEIGHTMAP_SCALE_CAPTION :{WHITE}Мащаб предупреждение STR_WARNING_HEIGHTMAP_SCALE_MESSAGE :{YELLOW}Прекаленото оразмеряване не е препорачително. Продължаване с генерацията? # Soundset messages +STR_WARNING_FALLBACK_SOUNDSET :{WHITE}Бяха открити само резервния набор от звуци. Ако искате звуци, можете да ги инсталирате чрез системата за 'Онлайн Съдържание' # Screenshot related messages STR_WARNING_SCREENSHOT_SIZE_CAPTION :{WHITE}Голям скрииншот +STR_WARNING_SCREENSHOT_SIZE_MESSAGE :{YELLOW}Снимката на екрана ще е с резолюция от {COMMA} x {COMMA} пиксела. Правенето на снимката може да отнеме известно време. Искате ли да продължите? STR_MESSAGE_SCREENSHOT_SUCCESSFULLY :{WHITE}Екраноснимката е успешно зъхранена с името '{STRING}' STR_ERROR_SCREENSHOT_FAILED :{WHITE}Екраноснимката не се получи! @@ -3411,6 +3949,7 @@ STR_ERROR_OWNED_BY :{WHITE}... со STR_ERROR_AREA_IS_OWNED_BY_ANOTHER :{WHITE}... земята е притежание на друга компания STR_ERROR_TERRAFORM_LIMIT_REACHED :{WHITE}... достигнат е максималният допустим брой плочки за промяна на терена STR_ERROR_CLEARING_LIMIT_REACHED :{WHITE}... достигнат е максималният допустим брой плочки за изчистване +STR_ERROR_TREE_PLANT_LIMIT_REACHED :{WHITE}... достигнато е ограничението за насаждения STR_ERROR_NAME_MUST_BE_UNIQUE :{WHITE}Името трябва да е уникално STR_ERROR_GENERIC_OBJECT_IN_THE_WAY :{WHITE}{1:STRING} пречи STR_ERROR_NOT_ALLOWED_WHILE_PAUSED :{WHITE}Не е позволено по време на пауза @@ -3419,6 +3958,7 @@ STR_ERROR_NOT_ALLOWED_WHILE_PAUSED :{WHITE}Не е 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}Вашият опит за подкуп беше разкрит от местен следовател # Levelling errors STR_ERROR_CAN_T_RAISE_LAND_HERE :{WHITE}Не може да повдигаш земята тук... @@ -3448,8 +3988,8 @@ 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_FOUND_TOWN_HERE :{WHITE}Не може да построиш град тук... -STR_ERROR_CAN_T_EXPAND_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}... прекалено близо до края на картата STR_ERROR_TOO_CLOSE_TO_ANOTHER_TOWN :{WHITE}... прекалено близо до друг град STR_ERROR_TOO_MANY_TOWNS :{WHITE}... прекалено много градове @@ -3463,17 +4003,20 @@ STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}... ня STR_ERROR_TOO_MANY_INDUSTRIES :{WHITE}... прекалено много индустрии STR_ERROR_CAN_T_GENERATE_INDUSTRIES :{WHITE}Не може да се генерира промишленост... STR_ERROR_CAN_T_BUILD_HERE :{G=m}{WHITE}Тук не е възможно изграждането на {STRING}... -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_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_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_LOW_AREAS :{WHITE}... може да бъде построено само в ниски пространства -STR_ERROR_CAN_ONLY_BE_POSITIONED :{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}... може да бъде поставено само близо до краищата на картата 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}Тук не може да бъде построена ЖП гара... @@ -3507,6 +4050,7 @@ 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}Първо трябва да бъде разрушена автогарата @@ -3517,6 +4061,7 @@ 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_CAN_T_BUILD_TRAIN_WAYPOINT :{WHITE}Тук не може да бъде построен влаков пункт... @@ -3544,7 +4089,7 @@ 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_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE_MULTIPLE_UNITS :{WHITE}Не може да обърне превозно средство състоящо се от няколко елемента +STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE_MULTIPLE_UNITS :{WHITE}... състои се от няколко елемента STR_ERROR_INCOMPATIBLE_RAIL_TYPES :Несъвместими ЖП линии STR_ERROR_CAN_T_MOVE_VEHICLE :{WHITE}Не може да преместиш машината... @@ -3566,11 +4111,13 @@ 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_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_REMOVE_SIGNALS_FROM :{WHITE}Не може да бъдат премахнати сигналите... STR_ERROR_SIGNAL_CAN_T_CONVERT_SIGNALS_HERE :{WHITE}Тук не може да се конвертират сигналите... +STR_ERROR_THERE_IS_NO_RAILROAD_TRACK :{WHITE}... тук няма релса +STR_ERROR_THERE_ARE_NO_SIGNALS :{WHITE}... тук няма сигнали STR_ERROR_CAN_T_CONVERT_RAIL :{WHITE}Тук не може да се променя типа на жп линията... @@ -3581,6 +4128,7 @@ 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 @@ -3589,12 +4137,15 @@ 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_RIVER :{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_WRONG_TERRAIN_FOR_TREE_TYPE :{WHITE}... неподходящ терен за този вид дърво STR_ERROR_CAN_T_PLANT_TREE_HERE :{WHITE}Тук не може да бъде засадено дърво... # Bridge related errors @@ -3684,9 +4235,15 @@ 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}Влака не може да пропусне сигнала при опасност... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Не може да обърне посоката на влак... +STR_ERROR_TRAIN_START_NO_POWER :Влака няма мощност STR_ERROR_CAN_T_MAKE_ROAD_VEHICLE_TURN :{WHITE}Не може да обърне пътното превозно средство... @@ -3703,11 +4260,13 @@ 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}Не може да добави разписание на превозно средство... @@ -3723,6 +4282,16 @@ STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}Не м # Translatable comment for OpenTTD's desktop shortcut 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 :Празен музикален пакет. + ##id 0x2000 # Town building names STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1 :Висока офис сграда @@ -4169,8 +4738,9 @@ 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_SPACE_STRING :{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} @@ -4194,9 +4764,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 9d021e985..c8ff65790 100644 --- a/src/lang/catalan.txt +++ b/src/lang/catalan.txt @@ -192,36 +192,44 @@ 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_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 :{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_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_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_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_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_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 @@ -233,7 +241,8 @@ STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Tanca la 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_DEBUG :{BLACK}Mostra la informació de depuració NewGRF -STR_TOOLTIP_STICKY :{BLACK}Marca aquesta finestra com a no eliminable pel 'Tanca totes les Finestres' +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_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 @@ -257,7 +266,6 @@ STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}Àrea: { # These are used in buttons -STR_SORT_BY_CAPTION_POPULATION :{BLACK}Població STR_SORT_BY_CAPTION_NAME :{BLACK}Nom STR_SORT_BY_CAPTION_DATE :{BLACK}Data # These are used in dropdowns @@ -266,22 +274,23 @@ STR_SORT_BY_PRODUCTION :Producció STR_SORT_BY_TYPE :Tipus 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_PROFIT_LAST_YEAR :Benefici darrer any +STR_SORT_BY_PROFIT_THIS_YEAR :Benefici aquest any +STR_SORT_BY_AGE :Antiguitat STR_SORT_BY_RELIABILITY :Rendibilitat 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_WAITING :Valor de espera de càrrega +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 :IDModel (ordre clàssic) STR_SORT_BY_COST :Cost STR_SORT_BY_POWER :Potència STR_SORT_BY_TRACTIVE_EFFORT :Esforç de tracció @@ -290,21 +299,25 @@ STR_SORT_BY_RUNNING_COST :Cost d'utilitza STR_SORT_BY_POWER_VS_RUNNING_COST :Potència/Cost d'utilització STR_SORT_BY_CARGO_CAPACITY :Capacitat de càrrega STR_SORT_BY_RANGE :Abast +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}Pausa la partida +STR_TOOLBAR_TOOLTIP_FORWARD :{BLACK}Avanç ràpid de la partida STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}Opcions -STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK}Desa el joc, abandona el joc, surt +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 STR_TOOLBAR_TOOLTIP_DISPLAY_TOWN_DIRECTORY :{BLACK}Mostra el directori 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_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_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 @@ -334,7 +347,7 @@ STR_SCENEDIT_TOOLBAR_TOWN_GENERATION :{BLACK}Generaci 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_PLACE_SIGN :{BLACK}Situa una senyal +STR_SCENEDIT_TOOLBAR_PLACE_SIGN :{BLACK}Situa un senyal STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}Situa objecte. Shift commuta construeix/mostra el cost estimat ############ range for SE file menu starts @@ -348,43 +361,43 @@ 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_GAME_OPTIONS :Opcions de la Partida 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_SCRIPT_SETTINGS :Paràmetres de les IA/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_SIGNS_DISPLAYED :Mostra les senyals +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 -############ range for map menu starts +# 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 flux de càrrega STR_MAP_MENU_SIGN_LIST :Llista de senyals -############ range for town menu starts, yet the town directory is shown in the map menu in the scenario editor -STR_TOWN_MENU_TOWN_DIRECTORY :Directori de Poblacions -############ end of the 'Display map' dropdown -STR_TOWN_MENU_FOUND_TOWN :Funda un poble -############ end of the 'Town' dropdown + +############ range for town menu starts +STR_TOWN_MENU_TOWN_DIRECTORY :Directori de poblacions +STR_TOWN_MENU_FOUND_TOWN :Funda una població +############ range ends here ############ range for subsidies menu starts STR_SUBSIDIES_MENU_SUBSIDIES :Subvencions -STR_SUBSIDIES_MENU_GOAL :Objectius actuals ############ range ends here ############ range for graph menu starts @@ -392,32 +405,32 @@ STR_GRAPH_MENU_OPERATING_PROFIT_GRAPH :Gràfic de bene 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 de valor de l'empresa 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_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 @@ -425,13 +438,13 @@ 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'aeroport ############ range ends here ############ range for landscaping menu starts STR_LANDSCAPING_MENU_LANDSCAPING :Paisatges STR_LANDSCAPING_MENU_PLANT_TREES :Planta arbres -STR_LANDSCAPING_MENU_PLACE_SIGN :Situa una senyal +STR_LANDSCAPING_MENU_PLACE_SIGN :Situa un senyal ############ range ends here ############ range for music menu starts @@ -440,56 +453,74 @@ 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_SEPARATOR : STR_ABOUT_MENU_TOGGLE_CONSOLE :Canvia al terminal -STR_ABOUT_MENU_AI_DEBUG :Depuració de la IA/Scripts del joc +STR_ABOUT_MENU_AI_DEBUG :Depuració de les IA/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_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 @@ -583,13 +614,13 @@ 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_STATIONS_TOOLTIP :{BLACK}Quantitat d'estacions revisades recentment. Estacions, parades d'autobús, aeroports, etc. es compten separadament, 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 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_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}Quantitats de diners en efectiu +STR_PERFORMANCE_DETAIL_MONEY_TOOLTIP :{BLACK}Quantitat de diners en efectiu d'aquesta companyia STR_PERFORMANCE_DETAIL_LOAN_TOOLTIP :{BLACK}La quantitat de diners que aquesta companyia té com a préstec STR_PERFORMANCE_DETAIL_TOTAL_TOOLTIP :{BLACK}Total de punts sobre els punts possibles @@ -633,7 +664,7 @@ STR_ERROR_NO_SONGS :{WHITE}S'ha sel # 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_TRACK_INDEX :{TINY_FONT}{BLACK}Índex de Pistes STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}Programa - '{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) @@ -651,7 +682,7 @@ 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_NAME :{BIG_FONT}{PRESIDENT_NAME}, {COMPANY} +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}' ! @@ -662,17 +693,20 @@ STR_SMALLMAP_CAPTION :{WHITE}Mapa - { STR_SMALLMAP_TYPE_CONTOURS :Límits STR_SMALLMAP_TYPE_VEHICLES :Vehicles STR_SMALLMAP_TYPE_INDUSTRIES :Indústries +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 flux 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_LEGENDA_ROADS :{TINY_FONT}{BLACK}Carreteres STR_SMALLMAP_LEGENDA_RAILROADS :{TINY_FONT}{BLACK}Vies @@ -680,7 +714,7 @@ STR_SMALLMAP_LEGENDA_STATIONS_AIRPORTS_DOCKS :{TINY_FONT}{BLA STR_SMALLMAP_LEGENDA_BUILDINGS_INDUSTRIES :{TINY_FONT}{BLACK}Edificis/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 @@ -690,10 +724,10 @@ STR_SMALLMAP_LEGENDA_TRUCK_LOADING_BAY :{TINY_FONT}{BLA 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 @@ -706,6 +740,7 @@ STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLA STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Activa/desactiva noms de 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} STR_SMALLMAP_COMPANY :{TINY_FONT}{COMPANY} STR_SMALLMAP_TOWN :{TINY_FONT}{WHITE}{TOWN} STR_SMALLMAP_DISABLE_ALL :{BLACK}Desactiva-ho tot @@ -716,16 +751,18 @@ STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES :{BLACK}Mostra t STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}Commuta mostrar els mapes d'alçades 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_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} @@ -740,21 +777,21 @@ STR_NEWS_FIRST_CARGO_TRAM_ARRIVAL :{BIG_FONT}{BLAC 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_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_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 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} presumptament desapareguts o 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_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_MERGER_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} s'ha venut a {STRING} per {CURRENCY_LONG}! @@ -765,7 +802,7 @@ STR_NEWS_COMPANY_LAUNCH_DESCRIPTION :{BIG_FONT}{BLAC 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}! @@ -783,8 +820,8 @@ STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_COAL :{BIG_FONT}{BLAC 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_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 a 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 @@ -792,13 +829,12 @@ STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE 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 +# Order review system / warnings STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}{VEHICLE} té massa 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 @@ -836,11 +872,11 @@ STR_NEWS_EXCLUSIVE_RIGHTS_DESCRIPTION :{BIG_FONT}{BLAC 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 :{BLACK}Vés a la vista STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}Enganxa el lloc d'aquesta vista a la vista principal # 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 @@ -877,15 +913,12 @@ STR_GAME_OPTIONS_CURRENCY_LTL :Lites Lituanes 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) ############ end of currency region -STR_GAME_OPTIONS_MEASURING_UNITS_FRAME :{BLACK}Unitats de mesura -STR_GAME_OPTIONS_MEASURING_UNITS_DROPDOWN_TOOLTIP :{BLACK}Unitats de mesura seleccionades ############ start of measuring units region -STR_GAME_OPTIONS_MEASURING_UNITS_IMPERIAL :Imperial -STR_GAME_OPTIONS_MEASURING_UNITS_METRIC :Mètric -STR_GAME_OPTIONS_MEASURING_UNITS_SI :SI ############ end of measuring units region STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Automòbils @@ -921,13 +954,15 @@ 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 entre desades automàtiques de les partides +############ 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 @@ -939,9 +974,6 @@ STR_GAME_OPTIONS_RESOLUTION :{BLACK}Resoluci 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_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} @@ -956,6 +988,7 @@ STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Seleccio 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_ERROR_RESOLUTION_LIST_FAILED :{WHITE}No s'ha pogut obtenir la llista de resolucions suportades STR_ERROR_FULLSCREEN_FAILED :{WHITE}El mode en pantalla completa ha fallat # Custom currency window @@ -1033,7 +1066,7 @@ STR_SUBSIDY_X4 :x4 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_CITY_APPROVAL_PERMISSIVE :Permissiu STR_CITY_APPROVAL_TOLERANT :Tolerant @@ -1049,27 +1082,32 @@ STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}Plega-ho 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_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 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_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 a 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 ajustant{}{SILVER}Categoria {BLACK}a {WHITE}{STRING} +STR_CONFIG_SETTING_TYPE_HIDES :{BLACK}Mostrar tots els resultats per opció de configuració{}{SILVER}Tipus {BLACK}a {WHITE}Tots els tipus d'opció +STR_CONFIG_SETTING_CATEGORY_AND_TYPE_HIDES :{BLACK}Mostra tots els resultats de la cerca ajustant{}{SILVER}Categoria {BLACK}a {WHITE}{STRING} {BLACK}i {SILVER}Tipus {BLACK}a {WHITE}Tots els tipus d'ajustaments +STR_CONFIG_SETTINGS_NONE :{WHITE}- Cap - STR_CONFIG_SETTING_OFF :Inactiu STR_CONFIG_SETTING_ON :Actiu @@ -1090,7 +1128,7 @@ 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_INTEREST_RATE :Taxa d'interès: {STRING} -STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Taxa d'interès dels préstecs; també controla la inflació si està activada +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} @@ -1104,15 +1142,13 @@ STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :Fixa el nivell 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, si hi ha un camí més curt al seu proper destí en cas de canviar de sentit +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_CITY_APPROVAL :Actitud de l'alcaldia de la població 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 a la població 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 :Permet modificar el terreny sota edificis, rails, etc.: {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 @@ -1126,27 +1162,21 @@ STR_CONFIG_SETTING_SMOKE_AMOUNT_HELPTEXT :Establir la qua 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_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 a l'acceleració dels automòbils. 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_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 :Màxima longitud dels túnels: {STRING} STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH_HELPTEXT :Longitud màxima per a construir tunels 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 @@ -1156,9 +1186,9 @@ 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_SIGNALSIDE :Mostra les senyals: {STRING} -STR_CONFIG_SETTING_SIGNALSIDE_HELPTEXT :Selecciona a quin costat de la via s'han de posar les senyals +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 STR_CONFIG_SETTING_SIGNALSIDE_DRIVING_SIDE :Al costat de conducció STR_CONFIG_SETTING_SIGNALSIDE_RIGHT :A la dreta @@ -1171,22 +1201,20 @@ STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :Situa en quin l 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} @@ -1200,13 +1228,9 @@ 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 @@ -1219,7 +1243,7 @@ STR_CONFIG_SETTING_WARN_LOST_VEHICLE_HELPTEXT :Alerta amb miss 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_OFF :No -STR_CONFIG_SETTING_ORDER_REVIEW_EXDEPOT :Si, excepte vehicles parats +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 @@ -1227,53 +1251,67 @@ STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Els vehicles ma 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_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_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 muntanyós +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_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_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 @@ -1286,7 +1324,7 @@ STR_CONFIG_SETTING_SMOOTH_SCROLLING :Desplaçament s 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 @@ -1316,43 +1354,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_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 Dec 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 :Pausa automàticament en començar una nova partida: {STRING} +STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT :Quan està activat, el joc es pausarà 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à pausada 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_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 @@ -1362,7 +1398,7 @@ STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :Reprodueix un s STR_CONFIG_SETTING_SOUND_NEWS :Notícies: {STRING} STR_CONFIG_SETTING_SOUND_NEWS_HELPTEXT :Reprodueix un so quan apareix una notícia STR_CONFIG_SETTING_SOUND_NEW_YEAR :Cap d'any: {STRING} -STR_CONFIG_SETTING_SOUND_NEW_YEAR_HELPTEXT :Reprodueix un efecte de so al final de l'any quan apareix el resum financer de l'empresa +STR_CONFIG_SETTING_SOUND_NEW_YEAR_HELPTEXT :Reprodueix un efecte de so al final de l'any quan apareix el resum financer de l'any de l'empresa en comparació amb l'anterior STR_CONFIG_SETTING_SOUND_CONFIRM :Construcció: {STRING} STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT :Reprodueix un efecte de so quan es realitzin amb èxit construccions o altres accions STR_CONFIG_SETTING_SOUND_CLICK :Botons: {STRING} @@ -1372,36 +1408,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_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 @@ -1409,7 +1445,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} 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 @@ -1419,7 +1455,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 @@ -1429,15 +1465,15 @@ STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN_HELPTEXT :Mostra les not STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER :Arribada del primer vehicle a una estació competidora: {STRING} 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 les notícies d'accidents i desastres -STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION :Informació de l'Empresa: {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_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_HELPTEXT :Mostra les notícies de canvis globals a l'economia +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 STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER :Canvis de producció en indústries proveïdes pels competidors: {STRING} @@ -1449,18 +1485,18 @@ STR_CONFIG_SETTING_NEWS_ADVICE_HELPTEXT :Mostra missatge STR_CONFIG_SETTING_NEWS_NEW_VEHICLES :Nous vehicles: {STRING} STR_CONFIG_SETTING_NEWS_NEW_VEHICLES_HELPTEXT :Mostra les notícies d'aparicions de nous tipus de vehicles STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE :Canvis en l'admissió de càrrega: {STRING} -STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE_HELPTEXT :Mostra missatges quan les estacions canviïn l'acceptació d'alguna càrrega +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 @@ -1469,46 +1505,46 @@ STR_CONFIG_SETTING_ALLOW_SHARES_HELPTEXT :Quan està acti STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE :Percentatge del benefici total a pagar en transferències: {STRING} 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 les senyals seran construïdes a la via fins al següent obstacle (senyal, desviament), si les senyals són arrossegades -STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_VALUE :{COMMA} cel·la{P 0 "" s} +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·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 les senyals són situades al voltant dels túnels o ponts per evitar grans troços sense senyals. Si s'activa, les senyals són situades 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 automàticament abans de: {STRING} -STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE_HELPTEXT :Estableix l'any quan les senyals eléctriques seran utilitzades a les vies. Abans d'aquest any s'utilitzaran senyals no-elèctriques (que tenen exactament la mateixa funció, però amb diferent aspecte) -STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI :Activa la interfície de les 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 les senyals +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, en lloc de només la rotació sense finestra de tipus de senyals 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 predeterminada a utilitzar +STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE_HELPTEXT :Tipus de senyal predeterminat a utilitzar STR_CONFIG_SETTING_DEFAULT_SIGNAL_NORMAL :Normal STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBS :Avançades STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBSOWAY :Avançades d'un sentit STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES :Canvia a través dels tipus de senyal: {STRING} -STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES_HELPTEXT :Selecciona entre quins tipus de senyals es ciclarà, quan es faci Ctrl+clic sobre una senyal amb l'eina de construir senyals +STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES_HELPTEXT :Selecciona entre quins tipus de senyals es ciclarà, quan es faci Ctrl+clic sobre un senyal amb l'eina de construir senyals 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 @@ -1519,70 +1555,132 @@ STR_CONFIG_SETTING_STATUSBAR_POS :Posició de la STR_CONFIG_SETTING_STATUSBAR_POS_HELPTEXT :Posició horitzontal de la barra d'estat a la part inferior de la pantalla STR_CONFIG_SETTING_SNAP_RADIUS :Radi d'acció de la finestra: {STRING} STR_CONFIG_SETTING_SNAP_RADIUS_HELPTEXT :Distància entre finestres abans que la finestra moguda sigui automàticament alineada a una finestra propera -STR_CONFIG_SETTING_SNAP_RADIUS_VALUE :{COMMA} pixel{P 0 "" s} +STR_CONFIG_SETTING_SNAP_RADIUS_VALUE :{COMMA} píxel{P 0 "" s} STR_CONFIG_SETTING_SNAP_RADIUS_DISABLED :Desactivat STR_CONFIG_SETTING_SOFT_LIMIT :Nombre màxim de finestres no-enganxoses: {STRING} 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 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 :Velocitat de creixement de les ciutats: {STRING} +STR_CONFIG_SETTING_TOWN_GROWTH :Velocitat de creixement de les poblacions: {STRING} STR_CONFIG_SETTING_TOWN_GROWTH_HELPTEXT :Velocitat de creixement de les poblacions STR_CONFIG_SETTING_TOWN_GROWTH_NONE :Cap 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_TOWN_GROWTH_VERY_FAST :Molt ràpida +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_GUI :{ORANGE}Interfície -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_AI :{ORANGE}Competidors -STR_CONFIG_SETTING_DISPLAY_OPTIONS :{ORANGE}Opcions de pantalla -STR_CONFIG_SETTING_INTERACTION :{ORANGE}Interacció +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 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 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 +STR_CONFIG_SETTING_DISTRIBUTION_SYMMETRIC :simètric +STR_CONFIG_SETTING_DISTRIBUTION_PAX :Mode de distribució per passatgers: {STRING} +STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :"simètric" vol dir que aproximadament el mateix nombre de passatgers aniran des de l'estació A a la B que de B a A. "asimètric" significa que un nombre arbitrari de passatgers poden anar en qualsevol dels dos sentits. "manual" vol dir que no s'aplicarà una distribució automàtica pels passatgers. +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_DEFAULT :Mode de distribució per altres classes de càrrega: {STRING} +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} +STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT :Si indiqueu un valor major de 0, la distància entre l'estació d'origen A d'una càrrega i la possible destinació B, tindrà efecte en la quantitat de càrrega enviada de A a B. Com més lluny és B de A menys càrrega s'hi enviarà. Com més alt el valor, menys càrrega s'enviarà a estacions llunyanes i més càrrega a estacions properes. +STR_CONFIG_SETTING_DEMAND_SIZE :Quantitat de càrrega retornada per mode simètric: {STRING} +STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :Indicant menys del 100% la distribució simètrica es comporta més com l'asimètrica. Menys càrrega serà retornada si una certa quantitat és enviada a una estació. Si indiqueu 0% la distribució simètrica es comporta igual que l'asimètrica. +STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Saturació de camins curts abans d'usar camins d'alta capacitat: {STRING} +STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Sovint hi ha diversos camins entre dues estacions donades. Cargodist primer saturarà el camí més curt, després usarà el segon camí més curt fins a saturar-lo i així successivament. La saturació és determinada per una estimació de la capacitat i l'ús previst. Un cop ha saturat tots els camins, si encara hi ha demanda, sobrecarregarà tots els camins, preferint aquells de major capacitat. No obstant, molt sovint l'algoritme no farà una estimació acurada de la capacitat. Aquest paràmetre us permet especificar fins a quin percentatge un camí més curt ha de ser saturat en la primera ronda abans d'escollir el següent en longitud. Indiqueu menys del 100% per evitar la superpoblació d'estacions en cas de capacitat sobreestimada. + +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Unitats de velocitat: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_HELPTEXT :Quan es mostren velocitats a la interfície d'usuari, presenta-les en les unitats seleccionades +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_IMPERIAL :Imperial (mph) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_METRIC :Mètric (km/h) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_SI :SI (m/s) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER :Unitats de potència dels vehicles: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_HELPTEXT :Quan es mostra la potència d'un vehicle a la interfície d'usuari, presenta-la en les unitats seleccionades +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_IMPERIAL :Imperial (hp) +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_METRIC :Mètric (hp) +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_SI :SI (kW) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT :Unitats de massa: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_HELPTEXT :Quan es mostren masses a la interfície d'usuari, presenta-les en les unitats seleccionades +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_IMPERIAL :Imperial (t curta/tona) +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_METRIC :Mètric (t/tona) +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_SI :SI (kg) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME :Unitats de volum: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_HELPTEXT :Quan es mostren volums a la interfície d'usuari, presenta'ls en les unitats seleccionades +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_IMPERIAL :Imperial (gal) +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_IMPERIAL :Imperial (lbf) +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_METRIC :Mètric (kgf) +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_SI :SI (kN) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT :Unitats de longitud: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_HELPTEXT :Quan es mostren longituds a la interfície d'usuari, presenta-les en les unitats seleccionades +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_LOCALISATION :{ORANGE}Localització +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_REVERSE_AT_SIGNALS :Canvi de sentit automàtic a les senyals: {STRING} -STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT :Permetre als trens girar en una senyal, si esperaven allà durant molt temps +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 STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}Canvia el valor de l'ajustament @@ -1594,40 +1692,42 @@ 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 +STR_CONFIG_ERROR_OUT_OF_MEMORY :{WHITE}Memòria exhaurida +STR_CONFIG_ERROR_SPRITECACHE_TOO_BIG :{WHITE}L'assignació de {BYTES} de la memòria cau d'sprites ha fallat. La memòria cau d'sprites s'ha reduït a {BYTES}. Això reduirà el rendiment d'OpenTTD. Per reduir els requeriments de memòria pots probar a desactivar els gràfics de 32bpp i/o els nivells amb zoom # 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_ADVANCED_SETTINGS :{BLACK}Paràmetres Avançats 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' @@ -1637,17 +1737,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_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 falta {NUM} string{P "" s}. Si us plau ajuda a fer millor OpenTTD unint-te com a traductor. Veure readme.txt per més detalls. +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_YES :{BLACK}Si +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 # Supported OSes @@ -1663,9 +1763,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 @@ -1676,10 +1776,10 @@ 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_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} @@ -1697,11 +1797,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) @@ -1724,6 +1824,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 @@ -1750,7 +1851,7 @@ STR_FACE_EUROPEAN :{BLACK}Europea STR_FACE_SELECT_EUROPEAN :{BLACK}Selecciona cares europees STR_FACE_AFRICAN :{BLACK}Africana STR_FACE_SELECT_AFRICAN :{BLACK}Selecciona cares africanes -STR_FACE_YES :Si +STR_FACE_YES :Sí STR_FACE_NO :No STR_FACE_MOUSTACHE_EARRING_TOOLTIP :{BLACK}Activa el bigoti o les arracades STR_FACE_HAIR :Cabell: @@ -1779,32 +1880,32 @@ STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}Canvia l # Network server list STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}Multijugador -STR_NETWORK_SERVER_LIST_CONNECTION :{BLACK}Connexió: -STR_NETWORK_SERVER_LIST_CONNECTION_TOOLTIP :{BLACK}Tria entre jugar per internet o jugar en xarxa local -STR_NETWORK_SERVER_LIST_LAN :LAN -STR_NETWORK_SERVER_LIST_INTERNET :Internet +STR_NETWORK_SERVER_LIST_ADVERTISED :{BLACK}Anunciat +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} @@ -1819,14 +1920,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 @@ -1834,28 +1935,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_LAN_INTERNET :LAN / Internet -STR_NETWORK_START_SERVER_INTERNET_ADVERTISE :Internet (anunci) +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!! @@ -1901,7 +2002,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} @@ -1918,7 +2019,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 @@ -1933,7 +2034,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 @@ -1963,6 +2064,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 @@ -1975,7 +2077,7 @@ STR_COMPANY_PASSWORD_MAKE_DEFAULT_TOOLTIP :{BLACK}Utilitza STR_COMPANY_VIEW_JOIN :{BLACK}Unir-se STR_COMPANY_VIEW_JOIN_TOOLTIP :{BLACK}Unir-se i jugar amb aquesta companyia STR_COMPANY_VIEW_PASSWORD :{BLACK}Contrasenya -STR_COMPANY_VIEW_PASSWORD_TOOLTIP :{BLACK}Protegeix la teva Empresa amb contrasenya per tal d'evitar que la utilitzin usuaris no autoritzats +STR_COMPANY_VIEW_PASSWORD_TOOLTIP :{BLACK}Protegeix la teva empresa amb contrasenya per tal d'evitar que la utilitzin usuaris no autoritzats STR_COMPANY_VIEW_SET_PASSWORD :{BLACK}Estableix la contrasenya de l'Empresa # Network chat @@ -1993,12 +2095,12 @@ STR_NETWORK_CHAT_OSKTITLE :{BLACK}Posa el # 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 @@ -2007,13 +2109,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 @@ -2033,7 +2135,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 @@ -2044,24 +2146,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 pausada ({STRING}) +STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_1 :Partida encara pausada ({STRING}) +STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_2 :Partida encara pausada ({STRING}, {STRING}) +STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_3 :Partida encara pausada ({STRING}, {STRING}, {STRING}) +STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_4 :La partida encara està pausada ({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} @@ -2081,6 +2183,10 @@ STR_CONTENT_SELECT_UPDATES_CAPTION :{BLACK}Sel. act STR_CONTENT_SELECT_UPDATES_CAPTION_TOOLTIP :{BLACK}Marca tots els continguts que siguin actualitzacions dels continguts a ser descarregats STR_CONTENT_UNSELECT_ALL_CAPTION :{BLACK}Deselecciona tot STR_CONTENT_UNSELECT_ALL_CAPTION_TOOLTIP :{BLACK}Marca tots els continguts a no ser descarregats +STR_CONTENT_SEARCH_EXTERNAL :{BLACK}Cerca en webs externes +STR_CONTENT_SEARCH_EXTERNAL_TOOLTIP :{BLACK}Cerca contingut no disponible al servei de continguts d'OpenTTD en webs no associades amb OpenTTD +STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER_CAPTION :{WHITE}Estàs sortint d'OpenTTD! +STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER :{WHITE}Els termes i condicions per descarregar contingut des de webs externes varia.{}Hauràs d'adreçar-te a les webs externes per trobar instruccions sobre com instal·lar contingut a OpenTTD.{}Vols continuar? STR_CONTENT_FILTER_TITLE :{BLACK}Marca/anomena filtre: STR_CONTENT_OPEN_URL :{BLACK}Visita la web STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}Visita la web per accedir a aquest contingut @@ -2103,7 +2209,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 no es pot construir sense suport "zlib"... +STR_CONTENT_NO_ZLIB :{WHITE}OpenTTD està compilat sense suport "zlib"... STR_CONTENT_NO_ZLIB_SUB :{WHITE}... no és possible descarregar continguts! # Order of these is important! @@ -2115,7 +2221,7 @@ 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 @@ -2134,12 +2240,12 @@ STR_CONTENT_ERROR_COULD_NOT_EXTRACT :{WHITE}No s'han STR_MISSING_GRAPHICS_SET_CAPTION :{WHITE}Gràfics que falten STR_MISSING_GRAPHICS_SET_MESSAGE :{BLACK}OpenTTD necessita gràfics per funcionar però no se n'ha trobat cap. Vols permetre a OpenTTD descarregar i instal·lar aquests gràfics? -STR_MISSING_GRAPHICS_YES_DOWNLOAD :{BLACK}Si, descarregar els gràfics +STR_MISSING_GRAPHICS_YES_DOWNLOAD :{BLACK}Sí, descarregar els gràfics STR_MISSING_GRAPHICS_NO_QUIT :{BLACK}No, surt d'OpenTTD # Transparency settings window STR_TRANSPARENCY_CAPTION :{WHITE}Opcions de transparència -STR_TRANSPARENT_SIGNS_TOOLTIP :{BLACK}Commuta la transparència de les senyals. Ctrl+Clic per bloquejar +STR_TRANSPARENT_SIGNS_TOOLTIP :{BLACK}Commuta la transparència dels senyals. Ctrl+Clic per bloquejar STR_TRANSPARENT_TREES_TOOLTIP :{BLACK}Commuta la transparència dels arbres. Ctrl+Clic per bloquejar STR_TRANSPARENT_HOUSES_TOOLTIP :{BLACK}Commuta la transparència de les cases. Ctrl+Clic per bloquejar STR_TRANSPARENT_INDUSTRIES_TOOLTIP :{BLACK}Commuta la transparència de les indústries. Ctrl+Clic per bloquejar @@ -2148,7 +2254,18 @@ 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 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 + +# Linkgraph legend window and linkgraph legend in smallmap +STR_LINKGRAPH_LEGEND_UNUSED :{G=Masculin}{TINY_FONT}{BLACK}no utilitzat +STR_LINKGRAPH_LEGEND_SATURATED :{G=Masculin}{TINY_FONT}{BLACK}saturat +STR_LINKGRAPH_LEGEND_OVERLOADED :{G=Masculin}{TINY_FONT}{BLACK}sobrecarregat # Base for station construction window(s) STR_STATION_BUILD_COVERAGE_AREA_TITLE :{BLACK}Marca l'àrea de cobertura @@ -2163,8 +2280,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 @@ -2177,10 +2294,10 @@ 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 el semàfor/senyals de llums{}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 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_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. Mantingues Ctrl per treure també les vies dels punts de control i de les estacions +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 STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL :{BLACK}Converteix/Millora el tipus de via. Shift commuta construeix/mostra el cost estimat STR_RAIL_NAME_RAILROAD :Ferrocarril @@ -2189,11 +2306,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 @@ -2215,26 +2332,26 @@ STR_STATION_CLASS_WAYP :Punt de pas # Signal window STR_BUILD_SIGNAL_CAPTION :{WHITE}Selecció de senyals -STR_BUILD_SIGNAL_SEMAPHORE_NORM_TOOLTIP :{BLACK}Senyal de tram (semàfor){}Aquest es el tipus més bàsic de senyal, permetent només un tren en el mateix tram a la vegada -STR_BUILD_SIGNAL_SEMAPHORE_ENTRY_TOOLTIP :{BLACK}Senyal d'entrada (semàfor){}En verd mentre hi hagi una o més senyals de sortida en verd en la secció següent de vies. En cas contrari està en vermell -STR_BUILD_SIGNAL_SEMAPHORE_EXIT_TOOLTIP :{BLACK}Senyal de Sortida (semàfor){}Es comporta com una senyal de tram però és necessari actuar sobre el color correcte en les pre-senyals d'entrada i combinada -STR_BUILD_SIGNAL_SEMAPHORE_COMBO_TOOLTIP :{BLACK}Senyal Combinada (semàfor){}La senyal combinada simplement actua com a senyal d'entrada i sortida. Això permet construir grans extensions de pre-senyals -STR_BUILD_SIGNAL_SEMAPHORE_PBS_TOOLTIP :{BLACK}Senyal de camí (semàfor){}Una senyal de camí permet entrar dins d'un tram a més d'un tren a la vegada, si el tren pot reservar una ruta cap a un punt de parada segur. Les senyals de camí poden ser passades des de darrera -STR_BUILD_SIGNAL_SEMAPHORE_PBS_OWAY_TOOLTIP :{BLACK}Senyal de camí d'un sentit (semàfor){}Una senyal de camí permet entrar dins d'un tram a més d'un tren a la vegada, si el tren pot reservar una ruta cap a un punt de parada segur. Les senyals de camí d'un sentit poden ser passades des de darrera -STR_BUILD_SIGNAL_ELECTRIC_NORM_TOOLTIP :{BLACK}Senyal de tram (elèctrica){}Aquest es el tipus més bàsic de senyal, permeten entrar a cada tram només un tren a la vegada -STR_BUILD_SIGNAL_ELECTRIC_ENTRY_TOOLTIP :{BLACK}Senyal d'entrada (elèctrica){}En verd mentre hi hagi una o més senyals de sortida en verd en la secció següent de vies. En cas contrari està en vermell -STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}Senyal de Sortida (elèctrica){}Es comporta com una senyal de tram però és necessari actuar sobre el color correcte en les pre-senyals d'entrada i combinades -STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}Senyal Combinada (elèctrica){}La senyal combinada simplement actua com a senyal d'entrada i sortida. Això permet construir grans extensions de pre-senyals -STR_BUILD_SIGNAL_ELECTRIC_PBS_TOOLTIP :{BLACK}Senyal de camí (elèctrica){}Una senyal de camí permet entrar dins d'un tram a més d'un tren a la vegada, si el tren pot reservar una ruta cap a un punt de parada segur. Les senyals de camí estàndard poden ser passades des de darrera -STR_BUILD_SIGNAL_ELECTRIC_PBS_OWAY_TOOLTIP :{BLACK}Senyal de camí d'un sentit (elèctrica){}Una senyal de camí permet entrar dins d'un tram a més d'un tren a la vegada, si el tren pot reservar una ruta cap a un punt de parada segur. Les senyals de camí d'un sentit poden ser passades des de darrera -STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}Conversió de senyals{}Quan esta seleccionat, clicant una senyal existent la converteix en el tipus de senyal seleccionada i variants, CTRL+Clic commuta la variant existent. Shift+Clic mostra el cost de conversió estimat +STR_BUILD_SIGNAL_SEMAPHORE_NORM_TOOLTIP :{BLACK}Senyal de tram (mecànic){}Aquest es el tipus més bàsic de senyal, permetent només un tren dins el mateix tram cada vegada +STR_BUILD_SIGNAL_SEMAPHORE_ENTRY_TOOLTIP :{BLACK}Senyal d'entrada (mecànic){}En verd mentre hi hagi un o més senyals de sortida en verd en la següent secció de vies. En cas contrari està en vermell +STR_BUILD_SIGNAL_SEMAPHORE_EXIT_TOOLTIP :{BLACK}Senyal de sortida (mecànic){}Es comporta com un senyal de tram però és necessari per activar els pre-senyals d'entrada +STR_BUILD_SIGNAL_SEMAPHORE_COMBO_TOOLTIP :{BLACK}Senyal combinat (mecànic){}El senyal combinat simplement actua alhora com a senyal d'entrada i de sortida. Això permet construir grans "arbres" de pre-senyals +STR_BUILD_SIGNAL_SEMAPHORE_PBS_TOOLTIP :{BLACK}Senyal de camí (mecànic){}Un senyal de camí permet entrar més d'un tren dins del mateix tram si són capaços de reservar una ruta cap a un punt de parada segur. Els senyals de camí poden ser passats des del darrera +STR_BUILD_SIGNAL_SEMAPHORE_PBS_OWAY_TOOLTIP :{BLACK}Senyal de camí d'un sentit (mecànic){}Un senyal de camí permet entrar més d'un tren dins del mateix tram si són capaços de reservar una ruta cap a un punt de parada segur. Els senyals de camí d'un sentit no poden ser passats des del darrera +STR_BUILD_SIGNAL_ELECTRIC_NORM_TOOLTIP :{BLACK}Senyal de tram (elèctric){}Aquest es el tipus més bàsic de senyal, permetent només un tren dins el mateix tram cada vegada +STR_BUILD_SIGNAL_ELECTRIC_ENTRY_TOOLTIP :{BLACK}Senyal d'entrada (elèctric){}En verd mentre hi hagi un o més senyals de sortida en verd en la següent secció de vies. En cas contrari està en vermell +STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}Senyal de sortida (elèctric){}Es comporta com un senyal de tram però és necessari per activar els pre-senyals d'entrada +STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}Senyal combinat (elèctric){}El senyal combinat simplement actua alhora com a senyal d'entrada i de sortida. Això permet construir grans "arbres" de pre-senyals +STR_BUILD_SIGNAL_ELECTRIC_PBS_TOOLTIP :{BLACK}Senyal de camí (elèctric){}Un senyal de camí permet entrar més d'un tren dins del mateix tram si són capaços de reservar una ruta cap a un punt de parada segur. Els senyals de camí poden ser passats des del darrera +STR_BUILD_SIGNAL_ELECTRIC_PBS_OWAY_TOOLTIP :{BLACK}Senyal de camí d'un sentit (elèctric){}Un senyal de camí permet entrar més d'un tren dins del mateix tram si són capaços de reservar una ruta cap a un punt de parada segur. Els senyals de camí d'un sentit no poden ser passats des del darrera +STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}Conversió de senyals{}Quan està seleccionat, clicant un senyal existent el converteix al tipus de senyal seleccionat. CTRL+Clic commuta la variant existent. Shift+Clic mostra el cost estimat de conversió STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_TOOLTIP :{BLACK}Densitat de senyals en arrossegar STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_DECREASE_TOOLTIP :{BLACK}Disminueix la densitat de senyals en arrossegar 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} @@ -2392,10 +2509,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 @@ -2403,14 +2520,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} @@ -2452,13 +2569,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 @@ -2466,23 +2584,23 @@ STR_LAI_RAIL_DESCRIPTION_TRACK :Via de {STRING} STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_SIGNALS :{STRING} via amb senyals de bloc STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRESIGNALS :{STRING} via amb pre-senyals STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXITSIGNALS :{STRING} via amb senyals de sortida -STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBOSIGNALS :{STRING} via amb senyals combinades +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBOSIGNALS :{STRING} via amb senyals combinats STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBSSIGNALS :{STRING} via amb senyals de camí STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NOENTRYSIGNALS :{STRING} via amb senyals de camí d'un sentit STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PRESIGNALS :{STRING}via amb senyals de bloc i pre-senyals STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_EXITSIGNALS :{STRING} via amb senyals de bloc i de sortida -STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_COMBOSIGNALS :{STRING} via amb senyals de bloc i combinades +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_COMBOSIGNALS :{STRING} via amb senyals de bloc i combinats STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PBSSIGNALS :{STRING} via amb senyals de bloc i de camí STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_NOENTRYSIGNALS :{STRING} via amb senyals de bloc i de camí d'un sentit STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_EXITSIGNALS :{STRING} via amb pre-senyals i senyals de sortida -STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_COMBOSIGNALS :{STRING} via amb pre-senyals i senyals combinades +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_COMBOSIGNALS :{STRING} via amb pre-senyals i senyals combinats STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_PBSSIGNALS :{STRING} via amb pre-senyals i senyals de camí STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_NOENTRYSIGNALS :{STRING} via amb pre-senyals i senyals de camí d'un sentit -STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_COMBOSIGNALS :{STRING} via amb senyals de sortida i combinades +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_COMBOSIGNALS :{STRING} via amb senyals de sortida i combinats STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_PBSSIGNALS :{STRING} via amb senyals de sortida i de camí STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_NOENTRYSIGNALS :{STRING} via amb senyals de sortida i de camí d'un sentit -STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_PBSSIGNALS :{STRING} via amb senyals combinades i de camí -STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_NOENTRYSIGNALS :{STRING} via amb senyals combinades i de camí d'un sentit +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_PBSSIGNALS :{STRING} via amb senyals combinats i de camí +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_NOENTRYSIGNALS :{STRING} via amb senyals combinats i de camí d'un sentit STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBS_NOENTRYSIGNALS :{STRING} via amb senyals de camí i de camí d'un sentit STR_LAI_RAIL_DESCRIPTION_TRAIN_DEPOT :{STRING} cotxeres de tren @@ -2548,53 +2666,51 @@ 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-2012 L'equip d'OpenTTD +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2014 L'equip d'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_NUMBER_OF_INDUSTRIES :{BLACK}Nombre 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_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_SMOOTHNESS :{BLACK}Suavitat: +STR_MAPGEN_VARIETY :{BLACK}Varietat: STR_MAPGEN_GENERATE :{WHITE}Genera # Strings for map borders at game generation @@ -2614,7 +2730,6 @@ 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_START_DATE_QUERY_CAPT :{WHITE}Canviar l'any inicial @@ -2641,10 +2756,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 @@ -2654,10 +2769,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ó @@ -2669,12 +2784,14 @@ 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_FILE_TOOLTIP :{BLACK}Una llista d'arxius NewGRF que estan instal·lats. +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 @@ -2693,6 +2810,16 @@ 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 @@ -2759,10 +2886,11 @@ 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}Estàs a punt de fer canvis en una partida activa. 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_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) +STR_NEWGRF_TOO_MANY_NEWGRFS :{WHITE}No es pot afegir l'arxiu: Límit d'arxius NewGRF assolit 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 @@ -2776,10 +2904,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 @@ -2793,23 +2922,26 @@ 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 # Sign list window STR_SIGN_LIST_CAPTION :{WHITE}Llista de senyals - {COMMA} Senyal{P "" s} STR_SIGN_LIST_MATCH_CASE :{BLACK}Coincideix Majúscules/Minúscules -STR_SIGN_LIST_MATCH_CASE_TOOLTIP :{BLACK}Commuta minúscules/majúscules en comparar els noms de les senyals contra la cadena filtrant +STR_SIGN_LIST_MATCH_CASE_TOOLTIP :{BLACK}Commuta minúscules/majúscules en comparar els noms dels senyals contra la cadena filtrant # Sign window -STR_EDIT_SIGN_CAPTION :{WHITE}Edita el text de la senyal -STR_EDIT_SIGN_NEXT_SIGN_TOOLTIP :{BLACK}Ves a la propera senyal -STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK}Ves a la senyal anterior +STR_EDIT_SIGN_CAPTION :{WHITE}Edita el text del senyal +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 a la senyal +STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}Posa un nom al senyal # Town directory window STR_TOWN_DIRECTORY_CAPTION :{WHITE}Poblacions @@ -2824,15 +2956,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 de 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} di{P a es} +STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}La població creix cada {ORANGE}{COMMA}{BLACK} di{P a es} (finançat) +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 @@ -2858,28 +2990,32 @@ 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}Objectius +STR_GOALS_CAPTION :{WHITE}{COMPANY} Objectius +STR_GOALS_SPECTATOR_CAPTION :{WHITE}Objectius globals STR_GOALS_GLOBAL_TITLE :{BLACK}Objectius globals: STR_GOALS_TEXT :{ORANGE}{STRING} STR_GOALS_NONE :{ORANGE}- Cap - +STR_GOALS_SPECTATOR_NONE :{ORANGE}- No aplicable - +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 @@ -2891,7 +3027,7 @@ STR_GOAL_QUESTION_CAPTION_ERROR :Error STR_GOAL_QUESTION_BUTTON_CANCEL :Cancel·la STR_GOAL_QUESTION_BUTTON_OK :OK STR_GOAL_QUESTION_BUTTON_NO :No -STR_GOAL_QUESTION_BUTTON_YES :Si +STR_GOAL_QUESTION_BUTTON_YES :Sí STR_GOAL_QUESTION_BUTTON_DECLINE :Declina STR_GOAL_QUESTION_BUTTON_ACCEPT :Accepta STR_GOAL_QUESTION_BUTTON_IGNORE :Ignora @@ -2900,7 +3036,7 @@ 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 @@ -2916,6 +3052,18 @@ STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}Serveis STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING} des de {STRING} fins a {STRING}{YELLOW} ({COMPANY}{YELLOW}, fins a {DATE_SHORT}) 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_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}Vés a la pàgina anterior +STR_STORY_BOOK_NEXT_PAGE :{BLACK}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ó STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}Mantingues polsat CTRL per a seleccionar més d'un ítem @@ -2929,9 +3077,9 @@ 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} en ruta des de {STATION}) +STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} des de {STATION}) +STR_STATION_VIEW_RESERVED :{YELLOW}({CARGO_SHORT} reservat per carregar) STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Accepta STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Mostra la llista de càrregues admeses @@ -2942,8 +3090,31 @@ STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPAN STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Ratis STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Mostra els ratis de l'estació -STR_STATION_VIEW_CARGO_RATINGS_TITLE :{BLACK}Ratis locals del servei de transport: -STR_STATION_VIEW_CARGO_RATING :{WHITE}{STRING}: {YELLOW}{STRING} ({COMMA}%) +STR_STATION_VIEW_SUPPLY_RATINGS_TITLE :{BLACK}Aprovisionament mensual i ratis locals: +STR_STATION_VIEW_CARGO_SUPPLY_RATING :{WHITE}{STRING}: {YELLOW}{COMMA} / {STRING} ({COMMA}%) + +STR_STATION_VIEW_GROUP :{BLACK}Agrupa per +STR_STATION_VIEW_WAITING_STATION :Estació: En espera +STR_STATION_VIEW_WAITING_AMOUNT :Quantitat: En espera +STR_STATION_VIEW_PLANNED_STATION :Estació: Planejada +STR_STATION_VIEW_PLANNED_AMOUNT :Quantitat: Planejada +STR_STATION_VIEW_FROM :{YELLOW}{CARGO_SHORT} des de {STATION} +STR_STATION_VIEW_VIA :{YELLOW}{CARGO_SHORT} via {STATION} +STR_STATION_VIEW_TO :{YELLOW}{CARGO_SHORT} cap a {STATION} +STR_STATION_VIEW_FROM_ANY :{RED}{CARGO_SHORT} des d'estació desconeguda +STR_STATION_VIEW_TO_ANY :{RED}{CARGO_SHORT} cap a qualsevol estació +STR_STATION_VIEW_VIA_ANY :{RED}{CARGO_SHORT} via qualsevol estació +STR_STATION_VIEW_FROM_HERE :{GREEN}{CARGO_SHORT} des d'aquesta estació +STR_STATION_VIEW_VIA_HERE :{GREEN}{CARGO_SHORT} s'atura en aquesta estació +STR_STATION_VIEW_TO_HERE :{GREEN}{CARGO_SHORT} cap aquesta estació +STR_STATION_VIEW_NONSTOP :{YELLOW}{CARGO_SHORT} sense parar + +STR_STATION_VIEW_GROUP_S_V_D :Origen-Via-Destinació +STR_STATION_VIEW_GROUP_S_D_V :Origen-Destinació-Via +STR_STATION_VIEW_GROUP_V_S_D :Via-Origen-Destinació +STR_STATION_VIEW_GROUP_V_D_S :Via-Destinació-Origen +STR_STATION_VIEW_GROUP_D_S_V :Destinació-Origen-Via +STR_STATION_VIEW_GROUP_D_V_S :Destincació-Via-Origen ############ range for rating starts STR_CARGO_RATING_APPALLING :Pèssim @@ -2976,7 +3147,7 @@ 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} @@ -3060,9 +3231,9 @@ STR_BUY_COMPANY_MESSAGE :{WHITE}Busquem # Company infrastructure window STR_COMPANY_INFRASTRUCTURE_VIEW_CAPTION :{WHITE}Infrastructura de {COMPANY} -STR_COMPANY_INFRASTRUCTURE_VIEW_RAIL_SECT :{GOLD}Troços de via: +STR_COMPANY_INFRASTRUCTURE_VIEW_RAIL_SECT :{GOLD}Trossos de via: STR_COMPANY_INFRASTRUCTURE_VIEW_SIGNALS :{WHITE}Senyals -STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD_SECT :{GOLD}Troços de carretera: +STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD_SECT :{GOLD}Trossos de carretera: STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD :{WHITE}Carretera STR_COMPANY_INFRASTRUCTURE_VIEW_TRAMWAY :{WHITE}Tramvia STR_COMPANY_INFRASTRUCTURE_VIEW_WATER_SECT :{GOLD}Cel·les d'aigua: @@ -3070,7 +3241,6 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS :{WHITE}Canals STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}Estacions: STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}Cel·les d'estació STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}Aeroports -STR_COMPANY_INFRASTRUCTURE_VIEW_COST :{WHITE}{1:CURRENCY_LONG}/any ({0:COMMA}) STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL :{WHITE}{CURRENCY_LONG}/any # Industry directory @@ -3087,6 +3257,7 @@ STR_INDUSTRY_VIEW_PRODUCTION_LAST_MONTH_TITLE :{BLACK}Producci STR_INDUSTRY_VIEW_TRANSPORTED :{YELLOW}{CARGO_LONG}{STRING}{BLACK} ({COMMA}% transportat) STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Centra la vista principal al lloc de la indústria. Ctrl+Clic obre una nova vista al lloc de la indústria STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Nivell de producció: {YELLOW}{COMMA}% +STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}La indústria ha anunciat la seva clausura imminent! ############ range for requires starts STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Necessita: {YELLOW}{STRING}{STRING} @@ -3121,7 +3292,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 @@ -3149,12 +3320,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 @@ -3212,15 +3386,15 @@ 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_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_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} @@ -3299,7 +3473,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ó @@ -3321,26 +3495,26 @@ 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_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 @@ -3367,10 +3541,10 @@ STR_VEHICLE_VIEW_CLONE_ROAD_VEHICLE_INFO :{BLACK}Això co STR_VEHICLE_VIEW_CLONE_SHIP_INFO :{BLACK}Això comprarà una còpia del vaixell. Control+Clic compartirà les ordres. Shift+Clic mostra el cost estimat sense comprar-lo STR_VEHICLE_VIEW_CLONE_AIRCRAFT_INFO :{BLACK}Això comprarà una còpia de l'avió. Control+Clic compartirà les ordres. Shift+Clic mostra el cost estimat sense comprar-lo -STR_VEHICLE_VIEW_TRAIN_IGNORE_SIGNAL_TOOLTIP :{BLACK}Obliga al tren a actuar sense esperar a tenir la senyal lliure +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 @@ -3429,7 +3603,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} @@ -3450,6 +3624,11 @@ STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Interval 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 +STR_SERVICE_INTERVAL_DROPDOWN_TOOLTIP :{BLACK}Canvia el tipus d'interval de les revisions +STR_VEHICLE_DETAILS_DEFAULT :{G=Masculin}Predeterminat +STR_VEHICLE_DETAILS_DAYS :{G=Masculin}Dies +STR_VEHICLE_DETAILS_PERCENT :Percentatge + STR_QUERY_RENAME_TRAIN_CAPTION :{WHITE}Anomena tren STR_QUERY_RENAME_ROAD_VEHICLE_CAPTION :{WHITE}Anomena automòbil STR_QUERY_RENAME_SHIP_CAPTION :{WHITE}Anomena vaixell @@ -3493,12 +3672,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 @@ -3516,10 +3695,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 @@ -3538,13 +3717,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ó @@ -3582,25 +3761,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} @@ -3630,18 +3809,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 @@ -3667,9 +3846,13 @@ 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} @@ -3685,7 +3868,7 @@ STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}Aquest h STR_TIMETABLE_STATUS_START_AT :{BLACK}Aquest horari començarpa a {STRING} STR_TIMETABLE_STARTING_DATE :{BLACK}Data de partida -STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Selecciona una data com a punt de partida d'aquest horari +STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Selecciona una data com a punt de partida d'aquest Horari. Ctrl+Click fixa el punt de partida d'aquest Horari i distribueix tots els vehicles que comparteixen aquest ordre equitativament en base al seu ordre relatiu, si l'ordre és totalment inclòs a l'Horari STR_TIMETABLE_CHANGE_TIME :{BLACK}Canvia Temps STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Canvia la quantitat de temps que l'ordre marcada hauria de prendre @@ -3723,49 +3906,49 @@ STR_DATE_YEAR_TOOLTIP :{BLACK}Seleccio # AI debug window -STR_AI_DEBUG :{WHITE}IA/Depuració de l'script del 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}Pausa amb: +STR_AI_DEBUG_BREAK_STR_OSKTITLE :{BLACK}Pausar 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 pausarà 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_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}IA/Configuració dels Scripts del 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_CAPTION :{WHITE}Configuració de la IA/Script de 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_RANDOM_AI :IA aleatòria STR_AI_CONFIG_NONE :(cap) -STR_AI_CONFIG_MOVE_UP :{BLACK}Mou Amunt +STR_AI_CONFIG_MOVE_UP :{BLACK}Mou amunt STR_AI_CONFIG_MOVE_UP_TOOLTIP :{BLACK}Mou la IA selecionada amunt a la llista -STR_AI_CONFIG_MOVE_DOWN :{BLACK}Mou Avall +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 @@ -3773,7 +3956,7 @@ STR_AI_CONFIG_CONFIGURE_TOOLTIP :{BLACK}Configur # Available AIs window STR_AI_LIST_CAPTION :{WHITE}Disponible {STRING} STR_AI_LIST_CAPTION_AI :IA -STR_AI_LIST_CAPTION_GAMESCRIPT :Scripts del Joc +STR_AI_LIST_CAPTION_GAMESCRIPT :Script de la Partida STR_AI_LIST_TOOLTIP :{BLACK}Clica per a seleccionar un script STR_AI_LIST_AUTHOR :{LTBLUE}Autor: {ORANGE}{STRING} @@ -3788,18 +3971,20 @@ STR_AI_LIST_CANCEL_TOOLTIP :{BLACK}No canv # 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_GAMESCRIPT :Script de la Partida STR_AI_SETTINGS_CLOSE :{BLACK}Tanca STR_AI_SETTINGS_RESET :{BLACK}Reset 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 @@ -3821,27 +4006,31 @@ STR_INCOME_FLOAT_INCOME_SMALL :{TINY_FONT}{GRE STR_INCOME_FLOAT_INCOME :{GREEN}Ingressos: {CURRENCY_LONG} STR_FEEDER_TINY :{TINY_FONT}{YELLOW}Transfereix: {CURRENCY_LONG} STR_FEEDER :{YELLOW}Transfereix: {CURRENCY_LONG} +STR_FEEDER_INCOME_TINY :{TINY_FONT}{YELLOW}Transferència: {CURRENCY_LONG}{WHITE} / {GREEN}Ingressos: {CURRENCY_LONG} +STR_FEEDER_INCOME :{YELLOW}Transferència: {CURRENCY_LONG}{WHITE} / {GREEN}Ingressos: {CURRENCY_LONG} +STR_FEEDER_COST_TINY :{TINY_FONT}{YELLOW}Transferència: {CURRENCY_LONG}{WHITE} / {RED}Cost: {CURRENCY_LONG} +STR_FEEDER_COST :{YELLOW}Transferència: {CURRENCY_LONG}{WHITE} / {RED}Cost: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_COST :{WHITE}Cost Estimat: {CURRENCY_LONG} 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 a 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... @@ -3862,7 +4051,7 @@ STR_WARNING_FALLBACK_SOUNDSET :{WHITE}Només s # Screenshot related messages STR_WARNING_SCREENSHOT_SIZE_CAPTION :{WHITE}Captura de pantalla enorme -STR_WARNING_SCREENSHOT_SIZE_MESSAGE :{YELLOW}La captura de pantalla tindrà una resolució de {COMMA} x {COMMA} pixels. Es tardarà una estona a fer la captura. Vols continuar? +STR_WARNING_SCREENSHOT_SIZE_MESSAGE :{YELLOW}La captura de pantalla tindrà una resolució de {COMMA} x {COMMA} píxels. Es tardarà una estona a fer la captura. Vols continuar? STR_MESSAGE_SCREENSHOT_SUCCESSFULLY :{WHITE}Captura de pantalla desada correctament com a '{STRING}' STR_ERROR_SCREENSHOT_FAILED :{WHITE}Error en la captura de pantalla! @@ -3901,7 +4090,7 @@ STR_ERROR_BRIBE_FAILED :{WHITE}El teu i STR_ERROR_CAN_T_RAISE_LAND_HERE :{WHITE}Aquí no es pot elevar el terreny... 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}La excavació pot malmetre el túnel +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_TOO_HIGH :{WHITE}Massa alt STR_ERROR_ALREADY_LEVELLED :{WHITE}... ja és pla @@ -3926,15 +4115,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 Paràmetres avançats->Economia->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 @@ -3998,14 +4187,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! @@ -4043,7 +4232,7 @@ STR_ERROR_AUTOREPLACE_MONEY_LIMIT :(límit de dine # Rail construction errors STR_ERROR_IMPOSSIBLE_TRACK_COMBINATION :{WHITE}Combinació de vies impossible -STR_ERROR_MUST_REMOVE_SIGNALS_FIRST :{WHITE}Abans s'han de treure les senyals +STR_ERROR_MUST_REMOVE_SIGNALS_FIRST :{WHITE}Abans s'han de treure els senyals STR_ERROR_NO_SUITABLE_RAILROAD_TRACK :{WHITE}Via de tren no apropiada STR_ERROR_MUST_REMOVE_RAILROAD_TRACK :{WHITE}S'ha de treure la via primer STR_ERROR_CROSSING_ON_ONEWAY_ROAD :{WHITE}La carretera és un d'un sol sentit o està bloquejada @@ -4051,8 +4240,8 @@ STR_ERROR_CROSSING_DISALLOWED :{WHITE}Els pass STR_ERROR_CAN_T_BUILD_SIGNALS_HERE :{WHITE}Aquí no es poden construir senyals... STR_ERROR_CAN_T_BUILD_RAILROAD_TRACK :{WHITE}Aquí no es pot construir la via de tren... STR_ERROR_CAN_T_REMOVE_RAILROAD_TRACK :{WHITE}Aquí no es pot treure la via de tren... -STR_ERROR_CAN_T_REMOVE_SIGNALS_FROM :{WHITE}Aquí no es poden treure les senyals... -STR_ERROR_SIGNAL_CAN_T_CONVERT_SIGNALS_HERE :{WHITE}Aquí no es pot convertir les senyals... +STR_ERROR_CAN_T_REMOVE_SIGNALS_FROM :{WHITE}Aquí no es poden treure els senyals... +STR_ERROR_SIGNAL_CAN_T_CONVERT_SIGNALS_HERE :{WHITE}Aquí no es poden convertir els senyals... STR_ERROR_THERE_IS_NO_RAILROAD_TRACK :{WHITE}... no hi ha via de tren STR_ERROR_THERE_ARE_NO_SIGNALS :{WHITE}... no hi ha senyals @@ -4117,6 +4306,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... @@ -4128,7 +4318,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ó... @@ -4172,6 +4362,11 @@ STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}No es po STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... vehicle està destruït +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 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... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}No es pot invertir la direcció del tren... @@ -4207,13 +4402,23 @@ STR_ERROR_TIMETABLE_NOT_STOPPING_HERE :{WHITE}Aquest v # Sign related errors STR_ERROR_TOO_MANY_SIGNS :{WHITE}... massa senyals -STR_ERROR_CAN_T_PLACE_SIGN_HERE :{WHITE}Aquí no es pot situar una senyal... +STR_ERROR_CAN_T_PLACE_SIGN_HERE :{WHITE}Aquí no es pot situar un senyal... STR_ERROR_CAN_T_CHANGE_SIGN_NAME :{WHITE}No es pot canviar el nom del senyal... -STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}La senyal no es pot esborrar... +STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}El senyal no es pot esborrar... # Translatable comment for OpenTTD's desktop shortcut STR_DESKTOP_SHORTCUT_COMMENT :Un joc de simulació basat en Transport Tycoon Deluxe +# Translatable descriptions in media/baseset/*.ob* files +STR_BASEGRAPHICS_DOS_DESCRIPTION :Gràfics originals de Transport Tycoon Deluxe per a DOS. +STR_BASEGRAPHICS_DOS_DE_DESCRIPTION :Gràfics originals de Transport Tycoon Deluxe per a DOS (Alemany). +STR_BASEGRAPHICS_WIN_DESCRIPTION :Gràfics originals de Transport Tycoon Deluxe per a Windows. +STR_BASESOUNDS_DOS_DESCRIPTION :Sons originals de Transport Tycoon Deluxe per a DOS. +STR_BASESOUNDS_WIN_DESCRIPTION :Sons originals de Transport Tycoon Deluxe per a Windows. +STR_BASESOUNDS_NONE_DESCRIPTION :Un joc de sons sense cap so. +STR_BASEMUSIC_WIN_DESCRIPTION :Música Original de Transport Tycoon Deluxe per a Windows. +STR_BASEMUSIC_NONE_DESCRIPTION :Un joc de música sense cap música. + ##id 0x2000 # Town building names STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1 :Bloc d'oficines alt @@ -4306,28 +4511,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 @@ -4336,7 +4541,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) @@ -4355,10 +4560,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ó @@ -4386,8 +4591,8 @@ 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_MAIL_VAN :{G=Masculin}Vagó per Correu @@ -4416,10 +4621,10 @@ 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_MAIL_VAN :{G=Masculin}Vagó per Correu @@ -4545,7 +4750,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 @@ -4596,21 +4801,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 @@ -4660,8 +4865,9 @@ 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_SPACE_STRING :{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} @@ -4685,9 +4891,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 8e41aca0b..267b3895a 100644 --- a/src/lang/croatian.txt +++ b/src/lang/croatian.txt @@ -295,21 +295,28 @@ STR_UNITS_POWER_IMPERIAL :{COMMA}KS STR_UNITS_POWER_METRIC :{COMMA}KS 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 e e} STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} ton{P a e a} 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 "" "" i} STR_UNITS_VOLUME_LONG_METRIC :{COMMA} lit{P ra re ara} 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 @@ -317,6 +324,7 @@ STR_LIST_FILTER_TITLE :{BLACK}Filtrira STR_LIST_FILTER_OSKTITLE :{BLACK}Unesi znak za filter STR_LIST_FILTER_TOOLTIP :{BLACK}Unesite ključnu riječ kako bi filtrirali popis +STR_TOOLTIP_GROUP_ORDER :{BLACK}Odaberi naredbu za grupiranje STR_TOOLTIP_SORT_ORDER :{BLACK}Izaberi način sortiranja (silazno/uzlazno) STR_TOOLTIP_SORT_CRITERIA :{BLACK}Izaberi kriterij za sortiranje STR_TOOLTIP_FILTER_CRITERIA :{BLACK}Odaberi kriterij filtriranja @@ -328,7 +336,8 @@ STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Zatvori STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Naslov prozora - povuci ovo za micanje prozora STR_TOOLTIP_SHADE :{BLACK}Zasjeni prozor - prikaži samo naslovnu traku STR_TOOLTIP_DEBUG :{BLACK}Prikaži NewGRF debug informacije -STR_TOOLTIP_STICKY :{BLACK}Označi ovaj prozor nezatvorivim prilikom uporabe tipke 'Zatvori sve prozore' +STR_TOOLTIP_DEFSIZE :{BLACK}Promijeni veličinu prozora na osnovnu postavljenu veličinu. Ctrl+Klik za spremanje trenutne veličine kao osnovno postavljene veličine +STR_TOOLTIP_STICKY :{BLACK}Označi ovaj prozor nezatvorivim prilikom uporabe tipke 'Zatvori sve prozore'. Ctrl+Klik također sprema trenutni status kao osnovni STR_TOOLTIP_RESIZE :{BLACK}Klikni i povuci za promjenu veličine ovog prozora STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Namjesti veliku/malu veličinu prozora STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Klizna traka - lista gore/dolje @@ -352,7 +361,6 @@ STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}Područj # These are used in buttons -STR_SORT_BY_CAPTION_POPULATION :{BLACK}Stanovništvo STR_SORT_BY_CAPTION_NAME :{BLACK}Ime STR_SORT_BY_CAPTION_DATE :{BLACK}Datum # These are used in dropdowns @@ -373,18 +381,21 @@ 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_WAITING :Vrijednost tereta koji čeka +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 STR_SORT_BY_RATING_MIN :Najniža ocjena tereta STR_SORT_BY_ENGINE_ID :MotorID (standardno sortiranje) 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 +STR_SORT_BY_RATING :Rejting # Tooltips for the main toolbar STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Zaustavi igru @@ -397,6 +408,8 @@ STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Prikaži STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Prikaži popis postaja u vlasništvu tvrtke STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Prikaži financijske podatke tvrtke STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Prikaži opće podatke tvrtke +STR_TOOLBAR_TOOLTIP_DISPLAY_STORY_BOOK :{BLACK}Prikaži priču +STR_TOOLBAR_TOOLTIP_DISPLAY_GOALS_LIST :{BLACK}Prikaži listu ciljeva STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Prikaži grafikone STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Prikaži tablicu lige tvrtki STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Financiraj izgradnju nove industrije @@ -467,19 +480,19 @@ STR_FILE_MENU_SEPARATOR : STR_FILE_MENU_EXIT :Izlaz ############ range ends here -############ range for map menu starts +# map menu STR_MAP_MENU_MAP_OF_WORLD :Karta svijeta STR_MAP_MENU_EXTRA_VIEW_PORT :Dodatni pogled +STR_MAP_MENU_LINGRAPH_LEGEND :Legenda protoka tereta STR_MAP_MENU_SIGN_LIST :Popis znakova -############ range for town menu starts, yet the town directory is shown in the map menu in the scenario editor + +############ range for town menu starts STR_TOWN_MENU_TOWN_DIRECTORY :Popis gradova -############ end of the 'Display map' dropdown STR_TOWN_MENU_FOUND_TOWN :Osnuj grad -############ end of the 'Town' dropdown +############ range ends here ############ range for subsidies menu starts STR_SUBSIDIES_MENU_SUBSIDIES :Subvencije -STR_SUBSIDIES_MENU_GOAL :Trenutni ciljevi ############ range ends here ############ range for graph menu starts @@ -553,7 +566,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. @@ -569,22 +582,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 @@ -746,7 +777,7 @@ STR_HIGHSCORE_PERFORMANCE_TITLE_CAPITALIST :Kapitalist STR_HIGHSCORE_PERFORMANCE_TITLE_MAGNATE :Velikaš STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL :Bogataš STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY :Tajkun stoljeća -STR_HIGHSCORE_NAME :{BIG_FONT}{PRESIDENT_NAME}, {COMPANY} +STR_HIGHSCORE_NAME :{PRESIDENT_NAME}, {COMPANY} STR_HIGHSCORE_STATS :{BIG_FONT}'{STRING}' ({COMMA}) STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{BLACK}Tvrtka {COMPANY} postigla je status '{STRING}' ! STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{WHITE}{PRESIDENT_NAME} iz tvrtke {COMPANY} postigao je status '{STRING}'! @@ -757,17 +788,20 @@ STR_SMALLMAP_CAPTION :{WHITE}Karta - STR_SMALLMAP_TYPE_CONTOURS :Obrisi STR_SMALLMAP_TYPE_VEHICLES :Vozila STR_SMALLMAP_TYPE_INDUSTRIES :Industrije +STR_SMALLMAP_TYPE_ROUTEMAP :Protok tereta STR_SMALLMAP_TYPE_ROUTES :Trase STR_SMALLMAP_TYPE_VEGETATION :Vegetacija STR_SMALLMAP_TYPE_OWNERS :Vlasnici STR_SMALLMAP_TOOLTIP_SHOW_LAND_CONTOURS_ON_MAP :{BLACK}Pokaži obrise zemlje na karti STR_SMALLMAP_TOOLTIP_SHOW_VEHICLES_ON_MAP :{BLACK}Pokaži vozila na karti STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRIES_ON_MAP :{BLACK}Pokaži industrije na karti +STR_SMALLMAP_TOOLTIP_SHOW_LINK_STATS_ON_MAP :{BLACK}Prikaži protok tereta na mapi STR_SMALLMAP_TOOLTIP_SHOW_TRANSPORT_ROUTES_ON :{BLACK}Pokaži prijevozne trase na karti 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_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 STR_SMALLMAP_LEGENDA_RAILROADS :{TINY_FONT}{BLACK}Željeznice @@ -801,6 +835,7 @@ STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLA STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Prikaži/sakrij imena gradova na karti STR_SMALLMAP_CENTER :{BLACK}Centriraj malu kartu na trenutni položaj 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}Onemogući sve @@ -811,6 +846,8 @@ STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES :{BLACK}Prikaži 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_CARGOS :{BLACK}Prikaži bez tereta na mapi +STR_SMALLMAP_TOOLTIP_ENABLE_ALL_CARGOS :{BLACK}Prikaži sve terete na mapi # Status bar messages STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Pokaži zadnju poruku ili vijest @@ -887,13 +924,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 aerodrom sa prekratkom sletnom stazom STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} postaje star STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} postaje vrlo star @@ -972,15 +1008,12 @@ STR_GAME_OPTIONS_CURRENCY_LTL :Litvanski Litas STR_GAME_OPTIONS_CURRENCY_KRW :Južnokorejski Won (KRW) STR_GAME_OPTIONS_CURRENCY_ZAR :Južnoafrički Rand (ZAR) STR_GAME_OPTIONS_CURRENCY_CUSTOM :Proizvoljno... +STR_GAME_OPTIONS_CURRENCY_GEL :Gruzijski Lari (GEL) +STR_GAME_OPTIONS_CURRENCY_IRR :Iranski Rial (IRR) ############ end of currency region -STR_GAME_OPTIONS_MEASURING_UNITS_FRAME :{BLACK}Mjerni sustav -STR_GAME_OPTIONS_MEASURING_UNITS_DROPDOWN_TOOLTIP :{BLACK}Izbor mjernog sustava ############ start of measuring units region -STR_GAME_OPTIONS_MEASURING_UNITS_IMPERIAL :Imperijalni -STR_GAME_OPTIONS_MEASURING_UNITS_METRIC :Metrički -STR_GAME_OPTIONS_MEASURING_UNITS_SI :SI ############ end of measuring units region STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Cestovna vozila @@ -1018,11 +1051,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 @@ -1034,9 +1069,6 @@ 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_BASE_GRF :{BLACK}Osnovni set grafike STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Odaberi osnovni grafički set za igru STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} datotek{P a e a} nedostaj{P e u e}/korumpiran{P a e o} @@ -1051,6 +1083,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 @@ -1150,8 +1183,9 @@ STR_CONFIG_SETTING_TYPE_GAME_INGAME :Postavke igre ( 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_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 :Osnovne postavke STR_CONFIG_SETTING_RESTRICT_ADVANCED :Napredne postavke STR_CONFIG_SETTING_RESTRICT_ALL :Postavke za napredne korisnike / sve postavke @@ -1159,12 +1193,16 @@ STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :Postavke sa dru STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :Postavke sa drugačijim vrijednostima od postavki vaše nove igre STR_CONFIG_SETTING_TYPE_DROPDOWN_HELPTEXT :{BLACK}Dozvoljava popis samo ispod određene postavke -STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :Sve postavke +STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :Sve vrste postavki 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_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 @@ -1197,17 +1235,15 @@ STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT :Postavi koliko STR_CONFIG_SETTING_CONSTRUCTION_COSTS :Građevinski troškovi: {STRING} STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :Postavi razinu građevinskih troškova i troškova kupnje STR_CONFIG_SETTING_RECESSIONS :Recesije: {STRING} -STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Ukoliko je uključeno, recesija se može pojaviti svakih nekoliko godine. Tijekom recesije sva proizvodnja je značajno manja (vraća se na prethodnu razinu kada recesija završi) +STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Ukoliko je uključeno, recesija se može pojaviti svakih nekoliko godina. Tijekom recesije sva proizvodnja je značajno manja (vraća se na prethodnu razinu kada recesija završi) STR_CONFIG_SETTING_TRAIN_REVERSING :Zabrani okretanje vlakova na stanicama: {STRING} -STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :Ukoliko je uključeno, vlakovi se neće okretati na stanicama koje nisu krajnje ukoliko postoji kraći put do njihovog sljedećeg odredišta prilikom okretanja +STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :Ukoliko je uključeno, vlakovi se neće okretati na stanicama koje nisu krajnje čak i ukoliko postoji kraći put do njihovog sljedećeg odredišta prilikom okretanja 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_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 :Dopusti modeliranje zemlje ispod građevina, tračnica, itd.: {STRING} STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Dozvoli 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 @@ -1231,14 +1267,8 @@ STR_CONFIG_SETTING_FORBID_90_DEG :Zabrani vlakovi 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_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_TUNNEL_LENGTH :Najveća dužina tunela: {STRING} @@ -1266,8 +1296,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 @@ -1298,10 +1326,6 @@ STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Dopusti prolazn STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :Dozvoli izgradnju prolaznih stanica za 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_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 @@ -1340,27 +1364,41 @@ STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :Prikaži popula 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 @@ -1381,7 +1419,7 @@ STR_CONFIG_SETTING_SMOOTH_SCROLLING :Glatko klizanje 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 :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 kompanija) STR_CONFIG_SETTING_LIVERIES_NONE :Nijedna STR_CONFIG_SETTING_LIVERIES_OWN :Vlastita tvrtka @@ -1411,17 +1449,15 @@ 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} @@ -1430,7 +1466,7 @@ 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 @@ -1471,13 +1507,13 @@ 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 :Maksimalni 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 :Maksimalni 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 :Maksimalni 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 :Maksimalni broj brodova po kompaniji: {STRING} STR_CONFIG_SETTING_MAX_SHIPS_HELPTEXT :Najveći broj brodova koje može imati kompanija STR_CONFIG_SETTING_AI_BUILDS_TRAINS :Isključi vlakove za računalo: {STRING} @@ -1595,7 +1631,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 dva aerodroma u svakom gradu. Kada je ova postavka uključena, broj aerodroma u nekom gradu je limitirana količinom dozvoljene buke u gradu, koja ovisi o populaciji i udaljenosti i veličini aerodroma 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 @@ -1643,28 +1679,90 @@ 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_GUI :{ORANGE}Sučelje -STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}Izgradnja +STR_CONFIG_SETTING_LINKGRAPH_INTERVAL :Ažuriraj povezni grafikon svakih {STRING} 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_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 +STR_CONFIG_SETTING_DISTRIBUTION_SYMMETRIC :simetrično +STR_CONFIG_SETTING_DISTRIBUTION_PAX :Način distribucije za putnike: {STRING} +STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :"Simetrično" znači da će se otprilike isti broj putnika slati od stanice A prema stanici B ako od B prema A. "Asimetrično" znači da će se proizvoljni brojevi putnika slati u oba smjera. "Ručno" znači da se distribucija za putnike neće vršiti automatski. +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_DEFAULT :Način distribucije za ostale klase tereta: {STRING} +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} +STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT :Ako postavite ovo na vrijednost veću od 0, udaljenost između izvorne stanice A nekog tereta i mogućeg odredišta B će imati efekt na količinu tereta poslanu od A do B. Čim je B dalje od A, manje će tereta biti poslano. Čim veću vrijednost postavite, manje tereta će biti slano na dalje stanice a više tereta na bliže stanice. +STR_CONFIG_SETTING_DEMAND_SIZE :Količina povratnog tereta za simetrični način: {STRING} +STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :Postavljajući ovo na manje od 100% daje da se simetrična distribucija ponaša sličnije asimetričnoj distribuciji. Manje tereta će se prisilno vraćati ukoliko je određena količina poslana na stanicu. Ako postavku namjestite na 0%, simetrična distribucija se ponaša točno kao asimetrična distribucija. +STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Popunjenost kratkih puteva prije korištenja puteva s visokim kapacitetom: {STRING} +STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Često postoji više puteva izmeđe dvije stanice. Cargodist će prvo popuniti najkraći put, nakon toga koristiti drugi najkraći put dok se ne popuni itd. Popunjenost se određuje procjenom kapaciteta i planirane uporabe. Jednom kad se popune svi putevi i ako i dalje postoji potreba, pretrpati će sve puteve preferirajući one sa visokim kapacitetom. Ipak, algoritam najčešće neće procijeniti kapacitet točno. Ova postavka vam omogućuje da specificirate do kojeg postotka će kraći put biti popunjavan u prvom prolazu prije nego se počne popunjavati sljedeći put. Namjestite ga na manje od 100% da bi izbjegli prenapučene stanice u slučaju previsoko procijenjenog kapaciteta. + +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Jedinice brzine: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_HELPTEXT :Uvijek kada je brzina prikazana u korisničkom sučelju, prikaži je u odabranim jedinicama +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_IMPERIAL :Imperijalni (mph) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_METRIC :Metrički (km/h) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_SI :SI (m/s) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER :Jedinice snage vozila: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_HELPTEXT :Uvijek kada je snaga vozila prikazana u korisničkom sučelju, prikaži je u odabranim jedinicama +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_IMPERIAL :Imperijalni (hp) +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_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_IMPERIAL :Imperijalni (gal) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_METRIC :Metrički (l) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_SI :SI (m³) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE :Jedinice vučne snage: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_HELPTEXT :Uvijek kada je vučna snaga (vučna sila) prikazana u korisničnom sučelju, prikaži je u odabranim jedinicama +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_IMPERIAL :Imperijalni (lbf) +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_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_LOCALISATION :{ORANGE}Lokalizacija +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}Kompanija +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_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 @@ -1698,6 +1796,8 @@ STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_ALGORITHM :{WHITE}... form STR_CONFIG_ERROR_INVALID_BASE_GRAPHICS_NOT_FOUND :{WHITE}... zaobilazim Osnovni Grafički set '{STRING}': nije pronađen STR_CONFIG_ERROR_INVALID_BASE_SOUNDS_NOT_FOUND :{WHITE}... zaobilazim Osnovni Zvukovni set '{STRING}': nije pronađen STR_CONFIG_ERROR_INVALID_BASE_MUSIC_NOT_FOUND :{WHITE}... zaobilazim Osnovni Muzički set '{STRING}': nije pronađen +STR_CONFIG_ERROR_OUT_OF_MEMORY :{WHITE}Nedostaje memorije +STR_CONFIG_ERROR_SPRITECACHE_TOO_BIG :{WHITE}Dodjeljivanje {BYTES} predmemorije spriteova nije uspjelo. Predmemorija spriteova je smanjena na {BYTES}. Ovo će smanjiti performanse OpenTTD-a. Za smanjivanje potreba memorije you možete pokušati isključiti 32bpp grafiku i/ili razine zumiranja. # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} @@ -1819,6 +1919,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 @@ -1874,10 +1975,10 @@ STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}Promijen # Network server list STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}Više igrača -STR_NETWORK_SERVER_LIST_CONNECTION :{BLACK}Veza: -STR_NETWORK_SERVER_LIST_CONNECTION_TOOLTIP :{BLACK}Izaberi između internetske igre ili igre preko lokalne mreže (LAN) -STR_NETWORK_SERVER_LIST_LAN :LAN -STR_NETWORK_SERVER_LIST_INTERNET :Internet +STR_NETWORK_SERVER_LIST_ADVERTISED :{BLACK}Sa oglasima +STR_NETWORK_SERVER_LIST_ADVERTISED_TOOLTIP :{BLACK}Odaberi između igre s oglasima (internet) i bez oglasa (Local Area Network, LAN) +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}Ovo je ime po kojem će te drugi igrači raspoznavati @@ -1936,16 +2037,16 @@ STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP :{BLACK}Ime igre STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}Postavi zaporku STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Zaštiti svoju igru pomoću zaporke ukoliko ne želiš da bude javno dostupna -STR_NETWORK_START_SERVER_LAN_INTERNET :LAN / Internet -STR_NETWORK_START_SERVER_INTERNET_ADVERTISE :Internet (oglasi) +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 @@ -2058,6 +2159,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 @@ -2176,6 +2278,10 @@ STR_CONTENT_SELECT_UPDATES_CAPTION :{BLACK}Izaberi STR_CONTENT_SELECT_UPDATES_CAPTION_TOOLTIP :{BLACK}Označi sav sadržaj koji je nadogradnja postojećem sadržaju kako bi ga preuzeo STR_CONTENT_UNSELECT_ALL_CAPTION :{BLACK}Odznači sve STR_CONTENT_UNSELECT_ALL_CAPTION_TOOLTIP :{BLACK}Označi sav sadržaj koji se ne preuzima +STR_CONTENT_SEARCH_EXTERNAL :{BLACK}Pretraži vanjske web stranice +STR_CONTENT_SEARCH_EXTERNAL_TOOLTIP :{BLACK}Traženje sadržaja nije dostupno u OpenTTD-ovom servisu za sadržaje za web stranice koje nisu pridružene OpenTTD-u +STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER_CAPTION :{WHITE}Napuštate OpenTTD! +STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER :{WHITE}Pravila i uvjeti za preuzimanje sadržaja sa vanjskih web stranica variraju.{}Morate pogledati vanjske stranice za upute kako instalirati sadržaj u OpenTTD.{}Da li želite nastaviti? STR_CONTENT_FILTER_TITLE :{BLACK}Ime/Tag filter: STR_CONTENT_OPEN_URL :{BLACK}Posjetite web-stranicu STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}Posjetite web-stranicu za ovaj sadržaj @@ -2245,6 +2351,17 @@ STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}Aktivira STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Namjesti prozirnost za indikatore učitavanja. Ctrl+klik za zaključavanje STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}Učini objekte nevidljivima umjesto prozirnima +# Linkgraph legend window +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 + +# Linkgraph legend window and linkgraph legend in smallmap +STR_LINKGRAPH_LEGEND_UNUSED :{TINY_FONT}{BLACK}nekorišten +STR_LINKGRAPH_LEGEND_SATURATED :{TINY_FONT}{BLACK}zasićen +STR_LINKGRAPH_LEGEND_OVERLOADED :{TINY_FONT}{BLACK}prekrcan + # Base for station construction window(s) STR_STATION_BUILD_COVERAGE_AREA_TITLE :{BLACK}Označavanje područja pokrivanja STR_STATION_BUILD_COVERAGE_OFF :{BLACK}Isključeno @@ -2322,7 +2439,7 @@ STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}Izlazni STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}Kombo signal (električni){}Kombo signal jednostavno radi kao ulazni i izlazni signal. Ovo omogućava izgradnju velike "mreže" pred-signala. STR_BUILD_SIGNAL_ELECTRIC_PBS_TOOLTIP :{BLACK}Putni signal (električni){}Putni signal omogućava da više od jednog vlaka uđe istovremeno u signalni blok, ako vlak može rezervirati putanju do sigurnog zaustavnog mjesta. Standardne putne signale moguće je proći iz suprotnog smjera STR_BUILD_SIGNAL_ELECTRIC_PBS_OWAY_TOOLTIP :{BLACK}Jednosmjerni putni signal (električni){}Putni znak omogućava da više od jednog vlaka uđe istovremeno u signalni blok, ako vlak može rezervirati putanju do sigurnog zaustavnog mjesta. Jednosmjerne putne signale nije moguće proći iz suprotnog smjera. -STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}Pretvaranje signala{}Kada je odabrano, klikanjem na postojeći signal pretvara taj signal u odabranu vrstu i varijantu, Ctrl+Klik mijenja postojeću varijantu. Shift+Klik prikazuje trošak pretvorbe. +STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}Pretvaranje signala{}Kada je odabrano, klikanjem na postojeći signal pretvara taj signal u odabranu vrstu i varijantu, Ctrl+Klik mijenja postojeću varijantu. Shift+Klik prikazuje procjenu troška pretvorbe STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_TOOLTIP :{BLACK}Gustoća signala prilikom izgradnje STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_DECREASE_TOOLTIP :{BLACK}Smanji gustoću signala prilikom izgradnje STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_INCREASE_TOOLTIP :{BLACK}Povećaj gustoću signala prilikom izgradnje @@ -2547,6 +2664,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 @@ -2643,7 +2761,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-2012 OpenTTD tim +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2014 OpenTTD tim # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Spremi igru @@ -2662,6 +2780,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} @@ -2672,6 +2791,7 @@ STR_SAVELOAD_OSKTITLE :{BLACK}Upiši i # World generation STR_MAPGEN_WORLD_GENERATION_CAPTION :{WHITE}Izrada svijeta STR_MAPGEN_MAPSIZE :{BLACK}Veličina karte: +STR_MAPGEN_MAPSIZE_TOOLTIP :{BLACK}Odaberi veličinu mape u poljima. Broj dostupnih polja biti će malo manji STR_MAPGEN_BY :{BLACK}* STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Broj gradova: STR_MAPGEN_DATE :{BLACK}Datum: @@ -2679,10 +2799,6 @@ STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Broj ind 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: @@ -2709,7 +2825,6 @@ 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_SNOW_LINE_QUERY_CAPT :{WHITE}Promijeni visinu linije snijega STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Promijeni početnu godinu @@ -2764,7 +2879,9 @@ 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_FILE_TOOLTIP :{BLACK}Popis instaliranih NewGRF datoteka. +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 STR_NEWGRF_SETTINGS_SHOW_PARAMETERS :{BLACK}Prikaži parametre @@ -2788,6 +2905,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 @@ -2858,6 +2985,7 @@ STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}Spremat STR_NEWGRF_DUPLICATE_GRFID :{WHITE}Ne mogu dodati datoteku: dupli GRF ID STR_NEWGRF_COMPATIBLE_LOADED :{ORANGE}Odgovarajuća datoteka nije pronađena (kompatibilni GRF podignut) +STR_NEWGRF_TOO_MANY_NEWGRFS :{WHITE}Nemoguće dodati datoteku: dosegnut limit broja NewGRF datoteka STR_NEWGRF_COMPATIBLE_LOAD_WARNING :{WHITE}Kompatibilni GRF(ovi) učitani umjesto nepronađenih datoteka STR_NEWGRF_DISABLED_WARNING :{WHITE}Nepronađene GRF datoteke su isključene @@ -2874,6 +3002,7 @@ STR_NEWGRF_LIST_MISSING :{RED}Nedostaju 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_CAPACITY :{WHITE}Promijenilo je kapacitet vozila za '{1:ENGINE}' kada nije u depou 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 @@ -2888,6 +3017,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... @@ -2969,10 +3101,14 @@ STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT :{YELLOW}Kupi je STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}Podmiti lokalnu samoupravu kako bi povećao ugled, riskirajući ozbiljne kazne ako te uhvate.{} Trošak: {CURRENCY_LONG} # Goal window -STR_GOALS_CAPTION :{WHITE}Ciljevi +STR_GOALS_CAPTION :{WHITE}{COMPANY} Ciljevi +STR_GOALS_SPECTATOR_CAPTION :{WHITE}Globalni ciljevi STR_GOALS_GLOBAL_TITLE :{BLACK}Globalni ciljevi: STR_GOALS_TEXT :{ORANGE}{STRING} STR_GOALS_NONE :{ORANGE}- Nijedan - +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 @@ -3011,6 +3147,18 @@ STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}Usluge k STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING} iz {STRING} prema {STRING}{YELLOW} ({COMPANY}{YELLOW}, do {DATE_SHORT}) STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Klikni na uslugu za centriranje pogleda na industriju/grad. Ctrl+klik otvara novi prozor sa lokacijom industrije/grada +# Story book window +STR_STORY_BOOK_CAPTION :{WHITE}{COMPANY} Priča +STR_STORY_BOOK_SPECTATOR_CAPTION :{WHITE}Globalna priča +STR_STORY_BOOK_TITLE :{YELLOW}{STRING} +STR_STORY_BOOK_GENERIC_PAGE_ITEM :Stranica {NUM} +STR_STORY_BOOK_SEL_PAGE_TOOLTIP :{BLACK}Preskoči na specifičnu stranicu odabravši je iz liste. +STR_STORY_BOOK_PREV_PAGE :{BLACK}Prethodno +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 STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}Drži Ctrl kako bi odabrao više od jedne stavke @@ -3024,9 +3172,9 @@ 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}dolazi iz {STATION}) +STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} iz {STATION}) +STR_STATION_VIEW_RESERVED :{YELLOW}({CARGO_SHORT} rezervirano za ukrcaj) STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Prihvaća STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Pokaži popis tereta koji se prihvaća @@ -3037,8 +3185,31 @@ STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPAN STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Ocjene STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Pokaži ocjene postaje -STR_STATION_VIEW_CARGO_RATINGS_TITLE :{BLACK}Lokalna ocjena usluge prijevoza: -STR_STATION_VIEW_CARGO_RATING :{WHITE}{STRING}: {YELLOW}{STRING} ({COMMA}%) +STR_STATION_VIEW_SUPPLY_RATINGS_TITLE :{BLACK}Mjesečna dostava i lokalni rejting: +STR_STATION_VIEW_CARGO_SUPPLY_RATING :{WHITE}{STRING}: {YELLOW}{COMMA} / {STRING} ({COMMA}%) + +STR_STATION_VIEW_GROUP :{BLACK}Grupiraj po +STR_STATION_VIEW_WAITING_STATION :Stanica: Na čekanju +STR_STATION_VIEW_WAITING_AMOUNT :Iznos: Na čekanju +STR_STATION_VIEW_PLANNED_STATION :Stanica: Planirana +STR_STATION_VIEW_PLANNED_AMOUNT :Iznos: Planirani +STR_STATION_VIEW_FROM :{YELLOW}{CARGO_SHORT} od {STATION} +STR_STATION_VIEW_VIA :{YELLOW}{CARGO_SHORT} putem {STATION} +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} putem bilo koje stanice +STR_STATION_VIEW_FROM_HERE :{GREEN}{CARGO_SHORT} od ove stanice +STR_STATION_VIEW_VIA_HERE :{GREEN}{CARGO_SHORT} staje na ovoj stanici +STR_STATION_VIEW_TO_HERE :{GREEN}{CARGO_SHORT} do ove stanice +STR_STATION_VIEW_NONSTOP :{YELLOW}{CARGO_SHORT} bez zaustavljanja + +STR_STATION_VIEW_GROUP_S_V_D :Ishodište-Putem-Odredište +STR_STATION_VIEW_GROUP_S_D_V :Ishodište-Odredište-Putem +STR_STATION_VIEW_GROUP_V_S_D :Putem-Ishodište-Odredište +STR_STATION_VIEW_GROUP_V_D_S :Putem-Odredište-Ishodište +STR_STATION_VIEW_GROUP_D_S_V :Odredište-Ishodište-Putem +STR_STATION_VIEW_GROUP_D_V_S :Odredište-Putem-Ishodište ############ range for rating starts STR_CARGO_RATING_APPALLING :Užasno @@ -3095,7 +3266,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 @@ -3165,7 +3336,6 @@ 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_COST :{WHITE}{1:CURRENCY_LONG}/god ({0:COMMA}) STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL :{WHITE}{CURRENCY_LONG}/god # Industry directory @@ -3182,6 +3352,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}Centriraj glavni pogled na položaj industrije. Ctrl+klik otvara novi prozor sa lokacijom industrije STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Razina proizvodnje: {YELLOW}{COMMA}% +STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}Industrija je najavila uskoro zatvaranje! ############ range for requires starts STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Treba: {YELLOW}{STRING}{STRING} @@ -3244,12 +3415,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 @@ -3545,6 +3719,11 @@ STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Servisni 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. +STR_SERVICE_INTERVAL_DROPDOWN_TOOLTIP :{BLACK}Izmijeni vrstu servisnog intervala +STR_VEHICLE_DETAILS_DEFAULT :Osnovno +STR_VEHICLE_DETAILS_DAYS :Dani +STR_VEHICLE_DETAILS_PERCENT :Postotak + STR_QUERY_RENAME_TRAIN_CAPTION :{WHITE}Imenuj vlak STR_QUERY_RENAME_ROAD_VEHICLE_CAPTION :{WHITE}Imenuj cestovno vozilo STR_QUERY_RENAME_SHIP_CAPTION :{WHITE}Imenuj brod @@ -3633,7 +3812,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 stanici 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 @@ -3726,8 +3905,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}) @@ -3762,9 +3941,13 @@ 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} @@ -3780,7 +3963,7 @@ STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}Ovaj voz STR_TIMETABLE_STATUS_START_AT :{BLACK}Ovaj će vozni red početi u {STRING} STR_TIMETABLE_STARTING_DATE :{BLACK}Početni datum -STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Odaberi početni datum za ovaj vozni red. +STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Odaberi datum za početak ovog voznog reda. Ctrl+Klik odabire početnu točku ovog voznog reda i ravnomjerno raspodjeljuje sva vozila koja dijele ovu naredbu prema njihovoj relativnoj naredbi, ako je raspored naredbe potpuno određen STR_TIMETABLE_CHANGE_TIME :{BLACK}Promijeni vrijeme STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Promijeni količinu vremena koju bi označena naredba trebala uzeti @@ -3802,7 +3985,7 @@ STR_TIMETABLE_AUTOFILL_TOOLTIP :{BLACK}Automats STR_TIMETABLE_EXPECTED :{BLACK}Očekivano STR_TIMETABLE_SCHEDULED :{BLACK}Raspoređeno -STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Promijeni između očekivanog i raspoređenog +STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Promijeni između očekivanog i zadanog STR_TIMETABLE_ARRIVAL_ABBREVIATION :D: STR_TIMETABLE_DEPARTURE_ABBREVIATION :O: @@ -3894,6 +4077,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 @@ -3916,6 +4101,10 @@ STR_INCOME_FLOAT_INCOME_SMALL :{TINY_FONT}{GRE STR_INCOME_FLOAT_INCOME :{GREEN}Prihod: {CURRENCY_LONG} STR_FEEDER_TINY :{TINY_FONT}{YELLOW}Prebaci: {CURRENCY_LONG} STR_FEEDER :{YELLOW}Prebaci: {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}Predviđena cijena: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Predviđeni prihod: {CURRENCY_LONG} @@ -4212,6 +4401,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... @@ -4267,6 +4457,11 @@ STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}Nije mog STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... vozilo je uništeno +STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL :{WHITE}Neće biti dostupno nijedno vozilo +STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Promijenite konfiguraciju NewGRF-a +STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}Još nema dostupnih vozila +STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Pokreni novu igru nakon {DATE_SHORT} ili upotrijebi NewGRF koji daje vrlo rana vozila + # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Nije moguće natjerati vlak da ignorira signale dok traje opasnost... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Nije moguće promijeniti smjer vlaka... @@ -4309,6 +4504,16 @@ STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}Nije mog # Translatable comment for OpenTTD's desktop shortcut STR_DESKTOP_SHORTCUT_COMMENT :Simulacija na osnovi Transport Tycoon Deluxea +# Translatable descriptions in media/baseset/*.ob* files +STR_BASEGRAPHICS_DOS_DESCRIPTION :Originalna grafika za Transport Tycoon Deluxe DOS izdanje. +STR_BASEGRAPHICS_DOS_DE_DESCRIPTION :Originalna grafika za Transport Tycoon Deluxe DOS (Njemački) izdanje. +STR_BASEGRAPHICS_WIN_DESCRIPTION :Originalna grafika za Transport Tycoon Deluxe Windows izdanje. +STR_BASESOUNDS_DOS_DESCRIPTION :Originalni zvukovi za Transport Tycoon Deluxe DOS izdanje. +STR_BASESOUNDS_WIN_DESCRIPTION :Originalni zvukovi za Transport Tycoon Deluxe Windows izdanje. +STR_BASESOUNDS_NONE_DESCRIPTION :Zvučni paket bez ikakvih zvukova. +STR_BASEMUSIC_WIN_DESCRIPTION :Originalna muzika za Transport Tycoon Deluxe Windows izdanje. +STR_BASEMUSIC_NONE_DESCRIPTION :Muzički paket bez ikakve muzike. + ##id 0x2000 # Town building names STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1 :Visoki uredski blok @@ -4468,7 +4673,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) @@ -4677,8 +4882,8 @@ 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_POWERNAUT_CARGO_SHIP :Teretni brod Powernaught +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 STR_VEHICLE_NAME_AIRCRAFT_FFP_DART :FFP Dart @@ -4792,8 +4997,9 @@ 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_SPACE_STRING :{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} @@ -4817,9 +5023,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 31404ef01..0eb6fefa2 100644 --- a/src/lang/czech.txt +++ b/src/lang/czech.txt @@ -24,61 +24,66 @@ STR_NULL : STR_EMPTY : STR_UNDEFINED :(nedefinovaný řetězec) -STR_JUST_NOTHING :nic +STR_JUST_NOTHING :Nic # Cargo related strings # Plural cargo name STR_CARGO_PLURAL_NOTHING : -STR_CARGO_PLURAL_PASSENGERS :cestující -STR_CARGO_PLURAL_PASSENGERS.gen :cestujících +STR_CARGO_PLURAL_PASSENGERS :Cestující +STR_CARGO_PLURAL_PASSENGERS.gen :Cestujících STR_CARGO_PLURAL_PASSENGERS.big :Cestující -STR_CARGO_PLURAL_COAL :uhlí +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_OIL :ropa -STR_CARGO_PLURAL_OIL.gen :ropy -STR_CARGO_PLURAL_OIL.acc :ropu +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 STR_CARGO_PLURAL_OIL.big :Ropa -STR_CARGO_PLURAL_LIVESTOCK :dobytek -STR_CARGO_PLURAL_LIVESTOCK.gen :dobytka +STR_CARGO_PLURAL_LIVESTOCK :Dobytek +STR_CARGO_PLURAL_LIVESTOCK.gen :Dobytka STR_CARGO_PLURAL_LIVESTOCK.big :Dobytek -STR_CARGO_PLURAL_GOODS :zboží +STR_CARGO_PLURAL_GOODS :Zboží STR_CARGO_PLURAL_GOODS.big :Zboží -STR_CARGO_PLURAL_GRAIN :zrní +STR_CARGO_PLURAL_GRAIN :Zrní STR_CARGO_PLURAL_GRAIN.big :Zrní -STR_CARGO_PLURAL_WOOD :dřevo -STR_CARGO_PLURAL_WOOD.gen :dřeva +STR_CARGO_PLURAL_WOOD :Dřevo +STR_CARGO_PLURAL_WOOD.gen :Dřeva STR_CARGO_PLURAL_WOOD.big :Dřevo -STR_CARGO_PLURAL_IRON_ORE :železná ruda -STR_CARGO_PLURAL_IRON_ORE.gen :železné rudy -STR_CARGO_PLURAL_IRON_ORE.acc :železnou rudu +STR_CARGO_PLURAL_IRON_ORE :Železná ruda +STR_CARGO_PLURAL_IRON_ORE.gen :Železné rudy +STR_CARGO_PLURAL_IRON_ORE.acc :Železnou rudu STR_CARGO_PLURAL_IRON_ORE.big :Železná ruda -STR_CARGO_PLURAL_STEEL :ocel -STR_CARGO_PLURAL_STEEL.gen :oceli +STR_CARGO_PLURAL_STEEL :Ocel +STR_CARGO_PLURAL_STEEL.gen :Oceli STR_CARGO_PLURAL_STEEL.big :Ocel -STR_CARGO_PLURAL_VALUABLES :ceniny -STR_CARGO_PLURAL_VALUABLES.gen :cenin -STR_CARGO_PLURAL_VALUABLES.big :Ceniny -STR_CARGO_PLURAL_COPPER_ORE :měděná ruda -STR_CARGO_PLURAL_COPPER_ORE.gen :měděné rudy -STR_CARGO_PLURAL_COPPER_ORE.acc :měděnou rudu +STR_CARGO_PLURAL_VALUABLES :Cennosti +STR_CARGO_PLURAL_VALUABLES.gen :Cenností +STR_CARGO_PLURAL_VALUABLES.big :Cennosti +STR_CARGO_PLURAL_COPPER_ORE :Měděná ruda +STR_CARGO_PLURAL_COPPER_ORE.gen :Měděné rudy +STR_CARGO_PLURAL_COPPER_ORE.acc :Měděnou rudu STR_CARGO_PLURAL_COPPER_ORE.big :Měděná ruda -STR_CARGO_PLURAL_MAIZE :kukuřice -STR_CARGO_PLURAL_MAIZE.acc :kukuřici +STR_CARGO_PLURAL_MAIZE :Kukuřice +STR_CARGO_PLURAL_MAIZE.acc :Kukuřici STR_CARGO_PLURAL_MAIZE.big :Kukuřice -STR_CARGO_PLURAL_FRUIT :ovoce +STR_CARGO_PLURAL_FRUIT :Ovoce STR_CARGO_PLURAL_FRUIT.big :Ovoce -STR_CARGO_PLURAL_DIAMONDS :diamanty -STR_CARGO_PLURAL_DIAMONDS.gen :diamantů +STR_CARGO_PLURAL_DIAMONDS :Diamanty +STR_CARGO_PLURAL_DIAMONDS.gen :Diamantů STR_CARGO_PLURAL_DIAMONDS.big :Diamanty -STR_CARGO_PLURAL_FOOD :jídlo -STR_CARGO_PLURAL_FOOD.gen :jídla +STR_CARGO_PLURAL_FOOD :Jídlo +STR_CARGO_PLURAL_FOOD.gen :Jídla STR_CARGO_PLURAL_FOOD.big :Jídlo -STR_CARGO_PLURAL_PAPER :papír -STR_CARGO_PLURAL_PAPER.gen :papíru +STR_CARGO_PLURAL_PAPER :Papír +STR_CARGO_PLURAL_PAPER.gen :Papíru STR_CARGO_PLURAL_PAPER.big :Papír STR_CARGO_PLURAL_GOLD :zlato STR_CARGO_PLURAL_GOLD.gen :zlata @@ -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 @@ -269,21 +274,28 @@ STR_UNITS_POWER_IMPERIAL :{COMMA} hp STR_UNITS_POWER_METRIC :{COMMA} hp 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} tun{P a y ""} STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} tun{P a y ""} 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{P "" "y" "ů"} STR_UNITS_VOLUME_LONG_METRIC :{COMMA} litr{P "" y ů} 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} stop{P a y ""} +STR_UNITS_HEIGHT_METRIC :{COMMA} m STR_UNITS_HEIGHT_SI :{COMMA} m # Common window strings @@ -291,6 +303,7 @@ STR_LIST_FILTER_TITLE :{BLACK}Filtrova STR_LIST_FILTER_OSKTITLE :{BLACK}Vložte filtr STR_LIST_FILTER_TOOLTIP :{BLACK}Vložte klíčové slovo pro filtr seznamu +STR_TOOLTIP_GROUP_ORDER :{BLACK}Vyber pořadí seskupení STR_TOOLTIP_SORT_ORDER :{BLACK}Vyber způsob řazeni (sestupně/vzestupně) STR_TOOLTIP_SORT_CRITERIA :{BLACK}Vyber, podle čeho se má třídit STR_TOOLTIP_FILTER_CRITERIA :{BLACK}Vyber třídící podmínku @@ -302,6 +315,7 @@ STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Zavřít STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Titulek okna - tahej pro posun okna STR_TOOLTIP_SHADE :{BLACK}Srolovat okno - zobrazit pouze jeho záhlaví STR_TOOLTIP_DEBUG :{BLACK}Zobrazit ladící informace pro grafiky +STR_TOOLTIP_DEFSIZE :{BLACK}Změna velikosti okna na základní. Ctrl+Click k uložení stávající velikosti jako základní STR_TOOLTIP_STICKY :{BLACK}Označit toto okno, aby se nedalo zavřít klávesou pro zavření všech oken STR_TOOLTIP_RESIZE :{BLACK}Velikost okna změníš uchopením a táhnutím zde STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Přepnout velké/malé okno @@ -326,7 +340,6 @@ STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}Oblast: # These are used in buttons -STR_SORT_BY_CAPTION_POPULATION :{BLACK}Podle populace STR_SORT_BY_CAPTION_NAME :{BLACK}Podle jména STR_SORT_BY_CAPTION_DATE :{BLACK}Podle data # These are used in dropdowns @@ -344,10 +357,11 @@ 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 :množství čekajícího nákladu +STR_SORT_BY_WAITING_TOTAL :Celkového čekajícího nákladu +STR_SORT_BY_WAITING_AVAILABLE :Dostupného čekajícího nákladu STR_SORT_BY_RATING_MAX :nejlepšího hodnocení přepravy STR_SORT_BY_RATING_MIN :nejhoršího hodnocení přepravy STR_SORT_BY_ENGINE_ID :ID vozu (klasické pořadí) @@ -359,6 +373,8 @@ STR_SORT_BY_RUNNING_COST :provozních ná STR_SORT_BY_POWER_VS_RUNNING_COST :výkonu/provozních nákladů STR_SORT_BY_CARGO_CAPACITY :přepravní kapacity STR_SORT_BY_RANGE :dosah +STR_SORT_BY_POPULATION :Podle populace +STR_SORT_BY_RATING :Hodnocení # Tooltips for the main toolbar STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Pauza @@ -371,6 +387,8 @@ STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Zobrazit STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Zobrazit seznam stanic společnosti STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Zobrazit finanční informace o společnosti STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Zobrazit obecné informace o společnosti +STR_TOOLBAR_TOOLTIP_DISPLAY_STORY_BOOK :{BLACK}Zobrazit knihu příběhů +STR_TOOLBAR_TOOLTIP_DISPLAY_GOALS_LIST :{BLACK}Zobrazit seznam cílů STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Zobrazit grafy STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Zobrazit tabulku společností STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Financovat konstrukci nového průmyslu, nebo zobrazit všechen průmysl @@ -441,19 +459,19 @@ STR_FILE_MENU_SEPARATOR : STR_FILE_MENU_EXIT :Ukončit program ############ range ends here -############ range for map menu starts +# map menu STR_MAP_MENU_MAP_OF_WORLD :Mapa světa STR_MAP_MENU_EXTRA_VIEW_PORT :Další pohled +STR_MAP_MENU_LINGRAPH_LEGEND :Legenda toku nákladu STR_MAP_MENU_SIGN_LIST :Seznam popisků -############ range for town menu starts, yet the town directory is shown in the map menu in the scenario editor + +############ range for town menu starts STR_TOWN_MENU_TOWN_DIRECTORY :Seznam měst -############ end of the 'Display map' dropdown STR_TOWN_MENU_FOUND_TOWN :Založit město -############ end of the 'Town' dropdown +############ range ends here ############ range for subsidies menu starts STR_SUBSIDIES_MENU_SUBSIDIES :Dotace -STR_SUBSIDIES_MENU_GOAL :Současné cíle ############ range ends here ############ range for graph menu starts @@ -527,7 +545,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. @@ -543,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 @@ -732,7 +768,7 @@ STR_HIGHSCORE_PERFORMANCE_TITLE_CAPITALIST :Kapitalista STR_HIGHSCORE_PERFORMANCE_TITLE_MAGNATE :Magnát STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL :Velemagnát STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY :Magnát století -STR_HIGHSCORE_NAME :{BIG_FONT}{PRESIDENT_NAME}, {COMPANY} +STR_HIGHSCORE_NAME :{PRESIDENT_NAME}, {COMPANY} STR_HIGHSCORE_STATS :{BIG_FONT}'{STRING}' ({COMMA}) STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{BLACK}{COMPANY} získal titul '{STRING}'! STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{WHITE}{PRESIDENT_NAME} z {COMPANY} získal titul '{STRING}'! @@ -743,17 +779,20 @@ STR_SMALLMAP_CAPTION :{WHITE}Mapa - { STR_SMALLMAP_TYPE_CONTOURS :Profil STR_SMALLMAP_TYPE_VEHICLES :Dopravní prostředky STR_SMALLMAP_TYPE_INDUSTRIES :Průmysl +STR_SMALLMAP_TYPE_ROUTEMAP :Toky nákladu STR_SMALLMAP_TYPE_ROUTES :Tratě STR_SMALLMAP_TYPE_VEGETATION :Vegetace STR_SMALLMAP_TYPE_OWNERS :Vlastníci STR_SMALLMAP_TOOLTIP_SHOW_LAND_CONTOURS_ON_MAP :{BLACK}Zobrazit na mapě reliéf krajiny STR_SMALLMAP_TOOLTIP_SHOW_VEHICLES_ON_MAP :{BLACK}Zobrazit na mapě dopravní prostředky STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRIES_ON_MAP :{BLACK}Zobrazit na mapě průmysl +STR_SMALLMAP_TOOLTIP_SHOW_LINK_STATS_ON_MAP :{BLACK}Zobrazit toky nákladu na mapě STR_SMALLMAP_TOOLTIP_SHOW_TRANSPORT_ROUTES_ON :{BLACK}Zobrazit na mapě dopravní cesty STR_SMALLMAP_TOOLTIP_SHOW_VEGETATION_ON_MAP :{BLACK}Zobrazit na mapě vegetaci STR_SMALLMAP_TOOLTIP_SHOW_LAND_OWNERS_ON_MAP :{BLACK}Zobrazit na mapě vlastníky pozemků STR_SMALLMAP_TOOLTIP_INDUSTRY_SELECTION :{BLACK}Kliknutím na typ průmyslu přepnete jeho zobrazení. Ctrl+Klik vypne všechny typy kromě toho vybraného. Ctrl+Klik znovu pro zapnutí všech druhů průmyslu. STR_SMALLMAP_TOOLTIP_COMPANY_SELECTION :{BLACK}Kliknutím na společnost přepnete zobrazení jejího majetku. Ctrl+Klik vypne všechny společnosti kromě té vybrané. Ctrl+Klik znovu zobrazí opět všechny společnosti. +STR_SMALLMAP_TOOLTIP_CARGO_SELECTION :{BLACK}Klikni na náklad pro přepnutí zobrazení jeho vlastností. Ctrl+Klik vypne zobrazení všech nákladů kromě jednoho vybraného. Další Ctrl+Klik všechny náklady opět zobrazí STR_SMALLMAP_LEGENDA_ROADS :{TINY_FONT}{BLACK}Silnice STR_SMALLMAP_LEGENDA_RAILROADS :{TINY_FONT}{BLACK}Železnice @@ -787,6 +826,7 @@ STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLA STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Zobrazovat na mapě jména měst STR_SMALLMAP_CENTER :{BLACK}Vystředit malou mapu na tomto místě 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}Vypnout všechny @@ -797,6 +837,8 @@ STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES :{BLACK}Zobrazit STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}Zapnout zobrazení výškové mapy STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES :{BLACK}Skrýt všechen majetek společnosti na mapě STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}Zobrazit všechen majetek společnosti na mapě +STR_SMALLMAP_TOOLTIP_DISABLE_ALL_CARGOS :{BLACK}Nezobrazovat žádný náklad na mapě +STR_SMALLMAP_TOOLTIP_ENABLE_ALL_CARGOS :{BLACK}Zobraz všechen náklad na mapě # Status bar messages STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Ukázat poslední zprávu nebo článek @@ -873,13 +915,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á @@ -958,15 +999,12 @@ STR_GAME_OPTIONS_CURRENCY_LTL :Litevský litas STR_GAME_OPTIONS_CURRENCY_KRW :Jihokorejský won (KRW) STR_GAME_OPTIONS_CURRENCY_ZAR :Jihoafrický rand (ZAR) STR_GAME_OPTIONS_CURRENCY_CUSTOM :Vlastní... +STR_GAME_OPTIONS_CURRENCY_GEL :Georgijské Lari (GEL) +STR_GAME_OPTIONS_CURRENCY_IRR :Íránský Riál (IRR) ############ end of currency region -STR_GAME_OPTIONS_MEASURING_UNITS_FRAME :{BLACK}Jednotka vzdálenosti -STR_GAME_OPTIONS_MEASURING_UNITS_DROPDOWN_TOOLTIP :{BLACK}Výběr jednotek vzdálenosti ############ start of measuring units region -STR_GAME_OPTIONS_MEASURING_UNITS_IMPERIAL :Imperiální (míle) -STR_GAME_OPTIONS_MEASURING_UNITS_METRIC :Metrické (kilometry) -STR_GAME_OPTIONS_MEASURING_UNITS_SI :SI (metry) ############ end of measuring units region STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Silniční vozidla jezdí @@ -1004,11 +1042,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í @@ -1020,9 +1060,6 @@ 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_BASE_GRF :{BLACK}Základní sada grafiky STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Zvol základní sadu grafiky STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} chybějící{P "" "" ch}/poškozen{P ý é ých} soubor{P "" y ů} @@ -1037,6 +1074,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 @@ -1136,8 +1174,9 @@ 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_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í nastavení STR_CONFIG_SETTING_RESTRICT_ADVANCED :Pokročilé nastavení STR_CONFIG_SETTING_RESTRICT_ALL :Expertní nastavení / všechna nastavení @@ -1145,16 +1184,20 @@ STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :Nastavení s ji 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_OFF :Vypnuto STR_CONFIG_SETTING_ON :Zapnuto -STR_CONFIG_SETTING_DISABLED :vypnuto +STR_CONFIG_SETTING_DISABLED :Vypnuto STR_CONFIG_SETTING_COMPANIES_OFF :ne STR_CONFIG_SETTING_COMPANIES_OWN :u vlastní společnosti @@ -1171,9 +1214,9 @@ STR_CONFIG_SETTING_HORIZONTAL_POS_RIGHT :vpravo STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN :Maximální půjčka: {STRING} STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Jak moc si může společnost půjčit (bez ohledu na inflaci) STR_CONFIG_SETTING_INTEREST_RATE :Výše úroků: {STRING} -STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Výše úroků půjček; pokud je zapnuta inflace, ovlivňuje i ji +STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Výše úroků z půjček; rovněž ovlivňuje inflaci, pokud je zapnuta STR_CONFIG_SETTING_RUNNING_COSTS :Cena provozu: {STRING} -STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT :Nastav cenu držby a provozu vozidel a infrastruktury +STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT :Nastav cenu údržby a provozu vozidel a infrastruktury STR_CONFIG_SETTING_CONSTRUCTION_SPEED :Rychlost výstavby: {STRING} STR_CONFIG_SETTING_CONSTRUCTION_SPEED_HELPTEXT :Omezení výstavby AI STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS :Poruchy vozidel: {STRING} @@ -1185,15 +1228,13 @@ STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :Nastav cenu vý STR_CONFIG_SETTING_RECESSIONS :Krize: {STRING} STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Pokud jsou krize zapnuty, mohou se objevit každých pár let. Během krize je snížena veškerá produkce. Po krizi se opět vrátí do původních hodnot STR_CONFIG_SETTING_TRAIN_REVERSING :Zakázat otáčení vlaků ve stanicích: {STRING} -STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :Pokud je zapnuto, vlaky se nebudou otáčet v nekoncových stanicích ani i když by to zkrátilo cestu k dalšímu cíli +STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :Pokud je zapnuto, vlaky se nebudou otáčet v nekoncových stanicích ani pokud by to zkrátilo cestu k dalšímu cíli STR_CONFIG_SETTING_DISASTERS :Katastrofy: {STRING} STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Katastrofy, které mohou občas zablokovat či zničit vozidla nebo infrastrukturu 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_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,23 +1258,17 @@ 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_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} STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_HELPTEXT :Způsob budování primárního průmyslu. "žádný" znamená, že není možné primární průmysl zbudovat. "průzkum" znamená, že budování je možné, ale stavba začne v náhodném místě na mapě a někdy vůbec. "jako ostatní průmysl" znamená, že primární průmysl lze zbudovat stejně jako zpracovatelský průmysl. -STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :žádný -STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :jako u ostatniho průmyslu -STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :průzkum +STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :Žádný +STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :Jako u ostatniho průmyslu +STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :Průzkum STR_CONFIG_SETTING_INDUSTRY_PLATFORM :Plochá oblast okolo průmyslu: {STRING} STR_CONFIG_SETTING_INDUSTRY_PLATFORM_HELPTEXT :Velikost roviny okolo průmyslu. Zajistí prostor například pro zbudování tratě. STR_CONFIG_SETTING_MULTIPINDTOWN :Povolit více stejného průmyslu kolem jednoho města: {STRING} @@ -1252,14 +1287,12 @@ 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 -STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT_FULLSCREEN :hlavní pohled, pouze full-screen -STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT :hlavní pohled -STR_CONFIG_SETTING_AUTOSCROLL_EVERY_VIEWPORT :všechny pohledy +STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT_FULLSCREEN :Hlavní pohled, pouze full-screen +STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT :Hlavní pohled +STR_CONFIG_SETTING_AUTOSCROLL_EVERY_VIEWPORT :Všechny pohledy STR_CONFIG_SETTING_BRIBE :Povolit úplatek místní správě: {STRING} STR_CONFIG_SETTING_BRIBE_HELPTEXT :Umožňuje společnostem pokusit se podplatit místní správu. Pokud na to přijde inspekce, nebude možno ve městě 6 měsíců nic dělat STR_CONFIG_SETTING_ALLOW_EXCLUSIVE :Umožnit kupování výhradních přepravních práv: {STRING} @@ -1277,17 +1310,13 @@ STR_CONFIG_SETTING_PLANE_SPEED_HELPTEXT :Nastavit poměr STR_CONFIG_SETTING_PLANE_SPEED_VALUE :1 / {COMMA} STR_CONFIG_SETTING_PLANE_CRASHES :Počet leteckých havárií: {STRING} STR_CONFIG_SETTING_PLANE_CRASHES_HELPTEXT :Určuje šanci na havárii letadel -STR_CONFIG_SETTING_PLANE_CRASHES_NONE :nulový -STR_CONFIG_SETTING_PLANE_CRASHES_REDUCED :nižší -STR_CONFIG_SETTING_PLANE_CRASHES_NORMAL :obvyklý +STR_CONFIG_SETTING_PLANE_CRASHES_NONE :Žádný +STR_CONFIG_SETTING_PLANE_CRASHES_REDUCED :Redukovaný +STR_CONFIG_SETTING_PLANE_CRASHES_NORMAL :Obvyklý STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Stavba průjezdných zastávek na obecních silnicích: {STRING} 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é. @@ -1299,16 +1328,16 @@ STR_CONFIG_SETTING_WARN_LOST_VEHICLE :Varovat pokud s STR_CONFIG_SETTING_WARN_LOST_VEHICLE_HELPTEXT :Zapne zobrazování zpráv o vozidlech, která nemohou najít cestu do cíle. STR_CONFIG_SETTING_ORDER_REVIEW :Kontrolovat příkazy vozidel: {STRING} STR_CONFIG_SETTING_ORDER_REVIEW_HELPTEXT :Pokud je zapnuto, příkazy vozidel jsou pravidelně kontrolovány a určité problémy jsou hlášeny pomocí informačních zpráv. -STR_CONFIG_SETTING_ORDER_REVIEW_OFF :ne -STR_CONFIG_SETTING_ORDER_REVIEW_EXDEPOT :ano, kromě zastavených vozidel -STR_CONFIG_SETTING_ORDER_REVIEW_ON :ano, u všech vozidel +STR_CONFIG_SETTING_ORDER_REVIEW_OFF :Ne +STR_CONFIG_SETTING_ORDER_REVIEW_EXDEPOT :Ano, pouze kromě zastavených vozidel +STR_CONFIG_SETTING_ORDER_REVIEW_ON :U všech vozidel STR_CONFIG_SETTING_WARN_INCOME_LESS :Varovat, pokud vozidlo prodělává: {STRING} STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :Pokud je zapnuto, budou zobrazovány zprávy o vozidlech, která v posledním kalendářním roce neměla žádný zisk. STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Vozidlům se nikdy nezastaví výroba ('nezastarají'): {STRING} 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 @@ -1326,27 +1355,41 @@ STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :Zobrazovat měs 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_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_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 @@ -1364,7 +1407,7 @@ STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :fialová STR_CONFIG_SETTING_REVERSE_SCROLLING :Posouvat pohled opačným směrem: {STRING} STR_CONFIG_SETTING_REVERSE_SCROLLING_HELPTEXT :Chování při posouvání mapy pomocí stisku pravého tlačítka myši. Pokud vypnuto, myš pohybuje kamerou. Pokud zapnuto, myš pohybuje mapou STR_CONFIG_SETTING_SMOOTH_SCROLLING :Plynulé posouvání po mapě: {STRING} -STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Ovládá jak se hlavní pohled posouvá na specifické místo na mapě, kliknutím na minimapu nebo spuštěním příkazu na posun na specifický objekt na mapě. Pokud povoleno, pohled se posouvá plynule, pokud vypnuto, skáče pohled přímo na cílové místo +STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Ovládá jak se hlavní pohled posouvá na specifické místo na mapě, kliknutím na minimapu nebo spuštěním příkazu na posun na specifický objekt na mapě. Pokud zapnuto, pohled se posouvá plynule, pokud vypnuto, skáče pohled přímo na cílové místo STR_CONFIG_SETTING_MEASURE_TOOLTIP :Ukázat rozměry při použití stavebních nástrojů: {STRING} STR_CONFIG_SETTING_MEASURE_TOOLTIP_HELPTEXT :Zobrazovat vzdálenost a výškový rozdíl při výstavbě tahem. STR_CONFIG_SETTING_LIVERIES :Zobrazovat barvy společnosti pro: {STRING} @@ -1385,6 +1428,8 @@ STR_CONFIG_SETTING_OSK_ACTIVATION :Klávesnice na STR_CONFIG_SETTING_OSK_ACTIVATION_HELPTEXT :Vyber způsob pro zobrazení klávesnice na obrazovce pro zadání textu do textových polí pouze za pomoci ukazovacího zařízení. To znamená pro malá zařízení bez HW klavesnice STR_CONFIG_SETTING_OSK_ACTIVATION_DISABLED :Vypnuto STR_CONFIG_SETTING_OSK_ACTIVATION_DOUBLE_CLICK :Dvojklik +STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK_FOCUS :Jedno kliknutí (je-li zaměřen) +STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK :Jedno kliknutí (okamžitě) STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU :Emulace pravého tlačítka: {STRING} STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_HELPTEXT :Vybrat metodu emulování stisknutí pravého tlačítka myši @@ -1395,26 +1440,24 @@ 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} STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_HELPTEXT :Vyberte které akce mohou být prováděny při pozastavené hře -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_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 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. @@ -1441,9 +1484,9 @@ STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :Přehrávat zvu STR_CONFIG_SETTING_SOUND_NEWS :Noviny: {STRING} STR_CONFIG_SETTING_SOUND_NEWS_HELPTEXT :Přehrát zvuk při zobrazení novin STR_CONFIG_SETTING_SOUND_NEW_YEAR :Konec roku: {STRING} -STR_CONFIG_SETTING_SOUND_NEW_YEAR_HELPTEXT :Přehrát zvukový efekty na konci roku shrnující výkon společnosti v porovnání s předchozím rokem +STR_CONFIG_SETTING_SOUND_NEW_YEAR_HELPTEXT :Na konci roku přehrát zvuk shrnující výkon společnosti v porovnání s předchozím rokem STR_CONFIG_SETTING_SOUND_CONFIRM :Výstavba: {STRING} -STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT :Přehrávat zvukové efekty vozidel +STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT :Přehrávat zvuk při úspěšných stavbách a dalších akcích STR_CONFIG_SETTING_SOUND_CLICK :Kliknutí na tlačítko: {STRING} STR_CONFIG_SETTING_SOUND_CLICK_HELPTEXT :Pípnutí při kliku na tlačítko STR_CONFIG_SETTING_SOUND_DISASTER :Katastrofy/nehody: {STRING} @@ -1455,7 +1498,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 @@ -1489,7 +1532,7 @@ STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Vyber, jestli p 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_DISABLED :vypnuto +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 STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Základní servisní interval pro letadla: {STRING} @@ -1569,28 +1612,28 @@ STR_CONFIG_SETTING_CYCLE_SIGNAL_ALL :všechna STR_CONFIG_SETTING_TOWN_LAYOUT :Rozvržení silnic pro nová města: {STRING} STR_CONFIG_SETTING_TOWN_LAYOUT_HELPTEXT :Rozložení silniční sítě ve městech -STR_CONFIG_SETTING_TOWN_LAYOUT_DEFAULT :původní -STR_CONFIG_SETTING_TOWN_LAYOUT_BETTER_ROADS :lepší silnice +STR_CONFIG_SETTING_TOWN_LAYOUT_DEFAULT :Originální +STR_CONFIG_SETTING_TOWN_LAYOUT_BETTER_ROADS :Lepší silnice STR_CONFIG_SETTING_TOWN_LAYOUT_2X2_GRID :mřížka 2x2 STR_CONFIG_SETTING_TOWN_LAYOUT_3X3_GRID :mřížka 3x3 -STR_CONFIG_SETTING_TOWN_LAYOUT_RANDOM :náhodně +STR_CONFIG_SETTING_TOWN_LAYOUT_RANDOM :Náhodně STR_CONFIG_SETTING_ALLOW_TOWN_ROADS :Města smějí stavět silnice: {STRING} STR_CONFIG_SETTING_ALLOW_TOWN_ROADS_HELPTEXT :Povolí městům stavět silnice pro růst. Zakaž k zabránění výstavby silnic městy. 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 -STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :povoleno -STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :povoleno s výběrem rozložení a velikosti města +STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :Zakázáno +STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :Povoleno +STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :Povoleno s výběrem rozložení a velikosti města STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT :Umístění stromů ve hře: {STRING} STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_HELPTEXT :Náhodné umisťování stromů během hry. Může ovlivnit průmysl závisející na růstu stromů, například pily. -STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NONE :nikde {RED}(nefunguje pila) -STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_RAINFOREST :jen v deštných pralesech -STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_ALL :všude +STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NONE :Žádné {RED}(nefunguje pila) +STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_RAINFOREST :Jen v deštných pralesech +STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_ALL :Všude STR_CONFIG_SETTING_TOOLBAR_POS :Umístění hlavní lišty: {STRING} STR_CONFIG_SETTING_TOOLBAR_POS_HELPTEXT :Horizontální pozice hlavního panelu v horní části obrazovky @@ -1599,7 +1642,7 @@ STR_CONFIG_SETTING_STATUSBAR_POS_HELPTEXT :Horizontální STR_CONFIG_SETTING_SNAP_RADIUS :Okno se přichytí k druhému, když je blíž než: {STRING} STR_CONFIG_SETTING_SNAP_RADIUS_HELPTEXT :Vzdálenost mezi okny, při které se okno automaticky zarovná k jinému blízkému oknu STR_CONFIG_SETTING_SNAP_RADIUS_VALUE :{COMMA} pixelů -STR_CONFIG_SETTING_SNAP_RADIUS_DISABLED :vypnuto +STR_CONFIG_SETTING_SNAP_RADIUS_DISABLED :Vypnuto STR_CONFIG_SETTING_SOFT_LIMIT :Omezit počet zavíratelných oken na: {STRING} STR_CONFIG_SETTING_SOFT_LIMIT_HELPTEXT :Počet otevřených nelepivých oken, po jehož dosažení budou automaticky zavírána stará okna aby se uvolnil prostor pro nová STR_CONFIG_SETTING_SOFT_LIMIT_VALUE :{COMMA} @@ -1624,31 +1667,93 @@ STR_CONFIG_SETTING_TOWN_GROWTH_VERY_FAST :velmi rychlá STR_CONFIG_SETTING_LARGER_TOWNS :Podíl měst, ze kterých se stanou velkoměsta: {STRING} STR_CONFIG_SETTING_LARGER_TOWNS_HELPTEXT :Počet měst které se stanou velkoměsty, tedy počet měst které se rozvíjí a rostou rychleji STR_CONFIG_SETTING_LARGER_TOWNS_VALUE :1 z {COMMA} -STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :žádné +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_GUI :{ORANGE}Ovládaní -STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}Výstavba +STR_CONFIG_SETTING_LINKGRAPH_INTERVAL :Aktualizovat distribuční graf každých {STRING} {P den dny dnů} +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_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_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_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 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} +STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT :Čím vyšší hodnotu nastavíš, tím více procesorového času vypočítávání tras spojů zabere. Pokud to potrvá příliš dlouho, můžeš si všimnout záseku. Pokud nastavíš příliš nízko, distribuce bude nepřesná a může se stát, že náklad není odeslán tam kam by měl. +STR_CONFIG_SETTING_DEMAND_DISTANCE :Vliv vzdálenosti na poptávku: {STRING} +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 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 +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_IMPERIAL :Imperiální (mph) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_METRIC :Metrické (km/h) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_SI :SI (m/s) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER :Jednotky výkonu vozidla: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_HELPTEXT :Kdykoliv se výkon vozidla zobrazí v uživatelském rozhraní, bude ve zvolených jednotkách +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_IMPERIAL :Imperiální (hp) +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 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) +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_SI :SI (kg) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME :Jednotky objemu: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_HELPTEXT :Kdykoliv se objem zobrazí v uživatelském rozhraní, bude ve zvolených jednotkách +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_IMPERIAL :Imperiální (gal) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_METRIC :Metrické (l) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_SI :SI (m³) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE :Jednotky tažné síly: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_HELPTEXT :Kdykoliv se tažná síla zobrazí v uživatelském rozhraní, bude ve zvolených jednotkách +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_IMPERIAL :Imperiální (lbf) +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_METRIC :Metrické (kgf) +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_SI :SI (kN) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT :Výškové jednotky: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_HELPTEXT :Kdykoliv se v uživatelském rozhraní zobrazí výška, bude ve zvolených jednotkách +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :Imperiální (ft) +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :Metrické (m) +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI (m) + +STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Překlad +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_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 @@ -1682,6 +1787,8 @@ STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_ALGORITHM :{WHITE}... form STR_CONFIG_ERROR_INVALID_BASE_GRAPHICS_NOT_FOUND :{WHITE}... ignorování základní grafické sady '{STRING}': nenalezeno STR_CONFIG_ERROR_INVALID_BASE_SOUNDS_NOT_FOUND :{WHITE}... ignorování základní hudební sady '{STRING}': nenalazeno STR_CONFIG_ERROR_INVALID_BASE_MUSIC_NOT_FOUND :{WHITE}... ignorování základní hudební sady '{STRING}': nenalezeno +STR_CONFIG_ERROR_OUT_OF_MEMORY :{WHITE}Nedostatek paměti +STR_CONFIG_ERROR_SPRITECACHE_TOO_BIG :{WHITE}Alokování {BYTES} grafické mezipaměti selhalo. Grafická mezipaměť byla zredukována na {BYTES}. To sníží výkon OpenTTD. Pro snížení paměťových nároků můžeš zkusit vypnout 32bpp grafiku a/nebo úrovně přiblížení # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} @@ -1803,6 +1910,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 @@ -1858,10 +1966,10 @@ STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}Změnit # Network server list STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}Multiplayer -STR_NETWORK_SERVER_LIST_CONNECTION :{BLACK}Připojení: -STR_NETWORK_SERVER_LIST_CONNECTION_TOOLTIP :{BLACK}Vyber si mezi hrou na internetu nebo v místní síti -STR_NETWORK_SERVER_LIST_LAN :LAN -STR_NETWORK_SERVER_LIST_INTERNET :internet +STR_NETWORK_SERVER_LIST_ADVERTISED :{BLACK}Vypsané +STR_NETWORK_SERVER_LIST_ADVERTISED_TOOLTIP :{BLACK}Vyber mezi propagovanou (internet) a nepropagovanou (Místní síť, LAN) hrou +STR_NETWORK_SERVER_LIST_ADVERTISED_NO :Ne +STR_NETWORK_SERVER_LIST_ADVERTISED_YES :Ano STR_NETWORK_SERVER_LIST_PLAYER_NAME :{BLACK}Jméno hráče: STR_NETWORK_SERVER_LIST_ENTER_NAME_TOOLTIP :{BLACK}Podle tohoto jména tě ostatní hráči poznají @@ -1920,8 +2028,8 @@ STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP :{BLACK}Jméno h STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}Nastavit heslo STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Svoji hru si můžeš ochránit heslem, když nechceš, aby se ti do ni hlásili jiní lidé -STR_NETWORK_START_SERVER_LAN_INTERNET :LAN / internet -STR_NETWORK_START_SERVER_INTERNET_ADVERTISE :internet (zveřejnit) +STR_NETWORK_START_SERVER_UNADVERTISED :Ne +STR_NETWORK_START_SERVER_ADVERTISED :Ano STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} klient{P "" i ů} STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Nejvyšší počet hráčů: STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}Zvol nejvyšší počet hráčů. Může se jich připojit i méně @@ -2042,6 +2150,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 @@ -2160,6 +2269,10 @@ STR_CONTENT_SELECT_UPDATES_CAPTION :{BLACK}Vybrat v STR_CONTENT_SELECT_UPDATES_CAPTION_TOOLTIP :{BLACK}Označit všechen vylepšený/aktualizovaný obsah ke stáhnutí STR_CONTENT_UNSELECT_ALL_CAPTION :{BLACK}Odznačit vše STR_CONTENT_UNSELECT_ALL_CAPTION_TOOLTIP :{BLACK}Nestahovat nic +STR_CONTENT_SEARCH_EXTERNAL :{BLACK}Prohledat externí stránky +STR_CONTENT_SEARCH_EXTERNAL_TOOLTIP :{BLACK}Hledaný obsah není dostupný ve službě pro správu obsahu OpenTTD na stránkách nepřidružených k OpenTTD +STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER_CAPTION :{WHITE}Opouštíš OpenTTD! +STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER :{WHITE}Podmínky pro stahování obsahu z externích stránek se různí.{}Budeš muset navštívit externí stránky pro instrukce k nainstalování obsahu do OpenTTD.{}Přeješ si pokračovat? STR_CONTENT_FILTER_TITLE :{BLACK}Filtr na značku/jméno: STR_CONTENT_OPEN_URL :{BLACK}Navštívit stránky STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK} Zobrazit internetové stránky pro tuto položku @@ -2229,6 +2342,17 @@ STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}Změna p STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Přepnout zobrazení ukazatelů naložení. Nastavení se zamkne Ctrl+kliknutím STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}Objekty budou neviditelné, ne průhledné +# Linkgraph legend window +STR_LINKGRAPH_LEGEND_CAPTION :{BLACK}Legenda toku nákladu +STR_LINKGRAPH_LEGEND_ALL :{BLACK}Všechny +STR_LINKGRAPH_LEGEND_NONE :{BLACK}Žádný +STR_LINKGRAPH_LEGEND_SELECT_COMPANIES :{BLACK}Vybrat firmy, které mají být zobrazeny + +# Linkgraph legend window and linkgraph legend in smallmap +STR_LINKGRAPH_LEGEND_UNUSED :{TINY_FONT}{BLACK}nepoužívaný +STR_LINKGRAPH_LEGEND_SATURATED :{TINY_FONT}{BLACK}nasycený +STR_LINKGRAPH_LEGEND_OVERLOADED :{TINY_FONT}{BLACK}přetížení + # Base for station construction window(s) STR_STATION_BUILD_COVERAGE_AREA_TITLE :{BLACK}Zvýraznění oblasti pokrytí STR_STATION_BUILD_COVERAGE_OFF :{BLACK}Vypnuto @@ -2296,14 +2420,14 @@ STR_STATION_CLASS_WAYP :Směrování STR_BUILD_SIGNAL_CAPTION :{WHITE}Výběr návěstidel STR_BUILD_SIGNAL_SEMAPHORE_NORM_TOOLTIP :{BLACK}Obyčejné návěstidlo (semafor){}Návěstidla jsou nutná, aby nedocházelo ke srážkám vlaků na tratích, kde jezdí více než jeden vlak STR_BUILD_SIGNAL_SEMAPHORE_ENTRY_TOOLTIP :{BLACK}Vjezdové návěstidlo (semafor){}Svítí zeleně do té doby, kdy v následujícím úseku trati je alespoň jedno další svítící zeleně. Jinak svítí červeně -STR_BUILD_SIGNAL_SEMAPHORE_EXIT_TOOLTIP :{BLACK}Výjezdové návěstidlo (semafor){}Chová se stejně jako obyčejné, ale musí se aktivovat vjezdové a cestové návěstidlo -STR_BUILD_SIGNAL_SEMAPHORE_COMBO_TOOLTIP :{BLACK}Cestové návěstidlo (semafor){}Cestové (kombinované) slouží zároveň jako vjezdové a výjezdové. Tím je možné postavit velké "řetězce" presignálů +STR_BUILD_SIGNAL_SEMAPHORE_EXIT_TOOLTIP :{BLACK}Výjezdové návěstidlo (semafor){}Chová se stejně jako obyčejné, ale je nezbytné nastavit správnou barvu vjezdových a kombinovaných pre-signálů +STR_BUILD_SIGNAL_SEMAPHORE_COMBO_TOOLTIP :{BLACK}Kombinované návěstidlo (semafor){}Kombinované návěstidlo slouží zároveň jako vjezdové a výjezdové. Tím je možné postavit velké "řetězce" pre-signálů STR_BUILD_SIGNAL_SEMAPHORE_PBS_TOOLTIP :{BLACK}Dokonalejší (PBS) návěstidlo (semafor){}Dokonalejší návěstidlo umožňuje vjet několika vlakům najednou do stejného úseku trati, pokud jsou schopny rezervovat si cestu až do bezpečného místa na zastavení. Dokonalejší návěstidla se dají projet zezadu STR_BUILD_SIGNAL_SEMAPHORE_PBS_OWAY_TOOLTIP :{BLACK}Dokonalejší (PBS) jednosměrné návěstidlo (semafor){}Dokonalejší návěstidlo umožňuje vjet několika vlakům najednou do stejného úseku trati, pokud jsou schopny rezervovat si cestu až do bezpečného místa na zastavení. Jednosměrná návěstidla se nedají projet zezadu STR_BUILD_SIGNAL_ELECTRIC_NORM_TOOLTIP :{BLACK}Obyčejné návěstidlo (elektrické){}Návěstidla jsou nutná, aby nedocházelo ke srážkám vlaků na tratích, kde jezdí více než jeden vlak STR_BUILD_SIGNAL_ELECTRIC_ENTRY_TOOLTIP :{BLACK}Vjezdové návěstidlo (elektrické){}Svítí zeleně do té doby, kdy v následujícím úseku trati je alespoň jedno další svítící zeleně. Jinak svítí červeně -STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}Výjezdové návěstidlo (elektrické){}Chová se stejně jako obyčejné, ale musí se aktivovat vjezdové a cestové návěstidlo -STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}Cestové návěstidlo (elektrické){}Cestové (kombinované) návěstidlo slouží zároveň jako vjezdové a výjezdové. Tím je možné postavit velké "řetězce" návěstidel +STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}Výjezdové návěstidlo (elektrické){}Chová se stejně jako obyčejné, ale je nezbytné nastavit správnou barvu vjezdových a kombinovaných pre-signálů +STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}Kombinované návěstidlo (elektrické){}Kombinované návěstidlo slouží zároveň jako vjezdové a výjezdové. Tím je možné postavit velké "řetězce" návěstidel STR_BUILD_SIGNAL_ELECTRIC_PBS_TOOLTIP :{BLACK}Dokonalejší (PBS) návěstidlo (elektrické){}Dokonalejší návěstidlo umožňuje vjet několika vlakům najednou do stejného úseku trati, pokud jsou schopny rezervovat si cestu až do bezpečného místa na zastavení. Dokonalejší návěstidla se dají projet zezadu STR_BUILD_SIGNAL_ELECTRIC_PBS_OWAY_TOOLTIP :{BLACK}Dokonalejší (PBS) jednosměrné návěstidlo (elektrické){}Dokonalejší návěstidlo umožňuje vjet několika vlakům najednou do stejného úseku trati, pokud jsou schopny rezervovat si cestu až do bezpečného místa na zastavení. Jednosměrná návěstidla se nedají projet zezadu STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}Přeměna návěstidel{}Když je přeměna zapnuta, návěstidlo se změní kliknutím. Kliknutím s Ctrl se přepne mezi variantami návěstidla @@ -2537,6 +2661,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í @@ -2633,7 +2758,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-2012 Tým OpenTTD +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2014 Tým OpenTTD # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Uložit hru @@ -2652,6 +2777,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} @@ -2662,6 +2788,7 @@ STR_SAVELOAD_OSKTITLE :{BLACK}Zadej jm # World generation STR_MAPGEN_WORLD_GENERATION_CAPTION :{WHITE}Tvorba krajiny STR_MAPGEN_MAPSIZE :{BLACK}Velikost mapy: +STR_MAPGEN_MAPSIZE_TOOLTIP :{BLACK}Vybrat velikost mapy ve čtvercích. Počet dostupných čtverců bude o neco nižší STR_MAPGEN_BY :{BLACK}* STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Množství měst: STR_MAPGEN_DATE :{BLACK}Datum: @@ -2669,10 +2796,6 @@ STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Množstv 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: @@ -2699,7 +2822,6 @@ 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_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 @@ -2747,14 +2869,16 @@ STR_NEWGRF_SETTINGS_PRESET_DELETE_TOOLTIP :{BLACK}Odstrani STR_NEWGRF_SETTINGS_ADD :{BLACK}Přidat STR_NEWGRF_SETTINGS_ADD_FILE_TOOLTIP :{BLACK}Přidat vybranou grafiku do tvého seznamu STR_NEWGRF_SETTINGS_RESCAN_FILES :{BLACK}Načíst soubory -STR_NEWGRF_SETTINGS_RESCAN_FILES_TOOLTIP :{BLACK}Znovu vytvořit seznam dostupných grafik +STR_NEWGRF_SETTINGS_RESCAN_FILES_TOOLTIP :{BLACK}Aktualizovat seznam dostupných NewGRF souborů STR_NEWGRF_SETTINGS_REMOVE :{BLACK}Odebrat STR_NEWGRF_SETTINGS_REMOVE_TOOLTIP :{BLACK}Odstranit označenou grafiku ze seznamu 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_FILE_TOOLTIP :{BLACK}Seznam grafických souborů, které jsou nainstalovány. +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 STR_NEWGRF_SETTINGS_SHOW_PARAMETERS :{BLACK}Zobrazit parametry @@ -2778,6 +2902,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 @@ -2848,6 +2982,7 @@ STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}Právě STR_NEWGRF_DUPLICATE_GRFID :{WHITE}Nelze přidat soubor: duplicitní GRF ID STR_NEWGRF_COMPATIBLE_LOADED :{ORANGE}Odpovídající soubor nebyl nalezen (načetl se kompatibilní GRF) +STR_NEWGRF_TOO_MANY_NEWGRFS :{WHITE}Nemůžu přidat soubor. Dosažen limit NewGRF souborů STR_NEWGRF_COMPATIBLE_LOAD_WARNING :{WHITE}Kompatibilní GRF se načetly místo chybějících STR_NEWGRF_DISABLED_WARNING :{WHITE}Chybějící grafiky byly vypnuty @@ -2864,6 +2999,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 @@ -2878,6 +3014,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... @@ -2959,10 +3098,14 @@ STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT :{YELLOW}Koupit STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}Podplatit místní správu pro zvýšení hodnocení společnosti. Riziko trestu v případě přistižení.{}Cena: {CURRENCY_LONG} # Goal window -STR_GOALS_CAPTION :{WHITE}Cíle +STR_GOALS_CAPTION :{WHITE}{COMPANY} Cíle +STR_GOALS_SPECTATOR_CAPTION :{WHITE}Globální cíle STR_GOALS_GLOBAL_TITLE :{BLACK}Globální cíle: STR_GOALS_TEXT :{ORANGE}{STRING} STR_GOALS_NONE :{ORANGE}- Žádné - +STR_GOALS_SPECTATOR_NONE :{ORANGE}- Nelze - +STR_GOALS_PROGRESS :{ORANGE}{STRING} +STR_GOALS_PROGRESS_COMPLETE :{GREEN}{STRING} STR_GOALS_COMPANY_TITLE :{BLACK}Cíle společnosti: STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Klikni na cíl pro zaměření pohledu na průmysl/město/pole. Ctrl+Klik otevře nové okno s pohledem na průmyslu/městu/poli. @@ -3001,6 +3144,18 @@ STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}Již př STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING.big} z{NBSP}{STRING.gen} do {STRING.gen}{YELLOW} ({COMPANY}{YELLOW}, do {DATE_SHORT.gen}) STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Kliknutím na dotaci zaměříš pohled na průmysl/město. Při stisknutém Ctrl otevřeš nový pohled +# Story book window +STR_STORY_BOOK_CAPTION :{WHITE}{COMPANY} Kniha příběhů +STR_STORY_BOOK_SPECTATOR_CAPTION :{WHITE}Globální kniha příběhů +STR_STORY_BOOK_TITLE :{YELLOW}{STRING} +STR_STORY_BOOK_GENERIC_PAGE_ITEM :Strana {NUM} +STR_STORY_BOOK_SEL_PAGE_TOOLTIP :{BLACK}Skoč na určitou stranu vybranou v tomto seznamu +STR_STORY_BOOK_PREV_PAGE :{BLACK}Předchozí +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 STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}S přidrženým Ctrl můžeš označit více položek @@ -3014,9 +3169,9 @@ 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} na cestě z{NBSP}{STATION}) +STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} z {NBSP}{STATION}) +STR_STATION_VIEW_RESERVED :{YELLOW}({CARGO_SHORT} rezervováno pro naložení) STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Přijímá STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Ukázat seznam přijímaného nákladu @@ -3027,8 +3182,31 @@ STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :Společnost {YE STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Hodnocení STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Ukázat hodnocení společností -STR_STATION_VIEW_CARGO_RATINGS_TITLE :{BLACK}Místní hodnocení dopravní služby: -STR_STATION_VIEW_CARGO_RATING :{WHITE}{STRING}: {YELLOW}{STRING} ({COMMA}%) +STR_STATION_VIEW_SUPPLY_RATINGS_TITLE :{BLACK}Měsíční zásobování a lokální rating: +STR_STATION_VIEW_CARGO_SUPPLY_RATING :{WHITE}{STRING}: {YELLOW}{COMMA} / {STRING} ({COMMA}%) + +STR_STATION_VIEW_GROUP :{BLACK}Seskupit podle +STR_STATION_VIEW_WAITING_STATION :Stanice: Čekající +STR_STATION_VIEW_WAITING_AMOUNT :Množství: Čekající +STR_STATION_VIEW_PLANNED_STATION :Stanice: Plánované +STR_STATION_VIEW_PLANNED_AMOUNT :Množství: Plánované +STR_STATION_VIEW_FROM :{YELLOW}{CARGO_SHORT} z {STATION} +STR_STATION_VIEW_VIA :{YELLOW}{CARGO_SHORT} přes {STATION} +STR_STATION_VIEW_TO :{YELLOW}{CARGO_SHORT} do {STATION} +STR_STATION_VIEW_FROM_ANY :{RED}{CARGO_SHORT} z neznámé stanice +STR_STATION_VIEW_TO_ANY :{RED}{CARGO_SHORT} do kterékoliv stanice +STR_STATION_VIEW_VIA_ANY :{GREEN}{CARGO_SHORT} přes jakoukoliv stanici +STR_STATION_VIEW_FROM_HERE :{GREEN}{CARGO_SHORT} z této stanice +STR_STATION_VIEW_VIA_HERE :{GREEN}{CARGO_SHORT} zastavuje v této stanici +STR_STATION_VIEW_TO_HERE :{GREEN}{CARGO_SHORT} do této stanice +STR_STATION_VIEW_NONSTOP :{YELLOW}{CARGO_SHORT} bez zastavení + +STR_STATION_VIEW_GROUP_S_V_D :Odkud-Přes-Kam +STR_STATION_VIEW_GROUP_S_D_V :Odkud-Kam-Přes +STR_STATION_VIEW_GROUP_V_S_D :Přes-Odkud-Kam +STR_STATION_VIEW_GROUP_V_D_S :Přes-Kam-Odkud +STR_STATION_VIEW_GROUP_D_S_V :Kam-Odkud-Přes +STR_STATION_VIEW_GROUP_D_V_S :Kam-Přes-Odkud ############ range for rating starts STR_CARGO_RATING_APPALLING :Příšerné @@ -3085,7 +3263,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 @@ -3155,7 +3333,6 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS :{WHITE}Průplav STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}Stanice: STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}Staniční oblasti STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}Letiště -STR_COMPANY_INFRASTRUCTURE_VIEW_COST :{WHITE}{1:CURRENCY_LONG}/rok ({0:COMMA}) STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL :{WHITE}{CURRENCY_LONG}/rok # Industry directory @@ -3172,6 +3349,7 @@ STR_INDUSTRY_VIEW_PRODUCTION_LAST_MONTH_TITLE :{BLACK}Produkce STR_INDUSTRY_VIEW_TRANSPORTED :{YELLOW}{CARGO_LONG}{STRING}{BLACK} ({COMMA}% přepraveno) STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Vystředit pohled na průmysl. Ctrl+Klik otevře nový pohled STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Produkce: {YELLOW}{COMMA}% +STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}Průmysl oznámila blížící se uzavření! ############ range for requires starts STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Vyžaduje: {YELLOW}{STRING.acc}{STRING} @@ -3234,12 +3412,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 @@ -3541,6 +3722,11 @@ STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Interval 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 +STR_SERVICE_INTERVAL_DROPDOWN_TOOLTIP :{BLACK}Změnit typ servisního intervalu +STR_VEHICLE_DETAILS_DEFAULT :Defaultní +STR_VEHICLE_DETAILS_DAYS :Dnů +STR_VEHICLE_DETAILS_PERCENT :Procent + STR_QUERY_RENAME_TRAIN_CAPTION :{WHITE}Pojmenovat vlak STR_QUERY_RENAME_ROAD_VEHICLE_CAPTION :{WHITE}Přejmenovat silniční vozidlo STR_QUERY_RENAME_SHIP_CAPTION :{WHITE}Přejemnovat loď @@ -3629,7 +3815,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 @@ -3721,18 +3907,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 @@ -3758,9 +3944,13 @@ 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ů} @@ -3776,7 +3966,7 @@ STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}Tento j STR_TIMETABLE_STATUS_START_AT :{BLACK}Tento jízdní řád začne v {STRING} STR_TIMETABLE_STARTING_DATE :{BLACK}Datum začátku -STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Vyberte počáteční datum jízdního řádu +STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Vyber počáteční datum tohoto jízdního řádu. Ctrl+Klik nastaví počáteční datum jízdního řádu všem vozidlům sdílejícím příkazy vzhledem k jejich pořadí STR_TIMETABLE_CHANGE_TIME :{BLACK}Změnit čas STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Změnit čas pro splnění jízdního příkazu @@ -3890,8 +4080,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 @@ -3912,6 +4104,10 @@ STR_INCOME_FLOAT_INCOME_SMALL :{TINY_FONT}{GRE STR_INCOME_FLOAT_INCOME :{GREEN}Příjem: {CURRENCY_LONG} STR_FEEDER_TINY :{TINY_FONT}{YELLOW}Překládka: {CURRENCY_LONG} STR_FEEDER :{YELLOW}Překládka: {CURRENCY_LONG} +STR_FEEDER_INCOME_TINY :{TINY_FONT}{YELLOW}Překládka: {CURRENCY_LONG}{WHITE} / {GREEN}Příjem: {CURRENCY_LONG} +STR_FEEDER_INCOME :{YELLOW}Překládka: {CURRENCY_LONG}{WHITE} / {GREEN}Příjem: {CURRENCY_LONG} +STR_FEEDER_COST_TINY :{TINY_FONT}{YELLOW}Překládka: {CURRENCY_LONG}{WHITE} / {RED}Náklady: {CURRENCY_LONG} +STR_FEEDER_COST :{YELLOW}Překládka: {CURRENCY_LONG}{WHITE} / {RED}Náklady: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_COST :{WHITE}Odhadovaná cena: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Odhadovaný příjem: {CURRENCY_LONG} @@ -4215,6 +4411,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... @@ -4270,6 +4467,11 @@ STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}Nelze zm STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... vozidlo bylo zničeno +STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL :{WHITE}Žádná vozidla nejsou dostupná +STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Zmeň nastavení NewGRF +STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}Zatím nejsou dostupná žádná vozidla +STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Začít hru po {DATE_SHORT} nebo použít NewGRF, která zajistí dřívější vozidla + # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Nelze nechat vlak projet semafory v nebezpečí... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Nelze obrátit vlak... @@ -4312,6 +4514,16 @@ STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}Nelze sm # Translatable comment for OpenTTD's desktop shortcut STR_DESKTOP_SHORTCUT_COMMENT :Simulační hra založená na Transport Tycoon Deluxe +# Translatable descriptions in media/baseset/*.ob* files +STR_BASEGRAPHICS_DOS_DESCRIPTION :Původní sada grafik Transport Tycoon Deluxe (verze pro DOS). +STR_BASEGRAPHICS_DOS_DE_DESCRIPTION :Původní sada grafik Transport Tycoon Deluxe (německá verze pro DOS). +STR_BASEGRAPHICS_WIN_DESCRIPTION :Původní sada grafik Transport Tycoon Deluxe (verze pro Windows). +STR_BASESOUNDS_DOS_DESCRIPTION :Původní sada zvuků Transport Tycoon Deluxe (verze pro DOS). +STR_BASESOUNDS_WIN_DESCRIPTION :Původní sada zvuků Transport Tycoon Deluxe (verze pro Windows). +STR_BASESOUNDS_NONE_DESCRIPTION :Prázdná sada zvuků. +STR_BASEMUSIC_WIN_DESCRIPTION :Původní hudba Transport Tycoon Deluxe (verze pro Windows). +STR_BASEMUSIC_NONE_DESCRIPTION :Prázná hudební sada. + ##id 0x2000 # Town building names STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1 :Vysoký kancelářský blok @@ -4545,7 +4757,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í) @@ -4754,7 +4966,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 @@ -4875,8 +5087,9 @@ 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_SPACE_STRING :{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} @@ -4900,9 +5113,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 6d46e3a96..38bf50679 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,7 +240,8 @@ 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 @@ -256,7 +265,6 @@ STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}Areal: { # These are used in buttons -STR_SORT_BY_CAPTION_POPULATION :{BLACK}Indbyggertal STR_SORT_BY_CAPTION_NAME :{BLACK}Navn STR_SORT_BY_CAPTION_DATE :{BLACK}Dato # These are used in dropdowns @@ -277,7 +285,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 :Værdi af ventende fragt +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) @@ -286,9 +295,11 @@ 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 +STR_SORT_BY_RATING :Værdi # Tooltips for the main toolbar STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Sæt spillet på pause @@ -301,6 +312,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 @@ -371,19 +384,19 @@ STR_FILE_MENU_SEPARATOR : STR_FILE_MENU_EXIT :Afslut ############ range ends here -############ range for map menu starts +# 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, yet the town directory is shown in the map menu in the scenario editor + +############ range for town menu starts STR_TOWN_MENU_TOWN_DIRECTORY :Byoversigt -############ end of the 'Display map' dropdown STR_TOWN_MENU_FOUND_TOWN :Stift by -############ end of the 'Town' dropdown +############ range ends here ############ range for subsidies menu starts STR_SUBSIDIES_MENU_SUBSIDIES :Tilskudsordninger -STR_SUBSIDIES_MENU_GOAL :Nuværende mål ############ range ends here ############ range for graph menu starts @@ -398,6 +411,7 @@ STR_GRAPH_MENU_CARGO_PAYMENT_RATES :Graf over lastu ############ range for company league menu starts STR_GRAPH_MENU_COMPANY_LEAGUE_TABLE :Selskabsoversigt STR_GRAPH_MENU_DETAILED_PERFORMANCE_RATING :Detaljeret præstationsoversigt +STR_GRAPH_MENU_HIGHSCORE :Topresultater ############ range ends here ############ range for industry menu starts @@ -456,7 +470,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 +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 @@ -504,7 +536,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 @@ -649,7 +681,7 @@ STR_HIGHSCORE_PERFORMANCE_TITLE_CAPITALIST :Kapitalist STR_HIGHSCORE_PERFORMANCE_TITLE_MAGNATE :Magnat STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL :Mogul STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY :Århundredes Matador -STR_HIGHSCORE_NAME :{BIG_FONT}{PRESIDENT_NAME}, {COMPANY} +STR_HIGHSCORE_NAME :{PRESIDENT_NAME}, {COMPANY} STR_HIGHSCORE_STATS :{BIG_FONT}'{STRING}' ({COMMA}) STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{BLACK}{COMPANY} får '{STRING}' status! STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{WHITE}{PRESIDENT_NAME} fra {COMPANY} får '{STRING}' status! @@ -660,17 +692,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 +739,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 +750,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 @@ -756,7 +794,7 @@ STR_NEWS_COMPANY_IN_TROUBLE_TITLE :{BIG_FONT}{BLAC STR_NEWS_COMPANY_IN_TROUBLE_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} vil blive erklæret konkurs eller solgt, hvis ikke ydelsen stiger snart! STR_NEWS_COMPANY_MERGER_TITLE :{BIG_FONT}{BLACK}Fussion mellem transportselskaber! STR_NEWS_COMPANY_MERGER_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} er blevet solgt til {STRING} for {CURRENCY_LONG}! -STR_NEWS_COMPANY_BANKRUPT_TITLE :{BIG_FONT}{BLACK}Bankerupt! +STR_NEWS_COMPANY_BANKRUPT_TITLE :{BIG_FONT}{BLACK}Bankerot! STR_NEWS_COMPANY_BANKRUPT_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} er blevet lukket af kreditorerne og alle ejendomme er solgt! STR_NEWS_COMPANY_LAUNCH_TITLE :{BIG_FONT}{BLACK}Nyt transportselskab er startet! STR_NEWS_COMPANY_LAUNCH_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} starter konstruktion i nærheden af {TOWN}! @@ -790,13 +828,11 @@ 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_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} er gammel STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} er meget gammel @@ -875,15 +911,12 @@ STR_GAME_OPTIONS_CURRENCY_LTL :Litauiske Litas STR_GAME_OPTIONS_CURRENCY_KRW :Sydkoreansk Won (KRW) STR_GAME_OPTIONS_CURRENCY_ZAR :Sydafrikansk Rand (ZAR) STR_GAME_OPTIONS_CURRENCY_CUSTOM :Brugerdefineret... +STR_GAME_OPTIONS_CURRENCY_GEL :Georgiske Lari (GEL) +STR_GAME_OPTIONS_CURRENCY_IRR :Iranske Rialer (IRR) ############ end of currency region -STR_GAME_OPTIONS_MEASURING_UNITS_FRAME :{BLACK}Måleenheder -STR_GAME_OPTIONS_MEASURING_UNITS_DROPDOWN_TOOLTIP :{BLACK}Vælg måleenheder ############ start of measuring units region -STR_GAME_OPTIONS_MEASURING_UNITS_IMPERIAL :Britisk standard -STR_GAME_OPTIONS_MEASURING_UNITS_METRIC :Metersystem -STR_GAME_OPTIONS_MEASURING_UNITS_SI :SI ############ end of measuring units region STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Vejkøretøjer @@ -921,11 +954,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 @@ -937,9 +972,6 @@ 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_BASE_GRF :{BLACK}Basis-grafiksæt STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Vælg det basis-grafiksæt der skal bruges STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} forsvund{P en ne}/ødelagt{P "" e} fil{P "" er} @@ -1053,7 +1085,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 @@ -1061,12 +1094,14 @@ STR_CONFIG_SETTING_RESTRICT_ALL :Ekspert indstil STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :Indstillinger med en anden værdi end standard STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :Indstillinger med en anden værdi end dine nyt-spil indstillinger -STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :Alle indstillinger +STR_CONFIG_SETTING_TYPE_DROPDOWN_HELPTEXT :{BLACK}Begrænser listen nedenfor til at visse indstillingstyper +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_SETTINGS_NONE :{WHITE}- Ingen - STR_CONFIG_SETTING_OFF :Fra STR_CONFIG_SETTING_ON :Til @@ -1084,11 +1119,29 @@ STR_CONFIG_SETTING_HORIZONTAL_POS_LEFT :Venstre STR_CONFIG_SETTING_HORIZONTAL_POS_CENTER :Center STR_CONFIG_SETTING_HORIZONTAL_POS_RIGHT :Højre +STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN :Maksimum startlån: {STRING} +STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Maksimumbeløb et selskab kan låne (uden at tage inflation i betragtning) +STR_CONFIG_SETTING_INTEREST_RATE :Lånerente: {STRING} +STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Lånerente; kontrollerer også inflationen hvis aktiveret +STR_CONFIG_SETTING_RUNNING_COSTS :Driftsomkostninger: {STRING} +STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT :Indstil niveauet for vedligeholdelse og driftsomkostninger af kørertøjer og infrastruktur +STR_CONFIG_SETTING_CONSTRUCTION_SPEED :Konstruktionshastighed: {STRING} +STR_CONFIG_SETTING_CONSTRUCTION_SPEED_HELPTEXT :Begræns antallet af igangværende konstruktioner for AI'er STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS :Køretøjs nedbrud: {STRING} +STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS_HELPTEXT :Indstil hvor tit uservicerede kørertøjer må bryde ned +STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER :Tilskudmultiplikator: {STRING} +STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT :Indstil, hvor meget der bliver betalt for tilskudsordninger +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 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å 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_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} @@ -1113,14 +1166,8 @@ 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_TUNNEL_LENGTH :Maksimal tunnel længde: {STRING} @@ -1131,7 +1178,7 @@ 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 :Efterforskning STR_CONFIG_SETTING_INDUSTRY_PLATFORM :Fladt område omkring industier: {STRING} -STR_CONFIG_SETTING_INDUSTRY_PLATFORM_HELPTEXT :Mængden af ​​fladt område omkring en industri. Dette sikrer tom plads vil forblive tilgængelige omkring en industri for bygge spor osv. +STR_CONFIG_SETTING_INDUSTRY_PLATFORM_HELPTEXT :Mængden af fladt område omkring en industri. Dette sikrer tom plads vil forblive tilgængelige omkring en industri for bygge spor osv. STR_CONFIG_SETTING_MULTIPINDTOWN :Tillad flere af samme slags industri per by: {STRING} STR_CONFIG_SETTING_MULTIPINDTOWN_HELPTEXT :Normalt vil en by ikke vil have mere end en industri af hver type. Med denne indstilling, vil det give flere industrier af samme type i samme by STR_CONFIG_SETTING_SIGNALSIDE :Vis signaler: {STRING} @@ -1148,8 +1195,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 @@ -1180,10 +1225,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å @@ -1218,7 +1259,7 @@ STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Forsinkelse fø 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} -STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :Vis befolkningen i ​​byerne i deres etiket på kortet +STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :Vis befolkningen i byerne i deres etiket på kortet 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 @@ -1241,8 +1282,6 @@ STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Rotér højdeko 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 @@ -1258,14 +1297,18 @@ 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 :Violet STR_CONFIG_SETTING_REVERSE_SCROLLING :Flyt i modsat retning ved scroll med musen: {STRING} +STR_CONFIG_SETTING_REVERSE_SCROLLING_HELPTEXT :Adfærd når kortet rulles med højre museknap. Hvis deaktiveret, bevæger musen kameraet. Når funktionen er aktiveret, flytter musen kortet STR_CONFIG_SETTING_SMOOTH_SCROLLING :Jævn scrolling af udsnit: {STRING} +STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Kontroller hvordan de vigtigste visning ruller til en bestemt position, når du klikker på det lille kort eller når de udsteder en kommando til at rulle til en bestemt genstand på kortet. Hvis aktiveret, ruller udsigtspunktet jævnt, hvis deaktiveret springer den direkte til det valgte punkt STR_CONFIG_SETTING_MEASURE_TOOLTIP :Vis måleværktøjstip ved brug af div. bygge-værktøjer: {STRING} STR_CONFIG_SETTING_MEASURE_TOOLTIP_HELPTEXT :Vis afstande og højdeforskelle, når der trækkes under konstruktioner STR_CONFIG_SETTING_LIVERIES :Vis selskabsfarver: {STRING} +STR_CONFIG_SETTING_LIVERIES_HELPTEXT :Kontroler anvendelse af køretøjet-typespecifikke leveringer for køretøjer (i modsætning til virksomhedsspecifikke) STR_CONFIG_SETTING_LIVERIES_NONE :Ingen STR_CONFIG_SETTING_LIVERIES_OWN :Eget selskab STR_CONFIG_SETTING_LIVERIES_ALL :Alle selskaber STR_CONFIG_SETTING_PREFER_TEAMCHAT :Foretræk hold-chat med : {STRING} +STR_CONFIG_SETTING_PREFER_TEAMCHAT_HELPTEXT :Skift bindingen af virksomheds-intern og offentlig chat til hhv. STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING :Rulleknappens funktion: {STRING} STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING_HELPTEXT :Aktiver rulning med to-dimensionelle muse-hjul STR_CONFIG_SETTING_SCROLLWHEEL_ZOOM :Zoom kort @@ -1273,6 +1316,12 @@ STR_CONFIG_SETTING_SCROLLWHEEL_SCROLL :Rul kort STR_CONFIG_SETTING_SCROLLWHEEL_OFF :Slået fra STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER :Rulleknap-hastighed på kort: {STRING} STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER_HELPTEXT :Styr følsomheden af muse-hjul rulning +STR_CONFIG_SETTING_OSK_ACTIVATION :Tillad skærmtastatur: {STRING} +STR_CONFIG_SETTING_OSK_ACTIVATION_HELPTEXT :Vælg hvordan skærmtastature åbnes ved indtasting i redigeringfelter kun med markør. Dette er beregnet til små enheder uden egentlig tastatur +STR_CONFIG_SETTING_OSK_ACTIVATION_DISABLED :Deaktiveret +STR_CONFIG_SETTING_OSK_ACTIVATION_DOUBLE_CLICK :Dobbelt click +STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK_FOCUS :Enkelt click (når fokuseret) +STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK :Enkelt click (umiddelbart) STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU :Højreklik-emulering: {STRING} STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_HELPTEXT :Vælg metode til at emulere højre muse-knap klik @@ -1281,6 +1330,8 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Kontrolklik 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_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 @@ -1288,11 +1339,6 @@ STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :langt (31. Dec 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} @@ -1312,27 +1358,36 @@ STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE_HELPTEXT :Vis forventede STR_CONFIG_SETTING_QUICKGOTO :Hurtig oprettelse af køretøjsordrer: {STRING} STR_CONFIG_SETTING_QUICKGOTO_HELPTEXT :Forvælg 'gå-til' når du åbner ordrer vinduet STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE :Standard skinnetype (efter nyt spil/hentet spil): {STRING} +STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_HELPTEXT :Hvilken sportype der skal vælges efter start eller hentning af et spil. 'første tilgængelige' vælger den ældste type spor, 'sidste tilgængelige' vælger den nyeste form for spor, og 'mest anvendte' vælger den type, der i øjeblikket er mest i brug STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_FIRST :Første tilgængelige STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_LAST :Sidste tilgængelige STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_MOST_USED :Mest anvendte STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :Vis reserverede spor: {STRING} +STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION_HELPTEXT :Giv reserverede spor en anden farve for at hjælpe med problemer med tog der nægter at indgå i sti-baserede blokke STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :Hold byggeværktøjer aktive efter brug: {STRING} STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Hold bygnings-værktøjer til broer, tunneler, mv. åben efter brug STR_CONFIG_SETTING_EXPENSES_LAYOUT :Grupper udgifter i firmaets finansvindue: {STRING} STR_CONFIG_SETTING_EXPENSES_LAYOUT_HELPTEXT :Definer layout for firmaets udgifter-vindue +STR_CONFIG_SETTING_SOUND_TICKER :Nyhedssymbol: {STRING} +STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :Afspil lyd for opsummerede nyheds beskeder 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, som viser firmaets resultater sammenlignet med det tidligere år STR_CONFIG_SETTING_SOUND_CONFIRM :Konstruktion: {STRING} +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} STR_CONFIG_SETTING_SOUND_DISASTER_HELPTEXT :Afspil uheld og katastrofers lydeffekter STR_CONFIG_SETTING_SOUND_VEHICLE :Køretøjer: {STRING} STR_CONFIG_SETTING_SOUND_VEHICLE_HELPTEXT :Afspil køretøjers lydeffekter +STR_CONFIG_SETTING_SOUND_AMBIENT :Omgivelse: {STRING} +STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :Afspil omgivelseslyde for landskaber, industrier og byer STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING :Deaktiver bygning af infrastruktur når ingen passende køretøjer er tilgængelige: {STRING} +STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING_HELPTEXT :Når slået til, er infrastruktur kun tilgængelig hvis der også er køretøjer tilgængelige. Dette forebygger spild af tid og penge grundet ubrugbar infrastruktur. STR_CONFIG_SETTING_MAX_TRAINS :Maks. antal tog per spiller: {STRING} STR_CONFIG_SETTING_MAX_TRAINS_HELPTEXT :Maksimum antal toge et firma kan have STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :Maks. antal køretøjer per spiller: {STRING} @@ -1347,24 +1402,48 @@ STR_CONFIG_SETTING_AI_BUILDS_TRAINS_HELPTEXT :Aktivering af d STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES :Deaktiver køretøjer for computeren: {STRING} STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES_HELPTEXT :Aktivering af denne indstilling gør bygning af vejkøretøjer umuligt for en computer modstander STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT :Deaktiver fly for computeren: {STRING} +STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT_HELPTEXT :Denne indstilling vil gøre det umuligt for en computerstyret spiller at bygge fly STR_CONFIG_SETTING_AI_BUILDS_SHIPS :Deaktiver skibe for computeren: {STRING} +STR_CONFIG_SETTING_AI_BUILDS_SHIPS_HELPTEXT :Denne indstilling gør det umuligt for en computerspiller at bygge skibe, når den er slået til. +STR_CONFIG_SETTING_AI_PROFILE :Standart indstillingsprofil: {STRING} +STR_CONFIG_SETTING_AI_PROFILE_HELPTEXT :Vælg hvilke indstillinger der skal bruges for tilfældig AIs eller for oprindelige værdier, når du tilføjer en ny AI eller spil Script +STR_CONFIG_SETTING_AI_PROFILE_EASY :Let +STR_CONFIG_SETTING_AI_PROFILE_MEDIUM :Mellem +STR_CONFIG_SETTING_AI_PROFILE_HARD :Svær STR_CONFIG_SETTING_AI_IN_MULTIPLAYER :Tillad computerspillere i netværksspil: {STRING} +STR_CONFIG_SETTING_AI_IN_MULTIPLAYER_HELPTEXT :Tillad computerstyrede spillere at deltage i multiplayer spil STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES :#opcodes før scriptet bliver stoppet: {STRING} +STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES_HELPTEXT :Maximale nummer af udregninger et script kan eksekvere i en tur STR_CONFIG_SETTING_SERVINT_ISPERCENT :Service intervaller er i procent: {STRING} +STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Vælg om vedligeholdelse bliver udløst af forløbet tid, eller pålideligheden som falder en givet procenttal i forhold til maximum pålideligheden +STR_CONFIG_SETTING_SERVINT_TRAINS :Standard vedligeholdelses interval for tog: {STRING} +STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :Sæt serviceintervallets standardværdi for nye skinnekøretøjer. STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA} dag{P 0 "" e}/% STR_CONFIG_SETTING_SERVINT_DISABLED :Deaktiveret +STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES :Standard vedligeholdelses interval for vejkøretøjer: {STRING} +STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES_HELPTEXT :Sæt serviceintervallets standardværdi for nye vejkøretøjer. +STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Standard serviceinterval for fly: {STRING} +STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Sæt serviceintervallets standardværdi for nye fly. +STR_CONFIG_SETTING_SERVINT_SHIPS :Standard serviceinterval for skibe: {STRING} +STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Sæt serviceintervallets standardværdi for nye skibe. STR_CONFIG_SETTING_NOSERVICE :Slå service fra, når nedbrud er sat til ingen: {STRING} +STR_CONFIG_SETTING_NOSERVICE_HELPTEXT :Når tilladt, bliver køretøjer ikke serviceret, hvis de ikke kan bryde ned STR_CONFIG_SETTING_WAGONSPEEDLIMITS :Aktiver hastighedsbegrænsning for vogne: {STRING} +STR_CONFIG_SETTING_WAGONSPEEDLIMITS_HELPTEXT :Når tilladt, brug også fartgrænse på vogne, for at bestemme makshastigheden på tog STR_CONFIG_SETTING_DISABLE_ELRAILS :Slå elektriske jernbaner fra: {STRING} +STR_CONFIG_SETTING_DISABLE_ELRAILS_HELPTEXT :Tilladelse af denne indstilling slår nødvendigheden af elektrisk jernbaner fra, for at få elektriske tog til at kører STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN :Ankomst af første køretøj til spillerens station: {STRING} +STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN_HELPTEXT :Vis en avis når det første køretøj ankommer til en ny spillers station 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} STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN_HELPTEXT :Vis en avis når nye industrier åbner STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE :Lukning af industrier: {STRING} @@ -1372,15 +1451,21 @@ STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE_HELPTEXT :Vis en avis nå STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES :Økonomiændringer: {STRING} STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES_HELPTEXT :Vis en avis om globale ændringer i økonomi STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY :Produktionsændringer i industrier betjent af firmaet: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY_HELPTEXT :Vis en avis, når produktions niveauet stiger for en industri som benyttes af selskabet STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER :Produktionsændringer for industrier forsynet af deltager(e): {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER_HELPTEXT :Vis en avis, når produktions niveauet for industrier som benyttes af konkurenter ændres STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED :Andre produktionsændringer for industri: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED_HELPTEXT :Vis en avis, når produktions niveauet for industrier som ikke benyttes af selskabet eller konkurenter ændres STR_CONFIG_SETTING_NEWS_ADVICE :Råd / information om firmaets køretøjer: {STRING} STR_CONFIG_SETTING_NEWS_ADVICE_HELPTEXT :Vis meddelelser om køretøjer der kræver opmærksomhed 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 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} +STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION_HELPTEXT :Vis en avis om almindelige begivenhedder, som køb af eksklusive rettighedder, eller finansiering af vejkonstruktion STR_CONFIG_SETTING_NEWS_MESSAGES_OFF :Fra STR_CONFIG_SETTING_NEWS_MESSAGES_SUMMARY :Kortfattet @@ -1390,18 +1475,27 @@ STR_CONFIG_SETTING_COLOURED_NEWS_YEAR :Farvede nyheder STR_CONFIG_SETTING_COLOURED_NEWS_YEAR_HELPTEXT :Året hvor nyheds-annonceringer bliver udskrevet i farver. Før dette år, bruger det sort / hvid STR_CONFIG_SETTING_STARTING_YEAR :Start dato: {STRING} STR_CONFIG_SETTING_SMOOTH_ECONOMY :Aktiver rolig økonomi (flere små ændringer): {STRING} +STR_CONFIG_SETTING_SMOOTH_ECONOMY_HELPTEXT :Når slået til, ændre industriproduktion oftere, og i små trin. Denne indstilling har normalt ingen effekt, hvis industrityper er fastsat af NewGRF STR_CONFIG_SETTING_ALLOW_SHARES :Tillad at købe aktier i andre selskaber: {STRING} +STR_CONFIG_SETTING_ALLOW_SHARES_HELPTEXT :Hvis aktiveret, tillades køb og salg af selskabsaktier. Aktier vil kun være tilgængelige for selskaber der er nået en hvis alder +STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE :Procentdel af deloverskud som skal betales i hovedsystemer: {STRING} +STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE_HELPTEXT :Procentdel af indkomst givet til de mellemliggende dele i hovedsystemer, giver mere kontrol over indkomst STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY :Når der trækkes, placer signaler hvert: {STRING} +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+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_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 STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBS :Avanceret STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBSOWAY :Ensrettet avanceret STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES :Bladr gennem signaltyper: {STRING} +STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES_HELPTEXT :Vælg hvilke signaltyper et vælge imellem, når der Ctrl+klikkes på byg signal med signalværktøjet STR_CONFIG_SETTING_CYCLE_SIGNAL_NORMAL :Kun normal STR_CONFIG_SETTING_CYCLE_SIGNAL_PBS :Kun avanceret STR_CONFIG_SETTING_CYCLE_SIGNAL_ALL :Alle @@ -1409,32 +1503,44 @@ 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. 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_FORBIDDEN :Ikke tilladt +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 :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 :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 STR_CONFIG_SETTING_TOOLBAR_POS :Placering af værktøjslinje: {STRING} +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_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 STR_CONFIG_SETTING_SOFT_LIMIT :Vinduesbegræsning (ikke-sticky): {STRING} +STR_CONFIG_SETTING_SOFT_LIMIT_HELPTEXT :Antal ikke klæbende vinduer åbnet før gamle vinduer automatisk bliver lukket for at gøre plads til nye vinduer STR_CONFIG_SETTING_SOFT_LIMIT_VALUE :{COMMA} 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 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 @@ -1454,28 +1560,78 @@ 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 vægte er vist i brugergrænsefladen, så vis dem i de valgte 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 rumfang er vist i brugergrænsefladen, så vis dem i de valgte 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øjder 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_SOUND :{ORANGE}Lydeffekter +STR_CONFIG_SETTING_INTERFACE :{ORANGE}Brugerflade +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Konstruktion STR_CONFIG_SETTING_VEHICLES :{ORANGE}Køretøjer -STR_CONFIG_SETTING_STATIONS :{ORANGE}Stationer -STR_CONFIG_SETTING_ECONOMY :{ORANGE}Økonomi +STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Ruteplanlægning +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 @@ -1509,6 +1665,8 @@ STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_ALGORITHM :{WHITE}... save STR_CONFIG_ERROR_INVALID_BASE_GRAPHICS_NOT_FOUND :{WHITE}... ignorere Basis Grafik sæt '{STRING}': ikke fundet STR_CONFIG_ERROR_INVALID_BASE_SOUNDS_NOT_FOUND :{WHITE}... ignorere Basis Lyde sæt '{STRING}': ikke fundet STR_CONFIG_ERROR_INVALID_BASE_MUSIC_NOT_FOUND :{WHITE}... ignorere Basis Musik sæt '{STRING}': ikke fundet +STR_CONFIG_ERROR_OUT_OF_MEMORY :{WHITE}Utilstrækkelig hukommelse +STR_CONFIG_ERROR_SPRITECACHE_TOO_BIG :{WHITE}Allokering af {BYTES} spritecache fejlede. Spritecachen blev indskrænket til {BYTES}. Dette vil sænke OpenTTDs ydelse. Du kan forsøge at slå 32bpp grafik og/eller zoom-ind niveauer for at reducere hukommelseskravet # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} @@ -1521,6 +1679,7 @@ STR_INTRO_SCENARIO_EDITOR :{BLACK}Scenarie STR_INTRO_MULTIPLAYER :{BLACK}Netværksspil STR_INTRO_GAME_OPTIONS :{BLACK}Spilvalg +STR_INTRO_HIGHSCORE :{BLACK} Topresultater STR_INTRO_ADVANCED_SETTINGS :{BLACK}Avancerede indstillinger STR_INTRO_NEWGRF_SETTINGS :{BLACK}NewGRF indstillinger STR_INTRO_ONLINE_CONTENT :{BLACK}Tjek Online Indhold @@ -1540,6 +1699,7 @@ STR_INTRO_TOOLTIP_SUB_TROPICAL_LANDSCAPE :{BLACK}Vælg 's STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Vælg 'legetøjsland' landskab 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_NEWGRF_SETTINGS :{BLACK}Vis NewGRF-indstillinger STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Tjek for nyt og opdateret indhold til download @@ -1628,6 +1788,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 @@ -1683,10 +1844,10 @@ STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}Ændre s # Network server list STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}Netværksspil -STR_NETWORK_SERVER_LIST_CONNECTION :{BLACK}Forbindelse: -STR_NETWORK_SERVER_LIST_CONNECTION_TOOLTIP :{BLACK}Vælg mellem et internet baseret eller et lokalnet baseret spil -STR_NETWORK_SERVER_LIST_LAN :LAN -STR_NETWORK_SERVER_LIST_INTERNET :Internet +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 @@ -1745,8 +1906,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_LAN_INTERNET :LAN / Internet -STR_NETWORK_START_SERVER_INTERNET_ADVERTISE :Internet (bekendtgør spillet) +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 @@ -1867,6 +2028,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 @@ -1985,6 +2147,10 @@ STR_CONTENT_SELECT_UPDATES_CAPTION :{BLACK}Vælg op STR_CONTENT_SELECT_UPDATES_CAPTION_TOOLTIP :{BLACK}Vælg alt indhold, der er opdateringer til eksisterende indhold, til download STR_CONTENT_UNSELECT_ALL_CAPTION :{BLACK}Fravælg alle STR_CONTENT_UNSELECT_ALL_CAPTION_TOOLTIP :{BLACK}Fravælg alt indhold fra download +STR_CONTENT_SEARCH_EXTERNAL :{BLACK}Søg på eksterne websider +STR_CONTENT_SEARCH_EXTERNAL_TOOLTIP :{BLACK}Søgeresultat ikke tilgængeligt på OpenTTD's indholdstjeneste for websteder som ikke er associeret med OpenTTD +STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER_CAPTION :{WHITE}Du forlader OpenTTD! +STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER :{WHITE}Betingelserne for download af indhold fra eksterne websteder varierer.{}Du må referere til de eksterne sites for vejledning i hvordan indholdet skal installeres i OpenTTD.{} Ønsker du at fortsætte? STR_CONTENT_FILTER_TITLE :{BLACK}Tag/navngiv filter: STR_CONTENT_OPEN_URL :{BLACK}Besøg hjemmeside STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}Besøg hjemmesiden for dette indhold @@ -2054,6 +2220,17 @@ STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}Slå tra STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Slå gennemsigtighed til/fra for laste-indikatorer. CTRL+Klik for at låse værdi. 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 STR_STATION_BUILD_COVERAGE_OFF :{BLACK}Fra @@ -2295,14 +2472,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 @@ -2356,6 +2533,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 @@ -2452,7 +2630,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-2012 OpenTTD teamet +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2014 OpenTTD teamet # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Gem spil @@ -2481,6 +2659,7 @@ STR_SAVELOAD_OSKTITLE :{BLACK}Skriv et # World generation STR_MAPGEN_WORLD_GENERATION_CAPTION :{WHITE}Verdensgenerering STR_MAPGEN_MAPSIZE :{BLACK}Kortstørrelse: +STR_MAPGEN_MAPSIZE_TOOLTIP :{BLACK}Vælg kortets størrelse i fliser. Antallet af tilgængelige fliser vil være en anelse mindre STR_MAPGEN_BY :{BLACK}* STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Antal byer: STR_MAPGEN_DATE :{BLACK}Dato: @@ -2488,10 +2667,6 @@ STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Antal in 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: @@ -2518,7 +2693,6 @@ 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_SNOW_LINE_QUERY_CAPT :{WHITE}Ændre snegrænsen STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Ændre startår @@ -2597,6 +2771,8 @@ 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 + # NewGRF parameters window STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}Ændre NewGRF parameterne STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Luk @@ -2656,6 +2832,7 @@ STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Indeholder adskillige handling 8 indgange (grafikelement {3:NUM}) STR_NEWGRF_ERROR_READ_BOUNDS :Læs forbi slutningen af pseudo-grafikelement (grafikelement {3:NUM}) STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}Det brugte basis grafiksæt mangler en række elementer.{}Opdater venligst grafiksættet. +STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}Den grafikpakke som bruges er ufuldstændig.{}Opdater venligst grafikpakken.{}eftersom du spiller et{YELLOW} development snapshot of OpenTTD{WHITE},får du måske også brug for er{YELLOW}development snapshot of the base graphics{WHITE} STR_NEWGRF_ERROR_GRM_FAILED :De ønskede GRF ressourcer er ikke tilgængelige (grafikelement {3:NUM}) STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} blev deaktiveret af {2:STRING} STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Ugyldigt / ukendt grafikelement layoutformat (grafikelement {3:NUM}) @@ -2666,6 +2843,7 @@ STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}Du er v STR_NEWGRF_DUPLICATE_GRFID :{WHITE}Kan ikke tilføje sæt: dobbelt GRF ID STR_NEWGRF_COMPATIBLE_LOADED :{ORANGE}Tilsvarende fil ikke fundet (kompatibel GRF indlæst) +STR_NEWGRF_TOO_MANY_NEWGRFS :{WHITE}Kan ikke tilføje fil: Grænsen for antal NewGRF filer er nået STR_NEWGRF_COMPATIBLE_LOAD_WARNING :{WHITE}Kompatible GRF fil(er) indlæst i stedet for manglende fil(er) STR_NEWGRF_DISABLED_WARNING :{WHITE}Manglende GRF fil(er) er blevet slået fra @@ -2696,6 +2874,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... @@ -2777,10 +2958,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_CAPTION :{WHITE}Mål -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 @@ -2819,6 +3004,18 @@ STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}Tilskuds STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING} fra {STRING} til {STRING}{YELLOW} ({COMPANY}{YELLOW}, indtil {DATE_SHORT}) 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 STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}Hold Ctrl nede for at vælge mere end én ting @@ -2832,9 +3029,9 @@ 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) STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Accepterer STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Vis liste over accepteret last @@ -2845,8 +3042,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_CARGO_RATINGS_TITLE :{BLACK}Lokal bedømmelse af transportservice: -STR_STATION_VIEW_CARGO_RATING :{WHITE}{STRING}: {YELLOW}{STRING} ({COMMA}%) +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 @@ -2973,7 +3193,6 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS :{WHITE}Kanaler STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}Stationer: STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}Station felter STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}Lufthavne -STR_COMPANY_INFRASTRUCTURE_VIEW_COST :{WHITE}{1:CURRENCY_LONG}/år ({0:COMMA}) STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL :{WHITE}{CURRENCY_LONG}/år # Industry directory @@ -2990,6 +3209,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} @@ -3058,6 +3278,7 @@ 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_GROUP_ADD_SHARED_VEHICLE :Tilføj delte køretøjer STR_GROUP_REMOVE_ALL_VEHICLES :Fjern alle køretøjer @@ -3238,7 +3459,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 @@ -3353,6 +3574,11 @@ STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Servicei STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Forøg serviceintervallet med 10. Ctrl+Klik forøger serviceintervallet med 5 STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Sænk serviceintervallet med 10. Ctrl+Klik nedsætter serviceintervallet med 5 +STR_SERVICE_INTERVAL_DROPDOWN_TOOLTIP :{BLACK}Ændre serviceintervallets type +STR_VEHICLE_DETAILS_DEFAULT :Standard +STR_VEHICLE_DETAILS_DAYS :Dage +STR_VEHICLE_DETAILS_PERCENT :Procent + STR_QUERY_RENAME_TRAIN_CAPTION :{WHITE}Giv toget et navn STR_QUERY_RENAME_ROAD_VEHICLE_CAPTION :{WHITE}Giv køretøjet et navn STR_QUERY_RENAME_SHIP_CAPTION :{WHITE}Giv skibet et navn @@ -3588,7 +3814,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 dato som startpunkt for denne tidsplan. +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 @@ -3610,7 +3836,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: @@ -3702,6 +3928,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 @@ -3724,6 +3952,10 @@ STR_INCOME_FLOAT_INCOME_SMALL :{TINY_FONT}{GRE STR_INCOME_FLOAT_INCOME :{GREEN}Indkomst: {CURRENCY_LONG} STR_FEEDER_TINY :{TINY_FONT}{YELLOW}Overført: {CURRENCY_LONG} STR_FEEDER :{YELLOW}Overført: {CURRENCY_LONG} +STR_FEEDER_INCOME_TINY :{TINY_FONT}{YELLOW}Overførsel: {CURRENCY_LONG}{WHITE} / {GREEN}Indtægt: {CURRENCY_LONG} +STR_FEEDER_INCOME :{YELLOW}Overførsel: {CURRENCY_LONG}{WHITE} / {GREEN}Indtægt: {CURRENCY_LONG} +STR_FEEDER_COST_TINY :{TINY_FONT}{YELLOW}Overførsel: {CURRENCY_LONG}{WHITE} / {RED}Omkostning: {CURRENCY_LONG} +STR_FEEDER_COST :{YELLOW}Overførsel: {CURRENCY_LONG}{WHITE} / {RED}Omkostning: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_COST :{WHITE}Anslået Pris: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Anslået Indkomst: {CURRENCY_LONG} @@ -3765,6 +3997,7 @@ STR_WARNING_FALLBACK_SOUNDSET :{WHITE}Kun nød # Screenshot related messages STR_WARNING_SCREENSHOT_SIZE_CAPTION :{WHITE}Kæmpe skærmbillede +STR_WARNING_SCREENSHOT_SIZE_MESSAGE :{YELLOW}Skærmbilledet vil få en opløsning på {COMMA} x {COMMA} pixels. Det kan tage et stykke tid at tage skærmbilledet, ønsker du at forstætte? STR_MESSAGE_SCREENSHOT_SUCCESSFULLY :{WHITE}Skærmbilledet blev gemt som '{STRING}' STR_ERROR_SCREENSHOT_FAILED :{WHITE}Fejl under tagning af skærmbillede! @@ -4074,6 +4307,11 @@ 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... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Kan ikke vende retningen af toget... @@ -4116,6 +4354,16 @@ STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}Kan ikke # Translatable comment for OpenTTD's desktop shortcut STR_DESKTOP_SHORTCUT_COMMENT :Et simulationsspil baseret på Transport Tycoon Deluxe +# Translatable descriptions in media/baseset/*.ob* files +STR_BASEGRAPHICS_DOS_DESCRIPTION :Originalgrafik fra Transport Tycoon Deluxe DOS-version. +STR_BASEGRAPHICS_DOS_DE_DESCRIPTION :Originalgrafik fra Transport Tycoon Deluxe DOS (Tysk) version. +STR_BASEGRAPHICS_WIN_DESCRIPTION :Originalgrafik fra Transport Tycoon Deluxe Windows-version. +STR_BASESOUNDS_DOS_DESCRIPTION :Originallyd fra Transport Tycoon Deluxe DOS-version. +STR_BASESOUNDS_WIN_DESCRIPTION :Originallyd fra Transport Tycoon Deluxe Windows-version. +STR_BASESOUNDS_NONE_DESCRIPTION :En lydpakke uden lyde. +STR_BASEMUSIC_WIN_DESCRIPTION :Originalmusik fra Transport Tycoon Deluxe Windows-version. +STR_BASEMUSIC_NONE_DESCRIPTION :En musikpakke uden musik. + ##id 0x2000 # Town building names STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1 :Høj kontorbygning @@ -4238,7 +4486,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) @@ -4447,7 +4695,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 @@ -4562,8 +4810,9 @@ 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_SPACE_STRING :{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} @@ -4587,9 +4836,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 1ad1acfa8..d63bd16a0 100644 --- a/src/lang/dutch.txt +++ b/src/lang/dutch.txt @@ -199,21 +199,28 @@ STR_UNITS_POWER_IMPERIAL :{COMMA} pk STR_UNITS_POWER_METRIC :{COMMA} pk 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 STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} ton 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{P "" s} 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} 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}Filter t STR_LIST_FILTER_OSKTITLE :{BLACK}Voer filtertekst in STR_LIST_FILTER_TOOLTIP :{BLACK}Geef een woord waarop gefilterd kan worden in de lijst +STR_TOOLTIP_GROUP_ORDER :{BLACK}Kies groepeervolgorde STR_TOOLTIP_SORT_ORDER :{BLACK}Selecteer sorteerrichting (aflopend/oplopend) STR_TOOLTIP_SORT_CRITERIA :{BLACK}Selecteer sorteercriteria STR_TOOLTIP_FILTER_CRITERIA :{BLACK}Kies filtercriteria @@ -232,7 +240,8 @@ STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Sluit ve STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Vensternaam - sleep om venster te verplaatsen STR_TOOLTIP_SHADE :{BLACK}Klap venster in - toon alleen de titelbalk STR_TOOLTIP_DEBUG :{BLACK}Toon NewGRF debug informatie -STR_TOOLTIP_STICKY :{BLACK}Markeer dit venster als niet-sluitbaar door de 'Sluit alle vensters'-knop +STR_TOOLTIP_DEFSIZE :{BLACK}wijzig venster naar standaardgrootte. Ctrl+Klik om de huidige grootte als standaard op te slaan +STR_TOOLTIP_STICKY :{BLACK}Markeer dit venster als niet-sluitbaar door de 'Sluit alle vensters'-knop. Ctrl+Klik om status als default op te slaan STR_TOOLTIP_RESIZE :{BLACK}Klik en sleep om de grootte van dit venster te veranderen STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Schakel tussen groot/klein venster STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Schuifbalk - scroll verticaal door de lijst @@ -256,7 +265,6 @@ STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}Gebied: # These are used in buttons -STR_SORT_BY_CAPTION_POPULATION :{BLACK}Inwoners STR_SORT_BY_CAPTION_NAME :{BLACK}Naam STR_SORT_BY_CAPTION_DATE :{BLACK}Datum # These are used in dropdowns @@ -277,7 +285,8 @@ STR_SORT_BY_LENGTH :Lengte STR_SORT_BY_LIFE_TIME :Resterende levensverwachting STR_SORT_BY_TIMETABLE_DELAY :Vertraging in dienstregeling STR_SORT_BY_FACILITY :Stationstype -STR_SORT_BY_WAITING :Waarde van wachtende vracht +STR_SORT_BY_WAITING_TOTAL :Totaal wachtende vracht +STR_SORT_BY_WAITING_AVAILABLE :Beschikbare wachtende lading STR_SORT_BY_RATING_MAX :Hoogste vrachtwaardering STR_SORT_BY_RATING_MIN :Laagste vrachtwaardering STR_SORT_BY_ENGINE_ID :Voertuig-ID (klassieke sortering) @@ -289,6 +298,8 @@ STR_SORT_BY_RUNNING_COST :Bedrijfskosten STR_SORT_BY_POWER_VS_RUNNING_COST :Vermogen/Bedrijfskosten STR_SORT_BY_CARGO_CAPACITY :Vrachtcapaciteit STR_SORT_BY_RANGE :Bereik +STR_SORT_BY_POPULATION :Inwoners +STR_SORT_BY_RATING :Waardering # Tooltips for the main toolbar STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Pauzeer spel @@ -301,6 +312,8 @@ STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Toon sub STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Toon lijst met stations van het bedrijf STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Toon financiële informatie over het bedrijf STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Toon algemene informatie over het bedrijf +STR_TOOLBAR_TOOLTIP_DISPLAY_STORY_BOOK :{BLACK}Toon verhaallijn +STR_TOOLBAR_TOOLTIP_DISPLAY_GOALS_LIST :{BLACK}Geven doellijst STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Toon grafieken STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Toon bedrijfscompetitietabel STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Betaal de bouw van nieuwe industrie of toon lijst van alle industrieën @@ -371,19 +384,19 @@ STR_FILE_MENU_SEPARATOR : STR_FILE_MENU_EXIT :Afsluiten ############ range ends here -############ range for map menu starts +# map menu STR_MAP_MENU_MAP_OF_WORLD :Kaart STR_MAP_MENU_EXTRA_VIEW_PORT :Extra kijkvenster +STR_MAP_MENU_LINGRAPH_LEGEND :Vracht Stroom Legenda STR_MAP_MENU_SIGN_LIST :Bordenlijst -############ range for town menu starts, yet the town directory is shown in the map menu in the scenario editor + +############ range for town menu starts STR_TOWN_MENU_TOWN_DIRECTORY :Stedenlijst -############ end of the 'Display map' dropdown STR_TOWN_MENU_FOUND_TOWN :Sticht een stad -############ end of the 'Town' dropdown +############ range ends here ############ range for subsidies menu starts STR_SUBSIDIES_MENU_SUBSIDIES :Subsidies -STR_SUBSIDIES_MENU_GOAL :Huidige doelen ############ range ends here ############ range for graph menu starts @@ -403,7 +416,7 @@ STR_GRAPH_MENU_HIGHSCORE :Score tabel ############ range for industry menu starts STR_INDUSTRY_MENU_INDUSTRY_DIRECTORY :Industrielijst -STR_INDUSTRY_MENU_INDUSTRY_CHAIN :Bedrijfsketting +STR_INDUSTRY_MENU_INDUSTRY_CHAIN :Bedrijfsketen STR_INDUSTRY_MENU_FUND_NEW_INDUSTRY :Betaal nieuwe industrie ############ range ends here @@ -457,7 +470,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 @@ -473,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 @@ -650,7 +681,7 @@ STR_HIGHSCORE_PERFORMANCE_TITLE_CAPITALIST :Kapitalist STR_HIGHSCORE_PERFORMANCE_TITLE_MAGNATE :Magnaat STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL :Mogul STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY :Tycoon van de Eeuw -STR_HIGHSCORE_NAME :{BIG_FONT}{PRESIDENT_NAME}, {COMPANY} +STR_HIGHSCORE_NAME :{PRESIDENT_NAME}, {COMPANY} STR_HIGHSCORE_STATS :{BIG_FONT}'{STRING}' ({COMMA}) STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{BLACK}{COMPANY} bereikt '{STRING}'-status! STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{WHITE}{PRESIDENT_NAME} van {COMPANY} bereikt '{STRING}'-status! @@ -661,17 +692,20 @@ STR_SMALLMAP_CAPTION :{WHITE}Kaart - STR_SMALLMAP_TYPE_CONTOURS :Contouren STR_SMALLMAP_TYPE_VEHICLES :Voertuigen STR_SMALLMAP_TYPE_INDUSTRIES :Industrieën +STR_SMALLMAP_TYPE_ROUTEMAP :Vrachtstroom STR_SMALLMAP_TYPE_ROUTES :Routes STR_SMALLMAP_TYPE_VEGETATION :Begroeiïng STR_SMALLMAP_TYPE_OWNERS :Eigenaren STR_SMALLMAP_TOOLTIP_SHOW_LAND_CONTOURS_ON_MAP :{BLACK}Toon landcontouren op de kaart STR_SMALLMAP_TOOLTIP_SHOW_VEHICLES_ON_MAP :{BLACK}Toon voertuigen op de kaart STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRIES_ON_MAP :{BLACK}Toon industrieën op de kaart +STR_SMALLMAP_TOOLTIP_SHOW_LINK_STATS_ON_MAP :{BLACK}Toon vrachtstroom op de kaart STR_SMALLMAP_TOOLTIP_SHOW_TRANSPORT_ROUTES_ON :{BLACK}Toon transportroutes op de kaart STR_SMALLMAP_TOOLTIP_SHOW_VEGETATION_ON_MAP :{BLACK}Toon begroeiïng op de kaart STR_SMALLMAP_TOOLTIP_SHOW_LAND_OWNERS_ON_MAP :{BLACK}Toon landeigenaren op de kaart STR_SMALLMAP_TOOLTIP_INDUSTRY_SELECTION :{BLACK}Klik op een industriesoort om deze weer te geven. Ctrl+klik verbergt alle andere industriesoorten behalve de geselecteerde. Nogmaals Ctrl+klik geeft opnieuw alle industriesoorten weer. STR_SMALLMAP_TOOLTIP_COMPANY_SELECTION :{BLACK}Klik op een bedrijf om de bedrijfseigendommen weer te geven. Ctrl+klik verbergt alle andere bedrijven behalve de geselecteerde. Nogmaals Ctrl+klik geeft opnieuw alle bedrijven weer. +STR_SMALLMAP_TOOLTIP_CARGO_SELECTION :{BLACK}Klik op een vrachtsoort om de eigenschappen weer te geven. Ctrl+Klik verbergt alle vrachtsoorten behalve de geselecteerde. Ctrl+Klik opnieuw om alle vrachttypes te activeren STR_SMALLMAP_LEGENDA_ROADS :{TINY_FONT}{BLACK}Wegen STR_SMALLMAP_LEGENDA_RAILROADS :{TINY_FONT}{BLACK}Spoorwegen @@ -705,6 +739,7 @@ STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLA STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Plaatsnamen op de kaart aan/uit STR_SMALLMAP_CENTER :{BLACK}Centreer de kaart op huidige positie 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 uitschakelen @@ -715,6 +750,8 @@ STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES :{BLACK}Toon all STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}Schakel tonen van hoogte aan/uit STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES :{BLACK}Verberg bedrijfseigendommen op de kaart STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}Toon alle bedrijfseigendommen op de kaart +STR_SMALLMAP_TOOLTIP_DISABLE_ALL_CARGOS :{BLACK}Toon geen vrachtsoorten op de kaart +STR_SMALLMAP_TOOLTIP_ENABLE_ALL_CARGOS :{BLACK}Toon alle vrachtsoorten op de kaart # Status bar messages STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Toon laatste (nieuws)bericht @@ -791,13 +828,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 @@ -876,15 +912,12 @@ STR_GAME_OPTIONS_CURRENCY_LTL :Litouwse Litas STR_GAME_OPTIONS_CURRENCY_KRW :Zuid-Koreaanse Won (KRW) STR_GAME_OPTIONS_CURRENCY_ZAR :Zuid-Afrikaanse Rand (ZAR) STR_GAME_OPTIONS_CURRENCY_CUSTOM :Aangepast... +STR_GAME_OPTIONS_CURRENCY_GEL :Georgische Lari (GEL) +STR_GAME_OPTIONS_CURRENCY_IRR :Iraanse Rial (IRR) ############ end of currency region -STR_GAME_OPTIONS_MEASURING_UNITS_FRAME :{BLACK}Meeteenheden -STR_GAME_OPTIONS_MEASURING_UNITS_DROPDOWN_TOOLTIP :{BLACK}Kies meeteenheden ############ start of measuring units region -STR_GAME_OPTIONS_MEASURING_UNITS_IMPERIAL :Imperiaal -STR_GAME_OPTIONS_MEASURING_UNITS_METRIC :Metrisch -STR_GAME_OPTIONS_MEASURING_UNITS_SI :SI ############ end of measuring units region STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Wegvoertuigen @@ -922,11 +955,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 @@ -938,9 +973,6 @@ 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_BASE_GRF :{BLACK}Basisset voor graphics STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Kies de te gebruiken basisset voor graphics STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} ontbrekend{P "" e}/corrupt{P "" e} bestand{P "" en} @@ -955,6 +987,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 @@ -1054,8 +1087,9 @@ 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}Filters de onstaande lijst op alleen gewijzigde 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 :Gewone instellingen STR_CONFIG_SETTING_RESTRICT_ADVANCED :Geavanceerde instellingen STR_CONFIG_SETTING_RESTRICT_ALL :Geavanceerde instellingen / Alle instellingen @@ -1064,11 +1098,15 @@ STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :Instellingen me 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_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 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 @@ -1094,24 +1132,22 @@ STR_CONFIG_SETTING_RUNNING_COSTS :Brandstofkosten STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT :Het niveau van onderhoud en bedrijfskosten van voertuigen en infrastuctuur STR_CONFIG_SETTING_CONSTRUCTION_SPEED :Bouwsnelheid: {STRING} STR_CONFIG_SETTING_CONSTRUCTION_SPEED_HELPTEXT :Beperk de hoeveelheid bouwactiviteiten voor computerspeler -STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS :voertuig storingen: {STRING} -STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS_HELPTEXT :Controle hoe vaak onvoldoende onderhouden voertuigen kaport kunnen gaan +STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS :Voertuig storingen: {STRING} +STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS_HELPTEXT :Controle hoe vaak onvoldoende onderhouden voertuigen kapot kunnen gaan STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER :Subsidie indicator: {STRING} STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT :Instellen hoeveel wordt betaald voor gesubsidieerde verbindingen 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 :Als ingeschakeld recessies kunnen optreden om de paar jaar. Tijdens een recessie alle productie is 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 treinen zullen 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 kunnen blokkeren of vernietigen of infrastructuur +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 beïnvloeden de stad waardering en hun acties in hun bouwgebied +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_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 @@ -1135,14 +1171,8 @@ 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_TUNNEL_LENGTH :Maximum tunnel lengte: {STRING} @@ -1162,7 +1192,7 @@ STR_CONFIG_SETTING_SIGNALSIDE_LEFT :Aan de linker k STR_CONFIG_SETTING_SIGNALSIDE_DRIVING_SIDE :Aan de rij zijde STR_CONFIG_SETTING_SIGNALSIDE_RIGHT :Aan de linker kant STR_CONFIG_SETTING_SHOWFINANCES :Financieel overzicht aan het einde van het jaar weergeven: {STRING} -STR_CONFIG_SETTING_SHOWFINANCES_HELPTEXT :Indien ingeschakeld, de financiën venster verschijnt aan het eind van elk jaar voor een gemakkelijke controle van de financiële status van het bedrijf +STR_CONFIG_SETTING_SHOWFINANCES_HELPTEXT :Indien ingeschakeld verschijnt het financiën venster aan het eind van elk jaar voor een gemakkelijke controle van de financiële status van het bedrijf STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :Nieuwe orders zijn standaard 'non-stop': {STRING} STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT_HELPTEXT :Normaal gesproken zal een voertuig stoppen op elk station dit wordt gepasseerd. Door het inschakelen van deze instelling, zal het rijden door alle station op weg naar de eindbestemming zonder te stoppen. Merk op dat deze instelling alleen een standaardwaarde voor nieuwe orders bepaalt. Individuele opdrachten kan expliciet worden ingesteld op het gedrag STR_CONFIG_SETTING_STOP_LOCATION :Nieuwe treinorders stoppen de trein standaard {STRING} van het perron @@ -1170,10 +1200,8 @@ 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, subvenster start met scrollen wanneer de muis vlak bij de rand van de window komt +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 STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT_FULLSCREEN :Hoofd kijkvenster, alleen volledigscherm STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT :Hoofd kijkvenster @@ -1202,10 +1230,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 @@ -1244,27 +1268,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 @@ -1285,7 +1323,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 @@ -1304,7 +1342,7 @@ STR_CONFIG_SETTING_OSK_ACTIVATION_HELPTEXT :Selecteer de me STR_CONFIG_SETTING_OSK_ACTIVATION_DISABLED :Uitgeschakeld STR_CONFIG_SETTING_OSK_ACTIVATION_DOUBLE_CLICK :Dubbel klik STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK_FOCUS :Enkel klik (met focus) -STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK :Enkel klik (immediately) +STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK :Enkel klik (onmiddelijk) STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU :Rechtsklikemulatie: {STRING} STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_HELPTEXT :Selecteer de methode die rechter muisknop klikken nabootst @@ -1315,17 +1353,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} @@ -1334,7 +1370,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 @@ -1363,25 +1399,25 @@ 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 likken op knoppen +STR_CONFIG_SETTING_SOUND_CLICK_HELPTEXT :Piep bij het klikken op knoppen STR_CONFIG_SETTING_SOUND_DISASTER :Rampen/ongelukken: {STRING} STR_CONFIG_SETTING_SOUND_DISASTER_HELPTEXT :Speel geluidseffecten van ongelukken en rampen STR_CONFIG_SETTING_SOUND_VEHICLE :Voertuigen: {STRING} STR_CONFIG_SETTING_SOUND_VEHICLE_HELPTEXT :Speel geluidseffecten van voertuigen -STR_CONFIG_SETTING_SOUND_AMBIENT :Ambient: {STRING} -STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :Speel ambient geluidseffecten van landschap, industrieën en steden +STR_CONFIG_SETTING_SOUND_AMBIENT :Omgeving: {STRING} +STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :Speel omgevingsgeluidseffecten van landschap, industrieën en steden 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} @@ -1394,7 +1430,7 @@ STR_CONFIG_SETTING_AI_BUILDS_SHIPS :Schepen voor de STR_CONFIG_SETTING_AI_BUILDS_SHIPS_HELPTEXT :Het inschakelen van deze instelling maakt het het bouwen van schepen onmogelijk voor een computer-speler STR_CONFIG_SETTING_AI_PROFILE :Standaard instellingenprofiel: {STRING} -STR_CONFIG_SETTING_AI_PROFILE_HELPTEXT :Kies welke instellingsprofiel moet worden gebruikt bij willekeurige AI's of als start waardes, wanneer een nieuwe AI of Game Script wordt toegevoegd +STR_CONFIG_SETTING_AI_PROFILE_HELPTEXT :Kies welk instellingsprofiel moet worden gebruikt bij willekeurige AI's of als startwaardes, wanneer een nieuwe AI of Game Script wordt toegevoegd STR_CONFIG_SETTING_AI_PROFILE_EASY :Makkelijk STR_CONFIG_SETTING_AI_PROFILE_MEDIUM :Gemiddeld STR_CONFIG_SETTING_AI_PROFILE_HARD :Moeilijk @@ -1427,7 +1463,7 @@ STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN :Eerste voertuig STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN_HELPTEXT :Toon een krant als het eerste voertuig arriveert op een station van de speler STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER :Eerste voertuig bij station van een concurrent: {STRING} STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER_HELPTEXT :Toon een krant als het eerste voertuig arriveert op een nieuw station van een concurrent -STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS :Ongelukken/rampen: {STRING} +STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS :Ongelukken / rampen: {STRING} STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS_HELPTEXT :Toon een krant bij ongevallen of rampen STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION :Bedrijfsinformatie: {STRING} STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION_HELPTEXT :Toon een krant als een nieuw bedrijf start, of wanneer een bedrijf het risico loopt om falliet te gaan @@ -1450,7 +1486,7 @@ STR_CONFIG_SETTING_NEWS_NEW_VEHICLES_HELPTEXT :Toon een krant STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE :Verandering van geaccepteerde vrachtsoorten: {STRING} STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE_HELPTEXT :Toon een bericht over gewijzigde acceptatie van goederen van stations STR_CONFIG_SETTING_NEWS_SUBSIDIES :Subsidies: {STRING} -STR_CONFIG_SETTING_NEWS_SUBSIDIES_HELPTEXT :Toon een krant over subsidie ​​gerelateerde gebeurtenissen +STR_CONFIG_SETTING_NEWS_SUBSIDIES_HELPTEXT :Toon een krant over subsidie gerelateerde gebeurtenissen STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION :Algemene informatie: {STRING} STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION_HELPTEXT :Weergave krant over algemene gebeurtenissen, zoals de aankoop van exclusieve rechten of financiering van weg-reconstructie @@ -1547,28 +1583,90 @@ 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_GUI :{ORANGE}Interface -STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}Constructie +STR_CONFIG_SETTING_LINKGRAPH_INTERVAL :Bijwerken distributie grafiek elke {STRING} 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_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 +STR_CONFIG_SETTING_DISTRIBUTION_SYMMETRIC :symmetrisch +STR_CONFIG_SETTING_DISTRIBUTION_PAX :Distributie-modus voor passagiers: {STRING} +STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :"symmetrisch" betekent dat ongeveer hetzelfde aantal passagiers gaan van een station A naar station B als een van B naar A. "asymmetrische" betekent dat willekeurig aantal passagiers kunnen gaan in beide richtingen. "handmatig" betekent dat er geen automatische distributie zal plaatsvinden voor passagiers. +STR_CONFIG_SETTING_DISTRIBUTION_MAIL :Distributie-modus voor post: {STRING} +STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :"symmetrisch" betekent dat ongeveer dezelfde hoeveelheid e-mail wordt verzonden van een station A naar station B als een van B naar A. "asymmetrische" dat willekeurige hoeveelheden post in beide richtingen worden verzonden. "handmatig" betekent dat er geen automatische distributie zal plaatsvinden voor post. +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 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} +STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT :Als je dit op een waarde hoger dan 0, de afstand tussen het station van herkomst A van enige vracht en een mogelijke bestemming B zal een effect hebben op de hoeveelheid lading verzonden van A naar B. Hoe verder weg B is van A des te minder lading wordt verzonden. Hoe hoger u deze instelt, zal het minder lading worden gezonden naar verder geleden stations en meer lading zal worden verzonden naar dichtbij gelegen stations. +STR_CONFIG_SETTING_DEMAND_SIZE :Hoeveelheid van de kerende vracht voor symmetrische modus: {STRING} +STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :Door dit op minder dan 100% te zetten lijkt de symmetrische verdeling meer op het asymmetrische verdeling. Minder vracht zal geforceerd worden teruggestuurd als er een bepaalde hoeveelheid wordt verzonden naar een station. Op 0% van de symmetrische verdeling gedraagt deze zicht als de asymmetrische verdeling. +STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Verzadiging van korte routes voor het gebruik van ruime routes: {STRING} +STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Vaak zijn er meerdere routes mogelijk tussen twee stations. Cargodist zal de kortste route eerst verzadigen, gebruik dan de tweede kortste route tot die verzadigd is en ga zo maar door. Verzadiging wordt bepaald door een schatting van de capaciteit en het geplande gebruik. Zodra alle routes verzadigd zijn, maar er is meer vraag, zal alle wegen overbelast worden, die met hoge capaciteit eerst. In veel gevallen zat het algoritme niet nauwkeurig de capaciteit inschatten, helaas. Met deze instelling kunt u aangeven tot welk percentage een korter pad moet worden verzadigd eer de eerst volgende langere route wordt gekozen. Zet deze op minder dan 100% om overvolle stations in geval van overschat capaciteit te voorkomen. + +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Snelheid eenheden: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_HELPTEXT :Wanneer een snelheid wordt weergegeven in de gebruikersinterface, laten dat in de geselecteerde eenheden zien +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_IMPERIAL :Imperial (mph) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_METRIC :Metrisch (km/h) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_SI :SI (m/s) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER :Voertuig kracht eenheden: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_HELPTEXT :Als het verbruik van een voertuig wordt weergegeven in de gebruikersinterface, laten dat in de geselecteerde eenheden zien +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_IMPERIAL :Imperial (hp) +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_IMPERIAL :Imperial (short t/ton) +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_METRIC :Metrisch (t/ton) +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_SI :SI (kg) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME :Volume eenheden: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_HELPTEXT :Wanneer volumes worden getoond in de gebruikersinterface, laten dat in de geselecteerde eenheden zien +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_IMPERIAL :Imperial (gal) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_METRIC :Metrisch (l) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_SI :SI (m³) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE :Trekkracht eenheden: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_HELPTEXT :Wanneer trekkracht, wordt weergegeven in de gebruikersinterface, laten dat in de geselecteerde eenheden zien +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_IMPERIAL :Imperial (lbf) +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_METRIC :Metrisch (kgf) +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_SI :SI (kN) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT :hoogte eenheden: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_HELPTEXT :Wanneer hoogtes worden weergegeven in de gebruikersinterface, laten dat in de geselecteerde eenheden zien +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_LOCALISATION :{ORANGE}Lokalisatie +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_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 @@ -1602,6 +1700,8 @@ STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_ALGORITHM :{WHITE}... save STR_CONFIG_ERROR_INVALID_BASE_GRAPHICS_NOT_FOUND :{WHITE}... negeert Basis Grafische set '{STRING}': niet gevonden STR_CONFIG_ERROR_INVALID_BASE_SOUNDS_NOT_FOUND :{WHITE}... negeert Basis Geluid set '{STRING}': niet gevonden STR_CONFIG_ERROR_INVALID_BASE_MUSIC_NOT_FOUND :{WHITE}... negeert Basis Muziek set '{STRING}': niet gevonden +STR_CONFIG_ERROR_OUT_OF_MEMORY :{WHITE}Geen geheugen meer +STR_CONFIG_ERROR_SPRITECACHE_TOO_BIG :{WHITE}Toewijzen van {BYTES} van spritecache mislukt. De spritecache werd teruggebracht tot {BYTES}. Dit zal de prestaties van OpenTTD verlagen. Om het geheugen te verminderen kunt u proberen om 32bpp graphics en / of zoom-in levels uit te schakelen # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} @@ -1723,6 +1823,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 @@ -1778,10 +1879,10 @@ STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}Verander # Network server list STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}Multiplayer -STR_NETWORK_SERVER_LIST_CONNECTION :{BLACK}Verbinding: -STR_NETWORK_SERVER_LIST_CONNECTION_TOOLTIP :{BLACK}Kies tussen een internetspel of een spel op het lokale netwerk (LAN) -STR_NETWORK_SERVER_LIST_LAN :Netwerk (LAN) -STR_NETWORK_SERVER_LIST_INTERNET :Internet +STR_NETWORK_SERVER_LIST_ADVERTISED :{BLACK}Openbaar +STR_NETWORK_SERVER_LIST_ADVERTISED_TOOLTIP :{BLACK}Kies tussen een openbaar (internet) en een niet openbaar (Local Area Network, LAN) spel +STR_NETWORK_SERVER_LIST_ADVERTISED_NO :Nee +STR_NETWORK_SERVER_LIST_ADVERTISED_YES :Ja STR_NETWORK_SERVER_LIST_PLAYER_NAME :{BLACK}Spelersnaam: STR_NETWORK_SERVER_LIST_ENTER_NAME_TOOLTIP :{BLACK}Dit is de naam waarmee andere spelers je herkennen @@ -1840,16 +1941,16 @@ STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP :{BLACK}De speln STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}Kies wachtwoord STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Bescherm je spel met een wachtwoord als je niet wilt dat deze algemeen toegankelijk is -STR_NETWORK_START_SERVER_LAN_INTERNET :LAN / Internet -STR_NETWORK_START_SERVER_INTERNET_ADVERTISE :Internet (adverteren) +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 @@ -1962,6 +2063,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 @@ -2080,6 +2182,10 @@ STR_CONTENT_SELECT_UPDATES_CAPTION :{BLACK}Selectee STR_CONTENT_SELECT_UPDATES_CAPTION_TOOLTIP :{BLACK}Markeer alle updates voor bestaande content om te downloaden STR_CONTENT_UNSELECT_ALL_CAPTION :{BLACK}Deselecteer alles STR_CONTENT_UNSELECT_ALL_CAPTION_TOOLTIP :{BLACK}Markeer alle content om niet te downloaden +STR_CONTENT_SEARCH_EXTERNAL :{BLACK}Zoek externe websites +STR_CONTENT_SEARCH_EXTERNAL_TOOLTIP :{BLACK}Zoek inhoud niet beschikbaar op de server van OpenTTD op websites die niet gekoppeld zijn aan OpenTTD +STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER_CAPTION :{WHITE}U verlaat OpenTTD! +STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER :{WHITE}De voorwaarden voor het downloaden van content van externe websites variëren.{}U moet naar de externe sites gaan voor instructies hoe de inhoud te installeren in OpenTTD.{}Wil je doorgaan? STR_CONTENT_FILTER_TITLE :{BLACK}Tag-/naamfilter: STR_CONTENT_OPEN_URL :{BLACK}Bezoek website STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}Bezoek de website voor deze inhoud @@ -2149,6 +2255,17 @@ STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}Schakel STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Schakel transparantie voor laadindicatoren aan/uit. Ctrl+klik om vast te zetten STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}Maak objecten onzichtbaar in plaats van transparant +# Linkgraph legend window +STR_LINKGRAPH_LEGEND_CAPTION :{BLACK}Vracht Stroom Legenda +STR_LINKGRAPH_LEGEND_ALL :{BLACK}Alle +STR_LINKGRAPH_LEGEND_NONE :{BLACK}Geen +STR_LINKGRAPH_LEGEND_SELECT_COMPANIES :{BLACK}Selecteer weer te geven bedrijven + +# Linkgraph legend window and linkgraph legend in smallmap +STR_LINKGRAPH_LEGEND_UNUSED :{TINY_FONT}{BLACK}ongebruikt +STR_LINKGRAPH_LEGEND_SATURATED :{TINY_FONT}{BLACK}verzadigd +STR_LINKGRAPH_LEGEND_OVERLOADED :{TINY_FONT}{BLACK}overbelast + # Base for station construction window(s) STR_STATION_BUILD_COVERAGE_AREA_TITLE :{BLACK}Dekkingsgebied markeren STR_STATION_BUILD_COVERAGE_OFF :{BLACK}Uit @@ -2221,9 +2338,9 @@ STR_BUILD_SIGNAL_SEMAPHORE_COMBO_TOOLTIP :{BLACK}Combinat STR_BUILD_SIGNAL_SEMAPHORE_PBS_TOOLTIP :{BLACK}Routesein (armsein){}Een routesein laat meer dan één trein tegelijk in een seinblok toe, als de trein een route kan reserveren naar een veilige stopplaats. Routeseinen kunnen van achteren worden gepasseerd STR_BUILD_SIGNAL_SEMAPHORE_PBS_OWAY_TOOLTIP :{BLACK}Eenrichtingsrouteseinen (armsein){}Een routesein laat meer dan één trein tegelijk in een seinblok toe, als de trein een route kan reserveren naar een veilige stopplaats. Eenrichtingsrouteseinen kunnen niet van achteren worden gepasseerd STR_BUILD_SIGNAL_ELECTRIC_NORM_TOOLTIP :{BLACK}Standaard sein (elektrisch){}Seinen zijn nodig om te voorkomen dat treinen botsen bij netwerken met meer dan één trein -STR_BUILD_SIGNAL_ELECTRIC_ENTRY_TOOLTIP :{BLACK}Ingangssein (electrisch){}Groen als er meer dan één groen uitgangssein is in het volgende traject. Anders is deze rood +STR_BUILD_SIGNAL_ELECTRIC_ENTRY_TOOLTIP :{BLACK}Ingangssein (electrisch){}Groen als er meer dan één groen uitgangssein is in de volgende sectie. Anders is deze rood STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}Uitgangssein (elektrisch){}Gedraagt zich hetzelfde als een standaard sein, maar is nodig om ingangs- & combinatie-seinen aan te sturen -STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}Combinatiesein (electric){}Het combinatiesein gedraagt zicht als zowel ingangs- als uitgangs-sein. Zo kun je grote netwerken van beginseinen maken +STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}Combinatiesein (electric){}Het combinatiesein gedraagt zich als zowel ingangs- als uitgangs-sein. Zo kun je grote netwerken van beginseinen maken STR_BUILD_SIGNAL_ELECTRIC_PBS_TOOLTIP :{BLACK}Routeseinen (elektrisch){}Een routesein laat meer dan één trein tegelijk op een seinblok toe, als de trein een route kan reserveren naar een veilige stopplaats. Routeseinen kunnen van achteren worden gepasseerd STR_BUILD_SIGNAL_ELECTRIC_PBS_OWAY_TOOLTIP :{BLACK}Eenrichtingsrouteseinen (elektrisch){}Een routesein laat meer dan één trein tegelijk op een seinblok toe, als de trein een route kan reserveren naar een veilige stopplaats. Eenrichtingsrouteseinen kunnen niet van achteren worden gepasseerd STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}Sein ombouwen{}Indien geselecteerd, zal door te klikken op een bestaand sein deze worden omgebouwd naar het geselecteerde seintype en variant, Ctrl+klik verandert de bestaande variant (armsein/elektrisch). Shift+klik toont de geschatte ombouwkosten @@ -2353,7 +2470,7 @@ STR_PLANT_TREE_TOOLTIP :{BLACK}Kies een STR_TREES_RANDOM_TYPE :{BLACK}Willekeurige soorten bomen STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}Plant bomen van willekeurige soort. Shift+klik wisselt tussen bouwen/toont verwachte kosten STR_TREES_RANDOM_TREES_BUTTON :{BLACK}Willekeurige bomen -STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Verspreid bomen willekeurig over de kaart +STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Plant bomen willekeurig over de kaart # Land generation window (SE) STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}Landontwikkeling @@ -2451,6 +2568,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 @@ -2547,7 +2665,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-2012 Het OpenTTD team +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2014 Het OpenTTD team # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Spel Opslaan @@ -2566,6 +2684,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} @@ -2576,6 +2695,7 @@ STR_SAVELOAD_OSKTITLE :{BLACK}Voer een # World generation STR_MAPGEN_WORLD_GENERATION_CAPTION :{WHITE}Wereldontwikkeling STR_MAPGEN_MAPSIZE :{BLACK}Kaartgrootte: +STR_MAPGEN_MAPSIZE_TOOLTIP :{BLACK}Selecteer het formaat van de kaart in tegels. Het aantal beschikbare tegels zal iets kleiner zijn STR_MAPGEN_BY :{BLACK}* STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Aantal steden: STR_MAPGEN_DATE :{BLACK}Datum: @@ -2583,10 +2703,6 @@ STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Aantal i 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: @@ -2613,7 +2729,6 @@ 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_SNOW_LINE_QUERY_CAPT :{WHITE}Verander hoogte van sneeuwgrens STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Verander beginjaar @@ -2668,6 +2783,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 @@ -2692,6 +2809,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 @@ -2762,6 +2889,7 @@ STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}Je staa STR_NEWGRF_DUPLICATE_GRFID :{WHITE}Kan bestand niet toevoegen: identieke GRF-ID STR_NEWGRF_COMPATIBLE_LOADED :{ORANGE}Bijbehorend bestand niet gevonden (compatibele GRF geladen) +STR_NEWGRF_TOO_MANY_NEWGRFS :{WHITE}Kan bestand niet toevoegen: NewGRF bestandslimiet bereikt STR_NEWGRF_COMPATIBLE_LOAD_WARNING :{WHITE}Compatibele GRF(s) geladen voor ontbrekende bestanden STR_NEWGRF_DISABLED_WARNING :{WHITE}Missend(e) GRF-bestand(en) zijn uitgeschakeld @@ -2778,6 +2906,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 @@ -2792,6 +2921,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... @@ -2873,10 +3005,14 @@ STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT :{YELLOW}Koop 1 STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}Koop het plaatselijk gezag om om je reputatie te verhogen, met het gevaar van een strenge sanctie wanneer je gepakt wordt.{}Kosten: {CURRENCY_LONG} # Goal window -STR_GOALS_CAPTION :{WHITE}Doelen +STR_GOALS_CAPTION :{WHITE}{COMPANY} Doelen +STR_GOALS_SPECTATOR_CAPTION :{WHITE}Algemene doelen STR_GOALS_GLOBAL_TITLE :{BLACK}Algemene doelen: STR_GOALS_TEXT :{ORANGE}{STRING} STR_GOALS_NONE :{ORANGE}- Geen - +STR_GOALS_SPECTATOR_NONE :{ORANGE}- Niet van toepassing - +STR_GOALS_PROGRESS :{ORANGE}{STRING} +STR_GOALS_PROGRESS_COMPLETE :{GREEN}{STRING} STR_GOALS_COMPANY_TITLE :{BLACK}Bedrijfsdoelen: STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Klik op doel om venster te centreren op industrie/stad/tegel. Ctrl+Klik opent een nieuw venster op industrie/stad/tegel locatie @@ -2915,6 +3051,18 @@ STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}Bestaand STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING} van {STRING} naar {STRING}{YELLOW} ({COMPANY}{YELLOW}, tot {DATE_SHORT}) STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Klik op de dienst om het dorp/industrie te centreren. Ctrl+klik opent een nieuw venster op de locatie van het dorp/industrie +# Story book window +STR_STORY_BOOK_CAPTION :{WHITE}{COMPANY} Verhaallijn +STR_STORY_BOOK_SPECTATOR_CAPTION :{WHITE}Algemene verhaallijn +STR_STORY_BOOK_TITLE :{YELLOW}{STRING} +STR_STORY_BOOK_GENERIC_PAGE_ITEM :Pagina {NUM} +STR_STORY_BOOK_SEL_PAGE_TOOLTIP :{BLACK}Spring naar een bepaalde pagina door deze te selecteren in deze keuzelijst. +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 STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}Houd Ctrl ingedrukt om meer items te kiezen @@ -2928,9 +3076,9 @@ 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} op weg van {STATION}) +STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} van {STATION}) +STR_STATION_VIEW_RESERVED :{YELLOW}({CARGO_SHORT} gereserveerd voor laden) STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Accepteert STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Laat lijst van gevraagde goederen zien @@ -2941,8 +3089,31 @@ STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPAN STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Rangen STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Bekijk stationsreputaties -STR_STATION_VIEW_CARGO_RATINGS_TITLE :{BLACK}Lokale rang van de vervoerdienst: -STR_STATION_VIEW_CARGO_RATING :{WHITE}{STRING}: {YELLOW}{STRING} ({COMMA}%) +STR_STATION_VIEW_SUPPLY_RATINGS_TITLE :{BLACK}Maandelijkse levering en lokale waardering: +STR_STATION_VIEW_CARGO_SUPPLY_RATING :{WHITE}{STRING}: {YELLOW}{COMMA} / {STRING} ({COMMA}%) + +STR_STATION_VIEW_GROUP :{BLACK}Groeperen op +STR_STATION_VIEW_WAITING_STATION :Station: Wachtend +STR_STATION_VIEW_WAITING_AMOUNT :Hoeveelheid: Wachtend +STR_STATION_VIEW_PLANNED_STATION :Station: Gepland +STR_STATION_VIEW_PLANNED_AMOUNT :Hoeveelheid: Gepland +STR_STATION_VIEW_FROM :{YELLOW}{CARGO_SHORT} van {STATION} +STR_STATION_VIEW_VIA :{YELLOW}{CARGO_SHORT} via {STATION} +STR_STATION_VIEW_TO :{YELLOW}{CARGO_SHORT} naar {STATION} +STR_STATION_VIEW_FROM_ANY :{RED}{CARGO_SHORT} van onbekend station +STR_STATION_VIEW_TO_ANY :{RED}{CARGO_SHORT} naar willekeurig station +STR_STATION_VIEW_VIA_ANY :{RED}{CARGO_SHORT} via willekeurig station +STR_STATION_VIEW_FROM_HERE :{GREEN}{CARGO_SHORT} van dit station +STR_STATION_VIEW_VIA_HERE :{GREEN}{CARGO_SHORT} stopt op dit station +STR_STATION_VIEW_TO_HERE :{GREEN}{CARGO_SHORT} naar dit station +STR_STATION_VIEW_NONSTOP :{YELLOW}{CARGO_SHORT} non-stop + +STR_STATION_VIEW_GROUP_S_V_D :Bron-Via-Bestemming +STR_STATION_VIEW_GROUP_S_D_V :Bron-Bestemming-Via +STR_STATION_VIEW_GROUP_V_S_D :Via-Bron-Bestemming +STR_STATION_VIEW_GROUP_V_D_S :Via-Bestemming-Bron +STR_STATION_VIEW_GROUP_D_S_V :Bestemming-Bron-Via +STR_STATION_VIEW_GROUP_D_V_S :Bestemming-Via-Bron ############ range for rating starts STR_CARGO_RATING_APPALLING :Teleurstellend @@ -2999,7 +3170,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 @@ -3069,7 +3240,6 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS :{WHITE}Kanalen STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}Stations: STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}Station tegels STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}Vliegvelden -STR_COMPANY_INFRASTRUCTURE_VIEW_COST :{WHITE}{1:CURRENCY_LONG}/jr ({0:COMMA}) STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL :{WHITE}{CURRENCY_LONG}/jr # Industry directory @@ -3086,6 +3256,7 @@ STR_INDUSTRY_VIEW_PRODUCTION_LAST_MONTH_TITLE :{BLACK}Producti STR_INDUSTRY_VIEW_TRANSPORTED :{YELLOW}{CARGO_LONG}{STRING}{BLACK} ({COMMA}% getransporteerd) STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Centreer het scherm op de locatie van de industrie. Ctrl+klik opent een nieuws venster op de locatie van de industrie STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Productieniveau: {YELLOW}{COMMA}% +STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}De industrie heeft een dreigende sluiting aangekondigd! ############ range for requires starts STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Vereist: {YELLOW}{STRING}{STRING} @@ -3148,12 +3319,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 @@ -3449,6 +3623,11 @@ STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Onderhou 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 +STR_SERVICE_INTERVAL_DROPDOWN_TOOLTIP :{BLACK}Wijzig onderhoudsinterval type +STR_VEHICLE_DETAILS_DEFAULT :Standaard +STR_VEHICLE_DETAILS_DAYS :Dagen +STR_VEHICLE_DETAILS_PERCENT :Percentage + STR_QUERY_RENAME_TRAIN_CAPTION :{WHITE}Hernoem trein STR_QUERY_RENAME_ROAD_VEHICLE_CAPTION :{WHITE}Hernoem wegvoertuig STR_QUERY_RENAME_SHIP_CAPTION :{WHITE}Hernoem schip @@ -3537,8 +3716,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 @@ -3629,18 +3808,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 @@ -3669,6 +3848,10 @@ 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} @@ -3684,7 +3867,7 @@ STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}Deze die STR_TIMETABLE_STATUS_START_AT :{BLACK}Deze dienstregeling begint bij {STRING} STR_TIMETABLE_STARTING_DATE :{BLACK}Begindatum -STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Kies een datum als beginpunt voor deze dienstregeling +STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Selecteer een datum als uitgangspunt van dit tijdschema. Ctrl + klik geeft het startpunt van dit tijdschema en distribueert alle voertuigen die deze orders delen gelijkmatig op basis van hun relatieve volgorde, indien de order volledig is ingeroosterd STR_TIMETABLE_CHANGE_TIME :{BLACK}Verander de tijd STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Verander de tijdsduur die de geselecteerde order mag duren @@ -3798,6 +3981,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 @@ -3820,6 +4005,10 @@ STR_INCOME_FLOAT_INCOME_SMALL :{TINY_FONT}{GRE STR_INCOME_FLOAT_INCOME :{GREEN}Inkomsten: {CURRENCY_LONG} STR_FEEDER_TINY :{TINY_FONT}{YELLOW}Overladen: {CURRENCY_LONG} STR_FEEDER :{YELLOW}Overladen: {CURRENCY_LONG} +STR_FEEDER_INCOME_TINY :{TINY_FONT}{YELLOW}Overdragen: {CURRENCY_LONG}{WHITE} / {GREEN}Inkomsten: {CURRENCY_LONG} +STR_FEEDER_INCOME :{YELLOW}Overdragen: {CURRENCY_LONG}{WHITE} / {GREEN}Inkomsten: {CURRENCY_LONG} +STR_FEEDER_COST_TINY :{TINY_FONT}{YELLOW}Overdragen: {CURRENCY_LONG}{WHITE} / {RED}Kosten: {CURRENCY_LONG} +STR_FEEDER_COST :{YELLOW}Overdragen: {CURRENCY_LONG}{WHITE} / {RED}Kosten: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_COST :{WHITE}Verwachte kosten: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Verwachte inkomsten: {CURRENCY_LONG} @@ -3860,7 +4049,7 @@ STR_WARNING_HEIGHTMAP_SCALE_MESSAGE :{YELLOW}Het aan STR_WARNING_FALLBACK_SOUNDSET :{WHITE}Alleen backup geluid is gevonden. Als je geluid wilt, installeer dan een geluiddsset via het downloadsysteem # Screenshot related messages -STR_WARNING_SCREENSHOT_SIZE_CAPTION :{WHITE}Groot schermafdruk +STR_WARNING_SCREENSHOT_SIZE_CAPTION :{WHITE}Grote schermafdruk STR_WARNING_SCREENSHOT_SIZE_MESSAGE :{YELLOW}De schermafdruk heeft een resolutie van {COMMA} x {COMMA} pixels. De schermafdruk maken kan even duren. Verder gaan? STR_MESSAGE_SCREENSHOT_SUCCESSFULLY :{WHITE}Schermprint succesvol opgeslagen als '{STRING}' @@ -4116,6 +4305,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... @@ -4171,6 +4361,11 @@ STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}Kan onde STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... voertuig is vernietigd +STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL :{WHITE}Geen enkel voertuig zal beschikbaar zijn +STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Pas je NewGRF configuratie aan +STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}Nog geen voertuigen beschikbaar +STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE} Start een nieuw spel na {DATE_SHORT} of gebruik een NewGRF dat in vroege voertuigen voorziet + # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Kan trein niet het signaal laten passeren bij gevaar... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Kan de richting van de trein niet omdraaien... @@ -4213,6 +4408,16 @@ STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}Kan bord # Translatable comment for OpenTTD's desktop shortcut STR_DESKTOP_SHORTCUT_COMMENT :Een simulatiespel gebaseerd op Transport Tycoon Deluxe +# Translatable descriptions in media/baseset/*.ob* files +STR_BASEGRAPHICS_DOS_DESCRIPTION :Originele graphics van de Transport Tycoon Deluxe DOS-versie. +STR_BASEGRAPHICS_DOS_DE_DESCRIPTION :Originele graphics van de Duitse Transport Tycoon Deluxe DOS-versie. +STR_BASEGRAPHICS_WIN_DESCRIPTION :Originele graphics van de Transport Tycoon Deluxe Windows-versie. +STR_BASESOUNDS_DOS_DESCRIPTION :Originele geluiden van de Transport Tycoon Deluxe DOS-versie. +STR_BASESOUNDS_WIN_DESCRIPTION :Originele geluiden van de Transport Tycoon Deluxe Windows-versie. +STR_BASESOUNDS_NONE_DESCRIPTION :Een geluidset zonder geluid. +STR_BASEMUSIC_WIN_DESCRIPTION :Originele muziek van de Transport Tycoon Deluxe Windows-versie. +STR_BASEMUSIC_NONE_DESCRIPTION :Een muziekset zonder muziek. + ##id 0x2000 # Town building names STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1 :Hoog kantoorgebouw @@ -4335,7 +4540,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) @@ -4544,7 +4749,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 @@ -4659,8 +4864,9 @@ 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_SPACE_STRING :{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} @@ -4684,9 +4890,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 469167b54..eedc75098 100644 --- a/src/lang/english.txt +++ b/src/lang/english.txt @@ -199,21 +199,28 @@ STR_UNITS_POWER_IMPERIAL :{COMMA}hp STR_UNITS_POWER_METRIC :{COMMA}hp 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} tonne{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{P "" s} STR_UNITS_VOLUME_LONG_METRIC :{COMMA} litre{P "" s} 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}Filter s 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}Select grouping order 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 @@ -232,7 +240,8 @@ STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Close wi STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Window title - drag this to move window STR_TOOLTIP_SHADE :{BLACK}Shade window - only show the title bar 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_DEFSIZE :{BLACK}Resize window to default size. Ctrl+Click to store current size 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 @@ -256,7 +265,6 @@ STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}Area: {N # These are used in buttons -STR_SORT_BY_CAPTION_POPULATION :{BLACK}Population STR_SORT_BY_CAPTION_NAME :{BLACK}Name STR_SORT_BY_CAPTION_DATE :{BLACK}Date # These are used in dropdowns @@ -277,18 +285,21 @@ STR_SORT_BY_LENGTH :Length STR_SORT_BY_LIFE_TIME :Remaining lifetime STR_SORT_BY_TIMETABLE_DELAY :Timetable delay STR_SORT_BY_FACILITY :Station type -STR_SORT_BY_WAITING :Waiting cargo value +STR_SORT_BY_WAITING_TOTAL :Total waiting cargo +STR_SORT_BY_WAITING_AVAILABLE :Available waiting cargo STR_SORT_BY_RATING_MAX :Highest cargo rating STR_SORT_BY_RATING_MIN :Lowest cargo rating STR_SORT_BY_ENGINE_ID :EngineID (classic sort) 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 # Tooltips for the main toolbar STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Pause game @@ -301,6 +312,8 @@ STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Display STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Display list of company's stations STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Display company finances information STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Display general company information +STR_TOOLBAR_TOOLTIP_DISPLAY_STORY_BOOK :{BLACK}Display story book +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 or list all industries @@ -371,19 +384,19 @@ STR_FILE_MENU_SEPARATOR : STR_FILE_MENU_EXIT :Exit ############ range ends here -############ range for map menu starts +# map menu STR_MAP_MENU_MAP_OF_WORLD :Map of world STR_MAP_MENU_EXTRA_VIEW_PORT :Extra viewport +STR_MAP_MENU_LINGRAPH_LEGEND :Cargo Flow Legend STR_MAP_MENU_SIGN_LIST :Sign list -############ range for town menu starts, yet the town directory is shown in the map menu in the scenario editor + +############ range for town menu starts STR_TOWN_MENU_TOWN_DIRECTORY :Town directory -############ end of the 'Display map' dropdown STR_TOWN_MENU_FOUND_TOWN :Found town -############ end of the 'Town' dropdown +############ range ends here ############ range for subsidies menu starts STR_SUBSIDIES_MENU_SUBSIDIES :Subsidies -STR_SUBSIDIES_MENU_GOAL :Current goals ############ range ends here ############ range for graph menu starts @@ -457,7 +470,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 @@ -473,22 +486,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 @@ -650,7 +681,7 @@ STR_HIGHSCORE_PERFORMANCE_TITLE_CAPITALIST :Capitalist STR_HIGHSCORE_PERFORMANCE_TITLE_MAGNATE :Magnate STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL :Mogul STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY :Tycoon of the Century -STR_HIGHSCORE_NAME :{BIG_FONT}{PRESIDENT_NAME}, {COMPANY} +STR_HIGHSCORE_NAME :{PRESIDENT_NAME}, {COMPANY} STR_HIGHSCORE_STATS :{BIG_FONT}'{STRING}' ({COMMA}) STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{BLACK}{COMPANY} achieves '{STRING}' status! STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{WHITE}{PRESIDENT_NAME} of {COMPANY} achieves '{STRING}' status! @@ -661,17 +692,20 @@ STR_SMALLMAP_CAPTION :{WHITE}Map - {S STR_SMALLMAP_TYPE_CONTOURS :Contours STR_SMALLMAP_TYPE_VEHICLES :Vehicles STR_SMALLMAP_TYPE_INDUSTRIES :Industries +STR_SMALLMAP_TYPE_ROUTEMAP :Cargo Flow STR_SMALLMAP_TYPE_ROUTES :Routes STR_SMALLMAP_TYPE_VEGETATION :Vegetation STR_SMALLMAP_TYPE_OWNERS :Owners STR_SMALLMAP_TOOLTIP_SHOW_LAND_CONTOURS_ON_MAP :{BLACK}Show land contours on map STR_SMALLMAP_TOOLTIP_SHOW_VEHICLES_ON_MAP :{BLACK}Show vehicles on map STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRIES_ON_MAP :{BLACK}Show industries on map +STR_SMALLMAP_TOOLTIP_SHOW_LINK_STATS_ON_MAP :{BLACK}Show cargo flow on map STR_SMALLMAP_TOOLTIP_SHOW_TRANSPORT_ROUTES_ON :{BLACK}Show transport routes on map STR_SMALLMAP_TOOLTIP_SHOW_VEGETATION_ON_MAP :{BLACK}Show vegetation on map STR_SMALLMAP_TOOLTIP_SHOW_LAND_OWNERS_ON_MAP :{BLACK}Show land owners on map STR_SMALLMAP_TOOLTIP_INDUSTRY_SELECTION :{BLACK}Click on an industry type to toggle displaying it. Ctrl+Click disables all types except the selected one. Ctrl+Click on it again to enable all industry types STR_SMALLMAP_TOOLTIP_COMPANY_SELECTION :{BLACK}Click on a company to toggle displaying its property. Ctrl+Click disables all companies except the selected one. Ctrl+Click on it again to enable all companies +STR_SMALLMAP_TOOLTIP_CARGO_SELECTION :{BLACK}Click on a cargo to toggle displaying its property. Ctrl+Click disables all cargoes except the selected one. Ctrl+Click on it again to enable all cargoes STR_SMALLMAP_LEGENDA_ROADS :{TINY_FONT}{BLACK}Roads STR_SMALLMAP_LEGENDA_RAILROADS :{TINY_FONT}{BLACK}Railways @@ -705,6 +739,7 @@ STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLA STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Toggle town names on/off on map STR_SMALLMAP_CENTER :{BLACK}Centre the smallmap on the current 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}Disable all @@ -715,6 +750,8 @@ STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES :{BLACK}Display STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}Toggle display of heightmap STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES :{BLACK}Display no company property on the map STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}Display all company property on the map +STR_SMALLMAP_TOOLTIP_DISABLE_ALL_CARGOS :{BLACK}Display no cargoes on the map +STR_SMALLMAP_TOOLTIP_ENABLE_ALL_CARGOS :{BLACK}Display all cargoes on the map # Status bar messages STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Show last message or news report @@ -791,13 +828,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 @@ -876,15 +912,12 @@ STR_GAME_OPTIONS_CURRENCY_LTL :Lithuanian Lita STR_GAME_OPTIONS_CURRENCY_KRW :South Korean Won (KRW) STR_GAME_OPTIONS_CURRENCY_ZAR :South African Rand (ZAR) STR_GAME_OPTIONS_CURRENCY_CUSTOM :Custom... +STR_GAME_OPTIONS_CURRENCY_GEL :Georgian Lari (GEL) +STR_GAME_OPTIONS_CURRENCY_IRR :Iranian Rial (IRR) ############ end of currency region -STR_GAME_OPTIONS_MEASURING_UNITS_FRAME :{BLACK}Measuring units -STR_GAME_OPTIONS_MEASURING_UNITS_DROPDOWN_TOOLTIP :{BLACK}Measuring units selection ############ start of measuring units region -STR_GAME_OPTIONS_MEASURING_UNITS_IMPERIAL :Imperial -STR_GAME_OPTIONS_MEASURING_UNITS_METRIC :Metric -STR_GAME_OPTIONS_MEASURING_UNITS_SI :SI ############ end of measuring units region STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Road vehicles @@ -922,11 +955,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 @@ -938,9 +973,6 @@ 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 STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} missing/corrupted file{P "" s} @@ -955,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 @@ -1054,8 +1087,9 @@ 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_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 @@ -1063,12 +1097,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; 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_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 @@ -1089,7 +1127,7 @@ STR_CONFIG_SETTING_HORIZONTAL_POS_RIGHT :Right STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN :Maximum initial loan: {STRING2} STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Maximum amount a company can loan (without taking inflation into account) STR_CONFIG_SETTING_INTEREST_RATE :Interest rate: {STRING2} -STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Loan interest rate; also controls inflation if enabled +STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Loan interest rate; also controls inflation, if enabled STR_CONFIG_SETTING_RUNNING_COSTS :Running costs: {STRING2} STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT :Set level of maintainance and running costs of vehicles and infrastructure STR_CONFIG_SETTING_CONSTRUCTION_SPEED :Construction speed: {STRING2} @@ -1101,17 +1139,15 @@ STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT :Set how much is STR_CONFIG_SETTING_CONSTRUCTION_COSTS :Construction costs: {STRING2} STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :Set level of construction and purchase costs STR_CONFIG_SETTING_RECESSIONS :Recessions: {STRING2} -STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :If enabled recessions may occur every few years. During a recession all production is significantly lower (it returns to previous level when the recession is over) +STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :If enabled, recessions may occur every few years. During a recession all production is significantly lower (it returns to previous level when the recession is over) STR_CONFIG_SETTING_TRAIN_REVERSING :Disallow train reversing in stations: {STRING2} -STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :If enabled trains will not reverse in non-terminus stations, if there is a shorter path to their next destination when reversing +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_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 @@ -1135,14 +1171,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: {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_TUNNEL_LENGTH :Maximum tunnel length: {STRING2} @@ -1170,8 +1200,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 @@ -1198,14 +1226,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 @@ -1226,7 +1250,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 @@ -1244,31 +1268,45 @@ STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :Display the pop 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 @@ -1285,7 +1323,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 @@ -1315,17 +1353,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} @@ -1334,8 +1370,9 @@ 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_TIMETABLE_ENABLE_SEPARATION :Enable automatic timetable separation: {STRING2} 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 STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :Show timetable in ticks rather than days: {STRING2} @@ -1349,7 +1386,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 @@ -1361,9 +1398,9 @@ STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :Play sound for STR_CONFIG_SETTING_SOUND_NEWS :Newspaper: {STRING2} STR_CONFIG_SETTING_SOUND_NEWS_HELPTEXT :Play sound upon display of newspapers STR_CONFIG_SETTING_SOUND_NEW_YEAR :End of year: {STRING2} -STR_CONFIG_SETTING_SOUND_NEW_YEAR_HELPTEXT :Play sound effect 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 summarising the company's performance during the year compared to the previous year STR_CONFIG_SETTING_SOUND_CONFIRM :Construction: {STRING2} -STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT :Play sound effect on successful constructions or other actions +STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT :Play sound on successful constructions or other actions STR_CONFIG_SETTING_SOUND_CLICK :Button clicks: {STRING2} STR_CONFIG_SETTING_SOUND_CLICK_HELPTEXT :Beep when clicking buttons STR_CONFIG_SETTING_SOUND_DISASTER :Disasters/accidents: {STRING2} @@ -1371,17 +1408,17 @@ STR_CONFIG_SETTING_SOUND_DISASTER_HELPTEXT :Play sound effe STR_CONFIG_SETTING_SOUND_VEHICLE :Vehicles: {STRING2} STR_CONFIG_SETTING_SOUND_VEHICLE_HELPTEXT :Play sound effects of vehicles STR_CONFIG_SETTING_SOUND_AMBIENT :Ambient: {STRING2} -STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :Play ambient sound effects of landscape, industries and towns +STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :Play ambient sounds of landscape, industries and towns 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} @@ -1428,7 +1465,7 @@ STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN_HELPTEXT :Display a newsp STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER :Arrival of first vehicle at competitor's station: {STRING2} STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER_HELPTEXT :Display a newspaper when the first vehicle arrives at a new competitor's station STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS :Accidents / disasters: {STRING2} -STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS_HELPTEXT :Display a newspaper when accidents or disasters occurs +STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS_HELPTEXT :Display a newspaper when accidents or disasters occur STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION :Company information: {STRING2} 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_INDUSTRY_OPEN :Opening of industries: {STRING2} @@ -1448,7 +1485,7 @@ STR_CONFIG_SETTING_NEWS_ADVICE_HELPTEXT :Display message STR_CONFIG_SETTING_NEWS_NEW_VEHICLES :New vehicles: {STRING2} STR_CONFIG_SETTING_NEWS_NEW_VEHICLES_HELPTEXT :Display a newspaper when a new vehicle type becomes available STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE :Changes to cargo acceptance: {STRING2} -STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE_HELPTEXT :Display messages about stations changing acceptance of some cargos +STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE_HELPTEXT :Display messages about stations changing acceptance of some cargoes STR_CONFIG_SETTING_NEWS_SUBSIDIES :Subsidies: {STRING2} STR_CONFIG_SETTING_NEWS_SUBSIDIES_HELPTEXT :Display a newspaper about subsidy related events STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION :General information: {STRING2} @@ -1471,7 +1508,7 @@ STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY :When dragging, STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_HELPTEXT :Set the distance at which signals will be built on a track up to the next obstacle (signal, junction), if signals are dragged STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_VALUE :{COMMA} tile{P 0 "" s} STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE :When dragging, keep fixed distance between signals: {STRING2} -STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :Select the behaviour of signal placement when Ctrl+dragging signals. If disabled, signals are placed around tunnels or bridges to avoid long stretches without signals. If enabled, signals are placed every N tiles, making alignment of signals at parallel tracks easier +STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :Select the behaviour of signal placement when Ctrl+dragging signals. If disabled, signals are placed around tunnels or bridges to avoid long stretches without signals. If enabled, signals are placed every n tiles, making alignment of signals at parallel tracks easier 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} @@ -1499,7 +1536,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 @@ -1547,28 +1584,90 @@ 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_GUI :{ORANGE}Interface -STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}Construction +STR_CONFIG_SETTING_LINKGRAPH_INTERVAL :Update distribution graph every {STRING2} 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_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 +STR_CONFIG_SETTING_DISTRIBUTION_SYMMETRIC :symmetric +STR_CONFIG_SETTING_DISTRIBUTION_PAX :Distribution mode for passengers: {STRING2} +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 :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_DEFAULT :Distribution mode for other cargo classes: {STRING2} +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 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} +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_HELPTEXT :Whenever a speed is shown in the user interface, show it in the selected units +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 :Vehicle power units: {STRING2} +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_HELPTEXT :Whenever a vehicle's power is shown in the user interface, show it in the selected units +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 :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_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_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_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_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}Localisation +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_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 @@ -1602,6 +1701,8 @@ STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_ALGORITHM :{WHITE}... save STR_CONFIG_ERROR_INVALID_BASE_GRAPHICS_NOT_FOUND :{WHITE}... ignoring Base Graphics set '{RAW_STRING}': not found STR_CONFIG_ERROR_INVALID_BASE_SOUNDS_NOT_FOUND :{WHITE}... ignoring Base Sounds set '{RAW_STRING}': not found STR_CONFIG_ERROR_INVALID_BASE_MUSIC_NOT_FOUND :{WHITE}... ignoring Base Music set '{RAW_STRING}': not found +STR_CONFIG_ERROR_OUT_OF_MEMORY :{WHITE}Out of memory +STR_CONFIG_ERROR_SPRITECACHE_TOO_BIG :{WHITE}Allocating {BYTES} of spritecache failed. The spritecache was reduced to {BYTES}. This will reduce the performance of OpenTTD. To reduce memory requirements you can try to disable 32bpp graphics and/or zoom-in levels # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} @@ -1723,6 +1824,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 @@ -1778,10 +1880,10 @@ STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}Change t # Network server list STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}Multiplayer -STR_NETWORK_SERVER_LIST_CONNECTION :{BLACK}Connection: -STR_NETWORK_SERVER_LIST_CONNECTION_TOOLTIP :{BLACK}Choose between an internet game or a Local Area Network (LAN) game -STR_NETWORK_SERVER_LIST_LAN :LAN -STR_NETWORK_SERVER_LIST_INTERNET :Internet +STR_NETWORK_SERVER_LIST_ADVERTISED :{BLACK}Advertised +STR_NETWORK_SERVER_LIST_ADVERTISED_TOOLTIP :{BLACK}Choose between an advertised (internet) and a not advertised (Local Area Network, LAN) game +STR_NETWORK_SERVER_LIST_ADVERTISED_NO :No +STR_NETWORK_SERVER_LIST_ADVERTISED_YES :Yes STR_NETWORK_SERVER_LIST_PLAYER_NAME :{BLACK}Player name: STR_NETWORK_SERVER_LIST_ENTER_NAME_TOOLTIP :{BLACK}This is the name other players will identify you by @@ -1840,16 +1942,16 @@ STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP :{BLACK}The game 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 it to be publicly accessible -STR_NETWORK_START_SERVER_LAN_INTERNET :LAN / Internet -STR_NETWORK_START_SERVER_INTERNET_ADVERTISE :Internet (advertise) +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 @@ -1962,6 +2064,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 @@ -2080,6 +2183,10 @@ STR_CONTENT_SELECT_UPDATES_CAPTION :{BLACK}Select u STR_CONTENT_SELECT_UPDATES_CAPTION_TOOLTIP :{BLACK}Mark all content that is an upgrade for existing content to be downloaded STR_CONTENT_UNSELECT_ALL_CAPTION :{BLACK}Unselect all STR_CONTENT_UNSELECT_ALL_CAPTION_TOOLTIP :{BLACK}Mark all content to be not downloaded +STR_CONTENT_SEARCH_EXTERNAL :{BLACK}Search external websites +STR_CONTENT_SEARCH_EXTERNAL_TOOLTIP :{BLACK}Search content not available on OpenTTD's content service on websites not associated to OpenTTD +STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER_CAPTION :{WHITE}You are leaving OpenTTD! +STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER :{WHITE}The terms and conditions for downloading content from external websites vary.{}You will have to refer to the external sites for instructions how to install the content into OpenTTD.{}Do you want to continue? STR_CONTENT_FILTER_TITLE :{BLACK}Tag/name filter: STR_CONTENT_OPEN_URL :{BLACK}Visit website STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}Visit the website for this content @@ -2149,6 +2256,17 @@ STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}Toggle t STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Toggle transparency for loading indicators. Ctrl+Click to lock STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}Set objects invisible instead of transparent +# Linkgraph legend window +STR_LINKGRAPH_LEGEND_CAPTION :{BLACK}Cargo Flow Legend +STR_LINKGRAPH_LEGEND_ALL :{BLACK}All +STR_LINKGRAPH_LEGEND_NONE :{BLACK}None +STR_LINKGRAPH_LEGEND_SELECT_COMPANIES :{BLACK}Select companies to be displayed + +# Linkgraph legend window and linkgraph legend in smallmap +STR_LINKGRAPH_LEGEND_UNUSED :{TINY_FONT}{BLACK}unused +STR_LINKGRAPH_LEGEND_SATURATED :{TINY_FONT}{BLACK}saturated +STR_LINKGRAPH_LEGEND_OVERLOADED :{TINY_FONT}{BLACK}overloaded + # Base for station construction window(s) STR_STATION_BUILD_COVERAGE_AREA_TITLE :{BLACK}Coverage area highlight STR_STATION_BUILD_COVERAGE_OFF :{BLACK}Off @@ -2215,18 +2333,18 @@ STR_STATION_CLASS_WAYP :Waypoints # Signal window STR_BUILD_SIGNAL_CAPTION :{WHITE}Signal Selection STR_BUILD_SIGNAL_SEMAPHORE_NORM_TOOLTIP :{BLACK}Block Signal (semaphore){}This is the most basic type of signal, allowing only one train to be in the same block at the same time -STR_BUILD_SIGNAL_SEMAPHORE_ENTRY_TOOLTIP :{BLACK}Entry-Signal (semaphore){}Green as long as there is one or more green exit-signal from the following section of track. Otherwise it shows red -STR_BUILD_SIGNAL_SEMAPHORE_EXIT_TOOLTIP :{BLACK}Exit-Signal (semaphore){}Behaves in the same way as a block signal but is necessary to trigger the correct colour on entry & combo pre-signals -STR_BUILD_SIGNAL_SEMAPHORE_COMBO_TOOLTIP :{BLACK}Combo-Signal (semaphore){}The combo signal simply acts as both an entry and exit signal. This allows you to build large "trees" of pre-signals +STR_BUILD_SIGNAL_SEMAPHORE_ENTRY_TOOLTIP :{BLACK}Entry Signal (semaphore){}Green as long as there is one or more green exit-signal from the following section of track. Otherwise it shows red +STR_BUILD_SIGNAL_SEMAPHORE_EXIT_TOOLTIP :{BLACK}Exit Signal (semaphore){}Behaves in the same way as a block signal but is necessary to trigger the correct colour on entry & combo pre-signals +STR_BUILD_SIGNAL_SEMAPHORE_COMBO_TOOLTIP :{BLACK}Combo Signal (semaphore){}The combo signal simply acts as both an entry and exit signal. This allows you to build large "trees" of pre-signals STR_BUILD_SIGNAL_SEMAPHORE_PBS_TOOLTIP :{BLACK}Path Signal (semaphore){}A path signal allows more than one train to enter a signal block at the same time, if the train can reserve a path to a safe stopping point. Standard path signals can be passed from the back side STR_BUILD_SIGNAL_SEMAPHORE_PBS_OWAY_TOOLTIP :{BLACK}One-way Path Signal (semaphore){}A path signal allows more than one train to enter a signal block at the same time, if the train can reserve a path to a safe stopping point. One-way path signals can't be passed from the back side STR_BUILD_SIGNAL_ELECTRIC_NORM_TOOLTIP :{BLACK}Block Signal (electric){}This is the most basic type of signal, allowing only one train to be in the same block at the same time -STR_BUILD_SIGNAL_ELECTRIC_ENTRY_TOOLTIP :{BLACK}Entry-Signal (electric){}Green as long as there is one or more green exit-signal from the following section of track. Otherwise it shows red -STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}Exit-Signal (electric){}Behaves in the same way as a block signal but is necessary to trigger the correct colour on entry & combo pre-signals -STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}Combo-Signal (electric){}The combo signal simply acts as both an entry and exit signal. This allows you to build large "trees" of pre-signals +STR_BUILD_SIGNAL_ELECTRIC_ENTRY_TOOLTIP :{BLACK}Entry Signal (electric){}Green as long as there is one or more green exit-signal from the following section of track. Otherwise it shows red +STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}Exit Signal (electric){}Behaves in the same way as a block signal but is necessary to trigger the correct colour on entry & combo pre-signals +STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}Combo Signal (electric){}The combo signal simply acts as both an entry and exit signal. This allows you to build large "trees" of pre-signals STR_BUILD_SIGNAL_ELECTRIC_PBS_TOOLTIP :{BLACK}Path Signal (electric){}A path signal allows more than one train to enter a signal block at the same time, if the train can reserve a path to a safe stopping point. Standard path signals can be passed from the back side STR_BUILD_SIGNAL_ELECTRIC_PBS_OWAY_TOOLTIP :{BLACK}One-way Path Signal (electric){}A path signal allows more than one train to enter a signal block at the same time, if the train can reserve a path to a safe stopping point. One-way path signals can't be passed from the back side -STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}Signal Convert{}When selected, clicking an existing signal will convert it to the selected signal type and variant, Ctrl+Click will toggle the existing variant. Shift+Click shows estimated conversion cost +STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}Signal Convert{}When selected, clicking an existing signal will convert it to the selected signal type and variant. Ctrl+Click will toggle the existing variant. Shift+Click shows estimated conversion cost STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_TOOLTIP :{BLACK}Dragging signal density STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_DECREASE_TOOLTIP :{BLACK}Decrease dragging signal density STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_INCREASE_TOOLTIP :{BLACK}Increase dragging signal density @@ -2353,7 +2471,7 @@ STR_PLANT_TREE_TOOLTIP :{BLACK}Select t STR_TREES_RANDOM_TYPE :{BLACK}Trees of random type STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}Place trees of random type. Shift toggles building/showing cost estimate STR_TREES_RANDOM_TREES_BUTTON :{BLACK}Random Trees -STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Plant trees randomly over landscape +STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Plant trees randomly throughout the landscape # Land generation window (SE) STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}Land Generation @@ -2451,6 +2569,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 @@ -2547,7 +2666,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-2012 The OpenTTD team +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2014 The OpenTTD team # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Save Game @@ -2566,6 +2685,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} @@ -2576,6 +2696,7 @@ STR_SAVELOAD_OSKTITLE :{BLACK}Enter a # 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: @@ -2583,10 +2704,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: @@ -2613,7 +2730,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 @@ -2668,7 +2784,9 @@ 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_FILE_TOOLTIP :{BLACK}A list of the NewGRF files that are installed. +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 STR_NEWGRF_SETTINGS_SHOW_PARAMETERS :{BLACK}Show parameters @@ -2692,6 +2810,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 @@ -2762,6 +2890,7 @@ STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}You are STR_NEWGRF_DUPLICATE_GRFID :{WHITE}Can't add file: duplicate GRF ID STR_NEWGRF_COMPATIBLE_LOADED :{ORANGE}Matching file not found (compatible GRF loaded) +STR_NEWGRF_TOO_MANY_NEWGRFS :{WHITE}Can't add file: NewGRF file limit reached STR_NEWGRF_COMPATIBLE_LOAD_WARNING :{WHITE}Compatible GRF(s) loaded for missing files STR_NEWGRF_DISABLED_WARNING :{WHITE}Missing GRF file(s) have been disabled @@ -2778,6 +2907,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 @@ -2792,6 +2922,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... @@ -2873,10 +3006,14 @@ STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT :{YELLOW}Buy 1 y STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}Bribe the local authority to increase your rating, at the risk of a severe penalty if caught.{}Cost: {CURRENCY_LONG} # Goal window -STR_GOALS_CAPTION :{WHITE}Goals +STR_GOALS_CAPTION :{WHITE}{COMPANY} Goals +STR_GOALS_SPECTATOR_CAPTION :{WHITE}Global Goals STR_GOALS_GLOBAL_TITLE :{BLACK}Global goals: STR_GOALS_TEXT :{ORANGE}{RAW_STRING} STR_GOALS_NONE :{ORANGE}- None - +STR_GOALS_SPECTATOR_NONE :{ORANGE}- Not applicable - +STR_GOALS_PROGRESS :{ORANGE}{RAW_STRING} +STR_GOALS_PROGRESS_COMPLETE :{GREEN}{RAW_STRING} STR_GOALS_COMPANY_TITLE :{BLACK}Company goals: STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Click on goal to centre main view on industry/town/tile. Ctrl+Click opens a new viewport on industry/town/tile location @@ -2915,6 +3052,18 @@ STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}Services STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING} from {STRING2} to {STRING2}{YELLOW} ({COMPANY}{YELLOW}, until {DATE_SHORT}) STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Click on service to centre main view on industry/town. Ctrl+Click opens a new viewport on industry/town location +# Story book window +STR_STORY_BOOK_CAPTION :{WHITE}{COMPANY} Story Book +STR_STORY_BOOK_SPECTATOR_CAPTION :{WHITE}Global Story Book +STR_STORY_BOOK_TITLE :{YELLOW}{RAW_STRING} +STR_STORY_BOOK_GENERIC_PAGE_ITEM :Page {NUM} +STR_STORY_BOOK_SEL_PAGE_TOOLTIP :{BLACK}Jump to a specific page by selecting it in this drop down list. +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 STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}Hold Ctrl to select more than one item @@ -2928,9 +3077,9 @@ 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} en-route from {STATION}) +STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} from {STATION}) +STR_STATION_VIEW_RESERVED :{YELLOW}({CARGO_SHORT} reserved for loading) STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Accepts STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Show list of accepted cargo @@ -2941,8 +3090,31 @@ STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPAN STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Ratings STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Show station ratings -STR_STATION_VIEW_CARGO_RATINGS_TITLE :{BLACK}Local rating of transport service: -STR_STATION_VIEW_CARGO_RATING :{WHITE}{STRING}: {YELLOW}{STRING} ({COMMA}%) +STR_STATION_VIEW_SUPPLY_RATINGS_TITLE :{BLACK}Monthly supply and local rating: +STR_STATION_VIEW_CARGO_SUPPLY_RATING :{WHITE}{STRING}: {YELLOW}{COMMA} / {STRING} ({COMMA}%) + +STR_STATION_VIEW_GROUP :{BLACK}Group by +STR_STATION_VIEW_WAITING_STATION :Station: Waiting +STR_STATION_VIEW_WAITING_AMOUNT :Amount: Waiting +STR_STATION_VIEW_PLANNED_STATION :Station: Planned +STR_STATION_VIEW_PLANNED_AMOUNT :Amount: Planned +STR_STATION_VIEW_FROM :{YELLOW}{CARGO_SHORT} from {STATION} +STR_STATION_VIEW_VIA :{YELLOW}{CARGO_SHORT} via {STATION} +STR_STATION_VIEW_TO :{YELLOW}{CARGO_SHORT} to {STATION} +STR_STATION_VIEW_FROM_ANY :{RED}{CARGO_SHORT} from unknown station +STR_STATION_VIEW_TO_ANY :{RED}{CARGO_SHORT} to any station +STR_STATION_VIEW_VIA_ANY :{RED}{CARGO_SHORT} via any station +STR_STATION_VIEW_FROM_HERE :{GREEN}{CARGO_SHORT} from this station +STR_STATION_VIEW_VIA_HERE :{GREEN}{CARGO_SHORT} stopping at this station +STR_STATION_VIEW_TO_HERE :{GREEN}{CARGO_SHORT} to this station +STR_STATION_VIEW_NONSTOP :{YELLOW}{CARGO_SHORT} non-stop + +STR_STATION_VIEW_GROUP_S_V_D :Source-Via-Destination +STR_STATION_VIEW_GROUP_S_D_V :Source-Destination-Via +STR_STATION_VIEW_GROUP_V_S_D :Via-Source-Destination +STR_STATION_VIEW_GROUP_V_D_S :Via-Destination-Source +STR_STATION_VIEW_GROUP_D_S_V :Destination-Source-Via +STR_STATION_VIEW_GROUP_D_V_S :Destination-Via-Source ############ range for rating starts STR_CARGO_RATING_APPALLING :Appalling @@ -2999,7 +3171,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 @@ -3069,7 +3241,6 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS :{WHITE}Canals STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}Stations: STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}Station tiles STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}Airports -STR_COMPANY_INFRASTRUCTURE_VIEW_COST :{WHITE}{1:CURRENCY_LONG}/yr ({0:COMMA}) STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL :{WHITE}{CURRENCY_LONG}/yr # Industry directory @@ -3086,6 +3257,7 @@ STR_INDUSTRY_VIEW_PRODUCTION_LAST_MONTH_TITLE :{BLACK}Producti STR_INDUSTRY_VIEW_TRANSPORTED :{YELLOW}{CARGO_LONG}{RAW_STRING}{BLACK} ({COMMA}% transported) STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Centre the main view on industry location. Ctrl+Click opens a new viewport on industry location STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Production level: {YELLOW}{COMMA}% +STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}The industry has announced imminent closure! ############ range for requires starts STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Requires: {YELLOW}{STRING}{RAW_STRING} @@ -3148,12 +3320,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 @@ -3449,6 +3624,11 @@ STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Servicin 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 +STR_SERVICE_INTERVAL_DROPDOWN_TOOLTIP :{BLACK}Change servicing interval type +STR_VEHICLE_DETAILS_DEFAULT :Default +STR_VEHICLE_DETAILS_DAYS :Days +STR_VEHICLE_DETAILS_PERCENT :Percentage + STR_QUERY_RENAME_TRAIN_CAPTION :{WHITE}Name train STR_QUERY_RENAME_ROAD_VEHICLE_CAPTION :{WHITE}Name road vehicle STR_QUERY_RENAME_SHIP_CAPTION :{WHITE}Name ship @@ -3537,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 @@ -3609,7 +3789,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) @@ -3629,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 @@ -3666,9 +3846,13 @@ 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} @@ -3684,7 +3868,7 @@ STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}This tim STR_TIMETABLE_STATUS_START_AT :{BLACK}This timetable will start at {STRING1} STR_TIMETABLE_STARTING_DATE :{BLACK}Start date -STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Select a date as starting point of this timetable +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 STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Change the amount of time that the highlighted order should take @@ -3706,7 +3890,7 @@ STR_TIMETABLE_AUTOFILL_TOOLTIP :{BLACK}Fill the STR_TIMETABLE_EXPECTED :{BLACK}Expected STR_TIMETABLE_SCHEDULED :{BLACK}Scheduled -STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Switch between expected and schedule +STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Switch between expected and scheduled STR_TIMETABLE_ARRIVAL_ABBREVIATION :A: STR_TIMETABLE_DEPARTURE_ABBREVIATION :D: @@ -3798,6 +3982,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 @@ -3820,16 +4006,41 @@ STR_INCOME_FLOAT_INCOME_SMALL :{TINY_FONT}{GRE STR_INCOME_FLOAT_INCOME :{GREEN}Income: {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}Income: {CURRENCY_LONG} +STR_FEEDER_INCOME :{YELLOW}Transfer: {CURRENCY_LONG}{WHITE} / {GREEN}Income: {CURRENCY_LONG} +STR_FEEDER_COST_TINY :{TINY_FONT}{YELLOW}Transfer: {CURRENCY_LONG}{WHITE} / {RED}Cost: {CURRENCY_LONG} +STR_FEEDER_COST :{YELLOW}Transfer: {CURRENCY_LONG}{WHITE} / {RED}Cost: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_COST :{WHITE}Estimated Cost: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Estimated Income: {CURRENCY_LONG} +# Timetable separation UI strings +STR_TTSEPARATION_AUTO :Auto +STR_TTSEPARATION_MAN_NUM :Manual Number +STR_TTSEPARATION_MAN_TIME :Manual Time +STR_TTSEPARATION_BUFFERED_AUTO :Buffered Auto +STR_TTSEPARATION_OFF :Off +STR_TTSEPARATION_APPLY :{BLACK}Apply +STR_TTSEPARATION_RESET :{BLACK}Reset +STR_TTSEPARATION_MODE_DESC :{BLACK}Separation mode +STR_TTSEPARATION_SETTINGS_DESC :{BLACK}Separation settings +STR_TTSEPARATION_SET_XX :{BLACK}Set {STRING} +STR_TTSEPARATION_SET_NUM :number +STR_TTSEPARATION_SET_TIME :time +STR_TTSEPARATION_STATUS_DESC :{BLACK}Status:{}{STRING} +STR_TTSEPARATION_STATUS_INIT :{RED}Initializing +STR_TTSEPARATION_STATUS_RUNNING :{GREEN}Running +STR_TTSEPARATION_STATUS_OFF :{BLACK}Off +STR_TTSEPARATION_REQ_TIME_DESC_TICKS :{NUM} ticks between +STR_TTSEPARATION_REQ_TIME_DESC_DAYS :{NUM} days between +STR_TTSEPARATION_REQ_NUM_DESC :{NUM} vehicles + # Saveload messages 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 @@ -4116,6 +4327,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... @@ -4171,6 +4383,11 @@ STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}Can't ch STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... vehicle is destroyed +STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL :{WHITE}No vehicles will be available at all +STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Change your NewGRF configuration +STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}No vehicles are available yet +STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Start a new game after {DATE_SHORT} or use a NewGRF that provides early vehicles + # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Can't make train pass signal at danger... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Can't reverse direction of train... @@ -4213,6 +4430,16 @@ STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}Can't de # Translatable comment for OpenTTD's desktop shortcut STR_DESKTOP_SHORTCUT_COMMENT :A simulation game based on Transport Tycoon Deluxe +# Translatable descriptions in media/baseset/*.ob* files +STR_BASEGRAPHICS_DOS_DESCRIPTION :Original Transport Tycoon Deluxe DOS edition graphics. +STR_BASEGRAPHICS_DOS_DE_DESCRIPTION :Original Transport Tycoon Deluxe DOS (German) edition graphics. +STR_BASEGRAPHICS_WIN_DESCRIPTION :Original Transport Tycoon Deluxe Windows edition graphics. +STR_BASESOUNDS_DOS_DESCRIPTION :Original Transport Tycoon Deluxe DOS edition sounds. +STR_BASESOUNDS_WIN_DESCRIPTION :Original Transport Tycoon Deluxe Windows edition sounds. +STR_BASESOUNDS_NONE_DESCRIPTION :A sound pack without any sounds. +STR_BASEMUSIC_WIN_DESCRIPTION :Original Transport Tycoon Deluxe Windows edition music. +STR_BASEMUSIC_NONE_DESCRIPTION :A music pack without actual music. + ##id 0x2000 # Town building names STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1 :Tall office block @@ -4335,7 +4562,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) @@ -4542,10 +4769,10 @@ STR_VEHICLE_NAME_SHIP_FFP_PASSENGER_FERRY :FFP Passenger F STR_VEHICLE_NAME_SHIP_BAKEWELL_300_HOVERCRAFT :Bakewell 300 Hovercraft STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :Chugger-Chug Passenger Ferry 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_POWERNAUT_CARGO_SHIP :Powernaut Cargo ship +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_POWERNAUT_CARGO_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 @@ -4659,8 +4886,9 @@ 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_SPACE_STRING :{STRING} {STRING} +STR_JUST_STRING_STRING :{STRING}{STRING} STR_JUST_RAW_STRING :{RAW_STRING} +STR_JUST_BIG_RAW_STRING :{BIG_FONT}{RAW_STRING} # Slightly 'raw' stringcodes with colour or size STR_BLACK_COMMA :{BLACK}{COMMA} @@ -4684,9 +4912,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 2b1c9b2b5..5aa187f88 100644 --- a/src/lang/english_AU.txt +++ b/src/lang/english_AU.txt @@ -199,21 +199,28 @@ STR_UNITS_POWER_IMPERIAL :{COMMA}hp STR_UNITS_POWER_METRIC :{COMMA}hp 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} tonne{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{P "" s} STR_UNITS_VOLUME_LONG_METRIC :{COMMA} litre{P "" s} 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}Filter s 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}Select grouping order 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 @@ -232,7 +240,8 @@ STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Close wi STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Window title - drag this to move window STR_TOOLTIP_SHADE :{BLACK}Shade window - only show the title bar 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_DEFSIZE :{BLACK}Resize window to default size. Ctrl+Click to store current size 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 @@ -256,7 +265,6 @@ STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}Area: {N # These are used in buttons -STR_SORT_BY_CAPTION_POPULATION :{BLACK}Population STR_SORT_BY_CAPTION_NAME :{BLACK}Name STR_SORT_BY_CAPTION_DATE :{BLACK}Date # These are used in dropdowns @@ -277,18 +285,21 @@ STR_SORT_BY_LENGTH :Length STR_SORT_BY_LIFE_TIME :Remaining lifetime STR_SORT_BY_TIMETABLE_DELAY :Timetable delay STR_SORT_BY_FACILITY :Station type -STR_SORT_BY_WAITING :Waiting cargo value +STR_SORT_BY_WAITING_TOTAL :Total waiting cargo +STR_SORT_BY_WAITING_AVAILABLE :Available waiting cargo STR_SORT_BY_RATING_MAX :Highest cargo rating STR_SORT_BY_RATING_MIN :Lowest cargo rating STR_SORT_BY_ENGINE_ID :EngineID (classic sort) 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 # Tooltips for the main toolbar STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Pause game @@ -301,6 +312,8 @@ STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Display STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Display list of company's stations STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Display company finances information STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Display general company information +STR_TOOLBAR_TOOLTIP_DISPLAY_STORY_BOOK :{BLACK}Display story book +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 or list all industries @@ -371,19 +384,19 @@ STR_FILE_MENU_SEPARATOR : STR_FILE_MENU_EXIT :Exit ############ range ends here -############ range for map menu starts +# map menu STR_MAP_MENU_MAP_OF_WORLD :Map of world STR_MAP_MENU_EXTRA_VIEW_PORT :Extra viewport +STR_MAP_MENU_LINGRAPH_LEGEND :Cargo Flow Legend STR_MAP_MENU_SIGN_LIST :Sign list -############ range for town menu starts, yet the town directory is shown in the map menu in the scenario editor + +############ range for town menu starts STR_TOWN_MENU_TOWN_DIRECTORY :Town directory -############ end of the 'Display map' dropdown STR_TOWN_MENU_FOUND_TOWN :Found town -############ end of the 'Town' dropdown +############ range ends here ############ range for subsidies menu starts STR_SUBSIDIES_MENU_SUBSIDIES :Subsidies -STR_SUBSIDIES_MENU_GOAL :Current goals ############ range ends here ############ range for graph menu starts @@ -457,7 +470,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 @@ -473,22 +486,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 @@ -650,7 +681,7 @@ STR_HIGHSCORE_PERFORMANCE_TITLE_CAPITALIST :Capitalist STR_HIGHSCORE_PERFORMANCE_TITLE_MAGNATE :Magnate STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL :Mogul STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY :Tycoon of the Century -STR_HIGHSCORE_NAME :{BIG_FONT}{PRESIDENT_NAME}, {COMPANY} +STR_HIGHSCORE_NAME :{PRESIDENT_NAME}, {COMPANY} STR_HIGHSCORE_STATS :{BIG_FONT}'{STRING}' ({COMMA}) STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{BLACK}{COMPANY} achieves '{STRING}' status! STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{WHITE}{PRESIDENT_NAME} of {COMPANY} achieves '{STRING}' status! @@ -661,17 +692,20 @@ STR_SMALLMAP_CAPTION :{WHITE}Map - {S STR_SMALLMAP_TYPE_CONTOURS :Contours STR_SMALLMAP_TYPE_VEHICLES :Vehicles STR_SMALLMAP_TYPE_INDUSTRIES :Industries +STR_SMALLMAP_TYPE_ROUTEMAP :Cargo Flow STR_SMALLMAP_TYPE_ROUTES :Routes STR_SMALLMAP_TYPE_VEGETATION :Vegetation STR_SMALLMAP_TYPE_OWNERS :Owners STR_SMALLMAP_TOOLTIP_SHOW_LAND_CONTOURS_ON_MAP :{BLACK}Show land contours on map STR_SMALLMAP_TOOLTIP_SHOW_VEHICLES_ON_MAP :{BLACK}Show vehicles on map STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRIES_ON_MAP :{BLACK}Show industries on map +STR_SMALLMAP_TOOLTIP_SHOW_LINK_STATS_ON_MAP :{BLACK}Show cargo flow on map STR_SMALLMAP_TOOLTIP_SHOW_TRANSPORT_ROUTES_ON :{BLACK}Show transport routes on map STR_SMALLMAP_TOOLTIP_SHOW_VEGETATION_ON_MAP :{BLACK}Show vegetation on map STR_SMALLMAP_TOOLTIP_SHOW_LAND_OWNERS_ON_MAP :{BLACK}Show land owners on map STR_SMALLMAP_TOOLTIP_INDUSTRY_SELECTION :{BLACK}Click on an industry type to toggle displaying it. Ctrl+Click disables all types except the selected one. Ctrl+Click on it again to enable all industry types STR_SMALLMAP_TOOLTIP_COMPANY_SELECTION :{BLACK}Click on a company to toggle displaying its property. Ctrl+Click disables all companies except the selected one. Ctrl+Click on it again to enable all companies +STR_SMALLMAP_TOOLTIP_CARGO_SELECTION :{BLACK}Click on a cargo to toggle displaying its property. Ctrl+Click disables all cargoes except the selected one. Ctrl+Click on it again to enable all cargoes STR_SMALLMAP_LEGENDA_ROADS :{TINY_FONT}{BLACK}Roads STR_SMALLMAP_LEGENDA_RAILROADS :{TINY_FONT}{BLACK}Railways @@ -705,6 +739,7 @@ STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLA STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Toggle town names on/off on map STR_SMALLMAP_CENTER :{BLACK}Centre the small map on the current 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}Disable all @@ -715,6 +750,8 @@ STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES :{BLACK}Display STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}Toggle display of heightmap STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES :{BLACK}Display no company property on the map STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}Display all company property on the map +STR_SMALLMAP_TOOLTIP_DISABLE_ALL_CARGOS :{BLACK}Display no cargoes on the map +STR_SMALLMAP_TOOLTIP_ENABLE_ALL_CARGOS :{BLACK}Display all cargoes on the map # Status bar messages STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Show last message or news report @@ -791,13 +828,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 @@ -876,15 +912,12 @@ STR_GAME_OPTIONS_CURRENCY_LTL :Lithuanian Lita STR_GAME_OPTIONS_CURRENCY_KRW :South Korean Won (KRW) STR_GAME_OPTIONS_CURRENCY_ZAR :South African Rand (ZAR) STR_GAME_OPTIONS_CURRENCY_CUSTOM :Custom... +STR_GAME_OPTIONS_CURRENCY_GEL :Georgian Lari (GEL) +STR_GAME_OPTIONS_CURRENCY_IRR :Iranian Rial (IRR) ############ end of currency region -STR_GAME_OPTIONS_MEASURING_UNITS_FRAME :{BLACK}Measuring units -STR_GAME_OPTIONS_MEASURING_UNITS_DROPDOWN_TOOLTIP :{BLACK}Measuring units selection ############ start of measuring units region -STR_GAME_OPTIONS_MEASURING_UNITS_IMPERIAL :Imperial -STR_GAME_OPTIONS_MEASURING_UNITS_METRIC :Metric -STR_GAME_OPTIONS_MEASURING_UNITS_SI :SI ############ end of measuring units region STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Road vehicles @@ -922,11 +955,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 @@ -938,9 +973,6 @@ 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 STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} missing/corrupted file{P "" s} @@ -955,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 @@ -1054,8 +1087,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 @@ -1063,12 +1097,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 @@ -1089,7 +1127,7 @@ STR_CONFIG_SETTING_HORIZONTAL_POS_RIGHT :Right STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN :Maximum initial loan: {STRING} STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Maximum amount a company can loan (without taking inflation into account) STR_CONFIG_SETTING_INTEREST_RATE :Interest rate: {STRING} -STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Loan interest rate; also controls inflation if enabled +STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Loan interest rate; also controls inflation, if enabled STR_CONFIG_SETTING_RUNNING_COSTS :Running costs: {STRING} STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT :Set level of maintainance and running costs of vehicles and infrastructure STR_CONFIG_SETTING_CONSTRUCTION_SPEED :Construction speed: {STRING} @@ -1101,17 +1139,15 @@ STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT :Set how much is 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} -STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :If enabled recessions may occur every few years. During a recession all production is significantly lower (it returns to previous level when the recession is over) +STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :If enabled, recessions may occur every few years. During a recession all production is significantly lower (it returns to previous level when the recession is over) STR_CONFIG_SETTING_TRAIN_REVERSING :Disallow train reversing in stations: {STRING} -STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :If enabled trains will not reverse in non-terminus stations, if there is a shorter path to their next destination when reversing +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 @@ -1135,14 +1171,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} @@ -1170,8 +1200,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 @@ -1202,10 +1230,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 @@ -1226,7 +1250,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 @@ -1244,31 +1268,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 @@ -1285,7 +1323,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 @@ -1315,17 +1353,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} @@ -1334,7 +1370,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 @@ -1349,7 +1385,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 @@ -1361,9 +1397,9 @@ STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :Play sound for 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 effect 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 summarising 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 effect on successful constructions or other actions +STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT :Play sound on successful constructions or other actions STR_CONFIG_SETTING_SOUND_CLICK :Button clicks: {STRING} STR_CONFIG_SETTING_SOUND_CLICK_HELPTEXT :Beep when clicking buttons STR_CONFIG_SETTING_SOUND_DISASTER :Disasters/accidents: {STRING} @@ -1371,17 +1407,17 @@ STR_CONFIG_SETTING_SOUND_DISASTER_HELPTEXT :Play sound effe STR_CONFIG_SETTING_SOUND_VEHICLE :Vehicles: {STRING} STR_CONFIG_SETTING_SOUND_VEHICLE_HELPTEXT :Play sound effects of vehicles STR_CONFIG_SETTING_SOUND_AMBIENT :Ambient: {STRING} -STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :Play ambient sound effects of landscape, industries and towns +STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :Play ambient sounds of landscape, industries and towns 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} @@ -1448,7 +1484,7 @@ STR_CONFIG_SETTING_NEWS_ADVICE_HELPTEXT :Display message STR_CONFIG_SETTING_NEWS_NEW_VEHICLES :New vehicles: {STRING} STR_CONFIG_SETTING_NEWS_NEW_VEHICLES_HELPTEXT :Display a newspaper when a new vehicle type becomes available STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE :Changes to cargo acceptance: {STRING} -STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE_HELPTEXT :Display messages about stations changing acceptance of some cargos +STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE_HELPTEXT :Display messages about stations changing acceptance of some cargoes STR_CONFIG_SETTING_NEWS_SUBSIDIES :Subsidies: {STRING} STR_CONFIG_SETTING_NEWS_SUBSIDIES_HELPTEXT :Display a newspaper about subsidy related events STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION :General information: {STRING} @@ -1471,7 +1507,7 @@ STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY :When dragging, STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_HELPTEXT :Set the distance at which signals will be built on a track up to the next obstacle (signal, junction), if signals are dragged STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_VALUE :{COMMA} tile{P 0 "" s} STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE :When dragging, keep fixed distance between signals: {STRING} -STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :Select the behaviour of signal placement when Ctrl+dragging signals. If disabled, signals are placed around tunnels or bridges to avoid long stretches without signals. If enabled, signals are placed every N tiles, making alignment of signals at parallel tracks easier +STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :Select the behaviour of signal placement when Ctrl+dragging signals. If disabled, signals are placed around tunnels or bridges to avoid long stretches without signals. If enabled, signals are placed every n tiles, making alignment of signals at parallel tracks easier 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} @@ -1499,7 +1535,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 @@ -1547,28 +1583,90 @@ 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_GUI :{ORANGE}Interface -STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}Construction +STR_CONFIG_SETTING_LINKGRAPH_INTERVAL :Update distribution graph every {STRING} 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_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 +STR_CONFIG_SETTING_DISTRIBUTION_SYMMETRIC :symmetric +STR_CONFIG_SETTING_DISTRIBUTION_PAX :Distribution mode for passengers: {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 :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 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 :"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 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} +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_HELPTEXT :Whenever a speed is shown in the user interface, show it in the selected units +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 :Vehicle power units: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_HELPTEXT :Whenever a vehicle's power is shown in the user interface, show it in the selected units +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 :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_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_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_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_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}Localisation +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_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 @@ -1602,6 +1700,8 @@ STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_ALGORITHM :{WHITE}... save STR_CONFIG_ERROR_INVALID_BASE_GRAPHICS_NOT_FOUND :{WHITE}... ignoring Base Graphics set '{STRING}': not found STR_CONFIG_ERROR_INVALID_BASE_SOUNDS_NOT_FOUND :{WHITE}... ignoring Base Sounds set '{STRING}': not found STR_CONFIG_ERROR_INVALID_BASE_MUSIC_NOT_FOUND :{WHITE}... ignoring Base Music set '{STRING}': not found +STR_CONFIG_ERROR_OUT_OF_MEMORY :{WHITE}Out of memory +STR_CONFIG_ERROR_SPRITECACHE_TOO_BIG :{WHITE}Allocating {BYTES} of spritecache failed. The spritecache was reduced to {BYTES}. This will reduce the performance of OpenTTD. To reduce memory requirements you can try to disable 32bpp graphics and/or zoom-in levels # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} @@ -1723,6 +1823,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 @@ -1778,10 +1879,10 @@ STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}Change t # Network server list STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}Multiplayer -STR_NETWORK_SERVER_LIST_CONNECTION :{BLACK}Connection: -STR_NETWORK_SERVER_LIST_CONNECTION_TOOLTIP :{BLACK}Choose between an internet game or a Local Area Network (LAN) game -STR_NETWORK_SERVER_LIST_LAN :LAN -STR_NETWORK_SERVER_LIST_INTERNET :Internet +STR_NETWORK_SERVER_LIST_ADVERTISED :{BLACK}Advertised +STR_NETWORK_SERVER_LIST_ADVERTISED_TOOLTIP :{BLACK}Choose between an advertised (internet) and a not advertised (Local Area Network, LAN) game +STR_NETWORK_SERVER_LIST_ADVERTISED_NO :No +STR_NETWORK_SERVER_LIST_ADVERTISED_YES :Yes STR_NETWORK_SERVER_LIST_PLAYER_NAME :{BLACK}Player name: STR_NETWORK_SERVER_LIST_ENTER_NAME_TOOLTIP :{BLACK}This is the name other players will identify you by @@ -1840,16 +1941,16 @@ STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP :{BLACK}The game 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 it to be publicly accessible -STR_NETWORK_START_SERVER_LAN_INTERNET :LAN / Internet -STR_NETWORK_START_SERVER_INTERNET_ADVERTISE :Internet (advertise) +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 @@ -1962,6 +2063,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 @@ -2080,6 +2182,10 @@ STR_CONTENT_SELECT_UPDATES_CAPTION :{BLACK}Select u STR_CONTENT_SELECT_UPDATES_CAPTION_TOOLTIP :{BLACK}Mark all content that is an upgrade for existing content to be downloaded STR_CONTENT_UNSELECT_ALL_CAPTION :{BLACK}Unselect all STR_CONTENT_UNSELECT_ALL_CAPTION_TOOLTIP :{BLACK}Mark all content to be not downloaded +STR_CONTENT_SEARCH_EXTERNAL :{BLACK}Search external websites +STR_CONTENT_SEARCH_EXTERNAL_TOOLTIP :{BLACK}Search content not available on OpenTTD's content service on websites not associated to OpenTTD +STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER_CAPTION :{WHITE}You are leaving OpenTTD! +STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER :{WHITE}The terms and conditions for downloading content from external websites vary.{}You will have to refer to the external sites for instructions how to install the content into OpenTTD.{}Do you want to continue? STR_CONTENT_FILTER_TITLE :{BLACK}Tag/name filter: STR_CONTENT_OPEN_URL :{BLACK}Visit website STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}Visit the website for this content @@ -2102,7 +2208,7 @@ STR_CONTENT_DETAIL_FILESIZE :{SILVER}Downloa STR_CONTENT_DETAIL_SELECTED_BECAUSE_OF :{SILVER}Selected because of: {WHITE}{STRING} STR_CONTENT_DETAIL_DEPENDENCIES :{SILVER}Dependencies: {WHITE}{STRING} STR_CONTENT_DETAIL_TAGS :{SILVER}Tags: {WHITE}{STRING} -STR_CONTENT_NO_ZLIB :{WHITE}OpenTTD is build without "zlib" support... +STR_CONTENT_NO_ZLIB :{WHITE}OpenTTD is built without "zlib" support... STR_CONTENT_NO_ZLIB_SUB :{WHITE}... downloading content is not possible! # Order of these is important! @@ -2149,6 +2255,17 @@ STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}Toggle t STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Toggle transparency for loading indicators. Ctrl+Click to lock STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}Set objects invisible instead of transparent +# Linkgraph legend window +STR_LINKGRAPH_LEGEND_CAPTION :{BLACK}Cargo Flow Legend +STR_LINKGRAPH_LEGEND_ALL :{BLACK}All +STR_LINKGRAPH_LEGEND_NONE :{BLACK}None +STR_LINKGRAPH_LEGEND_SELECT_COMPANIES :{BLACK}Select companies to be displayed + +# Linkgraph legend window and linkgraph legend in smallmap +STR_LINKGRAPH_LEGEND_UNUSED :{TINY_FONT}{BLACK}unused +STR_LINKGRAPH_LEGEND_SATURATED :{TINY_FONT}{BLACK}saturated +STR_LINKGRAPH_LEGEND_OVERLOADED :{TINY_FONT}{BLACK}overloaded + # Base for station construction window(s) STR_STATION_BUILD_COVERAGE_AREA_TITLE :{BLACK}Coverage area highlight STR_STATION_BUILD_COVERAGE_OFF :{BLACK}Off @@ -2215,18 +2332,18 @@ STR_STATION_CLASS_WAYP :Waypoints # Signal window STR_BUILD_SIGNAL_CAPTION :{WHITE}Signal Selection STR_BUILD_SIGNAL_SEMAPHORE_NORM_TOOLTIP :{BLACK}Block Signal (semaphore){}This is the most basic type of signal, allowing only one train to be in the same block at the same time -STR_BUILD_SIGNAL_SEMAPHORE_ENTRY_TOOLTIP :{BLACK}Entry-Signal (semaphore){}Green as long as there is one or more green exit-signal from the following section of track. Otherwise it shows red -STR_BUILD_SIGNAL_SEMAPHORE_EXIT_TOOLTIP :{BLACK}Exit-Signal (semaphore){}Behaves in the same way as a block signal but is necessary to trigger the correct colour on entry & combo pre-signals +STR_BUILD_SIGNAL_SEMAPHORE_ENTRY_TOOLTIP :{BLACK}Entry Signal (semaphore){}Green as long as there is one or more green exit-signal from the following section of track. Otherwise it shows red +STR_BUILD_SIGNAL_SEMAPHORE_EXIT_TOOLTIP :{BLACK}Exit Signal (semaphore){}Behaves in the same way as a block signal but is necessary to trigger the correct colour on entry & combo pre-signals STR_BUILD_SIGNAL_SEMAPHORE_COMBO_TOOLTIP :{BLACK}Combo-Signal (semaphore){}The combo signal simply acts as both an entry and exit signal. This allows you to build large "trees" of pre-signals STR_BUILD_SIGNAL_SEMAPHORE_PBS_TOOLTIP :{BLACK}Path Signal (semaphore){}A path signal allows more than one train to enter a signal block at the same time, if the train can reserve a path to a safe stopping point. Standard path signals can be passed from the back side STR_BUILD_SIGNAL_SEMAPHORE_PBS_OWAY_TOOLTIP :{BLACK}One-way Path Signal (semaphore){}A path signal allows more than one train to enter a signal block at the same time, if the train can reserve a path to a safe stopping point. One-way path signals can't be passed from the back side STR_BUILD_SIGNAL_ELECTRIC_NORM_TOOLTIP :{BLACK}Block Signal (electric){}This is the most basic type of signal, allowing only one train to be in the same block at the same time -STR_BUILD_SIGNAL_ELECTRIC_ENTRY_TOOLTIP :{BLACK}Entry-Signal (electric){}Green as long as there is one or more green exit-signal from the following section of track. Otherwise it shows red -STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}Exit-Signal (electric){}Behaves in the same way as a block signal but is necessary to trigger the correct colour on entry & combo pre-signals -STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}Combo-Signal (electric){}The combo signal simply acts as both an entry and exit signal. This allows you to build large "trees" of pre-signals +STR_BUILD_SIGNAL_ELECTRIC_ENTRY_TOOLTIP :{BLACK}Entry Signal (electric){}Green as long as there is one or more green exit-signal from the following section of track. Otherwise it shows red +STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}Exit Signal (electric){}Behaves in the same way as a block signal but is necessary to trigger the correct colour on entry & combo pre-signals +STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}Combo Signal (electric){}The combo signal simply acts as both an entry and exit signal. This allows you to build large "trees" of pre-signals STR_BUILD_SIGNAL_ELECTRIC_PBS_TOOLTIP :{BLACK}Path Signal (electric){}A path signal allows more than one train to enter a signal block at the same time, if the train can reserve a path to a safe stopping point. Standard path signals can be passed from the back side STR_BUILD_SIGNAL_ELECTRIC_PBS_OWAY_TOOLTIP :{BLACK}One-way Path Signal (electric){}A path signal allows more than one train to enter a signal block at the same time, if the train can reserve a path to a safe stopping point. One-way path signals can't be passed from the back side -STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}Signal Convert{}When selected, clicking an existing signal will convert it to the selected signal type and variant, Ctrl+Click will toggle the existing variant. Shift+Click shows estimated conversion cost +STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}Signal Convert{}When selected, clicking an existing signal will convert it to the selected signal type and variant. Ctrl+Click will toggle the existing variant. Shift+Click shows estimated conversion cost STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_TOOLTIP :{BLACK}Dragging signal density STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_DECREASE_TOOLTIP :{BLACK}Decrease dragging signal density STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_INCREASE_TOOLTIP :{BLACK}Increase dragging signal density @@ -2353,7 +2470,7 @@ STR_PLANT_TREE_TOOLTIP :{BLACK}Select t STR_TREES_RANDOM_TYPE :{BLACK}Trees of random type STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}Place trees of random type. Shift toggles building/showing cost estimate STR_TREES_RANDOM_TREES_BUTTON :{BLACK}Random Trees -STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Plant trees randomly over landscape +STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Plant trees randomly throughout the landscape # Land generation window (SE) STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}Land Generation @@ -2451,6 +2568,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 @@ -2547,7 +2665,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-2011 The OpenTTD team +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2014 The OpenTTD team # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Save Game @@ -2566,6 +2684,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} @@ -2576,6 +2695,7 @@ STR_SAVELOAD_OSKTITLE :{BLACK}Enter a # 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: @@ -2583,10 +2703,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: @@ -2613,7 +2729,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 @@ -2668,7 +2783,9 @@ 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_FILE_TOOLTIP :{BLACK}A list of the NewGRF files that are installed. +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 STR_NEWGRF_SETTINGS_SHOW_PARAMETERS :{BLACK}Show parameters @@ -2692,6 +2809,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 @@ -2762,6 +2889,7 @@ STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}You are STR_NEWGRF_DUPLICATE_GRFID :{WHITE}Can't add file: duplicate GRF ID STR_NEWGRF_COMPATIBLE_LOADED :{ORANGE}Matching file not found (compatible GRF loaded) +STR_NEWGRF_TOO_MANY_NEWGRFS :{WHITE}Can't add file: NewGRF file limit reached STR_NEWGRF_COMPATIBLE_LOAD_WARNING :{WHITE}Compatible GRF(s) loaded for missing files STR_NEWGRF_DISABLED_WARNING :{WHITE}Missing GRF file(s) have been disabled @@ -2778,6 +2906,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 @@ -2792,6 +2921,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... @@ -2873,10 +3005,14 @@ STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT :{YELLOW}Buy 1 y STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}Bribe the local authority to increase your rating, at the risk of a severe penalty if caught.{}Cost: {CURRENCY_LONG} # Goal window -STR_GOALS_CAPTION :{WHITE}Goals +STR_GOALS_CAPTION :{WHITE}{COMPANY} Goals +STR_GOALS_SPECTATOR_CAPTION :{WHITE}Global Goals STR_GOALS_GLOBAL_TITLE :{BLACK}Global goals: STR_GOALS_TEXT :{ORANGE}{STRING} STR_GOALS_NONE :{ORANGE}- None - +STR_GOALS_SPECTATOR_NONE :{ORANGE}- Not applicable - +STR_GOALS_PROGRESS :{ORANGE}{STRING} +STR_GOALS_PROGRESS_COMPLETE :{GREEN}{STRING} STR_GOALS_COMPANY_TITLE :{BLACK}Company goals: STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Click on goal to centre main view on industry/town/tile. Ctrl+Click opens a new viewport on industry/town/tile location @@ -2915,6 +3051,18 @@ STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}Services STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING} from {STRING} to {STRING}{YELLOW} ({COMPANY}{YELLOW}, until {DATE_SHORT}) STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Click on service to centre main view on industry/town. Ctrl+Click opens a new viewport on industry/town location +# Story book window +STR_STORY_BOOK_CAPTION :{WHITE}{COMPANY} Story Book +STR_STORY_BOOK_SPECTATOR_CAPTION :{WHITE}Global Story Book +STR_STORY_BOOK_TITLE :{YELLOW}{STRING} +STR_STORY_BOOK_GENERIC_PAGE_ITEM :Page {NUM} +STR_STORY_BOOK_SEL_PAGE_TOOLTIP :{BLACK}Jump to a specific page by selecting it in this drop down list. +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 STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}Hold Ctrl to select more than one item @@ -2928,9 +3076,9 @@ 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} en-route from {STATION}) +STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} from {STATION}) +STR_STATION_VIEW_RESERVED :{YELLOW}({CARGO_SHORT} reserved for loading) STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Accepts STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Show list of accepted cargo @@ -2941,8 +3089,31 @@ STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPAN STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Ratings STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Show station ratings -STR_STATION_VIEW_CARGO_RATINGS_TITLE :{BLACK}Local rating of transport service: -STR_STATION_VIEW_CARGO_RATING :{WHITE}{STRING}: {YELLOW}{STRING} ({COMMA}%) +STR_STATION_VIEW_SUPPLY_RATINGS_TITLE :{BLACK}Monthly supply and local rating: +STR_STATION_VIEW_CARGO_SUPPLY_RATING :{WHITE}{STRING}: {YELLOW}{COMMA} / {STRING} ({COMMA}%) + +STR_STATION_VIEW_GROUP :{BLACK}Group by +STR_STATION_VIEW_WAITING_STATION :Station: Waiting +STR_STATION_VIEW_WAITING_AMOUNT :Amount: Waiting +STR_STATION_VIEW_PLANNED_STATION :Station: Planned +STR_STATION_VIEW_PLANNED_AMOUNT :Amount: Planned +STR_STATION_VIEW_FROM :{YELLOW}{CARGO_SHORT} from {STATION} +STR_STATION_VIEW_VIA :{YELLOW}{CARGO_SHORT} via {STATION} +STR_STATION_VIEW_TO :{YELLOW}{CARGO_SHORT} to {STATION} +STR_STATION_VIEW_FROM_ANY :{RED}{CARGO_SHORT} from unknown station +STR_STATION_VIEW_TO_ANY :{RED}{CARGO_SHORT} to any station +STR_STATION_VIEW_VIA_ANY :{RED}{CARGO_SHORT} via any station +STR_STATION_VIEW_FROM_HERE :{GREEN}{CARGO_SHORT} from this station +STR_STATION_VIEW_VIA_HERE :{GREEN}{CARGO_SHORT} stopping at this station +STR_STATION_VIEW_TO_HERE :{GREEN}{CARGO_SHORT} to this station +STR_STATION_VIEW_NONSTOP :{YELLOW}{CARGO_SHORT} non-stop + +STR_STATION_VIEW_GROUP_S_V_D :Source-Via-Destination +STR_STATION_VIEW_GROUP_S_D_V :Source-Destination-Via +STR_STATION_VIEW_GROUP_V_S_D :Via-Source-Destination +STR_STATION_VIEW_GROUP_V_D_S :Via-Destination-Source +STR_STATION_VIEW_GROUP_D_S_V :Destination-Source-Via +STR_STATION_VIEW_GROUP_D_V_S :Destination-Via-Source ############ range for rating starts STR_CARGO_RATING_APPALLING :Appalling @@ -2999,7 +3170,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 @@ -3022,11 +3193,11 @@ STR_COMPANY_VIEW_VEHICLES_NONE :{WHITE}None STR_COMPANY_VIEW_COMPANY_VALUE :{GOLD}Company value: {WHITE}{CURRENCY_LONG} STR_COMPANY_VIEW_SHARES_OWNED_BY :{WHITE}({COMMA}% owned by {COMPANY}) STR_COMPANY_VIEW_INFRASTRUCTURE :{GOLD}Infrastructure: -STR_COMPANY_VIEW_INFRASTRUCTURE_RAIL :{WHITE}{COMMA} rail pieces{P "" s} -STR_COMPANY_VIEW_INFRASTRUCTURE_ROAD :{WHITE}{COMMA} road pieces{P "" s} -STR_COMPANY_VIEW_INFRASTRUCTURE_WATER :{WHITE}{COMMA} water tiles{P "" s} -STR_COMPANY_VIEW_INFRASTRUCTURE_STATION :{WHITE}{COMMA} station tiles{P "" s} -STR_COMPANY_VIEW_INFRASTRUCTURE_AIRPORT :{WHITE}{COMMA} airports{P "" s} +STR_COMPANY_VIEW_INFRASTRUCTURE_RAIL :{WHITE}{COMMA} rail piece{P "" s} +STR_COMPANY_VIEW_INFRASTRUCTURE_ROAD :{WHITE}{COMMA} road piece{P "" s} +STR_COMPANY_VIEW_INFRASTRUCTURE_WATER :{WHITE}{COMMA} water tile{P "" s} +STR_COMPANY_VIEW_INFRASTRUCTURE_STATION :{WHITE}{COMMA} station tile{P "" s} +STR_COMPANY_VIEW_INFRASTRUCTURE_AIRPORT :{WHITE}{COMMA} airport{P "" s} STR_COMPANY_VIEW_INFRASTRUCTURE_NONE :{WHITE}None STR_COMPANY_VIEW_BUILD_HQ_BUTTON :{BLACK}Build HQ @@ -3069,7 +3240,6 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS :{WHITE}Canals STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}Stations: STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}Station tiles STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}Airports -STR_COMPANY_INFRASTRUCTURE_VIEW_COST :{WHITE}{1:CURRENCY_LONG}/yr ({0:COMMA}) STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL :{WHITE}{CURRENCY_LONG}/yr # Industry directory @@ -3086,6 +3256,7 @@ STR_INDUSTRY_VIEW_PRODUCTION_LAST_MONTH_TITLE :{BLACK}Producti STR_INDUSTRY_VIEW_TRANSPORTED :{YELLOW}{CARGO_LONG}{STRING}{BLACK} ({COMMA}% transported) STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Centre the main view on industry location. Ctrl+Click opens a new viewport on industry location STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Production level: {YELLOW}{COMMA}% +STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}The industry has announced imminent closure! ############ range for requires starts STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Requires: {YELLOW}{STRING}{STRING} @@ -3148,12 +3319,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 @@ -3449,6 +3623,11 @@ STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Servicin 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 +STR_SERVICE_INTERVAL_DROPDOWN_TOOLTIP :{BLACK}Change servicing interval type +STR_VEHICLE_DETAILS_DEFAULT :Default +STR_VEHICLE_DETAILS_DAYS :Days +STR_VEHICLE_DETAILS_PERCENT :Percentage + STR_QUERY_RENAME_TRAIN_CAPTION :{WHITE}Name train STR_QUERY_RENAME_ROAD_VEHICLE_CAPTION :{WHITE}Name road vehicle STR_QUERY_RENAME_SHIP_CAPTION :{WHITE}Name ship @@ -3537,8 +3716,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 @@ -3629,18 +3808,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 @@ -3666,9 +3845,13 @@ 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} @@ -3684,7 +3867,7 @@ STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}This tim STR_TIMETABLE_STATUS_START_AT :{BLACK}This timetable will start at {STRING} STR_TIMETABLE_STARTING_DATE :{BLACK}Start date -STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Select a date as starting point of this timetable +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 STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Change the amount of time that the highlighted order should take @@ -3706,7 +3889,7 @@ STR_TIMETABLE_AUTOFILL_TOOLTIP :{BLACK}Fill the STR_TIMETABLE_EXPECTED :{BLACK}Expected STR_TIMETABLE_SCHEDULED :{BLACK}Scheduled -STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Switch between expected and schedule +STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Switch between expected and scheduled STR_TIMETABLE_ARRIVAL_ABBREVIATION :A: STR_TIMETABLE_DEPARTURE_ABBREVIATION :D: @@ -3798,6 +3981,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 @@ -3820,6 +4005,10 @@ STR_INCOME_FLOAT_INCOME_SMALL :{TINY_FONT}{GRE STR_INCOME_FLOAT_INCOME :{GREEN}Income: {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}Income: {CURRENCY_LONG} +STR_FEEDER_INCOME :{YELLOW}Transfer: {CURRENCY_LONG}{WHITE} / {GREEN}Income: {CURRENCY_LONG} +STR_FEEDER_COST_TINY :{TINY_FONT}{YELLOW}Transfer: {CURRENCY_LONG}{WHITE} / {RED}Cost: {CURRENCY_LONG} +STR_FEEDER_COST :{YELLOW}Transfer: {CURRENCY_LONG}{WHITE} / {RED}Cost: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_COST :{WHITE}Estimated Cost: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Estimated Income: {CURRENCY_LONG} @@ -4116,6 +4305,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... @@ -4171,6 +4361,11 @@ STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}Can't ch STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... vehicle is destroyed +STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL :{WHITE}No vehicles will be available at all +STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Change your NewGRF configuration +STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}No vehicles are available yet +STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Start a new game after {DATE_SHORT} or use a NewGRF which provides early vehicles + # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Can't make train pass signal at danger... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Can't reverse direction of train... @@ -4213,6 +4408,16 @@ STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}Can't de # Translatable comment for OpenTTD's desktop shortcut STR_DESKTOP_SHORTCUT_COMMENT :A simulation game based on Transport Tycoon Deluxe +# Translatable descriptions in media/baseset/*.ob* files +STR_BASEGRAPHICS_DOS_DESCRIPTION :Original Transport Tycoon Deluxe DOS edition graphics. +STR_BASEGRAPHICS_DOS_DE_DESCRIPTION :Original Transport Tycoon Deluxe DOS (German) edition graphics. +STR_BASEGRAPHICS_WIN_DESCRIPTION :Original Transport Tycoon Deluxe Windows edition graphics. +STR_BASESOUNDS_DOS_DESCRIPTION :Original Transport Tycoon Deluxe DOS edition sounds. +STR_BASESOUNDS_WIN_DESCRIPTION :Original Transport Tycoon Deluxe Windows edition sounds. +STR_BASESOUNDS_NONE_DESCRIPTION :A sound pack without any sounds. +STR_BASEMUSIC_WIN_DESCRIPTION :Original Transport Tycoon Deluxe Windows edition music. +STR_BASEMUSIC_NONE_DESCRIPTION :A music pack without actual music. + ##id 0x2000 # Town building names STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1 :Tall office block @@ -4335,7 +4540,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) @@ -4542,10 +4747,10 @@ STR_VEHICLE_NAME_SHIP_FFP_PASSENGER_FERRY :FFP Passenger F STR_VEHICLE_NAME_SHIP_BAKEWELL_300_HOVERCRAFT :Bakewell 300 Hovercraft STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :Chugger-Chug Passenger Ferry 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_POWERNAUT_CARGO_SHIP :Powernaut Cargo ship +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_POWERNAUT_CARGO_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 @@ -4659,8 +4864,9 @@ 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_SPACE_STRING :{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} @@ -4684,9 +4890,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 56efb6298..05979921c 100644 --- a/src/lang/english_US.txt +++ b/src/lang/english_US.txt @@ -199,21 +199,28 @@ STR_UNITS_POWER_IMPERIAL :{COMMA}hp STR_UNITS_POWER_METRIC :{COMMA}hp 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} tonne{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{P "" s} STR_UNITS_VOLUME_LONG_METRIC :{COMMA} liter{P "" s} 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}Filter s 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}Select grouping order 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 @@ -232,7 +240,8 @@ STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Close wi STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Window title - drag this to move window STR_TOOLTIP_SHADE :{BLACK}Shade window - only show the title bar STR_TOOLTIP_DEBUG :{BLACK}Show NewGRF debug information -STR_TOOLTIP_STICKY :{BLACK}Mark this window as uncloseable for the 'Close All Windows' key +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 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 @@ -256,7 +265,6 @@ STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}Area: {N # These are used in buttons -STR_SORT_BY_CAPTION_POPULATION :{BLACK}Population STR_SORT_BY_CAPTION_NAME :{BLACK}Name STR_SORT_BY_CAPTION_DATE :{BLACK}Date # These are used in dropdowns @@ -277,33 +285,38 @@ STR_SORT_BY_LENGTH :Length STR_SORT_BY_LIFE_TIME :Remaining lifetime STR_SORT_BY_TIMETABLE_DELAY :Timetable delay STR_SORT_BY_FACILITY :Station type -STR_SORT_BY_WAITING :Waiting cargo value +STR_SORT_BY_WAITING_TOTAL :Total waiting cargo +STR_SORT_BY_WAITING_AVAILABLE :Available waiting cargo STR_SORT_BY_RATING_MAX :Highest cargo rating STR_SORT_BY_RATING_MIN :Lowest cargo rating STR_SORT_BY_ENGINE_ID :EngineID (classic sort) 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 # Tooltips for the main toolbar STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Pause game 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 STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Display company finances information STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Display general company information +STR_TOOLBAR_TOOLTIP_DISPLAY_STORY_BOOK :{BLACK}Display story book +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 @@ -371,19 +384,19 @@ STR_FILE_MENU_SEPARATOR : STR_FILE_MENU_EXIT :Quit ############ range ends here -############ range for map menu starts +# map menu STR_MAP_MENU_MAP_OF_WORLD :Map of world STR_MAP_MENU_EXTRA_VIEW_PORT :Extra viewport +STR_MAP_MENU_LINGRAPH_LEGEND :Cargo Flow Legend STR_MAP_MENU_SIGN_LIST :Sign list -############ range for town menu starts, yet the town directory is shown in the map menu in the scenario editor + +############ range for town menu starts STR_TOWN_MENU_TOWN_DIRECTORY :Town directory -############ end of the 'Display map' dropdown STR_TOWN_MENU_FOUND_TOWN :Found town -############ end of the 'Town' dropdown +############ range ends here ############ range for subsidies menu starts STR_SUBSIDIES_MENU_SUBSIDIES :Subsidies -STR_SUBSIDIES_MENU_GOAL :Current goals ############ range ends here ############ range for graph menu starts @@ -439,7 +452,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 @@ -457,7 +470,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 @@ -473,22 +486,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 @@ -584,10 +615,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 @@ -650,7 +681,7 @@ STR_HIGHSCORE_PERFORMANCE_TITLE_CAPITALIST :Capitalist STR_HIGHSCORE_PERFORMANCE_TITLE_MAGNATE :Magnate STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL :Mogul STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY :Tycoon of the Century -STR_HIGHSCORE_NAME :{BIG_FONT}{PRESIDENT_NAME}, {COMPANY} +STR_HIGHSCORE_NAME :{PRESIDENT_NAME}, {COMPANY} STR_HIGHSCORE_STATS :{BIG_FONT}'{STRING}' ({COMMA}) STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{BLACK}{COMPANY} achieves '{STRING}' status! STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{WHITE}{PRESIDENT_NAME} of {COMPANY} achieves '{STRING}' status! @@ -661,17 +692,20 @@ STR_SMALLMAP_CAPTION :{WHITE}Map - {S STR_SMALLMAP_TYPE_CONTOURS :Contours STR_SMALLMAP_TYPE_VEHICLES :Vehicles STR_SMALLMAP_TYPE_INDUSTRIES :Industries +STR_SMALLMAP_TYPE_ROUTEMAP :Cargo Flow STR_SMALLMAP_TYPE_ROUTES :Routes STR_SMALLMAP_TYPE_VEGETATION :Vegetation STR_SMALLMAP_TYPE_OWNERS :Owners STR_SMALLMAP_TOOLTIP_SHOW_LAND_CONTOURS_ON_MAP :{BLACK}Show land contours on map STR_SMALLMAP_TOOLTIP_SHOW_VEHICLES_ON_MAP :{BLACK}Show vehicles on map STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRIES_ON_MAP :{BLACK}Show industries on map +STR_SMALLMAP_TOOLTIP_SHOW_LINK_STATS_ON_MAP :{BLACK}Show cargo flow on map STR_SMALLMAP_TOOLTIP_SHOW_TRANSPORT_ROUTES_ON :{BLACK}Show transport routes on map STR_SMALLMAP_TOOLTIP_SHOW_VEGETATION_ON_MAP :{BLACK}Show vegetation on map STR_SMALLMAP_TOOLTIP_SHOW_LAND_OWNERS_ON_MAP :{BLACK}Show land owners on map STR_SMALLMAP_TOOLTIP_INDUSTRY_SELECTION :{BLACK}Click on an industry type to toggle displaying it. Ctrl+Click disables all types except the selected one. Ctrl+Click on it again to enable all industry types STR_SMALLMAP_TOOLTIP_COMPANY_SELECTION :{BLACK}Click on a company to toggle displaying its property. Ctrl+Click disables all companies except the selected one. Ctrl+Click on it again to enable all companies +STR_SMALLMAP_TOOLTIP_CARGO_SELECTION :{BLACK}Click on a cargo to toggle displaying its property. Ctrl+Click disables all cargos except the selected one. Ctrl+Click on it again to enable all cargos STR_SMALLMAP_LEGENDA_ROADS :{TINY_FONT}{BLACK}Roads STR_SMALLMAP_LEGENDA_RAILROADS :{TINY_FONT}{BLACK}Railroads @@ -705,6 +739,7 @@ STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLA STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Toggle town names on/off on map STR_SMALLMAP_CENTER :{BLACK}Center the minimap on the current 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}Disable all @@ -715,11 +750,13 @@ STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES :{BLACK}Display STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}Toggle display of heightmap STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES :{BLACK}Display no company property on the map STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}Display all company property on the map +STR_SMALLMAP_TOOLTIP_DISABLE_ALL_CARGOS :{BLACK}Display no cargos on the map +STR_SMALLMAP_TOOLTIP_ENABLE_ALL_CARGOS :{BLACK}Display all cargos on the map # 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 * * @@ -791,13 +828,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 @@ -876,15 +912,12 @@ STR_GAME_OPTIONS_CURRENCY_LTL :Lithuanian Lita STR_GAME_OPTIONS_CURRENCY_KRW :South Korean Won (KRW) STR_GAME_OPTIONS_CURRENCY_ZAR :South African Rand (ZAR) STR_GAME_OPTIONS_CURRENCY_CUSTOM :Custom... +STR_GAME_OPTIONS_CURRENCY_GEL :Georgian Lari (GEL) +STR_GAME_OPTIONS_CURRENCY_IRR :Iranian Rial (IRR) ############ end of currency region -STR_GAME_OPTIONS_MEASURING_UNITS_FRAME :{BLACK}Measuring units -STR_GAME_OPTIONS_MEASURING_UNITS_DROPDOWN_TOOLTIP :{BLACK}Measuring units selection ############ start of measuring units region -STR_GAME_OPTIONS_MEASURING_UNITS_IMPERIAL :Imperial -STR_GAME_OPTIONS_MEASURING_UNITS_METRIC :Metric -STR_GAME_OPTIONS_MEASURING_UNITS_SI :SI ############ end of measuring units region STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Road vehicles @@ -922,11 +955,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 @@ -938,9 +973,6 @@ 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 STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} missing/corrupted file{P "" s} @@ -955,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 @@ -1054,8 +1087,9 @@ 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_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 @@ -1063,12 +1097,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; 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_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 @@ -1089,7 +1127,7 @@ STR_CONFIG_SETTING_HORIZONTAL_POS_RIGHT :Right STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN :Maximum initial loan: {STRING} STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Maximum amount a company can loan (without taking inflation into account) STR_CONFIG_SETTING_INTEREST_RATE :Interest rate: {STRING} -STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Loan interest rate; also controls inflation if enabled +STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Loan interest rate; also controls inflation, if enabled STR_CONFIG_SETTING_RUNNING_COSTS :Running costs: {STRING} STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT :Set level of maintainance and running costs of vehicles and infrastructure STR_CONFIG_SETTING_CONSTRUCTION_SPEED :Construction speed: {STRING} @@ -1097,21 +1135,19 @@ 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} -STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :If enabled recessions may occur every few years. During a recession all production is significantly lower (it returns to previous level when the recession is over) +STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :If enabled, recessions may occur every few years. During a recession all production is significantly lower (it returns to previous level when the recession is over) STR_CONFIG_SETTING_TRAIN_REVERSING :Disallow train reversing in stations: {STRING} -STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :If enabled trains will not reverse in non-terminus stations, if there is a shorter path to their next destination when reversing +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_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 @@ -1131,18 +1167,12 @@ 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 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} @@ -1164,14 +1194,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 @@ -1202,10 +1230,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 @@ -1226,7 +1250,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 @@ -1244,31 +1268,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 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 @@ -1285,7 +1323,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 @@ -1308,24 +1346,22 @@ STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK :Single click (i 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_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} @@ -1334,7 +1370,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 @@ -1349,7 +1385,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 @@ -1357,13 +1393,13 @@ 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 effect 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 effect on successful constructions or other actions +STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT :Play sound on successful constructions or other actions STR_CONFIG_SETTING_SOUND_CLICK :Button clicks: {STRING} STR_CONFIG_SETTING_SOUND_CLICK_HELPTEXT :Beep when clicking buttons STR_CONFIG_SETTING_SOUND_DISASTER :Disasters/accidents: {STRING} @@ -1371,17 +1407,17 @@ STR_CONFIG_SETTING_SOUND_DISASTER_HELPTEXT :Play sound effe STR_CONFIG_SETTING_SOUND_VEHICLE :Vehicles: {STRING} STR_CONFIG_SETTING_SOUND_VEHICLE_HELPTEXT :Play sound effects of vehicles STR_CONFIG_SETTING_SOUND_AMBIENT :Ambient: {STRING} -STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :Play ambient sound effects of landscape, industries and towns +STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :Play ambient sounds of landscape, industries and towns 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} @@ -1428,9 +1464,9 @@ STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN_HELPTEXT :Display a newsp STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER :Arrival of first vehicle at competitor's station: {STRING} STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER_HELPTEXT :Display a newspaper when the first vehicle arrives at a new competitor's station STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS :Accidents / disasters: {STRING} -STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS_HELPTEXT :Display a newspaper when accidents or disasters occurs +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} @@ -1460,7 +1496,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} @@ -1471,7 +1507,7 @@ STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY :When dragging, STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_HELPTEXT :Set the distance at which signals will be built on a track up to the next obstacle (signal, junction), if signals are dragged STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_VALUE :{COMMA} tile{P 0 "" s} STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE :When dragging, keep fixed distance between signals: {STRING} -STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :Select the behavior of signal placement when Ctrl+dragging signals. If disabled, signals are placed around tunnels or bridges to avoid long stretches without signals. If enabled, signals are placed every N tiles, making alignment of signals at parallel tracks easier +STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :Select the behavior of signal placement when Ctrl+dragging signals. If disabled, signals are placed around tunnels or bridges to avoid long stretches without signals. If enabled, signals are placed every n tiles, making alignment of signals at parallel tracks easier 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} @@ -1499,7 +1535,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 @@ -1547,28 +1583,90 @@ 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_GUI :{ORANGE}Interface -STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}Construction +STR_CONFIG_SETTING_LINKGRAPH_INTERVAL :Update distribution graph every {STRING} 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_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 +STR_CONFIG_SETTING_DISTRIBUTION_SYMMETRIC :symmetric +STR_CONFIG_SETTING_DISTRIBUTION_PAX :Distribution mode for passengers: {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 :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_DEFAULT :Distribution mode for other cargo classes: {STRING} +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 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} +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_HELPTEXT :Whenever a speed is shown in the user interface, show it in the selected units +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 :Vehicle power units: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_HELPTEXT :Whenever a vehicle's power is shown in the user interface, show it in the selected units +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 :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_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_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_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_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}Localization +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_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 @@ -1602,6 +1700,8 @@ STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_ALGORITHM :{WHITE}... save STR_CONFIG_ERROR_INVALID_BASE_GRAPHICS_NOT_FOUND :{WHITE}... ignoring Base Graphics set '{STRING}': not found STR_CONFIG_ERROR_INVALID_BASE_SOUNDS_NOT_FOUND :{WHITE}... ignoring Base Sounds set '{STRING}': not found STR_CONFIG_ERROR_INVALID_BASE_MUSIC_NOT_FOUND :{WHITE}... ignoring Base Music set '{STRING}': not found +STR_CONFIG_ERROR_OUT_OF_MEMORY :{WHITE}Out of memory +STR_CONFIG_ERROR_SPRITECACHE_TOO_BIG :{WHITE}Allocating {BYTES} of spritecache failed. The spritecache was reduced to {BYTES}. This will reduce the performance of OpenTTD. To reduce memory requirements you can try to disable 32bpp graphics and/or zoom-in levels # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} @@ -1663,8 +1763,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 @@ -1723,6 +1823,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 @@ -1778,10 +1879,10 @@ STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}Change t # Network server list STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}Multiplayer -STR_NETWORK_SERVER_LIST_CONNECTION :{BLACK}Connection: -STR_NETWORK_SERVER_LIST_CONNECTION_TOOLTIP :{BLACK}Choose between an internet game or a local area network game -STR_NETWORK_SERVER_LIST_LAN :LAN -STR_NETWORK_SERVER_LIST_INTERNET :Internet +STR_NETWORK_SERVER_LIST_ADVERTISED :{BLACK}Advertized +STR_NETWORK_SERVER_LIST_ADVERTISED_TOOLTIP :{BLACK}Choose between an advertized (internet) and a not advertized (Local Area Network, LAN) game +STR_NETWORK_SERVER_LIST_ADVERTISED_NO :No +STR_NETWORK_SERVER_LIST_ADVERTISED_YES :Yes STR_NETWORK_SERVER_LIST_PLAYER_NAME :{BLACK}Player name: STR_NETWORK_SERVER_LIST_ENTER_NAME_TOOLTIP :{BLACK}This is the name other players will identify you by @@ -1789,7 +1890,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 @@ -1827,29 +1928,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_LAN_INTERNET :LAN / Internet -STR_NETWORK_START_SERVER_INTERNET_ADVERTISE :Internet (advertize) +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 @@ -1900,7 +2001,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} @@ -1915,11 +2016,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... @@ -1935,7 +2036,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 @@ -1945,7 +2046,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 @@ -1962,6 +2063,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 @@ -2001,7 +2103,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 @@ -2080,6 +2182,10 @@ STR_CONTENT_SELECT_UPDATES_CAPTION :{BLACK}Select u STR_CONTENT_SELECT_UPDATES_CAPTION_TOOLTIP :{BLACK}Mark all content that is an upgrade for existing content to be downloaded STR_CONTENT_UNSELECT_ALL_CAPTION :{BLACK}Unselect all STR_CONTENT_UNSELECT_ALL_CAPTION_TOOLTIP :{BLACK}Mark all content to be not downloaded +STR_CONTENT_SEARCH_EXTERNAL :{BLACK}Search external websites +STR_CONTENT_SEARCH_EXTERNAL_TOOLTIP :{BLACK}Search content not available on OpenTTD's content service on websites not associated to OpenTTD +STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER_CAPTION :{WHITE}You are leaving OpenTTD! +STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER :{WHITE}The terms and conditions for downloading content from external websites vary.{}You will have to refer to the external sites for instructions how to install the content into OpenTTD.{}Do you want to continue? STR_CONTENT_FILTER_TITLE :{BLACK}Tag/name filter: STR_CONTENT_OPEN_URL :{BLACK}Visit website STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}Visit the website for this content @@ -2149,6 +2255,17 @@ STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}Toggle t STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Toggle transparency for loading indicators. Ctrl+Click to lock STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}Set objects invisible instead of transparent +# Linkgraph legend window +STR_LINKGRAPH_LEGEND_CAPTION :{BLACK}Cargo Flow Legend +STR_LINKGRAPH_LEGEND_ALL :{BLACK}All +STR_LINKGRAPH_LEGEND_NONE :{BLACK}None +STR_LINKGRAPH_LEGEND_SELECT_COMPANIES :{BLACK}Select companies to be displayed + +# Linkgraph legend window and linkgraph legend in smallmap +STR_LINKGRAPH_LEGEND_UNUSED :{TINY_FONT}{BLACK}unused +STR_LINKGRAPH_LEGEND_SATURATED :{TINY_FONT}{BLACK}saturated +STR_LINKGRAPH_LEGEND_OVERLOADED :{TINY_FONT}{BLACK}overloaded + # Base for station construction window(s) STR_STATION_BUILD_COVERAGE_AREA_TITLE :{BLACK}Coverage area highlight STR_STATION_BUILD_COVERAGE_OFF :{BLACK}Off @@ -2215,18 +2332,18 @@ STR_STATION_CLASS_WAYP :Waypoints # Signal window STR_BUILD_SIGNAL_CAPTION :{WHITE}Signal Selection STR_BUILD_SIGNAL_SEMAPHORE_NORM_TOOLTIP :{BLACK}Block Signal (semaphore){}This is the most basic type of signal, allowing only one train to be in the same block at the same time -STR_BUILD_SIGNAL_SEMAPHORE_ENTRY_TOOLTIP :{BLACK}Entry-Signal (semaphore){}Green as long as there is one or more green exit-signal from the following section of track. Otherwise it shows red -STR_BUILD_SIGNAL_SEMAPHORE_EXIT_TOOLTIP :{BLACK}Exit-Signal (semaphore){}Behaves in the same way as a block signal but is necessary to trigger the correct color on entry & combo pre-signals -STR_BUILD_SIGNAL_SEMAPHORE_COMBO_TOOLTIP :{BLACK}Combo-Signal (semaphore){}The combo signal simply acts as both an entry and exit signal. This allows you to build large "trees" of pre-signals +STR_BUILD_SIGNAL_SEMAPHORE_ENTRY_TOOLTIP :{BLACK}Entry Signal (semaphore){}Green as long as there is one or more green exit-signal from the following section of track. Otherwise it shows red +STR_BUILD_SIGNAL_SEMAPHORE_EXIT_TOOLTIP :{BLACK}Exit Signal (semaphore){}Behaves in the same way as a block signal but is necessary to trigger the correct color on entry & combo pre-signals +STR_BUILD_SIGNAL_SEMAPHORE_COMBO_TOOLTIP :{BLACK}Combo Signal (semaphore){}The combo signal simply acts as both an entry and exit signal. This allows you to build large "trees" of pre-signals STR_BUILD_SIGNAL_SEMAPHORE_PBS_TOOLTIP :{BLACK}Path Signal (semaphore){}A path signal allows more than one train to enter a signal block at the same time, if the train can reserve a path to a safe stopping point. Standard path signals can be passed from the back side STR_BUILD_SIGNAL_SEMAPHORE_PBS_OWAY_TOOLTIP :{BLACK}One-way Path Signal (semaphore){}A path signal allows more than one train to enter a signal block at the same time, if the train can reserve a path to a safe stopping point. One-way path signals can't be passed from the back side STR_BUILD_SIGNAL_ELECTRIC_NORM_TOOLTIP :{BLACK}Block Signal (electric){}This is the most basic type of signal, allowing only one train to be in the same block at the same time -STR_BUILD_SIGNAL_ELECTRIC_ENTRY_TOOLTIP :{BLACK}Entry-Signal (electric){}Green as long as there is one or more green exit-signal from the following section of track. Otherwise it shows red -STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}Exit-Signal (electric){}Behaves in the same way as a block signal but is necessary to trigger the correct color on entry & combo pre-signals -STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}Combo-Signal (electric){}The combo signal simply acts as both an entry and exit signal. This allows you to build large "trees" of pre-signals +STR_BUILD_SIGNAL_ELECTRIC_ENTRY_TOOLTIP :{BLACK}Entry Signal (electric){}Green as long as there is one or more green exit-signal from the following section of track. Otherwise it shows red +STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}Exit Signal (electric){}Behaves in the same way as a block signal but is necessary to trigger the correct color on entry & combo pre-signals +STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}Combo Signal (electric){}The combo signal simply acts as both an entry and exit signal. This allows you to build large "trees" of pre-signals STR_BUILD_SIGNAL_ELECTRIC_PBS_TOOLTIP :{BLACK}Path Signal (electric){}A path signal allows more than one train to enter a signal block at the same time, if the train can reserve a path to a safe stopping point. Standard path signals can be passed from the back side STR_BUILD_SIGNAL_ELECTRIC_PBS_OWAY_TOOLTIP :{BLACK}One-way Path Signal (electric){}A path signal allows more than one train to enter a signal block at the same time, if the train can reserve a path to a safe stopping point. One-way path signals can't be passed from the back side -STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}Signal Convert{}When selected, clicking an existing signal will convert it to the selected signal type and variant, Ctrl+Click will toggle the existing variant. Shift+Click shows estimated conversion cost +STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}Signal Convert{}When selected, clicking an existing signal will convert it to the selected signal type and variant. Ctrl+Click will toggle the existing variant. Shift+Click shows estimated conversion cost STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_TOOLTIP :{BLACK}Dragging signal density STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_DECREASE_TOOLTIP :{BLACK}Decrease dragging signal density STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_INCREASE_TOOLTIP :{BLACK}Increase dragging signal density @@ -2353,7 +2470,7 @@ STR_PLANT_TREE_TOOLTIP :{BLACK}Select t STR_TREES_RANDOM_TYPE :{BLACK}Trees of random type STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}Place trees of random type. Shift toggles building/showing cost estimate STR_TREES_RANDOM_TREES_BUTTON :{BLACK}Random Trees -STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Plant trees randomly over landscape +STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Plant trees randomly throughout the landscape # Land generation window (SE) STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}Land Generation @@ -2451,6 +2568,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 @@ -2540,14 +2658,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-2012 The OpenTTD team +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2014 The OpenTTD team # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Save Game @@ -2566,6 +2684,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} @@ -2574,8 +2693,9 @@ 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: @@ -2583,10 +2703,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 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: @@ -2613,12 +2729,11 @@ 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 # 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 @@ -2668,6 +2783,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 @@ -2692,6 +2809,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 @@ -2762,6 +2889,7 @@ STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}You are STR_NEWGRF_DUPLICATE_GRFID :{WHITE}Can't add file: duplicate GRF ID STR_NEWGRF_COMPATIBLE_LOADED :{ORANGE}Matching file not found (compatible GRF loaded) +STR_NEWGRF_TOO_MANY_NEWGRFS :{WHITE}Can't add file: NewGRF file limit reached STR_NEWGRF_COMPATIBLE_LOAD_WARNING :{WHITE}Compatible GRF(s) loaded for missing files STR_NEWGRF_DISABLED_WARNING :{WHITE}Missing GRF file(s) have been disabled @@ -2778,6 +2906,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 @@ -2792,6 +2921,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... @@ -2873,10 +3005,14 @@ STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT :{YELLOW}Buy 1 y STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}Bribe the local authority to increase your rating, at the risk of a severe penalty if caught.{}Cost: {CURRENCY_LONG} # Goal window -STR_GOALS_CAPTION :{WHITE}Goals +STR_GOALS_CAPTION :{WHITE}{COMPANY} Goals +STR_GOALS_SPECTATOR_CAPTION :{WHITE}Global Goals STR_GOALS_GLOBAL_TITLE :{BLACK}Global goals: STR_GOALS_TEXT :{ORANGE}{STRING} STR_GOALS_NONE :{ORANGE}- None - +STR_GOALS_SPECTATOR_NONE :{ORANGE}- Not applicable - +STR_GOALS_PROGRESS :{ORANGE}{STRING} +STR_GOALS_PROGRESS_COMPLETE :{GREEN}{STRING} STR_GOALS_COMPANY_TITLE :{BLACK}Company goals: STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Click on goal to center main view on industry/town/tile. Ctrl+Click opens a new viewport on industry/town/tile location @@ -2915,6 +3051,18 @@ STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}Services STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING} from {STRING} to {STRING}{YELLOW} ({COMPANY}{YELLOW}, until {DATE_SHORT}) STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Click on service to center main view on industry/town. Ctrl+Click opens a new viewport on industry/town location +# Story book window +STR_STORY_BOOK_CAPTION :{WHITE}{COMPANY} Story Book +STR_STORY_BOOK_SPECTATOR_CAPTION :{WHITE}Global Story Book +STR_STORY_BOOK_TITLE :{YELLOW}{STRING} +STR_STORY_BOOK_GENERIC_PAGE_ITEM :Page {NUM} +STR_STORY_BOOK_SEL_PAGE_TOOLTIP :{BLACK}Jump to a specific page by selecting it in this drop down list. +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 STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}Hold Ctrl to select more than one item @@ -2928,9 +3076,9 @@ 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} en-route from {STATION}) +STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} from {STATION}) +STR_STATION_VIEW_RESERVED :{YELLOW}({CARGO_SHORT} reserved for loading) STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Accepts STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Show list of accepted cargo @@ -2941,11 +3089,34 @@ STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPAN STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Ratings STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Show station ratings -STR_STATION_VIEW_CARGO_RATINGS_TITLE :{BLACK}Local rating of transport service: -STR_STATION_VIEW_CARGO_RATING :{WHITE}{STRING}: {YELLOW}{STRING} ({COMMA}%) +STR_STATION_VIEW_SUPPLY_RATINGS_TITLE :{BLACK}Monthly supply and local rating: +STR_STATION_VIEW_CARGO_SUPPLY_RATING :{WHITE}{STRING}: {YELLOW}{COMMA} / {STRING} ({COMMA}%) + +STR_STATION_VIEW_GROUP :{BLACK}Group by +STR_STATION_VIEW_WAITING_STATION :Station: Waiting +STR_STATION_VIEW_WAITING_AMOUNT :Amount: Waiting +STR_STATION_VIEW_PLANNED_STATION :Station: Planned +STR_STATION_VIEW_PLANNED_AMOUNT :Amount: Planned +STR_STATION_VIEW_FROM :{YELLOW}{CARGO_SHORT} from {STATION} +STR_STATION_VIEW_VIA :{YELLOW}{CARGO_SHORT} via {STATION} +STR_STATION_VIEW_TO :{YELLOW}{CARGO_SHORT} to {STATION} +STR_STATION_VIEW_FROM_ANY :{RED}{CARGO_SHORT} from unknown station +STR_STATION_VIEW_TO_ANY :{RED}{CARGO_SHORT} to any station +STR_STATION_VIEW_VIA_ANY :{RED}{CARGO_SHORT} via any station +STR_STATION_VIEW_FROM_HERE :{GREEN}{CARGO_SHORT} from this station +STR_STATION_VIEW_VIA_HERE :{GREEN}{CARGO_SHORT} stopping at this station +STR_STATION_VIEW_TO_HERE :{GREEN}{CARGO_SHORT} to this station +STR_STATION_VIEW_NONSTOP :{YELLOW}{CARGO_SHORT} non-stop + +STR_STATION_VIEW_GROUP_S_V_D :Source-Via-Destination +STR_STATION_VIEW_GROUP_S_D_V :Source-Destination-Via +STR_STATION_VIEW_GROUP_V_S_D :Via-Source-Destination +STR_STATION_VIEW_GROUP_V_D_S :Via-Destination-Source +STR_STATION_VIEW_GROUP_D_S_V :Destination-Source-Via +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 @@ -2999,7 +3170,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 @@ -3055,7 +3226,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} @@ -3069,7 +3240,6 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS :{WHITE}Canals STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}Stations: STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}Station tiles STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}Airports -STR_COMPANY_INFRASTRUCTURE_VIEW_COST :{WHITE}{1:CURRENCY_LONG}/yr ({0:COMMA}) STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL :{WHITE}{CURRENCY_LONG}/yr # Industry directory @@ -3086,6 +3256,7 @@ STR_INDUSTRY_VIEW_PRODUCTION_LAST_MONTH_TITLE :{BLACK}Producti STR_INDUSTRY_VIEW_TRANSPORTED :{YELLOW}{CARGO_LONG}{STRING}{BLACK} ({COMMA}% transported) STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Center the main view on industry location. Ctrl+Click opens a new viewport on industry location STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Production level: {YELLOW}{COMMA}% +STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}The industry has announced imminent closure! ############ range for requires starts STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Requires: {YELLOW}{STRING}{STRING} @@ -3133,7 +3304,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} @@ -3148,12 +3319,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 @@ -3165,7 +3339,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 @@ -3316,7 +3490,7 @@ 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 @@ -3356,10 +3530,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 @@ -3449,6 +3623,11 @@ STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Maintena 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 +STR_SERVICE_INTERVAL_DROPDOWN_TOOLTIP :{BLACK}Change servicing interval type +STR_VEHICLE_DETAILS_DEFAULT :Default +STR_VEHICLE_DETAILS_DAYS :Days +STR_VEHICLE_DETAILS_PERCENT :Percentage + STR_QUERY_RENAME_TRAIN_CAPTION :{WHITE}Name train STR_QUERY_RENAME_ROAD_VEHICLE_CAPTION :{WHITE}Name road vehicle STR_QUERY_RENAME_SHIP_CAPTION :{WHITE}Name ship @@ -3458,7 +3637,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}) @@ -3537,8 +3716,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 @@ -3629,18 +3808,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 @@ -3666,9 +3845,13 @@ 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} @@ -3684,7 +3867,7 @@ STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}This tim STR_TIMETABLE_STATUS_START_AT :{BLACK}This timetable will start at {STRING} STR_TIMETABLE_STARTING_DATE :{BLACK}Start date -STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Select a date as starting point of this timetable +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 STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Change the amount of time that the highlighted order should take @@ -3706,7 +3889,7 @@ STR_TIMETABLE_AUTOFILL_TOOLTIP :{BLACK}Fill the STR_TIMETABLE_EXPECTED :{BLACK}Expected STR_TIMETABLE_SCHEDULED :{BLACK}Scheduled -STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Switch between expected and schedule +STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Switch between expected and scheduled STR_TIMETABLE_ARRIVAL_ABBREVIATION :A: STR_TIMETABLE_DEPARTURE_ABBREVIATION :D: @@ -3798,6 +3981,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 @@ -3820,6 +4005,10 @@ STR_INCOME_FLOAT_INCOME_SMALL :{TINY_FONT}{GRE STR_INCOME_FLOAT_INCOME :{GREEN}Income: {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}Income: {CURRENCY_LONG} +STR_FEEDER_INCOME :{YELLOW}Transfer: {CURRENCY_LONG}{WHITE} / {GREEN}Income: {CURRENCY_LONG} +STR_FEEDER_COST_TINY :{TINY_FONT}{YELLOW}Transfer: {CURRENCY_LONG}{WHITE} / {RED}Cost: {CURRENCY_LONG} +STR_FEEDER_COST :{YELLOW}Transfer: {CURRENCY_LONG}{WHITE} / {RED}Cost: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_COST :{WHITE}Estimated Cost: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Estimated Income: {CURRENCY_LONG} @@ -3901,8 +4090,8 @@ 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 # Company related errors @@ -3924,14 +4113,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_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 @@ -3941,7 +4130,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 @@ -4087,7 +4276,7 @@ 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_START_AND_END_MUST_BE_IN :{WHITE}Start and end must be in line @@ -4116,6 +4305,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... @@ -4142,7 +4332,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... @@ -4171,6 +4361,11 @@ STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}Can't ch STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... vehicle is destroyed +STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL :{WHITE}No vehicles will be available at all +STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Change your NewGRF configuration +STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}No vehicles are available yet +STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Start a new game after {DATE_SHORT} or use a NewGRF that provides early vehicles + # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Can't make train pass signal at danger... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Can't reverse direction of train... @@ -4213,6 +4408,16 @@ STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}Can't de # Translatable comment for OpenTTD's desktop shortcut STR_DESKTOP_SHORTCUT_COMMENT :A simulation game based on Transport Tycoon Deluxe +# Translatable descriptions in media/baseset/*.ob* files +STR_BASEGRAPHICS_DOS_DESCRIPTION :Original Transport Tycoon Deluxe DOS edition graphics. +STR_BASEGRAPHICS_DOS_DE_DESCRIPTION :Original Transport Tycoon Deluxe DOS (German) edition graphics. +STR_BASEGRAPHICS_WIN_DESCRIPTION :Original Transport Tycoon Deluxe Windows edition graphics. +STR_BASESOUNDS_DOS_DESCRIPTION :Original Transport Tycoon Deluxe DOS edition sounds. +STR_BASESOUNDS_WIN_DESCRIPTION :Original Transport Tycoon Deluxe Windows edition sounds. +STR_BASESOUNDS_NONE_DESCRIPTION :A sound pack without any sounds. +STR_BASEMUSIC_WIN_DESCRIPTION :Original Transport Tycoon Deluxe Windows edition music. +STR_BASEMUSIC_NONE_DESCRIPTION :A music pack without actual music. + ##id 0x2000 # Town building names STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1 :Tall office block @@ -4319,7 +4524,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} @@ -4335,7 +4540,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) @@ -4360,7 +4565,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 @@ -4390,7 +4595,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 @@ -4422,7 +4627,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 @@ -4542,10 +4747,10 @@ STR_VEHICLE_NAME_SHIP_FFP_PASSENGER_FERRY :FFP Passenger F STR_VEHICLE_NAME_SHIP_BAKEWELL_300_HOVERCRAFT :Bakewell 300 Hovercraft STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :Chugger-Chug Passenger Ferry 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_POWERNAUT_CARGO_SHIP :Powernaut Cargo ship +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_POWERNAUT_CARGO_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 @@ -4600,8 +4805,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} @@ -4659,8 +4864,9 @@ 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_SPACE_STRING :{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} @@ -4684,9 +4890,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 33396fb73..13a478ec7 100644 --- a/src/lang/esperanto.txt +++ b/src/lang/esperanto.txt @@ -255,7 +255,6 @@ STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}Regiono: # These are used in buttons -STR_SORT_BY_CAPTION_POPULATION :{BLACK}Enloĝantaro STR_SORT_BY_CAPTION_NAME :{BLACK}Nomo STR_SORT_BY_CAPTION_DATE :{BLACK}Dato # These are used in dropdowns @@ -276,7 +275,6 @@ 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 :Valoro de atendanta ŝ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) @@ -287,12 +285,14 @@ STR_SORT_BY_INTRO_DATE :Enkonduka dato STR_SORT_BY_RUNNING_COST :Irkosto STR_SORT_BY_POWER_VS_RUNNING_COST :Potenco/Irkosto STR_SORT_BY_CARGO_CAPACITY :Ŝarĝkapablo +STR_SORT_BY_RANGE :Atingopovo +STR_SORT_BY_POPULATION :Enloĝantaro # Tooltips for the main toolbar STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Paŭzigu la ludon STR_TOOLBAR_TOOLTIP_FORWARD :{BLACK}Rapide pluirigu la ludon STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}Opcioj -STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK}Konservu ludon, foriru de la ludo, fermu +STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK}Konservu ludon, foriru ludo, forlasi STR_TOOLBAR_TOOLTIP_DISPLAY_MAP :{BLACK}Montru mapon STR_TOOLBAR_TOOLTIP_DISPLAY_TOWN_DIRECTORY :{BLACK}Montru urbaron STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Montru subvenciojn @@ -330,18 +330,18 @@ STR_SCENEDIT_TOOLBAR_LANDSCAPE_GENERATION :{BLACK}Landaspe STR_SCENEDIT_TOOLBAR_TOWN_GENERATION :{BLACK}Urba generado STR_SCENEDIT_TOOLBAR_INDUSTRY_GENERATION :{BLACK}Industria generado STR_SCENEDIT_TOOLBAR_ROAD_CONSTRUCTION :{BLACK}Vojkonstruado -STR_SCENEDIT_TOOLBAR_PLANT_TREES :{BLACK}Plantu arbojn +STR_SCENEDIT_TOOLBAR_PLANT_TREES :{BLACK}Plantu arbojn. «Shift» aktivigita konstruado/montrante kosto takso STR_SCENEDIT_TOOLBAR_PLACE_SIGN :{BLACK}Metu signon -STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}Loku objekton +STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}Loku objekton. «Shift» aktivigita konstruado/montrante kosto takso ############ range for SE file menu starts STR_SCENEDIT_FILE_MENU_SAVE_SCENARIO :Konservu scenaron STR_SCENEDIT_FILE_MENU_LOAD_SCENARIO :Ŝarĝu scenaron STR_SCENEDIT_FILE_MENU_SAVE_HEIGHTMAP :Konservu altecmapon STR_SCENEDIT_FILE_MENU_LOAD_HEIGHTMAP :Ŝarĝu altecmapon -STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :Fermu kreilon +STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :Forlasi scenaro kreilo STR_SCENEDIT_FILE_MENU_SEPARATOR : -STR_SCENEDIT_FILE_MENU_QUIT :Fermu +STR_SCENEDIT_FILE_MENU_QUIT :Forlasi ############ range for SE file menu starts ############ range for settings menu starts @@ -357,7 +357,7 @@ STR_SETTINGS_MENU_SHOW_COMPETITOR_SIGNS :Konkurantaj sig STR_SETTINGS_MENU_FULL_ANIMATION :Plena animado STR_SETTINGS_MENU_FULL_DETAIL :Plenaj detaloj STR_SETTINGS_MENU_TRANSPARENT_BUILDINGS :Travideblaj konstruaĵoj -STR_SETTINGS_MENU_TRANSPARENT_SIGNS :Travideblaj staciosignoj +STR_SETTINGS_MENU_TRANSPARENT_SIGNS :Travideblaj signoj ############ range ends here ############ range for file menu starts @@ -368,15 +368,15 @@ STR_FILE_MENU_SEPARATOR : STR_FILE_MENU_EXIT :Fermu ############ range ends here -############ range for map menu starts +# map menu STR_MAP_MENU_MAP_OF_WORLD :Mondomapo STR_MAP_MENU_EXTRA_VIEW_PORT :Plia vidujo STR_MAP_MENU_SIGN_LIST :Afiŝa listo -############ range for town menu starts, yet the town directory is shown in the map menu in the scenario editor + +############ range for town menu starts STR_TOWN_MENU_TOWN_DIRECTORY :Urba katalogo -############ end of the 'Display map' dropdown STR_TOWN_MENU_FOUND_TOWN :Urbo troviĝas. -############ end of the 'Town' dropdown +############ range ends here ############ range for subsidies menu starts STR_SUBSIDIES_MENU_SUBSIDIES :Subvencioj @@ -394,6 +394,7 @@ STR_GRAPH_MENU_CARGO_PAYMENT_RATES :Ŝarĝpaga graf ############ range for company league menu starts STR_GRAPH_MENU_COMPANY_LEAGUE_TABLE :Kompaniara tabelo STR_GRAPH_MENU_DETAILED_PERFORMANCE_RATING :Detala rendimento +STR_GRAPH_MENU_HIGHSCORE :Altpoentara tabelo ############ range ends here ############ range for industry menu starts @@ -441,15 +442,16 @@ STR_NEWS_MENU_MESSAGE_HISTORY_MENU :Mesaĝa Histori STR_ABOUT_MENU_LAND_BLOCK_INFO :Landkvadrataj informoj STR_ABOUT_MENU_SEPARATOR : STR_ABOUT_MENU_TOGGLE_CONSOLE :Baskuligi Konzolon -STR_ABOUT_MENU_AI_DEBUG :Sencimigo de AI +STR_ABOUT_MENU_AI_DEBUG :AI/Ludo skripto sencimigo STR_ABOUT_MENU_SCREENSHOT :Ekranfoto STR_ABOUT_MENU_ZOOMIN_SCREENSHOT :Pligrandiga ekranfoto +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_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 @@ -465,22 +467,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 @@ -642,7 +662,7 @@ STR_HIGHSCORE_PERFORMANCE_TITLE_CAPITALIST :Kapitalisto STR_HIGHSCORE_PERFORMANCE_TITLE_MAGNATE :Manaĝisto STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL :Potenculo STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY :Plej potenca de la Jarcento -STR_HIGHSCORE_NAME :{BIG_FONT}{PRESIDENT_NAME}, {COMPANY} +STR_HIGHSCORE_NAME :{PRESIDENT_NAME}, {COMPANY} STR_HIGHSCORE_STATS :{BIG_FONT}'{STRING}' ({COMMA}) STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{BLACK}{COMPANY} atingis staton de '{STRING}'! STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{WHITE}{PRESIDENT_NAME} de {COMPANY} atingis staton de '{STRING}'! @@ -720,6 +740,7 @@ STR_MESSAGE_HISTORY_TOOLTIP :{BLACK}Listo da STR_MESSAGE_NEWS_FORMAT :{STRING} - {STRING} STR_NEWS_MESSAGE_CAPTION :{WHITE}Mesaĝo +STR_NEWS_CUSTOM_ITEM :{BIG_FONT}{BLACK}{STRING} STR_NEWS_FIRST_TRAIN_ARRIVAL :{BIG_FONT}{BLACK}Enloĝantoj festas . . .{}Unua trajno alvenas ĉe {STATION}! STR_NEWS_FIRST_BUS_ARRIVAL :{BIG_FONT}{BLACK}Enloĝantoj festas . . .{}Unua buso alvenas en {STATION}! @@ -781,19 +802,17 @@ 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 STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD_AND :{WHITE}{VEHICLE} tro malnoviĝis kaj postulas anstataŭiĝon STR_NEWS_TRAIN_IS_STUCK :{WHITE}{VEHICLE} ne povas trovi padon por daŭrigi. -STR_NEWS_VEHICLE_IS_LOST :{WHITE}{VEHICLE} estas perdita. +STR_NEWS_VEHICLE_IS_LOST :{WHITE}{VEHICLE} estas perdita STR_NEWS_VEHICLE_IS_UNPROFITABLE :{WHITE}{VEHICLE} pasintjare gajnis {CURRENCY_LONG} STR_NEWS_ORDER_REFIT_FAILED :{WHITE}{VEHICLE} haltis ĉar komanda transformo fiaskis @@ -817,6 +836,7 @@ STR_NEWS_SERVICE_SUBSIDY_AWARDED_TRIPLE :{BIG_FONT}{BLAC STR_NEWS_SERVICE_SUBSIDY_AWARDED_QUADRUPLE :{BIG_FONT}{BLACK}Subvencio doniĝis al {STRING}!{}{}Servo de {STRING} de {STRING} al {STRING} ricevis kvaroblajn pagojn por la sekva jaro! STR_NEWS_ROAD_REBUILDING :{BIG_FONT}{BLACK}Trafika ĥaoso en {TOWN}!{}{}Vojrekonstruada programo komencita de {STRING} alportas 6-monatan mizeron al vojuzantoj! +STR_NEWS_EXCLUSIVE_RIGHTS_TITLE :{BIG_FONT}{BLACK}Transporta monopolo! # Extra view window STR_EXTRA_VIEW_PORT_TITLE :{WHITE}Vidujo {COMMA} @@ -834,7 +854,7 @@ STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Elekto d STR_GAME_OPTIONS_CURRENCY_GBP :Brita Pundo (GBP) STR_GAME_OPTIONS_CURRENCY_USD :Amerika Dolaro (USD) STR_GAME_OPTIONS_CURRENCY_EUR :Eŭro (EUR) -STR_GAME_OPTIONS_CURRENCY_JPY :Enoj (¥) +STR_GAME_OPTIONS_CURRENCY_JPY :Enoj (JPY) STR_GAME_OPTIONS_CURRENCY_ATS :Aŭstriaj Ŝilingoj (ATS) STR_GAME_OPTIONS_CURRENCY_BEF :Belgaj Frankoj (BEF) STR_GAME_OPTIONS_CURRENCY_CHF :Svisaj Frankoj (CHF) @@ -860,15 +880,12 @@ STR_GAME_OPTIONS_CURRENCY_SKK :Slovakaj Koruno STR_GAME_OPTIONS_CURRENCY_BRL :Brazilaj Realoj (BRL) STR_GAME_OPTIONS_CURRENCY_EEK :Estona Krono (EEK) STR_GAME_OPTIONS_CURRENCY_CUSTOM :Alia... +STR_GAME_OPTIONS_CURRENCY_GEL :Kartvela Lario (GEL) +STR_GAME_OPTIONS_CURRENCY_IRR :Irana Rialo (IRR) ############ end of currency region -STR_GAME_OPTIONS_MEASURING_UNITS_FRAME :{BLACK}Mezurunuoj -STR_GAME_OPTIONS_MEASURING_UNITS_DROPDOWN_TOOLTIP :{BLACK}Elekto de mezurunuoj ############ start of measuring units region -STR_GAME_OPTIONS_MEASURING_UNITS_IMPERIAL :Angla sistemo -STR_GAME_OPTIONS_MEASURING_UNITS_METRIC :Metra sistemo -STR_GAME_OPTIONS_MEASURING_UNITS_SI :Sistemo Internacia ############ end of measuring units region STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Stratveturiloj @@ -906,11 +923,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 @@ -922,9 +941,6 @@ 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_BASE_GRF :{BLACK}Baza grafikaro STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Selektu la uzendan bazgrafikaron STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} mankanta{P "" j}/koruptita{P "" j} dosiero{P "" j} @@ -1023,6 +1039,10 @@ STR_WARNING_NO_SUITABLE_AI :{WHITE}Neniu ta # Advanced settings window STR_CONFIG_SETTING_CAPTION :{WHITE}Avancitaj agordoj +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_BASIC :Bazniveloj agordoj STR_CONFIG_SETTING_RESTRICT_ADVANCED :Altnivelaj agordoj @@ -1030,10 +1050,15 @@ STR_CONFIG_SETTING_RESTRICT_ALL :Altnivelaj agor STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :agordoj kiuj malsimilas al la originala 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_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_INGAME :Kompanio agordojn (stokita en savu; tuŝas nur kuranta kompanio) STR_CONFIG_SETTING_OFF :Malaktiva STR_CONFIG_SETTING_ON :Aktiva -STR_CONFIG_SETTING_DISABLED :malaktiva +STR_CONFIG_SETTING_DISABLED :Malaktiva STR_CONFIG_SETTING_COMPANIES_OFF :Ne STR_CONFIG_SETTING_COMPANIES_OWN :Propra kompanio @@ -1047,47 +1072,57 @@ STR_CONFIG_SETTING_HORIZONTAL_POS_LEFT :Maldekstre STR_CONFIG_SETTING_HORIZONTAL_POS_CENTER :Centre STR_CONFIG_SETTING_HORIZONTAL_POS_RIGHT :Dekstre +STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN :Maksimuma komenca prunto: {STRING} +STR_CONFIG_SETTING_INTEREST_RATE :Rentumtarifoj: {STRING} +STR_CONFIG_SETTING_RUNNING_COSTS :Irkostoj: {STRING} +STR_CONFIG_SETTING_CONSTRUCTION_SPEED :Konstrurapido: {STRING} +STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS :Veturilpaneoj: {STRING} +STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT :Ŝanĝu kio oni pagas por subvenciataj rilatoj +STR_CONFIG_SETTING_CONSTRUCTION_COSTS :Kostoj de konstruado: {STRING} +STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :Ŝanĝu nivelon de konstruaj kaj aĉetaj kostoj +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_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} STR_CONFIG_SETTING_SMOKE_AMOUNT :Kvanto da lokomotivo fumo/fajreroj: {STRING} STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL :Modelo de trajnakcelado: {STRING} STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL :Modelo de stratveturilakcelado: {STRING} +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 -STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :prospektori +STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :esploradon STR_CONFIG_SETTING_MULTIPINDTOWN :Permesu pliajn similajn industriojn en la sama urbo: {STRING} +STR_CONFIG_SETTING_SIGNALSIDE :Montru signaloj: {STRING} +STR_CONFIG_SETTING_SIGNALSIDE_LEFT :Maldekstre +STR_CONFIG_SETTING_SIGNALSIDE_RIGHT :Dekstre STR_CONFIG_SETTING_SHOWFINANCES :Montru financan fenestron fine de la jaro: {STRING} STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :Novaj ordonoj estas 'sen-halte' per defaŭlto: {STRING} STR_CONFIG_SETTING_STOP_LOCATION :Novaj trajnordonoj ĉesas defaŭlte ĉe la {STRING} of the platform 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_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} STR_CONFIG_SETTING_ALLOW_GIVE_MONEY :Permesu sendi monon al aliaj kompanioj: {STRING} STR_CONFIG_SETTING_FREIGHT_TRAINS :Pezpliigo pro ŝarĝo por imiti pezajn trajnojn: {STRING} +STR_CONFIG_SETTING_PLANE_SPEED_VALUE :1 / {COMMA} STR_CONFIG_SETTING_PLANE_CRASHES :Nombro da aviadilokraŝoj: {STRING} -STR_CONFIG_SETTING_PLANE_CRASHES_NONE :neniom +STR_CONFIG_SETTING_PLANE_CRASHES_NONE :neniu 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_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} @@ -1119,7 +1154,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 @@ -1141,6 +1175,11 @@ STR_CONFIG_SETTING_SCROLLWHEEL_ZOOM :Zomi mapon STR_CONFIG_SETTING_SCROLLWHEEL_SCROLL :Skroli mapon STR_CONFIG_SETTING_SCROLLWHEEL_OFF :Malaktiva STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER :Mapskrolrada rapido: {STRING} +STR_CONFIG_SETTING_OSK_ACTIVATION :Enekrana klavaro: {STRING} +STR_CONFIG_SETTING_OSK_ACTIVATION_DISABLED :Malaktiva +STR_CONFIG_SETTING_OSK_ACTIVATION_DOUBLE_CLICK :Duobla klako +STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK_FOCUS :Unuobla klako (kiam enfokusigita) +STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK :Unuobla klako (tuj) STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU :Imitado de dekstra klako: {STRING} STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Komando+Klako @@ -1149,20 +1188,17 @@ 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 :senagoj -STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_CONSTRUCTION :ĉiuj senkonstruaj agoj -STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_LANDSCAPING :ĉiuj krom landaspekto ŝanĝanta agoj +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_LOADING_INDICATORS :Uzu ŝarg-indikilojn: {STRING} @@ -1177,6 +1213,15 @@ STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :Montru rezervit STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :Lasu aktivaj la konstruilojn post uzado: {STRING} STR_CONFIG_SETTING_EXPENSES_LAYOUT :Grupigu elspezojn en kompania financfenestro: {STRING} +STR_CONFIG_SETTING_SOUND_NEWS :Ĵurnalo: {STRING} +STR_CONFIG_SETTING_SOUND_NEW_YEAR :Fine de la jaro: {STRING} +STR_CONFIG_SETTING_SOUND_CONFIRM :Konstruado: {STRING} +STR_CONFIG_SETTING_SOUND_DISASTER :Katastrofoj/akcidentoj: {STRING} +STR_CONFIG_SETTING_SOUND_DISASTER_HELPTEXT :Ludu sonefektoj de akcidentoj kaj katastrofoj +STR_CONFIG_SETTING_SOUND_VEHICLE :Veturiloj: {STRING} +STR_CONFIG_SETTING_SOUND_VEHICLE_HELPTEXT :Ludu sonefektoj de veturiloj +STR_CONFIG_SETTING_SOUND_AMBIENT :Ĉirkaŭaĵo: {STRING} +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} @@ -1189,6 +1234,10 @@ STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES :Malebligu strat STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT :Malebligu aviadilojn por la komputilo: {STRING} STR_CONFIG_SETTING_AI_BUILDS_SHIPS :Malebligu ŝipojn por la komputilo: {STRING} +STR_CONFIG_SETTING_AI_PROFILE :Defaŭlta agorda profilo: {STRING} +STR_CONFIG_SETTING_AI_PROFILE_EASY :Facila +STR_CONFIG_SETTING_AI_PROFILE_MEDIUM :Mezfacila +STR_CONFIG_SETTING_AI_PROFILE_HARD :Malfacila STR_CONFIG_SETTING_AI_IN_MULTIPLAYER :Permesu ArtefaritajnIntelektojn en pluropaj ludoj: {STRING} @@ -1233,8 +1282,8 @@ STR_CONFIG_SETTING_CYCLE_SIGNAL_PBS :Pad-signaloj so STR_CONFIG_SETTING_CYCLE_SIGNAL_ALL :ĉiom STR_CONFIG_SETTING_TOWN_LAYOUT :Strataranĝo por novaj urboj: {STRING} -STR_CONFIG_SETTING_TOWN_LAYOUT_DEFAULT :originale -STR_CONFIG_SETTING_TOWN_LAYOUT_BETTER_ROADS :pli bonaj stratoj +STR_CONFIG_SETTING_TOWN_LAYOUT_DEFAULT :Originale +STR_CONFIG_SETTING_TOWN_LAYOUT_BETTER_ROADS :Pli bonaj vojoj STR_CONFIG_SETTING_TOWN_LAYOUT_2X2_GRID :kvadrataro de 2x2 STR_CONFIG_SETTING_TOWN_LAYOUT_3X3_GRID :kvadrataro de 3x3 STR_CONFIG_SETTING_TOWN_LAYOUT_RANDOM :hazarda @@ -1242,14 +1291,14 @@ STR_CONFIG_SETTING_ALLOW_TOWN_ROADS :Permesu ke urbo STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :Urboj estas permesa konstrui traknivelajn pasejojn: {STRING} STR_CONFIG_SETTING_NOISE_LEVEL :Permesu urbe kontrolatan laŭtecon por flughavenoj: {STRING} STR_CONFIG_SETTING_TOWN_FOUNDING :Konstruanta urbojn en ludo: {STRING} -STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :prohibita -STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :permesita -STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :permesite, propra urbomapo +STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :malpermesita +STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :permesate +STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :permesate, kutimo urbomapo STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT :En ludo metanta de arbojn: {STRING} -STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NONE :neniu {RED}(rompas lignejo) -STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_RAINFOREST :nur en pluvarbaroj -STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_ALL :ĉie +STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NONE :neniu {RED}(rompas ligno muelilo) +STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_RAINFOREST :nur en tropika praarbaroj +STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_ALL :Ĉie STR_CONFIG_SETTING_TOOLBAR_POS :Loko de ĉefa ilbreto: {STRING} STR_CONFIG_SETTING_STATUSBAR_POS :Loko de kondiĉbaro: {STRING} @@ -1261,25 +1310,26 @@ 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} -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_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 @@ -1305,10 +1355,11 @@ STR_INTRO_SCENARIO_EDITOR :{BLACK}Scenarkr STR_INTRO_MULTIPLAYER :{BLACK}Pluraj Ludantoj STR_INTRO_GAME_OPTIONS :{BLACK}Ludaj Opcioj +STR_INTRO_HIGHSCORE :{BLACK}Altpoentara tabelo STR_INTRO_ADVANCED_SETTINGS :{BLACK}Avancitaj agordoj STR_INTRO_NEWGRF_SETTINGS :{BLACK}Agordoj de NewGRF STR_INTRO_ONLINE_CONTENT :{BLACK}Provu Enretan Enhavon -STR_INTRO_QUIT :{BLACK}Fermu +STR_INTRO_QUIT :{BLACK}Forlasi STR_INTRO_TOOLTIP_NEW_GAME :{BLACK}Starti novan ludon. Stir-Klak por preterpasi mapan agordon. STR_INTRO_TOOLTIP_LOAD_GAME :{BLACK}Ŝarĝu konservitan ludon @@ -1323,6 +1374,7 @@ STR_INTRO_TOOLTIP_SUB_TROPICAL_LANDSCAPE :{BLACK}Elektu ' STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Elektu 'ludlandan' landstilon 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_NEWGRF_SETTINGS :{BLACK}Montri NewGRF-agordojn STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Serĉi pri nova kaj ĝisdatigita enhavo por elŝuti @@ -1331,7 +1383,7 @@ STR_INTRO_TOOLTIP_QUIT :{BLACK}Fermu 'O STR_INTRO_TRANSLATION :{BLACK}Ĉi tiu traduko ne havas {NUM} teksto{P "" j}. Bonvolu helpu fari OpenTTD pli bona per estigi traduktiston. Vidi readme.txt por detaloj. # Quit window -STR_QUIT_CAPTION :{WHITE}Fermi +STR_QUIT_CAPTION :{WHITE}Forlasi STR_QUIT_ARE_YOU_SURE_YOU_WANT_TO_EXIT_OPENTTD :{YELLOW}Ĉu vi vere volas fermi la ludon kaj reiri al {STRING}? STR_QUIT_YES :{BLACK}Jes STR_QUIT_NO :{BLACK}Ne @@ -1410,6 +1462,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 @@ -1465,10 +1518,6 @@ STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}Ŝanĝi # Network server list STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}Pluraj ludantoj -STR_NETWORK_SERVER_LIST_CONNECTION :{BLACK}Konekto: -STR_NETWORK_SERVER_LIST_CONNECTION_TOOLTIP :{BLACK}Elektu inter interreta kaj lokareta ludo -STR_NETWORK_SERVER_LIST_LAN :Loka reto -STR_NETWORK_SERVER_LIST_INTERNET :Interreto STR_NETWORK_SERVER_LIST_PLAYER_NAME :{BLACK}Ludantnomo: STR_NETWORK_SERVER_LIST_ENTER_NAME_TOOLTIP :{BLACK}Ĉi tio estas la nomo per kiu la aliaj ekkonas vin @@ -1527,8 +1576,6 @@ STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP :{BLACK}La ludno STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}Agordu pasvorton STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Protektu vian ludon per pasvorto por ne publike atingebligi ĝin -STR_NETWORK_START_SERVER_LAN_INTERNET :Loka reto / Interreto -STR_NETWORK_START_SERVER_INTERNET_ADVERTISE :Interreto (reklamu) STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} kliento{P "" j} STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Klienta maksimumo: STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}Elektu klientan maksimumon. Ne ĉiuj lokoj estas plenigendaj @@ -1754,6 +1801,9 @@ STR_CONTENT_SELECT_ALL_CAPTION_TOOLTIP :{BLACK}Marki ĉ STR_CONTENT_SELECT_UPDATES_CAPTION :{BLACK}Elektu ĝisdatigojn. STR_CONTENT_UNSELECT_ALL_CAPTION :{BLACK}Malelekti ĉiujn STR_CONTENT_UNSELECT_ALL_CAPTION_TOOLTIP :{BLACK}Marki ĉiujn enhavojn neelŝutotan +STR_CONTENT_SEARCH_EXTERNAL :{BLACK}Serĉo eksteraj retejoj +STR_CONTENT_SEARCH_EXTERNAL_TOOLTIP :{BLACK} Serĉu enhavo ne estas disponebla en OpenTTD enhavon servon en retejoj ne asocias al OpenTTD +STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER_CAPTION :{WHITE}Vi forlase OpenTTD! STR_CONTENT_FILTER_TITLE :{BLACK}Etikeda/noma filtro: STR_CONTENT_DOWNLOAD_CAPTION :{BLACK}Elŝuti STR_CONTENT_DOWNLOAD_CAPTION_TOOLTIP :{BLACK}Komencu elŝuti la elektitan enhavon. @@ -1817,6 +1867,10 @@ STR_TRANSPARENT_STRUCTURES_TOOLTIP :{BLACK}Baskulig 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. +# Linkgraph legend window + +# Linkgraph legend window and linkgraph legend in smallmap + # Base for station construction window(s) STR_STATION_BUILD_COVERAGE_AREA_TITLE :{BLACK}Ŝarĝregiona marko STR_STATION_BUILD_COVERAGE_OFF :{BLACK}Malaktiva @@ -2172,7 +2226,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-2012 La teamo de OpenTTD +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2014 La teamo de OpenTTD # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Konservu Ludon @@ -2201,6 +2255,7 @@ STR_SAVELOAD_OSKTITLE :{BLACK}Entajpu # World generation STR_MAPGEN_WORLD_GENERATION_CAPTION :{WHITE}Mondgenerado STR_MAPGEN_MAPSIZE :{BLACK}Mapgrandeco: +STR_MAPGEN_MAPSIZE_TOOLTIP :{BLACK}Selektu la grandeco de la mapo en azuleĥoj. La nombro de disponeblaj azuleĥoj estos iom pli malgranda STR_MAPGEN_BY :{BLACK}* STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Kiom da urboj: STR_MAPGEN_DATE :{BLACK}Dato: @@ -2208,10 +2263,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: @@ -2238,7 +2289,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 @@ -2314,6 +2364,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 @@ -2368,6 +2422,7 @@ STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}Vi ŝan 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) +STR_NEWGRF_TOO_MANY_NEWGRFS :{WHITE}Ne eblas aldoni dosieron: NewGRF-a dosierlimo atingita STR_NEWGRF_COMPATIBLE_LOAD_WARNING :{WHITE}Taŭga(j) GRF(oj) ŝarĝiĝis por mankaj dosieroj STR_NEWGRF_DISABLED_WARNING :{WHITE}Manka(j) GRF-dosiero(j) malŝaltiĝis @@ -2391,6 +2446,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... @@ -2481,6 +2538,8 @@ STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}Servoj s 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. +# 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 @@ -2494,9 +2553,9 @@ 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) STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Akceptas STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Montri liston de akceptataj ŝarĝoj. @@ -2505,8 +2564,8 @@ STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}Akcepti STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Takso STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Montru stacian takson -STR_STATION_VIEW_CARGO_RATINGS_TITLE :{BLACK}Loka takso de transportservoj: -STR_STATION_VIEW_CARGO_RATING :{WHITE}{STRING}: {YELLOW}{STRING} ({COMMA}%) + + ############ range for rating starts STR_CARGO_RATING_APPALLING :Plorige @@ -2692,6 +2751,7 @@ STR_GROUP_CREATE_TOOLTIP :{BLACK}Klaku po 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 @@ -2979,6 +3039,11 @@ STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Prizorga STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Pliigu prizorgintervalon STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Malpliigu prizorgintervalon +STR_SERVICE_INTERVAL_DROPDOWN_TOOLTIP :{BLACK}Ŝanĝi la tipo de servon intervalon +STR_VEHICLE_DETAILS_DEFAULT :Defaŭlto +STR_VEHICLE_DETAILS_DAYS :Tagoj +STR_VEHICLE_DETAILS_PERCENT :Procentaĵo + STR_QUERY_RENAME_TRAIN_CAPTION :{WHITE}Nomu trajnon STR_QUERY_RENAME_ROAD_VEHICLE_CAPTION :{WHITE}Nomi stratveturilon STR_QUERY_RENAME_SHIP_CAPTION :{WHITE}Nomu ŝipon @@ -3183,7 +3248,7 @@ STR_TIMETABLE_TITLE :{WHITE}{VEHICLE STR_TIMETABLE_ORDER_VIEW :{BLACK}Ordonoj STR_TIMETABLE_ORDER_VIEW_TOOLTIP :{BLACK}Montri ordonvidujon. -STR_TIMETABLE_TOOLTIP :{BLACK}Horaro - Klaku ordonon por emfazi. +STR_TIMETABLE_TOOLTIP :{BLACK}Horaro - klaku ordonon por emfazi. STR_TIMETABLE_NO_TRAVEL :Neniu veturo STR_TIMETABLE_NOT_TIMETABLEABLE :Veturu (aŭtomata; horara ĝis sekvanta mana ordono) @@ -3204,7 +3269,6 @@ STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}Ĉi tiu STR_TIMETABLE_STATUS_START_AT :{BLACK}Ĉi tiu horaro komenciĝos je {STRING} STR_TIMETABLE_STARTING_DATE :{BLACK}Komencodato -STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Elekti daton por komenci ĉi tiun horaron. STR_TIMETABLE_CHANGE_TIME :{BLACK}Ŝanĝu tempon @@ -3235,11 +3299,11 @@ STR_DATE_YEAR_TOOLTIP :{BLACK}Elekti j # AI debug window -STR_AI_DEBUG :{WHITE}Sencimigo de la AI +STR_AI_DEBUG :{WHITE}AI/Ludo Skripto Sencimigo STR_AI_DEBUG_NAME_AND_VERSION :{BLACK}{STRING} (v{NUM}) -STR_AI_DEBUG_NAME_TOOLTIP :{BLACK}Nomo de la AI -STR_AI_DEBUG_SETTINGS :{BLACK}AI Agordoj -STR_AI_DEBUG_SETTINGS_TOOLTIP :{BLACK}Ŝanĝi agordojn de la AI +STR_AI_DEBUG_NAME_TOOLTIP :{BLACK}Nomo de la skripto +STR_AI_DEBUG_SETTINGS :{BLACK}Agordoj +STR_AI_DEBUG_SETTINGS_TOOLTIP :{BLACK}Ŝanĝi agordojn de la skripto STR_AI_DEBUG_RELOAD :{BLACK}Reŝarĝi AI-on STR_AI_DEBUG_RELOAD_TOOLTIP :{BLACK}Mortigi la AI-on, reŝarĝi la skripton, kaj restarti la AI-on STR_AI_DEBUG_BREAK_ON_LABEL :{BLACK}Rompu sur: @@ -3251,7 +3315,7 @@ STR_AI_DEBUG_SELECT_AI_TOOLTIP :{BLACK}Vidu for # AI configuration window -STR_AI_CONFIG_CAPTION :{WHITE}AI-agordo +STR_AI_CONFIG_CAPTION :{WHITE}AI/Ludo Skripto Agordo STR_AI_CONFIG_HUMAN_PLAYER :Homa ludanto STR_AI_CONFIG_RANDOM_AI :Hazarda AI @@ -3263,21 +3327,23 @@ STR_AI_CONFIG_MOVE_DOWN_TOOLTIP :{BLACK}Movi ele STR_AI_CONFIG_CHANGE_NONE : STR_AI_CONFIG_CONFIGURE :{BLACK}Agordi -STR_AI_CONFIG_CONFIGURE_TOOLTIP :{BLACK}Agordi parametroj de la AI +STR_AI_CONFIG_CONFIGURE_TOOLTIP :{BLACK}Agordi parametroj de la skripto # Available AIs window -STR_AI_LIST_TOOLTIP :{BLACK}Klaki por elekti AI +STR_AI_LIST_TOOLTIP :{BLACK}Klaki por elekti skripto STR_AI_LIST_AUTHOR :{LTBLUE}Aŭtoro: {ORANGE}{STRING} STR_AI_LIST_VERSION :{LTBLUE}Versio: {ORANGE}{NUM} STR_AI_LIST_URL :{LTBLUE}URL: {ORANGE}{STRING} STR_AI_LIST_ACCEPT :{BLACK}Akcepti -STR_AI_LIST_ACCEPT_TOOLTIP :{BLACK}Elekti emfazitan AI +STR_AI_LIST_ACCEPT_TOOLTIP :{BLACK}Elekti emfazita skripto STR_AI_LIST_CANCEL :{BLACK}Nuligi STR_AI_LIST_CANCEL_TOOLTIP :{BLACK}Ne ŝanĝu AI-on # AI Parameters +STR_AI_SETTINGS_CAPTION :{WHITE}{STRING} Parametroj +STR_AI_SETTINGS_CAPTION_AI :AI STR_AI_SETTINGS_CLOSE :{BLACK}Fermi STR_AI_SETTINGS_RESET :{BLACK}Reŝargo STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING} @@ -3299,6 +3365,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}Kosto: {CURRENCY_LONG} @@ -3307,6 +3375,10 @@ STR_INCOME_FLOAT_INCOME_SMALL :{TINY_FONT}{GRE STR_INCOME_FLOAT_INCOME :{GREEN}Enspezo: {CURRENCY_LONG} STR_FEEDER_TINY :{TINY_FONT}{YELLOW}Transigo: {CURRENCY_LONG} STR_FEEDER :{YELLOW}Transigo: {CURRENCY_LONG} +STR_FEEDER_INCOME_TINY :{TINY_FONT}{YELLOW}Tradona: {CURRENCY_LONG}{WHITE} / {GREEN}Revenuo: {CURRENCY_LONG} +STR_FEEDER_INCOME :{YELLOW}Tradona: {CURRENCY_LONG}{WHITE} / {GREEN}Revenuo: {CURRENCY_LONG} +STR_FEEDER_COST_TINY :{TINY_FONT}{YELLOW}Tradona: {CURRENCY_LONG}{WHITE} / {RED}Kosta: {CURRENCY_LONG} +STR_FEEDER_COST :{YELLOW}Tradona: {CURRENCY_LONG}{WHITE} / {RED}Kosto: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_COST :{WHITE}Atendata Kosto: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Atendata enspezo: {CURRENCY_LONG} @@ -3347,6 +3419,7 @@ STR_WARNING_HEIGHTMAP_SCALE_MESSAGE :{YELLOW}Ne reko STR_WARNING_FALLBACK_SOUNDSET :{WHITE}Sola bakupa sona aro estis trovata. Se vi bezonas sonojn, instalu sonan aron per la enhava elŝulta sistemo # Screenshot related messages +STR_WARNING_SCREENSHOT_SIZE_CAPTION :{WHITE}Grandega ekranfoto STR_MESSAGE_SCREENSHOT_SUCCESSFULLY :{WHITE}Ekranfoto sukcese konserviĝis kiel '{STRING}' STR_ERROR_SCREENSHOT_FAILED :{WHITE}Ekranfoto fiaskis! @@ -3370,6 +3443,7 @@ STR_ERROR_OWNED_BY :{WHITE}... pose STR_ERROR_AREA_IS_OWNED_BY_ANOTHER :{WHITE}... regiono estas posedata de alia kompanio STR_ERROR_TERRAFORM_LIMIT_REACHED :{WHITE}... landaspektan limigon plenumis STR_ERROR_CLEARING_LIMIT_REACHED :{WHITE}... kahelan forigantan limigon plenumis +STR_ERROR_TREE_PLANT_LIMIT_REACHED :{WHITE}... arbo planti limo atingita STR_ERROR_NAME_MUST_BE_UNIQUE :{WHITE}Nomo devas esti ununura STR_ERROR_GENERIC_OBJECT_IN_THE_WAY :{WHITE}{1:STRING} okupas la lokon STR_ERROR_NOT_ALLOWED_WHILE_PAUSED :{WHITE}Ne permesa dum paŭzo @@ -3378,6 +3452,7 @@ STR_ERROR_NOT_ALLOWED_WHILE_PAUSED :{WHITE}Ne perme STR_ERROR_LOCAL_AUTHORITY_REFUSES_TO_ALLOW_THIS :{WHITE}La loka estraro de {TOWN} rifuzas permesi ĉi tion STR_ERROR_LOCAL_AUTHORITY_REFUSES_AIRPORT :{WHITE}La lokaj estroj de {TOWN} rifuzas permesi konstruadon de plia flughaveno ĉi-urbe STR_ERROR_LOCAL_AUTHORITY_REFUSES_NOISE :{WHITE}{TOWN} lokestro ne permesas aerohavenon kaŭze de brugravecoj +STR_ERROR_BRIBE_FAILED :{WHITE}Via provita subaĉeto estis malkovrita de regiona esploristo # Levelling errors STR_ERROR_CAN_T_RAISE_LAND_HERE :{WHITE}Ne povas altigi landon ĉi tie... @@ -3429,7 +3504,8 @@ STR_ERROR_ONLY_ONE_ALLOWED_PER_TOWN :{WHITE}... nur STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS_WITH_POPULATION_OF_1200 :{WHITE}... nur konstruebla en urboj havantaj pli ol 1200 enloĝantojn STR_ERROR_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}... nur konstruebla en praarbaraj regionoj STR_ERROR_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}... konstruebla nur en dezertaj regionoj -STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}... konstruebla nur en urboj +STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}... konstruebla nur en urboj (anstataŭante domoj) +STR_ERROR_CAN_ONLY_BE_BUILT_NEAR_TOWN_CENTER :{WHITE}... konstruebla nur proksime la centro de urboj STR_ERROR_CAN_ONLY_BE_BUILT_IN_LOW_AREAS :{WHITE}... konstruebla nur en malaltaj regionoj STR_ERROR_CAN_ONLY_BE_POSITIONED :{WHITE}... lokebla nur ĉe la randoj de la mapo STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... arbaro nur planteblas super neĝa limlinio @@ -3507,7 +3583,7 @@ STR_ERROR_AIRCRAFT_MUST_BE_STOPPED_INSIDE_HANGAR :{WHITE}... deva STR_ERROR_TRAINS_CAN_ONLY_BE_ALTERED_INSIDE_A_DEPOT :{WHITE}Trajnoj povas esti ŝanĝitaj nur dum halto en garaĝo STR_ERROR_TRAIN_TOO_LONG :{WHITE}Trajno tro longas STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE :{WHITE}Ne povas inversigi direkton de veturilo... -STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE_MULTIPLE_UNITS :{WHITE}Ne povas turni veturilojn konsistantaj el pluraj unuoj +STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE_MULTIPLE_UNITS :{WHITE}... konsistantaj el pluraj unuoj STR_ERROR_INCOMPATIBLE_RAIL_TYPES :Neinterŝanĝeblaj reltipoj STR_ERROR_CAN_T_MOVE_VEHICLE :{WHITE}Ne povas movi veturilon @@ -3519,7 +3595,7 @@ STR_ERROR_DEPOT_WRONG_DEPOT_TYPE :Malĝusta gara # Autoreplace related errors STR_ERROR_TRAIN_TOO_LONG_AFTER_REPLACEMENT :{WHITE}{VEHICLE} tro longas post anstataŭado -STR_ERROR_AUTOREPLACE_NOTHING_TO_DO :{WHITE}Neniuj aŭtoanstataŭo/renovigo-reguloj aplikitaj. +STR_ERROR_AUTOREPLACE_NOTHING_TO_DO :{WHITE}Neniuj aŭtoanstataŭo/renovigo reguloj aplikitaj. STR_ERROR_AUTOREPLACE_MONEY_LIMIT :(monlimo) # Rail construction errors @@ -3653,6 +3729,7 @@ STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}Ne povas STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... veturilo estas detrua + # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Ne povas igi trajnon transiri signalon je danĝero... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Ne povas inversigi direkton de trajno... @@ -3679,6 +3756,7 @@ STR_ERROR_CAN_T_SHARE_ORDER_LIST :{WHITE}Ne povas STR_ERROR_CAN_T_STOP_SHARING_ORDER_LIST :{WHITE}Ne povas halti kunhavante ordonan registron... STR_ERROR_CAN_T_COPY_ORDER_LIST :{WHITE}Ne povas kopii ordonliston... STR_ERROR_TOO_FAR_FROM_PREVIOUS_DESTINATION :{WHITE}... tro for de la antaŭa destino +STR_ERROR_AIRCRAFT_NOT_ENOUGH_RANGE :{WHITE}... aviadilon ne havas sufiĉe da atingopovo # Timetable related errors STR_ERROR_CAN_T_TIMETABLE_VEHICLE :{WHITE}Ne povas fari katalogon por veturilo... @@ -3692,7 +3770,9 @@ STR_ERROR_CAN_T_CHANGE_SIGN_NAME :{WHITE}Ne povas STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}Ne eblas forigi signon... # Translatable comment for OpenTTD's desktop shortcut -STR_DESKTOP_SHORTCUT_COMMENT :Imitaĵo de Transport Tycoon Deluxe +STR_DESKTOP_SHORTCUT_COMMENT :Al simulado ludo bazita sur Transport Tycoon Deluxe + +# Translatable descriptions in media/baseset/*.ob* files ##id 0x2000 # Town building names @@ -3816,7 +3896,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) @@ -4025,7 +4105,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 @@ -4140,7 +4220,7 @@ 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_SPACE_STRING :{STRING} {STRING} +STR_JUST_STRING_STRING :{STRING}{STRING} STR_JUST_RAW_STRING :{STRING} # Slightly 'raw' stringcodes with colour or size @@ -4165,9 +4245,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 f11b9525c..a9b48cc13 100644 --- a/src/lang/estonian.txt +++ b/src/lang/estonian.txt @@ -256,31 +256,40 @@ STR_UNITS_POWER_IMPERIAL :{COMMA}hj STR_UNITS_POWER_METRIC :{COMMA}hj 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} tonn{P "" i} STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} tonn{P "" i} 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{P "" it} STR_UNITS_VOLUME_LONG_METRIC :{COMMA} liit{P er rit} 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} meeter +STR_UNITS_HEIGHT_METRIC :{COMMA} m STR_UNITS_HEIGHT_SI :{COMMA} m # Common window strings +STR_LIST_FILTER_TITLE :{BLACK}Filtri tekst: STR_LIST_FILTER_OSKTITLE :{BLACK}Sisesta filterkirjend STR_LIST_FILTER_TOOLTIP :{BLACK}Sisesta märksõna mida loendist otsida -STR_TOOLTIP_SORT_ORDER :{BLACK}Sorteerimise järjekorra valimine (kahanev/kasvav) -STR_TOOLTIP_SORT_CRITERIA :{BLACK}Sorteerimistingimuse valimine +STR_TOOLTIP_GROUP_ORDER :{BLACK}Vali rühmitamise järjestus +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}Sorteeri: +STR_BUTTON_SORT_BY :{BLACK}Järjekord: STR_BUTTON_LOCATION :{BLACK}Asukoht STR_BUTTON_RENAME :{BLACK}Nimevahetus @@ -288,7 +297,8 @@ STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Sulge ak STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Akna pealkiri. Liigutamiseks lohista seda hiirega. STR_TOOLTIP_SHADE :{BLACK}Akna peitmine - näidatakse ainult pealkirjariba STR_TOOLTIP_DEBUG :{BLACK}Näita NewGRF debug-i informatsiooni -STR_TOOLTIP_STICKY :{BLACK}Keela selle akna sulgemine 'Sulge kõik aknad' nupu klõpsamisel +STR_TOOLTIP_DEFSIZE :{BLACK}Taasta akna esialgne suurus. Ctrl+klõps muudab praeguse suuruse esialgseks +STR_TOOLTIP_STICKY :{BLACK}Märgib, et «Sulge kõik aknad» nupp seda akent ei sulge. «Ctrl+klõps» jätab suletamatuse vaikekäitumiseks STR_TOOLTIP_RESIZE :{BLACK}Klõpsa ja lohista, et akna suurust muuta STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Lülita aken suureks/väikseks STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Kerimisriba - kerib nimistut üles/alla @@ -296,7 +306,7 @@ STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}Kerimisr STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Ruudul asuvate hoonete jms. lammutamine. Ctrl valib ala diagonaalselt. Shift valib ehitamise/hinna kuvamise režiimi # Query window -STR_BUTTON_DEFAULT :{BLACK}Vaikimisi +STR_BUTTON_DEFAULT :{BLACK}Esialgne STR_BUTTON_CANCEL :{BLACK}Tühista STR_BUTTON_OK :{BLACK}OK @@ -312,7 +322,6 @@ STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}Pindala: # These are used in buttons -STR_SORT_BY_CAPTION_POPULATION :{BLACK}Rahvaarv STR_SORT_BY_CAPTION_NAME :{BLACK}Nimi STR_SORT_BY_CAPTION_DATE :{BLACK}Kuupäev # These are used in dropdowns @@ -330,84 +339,89 @@ STR_SORT_BY_MAX_SPEED :Tippkiirus STR_SORT_BY_MODEL :Mudel STR_SORT_BY_VALUE :Väärtus STR_SORT_BY_LENGTH :Pikkus -STR_SORT_BY_LIFE_TIME :Allesjäänud eluaeg +STR_SORT_BY_LIFE_TIME :Amortiseerumiseni STR_SORT_BY_TIMETABLE_DELAY :Hilinemine sõiduplaanis STR_SORT_BY_FACILITY :Jaama tüüp -STR_SORT_BY_WAITING :Ootava kauba väärtus +STR_SORT_BY_WAITING_TOTAL :Kaupa kokku +STR_SORT_BY_WAITING_AVAILABLE :Kaupa saadaval STR_SORT_BY_RATING_MAX :Kõrgeim kaubahinnang STR_SORT_BY_RATING_MIN :Madalaim kaubahinnang -STR_SORT_BY_ENGINE_ID :MootoriID (klassikaline) +STR_SORT_BY_ENGINE_ID :MootoriID (algne) 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 +STR_SORT_BY_RATING :Hinnang # Tooltips for the main toolbar -STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Seisata mäng -STR_TOOLBAR_TOOLTIP_FORWARD :{BLACK}Mängu aja kiirendamine -STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}Valikud -STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK}Mängu salvestamine/laadimine, mängust lahkumine, väljumine -STR_TOOLBAR_TOOLTIP_DISPLAY_MAP :{BLACK}Kuva kaart -STR_TOOLBAR_TOOLTIP_DISPLAY_TOWN_DIRECTORY :{BLACK}Kuva linnade nimistu -STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Kuva toetused -STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Kuvab ettevõtte jaamade nimistu -STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Kuva ettevõtte finantsolukord -STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Kuva üldine info ettevõtte kohta -STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Kuva graafikuid -STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Kuva ettevõtete edetabel -STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Rahasta uute ehitiste konstrueerimist -STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}Näita ettevõtte rongiloendit. Ctrl+klõpsu abil saab rühma või sõidukiloendi vahel lülitada. -STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}Kuva nimekiri ettevõtte mootorsõidukitest. Ctrl+klõpsu abil saab rühma või sõidukinimekirja vahel lülitada -STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_SHIPS :{BLACK}Kuva ettevõtte laevade nimistu. Ctrl+klõpsu abil saab rühma või sõidukiloendi vahel lülitada -STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_AIRCRAFT :{BLACK}Kuva nimekiri ettevõtte õhusõidukitest. Ctrl+klõpsu abil saab rühma või sõidukinimekirja vahel lülitada +STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Seiska mäng +STR_TOOLBAR_TOOLTIP_FORWARD :{BLACK}Kiirenda mängu +STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}Seadistus +STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK}Mängu salvestamine/jätkamine, mängust lahkumine, väljumine +STR_TOOLBAR_TOOLTIP_DISPLAY_MAP :{BLACK}Ava kaart, vaateaken või siltide loend +STR_TOOLBAR_TOOLTIP_DISPLAY_TOWN_DIRECTORY :{BLACK}Ava linnade register +STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Ava toetuste loend +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Avab ettevõtte jaamade registri +STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Ava ettevõtte rahavoogude aruanne +STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Ava ettevõtte ülevaade +STR_TOOLBAR_TOOLTIP_DISPLAY_STORY_BOOK :{BLACK}Näita juturaamatut +STR_TOOLBAR_TOOLTIP_DISPLAY_GOALS_LIST :{BLACK}Näita eesmärke +STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Ava graafik +STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Ava ettevõtete edetabel +STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Uue tööstuse rajamise rahastamine või tööstuste registri avamine +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}Ava ettevõtte rongide register. Rühma- ja sõidukiregistrit vahetatakse Ctrl+klõpsu abil +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}Ava ettevõtte mootorsõidukite register. Rühma- ja sõidukiregistrit vahetatakse Ctrl+klõpsu abil +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_SHIPS :{BLACK}Ava ettevõtte laevade register. Rühma- ja sõidukiregistrit vahetatakse Ctrl+klõpsu abil +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_AIRCRAFT :{BLACK}Ava ettevõtte õhusõidukite register. Rühma- ja sõidukiregistrit vahetatakse Ctrl+klõpsu abil STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_IN :{BLACK}Suurenda vaadet STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_OUT :{BLACK}Vähenda vaadet STR_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Ehita raudtee STR_TOOLBAR_TOOLTIP_BUILD_ROADS :{BLACK}Ehita maantee STR_TOOLBAR_TOOLTIP_BUILD_SHIP_DOCKS :{BLACK}Ehita laevakai STR_TOOLBAR_TOOLTIP_BUILD_AIRPORTS :{BLACK}Ehita lennuväli -STR_TOOLBAR_TOOLTIP_LANDSCAPING :{BLACK}Maastiku tööriistade avamine maa tõstmiseks/langetamiseks, puude istutamiseks, jne. +STR_TOOLBAR_TOOLTIP_LANDSCAPING :{BLACK}Ava riba maastikutarvikutega, millega saab maad tõsta/langetada, puid istutada, jne. STR_TOOLBAR_TOOLTIP_SHOW_SOUND_MUSIC_WINDOW :{BLACK}Näita heli/muusika akent -STR_TOOLBAR_TOOLTIP_SHOW_LAST_MESSAGE_NEWS :{BLACK}Näita viimast teadet, kuva teadete valikud +STR_TOOLBAR_TOOLTIP_SHOW_LAST_MESSAGE_NEWS :{BLACK}Näita viimast teadet, ava teadete seadistus STR_TOOLBAR_TOOLTIP_LAND_BLOCK_INFORMATION :{BLACK}Maa-ala andmed, konsool, skriptide debug, ekraanitõmmised, OpenTTDst -STR_TOOLBAR_TOOLTIP_SWITCH_TOOLBAR :{BLACK}Tööriistaribade vahetamine +STR_TOOLBAR_TOOLTIP_SWITCH_TOOLBAR :{BLACK}Vaheta tarvikuribad # 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 -STR_SCENEDIT_TOOLBAR_TOOLTIP_DISPLAY_MAP_TOWN_DIRECTORY :{BLACK}Kuva kaart, linnade nimistu -STR_SCENEDIT_TOOLBAR_LANDSCAPE_GENERATION :{BLACK}Maastiku loomine -STR_SCENEDIT_TOOLBAR_TOWN_GENERATION :{BLACK}Linnade loomine -STR_SCENEDIT_TOOLBAR_INDUSTRY_GENERATION :{BLACK}Tööstuste loomine +STR_SCENEDIT_TOOLBAR_TOOLTIP_DISPLAY_MAP_TOWN_DIRECTORY :{BLACK}Ava kaart, linnade register +STR_SCENEDIT_TOOLBAR_LANDSCAPE_GENERATION :{BLACK}Maastiku tekitamine +STR_SCENEDIT_TOOLBAR_TOWN_GENERATION :{BLACK}Linnade tekitamine +STR_SCENEDIT_TOOLBAR_INDUSTRY_GENERATION :{BLACK}Tööstuste tekitamine STR_SCENEDIT_TOOLBAR_ROAD_CONSTRUCTION :{BLACK}Maanteede ehitamine STR_SCENEDIT_TOOLBAR_PLANT_TREES :{BLACK}Istuta puid. Shift valib ehitamise/hinna kuvamise režiimi -STR_SCENEDIT_TOOLBAR_PLACE_SIGN :{BLACK}Sildi paigaldamine +STR_SCENEDIT_TOOLBAR_PLACE_SIGN :{BLACK}Paigalda silt STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}Paigalda objekt. Shift valib ehitamise/hinna kuvamise režiimi ############ range for SE file menu starts STR_SCENEDIT_FILE_MENU_SAVE_SCENARIO :Salvesta kaart STR_SCENEDIT_FILE_MENU_LOAD_SCENARIO :Laadi kaart STR_SCENEDIT_FILE_MENU_SAVE_HEIGHTMAP :Salvesta kõrguskaart -STR_SCENEDIT_FILE_MENU_LOAD_HEIGHTMAP :Lae kõrguskaart +STR_SCENEDIT_FILE_MENU_LOAD_HEIGHTMAP :Laadi kõrguskaart STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :Lahku redaktorist STR_SCENEDIT_FILE_MENU_SEPARATOR : STR_SCENEDIT_FILE_MENU_QUIT :Välju ############ range for SE file menu starts ############ range for settings menu starts -STR_SETTINGS_MENU_GAME_OPTIONS :Mängu valikud -STR_SETTINGS_MENU_CONFIG_SETTINGS :Täpsemad seaded +STR_SETTINGS_MENU_GAME_OPTIONS :Mängu seadistus +STR_SETTINGS_MENU_CONFIG_SETTINGS :Põhjalik seadistus STR_SETTINGS_MENU_SCRIPT_SETTINGS :Tehismõistuse / Mängu skriptide seaded -STR_SETTINGS_MENU_NEWGRF_SETTINGS :NewGRF seadistused -STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :Läbipaistvuse valikud +STR_SETTINGS_MENU_NEWGRF_SETTINGS :NewGRF-i seadistus +STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :Läbipaistvuse seadistus STR_SETTINGS_MENU_TOWN_NAMES_DISPLAYED :Näidatavad linnanimed STR_SETTINGS_MENU_STATION_NAMES_DISPLAYED :Näidatavad jaamanimed STR_SETTINGS_MENU_WAYPOINTS_DISPLAYED :Näidatavad meldepunktid @@ -420,26 +434,26 @@ STR_SETTINGS_MENU_TRANSPARENT_SIGNS :Läbipaistvad s ############ range ends here ############ range for file menu starts -STR_FILE_MENU_SAVE_GAME :Salvesta mäng -STR_FILE_MENU_LOAD_GAME :Laadi mäng +STR_FILE_MENU_SAVE_GAME :Mängu salvestamine +STR_FILE_MENU_LOAD_GAME :Mängu jätkamine STR_FILE_MENU_QUIT_GAME :Lahku mängust STR_FILE_MENU_SEPARATOR : STR_FILE_MENU_EXIT :Välju ############ range ends here -############ range for map menu starts +# map menu STR_MAP_MENU_MAP_OF_WORLD :Maailmakaart STR_MAP_MENU_EXTRA_VIEW_PORT :Lisa vaateaken -STR_MAP_MENU_SIGN_LIST :Siltide nimekiri -############ range for town menu starts, yet the town directory is shown in the map menu in the scenario editor -STR_TOWN_MENU_TOWN_DIRECTORY :Linnanimistu -############ end of the 'Display map' dropdown +STR_MAP_MENU_LINGRAPH_LEGEND :Kaubavoo legend +STR_MAP_MENU_SIGN_LIST :Siltide register + +############ range for town menu starts +STR_TOWN_MENU_TOWN_DIRECTORY :Linnade register STR_TOWN_MENU_FOUND_TOWN :Raja linn -############ end of the 'Town' dropdown +############ range ends here ############ range for subsidies menu starts STR_SUBSIDIES_MENU_SUBSIDIES :Toetused -STR_SUBSIDIES_MENU_GOAL :Praegused eesmärgid ############ range ends here ############ range for graph menu starts @@ -454,10 +468,12 @@ STR_GRAPH_MENU_CARGO_PAYMENT_RATES :Veotasude mää ############ range for company league menu starts STR_GRAPH_MENU_COMPANY_LEAGUE_TABLE :Ettevõtete edetabel STR_GRAPH_MENU_DETAILED_PERFORMANCE_RATING :Täpsustatud tulemushinnang +STR_GRAPH_MENU_HIGHSCORE :Punktitabel ############ range ends here ############ range for industry menu starts -STR_INDUSTRY_MENU_INDUSTRY_DIRECTORY :Tööstuste nimistu +STR_INDUSTRY_MENU_INDUSTRY_DIRECTORY :Tööstuste register +STR_INDUSTRY_MENU_INDUSTRY_CHAIN :Tööstuste ahel STR_INDUSTRY_MENU_FUND_NEW_INDUSTRY :Uue tööstuse rahastamine ############ range ends here @@ -484,7 +500,7 @@ STR_AIRCRAFT_MENU_AIRPORT_CONSTRUCTION :Lennuväljade e ############ range for landscaping menu starts STR_LANDSCAPING_MENU_LANDSCAPING :Maapinna kujundamine STR_LANDSCAPING_MENU_PLANT_TREES :Puude istutamine -STR_LANDSCAPING_MENU_PLACE_SIGN :Sildi paigaldamine +STR_LANDSCAPING_MENU_PLACE_SIGN :Paigalda silt ############ range ends here ############ range for music menu starts @@ -497,10 +513,10 @@ STR_NEWS_MENU_MESSAGE_HISTORY_MENU :Teadete ajalugu ############ range ends here ############ range for about menu starts -STR_ABOUT_MENU_LAND_BLOCK_INFO :Maaala andmed +STR_ABOUT_MENU_LAND_BLOCK_INFO :Maa-ala andmed STR_ABOUT_MENU_SEPARATOR : STR_ABOUT_MENU_TOGGLE_CONSOLE :Lülita konsool sisse/välja -STR_ABOUT_MENU_AI_DEBUG :Tehismõistuse / Mänguskriptide silumine +STR_ABOUT_MENU_AI_DEBUG :Arvutivea otsing STR_ABOUT_MENU_SCREENSHOT :Ekraanitõmmis STR_ABOUT_MENU_ZOOMIN_SCREENSHOT :Suurendatud ekraanitõmmis STR_ABOUT_MENU_DEFAULTZOOM_SCREENSHOT :Tavasuurendusega ekraanitõmmis @@ -511,7 +527,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. @@ -527,22 +543,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 @@ -694,7 +728,7 @@ STR_PLAYLIST_TOOLTIP_CLICK_TO_ADD_TRACK :{BLACK}Vajuta l STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}Vajuta laulule, et see eemaldada praegusest progammist (Custom1 või Custom2 ainult) # Highscore window -STR_HIGHSCORE_TOP_COMPANIES_WHO_REACHED :{BIG_FONT}{BLACK}Parimad ettevõtted, kes jõudsid tasemeni {NUM} +STR_HIGHSCORE_TOP_COMPANIES_WHO_REACHED :{BIG_FONT}{BLACK}Parimad ettevõtted aastal {NUM} STR_HIGHSCORE_TOP_COMPANIES_NETWORK_GAME :{BIG_FONT}{BLACK}Ettevõtete edetabelis {NUM} kohal STR_HIGHSCORE_POSITION :{BIG_FONT}{BLACK}{COMMA}. STR_HIGHSCORE_PERFORMANCE_TITLE_BUSINESSMAN :Ärimees @@ -704,28 +738,31 @@ STR_HIGHSCORE_PERFORMANCE_TITLE_CAPITALIST :Kapitalist STR_HIGHSCORE_PERFORMANCE_TITLE_MAGNATE :Magnaat STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL :Mogul STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY :Sajandi suurärimees -STR_HIGHSCORE_NAME :{BIG_FONT}{PRESIDENT_NAME}, {COMPANY} +STR_HIGHSCORE_NAME :{PRESIDENT_NAME}, {COMPANY} STR_HIGHSCORE_STATS :{BIG_FONT}'{STRING}' ({COMMA}) STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{BLACK}{COMPANY} saavutas '{STRING}' staatuse! STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{WHITE}{PRESIDENT_NAME} {COMPANY}'st saavutas '{STRING}' staatuse! # Smallmap window -STR_SMALLMAP_CAPTION :{WHITE}Kaart - {STRING} +STR_SMALLMAP_CAPTION :{WHITE}Kaart – {STRING} STR_SMALLMAP_TYPE_CONTOURS :maastik STR_SMALLMAP_TYPE_VEHICLES :sõidukid STR_SMALLMAP_TYPE_INDUSTRIES :tööstused +STR_SMALLMAP_TYPE_ROUTEMAP :kaubavoog STR_SMALLMAP_TYPE_ROUTES :kaubaliinid STR_SMALLMAP_TYPE_VEGETATION :taimestik STR_SMALLMAP_TYPE_OWNERS :omanikud STR_SMALLMAP_TOOLTIP_SHOW_LAND_CONTOURS_ON_MAP :{BLACK}Näitab kaardil maastikku STR_SMALLMAP_TOOLTIP_SHOW_VEHICLES_ON_MAP :{BLACK}Näita kaardil veovahendeid STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRIES_ON_MAP :{BLACK}Näita kaardil tööstuseid +STR_SMALLMAP_TOOLTIP_SHOW_LINK_STATS_ON_MAP :{BLACK}Näita kaardil kaubavoogusid STR_SMALLMAP_TOOLTIP_SHOW_TRANSPORT_ROUTES_ON :{BLACK}Näita kaardil veoliine STR_SMALLMAP_TOOLTIP_SHOW_VEGETATION_ON_MAP :{BLACK}Näita kaardil taimestikku STR_SMALLMAP_TOOLTIP_SHOW_LAND_OWNERS_ON_MAP :{BLACK}Näita kaardil maaomanikke STR_SMALLMAP_TOOLTIP_INDUSTRY_SELECTION :{BLACK}Klõps tööstuse tüübil lülitab sisse/välja selle kuvamise. Ctrl+klõps lülitab välja kõik tüübid peale valitu. Teistkordne Ctrl+klõps lülitab sisse kõik tööstuse tüübid STR_SMALLMAP_TOOLTIP_COMPANY_SELECTION :{BLACK}Klõpsa ettevõttel, et tema varade kuvamine sisse/välja lülitada. Ctrl+klõps eemaldab valikust kõik teised ettevõtted. Teiskordne Ctrl+klõps valib välja kõik ettevõtted +STR_SMALLMAP_TOOLTIP_CARGO_SELECTION :{BLACK}Kaubale klõpsamine vahetab selle omaduse näitamist. Kõik teised kaubad keelatakse CTRL-klõpsuga. Kõik kaubad lubatakse järgmise CTRL-klõpsuga STR_SMALLMAP_LEGENDA_ROADS :{TINY_FONT}{BLACK}Sõiduteed STR_SMALLMAP_LEGENDA_RAILROADS :{TINY_FONT}{BLACK}Rööbasteed @@ -759,6 +796,7 @@ STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLA STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Linnanimede sisse- ja välja lülitamine STR_SMALLMAP_CENTER :{BLACK}Näita väikekaardil praegust asukohta 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}Kõik välja @@ -769,6 +807,8 @@ STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES :{BLACK}Kaardil STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}Kõrguskaardi näitamise vahetamine STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES :{BLACK}Ära ettevõtte varasid kaardil kuva STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}Kuva kaardil kõik ettevõtte varad +STR_SMALLMAP_TOOLTIP_DISABLE_ALL_CARGOS :{BLACK}Ära kaardil kaupu näita +STR_SMALLMAP_TOOLTIP_ENABLE_ALL_CARGOS :{BLACK}Näita kaardil kõiki kaupu # Status bar messages STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Näita viimast teadet @@ -845,13 +885,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 -STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}Sõidukil {VEHICLE} on plaanis liiga vähe käske -STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}Sõidukil {VEHICLE} on tühistatud käsk -STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}Sõidukil {VEHICLE} on topeltkäske -STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}Sõiduki {VEHICLE} käskudes on väär jaam -# end of order system +# 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 +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 @@ -893,7 +932,7 @@ STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}Kleebi v STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}Vaateala koha võtmine peamiseks vaateks # Game options window -STR_GAME_OPTIONS_CAPTION :{WHITE}Mängu valikud +STR_GAME_OPTIONS_CAPTION :{WHITE}Liidese seadistus STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Valuuta STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Valuuta valimine @@ -930,15 +969,12 @@ STR_GAME_OPTIONS_CURRENCY_LTL :Leedu litt (LTL STR_GAME_OPTIONS_CURRENCY_KRW :Lõuna-Korea vonn (KRW) STR_GAME_OPTIONS_CURRENCY_ZAR :Lõuna-Aafrika rand (ZAR) STR_GAME_OPTIONS_CURRENCY_CUSTOM :Omatehtud... +STR_GAME_OPTIONS_CURRENCY_GEL :Gruusia lari (GEL) +STR_GAME_OPTIONS_CURRENCY_IRR :Iraani rial (IRR) ############ end of currency region -STR_GAME_OPTIONS_MEASURING_UNITS_FRAME :{BLACK}Mõõtühikud -STR_GAME_OPTIONS_MEASURING_UNITS_DROPDOWN_TOOLTIP :{BLACK}Mõõtühikute valik ############ start of measuring units region -STR_GAME_OPTIONS_MEASURING_UNITS_IMPERIAL :Mittemeetriline -STR_GAME_OPTIONS_MEASURING_UNITS_METRIC :Meetriline -STR_GAME_OPTIONS_MEASURING_UNITS_SI :SI ############ end of measuring units region STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Sõidukid @@ -973,17 +1009,19 @@ STR_GAME_OPTIONS_TOWN_NAME_ITALIAN :Itaalia STR_GAME_OPTIONS_TOWN_NAME_CATALAN :Katalaani ############ end of townname region -STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Automaatne salvestus +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}Vali kasutajaliideses kasutatav keel +STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Valib kasutajaliideses kasutatava keele STR_GAME_OPTIONS_FULLSCREEN :{BLACK}Täisekraan STR_GAME_OPTIONS_FULLSCREEN_TOOLTIP :{BLACK}Märgi see kast, et OpenTTD täisekraanirežiimis mängida @@ -992,23 +1030,21 @@ 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_BASE_GRF :{BLACK}Põhigraafikakomplekt -STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Valige kasutatav põhigraafikakomplekt +STR_GAME_OPTIONS_BASE_GRF :{BLACK}Alusgraafika kogu +STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Valib kasutatava alusgraafika kogu STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} puuduv{P "" ad}/viga{P ne sed} fail{P "" id} -STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Lisaandmed põhigraafikakomplekti kohta +STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Lisateave alusgraafika kogu kohta -STR_GAME_OPTIONS_BASE_SFX :{BLACK}Põhihelikomplekt -STR_GAME_OPTIONS_BASE_SFX_TOOLTIP :{BLACK}Vali kasutatavad põhihelid -STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}Täiendav teave põhihelikomplekti kohta +STR_GAME_OPTIONS_BASE_SFX :{BLACK}Alushelide kogu +STR_GAME_OPTIONS_BASE_SFX_TOOLTIP :{BLACK}Valib kasutatava põhihelide kogu +STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}Lisateave alushelide kogu kohta -STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Põhimuusikakomplekt -STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Vali kasutatav põhimuusikakomplekt +STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Alusmuusika kogu +STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Valib alusmuusikamuusika kogu STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} viga{P "ne" "sed"} fail{P "" "id"} -STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Lisateave põhimuusikakomplekti kohta +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 @@ -1029,7 +1065,7 @@ STR_CURRENCY_SET_CUSTOM_CURRENCY_SUFFIX_TOOLTIP :{BLACK}Määra STR_CURRENCY_SWITCH_TO_EURO :{LTBLUE}Mine eurole: {ORANGE}{NUM} STR_CURRENCY_SWITCH_TO_EURO_NEVER :{LTBLUE}Mine eurole: {ORANGE}Mitte kunagi -STR_CURRENCY_SET_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Määra eurole minemise aasta +STR_CURRENCY_SET_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Määra eurole ülemineku aasta STR_CURRENCY_DECREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Mine eurole varem STR_CURRENCY_INCREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Mine eurole hiljem @@ -1037,17 +1073,17 @@ 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 piirmäär: {ORANGE}{COMMA} +STR_DIFFICULTY_LEVEL_SETTING_MAXIMUM_NO_COMPETITORS :{LTBLUE}Vastaseid kuni: {ORANGE}{COMMA} STR_NONE :Pole -STR_FUNDING_ONLY :Ainult rahastamine -STR_MINIMAL :Minimaalne +STR_FUNDING_ONLY :Ainult rahastatud +STR_MINIMAL :Vähene STR_NUM_VERY_LOW :Väga madal STR_NUM_LOW :Madal STR_NUM_NORMAL :Harilik STR_NUM_HIGH :Kõrge -STR_NUM_CUSTOM :Omatehtud -STR_NUM_CUSTOM_NUMBER :Kohandatud ({NUM}) +STR_NUM_CUSTOM :Oma +STR_NUM_CUSTOM_NUMBER :Oma ({NUM}) STR_VARIETY_NONE :Pole STR_VARIETY_VERY_LOW :Väga madal @@ -1074,9 +1110,9 @@ STR_RIVERS_FEW :Vähe STR_RIVERS_MODERATE :Keskmiselt STR_RIVERS_LOT :Palju -STR_DISASTER_NONE :Puudub -STR_DISASTER_REDUCED :Vähendatud -STR_DISASTER_NORMAL :Harilik +STR_DISASTER_NONE :Ei +STR_DISASTER_REDUCED :Vähem +STR_DISASTER_NORMAL :Keskmiselt STR_SUBSIDY_X1_5 :1,5x STR_SUBSIDY_X2 :2x @@ -1095,24 +1131,47 @@ 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}Täpsemad seaded +STR_CONFIG_SETTING_CAPTION :{WHITE}Põhjalik seadistus +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 STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT :(seletus puudub) STR_CONFIG_SETTING_DEFAULT_VALUE :{LTBLUE}Vaikeväärtus: {ORANGE}{STRING} - - +STR_CONFIG_SETTING_TYPE :{LTBLUE}Seade rühm: {ORANGE}{STRING} +STR_CONFIG_SETTING_TYPE_CLIENT :Kliendi seade (ei salvestu koos mänguga; mõjutab kõiki mänge) +STR_CONFIG_SETTING_TYPE_GAME_MENU :Mängu seade (salvestub koos mänguga; mõjutab ainult uusi mänge) +STR_CONFIG_SETTING_TYPE_GAME_INGAME :Mängu seaded (hoitakse salvestuses; mõjutab ainult praegust mängu) +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_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 seaded +STR_CONFIG_SETTING_RESTRICT_ADVANCED :Täpsemad seaded +STR_CONFIG_SETTING_RESTRICT_ALL :Eksperdi seaded / kõik seaded +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 + +STR_CONFIG_SETTING_TYPE_DROPDOWN_HELPTEXT :{BLACK}Piirab allolevat nimekirja valitud sätte tüübi järgi STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :Kõik seadistused +STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :Kliendi seade (ei salvestu koos mänguga; mõjutab kõiki mänge) STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Mängu seaded (hoitakse salvestuses; mõjutab ainult uusi mänge) 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 STR_CONFIG_SETTING_DISABLED :väljas STR_CONFIG_SETTING_COMPANIES_OFF :Väljas -STR_CONFIG_SETTING_COMPANIES_OWN :Oma ettevõte -STR_CONFIG_SETTING_COMPANIES_ALL :Kõik ettevõtted +STR_CONFIG_SETTING_COMPANIES_OWN :Oma ettevõttel +STR_CONFIG_SETTING_COMPANIES_ALL :Igal ettevõttel STR_CONFIG_SETTING_NONE :Pole STR_CONFIG_SETTING_ORIGINAL :Originaal @@ -1122,18 +1181,38 @@ STR_CONFIG_SETTING_HORIZONTAL_POS_LEFT :Vasakul STR_CONFIG_SETTING_HORIZONTAL_POS_CENTER :Keskel STR_CONFIG_SETTING_HORIZONTAL_POS_RIGHT :Paremal +STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN :Stardilaenu ülempiir: {STRING} +STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Suurim summa, mida ettevõte saab laenata (arvestamata inflatsiooni) +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äärab sõidukite ja taristu hooldus- ja käituskulude hinnataseme +STR_CONFIG_SETTING_CONSTRUCTION_SPEED :Ehitustempo: {STRING} +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ää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 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_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} STR_CONFIG_SETTING_CATCHMENT_HELPTEXT :Erineva suurusega püüdmisala erinevat tüüpi jaamadele ja lennujaamadele. STR_CONFIG_SETTING_EXTRADYNAMITE :Linnateede, -sildade, -tunnelite jne lammutamine: {STRING} -STR_CONFIG_SETTING_EXTRADYNAMITE_HELPTEXT :Tee linnale kuuluva infrastruktuuri ja majade eemaldamine lihtsamaks -STR_CONFIG_SETTING_TRAIN_LENGTH :Suurim rongipikkus: {STRING} -STR_CONFIG_SETTING_TRAIN_LENGTH_HELPTEXT :Määra suurim rongipikkus -STR_CONFIG_SETTING_TILE_LENGTH :{COMMA} plaat{P 0 "" s} +STR_CONFIG_SETTING_EXTRADYNAMITE_HELPTEXT :Lihtsusta linnale kuuluva taristu ja majade eemaldamist +STR_CONFIG_SETTING_TRAIN_LENGTH :Rongi pikkuse ülempiir: {STRING} +STR_CONFIG_SETTING_TRAIN_LENGTH_HELPTEXT :Määrab rongide pikkuse ülempiiri +STR_CONFIG_SETTING_TILE_LENGTH :{COMMA} ruut{P 0 "" u} STR_CONFIG_SETTING_SMOKE_AMOUNT :Vedurisuitsu ja -sädemete hulk: {STRING} STR_CONFIG_SETTING_SMOKE_AMOUNT_HELPTEXT :Määra kui palju suitsu või sädemeid eraldub sõidukist STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL :Rongide kiirendusmudel: {STRING} @@ -1146,102 +1225,123 @@ STR_CONFIG_SETTING_PERCENTAGE :{COMMA}% STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS :Kaldus ruudu kalle sõidukitele: {STRING} STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS_HELPTEXT :Kaldus ruudu kalle sõidukitele. Mida kõrgem on valik seda raskem on mäest ronida STR_CONFIG_SETTING_FORBID_90_DEG :Rongidel ja laevadel keelatakse 90 kraadised pöörded: {STRING} -STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :90 kraadine pööre ilmub kui horisontaalne rööbastee järgneb kohe vertikaalse rööbastee tükkile, seega peab rong tegema 90 kraadise pöörde tavalise 45 kraadise pöörde asemel. See lisandub ka laevade pöörderaadiusele! +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_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_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 :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 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} STR_CONFIG_SETTING_MULTIPINDTOWN_HELPTEXT :Tavaliselt, linn ei taha rohkem kui ühte tööstustharu igast tüübist. See seade lubab rohkem kui ühe tööstusharu samasse linna -STR_CONFIG_SETTING_SIGNALSIDE :Näita foore: {STRING} -STR_CONFIG_SETTING_SIGNALSIDE_HELPTEXT :Märgi kuhu poole rada asetada foore -STR_CONFIG_SETTING_SIGNALSIDE_LEFT :Vasakule -STR_CONFIG_SETTING_SIGNALSIDE_DRIVING_SIDE :Vastavalt sõidusuunale -STR_CONFIG_SETTING_SIGNALSIDE_RIGHT :Paremale -STR_CONFIG_SETTING_SHOWFINANCES :Aastalõpu rahavoogude aruanne: {STRING} -STR_CONFIG_SETTING_SHOWFINANCES_HELPTEXT :Kui lubatud, siis ilmub finantside aken iga aasta lõpus lubades lihtsalt jälgida oma ettevõtte staatust -STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :Uued sihtpunktid on vaikimisi 'peatusteta': {STRING} -STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT_HELPTEXT :Tavaliselt, peatub sõiduk igas peatuses mida ta läbib. Lubades seda seadet sõidab sõiduk peatumata läbi jaamade viimasesse sihtkohta. NB! See seade määrab ainult vaikimisi määratud väärtusi uutele käskutele. Individuaalseid käske saab lisada nii või naa -STR_CONFIG_SETTING_STOP_LOCATION :Vaikimisi platvormiosa peatumiseks uute rongikäskudega: {STRING} -STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :Koht jaamas kus rong peatub vaikimisi. 'Lõpu lähedal' tähendab sisenemis koha lähistel. 'Keskel' tähendab keset jaama platvormi. 'Kaugel lõpus' tähendab kaugel sisenemis kohast. NB! See seade paneb paika vaikimisi kus peatuda, seda saab käskudes individuaalselt muuta! +STR_CONFIG_SETTING_SIGNALSIDE :Signaalid on: {STRING} +STR_CONFIG_SETTING_SIGNALSIDE_HELPTEXT :Vali, kus pool rada signaalid asuvad +STR_CONFIG_SETTING_SIGNALSIDE_LEFT :Vasakul +STR_CONFIG_SETTING_SIGNALSIDE_DRIVING_SIDE :Sõltuvalt suunast +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 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 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 kerimine osutiga ekraaniserva puudutamisel: {STRING} +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 +STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT_FULLSCREEN :Peamine vaateaken, ainult täisekraan +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 võrgumängus kanda raha erinevate ettevõtete vahel +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} STR_CONFIG_SETTING_FREIGHT_TRAINS_HELPTEXT :Seadke kaupa vedavate rongide mõju. Suurem väärtus muudab kauba vedamise rongide jaoks raskemaks, eriti mägedes STR_CONFIG_SETTING_PLANE_SPEED :Kiiruse tegur lennukitele: {STRING} STR_CONFIG_SETTING_PLANE_SPEED_HELPTEXT :Määra suhteline kiirus lennukitele võrreldes teiste sõiduki tüüpidega, et vähendada lennukite sissetulekut STR_CONFIG_SETTING_PLANE_SPEED_VALUE :1 / {COMMA} -STR_CONFIG_SETTING_PLANE_CRASHES :Lennuõnnetuste hulk: {STRING} -STR_CONFIG_SETTING_PLANE_CRASHES_HELPTEXT :Võimalus kui tihti lennuõnnetus võib juhtuda -STR_CONFIG_SETTING_PLANE_CRASHES_NONE :puuduvad -STR_CONFIG_SETTING_PLANE_CRASHES_REDUCED :vähendatud -STR_CONFIG_SETTING_PLANE_CRASHES_NORMAL :tavaline +STR_CONFIG_SETTING_PLANE_CRASHES :Lennuõnnetusi: {STRING} +STR_CONFIG_SETTING_PLANE_CRASHES_HELPTEXT :Määrab lennuõnnetuse toimumise tõenäosuse +STR_CONFIG_SETTING_PLANE_CRASHES_NONE :Ei +STR_CONFIG_SETTING_PLANE_CRASHES_REDUCED :Vähem +STR_CONFIG_SETTING_PLANE_CRASHES_NORMAL :Keskmiselt STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Läbisõidupeatused linnateedel: {STRING} -STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :Luba ehitada läbi sõidu peatused linna omandis teedele +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 :Luba ehitada läbi sõidu peatused teiste ettevõtete teedele -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_STOP_ON_COMPETITOR_ROAD_HELPTEXT :Lubab teisele ettevõttele kuulaval teel ehitada läbisõidupeatuseid STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}Sõidukite olemasolul ei saa seda seadet muuta -STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :Infrastruktuuri korrashoid: {STRING} +STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :Taristu hooldamine: {STRING} +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 STR_CONFIG_SETTING_WARN_LOST_VEHICLE :Hoiata kui sõiduk on eksinud: {STRING} -STR_CONFIG_SETTING_ORDER_REVIEW :Sõidukite sihtpunktide ülevaade: {STRING} -STR_CONFIG_SETTING_ORDER_REVIEW_OFF :ei -STR_CONFIG_SETTING_ORDER_REVIEW_EXDEPOT :jah, kuid jäta välja seisatud veovahendid -STR_CONFIG_SETTING_ORDER_REVIEW_ON :kõikidest veovahenditest +STR_CONFIG_SETTING_WARN_LOST_VEHICLE_HELPTEXT :Tekita teateid kui sõidukid ei suuda leida teekonda nendele määratud sihtkohani +STR_CONFIG_SETTING_ORDER_REVIEW :Sõiduki ülesannete ülevaade: {STRING} +STR_CONFIG_SETTING_ORDER_REVIEW_HELPTEXT :Kui on aktiveeritud, siis kontrollitakse perioodiliselt sõidukitele antud käsklusi ja leitud vead raporteeritakse uudistena +STR_CONFIG_SETTING_ORDER_REVIEW_OFF :Ei +STR_CONFIG_SETTING_ORDER_REVIEW_EXDEPOT :Jah, kuid jäta välja seisatud veovahendid +STR_CONFIG_SETTING_ORDER_REVIEW_ON :Kõikidest veovahenditest STR_CONFIG_SETTING_WARN_INCOME_LESS :Hoiata kui rongi sissetulek on negatiivne: {STRING} +STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :Kui on aktiveeritud, siis teavitatakse mängijat sõidukitest mis ei ole viimase aasta jooksul suutnud kasumit teenida STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Sõidukid ei aegu: {STRING} +STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :Kui on aktiveeritud, siis jäävad kõik sõidukite tüübid igavesti avatuks STR_CONFIG_SETTING_AUTORENEW_VEHICLE :Vananenud sõidukite uuendamine: {STRING} +STR_CONFIG_SETTING_AUTORENEW_VEHICLE_HELPTEXT :Kui on sisse lülitatud, siis uuendatalse kõik kasutusaja lõpu lähedal olevad sõidukid automaatselt, järgides uuendamise tingimusi +STR_CONFIG_SETTING_AUTORENEW_MONTHS :Automaatne sõiduki uuendamine kui sõduk on {STRING} maksimaalse vanuse +STR_CONFIG_SETTING_AUTORENEW_MONTHS_HELPTEXT :Relatiivne sõiduki iga mille järel on peaks sõiduk saama automaatselt uuendatud +STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_BEFORE :{COMMA} kuu{P 0 "" d} enne +STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_AFTER :{COMMA} kuu{P 0 "" d} pärast STR_CONFIG_SETTING_AUTORENEW_MONEY :Nõutud rahasumma uuendamiseks: {STRING} -STR_CONFIG_SETTING_POPULATION_IN_LABEL :Rahvaarv alevike nimesiltidel: {STRING} -STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :Graafiku joonte paksus: {STRING} - -STR_CONFIG_SETTING_LAND_GENERATOR :Maaala Generaator: {STRING} +STR_CONFIG_SETTING_AUTORENEW_MONEY_HELPTEXT :Pangakontol oleva raha alammäär sõidukite uuendamiseks +STR_CONFIG_SETTING_ERRMSG_DURATION :Veateadete kestvus: {STRING} +STR_CONFIG_SETTING_ERRMSG_DURATION_HELPTEXT :Punases aknas olevate veateadete näitamise kestvus. On ka mõned (tähtsad) veateated, mis ise ei sulgu, vaid mis tuleb käsitsi sulgeda +STR_CONFIG_SETTING_ERRMSG_DURATION_VALUE :{COMMA} sekund{P 0 "" it} +STR_CONFIG_SETTING_HOVER_DELAY :Vihjeid näidatakse pärast: {STRING} +STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Viivitus, kui kaua peab hiirega liidese osale osutama, enne kui selle kohta vihjet näidatakse. On ka võimalik vihjeid parema hiireklõpsuga näidata +STR_CONFIG_SETTING_HOVER_DELAY_VALUE :{COMMA} sekundilist osutamist +STR_CONFIG_SETTING_HOVER_DELAY_DISABLED :Paremklõpsu +STR_CONFIG_SETTING_POPULATION_IN_LABEL :Linna rahvaarv nimesildil: {STRING} +STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :Näitab linna nimesildil rahvaarvu +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_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_ROUGHNESS_OF_TERRAIN :Maa mägisus (TerraGenesis ainult) : {STRING} -STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Väga sile -STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :Sile -STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :Mägine -STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :Väga mägine +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Maastiku järskus (ainult TerraGenesis) : {STRING} +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_TREE_PLACER :Puuasetusalgoritm: {STRING} STR_CONFIG_SETTING_TREE_PLACER_NONE :Pole STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :Algupärane @@ -1250,154 +1350,267 @@ STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Kõrgustekaardi 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 +STR_CONFIG_SETTING_STATION_SPREAD :Jaama küljepikkuse ülempiir: {STRING} +STR_CONFIG_SETTING_STATION_SPREAD_HELPTEXT :Jaama ühe külje pikkuse ülempiir. Suur väärtus teeb mängu aeglaseks STR_CONFIG_SETTING_SERVICEATHELIPAD :Automaatne helikopterihooldus maandumisplatsidel: {STRING} -STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR :Maastiku-, ning raudtee/tee/vee/lennujaamade tööriistaribade seostamine: {STRING} -STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR :Väikekaardi maa värv: {STRING} +STR_CONFIG_SETTING_SERVICEATHELIPAD_HELPTEXT :Hoolda helikoptereid peale igat maandumist, isegi kui lennujaamas pole depood +STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR :Maastikuriba sidumine rööbas-, maa-, vee- ja lennuväljaribadega: {STRING} +STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR_HELPTEXT :Kui avatakse mingi transpordiliigi ehitamise menüü, siis ava ka maastiku muutmise menüü +STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR :Maa värv väikesel kaardil: {STRING} +STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :Maa värv väikesel kaardil STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :Roheline STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :Tumeroheline STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Violetne -STR_CONFIG_SETTING_REVERSE_SCROLLING :Vaate kerimine vastassuunas: {STRING} -STR_CONFIG_SETTING_SMOOTH_SCROLLING :Vaatevälja liigutatakse sujuvalt: {STRING} -STR_CONFIG_SETTING_MEASURE_TOOLTIP :Mõõtspikker teatud ehitusvahendite kasutamisel: {STRING} +STR_CONFIG_SETTING_REVERSE_SCROLLING :Vaade liigub vastassuunas: {STRING} +STR_CONFIG_SETTING_REVERSE_SCROLLING_HELPTEXT :Vaate liigutamine parema hiireklahviga. Kui see on välja lülitatud, siis hiireosuti juhib vaatepunkti. Kui sisse, siis kaarti +STR_CONFIG_SETTING_SMOOTH_SCROLLING :Vaade keskendatakse sujuvalt: {STRING} +STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Vaateakna asukohale keskendamise viis, kui vajutatakse väikesele kaardile, või kui vaade keskendatakse mõnele rekvisiidile. Sisse lülitades on liikumine sujuv, välja lülitades läheb vaade kohe sihtpunkti +STR_CONFIG_SETTING_MEASURE_TOOLTIP :Ehitamisel mõõtude arvesti näitamine: {STRING} +STR_CONFIG_SETTING_MEASURE_TOOLTIP_HELPTEXT :Näitab ehitamise ajal kahe ruudu kaugus- ja kõrgusvahemikke STR_CONFIG_SETTING_LIVERIES :Ettevõtte värve näidatakse: {STRING} +STR_CONFIG_SETTING_LIVERIES_HELPTEXT :Vali, kas sõiduki värv sõltub sõiduki liigist või ettevõttest STR_CONFIG_SETTING_LIVERIES_NONE :Mitte ühelgi -STR_CONFIG_SETTING_LIVERIES_OWN :Oma ettevõtel +STR_CONFIG_SETTING_LIVERIES_OWN :Oma ettevõttel STR_CONFIG_SETTING_LIVERIES_ALL :Igal ettevõttel -STR_CONFIG_SETTING_PREFER_TEAMCHAT : vajutades meeskonnavestluse eelistamine: {STRING} -STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING :Kerimisrulliku otstarve: {STRING} +STR_CONFIG_SETTING_PREFER_TEAMCHAT :«ENTER» avab meeskonnavestluse: {STRING} +STR_CONFIG_SETTING_PREFER_TEAMCHAT_HELPTEXT :Vahetab «ENTER» ja «Ctrl+ENTER» klahvidega ettevõttesisese ja avaliku vestluse avamise +STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING :Hiirerulli otstarve: {STRING} +STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING_HELPTEXT :Võimaldab vaadet liigutada kahesuunalise hiirerulliga STR_CONFIG_SETTING_SCROLLWHEEL_ZOOM :Kaardi suurendamine -STR_CONFIG_SETTING_SCROLLWHEEL_SCROLL :Kaardi kerimine +STR_CONFIG_SETTING_SCROLLWHEEL_SCROLL :Kaardil liikumine STR_CONFIG_SETTING_SCROLLWHEEL_OFF :Väljas -STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER :Kaardi kerimisrulliku kiirus: {STRING} +STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER :Hiirerulli tundlikkus: {STRING} +STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER_HELPTEXT :Muudab hiirerulli tundlikkust +STR_CONFIG_SETTING_OSK_ACTIVATION :Klaviatuuri näitamine ekraanil: {STRING} +STR_CONFIG_SETTING_OSK_ACTIVATION_HELPTEXT :Ekraaniklaviatuuri avamise viis. Ekraaniklaviatuur võimaldab teksti sisestamist ainult hiireosutiga. See on mõeldud kasutamiseks väikeste seadmetega, millel ei ole klaviatuuri +STR_CONFIG_SETTING_OSK_ACTIVATION_DISABLED :Väljas +STR_CONFIG_SETTING_OSK_ACTIVATION_DOUBLE_CLICK :Topeltklõpsuga +STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK_FOCUS :Ühe klõpsuga (kui on fookuses) +STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK :Ühe klõpsuga (koheselt) STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU :Paremklõpsu matkimine: {STRING} +STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_HELPTEXT :Vali meetod mille järgi emuleeritakse hiite paremklõpse STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Command+klõps STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Ctrl+klõps STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Väljas -STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Kerimine vasakklõpsul: {STRING} +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_DATE_FORMAT_IN_SAVE_NAMES :Kuupäevaformaat salvestatud mängunimedes on {STRING}. -STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :pikk (31. dets 2008) -STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :lühike (31-12-2008) -STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31) +STR_CONFIG_SETTING_AUTOSAVE :Automaatne salvestamine: {STRING} +STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Vali automaatse salvestamise intervall -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE :Vaikimisi palett NewGRF-le millel kindlat paletti määranud pole: {STRING} -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_DOS :DOS-i palett -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_WIN :Windows-i palett +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_PAUSE_ON_NEW_GAME :Mängu seiskamine alguses: {STRING} +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} -STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :mitte ükski toiming -STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_CONSTRUCTION :kõik mitte-ehituslikud toimingud -STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_LANDSCAPING :kõik peale maastikku muutvate toimingute -STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_ACTIONS :kõik tõimingud -STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Laiendatud sõidukinimekiri: {STRING} -STR_CONFIG_SETTING_LOADING_INDICATORS :Laadimisnäidikud: {STRING} -STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :Sõiduplaanis kasutatakse päevade asemel tiksumist: {STRING} -STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE :Saabumiste ja väljumiste näitamine sõiduplaanis: {STRING} -STR_CONFIG_SETTING_QUICKGOTO :Sõidukikäskude kiirloomine: {STRING} -STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE :Algne rööbastee liik (mängu alustamisel/laadimisel): {STRING} -STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_FIRST :Esimene saadaval -STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_LAST :Viimane saadaval +STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_HELPTEXT :Vali tegevuseg millede teostamine on lubatud mängu pausi ajal +STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :Mitte ükski toiming +STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_CONSTRUCTION :Kõik mitte-ehituslikud toimingud +STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_LANDSCAPING :Kõik peale maastikku muutvate toimingute +STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_ACTIONS :Kõik tõimingud +STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Põhjalikku sõidukiregistrit näidatakse: {STRING} +STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Lubab kasutada põhjalikke sõidukiregistreid, kus saab sõidukeid rühmitada +STR_CONFIG_SETTING_LOADING_INDICATORS :Laadimisnäidikute kasutamine: {STRING} +STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :Vali, kas näidata sõiduki peale- ja mahalaadimise ajal laadimisnäidikut +STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :Sõiduplaan on sammudes, mitte päevades: {STRING} +STR_CONFIG_SETTING_TIMETABLE_IN_TICKS_HELPTEXT :Sõiduplaanis on ajad märgitud mitte päevades, vaid sammudes +STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE :Sõiduplaanis on saabumis- ja väljumisajad: {STRING} +STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE_HELPTEXT :Sõiduki sõiduplaanis esitatakse eeldatavaid saabumis- ja väljumisaegu +STR_CONFIG_SETTING_QUICKGOTO :Sõidukile määratakse kohe ülesandeid: {STRING} +STR_CONFIG_SETTING_QUICKGOTO_HELPTEXT :Sõiduki sihtide avamisel saab kohe «Mine» ülesandeid anda +STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE :Algne rööbastee liik (mängu alustamisel/jätkamisel): {STRING} +STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_HELPTEXT :Määrab mängu alguses või selle jätkamisel käibel oleva rööbastee liigi. «Esimesena saadaval» valib kõige vanema rööbastee liigi, «Viimasena saadaval» valib kõige uuema rööbastee liigi, ning «Enim kasutatud» valib kõige rohkem kasutatud rööbastee liigi +STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_FIRST :Esimesena saadaval +STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_LAST :Viimasena saadaval STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_MOST_USED :Enim kasutatud -STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :Varundatud radade näitamine: {STRING} -STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :Ehitustööriistad pärast kasutamist tegusad: {STRING} -STR_CONFIG_SETTING_EXPENSES_LAYOUT :Kulutuste rühmitamine ettevõtte finantsaknas: {STRING} - -STR_CONFIG_SETTING_SOUND_NEWS :Ajaleht: {STRING} -STR_CONFIG_SETTING_SOUND_NEWS_HELPTEXT :Mängi häält ajalehe vaatamisel -STR_CONFIG_SETTING_SOUND_NEW_YEAR :Aasta lõpp: {STRING} -STR_CONFIG_SETTING_SOUND_CONFIRM :Ehitis: {STRING} -STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT :Mängi heliefekti edukatel rajamistel või muudel tegevustel -STR_CONFIG_SETTING_SOUND_CLICK :Nupu vajutused: {STRING} -STR_CONFIG_SETTING_SOUND_CLICK_HELPTEXT :Piiksu nuppe klõpsates -STR_CONFIG_SETTING_SOUND_VEHICLE_HELPTEXT :Mängi sõidukite helieffekte - -STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING :Blokeeri infrastruktuuri ehitamine kui sobivad sõidukid puuduvad: {STRING} -STR_CONFIG_SETTING_MAX_TRAINS :Enim ronge ettevõtte kohta: {STRING} -STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :Enim mootorsõidukeid ettevõtte kohta: {STRING} -STR_CONFIG_SETTING_MAX_AIRCRAFT :Enim õhusõidukeid ettevõtte kohta: {STRING} -STR_CONFIG_SETTING_MAX_SHIPS :Enim laevu ettevõtte kohta: {STRING} +STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :Kinnise raudteelõigu näitamine: {STRING} +STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION_HELPTEXT :Värvib kinnise raudtee teist värvi. Lihtsustab vigade leidmist, kui rongid ei kasuta raudteelõiku +STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :Ehitustarvikud jäävad kasutamisel käibele: {STRING} +STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Sildade, tunnelite jne ehitamise tarvikud on kasutamise järel veel käibel +STR_CONFIG_SETTING_EXPENSES_LAYOUT :Kulutuste rühmitamine rahavoogude aruandes: {STRING} +STR_CONFIG_SETTING_EXPENSES_LAYOUT_HELPTEXT :Määrab rahavoogude aruande ülesehituse + +STR_CONFIG_SETTING_SOUND_TICKER :Lühiteadetes: {STRING} +STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :Lühiteate ilmumisel kostub helisignaal +STR_CONFIG_SETTING_SOUND_NEWS :Ajalehes: {STRING} +STR_CONFIG_SETTING_SOUND_NEWS_HELPTEXT :Ajalehe avamisel kostub hääl +STR_CONFIG_SETTING_SOUND_NEW_YEAR :Aastalõpul: {STRING} +STR_CONFIG_SETTING_SOUND_NEW_YEAR_HELPTEXT :Kui aasta lõpus ilmub ettevõtte rahavoogude aruanne, kus võrreldakse ettevõtte tulemusi eelmise aastaga, kõlab heli +STR_CONFIG_SETTING_SOUND_CONFIRM :Ehitamisel: {STRING} +STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT :Ehitamise käigus ja selle lõppemisel kostuvad helid +STR_CONFIG_SETTING_SOUND_CLICK :Nupuvajutustel: {STRING} +STR_CONFIG_SETTING_SOUND_CLICK_HELPTEXT :Nupu vajutamisel kostub helisignaal +STR_CONFIG_SETTING_SOUND_DISASTER :Katastroofides/õnnetustes: {STRING} +STR_CONFIG_SETTING_SOUND_DISASTER_HELPTEXT :Õnnetustes ja katastroofides kõlavad helid +STR_CONFIG_SETTING_SOUND_VEHICLE :Sõidukitel: {STRING} +STR_CONFIG_SETTING_SOUND_VEHICLE_HELPTEXT :Kostuvad sõidukite helid +STR_CONFIG_SETTING_SOUND_AMBIENT :Taustahelid: {STRING} +STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :Maastikult, tööstustest ja linnadest kostuvad taustahelid + +STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING :Sobivate sõidukite puudumisel on taristu ehitamine keelatud: {STRING} +STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING_HELPTEXT :Sisse lülitamisel on taristu ehitamine võimalik ainult juhul, kui sellega seonduvad sõidukid on juba saadaval. Väldib mõttetut raha ja aja kulu, kui ehitatakse taristu, mida ei saa kasutada +STR_CONFIG_SETTING_MAX_TRAINS :Ettevõtte rongide ülempiir: {STRING} +STR_CONFIG_SETTING_MAX_TRAINS_HELPTEXT :Ettevõttele kuuluvate rongide arvu ülempiir +STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :Ettevõtte mootorsõidukite ülempiir: {STRING} +STR_CONFIG_SETTING_MAX_ROAD_VEHICLES_HELPTEXT :Ettevõttele kuuluvate mootorsõidukite arvu ülempiir +STR_CONFIG_SETTING_MAX_AIRCRAFT :Ettevõtte õhusõidukite ülempiir: {STRING} +STR_CONFIG_SETTING_MAX_AIRCRAFT_HELPTEXT :Ettevõttele kuuluvate lennukite arvu ülempiir +STR_CONFIG_SETTING_MAX_SHIPS :Ettevõtte laevade ülempiir: {STRING} +STR_CONFIG_SETTING_MAX_SHIPS_HELPTEXT :Ettevõttele kuuluvate laevade arvu ülempiir STR_CONFIG_SETTING_AI_BUILDS_TRAINS :Rongikeeld arvutile: {STRING} +STR_CONFIG_SETTING_AI_BUILDS_TRAINS_HELPTEXT :Selle seade sisse lülitamise korral ei ole arvuti juhitud mängijal lubatud rongide ehitamine STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES :Sõidukikeeld arvutile: {STRING} +STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES_HELPTEXT :Selle seade sisse lülitamise korral ei ole arvuti juhitud mängijal lubatud veokite ehitamine STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT :Õhusõidukikeeld arvutile: {STRING} +STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT_HELPTEXT :Selle seade sisse lülitamise korral ei ole arvuti juhitud mängijal lubatud lennukite ehitamine STR_CONFIG_SETTING_AI_BUILDS_SHIPS :Laevakeeld arvutile: {STRING} +STR_CONFIG_SETTING_AI_BUILDS_SHIPS_HELPTEXT :Selle seade sisse lülitamise korral ei ole arvuti juhitud mängijal lubatud laevade ehitamine +STR_CONFIG_SETTING_AI_PROFILE :Vaikeseadistus: {STRING} +STR_CONFIG_SETTING_AI_PROFILE_HELPTEXT :Valib suvalise tehismõistuse ja lisatava tehismõistuse ja mänguskripti vaikeseadistuse +STR_CONFIG_SETTING_AI_PROFILE_EASY :Lihtne +STR_CONFIG_SETTING_AI_PROFILE_MEDIUM :Keskmine +STR_CONFIG_SETTING_AI_PROFILE_HARD :Keeruline -STR_CONFIG_SETTING_AI_IN_MULTIPLAYER :Tehismõistus võrgumängudes: {STRING} +STR_CONFIG_SETTING_AI_IN_MULTIPLAYER :Tehismõistus mitmikmängus: {STRING} +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_SERVINT_ISPERCENT :Protsentides hooldusvahemikud: {STRING} +STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES_HELPTEXT :Maksimaalne arv arvutamise käike mida skript võib teha ühel sammul + +STR_CONFIG_SETTING_SERVINT_ISPERCENT :Hooldusvälp protsentides: {STRING} +STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Vali kas sõiduki hooldus käivitub vastavalt ajale mis on möödunud viimasest hooldusest või kui sõiduki usaldusväärsus langeb allapoole lubatud piiri sõiduki maksimaalsest usaldusväärsuse protsendist +STR_CONFIG_SETTING_SERVINT_TRAINS :Rongide esialgne hooldusvälp: {STRING} +STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :Määrab uute rööbassõidukite hooldusvälba, kui sõidukile eraldi hooldusvälpa ei määrata +STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA} päev{P 0 "" a}/% +STR_CONFIG_SETTING_SERVINT_DISABLED :Väljas +STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES :Mootorsõiduki hooldusvälba vaikeväärtus: {STRING} +STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES_HELPTEXT :Määrab uute mootorsõidukite hooldusvälba, kui sõidukile eraldi hooldusvälpa ei määrata +STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Lennuki hooldusvälba vaikeväärtus: {STRING} +STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Määrab uute õhusõidukite hooldusvälba, kui sõidukile eraldi hooldusvälpa ei määrata +STR_CONFIG_SETTING_SERVINT_SHIPS :Laevade hooldusvälba vaikeväärtus: {STRING} +STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Määrab uute laevade hooldusvälba, kui sõidukile eraldi hooldusvälpa ei määrata STR_CONFIG_SETTING_NOSERVICE :Hoolduse keelamine rikete väljalülitamisel: {STRING} +STR_CONFIG_SETTING_NOSERVICE_HELPTEXT :Kui on aktiveeritud, siis ei teostata hooldust sõidukitele mille tõrkumine ei ole võimalik STR_CONFIG_SETTING_WAGONSPEEDLIMITS :Vagunite kiiruspiirangud: {STRING} +STR_CONFIG_SETTING_WAGONSPEEDLIMITS_HELPTEXT :Kui on aktiveeritud siis kasutatakse rongi maksimaalse kiiruse arvutamiseks ka vagunite kiiruse piirangut STR_CONFIG_SETTING_DISABLE_ELRAILS :Elektrirongide keeld: {STRING} +STR_CONFIG_SETTING_DISABLE_ELRAILS_HELPTEXT :Selle seade sisse lülitamise korral ei ole tarvis rööpaid elektrifitseerida, et lubada elektrisõidukitel nendel rööbastel liikuda STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN :Esimese sõiduki saabumine mängija jaama: {STRING} +STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN_HELPTEXT :Kui ettevõtte uude jaama saabub esimene sõiduk, näidatakse seda ajalehes STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER :Esimese sõiduki saabumine vastase jaama: {STRING} +STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER_HELPTEXT :Kui vastasettevõtte uude jaama saabub esimene sõiduk, näidatakse seda ajalehes STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS :Õnnetused / katastroofid: {STRING} +STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS_HELPTEXT :Õnnetusi või katastroofi esinemisel näidatakse seda ajalehes STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION :Ettevõtte teave: {STRING} +STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION_HELPTEXT :Kui uus ettevõte alustab, või ettevõte riskib pankrotiga, näidatakse seda ajalehes STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN :Tööstuste avamine: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN_HELPTEXT :Uue tööstuste avamisel näidatakse seda ajalehes STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE :Tööstuste sulgemine: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE_HELPTEXT :Tööstuste sulgemise korral näidatakse seda ajalehes STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES :Muutused majanduses: {STRING} +STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES_HELPTEXT :Maailmamajanduse muutumisel näidatakse seda ajalehes STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY :Ettevõtte poolt teenindavate tööstuste toodangumuutused: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY_HELPTEXT :Ettevõttega seotud toodangumahtude muutuse korral näidatakse seda ajalehes STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER :Konkurentide poolt teenindavate tööstuste toodangumuutused: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER_HELPTEXT :Vastasettevõtetega seotud toodangumahtude muutuste korral näidatakse seda ajalehes STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED :Ülejäänud tööstuste toodangumuutused: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED_HELPTEXT :Ettevõtte või vastasettevõtetega mitteseotud toodangumahtude muutuste korral näidatakse seda ajalehes STR_CONFIG_SETTING_NEWS_ADVICE :Teave ja nõuanded ettevõtte sõidukite kohta: {STRING} +STR_CONFIG_SETTING_NEWS_ADVICE_HELPTEXT :Kuva teateid sõidukite kohta mis vajavad tähelepanu STR_CONFIG_SETTING_NEWS_NEW_VEHICLES :Uued sõidukid: {STRING} +STR_CONFIG_SETTING_NEWS_NEW_VEHICLES_HELPTEXT :Uue sõiduki lisandumisel näidatakse seda ajalehes STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE :Veoste vastuvõtutingimuste muutumine: {STRING} +STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE_HELPTEXT :Teate näitamine, kui jaamas vastuvõetavad kaubad muutuvad STR_CONFIG_SETTING_NEWS_SUBSIDIES :Toetused: {STRING} +STR_CONFIG_SETTING_NEWS_SUBSIDIES_HELPTEXT :Toetustega seotud sündmuste korral näidatakse seda ajalehes STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION :Üldine teave: {STRING} +STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION_HELPTEXT :Kuva ajalehe teated üldiste sündmuste kohta nagu eksklusiivsete õiguste ostmine ja kohalike teede rekonstrueerimine STR_CONFIG_SETTING_NEWS_MESSAGES_OFF :Väljas 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 :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, väiksemad muutused): {STRING} +STR_CONFIG_SETTING_SMOOTH_ECONOMY :Sujuv majandus (rohkem, kuid väikesed muutused): {STRING} +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} +STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE_HELPTEXT :Protsent tuludest mis antakse edasi 'kanna edasi' süsteemidele. Lubab täpsemalt jaotada kasumit erinevate harude vahel. +STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY :Kui lohistatakse siis paigutatakse foorid iga: {STRING} +STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_HELPTEXT :Määra vahemaa mille tagant paigutatakse rööbastele foorid kuni järgmise takistuseni (foor, ristmik), kui foore lohistatkse +STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_VALUE :{COMMA} ruut{P 0 "" u} +STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE :Lohistades hoia kindlat vahemaad fooride vahel: {STRING} +STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :«Ctrl»+lohistamise abil signaalide paigutamise viis. Välja lülitades ümbritsetakse tunnelid ja sillad fooridega, et vähendada signaliseerimata lõike. Sisse lülitades paigutatakse signaalid ühtlaselt iga n ruudu järele, et paralleelrööbastel signaalid ühtlaselt jaotada STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :Semafore ehitatakse enne: {STRING} +STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE_HELPTEXT :Määra aasta alates millest hakatakse kasutama elektriga foore. Ennem seda aastat kasutatakse semafoore (mis täidavad sama eesmärki, aga näevad teist moodi välja) STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI :Signaalide paigutamise graafiline kasutajaliides: {STRING} -STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE :Vaikimisi ehitatav signaalide liik: {STRING} +STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI_HELPTEXT :Kuva aken erinevate fooride tüüpidega mida saab ehitada, selle asemel et kuvada üks fooride nupp ja kasutada Ctrl+klõpsu fooride ehitamiseks +STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE :Esialgselt ehitatav signaaliliik: {STRING} +STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE_HELPTEXT :Esialgselt kasutatav signaaliliik STR_CONFIG_SETTING_DEFAULT_SIGNAL_NORMAL :Tavaline STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBS :Täiustatud STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBSOWAY :Ühesuunaline täiustatud STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES :Vaheta signaalide liike: {STRING} +STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES_HELPTEXT :Muuda saadaval signaaliliike, kui «Ctrl»+klõpsu abil muuta signaali liiki STR_CONFIG_SETTING_CYCLE_SIGNAL_NORMAL :Ainult tavaline STR_CONFIG_SETTING_CYCLE_SIGNAL_PBS :Ainult täiustatud STR_CONFIG_SETTING_CYCLE_SIGNAL_ALL :Kõik STR_CONFIG_SETTING_TOWN_LAYOUT :Uute linnade tänavaplaneering: {STRING} -STR_CONFIG_SETTING_TOWN_LAYOUT_DEFAULT :vaikimisi -STR_CONFIG_SETTING_TOWN_LAYOUT_BETTER_ROADS :paremad teed +STR_CONFIG_SETTING_TOWN_LAYOUT_HELPTEXT :Teedevõrgu paigutus linnades +STR_CONFIG_SETTING_TOWN_LAYOUT_DEFAULT :Esialgne +STR_CONFIG_SETTING_TOWN_LAYOUT_BETTER_ROADS :Paremad teed STR_CONFIG_SETTING_TOWN_LAYOUT_2X2_GRID :2x2 võrgustik STR_CONFIG_SETTING_TOWN_LAYOUT_3X3_GRID :3x3 võrgustik -STR_CONFIG_SETTING_TOWN_LAYOUT_RANDOM :suvaline +STR_CONFIG_SETTING_TOWN_LAYOUT_RANDOM :Suvaline STR_CONFIG_SETTING_ALLOW_TOWN_ROADS :Linnapoolne teedeehitus: {STRING} +STR_CONFIG_SETTING_ALLOW_TOWN_ROADS_HELPTEXT :Luba linnadel ehitada teid, et soodustada kasvu. Lülita välja, et keelata linnadel rajada teid 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 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_FORBIDDEN :keelatud -STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :lubatud -STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :lubatud, koos linnaskeemi valimisega - -STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT :Puude lisamine keset mängu: {STRING} -STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NONE :mitte kuhugi {RED}(saeveski ei saa töötada) -STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_RAINFOREST :Ainult vihmametsadesse -STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_ALL :Igale poole - -STR_CONFIG_SETTING_TOOLBAR_POS :Tööriistariba asukoht: {STRING} -STR_CONFIG_SETTING_STATUSBAR_POS :Seisundiriba asukoht: {STRING} -STR_CONFIG_SETTING_SOFT_LIMIT :Maksimaalne kinnistamata akende arv: {STRING} -STR_CONFIG_SETTING_ZOOM_MIN :Maksimaalne suurenduse tase: {STRING} -STR_CONFIG_SETTING_ZOOM_MAX :Maksimaalne väljasuurenduse tase: {STRING} +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 + +STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT :Mängu jooksul kasvavad puud: {STRING} +STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_HELPTEXT :Juhib suvalist puude kasvu mängu jooksul. See seade võib mõjutada osade tööstuste tööd, mis sõltuvad puude kasvust (näiteks saekaater) +STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NONE :Ei {RED}(saeveski ei tööta) +STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_RAINFOREST :Ainult vihmametsades +STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_ALL :Igal pool + +STR_CONFIG_SETTING_TOOLBAR_POS :Peamine tarvikuriba paikneb: {STRING} +STR_CONFIG_SETTING_TOOLBAR_POS_HELPTEXT :Tarvikuriba rõhtne paiknemine ekraani ülaosas +STR_CONFIG_SETTING_STATUSBAR_POS :Näidikuriba paikneb: {STRING} +STR_CONFIG_SETTING_STATUSBAR_POS_HELPTEXT :Näidikuriba rõhtne paiknemine ekraani alaservas +STR_CONFIG_SETTING_SNAP_RADIUS :Akende haardumise ulatus: {STRING} +STR_CONFIG_SETTING_SNAP_RADIUS_HELPTEXT :Akendevaheline kaugus, enne, kui liigutatav aken joondatakse kõrvalakendega +STR_CONFIG_SETTING_SNAP_RADIUS_VALUE :{COMMA} piks{P 0 el lit} +STR_CONFIG_SETTING_SNAP_RADIUS_DISABLED :Väljas +STR_CONFIG_SETTING_SOFT_LIMIT :Suletavate akende arvu ülempiir: {STRING} +STR_CONFIG_SETTING_SOFT_LIMIT_HELPTEXT :Suletavate akende arv, enne, kui vanad aknad suletakse, et uutele akendele ruumi teha +STR_CONFIG_SETTING_SOFT_LIMIT_VALUE :{COMMA} +STR_CONFIG_SETTING_SOFT_LIMIT_DISABLED :väljas +STR_CONFIG_SETTING_ZOOM_MIN :Suurim suurendusaste: {STRING} +STR_CONFIG_SETTING_ZOOM_MIN_HELPTEXT :Vaateakna suurendusastme ülempiir. Kõrgete suurendusastmete lubamisega kaasneb suurem vahemälu kasutamine +STR_CONFIG_SETTING_ZOOM_MAX :Väikseim suurendusaste: {STRING} +STR_CONFIG_SETTING_ZOOM_MAX_HELPTEXT :Vaateakna suurendusastme alampiir. Madalate suurendusastmete kasutamine võib põhjustata viivitusi STR_CONFIG_SETTING_ZOOM_LVL_MIN :4x STR_CONFIG_SETTING_ZOOM_LVL_IN_2X :2x STR_CONFIG_SETTING_ZOOM_LVL_NORMAL :Tavaline @@ -1405,97 +1618,165 @@ 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 :Linna kasvutempo: {STRING} +STR_CONFIG_SETTING_TOWN_GROWTH_HELPTEXT :Linna kasvamise kiirus STR_CONFIG_SETTING_TOWN_GROWTH_NONE :Pole STR_CONFIG_SETTING_TOWN_GROWTH_SLOW :Aeglane STR_CONFIG_SETTING_TOWN_GROWTH_NORMAL :Normaalne STR_CONFIG_SETTING_TOWN_GROWTH_FAST :Kiire STR_CONFIG_SETTING_TOWN_GROWTH_VERY_FAST :Väga Kiire +STR_CONFIG_SETTING_LARGER_TOWNS :Proportsioon asulatest millest kasvavad linnad: {STRING} +STR_CONFIG_SETTING_LARGER_TOWNS_HELPTEXT :Asulate arv mis kasvavad tulevikus linnadeks, elik asulate arv mis on alguses suuremad ja kasvavad kiiremini kui ülejäänud asulad +STR_CONFIG_SETTING_LARGER_TOWNS_VALUE :1 iga {COMMA} kohta +STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :Mitte ühtegi STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Algne linnade suurustegur: {STRING} -STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD :Mittevajaliku eemaldamine teedeehitusel: {STRING} - -STR_CONFIG_SETTING_GUI :{ORANGE}Kasutajaliides -STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}Ehitamine -STR_CONFIG_SETTING_VEHICLES :{ORANGE}Sõidukid -STR_CONFIG_SETTING_STATIONS :{ORANGE}Jaamad -STR_CONFIG_SETTING_ECONOMY :{ORANGE}Majandus -STR_CONFIG_SETTING_AI :{ORANGE}Konkurendid -STR_CONFIG_SETTING_DISPLAY_OPTIONS :{ORANGE}Kuvaseaded -STR_CONFIG_SETTING_INTERACTION :{ORANGE}Suhtlemine +STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Keskmine linna suurus võrreldes tavalise asulaga mängu alguses + +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. +STR_CONFIG_SETTING_LINKGRAPH_TIME :Jaotusgraafikud koostatakse {STRING} päeva jooksul +STR_CONFIG_SETTING_LINKGRAPH_TIME_HELPTEXT :Aega ahelgraafiku osa koostamiseks. Koostamise algul käivitatakse protsess, mis võib töötada määratud arv päevi. Väiksema väärtusega on suurem võimalus, et protsess lõppe. Kui protsess ei ole lõppenud, siis mäng seisatakse protsessi lõppemiseni (tekib viivitusi). Suurema arvuga läheb kauem, kuni muudetud teel uuendatakse kaubajaotust. +STR_CONFIG_SETTING_DISTRIBUTION_MANUAL :väljas +STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC :asümeetriline +STR_CONFIG_SETTING_DISTRIBUTION_SYMMETRIC :sümeetriline +STR_CONFIG_SETTING_DISTRIBUTION_PAX :Reisijate jaotuse viis: {STRING} +STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :Kui jaamast A läheb jaama B umbes sama hulk reisijaid, kui jaamast B jaama A, siis jaotus on «sümeetriline». Kui mõlemas suunas võib liikuda ükskõik, kui palju resijaid, siis jaotus on «asümeetriline». Kui reisijate liikumist ei jaotata, siis jaotus on «väljas». +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_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} +STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT :Kõrgema väärtusega kasutatakse ahelgraafiku koostamiseks protsessorit rohkem. Kui see võtab liiga kaua, võib täheldada viivitusi. Madala väärtusega tekib ebatäpne jaotus, ning kaup ei pruugi õigesse sihtpunkti jõuda. +STR_CONFIG_SETTING_DEMAND_DISTANCE :Kauguse mõju nõudlusele: {STRING} +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, 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} +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_HELPTEXT :Liideses näidatakse kiirust valitud mõõdustikus +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_IMPERIAL :Inglise mõõdustik (mph) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_METRIC :Meetermõõdustik (km/h) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_SI :SI-süsteem (m/s) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER :Võimsusühikud: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_HELPTEXT :Liideses näidatakse võimsust valitud mõõdustikus +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_IMPERIAL :Inglise mõõdustik (hp) +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_METRIC :Meetermõõdustik (hj) +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_SI :SI-süsteem (kW) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT :Kaaluühikud: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_HELPTEXT :Liideses näidatakse kaalu valitud mõõdustikus +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_IMPERIAL :Inglise mõõdustik (lühike t/tonn) +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_METRIC :Meetermõõdustik (t/tonn) +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_SI :SI-süsteem (kg) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME :Mahuühikud: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_HELPTEXT :Liideses näidatakse mahtu valitud mõõdustikus +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_IMPERIAL :Inglise mõõdustik (gal) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_METRIC :Meetermõõdustik (l) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_SI :SI-süsteem (m³) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE :Jõuühikud: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_HELPTEXT :Liideses näidatakse jõudu valitud mõõdustikus +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_IMPERIAL :Inglise mõõdustik (lbf) +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_METRIC :Meetermõõdustik (kgf) +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_SI :SI-süsteem (kN) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT :Kõrgusühikud: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_HELPTEXT :Liideses näidatakse kõrgust valitud mõõdustikus +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :Inglise mõõdustik (ft) +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :Meetermõõdustik (m) +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI-süsteem (m) + +STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Kohandused 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}Hooldamine +STR_CONFIG_SETTING_INTERFACE :{ORANGE}Liides +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Ehitus +STR_CONFIG_SETTING_VEHICLES :{ORANGE}Sõidukid 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_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 STR_CONFIG_SETTING_PATHFINDER_YAPF_RECOMMENDED :YAPF {BLUE}(soovitatud) STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Rongide marsruudileidja: {STRING} +STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Marsruudileidja rongide jaoks STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :Maanteesõidukite marsruudileidja: {STRING} +STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES_HELPTEXT :Marsruudileidja maanteesõidukite jaoks STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS :Laevade marsruudileidja: {STRING} +STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT :Marsruudileidja veesõidukite jaoks STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :Automaatne tagasipööre signaalide juures: {STRING} +STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT :Luba rongidel ümber pöörata kui nad on pikka aega foori taga oodanud -STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}Muuda seadete väärtusi +STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}Määra seade väärtus # Config errors STR_CONFIG_ERROR :{WHITE}Eksitus konfiguratsiooni failiga... STR_CONFIG_ERROR_ARRAY :{WHITE}... vigane massiiv '{STRING}' -STR_CONFIG_ERROR_INVALID_VALUE :{WHITE}... tundmatu väärtus '{STRING}' '{STRING}' jaoks +STR_CONFIG_ERROR_INVALID_VALUE :{WHITE}... väärtus «{STRING}» on «{STRING}» jaoks kõlbmatu STR_CONFIG_ERROR_TRAILING_CHARACTERS :{WHITE}... seadistuse lõpule järgnevad tähed '{STRING}' STR_CONFIG_ERROR_DUPLICATE_GRFID :{WHITE}... vigast NewGRF-i '{STRING}' ei arvestata: korduv GRF-i ID '{STRING}' -STR_CONFIG_ERROR_INVALID_GRF :{WHITE}... vigast NewGRF-i '{STRING}' ei võeta arvesse: {STRING} +STR_CONFIG_ERROR_INVALID_GRF :{WHITE}... eiratakse kõlbmatut NewGRF-i «{STRING}»: {STRING} STR_CONFIG_ERROR_INVALID_GRF_NOT_FOUND :ei leitud -STR_CONFIG_ERROR_INVALID_GRF_UNSAFE :staatilise kasutuse puhul ohtlik +STR_CONFIG_ERROR_INVALID_GRF_UNSAFE :muutumatus kasutuses ohtlik STR_CONFIG_ERROR_INVALID_GRF_SYSTEM :süsteem NewGRF STR_CONFIG_ERROR_INVALID_GRF_INCOMPATIBLE :Mitteühilduv selle OpenTTD versiooniga STR_CONFIG_ERROR_INVALID_GRF_UNKNOWN :tundmatu -STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_LEVEL :{WHITE}... pakkimise tihedus '{STRING}' ei ole lubatud -STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_ALGORITHM :{WHITE}... salvestatud mängu formaat '{STRING}' ei ole saadaval. Taastatakse formaat '{STRING}' +STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_LEVEL :{WHITE}... tihendusaste «{STRING}» ei sobi +STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_ALGORITHM :{WHITE}... mängu salvestamise vormingut «{STRING}» ei ole. Taastatakse «{STRING}» +STR_CONFIG_ERROR_INVALID_BASE_GRAPHICS_NOT_FOUND :{WHITE}... eiratakse alusgraafika kogu «{STRING}»: ei leitud +STR_CONFIG_ERROR_INVALID_BASE_SOUNDS_NOT_FOUND :{WHITE}... eiratakse alushelide kogu «{STRING}»: ei leitud +STR_CONFIG_ERROR_INVALID_BASE_MUSIC_NOT_FOUND :{WHITE}... eiratakse alusmuusika kogu «{STRING}»: ei leitud +STR_CONFIG_ERROR_OUT_OF_MEMORY :{WHITE}Vahemälu on täis +STR_CONFIG_ERROR_SPRITECACHE_TOO_BIG :{WHITE}Pildipuhvri (ingl k «spritecache») suurendamine {BYTES} võrra ebaõnnestus. Pildipuhvri uus suurus on {BYTES}. Seetõttu on OpenTTD nüüd aeglasem. 32 bpp graafika keelamine ja suurendusastme ülempiiri vähendamine piirab vahemälu tarbimist # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} STR_INTRO_NEW_GAME :{BLACK}Uus mäng -STR_INTRO_LOAD_GAME :{BLACK}Mängu laadimine -STR_INTRO_PLAY_SCENARIO :{BLACK}Stsenaariumi mängimine -STR_INTRO_PLAY_HEIGHTMAP :{BLACK}Kõrguskaardil mängimine +STR_INTRO_LOAD_GAME :{BLACK}Jätkuv mäng +STR_INTRO_PLAY_SCENARIO :{BLACK}Stsenaarium +STR_INTRO_PLAY_HEIGHTMAP :{BLACK}Kõrguskaart STR_INTRO_SCENARIO_EDITOR :{BLACK}Stsenaariumiredaktor -STR_INTRO_MULTIPLAYER :{BLACK}Võrgumäng - -STR_INTRO_GAME_OPTIONS :{BLACK}Mängu valikud -STR_INTRO_ADVANCED_SETTINGS :{BLACK}Täpsemad seaded -STR_INTRO_NEWGRF_SETTINGS :{BLACK}NewGRF seadistused -STR_INTRO_ONLINE_CONTENT :{BLACK}Internetisisu kontrollimine -STR_INTRO_SCRIPT_SETTINGS :{BLACK}Tehismõistuse / Mänguskriptide seaded +STR_INTRO_MULTIPLAYER :{BLACK}Mitmikmäng + +STR_INTRO_GAME_OPTIONS :{BLACK}Liidese seadistus +STR_INTRO_HIGHSCORE :{BLACK}Punktitabel +STR_INTRO_ADVANCED_SETTINGS :{BLACK}Põhjalik seadistus +STR_INTRO_NEWGRF_SETTINGS :{BLACK}NewGRF-i seadistus +STR_INTRO_ONLINE_CONTENT :{BLACK}Aineste allalaadimine +STR_INTRO_SCRIPT_SETTINGS :{BLACK}Arvuti seadistus STR_INTRO_QUIT :{BLACK}Välju STR_INTRO_TOOLTIP_NEW_GAME :{BLACK}Alusta uut mängu. Ctrl+klõps jätab kaardi seadistamise vahele -STR_INTRO_TOOLTIP_LOAD_GAME :{BLACK}Laadi salvestatud mäng -STR_INTRO_TOOLTIP_PLAY_HEIGHTMAP :{BLACK}Alusta uut mängu kasutades kõrguskaarti maastikuna -STR_INTRO_TOOLTIP_PLAY_SCENARIO :{BLACK}Alusta omatehtud stsenaariumit kasutades uut mängu +STR_INTRO_TOOLTIP_LOAD_GAME :{BLACK}Jätka lõpetamata mängu +STR_INTRO_TOOLTIP_PLAY_HEIGHTMAP :{BLACK}Alusta uut, kõrguskaardi põhjal koostatud mängu +STR_INTRO_TOOLTIP_PLAY_SCENARIO :{BLACK}Alusta uut, oma stsenaariumis toimuvat mängu STR_INTRO_TOOLTIP_SCENARIO_EDITOR :{BLACK}Loo oma mängukaart -STR_INTRO_TOOLTIP_MULTIPLAYER :{BLACK}Alusta võrgumängu +STR_INTRO_TOOLTIP_MULTIPLAYER :{BLACK}Alusta mitmikmängu STR_INTRO_TOOLTIP_TEMPERATE :{BLACK}Vali 'parasvöötme' maastik STR_INTRO_TOOLTIP_SUB_ARCTIC_LANDSCAPE :{BLACK}Vali 'lähispolaarne' maastik STR_INTRO_TOOLTIP_SUB_TROPICAL_LANDSCAPE :{BLACK}Vali 'lähistroopiline' maastik STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Vali 'mänguasjamaa' maastik -STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Kuva mängu valikuid -STR_INTRO_TOOLTIP_ADVANCED_SETTINGS :{BLACK}Näidata täpsemaid seadeid -STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Näita NewGRF-seadeid -STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Otsi allalaadimiseks uut ja uuendatud sisu -STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}Kuva tehismõistuse ja mängu seaded +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_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 STR_INTRO_TOOLTIP_QUIT :{BLACK}Välju 'OpenTTD'st -STR_INTRO_TRANSLATION :{BLACK}Sellel tõlkel on puudu {NUM} string{P "" i}. Palun aita teha OpenTTD veel paremaks ning registreeru tõlkijaks. Täpsem info asub failis readme.txt. +STR_INTRO_TRANSLATION :{BLACK}{NUM} tõlge{P "" t} on puudu. Palun aita teha OpenTTD veel paremaks, ning hakka tõlkijaks. Rohkem teavet leiad «readme.txt» failist. # Quit window STR_QUIT_CAPTION :{WHITE}Mängust väljumine @@ -1517,8 +1798,8 @@ STR_OSNAME_SUNOS :SunOS # Abandon game STR_ABANDON_GAME_CAPTION :{WHITE}Mängu lõpetamine -STR_ABANDON_GAME_QUERY :{YELLOW}Kas te soovite selle mängu lõpetada? -STR_ABANDON_SCENARIO_QUERY :{YELLOW}Kas sa oled kindel, et sa tahad kaardi tegemise lõpetada? +STR_ABANDON_GAME_QUERY :{YELLOW}Kas lõpetada mäng? +STR_ABANDON_SCENARIO_QUERY :{YELLOW}Kas sa oled kindel, et sa tahad stsenaariumi tegemise lõpetada? # Cheat window STR_CHEATS :{WHITE}Petmine @@ -1577,6 +1858,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 @@ -1631,21 +1913,21 @@ STR_FACE_EARRING :Kõrvarõngas: STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}Vaheta kraed või kõrvarõngast # Network server list -STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}Võrgumäng -STR_NETWORK_SERVER_LIST_CONNECTION :{BLACK}Ühendus: -STR_NETWORK_SERVER_LIST_CONNECTION_TOOLTIP :{BLACK}Valimine interneti- või kohtvõrkmängu vahel -STR_NETWORK_SERVER_LIST_LAN :kohtvõrk (LAN) -STR_NETWORK_SERVER_LIST_INTERNET :Internet +STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}Mitmikmäng +STR_NETWORK_SERVER_LIST_ADVERTISED :{BLACK}Reklaamitav +STR_NETWORK_SERVER_LIST_ADVERTISED_TOOLTIP :{BLACK}Valib reklaamitava (internet) või mittereklaamitava (kohtvõrk, LAN) mängu +STR_NETWORK_SERVER_LIST_ADVERTISED_NO :Ei +STR_NETWORK_SERVER_LIST_ADVERTISED_YES :Jah STR_NETWORK_SERVER_LIST_PLAYER_NAME :{BLACK}Mängija nimi: STR_NETWORK_SERVER_LIST_ENTER_NAME_TOOLTIP :{BLACK}Teised mängijad tunnevad sind selle nime järgi STR_NETWORK_SERVER_LIST_GAME_NAME :{BLACK}Nimi STR_NETWORK_SERVER_LIST_GAME_NAME_TOOLTIP :{BLACK}Mängu nimi STR_NETWORK_SERVER_LIST_GENERAL_ONLINE :{BLACK}{COMMA}/{COMMA} - {COMMA}/{COMMA} -STR_NETWORK_SERVER_LIST_CLIENTS_CAPTION :{BLACK}Kliendid +STR_NETWORK_SERVER_LIST_CLIENTS_CAPTION :{BLACK}Kliente STR_NETWORK_SERVER_LIST_CLIENTS_CAPTION_TOOLTIP :{BLACK}Kliente sees / enim kliente{}Ettevõtteid sees / enim ettevõtteid STR_NETWORK_SERVER_LIST_MAP_SIZE_SHORT :{BLACK}{COMMA}x{COMMA} -STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION :{BLACK}Kaardi suurus +STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION :{BLACK}Kaardi mõõtmed STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION_TOOLTIP :{BLACK}Kaardisuurus mängus{}Klõpsa, et järjestada pindala järgi STR_NETWORK_SERVER_LIST_DATE_CAPTION :{BLACK}Kuupäev STR_NETWORK_SERVER_LIST_DATE_CAPTION_TOOLTIP :{BLACK}Kuupäev hetkel @@ -1653,20 +1935,20 @@ STR_NETWORK_SERVER_LIST_YEARS_CAPTION :{BLACK}Kestnud STR_NETWORK_SERVER_LIST_YEARS_CAPTION_TOOLTIP :{BLACK}Mitu aastat{}on mäng kestnud STR_NETWORK_SERVER_LIST_INFO_ICONS_TOOLTIP :{BLACK}Suhtluskeel, serveri osa, jne. -STR_NETWORK_SERVER_LIST_CLICK_GAME_TO_SELECT :{BLACK}Mäng valimiseks vajuta nimekirjas olevale nimele +STR_NETWORK_SERVER_LIST_CLICK_GAME_TO_SELECT :{BLACK}Loendis mängu klõpsamine valib selle STR_NETWORK_SERVER_LIST_LAST_JOINED_SERVER :{BLACK}Server, kus sa viimati mängisid: STR_NETWORK_SERVER_LIST_CLICK_TO_SELECT_LAST :{BLACK}Klõpsa, et valida server, kus sa viimati mängisid STR_NETWORK_SERVER_LIST_GAME_INFO :{SILVER}MÄNGU ANDMED -STR_NETWORK_SERVER_LIST_CLIENTS :{SILVER}Kliendid: {WHITE}{COMMA} / {COMMA} - {COMMA} / {COMMA} +STR_NETWORK_SERVER_LIST_CLIENTS :{SILVER}Kliente: {WHITE}{COMMA} / {COMMA} - {COMMA} / {COMMA} STR_NETWORK_SERVER_LIST_LANGUAGE :{SILVER}Keel: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_LANDSCAPE :{SILVER}Maastik: {WHITE}{STRING} -STR_NETWORK_SERVER_LIST_MAP_SIZE :{SILVER}Kaardi suurus: {WHITE}{COMMA}x{COMMA} +STR_NETWORK_SERVER_LIST_MAP_SIZE :{SILVER}Kaardi mõõtmed: {WHITE}{COMMA}x{COMMA} STR_NETWORK_SERVER_LIST_SERVER_VERSION :{SILVER}Serveri versioon: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_SERVER_ADDRESS :{SILVER}Serveri aadress: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_START_DATE :{SILVER}Aeg alguses: {WHITE}{DATE_SHORT} STR_NETWORK_SERVER_LIST_CURRENT_DATE :{SILVER}Aeg hetkel: {WHITE}{DATE_SHORT} -STR_NETWORK_SERVER_LIST_PASSWORD :{SILVER}Parooliga kaitstud! +STR_NETWORK_SERVER_LIST_PASSWORD :{SILVER}Kaitstud salasõnaga! STR_NETWORK_SERVER_LIST_SERVER_OFFLINE :{SILVER}SERVER ON MAAS STR_NETWORK_SERVER_LIST_SERVER_FULL :{SILVER}SERVER ON TÄIS STR_NETWORK_SERVER_LIST_VERSION_MISMATCH :{SILVER}OSAD EI SOBI @@ -1676,39 +1958,40 @@ STR_NETWORK_SERVER_LIST_JOIN_GAME :{BLACK}Liitu m STR_NETWORK_SERVER_LIST_REFRESH :{BLACK}Uuenda andmeid STR_NETWORK_SERVER_LIST_REFRESH_TOOLTIP :{BLACK}Serveri info värskendamine -STR_NETWORK_SERVER_LIST_FIND_SERVER :{BLACK}Leia server -STR_NETWORK_SERVER_LIST_FIND_SERVER_TOOLTIP :{BLACK}Võrgust serveri otsimine -STR_NETWORK_SERVER_LIST_ADD_SERVER :{BLACK}Lisa server -STR_NETWORK_SERVER_LIST_ADD_SERVER_TOOLTIP :{BLACK}Pidevalt jälgitava serveri lisamine loendisse -STR_NETWORK_SERVER_LIST_START_SERVER :{BLACK}Alusta serverit -STR_NETWORK_SERVER_LIST_START_SERVER_TOOLTIP :{BLACK}Oma serveri alustamine +STR_NETWORK_SERVER_LIST_FIND_SERVER :{BLACK}Uuenda loendit +STR_NETWORK_SERVER_LIST_FIND_SERVER_TOOLTIP :{BLACK}Uuenda võrgus asuvate serverite loendit +STR_NETWORK_SERVER_LIST_ADD_SERVER :{BLACK}Sisesta server +STR_NETWORK_SERVER_LIST_ADD_SERVER_TOOLTIP :{BLACK}Sisesta loendisse uus server, milles toimuvaid mänge jälgida +STR_NETWORK_SERVER_LIST_START_SERVER :{BLACK}Tee server +STR_NETWORK_SERVER_LIST_START_SERVER_TOOLTIP :{BLACK}Tee oma server STR_NETWORK_SERVER_LIST_PLAYER_NAME_OSKTITLE :{BLACK}Sisesta enda nimi STR_NETWORK_SERVER_LIST_ENTER_IP :{BLACK}Sisesta serveri aadress # Start new multiplayer server -STR_NETWORK_START_SERVER_CAPTION :{WHITE}Uue võrgumängu alustamine +STR_NETWORK_START_SERVER_CAPTION :{WHITE}Mitmikmängu alustamine STR_NETWORK_START_SERVER_NEW_GAME_NAME :{BLACK}Mängu nimi: -STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP :{BLACK}Mängu nime näidatakse teistele mänijatele võrgumängu serverite nimekirjas -STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}Sea parool -STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Kaitse oma mäng parooliga, kui sa ei taha, et kõik sellele ligi pääseksid +STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP :{BLACK}Serveriloendis mängu valimisel nähakse mängu mängunime all +STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}Määra salasõna +STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Et server ei oleks avalik, kaitse oma mäng salasõnaga -STR_NETWORK_START_SERVER_LAN_INTERNET :LAN / Internet -STR_NETWORK_START_SERVER_INTERNET_ADVERTISE :Internet (reklaami) +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}Suurim klientide arv: -STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}Määra suurim klientide arv. Kõik vabad kohad ei pea täidetud olema +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}Enim ettevõtteid: -STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES_TOOLTIP :{BLACK}Teatud ettevõtete piirang serveris -STR_NETWORK_START_SERVER_SPECTATORS_SELECT :{BLACK}{NUM} pealtvaataja{P "" t} -STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK}Enim pealtvaatajaid -STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS_TOOLTIP :{BLACK}Teatud vaatlejate piirang serveris +STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}Ettevõtteid kuni: +STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES_TOOLTIP :{BLACK}Piirab serveris olevate ettevõtete arvu +STR_NETWORK_START_SERVER_SPECTATORS_SELECT :{BLACK}{NUM} vaatleja{P "" t} +STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK}Vaatlejaid kuni: +STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS_TOOLTIP :{BLACK}Piirab serveris olevate vaatlejate arvu STR_NETWORK_START_SERVER_LANGUAGE_SPOKEN :{BLACK}Räägitav keel: -STR_NETWORK_START_SERVER_LANGUAGE_TOOLTIP :{BLACK}Teistele mängijatele teadmiseks, et mis keelt serveris räägitakse +STR_NETWORK_START_SERVER_LANGUAGE_TOOLTIP :{BLACK}Teavitab teisi mängijaid, mis keeles serveris rääkida -STR_NETWORK_START_SERVER_NEW_GAME_NAME_OSKTITLE :{BLACK}Sisesta võrgumängu nimi +STR_NETWORK_START_SERVER_NEW_GAME_NAME_OSKTITLE :{BLACK}Sisesta mitmikmängu nimi # Network game languages ############ Leave those lines in this order!! @@ -1751,7 +2034,7 @@ STR_NETWORK_LANG_LATVIAN :Läti ############ End of leave-in-this-order # Network game lobby -STR_NETWORK_GAME_LOBBY_CAPTION :{WHITE}Võrgumängu jututuba +STR_NETWORK_GAME_LOBBY_CAPTION :{WHITE}Mitmikmängu jututuba STR_NETWORK_GAME_LOBBY_PREPARE_TO_JOIN :{BLACK}Liitumiseks valmistumine: {ORANGE}{STRING} STR_NETWORK_GAME_LOBBY_COMPANY_LIST_TOOLTIP :{BLACK}Nimekiri mängus oelvatest ettevõtetest. Saad liituda ühega või alustada uut, kui on vabu kohti @@ -1771,7 +2054,7 @@ STR_NETWORK_GAME_LOBBY_PLAYERS :{SILVER}Mängij STR_NETWORK_GAME_LOBBY_NEW_COMPANY :{BLACK}Uus ettevõte STR_NETWORK_GAME_LOBBY_NEW_COMPANY_TOOLTIP :{BLACK}Uue ettevõtte loomine STR_NETWORK_GAME_LOBBY_SPECTATE_GAME :{BLACK}Jälgi mängu -STR_NETWORK_GAME_LOBBY_SPECTATE_GAME_TOOLTIP :{BLACK}Vaata mängu kõrvalt +STR_NETWORK_GAME_LOBBY_SPECTATE_GAME_TOOLTIP :{BLACK}Ole mängu vaatleja STR_NETWORK_GAME_LOBBY_JOIN_COMPANY :{BLACK}Liitu ettevõttega STR_NETWORK_GAME_LOBBY_JOIN_COMPANY_TOOLTIP :{BLACK}Aita seda ettevõtet töös hoida @@ -1790,13 +2073,13 @@ STR_NETWORK_CONNECTING_SPECIAL_1 :{BLACK}Hangin m STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}Hangin ettevõtte infot... ############ End of leave-in-this-order STR_NETWORK_CONNECTING_WAITING :{BLACK}{NUM} klient{P "" i} sinu ees -STR_NETWORK_CONNECTING_DOWNLOADING_1 :{BLACK}{BYTES} allalaaditud -STR_NETWORK_CONNECTING_DOWNLOADING_2 :{BLACK}{BYTES} / {BYTES} allalaaditud +STR_NETWORK_CONNECTING_DOWNLOADING_1 :{BLACK}{BYTES} alla laaditud +STR_NETWORK_CONNECTING_DOWNLOADING_2 :{BLACK}{BYTES} / {BYTES} alla laaditud STR_NETWORK_CONNECTION_DISCONNECT :{BLACK}Katkesta -STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Server on kaitstud. Sisesta parool -STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Ettevõte on kaitstud. Sisesta parool +STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Server on kaitstud. Sisesta salasõna +STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Ettevõte on kaitstud. Sisesta salasõna # Network company list added strings STR_NETWORK_COMPANY_LIST_CLIENT_LIST :{WHITE}Klientide nimekiri @@ -1813,16 +2096,17 @@ STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :Privaatne sõnu STR_NETWORK_SERVER :Server STR_NETWORK_CLIENT :Klient -STR_NETWORK_SPECTATORS :Pealtvaatajad +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 STR_COMPANY_PASSWORD_OK :{BLACK}Määra ettevõtte uus salasõna STR_COMPANY_PASSWORD_CAPTION :{WHITE}Ettevõtte salasõna -STR_COMPANY_PASSWORD_MAKE_DEFAULT :{BLACK}Vaikimisi määratud ettevõtte salasõna -STR_COMPANY_PASSWORD_MAKE_DEFAULT_TOOLTIP :{BLACK}Kasuta selle ettevõtte salasõna uute ettevõtete vaikimisi määratud salasõnana +STR_COMPANY_PASSWORD_MAKE_DEFAULT :{BLACK}Esialgne ettevõtte salasõna +STR_COMPANY_PASSWORD_MAKE_DEFAULT_TOOLTIP :{BLACK}Määra ettevõtte salasõna uute ettevõtete esialgseks salasõnaks # Network company info join/password STR_COMPANY_VIEW_JOIN :{BLACK}Liitu @@ -1846,24 +2130,24 @@ STR_NETWORK_CHAT_OSKTITLE :{BLACK}Sisesta # Network messages STR_NETWORK_ERROR_NOTAVAILABLE :{WHITE}Võrgukaarti ei leitud või kompileeritud ilma võtmeta ENABLE_NETWORK -STR_NETWORK_ERROR_NOSERVER :{WHITE}Ei leidnud ühtegi võrgumängu +STR_NETWORK_ERROR_NOSERVER :{WHITE}Ei leidnud ühtegi mitmikmängu STR_NETWORK_ERROR_NOCONNECTION :{WHITE}Server ei vastanud päringule STR_NETWORK_ERROR_NEWGRF_MISMATCH :{WHITE}Ühendus ebaõnnestus NewGRF-i sobimatuse tõttu -STR_NETWORK_ERROR_DESYNC :{WHITE}Võrgumängu sünkroonimine ebaõnnestus -STR_NETWORK_ERROR_LOSTCONNECTION :{WHITE}Võrgumängu ühendus katkes +STR_NETWORK_ERROR_DESYNC :{WHITE}Mitmikmängu sünkroonimine ebaõnnestus +STR_NETWORK_ERROR_LOSTCONNECTION :{WHITE}Mitmikmängu ühendus katkes STR_NETWORK_ERROR_SAVEGAMEERROR :{WHITE}Salvestatud mängu laadimine ebaõnnestus STR_NETWORK_ERROR_SERVER_START :{WHITE}Ei saa uut serverit alustada STR_NETWORK_ERROR_CLIENT_START :{WHITE}Ei õnnestu ühendada STR_NETWORK_ERROR_TIMEOUT :{WHITE}#{NUM}. ühendus aegus STR_NETWORK_ERROR_SERVER_ERROR :{WHITE}Tekkis protokolliviga ja ühendus katkes STR_NETWORK_ERROR_WRONG_REVISION :{WHITE}Kliendi osa ei vasta serveri osaga -STR_NETWORK_ERROR_WRONG_PASSWORD :{WHITE}Vale parool +STR_NETWORK_ERROR_WRONG_PASSWORD :{WHITE}Vale salasõna STR_NETWORK_ERROR_SERVER_FULL :{WHITE}Server on täis STR_NETWORK_ERROR_SERVER_BANNED :{WHITE}Sinu sisenemine siia serverisse on keelatud STR_NETWORK_ERROR_KICKED :{WHITE}Sind visati mängust välja STR_NETWORK_ERROR_CHEATER :{WHITE}Selles serveris on petmine keelatud STR_NETWORK_ERROR_TOO_MANY_COMMANDS :{WHITE}Sa saatsid serverile liiga palju käsklusi korraga -STR_NETWORK_ERROR_TIMEOUT_PASSWORD :{WHITE}Sisestasid parooli liiga kaua +STR_NETWORK_ERROR_TIMEOUT_PASSWORD :{WHITE}Sisestasid salasõna liiga kaua STR_NETWORK_ERROR_TIMEOUT_COMPUTER :{WHITE}Arvutil võttis liitumisega liiga kaua aega STR_NETWORK_ERROR_TIMEOUT_MAP :{WHITE}Kaardi allalaadimine võttis liiga kaua aega STR_NETWORK_ERROR_TIMEOUT_JOIN :{WHITE}Serveriga liitumine võttis liiga kaua aega @@ -1876,16 +2160,16 @@ STR_NETWORK_ERROR_CLIENT_CONNECTION_LOST :ühendus katkes STR_NETWORK_ERROR_CLIENT_PROTOCOL_ERROR :protokolli viga STR_NETWORK_ERROR_CLIENT_NEWGRF_MISMATCH :NewGRF-i kokkusobimatus STR_NETWORK_ERROR_CLIENT_NOT_AUTHORIZED :keelatud -STR_NETWORK_ERROR_CLIENT_NOT_EXPECTED :kahtlane pakett vastu võetud +STR_NETWORK_ERROR_CLIENT_NOT_EXPECTED :saadud pakett on kõlbmatu STR_NETWORK_ERROR_CLIENT_WRONG_REVISION :vale osa STR_NETWORK_ERROR_CLIENT_NAME_IN_USE :nimi on juba kasutusel -STR_NETWORK_ERROR_CLIENT_WRONG_PASSWORD :vale parool +STR_NETWORK_ERROR_CLIENT_WRONG_PASSWORD :vale salasõna STR_NETWORK_ERROR_CLIENT_COMPANY_MISMATCH :vale ettevõtte id DoCommand-is STR_NETWORK_ERROR_CLIENT_KICKED :server viskas välja STR_NETWORK_ERROR_CLIENT_CHEATER :üritas pettust kasutada STR_NETWORK_ERROR_CLIENT_SERVER_FULL :server on täis STR_NETWORK_ERROR_CLIENT_TOO_MANY_COMMANDS :saatis liiga palju käsklusi -STR_NETWORK_ERROR_CLIENT_TIMEOUT_PASSWORD :ei saanud õigeaegselt parooli +STR_NETWORK_ERROR_CLIENT_TIMEOUT_PASSWORD :ei saanud õigeaegselt salasõna STR_NETWORK_ERROR_CLIENT_TIMEOUT_COMPUTER :üldine aegumine STR_NETWORK_ERROR_CLIENT_TIMEOUT_MAP :kaardi laadimine võttis liiga kaua aega STR_NETWORK_ERROR_CLIENT_TIMEOUT_JOIN :kaardi töötlemine võttis liiga kaua aega @@ -1912,86 +2196,90 @@ STR_NETWORK_MESSAGE_CLIENT_LEAVING :lahkub STR_NETWORK_MESSAGE_CLIENT_JOINED :*** {STRING} liitus mänguga STR_NETWORK_MESSAGE_CLIENT_JOINED_ID :*** {STRING} liitus mänguga ({2:NUM}. klient) STR_NETWORK_MESSAGE_CLIENT_COMPANY_JOIN :*** {STRING} liitus {2:NUM}. ettevõttega -STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} liitus vaatajatega +STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} liitus vaatlejatega STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} alustas uue ettevõtte (#{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} lahkus mängust ({2:STRING}) -STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} vahetas oma nime {STRING} +STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} uus nimi on {STRING} STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} andis su ettevõttele {2:CURRENCY_LONG} STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** Sa andsid {1:STRING} {2:CURRENCY_LONG} STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}Server sulges sessiooni STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}Server restardib...{}Palun oota... # Content downloading window -STR_CONTENT_TITLE :{WHITE}Sisu allalaadimine -STR_CONTENT_TYPE_CAPTION :{BLACK}Tüüp -STR_CONTENT_TYPE_CAPTION_TOOLTIP :{BLACK}Sisu liik +STR_CONTENT_TITLE :{WHITE}Aineste allalaadimine +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}Sisu nimi +STR_CONTENT_NAME_CAPTION_TOOLTIP :{BLACK}Ainese nimi STR_CONTENT_MATRIX_TOOLTIP :{BLACK}Reale klõpsates näidatakse täpsustust{}Märkeruudule klõpsates märgitakse allalaaditavaks STR_CONTENT_SELECT_ALL_CAPTION :{BLACK}Vali kõik -STR_CONTENT_SELECT_ALL_CAPTION_TOOLTIP :{BLACK}Märgi kõik sisu allalaaditavaks +STR_CONTENT_SELECT_ALL_CAPTION_TOOLTIP :{BLACK}Märgi kõik ainesed allalaadimiseks STR_CONTENT_SELECT_UPDATES_CAPTION :{BLACK}Märgi uuendused -STR_CONTENT_SELECT_UPDATES_CAPTION_TOOLTIP :{BLACK}Tähista allalaaditavaks kõik olemasoleva sisu uuendused +STR_CONTENT_SELECT_UPDATES_CAPTION_TOOLTIP :{BLACK}Märgi kõik aineste uuendused allalaadimiseks STR_CONTENT_UNSELECT_ALL_CAPTION :{BLACK}Eemalda märgistus kõigilt STR_CONTENT_UNSELECT_ALL_CAPTION_TOOLTIP :{BLACK}Eemaldatakse allalaadimise märgistus +STR_CONTENT_SEARCH_EXTERNAL :{BLACK}Otsi kolmandatest lehtedest +STR_CONTENT_SEARCH_EXTERNAL_TOOLTIP :{BLACK}Otsi OpenTTD-st sõltumatutest lehtedest aineseid, mida OpenTTD aineste keskserverist ei saa +STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER_CAPTION :{WHITE}Sa oled lahkumas OpenTTD-st! +STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER :{WHITE}Kolmandatest lehtedest allalaadimise tingimused sõltuvad lehest.{}Aineste paigaldamisel kasutada kolmandate lehtede juhiseid.{}Kas jätkata? STR_CONTENT_FILTER_TITLE :{BLACK}Sildi- ja nimefilter: STR_CONTENT_OPEN_URL :{BLACK}Külasta lehekülge STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}Külasta lehekülge selle sisu jaoks. -STR_CONTENT_DOWNLOAD_CAPTION :{BLACK}Lae alla -STR_CONTENT_DOWNLOAD_CAPTION_TOOLTIP :{BLACK}Alusta valitud sisu allalaadimist +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 STR_CONTENT_DETAIL_SUBTITLE_ALREADY_HERE :{SILVER}Sul on juba see -STR_CONTENT_DETAIL_SUBTITLE_DOES_NOT_EXIST :{SILVER}Selline sisu on tundmatu ja seda ei saa OpenTTD-se laadida +STR_CONTENT_DETAIL_SUBTITLE_DOES_NOT_EXIST :{SILVER}See ei ole ainesena tuvastatav, seega OpenTTD ei saa seda alla laadida 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_FILESIZE :{SILVER}Allalaadimise suurus: {WHITE}{BYTES} +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} STR_CONTENT_DETAIL_TAGS :{SILVER}Sildid: {WHITE}{STRING} -STR_CONTENT_NO_ZLIB :{WHITE}OpenTTD on kompileeritud ilma "zlib" toeta... -STR_CONTENT_NO_ZLIB_SUB :{WHITE}... sisu allalaadimine pole võimalik! +STR_CONTENT_NO_ZLIB :{WHITE}OpenTTD on kompileeritud ilma «zlib» toeta... +STR_CONTENT_NO_ZLIB_SUB :{WHITE}... aineste allalaadimine pole võimalik! # Order of these is important! -STR_CONTENT_TYPE_BASE_GRAPHICS :Põhigraafika +STR_CONTENT_TYPE_BASE_GRAPHICS :Alusgraafika STR_CONTENT_TYPE_NEWGRF :NewGRF STR_CONTENT_TYPE_AI :Tehismõistus STR_CONTENT_TYPE_AI_LIBRARY :Tehismõistuse teek STR_CONTENT_TYPE_SCENARIO :Stsenaarium STR_CONTENT_TYPE_HEIGHTMAP :Kõrguskaart -STR_CONTENT_TYPE_BASE_SOUNDS :Põhihelid -STR_CONTENT_TYPE_BASE_MUSIC :Põhimuusika +STR_CONTENT_TYPE_BASE_SOUNDS :Alushelid +STR_CONTENT_TYPE_BASE_MUSIC :Alusmuusika STR_CONTENT_TYPE_GAME_SCRIPT :Mängu skript STR_CONTENT_TYPE_GS_LIBRARY :GS teek # Content downloading progress window -STR_CONTENT_DOWNLOAD_TITLE :{WHITE}Sisu allalaadimine... +STR_CONTENT_DOWNLOAD_TITLE :{WHITE}Aineste allalaadimine... STR_CONTENT_DOWNLOAD_INITIALISE :{WHITE}Küsin faile... STR_CONTENT_DOWNLOAD_FILE :{WHITE}Hetkel laaditakse alla {STRING} ({NUM}/{NUM}) STR_CONTENT_DOWNLOAD_COMPLETE :{WHITE}Allalaadimine valmis -STR_CONTENT_DOWNLOAD_PROGRESS_SIZE :{WHITE}{BYTES}/{BYTES} baiti allalaaditud ({NUM} %) +STR_CONTENT_DOWNLOAD_PROGRESS_SIZE :{WHITE}{BYTES}/{BYTES} baiti alla laaditud ({NUM} %) # Content downloading error messages -STR_CONTENT_ERROR_COULD_NOT_CONNECT :{WHITE}Sisuserveriga ei õnnestu ühenduda... +STR_CONTENT_ERROR_COULD_NOT_CONNECT :{WHITE}Aineste keskserveriga ei õnnestu ühenduda... STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD :{WHITE}Allalaadimine ebaõnnestus... STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD_CONNECTION_LOST :{WHITE}... ühendus katkes STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD_FILE_NOT_WRITABLE :{WHITE}... fail pole kirjutatav STR_CONTENT_ERROR_COULD_NOT_EXTRACT :{WHITE}Alla laaditud faili ei saa lahti pakkida -STR_MISSING_GRAPHICS_SET_CAPTION :{WHITE}Puuduolevad graafikad -STR_MISSING_GRAPHICS_SET_MESSAGE :{BLACK}OpenTTD vajab lisagraafikat, et töötada, kuid neid pole leitud. Kas sa lubad OpenTTD´l see lisagraafika alla laadida ja installida?? -STR_MISSING_GRAPHICS_YES_DOWNLOAD :{BLACK}Jah, lae see graafika alla -STR_MISSING_GRAPHICS_NO_QUIT :{BLACK}Ei, lahku OpenTTD´st +STR_MISSING_GRAPHICS_SET_CAPTION :{WHITE}Graafikafailid on puudu +STR_MISSING_GRAPHICS_SET_MESSAGE :{BLACK}OpenTTD töötamiseks on vaja eraldi graafikafaile, mida ei leitud. Kas OpenTTD võib need graafikafailid alla laadida ja need paigaldada? +STR_MISSING_GRAPHICS_YES_DOWNLOAD :{BLACK}Jah, laadi graafika alla +STR_MISSING_GRAPHICS_NO_QUIT :{BLACK}Ei, välju OpenTTD-st # Transparency settings window -STR_TRANSPARENCY_CAPTION :{WHITE}Läbipaistvusvalikud +STR_TRANSPARENCY_CAPTION :{WHITE}Läbipaistvuse seadistus STR_TRANSPARENT_SIGNS_TOOLTIP :{BLACK}Muuda jaamamärkide läbipaistvust. Ctrl+klõps lukustab STR_TRANSPARENT_TREES_TOOLTIP :{BLACK}Vaheta puude läbipaistvust. Ctrl+klõps lukustab STR_TRANSPARENT_HOUSES_TOOLTIP :{BLACK}Vaheta majade läbipaistvust. Ctrl+klõps lukustab @@ -2003,6 +2291,17 @@ STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}Õhuliin STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Vaheta laadimisnäidikute läbipaistvust. Ctrl+klõps lukustab STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}Muuda esemed nähtamatuks, mitte läbipaistvaks +# Linkgraph legend window +STR_LINKGRAPH_LEGEND_CAPTION :{BLACK}Kaubavoo legend +STR_LINKGRAPH_LEGEND_ALL :{BLACK}Kõik +STR_LINKGRAPH_LEGEND_NONE :{BLACK}Mitte ükski +STR_LINKGRAPH_LEGEND_SELECT_COMPANIES :{BLACK}Vali näitamiseks ettevõtted + +# Linkgraph legend window and linkgraph legend in smallmap +STR_LINKGRAPH_LEGEND_UNUSED :{TINY_FONT}{BLACK}ei kasutata +STR_LINKGRAPH_LEGEND_SATURATED :{TINY_FONT}{BLACK}küllastunud +STR_LINKGRAPH_LEGEND_OVERLOADED :{TINY_FONT}{BLACK}ülekoormatud + # Base for station construction window(s) STR_STATION_BUILD_COVERAGE_AREA_TITLE :{BLACK}Mõjupiirkonna näitamine STR_STATION_BUILD_COVERAGE_OFF :{BLACK}Väljas @@ -2063,7 +2362,7 @@ STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}Ehita ja STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}Vali jaama klass mida tahad näidata STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}Vali ehitatava jaama tüüp -STR_STATION_CLASS_DFLT :Vaikimisi valitud jaam +STR_STATION_CLASS_DFLT :Esialgne jaam STR_STATION_CLASS_WAYP :Meldepunktid # Signal window @@ -2098,7 +2397,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 @@ -2107,7 +2406,7 @@ STR_ROAD_TOOLBAR_TRAM_CONSTRUCTION_CAPTION :{WHITE}Trammite STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_SECTION :{BLACK}Ehita sõidutee lõik. Ctrl vahetab tee ehitamise/eemaldamise vahel. Shift kuvab ehitamisehinna. STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_SECTION :{BLACK}Ehita trammitee blokk. Ctrl valib tee ehitamise/eemaldamise. Shift valib ehitamise/hinna kuvamise režiimi STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOROAD :{BLACK}Ehita autotee osa kasutades Autoroad režiimi. Ctrl valib tee ehitamise/eemaldamise. Shift valib ehitamise/hinna kuvamise režiimi -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOTRAM :{BLACK}Ehita trammitee osa kasutades Autotram režiimi. Ctrl valib trammitee ehitamise/eemaldamise. Shift valib ehitamise/hinna kuvamise režiimi +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOTRAM :{BLACK}Ehita trammitee lõik «Autotram» režiimis. Ctrl valib trammitee ehitamise/eemaldamise. Shift valib ehitamise/hinna kuvamise režiimi STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}Depoo ehitamine (veovahendite ostmiseks ja hooldamiseks). Shift valib ehitamise/hinna kuvamise režiimi STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}Ehita trammidepoo (veeremi ehitamiseks ja hoolduseks). Shift valib ehitamise/hinna kuvamise režiimi STR_ROAD_TOOLBAR_TOOLTIP_BUILD_BUS_STATION :{BLACK}Ehita bussijaam. Ctrl võimaldab jaamasid ühendada. Shift valib ehitamise/hinna kuvamise režiimi @@ -2147,7 +2446,7 @@ STR_WATERWAYS_TOOLBAR_BUILD_DEPOT_TOOLTIP :{BLACK}Ehita la STR_WATERWAYS_TOOLBAR_BUILD_DOCK_TOOLTIP :{BLACK}Ehita laevadokk. Ctrl võimaldab jaamu ühendada. Shift valib ehitamise/hinna kuvamise režiimi STR_WATERWAYS_TOOLBAR_BUOY_TOOLTIP :{BLACK}Paigalda poi mis on kasutatav teemärgisena. Shift valib ehitamise/hinna kuvamise režiimi STR_WATERWAYS_TOOLBAR_BUILD_AQUEDUCT_TOOLTIP :{BLACK}Ehita veejuhe. Shift valib ehitamise/hinna kuvamise režiimi -STR_WATERWAYS_TOOLBAR_CREATE_LAKE_TOOLTIP :{BLACK}Määratle veealad.{}Ehita kanal. Ctrl-klahvi all hoides ujutab ümbruskonna üle. +STR_WATERWAYS_TOOLBAR_CREATE_LAKE_TOOLTIP :{BLACK}Määratle veealad.{}Ehita kanal. Veekõrgusel Ctrl-klahvi all hoidmine ujutab ümbruskonna üle STR_WATERWAYS_TOOLBAR_CREATE_RIVER_TOOLTIP :{BLACK}Jõgede paigutamine # Ship depot construction window @@ -2207,12 +2506,12 @@ STR_PLANT_TREE_TOOLTIP :{BLACK}Vali ist STR_TREES_RANDOM_TYPE :{BLACK}Suvalised puutüübid STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}Istutab suvalisi puid. Shift valib ehitamise/hinna kuvamise režiimi STR_TREES_RANDOM_TREES_BUTTON :{BLACK}Suvalised puud -STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Istutab puid suvaliselt üle kogu maa +STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Istutab puid suvaliselt üle kogu maa-ala # Land generation window (SE) -STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}Maastiku loomine +STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}Maa tekitamine STR_TERRAFORM_TOOLTIP_PLACE_ROCKY_AREAS_ON_LANDSCAPE :{BLACK}Loo maastikule kivised alad -STR_TERRAFORM_TOOLTIP_DEFINE_DESERT_AREA :{BLACK}Määra kõrbealad.{}Eemalda Ctrl-klahviga +STR_TERRAFORM_TOOLTIP_DEFINE_DESERT_AREA :{BLACK}Määra kõrbealad.{}Ctrl-klahvi allhoidmine eemaldab selle STR_TERRAFORM_TOOLTIP_INCREASE_SIZE_OF_LAND_AREA :{BLACK}Suurenda kõrgendatava/madaldatava maa-ala pindala STR_TERRAFORM_TOOLTIP_DECREASE_SIZE_OF_LAND_AREA :{BLACK}Vähenda kõrgendatava/madaldatava maa-ala pindala STR_TERRAFORM_TOOLTIP_GENERATE_RANDOM_LAND :{BLACK}Suvalise kaardi tekitamine @@ -2224,7 +2523,7 @@ STR_QUERY_RESET_LANDSCAPE_CAPTION :{WHITE}Nulli ma STR_RESET_LANDSCAPE_CONFIRMATION_TEXT :{WHITE}Kas oled kindel, et tahad lammutada kõik mängija omandid? # Town generation window (SE) -STR_FOUND_TOWN_CAPTION :{WHITE}Linnade loomine +STR_FOUND_TOWN_CAPTION :{WHITE}Linnade tekitamine STR_FOUND_TOWN_NEW_TOWN_BUTTON :{BLACK}Uus linn STR_FOUND_TOWN_NEW_TOWN_TOOLTIP :{BLACK}Ehita uus linn. Shift+klõpsuga kuvatakse eeldatav maksumus STR_FOUND_TOWN_RANDOM_TOWN_BUTTON :{BLACK}Suvaline linn @@ -2247,8 +2546,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 @@ -2259,7 +2558,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 @@ -2277,6 +2576,10 @@ STR_INDUSTRY_DISPLAY_CHAIN :{BLACK}Näita a STR_INDUSTRY_DISPLAY_CHAIN_TOOLTIP :{BLACK}Näita kaupa pakkuvaid ja vastuvõtvaid tööstuseid STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP :{BLACK}Seo pisikaardiga STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP_TOOLTIP :{BLACK}Vali näidatud tööstuseid ka pisikaardil +STR_INDUSTRY_CARGOES_SELECT_CARGO :{BLACK}Vali kaup +STR_INDUSTRY_CARGOES_SELECT_CARGO_TOOLTIP :{BLACK}Vali kaup, mida sa soovid kuvada +STR_INDUSTRY_CARGOES_SELECT_INDUSTRY :{BLACK}Vali tööstus +STR_INDUSTRY_CARGOES_SELECT_INDUSTRY_TOOLTIP :{BLACK}Vali tööstus mida sa soovid kuvada # Land area window STR_LAND_AREA_INFORMATION_CAPTION :{WHITE}Maa-ala andmed @@ -2300,7 +2603,8 @@ STR_LAND_AREA_INFORMATION_AIRPORTTILE_NAME :{BLACK}Lennujaa STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: {LTBLUE}{STRING} 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 kiirusepiirang: {LTBLUE}{VELOCITY} +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 @@ -2397,16 +2701,16 @@ 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-2012 OpenTTD meeskond +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2014 OpenTTD meeskond # Save/load game/scenario -STR_SAVELOAD_SAVE_CAPTION :{WHITE}Salvesta mäng -STR_SAVELOAD_LOAD_CAPTION :{WHITE}Laadi mäng +STR_SAVELOAD_SAVE_CAPTION :{WHITE}Mängu salvestamine +STR_SAVELOAD_LOAD_CAPTION :{WHITE}Mängu jätkamine STR_SAVELOAD_SAVE_SCENARIO :{WHITE}Salvesta stsenaarium STR_SAVELOAD_LOAD_SCENARIO :{WHITE}Laadi stsenaariumit STR_SAVELOAD_LOAD_HEIGHTMAP :{WHITE}Laadi kõrguskaart STR_SAVELOAD_SAVE_HEIGHTMAP :{WHITE}Salvesta kõrguskaart -STR_SAVELOAD_HOME_BUTTON :{BLACK}Vajuta siia, et minna praegusesse vaikimisi valitud salvestamise/laadimise kausta +STR_SAVELOAD_HOME_BUTTON :{BLACK}Vajutamisel avaneb salvestuste ja jätkamiste jaoks määratud algne kataloog STR_SAVELOAD_BYTES_FREE :{BLACK}{BYTES} vaba STR_SAVELOAD_LIST_TOOLTIP :{BLACK}Nimekiri ketastest, kataloogidest ja salvestatud mängudest STR_SAVELOAD_EDITBOX_TOOLTIP :{BLACK}Mängu salvestuse nimi @@ -2414,9 +2718,9 @@ STR_SAVELOAD_DELETE_BUTTON :{BLACK}Kustuta STR_SAVELOAD_DELETE_TOOLTIP :{BLACK}Kustuta valitud salvestus STR_SAVELOAD_SAVE_BUTTON :{BLACK}Salvesta STR_SAVELOAD_SAVE_TOOLTIP :{BLACK}Salvesta mäng valitud nimega -STR_SAVELOAD_LOAD_BUTTON :{BLACK}Lae -STR_SAVELOAD_LOAD_TOOLTIP :{BLACK}Lae valitud mäng -STR_SAVELOAD_DETAIL_CAPTION :{BLACK}Mängu üksikasjad +STR_SAVELOAD_LOAD_BUTTON :{BLACK}Jätka +STR_SAVELOAD_LOAD_TOOLTIP :{BLACK}Jätka valitud mängu +STR_SAVELOAD_DETAIL_CAPTION :{BLACK}Mängust STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}Andmed puuduvad STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING} STR_SAVELOAD_DETAIL_GRFSTATUS :{SILVER}NewGRF: {WHITE}{STRING} @@ -2424,26 +2728,23 @@ STR_SAVELOAD_DETAIL_GRFSTATUS :{SILVER}NewGRF: STR_SAVELOAD_OSKTITLE :{BLACK}Sisesta salvestatavale mängule nimi # World generation -STR_MAPGEN_WORLD_GENERATION_CAPTION :{WHITE}Maailma genereerimine -STR_MAPGEN_MAPSIZE :{BLACK}Kaardi suurus: +STR_MAPGEN_WORLD_GENERATION_CAPTION :{WHITE}Maailma tekitamine +STR_MAPGEN_MAPSIZE :{BLACK}Kaardi mõõtmed: +STR_MAPGEN_MAPSIZE_TOOLTIP :{BLACK}Määrab maakaardi mõõtmed ruutudes. Ruute, mida saab kasutada, on pisut vähem STR_MAPGEN_BY :{BLACK}* STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Linnade sagedus: STR_MAPGEN_DATE :{BLACK}Algus: -STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Tehaste sagedus: +STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Tööstuste sagedus: 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 loomisel kasutatavat suvalist seemet -STR_MAPGEN_LAND_GENERATOR :{BLACK}Maa generaator: +STR_MAPGEN_LAND_GENERATOR :{BLACK}Maatekituse meetod: STR_MAPGEN_TREE_PLACER :{BLACK}Puude algoritm: STR_MAPGEN_TERRAIN_TYPE :{BLACK}Maapinna tüüp: STR_MAPGEN_QUANTITY_OF_SEA_LAKES :{BLACK}Merepinna tase: -STR_MAPGEN_QUANTITY_OF_RIVERS :{BLACK}Jõed: -STR_MAPGEN_SMOOTHNESS :{BLACK}Tasapinnalisus: -STR_MAPGEN_VARIETY :{BLACK}Varieeruvuse jaotamine: +STR_MAPGEN_QUANTITY_OF_RIVERS :{BLACK}Jõgesid: +STR_MAPGEN_SMOOTHNESS :{BLACK}Laugus: +STR_MAPGEN_VARIETY :{BLACK}Iseärasuste jaotus: STR_MAPGEN_GENERATE :{WHITE}Tekita # Strings for map borders at game generation @@ -2456,21 +2757,20 @@ STR_MAPGEN_BORDER_FREEFORM :{BLACK}Vaba STR_MAPGEN_BORDER_WATER :{BLACK}Vesi STR_MAPGEN_BORDER_RANDOM :{BLACK}Suvaline STR_MAPGEN_BORDER_RANDOMIZE :{BLACK}Suvaline -STR_MAPGEN_BORDER_MANUAL :{BLACK}Ise valitud +STR_MAPGEN_BORDER_MANUAL :{BLACK}Määratud STR_MAPGEN_HEIGHTMAP_ROTATION :{BLACK}Kõrgustekaardi pööre: STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Kõrgusekaardi nimi: 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_SNOW_LINE_QUERY_CAPT :{WHITE}Muuda lumepiiri kõrgust STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Muuda algusaastat # SE Map generation STR_SE_MAPGEN_CAPTION :{WHITE}Stsenaariumi tüüp STR_SE_MAPGEN_FLAT_WORLD :{WHITE}Tasane maa -STR_SE_MAPGEN_FLAT_WORLD_TOOLTIP :{BLACK}Genereeri tasane maapind +STR_SE_MAPGEN_FLAT_WORLD_TOOLTIP :{BLACK}Tekita tasane maa STR_SE_MAPGEN_RANDOM_LAND :{WHITE}Suvaline maa STR_SE_MAPGEN_FLAT_WORLD_HEIGHT :{BLACK}Lameda maa kõrgus: STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_DOWN :{BLACK}Lameda maa kõrguse langetamine ühe võrra @@ -2479,27 +2779,27 @@ STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_UP :{BLACK}Lameda m STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_QUERY_CAPT :{WHITE}Muuda maa kõrgust lamedal maal # Map generation progress -STR_GENERATION_WORLD :{WHITE}Maailma genereerimine... +STR_GENERATION_WORLD :{WHITE}Maailma tekitamine... STR_GENERATION_ABORT :{BLACK}Loobu -STR_GENERATION_ABORT_CAPTION :{WHITE}Loobu Maailma Genereerimisest -STR_GENERATION_ABORT_MESSAGE :{YELLOW}Kas sa tõesti tahad loobuda genereerimisest? +STR_GENERATION_ABORT_CAPTION :{WHITE}Lõpeta maailma tekitamine +STR_GENERATION_ABORT_MESSAGE :{YELLOW}Kas sa tõesti tahad tekitamise lõpetada? STR_GENERATION_PROGRESS :{WHITE}{NUM}% valmis STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / {NUM} -STR_GENERATION_WORLD_GENERATION :{BLACK}Maailma genereerimine -STR_GENERATION_RIVER_GENERATION :{BLACK}Jõgede genereerimine -STR_GENERATION_TREE_GENERATION :{BLACK}Puude genereerimine -STR_GENERATION_OBJECT_GENERATION :{BLACK}Liigutamatu tekitamine -STR_GENERATION_CLEARING_TILES :{BLACK}Mägise ja kivise maaala tegemine +STR_GENERATION_WORLD_GENERATION :{BLACK}Maailma tekitamine +STR_GENERATION_RIVER_GENERATION :{BLACK}Jõgede tekitamine +STR_GENERATION_TREE_GENERATION :{BLACK}Puude tekitamine +STR_GENERATION_OBJECT_GENERATION :{BLACK}Objekti tekitamine +STR_GENERATION_CLEARING_TILES :{BLACK}Mägise ja kivise maa-ala tekitamine STR_GENERATION_SETTINGUP_GAME :{BLACK}Mängu seadistamine -STR_GENERATION_PREPARING_TILELOOP :{BLACK}Klotsisilmuse täitmine +STR_GENERATION_PREPARING_TILELOOP :{BLACK}Ruudustiku töötlemine STR_GENERATION_PREPARING_SCRIPT :{BLACK}Täitmisel olev skript -STR_GENERATION_PREPARING_GAME :{BLACK}Mängu valmistamine +STR_GENERATION_PREPARING_GAME :{BLACK}Mängu ettevalmistamine # NewGRF settings -STR_NEWGRF_SETTINGS_CAPTION :{WHITE}Uue graafika sätted -STR_NEWGRF_SETTINGS_INFO_TITLE :{WHITE}Detailne NewGRF informatsioon -STR_NEWGRF_SETTINGS_ACTIVE_LIST :{WHITE}Aktiivsed NewGRF failid -STR_NEWGRF_SETTINGS_INACTIVE_LIST :{WHITE}Mitteaktiivsed NewGRF failid +STR_NEWGRF_SETTINGS_CAPTION :{WHITE}NewGRF-i seadistus +STR_NEWGRF_SETTINGS_INFO_TITLE :{WHITE}Põhjalikud NewGRF-i andmed +STR_NEWGRF_SETTINGS_ACTIVE_LIST :{WHITE}Tegusad NewGRF failid +STR_NEWGRF_SETTINGS_INACTIVE_LIST :{WHITE}Mittetegusad NewGRF failid STR_NEWGRF_SETTINGS_SELECT_PRESET :{ORANGE}Vali väärtus: STR_NEWGRF_FILTER_TITLE :{ORANGE}Filtreeri sõna: STR_NEWGRF_SETTINGS_PRESET_LIST_TOOLTIP :{BLACK}Laadi valitud eelseadistused @@ -2518,7 +2818,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_FILE_TOOLTIP :{BLACK}NewGRF failidest nimekiri installeerimata. Parameetrite muutmiseks klõpsa failil. +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 STR_NEWGRF_SETTINGS_SHOW_PARAMETERS :{BLACK}Näita parameetreid @@ -2526,8 +2827,8 @@ STR_NEWGRF_SETTINGS_TOGGLE_PALETTE :{BLACK}Vaheta p STR_NEWGRF_SETTINGS_TOGGLE_PALETTE_TOOLTIP :{BLACK}Vaheta valitud NewGRF-i paletti.{}Tee seda, kui NewGRF-i graafika paistab mängus roosa. STR_NEWGRF_SETTINGS_APPLY_CHANGES :{BLACK}Rakenda muudatused -STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_BUTTON :{BLACK}Otsi internetist puuduvat sisu -STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_TOOLTIP :{BLACK}Otsi kas puuduvat sisu leidub internetis +STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_BUTTON :{BLACK}Otsi internetist vajalike aineseid +STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_TOOLTIP :{BLACK}Proovi puuduvat ainest internetist leida STR_NEWGRF_SETTINGS_FILENAME :{BLACK}Faili nimi: {SILVER}{STRING} STR_NEWGRF_SETTINGS_GRF_ID :{BLACK}GRF ID: {SILVER}{STRING} @@ -2542,6 +2843,8 @@ 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 + # NewGRF parameters window STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}Muuda NewGRF parameetreid STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Sulge @@ -2587,7 +2890,7 @@ STR_NEWGRF_ERROR_FATAL_POPUP :{WHITE}Esines r STR_NEWGRF_ERROR_VERSION_NUMBER :OpenTTD väitel {1:STRING} ei tööta selle TTDPatch osaga. STR_NEWGRF_ERROR_DOS_OR_WINDOWS :{1:STRING} on {STRING} TTD osa jaoks. STR_NEWGRF_ERROR_UNSET_SWITCH :{1:STRING} on mõeldud kasutamiseks {STRING} -STR_NEWGRF_ERROR_INVALID_PARAMETER :vigane parameeter {1:STRING} jaoks: parameeter {STRING} ({NUM}) +STR_NEWGRF_ERROR_INVALID_PARAMETER :kõlbmatu «{1:STRING}» parameeter: parameeter {STRING} ({NUM}) STR_NEWGRF_ERROR_LOAD_BEFORE :{1:STRING} peab olema laetud enne {STRING} STR_NEWGRF_ERROR_LOAD_AFTER :{1:STRING} peab olema laetud pärast {STRING} STR_NEWGRF_ERROR_OTTD_VERSION_NUMBER :{1:STRING} nõuab OpenTTD osa {STRING} või uuemat @@ -2596,14 +2899,15 @@ STR_NEWGRF_ERROR_TOO_MANY_NEWGRFS_LOADED :Liiga palju New STR_NEWGRF_ERROR_STATIC_GRF_CAUSES_DESYNC :Laadides {1:STRING} staatilise NewGRF-na koos {STRING} võib põhjustada sünkrooni katkemist. STR_NEWGRF_ERROR_UNEXPECTED_SPRITE :Ootamatu sprite (sprite {3:NUM}) STR_NEWGRF_ERROR_UNKNOWN_PROPERTY :Ootamatu tegevus 0 property {4:HEX} (sprite {3:NUM}) -STR_NEWGRF_ERROR_INVALID_ID :Katse kasutada vigast ID'd (sprite {3:NUM}) +STR_NEWGRF_ERROR_INVALID_ID :Kasutati kõlbmatut ID-d («sprite» {3:NUM}) STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} sisaldab vigast pilti. Kõiki vigaseid pilte näidatakse punase küsimärgina (?) STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Sisaldab mitut Action 8 kirjet (sprite {3:NUM}) STR_NEWGRF_ERROR_READ_BOUNDS :Loe pseudo-sprite lõpust edasi (sprite {3:NUM}) -STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}Hetkel kasutatavast alus graafikapaketist puuduvad mõned spraidid.{}Palun uuenda alus graafikapaketti +STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}Praegune alusgraafika kogu ei sisalda mitmeid spraite.{}Palun uuenda alusgraafika kogu +STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}Praegune alusgraafika kogu ei sisalda mitmeid spraite.{}Palun uuenda alusgraafika kogu.{}Kuna sa mängid {YELLOW}OpenTTD arendusversiooniga{WHITE}, siis ilmselt pead sa kasutama {YELLOW}alusgraafika kogu arendusversiooni{WHITE} STR_NEWGRF_ERROR_GRM_FAILED :Soovitud GRFi ressursid ei ole saadaval (sprite {3:NUM}) STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} blokeeriti {STRING} poolt -STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Kehtetu/tundmatu sprite'i asetuse formaat (sprite {3:NUM}) +STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :«Sprite» paigutus kõlbmatus vormis («sprite» {3:NUM}) # NewGRF related 'general' warnings STR_NEWGRF_POPUP_CAUTION_CAPTION :{WHITE}Ettevaatust! @@ -2611,6 +2915,7 @@ STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}Sa soov STR_NEWGRF_DUPLICATE_GRFID :{WHITE}Ei saa faili lisada: korduv GRF ID STR_NEWGRF_COMPATIBLE_LOADED :{ORANGE}Sobivat faili ei leitud (ühilduv GRF fail on laaditud) +STR_NEWGRF_TOO_MANY_NEWGRFS :{WHITE}Ei saa faili lisada: NewGRF failide limiit on saavutatud STR_NEWGRF_COMPATIBLE_LOAD_WARNING :{WHITE}Puuduvatele failidele on laaditud ühilduvad GRF failid STR_NEWGRF_DISABLED_WARNING :{WHITE}Puuduvad GRF failid on välja lülitatud @@ -2618,7 +2923,7 @@ STR_NEWGRF_UNPAUSE_WARNING_TITLE :{YELLOW}Puuduol STR_NEWGRF_UNPAUSE_WARNING :{WHITE}Seisatuse lõpetamine võib põhjustada OpenTTD krahhi. Ära teavita järgnevatest krahhidest.{}Oled sa tõepoolest veendunud, et sa soovid seisatuse lõpetada? # NewGRF status -STR_NEWGRF_LIST_NONE :Puudub +STR_NEWGRF_LIST_NONE :Ei STR_NEWGRF_LIST_ALL_FOUND :Kõik failid olemas STR_NEWGRF_LIST_COMPATIBLE :{YELLOW}Sobivad failid leitud STR_NEWGRF_LIST_MISSING :{RED}Puuduvad failid @@ -2627,19 +2932,23 @@ 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_BROKEN_VEHICLE_LENGTH :{WHITE}Ettevõtte '{1:COMPANY}' rongil '{0:VEHICLE}' on ebasobiv pikkus. See on tõenäoliselt põhjustatud problemaatilistest NewGRF-dest. Mäng võib kokku joosta või sünkroonist välja minna +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. STR_NEWGRF_BUGGY_ARTICULATED_CARGO :{WHITE}Veose/ümberseadistamise teave sõidukil '{1:ENGINE}' erineb ehitamisaegsest ostunimekirjast. Seetõttu võib uuendamisel või asendamisel ümberseadistamine ebaõnnestuda STR_NEWGRF_BUGGY_ENDLESS_PRODUCTION_CALLBACK :{WHITE}'{1:STRING}' põhjustas toodangu tagasikutsumises lõpmatu korduse -STR_NEWGRF_BUGGY_UNKNOWN_CALLBACK_RESULT :{WHITE}Tagasikutse {1:HEX} tagastas teadmata/kehtetu vaste {2:HEX} +STR_NEWGRF_BUGGY_UNKNOWN_CALLBACK_RESULT :{WHITE}Tagasikutse «{1:HEX}» tulemus «{2:HEX}» on kõlbmatu # 'User removed essential NewGRFs'-placeholders for stuff without specs -STR_NEWGRF_INVALID_CARGO : +STR_NEWGRF_INVALID_CARGO : STR_NEWGRF_INVALID_CARGO_ABBREV :?? -STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} -STR_NEWGRF_INVALID_ENGINE : -STR_NEWGRF_INVALID_INDUSTRYTYPE : +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-ide skanneerimine @@ -2648,7 +2957,7 @@ STR_NEWGRF_SCAN_STATUS :{BLACK}Skanneer STR_NEWGRF_SCAN_ARCHIVES :Arhiivide otsimine # Sign list window -STR_SIGN_LIST_CAPTION :{WHITE}Siltide nimekiri - {COMMA} Silt{P "" i} +STR_SIGN_LIST_CAPTION :{WHITE}Siltide register - {COMMA} silt{P "" i} STR_SIGN_LIST_MATCH_CASE :{BLACK}Tõstutundlik STR_SIGN_LIST_MATCH_CASE_TOOLTIP :{BLACK}Lülita sisse/välja tõstutundlikkuse kasutamine siltide filtreerimisel @@ -2678,14 +2987,14 @@ STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED_GENERAL :{ORANGE}{STRING}{GREEN} kohale toimetatud STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{RED} (ikka veel vaja) STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{GREEN} (kohale toimetatud) -STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}Linn kasvab iga {ORANGE}{COMMA}{BLACK} päev{P "" s} +STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}Linn kasvab {ORANGE}{COMMA}{BLACK} päevaga STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}Linn kasvab iga {ORANGE}{COMMA}{BLACK} päeva tagant (rahastatud) STR_TOWN_VIEW_TOWN_GROW_STOPPED :{BLACK}Linn {RED}ei{BLACK} kasva STR_TOWN_VIEW_NOISE_IN_TOWN :{BLACK}Mürapiirang linnas: {ORANGE}{COMMA}{BLACK} suurim: {ORANGE}{COMMA} STR_TOWN_VIEW_CENTER_TOOLTIP :{BLACK}Vaate viimine linnale STR_TOWN_VIEW_LOCAL_AUTHORITY_BUTTON :{BLACK}Omavalitsus STR_TOWN_VIEW_LOCAL_AUTHORITY_TOOLTIP :{BLACK}Näita teavet kohaliku omavalitsuse kohta -STR_TOWN_VIEW_RENAME_TOOLTIP :{BLACK}Linnanime muutmine +STR_TOWN_VIEW_RENAME_TOOLTIP :{BLACK}Linna nime muutmine STR_TOWN_VIEW_EXPAND_BUTTON :{BLACK}Laienda STR_TOWN_VIEW_EXPAND_TOOLTIP :{BLACK}Linna suuruse suurendamine @@ -2722,12 +3031,16 @@ STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT :{YELLOW} Üheks STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW} Linna omavalitusele ettevõtte hinnangu tõstmise eesmärgil altkäemaksu pakkumine. Vahele jäädes tuleb trahvi maksta.{} Hind: {CURRENCY_LONG} # Goal window -STR_GOALS_CAPTION :{WHITE}Eesmärgid -STR_GOALS_GLOBAL_TITLE :{BLACK}Globaalsed eesmärgid: +STR_GOALS_CAPTION :{WHITE}{COMPANY} eesmärgid +STR_GOALS_SPECTATOR_CAPTION :{WHITE}Üldeesmärgid +STR_GOALS_GLOBAL_TITLE :{BLACK}Üldised eesmärgid: STR_GOALS_TEXT :{ORANGE}{STRING} STR_GOALS_NONE :{ORANGE}- Mitte ühtegi - +STR_GOALS_SPECTATOR_NONE :{ORANGE}- Kehtetu - +STR_GOALS_PROGRESS :{ORANGE}{STRING} +STR_GOALS_PROGRESS_COMPLETE :{GREEN}{STRING} STR_GOALS_COMPANY_TITLE :{BLACK}Ettevõtte eesmärgid: -STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Kliki sihtmärgil et liikuda põhikuvas tööstuse/linna/ruudu asukohale. Ctrl+klõps avab uue vaateakna tööstuse/linna/ruudu asukohas +STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Klõpsa eesmärgil, et liigutada vaateaken tööstuse/linna/ruudu asukohale. Ctrl+klõps avab uue vaateakna tööstuse/linna/ruudu asukohas # Goal question window STR_GOAL_QUESTION_CAPTION_QUESTION :Küsimus @@ -2764,6 +3077,18 @@ STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}Juba toe STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING} kohast {STRING} kohta {STRING}{YELLOW} ({COMPANY}{YELLOW}, kuni {DATE_SHORT}) STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Vajuta pakkumisele, et näha linna või tööstuse asukohta. Ctrl+klõps avab uue vaate ettevõtte/linna asukohast +# Story book window +STR_STORY_BOOK_CAPTION :{WHITE}«{COMPANY}» juturaamat +STR_STORY_BOOK_SPECTATOR_CAPTION :{WHITE}Üldjuturaamat +STR_STORY_BOOK_TITLE :{YELLOW}{STRING} +STR_STORY_BOOK_GENERIC_PAGE_ITEM :Lehekülg {NUM} +STR_STORY_BOOK_SEL_PAGE_TOOLTIP :{BLACK}Vali lehekülg rippmenüüst. +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. STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}Mitme asja valimiseks kasuta Ctrl-klahvi @@ -2777,19 +3102,44 @@ 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} teel jaamast {STATION}) +STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} jaamast «{STATION}») +STR_STATION_VIEW_RESERVED :{YELLOW}({CARGO_SHORT} kinni laadimiseks) STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Võtab vastu STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Näita vastuvõetavate veoste nimistut STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}Võtab vastu: {WHITE}{CARGO_LIST} +STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Antud jaamal on eksklusiivsed transpordiõigused selles linnas. +STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} ostis eksklusiivsed transpordiõigused antud linnas. STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Hinnangud STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Näita jaamahinnangut -STR_STATION_VIEW_CARGO_RATINGS_TITLE :{BLACK}Kohaliku veoteenuse hinnang: -STR_STATION_VIEW_CARGO_RATING :{WHITE}{STRING}: {YELLOW}{STRING} ({COMMA}%) +STR_STATION_VIEW_SUPPLY_RATINGS_TITLE :{BLACK}Tarne kuus ja kohalik hinnang: +STR_STATION_VIEW_CARGO_SUPPLY_RATING :{WHITE}{STRING}: {YELLOW}{COMMA} / {STRING} ({COMMA}%) + +STR_STATION_VIEW_GROUP :{BLACK}Rühmitusalus +STR_STATION_VIEW_WAITING_STATION :Jaam: ootel +STR_STATION_VIEW_WAITING_AMOUNT :Summa: ootel +STR_STATION_VIEW_PLANNED_STATION :Jaam: eeldatav +STR_STATION_VIEW_PLANNED_AMOUNT :Summa: eeldatav +STR_STATION_VIEW_FROM :{YELLOW}{CARGO_SHORT} jaamast {STATION} +STR_STATION_VIEW_VIA :{YELLOW}{CARGO_SHORT} läbi jaama {STATION} +STR_STATION_VIEW_TO :{YELLOW}{CARGO_SHORT} jaama {STATION} +STR_STATION_VIEW_FROM_ANY :{RED}{CARGO_SHORT} teadmata jaamast +STR_STATION_VIEW_TO_ANY :{RED}{CARGO_SHORT} ühte jaama +STR_STATION_VIEW_VIA_ANY :{RED}{CARGO_SHORT} läbi ühe jaama +STR_STATION_VIEW_FROM_HERE :{GREEN}{CARGO_SHORT} sellest jaamast +STR_STATION_VIEW_VIA_HERE :{GREEN}{CARGO_SHORT} peatumas selles jaamas +STR_STATION_VIEW_TO_HERE :{GREEN}{CARGO_SHORT} siia jaama +STR_STATION_VIEW_NONSTOP :{YELLOW}{CARGO_SHORT} ilma peatumata + +STR_STATION_VIEW_GROUP_S_V_D :Lähe-Läbi-Siht +STR_STATION_VIEW_GROUP_S_D_V :Lähe-Siht-Läbi +STR_STATION_VIEW_GROUP_V_S_D :Läbi-Lähe-Siht +STR_STATION_VIEW_GROUP_V_D_S :Läbi-Siht-Lähe +STR_STATION_VIEW_GROUP_D_S_V :Siht-Lähe-Läbi +STR_STATION_VIEW_GROUP_D_V_S :Siht-Läbi-Lähe ############ range for rating starts STR_CARGO_RATING_APPALLING :Kohutav @@ -2812,6 +3162,8 @@ STR_STATION_VIEW_SCHEDULED_SHIPS_TOOLTIP :{BLACK}Näita k STR_STATION_VIEW_RENAME_STATION_CAPTION :Jaama nime vahetamine +STR_STATION_VIEW_CLOSE_AIRPORT :{BLACK}Sulge lennujaam +STR_STATION_VIEW_CLOSE_AIRPORT_TOOLTIP :{BLACK}Keela lennukite maandumine selles lennujaamas # Waypoint/buoy view window STR_WAYPOINT_VIEW_CAPTION :{WHITE}{WAYPOINT} @@ -2832,7 +3184,7 @@ STR_FINANCES_SECTION_TRAIN_RUNNING_COSTS :{GOLD}Rongide k STR_FINANCES_SECTION_ROAD_VEHICLE_RUNNING_COSTS :{GOLD}Mootorsõidukite käituskulud STR_FINANCES_SECTION_AIRCRAFT_RUNNING_COSTS :{GOLD}Õhusõidukite käituskulud STR_FINANCES_SECTION_SHIP_RUNNING_COSTS :{GOLD}Laevade käituskulud -STR_FINANCES_SECTION_PROPERTY_MAINTENANCE :{GOLD}Infrastruktuuri korrashoid +STR_FINANCES_SECTION_PROPERTY_MAINTENANCE :{GOLD}Taristu hooldamine STR_FINANCES_SECTION_TRAIN_INCOME :{GOLD}Rongide tulud STR_FINANCES_SECTION_ROAD_VEHICLE_INCOME :{GOLD}Mootorsõidukite tulud STR_FINANCES_SECTION_AIRCRAFT_INCOME :{GOLD}Õhusõidukite tulud @@ -2850,7 +3202,7 @@ STR_FINANCES_BORROW_BUTTON :{BLACK}Laena {C STR_FINANCES_BORROW_TOOLTIP :{BLACK}Laena raha STR_FINANCES_REPAY_BUTTON :{BLACK}Tagasta {CURRENCY_LONG} STR_FINANCES_REPAY_TOOLTIP :{BLACK}Maksa laen osaliselt tagasi -STR_FINANCES_INFRASTRUCTURE_BUTTON :{BLACK}Infrastruktuur +STR_FINANCES_INFRASTRUCTURE_BUTTON :{BLACK}Taristu # Company view STR_COMPANY_VIEW_CAPTION :{WHITE}{COMPANY}{BLACK}{COMPANY_NUM} @@ -2866,7 +3218,7 @@ STR_COMPANY_VIEW_SHIPS :{WHITE}{COMMA} STR_COMPANY_VIEW_VEHICLES_NONE :{WHITE}Mitte ühtegi STR_COMPANY_VIEW_COMPANY_VALUE :{GOLD}Firmaväärtus: {WHITE}{CURRENCY_LONG} STR_COMPANY_VIEW_SHARES_OWNED_BY :{WHITE}({COMMA}% on ettevõtte {COMPANY} käes) -STR_COMPANY_VIEW_INFRASTRUCTURE :{GOLD}Infrastruktuur: +STR_COMPANY_VIEW_INFRASTRUCTURE :{GOLD}Taristu: STR_COMPANY_VIEW_INFRASTRUCTURE_RAIL :{WHITE}{COMMA} röö{P bas pad} STR_COMPANY_VIEW_INFRASTRUCTURE_ROAD :{WHITE}{COMMA} sõidutee tük{P k id} STR_COMPANY_VIEW_INFRASTRUCTURE_WATER :{WHITE}{COMMA} veekogu ruu{P t dud} @@ -2881,7 +3233,7 @@ STR_COMPANY_VIEW_VIEW_HQ_TOOLTIP :{BLACK}Ettevõt STR_COMPANY_VIEW_RELOCATE_HQ :{BLACK}Liiguta peakorterit STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Ehita ettevõtte peakorter mujale 1% firmaväärtuse tasu eest. Shift+klõps näitab toimingu eeldatavat maksumust STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}Täpsustused -STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}Vaata infrastruktuuri kogust detailselt +STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}Vaata täpset taristu hulka STR_COMPANY_VIEW_NEW_FACE_BUTTON :{BLACK}Uus nägu STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}Vali presidendile uus nägu @@ -2903,7 +3255,7 @@ STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :Presidendi nimi STR_BUY_COMPANY_MESSAGE :{WHITE}Otsime ettevõtet, kes võtaks meie firma üle.{}{}Kas soovite osta ettevõtte {COMPANY} {CURRENCY_LONG} eest? # Company infrastructure window -STR_COMPANY_INFRASTRUCTURE_VIEW_CAPTION :{WHITE} {COMPANY} Infrastruktuur +STR_COMPANY_INFRASTRUCTURE_VIEW_CAPTION :{WHITE} {COMPANY} Taristu STR_COMPANY_INFRASTRUCTURE_VIEW_RAIL_SECT :{GOLD}Raudtee tükid: STR_COMPANY_INFRASTRUCTURE_VIEW_SIGNALS :{WHITE}Signaalid STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD_SECT :{GOLD}Tee tükid: @@ -2914,7 +3266,6 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS :{WHITE}Kanalid STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}Jaamad: STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}Jaama ruudud STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}Lennuväljad -STR_COMPANY_INFRASTRUCTURE_VIEW_COST :{WHITE}{1:CURRENCY_LONG}/a ({0:COMMA}) STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL :{WHITE}{CURRENCY_LONG}/a # Industry directory @@ -2931,6 +3282,7 @@ STR_INDUSTRY_VIEW_PRODUCTION_LAST_MONTH_TITLE :{BLACK}Eelmise STR_INDUSTRY_VIEW_TRANSPORTED :{YELLOW}{CARGO_LONG}{STRING}{BLACK} ({COMMA}% veetud) STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Vaate keskendamine tööstusele STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Tootlikkuse tase: {YELLOW}{COMMA}% +STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}Tööstus teatab kohesest sulgemisest! ############ range for requires starts STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Vajab: {YELLOW}{STRING}{STRING} @@ -2967,7 +3319,7 @@ STR_VEHICLE_LIST_AVAILABLE_SHIPS :Saadaval laevad STR_VEHICLE_LIST_AVAILABLE_AIRCRAFT :Saadaval õhusõidukid STR_VEHICLE_LIST_AVAILABLE_ENGINES_TOOLTIP :{BLACK}Vaata nimekirja saadaolevatest seda tüüpi veovahenditest -STR_VEHICLE_LIST_MANAGE_LIST :{BLACK}Halda nimekirja +STR_VEHICLE_LIST_MANAGE_LIST :{BLACK}Halda registrit STR_VEHICLE_LIST_MANAGE_LIST_TOOLTIP :{BLACK}Saada juhised kõikidele selles nimekirjas olevatele veovahenditele STR_VEHICLE_LIST_REPLACE_VEHICLES :Asenda veovahendeid STR_VEHICLE_LIST_SEND_FOR_SERVICING :Saada hooldusesse @@ -2999,6 +3351,7 @@ 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_GROUP_ADD_SHARED_VEHICLE :Kõik jagatud sõidukid STR_GROUP_REMOVE_ALL_VEHICLES :Eemalda kõik sõidukid @@ -3114,20 +3467,20 @@ STR_DEPOT_CLONE_ROAD_VEHICLE :{BLACK}Kloonimi STR_DEPOT_CLONE_SHIP :{BLACK}Klooni laev STR_DEPOT_CLONE_AIRCRAFT :{BLACK}Klooni lennuk -STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}See ehitab koopia rongist koos kõikide vagunitega. Vajuta sellele nuppule, ning seejärel rongile depoo sees või väljas. Ctrl+klõps jagab sihtpunkte. Shift+klõpsuga kuvatakse eeldatav ostuhind -STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}See paljundab mootorsõidukit. Klõpsa seda nuppu, ning seejärel mootorsõidukil depoos või sellest väljas. Ctrl+klõps jagab sihtpunkte. Shift+klõpsuga kuvatakse eeldatav ostuhind -STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}Ostab samasuguse laeva. Vajuta sellele nuppule, ning seejärel laevale laevaremonditehase sees või väljas. Ctrl+klõpsuga jagatakse sihtpunkte. Shift+klõpsuga kuvatakse eeldatav ostuhind -STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Ostab samasuguse õhusõiduki. Klõpsa sellele nuppule, ning seejärel lennukile angaari sees või väljas. Ctrl+klõpsuga jagatakse sihtpunkte. Shift+klõpsuga kuvatakse eeldatav ostuhind +STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}Ostetakse samasugune rong koos kõikide vagunitega. Vajuta sellele nupule, ning seejärel rongile depoo sees või väljas. «Ctrl»+klõps jagab ülesandeid. «Shift»+klõps näitab eeldatavat ostuhinda +STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Ostetakse samasugune mootorsõiduk. Vajuta sellele nupule, ning seejärel mootorsõidukil depoos või sellest väljas. «Ctrl»+klõps jagab ülesandeid. «Shift»+klõps näitab eeldatavat ostuhinda +STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}Ostetakse samasugune laev. Vajuta sellele nupule, ning seejärel laevale laevaremonditehase sees või väljas. «Ctrl»+klõps jagab ülesandeid. «Shift»+klõps näitab eeldatavat ostuhinda +STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Ostetakse samasugune õhusõiduk. Vajuta sellele nupule, ning seejärel lennukile angaari sees või väljas. «Ctrl»+klõps jagab ülesandeid. «Shift»+klõps näitab eeldatavat ostuhinda STR_DEPOT_TRAIN_LOCATION_TOOLTIP :{BLACK}Keskenda põhivaade rongidepoo kohale STR_DEPOT_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Vii vaade garaažile. Ctrl+klõps avab garaažil uue vaate. STR_DEPOT_SHIP_LOCATION_TOOLTIP :{BLACK}Vii pea vaade paadikuuri juurde STR_DEPOT_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Vii vaade angaarile -STR_DEPOT_VEHICLE_ORDER_LIST_TRAIN_TOOLTIP :{BLACK}Võta nimekiri kõikidest rongidest selles jaamas nende käskude järgi -STR_DEPOT_VEHICLE_ORDER_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}Hangi kõikidest autodest nimekiri, kus praegune depoo on üks sihtpunktidest -STR_DEPOT_VEHICLE_ORDER_LIST_SHIP_TOOLTIP :{BLACK}Võta nimekiri kõikidest laevadest selles sadamas nende käskude järgi -STR_DEPOT_VEHICLE_ORDER_LIST_AIRCRAFT_TOOLTIP :{BLACK}Võta nimekiri kõikidest lennukitest suvalistest angaaridest selles lennujaamas nende käskude järgi +STR_DEPOT_VEHICLE_ORDER_LIST_TRAIN_TOOLTIP :{BLACK}Koosta nimekiri kõikidest rongidest, mille ülesannete hulgas on see depoo +STR_DEPOT_VEHICLE_ORDER_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}Koosta nimekiri kõikidest mootorsõidukitest, mille ülesannete hulgas on see depoo +STR_DEPOT_VEHICLE_ORDER_LIST_SHIP_TOOLTIP :{BLACK}Koosta nimekiri kõikidest laevadest, mille ülesannete hulgas on see angaar +STR_DEPOT_VEHICLE_ORDER_LIST_AIRCRAFT_TOOLTIP :{BLACK}Koosta nimekiri kõikidest rongidest, mille ülesannete hulgas on selle lennujaama angaar STR_DEPOT_MASS_STOP_DEPOT_TRAIN_TOOLTIP :{BLACK}Vajuta, kui tahad seisata kõiki ronge jaamas STR_DEPOT_MASS_STOP_DEPOT_ROAD_VEHICLE_TOOLTIP :{BLACK}Vajuta, kui tahad seisata kõiki masinaid garaažis @@ -3168,7 +3521,8 @@ STR_REPLACE_VEHICLE_AIRCRAFT :Õhusõiduk 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. -STR_REPLACE_VEHICLES_START :{BLACK}Alusta Sõidukite Vahetamist +STR_REPLACE_VEHICLES_START :{BLACK}Alusta sõidukite vahetamist +STR_REPLACE_VEHICLES_NOW :Asenda kohe kõik sõidukid STR_REPLACE_VEHICLES_WHEN_OLD :Asenda ainult vanu sõidukeid STR_REPLACE_HELP_START_BUTTON :{BLACK}Vajuta vasakul asuva veduri asendamiseks paremal valitud veduriga STR_REPLACE_NOT_REPLACING :{BLACK}Ei asenda praegu @@ -3205,9 +3559,9 @@ STR_VEHICLE_VIEW_ROAD_VEHICLE_SEND_TO_DEPOT_TOOLTIP :{BLACK}Saada s STR_VEHICLE_VIEW_SHIP_SEND_TO_DEPOT_TOOLTIP :{BLACK}Saada laev angaari. Ctrl+klõps ainult teenindab STR_VEHICLE_VIEW_AIRCRAFT_SEND_TO_DEPOT_TOOLTIP :{BLACK}Saada lennuk angaari -STR_VEHICLE_VIEW_CLONE_TRAIN_INFO :{BLACK}Ostab samasuguse rongi koos kõikide vagunitega. Ctrl+klõpsuga jagatakse sihtpunkte. Shift+klõpsuga kuvatakse eeldatav ostuhind -STR_VEHICLE_VIEW_CLONE_ROAD_VEHICLE_INFO :{BLACK}Ostab samasuguse maanteesõiduki. Ctrl+klõpsuga jagatakse sihtpunkte. Shift+klõpsuga kuvatakse eeldatav ostuhind -STR_VEHICLE_VIEW_CLONE_SHIP_INFO :{BLACK}Ostab samasuguse laeva. Vajuta sellele nuppule, ning seejärel laevale laevaremonditehase sees või väljas. Ctrl+klõpsuga jagatakse sihtpunkte. Shift+klõpsuga kuvatakse eeldatav ostuhind +STR_VEHICLE_VIEW_CLONE_TRAIN_INFO :{BLACK}Ostab samasuguse rongi koos kõikide vagunitega. «Ctrl»+klõps jagab ülesandeid. «Shift»+klõps näitab eeldatavat ostuhinda +STR_VEHICLE_VIEW_CLONE_ROAD_VEHICLE_INFO :{BLACK}Ostab samasuguse maanteesõiduki. «Ctrl»+klõps jagab ülesandeid. «Shift»+klõps näitab eeldatavat ostuhinda +STR_VEHICLE_VIEW_CLONE_SHIP_INFO :{BLACK}Ostab samasuguse laeva. Vajuta sellele nuppule, ning seejärel laevale laevaremonditehase sees või väljas. «Ctrl»+klõps jagab ülesandeid. «Shift»+klõps näitab eeldatavat ostuhinda STR_VEHICLE_VIEW_CLONE_AIRCRAFT_INFO :{BLACK}Ostab samasuguse õhusõiduki. Ctrl+klõpsuga jagatakse sihtpunkte. Shift+klõpsuga kuvatakse eeldatav ostuhind STR_VEHICLE_VIEW_TRAIN_IGNORE_SIGNAL_TOOLTIP :{BLACK}Sunni rongi signaale eirama @@ -3220,10 +3574,10 @@ STR_VEHICLE_VIEW_AIRCRAFT_REFIT_TOOLTIP :{BLACK}Seadista STR_VEHICLE_VIEW_TRAIN_REVERSE_TOOLTIP :{BLACK}Pööra rong ümber STR_VEHICLE_VIEW_ROAD_VEHICLE_REVERSE_TOOLTIP :{BLACK}Sunni veovahendit ümber pöörama -STR_VEHICLE_VIEW_TRAIN_ORDERS_TOOLTIP :{BLACK}Näita rongi sihtpunkte -STR_VEHICLE_VIEW_ROAD_VEHICLE_ORDERS_TOOLTIP :{BLACK}Näita veovahendi sihtpunkte -STR_VEHICLE_VIEW_SHIP_ORDERS_TOOLTIP :{BLACK}Näita laeva sihtpunkte -STR_VEHICLE_VIEW_AIRCRAFT_ORDERS_TOOLTIP :{BLACK}Näita lennuki sihtpunke +STR_VEHICLE_VIEW_TRAIN_ORDERS_TOOLTIP :{BLACK}Näita rongi ülesandeid. «Ctrl»+klõps näitab rongi sõiduplaani +STR_VEHICLE_VIEW_ROAD_VEHICLE_ORDERS_TOOLTIP :{BLACK}Näita mootorsõiduki ülesandeid. «Ctrl»+klõps näitab mootorsõiduki sõiduplaani +STR_VEHICLE_VIEW_SHIP_ORDERS_TOOLTIP :{BLACK}Näita laeva ülesanded. «Ctrl»+klõps näitab laeva sõiduplaani +STR_VEHICLE_VIEW_AIRCRAFT_ORDERS_TOOLTIP :{BLACK}Näita lennuki ülesandeid. «Ctrl»+klõps näitab õhusõiduki sõiduplaani STR_VEHICLE_VIEW_TRAIN_SHOW_DETAILS_TOOLTIP :{BLACK}Näita rongi täpsustusi STR_VEHICLE_VIEW_ROAD_VEHICLE_SHOW_DETAILS_TOOLTIP :{BLACK}Näita mootorsõiduki täpsustusi @@ -3243,7 +3597,7 @@ STR_VEHICLE_STATUS_BROKEN_DOWN :{RED}Rike STR_VEHICLE_STATUS_STOPPED :{RED}Peatatud STR_VEHICLE_STATUS_TRAIN_STOPPING_VEL :{RED}Peatub, {VELOCITY} STR_VEHICLE_STATUS_TRAIN_NO_POWER :{RED}Vool puudub -STR_VEHICLE_STATUS_TRAIN_STUCK :{ORANGE}Ootamas vaba rada +STR_VEHICLE_STATUS_TRAIN_STUCK :{ORANGE}Vaba raja ootamine STR_VEHICLE_STATUS_AIRCRAFT_TOO_FAR :{ORANGE}Liiga pikk vahemaa järgmise sihtpunktini STR_VEHICLE_STATUS_HEADING_FOR_STATION_VEL :{LTBLUE}Siht: {STATION}, {VELOCITY} @@ -3288,11 +3642,16 @@ 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}Hooldusvahemik: {LTBLUE}{COMMA}päevad{BLACK} Viimati hooldatud: {LTBLUE}{DATE_LONG} -STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Hooldusvahemik: {LTBLUE}{COMMA}%{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ä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 STR_QUERY_RENAME_SHIP_CAPTION :{WHITE}Anna laevale nimi @@ -3325,7 +3684,9 @@ STR_VEHICLE_DETAILS_TRAIN_ARTICULATED_RV_CAPACITY :{BLACK}Kandevõ STR_REFIT_CAPTION :{WHITE}{VEHICLE} (Seadista ümber) STR_REFIT_TITLE :{GOLD}Vali veetav veoseliik: STR_REFIT_NEW_CAPACITY_COST_OF_REFIT :{BLACK}Uus kandevõime: {GOLD}{CARGO_LONG}{}{BLACK}Laeva ümberseadistamise hind: {RED}{CURRENCY_LONG} +STR_REFIT_NEW_CAPACITY_INCOME_FROM_REFIT :{BLACK}Uus mahtuvus: {GOLD}{CARGO_LONG}{}{BLACK}Sissetulek veoseliigi muutusest: {GREEN}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_COST_OF_AIRCRAFT_REFIT :{BLACK}Uus kandevõime: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Ümberseadistamise maksumus: {RED}{CURRENCY_LONG} +STR_REFIT_NEW_CAPACITY_INCOME_FROM_AIRCRAFT_REFIT :{BLACK}Uus mahtuvus: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Sissetulek veoseliigi muutusest: {GREEN}{CURRENCY_LONG} STR_REFIT_SELECT_VEHICLES_TOOLTIP :{BLACK}Vali ümberseadistatavad sõidukid. Hiirega lohistades saab valida mitu sõidukit. Klõpsates tühjal kohal valitakse terve sõiduk. Ctrl+klõps valib sõiduki ja temale järgneva keti STR_REFIT_TRAIN_LIST_TOOLTIP :{BLACK}Vali rongi veetav veoseliik @@ -3344,15 +3705,15 @@ STR_REFIT_SHIP_REFIT_TOOLTIP :{BLACK}Seadista STR_REFIT_AIRCRAFT_REFIT_TOOLTIP :{BLACK}Seadista lennuk ümber, et kanda valitud kaubatüüpi # Order view -STR_ORDERS_CAPTION :{WHITE}{VEHICLE} (käsud) +STR_ORDERS_CAPTION :{WHITE}{VEHICLE} (ülesanded) STR_ORDERS_TIMETABLE_VIEW :{BLACK}Sõiduplaan STR_ORDERS_TIMETABLE_VIEW_TOOLTIP :{BLACK}Näita sõiduplaani -STR_ORDERS_LIST_TOOLTIP :{BLACK}Sihtpunktide nimekiri. Valimiseks klõpsa sihtpunktil. Ctrl+klõps keskendab vaateakna jaama peale. +STR_ORDERS_LIST_TOOLTIP :{BLACK}Ülesannete register - ülesanne valitakse klõpsamisega. Ctrl+klõps keskendab vaate ülesande sihile STR_ORDER_INDEX :{COMMA}:{NBSP} STR_ORDER_TEXT :{STRING} {STRING} {STRING} -STR_ORDERS_END_OF_ORDERS :- - Sihtpunktide lõpp - - +STR_ORDERS_END_OF_ORDERS :- - Ülesannete lõpp - - STR_ORDERS_END_OF_SHARED_ORDERS :- - Jagatud käskluste lõpp - - # Order bottom buttons @@ -3361,28 +3722,28 @@ STR_ORDER_GO_TO :Mine STR_ORDER_GO_NON_STOP_TO :Mine peatumata STR_ORDER_GO_VIA :Mine läbi STR_ORDER_GO_NON_STOP_VIA :Mine peatumata läbi -STR_ORDER_TOOLTIP_NON_STOP :{BLACK}Valitud sihtpunktis peatumise protseduuri muutmine +STR_ORDER_TOOLTIP_NON_STOP :{BLACK}Valitud ülesande peatumisprotseduuri muutmine STR_ORDER_TOGGLE_FULL_LOAD :{BLACK}Laadi üks täis -STR_ORDER_DROP_LOAD_IF_POSSIBLE :Võimalusel laadi -STR_ORDER_DROP_FULL_LOAD_ALL :Täis laadida kogu laadung -STR_ORDER_DROP_FULL_LOAD_ANY :Täis laadida mistahes last +STR_ORDER_DROP_LOAD_IF_POSSIBLE :Laadi peale +STR_ORDER_DROP_FULL_LOAD_ALL :Laadi kõik kaubad täis +STR_ORDER_DROP_FULL_LOAD_ANY :Laadi üks kaup täis STR_ORDER_DROP_NO_LOADING :Mitte laadida -STR_ORDER_TOOLTIP_FULL_LOAD :{BLACK}Valitud sihtpunktis pealelaadimise protseduuri muutmine +STR_ORDER_TOOLTIP_FULL_LOAD :{BLACK}Valitud ülesande pealelaadimisprotseduuri muutmine STR_ORDER_TOGGLE_UNLOAD :{BLACK}Laadi kõik maha -STR_ORDER_DROP_UNLOAD_IF_ACCEPTED :Kui võetakse vastu, laadi maha -STR_ORDER_DROP_UNLOAD :Laadi kõik maha +STR_ORDER_DROP_UNLOAD_IF_ACCEPTED :Laadi tühjaks nõudlusel +STR_ORDER_DROP_UNLOAD :Laadi tühjaks STR_ORDER_DROP_TRANSFER :Laadi ümber STR_ORDER_DROP_NO_UNLOADING :Mitte maha laadida -STR_ORDER_TOOLTIP_UNLOAD :{BLACK}Valitud sihtpunktis mahalaadimise protseduuri muutmine +STR_ORDER_TOOLTIP_UNLOAD :{BLACK}Valitud ülesande mahalaadimisprotseduuri muutmine STR_ORDER_REFIT :{BLACK}Taasseadista STR_ORDER_REFIT_TOOLTIP :{BLACK}Vali, millist laadungit ümber seadistada selles järjestuses. Ümberseadistuse käsu eemaldamiseks hoia klõpsamise ajal all Control nuppu STR_ORDER_REFIT_AUTO :{BLACK}Automaatne ümberseadistamine STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}Vali kauba tüüp millele peaks automaatse ümberseadistamisega üle minema. Ctrl-klõps eemaldab valiku. Automaatne ümberseadistamine saab toimuda ainult siis kui sõiduk seda lubab. STR_ORDER_DROP_REFIT_AUTO :Fikseeritud kaubatüüp -STR_ORDER_DROP_REFIT_AUTO_ANY :Saadavuses olev kaup +STR_ORDER_DROP_REFIT_AUTO_ANY :Võimalikud kaubad STR_ORDER_SERVICE :{BLACK}Hooldus STR_ORDER_DROP_GO_ALWAYS_DEPOT :Alati mine @@ -3390,16 +3751,16 @@ STR_ORDER_DROP_SERVICE_DEPOT :Vajadusel hoold STR_ORDER_DROP_HALT_DEPOT :Peatu STR_ORDER_SERVICE_TOOLTIP :{BLACK}Jäta see käsk vahele, kui hooldust ei vajata -STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}Sõiduki andmed, millel sihtpunkti vahetamine põhineb +STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}Sõiduki andmed, millel ülesande vahetamine põhineb # Conditional order variables, must follow order of OrderConditionVariable enum -STR_ORDER_CONDITIONAL_LOAD_PERCENTAGE :Koorem prontsentides +STR_ORDER_CONDITIONAL_LOAD_PERCENTAGE :Koorem protsentides STR_ORDER_CONDITIONAL_RELIABILITY :Tehnoseisund STR_ORDER_CONDITIONAL_MAX_SPEED :Tippkiirus STR_ORDER_CONDITIONAL_AGE :Vanus (aastates) STR_ORDER_CONDITIONAL_REQUIRES_SERVICE :Vajab hooldust STR_ORDER_CONDITIONAL_UNCONDITIONALLY :Alati -STR_ORDER_CONDITIONAL_REMAINING_LIFETIME :Allesjäänud eluaeg (aastates) +STR_ORDER_CONDITIONAL_REMAINING_LIFETIME :Amortiseerumiseni (aastaid) STR_ORDER_CONDITIONAL_COMPARATOR_TOOLTIP :{BLACK}Kuidas sõiduki andmeid antud väärtusega võrreldakse STR_ORDER_CONDITIONAL_COMPARATOR_EQUALS :on võrdne @@ -3415,20 +3776,20 @@ STR_ORDER_CONDITIONAL_VALUE_TOOLTIP :{BLACK}Väärtu STR_ORDER_CONDITIONAL_VALUE_CAPT :{WHITE}Sisesta väärtus, millega võrrelda STR_ORDERS_SKIP_BUTTON :{BLACK}Jäta vahele -STR_ORDERS_SKIP_TOOLTIP :{BLACK}Jäta praegune järjestus vahele ja alusta järgmisega. CTRL + klõps jätab vahele kuni valitud järjestuseni +STR_ORDERS_SKIP_TOOLTIP :{BLACK}Jäta praegune ülesannete vahele ja alusta järgmisega. Ctrl+klõps valib ülesande ja jätab teised ülesanded vahele STR_ORDERS_DELETE_BUTTON :{BLACK}Kustuta -STR_ORDERS_DELETE_TOOLTIP :{BLACK}Kustuta valitud käsk -STR_ORDERS_DELETE_ALL_TOOLTIP :{BLACK}Kustuta kõik käsud +STR_ORDERS_DELETE_TOOLTIP :{BLACK}Kustuta valitud ülesanne +STR_ORDERS_DELETE_ALL_TOOLTIP :{BLACK}Tühjenda sihiloend STR_ORDERS_STOP_SHARING_BUTTON :{BLACK}Lõpeta jagamine -STR_ORDERS_STOP_SHARING_TOOLTIP :{BLACK}Peata käskude jagamine. Ctrl+klõps kustutab ka kõik sellele sõidukile antud käsud +STR_ORDERS_STOP_SHARING_TOOLTIP :{BLACK}Lõpeta sihiloendi jagamine. Sihiloend tühjendatakse Ctrl+klõpsu abil STR_ORDERS_GO_TO_BUTTON :{BLACK}Mine STR_ORDER_GO_TO_NEAREST_DEPOT :Mine lähimasse depoosse STR_ORDER_GO_TO_NEAREST_HANGAR :Mine lähimasse angaari -STR_ORDER_CONDITIONAL :Tinglik sihtpunkti vahetamine +STR_ORDER_CONDITIONAL :Ülesande vahetamine tingimusel STR_ORDER_SHARE :Jaga korraldusi -STR_ORDERS_GO_TO_TOOLTIP :{BLACK}Lisa uus käsk nimekirja lõppu, või enne valitud käsku. Ctrl määrab jaama puhul korralduseks 'lae üks täis', meldepunkti puhul 'peatuseta' ja depoo puhul 'hooldus'. 'Jaga korraldusi' või Ctrl lubab sellel sõidukil jagada korraldusi valitud veovahendiga. Klõpsates teisel sõidukil kopeeritakse selle korraldused +STR_ORDERS_GO_TO_TOOLTIP :{BLACK}Lisa valitud käsu ette uus ülesanne, või kui ülesannet ei ole valitud, siis nimekirja lõppu. «Ctrl» määrab jaama puhul ülesandeks «peale laadida üks kaup», meldepunkti puhul «peatuseta» ja depoo puhul «hooldus». «Jaga korraldusi» või «Ctrl» klahv lubab sellel sõidukil jagada ülesandeid valitud sõidukiga. Klõpsates teisel sõidukil, dubleeritakse selle ülesanded STR_ORDERS_VEH_WITH_SHARED_ORDERS_LIST_TOOLTIP :{BLACK}Näita kõiki sama sõidugraafikuga mootorsõidukeid @@ -3455,36 +3816,36 @@ STR_ORDER_GO_TO_STATION :{STRING} {STATI STR_ORDER_IMPLICIT :(Automaatne) -STR_ORDER_FULL_LOAD :(Laaditakse täis) -STR_ORDER_FULL_LOAD_ANY :(Ühte kaupa laaditakse täis) -STR_ORDER_NO_LOAD :(Ei laadita) -STR_ORDER_UNLOAD :(Laaditakse tühjaks ja laadung võetakse peale) -STR_ORDER_UNLOAD_FULL_LOAD :(Laaditakse tühjaks ja oodatakse täislaadungit) -STR_ORDER_UNLOAD_FULL_LOAD_ANY :(Laaditakse tühjaks ja oodatakse suvalist täislaadungit) -STR_ORDER_UNLOAD_NO_LOAD :(Laaditakse tühjaks ja jäetakse tühjaks) -STR_ORDER_TRANSFER :(Laaditakse ümber ja laadung võetakse peale) -STR_ORDER_TRANSFER_FULL_LOAD :(Laaditakse ümber ja oodatakse täislaadungit) -STR_ORDER_TRANSFER_FULL_LOAD_ANY :(Laaditakse ümber ja oodatakse suvalist täislaadungit) -STR_ORDER_TRANSFER_NO_LOAD :(Laaditakse ümber ja jäetakse tühjaks) -STR_ORDER_NO_UNLOAD :(Maha ei laadita ja laadung võetakse peale) -STR_ORDER_NO_UNLOAD_FULL_LOAD :(Maha ei laadita ja oodatakse täislaadungit) -STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY :(Maha ei laadita ja oodatakse suvalist täislaadungit) +STR_ORDER_FULL_LOAD :(Laadida kõik kaubad täis) +STR_ORDER_FULL_LOAD_ANY :(Laadida üks kaup täis) +STR_ORDER_NO_LOAD :(Mitte laadida) +STR_ORDER_UNLOAD :(Laadida tühjaks ja laadida peale) +STR_ORDER_UNLOAD_FULL_LOAD :(Laadida tühjaks ja laadida kõik kaubad täis) +STR_ORDER_UNLOAD_FULL_LOAD_ANY :(Laadida tühjaks ja laadida üks kaup täis) +STR_ORDER_UNLOAD_NO_LOAD :(Laadida tühjaks ja peale mitte laadida) +STR_ORDER_TRANSFER :(Laadida ümber ja laadida peale) +STR_ORDER_TRANSFER_FULL_LOAD :(Laadida ümber ja laadida kõik kaubad täis) +STR_ORDER_TRANSFER_FULL_LOAD_ANY :(Laadida ümber ja laadida üks kaup täis) +STR_ORDER_TRANSFER_NO_LOAD :(Laadida ümber ja peale mitte laadida) +STR_ORDER_NO_UNLOAD :(Maha mitte laadida ja laadida peale) +STR_ORDER_NO_UNLOAD_FULL_LOAD :(Maha mitte laadida ja laadida kõik kaubad täis) +STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY :(Maha mitte laadida ja laadida üks kaup täis) STR_ORDER_NO_UNLOAD_NO_LOAD :(Maha ei laadita ja peale ei laadita) STR_ORDER_AUTO_REFIT :(Automaatne ümberseadistus tüüpile {STRING}) -STR_ORDER_FULL_LOAD_REFIT :(Täis last ja automaatne ümberseadistus kaubale {STRING}) -STR_ORDER_FULL_LOAD_ANY_REFIT :(Täis last suvalisele veosele koos ümberseadistamisega {STRING}) -STR_ORDER_UNLOAD_REFIT :(Lae tühjaks ja võta kaup koos ümberseadistaisega {STRING}) -STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(Lae tühjaks ja oota täis laadungit koos ümberseadistamisega {STRING}) -STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(Lae tühjaks ja oota suvalise kauba täislaadungit koos ümberseadistamisega {STRING}) -STR_ORDER_TRANSFER_REFIT :(Ümberlaadimine ja võta veos koos ümberlaadimisega {STRING}) -STR_ORDER_TRANSFER_FULL_LOAD_REFIT :(Ümberlaadimine ja oota täis laadungit koos ümberseadistamisega {STRING}) -STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :(Ümberlaadimine ja oota täis laadungit koos ümberseadistamisega {STRING}) -STR_ORDER_NO_UNLOAD_REFIT :(Ilma maha laadimiseta ja võta veos koos ümberseadistamisega {STRING}) -STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT :(Maha ei laeta ja oota täis laadungit koos ümberseadistamisega {STRING}) -STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :(Ilma maha laadimiseta ja oota täis laadungit koos ümberseadistamisega {STRING}) - -STR_ORDER_AUTO_REFIT_ANY :saadavuses olev kaup +STR_ORDER_FULL_LOAD_REFIT :(Laadida kõik kaubad täis ja seadistada kaubale {STRING}) +STR_ORDER_FULL_LOAD_ANY_REFIT :(Laadida üks kaup täis ja seadistada kaubale {STRING}) +STR_ORDER_UNLOAD_REFIT :(Laadida tühjaks, laadida peale ja seadistada kaubale {STRING}) +STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(Laadida tühjaks, laadida kõik kaubad täis ja seadistada kaubale {STRING}) +STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(Laadida tühjaks, laadida üks kaup täis ja seadistada kaubale {STRING}) +STR_ORDER_TRANSFER_REFIT :(Laadida ümber, laadida peale ja seadistada kaubale {STRING}) +STR_ORDER_TRANSFER_FULL_LOAD_REFIT :(Laadida ümber, laadida kõik kaubad täis ja seadistada kaubale {STRING}) +STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :(Laadida ümber, laadida üks kaup täis ja seadistada kaubale {STRING}) +STR_ORDER_NO_UNLOAD_REFIT :(Maha mitte laadida, laadida peale ja seadistada kaubale {STRING}) +STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT :(Maha mitte laadida, laadida kõik kaubad täis ja seadistada kaubale {STRING}) +STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :(Maha mitte laadida, laadida üks kaup täis ja seadistada kaubale {STRING}) + +STR_ORDER_AUTO_REFIT_ANY :võimalikud kaubad STR_ORDER_STOP_LOCATION_NEAR_END :[lõpu lähedal] STR_ORDER_STOP_LOCATION_MIDDLE :[keskel] @@ -3496,14 +3857,14 @@ STR_ORDER_CONDITIONAL_UNCONDITIONAL :Mine sihtpunkti STR_ORDER_CONDITIONAL_NUM :Mine sihtpunkti {COMMA}, kui {STRING} {STRING} {COMMA} STR_ORDER_CONDITIONAL_TRUE_FALSE :Mine sihtpunkti{COMMA}, kui {STRING} {STRING} -STR_INVALID_ORDER :{RED} (Ebasobiv järjekord) +STR_INVALID_ORDER :{RED} (Kõlbmatu ülesanne) # Time table window STR_TIMETABLE_TITLE :{WHITE}{VEHICLE} (Sõiduplaan) STR_TIMETABLE_ORDER_VIEW :{BLACK}Korraldused STR_TIMETABLE_ORDER_VIEW_TOOLTIP :{BLACK}Lülita korralduste vaatesse -STR_TIMETABLE_TOOLTIP :{BLACK}Sõiduplaan - esiletõstmiseks klõpsa sihtpunktil +STR_TIMETABLE_TOOLTIP :{BLACK}Sõiduplaan - ülesanne märgitakse klõpsuga STR_TIMETABLE_NO_TRAVEL :Sõitu pole STR_TIMETABLE_NOT_TIMETABLEABLE :Reisi (automaatne; ajakava järgmise manuaalse käsu järgi) @@ -3511,10 +3872,14 @@ 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} -STR_TIMETABLE_TICKS :{COMMA} tiks{P "" u} +STR_TIMETABLE_TICKS :{COMMA} samm{P "" u} STR_TIMETABLE_TOTAL_TIME :{BLACK}Selle sõiduplaani täitmine võtab {STRING} STR_TIMETABLE_TOTAL_TIME_INCOMPLETE :{BLACK}Selle sõiduplaani täitmine võtab vähemalt {STRING} (kõik ei ole planeeritud) @@ -3525,30 +3890,30 @@ STR_TIMETABLE_STATUS_EARLY :{BLACK}See sõi STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}Sõiduplaani pole veel alustatud STR_TIMETABLE_STATUS_START_AT :{BLACK}Sõiduplaani alustatakse {STRING} -STR_TIMETABLE_STARTING_DATE :{BLACK}Alustuskuupäev -STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Vali sõiduplaani alguskuupäev +STR_TIMETABLE_STARTING_DATE :{BLACK}Alguskuupäev +STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Vali sõiduplaani alguskuupäev. Ctrl-klõps määrab sõiduplaani alguskuupäeva ja jaotab sõidukid ühtlaselt, kasutades järjestust, kui sihid on planeeritud STR_TIMETABLE_CHANGE_TIME :{BLACK}Muuda aega -STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Muuda, kaua esile tõstetud sihtpunkti peale aega peaks kuluma +STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Muuda märgitud ülesandeks vajalikku aega STR_TIMETABLE_CLEAR_TIME :{BLACK}Tühista aeg -STR_TIMETABLE_CLEAR_TIME_TOOLTIP :{BLACK}Tühista esile tõstetud sihtpunkti ajaperiood +STR_TIMETABLE_CLEAR_TIME_TOOLTIP :{BLACK}Eemalda ülesandeks vajalik aeg -STR_TIMETABLE_CHANGE_SPEED :{BLACK}Muuda kiirusepiirangut -STR_TIMETABLE_CHANGE_SPEED_TOOLTIP :{BLACK}Muuda maksimum reisikiirust valitud järjekorras +STR_TIMETABLE_CHANGE_SPEED :{BLACK}Muuda kiiruspiirangut +STR_TIMETABLE_CHANGE_SPEED_TOOLTIP :{BLACK}Muuda märgitud korralduse kiiruspiirangut STR_TIMETABLE_CLEAR_SPEED :{BLACK}Tühjenda kiiruselimiit -STR_TIMETABLE_CLEAR_SPEED_TOOLTIP :{BLACK}Tühjenda maksimum reisikiirus valitud järjekorras +STR_TIMETABLE_CLEAR_SPEED_TOOLTIP :{BLACK}Eemalda märgitud korralduse kiiruspiirang -STR_TIMETABLE_RESET_LATENESS :{BLACK}Tühista hilinemisloendur -STR_TIMETABLE_RESET_LATENESS_TOOLTIP :{BLACK}Tühista hilinemisloendur, et sõiduk ei jääks hiljaks +STR_TIMETABLE_RESET_LATENESS :{BLACK}Tühista hilinemisarvesti +STR_TIMETABLE_RESET_LATENESS_TOOLTIP :{BLACK}Tühista hilinemisarvesti, et sõiduk ei jääks hiljaks STR_TIMETABLE_AUTOFILL :{BLACK}Täida ise -STR_TIMETABLE_AUTOFILL_TOOLTIP :{BLACK}Täida liiniplaan järgmise sõidu andmetega (Ctrl+klõps säilitamaks ooteaegu) +STR_TIMETABLE_AUTOFILL_TOOLTIP :{BLACK}Kasuta liiniplaani täitmiseks järgmise sõidu andmeid (Ctrl+klõps säilitab ooteajad) STR_TIMETABLE_EXPECTED :{BLACK}Eeldatav STR_TIMETABLE_SCHEDULED :{BLACK}Plaanis -STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Vaheta eeldatav ja plaan +STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Vaheta eeldatava ja graafikupõhise sõiduplaani vahel STR_TIMETABLE_ARRIVAL_ABBREVIATION :S: STR_TIMETABLE_DEPARTURE_ABBREVIATION :V: @@ -3564,7 +3929,7 @@ STR_DATE_YEAR_TOOLTIP :{BLACK}Vali aas # AI debug window -STR_AI_DEBUG :{WHITE}Tehismõistuse / GameScript-i silumine +STR_AI_DEBUG :{WHITE}Arvutivea otsing STR_AI_DEBUG_NAME_AND_VERSION :{BLACK}{STRING} (ver{NUM}) STR_AI_DEBUG_NAME_TOOLTIP :{BLACK}Skripti nimi STR_AI_DEBUG_SETTINGS :{BLACK}Seaded @@ -3588,7 +3953,7 @@ STR_ERROR_AI_PLEASE_REPORT_CRASH :{WHITE}Tõrge STR_ERROR_AI_DEBUG_SERVER_ONLY :{YELLOW}Tehismõistuse / GameScript-i silumise akent saab vaadata ainult server # AI configuration window -STR_AI_CONFIG_CAPTION :{WHITE}Tehismõistuse / Mängu skriptide seadistus +STR_AI_CONFIG_CAPTION :{WHITE}Arvuti seadistus STR_AI_CONFIG_GAMELIST_TOOLTIP :{BLACK}GameScript-id mis laetakse järgmise mänguga STR_AI_CONFIG_AILIST_TOOLTIP :{BLACK}Tehismõistused mis laetakse järgmise mänguga STR_AI_CONFIG_HUMAN_PLAYER :Inimene @@ -3640,6 +4005,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 @@ -3652,6 +4019,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}Hind: {CURRENCY_LONG} @@ -3660,12 +4029,16 @@ STR_INCOME_FLOAT_INCOME_SMALL :{TINY_FONT}{GRE STR_INCOME_FLOAT_INCOME :{GREEN}Tulu: {CURRENCY_LONG} STR_FEEDER_TINY :{TINY_FONT}{YELLOW}Kanna üle: {CURRENCY_LONG} STR_FEEDER :{YELLOW}Kanna üle: {CURRENCY_LONG} +STR_FEEDER_INCOME_TINY :{TINY_FONT}{YELLOW}Ümberlaadimine: {CURRENCY_LONG}{WHITE} / {GREEN}Sissetulek: {CURRENCY_LONG} +STR_FEEDER_INCOME :{YELLOW}Ümberlaadimine: {CURRENCY_LONG}{WHITE} / {GREEN}Sissetulek: {CURRENCY_LONG} +STR_FEEDER_COST_TINY :{TINY_FONT}{YELLOW}Ümberlaadimine: {CURRENCY_LONG}{WHITE} / {RED}Hind: {CURRENCY_LONG} +STR_FEEDER_COST :{YELLOW}Ümberlaadimine: {CURRENCY_LONG}{WHITE} / {RED}Hind: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_COST :{WHITE}Eeldatav hind: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Eeldatavad tulud: {CURRENCY_LONG} # Saveload messages STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Ikka salvestamisel,{}palun oota salvestuse lõpuni! -STR_ERROR_AUTOSAVE_FAILED :{WHITE}Automaatne salvestus nurjus +STR_ERROR_AUTOSAVE_FAILED :{WHITE}Isesalvestamine ebaõnnestus STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Ei suuda kettalt lugeda STR_ERROR_GAME_SAVE_FAILED :{WHITE}Mängu salvestamine nurjus{}{STRING} STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Faili ei saa kustutada @@ -3680,7 +4053,7 @@ STR_GAME_SAVELOAD_NOT_AVAILABLE :Majandus->Linnad +STR_ERROR_TOWN_EXPAND_WARN_NO_ROADS :{WHITE}Linn ei ehita teid. Teedeehituse lubamiseks Põhjalik seadistus->Majandus->Linnad STR_ERROR_ROAD_WORKS_IN_PROGRESS :{WHITE}Teede ehitamine STR_ERROR_TOWN_CAN_T_DELETE :{WHITE}Seda linna ei saa kustutada...{}Jaam või depoo viitab linnale või mõnd linna omanduses olevat tükki ei saa kustutada STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}... linnakeskuses ei leidu kujule sobivat kohta @@ -3955,6 +4329,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... @@ -4006,10 +4381,15 @@ 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 +STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL :{WHITE}Ühtegi sõidukit ei ole saadaval +STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Muuda NewGRF-i seadistust +STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}Sõidukeid ei ole veel saadaval +STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Alusta mängu pärast {DATE_SHORT} või kasuta NewGRF-i, milles on varasemaid sõidukeid + # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Rongi ei saa ohu korral sundida signaale eirama... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Ei saa rongi ümber pöörata. @@ -4020,17 +4400,17 @@ STR_ERROR_CAN_T_MAKE_ROAD_VEHICLE_TURN :{WHITE}Maantees STR_ERROR_AIRCRAFT_IS_IN_FLIGHT :{WHITE}Lennuk on õhus # Order related errors -STR_ERROR_NO_MORE_SPACE_FOR_ORDERS :{WHITE}Pole ruumi käskudeks -STR_ERROR_TOO_MANY_ORDERS :{WHITE}Liiga palju käske -STR_ERROR_CAN_T_INSERT_NEW_ORDER :{WHITE}Ei saa lisada uut käsku... -STR_ERROR_CAN_T_DELETE_THIS_ORDER :{WHITE}Ei saa kustutada seda käsku... -STR_ERROR_CAN_T_MODIFY_THIS_ORDER :{WHITE}Ei saa muuta seda käsku... -STR_ERROR_CAN_T_MOVE_THIS_ORDER :{WHITE}Seda sihtpunkti ei saa ümber asetada... -STR_ERROR_CAN_T_SKIP_ORDER :{WHITE}Praegust järjestust ei ole võimalik vahele jätta... -STR_ERROR_CAN_T_SKIP_TO_ORDER :{WHITE}Valitud järjestust ei ole võimalik vahele jätta... +STR_ERROR_NO_MORE_SPACE_FOR_ORDERS :{WHITE}Ülesannetele pole rohkem ruumi +STR_ERROR_TOO_MANY_ORDERS :{WHITE}Liiga palju ülesandeid +STR_ERROR_CAN_T_INSERT_NEW_ORDER :{WHITE}Ei saa lisada uut ülesannet... +STR_ERROR_CAN_T_DELETE_THIS_ORDER :{WHITE}Seda ülesannet ei saa kustutada... +STR_ERROR_CAN_T_MODIFY_THIS_ORDER :{WHITE}Seda ülesannet ei saa muuta... +STR_ERROR_CAN_T_MOVE_THIS_ORDER :{WHITE}Seda ülesannet ei saa liigutada... +STR_ERROR_CAN_T_SKIP_ORDER :{WHITE}Praegust ülesannet ei ole saa vahele jätta... +STR_ERROR_CAN_T_SKIP_TO_ORDER :{WHITE}Teisi ülesandeid ei saa vahele jätta... STR_ERROR_CAN_T_COPY_SHARE_ORDER :{WHITE}sõiduk ei saa igasse jaama minna STR_ERROR_CAN_T_ADD_ORDER :{WHITE}sõiduk ei saa antud jaama minna -STR_ERROR_CAN_T_ADD_ORDER_SHARED :{WHITE}... seda käsku jagav sõiduk ei saa sinna jaama minna +STR_ERROR_CAN_T_ADD_ORDER_SHARED :{WHITE}... seda ülesannet jagav sõiduk ei saa sinna jaama minna STR_ERROR_CAN_T_SHARE_ORDER_LIST :{WHITE}Sihtpunktide nimekirja ei saa jagada... STR_ERROR_CAN_T_STOP_SHARING_ORDER_LIST :{WHITE}Korralduste jagamist ei saa peatada... @@ -4052,6 +4432,16 @@ STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}Silti ei # Translatable comment for OpenTTD's desktop shortcut STR_DESKTOP_SHORTCUT_COMMENT :Transport Tycoon Deluxe'il põhinev simulatsioonimäng +# Translatable descriptions in media/baseset/*.ob* files +STR_BASEGRAPHICS_DOS_DESCRIPTION :Algse Transport Tycoon Deluxe DOSi versiooni graafika. +STR_BASEGRAPHICS_DOS_DE_DESCRIPTION :Algse Transport Tycoon Deluxe DOSi (Saksa) versiooni graafika. +STR_BASEGRAPHICS_WIN_DESCRIPTION :Algse Transport Tycoon Deluxe Windowsi versiooni graafika. +STR_BASESOUNDS_DOS_DESCRIPTION :Algse Transport Tycoon Deluxe DOSi versiooni helid. +STR_BASESOUNDS_WIN_DESCRIPTION :Algse Transport Tycoon Deluxe Windowsi versiooni helid. +STR_BASESOUNDS_NONE_DESCRIPTION :Helikogu ilma helideta. +STR_BASEMUSIC_WIN_DESCRIPTION :Algse Transport Tycoon Deluxe Windowsi versiooni muusika. +STR_BASEMUSIC_NONE_DESCRIPTION :Muusikakogu ilma muusikata. + ##id 0x2000 # Town building names STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1 :Kõrge büroohoone @@ -4124,7 +4514,7 @@ STR_INDUSTRY_NAME_TOY_SHOP :mänguasjapood STR_INDUSTRY_NAME_TOY_FACTORY :mänguasjatehas STR_INDUSTRY_NAME_PLASTIC_FOUNTAINS :plastmassiallikas STR_INDUSTRY_NAME_FIZZY_DRINK_FACTORY :kihisevate jookide tehas -STR_INDUSTRY_NAME_BUBBLE_GENERATOR :mulligeneraator +STR_INDUSTRY_NAME_BUBBLE_GENERATOR :mullide tekitaja STR_INDUSTRY_NAME_TOFFEE_QUARRY :iirisekaevandus STR_INDUSTRY_NAME_SUGAR_MINE :suhkrukaevandus @@ -4174,7 +4564,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) @@ -4383,7 +4773,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 @@ -4498,8 +4888,9 @@ 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_SPACE_STRING :{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} @@ -4523,9 +4914,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 new file mode 100644 index 000000000..49feb5ab7 --- /dev/null +++ b/src/lang/faroese.txt @@ -0,0 +1,4471 @@ +##name Faroese +##ownname Føroyskt +##isocode fo_FO +##plural 0 +##textdir ltr +##digitsep . +##digitsepcur . +##decimalsep , +##winlangid 0x0438 +##grflangid 0x12 +##gender m f n + + +# $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 :(undefined string) +STR_JUST_NOTHING :Einki + +# Cargo related strings +# Plural cargo name +STR_CARGO_PLURAL_NOTHING : +STR_CARGO_PLURAL_PASSENGERS :{G=n}Ferðafólk +STR_CARGO_PLURAL_COAL :{G=n}Kol +STR_CARGO_PLURAL_MAIL :{G=m}Postur +STR_CARGO_PLURAL_OIL :{G=f}Olja +STR_CARGO_PLURAL_LIVESTOCK :Kríatúr +STR_CARGO_PLURAL_GOODS :{G=n}Góðs +STR_CARGO_PLURAL_GRAIN :{G=n}Korn +STR_CARGO_PLURAL_WOOD :{G=m}Timbur +STR_CARGO_PLURAL_IRON_ORE :{G=m}Jarn Málmur +STR_CARGO_PLURAL_STEEL :{G=n}Stál +STR_CARGO_PLURAL_VALUABLES :{G=m}Virðislutir +STR_CARGO_PLURAL_COPPER_ORE :{G=m}Kopar Málmur +STR_CARGO_PLURAL_MAIZE :{G=n}Meis +STR_CARGO_PLURAL_FRUIT :{G=f}Fruktir +STR_CARGO_PLURAL_DIAMONDS :{G=m}Diamantar +STR_CARGO_PLURAL_FOOD :{G=m}Matur +STR_CARGO_PLURAL_PAPER :{G=n}Pappír +STR_CARGO_PLURAL_GOLD :{G=n}Gull +STR_CARGO_PLURAL_WATER :{G=n}Vatn +STR_CARGO_PLURAL_WHEAT :{G=n}Hveiti +STR_CARGO_PLURAL_RUBBER :{G=n}Gummi +STR_CARGO_PLURAL_SUGAR :{G=n}Sukur +STR_CARGO_PLURAL_TOYS :{G=n}Leikutoy +STR_CARGO_PLURAL_CANDY :{G=n}Góðgæti +STR_CARGO_PLURAL_COLA :{G=n}Kola +STR_CARGO_PLURAL_COTTON_CANDY :{G=n}Kandifloss +STR_CARGO_PLURAL_BUBBLES :{G=f}Sápiblørir +STR_CARGO_PLURAL_TOFFEE :{G=n}Toffee +STR_CARGO_PLURAL_BATTERIES :{G=n}Battarí +STR_CARGO_PLURAL_PLASTIC :{G=n}Plastikk +STR_CARGO_PLURAL_FIZZY_DRINKS :{G=n}Sodavatn + +# Singular cargo name +STR_CARGO_SINGULAR_NOTHING : +STR_CARGO_SINGULAR_PASSENGER :{G=n}Ferðafólk +STR_CARGO_SINGULAR_COAL :{G=n}Kol +STR_CARGO_SINGULAR_MAIL :{G=m}Postur +STR_CARGO_SINGULAR_OIL :{G=f}Olja +STR_CARGO_SINGULAR_LIVESTOCK :{G=n}Kríatúr +STR_CARGO_SINGULAR_GOODS :{G=n}Góðs +STR_CARGO_SINGULAR_GRAIN :{G=n}Korn +STR_CARGO_SINGULAR_WOOD :{G=m}Timbur +STR_CARGO_SINGULAR_IRON_ORE :{G=m}Jarn Málm +STR_CARGO_SINGULAR_STEEL :{G=n}Stál +STR_CARGO_SINGULAR_VALUABLES :{G=m}Viðrislutur +STR_CARGO_SINGULAR_COPPER_ORE :{G=m}Kopar Málm +STR_CARGO_SINGULAR_MAIZE :{G=n}Meis +STR_CARGO_SINGULAR_FRUIT :{G=f}Frukt +STR_CARGO_SINGULAR_DIAMOND :{G=m}Diamantur +STR_CARGO_SINGULAR_FOOD :{G=m}Matur +STR_CARGO_SINGULAR_PAPER :{G=n}Pappír +STR_CARGO_SINGULAR_GOLD :{G=n}Gull +STR_CARGO_SINGULAR_WATER :{G=n}Vatn +STR_CARGO_SINGULAR_WHEAT :{G=n}Hveiti +STR_CARGO_SINGULAR_RUBBER :{G=n}Gummi +STR_CARGO_SINGULAR_SUGAR :{G=n}Sukur +STR_CARGO_SINGULAR_TOY :{G=n}Leikutoy +STR_CARGO_SINGULAR_CANDY :{G=n}Góðgæti +STR_CARGO_SINGULAR_COLA :{G=n}Kola +STR_CARGO_SINGULAR_COTTON_CANDY :{G=n}Kandifloss +STR_CARGO_SINGULAR_BUBBLE :{G=f}Sápibløra +STR_CARGO_SINGULAR_TOFFEE :{G=n}Toffee +STR_CARGO_SINGULAR_BATTERY :{G=n}Battarí +STR_CARGO_SINGULAR_PLASTIC :{G=n}Plastikk +STR_CARGO_SINGULAR_FIZZY_DRINK :{G=f}Sodavatn + +# Quantity of cargo +STR_QUANTITY_NOTHING : +STR_QUANTITY_PASSENGERS :{G=n}{COMMA} ferðafólk +STR_QUANTITY_COAL :{WEIGHT_LONG} av kol +STR_QUANTITY_MAIL :{COMMA} sekk{P "" ir} av posti +STR_QUANTITY_OIL :{VOLUME_LONG} av olju +STR_QUANTITY_LIVESTOCK :{COMMA} lut{P ur ir} av kríatúr +STR_QUANTITY_GOODS :{COMMA} kassa{P "" r} av góðsi +STR_QUANTITY_GRAIN :{WEIGHT_LONG} av korni +STR_QUANTITY_WOOD :{WEIGHT_LONG} av timbur +STR_QUANTITY_IRON_ORE :{WEIGHT_LONG} av jarn málmi +STR_QUANTITY_STEEL :{WEIGHT_LONG} av stáli +STR_QUANTITY_VALUABLES :{COMMA} sekk{P "" ir} av virðislutum +STR_QUANTITY_COPPER_ORE :{WEIGHT_LONG} av kopar málmi +STR_QUANTITY_MAIZE :{WEIGHT_LONG} av meis +STR_QUANTITY_FRUIT :{WEIGHT_LONG} av frukt +STR_QUANTITY_DIAMONDS :{COMMA} sekk{P "" ir} av diamantum +STR_QUANTITY_FOOD :{WEIGHT_LONG} av mati +STR_QUANTITY_PAPER :{WEIGHT_LONG} av pappíri +STR_QUANTITY_GOLD :{COMMA} sekk{P "" ir} av gull +STR_QUANTITY_WATER :{VOLUME_LONG} av vatni +STR_QUANTITY_WHEAT :{WEIGHT_LONG} av hveiti +STR_QUANTITY_RUBBER :{VOLUME_LONG} av gummi +STR_QUANTITY_SUGAR :{WEIGHT_LONG} av sukri +STR_QUANTITY_TOYS :{COMMA} leik{P a ur} +STR_QUANTITY_SWEETS :{COMMA} sekk{P "" ir} av góðgæti +STR_QUANTITY_COLA :{VOLUME_LONG} av kola +STR_QUANTITY_CANDYFLOSS :{WEIGHT_LONG} av kandifloss +STR_QUANTITY_BUBBLES :{COMMA} sápiblør{P a ir} +STR_QUANTITY_TOFFEE :{WEIGHT_LONG} av róma +STR_QUANTITY_BATTERIES :{COMMA} battarí{P y ies} +STR_QUANTITY_PLASTIC :{VOLUME_LONG} av plastikk +STR_QUANTITY_FIZZY_DRINKS :{COMMA} sodavatn +STR_QUANTITY_N_A :N/A + +# Two letter abbreviation of cargo name +STR_ABBREV_NOTHING : +STR_ABBREV_PASSENGERS :{TINY_FONT}FF +STR_ABBREV_COAL :{TINY_FONT}KL +STR_ABBREV_MAIL :{TINY_FONT}PS +STR_ABBREV_OIL :{TINY_FONT}OL +STR_ABBREV_LIVESTOCK :{TINY_FONT}KÚ +STR_ABBREV_GOODS :{TINY_FONT}GS +STR_ABBREV_GRAIN :{TINY_FONT}KN +STR_ABBREV_WOOD :{TINY_FONT}TM +STR_ABBREV_IRON_ORE :{TINY_FONT}ML +STR_ABBREV_STEEL :{TINY_FONT}ST +STR_ABBREV_VALUABLES :{TINY_FONT}VL +STR_ABBREV_COPPER_ORE :{TINY_FONT}KM +STR_ABBREV_MAIZE :{TINY_FONT}MS +STR_ABBREV_FRUIT :{TINY_FONT}FT +STR_ABBREV_DIAMONDS :{TINY_FONT}DM +STR_ABBREV_FOOD :{TINY_FONT}MT +STR_ABBREV_PAPER :{TINY_FONT}PR +STR_ABBREV_GOLD :{TINY_FONT}GL +STR_ABBREV_WATER :{TINY_FONT}VN +STR_ABBREV_WHEAT :{TINY_FONT}HV +STR_ABBREV_RUBBER :{TINY_FONT}GM +STR_ABBREV_SUGAR :{TINY_FONT}SK +STR_ABBREV_TOYS :{TINY_FONT}LK +STR_ABBREV_SWEETS :{TINY_FONT}SL +STR_ABBREV_COLA :{TINY_FONT}KL +STR_ABBREV_CANDYFLOSS :{TINY_FONT}KF +STR_ABBREV_BUBBLES :{TINY_FONT}BL +STR_ABBREV_TOFFEE :{TINY_FONT}TF +STR_ABBREV_BATTERIES :{TINY_FONT}BA +STR_ABBREV_PLASTIC :{TINY_FONT}PL +STR_ABBREV_FIZZY_DRINKS :{TINY_FONT}SV +STR_ABBREV_NONE :{TINY_FONT}EI +STR_ABBREV_ALL :{TINY_FONT}ALT + +# 'Mode' of transport for cargoes +STR_PASSENGERS :{COMMA} ferðafólk +STR_BAGS :{COMMA} sekk{P "" ir} +STR_TONS :{COMMA} ton{P "" s} +STR_LITERS :{COMMA} lit{P ur rar} +STR_ITEMS :{COMMA} lut{P ur ir} +STR_CRATES :{COMMA} kassa{P "" r} + +# Colours, do not shuffle +STR_COLOUR_DARK_BLUE :Myrka Blátt +STR_COLOUR_PALE_GREEN :Bleikt Grønt +STR_COLOUR_PINK :Ljósareytt +STR_COLOUR_YELLOW :Gult +STR_COLOUR_RED :Reytt +STR_COLOUR_LIGHT_BLUE :Ljósa Blátt +STR_COLOUR_GREEN :Grønt +STR_COLOUR_DARK_GREEN :Myrka Grønt +STR_COLOUR_BLUE :Blátt +STR_COLOUR_CREAM :Krem +STR_COLOUR_MAUVE :Bláreytt +STR_COLOUR_PURPLE :Lilla +STR_COLOUR_ORANGE :Appelsingult +STR_COLOUR_BROWN :Brúnt +STR_COLOUR_GREY :Grátt +STR_COLOUR_WHITE :Hvítt + +# Units used in OpenTTD +STR_UNITS_VELOCITY_IMPERIAL :{COMMA} mph +STR_UNITS_VELOCITY_METRIC :{COMMA} km/t +STR_UNITS_VELOCITY_SI :{COMMA} m/s + +STR_UNITS_POWER_IMPERIAL :{COMMA}hp +STR_UNITS_POWER_METRIC :{COMMA}hp +STR_UNITS_POWER_SI :{COMMA}kW + +STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}t +STR_UNITS_WEIGHT_SHORT_SI :{COMMA}kg + +STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} tons +STR_UNITS_WEIGHT_LONG_SI :{COMMA} kg + +STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}l +STR_UNITS_VOLUME_SHORT_SI :{COMMA}m³ + +STR_UNITS_VOLUME_LONG_METRIC :{COMMA} lit{P ur rar} +STR_UNITS_VOLUME_LONG_SI :{COMMA} m³ + +STR_UNITS_FORCE_SI :{COMMA} kN + +STR_UNITS_HEIGHT_IMPERIAL :{COMMA} ft +STR_UNITS_HEIGHT_SI :{COMMA} m + +# Common window strings +STR_LIST_FILTER_TITLE :{BLACK}Filtur strong: +STR_LIST_FILTER_OSKTITLE :{BLACK}Skriva inn filtur strong +STR_LIST_FILTER_TOOLTIP :{BLACK}Skriva inn lyklaorð til at filtreða listan eftur + +STR_TOOLTIP_SORT_ORDER :{BLACK}Vel raðfesting (lækkandi/hækkandi) +STR_TOOLTIP_SORT_CRITERIA :{BLACK}Set raðfestingar treytir +STR_TOOLTIP_FILTER_CRITERIA :{BLACK}Set filtrerings treytir +STR_BUTTON_SORT_BY :{BLACK}Sortera eftur +STR_BUTTON_LOCATION :{BLACK}Stað +STR_BUTTON_RENAME :{BLACK}Endurdoyp + +STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Lat glugga aftur +STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Glugga heiti - drag her fyri at fyta glugga +STR_TOOLTIP_SHADE :{BLACK}Skugga gluggi - vís einans heitis bjálkan +STR_TOOLTIP_DEBUG :{BLACK}Vís NewGRF debug kunning +STR_TOOLTIP_STICKY :{BLACK}Marka hetta vindeyga óafturlatiligt av 'Lat øll vindeygu aftur' knøttinum +STR_TOOLTIP_RESIZE :{BLACK}Týst og drag fyri at broyta støddina á hesum glugganum +STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Skift millum stóran/lítlan glugga +STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Skriðu bjálki - drag listan upp/niður +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. + +# Query window +STR_BUTTON_DEFAULT :{BLACK}Vanligt +STR_BUTTON_CANCEL :{BLACK}Angra +STR_BUTTON_OK :{BLACK}OK + +# On screen keyboard window +STR_OSK_KEYBOARD_LAYOUT :½1234567890+´qwertyuiopåðasdfghjklæø'ZXCVBNM;:_ + +# Measurement tooltip +STR_MEASURE_LENGTH :{BLACK}Longd: {NUM} +STR_MEASURE_AREA :{BLACK}Øki: {NUM} x {NUM} +STR_MEASURE_LENGTH_HEIGHTDIFF :{BLACK}Longd: {NUM}{}Hæddar munur: {HEIGHT} +STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}Øki: {NUM} x {NUM}{}Hæddar munur: {HEIGHT} + + +# These are used in buttons +STR_SORT_BY_CAPTION_NAME :{BLACK}Navn +STR_SORT_BY_CAPTION_DATE :{BLACK}Dato +# These are used in dropdowns +STR_SORT_BY_NAME :Navni +STR_SORT_BY_PRODUCTION :Framleiðslu +STR_SORT_BY_TYPE :Slagi +STR_SORT_BY_TRANSPORTED :Flutt +STR_SORT_BY_NUMBER :Tali +STR_SORT_BY_PROFIT_LAST_YEAR :Vinningi síðsta ár +STR_SORT_BY_PROFIT_THIS_YEAR :Vinningi hetta ári +STR_SORT_BY_AGE :Aldur +STR_SORT_BY_RELIABILITY :Álítandi +STR_SORT_BY_TOTAL_CAPACITY_PER_CARGOTYPE :Fullfíggja pláss per farma slag +STR_SORT_BY_MAX_SPEED :Hægstu fer +STR_SORT_BY_MODEL :Modell +STR_SORT_BY_VALUE :Virði +STR_SORT_BY_LENGTH :Longd +STR_SORT_BY_LIFE_TIME :Eftirverandi livitíð +STR_SORT_BY_TIMETABLE_DELAY :Tíðarætlanar seinking +STR_SORT_BY_FACILITY :Støð slagi +STR_SORT_BY_RATING_MAX :Hægsta farma virðismeting +STR_SORT_BY_RATING_MIN :Lægsta farma virðismeting +STR_SORT_BY_ENGINE_ID :MaskinID (klassiskt svart) +STR_SORT_BY_COST :Kostnaði +STR_SORT_BY_POWER :Megi +STR_SORT_BY_TRACTIVE_EFFORT :Dráttar ómak +STR_SORT_BY_INTRO_DATE :Innleiðslu dato +STR_SORT_BY_RUNNING_COST :Raktstrar kostnaði +STR_SORT_BY_POWER_VS_RUNNING_COST :Megi/Rakstrar kostnaði +STR_SORT_BY_CARGO_CAPACITY :Farma Pláss +STR_SORT_BY_RANGE :Vídd +STR_SORT_BY_POPULATION :Fólkatal +STR_SORT_BY_RATING :Virði + +# Tooltips for the main toolbar +STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Steðga spælinum +STR_TOOLBAR_TOOLTIP_FORWARD :{BLACK}Skunda undir spæli +STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}Møguleikar +STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK}Goym spælið, far frá spælið, gevst +STR_TOOLBAR_TOOLTIP_DISPLAY_MAP :{BLACK}Vís kort, eyka glugga ella lista yvir skelti +STR_TOOLBAR_TOOLTIP_DISPLAY_TOWN_DIRECTORY :{BLACK}Vís bygdar lista +STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Vís stuðulsflutning +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Vís lista yvir støðir hjá fyritøkuni +STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Vís fíggjarligu støðuna hjá fyritøkuni +STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Vís støðuna hjá fyritøkuni +STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Vís grafar +STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Vís fyritøku deildar yvirlit +STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Fíggja bygging av nýggjum ídnaði ella vís lista yvir allan ídnað +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}Vís lista yvir tok hjá fyritøkuni. Ctrl+Klikk skiftur ímillum bólkur/akfar listan +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}Vis lista yvir akfør hjá fyritøkuni. Ctrl+Klikk skiftur ímillum bólkur/akfar listan +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_SHIPS :{BLACK}Vís lista yvir skip hjá fyritøkuni. Ctrl+Klikk skiftur ímillum bólk/akfar listan +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_AIRCRAFT :{BLACK}Vís lista yvir flogfør hjá fyritøkuni. Ctrl+Click skiftur millum at lata upp bólka/akfars listan +STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_IN :{BLACK}Forstørra mynduna in +STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_OUT :{BLACK}Minka vindeyga út +STR_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Bygg jarnbreyt +STR_TOOLBAR_TOOLTIP_BUILD_ROADS :{BLACK}Bygg vegir +STR_TOOLBAR_TOOLTIP_BUILD_SHIP_DOCKS :{BLACK}Bygg havn +STR_TOOLBAR_TOOLTIP_BUILD_AIRPORTS :{BLACK}Bygg floghavnir +STR_TOOLBAR_TOOLTIP_LANDSCAPING :{BLACK}Lat up landslags amboðskassan fyri at hækka/lækka land, planta trøð, osv. +STR_TOOLBAR_TOOLTIP_SHOW_SOUND_MUSIC_WINDOW :{BLACK}Vís ljóð/musik vindeyga +STR_TOOLBAR_TOOLTIP_SHOW_LAST_MESSAGE_NEWS :{BLACK}Vís sísta boð/nýggjheit frágreiðing, vís boð møguleikarnar +STR_TOOLBAR_TOOLTIP_LAND_BLOCK_INFORMATION :{BLACK}Landslags økis kunning, console, script debug, skermmyndir, um OpenTTD +STR_TOOLBAR_TOOLTIP_SWITCH_TOOLBAR :{BLACK}Skift amboðslinju + +# Extra tooltips for the scenario editor toolbar +STR_SCENEDIT_TOOLBAR_TOOLTIP_SAVE_SCENARIO_LOAD_SCENARIO :{BLACK}Goym tilburð, heinta tilburð, far frá tilburðs ritara, gevst +STR_SCENEDIT_TOOLBAR_OPENTTD :{YELLOW}OpenTTD +STR_SCENEDIT_TOOLBAR_SCENARIO_EDITOR :{YELLOW}Tilburðs ritil +STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_BACKWARD :{BLACK}Flyt byrjunar dato 1 ár aftur +STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_FORWARD :{BLACK}Flyt byrjunar dato 1 ár fram +STR_SCENEDIT_TOOLBAR_TOOLTIP_SET_DATE :{BLACK}Trýst her fyri at seta inn byrjunar dato +STR_SCENEDIT_TOOLBAR_TOOLTIP_DISPLAY_MAP_TOWN_DIRECTORY :{BLACK}Vís kort, bygdar lista +STR_SCENEDIT_TOOLBAR_LANDSCAPE_GENERATION :{BLACK}Landslags framleiðsla +STR_SCENEDIT_TOOLBAR_TOWN_GENERATION :{BLACK}Bygda framleiðsla +STR_SCENEDIT_TOOLBAR_INDUSTRY_GENERATION :{BLACK}Ídnaðar framleiðsla +STR_SCENEDIT_TOOLBAR_ROAD_CONSTRUCTION :{BLACK}Vegagerð +STR_SCENEDIT_TOOLBAR_PLANT_TREES :{BLACK}Planta trø. Shift skiftur millum at byggja/vísa kostnaðar meting +STR_SCENEDIT_TOOLBAR_PLACE_SIGN :{BLACK}Set tekin +STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}Legg lut. Shift skiftur millum at byggja/vísa kostnaðar meting + +############ range for SE file menu starts +STR_SCENEDIT_FILE_MENU_SAVE_SCENARIO :Goym tilburð +STR_SCENEDIT_FILE_MENU_LOAD_SCENARIO :Heinta tilburð +STR_SCENEDIT_FILE_MENU_SAVE_HEIGHTMAP :Goym hæddarkort +STR_SCENEDIT_FILE_MENU_LOAD_HEIGHTMAP :Heinta hæddarkort +STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :Far frá tilburðs ritara +STR_SCENEDIT_FILE_MENU_SEPARATOR : +STR_SCENEDIT_FILE_MENU_QUIT :Gevst +############ range for SE file menu starts + +############ 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 +STR_SETTINGS_MENU_TOWN_NAMES_DISPLAYED :Bygdarnøvn víst +STR_SETTINGS_MENU_STATION_NAMES_DISPLAYED :Statión navn víst +STR_SETTINGS_MENU_WAYPOINTS_DISPLAYED :Waypoint nøvn víst +STR_SETTINGS_MENU_SIGNS_DISPLAYED :Tekin víst +STR_SETTINGS_MENU_SHOW_COMPETITOR_SIGNS :Kappingarneyta skelti og nøvn víst +STR_SETTINGS_MENU_FULL_ANIMATION :Full animatión +STR_SETTINGS_MENU_FULL_DETAIL :Allar smálutir +STR_SETTINGS_MENU_TRANSPARENT_BUILDINGS :Gjøgnumskygdir bygningar +STR_SETTINGS_MENU_TRANSPARENT_SIGNS :Gjøgnumskygd statións skelti +############ range ends here + +############ range for file menu starts +STR_FILE_MENU_SAVE_GAME :Goym spæl +STR_FILE_MENU_LOAD_GAME :Heinta spæl +STR_FILE_MENU_QUIT_GAME :Far frá spæli +STR_FILE_MENU_SEPARATOR : +STR_FILE_MENU_EXIT :Gevst +############ range ends here + +# map menu +STR_MAP_MENU_MAP_OF_WORLD :Heimskort +STR_MAP_MENU_EXTRA_VIEW_PORT :Eyka synisgluggi +STR_MAP_MENU_SIGN_LIST :Listi yvur tekin + +############ range for town menu starts +STR_TOWN_MENU_TOWN_DIRECTORY :Bygdar yvirlit +STR_TOWN_MENU_FOUND_TOWN :Funnar bygdir +############ range ends here + +############ range for subsidies menu starts +STR_SUBSIDIES_MENU_SUBSIDIES :Stuðulsflutningur +############ range ends here + +############ range for graph menu starts +STR_GRAPH_MENU_OPERATING_PROFIT_GRAPH :Grafur fyri rakstrar vinning +STR_GRAPH_MENU_INCOME_GRAPH :Inntøku grafur +STR_GRAPH_MENU_DELIVERED_CARGO_GRAPH :Grafur fyri útflýggjaðan farm +STR_GRAPH_MENU_PERFORMANCE_HISTORY_GRAPH :Grafur fyri avriks søgu +STR_GRAPH_MENU_COMPANY_VALUE_GRAPH :Grafur fyri virði á fyritøku +STR_GRAPH_MENU_CARGO_PAYMENT_RATES :Farma gjald takstur +############ range ends here + +############ range for company league menu starts +STR_GRAPH_MENU_COMPANY_LEAGUE_TABLE :Yvirlit fyri Fyritøku Deildina +STR_GRAPH_MENU_DETAILED_PERFORMANCE_RATING :Avriks meting í smálutum +STR_GRAPH_MENU_HIGHSCORE :Hástigs yvirlit +############ range ends here + +############ range for industry menu starts +STR_INDUSTRY_MENU_INDUSTRY_DIRECTORY :Ídnaðar yvirlit +STR_INDUSTRY_MENU_INDUSTRY_CHAIN :Ídnaðar ketur +STR_INDUSTRY_MENU_FUND_NEW_INDUSTRY :Fíggja nýggjan ídnað +############ range ends here + +############ range for railway construction menu starts +STR_RAIL_MENU_RAILROAD_CONSTRUCTION :Jarnbreyta bygging +STR_RAIL_MENU_ELRAIL_CONSTRUCTION :Ravmagns jarnbreyta bygging +STR_RAIL_MENU_MONORAIL_CONSTRUCTION :Einsporað jarnbreyta bygging +STR_RAIL_MENU_MAGLEV_CONSTRUCTION :Maglev bygging +############ range ends here + +############ range for road construction menu starts +STR_ROAD_MENU_ROAD_CONSTRUCTION :Vegagerð +STR_ROAD_MENU_TRAM_CONSTRUCTION :Sporvega bygging +############ range ends here + +############ range for waterways construction menu starts +STR_WATERWAYS_MENU_WATERWAYS_CONSTRUCTION :Siglingarrennu bygging +############ range ends here + +############ range for airport construction menu starts +STR_AIRCRAFT_MENU_AIRPORT_CONSTRUCTION :Floghavns bygging +############ range ends here + +############ range for landscaping menu starts +STR_LANDSCAPING_MENU_LANDSCAPING :Landslags broyting +STR_LANDSCAPING_MENU_PLANT_TREES :Planta trø +STR_LANDSCAPING_MENU_PLACE_SIGN :Set tekin +############ range ends here + +############ range for music menu starts +STR_TOOLBAR_SOUND_MUSIC :Ljóð/ tónleik +############ range ends here + +############ range for message menu starts +STR_NEWS_MENU_LAST_MESSAGE_NEWS_REPORT :Seinastu boð/tíðinda frásøgn +STR_NEWS_MENU_MESSAGE_HISTORY_MENU :Boð søga +############ range ends here + +############ range for about menu starts +STR_ABOUT_MENU_LAND_BLOCK_INFO :Landa økis kunning +STR_ABOUT_MENU_SEPARATOR : +STR_ABOUT_MENU_TOGGLE_CONSOLE :Console opið ella lukka +STR_ABOUT_MENU_AI_DEBUG :AI/Spæl script debug +STR_ABOUT_MENU_SCREENSHOT :Skermmynd +STR_ABOUT_MENU_ZOOMIN_SCREENSHOT :Suma in skermmynd +STR_ABOUT_MENU_DEFAULTZOOM_SCREENSHOT :Vanliga suma skermmynd +STR_ABOUT_MENU_GIANT_SCREENSHOT :Skermmynd av øllum kortinum +STR_ABOUT_MENU_ABOUT_OPENTTD :Um 'OpenTTD' +STR_ABOUT_MENU_SPRITE_ALIGNER :Sprite aligner +STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Skift millum bindingar kassar +STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :Skift millum liting av skitnum blokkum +############ range ends here + +############ 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 :Jan +STR_MONTH_ABBREV_FEB :Feb +STR_MONTH_ABBREV_MAR :Mar +STR_MONTH_ABBREV_APR :Apr +STR_MONTH_ABBREV_MAY :Mai +STR_MONTH_ABBREV_JUN :Jun +STR_MONTH_ABBREV_JUL :Jul +STR_MONTH_ABBREV_AUG :Aug +STR_MONTH_ABBREV_SEP :Sep +STR_MONTH_ABBREV_OCT :Okt +STR_MONTH_ABBREV_NOV :Nov +STR_MONTH_ABBREV_DEC :Des + +STR_MONTH_JAN :Januar +STR_MONTH_FEB :Februar +STR_MONTH_MAR :Mars +STR_MONTH_APR :Apríl +STR_MONTH_MAY :Mai +STR_MONTH_JUN :Juni +STR_MONTH_JUL :Juli +STR_MONTH_AUG :August +STR_MONTH_SEP :Septembur +STR_MONTH_OCT :Oktobur +STR_MONTH_NOV :Novembur +STR_MONTH_DEC :Desembur +############ range for months ends + +# Graph window +STR_GRAPH_KEY_BUTTON :{BLACK}Lykil +STR_GRAPH_KEY_TOOLTIP :{BLACK}Vís lykil til graf +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}Rakstrar avkast grafur +STR_GRAPH_INCOME_CAPTION :{WHITE}Inntøku grafur +STR_GRAPH_CARGO_DELIVERED_CAPTION :{WHITE}Eindir av farmi útflýggja +STR_GRAPH_COMPANY_PERFORMANCE_RATINGS_CAPTION :{WHITE}Avriks meting av fyritøku (hægsta meting=1000) +STR_GRAPH_COMPANY_VALUES_CAPTION :{WHITE}Virðir hjá fyritøku + +STR_GRAPH_CARGO_PAYMENT_RATES_CAPTION :{WHITE}Farma gjald takstur +STR_GRAPH_CARGO_PAYMENT_RATES_X_LABEL :{TINY_FONT}{BLACK}Dagar á ferð +STR_GRAPH_CARGO_PAYMENT_RATES_TITLE :{TINY_FONT}{BLACK}Útgjald fyri útflyggjan av 10 eindum (ella 10,000 litrum) av farmi við fjarstøðu av 20 puntum +STR_GRAPH_CARGO_ENABLE_ALL :{TINY_FONT}{BLACK}Gilda alt +STR_GRAPH_CARGO_DISABLE_ALL :{TINY_FONT}{BLACK}Ógilda alt +STR_GRAPH_CARGO_TOOLTIP_ENABLE_ALL :{BLACK}Vís allan farm á farmagjalds takst grafi +STR_GRAPH_CARGO_TOOLTIP_DISABLE_ALL :{BLACK}Vís ongan farm á farmagjalds takst grafi +STR_GRAPH_CARGO_PAYMENT_TOGGLE_CARGO :{BLACK}Tendra/sløkk graf fyri farma slag +STR_GRAPH_CARGO_PAYMENT_CARGO :{TINY_FONT}{BLACK}{STRING} + +STR_GRAPH_PERFORMANCE_DETAIL_TOOLTIP :{BLACK}Vís avriks metingar í smálutum + +# Graph key window +STR_GRAPH_KEY_CAPTION :{WHITE}Lykil til fyritøku graf +STR_GRAPH_KEY_COMPANY_SELECTION_TOOLTIP :{BLACK}Trýst her fyri at tendra/sløkkja graf hjá fyritøku + +# Company league window +STR_COMPANY_LEAGUE_TABLE_CAPTION :{WHITE}Yvirlit fyri Fyritøku Deildina +STR_COMPANY_LEAGUE_COMPANY_NAME :{ORANGE}{COMPANY} {BLACK}{COMPANY_NUM} '{STRING}' +STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ENGINEER :Teknikari +STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRAFFIC_MANAGER :Ferðslu Leiðari +STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRANSPORT_COORDINATOR :Flutnings Samskipari +STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ROUTE_SUPERVISOR :Rutu Vegleiðari +STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_DIRECTOR :Leiðari +STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHIEF_EXECUTIVE :Ovasti Stjóri +STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHAIRMAN :Leiðari +STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_PRESIDENT :Forseti +STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TYCOON :Tycoon + +# Performance detail window +STR_PERFORMANCE_DETAIL :{WHITE}Avriks meting í smálutum +STR_PERFORMANCE_DETAIL_KEY :{BLACK}Smálutur +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}Sjá smálutir um hesa fyritøkuna +############ Those following lines need to be in this order!! +STR_PERFORMANCE_DETAIL_VEHICLES :{G=n}{BLACK}Akfør: +STR_PERFORMANCE_DETAIL_STATIONS :{BLACK}Støðir: +STR_PERFORMANCE_DETAIL_MIN_PROFIT :{BLACK}Min. vinningur: +STR_PERFORMANCE_DETAIL_MIN_INCOME :{BLACK}Min. inntøka: +STR_PERFORMANCE_DETAIL_MAX_INCOME :{BLACK}Maks. inntøka: +STR_PERFORMANCE_DETAIL_DELIVERED :{BLACK}Útflýggja: +STR_PERFORMANCE_DETAIL_CARGO :{BLACK}Farmur: +STR_PERFORMANCE_DETAIL_MONEY :{BLACK}Peningur: +STR_PERFORMANCE_DETAIL_LOAN :{BLACK}Lán: +STR_PERFORMANCE_DETAIL_TOTAL :{BLACK}Í alt: +############ End of order list +STR_PERFORMANCE_DETAIL_VEHICLES_TOOLTIP :{BLACK}Tali av flutningstólum ið høvdu yvurskot farna ári. Her verða akfør, tok, skip og flogfør tald við +STR_PERFORMANCE_DETAIL_STATIONS_TOOLTIP :{BLACK}Tal av støðum ið nýligani hava havt tænastu eftirlit. Tok støðir, bus steðgir, floghavnir og so víðari eru tald hvør fyri sær hóast tey hoyra til somu støð +STR_PERFORMANCE_DETAIL_MIN_PROFIT_TOOLTIP :{BLACK}Vinningurin hjá flutningstólinum við lægstu inntøku (einans flutningstól eldri enn tvey ár eru tikin til eftirtektar) +STR_PERFORMANCE_DETAIL_MIN_INCOME_TOOLTIP :{BLACK}Nøgd av peningi forvunni í ársfjórðinginum við tí lægsta vinninginum av 12 teimun síðstu ársfjóringunum +STR_PERFORMANCE_DETAIL_MAX_INCOME_TOOLTIP :{BLACK}Nøgd av peningi forvunni í ársfjórðinginum við tí hægsta vinninginum av 12 teimum síðstu ársfjórðingunum +STR_PERFORMANCE_DETAIL_DELIVERED_TOOLTIP :{BLACK}Eindir av farmi útflýggjaðar í teimum síðstu fýra ársfjórðingunum +STR_PERFORMANCE_DETAIL_CARGO_TOOLTIP :{BLACK}Tali av farma slagi útflýggja síðsta ársfjórðing +STR_PERFORMANCE_DETAIL_MONEY_TOOLTIP :{BLACK}Nøgd av peningi hendan fyritøkan hevur í bankanum +STR_PERFORMANCE_DETAIL_LOAN_TOOLTIP :{BLACK}Nøgdin av peningi hendan fyritøkan hevur í láni +STR_PERFORMANCE_DETAIL_TOTAL_TOOLTIP :{BLACK}Fullfíggja stig út av møguligum stigum + +# Music window +STR_MUSIC_JAZZ_JUKEBOX_CAPTION :{WHITE}Jazz Jukebox +STR_MUSIC_PLAYLIST_ALL :{TINY_FONT}{BLACK}Alt +STR_MUSIC_PLAYLIST_OLD_STYLE :{TINY_FONT}{BLACK}Gamlan stíl +STR_MUSIC_PLAYLIST_NEW_STYLE :{TINY_FONT}{BLACK}Nýggjan stíl +STR_MUSIC_PLAYLIST_EZY_STREET :{TINY_FONT}{BLACK}Ezy Street +STR_MUSIC_PLAYLIST_CUSTOM_1 :{TINY_FONT}{BLACK}Sjálvgjørdur 1 +STR_MUSIC_PLAYLIST_CUSTOM_2 :{TINY_FONT}{BLACK}Sjálvgjørdur 2 +STR_MUSIC_MUSIC_VOLUME :{TINY_FONT}{BLACK}Tónleika ljóðstyrki +STR_MUSIC_EFFECTS_VOLUME :{TINY_FONT}{BLACK}Effekt ljóðstyrki +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}Spor +STR_MUSIC_XTITLE :{TINY_FONT}{BLACK}Heiti +STR_MUSIC_SHUFFLE :{TINY_FONT}{BLACK}Blanda +STR_MUSIC_PROGRAM :{TINY_FONT}{BLACK}Skrá +STR_MUSIC_TOOLTIP_SKIP_TO_PREVIOUS_TRACK :{BLACK}Leyp til fyrra spor í úrvalinum +STR_MUSIC_TOOLTIP_SKIP_TO_NEXT_TRACK_IN_SELECTION :{BLACK}Leyp til næsta spor í úrvalinum +STR_MUSIC_TOOLTIP_STOP_PLAYING_MUSIC :{BLACK}Gevst at spæla tónleik +STR_MUSIC_TOOLTIP_START_PLAYING_MUSIC :{BLACK}Byrja at spæla tónleik +STR_MUSIC_TOOLTIP_DRAG_SLIDERS_TO_SET_MUSIC :{BLACK}Drag hondtøk fyri at seta volumen á tónleiki og ljóði +STR_MUSIC_TOOLTIP_SELECT_ALL_TRACKS_PROGRAM :{BLACK}Vel 'øll spor' skránna +STR_MUSIC_TOOLTIP_SELECT_OLD_STYLE_MUSIC :{BLACK}Vel 'gamlan tónleika stíl' skránna +STR_MUSIC_TOOLTIP_SELECT_NEW_STYLE_MUSIC :{BLACK}Vel 'nýggjan tónleika stíl' skránna +STR_MUSIC_TOOLTIP_SELECT_EZY_STREET_STYLE :{BLACK}Vel 'Ezy Street tónleika stíl' skránna +STR_MUSIC_TOOLTIP_SELECT_CUSTOM_1_USER_DEFINED :{BLACK}Vel 'Sjálvgjørdur 1' (brúkara ásett) skránna +STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Vel 'Sjálvgjørdur 2' (brúkara ásett) skránna +STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Tendra/sløkk bland av skránni +STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Vís tónleika spor úrvals glugga + +STR_ERROR_NO_SONGS :{WHITE}Eitt tónleika sett uttan sangir er valt. Engir sangir vera spældir + +# Playlist window +STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}Úrval av tónleika skráðum +STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} "{STRING}" +STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}Spor yvirlit +STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}Skrá - '{STRING}' +STR_PLAYLIST_CLEAR :{TINY_FONT}{BLACK}Strika +STR_PLAYLIST_TOOLTIP_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}Reinsa núverðandi skrá (Sjálvgjørdur1 ella Sjálvgjørdur2 einans) +STR_PLAYLIST_TOOLTIP_CLICK_TO_ADD_TRACK :{BLACK}Trýst á tónleika spor fyri at leggja til núverðandi skrá (Sjálvgjørdur1 ella Sjálvgjørdur2 einans) +STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}Trýst á tónleika spor fyri at strika frá núverðani skrá (Sjálvgjørdur1 ella Sjálvgjørdur2 einans) + +# Highscore window +STR_HIGHSCORE_TOP_COMPANIES_WHO_REACHED :{BIG_FONT}{BLACK}Fremstu fyritøkunar ið rukku {NUM} +STR_HIGHSCORE_TOP_COMPANIES_NETWORK_GAME :{BIG_FONT}{BLACK}Yvirlit fyri Fyritøku Deildina í {NUM} +STR_HIGHSCORE_POSITION :{BIG_FONT}{BLACK}{COMMA}. +STR_HIGHSCORE_PERFORMANCE_TITLE_BUSINESSMAN :Vinnumaður +STR_HIGHSCORE_PERFORMANCE_TITLE_ENTREPRENEUR :Íverksetari +STR_HIGHSCORE_PERFORMANCE_TITLE_INDUSTRIALIST :Ídnaðarmaður +STR_HIGHSCORE_PERFORMANCE_TITLE_CAPITALIST :Peningamaður +STR_HIGHSCORE_PERFORMANCE_TITLE_MAGNATE :Ídnaðarkongur +STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL :Máttmikil ídnaðar kongur +STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY :Aldarinnar Tycoon +STR_HIGHSCORE_NAME :{PRESIDENT_NAME}, {COMPANY} +STR_HIGHSCORE_STATS :{BIG_FONT}'{STRING}' ({COMMA}) +STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{BLACK}{COMPANY} røkkur '{STRING}' støði! +STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{WHITE}{PRESIDENT_NAME} frá {COMPANY} røkkur '{STRING}' støði! + +# Smallmap window +STR_SMALLMAP_CAPTION :{WHITE}Kort - {STRING} + +STR_SMALLMAP_TYPE_CONTOURS :Skuggar +STR_SMALLMAP_TYPE_VEHICLES :Flutningstól +STR_SMALLMAP_TYPE_INDUSTRIES :Ídnaðir +STR_SMALLMAP_TYPE_ROUTES :Rutir +STR_SMALLMAP_TYPE_VEGETATION :Vøkstur +STR_SMALLMAP_TYPE_OWNERS :Eigarir +STR_SMALLMAP_TOOLTIP_SHOW_LAND_CONTOURS_ON_MAP :{BLACK}Vís landslags skuggar á kortinum +STR_SMALLMAP_TOOLTIP_SHOW_VEHICLES_ON_MAP :{BLACK}Vís flutningstól á korti +STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRIES_ON_MAP :{BLACK}Vís ídnaðir á korti +STR_SMALLMAP_TOOLTIP_SHOW_TRANSPORT_ROUTES_ON :{BLACK}Vís flutnings rutir á korti +STR_SMALLMAP_TOOLTIP_SHOW_VEGETATION_ON_MAP :{BLACK}Vís vøkstur á korti +STR_SMALLMAP_TOOLTIP_SHOW_LAND_OWNERS_ON_MAP :{BLACK}Vís land eigarar á korti +STR_SMALLMAP_TOOLTIP_INDUSTRY_SELECTION :{BLACK}Trýst á eitt ídnaðar slag fyri at vísa/fjala tað. Ctrl+trýst fjalir øll sløg uttan ta valda. Ctrl+trýst á ta aftur fyri at vísa øll ídnaðar sløg +STR_SMALLMAP_TOOLTIP_COMPANY_SELECTION :{BLACK}Trýst á eina fyritøku fyri at fjala/vísa teirra ognir. Ctrl+trýst fjalir allar fyritøkur uttan ta valdu. Ctrl+trýst umaftur fyri at vísa allar fyritøkur + +STR_SMALLMAP_LEGENDA_ROADS :{TINY_FONT}{BLACK}Vegir +STR_SMALLMAP_LEGENDA_RAILROADS :{TINY_FONT}{BLACK}Jarnbreytir +STR_SMALLMAP_LEGENDA_STATIONS_AIRPORTS_DOCKS :{TINY_FONT}{BLACK}Støðir/Floghavnir/Havnir +STR_SMALLMAP_LEGENDA_BUILDINGS_INDUSTRIES :{TINY_FONT}{BLACK}Bygningar/Ídnaðir +STR_SMALLMAP_LEGENDA_VEHICLES :{TINY_FONT}{BLACK}Flutningstól +STR_SMALLMAP_LEGENDA_TRAINS :{TINY_FONT}{BLACK}Tok +STR_SMALLMAP_LEGENDA_ROAD_VEHICLES :{TINY_FONT}{BLACK}Akfør +STR_SMALLMAP_LEGENDA_SHIPS :{TINY_FONT}{BLACK}Skip +STR_SMALLMAP_LEGENDA_AIRCRAFT :{TINY_FONT}{BLACK}Flogfør +STR_SMALLMAP_LEGENDA_TRANSPORT_ROUTES :{TINY_FONT}{BLACK}Flutnings rutir +STR_SMALLMAP_LEGENDA_FOREST :{TINY_FONT}{BLACK}Skógur +STR_SMALLMAP_LEGENDA_RAILROAD_STATION :{TINY_FONT}{BLACK}Tok støð +STR_SMALLMAP_LEGENDA_TRUCK_LOADING_BAY :{TINY_FONT}{BLACK}Lastbila støð +STR_SMALLMAP_LEGENDA_BUS_STATION :{TINY_FONT}{BLACK}Buss støð +STR_SMALLMAP_LEGENDA_AIRPORT_HELIPORT :{TINY_FONT}{BLACK}Floghavn/Tyrlupallur +STR_SMALLMAP_LEGENDA_DOCK :{TINY_FONT}{BLACK}Havn +STR_SMALLMAP_LEGENDA_ROUGH_LAND :{TINY_FONT}{BLACK}Haðrrent lendi +STR_SMALLMAP_LEGENDA_GRASS_LAND :{TINY_FONT}{BLACK}Gras lendi +STR_SMALLMAP_LEGENDA_BARE_LAND :{TINY_FONT}{BLACK}Bert lendi +STR_SMALLMAP_LEGENDA_FIELDS :{TINY_FONT}{BLACK}Markir +STR_SMALLMAP_LEGENDA_TREES :{TINY_FONT}{BLACK}Trø +STR_SMALLMAP_LEGENDA_ROCKS :{TINY_FONT}{BLACK}Grót +STR_SMALLMAP_LEGENDA_WATER :{TINY_FONT}{BLACK}Vatn +STR_SMALLMAP_LEGENDA_NO_OWNER :{TINY_FONT}{BLACK}Eingin eigari +STR_SMALLMAP_LEGENDA_TOWNS :{TINY_FONT}{BLACK}Bygdir +STR_SMALLMAP_LEGENDA_INDUSTRIES :{TINY_FONT}{BLACK}Ídnaðir +STR_SMALLMAP_LEGENDA_DESERT :{TINY_FONT}{BLACK}Oyðimørk +STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLACK}Kavi + +STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Vís/fjal bygda nøvn á kortinum +STR_SMALLMAP_CENTER :{BLACK}Miðsavna lítlakorti á núverðandi stað +STR_SMALLMAP_INDUSTRY :{TINY_FONT}{STRING} ({NUM}) +STR_SMALLMAP_COMPANY :{TINY_FONT}{COMPANY} +STR_SMALLMAP_TOWN :{TINY_FONT}{WHITE}{TOWN} +STR_SMALLMAP_DISABLE_ALL :{BLACK}Sløkk alt +STR_SMALLMAP_ENABLE_ALL :{BLACK}Tendra alt +STR_SMALLMAP_SHOW_HEIGHT :{BLACK}Vís hædd +STR_SMALLMAP_TOOLTIP_DISABLE_ALL_INDUSTRIES :{BLACK}Vís ongar ídnaðir á kortinum +STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES :{BLACK}Vís allar ídnaðir á kortinum +STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}Tendra/sløkk hæddarkort +STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES :{BLACK}Ikki vísa ognir hjá fyritøkum á kortinum +STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}Vís ognir hjá øllum fyritøkum á kortinum + +# Status bar messages +STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Vís síðstu boð á tíðinda flutningi +STR_STATUSBAR_COMPANY_NAME :{SILVER}- - {COMPANY} - - +STR_STATUSBAR_PAUSED :{YELLOW}* * STEÐGA * * +STR_STATUSBAR_AUTOSAVE :{RED}SJÁLVGOYMSLA +STR_STATUSBAR_SAVING_GAME :{RED}* * GOYMUR SPÆL * * + +# News message history +STR_MESSAGE_HISTORY :{WHITE}Boðs søga +STR_MESSAGE_HISTORY_TOOLTIP :{BLACK}Yvirlit yvir fesk tíðinda boð +STR_MESSAGE_NEWS_FORMAT :{STRING} - {STRING} + +STR_NEWS_MESSAGE_CAPTION :{WHITE}Boð +STR_NEWS_CUSTOM_ITEM :{BIG_FONT}{BLACK}{STRING} + +STR_NEWS_FIRST_TRAIN_ARRIVAL :{BIG_FONT}{BLACK}Íbúgvar fegnast . . .{}Fyrsta toki kemur til {STATION}! +STR_NEWS_FIRST_BUS_ARRIVAL :{BIG_FONT}{BLACK}Íbúgvar fegnast . . .{}Fyrsti bussur kemur til {STATION}! +STR_NEWS_FIRST_TRUCK_ARRIVAL :{BIG_FONT}{BLACK}Íbúgvar fegnast . . .{}Fyrsti lastbilur kemur til {STATION}! +STR_NEWS_FIRST_PASSENGER_TRAM_ARRIVAL :{BIG_FONT}{BLACK}Íbúgvar fegnast . . .{}Fyrsti ferðafólka sporvognur kemur til {STATION}! +STR_NEWS_FIRST_CARGO_TRAM_ARRIVAL :{BIG_FONT}{BLACK}Íbúgvar fegnast . . .{}Fyrsti farma sporvognur kemur til {STATION}! +STR_NEWS_FIRST_SHIP_ARRIVAL :{BIG_FONT}{BLACK}Íbúgvar fegnast . . .{}Fyrsta skip kemur til {STATION}! +STR_NEWS_FIRST_AIRCRAFT_ARRIVAL :{BIG_FONT}{BLACK}Íbúgvar fegnast . . .{}Fyrsta flogfar kemur til {STATION}! + +STR_NEWS_TRAIN_CRASH :{BIG_FONT}{BLACK}Tok krasj!{}{COMMA} doyggja í eldhavi aftaná samanstoyt +STR_NEWS_ROAD_VEHICLE_CRASH_DRIVER :{BIG_FONT}{BLACK}Akfars krasj!{}Bilførari doyr í eldhavi eftir samanstoyt við tok +STR_NEWS_ROAD_VEHICLE_CRASH :{BIG_FONT}{BLACK}Akfars krasj!{}{COMMA} doyggja í eldhavi eftir samanstoyt við tok +STR_NEWS_AIRCRAFT_CRASH :{BIG_FONT}{BLACK}Flogfars krasj!{}{COMMA} doyggja í eldhavi í {STATION} +STR_NEWS_PLANE_CRASH_OUT_OF_FUEL :{BIG_FONT}{BLACK}Flogfars krasj!{}Flogfar hevði einki brennievni eftir, {COMMA} doyggja í eldhavi + +STR_NEWS_DISASTER_ZEPPELIN :{BIG_FONT}{BLACK}Luftskips ólukka í {STATION}! +STR_NEWS_DISASTER_SMALL_UFO :{BIG_FONT}{BLACK}Akfar oyðilagt í 'UFO' samanstoyti! +STR_NEWS_DISASTER_AIRPLANE_OIL_REFINERY :{BIG_FONT}{BLACK}Spreinging í oljureinsiverki tætt við {TOWN}! +STR_NEWS_DISASTER_HELICOPTER_FACTORY :{BIG_FONT}{BLACK}Verksmiðja oyðiløgd undir illgrunasomum umstøðum tætt við {TOWN}! +STR_NEWS_DISASTER_BIG_UFO :{BIG_FONT}{BLACK}'UFO' lendur tætt við {TOWN}! +STR_NEWS_DISASTER_COAL_MINE_SUBSIDENCE :{BIG_FONT}{BLACK}Smokking í kola námi leggur eftir seg spor av oyðilegging tætt við {TOWN}! +STR_NEWS_DISASTER_FLOOD_VEHICLE :{BIG_FONT}{BLACK}Flóðalda!{}Í minsta lagi {COMMA} saknaði, væntandi deyð eftir umfatandi flóðaldu! + +STR_NEWS_COMPANY_IN_TROUBLE_TITLE :{BIG_FONT}{BLACK}Flutnings fyritøka í vanda! +STR_NEWS_COMPANY_IN_TROUBLE_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} verður selt ella lýst á húsagang um ikki úrtøkan økist skjótt! +STR_NEWS_COMPANY_MERGER_TITLE :{BIG_FONT}{BLACK}Flutnings fyritøkur samanlagdar! +STR_NEWS_COMPANY_MERGER_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} er selt til {STRING} fyri {CURRENCY_LONG}! +STR_NEWS_COMPANY_BANKRUPT_TITLE :{BIG_FONT}{BLACK}Húsagangur! +STR_NEWS_COMPANY_BANKRUPT_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} er lukka niður av ognarum og øll virði seld! +STR_NEWS_COMPANY_LAUNCH_TITLE :{BIG_FONT}{BLACK}Nýggj flutnings fyritøka stovnað! +STR_NEWS_COMPANY_LAUNCH_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} setur spakan í tætt vi {TOWN}! +STR_NEWS_MERGER_TAKEOVER_TITLE :{BIG_FONT}{BLACK}{STRING} er yvirtikið av {STRING}! +STR_PRESIDENT_NAME_MANAGER :{BLACK}{PRESIDENT_NAME}{}(Leiðari) + +STR_NEWS_NEW_TOWN :{BLACK}{BIG_FONT}{STRING} stuðlaði stovnanina av nýggju bygdini {TOWN}! + +STR_NEWS_INDUSTRY_CONSTRUCTION :{BIG_FONT}{BLACK}Ný{G "ggjur" "ggj" "tt"} {STRING} stendur í gerð tætt við {TOWN}! +STR_NEWS_INDUSTRY_PLANTED :{BIG_FONT}{BLACK}Nýggjur {STRING} plantaður tætt vi {TOWN}! + +STR_NEWS_INDUSTRY_CLOSURE_GENERAL :{BIG_FONT}{BLACK}{STRING} steingir brátt! +STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS :{BIG_FONT}{BLACK}Veitingar trupulleikar fáa {STRING} at steingja brátt! +STR_NEWS_INDUSTRY_CLOSURE_LACK_OF_TREES :{BIG_FONT}{BLACK}Vantandi nærhendis trø fær {STRING} at steingja brátt! + +STR_NEWS_EURO_INTRODUCTION :{BIG_FONT}{BLACK}Evropeisk gjaldsoyra samstarv!{}{}Evran verður innførd sum einasta gjaldsoyra í tínum landi! +STR_NEWS_BEGIN_OF_RECESSION :{BIG_FONT}{BLACK}Ringar tíðir kring allan heimin!{}{}Búskaparfrøðingar vanta ta ringasta! +STR_NEWS_END_OF_RECESSION :{BIG_FONT}{BLACK}Endi á ringum tíðum!{}{}Øktur handil skapar álit hjá vinnuni nú búskapurin styrknar! + +STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL :{BIG_FONT}{BLACK}{INDUSTRY} økir framleiðslu! +STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_COAL :{BIG_FONT}{BLACK}Nýtt lag av koli funni í {INDUSTRY}!{}Framleiðslan vantast at tvífaldast! +STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_OIL :{BIG_FONT}{BLACK}Nýggjur oljubrunnur funnin við {INDUSTRY}!{}Framleiðslan vantast at tvífaldast! +STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM :{BIG_FONT}{BLACK}Betraðir arbeiðsháttir á {INDUSTRY} vantast at tvífalda framleiðslu! +STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_SMOOTH :{BIG_FONT}{BLACK}{STRING} framleiðslan hjá {INDUSTRY} økist við {COMMA}%! +STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL :{BIG_FONT}{BLACK}{INDUSTRY} framleiðsla minka 50% +STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM :{BIG_FONT}{BLACK}Flogkykta álop elvir til oyðilegging á {INDUSTRY}!{}Framleiðsla skerd 50% +STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_SMOOTH :{BIG_FONT}{BLACK}{STRING} framleiðslan hjá {INDUSTRY} minkar {COMMA}%! + +STR_NEWS_TRAIN_IS_WAITING :{WHITE}{VEHICLE} bíðar í goymsluni +STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE} bíðar í goymsluni +STR_NEWS_SHIP_IS_WAITING :{WHITE}{VEHICLE} bíðar í goymsluni +STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE} bíðar í hangarinum + +# 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 + +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 +STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD_AND :{WHITE}{VEHICLE} er við at eldast serstakliga nógv og tørvast at skifta um í bræði +STR_NEWS_TRAIN_IS_STUCK :{WHITE}{VEHICLE} kann ikki finna eina leið at halda fram +STR_NEWS_VEHICLE_IS_LOST :{WHITE}{VEHICLE} er glata +STR_NEWS_VEHICLE_IS_UNPROFITABLE :Vinningurin síðsta ár hjá {WHITE}{VEHICLE} var {CURRENCY_LONG} +STR_NEWS_AIRCRAFT_DEST_TOO_FAR :{WHITE}{VEHICLE} sleppur ikki til ætlaða staðið tí ta er ov langt vekk + +STR_NEWS_ORDER_REFIT_FAILED :{WHITE}{VEHICLE} steðgaði tí eini boð um umbyggjing miseydnaðust +STR_NEWS_VEHICLE_AUTORENEW_FAILED :{WHITE}Sjálvendurnýggjan miseydnaðist vi {VEHICLE}{}{STRING} + +STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE :{BIG_FONT}{BLACK}Nýtt {STRING} til sølu! +STR_NEWS_NEW_VEHICLE_TYPE :{BIG_FONT}{BLACK}{ENGINE} +STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}Nýtt {STRING} til sølu! - {ENGINE} + +STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO :{WHITE}{STATION} tekur ikki longur ímóti {STRING} +STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO_OR_CARGO :{WHITE}{STATION} tekur ikki longur ímóti hvørki {STRING} ella {STRING} +STR_NEWS_STATION_NOW_ACCEPTS_CARGO :{WHITE}{STATION} tekur nú ímóti {STRING} +STR_NEWS_STATION_NOW_ACCEPTS_CARGO_AND_CARGO :{WHITE}{STATION} tekur nú ímóti bæði {STRING} og {STRING} + +STR_NEWS_OFFER_OF_SUBSIDY_EXPIRED :{BIG_FONT}{BLACK}Tilboð um stuðul útgingi:{}{}{STRING} frá {STRING} til {STRING} fær nú ongan stuðul +STR_NEWS_SUBSIDY_WITHDRAWN_SERVICE :{BIG_FONT}{BLACK}Stuðul tikin aftur:{}{}{STRING} flutningur frá {STRING} til {STRING} er ikki stuðla longur +STR_NEWS_SERVICE_SUBSIDY_OFFERED :{BIG_FONT}{BLACK}Tilboð um flutnings stuðul:{}{}Fyrsti {STRING} flutningur frá {STRING} til {STRING} fær stuðul í eitt ár frá mynduleikanum á staðnum! +STR_NEWS_SERVICE_SUBSIDY_AWARDED_HALF :{BIG_FONT}{BLACK}Flutnings stuðul handaður {STRING}!{}{}{STRING} flutningur frá {STRING} til {STRING} gevur 50% eyka úrtøku í eitt ár! +STR_NEWS_SERVICE_SUBSIDY_AWARDED_DOUBLE :{BIG_FONT}{BLACK}Flutnings stuðul handaður {STRING}!{}{}{STRING} flutningur frá {STRING} til {STRING} hevur tvífaldaða úrtøku í eitt ár! +STR_NEWS_SERVICE_SUBSIDY_AWARDED_TRIPLE :{BIG_FONT}{BLACK}Flutnings stuðul handaður {STRING}!{}{}{STRING} flutningur frá {STRING} til {STRING} hevur trýfaldaða úrtøku í eitt ár! +STR_NEWS_SERVICE_SUBSIDY_AWARDED_QUADRUPLE :{BIG_FONT}{BLACK}Flutnings stuðul handaður {STRING}!{}{}{STRING} flutningur frá {STRING} til {STRING} hevur ferfaldaða úrtøku í eitt ár! + +STR_NEWS_ROAD_REBUILDING :{BIG_FONT}{BLACK}Ferðslu ruðuleiki í {TOWN}!{}{}Umvæling av vega kervi fíggja av {STRING} førir við sær 6 mánaðir av neyð fyri bilførarar! +STR_NEWS_EXCLUSIVE_RIGHTS_TITLE :{BIG_FONT}{BLACK}Flutnings einahandil! +STR_NEWS_EXCLUSIVE_RIGHTS_DESCRIPTION :{BIG_FONT}{BLACK}Mynduleikanir í {TOWN} skriva undir sáttmála við {STRING} fyri einkarrætt av flutningi í eitt ár! + +# Extra view window +STR_EXTRA_VIEW_PORT_TITLE :{WHITE}Sýnisgluggi {COMMA} +STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}Rita til sýnisglugga +STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}Avrita staðið í høvuðsglugganum inn hendan sýnisgluggan +STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}Set inn frá sýnisglugga +STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}Set staðið í hesum sýnisglugganum inn í høvuðsgluggan + +# Game options window +STR_GAME_OPTIONS_CAPTION :{WHITE}Spæli møguleikar +STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Gjaldsoyra eindir +STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Úrval av gjaldsoyra eindum + +############ start of currency region +STR_GAME_OPTIONS_CURRENCY_GBP :Bretsk Pund (GBP) +STR_GAME_OPTIONS_CURRENCY_USD :Dollarar (USD) +STR_GAME_OPTIONS_CURRENCY_EUR :Evrir (EUR) +STR_GAME_OPTIONS_CURRENCY_JPY :Yen (JPY) +STR_GAME_OPTIONS_CURRENCY_ATS :Eysturríkskan Shilling (ATS) +STR_GAME_OPTIONS_CURRENCY_BEF :Belgiskan Frank (BEF) +STR_GAME_OPTIONS_CURRENCY_CHF :Sveisiskan Frank (CHF) +STR_GAME_OPTIONS_CURRENCY_CZK :Tjekkisk Koruna (CZK) +STR_GAME_OPTIONS_CURRENCY_DEM :Deutschmark (DEM) +STR_GAME_OPTIONS_CURRENCY_DKK :Danskar Krónir (DKK) +STR_GAME_OPTIONS_CURRENCY_ESP :Spanskir Peseta (ESP) +STR_GAME_OPTIONS_CURRENCY_FIM :Finskan Mark (FIM) +STR_GAME_OPTIONS_CURRENCY_FRF :Franskan Frank (FRF) +STR_GAME_OPTIONS_CURRENCY_GRD :Grikkskan Drachma (GRD) +STR_GAME_OPTIONS_CURRENCY_HUF :Ungarskan Forint (HUF) +STR_GAME_OPTIONS_CURRENCY_ISK :Íslenska Krónu (ISK) +STR_GAME_OPTIONS_CURRENCY_ITL :Italskan Lira (ITL) +STR_GAME_OPTIONS_CURRENCY_NLG :Niðurlendskan Gillin (NLG) +STR_GAME_OPTIONS_CURRENCY_NOK :Norskar Krónur (NOK) +STR_GAME_OPTIONS_CURRENCY_PLN :Polskan Zloty (PLN) +STR_GAME_OPTIONS_CURRENCY_RON :Rumeniskan Leu (RON) +STR_GAME_OPTIONS_CURRENCY_RUR :Russiskar Rublar (RUR) +STR_GAME_OPTIONS_CURRENCY_SIT :Slovenskar Tolar (SIT) +STR_GAME_OPTIONS_CURRENCY_SEK :Svenskar Krónur (SEK) +STR_GAME_OPTIONS_CURRENCY_TRY :Turkiskan Lira (TRY) +STR_GAME_OPTIONS_CURRENCY_SKK :Slovakiska Koruna (SKK) +STR_GAME_OPTIONS_CURRENCY_BRL :Brasilskan Real (BRL) +STR_GAME_OPTIONS_CURRENCY_EEK :Estoniska Krooni (EEK) +STR_GAME_OPTIONS_CURRENCY_LTL :Litauiskir Litas (LTL) +STR_GAME_OPTIONS_CURRENCY_KRW :Suður Koreanskar Won (KRW) +STR_GAME_OPTIONS_CURRENCY_ZAR :Suður Afrikanskir Rand (ZAR) +STR_GAME_OPTIONS_CURRENCY_CUSTOM :Sjálvgjørt... +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 +STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_RIGHT :Høgrakoyring + +STR_GAME_OPTIONS_TOWN_NAMES_FRAME :{BLACK}Bygdar nøvn +STR_GAME_OPTIONS_TOWN_NAMES_DROPDOWN_TOOLTIP :{BLACK}Áset slag av bygdar nøvnum + +############ start of townname region +STR_GAME_OPTIONS_TOWN_NAME_ORIGINAL_ENGLISH :Ensk (Upprunalig) +STR_GAME_OPTIONS_TOWN_NAME_FRENCH :Fronsk +STR_GAME_OPTIONS_TOWN_NAME_GERMAN :Týsk +STR_GAME_OPTIONS_TOWN_NAME_ADDITIONAL_ENGLISH :Ensk (Meiri) +STR_GAME_OPTIONS_TOWN_NAME_LATIN_AMERICAN :Latin-Amerikonsk +STR_GAME_OPTIONS_TOWN_NAME_SILLY :Fjákut +STR_GAME_OPTIONS_TOWN_NAME_SWEDISH :Svensk +STR_GAME_OPTIONS_TOWN_NAME_DUTCH :Niðurlendsk +STR_GAME_OPTIONS_TOWN_NAME_FINNISH :Finsk +STR_GAME_OPTIONS_TOWN_NAME_POLISH :Polsk +STR_GAME_OPTIONS_TOWN_NAME_SLOVAK :Slovakisk +STR_GAME_OPTIONS_TOWN_NAME_NORWEGIAN :Norsk +STR_GAME_OPTIONS_TOWN_NAME_HUNGARIAN :Ungarsk +STR_GAME_OPTIONS_TOWN_NAME_AUSTRIAN :Eysturrísk +STR_GAME_OPTIONS_TOWN_NAME_ROMANIAN :Rumensk +STR_GAME_OPTIONS_TOWN_NAME_CZECH :Tjekkisk +STR_GAME_OPTIONS_TOWN_NAME_SWISS :Sveisisk +STR_GAME_OPTIONS_TOWN_NAME_DANISH :Donsk +STR_GAME_OPTIONS_TOWN_NAME_TURKISH :Turkisk +STR_GAME_OPTIONS_TOWN_NAME_ITALIAN :Italiensk +STR_GAME_OPTIONS_TOWN_NAME_CATALAN :Katalanisk +############ end of townname region + +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 + +STR_GAME_OPTIONS_FULLSCREEN :{BLACK}Fullan skerm +STR_GAME_OPTIONS_FULLSCREEN_TOOLTIP :{BLACK}Marka hendan kassan fyri at spæla OpenTTD í fullum skermi + +STR_GAME_OPTIONS_RESOLUTION :{BLACK}Skerm upploysn +STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Vel hvørja skermupploysn tú vil brúka +STR_GAME_OPTIONS_RESOLUTION_OTHER :annað + +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 +STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} vantandi/oyðiløgd fíl{P a ir} +STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Meira kunning um base grafikk setti + +STR_GAME_OPTIONS_BASE_SFX :{BLACK}Base ljóð sett +STR_GAME_OPTIONS_BASE_SFX_TOOLTIP :{BLACK}Vel ta base ljóð setti tú vil brúka +STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}Meira kunning um base ljóð setti + +STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Base tónleika sett +STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Vel ta base tónleika setti tú vil brúka +STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} oyðilagd{P "" ar} fíl{P a ir} +STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Meira kunning um base tónleika setti + +STR_ERROR_FULLSCREEN_FAILED :{WHITE}Eydnaðist ikki at brúka fullan skerm + +# Custom currency window + +STR_CURRENCY_WINDOW :{WHITE}Sjálvgjørt gjaldsoyra +STR_CURRENCY_EXCHANGE_RATE :{LTBLUE}Gjaldsoyra kursur: {ORANGE}{CURRENCY_LONG} = £ {COMMA} +STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Minka um hvussu nógv av tínum gjaldoyra skal til fyri at keypa eitt pund (£) +STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Vaks um hvussu nógv av tínum gjaldoyra skal til fyri at keypa eitt pund (£) +STR_CURRENCY_SET_EXCHANGE_RATE_TOOLTIP :{BLACK}Set gjaldsoyra kursin av tínum gjaldsoyra fyri eitt pund (£) + +STR_CURRENCY_SEPARATOR :{LTBLUE}Separator: {ORANGE}{STRING} +STR_CURRENCY_SET_CUSTOM_CURRENCY_SEPARATOR_TOOLTIP :{BLACK}Set separatorin fyri títt gjaldsoyra + +STR_CURRENCY_PREFIX :{LTBLUE}Prefiks: {ORANGE}{STRING} +STR_CURRENCY_SET_CUSTOM_CURRENCY_PREFIX_TOOLTIP :{BLACK}Set prefiksi fyri títt gjaldsoyra +STR_CURRENCY_SUFFIX :{LTBLUE}Suffiks: {ORANGE}{STRING} +STR_CURRENCY_SET_CUSTOM_CURRENCY_SUFFIX_TOOLTIP :{BLACK}Set suffiksi fyri títt gjaldsoyra + +STR_CURRENCY_SWITCH_TO_EURO :{LTBLUE}Skift til Evru: {ORANGE}{NUM} +STR_CURRENCY_SWITCH_TO_EURO_NEVER :{LTBLUE}Skift til Evru: {ORANGE}ongantíð +STR_CURRENCY_SET_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Set árstal fyri skift til Evru +STR_CURRENCY_DECREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Skift til Evru fyrr +STR_CURRENCY_INCREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Skift til Evru seinni + +STR_CURRENCY_PREVIEW :{LTBLUE}Undanvísing: {ORANGE}{CURRENCY_LONG} +STR_CURRENCY_CUSTOM_CURRENCY_PREVIEW_TOOLTIP :{BLACK}10000 Pund (£) í tínum gjaldsoyra +STR_CURRENCY_CHANGE_PARAMETER :{BLACK}Broyt parametur í sjálvgjørda gjaldsoyranum + +STR_DIFFICULTY_LEVEL_SETTING_MAXIMUM_NO_COMPETITORS :{LTBLUE}Hægsta tali av kappingarneytum: {ORANGE}{COMMA} + +STR_NONE :Einki +STR_FUNDING_ONLY :Fíggjing einans +STR_MINIMAL :Minst +STR_NUM_VERY_LOW :Sera lágt +STR_NUM_LOW :Lágt +STR_NUM_NORMAL :Vanligt +STR_NUM_HIGH :Høgt +STR_NUM_CUSTOM :Sjálvgjørt +STR_NUM_CUSTOM_NUMBER :Sjálvgjørt ({NUM}) + +STR_VARIETY_NONE :Einki +STR_VARIETY_VERY_LOW :Sera lágt +STR_VARIETY_LOW :Lágt +STR_VARIETY_MEDIUM :Miðal +STR_VARIETY_HIGH :Høgt +STR_VARIETY_VERY_HIGH :Sera høgt + +STR_AI_SPEED_VERY_SLOW :Sera seinur +STR_AI_SPEED_SLOW :Seinur +STR_AI_SPEED_MEDIUM :Miðal +STR_AI_SPEED_FAST :Skjótur +STR_AI_SPEED_VERY_FAST :Sera skjótur + +STR_SEA_LEVEL_VERY_LOW :Sera lágur +STR_SEA_LEVEL_LOW :Lágur +STR_SEA_LEVEL_MEDIUM :Miðal +STR_SEA_LEVEL_HIGH :Høgur +STR_SEA_LEVEL_CUSTOM :Sjálvgjørdur +STR_SEA_LEVEL_CUSTOM_PERCENTAGE :Sjálvgjørdur ({NUM}%) + +STR_RIVERS_NONE :Eingir +STR_RIVERS_FEW :Fáir +STR_RIVERS_MODERATE :Miðal +STR_RIVERS_LOT :Nógvir + +STR_DISASTER_NONE :Ongar +STR_DISASTER_REDUCED :Færri +STR_DISASTER_NORMAL :Vanligar + +STR_SUBSIDY_X1_5 :x1.5 +STR_SUBSIDY_X2 :x2 +STR_SUBSIDY_X3 :x3 +STR_SUBSIDY_X4 :x4 + +STR_TERRAIN_TYPE_VERY_FLAT :Sera flatt +STR_TERRAIN_TYPE_FLAT :Flatt +STR_TERRAIN_TYPE_HILLY :Bakkaríkt +STR_TERRAIN_TYPE_MOUNTAINOUS :Fjallaríkt + +STR_CITY_APPROVAL_PERMISSIVE :Eftirgevandi +STR_CITY_APPROVAL_TOLERANT :Tolsamir +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 +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 +STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT :(eingin frágreiðing tøk) +STR_CONFIG_SETTING_DEFAULT_VALUE :{LTBLUE}Vanligt virði: {ORANGE}{STRING} +STR_CONFIG_SETTING_TYPE :{LTBLUE}Slag av instilling: {ORANGE}{STRING} +STR_CONFIG_SETTING_TYPE_CLIENT :Klient instilling (ikki goymt í goymslufílum; ávirkar øll spøl) +STR_CONFIG_SETTING_TYPE_GAME_MENU :Spæl instilling (goymt í goymslufílum; ávirkar einans nýggj spøl) +STR_CONFIG_SETTING_TYPE_GAME_INGAME :Goymslu instilling (goymt í goymslufílum; ávirkar einans núverðandi spæl) +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_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 +STR_CONFIG_SETTING_RESTRICT_ALL :Serfrøðinga innstillingar / allir innstillingar +STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :Innstillingar við einum ørvisi virði enn ta vanliga +STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :Innstillingar við einum ørvisi virði enn tínir 'nýtt spæl' innstillingar + +STR_CONFIG_SETTING_TYPE_DROPDOWN_HELPTEXT :{BLACK}Avmarkar listan niðanfyri so hann einans vísur ávís sløg av innstillingum +STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :Allir innstillingar +STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :Klient innstilling (ikki goymt í goymslufílum; ávirkar øll spøl) +STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Spæl innstilling (goymt í goymslufílum; ávirkar einans nýggj spøl) +STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Spæl innstilling (goymt í goymslufílum; ávirkar einans núverðandi spæl) +STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Fyritøku innstilling (goymt í goymslufílum; ávirkar einans nýggj spøl) +STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Fyritøku stillingar (goymdir í goymslufílu; ávirkar einans núverðandi fyritøku) + +STR_CONFIG_SETTING_OFF :Sløkt +STR_CONFIG_SETTING_ON :Tendra +STR_CONFIG_SETTING_DISABLED :Ikki sligi til + +STR_CONFIG_SETTING_COMPANIES_OFF :Sløkt +STR_CONFIG_SETTING_COMPANIES_OWN :Egna fyritøka +STR_CONFIG_SETTING_COMPANIES_ALL :Allar fyritøkur + +STR_CONFIG_SETTING_NONE :Eingin +STR_CONFIG_SETTING_ORIGINAL :Upprunaligir +STR_CONFIG_SETTING_REALISTIC :Verðuleikakend + +STR_CONFIG_SETTING_HORIZONTAL_POS_LEFT :Vinstra +STR_CONFIG_SETTING_HORIZONTAL_POS_CENTER :Miðja +STR_CONFIG_SETTING_HORIZONTAL_POS_RIGHT :Høgra + +STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN :Hægst loyvda byrjunar lán: {STRING} +STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Mest loyvda upphæddin ein fyritøka kann lána (uttan at taka virðisminkan til eftirtektar) +STR_CONFIG_SETTING_INTEREST_RATE :Rentu stigi: {STRING} +STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Rentustigi á láni, stýrir eisini virðisminkan um hon er sligin til +STR_CONFIG_SETTING_RUNNING_COSTS :Rakstrar kostnaður: {STRING} +STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT :Set hvussu høgur/lágur rakstrarkostnaðurin av flutningstólum og innankervi skal vera +STR_CONFIG_SETTING_CONSTRUCTION_SPEED :Byggingar fer: {STRING} +STR_CONFIG_SETTING_CONSTRUCTION_SPEED_HELPTEXT :Avmarka hvussu nógv AI kann byggja +STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS :Flutningstól fáa maskinskaðar: {STRING} +STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS_HELPTEXT :Vel hvussu oftani flutningstól, ið ikki hava veri til eftirlit, fáa maskinskaða +STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER :Stuðuls faldari: {STRING} +STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT :Vel hvussu nógv verður útgoldi fyri stuðlaðan flutning +STR_CONFIG_SETTING_CONSTRUCTION_COSTS :Bygnings kostnaður: {STRING} +STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :Set hvussu høgur/lágur bygnings- og keypskostnaður skal vera +STR_CONFIG_SETTING_RECESSIONS :Ringar tíðir: {STRING} +STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Um hetta er tendra kunnu ringar tíðir koma fyri við nøkrum ára millumbili. Meðan ringar tíðir eru, er øll framleiðsla munandi lægri (fer aftur á støði ta var áðrenn tá ringu tíðinar eru av) +STR_CONFIG_SETTING_TRAIN_REVERSING :Tok hava ikki loyvi at venda inni á støðum: {STRING} +STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :Um hetta er sligi til, venda tok ikki vi inni á ikki-endastøðum, sjálvt um ta er ein styttri leið til næsta stað um tey venda vi +STR_CONFIG_SETTING_DISASTERS :Ólukkur: {STRING} +STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Tendra/sløkk ólukkur sum kunnu av og á blokera ella oyðileggja flutningstól ella innankervi +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_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} +STR_CONFIG_SETTING_CATCHMENT_HELPTEXT :Ymiskar støddir á upplandi fyri ymisk sløg av støðum og floghavnum +STR_CONFIG_SETTING_EXTRADYNAMITE :Loyv burtur beining av vegum, brúm og bergholum ið bygdir eiga: {STRING} +STR_CONFIG_SETTING_EXTRADYNAMITE_HELPTEXT :Ger tað lættari at beina burtur innankervi og bygningar hjá bygdum +STR_CONFIG_SETTING_TRAIN_LENGTH :Mest loyvda longd av tokum: {STRING} +STR_CONFIG_SETTING_TRAIN_LENGTH_HELPTEXT :Áset mest loyvdu longdina á tokum +STR_CONFIG_SETTING_TILE_LENGTH :{COMMA} punt{P 0 "" ar} +STR_CONFIG_SETTING_SMOKE_AMOUNT :Nøgd av royki/neistum frá flutningstólum: {STRING} +STR_CONFIG_SETTING_SMOKE_AMOUNT_HELPTEXT :Áset hvussu nógvur roykur ella neistar koma úr flutningstólum +STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL :Tok akselerasjóns modell: {STRING} +STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL_HELPTEXT :Vel fysik modelli fyri tok akselerasjón. Upprunaliga modelli mótroknar brekkur líka fyri øll før. Verðuleikakenda modelli mótroknar brekkur ymiskt fyri ymisku førini, treytað av ymiskum eginleikum so sum longd og dráttarmátt +STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL :Akfar akselerasjóns modell: {STRING} +STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL_HELPTEXT :Vel fysik modelli fyri akfars akselerasjón. Upprunaliga modelli mótroknar brekkur líka fyri øll akfør. Verðuleikakenda modelli mótroknar brekkur treytað av ymiskum eginleikum hjá motorinum, til dømis 'dráttar ómak' +STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS :Brattleiki í brekkum fyri tok: {STRING} +STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS_HELPTEXT :Brattleiki av einum hellandi punti fyri eitt tok. Hægri virði gera tað meiri torført at fara niðan brekkuna +STR_CONFIG_SETTING_PERCENTAGE :{COMMA}% +STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS :Brattleiki í brekkum fyri akfør: {STRING} +STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS_HELPTEXT :Brattleiki av einum hellandi punti fyri eitt akfar. Hægri virði gera tað meiri torført at fara niðan brekkuna +STR_CONFIG_SETTING_FORBID_90_DEG :Bannað tokum og skipum at gerða 90° sneiðingar : {STRING} +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_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_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} +STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH_HELPTEXT :Mest loyvda longd tá ið tú byggir berghol +STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :Manuellur byggingarháttur fyri aðal ídnað: {STRING} +STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_HELPTEXT :Háttur at fíggja ein aðal ídnað. 'einki' merkir at tað er ikki møguligt at fíggja nakran, 'kanna' merkir at ta er møguligt men ídnaðurin verður settur í gerð eitt tilvildarligt stað og kann eisini miseydnast, 'sum aðrir ídnaðir' merkir at tú sjálvur kann velja hvar aðal ídnaðurin verður settur í gerð +STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :Einki +STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :Sum aðrir ídnaðir +STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :Kanna +STR_CONFIG_SETTING_INDUSTRY_PLATFORM :Flatt øki kring ídnaðir: {STRING} +STR_CONFIG_SETTING_INDUSTRY_PLATFORM_HELPTEXT :Mongd av fløtum lendi kring ein ídnað. Hetta tryggjar at tómt pláss er kring ein ídnað til at byggja breytir osv. +STR_CONFIG_SETTING_MULTIPINDTOWN :Loyv fleiri líkar ídnaðir per bygd: {STRING} +STR_CONFIG_SETTING_MULTIPINDTOWN_HELPTEXT :Vanligani vil ein bygd ikki hava meir enn ein ídnað av sama slagi. Við hesi áseting loyvir ein bygd fleiri ídnaðir av sama slagi í økinum +STR_CONFIG_SETTING_SIGNALSIDE :Vís tekin: {STRING} +STR_CONFIG_SETTING_SIGNALSIDE_HELPTEXT :Vel á hvørjari síðu av breytini tekin vera sett +STR_CONFIG_SETTING_SIGNALSIDE_LEFT :Á vinstru síðu +STR_CONFIG_SETTING_SIGNALSIDE_DRIVING_SIDE :Á førara síðuni +STR_CONFIG_SETTING_SIGNALSIDE_RIGHT :Á høgru síðu +STR_CONFIG_SETTING_SHOWFINANCES :Vís fíggjarglugga, tá árið endar: {STRING} +STR_CONFIG_SETTING_SHOWFINANCES_HELPTEXT :Um gilda, kemur fíggjar vindeyga fram við árslok hvørt ár so tað er lætt at fáa fíggjarligt innlit í fyritøkuni +STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :Nýggj boð eru vanligani 'non-stop': {STRING} +STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT_HELPTEXT :Vanligani støðgar eitt flutningstól við allar støðir ta kemur framvi. Um henda áseting er gilda, koyra flutningstól gjøgnum støðir á veg til síni endamál uttan at steðga. Legg til merkis, henda ásetingin lýsir einans eitt vanligt virði fyri nýggj boð. Einstøk boð kunnu kortini skilligani ásetast báðar atburðir +STR_CONFIG_SETTING_STOP_LOCATION :Nýggj tok boð steðga vanligt vi {STRING} av pallinum +STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :Áset hvar við pallin eitt tok steðgar vanligani. 'nær endanum' merkir tætt við inngongdina, 'miðjuni' merkir í miðjuni á pallinum og 'fjart endanum' merkir longst burtur frá inngongdini. Legg til merkis, henda ásetingin lýsir einans eitt vanligt virði fyri nýggj boð. Einstøk boð kunnu kortini skilligani ásetast báðar atburðir +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_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 +STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT_FULLSCREEN :Høvuðs sýnisgluggi, einans fullan skerm +STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT :Høvuðs sýnisgluggi +STR_CONFIG_SETTING_AUTOSCROLL_EVERY_VIEWPORT :Allir sýnisgluggar +STR_CONFIG_SETTING_BRIBE :Loyv mutran av mynduleikum á staðnum: {STRING} +STR_CONFIG_SETTING_BRIBE_HELPTEXT :Loyv fyritøkum at royna at mutra bygda mynduleikan á staðnum. Um mutri verður avdúka av einum eftirlitsmanni, sleppur fyritøkan ikki at gera nakað í bygdini teir næstu seks mánaðinar +STR_CONFIG_SETTING_ALLOW_EXCLUSIVE :Loyv keypi av flutnings einkarættindum: {STRING} +STR_CONFIG_SETTING_ALLOW_EXCLUSIVE_HELPTEXT :Um ein fyritøka keypur flutnings einkarættindi í einari bygd, fáa støðinar (ferðafólk og farm) hjá kappingarneytum ongan farm í eitt heilt ár +STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS :Loyv fígging av nýggjum bygningum: {STRING} +STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS_HELPTEXT :Loyv fyritøkum at handa bygdum pening til fígging av nýggjum húsum +STR_CONFIG_SETTING_ALLOW_FUND_ROAD :Loyv fígging av vega endurbygging á staðnum: {STRING} +STR_CONFIG_SETTING_ALLOW_FUND_ROAD_HELPTEXT :Loyv fyritøkum at handa bygdum pening fyri veg endurbygging til tess at sabotera tænastur grundaðar á vegakervi +STR_CONFIG_SETTING_ALLOW_GIVE_MONEY :Loyv handan av pengum til aðrar fyritøkur: {STRING} +STR_CONFIG_SETTING_ALLOW_GIVE_MONEY_HELPTEXT :Loyv flutning av peningi millum fyritøkur í hópspølum +STR_CONFIG_SETTING_FREIGHT_TRAINS :Vekt faldari fyri farm til tess at eftirgera tung tok: {STRING} +STR_CONFIG_SETTING_FREIGHT_TRAINS_HELPTEXT :Áset ávirkanina av farmi á tok. Hægri virði ger tað meira krevjandi fyri tok at føra farm, serliga í brekkum +STR_CONFIG_SETTING_PLANE_SPEED :Flogfars ferð faktorur: {STRING} +STR_CONFIG_SETTING_PLANE_SPEED_HELPTEXT :Áset lutfalsligu ferðina á flogførum samanbori við onnur flutningstól, til tess at minka um inntøkuna frá flogflutningi +STR_CONFIG_SETTING_PLANE_SPEED_VALUE :1 / {COMMA} +STR_CONFIG_SETTING_PLANE_CRASHES :Tal av flogfars krasjum: {STRING} +STR_CONFIG_SETTING_PLANE_CRASHES_HELPTEXT :Áset útliti til at ein flogvanlukka hendur +STR_CONFIG_SETTING_PLANE_CRASHES_NONE :Einki +STR_CONFIG_SETTING_PLANE_CRASHES_REDUCED :Færri +STR_CONFIG_SETTING_PLANE_CRASHES_NORMAL :Vanligt +STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Loyv gjøgnumkoyrings steðgum á vegum ið bygdir eiga: {STRING} +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_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 + +STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :Floghavnir ganga ongantíð út: {STRING} +STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS_HELPTEXT :Gildan av hesi áseting ger at hvørt floghavna slag altíð er tøkt eftir tað er komi í nýtslu + +STR_CONFIG_SETTING_WARN_LOST_VEHICLE :Ávara um flutningstól er glatað: {STRING} +STR_CONFIG_SETTING_WARN_LOST_VEHICLE_HELPTEXT :Tú fær boð um flutningstól ið ikki finna leið +STR_CONFIG_SETTING_ORDER_REVIEW :Kanna boð hjá flutningstólum: {STRING} +STR_CONFIG_SETTING_ORDER_REVIEW_HELPTEXT :Um gilda verða boðini hjá flutningstólum regluligani kanna, og boða verður frá um eyðsyndar trupulleikar +STR_CONFIG_SETTING_ORDER_REVIEW_OFF :Nei +STR_CONFIG_SETTING_ORDER_REVIEW_EXDEPOT :Ja, men útihýs steðgaði flutningstól +STR_CONFIG_SETTING_ORDER_REVIEW_ON :Av øllum flutningstólum +STR_CONFIG_SETTING_WARN_INCOME_LESS :Ávara um eitt flutningstól hevur negativa inntøku: {STRING} +STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :Um gilda, fær tú boð tá eitt flutningstól ikki hevur havt nakran vinning í eitt kalendara ár +STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Flutningstól ganga ongantíð út: {STRING} +STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :Um gilda, eru øll sløg av flutningstólum altíð tøk eftir tey eru komin í nýtslu +STR_CONFIG_SETTING_AUTORENEW_VEHICLE :Sjálvendurnýggja flutningstól tá ta gerst gamalt: {STRING} +STR_CONFIG_SETTING_AUTORENEW_VEHICLE_HELPTEXT :Um gilda, verður eitt flutningstól tá tað nærkast endanum á sínum lívi sjálvirkandi umbýtt tá endurnýggjanar treytirnar eru nøktaðar +STR_CONFIG_SETTING_AUTORENEW_MONTHS :Sjálvendurnýggja flutningstól {STRING} maks aldur +STR_CONFIG_SETTING_AUTORENEW_MONTHS_HELPTEXT :Lutfalsligur aldur fyri nær eitt flutningstól átti at veri umhugsað til sjálvendurnýggjan +STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_BEFORE :{COMMA} mánað{P 0 "" ir} áðrenn +STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_AFTER :{COMMA} mánað{P 0 "" ir} eftir +STR_CONFIG_SETTING_AUTORENEW_MONEY :Sjálvendurnýggjan minst kravdur peningur til endurnýggjan: {STRING} +STR_CONFIG_SETTING_AUTORENEW_MONEY_HELPTEXT :Minsta nøgd av peningi ið má vera í peningastovninum áðrenn sjálvendurnýggjan av flutningstólum verður umhugsað +STR_CONFIG_SETTING_ERRMSG_DURATION :Tíðarlongd av villuboðum: {STRING} +STR_CONFIG_SETTING_ERRMSG_DURATION_HELPTEXT :Tíðarbili ið villu boð verða víst í einum reyðum vindeyga. Legg til merkis at nøkur (umráðandi) villu boð ikki verða sjálvvirkandi afturlatin eftir hetta tíðarbil, men mugu latast aftur manuelt +STR_CONFIG_SETTING_ERRMSG_DURATION_VALUE :{COMMA} sekund{P 0 "" ir} +STR_CONFIG_SETTING_HOVER_DELAY :Vís góð ráð: {STRING} +STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Seinking áðrenn góð ráð vera víst tá músin sveimar yvur ein lut á takførisflatuni. Í øðrum lagi kunnu góðu ráðini bindast at høgra músa knøtti +STR_CONFIG_SETTING_HOVER_DELAY_VALUE :Sveima í {COMMA} sekund{P 0 "" ir} +STR_CONFIG_SETTING_HOVER_DELAY_DISABLED :Høgra trýst +STR_CONFIG_SETTING_POPULATION_IN_LABEL :Vís bygda fólkatal í bygda navna spjaldrinum: {STRING} +STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :Vís fólkatali í bygdum á teirra spjøldrum á kortinum +STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :Tjúgd av linjum í grafum: {STRING} +STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Víddin á linjuni í grafum. Ein kløn linja kann lesast meiri nágreiniligani, ein tjúkk linja er lættari at síggja og litinir sjónligari + +STR_CONFIG_SETTING_LAND_GENERATOR :Lendis framleiðari: {STRING} +STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :Upprunaligi +STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis +STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Mesta fjarstøða frá eggini til olju reinsiverk: {STRING} +STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Olju reinsiverk verða bert bygd nær eggini á kortinum, tað er við strondina fyri oyggja kort +STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Kava linju hædd: {STRING} +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Hvussu harðrent ið lendi skal vera (einans TerraGenesis) : {STRING} +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Sera mjúkt +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :Mjúkt +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :Harðrent +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :Sera harðrent +STR_CONFIG_SETTING_TREE_PLACER :Algoritma fyri setan av trøðum: {STRING} +STR_CONFIG_SETTING_TREE_PLACER_NONE :Eingin +STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :Upprunalig +STR_CONFIG_SETTING_TREE_PLACER_IMPROVED :Betra +STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Hæddarkort snarðing: {STRING} +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_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 + +STR_CONFIG_SETTING_STATION_SPREAD :Mesta støð spjaðing: {STRING} +STR_CONFIG_SETTING_STATION_SPREAD_HELPTEXT :Mesta øki deilir av eini einkultari støð kunnu spjaðast útyvir. Legg til merkis at eitt høgt virði vil seinka spælinum +STR_CONFIG_SETTING_SERVICEATHELIPAD :Sjálvvirki eftirlit við tyrlum á tyrlupallum: {STRING} +STR_CONFIG_SETTING_SERVICEATHELIPAD_HELPTEXT :Eftirlit við tyrlum aftaná hvørja lending, sjálvt um eingin goymsla er á flogvøllinum +STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR :Leinkja landslags amboðsbjálkan til jarnbreyt/veg/vatn/floghavn amboðsbjálkanir: {STRING} +STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR_HELPTEXT :Tá tú letur upp ein bygnings amboðsbjálka fyri eitt slag av flutningi, verður eisini lati upp fyri landslags broytingar amboðsbjálkanum +STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR :Litur fyri lendi í lítla korti: {STRING} +STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :Liturin av lendinum í tí lítla kortinum +STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :Grønt +STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :Myrka grønt +STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Blákollulitur +STR_CONFIG_SETTING_REVERSE_SCROLLING :Umvend skrull ætt: {STRING} +STR_CONFIG_SETTING_REVERSE_SCROLLING_HELPTEXT :Atburður tá tú skrullar korti við høgra músa knøtti. Um ógilda flytir músin kamerai. Um gilda flytir músin korti. +STR_CONFIG_SETTING_SMOOTH_SCROLLING :Mjúka sýnisglugga skrulling: {STRING} +STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Stýr hvussu høvuðs sýni skrullar til eitt ávíst stað tá tú trýstir á lítlakorti ella tú tú gevur eini boð um at skrulla til ein ávísan lut á kortinum. Um gilda, skrullar sýni mjúgdliga, um ógilda leypur sýni beint til staði +STR_CONFIG_SETTING_MEASURE_TOOLTIP :Vís eina mátingar vegleiðing tá tú brúkar ymisku byggji amboðini: {STRING} +STR_CONFIG_SETTING_MEASURE_TOOLTIP_HELPTEXT :Vís punta fjarstøðir og hæddar munir tá tú togar undir bygging +STR_CONFIG_SETTING_LIVERIES :Vís eyðkennislitir hjá fyritøkum: {STRING} +STR_CONFIG_SETTING_LIVERIES_HELPTEXT :Stýr nýtslu av eyðkennislitum ið er sermerktir fyri slagi av flutningstóli (í mótsetningi til sermerktar fyri fyritøkuna) +STR_CONFIG_SETTING_LIVERIES_NONE :Einki +STR_CONFIG_SETTING_LIVERIES_OWN :Egna fyritøku +STR_CONFIG_SETTING_LIVERIES_ALL :Allar fyritøkur +STR_CONFIG_SETTING_PREFER_TEAMCHAT :Vel lið chat framum við : {STRING} +STR_CONFIG_SETTING_PREFER_TEAMCHAT_HELPTEXT :Skift bindingina av innanhýsis fyritøku og almennum chatti til og ávikavist +STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING :Funka av skrullhjóli: {STRING} +STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING_HELPTEXT :Gilda skrulling við tvey-dimensionalum músa hjólum +STR_CONFIG_SETTING_SCROLLWHEEL_ZOOM :Suma kort +STR_CONFIG_SETTING_SCROLLWHEEL_SCROLL :Skrulla kort +STR_CONFIG_SETTING_SCROLLWHEEL_OFF :Sløkt +STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER :Kort skrullhjóls ferð: {STRING} +STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER_HELPTEXT :Stýr viðkvæmi av músahjóls skrulling +STR_CONFIG_SETTING_OSK_ACTIVATION :Knappaborð á skermi: {STRING} +STR_CONFIG_SETTING_OSK_ACTIVATION_HELPTEXT :Vel háttin at lata knappaborði á skerminum upp fyri at skriva tekst inn í ritkassar einans við peiki tóli. Hetta er ætlað til smærri tól uttan nakað ítøkuligt knappaborð +STR_CONFIG_SETTING_OSK_ACTIVATION_DISABLED :Ikki sligi til +STR_CONFIG_SETTING_OSK_ACTIVATION_DOUBLE_CLICK :Dupult trýst +STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK_FOCUS :Einkult trýst (tá savna) +STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK :Einkult trýst (alt fyri eitt) + +STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU :Høgra-trýst eftirgerð: {STRING} +STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_HELPTEXT :Vel háttin at eftirgerða trýst á høgra músa knøtt +STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Command+trýst +STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Ctrl+trýst +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_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} +STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_HELPTEXT :Vel hvat kann gerast meðan spæli er steðga +STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :Einki +STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_CONSTRUCTION :Alt uttan at byggja +STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_LANDSCAPING :Alt uttan at broyta landslagi +STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_ACTIONS :Alt +STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Nýt viðkaða listan yvir flutningstól: {STRING} +STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Gilda nýtsluna av víðkaða listanum yvir flutningstól til at koyra flutningstól í bólkar +STR_CONFIG_SETTING_LOADING_INDICATORS :Nýt lessingar vísarar: {STRING} +STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :Vel um lessi vísarar verða vístir omanfyri lessandi og avlessandi flutningstól ella ikki +STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :Vís tíðarætlan í klikkum heldur enn døgum: {STRING} +STR_CONFIG_SETTING_TIMETABLE_IN_TICKS_HELPTEXT :Vís koyri tíðir í tíðarætlanum við 'spæli klikkum' í staðin fyri við døgum +STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE :Vís komir og fráferðir í tíðarætlanum: {STRING} +STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE_HELPTEXT :Vís væntaðu komu og fráferðs tíðir í tíðarætlanum +STR_CONFIG_SETTING_QUICKGOTO :Skjót gerð av boðum til flutningstól: {STRING} +STR_CONFIG_SETTING_QUICKGOTO_HELPTEXT :'far til pílurin' er longu valdur tá tú opnar boðs vindeyga +STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE :Vanliga jarnbreyta slagi (aftaná nýtt spæl/heinta spæl): {STRING} +STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_HELPTEXT :Jarnbreyta slag ið er valt eftir byrjan ella heintan av einum spæli. 'fyrst tøka' velur ta elsta slagi av breytum, 'síðst tøka' velur ta nýggjasta slagi av breytum, 'mest nýtta' velur ta slagi av breyt sum í verandi løtu er mest nýtt +STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_FIRST :Fyrsta tøka +STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_LAST :Síðst tøka +STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_MOST_USED :Mest nýtta +STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :Vís umbidnar breytir: {STRING} +STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION_HELPTEXT :Gev umbidnum breytum ein øðrvísi lit fyri at hjálpa tá ið tok sýta at koyra á leið-bygdum blokkum +STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :Halt bygnings amboð virkin eftir nýtslu: {STRING} +STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Lat byggi amboðini til brúgvar, berghol, osv. vera opin eftir nýtslu +STR_CONFIG_SETTING_EXPENSES_LAYOUT :Bólka útreiðslur í vindeyganum fyri fíggjar støðuna hjá fyritøkuni: {STRING} +STR_CONFIG_SETTING_EXPENSES_LAYOUT_HELPTEXT :Greina uppsetingina fyri fyritøku útreiðslu vindeyga + +STR_CONFIG_SETTING_SOUND_TICKER :Tíðinda telefonritil: {STRING} +STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :Spæl eitt ljóð fyri stytt tíðinda boð +STR_CONFIG_SETTING_SOUND_NEWS :Tíðindablað: {STRING} +STR_CONFIG_SETTING_SOUND_NEWS_HELPTEXT :Spæl eitt ljóð tá ið tíðindabløð vera víst +STR_CONFIG_SETTING_SOUND_NEW_YEAR :Árslok: {STRING} +STR_CONFIG_SETTING_SOUND_NEW_YEAR_HELPTEXT :Spæl eitt ljóð við árslok tá tikið verður saman um framførðsluna hjá fyritøkuni í árinum í mun til ári áðrenn +STR_CONFIG_SETTING_SOUND_CONFIRM :Bygging: {STRING} +STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT :Spæl eitt ljóð vi væleydnaða bygging ella aðrar gerðir +STR_CONFIG_SETTING_SOUND_CLICK :Knøtta trýst: {STRING} +STR_CONFIG_SETTING_SOUND_CLICK_HELPTEXT :Bipa tá tú trýstur á knøttar +STR_CONFIG_SETTING_SOUND_DISASTER :Ólukkur/vanlukkur: {STRING} +STR_CONFIG_SETTING_SOUND_DISASTER_HELPTEXT :Spæl ljóðini frá vanlukkum og ólukkum +STR_CONFIG_SETTING_SOUND_VEHICLE :Flutningstól: {STRING} +STR_CONFIG_SETTING_SOUND_VEHICLE_HELPTEXT :Spæl ljóðini frá flutningstólum +STR_CONFIG_SETTING_SOUND_AMBIENT :Umhvørvi: {STRING} +STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :Spæl umhvørvis ljóðini frá landslagnum, ídnaðum og bygdum + +STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING :Ógilda bygging av innankervi á eingi hóskandi flutningstól eru tøk: {STRING} +STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING_HELPTEXT :Um gilda, er innankervi einans tøkt um flutningstóli eisini eru tøk, og forðar tær tískil at spilla burtur tíð og pening uppá ónýtiligt innankervi +STR_CONFIG_SETTING_MAX_TRAINS :Maks tok per fyritøku: {STRING} +STR_CONFIG_SETTING_MAX_TRAINS_HELPTEXT :Mest loyvda tali av tokum ein fyritøka kann hava +STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :Maks akfør per fyritøku: {STRING} +STR_CONFIG_SETTING_MAX_ROAD_VEHICLES_HELPTEXT :Mest loyvda tali av akførum ein fyritøka kann hava +STR_CONFIG_SETTING_MAX_AIRCRAFT :Maks flogfør per fyritøku: {STRING} +STR_CONFIG_SETTING_MAX_AIRCRAFT_HELPTEXT :Mest loyvda tali av flogførum ein fyritøka kann hava +STR_CONFIG_SETTING_MAX_SHIPS :Maks skip per fyritøku: {STRING} +STR_CONFIG_SETTING_MAX_SHIPS_HELPTEXT :Mest loyvda tali av skipum ein fyritøka kann hava + +STR_CONFIG_SETTING_AI_BUILDS_TRAINS :Ógilda tok fyri telduna: {STRING} +STR_CONFIG_SETTING_AI_BUILDS_TRAINS_HELPTEXT :Gildan av hesi ásetan ger tað ógjørligt hjá einum telduspælara at byggja tok +STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES :Ógilda akfør fyri telduna: {STRING} +STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES_HELPTEXT :Gildan av hesi ásetan ger tað ógjørligt hjá einum telduspælara at byggja akfør +STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT :Ógilda flogfør fyri telduna: {STRING} +STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT_HELPTEXT :Gildan av hesi ásetan ger tað ógjørligt hjá einum telduspælara at byggja flogfør +STR_CONFIG_SETTING_AI_BUILDS_SHIPS :Ógilda skip fyri telduna: {STRING} +STR_CONFIG_SETTING_AI_BUILDS_SHIPS_HELPTEXT :Gildan av hesi ásetan ger tað ógjørligt hjá einum telduspælara at byggja skip + +STR_CONFIG_SETTING_AI_PROFILE :Vanligur innstillings profilur: {STRING} +STR_CONFIG_SETTING_AI_PROFILE_HELPTEXT :Vel hvønn innstillings profil at nýta fyri tilvildarlig AI ella fyri byrjunar virði tá tú leggur nýtt AI ella spæl skript til +STR_CONFIG_SETTING_AI_PROFILE_EASY :Lætt +STR_CONFIG_SETTING_AI_PROFILE_MEDIUM :Miðal +STR_CONFIG_SETTING_AI_PROFILE_HARD :Torført + +STR_CONFIG_SETTING_AI_IN_MULTIPLAYER :Loyv AI í hópspæli: {STRING} +STR_CONFIG_SETTING_AI_IN_MULTIPLAYER_HELPTEXT :Loyv AI telduspælarum at taka lut í hópspølum +STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES :#opcodes áðrenn skript verða steðga: {STRING} +STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES_HELPTEXT :Mest loyvda tali av rokni fetum eitt skript kann taka í einum umfarði + +STR_CONFIG_SETTING_SERVINT_ISPERCENT :Eftirlits títtleikar eru í prosentum: {STRING} +STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Vel um eftirlit av flutningstólum verður gjørt í mun til hvussu nógv tíð er farin síðan síðsta eftirlit, ella tá álítandi fellur eitt víst prosent av maks álítandi +STR_CONFIG_SETTING_SERVINT_TRAINS :Vanligur eftirlits títtleiki fyri tok: {STRING} +STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :Áset vanliga eftirlits títtleikan hjá nýggjum jarnbreyta flutningstóum, um eingin skilligur eftirlits títtleiki er ásettur fyri flutningstóli +STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA} dag{P 0 "" ar}/% +STR_CONFIG_SETTING_SERVINT_DISABLED :Ikki sligi til +STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES :Vanligur eftirlits títtleiki fyri akfør: {STRING} +STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES_HELPTEXT :Áset vanliga eftirlits títtleikan hjá nýggjum akførum, um eingin skilligur eftirlits títtleiki er ásettur fyri flutningstóli +STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Vanligur eftirlits títtleiki fyri flogfør: {STRING} +STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Áset vanliga eftirlits títtleikan hjá nýggjumf logførum, um eingin skilligur eftirlits títtleiki er ásettur fyri flutningstóli +STR_CONFIG_SETTING_SERVINT_SHIPS :Vanligur eftirlits títtleiki fyri skip: {STRING} +STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Áset vanliga eftirlits títtleikan hjá nýggjum skipum, um eingin skilligur eftirlits títtleiki er ásettur fyri flutningstóli +STR_CONFIG_SETTING_NOSERVICE :Ógilda eftirlit tá maskinskaðar eru ásettir til eingir: {STRING} +STR_CONFIG_SETTING_NOSERVICE_HELPTEXT :Um gilda fáa flutningstól einki eftirlit um tey ikki kunnu fáa maskinskaða +STR_CONFIG_SETTING_WAGONSPEEDLIMITS :Gilda hámarksferð fyri vognar: {STRING} +STR_CONFIG_SETTING_WAGONSPEEDLIMITS_HELPTEXT :Um gilda, verður hámarksferðin hjá vognum eisini nýtt fyri at avgerða mest loydu ferðina á tokum +STR_CONFIG_SETTING_DISABLE_ELRAILS :Ógilda ravmagns jarnbreytir: {STRING} +STR_CONFIG_SETTING_DISABLE_ELRAILS_HELPTEXT :Um gilda er ikki neyðugt við ravmagns jarnbreytum fyri at fáa ravmagns tok at koyra + +STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN :Koma av fyrsta flutningstóli til støð hjá spælara: {STRING} +STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN_HELPTEXT :Vís eitt tíðindablad tá tað fyrsta flutningstóli kemur til eina støð hjá einum nýggjum spælara +STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER :Koma av fyrsta flutningstóli til støð hjá kappingarnyta: {STRING} +STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER_HELPTEXT :Vís eitt tíðindablað tá tað fyrsta flutningstóli kemur til eina støð hjá einum nýggjum kappingarneyta +STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS :Vanlukkur/ Ólukkur: {STRING} +STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS_HELPTEXT :Vís eitt tíðindablað tá vanlukkur ella ólukkur koma fyri +STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION :Fyritøku kunning: {STRING} +STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION_HELPTEXT :Vís eitt tíðindablað tá ein nýggj fyritøka byrjar, ella tá fyritøkur eru í vanda fyri at fara á húsagang +STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN :Upplating av ídaðum : {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN_HELPTEXT :Vís eitt tíðindablað tá nýggjir ídnaðir lata upp +STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE :Steingjing av ídnaðum: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE_HELPTEXT :Vís eitt tíðindablað tá ídnaðir steingja +STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES :Búskapar broytingar: {STRING} +STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES_HELPTEXT :Vís tíðindablað um broytingar í heimsbúskapinum +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY :Framleiðslu broytingar hjá ídnaðum ið fyritøkan flytur fyri: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY_HELPTEXT :Vís eitt tíðindablað tá framleiðslu støði hjá ídnaðum ið fyritøkan flytur fyri broytist +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER :Framleiðslu broytingar hjá ídnaðum ið kappingarneytar flyta fyri: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER_HELPTEXT :Vís eitt tíðindablað tá framleiðslu støði hjá ídnaðum ið kappingarneytar flyta fyri broytist +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED :Aðrar ídnaðar framleiðslu broytingar: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED_HELPTEXT :Vís eitt tíðinda blað tá framleiðslu støði hjá ídnaðum ið eingin flytur fyri broytist +STR_CONFIG_SETTING_NEWS_ADVICE :Ráð / kunning um flutningstól hjá fyritøkuni :{STRING} +STR_CONFIG_SETTING_NEWS_ADVICE_HELPTEXT :Vís boð um flutningstól ið hava tørv fyri umsorgan +STR_CONFIG_SETTING_NEWS_NEW_VEHICLES :Nýggj flutningstól: {STRING} +STR_CONFIG_SETTING_NEWS_NEW_VEHICLES_HELPTEXT :Vís eitt tíðindablað tá eitt nýtt slag av flutningstóli verður tøkt +STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE :Broytingar í farma móttøku: {STRING} +STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE_HELPTEXT :Vís boð um støðir ið broyta hvønn farm tær góðtaka +STR_CONFIG_SETTING_NEWS_SUBSIDIES :Stuðulsflutningur: {STRING} +STR_CONFIG_SETTING_NEWS_SUBSIDIES_HELPTEXT :Vís eitt tíðindablað um hendingar í sambandi við stuðulsflutning +STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION :Almenn kunning: {STRING} +STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION_HELPTEXT :Vís tíðindablað um almennar tilburðir, so sum keyp av einkarrættindum ella endurbygging av vegakervi + +STR_CONFIG_SETTING_NEWS_MESSAGES_OFF :Sløkt +STR_CONFIG_SETTING_NEWS_MESSAGES_SUMMARY :Samandráttur +STR_CONFIG_SETTING_NEWS_MESSAGES_FULL :Fult + +STR_CONFIG_SETTING_COLOURED_NEWS_YEAR :Litaði tíðindir koma frám í: {STRING} +STR_CONFIG_SETTING_COLOURED_NEWS_YEAR_HELPTEXT :Ári har tíðindabløð verða prentaði í litum. Áðrenn hetta ári eru tíðindabløð svørt/hvít +STR_CONFIG_SETTING_STARTING_YEAR :Byrjunar ár: {STRING} +STR_CONFIG_SETTING_SMOOTH_ECONOMY :Gilda mjúkan búskap (fleiri, smærri broytingar): {STRING} +STR_CONFIG_SETTING_SMOOTH_ECONOMY_HELPTEXT :Um gilda, ídnaðar framleiðsla broytist títtari og í smærri stigum. Henda ásetanin hevur vanliga onga ávirkan um ídnaðinir koma frá einum NewGRF +STR_CONFIG_SETTING_ALLOW_SHARES :Loyv keypi av partabrøvum frá øðrum fyritøkum: {STRING} +STR_CONFIG_SETTING_ALLOW_SHARES_HELPTEXT :Um gilda, er loyvt at keypa og selja fyritøku partabrøv. Partabrøv verða einans tøk hjá fyritøkum ið hava rokki ein ávísan aldur +STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE :Prosentpartur av deilvinningi at gjalda í veitingar kervum: {STRING} +STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE_HELPTEXT :Prosentpartur av inntøku ið verður útgoldi til millum liðini í veitara kervum (umskipan), gevur betri ræðið í inntøkuni +STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY :Tá toga verður, set tekin hvønn: {STRING} +STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_HELPTEXT :Áset fjarstøðuna millum tekin ið verða sett á breytina fram til ta næstu forðingina (teking, samanrenning), um tekin verða togaði +STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_VALUE :{COMMA} punt +STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE :Tá toga verður, halt fasta fjarstøðu millum tekin: {STRING} +STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :Velt atburðin á tekn seting tá tú Ctrl+togar tekin. Um ógilda verða tekin sett vi berghol og brúgvar fyri at sleppa undan longum strekkjum uttan tekin. Um gilda verða tekin sett hvønn n punt fyri at gera ta lættari at fylkja tekin á javnfjarðum breytum +STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :Sjálvvirkandi bygging av teknmastrum áðrenn: {STRING} +STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE_HELPTEXT :Áset hvat ár ravmagns tekin verða nýtt á jarnbreytum. Áðrenn hetta verða ikki-ravmagns tekin nýtt (tey virka á sama hátt, men hava ørðvísi útsjónd) +STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI :Gilda GUI fyri tekin: {STRING} +STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI_HELPTEXT :Vís eitt vindeyga har tú kann velja hvat slag av tekin tú vil byggja, ístaðin fyri einans vindyga-leyst Ctrl+trýst á tekin +STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE :Slag av tekin at byggja vanligt: {STRING} +STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE_HELPTEXT :Hvat slag av tekin er vanliga valt +STR_CONFIG_SETTING_DEFAULT_SIGNAL_NORMAL :Blokk tekin +STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBS :Leið tekin +STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBSOWAY :Einvegis leið tekin +STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES :Blaða gjøgnum tekn sløg: {STRING} +STR_CONFIG_SETTING_CYCLE_SIGNAL_NORMAL :Blokk tekin einans +STR_CONFIG_SETTING_CYCLE_SIGNAL_PBS :Leið tekin einans +STR_CONFIG_SETTING_CYCLE_SIGNAL_ALL :Øll + +STR_CONFIG_SETTING_TOWN_LAYOUT :Veg uppseting fyri nýggjar bygdir: {STRING} +STR_CONFIG_SETTING_TOWN_LAYOUT_HELPTEXT :Uppseting av vega kervinum í bygdum +STR_CONFIG_SETTING_TOWN_LAYOUT_DEFAULT :Upprunalig +STR_CONFIG_SETTING_TOWN_LAYOUT_BETTER_ROADS :Betri vegir +STR_CONFIG_SETTING_TOWN_LAYOUT_2X2_GRID :2x2 rimaverk +STR_CONFIG_SETTING_TOWN_LAYOUT_3X3_GRID :3x3 rimaverk +STR_CONFIG_SETTING_TOWN_LAYOUT_RANDOM :Tilvildarlig +STR_CONFIG_SETTING_ALLOW_TOWN_ROADS :Bygdir hava loyvi at byggja vegir: {STRING} +STR_CONFIG_SETTING_ALLOW_TOWN_ROADS_HELPTEXT :Loyv bygdum at byggja vegir fyri vøkstur. Ógilda fyri at forða bygdum í at byggja vegir sjálvar +STR_CONFIG_SETTING_TOWN_FOUNDING :Stovnað bygdir í spælinum: {STRING} +STR_CONFIG_SETTING_TOWN_FOUNDING_HELPTEXT :Gildan av hesum loyvir spælarum at stovnað bygdir meðan spælt verur +STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :Bannað +STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :Loyvt +STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :Loyvt, sjálvgjørd bygda uppseting + + +STR_CONFIG_SETTING_SNAP_RADIUS_DISABLED :Ikki sligi til +STR_CONFIG_SETTING_SOFT_LIMIT_VALUE :{COMMA} +STR_CONFIG_SETTING_SOFT_LIMIT_DISABLED :ikki sligi til +STR_CONFIG_SETTING_ZOOM_LVL_MIN :4x +STR_CONFIG_SETTING_ZOOM_LVL_IN_2X :2x +STR_CONFIG_SETTING_ZOOM_LVL_NORMAL :Vanligt +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_NONE :Eingin +STR_CONFIG_SETTING_TOWN_GROWTH_SLOW :Sein +STR_CONFIG_SETTING_TOWN_GROWTH_NORMAL :Vanlig +STR_CONFIG_SETTING_TOWN_GROWTH_FAST :Skjót +STR_CONFIG_SETTING_TOWN_GROWTH_VERY_FAST :Sera skjót +STR_CONFIG_SETTING_LARGER_TOWNS_VALUE :1 út av {COMMA} +STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :Eingin + + + + + + + + +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_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_AI_NPC :{ORANGE}Teldu spælarir + +STR_CONFIG_SETTING_PATHFINDER_OPF :Upprunaligur +STR_CONFIG_SETTING_PATHFINDER_NPF :NPF +STR_CONFIG_SETTING_PATHFINDER_YAPF_RECOMMENDED :YAPF {BLUE}(Viðmældur) + +STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Leiðbeinari fyri tok: {STRING} +STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Leið beinari at nýta til tok +STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :Leiðbeinari fyri akfør: {STRING} +STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES_HELPTEXT :Leið beinari at nýta fyri akfør +STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS :Leiðbeinari fyri skip: {STRING} +STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT :Leið beinari at nýta fyri skip + +STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}Broyt ásetings virði + +# Config errors +STR_CONFIG_ERROR_INVALID_VALUE :{WHITE}... óviðkomandi virði '{STRING}' fyri '{STRING}' +STR_CONFIG_ERROR_INVALID_GRF_NOT_FOUND :ikki funni +STR_CONFIG_ERROR_INVALID_GRF_SYSTEM :system NewGRF +STR_CONFIG_ERROR_INVALID_GRF_INCOMPATIBLE :ósambæriligur við hesa útgávuna av OpenTTD +STR_CONFIG_ERROR_INVALID_GRF_UNKNOWN :ókendur +STR_CONFIG_ERROR_OUT_OF_MEMORY :{WHITE}Einki minni eftir +STR_CONFIG_ERROR_SPRITECACHE_TOO_BIG :{WHITE}Leitan eftir {BYTES} av spritecache eydnaðist ikki. Spritecache var skerd til {BYTES}. Hetta vil skerja framførsluna av OpenTTD. Fyri at minka um minnis krøvini kann tú royna at sløkkja fyri 32bpp grafikki og/ella suma-in stig + +# Intro window +STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} + +STR_INTRO_NEW_GAME :{BLACK}Nýtt spæl +STR_INTRO_LOAD_GAME :{BLACK}Heinta spæl +STR_INTRO_PLAY_SCENARIO :{BLACK}Spæl tilburð +STR_INTRO_PLAY_HEIGHTMAP :{BLACK}Spæl hæddarkort +STR_INTRO_SCENARIO_EDITOR :{BLACK}Tilburðs ritil +STR_INTRO_MULTIPLAYER :{BLACK}Hópspæl + +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 +STR_INTRO_QUIT :{BLACK}Gevst + +STR_INTRO_TOOLTIP_NEW_GAME :{BLACK}Byrja eitt nýtt spæl. Ctrl+trýst leypur um uppseting av korti +STR_INTRO_TOOLTIP_LOAD_GAME :{BLACK}Heinta eitt goymt spæl +STR_INTRO_TOOLTIP_PLAY_HEIGHTMAP :{BLACK}Byrja eitt nýtt spæl, har tú brúkar eitt hæddarkort sum landslag +STR_INTRO_TOOLTIP_PLAY_SCENARIO :{BLACK}Byrja eitt nýtt spæl, har tú brúkar ein sjálvgørdan tilburð +STR_INTRO_TOOLTIP_SCENARIO_EDITOR :{BLACK}Skapa ein sjálvgørdan spæli heim/tilburð +STR_INTRO_TOOLTIP_MULTIPLAYER :{BLACK}Byrja eitt hópspæl + +STR_INTRO_TOOLTIP_TEMPERATE :{BLACK}Vel 'lýggjan' landslags stíl +STR_INTRO_TOOLTIP_SUB_ARCTIC_LANDSCAPE :{BLACK}Vel 'sub-arctic' landslags stíl +STR_INTRO_TOOLTIP_SUB_TROPICAL_LANDSCAPE :{BLACK}Vel 'sub-tropical' landslags stíl +STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Vel 'toyland' landslags stíl + +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 +STR_INTRO_TOOLTIP_QUIT :{BLACK}Gevst at spæla 'OpenTTD' + +STR_INTRO_TRANSLATION :{BLACK}Hesi umseting vantar {NUM} str{P ong eingir}. Vinarliga hjálp til við at gera OpenTTD betri, tekna teg sum umsetara. Sí readme.txt viðvíkjandi smálutum. + +# Quit window +STR_QUIT_CAPTION :{WHITE}Gevst +STR_QUIT_ARE_YOU_SURE_YOU_WANT_TO_EXIT_OPENTTD :{YELLOW}Er tú vís/vísur í at tú vil gevast at spæla OpenTTD og fara aftur til {STRING}? +STR_QUIT_YES :{BLACK}Ja +STR_QUIT_NO :{BLACK}Nei + +# 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}Far frá spæli +STR_ABANDON_GAME_QUERY :{YELLOW}Er tú vís/vísur í at tú vil fara frá hesum spæli? +STR_ABANDON_SCENARIO_QUERY :{YELLOW}Er tú vís/vísur í at tú vil fara frá hesum tilburði? + +# Cheat window +STR_CHEATS :{WHITE}Snýt +STR_CHEATS_TOOLTIP :{BLACK}Flugubeins kassanir vísa um tú hevur nýtt hetta snýti áður +STR_CHEATS_WARNING :{BLACK}Ávaring! Tú er í holt við at svíkja tínar kappingarneytar. Hav í huga at ein slík vanæra verður aldrin gloymd á ævini +STR_CHEAT_MONEY :{LTBLUE}Hækka pening við {CURRENCY_LONG} +STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Spælir sum fyritøka: {ORANGE}{COMMA} +STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Gandaður bulldosari (bein burtur ídnaðir, lutir ið ikki kunnu flytast): {ORANGE}{STRING} +STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}Berghol kunnu krossast: {ORANGE}{STRING} +STR_CHEAT_NO_JETCRASH :{LTBLUE}Jetflogfør krasja ikki (oftani) í lítlum floghavnum: {ORANGE}{STRING} +STR_CHEAT_SWITCH_CLIMATE_TEMPERATE_LANDSCAPE :Lýtt landslag +STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :Undir-arktiskt landslag +STR_CHEAT_SWITCH_CLIMATE_SUB_TROPICAL_LANDSCAPE :Undir-tropiskt landslag +STR_CHEAT_SWITCH_CLIMATE_TOYLAND_LANDSCAPE :Leikuland landslag +STR_CHEAT_CHANGE_DATE :{LTBLUE}Broyt dato: {ORANGE}{DATE_SHORT} +STR_CHEAT_CHANGE_DATE_QUERY_CAPT :{WHITE}Broyt núverðandi ár +STR_CHEAT_SETUP_PROD :{LTBLUE}Gilda broytingar av framleiðslu virðum: {ORANGE}{STRING} + +# Livery window +STR_LIVERY_CAPTION :{WHITE}Nýggja lit samanseting + +STR_LIVERY_GENERAL_TOOLTIP :{BLACK}Vís vanligu lit samansetingarnar +STR_LIVERY_TRAIN_TOOLTIP :{BLACK}Vís tok lit samansetingarnar +STR_LIVERY_ROAD_VEHICLE_TOOLTIP :{BLACK}Vís akfars lit samasetingarnar +STR_LIVERY_SHIP_TOOLTIP :{BLACK}Vís skips lit samansetingarnar +STR_LIVERY_AIRCRAFT_TOOLTIP :{BLACK}Vís flogfars lit samansetingarnar +STR_LIVERY_PRIMARY_TOOLTIP :{BLACK}Vel aðal litin fyri valdu samansetingina. Ctrl+trýst ásetur hendan litin fyri allar samansetingar +STR_LIVERY_SECONDARY_TOOLTIP :{BLACK}Vel vara litin fyri valdu samansetingina. Ctrl+trýst ásetur henda litin fyri allar samansetingar +STR_LIVERY_PANEL_TOOLTIP :{BLACK}Vel eina lit samanseting at broyta, ella fleiri lit samansetingar við Ctrl+trýst. Trýst á kassan fyri at tendra/sløkkja nýtslu av samanseting + +STR_LIVERY_DEFAULT :Vanligir eyðkennislitir +STR_LIVERY_STEAM :Guvu motor +STR_LIVERY_DIESEL :Diesel motor +STR_LIVERY_ELECTRIC :Ravmagns motor +STR_LIVERY_MONORAIL :Einsporðs Motor +STR_LIVERY_MAGLEV :Maglev motor +STR_LIVERY_DMU :Diesel tok sett +STR_LIVERY_EMU :Ravmagns tok sett +STR_LIVERY_PASSENGER_WAGON_STEAM :Ferðafólka vognur (guv) +STR_LIVERY_PASSENGER_WAGON_DIESEL :Ferðafólka vognur (diesel) +STR_LIVERY_PASSENGER_WAGON_ELECTRIC :Ferðafólka vognur (ravmagn) +STR_LIVERY_PASSENGER_WAGON_MONORAIL :Ferðafólka vognur (einsporð) +STR_LIVERY_PASSENGER_WAGON_MAGLEV :Ferðafólka vognur (maglev) +STR_LIVERY_FREIGHT_WAGON :Góðs vognur +STR_LIVERY_BUS :Buss +STR_LIVERY_TRUCK :Lastbil +STR_LIVERY_PASSENGER_SHIP :Ferðafólka ferga +STR_LIVERY_FREIGHT_SHIP :Frakt skip +STR_LIVERY_HELICOPTER :Tyrla +STR_LIVERY_SMALL_PLANE :Líti flogfar +STR_LIVERY_LARGE_PLANE :Stórt flogfar +STR_LIVERY_PASSENGER_TRAM :{G=m}Ferðafólka sporvognur +STR_LIVERY_FREIGHT_TRAM :{G=m}Góðs sporvognur + +# Face selection window +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 +STR_FACE_FEMALE_BUTTON :{BLACK}Kvennkyn +STR_FACE_FEMALE_TOOLTIP :{BLACK}Vel kvennkyns andlit +STR_FACE_NEW_FACE_BUTTON :{BLACK}Nýtt andlit +STR_FACE_NEW_FACE_TOOLTIP :{BLACK}Framleið tilvildarligt nýtt andlit +STR_FACE_ADVANCED :{BLACK}Víðka +STR_FACE_ADVANCED_TOOLTIP :{BLACK}Víðka andlits úrval +STR_FACE_SIMPLE :{BLACK}Einfalt +STR_FACE_SIMPLE_TOOLTIP :{BLACK}Einfalt andlits úrval +STR_FACE_LOAD :{BLACK}Heinta +STR_FACE_LOAD_TOOLTIP :{BLACK}Heinta yndis andlit +STR_FACE_LOAD_DONE :{WHITE}Títt yndis andlit er heinta úr OpenTTD uppsetanar fíluni +STR_FACE_FACECODE :{BLACK}Spælara andlits nr. +STR_FACE_FACECODE_TOOLTIP :{BLACK}Sjá og/ella áset andlits nummar hjá fyritøku leiðaranum +STR_FACE_FACECODE_CAPTION :{WHITE}Sjá og/ella áset eitt tal fyri andlit +STR_FACE_FACECODE_SET :{WHITE}Nýtt andlits tal er ásett +STR_FACE_FACECODE_ERR :{WHITE}Eydnaðist ikki at áseta andlits tal - má vera eitt tal millum 0 og 4,294,967,295! +STR_FACE_SAVE :{BLACK}Goym +STR_FACE_SAVE_TOOLTIP :{BLACK}Goym yndis andlit +STR_FACE_SAVE_DONE :{WHITE}Hetta andliti verur goymt sum títt yndis andlit í OpenTTD uppsetanar fíluni +STR_FACE_EUROPEAN :{BLACK}Evropeiskt +STR_FACE_SELECT_EUROPEAN :{BLACK}Vel Evropeisk andlit +STR_FACE_AFRICAN :{BLACK}Afrikansk +STR_FACE_SELECT_AFRICAN :{BLACK}Vel Afrikonsk andlit +STR_FACE_YES :Ja +STR_FACE_NO :Nei +STR_FACE_MOUSTACHE_EARRING_TOOLTIP :{BLACK}Tendra yvirskegg ella oyraring +STR_FACE_HAIR :Hár: +STR_FACE_HAIR_TOOLTIP :{BLACK}Broyt hár +STR_FACE_EYEBROWS :Eygnabrýr: +STR_FACE_EYEBROWS_TOOLTIP :{BLACK}Broyt eygnabrýr +STR_FACE_EYECOLOUR :Eygna litur: +STR_FACE_EYECOLOUR_TOOLTIP :{BLACK}Broyt eygna lit +STR_FACE_GLASSES :Brillur: +STR_FACE_GLASSES_TOOLTIP :{BLACK}Tendra brillur +STR_FACE_GLASSES_TOOLTIP_2 :{BLACK}Broyt brillur +STR_FACE_NOSE :Nøs: +STR_FACE_NOSE_TOOLTIP :{BLACK}Broyt nøs +STR_FACE_LIPS :Varrar: +STR_FACE_MOUSTACHE :Yvirskegg: +STR_FACE_LIPS_MOUSTACHE_TOOLTIP :{BLACK}Broyt varrar ella yvirskegg +STR_FACE_CHIN :Høka: +STR_FACE_CHIN_TOOLTIP :{BLACK}Broyt høku +STR_FACE_JACKET :Jakki: +STR_FACE_JACKET_TOOLTIP :{BLACK}Broyt jakka +STR_FACE_COLLAR :Kragi: +STR_FACE_COLLAR_TOOLTIP :{BLACK}Broyt kraga +STR_FACE_TIE :Slips: +STR_FACE_EARRING :Oyraringur: +STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}Broyt slips ella oyraring + +# Network server list +STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}Hópspæl +STR_NETWORK_SERVER_LIST_ADVERTISED_NO :Nei +STR_NETWORK_SERVER_LIST_ADVERTISED_YES :Ja +STR_NETWORK_SERVER_LIST_PLAYER_NAME :{BLACK}Spælara navn: +STR_NETWORK_SERVER_LIST_ENTER_NAME_TOOLTIP :{BLACK}Hetta er navni aðrir spælarir fara at kenna teg vi + +STR_NETWORK_SERVER_LIST_GAME_NAME :{BLACK}Navn +STR_NETWORK_SERVER_LIST_GAME_NAME_TOOLTIP :{BLACK}Navni á spælinum +STR_NETWORK_SERVER_LIST_GENERAL_ONLINE :{BLACK}{COMMA}/{COMMA} - {COMMA}/{COMMA} +STR_NETWORK_SERVER_LIST_CLIENTS_CAPTION :{BLACK}Klientar +STR_NETWORK_SERVER_LIST_CLIENTS_CAPTION_TOOLTIP :{BLACK}Klientar online / mest loyvdir klientar{}Fyritøkur online / mest loyvdar fyritøkur +STR_NETWORK_SERVER_LIST_MAP_SIZE_SHORT :{BLACK}{COMMA}x{COMMA} +STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION :{BLACK}Stødd á korti +STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION_TOOLTIP :{BLACK}Stødd á korti fyri spæli{}Trýst fyri at raða eftir øki +STR_NETWORK_SERVER_LIST_DATE_CAPTION :{BLACK}Dato +STR_NETWORK_SERVER_LIST_DATE_CAPTION_TOOLTIP :{BLACK}Núverðandi dato +STR_NETWORK_SERVER_LIST_YEARS_CAPTION :{BLACK}Ár +STR_NETWORK_SERVER_LIST_YEARS_CAPTION_TOOLTIP :{BLACK}Tali av árum{}ið spæli varir +STR_NETWORK_SERVER_LIST_INFO_ICONS_TOOLTIP :{BLACK}Mál, servara útgáva, osv. + +STR_NETWORK_SERVER_LIST_CLICK_GAME_TO_SELECT :{BLACK}Trýst á eitt spæl á listanum fyri at velja ta +STR_NETWORK_SERVER_LIST_LAST_JOINED_SERVER :{BLACK}Servarin tú hevði samband við seinast: +STR_NETWORK_SERVER_LIST_CLICK_TO_SELECT_LAST :{BLACK}Trýst fyri at velja servaran tú spældi á seinast + +STR_NETWORK_SERVER_LIST_GAME_INFO :{SILVER}KUNNING UM SPÆL +STR_NETWORK_SERVER_LIST_CLIENTS :{SILVER}Klientar: {WHITE}{COMMA} / {COMMA} - {COMMA} / {COMMA} +STR_NETWORK_SERVER_LIST_LANGUAGE :{SILVER}Mál: {WHITE}{STRING} +STR_NETWORK_SERVER_LIST_LANDSCAPE :{SILVER}Landslag: {WHITE}{STRING} +STR_NETWORK_SERVER_LIST_MAP_SIZE :{SILVER}Stødd á korti: {WHITE}{COMMA}x{COMMA} +STR_NETWORK_SERVER_LIST_SERVER_VERSION :{SILVER}Servara útgáva: {WHITE}{STRING} +STR_NETWORK_SERVER_LIST_SERVER_ADDRESS :{SILVER}Servara bústaður: {WHITE}{STRING} +STR_NETWORK_SERVER_LIST_START_DATE :{SILVER}Byrjunar dato: {WHITE}{DATE_SHORT} +STR_NETWORK_SERVER_LIST_CURRENT_DATE :{SILVER}Núverðandi dato: {WHITE}{DATE_SHORT} +STR_NETWORK_SERVER_LIST_PASSWORD :{SILVER}Vardur við loyniorði! +STR_NETWORK_SERVER_LIST_SERVER_OFFLINE :{SILVER}SERVARI OFFLINE +STR_NETWORK_SERVER_LIST_SERVER_FULL :{SILVER}SERVARI FULLUR +STR_NETWORK_SERVER_LIST_VERSION_MISMATCH :{SILVER}ÚTGÁVUR SAMSVARA IKKI +STR_NETWORK_SERVER_LIST_GRF_MISMATCH :{SILVER}NEWGRF SAMSVARAR IKKI + +STR_NETWORK_SERVER_LIST_JOIN_GAME :{BLACK}Tak lut í spæli +STR_NETWORK_SERVER_LIST_REFRESH :{BLACK}Endurnýggja servara +STR_NETWORK_SERVER_LIST_REFRESH_TOOLTIP :{BLACK}Endurnýggja kunning um servara + +STR_NETWORK_SERVER_LIST_FIND_SERVER :{BLACK}Finn servara +STR_NETWORK_SERVER_LIST_FIND_SERVER_TOOLTIP :{BLACK}Leita eftir servara á netverki +STR_NETWORK_SERVER_LIST_ADD_SERVER :{BLACK}Legg servara aftrat +STR_NETWORK_SERVER_LIST_ADD_SERVER_TOOLTIP :{BLACK}Leggur ein servara til listan sum altíð verður kannaður fyri koyrandi spøl +STR_NETWORK_SERVER_LIST_START_SERVER :{BLACK}Set servara í gongd +STR_NETWORK_SERVER_LIST_START_SERVER_TOOLTIP :{BLACK}Set tín egna servara í gongd + +STR_NETWORK_SERVER_LIST_PLAYER_NAME_OSKTITLE :{BLACK}Skriva títt navn +STR_NETWORK_SERVER_LIST_ENTER_IP :{BLACK}Skriva bústað hjá verti + +# Start new multiplayer server +STR_NETWORK_START_SERVER_CAPTION :{WHITE}Byrja eitt nýtt hópspæl + +STR_NETWORK_START_SERVER_NEW_GAME_NAME :{BLACK}Spæl navn: +STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP :{BLACK}Aðrir spælarar síggja navni á spælinum í hópspæl úrvals skránni +STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}Áset loyniorð +STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Verj títt spæl við einum loyniorðið um tú ikki vil at ta skal verða opi fyri almenninginum + +STR_NETWORK_START_SERVER_UNADVERTISED :Nei +STR_NETWORK_START_SERVER_ADVERTISED :Ja +STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} klient{P "" ar} +STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Mest loyvdir klientar: +STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}Vel mest loyvda tali av klientum. Ta er ikki neyðugt at fylla øll plássini +STR_NETWORK_START_SERVER_COMPANIES_SELECT :{BLACK}{NUM} fyritøk{P a ur} +STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}Mest loyvdar fyritøkur: +STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES_TOOLTIP :{BLACK}Avmarka nøgdina av fyritøkum á servaranum +STR_NETWORK_START_SERVER_SPECTATORS_SELECT :{BLACK}{NUM} eygleiðar{P i ar} +STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK}Mest loyvdir eygjleiðarar: +STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS_TOOLTIP :{BLACK}Avmarka nøgdina av eygleiðarum á servaranum +STR_NETWORK_START_SERVER_LANGUAGE_SPOKEN :{BLACK}Tungumál: +STR_NETWORK_START_SERVER_LANGUAGE_TOOLTIP :{BLACK}Aðrir spælarir kunnu síggja hvat mál verður tosa á servaranum + +STR_NETWORK_START_SERVER_NEW_GAME_NAME_OSKTITLE :{BLACK}Gev netverks spælinum eitt navn + +# Network game languages +############ Leave those lines in this order!! +STR_NETWORK_LANG_ANY :Hvat sum helst +STR_NETWORK_LANG_ENGLISH :Enskt +STR_NETWORK_LANG_GERMAN :Týskt +STR_NETWORK_LANG_FRENCH :Franskt +STR_NETWORK_LANG_BRAZILIAN :Brasilienskt +STR_NETWORK_LANG_BULGARIAN :Bulgariskt +STR_NETWORK_LANG_CHINESE :Kinverskt +STR_NETWORK_LANG_CZECH :Tjekkiskt +STR_NETWORK_LANG_DANISH :Danskt +STR_NETWORK_LANG_DUTCH :Niðurlendskt +STR_NETWORK_LANG_ESPERANTO :Esperanto +STR_NETWORK_LANG_FINNISH :Finskt +STR_NETWORK_LANG_HUNGARIAN :Ungarskt +STR_NETWORK_LANG_ICELANDIC :Íslenskt +STR_NETWORK_LANG_ITALIAN :Italienskt +STR_NETWORK_LANG_JAPANESE :Japanskt +STR_NETWORK_LANG_KOREAN :Koreanskt +STR_NETWORK_LANG_LITHUANIAN :Litauiskt +STR_NETWORK_LANG_NORWEGIAN :Norskt +STR_NETWORK_LANG_POLISH :Polskt +STR_NETWORK_LANG_PORTUGUESE :Portugisiskt +STR_NETWORK_LANG_ROMANIAN :Rumenskt +STR_NETWORK_LANG_RUSSIAN :Russiskt +STR_NETWORK_LANG_SLOVAK :Slovakiskt +STR_NETWORK_LANG_SLOVENIAN :Slovenskt +STR_NETWORK_LANG_SPANISH :Spanskt +STR_NETWORK_LANG_SWEDISH :Svenskt +STR_NETWORK_LANG_TURKISH :Turkiskt +STR_NETWORK_LANG_UKRAINIAN :Ukrainskt +STR_NETWORK_LANG_AFRIKAANS :Afrikaans +STR_NETWORK_LANG_CROATIAN :Kroatiskt +STR_NETWORK_LANG_CATALAN :Catalan +STR_NETWORK_LANG_ESTONIAN :Estoniskt +STR_NETWORK_LANG_GALICIAN :Galisiskt +STR_NETWORK_LANG_GREEK :Grikskt +STR_NETWORK_LANG_LATVIAN :Latviskt +############ End of leave-in-this-order + +# Network game lobby +STR_NETWORK_GAME_LOBBY_CAPTION :{WHITE}Hópspæls forhøll + +STR_NETWORK_GAME_LOBBY_PREPARE_TO_JOIN :{BLACK}Fyrireikar samband við: {ORANGE}{STRING} +STR_NETWORK_GAME_LOBBY_COMPANY_LIST_TOOLTIP :{BLACK}Listi yvir allar fyritøkur í hesum spælinum júst nú. Tú kann antin taka lut í einari, ella stovna eina nyggja um ta er pláss + +STR_NETWORK_GAME_LOBBY_COMPANY_INFO :{SILVER}KUNNING UM FYRITØKU +STR_NETWORK_GAME_LOBBY_COMPANY_NAME :{SILVER}Navn á fyritøku: {WHITE}{STRING} +STR_NETWORK_GAME_LOBBY_INAUGURATION_YEAR :{SILVER}Stovnað: {WHITE}{NUM} +STR_NETWORK_GAME_LOBBY_VALUE :{SILVER}Virði á fyritøku: {WHITE}{CURRENCY_LONG} +STR_NETWORK_GAME_LOBBY_CURRENT_BALANCE :{SILVER}Peningur á bók júst nú: {WHITE}{CURRENCY_LONG} +STR_NETWORK_GAME_LOBBY_LAST_YEARS_INCOME :{SILVER}Inntøka síðsta ár: {WHITE}{CURRENCY_LONG} +STR_NETWORK_GAME_LOBBY_PERFORMANCE :{SILVER}Avrik: {WHITE}{NUM} + +STR_NETWORK_GAME_LOBBY_VEHICLES :{SILVER}Flutningstól: {WHITE}{NUM} {TRAIN}, {NUM} {LORRY}, {NUM} {BUS}, {NUM} {SHIP}, {NUM} {PLANE} +STR_NETWORK_GAME_LOBBY_STATIONS :{SILVER}Støðir: {WHITE}{NUM} {TRAIN}, {NUM} {LORRY}, {NUM} {BUS}, {NUM} {SHIP}, {NUM} {PLANE} +STR_NETWORK_GAME_LOBBY_PLAYERS :{SILVER}Spælarir: {WHITE}{STRING} + +STR_NETWORK_GAME_LOBBY_NEW_COMPANY :{BLACK}Nýggja fyritøku +STR_NETWORK_GAME_LOBBY_NEW_COMPANY_TOOLTIP :{BLACK}Stovnað eina nýggja fyritøku +STR_NETWORK_GAME_LOBBY_SPECTATE_GAME :{BLACK}Eygleið spæl +STR_NETWORK_GAME_LOBBY_SPECTATE_GAME_TOOLTIP :{BLACK}Hygg eftir spælinum sum eygleiðari +STR_NETWORK_GAME_LOBBY_JOIN_COMPANY :{BLACK}Tak lut í fyritøku +STR_NETWORK_GAME_LOBBY_JOIN_COMPANY_TOOLTIP :{BLACK}Hjálp við at leiða hesa fyritøkuna + +# Network connecting window +STR_NETWORK_CONNECTING_CAPTION :{WHITE}Fær samband... + +############ Leave those lines in this order!! +STR_NETWORK_CONNECTING_1 :{BLACK}(1/6) Fær samband... +STR_NETWORK_CONNECTING_2 :{BLACK}(2/6) Heimildar... +STR_NETWORK_CONNECTING_3 :{BLACK}(3/6) Bíðar... +STR_NETWORK_CONNECTING_4 :{BLACK}(4/6) Heintar niður kort... +STR_NETWORK_CONNECTING_5 :{BLACK}(5/6) Viðgerð dáta... +STR_NETWORK_CONNECTING_6 :{BLACK}(6/6) Skrásetur... + +STR_NETWORK_CONNECTING_SPECIAL_1 :{BLACK}Fær kunning um spæl til vega... +STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}Fær kunning um fyritøku til vega... +############ End of leave-in-this-order +STR_NETWORK_CONNECTING_WAITING :{BLACK}{NUM} klient{P ur ar} in front of you +STR_NETWORK_CONNECTING_DOWNLOADING_1 :{BLACK}{BYTES} heinta niður sum nú er +STR_NETWORK_CONNECTING_DOWNLOADING_2 :{BLACK}{BYTES} / {BYTES} heinta niður sum nú er + +STR_NETWORK_CONNECTION_DISCONNECT :{BLACK}Slít samband + +STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Servarin er vardur. Skriva loyniorð +STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Fyritøka er vard. Skriva loyniorð + +# Network company list added strings +STR_NETWORK_COMPANY_LIST_CLIENT_LIST :{WHITE}Listi yvir klientar +STR_NETWORK_COMPANY_LIST_SPECTATE :{WHITE}Eygleið +STR_NETWORK_COMPANY_LIST_NEW_COMPANY :{WHITE}Nýggja fyritøku + +# Network client list +STR_NETWORK_CLIENTLIST_KICK :Sparka +STR_NETWORK_CLIENTLIST_BAN :Bannað +STR_NETWORK_CLIENTLIST_GIVE_MONEY :Gev pening +STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :Tosa við øll +STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :Tosa við fyritøku +STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :Persónligt boð + +STR_NETWORK_SERVER :Servari +STR_NETWORK_CLIENT :Klient +STR_NETWORK_SPECTATORS :Eygleiðarar + +STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Skriva nøgdina av peningi tú vil geva + +# Network set password +STR_COMPANY_PASSWORD_CANCEL :{BLACK}Goym ikki skrivaða loyniorðið +STR_COMPANY_PASSWORD_OK :{BLACK}Gev fyritøkuni tað nýggja loyniorðið +STR_COMPANY_PASSWORD_CAPTION :{WHITE}Fyritøku loyniorð +STR_COMPANY_PASSWORD_MAKE_DEFAULT :{BLACK}Vanligt fyritøku loyniorð +STR_COMPANY_PASSWORD_MAKE_DEFAULT_TOOLTIP :{BLACK}Nýt hetta fyritøku loyniorðið sum vanligt fyri nýggjar fyritøkur + +# Network company info join/password +STR_COMPANY_VIEW_JOIN :{BLACK}Tak lut +STR_COMPANY_VIEW_JOIN_TOOLTIP :{BLACK}Tak lut og spæl sum hendan fyritøkan +STR_COMPANY_VIEW_PASSWORD :{BLACK}Loyniorð +STR_COMPANY_VIEW_PASSWORD_TOOLTIP :{BLACK}Verj tína fyritøku við einum loyniorðið so eingin óynsktur tekur lut í henni +STR_COMPANY_VIEW_SET_PASSWORD :{BLACK}Áset fyritøku loyniorð + +# Network chat +STR_NETWORK_CHAT_SEND :{BLACK}Send +STR_NETWORK_CHAT_COMPANY_CAPTION :[Lið] : +STR_NETWORK_CHAT_CLIENT_CAPTION :[Persónligt] {STRING}: +STR_NETWORK_CHAT_ALL_CAPTION :[Øll] : + +STR_NETWORK_CHAT_COMPANY :[Lið] {STRING}: {WHITE}{STRING} +STR_NETWORK_CHAT_TO_COMPANY :[Lið] Til {STRING}: {WHITE}{STRING} +STR_NETWORK_CHAT_CLIENT :[Persónligt] {STRING}: {WHITE}{STRING} +STR_NETWORK_CHAT_TO_CLIENT :[Persónligt] Til {STRING}: {WHITE}{STRING} +STR_NETWORK_CHAT_ALL :[Øll] {STRING}: {WHITE}{STRING} +STR_NETWORK_CHAT_OSKTITLE :{BLACK}Skriva tekst til netverks chat + +# Network messages +STR_NETWORK_ERROR_NOTAVAILABLE :{WHITE}Eingi netverks tól funnin ella kompileraði uttan ENABLE_NETWORK +STR_NETWORK_ERROR_NOSERVER :{WHITE}Eydnaðist ikki at finna nøkur netverks spøl +STR_NETWORK_ERROR_NOCONNECTION :{WHITE}Servarin svaraði ikki fyrispurningi +STR_NETWORK_ERROR_NEWGRF_MISMATCH :{WHITE}Eydnaðist ikki at fáa samband orsakað av at NewGRF samsvaraði ikki +STR_NETWORK_ERROR_DESYNC :{WHITE}Netverk-Spæl synkronisering miseydnaðist +STR_NETWORK_ERROR_LOSTCONNECTION :{WHITE}Netverk-Spæl samband mist +STR_NETWORK_ERROR_SAVEGAMEERROR :{WHITE}Eydnaðist ikki at heinta goymt spæl +STR_NETWORK_ERROR_SERVER_START :{WHITE}Eydnaðist ikki at seta servara í gongd +STR_NETWORK_ERROR_CLIENT_START :{WHITE}Eydnaðist ikki at fáa samband +STR_NETWORK_ERROR_TIMEOUT :{WHITE}Samband #{NUM} rann út +STR_NETWORK_ERROR_SERVER_ERROR :{WHITE}Ein protokol feilur var funnin og sambandi bleiv lukka +STR_NETWORK_ERROR_WRONG_REVISION :{WHITE}Útgávan hjá klientinum samsvarar ikki við útgávuna hjá servaranum +STR_NETWORK_ERROR_WRONG_PASSWORD :{WHITE}Skeivt loyniorð +STR_NETWORK_ERROR_SERVER_FULL :{WHITE}Servarin er fullur +STR_NETWORK_ERROR_SERVER_BANNED :{WHITE}Tú er bannaður á hesum servaranum +STR_NETWORK_ERROR_KICKED :{WHITE}Tú varð sparkaður út úr spælinum +STR_NETWORK_ERROR_CHEATER :{WHITE}Ikki loyvt at snýta á hesum servaranum +STR_NETWORK_ERROR_TOO_MANY_COMMANDS :{WHITE}Tú sendi ov nógv boð til servarin +STR_NETWORK_ERROR_TIMEOUT_PASSWORD :{WHITE}Tú tók ov langa tíð at skriva loyniorðið +STR_NETWORK_ERROR_TIMEOUT_COMPUTER :{WHITE}Tín telda er ov sein at fylgja við servaranum +STR_NETWORK_ERROR_TIMEOUT_MAP :{WHITE}Tín telda tók ov langa tíð at heinta niður korti +STR_NETWORK_ERROR_TIMEOUT_JOIN :{WHITE}Tín telda tók ov leinga at fáa samband við servaran + +############ Leave those lines in this order!! +STR_NETWORK_ERROR_CLIENT_GENERAL :almenn villa +STR_NETWORK_ERROR_CLIENT_DESYNC :desync villa +STR_NETWORK_ERROR_CLIENT_SAVEGAME :eydnaðist ikki at heinta kort +STR_NETWORK_ERROR_CLIENT_CONNECTION_LOST :samband mist +STR_NETWORK_ERROR_CLIENT_PROTOCOL_ERROR :protokol villa +STR_NETWORK_ERROR_CLIENT_NEWGRF_MISMATCH :NewGRF samsvarar ikki +STR_NETWORK_ERROR_CLIENT_NOT_AUTHORIZED :ikki heimilda +STR_NETWORK_ERROR_CLIENT_NOT_EXPECTED :tók ímóti óviðkomandi ella óvæntaðum pakka +STR_NETWORK_ERROR_CLIENT_WRONG_REVISION :skeiv útgáva +STR_NETWORK_ERROR_CLIENT_NAME_IN_USE :navn er longu í nýstlu +STR_NETWORK_ERROR_CLIENT_WRONG_PASSWORD :skeivt loyniorð +STR_NETWORK_ERROR_CLIENT_COMPANY_MISMATCH :skeiv fyritøka í DoCommand +STR_NETWORK_ERROR_CLIENT_KICKED :sparkaður av servara +STR_NETWORK_ERROR_CLIENT_CHEATER :royndi at snýta +STR_NETWORK_ERROR_CLIENT_SERVER_FULL :servari fullur +STR_NETWORK_ERROR_CLIENT_TOO_MANY_COMMANDS :sendi ov nógv boð +STR_NETWORK_ERROR_CLIENT_TIMEOUT_PASSWORD :fekk ikki loyniorð til tíðina +STR_NETWORK_ERROR_CLIENT_TIMEOUT_COMPUTER :tíðin rann alment út +STR_NETWORK_ERROR_CLIENT_TIMEOUT_MAP :tók ov langa tíð at heinta niður kort +STR_NETWORK_ERROR_CLIENT_TIMEOUT_JOIN :viðgerð av kort tók ov langa tíð +############ End of leave-in-this-order + +STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION_CAPTION :{WHITE}Møguligt sambands slit +STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION :{WHITE}Tey síðstu {NUM} sekundini eru eingin dáta komin fram frá seraranum + +# Network related errors +STR_NETWORK_SERVER_MESSAGE :*** {1:STRING} +############ Leave those lines in this order!! +STR_NETWORK_SERVER_MESSAGE_GAME_PAUSED :Spæl steðga ({STRING}) +STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_1 :Spæl enn steðga ({STRING}) +STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_2 :Spæl enn steðga ({STRING}, {STRING}) +STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_3 :Spæl enn steðga ({STRING}, {STRING}, {STRING}) +STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_4 :Spæl enn steðga ({STRING}, {STRING}, {STRING}, {STRING}) +STR_NETWORK_SERVER_MESSAGE_GAME_UNPAUSED :Spæl ikki steðga ({STRING}) +STR_NETWORK_SERVER_MESSAGE_GAME_REASON_NOT_ENOUGH_PLAYERS :tal av spælarum +STR_NETWORK_SERVER_MESSAGE_GAME_REASON_CONNECTING_CLIENTS :fær samband við klientar +STR_NETWORK_SERVER_MESSAGE_GAME_REASON_MANUAL :manuelt +STR_NETWORK_SERVER_MESSAGE_GAME_REASON_GAME_SCRIPT :spæl skript +############ End of leave-in-this-order +STR_NETWORK_MESSAGE_CLIENT_LEAVING :rýmur +STR_NETWORK_MESSAGE_CLIENT_JOINED :*** {STRING} tekur lut í spælinum +STR_NETWORK_MESSAGE_CLIENT_JOINED_ID :*** {STRING} tekur lut í spælinum (klient #{2:NUM}) +STR_NETWORK_MESSAGE_CLIENT_COMPANY_JOIN :*** {STRING} tekur lut í fyritøku #{2:NUM} +STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} er vorðin eygleiðari +STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} hevur stovnað eina nýggja fyritøku (#{2:NUM}) +STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} er farin úr spælinum ({2:STRING}) +STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} hevur broytt sítt navn til {STRING} +STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} handaði tínari fyritøku {2:CURRENCY_LONG} +STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** Tú handaði {1:STRING} {2:CURRENCY_LONG} +STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}Servarin endaði setuna +STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}Servarin endurbyrjar...{}Vinarliga bíða... + +# Content downloading window +STR_CONTENT_TITLE :{WHITE}Tilfar verur heinta niður +STR_CONTENT_TYPE_CAPTION :{BLACK}Slag +STR_CONTENT_TYPE_CAPTION_TOOLTIP :{BLACK}Slag av tilfari +STR_CONTENT_NAME_CAPTION :{BLACK}Navn +STR_CONTENT_NAME_CAPTION_TOOLTIP :{BLACK}Navni á tilfarinum +STR_CONTENT_MATRIX_TOOLTIP :{BLACK}Trýst á eina reglu fyri at síggja smálutirnar{}Trýst á flugubeinskassan fyri at marka ta til niðurheintan +STR_CONTENT_SELECT_ALL_CAPTION :{BLACK}Vel alt +STR_CONTENT_SELECT_ALL_CAPTION_TOOLTIP :{BLACK}Marka alt tilfar til niðurheintan +STR_CONTENT_SELECT_UPDATES_CAPTION :{BLACK}Vel betringar +STR_CONTENT_SELECT_UPDATES_CAPTION_TOOLTIP :{BLACK}Marka alt tilfar, ið er ein betring av verðandi tilfari til niðurheintan +STR_CONTENT_UNSELECT_ALL_CAPTION :{BLACK}Vel einki +STR_CONTENT_UNSELECT_ALL_CAPTION_TOOLTIP :{BLACK}Marka alt tilfar til ikki at vera heinta niður +STR_CONTENT_SEARCH_EXTERNAL :{BLACK}Leita á útihýsis heimasíðum +STR_CONTENT_SEARCH_EXTERNAL_TOOLTIP :{BLACK}Leita eftir tilfari ikki tøkt á OpenTTD tilfars tænastu, á heimasíðum ikki knýttar at OpenTTD +STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER_CAPTION :{WHITE}Tygum fara nú frá OpenTTD! +STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER :{WHITE}Treytir og umstøður fyri niðurheintan av tilfari frá útihýsis heimasíðum eru ymiskar.{}Kunning um hvussu tygum installera hetta tilfari inn í OpenTTD mugu tygum finna á hesum útihýsis heimasíðunum.{}Vilja tygum halda á fram? +STR_CONTENT_FILTER_TITLE :{BLACK}Tag/navn filtur: +STR_CONTENT_OPEN_URL :{BLACK}Vitja heimasíðu +STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}Vitja heimasíðuna fyri hetta tilfari +STR_CONTENT_DOWNLOAD_CAPTION :{BLACK}Heinta niður +STR_CONTENT_DOWNLOAD_CAPTION_TOOLTIP :{BLACK}Byrja at heinta niður tað valda tilfarið +STR_CONTENT_TOTAL_DOWNLOAD_SIZE :{SILVER}Samanløgd stødd á niðurheintan: {WHITE}{BYTES} +STR_CONTENT_DETAIL_TITLE :{SILVER}KUNNING UM TILFAR +STR_CONTENT_DETAIL_SUBTITLE_UNSELECTED :{SILVER}Tú hevur ikki marka hetta at heinta niður +STR_CONTENT_DETAIL_SUBTITLE_SELECTED :{SILVER}Tú hevur marka hetta at heinta niður +STR_CONTENT_DETAIL_SUBTITLE_AUTOSELECTED :{SILVER}Hendan atbindingin er marka at heinta niður +STR_CONTENT_DETAIL_SUBTITLE_ALREADY_HERE :{SILVER}Tú hevur longu hetta +STR_CONTENT_DETAIL_SUBTITLE_DOES_NOT_EXIST :{SILVER}Hetta tilfari er ókent og kann ikki heintast niður í OpenTTD +STR_CONTENT_DETAIL_UPDATE :{SILVER}Hetta er ein útskifting fyri verðandi {STRING} +STR_CONTENT_DETAIL_NAME :{SILVER}Navn: {WHITE}{STRING} +STR_CONTENT_DETAIL_VERSION :{SILVER}Útgáva: {WHITE}{STRING} +STR_CONTENT_DETAIL_DESCRIPTION :{SILVER}Lýsing: {WHITE}{STRING} +STR_CONTENT_DETAIL_URL :{SILVER}URL: {WHITE}{STRING} +STR_CONTENT_DETAIL_TYPE :{SILVER}Slag: {WHITE}{STRING} +STR_CONTENT_DETAIL_FILESIZE :{SILVER}Niðurheintingar stødd: {WHITE}{BYTES} +STR_CONTENT_DETAIL_SELECTED_BECAUSE_OF :{SILVER}Valt orsaka av: {WHITE}{STRING} +STR_CONTENT_DETAIL_DEPENDENCIES :{SILVER}Atbindingar: {WHITE}{STRING} +STR_CONTENT_DETAIL_TAGS :{SILVER}Frámerki: {WHITE}{STRING} +STR_CONTENT_NO_ZLIB :{WHITE}OpenTTD er bygt uttan stuðul fyri "zlib"... +STR_CONTENT_NO_ZLIB_SUB :{WHITE}... niður heintan av tilfari ikki gjørlig! + +# Order of these is important! +STR_CONTENT_TYPE_BASE_GRAPHICS :Base grafikkur +STR_CONTENT_TYPE_NEWGRF :NewGRF +STR_CONTENT_TYPE_AI :AI +STR_CONTENT_TYPE_AI_LIBRARY :AI savn +STR_CONTENT_TYPE_SCENARIO :Tilburð +STR_CONTENT_TYPE_HEIGHTMAP :Hæddarkort +STR_CONTENT_TYPE_BASE_SOUNDS :Base ljóð +STR_CONTENT_TYPE_BASE_MUSIC :Base tónleikur +STR_CONTENT_TYPE_GAME_SCRIPT :Spæli skript +STR_CONTENT_TYPE_GS_LIBRARY :GS savn + +# Content downloading progress window +STR_CONTENT_DOWNLOAD_TITLE :{WHITE}Heintar niður tilfar... +STR_CONTENT_DOWNLOAD_INITIALISE :{WHITE}Spyr eftir fílum... +STR_CONTENT_DOWNLOAD_FILE :{WHITE}Heintar í løtuni niður {STRING} ({NUM} av {NUM}) +STR_CONTENT_DOWNLOAD_COMPLETE :{WHITE}Niðurheintan fullfíggja +STR_CONTENT_DOWNLOAD_PROGRESS_SIZE :{WHITE}{BYTES} av {BYTES} heinta niður ({NUM} %) + +# Content downloading error messages +STR_CONTENT_ERROR_COULD_NOT_CONNECT :{WHITE}Eydnaðist ikki at fáa samband við tilfars servaran... +STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD :{WHITE}Niðurheintan miseydnaðist... +STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD_CONNECTION_LOST :{WHITE}... samband mist +STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD_FILE_NOT_WRITABLE :{WHITE}... kann ikki skriva til fílu +STR_CONTENT_ERROR_COULD_NOT_EXTRACT :{WHITE}Eydnaðist ikki at pakka niðurheintaða fíl út + +STR_MISSING_GRAPHICS_SET_CAPTION :{WHITE}Vantandi grafikkur +STR_MISSING_GRAPHICS_SET_MESSAGE :{BLACK}OpenTTD tørvar grafikk fyri at virka men eingin var funnin. Loyvir tú OpenTTD at heinta niður og installera henda grafikkin? +STR_MISSING_GRAPHICS_YES_DOWNLOAD :{BLACK}Ja, heinta niður grafikkin +STR_MISSING_GRAPHICS_NO_QUIT :{BLACK}Nei, gevst at spæla OpenTTD + +# Transparency settings window +STR_TRANSPARENCY_CAPTION :{WHITE}Gjøgnumskygnis møguleikar +STR_TRANSPARENT_SIGNS_TOOLTIP :{BLACK}Sløkk/tendra gjøgnumskygni fyri skelti. Ctrl+trýst fyri at læsa +STR_TRANSPARENT_TREES_TOOLTIP :{BLACK}Tendra/sløkk gjøgnumskygni fyri trø. Ctrl+trýst fyri at læsa +STR_TRANSPARENT_HOUSES_TOOLTIP :{BLACK}Tendra/sløkk gjøgnumskygni fyri hús. Ctrl+trýst fyri at læsa +STR_TRANSPARENT_INDUSTRIES_TOOLTIP :{BLACK}Tendra/sløkk gjøgnumskygni fyri ídnaðir. Ctrl+trýst fyri at læsa +STR_TRANSPARENT_BRIDGES_TOOLTIP :{BLACK}Tendra/sløkk gjøgnumskygni fyri brúgvar. Ctrl+trýst fyri at læsa +STR_TRANSPARENT_STRUCTURES_TOOLTIP :{BLACK}Tendra/sløkk gjøgnumskygni fyri konstruktiónir sum vitar og antennur. Ctrl+trýst fyri at læsa +STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}Tendra/sløkk gjøgnumskygni fyri ketulinju. Ctrl+trýst fyri at læsa +STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Tendra/sløkk gjøgnumskygni fyri lessingar vísarar. Ctrl+trýst fyri at læsa +STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}Ger lutir ósjónligar heldur enn gjøgnumskygdar + +# Linkgraph legend window + +# Linkgraph legend window and linkgraph legend in smallmap + +# Base for station construction window(s) +STR_STATION_BUILD_COVERAGE_AREA_TITLE :{BLACK}Hálýsing av deknings øki +STR_STATION_BUILD_COVERAGE_OFF :{BLACK}Sløkt +STR_STATION_BUILD_COVERAGE_ON :{BLACK}Tendra +STR_STATION_BUILD_ACCEPTS_CARGO :{BLACK}Tekur í móti: {GOLD}{CARGO_LIST} +STR_STATION_BUILD_SUPPLIES_CARGO :{BLACK}Veitur: {GOLD}{CARGO_LIST} + +# Join station window +STR_JOIN_STATION_CAPTION :{WHITE}Bind støð saman +STR_JOIN_STATION_CREATE_SPLITTED_STATION :{YELLOW}Bygg serstaka støð + +STR_JOIN_WAYPOINT_CAPTION :{WHITE}Bind waypoint saman +STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Bygg eitt serstakt waypoint + +# Rail construction toolbar +STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Jarnbreyta bygging +STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :Ravmagns jarnbreyta bygging +STR_RAIL_TOOLBAR_MONORAIL_CONSTRUCTION_CAPTION :Einsporað jarnbreyta bygging +STR_RAIL_TOOLBAR_MAGLEV_CONSTRUCTION_CAPTION :Maglev bygging + + +STR_RAIL_NAME_RAILROAD :{G=m}Jarnbreyt +STR_RAIL_NAME_ELRAIL :Ravmagns jarnbreyt +STR_RAIL_NAME_MONORAIL :Einsporað jarnbreyt +STR_RAIL_NAME_MAGLEV :Maglev + +# Rail depot construction window +STR_BUILD_DEPOT_TRAIN_ORIENTATION_CAPTION :{WHITE}Tok goymslu ætt +STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}Vel hvønn veg tok goymslan skal venda + +# Rail waypoint construction window +STR_WAYPOINT_CAPTION :{WHITE}Waypoint +STR_WAYPOINT_GRAPHICS_TOOLTIP :{BLACK}Vel waypoint slag + +# Rail station construction window +STR_STATION_BUILD_RAIL_CAPTION :{WHITE}Tok støðs úrval +STR_STATION_BUILD_ORIENTATION :{BLACK}Ætt +STR_STATION_BUILD_RAILROAD_ORIENTATION_TOOLTIP :{BLACK}Vel hvønn veg tok støðin skal venda +STR_STATION_BUILD_NUMBER_OF_TRACKS :{BLACK}Mongd av breytum +STR_STATION_BUILD_NUMBER_OF_TRACKS_TOOLTIP :{BLACK}Vel hvussu nógvar breytir tok støðin skal hava +STR_STATION_BUILD_PLATFORM_LENGTH :{BLACK}Pall longd +STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP :{BLACK}Vel hvussu lang tokstøðin skal verða +STR_STATION_BUILD_DRAG_DROP :{BLACK}Toga & Slepp +STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}Bygg eina støð vi at nýta toga & slepp + +STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}Vel ein klassa av støð at vísa +STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}Vel hvat slag av støð skal byggjast + +STR_STATION_CLASS_DFLT :Vanlig støð +STR_STATION_CLASS_WAYP :Waypoint + +# Signal window +STR_BUILD_SIGNAL_CAPTION :{WHITE}Úrval av jarnbreytateknum + +# Bridge selection window +STR_SELECT_RAIL_BRIDGE_CAPTION :{WHITE}Vel jarnbreyta brúgv +STR_SELECT_ROAD_BRIDGE_CAPTION :{WHITE}Vel vega brúgv +STR_SELECT_BRIDGE_SELECTION_TOOLTIP :{BLACK}Brúgva úrval - trýst á ta brúnna tær dámar fyri at byggja hana +STR_SELECT_BRIDGE_INFO :{GOLD}{STRING},{} {VELOCITY} {WHITE}{CURRENCY_LONG} +STR_SELECT_BRIDGE_SCENEDIT_INFO :{GOLD}{STRING},{} {VELOCITY} +STR_BRIDGE_NAME_SUSPENSION_STEEL :Heingibrúgv, stál +STR_BRIDGE_NAME_GIRDER_STEEL :Bjálkabrúgv, stál +STR_BRIDGE_NAME_CANTILEVER_STEEL :Cantilever, stál +STR_BRIDGE_NAME_SUSPENSION_CONCRETE :Heingibrúgv, betong +STR_BRIDGE_NAME_WOODEN :Træ +STR_BRIDGE_NAME_CONCRETE :Betong +STR_BRIDGE_NAME_TUBULAR_STEEL :Rør, stál +STR_BRIDGE_TUBULAR_SILICON :Rør, silikon + + +# Road construction toolbar +STR_ROAD_TOOLBAR_ROAD_CONSTRUCTION_CAPTION :{WHITE}Vegagerð +STR_ROAD_TOOLBAR_TRAM_CONSTRUCTION_CAPTION :{WHITE}Sporvogna bygging + +# Road depot construction window +STR_BUILD_DEPOT_ROAD_ORIENTATION_CAPTION :{WHITE}Akfars goymslu ætt +STR_BUILD_DEPOT_ROAD_ORIENTATION_SELECT_TOOLTIP :{BLACK}Vel hvønn veg akfars goymslan skal venda +STR_BUILD_DEPOT_TRAM_ORIENTATION_CAPTION :{WHITE}Sporvogna goymslu ætt +STR_BUILD_DEPOT_TRAM_ORIENTATION_SELECT_TOOLTIP :{BLACK}Vel hvønn veg sporvogna goymslan skal venda + +# Road vehicle station construction window +STR_STATION_BUILD_BUS_ORIENTATION :{WHITE}Buss støð ætt +STR_STATION_BUILD_BUS_ORIENTATION_TOOLTIP :{BLACK}Vel hvønn veg buss støðin skal venda +STR_STATION_BUILD_TRUCK_ORIENTATION :{WHITE}Lastbila støð ætt +STR_STATION_BUILD_TRUCK_ORIENTATION_TOOLTIP :{BLACK}Vel hvønn veg lastbila støðin skal venda +STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION :{WHITE}Ferðafólka sporvogna støð ætt +STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION_TOOLTIP :{BLACK}Vel hvønn veg ferðafólka sporvogna støðin skal venda +STR_STATION_BUILD_CARGO_TRAM_ORIENTATION :{WHITE}Farma sporvogna støð ætt +STR_STATION_BUILD_CARGO_TRAM_ORIENTATION_TOOLTIP :{BLACK}Vel hvønn veg farma sporvogna støðin skal venda + +# Waterways toolbar (last two for SE only) +STR_WATERWAYS_TOOLBAR_CAPTION :{WHITE}Siglingarrennu bygging +STR_WATERWAYS_TOOLBAR_CAPTION_SE :{WHITE}Siglingarrennir + +# Ship depot construction window +STR_DEPOT_BUILD_SHIP_CAPTION :{WHITE}Skips goymslu ætt +STR_DEPOT_BUILD_SHIP_ORIENTATION_TOOLTIP :{BLACK}Vel hvønn veg skips goymslan skal venda + +# Dock construction window +STR_STATION_BUILD_DOCK_CAPTION :{WHITE}Havn + +# Airport toolbar +STR_TOOLBAR_AIRCRAFT_CAPTION :{WHITE}Floghavnir + +# Airport construction window +STR_STATION_BUILD_AIRPORT_CAPTION :{WHITE}Floghavna úrval +STR_STATION_BUILD_AIRPORT_TOOLTIP :{BLACK}Vel stødd/slag av floghavn +STR_STATION_BUILD_AIRPORT_CLASS_LABEL :{BLACK}Floghavna klassi +STR_STATION_BUILD_AIRPORT_LAYOUT_NAME :{BLACK}Uppseting {NUM} + +STR_AIRPORT_SMALL :Lítil +STR_AIRPORT_CITY :Býar +STR_AIRPORT_METRO :Stórbýar +STR_AIRPORT_INTERNATIONAL :Altjóða +STR_AIRPORT_COMMUTER :Sveiggj +STR_AIRPORT_INTERCONTINENTAL :Heimsparta +STR_AIRPORT_HELIPORT :Tyrlupall +STR_AIRPORT_HELIDEPOT :Tyrlugoymsla +STR_AIRPORT_HELISTATION :Tyrlustøð + +STR_AIRPORT_CLASS_SMALL :Lítlar floghavnir +STR_AIRPORT_CLASS_LARGE :Stórar floghavnir +STR_AIRPORT_CLASS_HUB :Floghavna miðstøð +STR_AIRPORT_CLASS_HELIPORTS :Tyrlupallar + +STR_STATION_BUILD_NOISE :{BLACK}Óljóð framleitt: {GOLD}{COMMA} + +# Landscaping toolbar +STR_LANDSCAPING_TOOLBAR :{WHITE}Landslags broyting + +# Object construction window +STR_OBJECT_BUILD_CAPTION :{WHITE}Luta úrval +STR_OBJECT_BUILD_SIZE :{BLACK}Stødd: {GOLD}{NUM} x {NUM} puntar + +STR_OBJECT_CLASS_LTHS :Vitar +STR_OBJECT_CLASS_TRNS :Sendarir + +# Tree planting window (last two for SE only) +STR_PLANT_TREE_CAPTION :{WHITE}Trø +STR_TREES_RANDOM_TYPE :{BLACK}Tilvildarlig træ sløg +STR_TREES_RANDOM_TREES_BUTTON :{BLACK}Tilvildarlig trø + +# Land generation window (SE) +STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}Lendis framleiðsla +STR_TERRAFORM_SE_NEW_WORLD :{BLACK}Skapa nýggjan tilburð +STR_TERRAFORM_RESET_LANDSCAPE :{BLACK}Endurstilla landslag +STR_TERRAFORM_RESET_LANDSCAPE_TOOLTIP :{BLACK}Bein burtur allar ognir hjá fyritøkum á kortinum + +STR_QUERY_RESET_LANDSCAPE_CAPTION :{WHITE}Endurstilla landslag +STR_RESET_LANDSCAPE_CONFIRMATION_TEXT :{WHITE}Er tú vís/vísur í at tú vil beina burtur allar ognir hjá fyritøkum? + +# Town generation window (SE) +STR_FOUND_TOWN_CAPTION :{WHITE}Bygda framleiðsla +STR_FOUND_TOWN_NEW_TOWN_BUTTON :{BLACK}Nýggj bygd +STR_FOUND_TOWN_NEW_TOWN_TOOLTIP :{BLACK}Stovnað nýggja bygd. Shift+trýst vísur kostnaðar meting +STR_FOUND_TOWN_RANDOM_TOWN_BUTTON :{BLACK}Tilvildarlig bygd +STR_FOUND_TOWN_RANDOM_TOWN_TOOLTIP :{BLACK}Stovnað bygd á einum tilvildarligum staði +STR_FOUND_TOWN_MANY_RANDOM_TOWNS :{BLACK}Nógvar tilvildarligar bygdir +STR_FOUND_TOWN_RANDOM_TOWNS_TOOLTIP :{BLACK}Stovnað tilvildarligar bygdir kring alt korti + +STR_FOUND_TOWN_NAME_TITLE :{YELLOW}Bygdar navn: +STR_FOUND_TOWN_NAME_EDITOR_TITLE :{BLACK}Skriva návn á bygdini +STR_FOUND_TOWN_NAME_EDITOR_HELP :{BLACK}Trýst fyri at skriva navn á bygdini +STR_FOUND_TOWN_NAME_RANDOM_BUTTON :{BLACK}Tilvildarligt navn +STR_FOUND_TOWN_NAME_RANDOM_TOOLTIP :{BLACK}Framleið nýtt tilvildarligt navn + +STR_FOUND_TOWN_INITIAL_SIZE_TITLE :{YELLOW}Bygda stødd: +STR_FOUND_TOWN_INITIAL_SIZE_SMALL_BUTTON :{BLACK}Lítil +STR_FOUND_TOWN_INITIAL_SIZE_MEDIUM_BUTTON :{BLACK}Miðal +STR_FOUND_TOWN_INITIAL_SIZE_LARGE_BUTTON :{BLACK}Stór +STR_FOUND_TOWN_SIZE_RANDOM :{BLACK}Tilvildarligt +STR_FOUND_TOWN_INITIAL_SIZE_TOOLTIP :{BLACK}Vel stødd á bygdini +STR_FOUND_TOWN_CITY :{BLACK}Býur +STR_FOUND_TOWN_CITY_TOOLTIP :{BLACK}Býir vaksa skjótari enn vanligar bygdir{}Treyta av innstillingum, eru teir størri tá teir verða stovnaðir + +STR_FOUND_TOWN_ROAD_LAYOUT :{YELLOW}Bygda vegakervi: +STR_FOUND_TOWN_SELECT_TOWN_ROAD_LAYOUT :{BLACK}Vel hvat vegakervi skal nýtast í hesi bygdini +STR_FOUND_TOWN_SELECT_LAYOUT_ORIGINAL :{BLACK}Upprunaligt +STR_FOUND_TOWN_SELECT_LAYOUT_BETTER_ROADS :{BLACK}Betri vegir +STR_FOUND_TOWN_SELECT_LAYOUT_2X2_GRID :{BLACK}2x2 rimaverk +STR_FOUND_TOWN_SELECT_LAYOUT_3X3_GRID :{BLACK}3x3 rimaverk +STR_FOUND_TOWN_SELECT_LAYOUT_RANDOM :{BLACK}Tilvildarligt + +# Fund new industry window +STR_FUND_INDUSTRY_CAPTION :{WHITE}Fíggja nýggjan ídnað +STR_FUND_INDUSTRY_SELECTION_TOOLTIP :{BLACK}Vel ein passandi ídnað úr hesum yvirlitinum +STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES :Nógvir tilvildarligir ídnaðir +STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES_TOOLTIP :{BLACK}Stovnað tilvildarligar ídnaðir kring alt korti +STR_FUND_INDUSTRY_INDUSTRY_BUILD_COST :{BLACK}Kostnaður: {YELLOW}{CURRENCY_LONG} +STR_FUND_INDUSTRY_PROSPECT_NEW_INDUSTRY :{BLACK}Kanna +STR_FUND_INDUSTRY_BUILD_NEW_INDUSTRY :{BLACK}Bygg +STR_FUND_INDUSTRY_FUND_NEW_INDUSTRY :{BLACK}Fíggja + +# Industry cargoes window +STR_INDUSTRY_CARGOES_INDUSTRY_CAPTION :{WHITE}Ídnaðar keta fyri {STRING} ídnað +STR_INDUSTRY_CARGOES_CARGO_CAPTION :{WHITE}Ídnaðar keta fyri {STRING} farm +STR_INDUSTRY_CARGOES_PRODUCERS :{WHITE}Framleiðandi ídnaðir +STR_INDUSTRY_CARGOES_CUSTOMERS :{WHITE}Móttakandi ídnaðir +STR_INDUSTRY_CARGOES_HOUSES :{WHITE}Hús +STR_INDUSTRY_CARGOES_INDUSTRY_TOOLTIP :{BLACK}Trýst á ídnaðin fyri at síggja veitarar og kundar +STR_INDUSTRY_CARGOES_CARGO_TOOLTIP :{BLACK}{STRING}{}Trýst á farmin fyri at síggja veitarar og kundar +STR_INDUSTRY_DISPLAY_CHAIN :{BLACK}Vís ketu +STR_INDUSTRY_DISPLAY_CHAIN_TOOLTIP :{BLACK}Vís farma veitandi og móttakandi ídnaðir +STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP :{BLACK}Leinkja til lítlakort +STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP_TOOLTIP :{BLACK}Vel vístu ídnaðir á lítlakorti eisini +STR_INDUSTRY_CARGOES_SELECT_CARGO :{BLACK}Vel farm +STR_INDUSTRY_CARGOES_SELECT_CARGO_TOOLTIP :{BLACK}Vel farmin tú vil vísa +STR_INDUSTRY_CARGOES_SELECT_INDUSTRY :{BLACK}Vel ídnað +STR_INDUSTRY_CARGOES_SELECT_INDUSTRY_TOOLTIP :{BLACK}Vel ídnaðin tú vil vísa + +# Land area window +STR_LAND_AREA_INFORMATION_CAPTION :{WHITE}Landslags økis kunning +STR_LAND_AREA_INFORMATION_COST_TO_CLEAR_N_A :{BLACK}Kostnaður at reinsa: {LTBLUE}N/A +STR_LAND_AREA_INFORMATION_COST_TO_CLEAR :{BLACK}Kostnaður at reinsa: {RED}{CURRENCY_LONG} +STR_LAND_AREA_INFORMATION_REVENUE_WHEN_CLEARED :{BLACK}Inntøka tá reinsa: {LTBLUE}{CURRENCY_LONG} +STR_LAND_AREA_INFORMATION_OWNER_N_A :N/A +STR_LAND_AREA_INFORMATION_OWNER :{BLACK}Eigari: {LTBLUE}{STRING} +STR_LAND_AREA_INFORMATION_ROAD_OWNER :{BLACK}Veg eigari: {LTBLUE}{STRING} +STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Sporvogns eigari: {LTBLUE}{STRING} +STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Jarnbreyta eigari: {LTBLUE}{STRING} +STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Mynduleikar á staðnum: {LTBLUE}{STRING} +STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Eingin +STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Koordinatar: {LTBLUE}{NUM} x {NUM} x {NUM} ({STRING}) +STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}Bygt: {LTBLUE}{DATE_LONG} +STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Støð klassi: {LTBLUE}{STRING} +STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Støð slag: {LTBLUE}{STRING} +STR_LAND_AREA_INFORMATION_AIRPORT_CLASS :{BLACK}Floghavna klassi: {LTBLUE}{STRING} +STR_LAND_AREA_INFORMATION_AIRPORT_NAME :{BLACK}Navn á floghavn: {LTBLUE}{STRING} +STR_LAND_AREA_INFORMATION_AIRPORTTILE_NAME :{BLACK}Navn á floghavna punti: {LTBLUE}{STRING} +STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: {LTBLUE}{STRING} +STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Farmur móttikin: {LTBLUE} +STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) +STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Jarnbreyta hámarksferð: {LTBLUE}{VELOCITY} + +# Description of land area of different tiles +STR_LAI_CLEAR_DESCRIPTION_ROCKS :Grót +STR_LAI_CLEAR_DESCRIPTION_ROUGH_LAND :Harðrent lendi +STR_LAI_CLEAR_DESCRIPTION_BARE_LAND :Bert lendi +STR_LAI_CLEAR_DESCRIPTION_GRASS :Gras +STR_LAI_CLEAR_DESCRIPTION_FIELDS :Markir +STR_LAI_CLEAR_DESCRIPTION_SNOW_COVERED_LAND :Kava-klætt lendi +STR_LAI_CLEAR_DESCRIPTION_DESERT :Oyðimørk + +STR_LAI_RAIL_DESCRIPTION_TRACK :{STRING} breyt +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_SIGNALS :{STRING} breyt við blokk teknum +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRESIGNALS :{STRING} breyt við for teknum +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXITSIGNALS :{STRING} breyt við útvegs teknum +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBOSIGNALS :{STRING} breyt við blandings teknum +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBSSIGNALS :{STRING} breyt við leið teknum +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NOENTRYSIGNALS :{STRING} breyt við einvegis leiðs teknum +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PRESIGNALS :{STRING} breyt við blokk og for teknum +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_EXITSIGNALS :{STRING} breyt við blokk og útvegs teknum +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_COMBOSIGNALS :{STRING} breyt við block og blandings teknum +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PBSSIGNALS :{STRING} breyt við blokk og leiðs teknum +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_NOENTRYSIGNALS :{STRING} breyt við blokk og einvegis leiðs teknum +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_EXITSIGNALS :{STRING} breyt við for og útvegis teknum +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_COMBOSIGNALS :{STRING} breyt við for og blandings teknum +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_PBSSIGNALS :{STRING} breyt við for og leiðs teknum +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_NOENTRYSIGNALS :{STRING} breyt við for og einvegis leiðs teknum +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_COMBOSIGNALS :{STRING} breyt við útvegs og blandings teknum +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_PBSSIGNALS :{STRING} breyt við útvegs og leiðs teknum +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_NOENTRYSIGNALS :{STRING} breyt við útvegs og einvegis leiðs teknum +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_PBSSIGNALS :{STRING} breyt við blandings og leiðs teknum +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_NOENTRYSIGNALS :{STRING} breyt við blandings og einvegis leiðs teknum +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBS_NOENTRYSIGNALS :{STRING} breyt við leiðs og einvegis leiðs teknum +STR_LAI_RAIL_DESCRIPTION_TRAIN_DEPOT :{STRING} Tok goymsla + +STR_LAI_ROAD_DESCRIPTION_ROAD :Vegur +STR_LAI_ROAD_DESCRIPTION_ROAD_WITH_STREETLIGHTS :Vegur við lyktapelum +STR_LAI_ROAD_DESCRIPTION_TREE_LINED_ROAD :Vegur við trøum +STR_LAI_ROAD_DESCRIPTION_ROAD_VEHICLE_DEPOT :Akfars goymsla +STR_LAI_ROAD_DESCRIPTION_ROAD_RAIL_LEVEL_CROSSING :Veg/jarnbreyt krossur +STR_LAI_ROAD_DESCRIPTION_TRAMWAY :Sporvogna breyt + +# Houses come directly from their building names +STR_LAI_TOWN_INDUSTRY_DESCRIPTION_UNDER_CONSTRUCTION :{STRING} (stendur í gerð) + +STR_LAI_TREE_NAME_TREES :Trø +STR_LAI_TREE_NAME_RAINFOREST :Frumskógur +STR_LAI_TREE_NAME_CACTUS_PLANTS :Kaktus plantir + +STR_LAI_STATION_DESCRIPTION_RAILROAD_STATION :Tok støð +STR_LAI_STATION_DESCRIPTION_AIRCRAFT_HANGAR :Flogfars hangarur +STR_LAI_STATION_DESCRIPTION_AIRPORT :Floghavn +STR_LAI_STATION_DESCRIPTION_TRUCK_LOADING_AREA :Lastbila lessi øki +STR_LAI_STATION_DESCRIPTION_BUS_STATION :Buss støð +STR_LAI_STATION_DESCRIPTION_SHIP_DOCK :Skips havn +STR_LAI_STATION_DESCRIPTION_BUOY :Boyja +STR_LAI_STATION_DESCRIPTION_WAYPOINT :Waypoint + +STR_LAI_WATER_DESCRIPTION_WATER :Vatn +STR_LAI_WATER_DESCRIPTION_CANAL :Siglingarrenna +STR_LAI_WATER_DESCRIPTION_LOCK :Slúsa +STR_LAI_WATER_DESCRIPTION_RIVER :Løkur +STR_LAI_WATER_DESCRIPTION_COAST_OR_RIVERBANK :Strond ella áarbakki +STR_LAI_WATER_DESCRIPTION_SHIP_DEPOT :Skips goymsla + +# Industries come directly from their industry names + +STR_LAI_TUNNEL_DESCRIPTION_RAILROAD :Jarnbreyta berghol +STR_LAI_TUNNEL_DESCRIPTION_ROAD :Vega berghol + +STR_LAI_BRIDGE_DESCRIPTION_RAIL_SUSPENSION_STEEL :Stál heingibrúgv +STR_LAI_BRIDGE_DESCRIPTION_RAIL_GIRDER_STEEL :Stál bjálkabrúgv +STR_LAI_BRIDGE_DESCRIPTION_RAIL_CANTILEVER_STEEL :Stál cantilever jarnbreyta brúgv +STR_LAI_BRIDGE_DESCRIPTION_RAIL_SUSPENSION_CONCRETE :Jarnbreyta heingibrúgv av styrktum betongi +STR_LAI_BRIDGE_DESCRIPTION_RAIL_WOODEN :Jarnbreyta brúgv av træ +STR_LAI_BRIDGE_DESCRIPTION_RAIL_CONCRETE :Jarnbreyta brúgv av betong +STR_LAI_BRIDGE_DESCRIPTION_RAIL_TUBULAR_STEEL :Jarnbreyta rør brúgv + +STR_LAI_BRIDGE_DESCRIPTION_ROAD_SUSPENSION_STEEL :Veg heingibrúgv av stáli +STR_LAI_BRIDGE_DESCRIPTION_ROAD_GIRDER_STEEL :Veg bjálkabrúgv av stáli +STR_LAI_BRIDGE_DESCRIPTION_ROAD_CANTILEVER_STEEL :Veg cantilever brúgv av stáli +STR_LAI_BRIDGE_DESCRIPTION_ROAD_SUSPENSION_CONCRETE :Veg heingibrúgv av styrktum betongi +STR_LAI_BRIDGE_DESCRIPTION_ROAD_WOODEN :Vega brúgv av træ +STR_LAI_BRIDGE_DESCRIPTION_ROAD_CONCRETE :Veg brúgv av betongi +STR_LAI_BRIDGE_DESCRIPTION_ROAD_TUBULAR_STEEL :Veg rør brúgv + +STR_LAI_BRIDGE_DESCRIPTION_AQUEDUCT :Akvedukt + +STR_LAI_OBJECT_DESCRIPTION_TRANSMITTER :Sendari +STR_LAI_OBJECT_DESCRIPTION_LIGHTHOUSE :Viti +STR_LAI_OBJECT_DESCRIPTION_COMPANY_HEADQUARTERS :Fyritøku høvuðsborg +STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Ogn hjá fyritøku + +# About OpenTTD window +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-2014 OpenTTD toymi + +# Save/load game/scenario +STR_SAVELOAD_SAVE_CAPTION :{WHITE}Goym spæl +STR_SAVELOAD_LOAD_CAPTION :{WHITE}Heinta spæl +STR_SAVELOAD_SAVE_SCENARIO :{WHITE}Goym tilburð +STR_SAVELOAD_LOAD_SCENARIO :{WHITE}Heinta tilburð +STR_SAVELOAD_LOAD_HEIGHTMAP :{WHITE}Heinta hæddarkort +STR_SAVELOAD_SAVE_HEIGHTMAP :{WHITE}Goym hæddarkort +STR_SAVELOAD_HOME_BUTTON :{BLACK}Trýst her fyri at leypa til verðandi vanligu goym/heinta fíluskránna +STR_SAVELOAD_BYTES_FREE :{BLACK}{BYTES} frí +STR_SAVELOAD_LIST_TOOLTIP :{BLACK}Listi yvir driv, fíluskráðir og goymt-spæl fílur +STR_SAVELOAD_EDITBOX_TOOLTIP :{BLACK}Núverðandi valda navn á goymdum spæli +STR_SAVELOAD_DELETE_BUTTON :{BLACK}Strika +STR_SAVELOAD_DELETE_TOOLTIP :{BLACK}Strika núverðandi valda goymda spæli +STR_SAVELOAD_SAVE_BUTTON :{BLACK}Goym +STR_SAVELOAD_SAVE_TOOLTIP :{BLACK}Goym núverðandi spæl við tí valda navninum +STR_SAVELOAD_LOAD_BUTTON :{BLACK}Heinta +STR_SAVELOAD_LOAD_TOOLTIP :{BLACK}Heinta valda spæli +STR_SAVELOAD_DETAIL_CAPTION :{BLACK}Spæli smálutir +STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}Eingin kunning tøk +STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING} +STR_SAVELOAD_DETAIL_GRFSTATUS :{SILVER}NewGRF: {WHITE}{STRING} + +STR_SAVELOAD_OSKTITLE :{BLACK}Skriva eitt navn fyri goymda spæli + +# World generation +STR_MAPGEN_WORLD_GENERATION_CAPTION :{WHITE}Heims framleiðsla +STR_MAPGEN_MAPSIZE :{BLACK}Stødd á korti: +STR_MAPGEN_MAPSIZE_TOOLTIP :{BLACK}Vel stødd av korti í puntum. Talið av tøkum puntum verur eitt sindur minni +STR_MAPGEN_BY :{BLACK}* +STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Nr. av bygdum: +STR_MAPGEN_DATE :{BLACK}Dato: +STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Nr. av ídnaðum: +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_LAND_GENERATOR :{BLACK}Lendis framleiðari: +STR_MAPGEN_TREE_PLACER :{BLACK}Træ algoritma: +STR_MAPGEN_TERRAIN_TYPE :{BLACK}Slag av lendi: +STR_MAPGEN_QUANTITY_OF_SEA_LAKES :{BLACK}Sjóvarmáli: +STR_MAPGEN_QUANTITY_OF_RIVERS :{BLACK}Løkar: +STR_MAPGEN_SMOOTHNESS :{BLACK}Mjúkleiki: +STR_MAPGEN_VARIETY :{BLACK}Fjølbroytnis útluting: +STR_MAPGEN_GENERATE :{WHITE}Framleið + +# Strings for map borders at game generation +STR_MAPGEN_BORDER_TYPE :{BLACK}Kort eggir: +STR_MAPGEN_NORTHWEST :{BLACK}Útnyrðingur +STR_MAPGEN_NORTHEAST :{BLACK}Landnyrðingur +STR_MAPGEN_SOUTHEAST :{BLACK}Landsynningur +STR_MAPGEN_SOUTHWEST :{BLACK}Útsynningur +STR_MAPGEN_BORDER_FREEFORM :{BLACK}Freeform +STR_MAPGEN_BORDER_WATER :{BLACK}Vatn +STR_MAPGEN_BORDER_RANDOM :{BLACK}Tilvildarligt +STR_MAPGEN_BORDER_RANDOMIZE :{BLACK}Tilvildarligt +STR_MAPGEN_BORDER_MANUAL :{BLACK}Manuelt + +STR_MAPGEN_HEIGHTMAP_ROTATION :{BLACK}Snarðing av hæddarkorti: +STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Navn á hæddarkorti: +STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Stødd: +STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} * {NUM} + +STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Broyt hædd á kava linju +STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Broyt byrjunar ár + +# SE Map generation +STR_SE_MAPGEN_CAPTION :{WHITE}Slag av tilburði +STR_SE_MAPGEN_FLAT_WORLD :{WHITE}Flatt lendi +STR_SE_MAPGEN_FLAT_WORLD_TOOLTIP :{BLACK}Framleið eitt flatt lendi +STR_SE_MAPGEN_RANDOM_LAND :{WHITE}Tilvildarligt lendi +STR_SE_MAPGEN_FLAT_WORLD_HEIGHT :{BLACK}Hædd á flatt lendi: +STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_DOWN :{BLACK}Flyt hæddina á flatt lendi eitt niður +STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_UP :{BLACK}Flyt hæddina á flatt lendi eitt upp + +STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_QUERY_CAPT :{WHITE}Broyt hæddina á flatt lendi + +# Map generation progress +STR_GENERATION_WORLD :{WHITE}Framleiðir heim... +STR_GENERATION_ABORT :{BLACK}Avbrót +STR_GENERATION_ABORT_CAPTION :{WHITE}Avbrót framleiðslu av heimi +STR_GENERATION_ABORT_MESSAGE :{YELLOW}Vil tú verðuliga avbróta framleiðsluna? +STR_GENERATION_PROGRESS :{WHITE}{NUM}% liðugt +STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / {NUM} +STR_GENERATION_WORLD_GENERATION :{BLACK}Heims framleiðsla +STR_GENERATION_RIVER_GENERATION :{BLACK}Løks framleiðsla +STR_GENERATION_TREE_GENERATION :{BLACK}Træ framleiðsla +STR_GENERATION_OBJECT_GENERATION :{BLACK}Luta framleiðsla +STR_GENERATION_CLEARING_TILES :{BLACK}Framleiðsa av harrendum og grýtutum øki +STR_GENERATION_SETTINGUP_GAME :{BLACK}Ger spæli klárt +STR_GENERATION_PREPARING_TILELOOP :{BLACK}Koyrir punta sloyfu +STR_GENERATION_PREPARING_SCRIPT :{BLACK}Koyrir skript +STR_GENERATION_PREPARING_GAME :{BLACK}Fyrireikar spæl + +# NewGRF settings +STR_NEWGRF_SETTINGS_CAPTION :{WHITE}NewGRF Innstillingar +STR_NEWGRF_SETTINGS_INFO_TITLE :{WHITE}Víðka NewGRF kunning +STR_NEWGRF_SETTINGS_ACTIVE_LIST :{WHITE}Virknir NewGRF fílar +STR_NEWGRF_SETTINGS_INACTIVE_LIST :{WHITE}Ikki virknir NewGRF fílar +STR_NEWGRF_SETTINGS_SELECT_PRESET :{ORANGE}Vel preset: +STR_NEWGRF_FILTER_TITLE :{ORANGE}Filtur strongur: +STR_NEWGRF_SETTINGS_PRESET_LIST_TOOLTIP :{BLACK}Heinta valda preset +STR_NEWGRF_SETTINGS_PRESET_SAVE :{BLACK}Goym preset +STR_NEWGRF_SETTINGS_PRESET_SAVE_TOOLTIP :{BLACK}Goym núverðandi lista sum eitt preset +STR_NEWGRF_SETTINGS_PRESET_SAVE_QUERY :{BLACK}Skriva eitt navn fyri preset +STR_NEWGRF_SETTINGS_PRESET_DELETE :{BLACK}Strika preset +STR_NEWGRF_SETTINGS_PRESET_DELETE_TOOLTIP :{BLACK}Strika núverðandi valda preset +STR_NEWGRF_SETTINGS_ADD :{BLACK}Legg til +STR_NEWGRF_SETTINGS_ADD_FILE_TOOLTIP :{BLACK}Legg ta valdu NewGRF fíluna til tína uppseting +STR_NEWGRF_SETTINGS_RESCAN_FILES :{BLACK}Endurskanna fílar +STR_NEWGRF_SETTINGS_RESCAN_FILES_TOOLTIP :{BLACK}Dagfør listan yvir tøkar NewGRF fílar +STR_NEWGRF_SETTINGS_REMOVE :{BLACK}Flyt burtur +STR_NEWGRF_SETTINGS_REMOVE_TOOLTIP :{BLACK}Bein tann valda NewGRF fílin burtur av listanum +STR_NEWGRF_SETTINGS_MOVEUP :{BLACK}Flyt upp +STR_NEWGRF_SETTINGS_MOVEUP_TOOLTIP :{BLACK}Flyt tann valda NewGRF fílin upp í listanum +STR_NEWGRF_SETTINGS_MOVEDOWN :{BLACK}Flyt niður +STR_NEWGRF_SETTINGS_MOVEDOWN_TOOLTIP :{BLACK}Flyt tann valda NewGRF fílin niður í listanum +STR_NEWGRF_SETTINGS_FILE_TOOLTIP :{BLACK}Ein listi yvir NewGRF fílur ið eru installeraðar + +STR_NEWGRF_SETTINGS_SET_PARAMETERS :{BLACK}Áset parametur +STR_NEWGRF_SETTINGS_SHOW_PARAMETERS :{BLACK}Vís parametur +STR_NEWGRF_SETTINGS_TOGGLE_PALETTE :{BLACK}Tendra/sløkk litaval +STR_NEWGRF_SETTINGS_APPLY_CHANGES :{BLACK}Set broytingar í gildi + +STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_BUTTON :{BLACK}Finn vantandi tilfar á alnótini +STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_TOOLTIP :{BLACK}Kanna um vantandi tilfari kann finnast á alnótini + +STR_NEWGRF_SETTINGS_FILENAME :{BLACK}Fílunavn: {SILVER}{STRING} +STR_NEWGRF_SETTINGS_GRF_ID :{BLACK}GRF ID: {SILVER}{STRING} +STR_NEWGRF_SETTINGS_VERSION :{BLACK}Útgáva: {SILVER}{NUM} +STR_NEWGRF_SETTINGS_MIN_VERSION :{BLACK}Min. samsvarandi útgáva: {SILVER}{NUM} +STR_NEWGRF_SETTINGS_MD5SUM :{BLACK}MD5sum: {SILVER}{STRING} +STR_NEWGRF_SETTINGS_PALETTE :{BLACK}Litaval: {SILVER}{STRING} +STR_NEWGRF_SETTINGS_PARAMETER :{BLACK}Parametur: {SILVER}{STRING} + +STR_NEWGRF_SETTINGS_NO_INFO :{BLACK}Eingin kunning tøk +STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}Samsvarandi fíla ikki funnin +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 +STR_NEWGRF_PARAMETERS_RESET :{BLACK}Endustilla +STR_NEWGRF_PARAMETERS_RESET_TOOLTIP :{BLACK}Áset øll parametur til teirra vanligu virði +STR_NEWGRF_PARAMETERS_DEFAULT_NAME :Parametur {NUM} +STR_NEWGRF_PARAMETERS_SETTING :{STRING}: {ORANGE}{STRING} +STR_NEWGRF_PARAMETERS_NUM_PARAM :{LTBLUE}Tal av parametrum: {ORANGE}{NUM} + +# NewGRF inspect window +STR_NEWGRF_INSPECT_CAPTION :{WHITE}Kanna - {STRING} +STR_NEWGRF_INSPECT_PARENT_BUTTON :{BLACK}Uppruni +STR_NEWGRF_INSPECT_PARENT_TOOLTIP :{BLACK}Kanna lutin hjá upphavi + +STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT :{STRING} við {HEX} +STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_OBJECT :Lutur +STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :Breyta slag + +STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGRF variable 60+x parameter (hexadecimal) + +# Sprite aligner window +STR_SPRITE_ALIGNER_CAPTION :{WHITE}Aligning sprite {COMMA} ({STRING}) +STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Next sprite + + +# NewGRF (self) generated warnings/errors +STR_NEWGRF_ERROR_MSG_INFO :{SILVER}{STRING} + +# NewGRF related 'general' warnings + +STR_NEWGRF_TOO_MANY_NEWGRFS :{WHITE}Kann ikki leggja fílu aftrat: NewGRF fílu mark rokki + + +# NewGRF status + +# NewGRF 'it's broken' warnings +STR_BROKEN_VEHICLE_LENGTH :{WHITE}Tok '{VEHICLE}' hjá '{COMPANY}' hevur ógildiga longd. Hetta er helst orsaka av trupulleikum við NewGRF. Spæli kann desyncast ella krasja + +STR_NEWGRF_BUGGY :{WHITE}NewGRF '{0:STRING}' gevur skeivar upplýsiningar +STR_NEWGRF_BUGGY_ARTICULATED_CARGO :{WHITE}Farma/umbygg kunning fyri '{1:ENGINE}' víkjir frá keyps listanum eftir ta er bygt. Hetta kann elva til at sjálvendurnýggjan/-umbýting ikki virkar rætt +STR_NEWGRF_BUGGY_ENDLESS_PRODUCTION_CALLBACK :{WHITE}'{1:STRING}' elvdi til eina endaleysa sloyfu í framleiðslu endurkallinum +STR_NEWGRF_BUGGY_UNKNOWN_CALLBACK_RESULT :{WHITE}Endurkall{1:HEX} kom aftur við ókendum/ógildigum úrsliti {2:HEX} + +# 'User removed essential NewGRFs'-placeholders for stuff without specs +STR_NEWGRF_INVALID_CARGO :<ógildigur farmur> +STR_NEWGRF_INVALID_CARGO_ABBREV :?? +STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} av <ógildigum farmi> +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... +STR_NEWGRF_SCAN_STATUS :{BLACK}{NUM} NewGRF{P "" s} skannað{P ur ir} út av meting á {NUM} NewGRF{P "" s} +STR_NEWGRF_SCAN_ARCHIVES :Skannar eftir skjalagoymslum + +# Sign list window +STR_SIGN_LIST_CAPTION :{WHITE}Skelta yvirlit - {COMMA} Skelt{P i ir} +STR_SIGN_LIST_MATCH_CASE :{BLACK}Samsvara stødd á bókstavum +STR_SIGN_LIST_MATCH_CASE_TOOLTIP :{BLACK}Tendra/sløkk samsvar millum stødd á bókstavum tá tú samanberður skelta nøvn við filtur streingin + +# Sign window +STR_EDIT_SIGN_CAPTION :{WHITE}Broy skelta tekst +STR_EDIT_SIGN_NEXT_SIGN_TOOLTIP :{BLACK}Far til næsta skelti +STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK}Far til fyrra skelti + +STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}Skriva eitt navn fyri skelti + +# Town directory window +STR_TOWN_DIRECTORY_CAPTION :{WHITE}Bygdir +STR_TOWN_DIRECTORY_NONE :{ORANGE}- Ongar - +STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA}) +STR_TOWN_DIRECTORY_LIST_TOOLTIP :{BLACK}Bygda nøvn - trýst á eitt navn fyri at savna høvuðs sýni á bygdina. Ctrl+trýst letur upp ein nýggjan sýnisglugga á bygdina +STR_TOWN_POPULATION :{BLACK}Heims fólkatal: {COMMA} + +# Town view window +STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN} +STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} (Býur) +STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}Fólkatal: {ORANGE}{COMMA}{BLACK} Hús: {ORANGE}{COMMA} +STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}Ferðafólk síðsta mánað: {ORANGE}{COMMA}{BLACK} maks: {ORANGE}{COMMA} +STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}Postur síðsta mánað: {ORANGE}{COMMA}{BLACK} maks: {ORANGE}{COMMA} +STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}Farmur ið tørvast fyri bygda menning: +STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{ORANGE}{STRING}{RED} krevst +STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} krevst um veturin +STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED_GENERAL :{ORANGE}{STRING}{GREEN} útflýggja +STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{RED} (krevst enn) +STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{GREEN} (útflýggja) +STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}Bygdin vaksur hvønn {ORANGE}{COMMA}{BLACK} dag +STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}Bygdin vaksur hvønn {ORANGE}{COMMA}{BLACK} dag (fíggja) +STR_TOWN_VIEW_TOWN_GROW_STOPPED :{BLACK}Bygdin {BLACK}vaksur {RED}ikki +STR_TOWN_VIEW_NOISE_IN_TOWN :{BLACK}Óljóðs mark í bygd: {ORANGE}{COMMA}{BLACK} maks: {ORANGE}{COMMA} +STR_TOWN_VIEW_CENTER_TOOLTIP :{BLACK}Savna høvuðs sýni á bygdina. Ctrl+trýst letur nýggjan sýnisglugga upp við sýni á bygdina +STR_TOWN_VIEW_LOCAL_AUTHORITY_BUTTON :{BLACK}Mynduleiki á staðnum +STR_TOWN_VIEW_LOCAL_AUTHORITY_TOOLTIP :{BLACK}Vís kunning um mynduleika á staðnum +STR_TOWN_VIEW_RENAME_TOOLTIP :{BLACK}Broyt bygda navn + +STR_TOWN_VIEW_EXPAND_BUTTON :{BLACK}Víðka +STR_TOWN_VIEW_EXPAND_TOOLTIP :{BLACK}Vaks um støddina á bygdini +STR_TOWN_VIEW_DELETE_BUTTON :{BLACK}Strika +STR_TOWN_VIEW_DELETE_TOOLTIP :{BLACK}Strika hesa bygdina fullkomiliga + +STR_TOWN_VIEW_RENAME_TOWN_BUTTON :Navngev bygd + +# Town local authority window +STR_LOCAL_AUTHORITY_CAPTION :{WHITE}{TOWN} Mynduleiki á staðnum +STR_LOCAL_AUTHORITY_COMPANY_RATINGS :{BLACK}Metingar av flutnings fyritøku: +STR_LOCAL_AUTHORITY_COMPANY_RATING :{YELLOW}{COMPANY} {COMPANY_NUM}: {ORANGE}{STRING} +STR_LOCAL_AUTHORITY_ACTIONS_TITLE :{BLACK}Gerðir tøkar: +STR_LOCAL_AUTHORITY_ACTIONS_TOOLTIP :{BLACK}Listi yvir ting tú kann gera í hesi bygdini - trýst á punkt fyri smálutir +STR_LOCAL_AUTHORITY_DO_IT_BUTTON :{BLACK}Ger ta +STR_LOCAL_AUTHORITY_DO_IT_TOOLTIP :{BLACK}Før út í lívi undirstrikaðu gerðina í listanum omanfyri + +STR_LOCAL_AUTHORITY_ACTION_SMALL_ADVERTISING_CAMPAIGN :Lítl lýsinga herferð +STR_LOCAL_AUTHORITY_ACTION_MEDIUM_ADVERTISING_CAMPAIGN :Miðal lýsinga herferð +STR_LOCAL_AUTHORITY_ACTION_LARGE_ADVERTISING_CAMPAIGN :Stór lýsinga herferð +STR_LOCAL_AUTHORITY_ACTION_ROAD_RECONSTRUCTION :Fíggja vega endurbygging á staðnum +STR_LOCAL_AUTHORITY_ACTION_STATUE_OF_COMPANY :Reis eina standmynd av fyritøku eigaranum +STR_LOCAL_AUTHORITY_ACTION_NEW_BUILDINGS :Fíggja nýggjar bygningar +STR_LOCAL_AUTHORITY_ACTION_EXCLUSIVE_TRANSPORT :Keyp einkarættindi til flutning +STR_LOCAL_AUTHORITY_ACTION_BRIBE :Mutra mynduleikarnar á staðnum + +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_SMALL_ADVERTISING :{YELLOW}Set í gongd eina lítla lýsinga herferð á staðnum, til tess at draga meira ferðafólk og farm til tínar flutnings tænastur.{}Kostnaður: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_MEDIUM_ADVERTISING :{YELLOW}Set í gongd eina miðal lýsinga herferð á staðnum, til tess at draga meira ferðafólk og farm til tínar flutnings tænastur.{}Kostnaður: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_LARGE_ADVERTISING :{YELLOW}Set í gongd eina stóra lýsinga herferð á staðnum, til tess at draga meira ferðafólk og farm til tínar flutnings tænastur.{}Kostnaður: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_ROAD_RECONSTRUCTION :{YELLOW}Fíggja endurbyggjingina av vegakervinum á staðnum. Førir við sær munandi órógv fyri ferðsluna í upp til 6 mánaðar.{}Kostnaður: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_STATUE_OF_COMPANY :{YELLOW}Reis eina standmynd til æru fyri tína fyritøku.{}Kostnaður: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_NEW_BUILDINGS :{YELLOW}Fíggja byggingina av nýggjum handils bygningum í bygdini.{}Kostnaður: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT :{YELLOW}Keyp 1 ár av flutnings einkarættindum í bygdini. Bygda mynduleikin loyvir ferðafólki og farmi bert at nýta støðir hjá tínari fyritøku.{}Kostnaður: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}Mutra mynduleikan á staðnum fyri at økju um tína meting, við vanda fyri hvassari revsing um tað verður avdúka.{}Kostnaður: {CURRENCY_LONG} + +# Goal window +STR_GOALS_GLOBAL_TITLE :{BLACK}Heimsfevnandi mál: +STR_GOALS_TEXT :{ORANGE}{STRING} +STR_GOALS_NONE :{ORANGE}- Einki - +STR_GOALS_COMPANY_TITLE :{BLACK}Fyritøku mál: +STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Trýst á mál fyri at savna høvuðs sýni á ídnað/bygd/punt. Ctrl+trýst letur upp nýggjan sýnisglugga á ídnað/bygd/punt + +# Goal question window +STR_GOAL_QUESTION_CAPTION_QUESTION :Spurningur +STR_GOAL_QUESTION_CAPTION_INFORMATION :Kunning +STR_GOAL_QUESTION_CAPTION_WARNING :Ávaring +STR_GOAL_QUESTION_CAPTION_ERROR :Villa + +### Start of Goal Question button list +STR_GOAL_QUESTION_BUTTON_CANCEL :Angra +STR_GOAL_QUESTION_BUTTON_OK :OK +STR_GOAL_QUESTION_BUTTON_NO :Nei +STR_GOAL_QUESTION_BUTTON_YES :Ja +STR_GOAL_QUESTION_BUTTON_DECLINE :Nokta +STR_GOAL_QUESTION_BUTTON_ACCEPT :Góðtak +STR_GOAL_QUESTION_BUTTON_IGNORE :Ignorera +STR_GOAL_QUESTION_BUTTON_RETRY :Royn aftur +STR_GOAL_QUESTION_BUTTON_PREVIOUS :Fyrra +STR_GOAL_QUESTION_BUTTON_NEXT :Næsta +STR_GOAL_QUESTION_BUTTON_STOP :Steðga +STR_GOAL_QUESTION_BUTTON_START :Byrja +STR_GOAL_QUESTION_BUTTON_GO :Far +STR_GOAL_QUESTION_BUTTON_CONTINUE :Halt á fram +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 + +# Subsidies window +STR_SUBSIDIES_CAPTION :{WHITE}Stuðulsflutningur +STR_SUBSIDIES_OFFERED_TITLE :{BLACK}Stuðulsflutningur í boði fyri tænastur ið flyta: +STR_SUBSIDIES_OFFERED_FROM_TO :{ORANGE}{STRING} frá {STRING} til {STRING}{YELLOW} (áðrenn {DATE_SHORT}) +STR_SUBSIDIES_NONE :{ORANGE}- Einki - +STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}Flutningur ið longu fær stuðul: +STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING} frá {STRING} til {STRING}{YELLOW} ({COMPANY}{YELLOW}, inntil {DATE_SHORT}) +STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Trýst á eina tænastu fyri at savna høvuðs sýni á ídnaðin/bygdina. Ctrl+trýst letur upp ein nýggjan sýnisglugga á ídnaðin/bygdina + +# Story book window + +# Station list window +STR_STATION_LIST_TOOLTIP :{BLACK}Nøvn á støðum - trýst á eitt navn fyri at savna høvuðs sýni á støðina. Ctrl+trýst letur upp ein nýggjan sýnisglugga á støðina +STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}Halt Ctrl fyri at velja meira enn eitt punkt +STR_STATION_LIST_CAPTION :{WHITE}{COMPANY} - {COMMA} Støð{P "" ir} +STR_STATION_LIST_STATION :{YELLOW}{STATION} {STATION_FEATURES} +STR_STATION_LIST_WAYPOINT :{YELLOW}{WAYPOINT} +STR_STATION_LIST_NONE :{YELLOW}- Eingin - +STR_STATION_LIST_SELECT_ALL_FACILITIES :{BLACK}Vel allar hentleikar +STR_STATION_LIST_SELECT_ALL_TYPES :{BLACK}Vel øll farma sløg (íroknað farm ið ikki bíðar) +STR_STATION_LIST_NO_WAITING_CARGO :{BLACK}Eingin frakt av nøkrum slag bíðar + +# 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} frá {STATION}) +STR_STATION_VIEW_RESERVED :{YELLOW}({CARGO_SHORT} umbiði til lessing) + +STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Tekur í móti +STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Vís lista yvir góðtiknan farm +STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}Tekur í móti: {WHITE}{CARGO_LIST} + +STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Henda støðin hevur flutnings einkarættindi í hesari bygdini. +STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} keypti flutnings einkarættindi í hesi bygdini. + +STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Metingar +STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Vís støð metingar + + + +############ range for rating starts +STR_CARGO_RATING_APPALLING :Ræðuligt +STR_CARGO_RATING_VERY_POOR :Sera vánaligt +STR_CARGO_RATING_POOR :Vánaligt +STR_CARGO_RATING_MEDIOCRE :Hampuligt +STR_CARGO_RATING_GOOD :Gott +STR_CARGO_RATING_VERY_GOOD :Sera gott +STR_CARGO_RATING_EXCELLENT :Framúrskarandi +STR_CARGO_RATING_OUTSTANDING :Avberða gott +############ range for rating ends + +STR_STATION_VIEW_CENTER_TOOLTIP :{BLACK}Savna høvuðs sýni á støðina. Ctrl+trýst letur nýggjan sýnisglugga upp við sýni á støðina +STR_STATION_VIEW_RENAME_TOOLTIP :{BLACK}Broyt navn á støð + +STR_STATION_VIEW_SCHEDULED_TRAINS_TOOLTIP :{BLACK}Vís øll tok ið hava hesa støðina í teirra skrá +STR_STATION_VIEW_SCHEDULED_ROAD_VEHICLES_TOOLTIP :{BLACK}Vís øll akfør ið hava hesa støðina í teirra skrá +STR_STATION_VIEW_SCHEDULED_AIRCRAFT_TOOLTIP :{BLACK}Vís øll flogfør ið hava hesa støðina í teirra skrá +STR_STATION_VIEW_SCHEDULED_SHIPS_TOOLTIP :{BLACK}Vís øll skip ið hava hesa støðina í teirra skrá + +STR_STATION_VIEW_RENAME_STATION_CAPTION :Navngev støð/lessingar øki + +STR_STATION_VIEW_CLOSE_AIRPORT :{BLACK}Stong floghavn +STR_STATION_VIEW_CLOSE_AIRPORT_TOOLTIP :{BLACK}Forða flogførum í at lenda í hesari floghavnini + +# Waypoint/buoy view window +STR_WAYPOINT_VIEW_CAPTION :{WHITE}{WAYPOINT} +STR_WAYPOINT_VIEW_CENTER_TOOLTIP :{BLACK}Savna høvuðs sýni á waypoint. Ctrl+trýst letur nýggjan sýnisglugga upp við sýni á waypoint +STR_WAYPOINT_VIEW_CHANGE_WAYPOINT_NAME :{BLACK}Broyt navn á waypoint +STR_BUOY_VIEW_CENTER_TOOLTIP :{BLACK}Savna høvuðs sýni á boyjuna. Ctrl+trýst letur nýggjan sýnisglugga upp á boyjuna +STR_BUOY_VIEW_CHANGE_BUOY_NAME :{BLACK}Broyt navn á boyju + +STR_EDIT_WAYPOINT_NAME :{WHITE}Rætta waypoint navn + +# Finances window +STR_FINANCES_CAPTION :{WHITE}{COMPANY} Fíggjar støða {BLACK}{COMPANY_NUM} +STR_FINANCES_EXPENDITURE_INCOME_TITLE :{WHITE}Útreiðslur/Inntøkur +STR_FINANCES_YEAR :{WHITE}{NUM} +STR_FINANCES_SECTION_CONSTRUCTION :{GOLD}Bygging +STR_FINANCES_SECTION_NEW_VEHICLES :{GOLD}Nýggj flutningstól +STR_FINANCES_SECTION_TRAIN_RUNNING_COSTS :{GOLD}Tok rakstrar kostnaður +STR_FINANCES_SECTION_ROAD_VEHICLE_RUNNING_COSTS :{GOLD}Akfars rakstrar kostnaður +STR_FINANCES_SECTION_AIRCRAFT_RUNNING_COSTS :{GOLD}Flogfars rakstrar kostnaður +STR_FINANCES_SECTION_SHIP_RUNNING_COSTS :{GOLD}Skips rakstrar kostnaður +STR_FINANCES_SECTION_PROPERTY_MAINTENANCE :{GOLD}Ognar viðlíkahald +STR_FINANCES_SECTION_TRAIN_INCOME :{GOLD}Tok inntøka +STR_FINANCES_SECTION_ROAD_VEHICLE_INCOME :{GOLD}Akfars inntøka +STR_FINANCES_SECTION_AIRCRAFT_INCOME :{GOLD}Flogfars inntøka +STR_FINANCES_SECTION_SHIP_INCOME :{GOLD}Skips inntøka +STR_FINANCES_SECTION_LOAN_INTEREST :{GOLD}Láns renta +STR_FINANCES_SECTION_OTHER :{GOLD}Annað +STR_FINANCES_NEGATIVE_INCOME :{BLACK}-{CURRENCY_LONG} +STR_FINANCES_POSITIVE_INCOME :{BLACK}+{CURRENCY_LONG} +STR_FINANCES_TOTAL_CAPTION :{WHITE}Í alt: +STR_FINANCES_BANK_BALANCE_TITLE :{WHITE}Peningur á bók +STR_FINANCES_LOAN_TITLE :{WHITE}Lán +STR_FINANCES_MAX_LOAN :{WHITE}Maks Lán: {BLACK}{CURRENCY_LONG} +STR_FINANCES_TOTAL_CURRENCY :{BLACK}{CURRENCY_LONG} +STR_FINANCES_BORROW_BUTTON :{BLACK}Lán {CURRENCY_LONG} +STR_FINANCES_BORROW_TOOLTIP :{BLACK}Ger láni størri. Ctrl+trýst lánir so nógv sum møguligt +STR_FINANCES_REPAY_BUTTON :{BLACK}Rinda aftur {CURRENCY_LONG} +STR_FINANCES_REPAY_TOOLTIP :{BLACK}Rinda aftur part av láni. Ctrl+trýst rindar aftur so nógv sum møguligt +STR_FINANCES_INFRASTRUCTURE_BUTTON :{BLACK}Innankervi + +# Company view +STR_COMPANY_VIEW_CAPTION :{WHITE}{COMPANY} {BLACK}{COMPANY_NUM} +STR_COMPANY_VIEW_PRESIDENT_MANAGER_TITLE :{WHITE}{PRESIDENT_NAME}{}{GOLD}(Leiðari) + +STR_COMPANY_VIEW_INAUGURATED_TITLE :{GOLD}Stovnað: {WHITE}{NUM} +STR_COMPANY_VIEW_COLOUR_SCHEME_TITLE :{GOLD}Lit samanseting: +STR_COMPANY_VIEW_VEHICLES_TITLE :{GOLD}Flutningstól: +STR_COMPANY_VIEW_TRAINS :{WHITE}{COMMA} tok +STR_COMPANY_VIEW_ROAD_VEHICLES :{WHITE}{COMMA} akf{P ar ør} +STR_COMPANY_VIEW_AIRCRAFT :{WHITE}{COMMA} flogf{P ar ør} +STR_COMPANY_VIEW_SHIPS :{WHITE}{COMMA} skip +STR_COMPANY_VIEW_VEHICLES_NONE :{WHITE}Einki +STR_COMPANY_VIEW_COMPANY_VALUE :{GOLD}Virði á fyritøku: {WHITE}{CURRENCY_LONG} +STR_COMPANY_VIEW_SHARES_OWNED_BY :{WHITE}({COMMA}% ogn hjá {COMPANY}) +STR_COMPANY_VIEW_INFRASTRUCTURE :{GOLD}Innankervi: +STR_COMPANY_VIEW_INFRASTRUCTURE_RAIL :{WHITE}{COMMA} jarnbreyta pett{P i ir} +STR_COMPANY_VIEW_INFRASTRUCTURE_ROAD :{WHITE}{COMMA} vega pett{P i ir} +STR_COMPANY_VIEW_INFRASTRUCTURE_WATER :{WHITE}{COMMA} vatn punt{P "" ar} +STR_COMPANY_VIEW_INFRASTRUCTURE_STATION :{WHITE}{COMMA} støð punt{P "" ar} +STR_COMPANY_VIEW_INFRASTRUCTURE_AIRPORT :{WHITE}{COMMA} floghavn{P "" ir} +STR_COMPANY_VIEW_INFRASTRUCTURE_NONE :{WHITE}Einki + +STR_COMPANY_VIEW_BUILD_HQ_BUTTON :{BLACK}Bygg HB +STR_COMPANY_VIEW_BUILD_HQ_TOOLTIP :{BLACK}Bygg høvuðsborg hjá fyritøku +STR_COMPANY_VIEW_VIEW_HQ_BUTTON :{BLACK}Sjá HB +STR_COMPANY_VIEW_VIEW_HQ_TOOLTIP :{BLACK}Sjá høvuðsborg hjá fyritøku +STR_COMPANY_VIEW_RELOCATE_HQ :{BLACK}Flyt HB +STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Endurbygg fyritøku høvuðsborg aðrastaðni fyri 1% av virðinum á fyritøkuni. Shift+trýst vísur kostnaðar meting uttan at flyta høvuðsborgina +STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}Smálutir +STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}Sjá innankervi í smálutum + +STR_COMPANY_VIEW_NEW_FACE_BUTTON :{BLACK}Nýtt andlit +STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}Vel eitt nýtt andlit til leiðaran +STR_COMPANY_VIEW_COLOUR_SCHEME_BUTTON :{BLACK}Lit samanseting +STR_COMPANY_VIEW_COLOUR_SCHEME_TOOLTIP :{BLACK}Broyt eyðkennislitinar hjá fyritøkuni +STR_COMPANY_VIEW_COMPANY_NAME_BUTTON :{BLACK}Fyritøku navn +STR_COMPANY_VIEW_COMPANY_NAME_TOOLTIP :{BLACK}Broyt navni á fyritøkuni +STR_COMPANY_VIEW_PRESIDENT_NAME_BUTTON :{BLACK}Leiðara navn +STR_COMPANY_VIEW_PRESIDENT_NAME_TOOLTIP :{BLACK}Broyt navni á leiðaranum + +STR_COMPANY_VIEW_BUY_SHARE_BUTTON :{BLACK}Keyp 25% partabrøv í fyritøkuni +STR_COMPANY_VIEW_SELL_SHARE_BUTTON :{BLACK}Sel 25% partabrøv í fyritøkuni +STR_COMPANY_VIEW_BUY_SHARE_TOOLTIP :{BLACK}Keyp 25% partabrøv í hesi fyritøkuni. Shift+trýst vísir kostnaðar meting uttan at keypa nakað partabræv +STR_COMPANY_VIEW_SELL_SHARE_TOOLTIP :{BLACK}Sel 25% partabrøv í hesi fyritøkuni. Shift+trýst vísir inntøku meting uttan at selja nakað partabræv + +STR_COMPANY_VIEW_COMPANY_NAME_QUERY_CAPTION :Navn á Fyritøku +STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :Navn á leiðara + +STR_BUY_COMPANY_MESSAGE :{WHITE}Vit leita eftir einari flutnings fyritøku at taka yvir okkara fyritøku.{}{}Vil tú keypa {COMPANY} fyri {CURRENCY_LONG}? + +# Company infrastructure window +STR_COMPANY_INFRASTRUCTURE_VIEW_CAPTION :{WHITE}Innankervi hjá {COMPANY} +STR_COMPANY_INFRASTRUCTURE_VIEW_RAIL_SECT :{GOLD}Jarnbreyta pettir: +STR_COMPANY_INFRASTRUCTURE_VIEW_SIGNALS :{WHITE}Tekin +STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD_SECT :{GOLD}Vega pettir: +STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD :{WHITE}Vegur +STR_COMPANY_INFRASTRUCTURE_VIEW_TRAMWAY :{WHITE}Sporvognur +STR_COMPANY_INFRASTRUCTURE_VIEW_WATER_SECT :{GOLD}Vatn puntar: +STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS :{WHITE}Siglingarennir +STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}Støðir: +STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}Støð puntar +STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}Floghavnir +STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL :{WHITE}{CURRENCY_LONG}/ár + +# Industry directory +STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}Ídnaðir +STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}- Einki - +STR_INDUSTRY_DIRECTORY_ITEM :{ORANGE}{INDUSTRY}{BLACK} ({CARGO_LONG}{STRING}){YELLOW} ({COMMA}% flutt) +STR_INDUSTRY_DIRECTORY_ITEM_TWO :{ORANGE}{INDUSTRY}{BLACK} ({CARGO_LONG}{STRING}/{CARGO_LONG}{STRING}){YELLOW} ({COMMA}%/{COMMA}% flutt) +STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUSTRY} +STR_INDUSTRY_DIRECTORY_LIST_CAPTION :{BLACK}Ídnaðar nøvn - trýst á eitt navn fyri at savna høvuðs sýni á ídnað. Ctrl+trýst letur ein nýggjan sýnisglugga upp á ídnaðin + +# Industry view +STR_INDUSTRY_VIEW_CAPTION :{WHITE}{INDUSTRY} +STR_INDUSTRY_VIEW_PRODUCTION_LAST_MONTH_TITLE :{BLACK}Framleiðsla síðsta mánað: +STR_INDUSTRY_VIEW_TRANSPORTED :{YELLOW}{CARGO_LONG}{STRING}{BLACK} ({COMMA}% flutt) +STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Savna høvuðs sýni á ídnaðin. Ctrl+trýst letur nýggjan sýnisglugga upp við sýni á ídnaðin +STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Framleiðslu støði: {YELLOW}{COMMA}% + +############ range for requires starts +STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Tørvar: {YELLOW}{STRING}{STRING} +STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Tørvar: {YELLOW}{STRING}{STRING}, {STRING}{STRING} +STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Tørvar: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING} +############ range for requires ends + +############ range for produces starts +STR_INDUSTRY_VIEW_WAITING_FOR_PROCESSING :{BLACK}Farmur ið bíðar eftir at verða viðgjørdur: +STR_INDUSTRY_VIEW_WAITING_STOCKPILE_CARGO :{YELLOW}{CARGO_LONG}{STRING}{BLACK} +STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Framleiður: {YELLOW}{STRING}{STRING} +STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}Framleiður: {YELLOW}{STRING}{STRING}, {STRING}{STRING} +############ range for produces ends + +STR_CONFIG_GAME_PRODUCTION :{WHITE}Broyt framleiðslu (fald av 8, upp til 2040) +STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}Broyt framleiðslu støði (prosent, upp til 800%) + +# Vehicle lists +STR_VEHICLE_LIST_TRAIN_CAPTION :{WHITE}{STRING} - {COMMA} Tok +STR_VEHICLE_LIST_ROAD_VEHICLE_CAPTION :{WHITE}{STRING} - {COMMA} Akf{P ar ør} +STR_VEHICLE_LIST_SHIP_CAPTION :{WHITE}{STRING} - {COMMA} Skip +STR_VEHICLE_LIST_AIRCRAFT_CAPTION :{WHITE}{STRING} - {COMMA} Flogf{P ar ør} + +STR_VEHICLE_LIST_TRAIN_LIST_TOOLTIP :{BLACK}Tok - trýst á tok fyri kunning +STR_VEHICLE_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}Akfør - trýst á akfar fyri kunning +STR_VEHICLE_LIST_SHIP_TOOLTIP :{BLACK}Skip - trýst á skip fyri kunning +STR_VEHICLE_LIST_AIRCRAFT_TOOLTIP :{BLACK}Flogfør - trýst á flogfar fyri kunning + +STR_VEHICLE_LIST_PROFIT_THIS_YEAR_LAST_YEAR :{TINY_FONT}{BLACK}Vinningur hetta ári: {CURRENCY_LONG} (síðsta ár: {CURRENCY_LONG}) + +STR_VEHICLE_LIST_AVAILABLE_TRAINS :Tøk tok +STR_VEHICLE_LIST_AVAILABLE_ROAD_VEHICLES :Tøk akfør +STR_VEHICLE_LIST_AVAILABLE_SHIPS :Tøk skip +STR_VEHICLE_LIST_AVAILABLE_AIRCRAFT :Tøk flogfør +STR_VEHICLE_LIST_AVAILABLE_ENGINES_TOOLTIP :{BLACK}Sjá yvirlit av tøkum motor sniðum fyri hetta slagi av flutningstóli + +STR_VEHICLE_LIST_MANAGE_LIST :{BLACK}Umsit lista +STR_VEHICLE_LIST_MANAGE_LIST_TOOLTIP :{BLACK}Send boð til øll flutningstól í hesum lista +STR_VEHICLE_LIST_REPLACE_VEHICLES :Být um flutningstól +STR_VEHICLE_LIST_SEND_FOR_SERVICING :Send til eftirlit + +STR_VEHICLE_LIST_SEND_TRAIN_TO_DEPOT :Send til goymslu +STR_VEHICLE_LIST_SEND_ROAD_VEHICLE_TO_DEPOT :Send til goymslu +STR_VEHICLE_LIST_SEND_SHIP_TO_DEPOT :Send til goymslu +STR_VEHICLE_LIST_SEND_AIRCRAFT_TO_HANGAR :Send til hangar + +STR_VEHICLE_LIST_MASS_STOP_LIST_TOOLTIP :{BLACK}Trýst fyri at steðga øllum flutningstólum í listanum +STR_VEHICLE_LIST_MASS_START_LIST_TOOLTIP :{BLACK}Trýst fyri at seta á gongd øll flutningstól í listanum + +STR_VEHICLE_LIST_SHARED_ORDERS_LIST_CAPTION :{WHITE}Deild boð hjá {COMMA} flutningstól{P i um} + +# Group window +STR_GROUP_ALL_TRAINS :Øll tok +STR_GROUP_ALL_ROAD_VEHICLES :Øll akfør +STR_GROUP_ALL_SHIPS :Øll skip +STR_GROUP_ALL_AIRCRAFTS :Øll flogfør + +STR_GROUP_DEFAULT_TRAINS :Óbólkaði tok +STR_GROUP_DEFAULT_ROAD_VEHICLES :Óbólkaði akfør +STR_GROUP_DEFAULT_SHIPS :Óbólkaði skip +STR_GROUP_DEFAULT_AIRCRAFTS :Óbólkaði flogfør + +STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Bólkar - trýst á ein bólk fyri at síggja øll flutningstól í hesum bólki +STR_GROUP_CREATE_TOOLTIP :{BLACK}Trýst fyri at gera ein bólk +STR_GROUP_DELETE_TOOLTIP :{BLACK}Strika valda bólkin +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 + +STR_GROUP_RENAME_CAPTION :{BLACK}Navngev ein bólk + +# Build vehicle window +STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :Nýggj jarnbreyta flutningstól +STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :Nýggj ravmagns jarnbreyta flutningstól +STR_BUY_VEHICLE_TRAIN_MONORAIL_CAPTION :Nýggj einsporaði jarnbreyta flutningstól +STR_BUY_VEHICLE_TRAIN_MAGLEV_CAPTION :Nýggj maglev flutningstól + +STR_BUY_VEHICLE_TRAIN_ALL_CAPTION :Nýggj jarnbreyta flutningstól +STR_BUY_VEHICLE_ROAD_VEHICLE_CAPTION :Nýggj akfør +STR_BUY_VEHICLE_SHIP_CAPTION :Nýggj skip +STR_BUY_VEHICLE_AIRCRAFT_CAPTION :Nýggj flogfør + +STR_PURCHASE_INFO_COST_WEIGHT :{BLACK}Kostnaður: {GOLD}{CURRENCY_LONG}{BLACK} Vekt: {GOLD}{WEIGHT_SHORT} +STR_PURCHASE_INFO_SPEED_POWER :{BLACK}Ferð: {GOLD}{VELOCITY}{BLACK} Megi: {GOLD}{POWER} +STR_PURCHASE_INFO_SPEED :{BLACK}Ferð: {GOLD}{VELOCITY} +STR_PURCHASE_INFO_SPEED_OCEAN :{BLACK}Ferð á havi: {GOLD}{VELOCITY} +STR_PURCHASE_INFO_SPEED_CANAL :{BLACK}Ferð í siglingarrennu/løki: {GOLD}{VELOCITY} +STR_PURCHASE_INFO_RUNNINGCOST :{BLACK}Rakstrar kostnaður: {GOLD}{CURRENCY_LONG}/ár +STR_PURCHASE_INFO_CAPACITY :{BLACK}Pláss: {GOLD}{CARGO_LONG} {STRING} +STR_PURCHASE_INFO_REFITTABLE :(kann umbyggjast) +STR_PURCHASE_INFO_DESIGNED_LIFE :{BLACK}Sniðgivi: {GOLD}{NUM}{BLACK} Livitíð: {GOLD}{COMMA} ár +STR_PURCHASE_INFO_RELIABILITY :{BLACK}Maks. Álítandi: {GOLD}{COMMA}% +STR_PURCHASE_INFO_COST :{BLACK}Kostnaður: {GOLD}{CURRENCY_LONG} +STR_PURCHASE_INFO_WEIGHT_CWEIGHT :{BLACK}Vekt: {GOLD}{WEIGHT_SHORT} ({WEIGHT_SHORT}) +STR_PURCHASE_INFO_COST_SPEED :{BLACK}Kostnaður: {GOLD}{CURRENCY_LONG}{BLACK} Ferð: {GOLD}{VELOCITY} +STR_PURCHASE_INFO_AIRCRAFT_CAPACITY :{BLACK}Pláss: {GOLD}{CARGO_LONG}, {CARGO_LONG} +STR_PURCHASE_INFO_PWAGPOWER_PWAGWEIGHT :{BLACK}Mótorbúnir vognar: {GOLD}+{POWER}{BLACK} Vekt: {GOLD}+{WEIGHT_SHORT} +STR_PURCHASE_INFO_REFITTABLE_TO :{BLACK}Kann umbyggjast til: {GOLD}{STRING} +STR_PURCHASE_INFO_ALL_TYPES :Øll farma sløg +STR_PURCHASE_INFO_ALL_BUT :Alt uttan {CARGO_LIST} +STR_PURCHASE_INFO_MAX_TE :{BLACK}Maks. Dráttar ómak: {GOLD}{FORCE} +STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Vídd: {GOLD}{COMMA} puntar + +STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Tok úrvals yvirlit - trýst á eitt flutningstól fyri kunning +STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Akfar úrvals yvirlit - trýst á eitt akfar fyri kunning +STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Skipa úrvals yvirlit - trýst á eitt skip fyri kunning +STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Flogfar úrvals yvirlit - trýst á eitt flogfar fyri kunning + +STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_BUTTON :{BLACK}Keyp flutningstól +STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_BUTTON :{BLACK}Keyp akfar +STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_BUTTON :{BLACK}Keyp skip +STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_BUTTON :{BLACK}Keyp flogfar + +STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_TOOLTIP :{BLACK}Keyp undirstrikaða tok flutningstóli. Shift+trýst vísur kostnaðar meting uttan at keypa +STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_TOOLTIP :{BLACK}Keyp undirstrikaða akfari. Shift+trýst vísur kostnaðar meting uttan at keypa +STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_TOOLTIP :{BLACK}Keyp undirstrikaða skipi. Shift+trýst vísur kostnaðar meting uttan at keypa +STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_TOOLTIP :{BLACK}Keyp undirstrikaða flogfari. Shift+trýst vísur kostnaðar meting uttan at keypa + +STR_BUY_VEHICLE_TRAIN_RENAME_BUTTON :{BLACK}Navngev +STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_BUTTON :{BLACK}Navngev +STR_BUY_VEHICLE_SHIP_RENAME_BUTTON :{BLACK}Navngev +STR_BUY_VEHICLE_AIRCRAFT_RENAME_BUTTON :{BLACK}Navngev + +STR_BUY_VEHICLE_TRAIN_RENAME_TOOLTIP :{BLACK}Navngev slagi av tok flutningstóli +STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK}Navngev slagi av akfari +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 +STR_QUERY_RENAME_AIRCRAFT_TYPE_CAPTION :{WHITE}Navngev slagi av flogfari + +# Depot window +STR_DEPOT_CAPTION :{WHITE}{DEPOT} + +STR_DEPOT_RENAME_TOOLTIP :{BLACK}Broyt navn á goymslu +STR_DEPOT_RENAME_DEPOT_CAPTION :Navngev goymslu + +STR_DEPOT_NO_ENGINE :{BLACK}- +STR_DEPOT_VEHICLE_TOOLTIP :{BLACK}{ENGINE}{STRING} +STR_DEPOT_VEHICLE_TOOLTIP_CHAIN :{BLACK}{NUM} flutningstól {STRING} +STR_DEPOT_VEHICLE_TOOLTIP_CARGO :{}{CARGO_LONG} ({CARGO_SHORT}) + +STR_DEPOT_TRAIN_LIST_TOOLTIP :{BLACK}Tok - toga flutningstól við vinstra-trýsti fyri at leggja til/beina burtur frá toki, høgra-trýst fyri kunning. Halt Ctrl fyri at seta báðar funkur í gildi fyri eftirfylgjandi ketu +STR_DEPOT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Akfør - høgra-trýst á akfar fyri kunning +STR_DEPOT_SHIP_LIST_TOOLTIP :{BLACK}Skip - høgra-trýst á skip fyri kunning +STR_DEPOT_AIRCRAFT_LIST_TOOLTIP :{BLACK}Flogfør - høgra-trýst á flogfar fyri kunning + +STR_DEPOT_TRAIN_SELL_TOOLTIP :{BLACK}Toga tok flutningstól higar fyri at selja tað +STR_DEPOT_ROAD_VEHICLE_SELL_TOOLTIP :{BLACK}Toga akfar higar fyri at selja tað +STR_DEPOT_SHIP_SELL_TOOLTIP :{BLACK}Toga skip higar fyri at selja tað +STR_DEPOT_AIRCRAFT_SELL_TOOLTIP :{BLACK}Toga flogfar higar fyri at selja tað + +STR_DEPOT_DRAG_WHOLE_TRAIN_TO_SELL_TOOLTIP :{BLACK}Toga tok motor higar fyri at selja alt toki + +STR_DEPOT_SELL_ALL_BUTTON_TRAIN_TOOLTIP :{BLACK}Sel øll tokini í goymsluni +STR_DEPOT_SELL_ALL_BUTTON_ROAD_VEHICLE_TOOLTIP :{BLACK}Sel øll akførini í goymsluni +STR_DEPOT_SELL_ALL_BUTTON_SHIP_TOOLTIP :{BLACK}Sel øll skipini í goymsluni +STR_DEPOT_SELL_ALL_BUTTON_AIRCRAFT_TOOLTIP :{BLACK}Sel øll flogførini í goymsluni + +STR_DEPOT_AUTOREPLACE_TRAIN_TOOLTIP :{BLACK}Sjálvumbýt øll tokini í goymsluni +STR_DEPOT_AUTOREPLACE_ROAD_VEHICLE_TOOLTIP :{BLACK}Sjálvumbýt øll akførini í goymsluni +STR_DEPOT_AUTOREPLACE_SHIP_TOOLTIP :{BLACK}Sjálvumbýt øll skipini í goymsluni +STR_DEPOT_AUTOREPLACE_AIRCRAFT_TOOLTIP :{BLACK}Sjálvumbýt øll flogførini í hangarinum + +STR_DEPOT_TRAIN_NEW_VEHICLES_BUTTON :{BLACK}Nýggj flutningstól +STR_DEPOT_ROAD_VEHICLE_NEW_VEHICLES_BUTTON :{BLACK}Nýggj akfør +STR_DEPOT_SHIP_NEW_VEHICLES_BUTTON :{BLACK}Nýggj skip +STR_DEPOT_AIRCRAFT_NEW_VEHICLES_BUTTON :{BLACK}Nýggj flogfør + +STR_DEPOT_TRAIN_NEW_VEHICLES_TOOLTIP :{BLACK}Keyp nýtt tok flutningstól +STR_DEPOT_ROAD_VEHICLE_NEW_VEHICLES_TOOLTIP :{BLACK}Keyp nýtt akfar +STR_DEPOT_SHIP_NEW_VEHICLES_TOOLTIP :{BLACK}Keyp nýtt skip +STR_DEPOT_AIRCRAFT_NEW_VEHICLES_TOOLTIP :{BLACK}Keyp nýtt flogfar + +STR_DEPOT_CLONE_TRAIN :{BLACK}Klona tok +STR_DEPOT_CLONE_ROAD_VEHICLE :{BLACK}Klona akfar +STR_DEPOT_CLONE_SHIP :{BLACK}Klona skip +STR_DEPOT_CLONE_AIRCRAFT :{BLACK}Klona flogfar + +STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}Keyp eitt avrit av einum toki íroknað allar vognarnar. Trýst á henda knøttin og síðani eitt tok innanfyri ella uttanfyri goymsluna. Ctrl+trýst deilur boðini. Shift+trýst vísur kostnaðar meting uttan at keypa +STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Keyp eitt avrit av einum akfari. Trýst á henda knøttin og síðani eitt akfar innanfyri ella uttanfyri goymsluna. Ctrl+trýst deilur boðini. Shift+trýst vísur kostnaðar meting uttan at keypa +STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}Keyp eitt avrit av einum skipi. Trýst á henda knøttin og síðani eitt skip innanfyri ella uttanfyri goymsluna. Ctrl+trýst deilur boðini. Shift+trýst vísur kostnaðar meting uttan at keypa +STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Keyp eitt avrit av einum flogfari. Trýst á henda knøttin og síðani eitt flogfar innanfyri ella uttanfyri goymsluna. Ctrl+trýst deilur boðini. Shift+trýst vísur kostnaðar meting uttan at keypa + +STR_DEPOT_TRAIN_LOCATION_TOOLTIP :{BLACK}Savna høvuðs sýni á tok goymslu. Ctrl+trýst letur nýggjan sýnisglugga upp við sýni á tok goymsluna +STR_DEPOT_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Savna høvuðs sýni á akfars goymsluna. Ctrl+trýst letur nýggjan sýnisglugga upp við sýni á akfars goymsluna +STR_DEPOT_SHIP_LOCATION_TOOLTIP :{BLACK}Savna høvuðs sýni á skips goymsluna. Ctrl+trýst letur nýggjan sýnisglugga upp við sýni á skips goymsluna +STR_DEPOT_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Savna høvuðs sýni á hangarin. Ctrl+trýst letur nýggjan sýnisglugga upp við sýni á hangarin + +STR_DEPOT_VEHICLE_ORDER_LIST_TRAIN_TOOLTIP :{BLACK}Lat upp eitt yvirlit við øllum tokum ið hava hesa goymsluna í teirra boðum +STR_DEPOT_VEHICLE_ORDER_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}Lat upp eitt yvirlit við øllum akførum ið hava hesa goymsluna í teirra boðum +STR_DEPOT_VEHICLE_ORDER_LIST_SHIP_TOOLTIP :{BLACK}Lat upp eitt yvirlit við øllum skipum ið hava hesa goymsluna í teirra boðum +STR_DEPOT_VEHICLE_ORDER_LIST_AIRCRAFT_TOOLTIP :{BLACK}Lat upp eitt yvirlit við øllum flogførum ið hava nakran hangar í hesari floghavnini í teirra boðum + +STR_DEPOT_MASS_STOP_DEPOT_TRAIN_TOOLTIP :{BLACK}Trýst fyri at steðga øllum tokunum innanfyri goymsluna +STR_DEPOT_MASS_STOP_DEPOT_ROAD_VEHICLE_TOOLTIP :{BLACK}Trýst fyri at steðga øllum akførunum innanfyri goymsluna +STR_DEPOT_MASS_STOP_DEPOT_SHIP_TOOLTIP :{BLACK}Trýst fyri at steðga øllum skipunum innanfyri goymsluna +STR_DEPOT_MASS_STOP_HANGAR_TOOLTIP :{BLACK}Trýst fyri at steðga øllum flogførunum innanfyri hangarin + +STR_DEPOT_MASS_START_DEPOT_TRAIN_TOOLTIP :{BLACK}Trýst fyri at seta í gongd øll tokini innanfyri goymsluna +STR_DEPOT_MASS_START_DEPOT_ROAD_VEHICLE_TOOLTIP :{BLACK}Trýst fyri at seta í gongd øll akførini innanfyri goymsluna +STR_DEPOT_MASS_START_DEPOT_SHIP_TOOLTIP :{BLACK}Trýst fyri at seta í gongd øll skipini innanfyri goymsluna +STR_DEPOT_MASS_START_HANGAR_TOOLTIP :{BLACK}Trýst fyri at seta í gongd øll flogførini innanfyri hangarin + +STR_DEPOT_SELL_CONFIRMATION_TEXT :{YELLOW}Tú er í holt við at selja øll flutningstólini í goymsluni. Er tú vísur í tí? + +# Engine preview window +STR_ENGINE_PREVIEW_CAPTION :{WHITE}Boð frá framleiðarinum av flutningstólinum +STR_ENGINE_PREVIEW_MESSAGE :{GOLD}Vit hava júst sniðgivi eitt nýtt {STRING} - hevði tú havt áhuga í einkarrættindum at nýtt hetta flutningstóli í eitt ár, so vit kunnu síggja hvussu ta virkar áðrenn vit gera ta tøkt á marknaðinum? +STR_ENGINE_PREVIEW_RAILROAD_LOCOMOTIVE :jarnbreyta lokomotiv +STR_ENGINE_PREVIEW_ROAD_VEHICLE :{G=n}akfar +STR_ENGINE_PREVIEW_AIRCRAFT :{G=n}flogfar +STR_ENGINE_PREVIEW_SHIP :skip +STR_ENGINE_PREVIEW_MONORAIL_LOCOMOTIVE :einsporað lokomotiv +STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :maglev lokomotiv + +STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Kostnaður: {CURRENCY_LONG} Vekt: {WEIGHT_SHORT}{}Ferð: {VELOCITY} Megi: {POWER}{}Rakstrar kostnaður: {CURRENCY_LONG}/ár{}Pláss: {CARGO_LONG} +STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}Kostnaður: {CURRENCY_LONG} Vekt: {WEIGHT_SHORT}{}Ferð: {VELOCITY} Megi: {POWER} Maks. D.Ó.: {6:FORCE}{}Rakstrar kostnaður: {4:CURRENCY_LONG}/ár{}Pláss: {5:CARGO_LONG} +STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST :{BLACK}Kostnaður: {CURRENCY_LONG} Maks. Ferð: {VELOCITY}{}Pláss: {CARGO_LONG}, {CARGO_LONG}{}Rakstrar kostnaður: {CURRENCY_LONG}/ár +STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK}Kostnaður: {CURRENCY_LONG} Maks. Ferð: {VELOCITY}{}Pláss: {CARGO_LONG}{}Rakstrar kostnaður: {CURRENCY_LONG}/ár +STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_CAPACITY_RUNCOST:{BLACK}Kostnaður: {CURRENCY_LONG} Maks. Ferð: {VELOCITY} Vídd: {COMMA} puntar{}Pláss: {CARGO_LONG}, {CARGO_LONG}{}Rakstrar kostnaður: {CURRENCY_LONG}/ár +STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}Kostnaður: {CURRENCY_LONG} Maks. Ferð: {VELOCITY} Vídd: {COMMA} puntar{}Pláss: {CARGO_LONG}{}Rakstrar kostnaður: {CURRENCY_LONG}/ár + +# Autoreplace window +STR_REPLACE_VEHICLES_WHITE :{WHITE}Být um {STRING} - {STRING} +STR_REPLACE_VEHICLE_TRAIN :Tok +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 + +STR_REPLACE_VEHICLES_START :{BLACK}Byrja umbýting av flutningstólum +STR_REPLACE_VEHICLES_NOW :Být øll flutningstól um nú +STR_REPLACE_VEHICLES_WHEN_OLD :Být bert gomul flutningstól um +STR_REPLACE_HELP_START_BUTTON :{BLACK}Trýst fyri at byrja umbýtanina av motor slagnum tú valdi á vinstru síðu við tað tú valdi á høgru síðu +STR_REPLACE_NOT_REPLACING :{BLACK}Býtur ikki um +STR_REPLACE_NOT_REPLACING_VEHICLE_SELECTED :{BLACK}Einki flutningstól valt +STR_REPLACE_REPLACING_WHEN_OLD :{ENGINE} tá gamalt +STR_REPLACE_VEHICLES_STOP :{BLACK}Steðga umbýting av flutningstólum +STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Trýst fyri at steðga umbýtanini av motor slagnum tú valdi á vinstru síðu + +STR_REPLACE_ENGINE_WAGON_SELECT :{BLACK}Býtur um: {ORANGE}{STRING} +STR_REPLACE_ENGINE_WAGON_SELECT_HELP :{BLACK}Skift ímillum motor og vogna umbýtingar vindeyga +STR_REPLACE_ENGINES :Motorar +STR_REPLACE_WAGONS :Vognar + +STR_REPLACE_HELP_RAILTYPE :{BLACK}Vel jarnbreyta slagi hjá motorunum tú vil býta um +STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Vísur hvønn motor tann markai á vinstru síðu verður býttur um vi, um nakran +STR_REPLACE_RAIL_VEHICLES :Jarnbreyta flutningstól +STR_REPLACE_ELRAIL_VEHICLES :Ravmagns jarnbreyta flutningstól +STR_REPLACE_MONORAIL_VEHICLES :Einsporaði jarnbreyta flutningstól +STR_REPLACE_MAGLEV_VEHICLES :Maglev flutningstól + +STR_REPLACE_REMOVE_WAGON :{BLACK}Vogn burturrudding: {ORANGE}{STRING} + +# Vehicle view +STR_VEHICLE_VIEW_CAPTION :{WHITE}{VEHICLE} + + + + + + + + + + +# Messages in the start stop button in the vehicle view +STR_VEHICLE_STATUS_LOADING_UNLOADING :{LTBLUE}Lessar / Avlessar +STR_VEHICLE_STATUS_LEAVING :{LTBLUE}Fer avstað +STR_VEHICLE_STATUS_CRASHED :{RED}Krasja! +STR_VEHICLE_STATUS_BROKEN_DOWN :{RED}Maskinskaði +STR_VEHICLE_STATUS_STOPPED :{RED}Steðga +STR_VEHICLE_STATUS_TRAIN_STOPPING_VEL :{RED}Steðgar, {VELOCITY} +STR_VEHICLE_STATUS_TRAIN_NO_POWER :{RED}Eingin megi +STR_VEHICLE_STATUS_TRAIN_STUCK :{ORANGE}Bíðar eftir fríari leið +STR_VEHICLE_STATUS_AIRCRAFT_TOO_FAR :{ORANGE}Ov langt burtur frá næsta ferðamáli + +STR_VEHICLE_STATUS_HEADING_FOR_STATION_VEL :{LTBLUE}Á veg til {STATION}, {VELOCITY} +STR_VEHICLE_STATUS_NO_ORDERS_VEL :{LTBLUE}Eingi boð, {VELOCITY} +STR_VEHICLE_STATUS_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}Á veg til {WAYPOINT}, {VELOCITY} +STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_VEL :{ORANGE}Á veg til {DEPOT}, {VELOCITY} +STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_SERVICE_VEL :{LTBLUE}Eftirlit í {DEPOT}, {VELOCITY} + +# Vehicle stopped/started animations +STR_VEHICLE_COMMAND_STOPPED_SMALL :{TINY_FONT}{RED}Steðga +STR_VEHICLE_COMMAND_STOPPED :{RED}Steðga +STR_VEHICLE_COMMAND_STARTED_SMALL :{TINY_FONT}{GREEN}Starta +STR_VEHICLE_COMMAND_STARTED :{GREEN}Starta + +# Vehicle details +STR_VEHICLE_DETAILS_CAPTION :{WHITE}{VEHICLE} (Smálutir) +STR_VEHICLE_NAME_BUTTON :{BLACK}Navn + +STR_VEHICLE_DETAILS_TRAIN_RENAME :{BLACK}Gev tokinum eitt navn +STR_VEHICLE_DETAILS_ROAD_VEHICLE_RENAME :{BLACK}Gev akfarinum eitt navn +STR_VEHICLE_DETAILS_SHIP_RENAME :{BLACK}Gev skipinum eitt navn +STR_VEHICLE_DETAILS_AIRCRAFT_RENAME :{BLACK}Gev flogfarinum eitt navn + +STR_VEHICLE_INFO_AGE_RUNNING_COST_YR :{BLACK}Aldur: {LTBLUE}{STRING}{BLACK} Rakstrar kostnaður: {LTBLUE}{CURRENCY_LONG}/ár +# The next two need to stay in this order +STR_VEHICLE_INFO_AGE :{COMMA} ár ({COMMA}) +STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} ár ({COMMA}) + +STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Maks. ferð: {LTBLUE}{VELOCITY} +STR_VEHICLE_INFO_MAX_SPEED_RANGE :{BLACK}Maks. ferð: {LTBLUE}{VELOCITY} {BLACK}Vídd: {LTBLUE}{COMMA} puntar +STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Vekt: {LTBLUE}{WEIGHT_SHORT} {BLACK}Megi: {LTBLUE}{POWER}{BLACK} Maks. ferð: {LTBLUE}{VELOCITY} +STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Vekt: {LTBLUE}{WEIGHT_SHORT} {BLACK}Megi: {LTBLUE}{POWER}{BLACK} Maks. ferð: {LTBLUE}{VELOCITY} {BLACK}Maks. D.Ó.: {LTBLUE}{FORCE} + +STR_VEHICLE_INFO_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Vinningur hetta ári: {LTBLUE}{CURRENCY_LONG} (síðsta ár: {CURRENCY_LONG}) +STR_VEHICLE_INFO_RELIABILITY_BREAKDOWNS :{BLACK}Álítandi: {LTBLUE}{COMMA}% {BLACK}Maskinskaðar síðan síðsta eftirlit: {LTBLUE}{COMMA} + +STR_VEHICLE_INFO_BUILT_VALUE :{LTBLUE}{ENGINE} {BLACK}Bygt: {LTBLUE}{NUM}{BLACK} Virði: {LTBLUE}{CURRENCY_LONG} +STR_VEHICLE_INFO_NO_CAPACITY :{BLACK}Pláss: {LTBLUE}Einki{STRING} +STR_VEHICLE_INFO_CAPACITY :{BLACK}Pláss: {LTBLUE}{CARGO_LONG}{3:STRING} +STR_VEHICLE_INFO_CAPACITY_MULT :{BLACK}Pláss: {LTBLUE}{CARGO_LONG}{3:STRING} (x{4:NUM}) +STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}Pláss: {LTBLUE}{CARGO_LONG}, {CARGO_LONG}{STRING} + +STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}Umskipanar góðskriving: {LTBLUE}{CURRENCY_LONG} + +STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Eftilits títtleiki: {LTBLUE}{COMMA}dagar{BLACK} Síðsta eftirlit: {LTBLUE}{DATE_LONG} +STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Eftirlits títtleiki: {LTBLUE}{COMMA}%{BLACK} Síðsta eftirlit: {LTBLUE}{DATE_LONG} +STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Vaks eftirlits títtleika vi 10. Ctrl+trýst vaksir eftirlits títtleika vi 5 +STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Minka eftirlits títtleika vi 10. Ctrl+trýst minkar eftirlits títtleika vi 5 + +STR_SERVICE_INTERVAL_DROPDOWN_TOOLTIP :{BLACK}Broyt eftirlits interval typu +STR_VEHICLE_DETAILS_DEFAULT :Vanligt +STR_VEHICLE_DETAILS_DAYS :Dagar +STR_VEHICLE_DETAILS_PERCENT :Prosent + +STR_QUERY_RENAME_TRAIN_CAPTION :{WHITE}Gev tokinum eitt navn +STR_QUERY_RENAME_ROAD_VEHICLE_CAPTION :{WHITE}Gev akfarinum eitt navn +STR_QUERY_RENAME_SHIP_CAPTION :{WHITE}Gev skipinum eitt navn +STR_QUERY_RENAME_AIRCRAFT_CAPTION :{WHITE}Gev flogfarinum eitt navn + +# Extra buttons for train details windows +STR_VEHICLE_DETAILS_TRAIN_ENGINE_BUILT_AND_VALUE :{LTBLUE}{ENGINE}{BLACK} Bygt: {LTBLUE}{NUM}{BLACK} Virði: {LTBLUE}{CURRENCY_LONG} +STR_VEHICLE_DETAILS_TRAIN_WAGON_VALUE :{LTBLUE}{ENGINE}{BLACK} Virði: {LTBLUE}{CURRENCY_LONG} + +STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY_TEXT :{BLACK}Samanlagda farma pláss í hesum toki: +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}Tómt +STR_VEHICLE_DETAILS_CARGO_FROM :{LTBLUE}{CARGO_LONG} frá {STATION} +STR_VEHICLE_DETAILS_CARGO_FROM_MULT :{LTBLUE}{CARGO_LONG} frá {STATION} (x{NUM}) + +STR_VEHICLE_DETAIL_TAB_CARGO :{BLACK}Farmur +STR_VEHICLE_DETAILS_TRAIN_CARGO_TOOLTIP :{BLACK}Vís smálutir um farmin umborð +STR_VEHICLE_DETAIL_TAB_INFORMATION :{BLACK}Kunning +STR_VEHICLE_DETAILS_TRAIN_INFORMATION_TOOLTIP :{BLACK}Vís smálutir um tok flutningstólini +STR_VEHICLE_DETAIL_TAB_CAPACITIES :{BLACK}Pláss +STR_VEHICLE_DETAILS_TRAIN_CAPACITIES_TOOLTIP :{BLACK}Vís plássi á hvørjum flutningstóli +STR_VEHICLE_DETAIL_TAB_TOTAL_CARGO :{BLACK}Farmur í alt +STR_VEHICLE_DETAILS_TRAIN_TOTAL_CARGO_TOOLTIP :{BLACK}Vís samanlagda plássi í toki, deilt eftir farma slagi + +STR_VEHICLE_DETAILS_TRAIN_ARTICULATED_RV_CAPACITY :{BLACK}Pláss: {LTBLUE} + +# Vehicle refit +STR_REFIT_CAPTION :{WHITE}{VEHICLE} (Umbygg) +STR_REFIT_TITLE :{GOLD}Vel slag av farmi at føra: +STR_REFIT_NEW_CAPACITY_COST_OF_REFIT :{BLACK}Nýtt pláss: {GOLD}{CARGO_LONG}{}{BLACK}Kostnaður av umbygging: {RED}{CURRENCY_LONG} +STR_REFIT_NEW_CAPACITY_INCOME_FROM_REFIT :{BLACK}Nýtt pláss: {GOLD}{CARGO_LONG}{}{BLACK}Inntøka av umbygging: {GREEN}{CURRENCY_LONG} +STR_REFIT_NEW_CAPACITY_COST_OF_AIRCRAFT_REFIT :{BLACK}Nýtt pláss: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Kostnaður av umbygging: {RED}{CURRENCY_LONG} +STR_REFIT_NEW_CAPACITY_INCOME_FROM_AIRCRAFT_REFIT :{BLACK}Nýtt pláss: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Inntøka av umbygging: {GREEN}{CURRENCY_LONG} + + +STR_REFIT_TRAIN_REFIT_BUTTON :{BLACK}Umbygg tok +STR_REFIT_ROAD_VEHICLE_REFIT_BUTTON :{BLACK}Umbygg akfar +STR_REFIT_SHIP_REFIT_BUTTON :{BLACK}Umbygg skip +STR_REFIT_AIRCRAFT_REFIT_BUTTON :{BLACK}Umbygg flogfar + + +# Order view +STR_ORDERS_CAPTION :{WHITE}{VEHICLE} (Boð) +STR_ORDERS_TIMETABLE_VIEW :{BLACK}Tíðarætlan + +STR_ORDER_INDEX :{COMMA}:{NBSP} +STR_ORDER_TEXT :{STRING} {STRING} {STRING} + +STR_ORDERS_END_OF_ORDERS :- - Endi á boðum - - +STR_ORDERS_END_OF_SHARED_ORDERS :- - Endi á deildum boðum - - + +# Order bottom buttons +STR_ORDER_NON_STOP :{BLACK}Non-stop +STR_ORDER_GO_TO :Far til +STR_ORDER_GO_NON_STOP_TO :Far non-stop til +STR_ORDER_GO_VIA :Far via +STR_ORDER_GO_NON_STOP_VIA :Far non-stop via + +STR_ORDER_TOGGLE_FULL_LOAD :{BLACK}Fult less onkrun farmi +STR_ORDER_DROP_LOAD_IF_POSSIBLE :Lessa um tøkt +STR_ORDER_DROP_FULL_LOAD_ALL :Fult less allan farm +STR_ORDER_DROP_FULL_LOAD_ANY :Fult less onkran farm +STR_ORDER_DROP_NO_LOADING :Eingin lessing +STR_ORDER_TOOLTIP_FULL_LOAD :{BLACK}Broyt lessingar atburðin hjá undirstrikaða boðinum + +STR_ORDER_TOGGLE_UNLOAD :{BLACK}Avlessa alt +STR_ORDER_DROP_UNLOAD_IF_ACCEPTED :Avlessa um góðtiki +STR_ORDER_DROP_UNLOAD :Avlessa alt +STR_ORDER_DROP_TRANSFER :Umskipa +STR_ORDER_DROP_NO_UNLOADING :Eingin avlessing +STR_ORDER_TOOLTIP_UNLOAD :{BLACK}Broyt avlessingar atburðin hjá undirstrikaða boðinum + +STR_ORDER_REFIT :{BLACK}Umbygg +STR_ORDER_REFIT_AUTO :{BLACK}Sjálvumbygg +STR_ORDER_DROP_REFIT_AUTO :Ávisur farmur +STR_ORDER_DROP_REFIT_AUTO_ANY :Tøkur farmur + +STR_ORDER_SERVICE :{BLACK}Eftirlit +STR_ORDER_DROP_GO_ALWAYS_DEPOT :Far altíð +STR_ORDER_DROP_SERVICE_DEPOT :Eftirlit um neyðugt +STR_ORDER_DROP_HALT_DEPOT :Steðga + + +# Conditional order variables, must follow order of OrderConditionVariable enum +STR_ORDER_CONDITIONAL_LOAD_PERCENTAGE :Lessingar prosent +STR_ORDER_CONDITIONAL_RELIABILITY :Álítandi +STR_ORDER_CONDITIONAL_MAX_SPEED :Mesta ferð +STR_ORDER_CONDITIONAL_AGE :Aldur (ár) +STR_ORDER_CONDITIONAL_REQUIRES_SERVICE :Tørvar eftirlit +STR_ORDER_CONDITIONAL_UNCONDITIONALLY :Altíð +STR_ORDER_CONDITIONAL_REMAINING_LIFETIME :Eftirverandi livitíð (ár) + +STR_ORDER_CONDITIONAL_COMPARATOR_EQUALS :er líka sum +STR_ORDER_CONDITIONAL_COMPARATOR_NOT_EQUALS :er ikki líka sum +STR_ORDER_CONDITIONAL_COMPARATOR_LESS_THAN :er minni enn +STR_ORDER_CONDITIONAL_COMPARATOR_LESS_EQUALS :er minni enn ella líka sum +STR_ORDER_CONDITIONAL_COMPARATOR_MORE_THAN :er meira enn +STR_ORDER_CONDITIONAL_COMPARATOR_MORE_EQUALS :er meira enn ella líka sum +STR_ORDER_CONDITIONAL_COMPARATOR_IS_TRUE :er satt +STR_ORDER_CONDITIONAL_COMPARATOR_IS_FALSE :er ósatt + +STR_ORDER_CONDITIONAL_VALUE_CAPT :{WHITE}Skriva eitt virði at samanbera við + +STR_ORDERS_SKIP_BUTTON :{BLACK}Leyp um +STR_ORDERS_SKIP_TOOLTIP :{BLACK}Leyp verðandi boð um, og byrja næsta. Ctrl+trýst leypur til ta valda boðið + +STR_ORDERS_DELETE_BUTTON :{BLACK}Strika +STR_ORDERS_DELETE_TOOLTIP :{BLACK}Strika undirstrikaða boði +STR_ORDERS_DELETE_ALL_TOOLTIP :{BLACK}Strika øll boð +STR_ORDERS_STOP_SHARING_BUTTON :{BLACK}Steðga deiling +STR_ORDERS_STOP_SHARING_TOOLTIP :{BLACK}Steðga við at deila boðs listan. Ctrl+trýst strikar eisini øll boðini hjá flutningstólinum + +STR_ORDERS_GO_TO_BUTTON :{BLACK}Far til +STR_ORDER_GO_TO_NEAREST_DEPOT :Far til nærmastu goymslu +STR_ORDER_GO_TO_NEAREST_HANGAR :Far til nærmasta hangar +STR_ORDER_CONDITIONAL :Treytað boðs lop +STR_ORDER_SHARE :Deil boð +STR_ORDERS_GO_TO_TOOLTIP :{BLACK}Set eini nýggj boð inn áðrenn undirstrikaðu boðini, ella legg til endan á listanum. Ctrl gerð boð á støðum 'fult less onkran farm', waypoint boð 'non-stop' og goymslu boð 'eftirlit'. 'Deil boð' ella Ctrl letur hetta flutningstóli deila boð við valda flutningstóli. Trýstur tú á eitt flutningstól avritar tú boðini hjá tí flutningstólinum. Boð um at fara til goymsluna ógildar sjálvvirkandi eftirliti av flutningstólinum + +STR_ORDERS_VEH_WITH_SHARED_ORDERS_LIST_TOOLTIP :{BLACK}Vís øll flutningstól ið deila hesa skránna + +# String parts to build the order string +STR_ORDER_GO_TO_WAYPOINT :Far via {WAYPOINT} +STR_ORDER_GO_NON_STOP_TO_WAYPOINT :Far non-stop via {WAYPOINT} + +STR_ORDER_SERVICE_AT :Eftirlit í +STR_ORDER_SERVICE_NON_STOP_AT :Eftirlit non-stop í + +STR_ORDER_NEAREST_DEPOT :nærmastu +STR_ORDER_NEAREST_HANGAR :nærmasti hangarur +STR_ORDER_TRAIN_DEPOT :Tok goymsla +STR_ORDER_ROAD_VEHICLE_DEPOT :Akfars goymsla +STR_ORDER_SHIP_DEPOT :Skips goymsla +STR_ORDER_GO_TO_NEAREST_DEPOT_FORMAT :{STRING} {STRING} {STRING} +STR_ORDER_GO_TO_DEPOT_FORMAT :{STRING} {DEPOT} + +STR_ORDER_REFIT_ORDER :(Bygg um til {STRING}) +STR_ORDER_REFIT_STOP_ORDER :(Bygg um til {STRING} og steðga) +STR_ORDER_STOP_ORDER :(Steðga) + +STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING} + +STR_ORDER_IMPLICIT :(Undirskilt) + +STR_ORDER_FULL_LOAD :(Fult less) +STR_ORDER_FULL_LOAD_ANY :(Fult less onkran farm) +STR_ORDER_NO_LOAD :(Eingin lessing) +STR_ORDER_UNLOAD :(Avlessa og tak farm) +STR_ORDER_UNLOAD_FULL_LOAD :(Avlessa og bíða eftir fullum lessi) +STR_ORDER_UNLOAD_FULL_LOAD_ANY :(Avlessa og bíða eftir onkrun fullum lessi) +STR_ORDER_UNLOAD_NO_LOAD :(Avlessa og far avstað tómur) +STR_ORDER_TRANSFER :(Umskipa og tak farm) +STR_ORDER_TRANSFER_FULL_LOAD :(Umskipa og bíða eftir fullum lessi) +STR_ORDER_TRANSFER_FULL_LOAD_ANY :(Umskipa og bíða eftir onkrun fullum lessi) +STR_ORDER_TRANSFER_NO_LOAD :(Umskipa og far avstað tómur) +STR_ORDER_NO_UNLOAD :(Eingin avlessing og tak farm) +STR_ORDER_NO_UNLOAD_FULL_LOAD :(Eingin avlessing og bíða eftir fullum lessi) +STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY :(Eingin avlessing og bíða eftir onkrun fullum lessi) +STR_ORDER_NO_UNLOAD_NO_LOAD :(Eingin avlessing og eingin lessing) + +STR_ORDER_AUTO_REFIT :(Sjálvumbygg til {STRING}) +STR_ORDER_FULL_LOAD_REFIT :(Fult less við sjálvumbygg til {STRING}) +STR_ORDER_FULL_LOAD_ANY_REFIT :(Fult less onkran farm við sjálvumbygg til {STRING}) +STR_ORDER_UNLOAD_REFIT :(Avless og tak farm við sjálvumbygg til{STRING}) +STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(Avlessa og bíða eftir fullum lessi við sjálvumbygg til {STRING}) +STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(Avless og bíða eftir onkrun fullum lessi við sjálvumbygg til {STRING}) +STR_ORDER_TRANSFER_REFIT :(Umskipa og tak farm við sjálvumbygg til {STRING}) +STR_ORDER_TRANSFER_FULL_LOAD_REFIT :(Umskipa og bíða eftir fullum lessi við sjálvumbygg til {STRING}) +STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :(Umskipa og bíða eftir onkrun fullum lessi við sjálvumbygg til {STRING}) +STR_ORDER_NO_UNLOAD_REFIT :(Eingin avlessing og tak farm við sjálvumbygg til {STRING}) +STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT :(Eingin avlessing og bíða eftir fullum lessi við sjálvumbygg til {STRING}) +STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :(Eingin avlessing og bíða eftir onkrun fullum lessi við sjálvumbygg til {STRING}) + +STR_ORDER_AUTO_REFIT_ANY :tøkur farmur + +STR_ORDER_STOP_LOCATION_NEAR_END :[nær endandum] +STR_ORDER_STOP_LOCATION_MIDDLE :[miðjuni] +STR_ORDER_STOP_LOCATION_FAR_END :[fjart endanum] + +STR_ORDER_OUT_OF_RANGE :{RED} (Næsta ferðamál er uttanfyri vídd) + +STR_ORDER_CONDITIONAL_UNCONDITIONAL :Leyp til boð {COMMA} +STR_ORDER_CONDITIONAL_NUM :Leyp til boð {COMMA} tá {STRING} {STRING} {COMMA} +STR_ORDER_CONDITIONAL_TRUE_FALSE :Leyp til boð {COMMA} tá {STRING} {STRING} + +STR_INVALID_ORDER :{RED} (Ógildig boð) + +# Time table window +STR_TIMETABLE_TITLE :{WHITE}{VEHICLE} (Tíðarætlan) +STR_TIMETABLE_ORDER_VIEW :{BLACK}Boð +STR_TIMETABLE_ORDER_VIEW_TOOLTIP :{BLACK}Skift til boðs sýni + + +STR_TIMETABLE_NO_TRAVEL :Ferðast ikki +STR_TIMETABLE_DAYS :{COMMA} dag{P "" ar} + + + + + + +STR_TIMETABLE_CHANGE_SPEED_TOOLTIP :{BLACK}Broyt mest loyvdu ferðina á undirstrikaða boðinum + + + + +STR_TIMETABLE_EXPECTED :{BLACK}Væntað +STR_TIMETABLE_SCHEDULED :{BLACK}Ætlað +STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Skift ímillum væntað og ætlað + +STR_TIMETABLE_ARRIVAL_ABBREVIATION :K: +STR_TIMETABLE_DEPARTURE_ABBREVIATION :F: + + +# Date window (for timetable) +STR_DATE_CAPTION :{WHITE}Áset dato +STR_DATE_SET_DATE :{BLACK}Áset dato +STR_DATE_SET_DATE_TOOLTIP :{BLACK}Nýt ta valdu dagfestingina sum bryjunar dato fyri tíðarætlanina +STR_DATE_DAY_TOOLTIP :{BLACK}Vel dag +STR_DATE_MONTH_TOOLTIP :{BLACK}Vel mánað +STR_DATE_YEAR_TOOLTIP :{BLACK}Vel ár + + +# AI debug window +STR_AI_DEBUG :{WHITE}AI/Spæl skript debug +STR_AI_DEBUG_NAME_AND_VERSION :{BLACK}{STRING} (v{NUM}) +STR_AI_DEBUG_NAME_TOOLTIP :{BLACK}Navni á skriptinum +STR_AI_DEBUG_SETTINGS :{BLACK}Innstillingar +STR_AI_DEBUG_SETTINGS_TOOLTIP :{BLACK}Broyt innstillingar í skriptinum +STR_AI_DEBUG_RELOAD :{BLACK}Endurheinta AI +STR_AI_DEBUG_RELOAD_TOOLTIP :{BLACK}Drep AI, endurheinta skripti, og endurbyrja AI +STR_AI_DEBUG_MATCH_CASE :{BLACK}Samsvara stødd á bókstavum +STR_AI_DEBUG_CONTINUE :{BLACK}Halt á fram +STR_AI_DEBUG_CONTINUE_TOOLTIP :{BLACK}Set í gongd og halt á fram við AI +STR_AI_DEBUG_SELECT_AI_TOOLTIP :{BLACK}Sjá debug outputti fyri hetta AI +STR_AI_GAME_SCRIPT :{BLACK}Spæl script +STR_AI_GAME_SCRIPT_TOOLTIP :{BLACK}Kanna spæl script skránna + +STR_ERROR_AI_NO_AI_FOUND :Einki hóskandi AI funni at heinta.{}Hetta AI er ein gina og ger einki.{}Tú kann heinta niður fleiri ymisk AI gjøgnum 'Online tilfar' kervi +STR_ERROR_AI_PLEASE_REPORT_CRASH :{WHITE}Eitt av scriptunum ið koyra er krasja. Vinarliga melda hetta til script rithøvundan saman við eini skermmynd av AI/spæli script debug glugganum +STR_ERROR_AI_DEBUG_SERVER_ONLY :{YELLOW}AI/Game script debug gluggi er einans tøkur fyri servaran + +# AI configuration window +STR_AI_CONFIG_CAPTION :{WHITE}AI/Spæli script innstillingar +STR_AI_CONFIG_GAMELIST_TOOLTIP :{BLACK}Spæli scripti sum verður heinta í næsta spæli +STR_AI_CONFIG_AILIST_TOOLTIP :{BLACK}AI sum verða heintaði í næsta spæli +STR_AI_CONFIG_HUMAN_PLAYER :Menniskja spælari +STR_AI_CONFIG_RANDOM_AI :Tilvildarligt AI +STR_AI_CONFIG_NONE :(einki) + +STR_AI_CONFIG_MOVE_UP :{BLACK}Flyt upp +STR_AI_CONFIG_MOVE_UP_TOOLTIP :{BLACK}Flyt valda AI upp í listanum +STR_AI_CONFIG_MOVE_DOWN :{BLACK}Flyt niður +STR_AI_CONFIG_MOVE_DOWN_TOOLTIP :{BLACK}Flyt valda AI niður í listanum + +STR_AI_CONFIG_GAMESCRIPT :{SILVER}Spæli script +STR_AI_CONFIG_AI :{SILVER}AI + +STR_AI_CONFIG_CHANGE :{BLACK}Vel {STRING} +STR_AI_CONFIG_CHANGE_NONE : +STR_AI_CONFIG_CHANGE_AI :AI +STR_AI_CONFIG_CHANGE_GAMESCRIPT :Spæli script +STR_AI_CONFIG_CHANGE_TOOLTIP :{BLACK}Heinta eitt annað script +STR_AI_CONFIG_CONFIGURE :{BLACK}Innstilla +STR_AI_CONFIG_CONFIGURE_TOOLTIP :{BLACK}Innstilla script parametur + +# Available AIs window +STR_AI_LIST_CAPTION :{WHITE}Tøk {STRING} +STR_AI_LIST_CAPTION_AI :AI +STR_AI_LIST_CAPTION_GAMESCRIPT :Spæli script +STR_AI_LIST_TOOLTIP :{BLACK}Trýst fyri at velja eitt script + +STR_AI_LIST_AUTHOR :{LTBLUE}Rithøvundur: {ORANGE}{STRING} +STR_AI_LIST_VERSION :{LTBLUE}Útgava: {ORANGE}{NUM} +STR_AI_LIST_URL :{LTBLUE}URL: {ORANGE}{STRING} + +STR_AI_LIST_ACCEPT :{BLACK}Góðtak +STR_AI_LIST_ACCEPT_TOOLTIP :{BLACK}Vel undirstrikaða scripti +STR_AI_LIST_CANCEL :{BLACK}Angra +STR_AI_LIST_CANCEL_TOOLTIP :{BLACK}Ikki broyta scripti + +# AI Parameters +STR_AI_SETTINGS_CAPTION :{WHITE}{STRING} Parametur +STR_AI_SETTINGS_CAPTION_AI :AI +STR_AI_SETTINGS_CAPTION_GAMESCRIPT :Spæl Script +STR_AI_SETTINGS_CLOSE :{BLACK}Lat aftur +STR_AI_SETTINGS_RESET :{BLACK}Endurstilla +STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING} +STR_AI_SETTINGS_START_DELAY :Tali av døgum til hetta AI byrjar aftaná tað fyrra (umleið): {ORANGE}{STRING} + + +# Textfile window +STR_TEXTFILE_README_CAPTION :{WHITE}{STRING} readme fyri {STRING} +STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}{STRING} broytingarskrá fyri {STRING} +STR_TEXTFILE_LICENCE_CAPTION :{WHITE}{STRING} loyvi fyri {STRING} +STR_TEXTFILE_VIEW_README :{BLACK}Sjá readme +STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}Broytingarskrá +STR_TEXTFILE_VIEW_LICENCE :{BLACK}Loyvi + + +# 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}Kostnaður: {CURRENCY_LONG} +STR_INCOME_FLOAT_COST :{RED}Kostnaður: {CURRENCY_LONG} +STR_INCOME_FLOAT_INCOME_SMALL :{TINY_FONT}{GREEN}Inntøka: {CURRENCY_LONG} +STR_INCOME_FLOAT_INCOME :{GREEN}Inntøka: {CURRENCY_LONG} +STR_FEEDER_TINY :{TINY_FONT}{YELLOW}Umskipan: {CURRENCY_LONG} +STR_FEEDER :{YELLOW}Umskipan: {CURRENCY_LONG} +STR_FEEDER_INCOME_TINY :{TINY_FONT}{YELLOW}Yvurflyting: {CURRENCY_LONG}{WHITE} / {GREEN}Inntøka: {CURRENCY_LONG} +STR_FEEDER_INCOME :{YELLOW}Yvurflyting: {CURRENCY_LONG}{WHITE} / {GREEN}Inntøka: {CURRENCY_LONG} +STR_FEEDER_COST_TINY :{TINY_FONT}{YELLOW}Yvurflyting: {CURRENCY_LONG}{WHITE} / {RED}Kostnaður: {CURRENCY_LONG} +STR_FEEDER_COST :{YELLOW}Yvurflyting: {CURRENCY_LONG}{WHITE} / {RED}Kostnaður: {CURRENCY_LONG} +STR_MESSAGE_ESTIMATED_COST :{WHITE}Kostnaðar meting: {CURRENCY_LONG} +STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Inntøku meting: {CURRENCY_LONG} + +# Saveload messages +STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Goyming er enn í gongd,{}vinarliga bíða til ta er liðugt! +STR_ERROR_AUTOSAVE_FAILED :{WHITE}Sjálvgoymsla eydnaðist ikki +STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Ikki ført fyri at lesa drev +STR_ERROR_GAME_SAVE_FAILED :{WHITE}Eydnaðist ikki at goyma spæl{}{STRING} +STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Ikki ført fyri at strika fílu +STR_ERROR_GAME_LOAD_FAILED :{WHITE}Eydnaðist ikki at heinta spæl{}{STRING} +STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Innanhýsis villa: {STRING} +STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Goymda spæli er broti - {STRING} +STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Goymda spæli er frá nýggjari útgávu +STR_GAME_SAVELOAD_ERROR_FILE_NOT_READABLE :Fílur kann ikki lesast +STR_GAME_SAVELOAD_ERROR_FILE_NOT_WRITEABLE :Kann ikki skriva til fíl +STR_GAME_SAVELOAD_ERROR_DATA_INTEGRITY_CHECK_FAILED :Kanning av dátu integriteti eydnaðist ikki +STR_GAME_SAVELOAD_NOT_AVAILABLE : +STR_WARNING_LOADGAME_REMOVED_TRAMS :{WHITE}Spæl var goymt í útgavu sum ikki stuðlar sporvognum. Allir sporvognar eru burtur beindir + +# Map generation messages +STR_ERROR_COULD_NOT_CREATE_TOWN :{WHITE}Kort framleiðsla steðga...{}... eingi hóskandi støð til bygdir +STR_ERROR_NO_TOWN_IN_SCENARIO :{WHITE}... eingin bygd í hesum tilburðið + +STR_ERROR_PNGMAP :{WHITE}Kann ikki heinta landslag frá PNG... +STR_ERROR_PNGMAP_FILE_NOT_FOUND :{WHITE}... fíla ikki funnin +STR_ERROR_PNGMAP_IMAGE_TYPE :{WHITE}... eydnaðist ikki at skifta um myndaslag. 8 ella 24-bit PNG mynd neyðug +STR_ERROR_PNGMAP_MISC :{WHITE}... okkurt riggaði ikki (helst oyðiløgd fíla) + +STR_ERROR_BMPMAP :{WHITE}Kann ikki heinta landslag frá BMP... +STR_ERROR_BMPMAP_IMAGE_TYPE :{WHITE}... eydnaðist ikki at skifta um mynda slag + +STR_ERROR_HEIGHTMAP_TOO_LARGE :{WHITE}... mynd er ov stór + +STR_WARNING_HEIGHTMAP_SCALE_CAPTION :{WHITE}Støddar ávaring +STR_WARNING_HEIGHTMAP_SCALE_MESSAGE :{YELLOW}Tað er ikki viðmælt at broyta støddina á keldu kortinum ov nógv. Halda á fram við framleiðsluni? + +# Soundset messages +STR_WARNING_FALLBACK_SOUNDSET :{WHITE}Einans eitt fyribils ljóð sett var funni. Um tú vil hava ljóð, installera eitt ljóð sett gjøgnum tilfarðs niðurheintanar kervi + +# Screenshot related messages +STR_WARNING_SCREENSHOT_SIZE_CAPTION :{WHITE}Risa skermmynd +STR_WARNING_SCREENSHOT_SIZE_MESSAGE :{YELLOW}Skermmyndin fer at hava eina upploysn uppá {COMMA} x {COMMA} pikslar. Tøka av skermmyndini kann koma at taka eina góða løtu. Vil tú halda á fram? + +STR_MESSAGE_SCREENSHOT_SUCCESSFULLY :{WHITE}Skermmynd goymd við góðum úrsliti sum '{STRING}' +STR_ERROR_SCREENSHOT_FAILED :{WHITE}Skermmynd eydnaðist ikki! + +# Error message titles +STR_ERROR_MESSAGE_CAPTION :{YELLOW}Boð +STR_ERROR_MESSAGE_CAPTION_OTHER_COMPANY :{YELLOW}Boð frá {STRING} + +# Generic construction errors +STR_ERROR_OFF_EDGE_OF_MAP :{WHITE}Útav eggini á kortinum +STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP :{WHITE}Ov tætt við eggina á kortinum +STR_ERROR_NOT_ENOUGH_CASH_REQUIRES_CURRENCY :{WHITE}Ikki nóg miki av peningi - neyðugt er vi {CURRENCY_LONG} +STR_ERROR_FLAT_LAND_REQUIRED :{WHITE}Flatt lendi neyðugt +STR_ERROR_LAND_SLOPED_IN_WRONG_DIRECTION :{WHITE}Lendi hellur skeivan veg +STR_ERROR_CAN_T_DO_THIS :{WHITE}Kann ikki gera hetta... +STR_ERROR_BUILDING_MUST_BE_DEMOLISHED :{WHITE}Bygningur má brótast niður fyrst +STR_ERROR_CAN_T_CLEAR_THIS_AREA :{WHITE}Kann ikki reinsa hetta øki... +STR_ERROR_SITE_UNSUITABLE :{WHITE}... stað óhóskandi +STR_ERROR_ALREADY_BUILT :{WHITE}... longu bygt +STR_ERROR_OWNED_BY :{WHITE}... ogn hjá {STRING} +STR_ERROR_AREA_IS_OWNED_BY_ANOTHER :{WHITE}... øki er ogn hjá aðrari fyritøku +STR_ERROR_TERRAFORM_LIMIT_REACHED :{WHITE}... marki fyri landslags broyting er rokki +STR_ERROR_CLEARING_LIMIT_REACHED :{WHITE}... marki at reinsa puntar er rokki +STR_ERROR_TREE_PLANT_LIMIT_REACHED :{WHITE}... marki fyri at planta trø er rokki +STR_ERROR_NAME_MUST_BE_UNIQUE :{WHITE}Navn má vera serstakt +STR_ERROR_GENERIC_OBJECT_IN_THE_WAY :{WHITE}{1:STRING} í vegin +STR_ERROR_NOT_ALLOWED_WHILE_PAUSED :{WHITE}Ikki loyvt meðan steðgur er + +# Local authority errors +STR_ERROR_LOCAL_AUTHORITY_REFUSES_TO_ALLOW_THIS :{WHITE}{TOWN} mynduleikanir á staðnum sýta fyri at loyva hesum +STR_ERROR_LOCAL_AUTHORITY_REFUSES_AIRPORT :{WHITE}{TOWN} mynduleikanir á staðnum sýta fyri at loyva at byggja eina aðra floghavn í hesi bygdini +STR_ERROR_LOCAL_AUTHORITY_REFUSES_NOISE :{WHITE}{TOWN} mynduleikin á staðnum sýtur at loyva floghavn vegna stúran um óljóð +STR_ERROR_BRIBE_FAILED :{WHITE}Tín roynd at mutra er avdúka av einum landsparta kanningarleiðara + +# Levelling errors +STR_ERROR_CAN_T_RAISE_LAND_HERE :{WHITE}Kann ikki hækka lendi her... +STR_ERROR_CAN_T_LOWER_LAND_HERE :{WHITE}Kann ikki lækka lendi her... +STR_ERROR_CAN_T_LEVEL_LAND_HERE :{WHITE}Kann ikki javna lendi her... +STR_ERROR_EXCAVATION_WOULD_DAMAGE :{WHITE}Útgrevstur hevði gjørt skaða á berghol +STR_ERROR_ALREADY_AT_SEA_LEVEL :{WHITE}... longu við sjóvarmálan +STR_ERROR_TOO_HIGH :{WHITE}... ov høgt +STR_ERROR_ALREADY_LEVELLED :{WHITE}... longu flatt + +# Company related errors +STR_ERROR_CAN_T_CHANGE_COMPANY_NAME :{WHITE}Kann ikki broyta navn á fyritøku... +STR_ERROR_CAN_T_CHANGE_PRESIDENT :{WHITE}Kann ikki broyta navn á leiðara... + +STR_ERROR_MAXIMUM_PERMITTED_LOAN :{WHITE}... hægst loyvda lán er {CURRENCY_LONG} +STR_ERROR_CAN_T_BORROW_ANY_MORE_MONEY :{WHITE}Kann ikki lána meira pening... +STR_ERROR_LOAN_ALREADY_REPAYED :{WHITE}... einki lán at gjalda aftur +STR_ERROR_CURRENCY_REQUIRED :{WHITE}... {CURRENCY_LONG} neyðugar +STR_ERROR_CAN_T_REPAY_LOAN :{WHITE}Kann ikki gjalda lán aftur... +STR_ERROR_INSUFFICIENT_FUNDS :{WHITE}Kann ikki geva pening burtur ið er lándur frá bankanum... +STR_ERROR_CAN_T_BUY_COMPANY :{WHITE}Kann ikki keypa fyritøku... +STR_ERROR_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}Kann ikki byggja fyritøku høvuðsborg... +STR_ERROR_CAN_T_BUY_25_SHARE_IN_THIS :{WHITE}Kann ikki keypa 25% partabræv í hesi fyritøkuni... +STR_ERROR_CAN_T_SELL_25_SHARE_IN :{WHITE}Kann ikki selja 25% partabræv í hesari fyritøkuni... +STR_ERROR_PROTECTED :{WHITE}Hendan fyritøkan er ikki nóg gomul at býta partabrøv enn... + +# Town related errors +STR_ERROR_CAN_T_GENERATE_TOWN :{WHITE}Kann ikki byggja bygdir... +STR_ERROR_CAN_T_RENAME_TOWN :{WHITE}Kann ikki navngeva bygd... +STR_ERROR_CAN_T_FOUND_TOWN_HERE :{WHITE}Kann ikki stovna bygd her... +STR_ERROR_CAN_T_EXPAND_TOWN :{WHITE}Kann ikki vaksa um bygdina... +STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP_SUB :{WHITE}... ov tætt við eggina á kortinum +STR_ERROR_TOO_CLOSE_TO_ANOTHER_TOWN :{WHITE}... ov tætt við eina aðra bygd +STR_ERROR_TOO_MANY_TOWNS :{WHITE}... ov nógvar bygdir +STR_ERROR_NO_SPACE_FOR_TOWN :{WHITE}... tað er einki pláss eftir á kortinum +STR_ERROR_TOWN_EXPAND_WARN_NO_ROADS :{WHITE}Bygdin byggir ikki vegir. Tú kanst tendra vega byggjing í Víðkaðir Innstillingar->Búðskapur->Bygdir +STR_ERROR_ROAD_WORKS_IN_PROGRESS :{WHITE}Veg arbeiði í gongd +STR_ERROR_TOWN_CAN_T_DELETE :{WHITE}Kann ikki strika hesa bygdina...{}Ein støð ella goymsla vísur til bygdina, ella ein puntur ið er ogn hjá bygdini kann ikki beinast burtur +STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}... einki hóskandi stað til eina standmynd í miðjuni av hesi bygdini + +# Industry related errors +STR_ERROR_TOO_MANY_INDUSTRIES :{WHITE}... ov nógvir ídnaðir +STR_ERROR_CAN_T_GENERATE_INDUSTRIES :{WHITE}Kann ikki framleiða ídnaðir... +STR_ERROR_CAN_T_BUILD_HERE :{WHITE}Kann ikki byggja {STRING} her... +STR_ERROR_CAN_T_CONSTRUCT_THIS_INDUSTRY :{WHITE}Kann ikki byggja hetta ídnaðar slagi her... +STR_ERROR_INDUSTRY_TOO_CLOSE :{WHITE}... ov nær við annan ídnað +STR_ERROR_MUST_FOUND_TOWN_FIRST :{WHITE}... neyðugt at stovna bygd fyrst +STR_ERROR_ONLY_ONE_ALLOWED_PER_TOWN :{WHITE}... einans ein loyvd per bygd +STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS_WITH_POPULATION_OF_1200 :{WHITE}... kann einans byggjast í bygdum við einum fólkatalið á minst 1200 +STR_ERROR_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}... kann einans byggjast í frumskógar økjum +STR_ERROR_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}... kann einans byggjast í oyðimarka økjum +STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}... kann einans byggjast í bygdum (í staðin fyri hús) +STR_ERROR_CAN_ONLY_BE_BUILT_NEAR_TOWN_CENTER :{WHITE}... kann einans byggjast nær bygdar miðum +STR_ERROR_CAN_ONLY_BE_BUILT_IN_LOW_AREAS :{WHITE}... kann einans byggjast í lágum økjum +STR_ERROR_CAN_ONLY_BE_POSITIONED :{WHITE}... kann einans setast nær við eggina av kortinum +STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... skógur kann einans plantast omanfyri kava-linjuna +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øð... +STR_ERROR_CAN_T_BUILD_TRUCK_STATION :{WHITE}Kann ikki byggja lastbila støð... +STR_ERROR_CAN_T_BUILD_PASSENGER_TRAM_STATION :{WHITE}Kann ikki byggja ferðafólks sporvogna støð... +STR_ERROR_CAN_T_BUILD_CARGO_TRAM_STATION :{WHITE}Kann ikki byggja farma sporvogna støð... +STR_ERROR_CAN_T_BUILD_DOCK_HERE :{WHITE}Kann ikki byggja havn her... +STR_ERROR_CAN_T_BUILD_AIRPORT_HERE :{WHITE}Kann ikki byggja flogvøll her... + +STR_ERROR_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Førðir meira enn eina verðandi støð/lessi øki saman +STR_ERROR_STATION_TOO_SPREAD_OUT :{WHITE}... støð ov tamba út +STR_ERROR_TOO_MANY_STATIONS_LOADING :{WHITE}Ov nógvar støðir/lessi øki +STR_ERROR_TOO_MANY_STATION_SPECS :{WHITE}Ov nógvir tok støð deilir +STR_ERROR_TOO_MANY_BUS_STOPS :{WHITE}Ov nógvir buss steðgir +STR_ERROR_TOO_MANY_TRUCK_STOPS :{WHITE}Ov nógvar lastbila støðir +STR_ERROR_TOO_CLOSE_TO_ANOTHER_STATION :{WHITE}Ov tætt við eina aðra støð/lessi øki +STR_ERROR_TOO_CLOSE_TO_ANOTHER_DOCK :{WHITE}Ov tætt við eina aðra havn +STR_ERROR_TOO_CLOSE_TO_ANOTHER_AIRPORT :{WHITE}Ov tætt við eina aðra floghavn +STR_ERROR_CAN_T_RENAME_STATION :{WHITE}Kann ikki navngeva støð... +STR_ERROR_DRIVE_THROUGH_ON_TOWN_ROAD :{WHITE}... hesin vegurin er bygdar ogn +STR_ERROR_DRIVE_THROUGH_DIRECTION :{WHITE}... vegur fer skeivan veg +STR_ERROR_DRIVE_THROUGH_CORNER :{WHITE}... gjøgnumkoyrings steðgir kunnu ikki hava horn +STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}... gjøgnum koyrings steðgir kunnu ikki hava samanrenningar + +# Station destruction related errors +STR_ERROR_CAN_T_REMOVE_PART_OF_STATION :{WHITE}Kann ikki beina burtur deil av støð... +STR_ERROR_MUST_REMOVE_RAILWAY_STATION_FIRST :{WHITE}Neyðugt at beina burtur tok støð fyrst +STR_ERROR_CAN_T_REMOVE_BUS_STATION :{WHITE}Kann ikki beina burtur bus støð... +STR_ERROR_CAN_T_REMOVE_TRUCK_STATION :{WHITE}Kann ikki beina burtur lastbila støð... +STR_ERROR_CAN_T_REMOVE_PASSENGER_TRAM_STATION :{WHITE}Kann ikki beina burtur ferðafólka sporvogna støð... +STR_ERROR_CAN_T_REMOVE_CARGO_TRAM_STATION :{WHITE}Kann ikki beina burtur farma sporvogna støð... +STR_ERROR_MUST_REMOVE_ROAD_STOP_FIRST :{WHITE}Neyðugt at beina burtur veg steðg fyrst +STR_ERROR_THERE_IS_NO_STATION :{WHITE}... eingin støð er her + +STR_ERROR_MUST_DEMOLISH_RAILROAD :{WHITE}Neyðugt at bróta niður tok støð fyrst +STR_ERROR_MUST_DEMOLISH_BUS_STATION_FIRST :{WHITE}Neyðugt at bróta biður bus støð fyrst +STR_ERROR_MUST_DEMOLISH_TRUCK_STATION_FIRST :{WHITE}Neyðugt at bróta niður lastbila støð fyrst +STR_ERROR_MUST_DEMOLISH_PASSENGER_TRAM_STATION_FIRST :{WHITE}Neyðugt at bróta niður ferðafólka sporvogna støð fyrst +STR_ERROR_MUST_DEMOLISH_CARGO_TRAM_STATION_FIRST :{WHITE}Neyðugt at bróta niður frakt sporvogna støð fyrst +STR_ERROR_MUST_DEMOLISH_DOCK_FIRST :{WHITE}Neyðugt at bróta havn niður fyrst +STR_ERROR_MUST_DEMOLISH_AIRPORT_FIRST :{WHITE}Neyðugt at bróta flogvøll niður fyrst + +# Waypoint related errors +STR_ERROR_WAYPOINT_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Førir saman meira enn eitt verðandi waypoint +STR_ERROR_TOO_CLOSE_TO_ANOTHER_WAYPOINT :{WHITE}Ov nær vi eitt annað waypoint + +STR_ERROR_CAN_T_BUILD_TRAIN_WAYPOINT :{WHITE}Kann ikki byggja tok waypoint her... +STR_ERROR_CAN_T_POSITION_BUOY_HERE :{WHITE}Kann ikki seta boyju her... +STR_ERROR_CAN_T_CHANGE_WAYPOINT_NAME :{WHITE}Kann ikki broyta navn á waypoint... + +STR_ERROR_CAN_T_REMOVE_TRAIN_WAYPOINT :{WHITE}Kann ikki beina burtur tok waypoint her... +STR_ERROR_MUST_REMOVE_RAILWAYPOINT_FIRST :{WHITE}Neyðugt at beina burtur jarnbreyta waypoint fyrst +STR_ERROR_BUOY_IN_THE_WAY :{WHITE}... boyja í vegin +STR_ERROR_BUOY_IS_IN_USE :{WHITE}... boyja verður nýtt av eini aðrari fyritøku! + +# Depot related errors +STR_ERROR_CAN_T_BUILD_TRAIN_DEPOT :{WHITE}Kann ikki byggja tok goymslu her... +STR_ERROR_CAN_T_BUILD_ROAD_DEPOT :{WHITE}Kann ikki byggja akfars goymslu her... +STR_ERROR_CAN_T_BUILD_TRAM_DEPOT :{WHITE}Kann ikki byggja sporvogna goymslu her... +STR_ERROR_CAN_T_BUILD_SHIP_DEPOT :{WHITE}Kann ikki byggja skips goymslu her... + +STR_ERROR_CAN_T_RENAME_DEPOT :{WHITE}Kann ikki navngeva goymslu + +STR_ERROR_TRAIN_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... má verða steðga inni í einari goymslu +STR_ERROR_ROAD_VEHICLE_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... má verða steðga inni í einari goymslu +STR_ERROR_SHIP_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... má verða steðga inni í einari goymslu +STR_ERROR_AIRCRAFT_MUST_BE_STOPPED_INSIDE_HANGAR :{WHITE}... má verða steðga inni í einum hangari + +STR_ERROR_TRAINS_CAN_ONLY_BE_ALTERED_INSIDE_A_DEPOT :{WHITE}Tok kunnu einans borytast tá tey eru steðga í eini goymslu +STR_ERROR_TRAIN_TOO_LONG :{WHITE}Tok ov langt +STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE :{WHITE}Kann ikki venda akfari vi... +STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE_MULTIPLE_UNITS :{WHITE}... inniheldur fleiri eindir +STR_ERROR_INCOMPATIBLE_RAIL_TYPES :Spor sløg passa ikki saman + +STR_ERROR_CAN_T_MOVE_VEHICLE :{WHITE}Kann ikki flyta akfar... +STR_ERROR_REAR_ENGINE_FOLLOW_FRONT :{WHITE}Aftari tok motorur fylgjur altíð tí fremra tok motorinum +STR_ERROR_UNABLE_TO_FIND_ROUTE_TO :{WHITE}Ikki førur fyri at finna veg til nærðendis goymslu +STR_ERROR_UNABLE_TO_FIND_LOCAL_DEPOT :{WHITE}Ikki førur fyri at finna nærðendis goymslu + +STR_ERROR_DEPOT_WRONG_DEPOT_TYPE :Skeivt goymslu slag + +# Autoreplace related errors +STR_ERROR_TRAIN_TOO_LONG_AFTER_REPLACEMENT :{WHITE}{VEHICLE} er ov langt aftaná umbýting +STR_ERROR_AUTOREPLACE_NOTHING_TO_DO :{WHITE}Ongar sjálvumbýting/endurnýggja reglur virknar +STR_ERROR_AUTOREPLACE_MONEY_LIMIT :(peninga mark) + +# Rail construction errors +STR_ERROR_IMPOSSIBLE_TRACK_COMBINATION :{WHITE}Ómøgulig spor blanding +STR_ERROR_MUST_REMOVE_SIGNALS_FIRST :{WHITE}Neyðugt at beina burtur jarnbreytatekin fyrst +STR_ERROR_NO_SUITABLE_RAILROAD_TRACK :{WHITE}Ikki hóskandi jarnbreyt +STR_ERROR_MUST_REMOVE_RAILROAD_TRACK :{WHITE}Neyðugt at beina burtur jarnbreyt fyrst +STR_ERROR_CROSSING_ON_ONEWAY_ROAD :{WHITE}Vegur er einvegis ella blokeraður +STR_ERROR_CROSSING_DISALLOWED :{WHITE}Javnir krossvegir ikki loyvdir fyri hetta slagi av tok bana +STR_ERROR_CAN_T_BUILD_SIGNALS_HERE :{WHITE}Kann ikki byggja jarnbreytatekin her... +STR_ERROR_CAN_T_BUILD_RAILROAD_TRACK :{WHITE}Kann ikki byggja jarnbreyt her... +STR_ERROR_CAN_T_REMOVE_RAILROAD_TRACK :{WHITE}Kann ikki beina burtur jarnbreyt hagani... +STR_ERROR_CAN_T_REMOVE_SIGNALS_FROM :{WHITE}Kann ikki beina burtur jarnbreytatekin hagani... +STR_ERROR_SIGNAL_CAN_T_CONVERT_SIGNALS_HERE :{WHITE}Kann ikki broyta jarnbreytatekin her... +STR_ERROR_THERE_IS_NO_RAILROAD_TRACK :{WHITE}... eingin jarnbreyt er +STR_ERROR_THERE_ARE_NO_SIGNALS :{WHITE}... eingi jarnbreytatekin eru + +STR_ERROR_CAN_T_CONVERT_RAIL :{WHITE}Kann ikki broyta spor slag her... + +# Road construction errors +STR_ERROR_MUST_REMOVE_ROAD_FIRST :{WHITE}Neyðugt at beina burtur veg fyrst +STR_ERROR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION :{WHITE}... einvegis vegir kunnu ikki hava samanrenningar +STR_ERROR_CAN_T_BUILD_ROAD_HERE :{WHITE}Kann ikki byggja veg her... +STR_ERROR_CAN_T_BUILD_TRAMWAY_HERE :{WHITE}Kann ikki byggja sporvogn her... +STR_ERROR_CAN_T_REMOVE_ROAD_FROM :{WHITE}Kann ikki beina burtur veg hagani... +STR_ERROR_CAN_T_REMOVE_TRAMWAY_FROM :{WHITE}Kann ikki beina burtur sporvogn hagani... +STR_ERROR_THERE_IS_NO_ROAD :{WHITE}... eingin vegur er +STR_ERROR_THERE_IS_NO_TRAMWAY :{WHITE}... eingin sporvognur er + +# Waterway construction errors +STR_ERROR_CAN_T_BUILD_CANALS :{WHITE}Kann ikki byggja ræsir her... +STR_ERROR_CAN_T_BUILD_LOCKS :{WHITE}Kann ikki byggja slúsur her... +STR_ERROR_CAN_T_PLACE_RIVERS :{WHITE}Kann ikki leggja løk her... +STR_ERROR_MUST_BE_BUILT_ON_WATER :{WHITE}... má byggjast á vatni +STR_ERROR_CAN_T_BUILD_ON_WATER :{WHITE}... kann ikki byggja á vatni +STR_ERROR_CAN_T_BUILD_ON_SEA :{WHITE}... kann ikki byggja á opnum havi +STR_ERROR_CAN_T_BUILD_ON_CANAL :{WHITE}... kann ikki byggja á rás +STR_ERROR_CAN_T_BUILD_ON_RIVER :{WHITE}... kann ikki byggja á løki +STR_ERROR_MUST_DEMOLISH_CANAL_FIRST :{WHITE}Neyðugt at bróta niður rás fyrst +STR_ERROR_CAN_T_BUILD_AQUEDUCT_HERE :{WHITE}Kann ikki byggja akvedukt her... + +# Tree related errors +STR_ERROR_TREE_ALREADY_HERE :{WHITE}... her er longu eitt træ +STR_ERROR_TREE_WRONG_TERRAIN_FOR_TREE_TYPE :{WHITE}... ikki rætt landslag fyri hetta slagi av træði +STR_ERROR_CAN_T_PLANT_TREE_HERE :{WHITE}Kann ikki planta træ her... + +# Bridge related errors +STR_ERROR_CAN_T_BUILD_BRIDGE_HERE :{WHITE}Kann ikki byggja brúgv her... +STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}Neyðugt at bróta brúgv niður fyrst +STR_ERROR_CAN_T_START_AND_END_ON :{WHITE}Kann ikki byrja og enda á sama stað +STR_ERROR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}Brúgvarendar ikki á somu hædd +STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Brúgvin er ov lág til landslagi +STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}Byrjan og endi mugu vera á somu linju +STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... báðir endar av brúnni mugu vera á landi +STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... brúgv ov long +STR_ERROR_BRIDGE_THROUGH_MAP_BORDER :{WHITE}Brúgv hevði enda uttanfyri korti + +# Tunnel related errors +STR_ERROR_CAN_T_BUILD_TUNNEL_HERE :{WHITE}Kann ikki byggja berghol her... +STR_ERROR_SITE_UNSUITABLE_FOR_TUNNEL :{WHITE}Øki óhóskandi til bergholsmuna +STR_ERROR_MUST_DEMOLISH_TUNNEL_FIRST :{WHITE}Neyðugt at bróta berghol niður fyrst +STR_ERROR_ANOTHER_TUNNEL_IN_THE_WAY :{WHITE}Eitt annað berghol í vegin +STR_ERROR_TUNNEL_THROUGH_MAP_BORDER :{WHITE}Bergholi hevði enda uttanfyri korti +STR_ERROR_UNABLE_TO_EXCAVATE_LAND :{WHITE}Ikki førur fyri at grava út fyri hin endan av bergholinum +STR_ERROR_TUNNEL_TOO_LONG :{WHITE}... berghol ov langt + +# Object related errors +STR_ERROR_TOO_MANY_OBJECTS :{WHITE}... ov nógvir lutir +STR_ERROR_CAN_T_BUILD_OBJECT :{WHITE}Kann ikki byggja lut... +STR_ERROR_OBJECT_IN_THE_WAY :{WHITE}Lutur í vegin +STR_ERROR_COMPANY_HEADQUARTERS_IN :{WHITE}... fyritøku høvuðsborg í vegin +STR_ERROR_CAN_T_PURCHASE_THIS_LAND :{WHITE}Kann ikki keypa hetta land øki... +STR_ERROR_YOU_ALREADY_OWN_IT :{WHITE}... tú eigur ta longu! + +# Group related errors +STR_ERROR_GROUP_CAN_T_CREATE :{WHITE}Kann ikki stovna bólk... +STR_ERROR_GROUP_CAN_T_DELETE :{WHITE}Kann ikki strika hendan bólkin... +STR_ERROR_GROUP_CAN_T_RENAME :{WHITE}Kann ikki navngeva bólk... +STR_ERROR_GROUP_CAN_T_REMOVE_ALL_VEHICLES :{WHITE}Kann ikki beina øll akfør burtur frá hesum bólki... +STR_ERROR_GROUP_CAN_T_ADD_VEHICLE :{WHITE}Kann ikki leggja akfari til hendan bólkin... +STR_ERROR_GROUP_CAN_T_ADD_SHARED_VEHICLE :{WHITE}Kann ikki leggja deild akfør til bólkin... + +# Generic vehicle errors +STR_ERROR_TRAIN_IN_THE_WAY :{WHITE}Tok í vegin +STR_ERROR_ROAD_VEHICLE_IN_THE_WAY :{WHITE}Akfar í vegin +STR_ERROR_SHIP_IN_THE_WAY :{WHITE}Skip í vegin +STR_ERROR_AIRCRAFT_IN_THE_WAY :{WHITE}Flogfar í vegin + +STR_ERROR_CAN_T_REFIT_TRAIN :{WHITE}Kann ikki umbyggja tok... +STR_ERROR_CAN_T_REFIT_ROAD_VEHICLE :{WHITE}Kann ikki umbyggja akfar... +STR_ERROR_CAN_T_REFIT_SHIP :{WHITE}Kann ikki umbyggja skip... +STR_ERROR_CAN_T_REFIT_AIRCRAFT :{WHITE}Kann ikki umbyggja flogfar... + +STR_ERROR_CAN_T_RENAME_TRAIN :{WHITE}Kann ikki navngeva tok... +STR_ERROR_CAN_T_RENAME_ROAD_VEHICLE :{WHITE}Kann ikki navngeva akfar... +STR_ERROR_CAN_T_RENAME_SHIP :{WHITE}Kann ikki navngeva skip... +STR_ERROR_CAN_T_RENAME_AIRCRAFT :{WHITE}Kann ikki navngeva flogfar... + +STR_ERROR_CAN_T_STOP_START_TRAIN :{WHITE}Kann ikki steðga/seta í gongd tok... +STR_ERROR_CAN_T_STOP_START_ROAD_VEHICLE :{WHITE}Kann ikki steðga/seta í gongd akfar... +STR_ERROR_CAN_T_STOP_START_SHIP :{WHITE}Kann ikki steðga/seta í gongd skip... +STR_ERROR_CAN_T_STOP_START_AIRCRAFT :{WHITE}Kann ikki steðga/seta í gongd flogfar... + +STR_ERROR_CAN_T_SEND_TRAIN_TO_DEPOT :{WHITE}Kann ikki senda tok til goymslu... +STR_ERROR_CAN_T_SEND_ROAD_VEHICLE_TO_DEPOT :{WHITE}Kann ikki senda akfar til goymslu... +STR_ERROR_CAN_T_SEND_SHIP_TO_DEPOT :{WHITE}Kann ikki senda skip til goymslu... +STR_ERROR_CAN_T_SEND_AIRCRAFT_TO_HANGAR :{WHITE}Kann ikki senda flogfar til hangar,,, + +STR_ERROR_CAN_T_BUY_TRAIN :{WHITE}Kann ikki keypa tok... +STR_ERROR_CAN_T_BUY_ROAD_VEHICLE :{WHITE}Kann ikki keypa akfar... +STR_ERROR_CAN_T_BUY_SHIP :{WHITE}Kann ikki keypa skip... +STR_ERROR_CAN_T_BUY_AIRCRAFT :{WHITE}Kann ikki keypa flogfar... + +STR_ERROR_CAN_T_RENAME_TRAIN_TYPE :{WHITE}Kann ikki navngeva tok slag... +STR_ERROR_CAN_T_RENAME_ROAD_VEHICLE_TYPE :{WHITE}Kann ikki navngeva akfars slag... +STR_ERROR_CAN_T_RENAME_SHIP_TYPE :{WHITE}Kann ikki navngeva skipa slag... +STR_ERROR_CAN_T_RENAME_AIRCRAFT_TYPE :{WHITE}Kann ikki navngeva flogfars slag... + +STR_ERROR_CAN_T_SELL_TRAIN :{WHITE}Kann ikki selja tok... +STR_ERROR_CAN_T_SELL_ROAD_VEHICLE :{WHITE}Kann ikki selja akfar... +STR_ERROR_CAN_T_SELL_SHIP :{WHITE}Kann ikki selja skip... +STR_ERROR_CAN_T_SELL_AIRCRAFT :{WHITE}Kann ikki selja flogfar... + +STR_ERROR_RAIL_VEHICLE_NOT_AVAILABLE :{WHITE}Tok er ikki tøkt +STR_ERROR_ROAD_VEHICLE_NOT_AVAILABLE :{WHITE}Akfar er ikki tøkt +STR_ERROR_SHIP_NOT_AVAILABLE :{WHITE}Skip er ikki tøkt +STR_ERROR_AIRCRAFT_NOT_AVAILABLE :{WHITE}Flogfar er ikki tøkt + +STR_ERROR_TOO_MANY_VEHICLES_IN_GAME :{WHITE}Ov nógv akfør í spæli +STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}Kann ikki broyta tænastu títtleika... + +STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... akfar smildra sundur + + +# Specific vehicle errors +STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Kann ikki fáa tok at fara framvið jarnbreytatekin tá vandi er... +STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Kann ikki venda toki vi... +STR_ERROR_TRAIN_START_NO_POWER :Tok hevur onga orku + +STR_ERROR_CAN_T_MAKE_ROAD_VEHICLE_TURN :{WHITE}Kann ikki fáa akfar at venda vi... + +STR_ERROR_AIRCRAFT_IS_IN_FLIGHT :{WHITE}Flogfar er á flogi + +# Order related errors +STR_ERROR_NO_MORE_SPACE_FOR_ORDERS :{WHITE}Ikki meira pláss eftir til boð +STR_ERROR_TOO_MANY_ORDERS :{WHITE}Ov nógv boð +STR_ERROR_CAN_T_INSERT_NEW_ORDER :{WHITE}Kann ikki seta inn nýggj boð... +STR_ERROR_CAN_T_DELETE_THIS_ORDER :{WHITE}Kann ikki strika hesi boðini... +STR_ERROR_CAN_T_MODIFY_THIS_ORDER :{WHITE}Kann ikki broyta hesi boðini... +STR_ERROR_CAN_T_MOVE_THIS_ORDER :{WHITE}Kann ikki flyta hesi boðini... +STR_ERROR_CAN_T_SKIP_ORDER :{WHITE}Kann ikki leypa um núverðandi boðið... +STR_ERROR_CAN_T_SKIP_TO_ORDER :{WHITE}Kann ikki leypa um valda boðið... +STR_ERROR_CAN_T_COPY_SHARE_ORDER :{WHITE}... akfar kann ikki fara til allar støðinar +STR_ERROR_CAN_T_ADD_ORDER :{WHITE}... akfar kann ikki fara til hasa støðina +STR_ERROR_CAN_T_ADD_ORDER_SHARED :{WHITE}... eitt akfar ið deilur hesi boðini kann ikki fara til hasa støðina + +STR_ERROR_CAN_T_SHARE_ORDER_LIST :{WHITE}Kann ikki deila boðslista... +STR_ERROR_CAN_T_STOP_SHARING_ORDER_LIST :{WHITE}Kann ikki steðga við at deila boðslista... +STR_ERROR_CAN_T_COPY_ORDER_LIST :{WHITE}Kann ikki avrita boðslista... +STR_ERROR_TOO_FAR_FROM_PREVIOUS_DESTINATION :{WHITE}... ov langt frá fyrra staði +STR_ERROR_AIRCRAFT_NOT_ENOUGH_RANGE :{WHITE}... flogfarið røkkur ikki + +# Timetable related errors +STR_ERROR_CAN_T_TIMETABLE_VEHICLE :{WHITE}Kann ikki gera tíðarætlan fyri akfrar... +STR_ERROR_TIMETABLE_ONLY_WAIT_AT_STATIONS :{WHITE}Akfør kunnu bara bíða við støðir +STR_ERROR_TIMETABLE_NOT_STOPPING_HERE :{WHITE}Hetta akfar steðgar ikki á hesi støðini + +# Sign related errors +STR_ERROR_TOO_MANY_SIGNS :{WHITE}... ov nógv skeltir +STR_ERROR_CAN_T_PLACE_SIGN_HERE :{WHITE}Kann ikki seta skelti her... +STR_ERROR_CAN_T_CHANGE_SIGN_NAME :{WHITE}Kann ikki broyta navn á skelti... +STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}Kann ikki strika skelti... + +# Translatable comment for OpenTTD's desktop shortcut +STR_DESKTOP_SHORTCUT_COMMENT :Eitt eftirgerðar spæl bygt á Transport Tycoon Deluxe + +# Translatable descriptions in media/baseset/*.ob* files + +##id 0x2000 +# Town building names +STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1 :Høgur skrivstovu bygningur +STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_1 :Skrivstovu bygningur +STR_TOWN_BUILDING_NAME_SMALL_BLOCK_OF_FLATS_1 :Lítil íbúðar bygningur +STR_TOWN_BUILDING_NAME_CHURCH_1 :Kirkja +STR_TOWN_BUILDING_NAME_LARGE_OFFICE_BLOCK_1 :Stórur skrivstovu bygningur +STR_TOWN_BUILDING_NAME_TOWN_HOUSES_1 :Bygdar hús +STR_TOWN_BUILDING_NAME_HOTEL_1 :Gistingarhús +STR_TOWN_BUILDING_NAME_STATUE_1 :Standmynd +STR_TOWN_BUILDING_NAME_FOUNTAIN_1 :Gosvatn +STR_TOWN_BUILDING_NAME_PARK_1 :Viðarlund +STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_2 :Skrivstovu bygningur +STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_1 :Handlar og skrivstovir +STR_TOWN_BUILDING_NAME_MODERN_OFFICE_BUILDING_1 :Nútímans skrivstovu bygningur +STR_TOWN_BUILDING_NAME_WAREHOUSE_1 :Vøruhús +STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_3 :Skrivstovu bygningur +STR_TOWN_BUILDING_NAME_STADIUM_1 :Stadium +STR_TOWN_BUILDING_NAME_OLD_HOUSES_1 :Gomul hús +STR_TOWN_BUILDING_NAME_COTTAGES_1 :Smáttir +STR_TOWN_BUILDING_NAME_HOUSES_1 :Hús +STR_TOWN_BUILDING_NAME_FLATS_1 :Íbúðir +STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_2 :Høgur skrivstovu bygningur +STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_2 :Handlar og skrivstovur +STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_3 :Handlar og skrivstovur +STR_TOWN_BUILDING_NAME_THEATER_1 :Sjónleikahús +STR_TOWN_BUILDING_NAME_STADIUM_2 :Stadium +STR_TOWN_BUILDING_NAME_OFFICES_1 :Skrivstovir +STR_TOWN_BUILDING_NAME_HOUSES_2 :Hús +STR_TOWN_BUILDING_NAME_CINEMA_1 :Biografur +STR_TOWN_BUILDING_NAME_SHOPPING_MALL_1 :Sølu miðstøð +STR_TOWN_BUILDING_NAME_IGLOO_1 :Igloo +STR_TOWN_BUILDING_NAME_TEPEES_1 :Indianaratelt +STR_TOWN_BUILDING_NAME_TEAPOT_HOUSE_1 :Thekannu-Hús +STR_TOWN_BUILDING_NAME_PIGGY_BANK_1 :Sparibússa + +##id 0x4800 +# industry names +STR_INDUSTRY_NAME_COAL_MINE :{G=n}Kola Nám +STR_INDUSTRY_NAME_POWER_STATION :{G=f}Orku Støð +STR_INDUSTRY_NAME_SAWMILL :{G=n}Sagverk +STR_INDUSTRY_NAME_FOREST :{G=m}Skógur +STR_INDUSTRY_NAME_OIL_REFINERY :{G=n}Olju Reinsiverk +STR_INDUSTRY_NAME_OIL_RIG :{G=m}Olju Boriplatformur +STR_INDUSTRY_NAME_FACTORY :{G=f}Verksmiðja +STR_INDUSTRY_NAME_PRINTING_WORKS :{G=f}Prent Verksmiðja +STR_INDUSTRY_NAME_STEEL_MILL :{G=f}Stál Verksmiðja +STR_INDUSTRY_NAME_FARM :{G=m}Bóndagarður +STR_INDUSTRY_NAME_COPPER_ORE_MINE :{G=n}Kopar Málms Nám +STR_INDUSTRY_NAME_OIL_WELLS :{G=m}Olju Brunnar +STR_INDUSTRY_NAME_BANK :{G=m}Peningastovnur +STR_INDUSTRY_NAME_FOOD_PROCESSING_PLANT :{G=f}Mat Viðgerðis Verksmiðja +STR_INDUSTRY_NAME_PAPER_MILL :{G=f}Pappírs Verksmiðja +STR_INDUSTRY_NAME_GOLD_MINE :{G=n}Gull Nám +STR_INDUSTRY_NAME_BANK_TROPIC_ARCTIC :{G=m}Peningastovnur +STR_INDUSTRY_NAME_DIAMOND_MINE :{G=n}Gymsteina Nám +STR_INDUSTRY_NAME_IRON_ORE_MINE :{G=n}Jarn Málms Nám +STR_INDUSTRY_NAME_FRUIT_PLANTATION :{G=f}Frukt Viðarlund +STR_INDUSTRY_NAME_RUBBER_PLANTATION :{G=f}Gummi Viðarlund +STR_INDUSTRY_NAME_WATER_SUPPLY :{G=f}Vatn Veiting +STR_INDUSTRY_NAME_WATER_TOWER :{G=n}Vatn Tárn +STR_INDUSTRY_NAME_FACTORY_2 :{G=f}Verksmiðja +STR_INDUSTRY_NAME_FARM_2 :{G=m}Bóndagarður +STR_INDUSTRY_NAME_LUMBER_MILL :{G=f}Timbur Verksmiðja +STR_INDUSTRY_NAME_COTTON_CANDY_FOREST :{G=m}Kandifloss Skógur +STR_INDUSTRY_NAME_CANDY_FACTORY :{G=f}Góðgætis Verksmiðja +STR_INDUSTRY_NAME_BATTERY_FARM :{G=m}Battarí Garður +STR_INDUSTRY_NAME_COLA_WELLS :{G=m}Kola Brunnar +STR_INDUSTRY_NAME_TOY_SHOP :{G=m}Leikutoys Handil +STR_INDUSTRY_NAME_TOY_FACTORY :{G=f}Leikutoys Verksmiðja +STR_INDUSTRY_NAME_PLASTIC_FOUNTAINS :{G=n}Plastikk Gosvatn +STR_INDUSTRY_NAME_FIZZY_DRINK_FACTORY :{G=f}Sodavatns Verksmiðja +STR_INDUSTRY_NAME_BUBBLE_GENERATOR :{G=m}Sápibløru Framleiðari +STR_INDUSTRY_NAME_TOFFEE_QUARRY :{G=n}Toffee brot +STR_INDUSTRY_NAME_SUGAR_MINE :{G=n}Sukur nám + +############ 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 :Ikki navngivið +STR_SV_TRAIN_NAME :{G=n}Tok {COMMA} +STR_SV_ROAD_VEHICLE_NAME :{G=n}Akfar {COMMA} +STR_SV_SHIP_NAME :{G=n}Skip {COMMA} +STR_SV_AIRCRAFT_NAME :{G=n}Flogfar {COMMA} + +STR_SV_STNAME :{STRING} +STR_SV_STNAME_NORTH :{STRING} Norður +STR_SV_STNAME_SOUTH :{STRING} Suður +STR_SV_STNAME_EAST :{STRING} Eystur +STR_SV_STNAME_WEST :{STRING} Vestur +STR_SV_STNAME_CENTRAL :{STRING} Miðstøð +STR_SV_STNAME_TRANSFER :{STRING} Umskipan +STR_SV_STNAME_HALT :{STRING} á Hjalla +STR_SV_STNAME_VALLEY :{STRING} Dalur +STR_SV_STNAME_HEIGHTS :{STRING} Hæddir +STR_SV_STNAME_WOODS :{STRING} Skógir +STR_SV_STNAME_LAKESIDE :{G=n}{STRING} við Vatni +STR_SV_STNAME_EXCHANGE :{G=f}{STRING} Skiftistøð +STR_SV_STNAME_AIRPORT :{G=f}{STRING} Floghavn +STR_SV_STNAME_OILFIELD :{G=n}{STRING} Oljufelt +STR_SV_STNAME_MINES :{G=n}{STRING} Nám +STR_SV_STNAME_DOCKS :{G=n}{STRING} Havnalag +STR_SV_STNAME_BUOY :{STRING} +STR_SV_STNAME_WAYPOINT :{STRING} +##id 0x6020 +STR_SV_STNAME_ANNEXE :{G=f}{STRING} Farstøð +STR_SV_STNAME_SIDINGS :{G=f}{STRING} Lí +STR_SV_STNAME_BRANCH :{G=f}{STRING} Grein +STR_SV_STNAME_UPPER :Ovara {STRING} +STR_SV_STNAME_LOWER :Niðara {STRING} +STR_SV_STNAME_HELIPORT :{G=m}{STRING} Tyrlupallur +STR_SV_STNAME_FOREST :{G=m}{STRING} Skógur +STR_SV_STNAME_FALLBACK :{G=f}{STRING} Støð #{NUM} +############ end of savegame specific region! + +##id 0x8000 +# Vehicle names +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank (Guv) +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_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) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CHANEY_JUBILEE_STEAM :Chaney 'Jubilee' (Guv) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_GINZU_A4_STEAM :Ginzu 'A4' (Guv) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_8P_STEAM :SH '8P' (Guv) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MANLEY_MOREL_DMU_DIESEL :Manley-Morel DMU (Diesel) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_DASH_DIESEL :'Dash' (Diesel) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_HENDRY_25_DIESEL :SH/Hendry '25' (Diesel) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_UU_37_DIESEL :UU '37' (Diesel) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_FLOSS_47_DIESEL :Floss '47' (Diesel) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CS_4000_DIESEL :CS 4000 (Diesel) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CS_2400_DIESEL :CS 2400 (Diesel) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CENTENNIAL_DIESEL :Centennial (Diesel) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KELLING_3100_DIESEL :Kelling 3100 (Diesel) +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 :SH '125' (Diesel) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_30_ELECTRIC :SH '30' (Ravmagn) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_40_ELECTRIC :SH '40' (Ravmagn) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_T_I_M_ELECTRIC :'T.I.M.' (Ravmagn) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_ASIASTAR_ELECTRIC :'AsiaStar' (Ravmagn) +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PASSENGER_CAR :Ferðafólka vognur +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_MAIL_VAN :Post vognur +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COAL_CAR :Kol vognur +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_OIL_TANKER :Olju vognur +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_LIVESTOCK_VAN :Kríatúr vognur +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_GOODS_VAN :Góðs vognur +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_GRAIN_HOPPER :Korn vognur +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_WOOD_TRUCK :Timbur vognur +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_IRON_ORE_HOPPER :Jarn málm vognur +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_STEEL_TRUCK :Stál vognur +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_ARMORED_VAN :Skjøldraður vognur +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FOOD_VAN :Mat vognur +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PAPER_TRUCK :Pappír vognur +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COPPER_ORE_HOPPER :Kopar málm vognur +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_WATER_TANKER :Vatn vognur +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FRUIT_TRUCK :Frukt vognur +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_RUBBER_TRUCK :Gummi vognur +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_SUGAR_TRUCK :Sukur vognur +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COTTON_CANDY_HOPPER :Kandifloss vognur +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_TOFFEE_HOPPER :Toffee vognur +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_BUBBLE_VAN :Sápibløru vognur +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COLA_TANKER :Kola vognur +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_CANDY_VAN :Góðgæti vognur +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_TOY_VAN :Leikutoy vognur +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_BATTERY_TRUCK :Battarí vognur +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FIZZY_DRINK_TRUCK :Sodavatn vognur +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PLASTIC_TRUCK :Plastikk vognur +STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_X2001_ELECTRIC :'X2001' (Ravmagn) +STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_MILLENNIUM_Z1_ELECTRIC :'Millennium Z1' (Ravmagn) +STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_WIZZOWOW_Z99 :Wizzowow Z99 +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PASSENGER_CAR :Ferðafólka vognur +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_MAIL_VAN :Post vognur +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COAL_CAR :Kol vognur +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_OIL_TANKER :Olju vognur +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_LIVESTOCK_VAN :Kríatúr vognur +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_GOODS_VAN :Góðs vognur +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_GRAIN_HOPPER :Korn vognur +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_WOOD_TRUCK :Timbur vognur +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_IRON_ORE_HOPPER :Jarn málm vognur +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_STEEL_TRUCK :Stál vognur +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_ARMORED_VAN :Skjøldraður vognur +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FOOD_VAN :Mat vognur +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PAPER_TRUCK :Pappír vognur +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COPPER_ORE_HOPPER :Kopar málm vognur +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_WATER_TANKER :Vatn vognur +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FRUIT_TRUCK :Frukt vognur +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_RUBBER_TRUCK :Gummi vognur +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_SUGAR_TRUCK :Sukur vognur +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COTTON_CANDY_HOPPER :Kandifloss vognur +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_TOFFEE_HOPPER :Toffe vognur +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_BUBBLE_VAN :Sápibløru vognur +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COLA_TANKER :Kola vognur +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_CANDY_VAN :Góðgæti vognur +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_TOY_VAN :Leikutoy vognur +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_BATTERY_TRUCK :Battai vognur +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FIZZY_DRINK_TRUCK :Sodavatn vognur +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PLASTIC_TRUCK :Plastikk vognur +STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV1_LEVIATHAN_ELECTRIC :Lev1 'Leviathan' (Ravmagn) +STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV2_CYCLOPS_ELECTRIC :Lev2 'Cyclops' (Ravmagn) +STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV3_PEGASUS_ELECTRIC :Lev3 'Pegasus' (Ravmagn) +STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV4_CHIMAERA_ELECTRIC :Lev4 'Chimaera' (Ravmagn) +STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_WIZZOWOW_ROCKETEER :Wizzowow Rocketeer +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PASSENGER_CAR :Ferðafólk vognur +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_MAIL_VAN :Post vognur +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COAL_CAR :Kol vognur +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_OIL_TANKER :Olju vognur +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_LIVESTOCK_VAN :Kríatúr vognur +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_GOODS_VAN :Góðs vognur +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_GRAIN_HOPPER :Korn vognur +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_WOOD_TRUCK :Timbur vognur +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_IRON_ORE_HOPPER :Jarn málm vognur +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_STEEL_TRUCK :Stál vognur +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_ARMORED_VAN :Skjøldraður vognur +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FOOD_VAN :Mat vognur +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PAPER_TRUCK :Pappír vognur +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COPPER_ORE_HOPPER :Kopar málm vognur +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_WATER_TANKER :Vatn vognur +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FRUIT_TRUCK :Frukt vognur +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_RUBBER_TRUCK :Gummi vognur +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_SUGAR_TRUCK :Sukur vognur +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COTTON_CANDY_HOPPER :Kandifloss vognur +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_TOFFEE_HOPPER :Toffee Vognur +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_BUBBLE_VAN :Sápibløra Vognur +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COLA_TANKER :Kola tanga vognur +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_CANDY_VAN :Góðgætis Vognur +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_TOY_VAN :Leikutoys Vognur +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_BATTERY_TRUCK :Battarí Vognur +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FIZZY_DRINK_TRUCK :Fizzy Drink Vognur +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PLASTIC_TRUCK :Plastikk Vognur +STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_REGAL_BUS :MPS Regal Bussur +STR_VEHICLE_NAME_ROAD_VEHICLE_HEREFORD_LEOPARD_BUS :Hereford Leopard Bussur +STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_BUS :Foster Bussur +STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_MKII_SUPERBUS :Foster MkII Superbussur +STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKI_BUS :Ploddyphut MkI Bussur +STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKII_BUS :Ploddyphut MkII Bussur +STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKIII_BUS :Ploddyphut MkIII Bussur +STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_COAL_TRUCK :Balogh Kol Lastbilur +STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_COAL_TRUCK :Uhl Kol Lastbilur +STR_VEHICLE_NAME_ROAD_VEHICLE_DW_COAL_TRUCK :DW Kol Lastbilur +STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_MAIL_TRUCK :MPS Post Lastbilur +STR_VEHICLE_NAME_ROAD_VEHICLE_REYNARD_MAIL_TRUCK :Reynard Post Lastbilur +STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_MAIL_TRUCK :Perry Post Lastbilur +STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_MAIL_TRUCK :MightyMover Post Lastbilur +STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_MAIL_TRUCK :Powernaught Post Lastbilur +STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_MAIL_TRUCK :Wizzowow Post Lastbilur +STR_VEHICLE_NAME_ROAD_VEHICLE_WITCOMBE_OIL_TANKER :Witcombe Olju Tangabilur +STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_OIL_TANKER :Foster Olju Tangabilur +STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_OIL_TANKER :Perry Olju Tangabilur +STR_VEHICLE_NAME_ROAD_VEHICLE_TALBOTT_LIVESTOCK_VAN :Talbott Kríatúr Vørðubilur +STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_LIVESTOCK_VAN :Uhl Kríatúr Vørðubilur +STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_LIVESTOCK_VAN :Foster Kríatúr Vørðubilur +STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_GOODS_TRUCK :Balogh Góðs Lastbilur +STR_VEHICLE_NAME_ROAD_VEHICLE_CRAIGHEAD_GOODS_TRUCK :Craighead Góðs Lastbilur +STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_GOODS_TRUCK :Goss Góðs Lastbilur +STR_VEHICLE_NAME_ROAD_VEHICLE_HEREFORD_GRAIN_TRUCK :Hereford Korn Lastbilur +STR_VEHICLE_NAME_ROAD_VEHICLE_THOMAS_GRAIN_TRUCK :Thomas Korn Lastbilur +STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_GRAIN_TRUCK :Goss Korn Lastbilur +STR_VEHICLE_NAME_ROAD_VEHICLE_WITCOMBE_WOOD_TRUCK :Witcombe Timbur Lastbilur +STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_WOOD_TRUCK :Foster Timbur Lastbilur +STR_VEHICLE_NAME_ROAD_VEHICLE_MORELAND_WOOD_TRUCK :Moreland Timbur Lastbilur +STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_IRON_ORE_TRUCK :MPS Jarn Málm Lastbilur +STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_IRON_ORE_TRUCK :Uhl Jarn Málm Lastbilur +STR_VEHICLE_NAME_ROAD_VEHICLE_CHIPPY_IRON_ORE_TRUCK :Chippy Jarn Málm Lastbilur +STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_STEEL_TRUCK :Balogh Stál Lastbilur +STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_STEEL_TRUCK :Uhl Stál Lastbilur +STR_VEHICLE_NAME_ROAD_VEHICLE_KELLING_STEEL_TRUCK :Kelling Stál Lastbilur +STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_ARMORED_TRUCK :Balogh Skjøldraður Lastbilur +STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_ARMORED_TRUCK :Uhl Skjøldraður Lastbilur +STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_ARMORED_TRUCK :Foster Skjøldraður Lastbilur +STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_FOOD_VAN :Foster Mat Vørðubilur +STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_FOOD_VAN :Perry Mat Vørðubilur +STR_VEHICLE_NAME_ROAD_VEHICLE_CHIPPY_FOOD_VAN :Chippy Food Vørðubilur +STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_PAPER_TRUCK :Uhl Paper Lastbilur +STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_PAPER_TRUCK :Balogh Paper Lastbilur +STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_PAPER_TRUCK :MPS Paper Lastbilur +STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_COPPER_ORE_TRUCK :MPS Kopar Málm Lastbilur +STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_COPPER_ORE_TRUCK :Uhl Kopar Málm Lastbilur +STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_COPPER_ORE_TRUCK :Goss Kopar Málm Lastbilur +STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_WATER_TANKER :Uhl Vatn Tangabilur +STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_WATER_TANKER :Balogh Vatn Tangabilur +STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_WATER_TANKER :MPS Vatn Tangabilur +STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_FRUIT_TRUCK :Balogh Fruit Lastbilur +STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_FRUIT_TRUCK :Uhl Fruit Lastbilur +STR_VEHICLE_NAME_ROAD_VEHICLE_KELLING_FRUIT_TRUCK :Kelling Frukt Lastbilur +STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_RUBBER_TRUCK :Balogh Gummi Lastbilur +STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_RUBBER_TRUCK :Uhl Gummi Lastbilur +STR_VEHICLE_NAME_ROAD_VEHICLE_RMT_RUBBER_TRUCK :RMT Gummi Lastbilur +STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_SUGAR_TRUCK :MightyMover Sukur Lastbilur +STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_SUGAR_TRUCK :Powernaught Sukur Lastbilur +STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_SUGAR_TRUCK :Wizzowow Sukur Lastbilur +STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_COLA_TRUCK :MightyMover Kola Lastbilur +STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_COLA_TRUCK :Powernaught Kola Lastbilur +STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_COLA_TRUCK :Wizzowow Kola Lastbilur +STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_COTTON_CANDY :MightyMover Candyfloss Lastbilur +STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_COTTON_CANDY :Powernaught Candyfloss Lastbilur +STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_COTTON_CANDY_TRUCK :Wizzowow Candyfloss Truck +STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_TOFFEE_TRUCK :MightyMover Toffee Lastbilur +STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_TOFFEE_TRUCK :Powernaught Toffee Lastbilur +STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_TOFFEE_TRUCK :Wizzowow Toffee Lastbilur +STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_TOY_VAN :MightyMover Toy Van +STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_TOY_VAN :Powernaught Toy Van +STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_TOY_VAN :Wizzowow Toy Van +STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_CANDY_TRUCK :MightyMover Góðgæti Lastbilur +STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_CANDY_TRUCK :Powernaught Góðgæti Lastbilur +STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_CANDY_TRUCK :Wizzowow Søtmeti Lastbilur +STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_BATTERY_TRUCK :MightyMover Battery Truck +STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_BATTERY_TRUCK :Powernaught Battery Truck +STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_BATTERY_TRUCK :Wizzowow Battarí Lastbilur +STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_FIZZY_DRINK :MightyMover Fizzy Drink Truck +STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_FIZZY_DRINK :Powernaught Fizzy Drink Truck +STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_FIZZY_DRINK_TRUCK :Wizzowow Fizzy Drink Truck +STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_PLASTIC_TRUCK :MightyMover Plastikk Lastbilur +STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_PLASTIC_TRUCK :Powernaught Plastikk Lastbilur +STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_PLASTIC_TRUCK :Wizzowow Plastik Lastbilur +STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_BUBBLE_TRUCK :MightyMover Bubble Truck +STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_BUBBLE_TRUCK :Powernaught Bubble Truck +STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_BUBBLE_TRUCK :Wizzowow Bobbli Lastbilur +STR_VEHICLE_NAME_SHIP_MPS_OIL_TANKER :MPS Oil Tanker +STR_VEHICLE_NAME_SHIP_CS_INC_OIL_TANKER :CS-Inc. Oil Tanker +STR_VEHICLE_NAME_SHIP_MPS_PASSENGER_FERRY :MPS Ferðafólka Ferga +STR_VEHICLE_NAME_SHIP_FFP_PASSENGER_FERRY :FFP Ferðafólka Ferga +STR_VEHICLE_NAME_SHIP_BAKEWELL_300_HOVERCRAFT :Bakewell 300 Hovercraft +STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :Chugger-Chug Ferðafólka Ferga +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_POWERNAUT_CARGO_SHIP :Powernaut Farma skip +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 :Tricario Tyrla +STR_VEHICLE_NAME_AIRCRAFT_GURU_X2_HELICOPTER :Guru X2 Tyrla +STR_VEHICLE_NAME_AIRCRAFT_POWERNAUT_HELICOPTER :Powernaut Tyrla + +##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} Boyja +STR_FORMAT_BUOY_NAME_SERIAL :{TOWN} Boyja #{COMMA} +STR_FORMAT_COMPANY_NUM :(Fyritøka {COMMA}) +STR_FORMAT_GROUP_NAME :Bólkur {COMMA} +STR_FORMAT_INDUSTRY_NAME :{TOWN} {STRING} +STR_FORMAT_WAYPOINT_NAME :{TOWN} Waypoint +STR_FORMAT_WAYPOINT_NAME_SERIAL :{TOWN} Waypoint #{COMMA} + +STR_FORMAT_DEPOT_NAME_TRAIN :{TOWN} Tok Goymsla +STR_FORMAT_DEPOT_NAME_TRAIN_SERIAL :{TOWN} Tok Goymsla #{COMMA} +STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE :{TOWN} Akfars Goymsla +STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE_SERIAL :{TOWN} Akfars Goymsla #{COMMA} +STR_FORMAT_DEPOT_NAME_SHIP :{TOWN} Skipa Goymsla +STR_FORMAT_DEPOT_NAME_SHIP_SERIAL :{TOWN} Skipa Goymsla #{COMMA} +STR_FORMAT_DEPOT_NAME_AIRCRAFT :{STATION} Hangarur + +STR_UNKNOWN_STATION :ókend støð +STR_DEFAULT_SIGN_NAME :Skelti +STR_COMPANY_SOMEONE :onkur + +STR_SAVEGAME_NAME_DEFAULT :{COMPANY}, {STRING} +STR_SAVEGAME_NAME_SPECTATOR :Eygleiðari, {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_GROUP_NAME :{GROUP} +STR_INDUSTRY_NAME :{INDUSTRY} +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} +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} + +# 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_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} +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/finnish.txt b/src/lang/finnish.txt index ee8b9173a..6a30ebc60 100644 --- a/src/lang/finnish.txt +++ b/src/lang/finnish.txt @@ -199,21 +199,28 @@ STR_UNITS_POWER_IMPERIAL :{COMMA}hv STR_UNITS_POWER_METRIC :{COMMA}hv 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} tonni{P "" a} STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} tonni{P "" a} 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} gallona{P "" a} STR_UNITS_VOLUME_LONG_METRIC :{COMMA} litra{P "" a} 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}Suodatin STR_LIST_FILTER_OSKTITLE :{BLACK}Syötä suodatinteksti STR_LIST_FILTER_TOOLTIP :{BLACK}Syötä avainsana suodattaaksesi listan +STR_TOOLTIP_GROUP_ORDER :{BLACK}Valitse ryhmittelyjärjestys STR_TOOLTIP_SORT_ORDER :{BLACK}Valitse järjestys (laskeva/nouseva) STR_TOOLTIP_SORT_CRITERIA :{BLACK}Valitse järjestyskriteeri STR_TOOLTIP_FILTER_CRITERIA :{BLACK}Valitse suodatuskriteerit @@ -232,7 +240,8 @@ STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Sulje ik STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Ikkunan otsake - siirrä ikkunaa vetämällä tästä STR_TOOLTIP_SHADE :{BLACK}Pienennä ikkuna - näytä vain otsikko STR_TOOLTIP_DEBUG :{BLACK}Näytä NewGRF-vianmääritystiedot -STR_TOOLTIP_STICKY :{BLACK}'Sulje Kaikki Ikkunat'-nappi ei vaikuta tähän ikkunaan. +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_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 @@ -256,7 +265,6 @@ STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}Pinta-al # These are used in buttons -STR_SORT_BY_CAPTION_POPULATION :{BLACK}Asukasluku STR_SORT_BY_CAPTION_NAME :{BLACK}Nimi STR_SORT_BY_CAPTION_DATE :{BLACK}Päiväys # These are used in dropdowns @@ -277,18 +285,21 @@ STR_SORT_BY_LENGTH :Pituus STR_SORT_BY_LIFE_TIME :Jäljelläoleva elinikä STR_SORT_BY_TIMETABLE_DELAY :Aikataulun viive STR_SORT_BY_FACILITY :Asematyyppi -STR_SORT_BY_WAITING :Odottavan lastin arvo +STR_SORT_BY_WAITING_TOTAL :Odottava rahti yhteensä +STR_SORT_BY_WAITING_AVAILABLE :Saatavilla oleva odottava rahti STR_SORT_BY_RATING_MAX :Korkein rahtiluokitus STR_SORT_BY_RATING_MIN :Matalin rahtiluokitus STR_SORT_BY_ENGINE_ID :EngineID (perinteinen lajittelu) STR_SORT_BY_COST :Hinta STR_SORT_BY_POWER :Teho -STR_SORT_BY_TRACTIVE_EFFORT :Vääntömomentti +STR_SORT_BY_TRACTIVE_EFFORT :Vetovoima STR_SORT_BY_INTRO_DATE :Julkaisupäivä STR_SORT_BY_RUNNING_COST :Käyttökustannukset STR_SORT_BY_POWER_VS_RUNNING_COST :Teho-hyötysuhde STR_SORT_BY_CARGO_CAPACITY :Rahtikapasiteetti STR_SORT_BY_RANGE :Toimintasäde +STR_SORT_BY_POPULATION :Asukasluku +STR_SORT_BY_RATING :Arvio # Tooltips for the main toolbar STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Tauko @@ -301,6 +312,8 @@ STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Näytä STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Näytä luettelo yhtiön asemista STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Näytä yhtiön taloustiedot STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Näytä yhtiön yleiset tiedot +STR_TOOLBAR_TOOLTIP_DISPLAY_STORY_BOOK :{BLACK}Näytä yhtiöhistoria +STR_TOOLBAR_TOOLTIP_DISPLAY_GOALS_LIST :{BLACK}Näytä tavoitteet STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Näytä kuvaajat STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Näytä yhtiökilpataulukko STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Rahoita uuden teollisuuden rakentamista ja näytä teollisuushakemisto @@ -321,7 +334,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 @@ -331,7 +344,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ä @@ -341,9 +354,9 @@ 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 @@ -371,19 +384,19 @@ STR_FILE_MENU_SEPARATOR : STR_FILE_MENU_EXIT :Sulje ############ range ends here -############ range for map menu starts +# map menu STR_MAP_MENU_MAP_OF_WORLD :Maailmankartta STR_MAP_MENU_EXTRA_VIEW_PORT :Lisänäkymä +STR_MAP_MENU_LINGRAPH_LEGEND :Rahtivirran selitys STR_MAP_MENU_SIGN_LIST :Kylttilista -############ range for town menu starts, yet the town directory is shown in the map menu in the scenario editor + +############ range for town menu starts STR_TOWN_MENU_TOWN_DIRECTORY :Kaupunkihakemisto -############ end of the 'Display map' dropdown STR_TOWN_MENU_FOUND_TOWN :Perusta kaupunki -############ end of the 'Town' dropdown +############ range ends here ############ range for subsidies menu starts STR_SUBSIDIES_MENU_SUBSIDIES :Tuet -STR_SUBSIDIES_MENU_GOAL :Nykyiset tavoitteet ############ range ends here ############ range for graph menu starts @@ -457,7 +470,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. @@ -473,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 @@ -535,7 +566,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 @@ -552,7 +583,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 @@ -650,7 +681,7 @@ STR_HIGHSCORE_PERFORMANCE_TITLE_CAPITALIST :Kapitalisti STR_HIGHSCORE_PERFORMANCE_TITLE_MAGNATE :Magnaatti STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL :Moguli STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY :Vuosisadan pohatta -STR_HIGHSCORE_NAME :{BIG_FONT}{PRESIDENT_NAME}, {COMPANY} +STR_HIGHSCORE_NAME :{PRESIDENT_NAME}, {COMPANY} STR_HIGHSCORE_STATS :{BIG_FONT}'{STRING}' ({COMMA}) STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{BLACK}{COMPANY} saavuttaa arvon '{STRING}'! STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{WHITE}{PRESIDENT_NAME} yhtiöstä {COMPANY} saavuttaa arvon '{STRING}'! @@ -661,20 +692,23 @@ STR_SMALLMAP_CAPTION :{WHITE}Kartta - STR_SMALLMAP_TYPE_CONTOURS :Korkeuserot STR_SMALLMAP_TYPE_VEHICLES :Liikennevälineet STR_SMALLMAP_TYPE_INDUSTRIES :Teollisuus +STR_SMALLMAP_TYPE_ROUTEMAP :Rahtivirta STR_SMALLMAP_TYPE_ROUTES :Reitit STR_SMALLMAP_TYPE_VEGETATION :Kasvillisuus STR_SMALLMAP_TYPE_OWNERS :Omistajat STR_SMALLMAP_TOOLTIP_SHOW_LAND_CONTOURS_ON_MAP :{BLACK}Näytä korkeuserot kartalla. STR_SMALLMAP_TOOLTIP_SHOW_VEHICLES_ON_MAP :{BLACK}Näytä liikennevälineet kartalla. STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRIES_ON_MAP :{BLACK}Näytä teollisuuus kartalla. +STR_SMALLMAP_TOOLTIP_SHOW_LINK_STATS_ON_MAP :{BLACK}Näytä rahtivirta kartalla STR_SMALLMAP_TOOLTIP_SHOW_TRANSPORT_ROUTES_ON :{BLACK}Näytä kuljetusreitit kartalla. STR_SMALLMAP_TOOLTIP_SHOW_VEGETATION_ON_MAP :{BLACK}Näytä kasvillisuus kartalla. STR_SMALLMAP_TOOLTIP_SHOW_LAND_OWNERS_ON_MAP :{BLACK}Näytä maanomistajat kartalla. STR_SMALLMAP_TOOLTIP_INDUSTRY_SELECTION :{BLACK}Klikkaa teollisuustyyppiä näyttääksesi sen. Ctrl+Klik näyttää valitun tyypin. Ctrl+Klik uudestaan näyttää kaikki teollisuustyypit 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 @@ -705,6 +739,7 @@ STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLA STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Kaupunkien nimet kartalla. STR_SMALLMAP_CENTER :{BLACK}Keskitä pieni kartta tähän paikkaan 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}Kaikki pois päältä @@ -715,6 +750,8 @@ STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES :{BLACK}Näytä STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}Valitse, näytetäänkö korkeuskartta STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES :{BLACK}Älä näytä yhtiöiden omaisuutta kartalla STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}Näytä kaikki yhtiöiden omaisuus kartalla +STR_SMALLMAP_TOOLTIP_DISABLE_ALL_CARGOS :{BLACK}Älä näytä mitään rahtia kartalla +STR_SMALLMAP_TOOLTIP_ENABLE_ALL_CARGOS :{BLACK}Näytä kaikki rahdit kartalla # Status bar messages STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Näytä viimeisin viesti tai uutisraportti. @@ -746,7 +783,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! @@ -760,7 +797,7 @@ STR_NEWS_COMPANY_MERGER_DESCRIPTION :{BIG_FONT}{BLAC STR_NEWS_COMPANY_BANKRUPT_TITLE :{BIG_FONT}{BLACK}Konkurssi! STR_NEWS_COMPANY_BANKRUPT_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} on suljettu velkojien toimesta ja kaikki omaisuus on myyty pois! STR_NEWS_COMPANY_LAUNCH_TITLE :{BIG_FONT}{BLACK}Uusi kuljetusyhtiö perustettu! -STR_NEWS_COMPANY_LAUNCH_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} aloittaa rakentamisen kaupugin {TOWN} lähistölle! +STR_NEWS_COMPANY_LAUNCH_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} aloittaa rakentamisen kaupungin {TOWN} lähistölle! STR_NEWS_MERGER_TAKEOVER_TITLE :{BIG_FONT}{BLACK}Yhtiön {STRING} on ottanut haltuun {STRING}! STR_PRESIDENT_NAME_MANAGER :{BLACK}{PRESIDENT_NAME}{}(pääjohtaja) @@ -791,13 +828,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 @@ -876,15 +912,12 @@ STR_GAME_OPTIONS_CURRENCY_LTL :Liettuan liti ( STR_GAME_OPTIONS_CURRENCY_KRW :Etelä-Korean won (KRW) STR_GAME_OPTIONS_CURRENCY_ZAR :Etelä-Afrikan randi (ZAR) STR_GAME_OPTIONS_CURRENCY_CUSTOM :Oma... +STR_GAME_OPTIONS_CURRENCY_GEL :Georgian lari (GEL) +STR_GAME_OPTIONS_CURRENCY_IRR :Iranin rial (IRR) ############ end of currency region -STR_GAME_OPTIONS_MEASURING_UNITS_FRAME :{BLACK}Mittayksiköt -STR_GAME_OPTIONS_MEASURING_UNITS_DROPDOWN_TOOLTIP :{BLACK}Mittayksiköiden valinta ############ start of measuring units region -STR_GAME_OPTIONS_MEASURING_UNITS_IMPERIAL :Englantilainen -STR_GAME_OPTIONS_MEASURING_UNITS_METRIC :Metrinen -STR_GAME_OPTIONS_MEASURING_UNITS_SI :SI ############ end of measuring units region STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Ajoneuvot @@ -922,11 +955,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. @@ -938,9 +973,6 @@ 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_BASE_GRF :{BLACK}Perusgrafiikat STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Valitse käytettävät perusgrafiikat STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} puuttuva/korruptoitunut tiedosto{P "" ja} @@ -955,15 +987,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 @@ -1054,8 +1087,9 @@ 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_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 :Perusasetukset STR_CONFIG_SETTING_RESTRICT_ADVANCED :Lisäasetukset STR_CONFIG_SETTING_RESTRICT_ALL :Kehittyneet asetukset / kaikki asetukset @@ -1063,12 +1097,16 @@ STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :Asetukset, joid STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :Asetukset, joiden arvo poikkeaa uusille peleille määritellystä arvosta STR_CONFIG_SETTING_TYPE_DROPDOWN_HELPTEXT :{BLACK}Rajaa alla olevaa listaa näyttämään vain tietyt asetustyypit -STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :Kaikki asetukset +STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :Kaikki asetustyypit STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :Paikalliset asetukset (ei tallenneta pelitallenteisiin; vaikuttavat kaikkiin peleihin) STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Pelin asetukset (tallennetaan pelitallenteisiin; vaikuttavat vain uusiin peleihin) 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ä @@ -1103,15 +1141,13 @@ 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_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 @@ -1132,17 +1168,11 @@ 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_TUNNEL_LENGTH :Suurin sallittu tunnelin pituus: {STRING} @@ -1166,12 +1196,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ä @@ -1193,7 +1221,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 @@ -1202,10 +1230,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 @@ -1244,27 +1268,41 @@ STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :Näytä kaupunk 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ä @@ -1285,7 +1323,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ö @@ -1315,17 +1353,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} @@ -1334,7 +1370,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 @@ -1349,7 +1385,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 @@ -1361,9 +1397,9 @@ STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :Toista ääni t STR_CONFIG_SETTING_SOUND_NEWS :Sanomalehti: {STRING} STR_CONFIG_SETTING_SOUND_NEWS_HELPTEXT :Toista ääni sanomalehden ilmestyessä STR_CONFIG_SETTING_SOUND_NEW_YEAR :Vuoden loppu: {STRING} -STR_CONFIG_SETTING_SOUND_NEW_YEAR_HELPTEXT :Toista ääniefekti vuoden lopussa verrattaessa yhtiön tulosta edelliseen vuoteen +STR_CONFIG_SETTING_SOUND_NEW_YEAR_HELPTEXT :Toista ääni vuoden lopussa verrattaessa yhtiön tulosta edelliseen vuoteen STR_CONFIG_SETTING_SOUND_CONFIRM :Rakentaminen: {STRING} -STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT :Toista ääniefekti onnistuneen rakennus- tai muun toiminnon jälkeen +STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT :Toista ääni onnistuneen rakennus- tai muun toiminnon jälkeen STR_CONFIG_SETTING_SOUND_CLICK :Painikkeiden klikkaus: {STRING} STR_CONFIG_SETTING_SOUND_CLICK_HELPTEXT :Piippaa klikattaessa painikkeita STR_CONFIG_SETTING_SOUND_DISASTER :Vahingot/onnettomuudet: {STRING} @@ -1416,7 +1452,7 @@ STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Lentokoneiden h STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Määritä oletushuoltoväli uusille lentokoneille mikäli kulkuneuvolle ei ole määritelty erillistä huoltoväliä STR_CONFIG_SETTING_SERVINT_SHIPS :Laivojen huoltoväli oletuksena: {STRING} STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Määritä oletushuoltoväli uusille laivoille mikäli kulkuneuvolle ei ole määritelty erillistä huoltoväliä -STR_CONFIG_SETTING_NOSERVICE :Huollot pois käytöstä, kun rikkoutumiset on pois: {STRING} +STR_CONFIG_SETTING_NOSERVICE :Poista huollot käytöstä kun ajoneuvojen rikkoutuminen on poistettu käytöstä: {STRING} STR_CONFIG_SETTING_NOSERVICE_HELPTEXT :Mikäli käytössä, kulkuneuvoja ei huolleta jos ne eivät voi rikkoutua STR_CONFIG_SETTING_WAGONSPEEDLIMITS :Ota käyttöön vaunujen nopeusrajoitukset: {STRING} STR_CONFIG_SETTING_WAGONSPEEDLIMITS_HELPTEXT :Mikäli käytössä, vaunujen nopeusrajoitusta käytetään junan maksiminopeuden määrittämisessä @@ -1463,27 +1499,27 @@ 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} STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_HELPTEXT :Määrittää etäisyyden opastimien välillä seuraavaan esteeseen saakka (opastin, risteys) opastimia vedettäessä STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_VALUE :{COMMA} ruutu{P 0 "" a} 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_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 @@ -1504,7 +1540,7 @@ STR_CONFIG_SETTING_TOWN_FOUNDING :Kaupunkien peru STR_CONFIG_SETTING_TOWN_FOUNDING_HELPTEXT :Mikäli käytössä, pelaajat voivat perustaa uusia kaupunkeja STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :Kielletty STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :Sallittu -STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :Sallittu, oma kaupugin kaava +STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :Sallittu, oma kaupungin kaava STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT :Puiden istutus pelissä: {STRING} STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_HELPTEXT :Määrittää puiden sattumanvaraisen luomisen. Tämä voi vaikuttaa teollisuuslaitoksiin jotka ovat riippuvaisia puiden kasvamisesta, esimerkiksi sahat @@ -1547,28 +1583,90 @@ 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_GUI :{ORANGE}Käyttöliittymä -STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}Rakentaminen +STR_CONFIG_SETTING_LINKGRAPH_INTERVAL :Päivitä rahdin jakautuminen {STRING} 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_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 +STR_CONFIG_SETTING_DISTRIBUTION_SYMMETRIC :symmetrinen +STR_CONFIG_SETTING_DISTRIBUTION_PAX :Matkustajien jakautuminen: {STRING} +STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :"symmetrinen" tarkoittaa, että suunnilleen sama määrä matkustajia kulkee asemalta A asemalle B kuin asemalta B asemalle A. "epäsymmetrinen" tarkoittaa, että eri suuntiin voi kulkea eriävä määrä matkustajia. "manuaalinen" tarkoittaa, että automaattinen rahdin jakautuminen on pois käytöstä matkustajilla. +STR_CONFIG_SETTING_DISTRIBUTION_MAIL :Postin jakautuminen: {STRING} +STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :"symmetrinen" tarkoittaa, että suunnilleen sama määrä postia 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ä postia. "manuaalinen" tarkoittaa, että automaattinen rahdin jakautuminen on pois käytöstä postilla. +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 :"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} +STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT :Mikäli asetuksen arvo on määritelty suuremmaksi kuin 0, alkuperäisen aseman A ja mahdollisen määränpään B välimatkalla on vaikutus A:sta B:hen lähetetyn rahdin määrään. Mitä kauempana B on A:sta, sitä vähemmän rahtia lähetetään. Mitä suuremmaksi tämä asetus on määritetty, sitä vähemmän rahtia lähetetään kaukana oleville ja enemmän lähellä oleville asemille. +STR_CONFIG_SETTING_DEMAND_SIZE :Palautettavan rahdin määrä symmetrisessä tilassa: {STRING} +STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :Mikäli asetuksen arvoksi on määritetty alle 100%, symmetrinen jakauma toimii enemmän epäsymmetrisen jakauman tavoin ja vähemmän rahtia pakotetaan lähetettäväksi takaisin alkuperäiselle asemalle. Jos arvoksi määritetään 0%, symmetrinen jakauma toimii täysin epäsymmetrisen jakauman tavoin. +STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Lyhyiden reittien kuormittuminen ennen vapaampien reittien käyttämistä: {STRING} +STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Kahden aseman välillä on usein useita reittejä. Lyhintä reittiä käytetään ensisijaisesti, toisiksi lyhintä ensimmäisen kuormittuessa ja niin edelleen. Kuormitus määritellään arvioidun kapasiteetin ja suunnitellun käytön mukaan. Kaikkien reittien ollessa kuormittuneita reittejä aletaan ylikuormittamaan, suurimman kapasiteetin omaavista reiteista aloittaen. Algoritmi ei kuitenkaan aina arvioi kapasiteettia oikein. Tämä asetus mahdollistaa reitin kuormitustason määrittämisen ennen seuraavan reitin käyttämistä. Määritä arvoksi vähemmän kuin 100% välttääksesi ylikuormittuneita asemia jos kapasiteetti yliarvioidaan. + +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Nopeuden yksikkö: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_HELPTEXT :Kun käyttöliittymässä näytetään nopeus, näytä se valittua yksikköä käyttäen +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_IMPERIAL :Brittiläinen (mph) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_METRIC :Metrinen (km/h) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_SI :SI (m/s) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER :Kulkuneuvon tehon yksikkö: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_HELPTEXT :Kun käyttöliittymässä näytetään kulkuneuvon teho, näytä se valittua yksikköä käyttäen +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_IMPERIAL :Brittiläinen (hp) +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_METRIC :Metrinen (hp) +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_SI :SI (kW) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT :Painon yksikkö: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_HELPTEXT :Kun käyttöliittymässä näytetään paino, näytä se valittua yksikköä käyttäen +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_IMPERIAL :Brittiläinen (lyhyt t/tonni) +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_METRIC :Metrinen (t/tonni) +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_SI :SI (kg) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME :Tilavuuden yksikkö: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_HELPTEXT :Kun käyttöliittymässä näytetään tilavuus, näytä se valittua yksikköä käyttäen +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_IMPERIAL :Brittiläinen (gal) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_METRIC :Metrinen (l) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_SI :SI (m³) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE :Vetovoiman yksikkö: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_HELPTEXT :Kun käyttöliittymässä näytetään vetovoima, näytä se valittua yksikköä käyttäen +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_IMPERIAL :Brittiläinen (lbf) +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_METRIC :Metrinen (kgf) +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_SI :SI (kN) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT :Korkeuden yksikkö: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_HELPTEXT :Kun käyttöliittymässä näytetään korkeus, näytä se valittua yksikköä käyttäen +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :Brittiläinen (ft) +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :Metrinen (m) +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI (m) + +STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Lokalisointi +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_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 @@ -1581,7 +1679,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 @@ -1602,6 +1700,8 @@ STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_ALGORITHM :{WHITE}... peli STR_CONFIG_ERROR_INVALID_BASE_GRAPHICS_NOT_FOUND :{WHITE}... ohitetaan perusgrafiikkapaketti '{STRING}': ei löydetty STR_CONFIG_ERROR_INVALID_BASE_SOUNDS_NOT_FOUND :{WHITE}... ohitetaan äänipaketti '{STRING}': ei löydetty STR_CONFIG_ERROR_INVALID_BASE_MUSIC_NOT_FOUND :{WHITE}... ohitetaan musiikkipaketti '{STRING}': ei löydetty +STR_CONFIG_ERROR_OUT_OF_MEMORY :{WHITE}Muisti lopussa +STR_CONFIG_ERROR_SPRITECACHE_TOO_BIG :{WHITE}{BYTES} sprite-välimuistin varaaminen epäonnistui. Sprite-välimuistin kooksi valittiin {BYTES}. Tämä heikentää OpenTTD:n suorituskykyä. Vähentääksesi muistivaatimuksia voit kokeilla poistaa käytöstä 32bpp-grafiikat ja/tai lähennystasoja # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} @@ -1628,10 +1728,10 @@ 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_HIGHSCORE :{BLACK}Näytä pistetaulukko @@ -1639,7 +1739,7 @@ STR_INTRO_TOOLTIP_ADVANCED_SETTINGS :{BLACK}Näytä 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. @@ -1681,7 +1781,7 @@ STR_CHEAT_SWITCH_CLIMATE_SUB_TROPICAL_LANDSCAPE :subtrooppinen m 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 @@ -1723,6 +1823,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. @@ -1778,10 +1879,10 @@ STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}Vaihda s # Network server list STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}Moninpeli -STR_NETWORK_SERVER_LIST_CONNECTION :{BLACK}Yhteys: -STR_NETWORK_SERVER_LIST_CONNECTION_TOOLTIP :{BLACK}Valitse internet-peli tai paikallisverkkopeli (LAN) -STR_NETWORK_SERVER_LIST_LAN :Lähiverkko -STR_NETWORK_SERVER_LIST_INTERNET :Internet +STR_NETWORK_SERVER_LIST_ADVERTISED :{BLACK}Mainostettu +STR_NETWORK_SERVER_LIST_ADVERTISED_TOOLTIP :{BLACK}Valitse mainostettu (internet) tai ei-mainostettu (paikallisverkko, LAN) peli +STR_NETWORK_SERVER_LIST_ADVERTISED_NO :Ei +STR_NETWORK_SERVER_LIST_ADVERTISED_YES :Kyllä STR_NETWORK_SERVER_LIST_PLAYER_NAME :{BLACK}Pelaajan nimi STR_NETWORK_SERVER_LIST_ENTER_NAME_TOOLTIP :{BLACK}Pelaajat tunnistetaan ja erotetaan toisistaan nimien avulla. @@ -1794,7 +1895,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. @@ -1840,8 +1941,8 @@ STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP :{BLACK}Nimi nä STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}Aseta salasana STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Jos peliin ei halua ulkopuolisia, voi sen suojata salasanalla. -STR_NETWORK_START_SERVER_LAN_INTERNET :Lähiverkko / Internet -STR_NETWORK_START_SERVER_INTERNET_ADVERTISE :Internet (mainosta) +STR_NETWORK_START_SERVER_UNADVERTISED :Ei +STR_NETWORK_START_SERVER_ADVERTISED :Kyllä STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} asiakas{P "" ta} STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Pelaajien enimmäismäärä: STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}Pelaajien enimmäismäärä. Pelissä voi olla myös vähemmän pelaajia. @@ -1962,6 +2063,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 @@ -2080,6 +2182,10 @@ STR_CONTENT_SELECT_UPDATES_CAPTION :{BLACK}Valitse STR_CONTENT_SELECT_UPDATES_CAPTION_TOOLTIP :{BLACK}Valitse kaikki sisältö, joka on päivitys nykyiseen sisältöön, ladattavaksi STR_CONTENT_UNSELECT_ALL_CAPTION :{BLACK}Poista valinnat STR_CONTENT_UNSELECT_ALL_CAPTION_TOOLTIP :{BLACK}Merkitse kaikki sisältö ei-ladattavaksi +STR_CONTENT_SEARCH_EXTERNAL :{BLACK}Etsi ulkopuolisilta verkkosivuilta +STR_CONTENT_SEARCH_EXTERNAL_TOOLTIP :{BLACK}Etsi OpenTTD:n ulkopuolisilta verkkosivuilta sisältöä, jota ei ole saatavilla OpenTTD:n sisältöpalvelussa +STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER_CAPTION :{WHITE}Olet poistumassa OpenTTD:stä! +STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER :{WHITE}Ulkopuolisilta verkkosivuilta ladattaessa käyttöehdot voivat vaihdella.{}Sinun on noudatettava ulkopuolisen sivuston ohjeita sisällön asentamiseksi OpenTTD:hen.{}Haluatko jatkaa? STR_CONTENT_FILTER_TITLE :{BLACK}Avainsana/nimi suodatus: STR_CONTENT_OPEN_URL :{BLACK}Vieraile verkkosivulla STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}Vieraile sisällön verkkosivulla @@ -2102,7 +2208,7 @@ STR_CONTENT_DETAIL_FILESIZE :{SILVER}Latauks STR_CONTENT_DETAIL_SELECTED_BECAUSE_OF :{SILVER}Valittu seuraavan takia: {WHITE}{STRING} STR_CONTENT_DETAIL_DEPENDENCIES :{SILVER}Vaatimukset: {WHITE}{STRING} STR_CONTENT_DETAIL_TAGS :{SILVER}Avainsanat: {WHITE}{STRING} -STR_CONTENT_NO_ZLIB :{WHITE}OpenTTD on käännetty ilman "zlib" tukea... +STR_CONTENT_NO_ZLIB :{WHITE}OpenTTD on käännetty ilman "zlib"-tukea... STR_CONTENT_NO_ZLIB_SUB :{WHITE}... sisällön lataus ei ole mahdollista! # Order of these is important! @@ -2145,10 +2251,21 @@ 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ä +# Linkgraph legend window +STR_LINKGRAPH_LEGEND_CAPTION :{BLACK}Rahtivirran selitys +STR_LINKGRAPH_LEGEND_ALL :{BLACK}Kaikki +STR_LINKGRAPH_LEGEND_NONE :{BLACK}Ei mitään +STR_LINKGRAPH_LEGEND_SELECT_COMPANIES :{BLACK}Valitse näytettävät yhtiöt + +# Linkgraph legend window and linkgraph legend in smallmap +STR_LINKGRAPH_LEGEND_UNUSED :{TINY_FONT}{BLACK}käyttämätön +STR_LINKGRAPH_LEGEND_SATURATED :{TINY_FONT}{BLACK}sopiva +STR_LINKGRAPH_LEGEND_OVERLOADED :{TINY_FONT}{BLACK}kuormittunut + # Base for station construction window(s) STR_STATION_BUILD_COVERAGE_AREA_TITLE :{BLACK}Vaikutusalueen korostus STR_STATION_BUILD_COVERAGE_OFF :{BLACK}pois @@ -2232,7 +2349,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} @@ -2291,7 +2408,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 @@ -2338,7 +2455,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 @@ -2353,7 +2470,7 @@ STR_PLANT_TREE_TOOLTIP :{BLACK}Valitse STR_TREES_RANDOM_TYPE :{BLACK}Sattumanvaraisia puita STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}Aseta sattumanvaraisia puita. Shift vaihtaa istutustilan ja kustannearvion välillä STR_TREES_RANDOM_TREES_BUTTON :{BLACK}Satunnaisia puita. -STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Istuta puita satunnaisesti maastoon. +STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Istuta puita satunnaisesti maastoon # Land generation window (SE) STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}Maanrakennus @@ -2361,7 +2478,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 @@ -2382,7 +2499,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 @@ -2450,7 +2567,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 @@ -2512,7 +2630,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 @@ -2547,7 +2665,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-2012 The OpenTTD team +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2014 The OpenTTD team # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Tallenna peli @@ -2555,7 +2673,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ä. @@ -2566,7 +2684,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} @@ -2576,17 +2695,14 @@ STR_SAVELOAD_OSKTITLE :{BLACK}Syötä # World generation STR_MAPGEN_WORLD_GENERATION_CAPTION :{WHITE}Maailman luominen STR_MAPGEN_MAPSIZE :{BLACK}Kartan koko: +STR_MAPGEN_MAPSIZE_TOOLTIP :{BLACK}Valitse kartan koko ruutuina. Saatavilla olevien ruutujen määrä on hieman alhaisempi 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_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: @@ -2613,8 +2729,7 @@ 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_SNOW_LINE_QUERY_CAPT :{WHITE}Vaihda lumirajan korkeutta STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Vaihda aloitusvuosi # SE Map generation @@ -2659,7 +2774,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 @@ -2668,7 +2783,9 @@ 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_FILE_TOOLTIP :{BLACK}Lista asennetuista NewGRF-tiedostoista. +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 STR_NEWGRF_SETTINGS_SHOW_PARAMETERS :{BLACK}Näytä parametrit @@ -2692,6 +2809,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 @@ -2734,7 +2861,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}) @@ -2762,6 +2889,7 @@ STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}Olet te STR_NEWGRF_DUPLICATE_GRFID :{WHITE}Ei voi lisätä tiedostoa: duplicate GRF ID STR_NEWGRF_COMPATIBLE_LOADED :{ORANGE}Sopivaa tiedostoa ei löytynyt (korvaava GRF ladattu) +STR_NEWGRF_TOO_MANY_NEWGRFS :{WHITE}Tiedostoa ei voida lisätä: NewGRF-tiedostojen raja saavutettu STR_NEWGRF_COMPATIBLE_LOAD_WARNING :{WHITE}Yhteensopivat GRF:t ladattu puuttuvien tiedostojen korvaamiseksi STR_NEWGRF_DISABLED_WARNING :{WHITE}Puuttuvat GRF tiedostot ovat poistettu käytöstä @@ -2778,6 +2906,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 @@ -2792,6 +2921,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... @@ -2873,10 +3005,14 @@ STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT :{YELLOW}Osta vu STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}Lahjo viranomaisia lisätäksesi arviotasi; rangaistus voi olla kuitenkin suuri, jos jäät kiinni.{}Kulu: {CURRENCY_LONG} # Goal window -STR_GOALS_CAPTION :{WHITE}Tavoitteet +STR_GOALS_CAPTION :{WHITE}{COMPANY} Tavoitteet +STR_GOALS_SPECTATOR_CAPTION :{WHITE}Maailmanlaajuiset tavoitteet STR_GOALS_GLOBAL_TITLE :{BLACK}Maailmanlaajuiset tavoitteet: STR_GOALS_TEXT :{ORANGE}{STRING} STR_GOALS_NONE :{ORANGE}- Ei mitään - +STR_GOALS_SPECTATOR_NONE :{ORANGE}- Ei saatavilla - +STR_GOALS_PROGRESS :{ORANGE}{STRING} +STR_GOALS_PROGRESS_COMPLETE :{GREEN}{STRING} STR_GOALS_COMPANY_TITLE :{BLACK}Yhtiön tavoitteet: STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Klikkaa tavoitetta keskittääksesi päänäkymän teollisuuteen/kaupunkiin/ruutuun. Ctrl+Klik avaa uuden näkymän teollisuuden/kaupungin/ruudun sijaintiin @@ -2915,6 +3051,18 @@ STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}Käytety STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING} välille {STRING}-{STRING}{YELLOW} ({COMPANY}{YELLOW}, {DATE_SHORT} asti) STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Napsauta palvelua keskittääksesi päänäkymän teollisuuteen/kaupunkiin. Ctrl+Klik avaa uuden näkymäikkunan teollisuuden/kaupungin sijaintiin +# Story book window +STR_STORY_BOOK_CAPTION :{WHITE}Yhtiön {COMPANY} historia +STR_STORY_BOOK_SPECTATOR_CAPTION :{WHITE}Yleinen yhtiöhistoria +STR_STORY_BOOK_TITLE :{YELLOW}{STRING} +STR_STORY_BOOK_GENERIC_PAGE_ITEM :Sivu {NUM} +STR_STORY_BOOK_SEL_PAGE_TOOLTIP :{BLACK}Siirry tietylle sivulle valitsemalla se tästä valikosta +STR_STORY_BOOK_PREV_PAGE :{BLACK}Edellinen +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 STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}Pidä Ctrl-näppäin painettuna valitaksesi useamman kuin yhden vaihtoehdon @@ -2928,9 +3076,9 @@ 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} tuotu asemalta {STATION}) +STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} asemalta {STATION}) +STR_STATION_VIEW_RESERVED :{YELLOW}({CARGO_SHORT} varattu ladattavaksi) STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Ottaa vastaan STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Näytä luettelo vastaanotettavasta rahdista. @@ -2941,8 +3089,31 @@ STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPAN STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Arviot STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Näytä aseman arviot. -STR_STATION_VIEW_CARGO_RATINGS_TITLE :{BLACK}Paikallinen arvio kuljetuspalvelusta: -STR_STATION_VIEW_CARGO_RATING :{WHITE}{STRING}: {YELLOW}{STRING} ({COMMA}{NBSP}%) +STR_STATION_VIEW_SUPPLY_RATINGS_TITLE :{BLACK}Kuukausittainen tarjonta ja paikallinen arvio: +STR_STATION_VIEW_CARGO_SUPPLY_RATING :{WHITE}{STRING}: {YELLOW}{COMMA} / {STRING} ({COMMA}%) + +STR_STATION_VIEW_GROUP :{BLACK}Järjestä +STR_STATION_VIEW_WAITING_STATION :Asema: Odottaa +STR_STATION_VIEW_WAITING_AMOUNT :Määrä: Odottaa +STR_STATION_VIEW_PLANNED_STATION :Asema: Suunniteltu +STR_STATION_VIEW_PLANNED_AMOUNT :Määrä: Suunniteltu +STR_STATION_VIEW_FROM :{YELLOW}{CARGO_SHORT} asemalta {STATION} +STR_STATION_VIEW_VIA :{YELLOW}{CARGO_SHORT} aseman {STATION} kautta +STR_STATION_VIEW_TO :{YELLOW}{CARGO_SHORT} asemalle {STATION} +STR_STATION_VIEW_FROM_ANY :{RED}{CARGO_SHORT} tuntemattomalta asemalta +STR_STATION_VIEW_TO_ANY :{RED}{CARGO_SHORT} mille tahansa asemalle +STR_STATION_VIEW_VIA_ANY :{RED}{CARGO_SHORT} minkä tahansa aseman kautta +STR_STATION_VIEW_FROM_HERE :{GREEN}{CARGO_SHORT} tältä asemalta +STR_STATION_VIEW_VIA_HERE :{GREEN}{CARGO_SHORT} pysähtyy tällä asemalla +STR_STATION_VIEW_TO_HERE :{GREEN}{CARGO_SHORT} tälle asemalle +STR_STATION_VIEW_NONSTOP :{YELLOW}{CARGO_SHORT} pysähtymättä + +STR_STATION_VIEW_GROUP_S_V_D :Lähde-Kautta-Päämäärä +STR_STATION_VIEW_GROUP_S_D_V :Lähde-Päämäärä-Kautta +STR_STATION_VIEW_GROUP_V_S_D :Kautta-Lähde-Päämäärä +STR_STATION_VIEW_GROUP_V_D_S :Kautta-Päämäärä-Lähde +STR_STATION_VIEW_GROUP_D_S_V :Päämäärä-Lähde-Kautta +STR_STATION_VIEW_GROUP_D_V_S :Päämäärä-Kautta-Lähde ############ range for rating starts STR_CARGO_RATING_APPALLING :Tyrmistyttävä @@ -3069,7 +3240,6 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS :{WHITE}Kanavat STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}Asemat: STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}Asemaruudut STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}Lentokentät -STR_COMPANY_INFRASTRUCTURE_VIEW_COST :{WHITE}{1:CURRENCY_LONG}/vuosi ({0:COMMA}) STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL :{WHITE}{CURRENCY_LONG}/vuosi # Industry directory @@ -3086,6 +3256,7 @@ STR_INDUSTRY_VIEW_PRODUCTION_LAST_MONTH_TITLE :{BLACK}Tuotto v STR_INDUSTRY_VIEW_TRANSPORTED :{YELLOW}{CARGO_LONG}{STRING}{BLACK} ({COMMA}{NBSP}% kuljetettu) STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Keskitä päänäkymä teollisuuden sijaintiin. Ctrl+Klik avaa uuden näkymäikkunan teollisuuden sijaintiin STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Tuotantotaso: {YELLOW}{COMMA}% +STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}Teollisuuslaitos ilmoittaa pikaisesta sulkeutumisestaan! ############ range for requires starts STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Tarvitsee: {YELLOW}{STRING}{STRING} @@ -3110,7 +3281,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. @@ -3129,7 +3300,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 @@ -3148,12 +3319,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 @@ -3174,8 +3348,8 @@ 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_RUNNINGCOST :{BLACK}Käyttökukustannus: {GOLD}{CURRENCY_LONG}/vuosi +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) STR_PURCHASE_INFO_DESIGNED_LIFE :{BLACK}Suunniteltu: {GOLD}{NUM}{BLACK} Elinikä: {GOLD}{COMMA} vuo{P si tta} @@ -3188,7 +3362,7 @@ STR_PURCHASE_INFO_PWAGPOWER_PWAGWEIGHT :{BLACK}Moottoro STR_PURCHASE_INFO_REFITTABLE_TO :{BLACK}Sovitettavissa: {GOLD}{STRING} STR_PURCHASE_INFO_ALL_TYPES :Kaikki rahtityypit STR_PURCHASE_INFO_ALL_BUT :Kaikki paitsi {CARGO_LIST} -STR_PURCHASE_INFO_MAX_TE :{BLACK}Suurin vääntömomentti: {GOLD}{FORCE} +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. @@ -3357,7 +3531,7 @@ STR_VEHICLE_VIEW_SHIP_LOCATION_TOOLTIP :{BLACK}Keskitä STR_VEHICLE_VIEW_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Keskitä näkymä lentokoneen sijaintiin. Ctrl+Klik seuraa lentokonetta päänäkymässä STR_VEHICLE_VIEW_TRAIN_SEND_TO_DEPOT_TOOLTIP :{BLACK}Lähetä juna veturitalliin. Ctrl+Klik suorittaa vain huollon -STR_VEHICLE_VIEW_ROAD_VEHICLE_SEND_TO_DEPOT_TOOLTIP :{BLACK}Lähetä ajoneuvo huoltoasemalle. Ctrl+Klik suorittaa vain huollon +STR_VEHICLE_VIEW_ROAD_VEHICLE_SEND_TO_DEPOT_TOOLTIP :{BLACK}Lähetä ajoneuvo varikolle. Ctrl+Klik suorittaa vain huollon STR_VEHICLE_VIEW_SHIP_SEND_TO_DEPOT_TOOLTIP :{BLACK}Lähetä laiva telakalle. Ctrl+Klik suorittaa vain huollon STR_VEHICLE_VIEW_AIRCRAFT_SEND_TO_DEPOT_TOOLTIP :{BLACK}Lähetä lentokone lentokonehalliin. Ctrl+Klik suorittaa vain huollon @@ -3397,7 +3571,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 @@ -3428,7 +3602,7 @@ STR_VEHICLE_INFO_AGE_RUNNING_COST_YR :{BLACK}Ikä: {L STR_VEHICLE_INFO_AGE :{COMMA} vuo{P si tta} ({COMMA}) STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} vuo{P si tta} ({COMMA}) -STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Maks. nopeus: {LTBLUE}{VELOCITY} +STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Huippunopeus: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_MAX_SPEED_RANGE :{BLACK}Suurin nopeus: {LTBLUE}{VELOCITY} {BLACK}Toimintasäde: {LTBLUE}{COMMA} ruutua STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Paino: {LTBLUE}{WEIGHT_SHORT} {BLACK}Teho: {LTBLUE}{POWER}{BLACK} Maks. nopeus: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Paino: {LTBLUE}{WEIGHT_SHORT} {BLACK}Teho: {LTBLUE}{POWER}{BLACK} Maks. nopeus: {LTBLUE}{VELOCITY} {BLACK}Maks. T.E.: {LTBLUE}{FORCE} @@ -3442,13 +3616,18 @@ STR_VEHICLE_INFO_CAPACITY :{BLACK}Kapasite STR_VEHICLE_INFO_CAPACITY_MULT :{BLACK}Kapasiteetti: {LTBLUE}{CARGO_LONG}{3:STRING} (x{4:NUM}) STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}Kapasiteetti: {LTBLUE}{CARGO_LONG}, {CARGO_LONG}{STRING} -STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}Siirrä rahaa: {LTBLUE}{CURRENCY_LONG} +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_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ä +STR_SERVICE_INTERVAL_DROPDOWN_TOOLTIP :{BLACK}Muuta huoltovälien tyyppiä +STR_VEHICLE_DETAILS_DEFAULT :Oletus +STR_VEHICLE_DETAILS_DAYS :Päiviä +STR_VEHICLE_DETAILS_PERCENT :Prosentteja + STR_QUERY_RENAME_TRAIN_CAPTION :{WHITE}Nimeä juna STR_QUERY_RENAME_ROAD_VEHICLE_CAPTION :{WHITE}Nimeä ajoneuvo STR_QUERY_RENAME_SHIP_CAPTION :{WHITE}Nimeä laiva @@ -3537,8 +3716,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 @@ -3601,7 +3780,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} @@ -3629,18 +3808,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 @@ -3666,9 +3845,13 @@ 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 "" ä} @@ -3684,7 +3867,7 @@ STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}Tämä a STR_TIMETABLE_STATUS_START_AT :{BLACK}Tämä aikataulu alkaa {STRING} STR_TIMETABLE_STARTING_DATE :{BLACK}Aloituspäivä -STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Valitse tämän aikataulun alkamispäivä +STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Valitse päivämäärä aikataulun aloituspäiväksi. Ctrl+Klik määrittää aikataulun aloituspäivän ja jakaa aikataulun tasaisesti kaikkien sitä käyttävien ajoneuvojen kesken niiden järjestyksen mukaan. STR_TIMETABLE_CHANGE_TIME :{BLACK}Muuta aikaa STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Aseta kuinka kauan käskyn tulisi kestää @@ -3741,7 +3924,7 @@ STR_AI_DEBUG_SELECT_AI_TOOLTIP :{BLACK}Näytä STR_AI_GAME_SCRIPT :{BLACK}Peliskripti STR_AI_GAME_SCRIPT_TOOLTIP :{BLACK}Tarkista peliskriptin loki -STR_ERROR_AI_NO_AI_FOUND :Sopivaa tekoälyä ei löydetty.{}Tämä tekoäly ei tee mitään.{}Voit ladata tekoälyjä 'Online-sisältö' järjestelmällä +STR_ERROR_AI_NO_AI_FOUND :Sopivaa tekoälyä ei löydetty.{}Tämä tekoäly ei tee mitään.{}Voit ladata tekoälyjä 'Online-sisältö'-järjestelmän kautta STR_ERROR_AI_PLEASE_REPORT_CRASH :{WHITE}Yksi käynnissä olevista skripteistä kaatui. Ilmoita tästä skriptin kehittäjälle littäen mukaan kuvankaappaus Tekoälyn/Peliskriptin virheenjäljitys -ikkunasta STR_ERROR_AI_DEBUG_SERVER_ONLY :{YELLOW}Tekoälyn/Peliskriptin virheenjäljitysikkuna on vain palvelimen käytettävissä @@ -3798,6 +3981,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 @@ -3820,6 +4005,10 @@ STR_INCOME_FLOAT_INCOME_SMALL :{TINY_FONT}{GRE STR_INCOME_FLOAT_INCOME :{GREEN}Tulo: {CURRENCY_LONG} STR_FEEDER_TINY :{TINY_FONT}{YELLOW}Siirrä: {CURRENCY_LONG} STR_FEEDER :{YELLOW}Siirrä: {CURRENCY_LONG} +STR_FEEDER_INCOME_TINY :{TINY_FONT}{YELLOW}Siirrä: {CURRENCY_LONG}{WHITE} / {GREEN}Tulo: {CURRENCY_LONG} +STR_FEEDER_INCOME :{YELLOW}Siirrä: {CURRENCY_LONG}{WHITE} / {GREEN}Tulo: {CURRENCY_LONG} +STR_FEEDER_COST_TINY :{TINY_FONT}{YELLOW}Siirrä: {CURRENCY_LONG}{WHITE} / {RED}Kustannus: {CURRENCY_LONG} +STR_FEEDER_COST :{YELLOW}Siirrä: {CURRENCY_LONG}{WHITE} / {RED}Kustannus: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_COST :{WHITE}Arvioitu kustannus: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Arvioitu tulo: {CURRENCY_LONG} @@ -3853,7 +4042,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 @@ -3861,7 +4050,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! @@ -3975,14 +4164,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 @@ -4031,7 +4220,7 @@ STR_ERROR_INCOMPATIBLE_RAIL_TYPES :Raiteet eivät STR_ERROR_CAN_T_MOVE_VEHICLE :{WHITE}Liikennevälinettä ei voi poistaa... STR_ERROR_REAR_ENGINE_FOLLOW_FRONT :{WHITE}Moottorivaunun takaosa seuraa aina etuosaansa STR_ERROR_UNABLE_TO_FIND_ROUTE_TO :{WHITE}Reittiä paikalliselle veturitallille ei löydy. -STR_ERROR_UNABLE_TO_FIND_LOCAL_DEPOT :{WHITE}Paikallista huoltoasemaa ei löydy. +STR_ERROR_UNABLE_TO_FIND_LOCAL_DEPOT :{WHITE}Paikallista varikkoa ei löydy. STR_ERROR_DEPOT_WRONG_DEPOT_TYPE :Väärä varikkotyyppi @@ -4075,7 +4264,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... @@ -4116,6 +4305,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. @@ -4142,7 +4332,7 @@ STR_ERROR_CAN_T_STOP_START_SHIP :{WHITE}Laivaa e STR_ERROR_CAN_T_STOP_START_AIRCRAFT :{WHITE}Lentokonetta ei voi pysäyttää/laittaa liikkeelle... STR_ERROR_CAN_T_SEND_TRAIN_TO_DEPOT :{WHITE}Junan lähettäminen veturitalliin ei onnistu... -STR_ERROR_CAN_T_SEND_ROAD_VEHICLE_TO_DEPOT :{WHITE}Ajoneuvon lähettäminen huoltoasemalle ei onnistu... +STR_ERROR_CAN_T_SEND_ROAD_VEHICLE_TO_DEPOT :{WHITE}Ajoneuvon lähettäminen varikolle ei onnistu... STR_ERROR_CAN_T_SEND_SHIP_TO_DEPOT :{WHITE}Laivaa ei voi lähettää telakalle... STR_ERROR_CAN_T_SEND_AIRCRAFT_TO_HANGAR :{WHITE}Lentokonetta ei voi lähettää lentokonehalliin... @@ -4171,8 +4361,13 @@ STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}Huoltov STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... kulkuneuvo on tuhoutunut +STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL :{WHITE}Yhtään ajoneuvoa ei ole saatavilla +STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Muuta NewGRF-asetuksiasi +STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}Kulkuneuvoja ei ole vielä saatavilla +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 @@ -4213,14 +4408,24 @@ STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}Kylttiä # Translatable comment for OpenTTD's desktop shortcut STR_DESKTOP_SHORTCUT_COMMENT :Transport Tycoon Deluxeen pohjautuva simulaatiopeli +# Translatable descriptions in media/baseset/*.ob* files +STR_BASEGRAPHICS_DOS_DESCRIPTION :Alkuperäiset Transport Tycoon Deluxen DOS-version grafiikat. +STR_BASEGRAPHICS_DOS_DE_DESCRIPTION :Alkuperäiset Saksassa julkaistun Transport Tycoon Deluxen DOS-version grafiikat. +STR_BASEGRAPHICS_WIN_DESCRIPTION :Alkuperäiset Transport Tycoon Deluxen Windows-version grafiikat. +STR_BASESOUNDS_DOS_DESCRIPTION :Alkuperäiset Transport Tycoon Deluxen DOS-version äänet. +STR_BASESOUNDS_WIN_DESCRIPTION :Alkuperäiset Transport Tycoon Deluxen Windows-version äänet. +STR_BASESOUNDS_NONE_DESCRIPTION :Äänipaketti, jossa ei ole ääniä. +STR_BASEMUSIC_WIN_DESCRIPTION :Alkuperäinen Transport Tycoon Deluxen Windows-version musiikki. +STR_BASEMUSIC_NONE_DESCRIPTION :Musiikkipaketti, jossa ei ole musiikkia. + ##id 0x2000 # 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 @@ -4259,7 +4464,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ä @@ -4335,7 +4540,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) @@ -4360,7 +4565,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 @@ -4429,7 +4634,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 @@ -4544,7 +4749,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 @@ -4659,8 +4864,9 @@ 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_SPACE_STRING :{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} @@ -4684,9 +4890,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 2f5be57cf..e549ca2cf 100644 --- a/src/lang/french.txt +++ b/src/lang/french.txt @@ -200,21 +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_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_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}{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}{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}{NBSP}kN STR_UNITS_HEIGHT_IMPERIAL :{COMMA}{NBSP}ft +STR_UNITS_HEIGHT_METRIC :{COMMA} m STR_UNITS_HEIGHT_SI :{COMMA}{NBSP}m # Common window strings @@ -222,6 +229,7 @@ STR_LIST_FILTER_TITLE :{BLACK}Filtre{N STR_LIST_FILTER_OSKTITLE :{BLACK}Entrer le filtre STR_LIST_FILTER_TOOLTIP :{BLACK}Entrer un mot-clé pour filtrer la liste +STR_TOOLTIP_GROUP_ORDER :{BLACK}Ordre de regroupement STR_TOOLTIP_SORT_ORDER :{BLACK}Choisir l'ordre de tri (croissant/décroissant) STR_TOOLTIP_SORT_CRITERIA :{BLACK}Choisir le critère de tri STR_TOOLTIP_FILTER_CRITERIA :{BLACK}Choisir le critère de filtrage @@ -233,7 +241,8 @@ STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Fermer l STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Titre de fenêtre - Faire glisser pour déplacer la fenêtre STR_TOOLTIP_SHADE :{BLACK}Réduire la fenêtre - N'affiche que la barre de titre STR_TOOLTIP_DEBUG :{BLACK}Afficher les informations de débogage NewGRF -STR_TOOLTIP_STICKY :{BLACK}Marquer cette fenêtre comme ineffaçable pour la touche «{NBSP}Fermer toutes les fenêtres{NBSP}» +STR_TOOLTIP_DEFSIZE :{BLACK}Redimensionner la fenêtre à sa taille par défaut. Ctrl-clic pour définir la taille actuelle comme défaut +STR_TOOLTIP_STICKY :{BLACK}Marquer cette fenêtre comme ineffaçable pour la touche «{NBSP}Fermer toutes les fenêtres{NBSP}». Ctrl-clic pour définir l'état par défaut STR_TOOLTIP_RESIZE :{BLACK}Cliquer et faire glisser pour redimensionner la fenêtre STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Alterner entre grande et petite fenêtre STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Barre de défilement - Fait défiler la liste verticalement @@ -257,7 +266,6 @@ STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}Région{ # These are used in buttons -STR_SORT_BY_CAPTION_POPULATION :{BLACK}Population STR_SORT_BY_CAPTION_NAME :{BLACK}Nom STR_SORT_BY_CAPTION_DATE :{BLACK}Date # These are used in dropdowns @@ -278,7 +286,8 @@ STR_SORT_BY_LENGTH :Longueur STR_SORT_BY_LIFE_TIME :Durée de vie restante STR_SORT_BY_TIMETABLE_DELAY :Retard sur l'horaire STR_SORT_BY_FACILITY :Type de station -STR_SORT_BY_WAITING :Marchandises en attente +STR_SORT_BY_WAITING_TOTAL :Marchandise en attente totale +STR_SORT_BY_WAITING_AVAILABLE :Marchandise en attente disponible STR_SORT_BY_RATING_MAX :Meilleure qualité de service STR_SORT_BY_RATING_MIN :Pire qualité de service STR_SORT_BY_ENGINE_ID :ID véhicule (tri classique) @@ -290,6 +299,8 @@ STR_SORT_BY_RUNNING_COST :Coûts d'entret STR_SORT_BY_POWER_VS_RUNNING_COST :Puissance / Coûts d'entretien STR_SORT_BY_CARGO_CAPACITY :Capacité STR_SORT_BY_RANGE :Rayon d'action +STR_SORT_BY_POPULATION :Population +STR_SORT_BY_RATING :Qualité de service # Tooltips for the main toolbar STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Mettre le jeu en pause @@ -302,6 +313,8 @@ STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Afficher STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Afficher la liste des stations de la compagnie STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Afficher les informations financières STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Afficher les informations générales +STR_TOOLBAR_TOOLTIP_DISPLAY_STORY_BOOK :{BLACK}Afficher le livre d'histoire +STR_TOOLBAR_TOOLTIP_DISPLAY_GOALS_LIST :{BLACK}Afficher la liste des objectifs STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Afficher les graphiques STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Afficher le tableau de classement des compagnies STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Financer la construction de nouvelles industries ou lister toutes les industries @@ -372,19 +385,19 @@ STR_FILE_MENU_SEPARATOR : STR_FILE_MENU_EXIT :Quitter le jeu ############ range ends here -############ range for map menu starts +# map menu STR_MAP_MENU_MAP_OF_WORLD :Carte du monde STR_MAP_MENU_EXTRA_VIEW_PORT :Vue supplémentaire +STR_MAP_MENU_LINGRAPH_LEGEND :Légende du flux de marchandises STR_MAP_MENU_SIGN_LIST :Liste des panneaux -############ range for town menu starts, yet the town directory is shown in the map menu in the scenario editor + +############ range for town menu starts STR_TOWN_MENU_TOWN_DIRECTORY :Annuaire des villes -############ end of the 'Display map' dropdown STR_TOWN_MENU_FOUND_TOWN :Fonder une ville -############ end of the 'Town' dropdown +############ range ends here ############ range for subsidies menu starts STR_SUBSIDIES_MENU_SUBSIDIES :Subventions -STR_SUBSIDIES_MENU_GOAL :Objectifs actuels ############ range ends here ############ range for graph menu starts @@ -458,7 +471,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 @@ -474,22 +487,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 @@ -651,7 +682,7 @@ STR_HIGHSCORE_PERFORMANCE_TITLE_CAPITALIST :Capitaliste STR_HIGHSCORE_PERFORMANCE_TITLE_MAGNATE :Magnat STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL :Grand ponte STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY :Tycoon du siècle -STR_HIGHSCORE_NAME :{BIG_FONT}{PRESIDENT_NAME}, {COMPANY} +STR_HIGHSCORE_NAME :{PRESIDENT_NAME}, {COMPANY} STR_HIGHSCORE_STATS :{BIG_FONT}'{STRING}' ({COMMA}) STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{BLACK}{COMPANY} atteint le statut de «{NBSP}{STRING}{NBSP}»{NBSP}! STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{WHITE}{PRESIDENT_NAME} de {COMPANY} atteint le statut de «{NBSP}{STRING}{NBSP}»{NBSP}! @@ -662,17 +693,20 @@ STR_SMALLMAP_CAPTION :{WHITE}Mini-car STR_SMALLMAP_TYPE_CONTOURS :Relief STR_SMALLMAP_TYPE_VEHICLES :Véhicules STR_SMALLMAP_TYPE_INDUSTRIES :Industries +STR_SMALLMAP_TYPE_ROUTEMAP :Flux des marchandises STR_SMALLMAP_TYPE_ROUTES :Routes STR_SMALLMAP_TYPE_VEGETATION :Végétation STR_SMALLMAP_TYPE_OWNERS :Propriétaires STR_SMALLMAP_TOOLTIP_SHOW_LAND_CONTOURS_ON_MAP :{BLACK}Afficher le relief sur la mini-carte STR_SMALLMAP_TOOLTIP_SHOW_VEHICLES_ON_MAP :{BLACK}Afficher les véhicules sur la mini-carte STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRIES_ON_MAP :{BLACK}Afficher les industries sur la mini-carte +STR_SMALLMAP_TOOLTIP_SHOW_LINK_STATS_ON_MAP :{BLACK}Afficher le flux des marchandises sur la carte STR_SMALLMAP_TOOLTIP_SHOW_TRANSPORT_ROUTES_ON :{BLACK}Afficher les routes de transport sur la mini-carte STR_SMALLMAP_TOOLTIP_SHOW_VEGETATION_ON_MAP :{BLACK}Afficher la végétation sur la mini-carte STR_SMALLMAP_TOOLTIP_SHOW_LAND_OWNERS_ON_MAP :{BLACK}Afficher les propriétaires sur la mini-carte STR_SMALLMAP_TOOLTIP_INDUSTRY_SELECTION :{BLACK}Cliquer sur un type d'industrie pour activer ou non son affichage.{}Ctrl-clic pour désactiver tous les types d'industrie excepté celui sélectionné.{}Ctrl-clic à nouveau pour réactiver tous les types d'industrie. STR_SMALLMAP_TOOLTIP_COMPANY_SELECTION :{BLACK}Cliquer sur une compagnie pour afficher ou non ses propriétés.{}Ctr-clic pour désactiver toutes les compagnies exceptée celle sélectionnée.{}Ctrl-clic à nouveau pour réactiver toutes les compagnies. +STR_SMALLMAP_TOOLTIP_CARGO_SELECTION :{BLACK}Cliquer sur une marchandise pour basculer l'affichage de ses propriétés. Ctrl-Clic désactive toute les marchandises sauf celle sélectionnée. Ctrl-Clic à nouveau dessus pour activer toutes les marchandises STR_SMALLMAP_LEGENDA_ROADS :{TINY_FONT}{BLACK}Routes STR_SMALLMAP_LEGENDA_RAILROADS :{TINY_FONT}{BLACK}Voies ferrées @@ -706,6 +740,7 @@ STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLA STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Afficher ou non le nom des villes sur la mini-carte STR_SMALLMAP_CENTER :{BLACK}Centrer la mini-carte sur la position actuelle 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ésactiver tout @@ -716,6 +751,8 @@ STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES :{BLACK}Afficher STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}Alterner entre l'affichage ou non du relief STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES :{BLACK}N'afficher aucune propriété des compagnies sur la carte STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}Afficher toutes les propriétés des compagnies sur la mini-carte +STR_SMALLMAP_TOOLTIP_DISABLE_ALL_CARGOS :{BLACK}N'afficher aucune marchandises sur la carte +STR_SMALLMAP_TOOLTIP_ENABLE_ALL_CARGOS :{BLACK}Afficher toutes les marchandises sur la carte # Status bar messages STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Afficher le dernier message ou bulletin @@ -792,13 +829,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 @@ -877,15 +913,12 @@ STR_GAME_OPTIONS_CURRENCY_LTL :Litas lituanien STR_GAME_OPTIONS_CURRENCY_KRW :Won sud-coréen (KRW) STR_GAME_OPTIONS_CURRENCY_ZAR :Rand sud-africain (ZAR) STR_GAME_OPTIONS_CURRENCY_CUSTOM :Personnalisée... +STR_GAME_OPTIONS_CURRENCY_GEL :Lari Géorgien (GEL) +STR_GAME_OPTIONS_CURRENCY_IRR :Rial Iranien (IRR) ############ end of currency region -STR_GAME_OPTIONS_MEASURING_UNITS_FRAME :{BLACK}Unités de mesure -STR_GAME_OPTIONS_MEASURING_UNITS_DROPDOWN_TOOLTIP :{BLACK}Sélectionner les unités de mesure ############ start of measuring units region -STR_GAME_OPTIONS_MEASURING_UNITS_IMPERIAL :Système impérial -STR_GAME_OPTIONS_MEASURING_UNITS_METRIC :Système métrique -STR_GAME_OPTIONS_MEASURING_UNITS_SI :SI ############ end of measuring units region STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Véhicules routiers @@ -923,11 +956,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 @@ -939,9 +974,6 @@ 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_BASE_GRF :{BLACK}Graphiques de base STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Sélectionner les graphiques de base à utiliser STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} fichier{P "" s} manquant{P "" s}/corrompu{P "" s} @@ -956,6 +988,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 @@ -1055,8 +1088,9 @@ 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_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 :Options de base STR_CONFIG_SETTING_RESTRICT_ADVANCED :Options avancées STR_CONFIG_SETTING_RESTRICT_ALL :Paramètres expert / Tous les paramètres @@ -1064,12 +1098,16 @@ STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :Paramètres ave 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_CLIENT :Paramètres du client (n'est pas enregistré dans les sauvegardes{NBSP}; affecte toutes les parties) -STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Paramètres de jeu (enregistré dans les sauvegardes{NBSP}; affecte uniquement les nouvelles parties) -STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Paramètres de jeu (enregistrés dans les sauvegardes{NBSP}; affecte uniquement la partie actuelle) -STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Paramètres de compagnie (enregistrés dans les sauvegardes{NBSP}; affecte uniquement les nouvelles parties) -STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Paramètres de compagnie (enregistré dans les sauvegardes{NBSP}; affecte uniquement la compagnie actuelle) +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é @@ -1090,7 +1128,7 @@ STR_CONFIG_SETTING_HORIZONTAL_POS_RIGHT :À droite STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN :Emprunt initial maximum{NBSP}: {STRING} STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Montant maximum qu'une compagnie peut emprunter (sans tenir compte de l'inflation) STR_CONFIG_SETTING_INTEREST_RATE :Taux d'intérêt{NBSP}: {STRING} -STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Taux d’intérêt de l'emprunt; contrôle également l'inflation si activé +STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Taux d’intérêt de l'emprunt{NBSP}; contrôle également l'inflation si activé STR_CONFIG_SETTING_RUNNING_COSTS :Coûts d'entretien{NBSP}: {STRING} STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT :Définit le niveau des coûts d'entretien et de fonctionnement des véhicules et des infrastructures STR_CONFIG_SETTING_CONSTRUCTION_SPEED :Vitesse de construction{NBSP}: {STRING} @@ -1102,17 +1140,15 @@ STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT :Définit combie STR_CONFIG_SETTING_CONSTRUCTION_COSTS :Coûts de construction{NBSP}: {STRING} STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :Définit le niveau des coûts de construction et d'achat STR_CONFIG_SETTING_RECESSIONS :Récessions{NBSP}: {STRING} -STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Si activé, des récessions peuvent se produire toutes les quelques années. Pendant une récession, toute la production baisse de façon significative (elle retourne à son niveau antérieur à la fin de la récession) +STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Si activé, des récessions peuvent se produire toutes les quelques années. Pendant une récession, toute la production baisse de façon significative (elle retourne à son niveau antérieur à la fin de la récession). STR_CONFIG_SETTING_TRAIN_REVERSING :Interdire le retournement des trains dans les stations{NBSP}: {STRING} -STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :Si activé, les trains de se retourneront plus dans les stations non terminus, s'il y a un chemin plus court vers leur prochaine destination en se retournant +STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :Si activé, les trains ne feront plus demi-tour dans les stations non terminus, même si ce faisant il y avait un chemin plus court vers leur prochaine destination. STR_CONFIG_SETTING_DISASTERS :Catastrophes{NBSP}: {STRING} STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Activer/Désactiver les catastrophes qui peuvent occasionnellement bloquer ou détruire des véhicules ou des infrastructures 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_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 @@ -1136,14 +1172,8 @@ 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_TUNNEL_LENGTH :Longueur maximum des tunnels{NBSP}: {STRING} @@ -1171,8 +1201,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é @@ -1203,10 +1231,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 @@ -1245,27 +1269,41 @@ STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :Afficher la pop 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 @@ -1286,7 +1324,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 @@ -1316,17 +1354,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} @@ -1335,7 +1371,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 @@ -1350,7 +1386,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 @@ -1367,8 +1403,8 @@ STR_CONFIG_SETTING_SOUND_CONFIRM :Construction{NB STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT :Jouer un effet sonore pour les constructions réussies ou d'autres actions STR_CONFIG_SETTING_SOUND_CLICK :Clics des boutons{NBSP}: {STRING} STR_CONFIG_SETTING_SOUND_CLICK_HELPTEXT :Émettre un bip lors des clics sur les boutons -STR_CONFIG_SETTING_SOUND_DISASTER :Désastres/accidents{NBSP}: {STRING} -STR_CONFIG_SETTING_SOUND_DISASTER_HELPTEXT :Jouer les effets sonores des accidents et des désastres +STR_CONFIG_SETTING_SOUND_DISASTER :Catastrophes/Accidents{NBSP}: {STRING} +STR_CONFIG_SETTING_SOUND_DISASTER_HELPTEXT :Jouer les effets sonores des accidents et des catastrophes STR_CONFIG_SETTING_SOUND_VEHICLE :Véhicules{NBSP}: {STRING} STR_CONFIG_SETTING_SOUND_VEHICLE_HELPTEXT :Jouer les effets sonores des véhicules STR_CONFIG_SETTING_SOUND_AMBIENT :Ambiance{NBSP}: {STRING} @@ -1424,35 +1460,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_HELPTEXT :Afficher un journal quand des accidents ou des désastres se produisent -STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION :Informations corporatives: {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{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 @@ -1500,7 +1536,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 @@ -1548,28 +1584,90 @@ 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_GUI :{ORANGE}Interface -STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}Construction +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_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_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{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{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{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{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{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{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é{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} +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_HELPTEXT :Quand une vitesse est affichée dans l'interface utilisateur, utiliser l'unité sélectionnée +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_IMPERIAL :Impérial (mph) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_METRIC :Métrique (km/h) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_SI :SI (m/s) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER :Unité de puissance de véhicule{NBSP}: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_HELPTEXT :Quand une puissance de véhicule est affichée dans l'interface utilisateur, utiliser l'unité sélectionnée +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_IMPERIAL :Impérial (hp) +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_METRIC :Métrique (hp) +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_SI :SI (kW) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT :Unité de masse{NBSP}: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_HELPTEXT :Quand une masse est affichée dans l'interface utilisateur, utiliser l'unité sélectionnée +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_IMPERIAL :Impérial (t/tonne courte) +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_METRIC :Métrique (t/tonne) +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_SI :SI (kg) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME :Unité de volume{NBSP}: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_HELPTEXT :Quand un volume est affiché dans l'interface utilisateur, utiliser l'unité sélectionnée +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_IMPERIAL :Impérial (gal) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_METRIC :Métrique (l) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_SI :SI (m³) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE :Unité d'effort de traction{NBSP}: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_HELPTEXT :Quand un effort de traction, ou force de traction, est affiché dans l'interface utilisateur, utiliser l'unité sélectionnée +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_IMPERIAL :Impérial (lbf) +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_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_LOCALISATION :{ORANGE}Localisation +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_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 @@ -1603,6 +1701,8 @@ STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_ALGORITHM :{WHITE}... le f STR_CONFIG_ERROR_INVALID_BASE_GRAPHICS_NOT_FOUND :{WHITE}... graphiques de base '{STRING}' ignorés{NBSP}: non trouvés STR_CONFIG_ERROR_INVALID_BASE_SOUNDS_NOT_FOUND :{WHITE}... sons de base '{STRING}' ignorés{NBSP}: non trouvés STR_CONFIG_ERROR_INVALID_BASE_MUSIC_NOT_FOUND :{WHITE}... musique de base '{STRING}' ignorée{NBSP}: non trouvée +STR_CONFIG_ERROR_OUT_OF_MEMORY :{WHITE}Plus de mémoire +STR_CONFIG_ERROR_SPRITECACHE_TOO_BIG :{WHITE}L'allocation de {BYTES} pour le cache des sprites a échoué. Le cache des sprites a été réduit à {BYTES}. Cela va réduire les performances d'OpenTTD. Pour diminuer les besoins en mémoire vous pouvez essayer de désactiver les graphismes 32bpp et/ou les niveaux de zoom avant # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} @@ -1670,7 +1770,7 @@ STR_ABANDON_SCENARIO_QUERY :{YELLOW}Êtes-v # Cheat window STR_CHEATS :{WHITE}Triches STR_CHEATS_TOOLTIP :{BLACK}Les cases à cocher montrent si vous avez déjà utilisé cette triche auparavant -STR_CHEATS_WARNING :{BLACK}Attention{NBSP}! Vous êtes sur le point de trahir vos adversaires. Gardez en tête qu'une telle honte sera gardée en mémoire pour l'éternité. +STR_CHEATS_WARNING :{BLACK}Attention{NBSP}! Vous êtes sur le point de trahir vos adversaires. Vous et votre famille serez déshonoré pour l'éternité. STR_CHEAT_MONEY :{LTBLUE}Augmenter l'argent de {CURRENCY_LONG} STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Jouer en tant que compagnie{NBSP}: {ORANGE}{COMMA} STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Bulldozer magique (enlèvement des industries et des objets fixes){NBSP}: {ORANGE}{STRING} @@ -1724,6 +1824,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 @@ -1779,10 +1880,10 @@ STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}Modifier # Network server list STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}Multijoueurs -STR_NETWORK_SERVER_LIST_CONNECTION :{BLACK}Connexion{NBSP}: -STR_NETWORK_SERVER_LIST_CONNECTION_TOOLTIP :{BLACK}Choisir entre un jeu sur Internet ou sur le réseau local -STR_NETWORK_SERVER_LIST_LAN :LAN -STR_NETWORK_SERVER_LIST_INTERNET :Internet +STR_NETWORK_SERVER_LIST_ADVERTISED :{BLACK}Publiée +STR_NETWORK_SERVER_LIST_ADVERTISED_TOOLTIP :{BLACK}Choisir entre une partie publiée (internet) et une partie non publiée (Réseau local, LAN) +STR_NETWORK_SERVER_LIST_ADVERTISED_NO :Non +STR_NETWORK_SERVER_LIST_ADVERTISED_YES :Oui STR_NETWORK_SERVER_LIST_PLAYER_NAME :{BLACK}Nom du joueur{NBSP}: STR_NETWORK_SERVER_LIST_ENTER_NAME_TOOLTIP :{BLACK}Ceci est le nom sous lequel vous serez connu des autres joueurs @@ -1841,16 +1942,16 @@ STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP :{BLACK}Les autr STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}Choisir le mot de passe STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Protégez votre partie avec un mot de passe si vous ne souhaitez pas que d'autres l'utilisent -STR_NETWORK_START_SERVER_LAN_INTERNET :LAN / Internet -STR_NETWORK_START_SERVER_INTERNET_ADVERTISE :Internet (publier) +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 @@ -1963,6 +2064,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é @@ -2081,6 +2183,10 @@ STR_CONTENT_SELECT_UPDATES_CAPTION :{BLACK}Sélecti STR_CONTENT_SELECT_UPDATES_CAPTION_TOOLTIP :{BLACK}Marquer comme étant à télécharger tous les modules qui sont une mise à jour des modules existants STR_CONTENT_UNSELECT_ALL_CAPTION :{BLACK}Désélectionner tout STR_CONTENT_UNSELECT_ALL_CAPTION_TOOLTIP :{BLACK}Marquer tous les modules comme étant à ne pas télécharger +STR_CONTENT_SEARCH_EXTERNAL :{BLACK}Recherche sur des sites externes +STR_CONTENT_SEARCH_EXTERNAL_TOOLTIP :{BLACK}Chercher du contenu non disponible dans le service de contenu d'OpenTTD sur des sites non-associés à OpenTTD +STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER_CAPTION :{WHITE}Vous quittez OpenTTD{NBSP}! +STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER :{WHITE}Les termes et conditions du téléchargement de contenu depuis des sites externes varient.{}Vous devrez vous référer aux sites externes pour les instructions d'installation du contenu dans OpenTTD.{}Voulez-vous continuer{NBSP}? STR_CONTENT_FILTER_TITLE :{BLACK}Filtre sur les étiquettes/le nom{NBSP}: STR_CONTENT_OPEN_URL :{BLACK}Visiter le site web STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}Visiter le site web pour ce module @@ -2150,6 +2256,17 @@ STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}Transpar STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Transparence des indicateurs de chargement.{}Ctrl-clic pour verrouiller. STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}Alterner entre transparence et invisibilité des objets +# Linkgraph legend window +STR_LINKGRAPH_LEGEND_CAPTION :{BLACK}Légende du flux de marchandises +STR_LINKGRAPH_LEGEND_ALL :{BLACK}Toute +STR_LINKGRAPH_LEGEND_NONE :{BLACK}Aucune +STR_LINKGRAPH_LEGEND_SELECT_COMPANIES :{BLACK}Choisir les compagnies à afficher + +# Linkgraph legend window and linkgraph legend in smallmap +STR_LINKGRAPH_LEGEND_UNUSED :{TINY_FONT}{BLACK}inutilisé +STR_LINKGRAPH_LEGEND_SATURATED :{TINY_FONT}{BLACK}saturé +STR_LINKGRAPH_LEGEND_OVERLOADED :{TINY_FONT}{BLACK}surchargé + # Base for station construction window(s) STR_STATION_BUILD_COVERAGE_AREA_TITLE :{BLACK}Afficher la zone couverte STR_STATION_BUILD_COVERAGE_OFF :{BLACK}Désactivé @@ -2452,6 +2569,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 @@ -2548,7 +2666,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-2012 L'équipe OpenTTD +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2014 L'équipe OpenTTD # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Sauvegarder la partie @@ -2567,6 +2685,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} @@ -2577,6 +2696,7 @@ STR_SAVELOAD_OSKTITLE :{BLACK}Entrer u # World generation STR_MAPGEN_WORLD_GENERATION_CAPTION :{WHITE}Création du monde STR_MAPGEN_MAPSIZE :{BLACK}Taille de la carte{NBSP}: +STR_MAPGEN_MAPSIZE_TOOLTIP :{BLACK}Définir la taille de la carte en cases. Le nombre de cases utilisables sera légèrement plus petit STR_MAPGEN_BY :{BLACK}{NBSP}× STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Nb. de villes{NBSP}: STR_MAPGEN_DATE :{BLACK}Date{NBSP}: @@ -2584,10 +2704,6 @@ STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Nb. d'in 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}: @@ -2614,7 +2730,6 @@ 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_SNOW_LINE_QUERY_CAPT :{WHITE}Modifier l'altitude d'enneigement STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Modifier l'année de départ @@ -2669,7 +2784,9 @@ 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_FILE_TOOLTIP :{BLACK}Liste des modules NewGRF installés. Cliquer sur un module pour modifier ses paramètres. +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 STR_NEWGRF_SETTINGS_SHOW_PARAMETERS :{BLACK}Afficher les paramètres @@ -2693,6 +2810,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 @@ -2759,10 +2886,11 @@ STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Format de sprit # NewGRF related 'general' warnings STR_NEWGRF_POPUP_CAUTION_CAPTION :{WHITE}Attention{NBSP}! -STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}Vous êtes sur le point de faire des changements dans une partie en cours. Cela peut faire planter OpenTTD ou corrompre l'état de la partie. Ne rapportez pas de bogues pour ces problèmes.{}Êtes-vous absolument sûr{NBSP}? +STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}Vous êtes sur le point de faire des changements dans une partie en cours. Cela peut provoquer l'arrêt d'OpenTTD ou compromettre la partie en cours. Ne rapportez pas de bogues pour ces problèmes.{}Êtes-vous absolument sûr{NBSP}? STR_NEWGRF_DUPLICATE_GRFID :{WHITE}Ajout impossible{NBSP}: GRF ID en double STR_NEWGRF_COMPATIBLE_LOADED :{ORANGE}Module exact non trouvé (GRF compatible chargé) +STR_NEWGRF_TOO_MANY_NEWGRFS :{WHITE}Impossible d'ajouter le module{NBSP}: la limite des modules NewGRF a été atteinte STR_NEWGRF_COMPATIBLE_LOAD_WARNING :{WHITE}GRF(s) compatible(s) chargé(s) pour les modules absents STR_NEWGRF_DISABLED_WARNING :{WHITE}Module(s) GRF absent(s) désactivés @@ -2779,6 +2907,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 @@ -2793,6 +2922,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... @@ -2874,10 +3006,14 @@ STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT :{YELLOW}Acheter STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}Corrompre la municipalité pour améliorer votre réputation. Risque de pénalisation si le pot-de-vin est dévoilé.{}Coût{NBSP}: {CURRENCY_LONG} # Goal window -STR_GOALS_CAPTION :{WHITE}Objectifs +STR_GOALS_CAPTION :{WHITE}Objectifs de {COMPANY} +STR_GOALS_SPECTATOR_CAPTION :{WHITE}Objectifs globaux STR_GOALS_GLOBAL_TITLE :{BLACK}Objectifs globaux{NBSP}: STR_GOALS_TEXT :{ORANGE}{STRING} STR_GOALS_NONE :{ORANGE}− Aucun − +STR_GOALS_SPECTATOR_NONE :{ORANGE}- Pas applicable - +STR_GOALS_PROGRESS :{ORANGE}{STRING} +STR_GOALS_PROGRESS_COMPLETE :{GREEN}{STRING} STR_GOALS_COMPANY_TITLE :{BLACK}Objectifs de la compagnie{NBSP}: STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Cliquer sur l'objectif pour centrer la vue principale sur l'industrie, la ville ou la case. Ctrl-clic pour ouvrir une nouvelle vue sur l'industrie, la ville ou la case. @@ -2916,6 +3052,18 @@ STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}Subventi STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING} de {STRING} à {STRING}{YELLOW} ({COMPANY}{YELLOW}, jusqu'à {DATE_SHORT}) STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Cliquer sur le service pour centrer la vue principale sur l'industrie ou la ville. Ctrl-clic pour ouvrir une nouvelle vue sur l'industrie ou la ville. +# Story book window +STR_STORY_BOOK_CAPTION :{WHITE}Livre d'histoire de {COMPANY} +STR_STORY_BOOK_SPECTATOR_CAPTION :{WHITE}Livre d'histoire global +STR_STORY_BOOK_TITLE :{YELLOW}{STRING} +STR_STORY_BOOK_GENERIC_PAGE_ITEM :Page {NUM} +STR_STORY_BOOK_SEL_PAGE_TOOLTIP :{BLACK}Aller à une page spécifique en la choisissant dans cette liste +STR_STORY_BOOK_PREV_PAGE :{BLACK}Précédente +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. STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}Ctrl-clic pour sélectionner plus d'un élément @@ -2929,9 +3077,9 @@ 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) STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Accepte STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Afficher les marchandises acceptées @@ -2942,8 +3090,31 @@ STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPAN STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Qualité STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Afficher la qualité de service de la station -STR_STATION_VIEW_CARGO_RATINGS_TITLE :{BLACK}Qualité du service de transport{NBSP}: -STR_STATION_VIEW_CARGO_RATING :{WHITE}{STRING}{NBSP}: {YELLOW}{STRING} ({COMMA}{NBSP}%) +STR_STATION_VIEW_SUPPLY_RATINGS_TITLE :{BLACK}Cargaison reçue (mensuel) et qualité du service: +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{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} +STR_STATION_VIEW_FROM_ANY :{RED}{CARGO_SHORT} station d'origine inconnue +STR_STATION_VIEW_TO_ANY :{RED}{CARGO_SHORT} vers toute station +STR_STATION_VIEW_VIA_ANY :{RED}{CARGO_SHORT} par toute station +STR_STATION_VIEW_FROM_HERE :{GREEN}{CARGO_SHORT} depuis cette station +STR_STATION_VIEW_VIA_HERE :{GREEN}{CARGO_SHORT} en arrêt à cette station +STR_STATION_VIEW_TO_HERE :{GREEN}{CARGO_SHORT} vers cette station +STR_STATION_VIEW_NONSTOP :{YELLOW}{CARGO_SHORT} sans arrêt + +STR_STATION_VIEW_GROUP_S_V_D :Origine-Route-Destination +STR_STATION_VIEW_GROUP_S_D_V :Origine-Destination-Route +STR_STATION_VIEW_GROUP_V_S_D :Route-Origine-Destination +STR_STATION_VIEW_GROUP_V_D_S :Route-Destination-Origine +STR_STATION_VIEW_GROUP_D_S_V :Destination-Origine-Route +STR_STATION_VIEW_GROUP_D_V_S :Destination-Route-Origine ############ range for rating starts STR_CARGO_RATING_APPALLING :Épouvantable @@ -3070,7 +3241,6 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS :{WHITE}Canaux STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}Stations{NBSP}: STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}Cases de station STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}Aéroports -STR_COMPANY_INFRASTRUCTURE_VIEW_COST :{WHITE}{1:CURRENCY_LONG}/an ({0:COMMA}) STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL :{WHITE}{CURRENCY_LONG}/an # Industry directory @@ -3087,6 +3257,7 @@ STR_INDUSTRY_VIEW_PRODUCTION_LAST_MONTH_TITLE :{BLACK}Producti STR_INDUSTRY_VIEW_TRANSPORTED :{YELLOW}{CARGO_LONG}{STRING}{BLACK} ({COMMA}{NBSP}% transporté{P "" s}) STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Centrer la vue sur l'industrie. Ctrl-clic pour ouvrir une nouvelle vue sur l'industrie. STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Niveau de production{NBSP}: {YELLOW}{COMMA}{NBSP}% +STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}L'industrie a annoncé sa fermeture imminente{NBSP}! ############ range for requires starts STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Nécessite{NBSP}: {YELLOW}{STRING}{STRING} @@ -3149,12 +3320,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 @@ -3450,6 +3624,11 @@ STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Interval 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. +STR_SERVICE_INTERVAL_DROPDOWN_TOOLTIP :{BLACK}Modifier le type d’intervalle d'entretien +STR_VEHICLE_DETAILS_DEFAULT :Défaut +STR_VEHICLE_DETAILS_DAYS :Jours +STR_VEHICLE_DETAILS_PERCENT :Pourcentage + STR_QUERY_RENAME_TRAIN_CAPTION :{WHITE}Renommer le train STR_QUERY_RENAME_ROAD_VEHICLE_CAPTION :{WHITE}Renommer le véhicule STR_QUERY_RENAME_SHIP_CAPTION :{WHITE}Rebaptiser le navire @@ -3538,8 +3717,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 @@ -3630,18 +3809,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 @@ -3667,9 +3846,13 @@ 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} @@ -3685,7 +3868,7 @@ STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}Cet hora STR_TIMETABLE_STATUS_START_AT :{BLACK}Cet horaire démarrera à {STRING} STR_TIMETABLE_STARTING_DATE :{BLACK}Date de départ -STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Sélectionner une date comme point de départ de cet horaire +STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Choisir une date comme point de départ de cet horaire. Ctrl-clic pour définir le point de départ de cet horaire et répartir tous les véhicules partageant cet ordre uniformément selon leur ordre relatif, si l'ordre est complétement planifié STR_TIMETABLE_CHANGE_TIME :{BLACK}Modifier la durée STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Modifier la durée de l'ordre sélectionné @@ -3799,6 +3982,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 @@ -3821,6 +4006,10 @@ STR_INCOME_FLOAT_INCOME_SMALL :{TINY_FONT}{GRE STR_INCOME_FLOAT_INCOME :{GREEN}Revenu{NBSP}: {CURRENCY_LONG} STR_FEEDER_TINY :{TINY_FONT}{YELLOW}Transfert{NBSP}: {CURRENCY_LONG} STR_FEEDER :{YELLOW}Transfert{NBSP}: {CURRENCY_LONG} +STR_FEEDER_INCOME_TINY :{TINY_FONT}{YELLOW}Transfert{NBSP}: {CURRENCY_LONG}{WHITE} / {GREEN}Revenu{NBSP}: {CURRENCY_LONG} +STR_FEEDER_INCOME :{YELLOW}Transfert{NBSP}: {CURRENCY_LONG}{WHITE} / {GREEN}Revenu{NBSP}: {CURRENCY_LONG} +STR_FEEDER_COST_TINY :{TINY_FONT}{YELLOW}Transfert{NBSP}: {CURRENCY_LONG}{WHITE} / {RED}Coût{NBSP}: {CURRENCY_LONG} +STR_FEEDER_COST :{YELLOW}Transfert{NBSP}: {CURRENCY_LONG}{WHITE} / {RED}Coût{NBSP}: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_COST :{WHITE}Coût estimé{NBSP}: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Revenu estimé{NBSP}: {CURRENCY_LONG} @@ -4117,6 +4306,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... @@ -4172,6 +4362,11 @@ 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 + # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Impossible de forcer le train à avancer sous le danger... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Impossible de faire faire demi-tour... @@ -4214,6 +4409,16 @@ STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}Impossib # Translatable comment for OpenTTD's desktop shortcut STR_DESKTOP_SHORTCUT_COMMENT :Un jeu de simulation basé sur Transport Tycoon Deluxe +# Translatable descriptions in media/baseset/*.ob* files +STR_BASEGRAPHICS_DOS_DESCRIPTION :Graphiques originaux de Transport Tycoon Deluxe (version DOS). +STR_BASEGRAPHICS_DOS_DE_DESCRIPTION :Graphiques originaux de Transport Tycoon Deluxe (version DOS allemande). +STR_BASEGRAPHICS_WIN_DESCRIPTION :Graphiques originaux de Transport Tycoon Deluxe (version Windows). +STR_BASESOUNDS_DOS_DESCRIPTION :Sons originaux de Transport Tycoon Deluxe (version DOS). +STR_BASESOUNDS_WIN_DESCRIPTION :Sons originaux de Transport Tycoon Deluxe (version Windows). +STR_BASESOUNDS_NONE_DESCRIPTION :Un pack de sons sans sons. +STR_BASEMUSIC_WIN_DESCRIPTION :Musiques originales de Transport Tycoon Deluxe (version Windows). +STR_BASEMUSIC_NONE_DESCRIPTION :Un pack de musiques sans musiques. + ##id 0x2000 # Town building names STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1 :Grand immeuble de bureaux @@ -4336,7 +4541,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) @@ -4545,7 +4750,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 @@ -4660,8 +4865,9 @@ 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_SPACE_STRING :{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} @@ -4685,9 +4891,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 new file mode 100644 index 000000000..dad7feaf9 --- /dev/null +++ b/src/lang/gaelic.txt @@ -0,0 +1,5302 @@ +##name Scottish Gaelic +##ownname Gàidhlig +##isocode gd_GB +##plural 13 +##textdir ltr +##digitsep , +##digitsepcur , +##decimalsep . +##winlangid 0x083c +##grflangid 0x13 +##gender m f +##case nom gen dat voc + + +# $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 :(sreang gun deifinisean) +STR_JUST_NOTHING :— + +# Cargo related strings +# Plural cargo name +STR_CARGO_PLURAL_NOTHING : +STR_CARGO_PLURAL_PASSENGERS :Taistealaich +STR_CARGO_PLURAL_PASSENGERS.nom :Taistealaich +STR_CARGO_PLURAL_PASSENGERS.gen :Thaistealach +STR_CARGO_PLURAL_PASSENGERS.dat :Taistealaich +STR_CARGO_PLURAL_COAL :{G=m}Gual +STR_CARGO_PLURAL_COAL.nom :Gual +STR_CARGO_PLURAL_COAL.gen :Guail +STR_CARGO_PLURAL_COAL.dat :Gual +STR_CARGO_PLURAL_MAIL :{G=m}Post +STR_CARGO_PLURAL_MAIL.nom :Post +STR_CARGO_PLURAL_MAIL.gen :Puist +STR_CARGO_PLURAL_MAIL.dat :Post +STR_CARGO_PLURAL_OIL :{G=f}Ola +STR_CARGO_PLURAL_OIL.nom :Ola +STR_CARGO_PLURAL_OIL.gen :Ola +STR_CARGO_PLURAL_OIL.dat :Ola +STR_CARGO_PLURAL_LIVESTOCK :{G=f}Sprèidh +STR_CARGO_PLURAL_LIVESTOCK.nom :Sprèidh +STR_CARGO_PLURAL_LIVESTOCK.gen :Sprèidhe +STR_CARGO_PLURAL_LIVESTOCK.dat :Sprèidh +STR_CARGO_PLURAL_GOODS :{G=m}Bathar +STR_CARGO_PLURAL_GOODS.nom :Bathar +STR_CARGO_PLURAL_GOODS.gen :Bathair +STR_CARGO_PLURAL_GOODS.dat :Bathar +STR_CARGO_PLURAL_GRAIN :{G=m}Gràn +STR_CARGO_PLURAL_GRAIN.nom :Gràn +STR_CARGO_PLURAL_GRAIN.gen :Gràin +STR_CARGO_PLURAL_GRAIN.dat :Gràn +STR_CARGO_PLURAL_WOOD :{G=m}Fiodh +STR_CARGO_PLURAL_WOOD.nom :Fiodh +STR_CARGO_PLURAL_WOOD.gen :Fiodha +STR_CARGO_PLURAL_WOOD.dat :Fiodh +STR_CARGO_PLURAL_IRON_ORE :{G=f}Clach-iarainn +STR_CARGO_PLURAL_IRON_ORE.nom :Clach-iarainn +STR_CARGO_PLURAL_IRON_ORE.gen :Cloich-iarainn +STR_CARGO_PLURAL_IRON_ORE.dat :Clach-iarainn +STR_CARGO_PLURAL_STEEL :{G=f}Stàilinn +STR_CARGO_PLURAL_STEEL.nom :Stàilinn +STR_CARGO_PLURAL_STEEL.gen :Stàilinne +STR_CARGO_PLURAL_STEEL.dat :Stàilinn +STR_CARGO_PLURAL_VALUABLES :{G=m}Seilbh +STR_CARGO_PLURAL_VALUABLES.nom :Seilbh +STR_CARGO_PLURAL_VALUABLES.gen :Shealbh +STR_CARGO_PLURAL_VALUABLES.dat :Seilbh +STR_CARGO_PLURAL_COPPER_ORE :{G=f}Clach-chopair +STR_CARGO_PLURAL_COPPER_ORE.nom :Clach-chopair +STR_CARGO_PLURAL_COPPER_ORE.gen :Cloiche-copair +STR_CARGO_PLURAL_COPPER_ORE.dat :Clach-chopair +STR_CARGO_PLURAL_MAIZE :{G=f}Cruithneachd Innseanach +STR_CARGO_PLURAL_MAIZE.nom :Cruithneachd Innseanach +STR_CARGO_PLURAL_MAIZE.gen :Cruithneachd Innseanach +STR_CARGO_PLURAL_MAIZE.dat :Cruithneachd Innseanach +STR_CARGO_PLURAL_FRUIT :{G=m}Measan +STR_CARGO_PLURAL_FRUIT.nom :Measan +STR_CARGO_PLURAL_FRUIT.gen :Mheasan +STR_CARGO_PLURAL_FRUIT.dat :Measan +STR_CARGO_PLURAL_DIAMONDS :{G=m}Daoimeanan +STR_CARGO_PLURAL_DIAMONDS.nom :Daoimeanan +STR_CARGO_PLURAL_DIAMONDS.gen :Dhaoimeanan +STR_CARGO_PLURAL_DIAMONDS.dat :Daoimeanan +STR_CARGO_PLURAL_FOOD :Biadh +STR_CARGO_PLURAL_FOOD.nom :Biadh +STR_CARGO_PLURAL_FOOD.gen :Bìdh +STR_CARGO_PLURAL_FOOD.dat :Biadh +STR_CARGO_PLURAL_PAPER :{G=m}Pàipear +STR_CARGO_PLURAL_PAPER.nom :Pàipear +STR_CARGO_PLURAL_PAPER.gen :Pàipeir +STR_CARGO_PLURAL_PAPER.dat :Pàipear +STR_CARGO_PLURAL_GOLD :{G=m}Òr +STR_CARGO_PLURAL_GOLD.nom :Òr +STR_CARGO_PLURAL_GOLD.gen :Òir +STR_CARGO_PLURAL_GOLD.dat :Òr +STR_CARGO_PLURAL_WATER :{G=m}Uisge +STR_CARGO_PLURAL_WATER.nom :Uisge +STR_CARGO_PLURAL_WATER.gen :Uisge +STR_CARGO_PLURAL_WATER.dat :Uisge +STR_CARGO_PLURAL_WHEAT :{G=f}Cruithneachd +STR_CARGO_PLURAL_WHEAT.nom :Cruithneachd +STR_CARGO_PLURAL_WHEAT.gen :Cruithneachd +STR_CARGO_PLURAL_WHEAT.dat :Cruithneachd +STR_CARGO_PLURAL_RUBBER :{G=m}Rubair +STR_CARGO_PLURAL_RUBBER.nom :Rubair +STR_CARGO_PLURAL_RUBBER.gen :Rubair +STR_CARGO_PLURAL_RUBBER.dat :Rubair +STR_CARGO_PLURAL_SUGAR :{G=m}Siùcar +STR_CARGO_PLURAL_SUGAR.nom :Siùcar +STR_CARGO_PLURAL_SUGAR.gen :Siùcair +STR_CARGO_PLURAL_SUGAR.dat :Siùcar +STR_CARGO_PLURAL_TOYS :{G=f}Dèideagan +STR_CARGO_PLURAL_TOYS.nom :Dèideagan +STR_CARGO_PLURAL_TOYS.gen :Dhèideagan +STR_CARGO_PLURAL_TOYS.dat :Dèideagan +STR_CARGO_PLURAL_CANDY :{G=m}Mìlseanan +STR_CARGO_PLURAL_CANDY.nom :Mìlseanan +STR_CARGO_PLURAL_CANDY.gen :Mhìlseanan +STR_CARGO_PLURAL_CANDY.dat :Mìlseanan +STR_CARGO_PLURAL_COLA :{G=m}Cola +STR_CARGO_PLURAL_COLA.nom :Cola +STR_CARGO_PLURAL_COLA.gen :Cola +STR_CARGO_PLURAL_COLA.dat :Cola +STR_CARGO_PLURAL_COTTON_CANDY :{G=f}Canach-shiùcair +STR_CARGO_PLURAL_COTTON_CANDY.nom :Canach-shiùcair +STR_CARGO_PLURAL_COTTON_CANDY.gen :Canaich-siùcair +STR_CARGO_PLURAL_COTTON_CANDY.dat :Canach-shiùcair +STR_CARGO_PLURAL_BUBBLES :{G=m}Builgeanan +STR_CARGO_PLURAL_BUBBLES.nom :Builgeanan +STR_CARGO_PLURAL_BUBBLES.gen :Bhuilgeanan +STR_CARGO_PLURAL_BUBBLES.dat :Builgeanan +STR_CARGO_PLURAL_TOFFEE :{G=m}Tofaidh +STR_CARGO_PLURAL_TOFFEE.nom :Tofaidh +STR_CARGO_PLURAL_TOFFEE.gen :Tofaidh +STR_CARGO_PLURAL_TOFFEE.dat :Tofaidh +STR_CARGO_PLURAL_BATTERIES :{G=f}Bataraidhean +STR_CARGO_PLURAL_BATTERIES.nom :Bataraidhean +STR_CARGO_PLURAL_BATTERIES.gen :Bhataraidhean +STR_CARGO_PLURAL_BATTERIES.dat :Bataraidhean +STR_CARGO_PLURAL_PLASTIC :{G=f}Plastaig +STR_CARGO_PLURAL_PLASTIC.nom :Plastaig +STR_CARGO_PLURAL_PLASTIC.gen :Plastaig +STR_CARGO_PLURAL_PLASTIC.dat :Plastaig +STR_CARGO_PLURAL_FIZZY_DRINKS :{G=f}Deochan gucagach +STR_CARGO_PLURAL_FIZZY_DRINKS.nom :Deochan gucagach +STR_CARGO_PLURAL_FIZZY_DRINKS.gen :Dheochan gucagach +STR_CARGO_PLURAL_FIZZY_DRINKS.dat :Deochan gucagach + +# Singular cargo name +STR_CARGO_SINGULAR_NOTHING : +STR_CARGO_SINGULAR_PASSENGER :{G=m}Taistealach +STR_CARGO_SINGULAR_PASSENGER.nom :Taistealach +STR_CARGO_SINGULAR_PASSENGER.gen :Taistealaich +STR_CARGO_SINGULAR_PASSENGER.dat :Taistealach +STR_CARGO_SINGULAR_COAL :{G=m}Gual +STR_CARGO_SINGULAR_COAL.nom :Gual +STR_CARGO_SINGULAR_COAL.gen :Guail +STR_CARGO_SINGULAR_COAL.dat :Gual +STR_CARGO_SINGULAR_MAIL :{G=m}Post +STR_CARGO_SINGULAR_MAIL.nom :Post +STR_CARGO_SINGULAR_MAIL.gen :Puist +STR_CARGO_SINGULAR_MAIL.dat :Post +STR_CARGO_SINGULAR_OIL :{G=f}Ola +STR_CARGO_SINGULAR_OIL.nom :Ola +STR_CARGO_SINGULAR_OIL.gen :Ola +STR_CARGO_SINGULAR_OIL.dat :Ola +STR_CARGO_SINGULAR_LIVESTOCK :{G=f}Sprèidh +STR_CARGO_SINGULAR_LIVESTOCK.nom :Sprèidh +STR_CARGO_SINGULAR_LIVESTOCK.gen :Sprèidhe +STR_CARGO_SINGULAR_LIVESTOCK.dat :Sprèidh +STR_CARGO_SINGULAR_GOODS :{G=m}Bathar +STR_CARGO_SINGULAR_GOODS.nom :Bathar +STR_CARGO_SINGULAR_GOODS.gen :Bathair +STR_CARGO_SINGULAR_GOODS.dat :Bathar +STR_CARGO_SINGULAR_GRAIN :{G=m}Gràn +STR_CARGO_SINGULAR_GRAIN.nom :Gràn +STR_CARGO_SINGULAR_GRAIN.gen :Gràin +STR_CARGO_SINGULAR_GRAIN.dat :Gràn +STR_CARGO_SINGULAR_WOOD :{G=m}Fiodh +STR_CARGO_SINGULAR_WOOD.nom :Fiodh +STR_CARGO_SINGULAR_WOOD.gen :Fiodha +STR_CARGO_SINGULAR_WOOD.dat :Fiodh +STR_CARGO_SINGULAR_IRON_ORE :{G=f}Clach-iarainn +STR_CARGO_SINGULAR_IRON_ORE.nom :Clach-iarainn +STR_CARGO_SINGULAR_IRON_ORE.gen :Cloich-iarainn +STR_CARGO_SINGULAR_IRON_ORE.dat :Clach-iarainn +STR_CARGO_SINGULAR_STEEL :{G=f}Stàilinn +STR_CARGO_SINGULAR_STEEL.nom :Stàilinn +STR_CARGO_SINGULAR_STEEL.gen :Stàilinne +STR_CARGO_SINGULAR_STEEL.dat :Stàilinn +STR_CARGO_SINGULAR_VALUABLES :{G=m}Sealbh +STR_CARGO_SINGULAR_VALUABLES.nom :Sealbh +STR_CARGO_SINGULAR_VALUABLES.gen :Seilbh +STR_CARGO_SINGULAR_VALUABLES.dat :Sealbh +STR_CARGO_SINGULAR_COPPER_ORE :{G=f}Clach-chopair +STR_CARGO_SINGULAR_COPPER_ORE.nom :Clach-chopair +STR_CARGO_SINGULAR_COPPER_ORE.gen :Cloiche-copair +STR_CARGO_SINGULAR_COPPER_ORE.dat :Clach-chopair +STR_CARGO_SINGULAR_MAIZE :{G=f}Cruithneachd Innseanach +STR_CARGO_SINGULAR_MAIZE.nom :Cruithneachd Innseanach +STR_CARGO_SINGULAR_MAIZE.gen :Cruithneachd Innseanach +STR_CARGO_SINGULAR_MAIZE.dat :Cruithneachd Innseanach +STR_CARGO_SINGULAR_FRUIT :{G=m}Meas +STR_CARGO_SINGULAR_FRUIT.nom :Meas +STR_CARGO_SINGULAR_FRUIT.gen :Measa +STR_CARGO_SINGULAR_FRUIT.dat :Meas +STR_CARGO_SINGULAR_DIAMOND :{G=m}Daoimean +STR_CARGO_SINGULAR_DIAMOND.nom :Daoimean +STR_CARGO_SINGULAR_DIAMOND.gen :Daoimein +STR_CARGO_SINGULAR_DIAMOND.dat :Daoimean +STR_CARGO_SINGULAR_FOOD :{G=m}Biadh +STR_CARGO_SINGULAR_FOOD.nom :Biadh +STR_CARGO_SINGULAR_FOOD.gen :Bìdh +STR_CARGO_SINGULAR_FOOD.dat :Biadh +STR_CARGO_SINGULAR_PAPER :{G=m}Pàipear +STR_CARGO_SINGULAR_PAPER.nom :Pàipear +STR_CARGO_SINGULAR_PAPER.gen :Pàipeir +STR_CARGO_SINGULAR_PAPER.dat :Pàipear +STR_CARGO_SINGULAR_GOLD :{G=m}Òr +STR_CARGO_SINGULAR_GOLD.nom :Òr +STR_CARGO_SINGULAR_GOLD.gen :Òir +STR_CARGO_SINGULAR_GOLD.dat :Òr +STR_CARGO_SINGULAR_WATER :{G=m}Uisge +STR_CARGO_SINGULAR_WATER.nom :Uisge +STR_CARGO_SINGULAR_WATER.gen :Uisge +STR_CARGO_SINGULAR_WATER.dat :Uisge +STR_CARGO_SINGULAR_WHEAT :{G=f}Cruithneachd +STR_CARGO_SINGULAR_WHEAT.nom :Cruithneachd +STR_CARGO_SINGULAR_WHEAT.gen :Cruithneachd +STR_CARGO_SINGULAR_WHEAT.dat :Cruithneachd +STR_CARGO_SINGULAR_RUBBER :{G=m}Rubair +STR_CARGO_SINGULAR_RUBBER.nom :Rubair +STR_CARGO_SINGULAR_RUBBER.gen :Rubair +STR_CARGO_SINGULAR_RUBBER.dat :Rubair +STR_CARGO_SINGULAR_SUGAR :{G=m}Siùcar +STR_CARGO_SINGULAR_SUGAR.nom :Siùcar +STR_CARGO_SINGULAR_SUGAR.gen :Siùcair +STR_CARGO_SINGULAR_SUGAR.dat :Siùcar +STR_CARGO_SINGULAR_TOY :{G=f}Dèideag +STR_CARGO_SINGULAR_TOY.nom :Dèideag +STR_CARGO_SINGULAR_TOY.gen :Dèideig +STR_CARGO_SINGULAR_TOY.dat :Dèideag +STR_CARGO_SINGULAR_CANDY :{G=m}Mìlsean +STR_CARGO_SINGULAR_CANDY.nom :Mìlsean +STR_CARGO_SINGULAR_CANDY.gen :Mìlsein +STR_CARGO_SINGULAR_CANDY.dat :Mìlsean +STR_CARGO_SINGULAR_COLA :{G=m}Cola +STR_CARGO_SINGULAR_COLA.nom :Cola +STR_CARGO_SINGULAR_COLA.gen :Cola +STR_CARGO_SINGULAR_COLA.dat :Cola +STR_CARGO_SINGULAR_COTTON_CANDY :{G=f}Canach-shiùcair +STR_CARGO_SINGULAR_COTTON_CANDY.nom :Canach-shiùcair +STR_CARGO_SINGULAR_COTTON_CANDY.gen :Canaich-siùcair +STR_CARGO_SINGULAR_COTTON_CANDY.dat :Canach-shiùcair +STR_CARGO_SINGULAR_BUBBLE :{G=m}Builgean +STR_CARGO_SINGULAR_BUBBLE.nom :Builgean +STR_CARGO_SINGULAR_BUBBLE.gen :Builgein +STR_CARGO_SINGULAR_BUBBLE.dat :Builgean +STR_CARGO_SINGULAR_TOFFEE :{G=m}Tofaidh +STR_CARGO_SINGULAR_TOFFEE.nom :Tofaidh +STR_CARGO_SINGULAR_TOFFEE.gen :Tofaidh +STR_CARGO_SINGULAR_TOFFEE.dat :Tofaidh +STR_CARGO_SINGULAR_BATTERY :{G=m}Bataraidh +STR_CARGO_SINGULAR_BATTERY.nom :Bataraidh +STR_CARGO_SINGULAR_BATTERY.gen :Bataraidh +STR_CARGO_SINGULAR_BATTERY.dat :Bataraidh +STR_CARGO_SINGULAR_PLASTIC :{G=f}Plastaig +STR_CARGO_SINGULAR_PLASTIC.nom :Plastaig +STR_CARGO_SINGULAR_PLASTIC.gen :Plastaig +STR_CARGO_SINGULAR_PLASTIC.dat :Plastaig +STR_CARGO_SINGULAR_FIZZY_DRINK :{G=f}Deoch ghucagach +STR_CARGO_SINGULAR_FIZZY_DRINK.nom :Deoch ghucagach +STR_CARGO_SINGULAR_FIZZY_DRINK.gen :Dibhe gucagaich +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_COAL :{WEIGHT_LONG} de ghual +STR_QUANTITY_MAIL :{COMMA} {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_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_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_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_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_COLA :{VOLUME_LONG} dhe chola +STR_QUANTITY_CANDYFLOSS :{WEIGHT_LONG} dhe chanach-siùcair +STR_QUANTITY_BUBBLES :{COMMA} {P bhuilgean bhuilgean builgeanan builgean} +STR_QUANTITY_TOFFEE :{WEIGHT_LONG} dhe thofaidh +STR_QUANTITY_BATTERIES :{COMMA} {P bhataraidh bhataraidh bataraidhean bataraidh} +STR_QUANTITY_PLASTIC :{VOLUME_LONG} dhe phlastaig +STR_QUANTITY_FIZZY_DRINKS :{COMMA} {P deoch dheoch deochan deoch} {P ghucagach ghucagach gucagach ghucagach} +STR_QUANTITY_N_A :— + +# Two letter abbreviation of cargo name +STR_ABBREV_NOTHING : +STR_ABBREV_PASSENGERS :{TINY_FONT}Tais +STR_ABBREV_COAL :{TINY_FONT}Gual +STR_ABBREV_MAIL :{TINY_FONT}Post +STR_ABBREV_OIL :{TINY_FONT}Ola +STR_ABBREV_LIVESTOCK :{TINY_FONT}Sprèidh +STR_ABBREV_GOODS :{TINY_FONT}Bath +STR_ABBREV_GRAIN :{TINY_FONT}Gràn +STR_ABBREV_WOOD :{TINY_FONT}Fiodh +STR_ABBREV_IRON_ORE :{TINY_FONT}Iara +STR_ABBREV_STEEL :{TINY_FONT}Stàil +STR_ABBREV_VALUABLES :{TINY_FONT}Seilbh +STR_ABBREV_COPPER_ORE :{TINY_FONT}Cop +STR_ABBREV_MAIZE :{TINY_FONT}CrIn +STR_ABBREV_FRUIT :{TINY_FONT}Meas +STR_ABBREV_DIAMONDS :{TINY_FONT}Daoim +STR_ABBREV_FOOD :{TINY_FONT}Biadh +STR_ABBREV_PAPER :{TINY_FONT}Pàip +STR_ABBREV_GOLD :{TINY_FONT}Òr +STR_ABBREV_WATER :{TINY_FONT}Uisg +STR_ABBREV_WHEAT :{TINY_FONT}Crui +STR_ABBREV_RUBBER :{TINY_FONT}Rub +STR_ABBREV_SUGAR :{TINY_FONT}Siùc +STR_ABBREV_TOYS :{TINY_FONT}Dèid +STR_ABBREV_SWEETS :{TINY_FONT}Mìls +STR_ABBREV_COLA :{TINY_FONT}Cola +STR_ABBREV_CANDYFLOSS :{TINY_FONT}Can +STR_ABBREV_BUBBLES :{TINY_FONT}Buil +STR_ABBREV_TOFFEE :{TINY_FONT}Tof +STR_ABBREV_BATTERIES :{TINY_FONT}Bat +STR_ABBREV_PLASTIC :{TINY_FONT}Plas +STR_ABBREV_FIZZY_DRINKS :{TINY_FONT}Deo +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} + +# Colours, do not shuffle +STR_COLOUR_DARK_BLUE :Gorm +STR_COLOUR_PALE_GREEN :Liath-uaine +STR_COLOUR_PINK :Pinc +STR_COLOUR_YELLOW :Buidhe +STR_COLOUR_RED :Dearg +STR_COLOUR_LIGHT_BLUE :Liath-ghorm +STR_COLOUR_GREEN :Uaine +STR_COLOUR_DARK_GREEN :Dorch-uaine +STR_COLOUR_BLUE :Saidhean +STR_COLOUR_CREAM :Bàn-dhearg +STR_COLOUR_MAUVE :Liath-phurpur +STR_COLOUR_PURPLE :Corca +STR_COLOUR_ORANGE :Orains +STR_COLOUR_BROWN :Donn +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_POWER_IMPERIAL :{COMMA}hp +STR_UNITS_POWER_METRIC :{COMMA}hp +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} {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_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} {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_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 +STR_LIST_FILTER_TITLE :{BLACK}Sreang criathraige: +STR_LIST_FILTER_OSKTITLE :{BLACK}Cuir a-steach sreang criathraige +STR_LIST_FILTER_TOOLTIP :{BLACK}Cuir a-steach facal-luirg gus an liosta a chriathradh leis + +STR_TOOLTIP_GROUP_ORDER :{BLACK}Tagh òrdugh a' bhuidhinn +STR_TOOLTIP_SORT_ORDER :{BLACK}Tagh òrdugh an t-seòrsachaidh (a' teàrnadh/a' dìreadh) +STR_TOOLTIP_SORT_CRITERIA :{BLACK}Tagh cuspairean-deuchainn an t-seòrsachaidh +STR_TOOLTIP_FILTER_CRITERIA :{BLACK}Tagh cuspairean-deuchainn a' chriathraidh +STR_BUTTON_SORT_BY :{BLACK}Seòrsaich a-rèir +STR_BUTTON_LOCATION :{BLACK}Ionad +STR_BUTTON_RENAME :{BLACK}Thoir ainm ùr air + +STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Dùin an uinneag +STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Tiotal na h-uinneige - slaod seo gus an uinneag a ghluasad +STR_TOOLTIP_SHADE :{BLACK}Sgàil an uinneag - na seall ach am bàr-tiotail +STR_TOOLTIP_DEBUG :{BLACK}Seall fiosrachadh dì-bhugaidh NewGRF +STR_TOOLTIP_DEFSIZE :{BLACK}Cuir am meud bunaiteach air an uinneag seo. Ctrl+Briog gus am meud làithreach a shàbhaladh mar am meud bunaiteach +STR_TOOLTIP_STICKY :{BLACK}Comharraich nach gabh an uinneag seo dùnadh leis an òrdugh “Dùin a h-uile uinneag". ’S urrainn dhut seo a shàbhaladh mar bhun-roghainn le Ctrl+Briogadh +STR_TOOLTIP_RESIZE :{BLACK}Briog is slaod gus an uinneag seo ath-mheudachadh +STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Toglaidh meud mòr/beag na h-uinneige +STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Bàr sgrolaidh - sgrolaich suas/sìos air an liosta +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 + +# Query window +STR_BUTTON_DEFAULT :{BLACK}Bunaiteach +STR_BUTTON_CANCEL :{BLACK}Sguir dheth +STR_BUTTON_OK :{BLACK}Ceart ma-thà + +# 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}Faide: {NUM} +STR_MEASURE_AREA :{BLACK}Raon: {NUM} x {NUM} +STR_MEASURE_LENGTH_HEIGHTDIFF :{BLACK}Faide: {NUM}{}Diofar dhe dh'àirde: {HEIGHT} +STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}Raon: {NUM} x {NUM}{}Diofar dhe dh'àirde: {HEIGHT} + + +# These are used in buttons +STR_SORT_BY_CAPTION_NAME :{BLACK}Ainm +STR_SORT_BY_CAPTION_DATE :{BLACK}Ceann-latha +# These are used in dropdowns +STR_SORT_BY_NAME :Ainm +STR_SORT_BY_PRODUCTION :Toradh +STR_SORT_BY_TYPE :Seòrsa +STR_SORT_BY_TRANSPORTED :Air a ghiùlain +STR_SORT_BY_NUMBER :Àireamh +STR_SORT_BY_PROFIT_LAST_YEAR :Prothaid an-uiridh +STR_SORT_BY_PROFIT_THIS_YEAR :Prothaid am bliadhna +STR_SORT_BY_AGE :Aois +STR_SORT_BY_RELIABILITY :Earbsachd +STR_SORT_BY_TOTAL_CAPACITY_PER_CARGOTYPE :Tomhas-lìonaidh slàn gach seòrsa dhe charago +STR_SORT_BY_MAX_SPEED :Luaths as motha +STR_SORT_BY_MODEL :Modail +STR_SORT_BY_VALUE :Luach +STR_SORT_BY_LENGTH :Faide +STR_SORT_BY_LIFE_TIME :Beatha air fhàgail +STR_SORT_BY_TIMETABLE_DELAY :Fadal clàir-ama +STR_SORT_BY_FACILITY :Seòrsa stèisein +STR_SORT_BY_WAITING_TOTAL :Carago iomlan a' feitheamh +STR_SORT_BY_WAITING_AVAILABLE :Carago a' feitheamh ’s ri làimh +STR_SORT_BY_RATING_MAX :Rangachadh carago as motha +STR_SORT_BY_RATING_MIN :Rangachadh carago as lugha +STR_SORT_BY_ENGINE_ID :Aithnichear einnsein (seòrsachadh clasaigeach) +STR_SORT_BY_COST :Cosgais +STR_SORT_BY_POWER :Lùth +STR_SORT_BY_TRACTIVE_EFFORT :Spàirn tàirnge +STR_SORT_BY_INTRO_DATE :Ceann-latha tòiseachaidh +STR_SORT_BY_RUNNING_COST :Cosgaisean ruith +STR_SORT_BY_POWER_VS_RUNNING_COST :Lùth/Cosgaisean ruith +STR_SORT_BY_CARGO_CAPACITY :Tomhas-lìonaidh carago +STR_SORT_BY_RANGE :Dlùths +STR_SORT_BY_POPULATION :Àireamh-shluaigh +STR_SORT_BY_RATING :Rangachadh + +# Tooltips for the main toolbar +STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Cuir an geama na stad / a' dol +STR_TOOLBAR_TOOLTIP_FORWARD :{BLACK}Cuir an geama air adhart gu luath +STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}Roghainnean +STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK}Sàbhail an geama, fàg an geama, fàg an-seo +STR_TOOLBAR_TOOLTIP_DISPLAY_MAP :{BLACK}Seall mapa, port-seallaidh a bharrachd no liosta dhe shanasan +STR_TOOLBAR_TOOLTIP_DISPLAY_TOWN_DIRECTORY :{BLACK}Seall eòlaire nam bailtean +STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Seall tarrailean +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Seall liosta stèiseanan na companaidh +STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Seall fiosrachadh maoin na companaidh +STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Seall fiosrachadh coitcheann na companaidh +STR_TOOLBAR_TOOLTIP_DISPLAY_STORY_BOOK :{BLACK}Seall an sgeulaiche +STR_TOOLBAR_TOOLTIP_DISPLAY_GOALS_LIST :{BLACK}Seall liosta nan amasan +STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Seall grafaichean +STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Seall clàr co-bhann nan companaidh +STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Maoinich togail aig gnìomhachas ùr no seall liosta dhen a h-uile gnìomhachas +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}Seall liosta dhe thrèanaichean na companaidh. Toglaidh Ctrl+briogadh fosgladh liosta buidhinn/carbaid +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}Seall liosta dhe charbadan-rathaid na companaidh. Toglaidh Ctrl+briogadh fosgladh liosta buidhinn/carbaid +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_SHIPS :{BLACK}Seall liosta dhe longan na companaidh. Toglaidh Ctrl+briogadh fosgladh liosta buidhinn/carbaid +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_AIRCRAFT :{BLACK}Seall liosta dhe charbadan-adhair na companaidh. Toglaidh Ctrl+briogadh fosgladh liosta buidhinn/carbaid +STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_IN :{BLACK}Sùm an sealladh a-steach +STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_OUT :{BLACK}Sùm an sealladh a-mach +STR_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Tog slighe rathaid-iarainn +STR_TOOLBAR_TOOLTIP_BUILD_ROADS :{BLACK}Tog rathaidean +STR_TOOLBAR_TOOLTIP_BUILD_SHIP_DOCKS :{BLACK}Tog port +STR_TOOLBAR_TOOLTIP_BUILD_AIRPORTS :{BLACK}Tog port-adhair +STR_TOOLBAR_TOOLTIP_LANDSCAPING :{BLACK}Fosgail am bàr-innealan cruth-tìre gus an tìr àrdachadh/ìsleachadh, craobhan a chur agus msaa. +STR_TOOLBAR_TOOLTIP_SHOW_SOUND_MUSIC_WINDOW :{BLACK}Seall uinneag fhuaime/chiùil +STR_TOOLBAR_TOOLTIP_SHOW_LAST_MESSAGE_NEWS :{BLACK}Seall am brath/aithris naidheachd mu dheireadh, seall roghainnean nam brath +STR_TOOLBAR_TOOLTIP_LAND_BLOCK_INFORMATION :{BLACK}Fiosrachadh mun raon tìre, consoil, dì-bhugadh sgriobt, glacaidhean-sgrìn, mu dheidhinn OpenTTD +STR_TOOLBAR_TOOLTIP_SWITCH_TOOLBAR :{BLACK}Suids bàraichean-innealan + +# Extra tooltips for the scenario editor toolbar +STR_SCENEDIT_TOOLBAR_TOOLTIP_SAVE_SCENARIO_LOAD_SCENARIO :{BLACK}Sàbhail cnàmh-sgeul, luchdaich cnàmh-sgeul, fàg deasaiche nan cnàmh-sgeul, fàg an-seo +STR_SCENEDIT_TOOLBAR_OPENTTD :{YELLOW}OpenTTD +STR_SCENEDIT_TOOLBAR_SCENARIO_EDITOR :{YELLOW}Deasaiche nan cnàmh-sgeul +STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_BACKWARD :{BLACK}Gluais an latha tòiseachaidh air ais 1 bhliadhna +STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_FORWARD :{BLACK}Gluais an latha tòiseachaidh air adhart 1 bhliadhna +STR_SCENEDIT_TOOLBAR_TOOLTIP_SET_DATE :{BLACK}Dèan briogadh gus am bliadhna tòiseachaidh a chur a-steach +STR_SCENEDIT_TOOLBAR_TOOLTIP_DISPLAY_MAP_TOWN_DIRECTORY :{BLACK}Seall mapa, eòlaire nam bailtean +STR_SCENEDIT_TOOLBAR_LANDSCAPE_GENERATION :{BLACK}Gin cruth-tìre +STR_SCENEDIT_TOOLBAR_TOWN_GENERATION :{BLACK}Gin bailtean +STR_SCENEDIT_TOOLBAR_INDUSTRY_GENERATION :{BLACK}Gin gnìomhachasan +STR_SCENEDIT_TOOLBAR_ROAD_CONSTRUCTION :{BLACK}Tog rathaidean +STR_SCENEDIT_TOOLBAR_PLANT_TREES :{BLACK}Cuir craobhan. Toglaidh Shift tuairmse cosgaisean/togail +STR_SCENEDIT_TOOLBAR_PLACE_SIGN :{BLACK}Cuir sanas ann +STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}Cuir nì ann. Toglaidh Shift tuairmse cosgaisean/togail + +############ range for SE file menu starts +STR_SCENEDIT_FILE_MENU_SAVE_SCENARIO :Sàbhail an cnàmh-sgeul +STR_SCENEDIT_FILE_MENU_LOAD_SCENARIO :Luchdaich cnàmh-sgeul +STR_SCENEDIT_FILE_MENU_SAVE_HEIGHTMAP :Sàbhail am mapa-àirde +STR_SCENEDIT_FILE_MENU_LOAD_HEIGHTMAP :Luchdaich mapa-àirde +STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :Fàg deasaiche nan cnàmh-sgeul +STR_SCENEDIT_FILE_MENU_SEPARATOR : +STR_SCENEDIT_FILE_MENU_QUIT :Fàg an-seo +############ range for SE file menu starts + +############ range for settings menu starts +STR_SETTINGS_MENU_GAME_OPTIONS :Roghainnean a' gheama +STR_SETTINGS_MENU_CONFIG_SETTINGS :Roghainnean adhartach +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 +STR_SETTINGS_MENU_TOWN_NAMES_DISPLAYED :Ainmean nam bailtean gan sealltainn +STR_SETTINGS_MENU_STATION_NAMES_DISPLAYED :Ainmean nan stèiseanan gan sealltainn +STR_SETTINGS_MENU_WAYPOINTS_DISPLAYED :Ainmean nam puingean-turais gan sealltainn +STR_SETTINGS_MENU_SIGNS_DISPLAYED :Sanasan gan sealltainn +STR_SETTINGS_MENU_SHOW_COMPETITOR_SIGNS :Sanasan is ainmean nam farpaisichean gan sealltainn +STR_SETTINGS_MENU_FULL_ANIMATION :Beòthachadh slàn +STR_SETTINGS_MENU_FULL_DETAIL :Mion-shealladh slàn +STR_SETTINGS_MENU_TRANSPARENT_BUILDINGS :Togalaichean trìd-sholleir +STR_SETTINGS_MENU_TRANSPARENT_SIGNS :Sanasan trìd-sholleir +############ range ends here + +############ range for file menu starts +STR_FILE_MENU_SAVE_GAME :Sàbhail an geama +STR_FILE_MENU_LOAD_GAME :Luchdaich geama +STR_FILE_MENU_QUIT_GAME :Fàg an geama +STR_FILE_MENU_SEPARATOR : +STR_FILE_MENU_EXIT :Fàg an-seo +############ range ends here + +# map menu +STR_MAP_MENU_MAP_OF_WORLD :Mapa an t-saoghail +STR_MAP_MENU_EXTRA_VIEW_PORT :Port-seallaidh a bharrachd +STR_MAP_MENU_LINGRAPH_LEGEND :Clàr-mìneachaidh an t-srutha carago +STR_MAP_MENU_SIGN_LIST :Liosta nan sanas + +############ range for town menu starts +STR_TOWN_MENU_TOWN_DIRECTORY :Eòlaire nam bailtean +STR_TOWN_MENU_FOUND_TOWN :Baile air a lorg +############ range ends here + +############ range for subsidies menu starts +STR_SUBSIDIES_MENU_SUBSIDIES :Tarrailean +############ range ends here + +############ range for graph menu starts +STR_GRAPH_MENU_OPERATING_PROFIT_GRAPH :Graf air prothaid-obrachaidh +STR_GRAPH_MENU_INCOME_GRAPH :Graf air teachd a-steach +STR_GRAPH_MENU_DELIVERED_CARGO_GRAPH :Graf air carago air a lìbhrigeadh +STR_GRAPH_MENU_PERFORMANCE_HISTORY_GRAPH :Graf air eachdraidh dèanadais +STR_GRAPH_MENU_COMPANY_VALUE_GRAPH :Graf air luach na companaidh +STR_GRAPH_MENU_CARGO_PAYMENT_RATES :Reataichean pàighidh carago +############ range ends here + +############ range for company league menu starts +STR_GRAPH_MENU_COMPANY_LEAGUE_TABLE :Clàr co-bhann nan companaidh +STR_GRAPH_MENU_DETAILED_PERFORMANCE_RATING :Mion-rangachadh dèanadais +STR_GRAPH_MENU_HIGHSCORE :Liosta nan sgòran àrda +############ range ends here + +############ range for industry menu starts +STR_INDUSTRY_MENU_INDUSTRY_DIRECTORY :Eòlaire nan gnìomhachas +STR_INDUSTRY_MENU_INDUSTRY_CHAIN :Sreathan nan gnìomhachas +STR_INDUSTRY_MENU_FUND_NEW_INDUSTRY :Maoinich gnìomhachas ùr +############ range ends here + +############ range for railway construction menu starts +STR_RAIL_MENU_RAILROAD_CONSTRUCTION :Togail rathaid-iarainn +STR_RAIL_MENU_ELRAIL_CONSTRUCTION :Togail rathaid-iarainn dealain +STR_RAIL_MENU_MONORAIL_CONSTRUCTION :Togail rathaid-iarainn aona-rèile +STR_RAIL_MENU_MAGLEV_CONSTRUCTION :Togail rathaid-iarainn magnaiteach +############ range ends here + +############ range for road construction menu starts +STR_ROAD_MENU_ROAD_CONSTRUCTION :Togail rathaidean +STR_ROAD_MENU_TRAM_CONSTRUCTION :Togail slighe-trama +############ range ends here + +############ range for waterways construction menu starts +STR_WATERWAYS_MENU_WATERWAYS_CONSTRUCTION :Togail slighe-uisge +############ range ends here + +############ range for airport construction menu starts +STR_AIRCRAFT_MENU_AIRPORT_CONSTRUCTION :Togail puirt-adhair +############ range ends here + +############ range for landscaping menu starts +STR_LANDSCAPING_MENU_LANDSCAPING :Cruth-tìre +STR_LANDSCAPING_MENU_PLANT_TREES :Cuir craobhan +STR_LANDSCAPING_MENU_PLACE_SIGN :Cuir sanas +############ range ends here + +############ range for music menu starts +STR_TOOLBAR_SOUND_MUSIC :Fuaim/ceòl +############ range ends here + +############ range for message menu starts +STR_NEWS_MENU_LAST_MESSAGE_NEWS_REPORT :Am brath/aithris naidheachd mu dheireadh +STR_NEWS_MENU_MESSAGE_HISTORY_MENU :Eachdraidh nam brath +############ range ends here + +############ range for about menu starts +STR_ABOUT_MENU_LAND_BLOCK_INFO :Fiosrachadh raon tìre +STR_ABOUT_MENU_SEPARATOR : +STR_ABOUT_MENU_TOGGLE_CONSOLE :Toglaich a' chonsoil +STR_ABOUT_MENU_AI_DEBUG :Dì-bhugaich IF/sgriobt geama +STR_ABOUT_MENU_SCREENSHOT :Glacadh-sgrìn +STR_ABOUT_MENU_ZOOMIN_SCREENSHOT :Glacadh-sgrìn le sùmadh a-steach as motha +STR_ABOUT_MENU_DEFAULTZOOM_SCREENSHOT :Glacadh-sgrìn le sùmadh a-steach bunaiteach +STR_ABOUT_MENU_GIANT_SCREENSHOT :Glacadh-sgrìn leis a' mhapa shlàn +STR_ABOUT_MENU_ABOUT_OPENTTD :Mu dheidhinn “OpenTTD" +STR_ABOUT_MENU_SPRITE_ALIGNER :Co-thaobhaichear nan sprite +STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Toglaich bogsaichean-iadhaidh +STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :Toglaich dathadh nam blocaichean salach +############ range ends here + +############ 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 +STR_ORDINAL_NUMBER_4TH :4mh +STR_ORDINAL_NUMBER_5TH :5mh +STR_ORDINAL_NUMBER_6TH :6mh +STR_ORDINAL_NUMBER_7TH :7mh +STR_ORDINAL_NUMBER_8TH :8mh +STR_ORDINAL_NUMBER_9TH :9mh +STR_ORDINAL_NUMBER_10TH :10mh +STR_ORDINAL_NUMBER_11TH :11ad +STR_ORDINAL_NUMBER_12TH :12na +STR_ORDINAL_NUMBER_13TH :13s +STR_ORDINAL_NUMBER_14TH :14mh +STR_ORDINAL_NUMBER_15TH :15mh +############ 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 +STR_MONTH_ABBREV_JAN :Faoi +STR_MONTH_ABBREV_FEB :Gear +STR_MONTH_ABBREV_MAR :Màrt +STR_MONTH_ABBREV_APR :Gibl +STR_MONTH_ABBREV_MAY :Cèit +STR_MONTH_ABBREV_JUN :Ògmh +STR_MONTH_ABBREV_JUL :Iuch +STR_MONTH_ABBREV_AUG :Lùna +STR_MONTH_ABBREV_SEP :Sult +STR_MONTH_ABBREV_OCT :Dàmh +STR_MONTH_ABBREV_NOV :Samh +STR_MONTH_ABBREV_DEC :Dùbh + +STR_MONTH_JAN :Faoilleach +STR_MONTH_JAN.dat :Fhaoilleach +STR_MONTH_FEB :Gearran +STR_MONTH_FEB.dat :Ghearran +STR_MONTH_MAR :Màrt +STR_MONTH_MAR.dat :Mhàrt +STR_MONTH_APR :Giblean +STR_MONTH_APR.dat :Ghiblean +STR_MONTH_MAY :Cèitean +STR_MONTH_MAY.dat :Chèitean +STR_MONTH_JUN :Ògmhios +STR_MONTH_JUN.dat :Ògmhios +STR_MONTH_JUL :Iuchar +STR_MONTH_JUL.dat :Iuchar +STR_MONTH_AUG :Lùnastal +STR_MONTH_AUG.dat :Lùnastal +STR_MONTH_SEP :Sultain +STR_MONTH_SEP.dat :t-Sultain +STR_MONTH_OCT :Dàmhair +STR_MONTH_OCT.dat :Dàmhair +STR_MONTH_NOV :Samhain +STR_MONTH_DEC :Dùbhlachd +STR_MONTH_DEC.dat :Dùbhlachd +############ range for months ends + +# Graph window +STR_GRAPH_KEY_BUTTON :{BLACK}Iuchair +STR_GRAPH_KEY_TOOLTIP :{BLACK}Seall iuchair nan graf +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}Graf air prothaid-obrachaidh +STR_GRAPH_INCOME_CAPTION :{WHITE}Graf air teachd a-steach +STR_GRAPH_CARGO_DELIVERED_CAPTION :{WHITE}Aonadan de charago air an lìbhrigeadh +STR_GRAPH_COMPANY_PERFORMANCE_RATINGS_CAPTION :{WHITE}Rangachaidhean dèanadais na companaidh (rangachadh as motha=1000) +STR_GRAPH_COMPANY_VALUES_CAPTION :{WHITE}Luachan na companaidh + +STR_GRAPH_CARGO_PAYMENT_RATES_CAPTION :{WHITE}Reataichean pàighidh carago +STR_GRAPH_CARGO_PAYMENT_RATES_X_LABEL :{TINY_FONT}{BLACK}Làithean a' siubhal +STR_GRAPH_CARGO_PAYMENT_RATES_TITLE :{TINY_FONT}{BLACK}Pàigheadh airson lìbhrigeadh dhe 10 aonadan (no 10,000 liotair) dhe charago le astar dhe 20 ceàrnag +STR_GRAPH_CARGO_ENABLE_ALL :{TINY_FONT}{BLACK}Cuir a h-uile an comas +STR_GRAPH_CARGO_DISABLE_ALL :{TINY_FONT}{BLACK}Cuir a h-uile à comas +STR_GRAPH_CARGO_TOOLTIP_ENABLE_ALL :{BLACK}Seall a h-uile carago air a' ghraf air reataichean pàighidh carago +STR_GRAPH_CARGO_TOOLTIP_DISABLE_ALL :{BLACK}Na seall carago sam bith air a' ghraf air reataichean pàighidh carago +STR_GRAPH_CARGO_PAYMENT_TOGGLE_CARGO :{BLACK}Toglaich graf air seòrsa dhe charago air/dheth +STR_GRAPH_CARGO_PAYMENT_CARGO :{TINY_FONT}{BLACK}{STRING} + +STR_GRAPH_PERFORMANCE_DETAIL_TOOLTIP :{BLACK}Seall mion-rangachaidhean dèanadais + +# Graph key window +STR_GRAPH_KEY_CAPTION :{WHITE}Iuchair dha ghrafaichean companaidh +STR_GRAPH_KEY_COMPANY_SELECTION_TOOLTIP :{BLACK}Dèan briogadh an-seo gus innteart na companaidh air a' ghraf a thogladh air/dheth + +# Company league window +STR_COMPANY_LEAGUE_TABLE_CAPTION :{WHITE}Clàr co-bhonn nan companaidh +STR_COMPANY_LEAGUE_COMPANY_NAME :{ORANGE}{COMPANY} {BLACK}{COMPANY_NUM} “{STRING}" +STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ENGINEER :Innleadair +STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRAFFIC_MANAGER :Stiùiriche trafaige +STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRANSPORT_COORDINATOR :Co-òrdanaiche giùlain +STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ROUTE_SUPERVISOR :Marasgal nan slighean +STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_DIRECTOR :Stiùiriche +STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHIEF_EXECUTIVE :Àrd-oifigear +STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHAIRMAN :Cathraiche +STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_PRESIDENT :Ceann-suidhe +STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TYCOON :Taidhcùn + +# Performance detail window +STR_PERFORMANCE_DETAIL :{WHITE}Rangachadh dèanadais mionaideach +STR_PERFORMANCE_DETAIL_KEY :{BLACK}Mion-fhiosrachadh +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}Seall mion-fhiosrachadh mun chompanaidh seo +############ Those following lines need to be in this order!! +STR_PERFORMANCE_DETAIL_VEHICLES :{BLACK}Carbadan: +STR_PERFORMANCE_DETAIL_STATIONS :{BLACK}Stèiseanan: +STR_PERFORMANCE_DETAIL_MIN_PROFIT :{BLACK}Prothaid as lugha: +STR_PERFORMANCE_DETAIL_MIN_INCOME :{BLACK}Teachd a-steach as lugha: +STR_PERFORMANCE_DETAIL_MAX_INCOME :{BLACK}Teachd a-steach as motha: +STR_PERFORMANCE_DETAIL_DELIVERED :{BLACK}Air a lìbhrigeadh: +STR_PERFORMANCE_DETAIL_CARGO :{BLACK}Carago: +STR_PERFORMANCE_DETAIL_MONEY :{BLACK}Airgead: +STR_PERFORMANCE_DETAIL_LOAN :{BLACK}Iasad: +STR_PERFORMANCE_DETAIL_TOTAL :{BLACK}Iomlan: +############ End of order list +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 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 + +# Music window +STR_MUSIC_JAZZ_JUKEBOX_CAPTION :{WHITE}Jazz Jukebox +STR_MUSIC_PLAYLIST_ALL :{TINY_FONT}{BLACK}A h-uile +STR_MUSIC_PLAYLIST_OLD_STYLE :{TINY_FONT}{BLACK}Seann nòs +STR_MUSIC_PLAYLIST_NEW_STYLE :{TINY_FONT}{BLACK}Nòs ùr +STR_MUSIC_PLAYLIST_EZY_STREET :{TINY_FONT}{BLACK}Ezy Street +STR_MUSIC_PLAYLIST_CUSTOM_1 :{TINY_FONT}{BLACK}Gnàthaichte 1 +STR_MUSIC_PLAYLIST_CUSTOM_2 :{TINY_FONT}{BLACK}Gnàthaichte 2 +STR_MUSIC_MUSIC_VOLUME :{TINY_FONT}{BLACK}Àirde a' chiùil +STR_MUSIC_EFFECTS_VOLUME :{TINY_FONT}{BLACK}Àirde nan èifeachdan fuaime +STR_MUSIC_RULER_MIN :{TINY_FONT}{BLACK}As lugha +STR_MUSIC_RULER_MAX :{TINY_FONT}{BLACK}As motha +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}Traca +STR_MUSIC_XTITLE :{TINY_FONT}{BLACK}Tiotal +STR_MUSIC_SHUFFLE :{TINY_FONT}{BLACK}Air thuaiream +STR_MUSIC_PROGRAM :{TINY_FONT}{BLACK}Prògram +STR_MUSIC_TOOLTIP_SKIP_TO_PREVIOUS_TRACK :{BLACK}Leum dhan traca roimhe san taghadh +STR_MUSIC_TOOLTIP_SKIP_TO_NEXT_TRACK_IN_SELECTION :{BLACK}Leum dhan ath-thraca san taghadh +STR_MUSIC_TOOLTIP_STOP_PLAYING_MUSIC :{BLACK}Stad cluiche a' chiùil +STR_MUSIC_TOOLTIP_START_PLAYING_MUSIC :{BLACK}Tòisich cluiche a' chiùil +STR_MUSIC_TOOLTIP_DRAG_SLIDERS_TO_SET_MUSIC :{BLACK}Slaod na sleamhnachain gus àirde a' chiùil is nan èifeachdan fuaime a shuidheachadh +STR_MUSIC_TOOLTIP_SELECT_ALL_TRACKS_PROGRAM :{BLACK}Tagh am prògram “Na h-uile traca" +STR_MUSIC_TOOLTIP_SELECT_OLD_STYLE_MUSIC :{BLACK}Tagh am prògram “Ceòl seann nòis" +STR_MUSIC_TOOLTIP_SELECT_NEW_STYLE_MUSIC :{BLACK}Tagh am prògram “Ceòl nòis ùir" +STR_MUSIC_TOOLTIP_SELECT_EZY_STREET_STYLE :{BLACK}Tagh am prògram “Ceòl le stoidhle Ezy Street" +STR_MUSIC_TOOLTIP_SELECT_CUSTOM_1_USER_DEFINED :{BLACK}Tagh am prògram “Gnàthaichte 1" (a rinn thu fhèin) +STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Tagh am prògram “Gnàthaichte 2" (a rinn thu fhèin) +STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Toglaich prògram air thuaiream air/dheth +STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Seall uinneag taghadh tracaichean ciùil + +STR_ERROR_NO_SONGS :{WHITE}Chaidh seata dhe cheòl às aonais òrain a thaghadh. Cha tèid òran sam bith a chluiche + +# Playlist window +STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}Taghadh prògram ciùil +STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} “{STRING}" +STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}Clàr-amais nan traca +STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}Prògram - “{STRING}" +STR_PLAYLIST_CLEAR :{TINY_FONT}{BLACK}Falamhaich +STR_PLAYLIST_TOOLTIP_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}Falamhaich am prògram làithreach (Gnàthaichte1 no Gnàthaichte2 a-mhàin) +STR_PLAYLIST_TOOLTIP_CLICK_TO_ADD_TRACK :{BLACK}Dèan briogadh air traca ciùil gus a chur ris a' phrògram làithreach (Gnàthaichte1 no Gnàthaichte2 a-mhàin) +STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}Dèan briogadh air traca ciùil gus a thoirt air falbh bhon phrògram làithreach (Gnàthaichte1 no Gnàthaichte2 a-mhàin) + +# Highscore window +STR_HIGHSCORE_TOP_COMPANIES_WHO_REACHED :{BIG_FONT}{BLACK}Na companaidhean as fhearr a ràinig {NUM} +STR_HIGHSCORE_TOP_COMPANIES_NETWORK_GAME :{BIG_FONT}{BLACK}Clàr co-bhonn nan companaidh ann an {NUM} +STR_HIGHSCORE_POSITION :{BIG_FONT}{BLACK}{COMMA}. +STR_HIGHSCORE_PERFORMANCE_TITLE_BUSINESSMAN :Neach-gnothaich +STR_HIGHSCORE_PERFORMANCE_TITLE_ENTREPRENEUR :Neach-tionnsgainn +STR_HIGHSCORE_PERFORMANCE_TITLE_INDUSTRIALIST :Neach-gnìomhachais +STR_HIGHSCORE_PERFORMANCE_TITLE_CAPITALIST :Neach-calpachais +STR_HIGHSCORE_PERFORMANCE_TITLE_MAGNATE :Baran +STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL :Mogul +STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY :Taidhcùn na linne +STR_HIGHSCORE_NAME :{PRESIDENT_NAME}, {COMPANY} +STR_HIGHSCORE_STATS :{BIG_FONT}“{STRING}" ({COMMA}) +STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{BLACK}Bhuannaich {COMPANY} an rang “{STRING}"! +STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{WHITE}Bhuannaich {PRESIDENT_NAME} aig {COMPANY} an rang “{STRING}"! + +# Smallmap window +STR_SMALLMAP_CAPTION :{WHITE}Mapa - {STRING} + +STR_SMALLMAP_TYPE_CONTOURS :Loidhnichean-àirde +STR_SMALLMAP_TYPE_VEHICLES :Carbadan +STR_SMALLMAP_TYPE_INDUSTRIES :Gnìomhachasan +STR_SMALLMAP_TYPE_ROUTEMAP :Sruth carago +STR_SMALLMAP_TYPE_ROUTES :Slighean-malairt +STR_SMALLMAP_TYPE_VEGETATION :Lusan +STR_SMALLMAP_TYPE_OWNERS :Seilbheadairean +STR_SMALLMAP_TOOLTIP_SHOW_LAND_CONTOURS_ON_MAP :{BLACK}Seall loidhnichean-àirde a' chruth-tìre air a' mhapa +STR_SMALLMAP_TOOLTIP_SHOW_VEHICLES_ON_MAP :{BLACK}Seall carbadan air a' mhapa +STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRIES_ON_MAP :{BLACK}Seall gnìomhachasan air a' mhapa +STR_SMALLMAP_TOOLTIP_SHOW_LINK_STATS_ON_MAP :{BLACK}Seall an sruth carago air a' mhapa +STR_SMALLMAP_TOOLTIP_SHOW_TRANSPORT_ROUTES_ON :{BLACK}Seall slighean-malairt air a' mhapa +STR_SMALLMAP_TOOLTIP_SHOW_VEGETATION_ON_MAP :{BLACK}Seall lusan air a' mhapa +STR_SMALLMAP_TOOLTIP_SHOW_LAND_OWNERS_ON_MAP :{BLACK}Seall cò leis an tìr air a' mhapa +STR_SMALLMAP_TOOLTIP_INDUSTRY_SELECTION :{BLACK}Dèan briogadh air seòrsa gnìomhachais gus toglachadh an tèid a shealltainn. Cuiridh Ctrl+briogadh a h-uile seòrsa ach am fear a thagh thu à comas. Dèan Ctrl+briogadh air a-rithist gus a h-uile seòrsa gnìomhachais a chur an comas +STR_SMALLMAP_TOOLTIP_COMPANY_SELECTION :{BLACK}Dèan briogadh air companaidh gus toglachadh an tèid an tìr a tha leis a shealltainn. Cuiridh Ctrl+briogadh a h-uile companaidh ach am fear a thagh thu à comas. Dèan Ctrl+briogadh air a-rithist gus a h-uile companaidh a chur an comas +STR_SMALLMAP_TOOLTIP_CARGO_SELECTION :{BLACK}Briog air carago gus toglachadh an tèid a roghainnean a shealltainn. Cuiridh Ctrl+Briogadh a h-uile carago à comas ach am fear a thagh thu. Dèan Ctrl+Briogadh air a-rithist gus na h-uile carago a chur an comas + +STR_SMALLMAP_LEGENDA_ROADS :{TINY_FONT}{BLACK}Rathaidean +STR_SMALLMAP_LEGENDA_RAILROADS :{TINY_FONT}{BLACK}Rathaidean-iarainn +STR_SMALLMAP_LEGENDA_STATIONS_AIRPORTS_DOCKS :{TINY_FONT}{BLACK}Stèiseanan/Puirt-adhair/Puirt +STR_SMALLMAP_LEGENDA_BUILDINGS_INDUSTRIES :{TINY_FONT}{BLACK}Togalaichean/Gnìomhachasan +STR_SMALLMAP_LEGENDA_VEHICLES :{TINY_FONT}{BLACK}Carbadan +STR_SMALLMAP_LEGENDA_TRAINS :{TINY_FONT}{BLACK}Trèanaichean +STR_SMALLMAP_LEGENDA_ROAD_VEHICLES :{TINY_FONT}{BLACK}Carbadan-rathaid +STR_SMALLMAP_LEGENDA_SHIPS :{TINY_FONT}{BLACK}Longan +STR_SMALLMAP_LEGENDA_AIRCRAFT :{TINY_FONT}{BLACK}Carbadan-adhair +STR_SMALLMAP_LEGENDA_TRANSPORT_ROUTES :{TINY_FONT}{BLACK}Slighean-malairt +STR_SMALLMAP_LEGENDA_FOREST :{TINY_FONT}{BLACK}Coille +STR_SMALLMAP_LEGENDA_RAILROAD_STATION :{TINY_FONT}{BLACK}Stèisean rèile +STR_SMALLMAP_LEGENDA_TRUCK_LOADING_BAY :{G=m}{TINY_FONT}{BLACK}Ionad-luchdaidh nan làraidh +STR_SMALLMAP_LEGENDA_TRUCK_LOADING_BAY.nom :{G=m}{TINY_FONT}{BLACK}Ionad-luchdaidh nan làraidh +STR_SMALLMAP_LEGENDA_TRUCK_LOADING_BAY.gen :{G=m}{TINY_FONT}{BLACK}Ionaid-luchdaidh nan làraidh +STR_SMALLMAP_LEGENDA_TRUCK_LOADING_BAY.dat :{G=m}{TINY_FONT}{BLACK}Ionad-luchdaidh nan làraidh +STR_SMALLMAP_LEGENDA_BUS_STATION :{TINY_FONT}{BLACK}Stèisean bus +STR_SMALLMAP_LEGENDA_AIRPORT_HELIPORT :{TINY_FONT}{BLACK}Port-adhair/port-heileacoptair +STR_SMALLMAP_LEGENDA_DOCK :{G=m}{TINY_FONT}{BLACK}Port +STR_SMALLMAP_LEGENDA_ROUGH_LAND :{TINY_FONT}{BLACK}Tìr gharbh +STR_SMALLMAP_LEGENDA_GRASS_LAND :{TINY_FONT}{BLACK}Tìr fheurach +STR_SMALLMAP_LEGENDA_BARE_LAND :{TINY_FONT}{BLACK}Tìr lom +STR_SMALLMAP_LEGENDA_FIELDS :{TINY_FONT}{BLACK}Achaidhean +STR_SMALLMAP_LEGENDA_TREES :{TINY_FONT}{BLACK}Craobhan +STR_SMALLMAP_LEGENDA_ROCKS :{TINY_FONT}{BLACK}Creagan +STR_SMALLMAP_LEGENDA_WATER :{TINY_FONT}{BLACK}Uisge +STR_SMALLMAP_LEGENDA_NO_OWNER :{TINY_FONT}{BLACK}Gun seilbheadair +STR_SMALLMAP_LEGENDA_TOWNS :{TINY_FONT}{BLACK}Bailtean +STR_SMALLMAP_LEGENDA_INDUSTRIES :{TINY_FONT}{BLACK}Gnìomhachasan +STR_SMALLMAP_LEGENDA_DESERT :{TINY_FONT}{BLACK}Fàsach +STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLACK}Sneachda + +STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Toglaich ainmean bhailtean air/dheth air a' mhapa +STR_SMALLMAP_CENTER :{BLACK}Meadhanaich am meanbh-mhapa air an ionad làithreach +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}Cuir a h-uile à comas +STR_SMALLMAP_ENABLE_ALL :{BLACK}Cuir a h-uile an comas +STR_SMALLMAP_SHOW_HEIGHT :{BLACK}Seall an àirde +STR_SMALLMAP_TOOLTIP_DISABLE_ALL_INDUSTRIES :{BLACK}Na seall gnìomhachasan air a' mhapa +STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES :{BLACK}Seall a h-uile gnìomhachas air a' mhapa +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 + +# Status bar messages +STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Seall am brath no aithisg naidheachd mu dheireadh +STR_STATUSBAR_COMPANY_NAME :{SILVER}- - {COMPANY} - - +STR_STATUSBAR_PAUSED :{YELLOW}* * NA STAD * * +STR_STATUSBAR_AUTOSAVE :{RED}FÈIN-SHÀBHALADH +STR_STATUSBAR_SAVING_GAME :{RED}* * A' SÀBHALADH GEAMA * * + +# News message history +STR_MESSAGE_HISTORY :{WHITE}Eachdraidh nam brath +STR_MESSAGE_HISTORY_TOOLTIP :{BLACK}Liosta nam brath-naidheachd o chionn ghoirid +STR_MESSAGE_NEWS_FORMAT :{STRING} - {STRING} + +STR_NEWS_MESSAGE_CAPTION :{WHITE}Brath +STR_NEWS_CUSTOM_ITEM :{BIG_FONT}{BLACK}{STRING} + +STR_NEWS_FIRST_TRAIN_ARRIVAL :{BIG_FONT}{BLACK}Hòro-gheallaidh nan saoranach . . .{}Ràinig a' chiad trèan {STATION}! +STR_NEWS_FIRST_BUS_ARRIVAL :{BIG_FONT}{BLACK}Hòro-gheallaidh nan saoranach . . .{}Ràinig a' chiad bhus {STATION}! +STR_NEWS_FIRST_TRUCK_ARRIVAL :{BIG_FONT}{BLACK}Hòro-gheallaidh nan saoranach . . .{}Ràinig a' chiad làraidh {STATION}! +STR_NEWS_FIRST_PASSENGER_TRAM_ARRIVAL :{BIG_FONT}{BLACK}Hòro-gheallaidh nan saoranach . . .{}Ràinig a' chiad trama taistealaich {STATION}! +STR_NEWS_FIRST_CARGO_TRAM_ARRIVAL :{BIG_FONT}{BLACK}Hòro-gheallaidh nan saoranach . . .{}Ràinig a' chiad trama frachd {STATION}! +STR_NEWS_FIRST_SHIP_ARRIVAL :{BIG_FONT}{BLACK}Hòro-gheallaidh nan saoranach . . .{}Ràinig a' chiad long {STATION}! +STR_NEWS_FIRST_AIRCRAFT_ARRIVAL :{BIG_FONT}{BLACK}Hòro-gheallaidh nan saoranach . . .{}Ràinig a' chiad charbad-adhair {STATION}! + +STR_NEWS_TRAIN_CRASH :{BIG_FONT}{BLACK}Tubaist trèan!{}Chaochail {COMMA} san teine an dèidh co-bhualaidh +STR_NEWS_ROAD_VEHICLE_CRASH_DRIVER :{BIG_FONT}{BLACK}Tubaist rathaid!{}Chaochail an draibhear san teine an dèidh co-bhualaidh ri trèan +STR_NEWS_ROAD_VEHICLE_CRASH :{BIG_FONT}{BLACK}Tubaist rathaid!{}Chaochail {COMMA} san teine an dèidh co-bhualaidh ri trèan +STR_NEWS_AIRCRAFT_CRASH :{BIG_FONT}{BLACK}Tubaist carbaid-adhair!{}Chaochail {COMMA} san teine aig {STATION} +STR_NEWS_PLANE_CRASH_OUT_OF_FUEL :{BIG_FONT}{BLACK}Tubaist carbaid-adhair!{}Dh'fhalbh an connadh air carbad-adhair, chaochail {COMMA} san teine + +STR_NEWS_DISASTER_ZEPPELIN :{BIG_FONT}{BLACK}Dunaidh zeppelin aig {STATION}! +STR_NEWS_DISASTER_SMALL_UFO :{BIG_FONT}{BLACK}Chaidh carbad-rathaid a mhilleadh le co-bhualadh ri 'UFO'! +STR_NEWS_DISASTER_AIRPLANE_OIL_REFINERY :{BIG_FONT}{BLACK}Sprèidh fìneadair-ola faisg air {TOWN}! +STR_NEWS_DISASTER_HELICOPTER_FACTORY :{BIG_FONT}{BLACK}Chaidh factaraidh a mhilleadh gu amharasach faisg air {TOWN}! +STR_NEWS_DISASTER_BIG_UFO :{BIG_FONT}{BLACK}'UFO' a' laighe faisg air {TOWN}! +STR_NEWS_DISASTER_COAL_MINE_SUBSIDENCE :{BIG_FONT}{BLACK}Dh'adhbharaich tuiteam mèinne guail milleadh mòr faisg air {TOWN}! +STR_NEWS_DISASTER_FLOOD_VEHICLE :{BIG_FONT}{BLACK}Tuiltean!{}Co-dhiù {COMMA} air chall, thathar an dùil gun do chaochail iad an dèidh tuil mòire! + +STR_NEWS_COMPANY_IN_TROUBLE_TITLE :{BIG_FONT}{BLACK}Companaidh ghiùlain ann an staing! +STR_NEWS_COMPANY_IN_TROUBLE_DESCRIPTION :{BIG_FONT}{BLACK}Thèid {STRING} a reic no a bhriseadh mus tig am feabhas air a dhèanadas a dh'aithghearr! +STR_NEWS_COMPANY_MERGER_TITLE :{BIG_FONT}{BLACK}Co-aontachadh chompanaidhean giùlain! +STR_NEWS_COMPANY_MERGER_DESCRIPTION :{BIG_FONT}{BLACK}Chaidh {STRING} a reic gu {STRING} airson {CURRENCY_LONG}! +STR_NEWS_COMPANY_BANKRUPT_TITLE :{BIG_FONT}{BLACK}Briste! +STR_NEWS_COMPANY_BANKRUPT_DESCRIPTION :{BIG_FONT}{BLACK}Chaidh {STRING} a dhùnadh leis na iasadaichean is chaidh a h-uile sealbh a reic! +STR_NEWS_COMPANY_LAUNCH_TITLE :{BIG_FONT}{BLACK}Companaidh ghiùlain ùr air a chur air bhog! +STR_NEWS_COMPANY_LAUNCH_DESCRIPTION :{BIG_FONT}{BLACK}Thòisich {STRING} a' togail faisg air {TOWN}! +STR_NEWS_MERGER_TAKEOVER_TITLE :{BIG_FONT}{BLACK}Chuir {1:STRING} {0:STRING} foidhe fhèin! +STR_PRESIDENT_NAME_MANAGER :{BLACK}{PRESIDENT_NAME}{}(Stiùiriche) + +STR_NEWS_NEW_TOWN :{BLACK}{BIG_FONT}Sponsairich {STRING} togail baile ùir {TOWN}! + +STR_NEWS_INDUSTRY_CONSTRUCTION :{BIG_FONT}{BLACK}{STRING} ùr ga {G 0 thogail togail} faisg air {TOWN}! +STR_NEWS_INDUSTRY_PLANTED :{BIG_FONT}{BLACK}{STRING} ùr ga {G 0 chur cur} faisg air {TOWN}! + +STR_NEWS_INDUSTRY_CLOSURE_GENERAL :{BIG_FONT}{BLACK}Tha {STRING} gu bhith dùnadh! +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 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! + +STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL :{BIG_FONT}{BLACK}Tha {INDUSTRY} a' meudachadh a {G 0 thoradh toradh}! +STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_COAL :{BIG_FONT}{BLACK}Chaidh stòras guail ùr a lorg aig {INDUSTRY}!{}Thathar an dùil gun dùblaich an toradh! +STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_OIL :{BIG_FONT}{BLACK}Chaidh stòras ola ùr a lorg aig {INDUSTRY}!{}Thathar an dùil gun dùblaich an toradh! +STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM :{BIG_FONT}{BLACK}Thathar an dùil gun dùblaich an toradh le dòighean tuathanachais leasaichte aig {INDUSTRY}! +STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_SMOOTH :{BIG_FONT}{BLACK}Tha dèanamh {STRING} aig {INDUSTRY} air meudachadh le {COMMA}%! +STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL :{BIG_FONT}{BLACK}Tha an toradh aig {INDUSTRY} a' lùghdachadh le 50% +STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM :{BIG_FONT}{BLACK}Dh'adhbharaich ionnsaigh bhiastagan milleadh uabhasach air {INDUSTRY}!{}Tha an toradh air lùghdachadh le 50% +STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_SMOOTH :{BIG_FONT}{BLACK}Tha dèanamh {STRING} aig {INDUSTRY} air lùghdachadh le {COMMA}%! + +STR_NEWS_TRAIN_IS_WAITING :{WHITE}Tha {VEHICLE} a' feitheamh san trèan-lann +STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}Tha {VEHICLE} a' feitheamh sa gharaids +STR_NEWS_SHIP_IS_WAITING :{WHITE}Tha {VEHICLE} a' feitheamh sa chala +STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}Tha {VEHICLE} a' feitheamh sa hangar + +# 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} +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 +STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD_AND :{WHITE}Tha {VEHICLE} a' fàs glè aosta is feumaidh tu fear ùr a chur na àite cho luath ’s a ghabhas +STR_NEWS_TRAIN_IS_STUCK :{WHITE}Chan urrainn dha {VEHICLE} slighe air adhart a lorg +STR_NEWS_VEHICLE_IS_LOST :{WHITE}Chaidh {VEHICLE} air chall +STR_NEWS_VEHICLE_IS_UNPROFITABLE :{WHITE}Rinn {VEHICLE} prothaid dhe {CURRENCY_LONG} an-uiridh +STR_NEWS_AIRCRAFT_DEST_TOO_FAR :{WHITE}Chan urrainn dha {VEHICLE} an t-ath cheann-uidhe a ruigsinn oir tha e ro fhad air falbh + +STR_NEWS_ORDER_REFIT_FAILED :{WHITE}Stad {VEHICLE} oir dh'fhàillig le mùthadh òrdaichte +STR_NEWS_VEHICLE_AUTORENEW_FAILED :{WHITE}Dh'fhàillig leis an fhèin-nuadhachadh air {VEHICLE}{}{STRING} + +STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE :{BIG_FONT}{BLACK}Tha {STRING} ùr ri fhaighinn a-nis! +STR_NEWS_NEW_VEHICLE_TYPE :{BIG_FONT}{BLACK}{ENGINE} +STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}Tha {STRING} ùr ri fhaighinn a-nis! - {ENGINE} + +STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO :{WHITE}Cha ghabh {STATION} ri {STRING} tuilleadh +STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO_OR_CARGO :{WHITE}Cha ghabh {STATION} ri {STRING} no {STRING} tuilleadh +STR_NEWS_STATION_NOW_ACCEPTS_CARGO :{WHITE}Gabhaidh {STATION} ri {STRING} a-nis +STR_NEWS_STATION_NOW_ACCEPTS_CARGO_AND_CARGO :{WHITE}Gabhaidh {STATION} ri {STRING} is {STRING} a-nis + +STR_NEWS_OFFER_OF_SUBSIDY_EXPIRED :{BIG_FONT}{BLACK}Dh'fhalbh an ùine air tairgse tarrail:{}{}Chan fhaighear tarrail airson {STRING} a thoirt bho {STRING} gu {STRING} a-nis +STR_NEWS_SUBSIDY_WITHDRAWN_SERVICE :{BIG_FONT}{BLACK}Chaidh tarrail a tharraing:{}{}Chan fhaigh seirbheis {STRING} bho {STRING} gu {STRING} tarrail a-nis +STR_NEWS_SERVICE_SUBSIDY_OFFERED :{BIG_FONT}{BLACK}Chaidh tarrail seirbheise a thairgsinn:{}{}Gheibh a' chiad seirbheis {STRING} bho {STRING} gu {STRING} tarrail fad bliadhna bhon ùghdarras ionadail! +STR_NEWS_SERVICE_SUBSIDY_AWARDED_HALF :{BIG_FONT}{BLACK}Bhuannaich {STRING} tarrail seirbheise!{}{}Pàighidh seirbheis {STRING} bho {STRING} gu {STRING} 50% a bharrachd fad bliadhna! +STR_NEWS_SERVICE_SUBSIDY_AWARDED_DOUBLE :{BIG_FONT}{BLACK}Bhuannaich {STRING} tarrail seirbheise!{}{}Pàighidh seirbheis {STRING} bho {STRING} gu {STRING} reataichean dà-fhillte fad bliadhna! +STR_NEWS_SERVICE_SUBSIDY_AWARDED_TRIPLE :{BIG_FONT}{BLACK}Bhuannaich {STRING} tarrail seirbheise!{}{}Pàighidh seirbheis {STRING} bho {STRING} gu {STRING} reataichean trì-fillte fad bliadhna! +STR_NEWS_SERVICE_SUBSIDY_AWARDED_QUADRUPLE :{BIG_FONT}{BLACK}Bhuannaich {STRING} tarrail seirbheise!{}{}Pàighidh seirbheis {STRING} bho {STRING} gu {STRING} reataichean ceithir-fillte fad bliadhna! + +STR_NEWS_ROAD_REBUILDING :{BIG_FONT}{BLACK}Bùrach trafaig ann am baile {TOWN}!{}{}Bheir prògram leasachadh rathaidean maoinichte le {STRING} dòlam dha dhraibhearan fad 6 mìosan! +STR_NEWS_EXCLUSIVE_RIGHTS_TITLE :{BIG_FONT}{BLACK}Aon-mhargadh giùlain! +STR_NEWS_EXCLUSIVE_RIGHTS_DESCRIPTION :{BIG_FONT}{BLACK}Chuir an t-ùghdarras ionadail aig {TOWN} a làimh ri cùmhnant le {STRING} air còraichean giùlain às-dùnach fad bliadhna! + +# Extra view window +STR_EXTRA_VIEW_PORT_TITLE :{WHITE}Port-seallaidh {COMMA} +STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}Cuir lethbhreac sa phort-seallaidh seo +STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}Cuir lethbhreac dhen ionad air a' phrìomh shealladh sa phort-seallaidh seo +STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}Cuir ann bhon phort-seallaidh seo +STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}Cuir ionad a' phuirt-seallaidh seo sa phrìomh shealladh + +# Game options window +STR_GAME_OPTIONS_CAPTION :{WHITE}Roghainnean a' gheama +STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Aonadan airgeadra +STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Tagh aonadan airgeadra + +############ start of currency region +STR_GAME_OPTIONS_CURRENCY_GBP :Not Breatannach (GBP) +STR_GAME_OPTIONS_CURRENCY_USD :Dolar Aimeireaganach (USD) +STR_GAME_OPTIONS_CURRENCY_EUR :Eòro (EUR) +STR_GAME_OPTIONS_CURRENCY_JPY :Yen Seapanach (JPY) +STR_GAME_OPTIONS_CURRENCY_ATS :Sgillin Ostaireach (ATS) +STR_GAME_OPTIONS_CURRENCY_BEF :Franc Beilgeach (BEF) +STR_GAME_OPTIONS_CURRENCY_CHF :Franc Eilbheiseach (CHF) +STR_GAME_OPTIONS_CURRENCY_CZK :Koruna Seiceach (CZK) +STR_GAME_OPTIONS_CURRENCY_DEM :Mark Gearmailteach (DEM) +STR_GAME_OPTIONS_CURRENCY_DKK :Crùn Danmhairgeach (DKK) +STR_GAME_OPTIONS_CURRENCY_ESP :Peseta Spàinnteach (ESP) +STR_GAME_OPTIONS_CURRENCY_FIM :Markka Fionnlannach (FIM) +STR_GAME_OPTIONS_CURRENCY_FRF :Franc Frangach (FRF) +STR_GAME_OPTIONS_CURRENCY_GRD :Drachma Greugach (GRD) +STR_GAME_OPTIONS_CURRENCY_HUF :Forint Ungaireach (HUF) +STR_GAME_OPTIONS_CURRENCY_ISK :Krona Tìleach (ISK) +STR_GAME_OPTIONS_CURRENCY_ITL :Lira Eadailteach (ITL) +STR_GAME_OPTIONS_CURRENCY_NLG :Guilder Duitseach (NLG) +STR_GAME_OPTIONS_CURRENCY_NOK :Krone Nirribheach (NOK) +STR_GAME_OPTIONS_CURRENCY_PLN :Złoty Pòlainneach (PLN) +STR_GAME_OPTIONS_CURRENCY_RON :Leu Romàineach (RON) +STR_GAME_OPTIONS_CURRENCY_RUR :Rùbal Ruiseach (RUR) +STR_GAME_OPTIONS_CURRENCY_SIT :Tolar Slòbhaineach (SIT) +STR_GAME_OPTIONS_CURRENCY_SEK :Krona Suaineach (SEK) +STR_GAME_OPTIONS_CURRENCY_TRY :Lira Turcach (TRY) +STR_GAME_OPTIONS_CURRENCY_SKK :Koruna Slòbhacach (SKK) +STR_GAME_OPTIONS_CURRENCY_BRL :Real Braisileach (BRL) +STR_GAME_OPTIONS_CURRENCY_EEK :Krooni Eastoineach (EEK) +STR_GAME_OPTIONS_CURRENCY_LTL :Litas Liotuaineach (LTL) +STR_GAME_OPTIONS_CURRENCY_KRW :Won Choirèa a Deas (KRW) +STR_GAME_OPTIONS_CURRENCY_ZAR :Rand Afraga a Deas (ZAR) +STR_GAME_OPTIONS_CURRENCY_CUSTOM :Gnàthaichte... +STR_GAME_OPTIONS_CURRENCY_GEL :Lari Cairtbheileach (GEL) +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ì +STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_RIGHT :Draibheadh air an taobh deas + +STR_GAME_OPTIONS_TOWN_NAMES_FRAME :{BLACK}Ainmean bhailtean +STR_GAME_OPTIONS_TOWN_NAMES_DROPDOWN_TOOLTIP :{BLACK}Tagh stoidhle aig ainmean nam bailtean + +############ start of townname region +STR_GAME_OPTIONS_TOWN_NAME_ORIGINAL_ENGLISH :Beurla (Tùsail) +STR_GAME_OPTIONS_TOWN_NAME_FRENCH :Frangach +STR_GAME_OPTIONS_TOWN_NAME_GERMAN :Gearmailteach +STR_GAME_OPTIONS_TOWN_NAME_ADDITIONAL_ENGLISH :Beurla (a bharrachd) +STR_GAME_OPTIONS_TOWN_NAME_LATIN_AMERICAN :Aimeireaga Laidinneach +STR_GAME_OPTIONS_TOWN_NAME_SILLY :Gòrach +STR_GAME_OPTIONS_TOWN_NAME_SWEDISH :Suaineach +STR_GAME_OPTIONS_TOWN_NAME_DUTCH :Duitseach +STR_GAME_OPTIONS_TOWN_NAME_FINNISH :Fionnlannach +STR_GAME_OPTIONS_TOWN_NAME_POLISH :Pòlannach +STR_GAME_OPTIONS_TOWN_NAME_SLOVAK :Slòbhacach +STR_GAME_OPTIONS_TOWN_NAME_NORWEGIAN :Nirribheach +STR_GAME_OPTIONS_TOWN_NAME_HUNGARIAN :Ungaireach +STR_GAME_OPTIONS_TOWN_NAME_AUSTRIAN :Ostaireach +STR_GAME_OPTIONS_TOWN_NAME_ROMANIAN :Romàineach +STR_GAME_OPTIONS_TOWN_NAME_CZECH :Seiceach +STR_GAME_OPTIONS_TOWN_NAME_SWISS :Eilbheiseach +STR_GAME_OPTIONS_TOWN_NAME_DANISH :Danmhairgeach +STR_GAME_OPTIONS_TOWN_NAME_TURKISH :Turcach +STR_GAME_OPTIONS_TOWN_NAME_ITALIAN :Eadailteach +STR_GAME_OPTIONS_TOWN_NAME_CATALAN :Catalanach +############ end of townname region + +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 + +STR_GAME_OPTIONS_FULLSCREEN :{BLACK}Làn-sgrìn +STR_GAME_OPTIONS_FULLSCREEN_TOOLTIP :{BLACK}Cuir cromag sa bhogsa seo gus OpenTTD a chluiche sa mhodh làn-sgrìn + +STR_GAME_OPTIONS_RESOLUTION :{BLACK}Dùmhlachd-bhreacaidh na sgrìn +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_BASE_GRF :{BLACK}Seata grafaigeachd bunasach +STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Tagh an seata grafaigeachd bunasach a chleachdas tu +STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} {P fhaidhle fhaidhle faidhlichean faidhle} a dhìth/coirbte +STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Barrachd fiosrachaidh mun t-seata ghrafaigeachd bhunasach + +STR_GAME_OPTIONS_BASE_SFX :{BLACK}Seata fhuaimean bunasach +STR_GAME_OPTIONS_BASE_SFX_TOOLTIP :{BLACK}Tagh an seata fhuaimean bunasach a chleachdas tu +STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}Barrachd fiosrachaidh mun t-seata fhuaimean bhunasach + +STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Seata ciùil bunasach +STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Tagh an seata ciùil bunasach a chleachdas tu +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 + +STR_CURRENCY_WINDOW :{WHITE}Airgeadra gnàthaichte +STR_CURRENCY_EXCHANGE_RATE :{LTBLUE}Luach-iomlaid: {ORANGE}{CURRENCY_LONG} = £ {COMMA} +STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Lùghdaich meud an airgeadra agad airson not (£) +STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Meudaich meud an airgeadra agad airson not (£) +STR_CURRENCY_SET_EXCHANGE_RATE_TOOLTIP :{BLACK}Suidhich luach-iomlaid an airgeadra agad airson not (£) + +STR_CURRENCY_SEPARATOR :{LTBLUE}Sgaradair: {ORANGE}{STRING} +STR_CURRENCY_SET_CUSTOM_CURRENCY_SEPARATOR_TOOLTIP :{BLACK}Suidhich sgaradair an airgeadra agad + +STR_CURRENCY_PREFIX :{LTBLUE}Ro-leasachan: {ORANGE}{STRING} +STR_CURRENCY_SET_CUSTOM_CURRENCY_PREFIX_TOOLTIP :{BLACK}Suidhich sreang ro-leasachain an airgeadra agad +STR_CURRENCY_SUFFIX :{LTBLUE}Iar-leasachan: {ORANGE}{STRING} +STR_CURRENCY_SET_CUSTOM_CURRENCY_SUFFIX_TOOLTIP :{BLACK}Suidhich sreang iar-leasachain an airgeadra agad + +STR_CURRENCY_SWITCH_TO_EURO :{LTBLUE}Suids dhan Eòro: {ORANGE}{NUM} +STR_CURRENCY_SWITCH_TO_EURO_NEVER :{LTBLUE}Suids dhan Eòro: {ORANGE}gun suids idir +STR_CURRENCY_SET_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Suidhich am bliadhna a thèid suids a dhèanamh dhan Eòro +STR_CURRENCY_DECREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Dèan suids dhan Eòro nas tràithe +STR_CURRENCY_INCREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Dèan suids dhan Eòro nas anmoiche + +STR_CURRENCY_PREVIEW :{LTBLUE}Ro-shealladh: {ORANGE}{CURRENCY_LONG} +STR_CURRENCY_CUSTOM_CURRENCY_PREVIEW_TOOLTIP :{BLACK}10000 not (£) san airgeadra agad +STR_CURRENCY_CHANGE_PARAMETER :{BLACK}Atharraich paramadair an airgeadra ghnàthaichte + +STR_DIFFICULTY_LEVEL_SETTING_MAXIMUM_NO_COMPETITORS :{LTBLUE}Àireamh as motha dhe dh'fharpaisichean: {ORANGE}{COMMA} + +STR_NONE :Chan eil gin +STR_FUNDING_ONLY :Le maoineachadh a-mhàin +STR_MINIMAL :As lugha +STR_NUM_VERY_LOW :Gann +STR_NUM_LOW :Beagan dhiubh +STR_NUM_NORMAL :Àbhaisteach +STR_NUM_HIGH :Mòran dhiubh +STR_NUM_CUSTOM :Gnàthaichte +STR_NUM_CUSTOM_NUMBER :Gnàthaichte ({NUM}) + +STR_VARIETY_NONE :Chan eil gin +STR_VARIETY_VERY_LOW :Glè ìseal +STR_VARIETY_LOW :Ìseal +STR_VARIETY_MEDIUM :Meadhanach +STR_VARIETY_HIGH :Àrd +STR_VARIETY_VERY_HIGH :Glè àrd + +STR_AI_SPEED_VERY_SLOW :Glè shlaodach +STR_AI_SPEED_SLOW :Slaodach +STR_AI_SPEED_MEDIUM :Meadhanach +STR_AI_SPEED_FAST :Luath +STR_AI_SPEED_VERY_FAST :Glè luath + +STR_SEA_LEVEL_VERY_LOW :Glè ìseal +STR_SEA_LEVEL_LOW :Ìseal +STR_SEA_LEVEL_MEDIUM :Meadhanach +STR_SEA_LEVEL_HIGH :Àrd +STR_SEA_LEVEL_CUSTOM :Gnàthaichte +STR_SEA_LEVEL_CUSTOM_PERCENTAGE :Gnàthaichte ({NUM}%) + +STR_RIVERS_NONE :Gun abhainn sam bith +STR_RIVERS_FEW :Beagan dhiubh +STR_RIVERS_MODERATE :Meadhanach +STR_RIVERS_LOT :Mòran dhiubh + +STR_DISASTER_NONE :Cha tachair seo idir +STR_DISASTER_REDUCED :Ainneamh +STR_DISASTER_NORMAL :Àbhaisteach + +STR_SUBSIDY_X1_5 :x1.5 +STR_SUBSIDY_X2 :x2 +STR_SUBSIDY_X3 :x3 +STR_SUBSIDY_X4 :x4 + +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_CITY_APPROVAL_PERMISSIVE :Coibhneil +STR_CITY_APPROVAL_TOLERANT :Ceadachail +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 +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 +STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT :(chan eil mìneachadh ri làimh) +STR_CONFIG_SETTING_DEFAULT_VALUE :{LTBLUE}Luach bunaiteach: {ORANGE}{STRING} +STR_CONFIG_SETTING_TYPE :{LTBLUE}Seòrsa an roghainn: {ORANGE}{STRING} +STR_CONFIG_SETTING_TYPE_CLIENT :Roghainnean a' chliant (cha tèid an sàbhaladh le geamannan; buaidh air a h-uile geama) +STR_CONFIG_SETTING_TYPE_GAME_MENU :Roghainnean a' gheama (thèid an sàbhaladh leis a' gheama; gun bhuaidh ach air geamannan ùra) +STR_CONFIG_SETTING_TYPE_GAME_INGAME :Roghainnean a' gheama (thèid an sàbhaladh leis a' gheama; gun bhuaidh ach air a' gheama seo) +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_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 :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_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 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 +STR_CONFIG_SETTING_DISABLED :À comas + +STR_CONFIG_SETTING_COMPANIES_OFF :Na seall idir +STR_CONFIG_SETTING_COMPANIES_OWN :Aig a' chompanaidh agad fhèin +STR_CONFIG_SETTING_COMPANIES_ALL :Aig na h-uile companaidh + +STR_CONFIG_SETTING_NONE :Chan eil gin +STR_CONFIG_SETTING_ORIGINAL :Tùsail +STR_CONFIG_SETTING_REALISTIC :Fìor-riochdail + +STR_CONFIG_SETTING_HORIZONTAL_POS_LEFT :Ris an taobh chlì +STR_CONFIG_SETTING_HORIZONTAL_POS_CENTER :Sa mheadhan +STR_CONFIG_SETTING_HORIZONTAL_POS_RIGHT :Ris an taobh deas + +STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN :Iasad tòiseachaidh as motha: {STRING} +STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :An t-airgead as motha as urrainn dha chompanaidh fhaighinn mar iasad (a' fàgail an atmhorachd dhan darna taobh) +STR_CONFIG_SETTING_INTEREST_RATE :Luach-rèidh: {STRING} +STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Luach-rèidh iasaid; stiùiridh seo an atmhorachd cuideachd ma tha e an comas +STR_CONFIG_SETTING_RUNNING_COSTS :Cosgaisean ruith: {STRING} +STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT :Suidhich ìre nan cosgaisean ruith is obrach-càraidh aig carbadan is a' bhun-structar +STR_CONFIG_SETTING_CONSTRUCTION_SPEED :Luaths na togail: {STRING} +STR_CONFIG_SETTING_CONSTRUCTION_SPEED_HELPTEXT :Cuingich meud nan gnìomhan togail aig na IFan +STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS :Briseadh charbadan: {STRING} +STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS_HELPTEXT :Stiùirich dè cho tric ’s a bhios carbadan briste nach d' fhuair an obair-chàraidh iomchaidh +STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER :Iomadaichear nan tarrail: {STRING} +STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT :Suidhich na thèid a phàigheadh airson ceanglaichean le tarrail +STR_CONFIG_SETTING_CONSTRUCTION_COSTS :Cosgaisean togail: {STRING} +STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :Suidhich ìre nan cosgaisean togail is ceannachd +STR_CONFIG_SETTING_RECESSIONS :Crìonaidhean eaconamaidh: {STRING} +STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Ma tha seo air, faodaidh crìonadh eaconamaidh tachairt gach beagan bhliadhnaichean. Rè crìonaidh eaconamaidh, tha a h-uile toradh mòran nas ìsle (tillidh e dhan ìre roimhe nuair a bhios an crìonadh eaconamaidh seachad) +STR_CONFIG_SETTING_TRAIN_REVERSING :Bac gun till trèanaichean ann an stèiseanan: {STRING} +STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :Ma tha seo air, cha tionndaidh trèanaichean an comhair mura h-eil iad ann an stèisean ceann-rèile, fiù ’s nan robh slighe nas giorra dhan ath cheann-uidhe ann le tionndadh +STR_CONFIG_SETTING_DISASTERS :Dunaidh: {STRING} +STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Toglaich dunaidh a dh'fhaodas carbadan no am bun-structar a bhacadh no a mhilleadh +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_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 +STR_CONFIG_SETTING_EXTRADYNAMITE :Faodar barrachd rathaidean, dhrochaidean is thunailean le baile a thoirt air falbh: {STRING} +STR_CONFIG_SETTING_EXTRADYNAMITE_HELPTEXT :Bidh e nas fhasa bun-structar is togalaichean a tha le baile a thoirt air falbh +STR_CONFIG_SETTING_TRAIN_LENGTH :An fhaide as motha aig trèanaichean: {STRING} +STR_CONFIG_SETTING_TRAIN_LENGTH_HELPTEXT :Suidhich dè cho fad ’s a bhios trèanaichean air a char as motha +STR_CONFIG_SETTING_TILE_LENGTH :{COMMA} {P 0 leac leac leacan leac} +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 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 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}% +STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS :Caisead nan slèibhtean airson carbadan-rathaid: {STRING} +STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS_HELPTEXT :Caisead aig na leacan slèibhe dha charbad-rathaid. Nì luachan nas àirde an dìreadh nas dorra +STR_CONFIG_SETTING_FORBID_90_DEG :Bac trèanaichean is longan bho thionndadh 90°: {STRING} +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_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_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_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} +STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_HELPTEXT :An dòigh a thèid prìomh ghnìomhachas a stèidheachadh. Is ciall dha “Chan eil gin” nach gabh fear sam bith stèidheachadh, is ciall dha “Rùrachadh” gun gabh a mhaoineachadh ach gun tèid a thogail an àite air thuaiream air a' mhapa is ’s dòcha nach soirbhich leis, is ciall dha “Mar ghnìomhachasan eile” gun gabh gnìomhachasan bunasach togail le companaidhean a leithid ghnìomhachasan pròiseasaich an àite sam bith a thogras iad +STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :Chan eil gin +STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :Mar ghnìomhachasan eile +STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :Rùrachadh +STR_CONFIG_SETTING_INDUSTRY_PLATFORM :Raon rèidh mu thimcheall ghnìomhachasan: {STRING} +STR_CONFIG_SETTING_INDUSTRY_PLATFORM_HELPTEXT :Meud dhe dh'àite rèidh mu thimcheall gnìomhachais. Nì seo cinnteach gum bi rum ann mu thimcheall gnìomhachais gus slighean is mar sin air adhart a thogail +STR_CONFIG_SETTING_MULTIPINDTOWN :Ceadaich iomadh gnìomhachas coltach ri chèile san aon bhaile: {STRING} +STR_CONFIG_SETTING_MULTIPINDTOWN_HELPTEXT :Mar as trice, cha bhi baile ag iarraidh barrachd air aon fhear dhe gach seòrsa gnìomhachais. Leis an roghainn seo, faodaidh iomadh gnìomhachas dhen aon seòrsa a bhith san aon bhaile +STR_CONFIG_SETTING_SIGNALSIDE :Seall comharran: {STRING} +STR_CONFIG_SETTING_SIGNALSIDE_HELPTEXT :Tagh taobh an t-slighe a thèid comharran a chur +STR_CONFIG_SETTING_SIGNALSIDE_LEFT :Taobh clì +STR_CONFIG_SETTING_SIGNALSIDE_DRIVING_SIDE :Taobh draibhidh +STR_CONFIG_SETTING_SIGNALSIDE_RIGHT :Taobh deas +STR_CONFIG_SETTING_SHOWFINANCES :Seall uinneag ionmhais air deireadh a' bhliadhna: {STRING} +STR_CONFIG_SETTING_SHOWFINANCES_HELPTEXT :Ma tha seo air, thèid uinneag ionmhais a shealltainn air deireadh gach bliadhna ach an toir thu sùil air staid ionmhais na companaidh gu furasta +STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :Bidh òrduighean ùra “gun stad” gu bunasach: {STRING} +STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT_HELPTEXT :Mar as àbhaist, stadaidh carbad aig gach stèisean air an tèid e seachad. Ma chuireas tu an roghainn seo air, draibhidh e tro na h-uile stèisean air an t-slighe dha cheann-uidhe mu dheireadh gun stad. Thoir an aire nach mìnich an roghainn seo ach an luach bunaiteach airson òrduighean ùra. Faodaidh tu fhèin òrduighean fa leth a shuidheachadh mar as toigh leat co-dhiù +STR_CONFIG_SETTING_STOP_LOCATION :Stadaidh òrduighean ùra aig trèanaichean aig {STRING} a' chlàir gu bunaiteach +STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :Tagh far an stad trèan aig clàr gu bunaiteach. Is ciall dha “toiseach” gun stad i faisg air a' cheann a thig i a-steach, dha “meadhan” gun stad i sa mheadhan a' chlàir is dha “ceann thall” gun stad i fad air falbh bhon taobh a thig i a-steach. Thoir an aire nach mìnich an roghainn seo ach an luach bunaiteach airson òrduighean ùra. Faodaidh tu fhèin òrduighean fa leth a shuidheachadh mar as toigh leat co-dhiù +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_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 +STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT_FULLSCREEN :Prìomh-phort-seallaidh, làn-sgrìn a-mhàin +STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT :Prìomh-phort-seallaidh +STR_CONFIG_SETTING_AUTOSCROLL_EVERY_VIEWPORT :Na h-uile port-seallaidh +STR_CONFIG_SETTING_BRIBE :Ceadaich brìbeadh an ùghdarrais ionadail: {STRING} +STR_CONFIG_SETTING_BRIBE_HELPTEXT :Faodaidh companaidhean feuchainn ri ùghdarras ionadail a' bhaile a bhrìbeadh. Ma mhothaicheas neach-sgrùdaidh am brìbeadh, chan fhaod a' chompanaidh dad a dhèanamh tuilleadh sa bhaile fad sia mìosan +STR_CONFIG_SETTING_ALLOW_EXCLUSIVE :Ceadaich ceannach aig còirichean giùlain às-dùnach: {STRING} +STR_CONFIG_SETTING_ALLOW_EXCLUSIVE_HELPTEXT :Ma cheannaicheas companaidh còirichean giùlain às-dùnach airson baile, chan fhaigh stèiseanan (taistealaich no carago) nan co-fharpaisichean carago sam bith fad bliadhna +STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS :Ceadaich maoineachadh thogalaichean: {STRING} +STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS_HELPTEXT :Faodaidh companaidhean airgead a thoirt dha bhailtean ach an tog iad taighean ùra +STR_CONFIG_SETTING_ALLOW_FUND_ROAD :Ceadaich maoineachadh ath-thogail rathaidean ionadail: {STRING} +STR_CONFIG_SETTING_ALLOW_FUND_ROAD_HELPTEXT :Faodaidh companaidhean airgead a thoirt dha bhailtean ach an tog iad rathaidean às ùr gus sabotais a dhèanamh air seirbheisean a chleachdas rathaidean a' bhaile +STR_CONFIG_SETTING_ALLOW_GIVE_MONEY :Ceadaich toirt airgead dha chompanaidh eile: {STRING} +STR_CONFIG_SETTING_ALLOW_GIVE_MONEY_HELPTEXT :Faodaidh companaidhean airgead a thoirt dha chàch a chèile sa mhodh ioma-chluicheadair +STR_CONFIG_SETTING_FREIGHT_TRAINS :Iomadaichear truimead carago airson giùlan thrèanaichean troma: {STRING} +STR_CONFIG_SETTING_FREIGHT_TRAINS_HELPTEXT :Suidhich am buaidh a bhios aig carago air na trèanaichean. Bidh e nas dorra dha thrèanaichean carago a ghiùlan le luach as àirde, gu h-àraidh air slèibhtean +STR_CONFIG_SETTING_PLANE_SPEED :Factar luaiths nam plèanaichean: {STRING} +STR_CONFIG_SETTING_PLANE_SPEED_HELPTEXT :Suidhich luaths nam plèanaichean an coimeas ri carbadan dhe sheòrsaichean eile gus an teachd a-steach tro ghiùlan le plèanaichean a lùghdachadh +STR_CONFIG_SETTING_PLANE_SPEED_VALUE :1 / {COMMA} +STR_CONFIG_SETTING_PLANE_CRASHES :Àireamh dhe thubaistean plèana: {STRING} +STR_CONFIG_SETTING_PLANE_CRASHES_HELPTEXT :Suidhich an seans gun tuit plèana +STR_CONFIG_SETTING_PLANE_CRASHES_NONE :Cha tachair seo idir +STR_CONFIG_SETTING_PLANE_CRASHES_REDUCED :Ainneamh +STR_CONFIG_SETTING_PLANE_CRASHES_NORMAL :Àbhaisteach +STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Ceadaich stèiseanan ri taobh an rathaid air rathaidean a bhuineas ri baile: {STRING} +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_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 + +STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :Chan fhalbh an ùine air puirt-adhair: {STRING} +STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS_HELPTEXT :Nuair a chuireas tu an roghainn seo an comas, cumaidh gach port-adhair a' dol gu bràth an dèidh a thogail + +STR_CONFIG_SETTING_WARN_LOST_VEHICLE :Thoir rabhadh nuair a thèid carbad air chall: {STRING} +STR_CONFIG_SETTING_WARN_LOST_VEHICLE_HELPTEXT :Seallaidh seo brath mura tèid le carbad slighe a lorg dha cheann-uidhe +STR_CONFIG_SETTING_ORDER_REVIEW :Sgrùdaich òrduighean nan carbadan: {STRING} +STR_CONFIG_SETTING_ORDER_REVIEW_HELPTEXT :Nuair a bhios seo air, thèid òrduighean nan carbadan ath-sgrùdadh bho àm gu àm is thèid duilgheadasan follaiseach aithris le brath naidheachd nuair a mholar e. +STR_CONFIG_SETTING_ORDER_REVIEW_OFF :Na sgrùdaich +STR_CONFIG_SETTING_ORDER_REVIEW_EXDEPOT :Sgrùdaich, ach fàg carbadan nan stad dhan dàrna taobh +STR_CONFIG_SETTING_ORDER_REVIEW_ON :Sgrùdaich a h-uile carbad +STR_CONFIG_SETTING_WARN_INCOME_LESS :Thoir rabhadh nuair a dh'adhbharaicheas carbad call airgid: {STRING} +STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :Nuair a bhios seo air, thèid brath a chur mur an do rinn carbad prothaid feadh bliadhna +STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Chan fhalbh an ùine air carbadan gu bràth: {STRING} +STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :Ma tha seo air, bidh a h-uile modail dhe charbad ri làimh gu bràth tuilleadh an dèidh an tionnsgnadh +STR_CONFIG_SETTING_AUTORENEW_VEHICLE :Fèin-nuadhaich carbad nuair a bhios e air fàs aosta: {STRING} +STR_CONFIG_SETTING_AUTORENEW_VEHICLE_HELPTEXT :Nuair a bhios seo air, nuair a bhios carbad air fàs ro aosta, thèid fear ùr a chur na àite gu fèin-obrachail ma dh'fhreagras e ri cumhan an fhèin-nuadhachaidh +STR_CONFIG_SETTING_AUTORENEW_MONTHS :Fèin-nuadhaich nuair a bhios carbad {STRING} na an aois as motha +STR_CONFIG_SETTING_AUTORENEW_MONTHS_HELPTEXT :An aois aig carbad a bu chòir fèin-nuadhachadh fhaighinn +STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_BEFORE :{COMMA} {P mhìos mhìos mìosan mìos} nas òige +STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_AFTER :{COMMA} {P mhìos mhìos mìosan mìos} nas sine +STR_CONFIG_SETTING_AUTORENEW_MONEY :An t-airgead as lugha a tha a dhìth gus fèin-nuadhachadh a dhèanamh: {STRING} +STR_CONFIG_SETTING_AUTORENEW_MONEY_HELPTEXT :Feumaidh an uireadh dhe dh'airgid seo a bhith air fhàghail sa bhanca agad an dèidh carbad fhèin-nuadhachadh +STR_CONFIG_SETTING_ERRMSG_DURATION :An ùine a mhaireas brath mearachd: {STRING} +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_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_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_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 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} +STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR_HELPTEXT :Nuair a dh'fhosglas mi bàr-inneal togail airson seòrsa dhe ghiùlan, fosgail am bàr-inneal airson crutha-tìre cuideachd +STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR :Dath na tìre a thèid a chleachdach sa mheanbh-mhapa: {STRING} +STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :Dath na crutha-tìre air a' mheanbh-mhapa +STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :Uaine +STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :Dorch-uaine +STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Purpaidh +STR_CONFIG_SETTING_REVERSE_SCROLLING :Comhair sgrolaidh chontrarra: {STRING} +STR_CONFIG_SETTING_REVERSE_SCROLLING_HELPTEXT :Giùlan nuair a thèid am mapa a sgroladh le putan deas na luchaige. Nuair a bhios seo air, gluaisidh an luchag am mapa +STR_CONFIG_SETTING_SMOOTH_SCROLLING :Sgroladh mìn nam port-seallaidh: {STRING} +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 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 +STR_CONFIG_SETTING_LIVERIES_ALL :Aig a h-uile companaidh +STR_CONFIG_SETTING_PREFER_TEAMCHAT :Cabadaich sgioba le : {STRING} +STR_CONFIG_SETTING_PREFER_TEAMCHAT_HELPTEXT :Tagh an dèan thu suids eadar cabadaich taobh a-staigh na companaidh is cabadaich poblach leis an iuchair no le +STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING :Giùlan a' chuibhle-sgrolaidh: {STRING} +STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING_HELPTEXT :Cuir sgroladh an comas le cuibhle-sgrolaidh luchaige aig a bheil dà dhimeinsean +STR_CONFIG_SETTING_SCROLLWHEEL_ZOOM :Sùm am mapa +STR_CONFIG_SETTING_SCROLLWHEEL_SCROLL :Sgrolaich am mapa +STR_CONFIG_SETTING_SCROLLWHEEL_OFF :Na dèan dad +STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER :Luaths aig sgroladh a' mhapa leis a' chuibhle: {STRING} +STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER_HELPTEXT :Tagh dè cho luath ’s a thèid sgroladh le cuibhle-sgrolaidh na luchaige +STR_CONFIG_SETTING_OSK_ACTIVATION :Meur-chlàr air an sgrìn: {STRING} +STR_CONFIG_SETTING_OSK_ACTIVATION_HELPTEXT :Tagh an dòigh sa thèid meur-chlàr fhosgladh air an sgrìn gus teacsa a chur a-steach leis an tomhaire a-mhàin. Tha seo airson uidheaman beaga gun mheur-chlàr aca fhèin +STR_CONFIG_SETTING_OSK_ACTIVATION_DISABLED :À comas +STR_CONFIG_SETTING_OSK_ACTIVATION_DOUBLE_CLICK :Briogadh dùbailte +STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK_FOCUS :Aon bhriogadh (le fòcas) +STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK :Aon bhriogadh (sa bhad) + +STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU :Emulation a' bhriogaidh dheis: {STRING} +STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_HELPTEXT :Tagh an dòigh sa thèid emulation a dhèanamh airson briogadh le putan deas na luchaige +STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Command+Briogadh +STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Ctrl+Briogadh +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_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} +STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_HELPTEXT :Tagh na gnìomhan a bhios ceadaichte nuair a bhios ann geama na stad +STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :Na ceadaich gnìomh sam bith +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 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 +STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :Seall an clàr-ama ann an diogan seach làithean: {STRING} +STR_CONFIG_SETTING_TIMETABLE_IN_TICKS_HELPTEXT :Seall na h-ùinean siubhail ann an clàran-ama le diogan geama seach làithean +STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE :Seall àm ruigsinn is falbh air clàran-ama: {STRING} +STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE_HELPTEXT :Seall na h-amannan ruigsinn is falbh air a bheilear an dùil air clàran-ama +STR_CONFIG_SETTING_QUICKGOTO :Cruthachadh luath aig òrduighean charbadan:{STRING} +STR_CONFIG_SETTING_QUICKGOTO_HELPTEXT :Ro-thagh an cùrsair “rach gu” nuair a thèid uinneag nan òrduighean fhosgladh +STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE :Seòrsa rèile bunaiteach (le geama ùr/air ùr-luchdadh): {STRING} +STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_HELPTEXT :An seòrsa rèile a thèid a thaghadh nuair a bhios geama ùr air a thòiseachadh no geama air luchdadh. Taghaidh “Seòrsa as sine” an seòrsa as sine dhe rèile, “Seòrsa as ùire” an seòrsa as ùire a tha ri làimh is “Ga chleachdadh mar as trice” an seòrsa a tha thu a' cleachdadh mar as trice an-dràsta +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-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 +STR_CONFIG_SETTING_EXPENSES_LAYOUT :Cuir cosgaisean ann am buidhnean ann an uinneag maoin na companaidh: {STRING} +STR_CONFIG_SETTING_EXPENSES_LAYOUT_HELPTEXT :Tagh a' cho-dhealbhachd airson uinneag maoin na companaidh + +STR_CONFIG_SETTING_SOUND_TICKER :Cinn-naidheachd: {STRING} +STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :Cluich fuaim airson gearr-chunntasan naidheachd +STR_CONFIG_SETTING_SOUND_NEWS :Pàipear-naidheachd: {STRING} +STR_CONFIG_SETTING_SOUND_NEWS_HELPTEXT :Cluich fuaim nuair a thèid pàipear-naidheachd a shealltainn +STR_CONFIG_SETTING_SOUND_NEW_YEAR :Deireadh a' bhliadhna: {STRING} +STR_CONFIG_SETTING_SOUND_NEW_YEAR_HELPTEXT :Cluich èifeachd fuaime air deireadh gach bliadhna nuair a thèid dèanadas na companaidh airson a' bhliadhna a dh'fhalbh a shealltainn +STR_CONFIG_SETTING_SOUND_CONFIRM :Togail: {STRING} +STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT :Cluich èifeachd fuaime nuair a thèid rudeigin a thogail gu soirbheachail is le gnìomhan eile +STR_CONFIG_SETTING_SOUND_CLICK :Brùthadh phutanan: {STRING} +STR_CONFIG_SETTING_SOUND_CLICK_HELPTEXT :Dèan bìd le brùthadh phutanan +STR_CONFIG_SETTING_SOUND_DISASTER :Dunaidh/tubaistean: {STRING} +STR_CONFIG_SETTING_SOUND_DISASTER_HELPTEXT :Cluich èifeachd fuaime le dunaidh no tubaist +STR_CONFIG_SETTING_SOUND_VEHICLE :Carbadan: {STRING} +STR_CONFIG_SETTING_SOUND_VEHICLE_HELPTEXT :Cluich èifeachdan fuaime nan carbadan +STR_CONFIG_SETTING_SOUND_AMBIENT :Àrainneachd: {STRING} +STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :Cluich èifeachdan fuaime àrainneachd a' chrutha-tìre, nan gnìomhachasan is nam bailtean + +STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING :Cuir togail a' bhun-structair à comas mura h-eil carbad iomchaidh ri làimh: {STRING} +STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING_HELPTEXT :Ma tha seo air, chan eil bun-structar ri làimh ach ma tha carbad freagarrach ri làimh cuideachd. Mar sin, cha chaill thu àm is airgead air bun-structar gun fheum +STR_CONFIG_SETTING_MAX_TRAINS :An t-uiread as motha dhe thrèanaichean airson gach companaidh: {STRING} +STR_CONFIG_SETTING_MAX_TRAINS_HELPTEXT :An àireamh as motha dhe thrèanaichean a dh'fhaodas a bhith aig gach companaidh +STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :An t-uiread as motha dhe charbadan-rathaid airson gach companaidh: {STRING} +STR_CONFIG_SETTING_MAX_ROAD_VEHICLES_HELPTEXT :An àireamh as motha dhe charbadan-rathaid a dh'fhaodas a bhith aig gach companaidh +STR_CONFIG_SETTING_MAX_AIRCRAFT :An t-uiread as motha dhe charbadan-adhair airson gach companaidh: {STRING} +STR_CONFIG_SETTING_MAX_AIRCRAFT_HELPTEXT :An àireamh as motha dhe charbadan-adhair a dh'fhaodas a bhith aig gach companaidh +STR_CONFIG_SETTING_MAX_SHIPS :An t-uiread as motha dhe longan airson gach companaidh: {STRING} +STR_CONFIG_SETTING_MAX_SHIPS_HELPTEXT :An àireamh as motha dhe longan a dh'fhaodas a bhith aig gach companaidh + +STR_CONFIG_SETTING_AI_BUILDS_TRAINS :Cuir trèanaichean à comas airson a' choimpiutair: {STRING} +STR_CONFIG_SETTING_AI_BUILDS_TRAINS_HELPTEXT :Ma tha seo air, chan urrainn dha chluicheadairean coimpiutair trèanaichean a thogail +STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES :Cuir carbadan-rathaid à comas airson a' choimpiutair: {STRING} +STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES_HELPTEXT :Ma tha seo air, chan urrainn dha chluicheadairean coimpiutair carbadan-rathaid a thogail +STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT :Cuir carbadan-adhair à comas airson a' choimpiutair: {STRING} +STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT_HELPTEXT :Ma tha seo air, chan urrainn dha chluicheadairean coimpiutair carbadan-adhair a thogail +STR_CONFIG_SETTING_AI_BUILDS_SHIPS :Cuir longan à comas airson a' choimpiutair: {STRING} +STR_CONFIG_SETTING_AI_BUILDS_SHIPS_HELPTEXT :Ma tha seo air, chan urrainn dha chluicheadairean coimpiutair longan a thogail + +STR_CONFIG_SETTING_AI_PROFILE :Pròifil nan roghainnean bunaiteach: {STRING} +STR_CONFIG_SETTING_AI_PROFILE_HELPTEXT :Tagh pròifil nan roghainnean a thèid a chleachdadh airson IFan air thuaiream no airson luachan tòiseachaidh nuair a thèid IF no sgriobt geama ùr a chur ris +STR_CONFIG_SETTING_AI_PROFILE_EASY :Furasta +STR_CONFIG_SETTING_AI_PROFILE_MEDIUM :Meadhanach +STR_CONFIG_SETTING_AI_PROFILE_HARD :Doirbh + +STR_CONFIG_SETTING_AI_IN_MULTIPLAYER :Ceadaich IFan sa mhodh ioma-chluicheadair: {STRING} +STR_CONFIG_SETTING_AI_IN_MULTIPLAYER_HELPTEXT :Ceadaich gun gabh cluicheadairean coimpiutair IF pàirt an an geamannan ioma-chluicheadair +STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES :Àireamh dhe dh'opcodes mus tèid sgriobt a chur na dhàil: {STRING} +STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES_HELPTEXT :An àireamh as motha dhe cheuman àireamhachaidh as urrainn dha sgriobt a dhèanamh san aon chuairt + +STR_CONFIG_SETTING_SERVINT_ISPERCENT :Tha tricead a' chàraidh ann an ceudadan: {STRING} +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_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 +STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Tricead bunaiteach na h-obrach-càraidh air carbadan-adhair: {STRING} +STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Tagh dè cho tric ’s a thèid obair-chàraidh a dhèanamh air carbadan-adhair ùra mura deach tricead a’ chàraidh sònraichte a shuidheachadh airson a' charbaid +STR_CONFIG_SETTING_SERVINT_SHIPS :Tricead bunaiteach na h-obrach-càraidh air longan: {STRING} +STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Tagh dè cho tric ’s a thèid obair-chàraidh a dhèanamh air longan ùra mura deach tricead a’ chàraidh sònraichte a shuidheachadh airson na luinge +STR_CONFIG_SETTING_NOSERVICE :Cuir obair-chàraidh à comas ma chaidh briseadh a chur gu “Cha tachair seo idir”: {STRING} +STR_CONFIG_SETTING_NOSERVICE_HELPTEXT :Ma tha seo air, chan fhaigh carbadan obair-chàraidh mur urrainn dhaibh briseadh +STR_CONFIG_SETTING_WAGONSPEEDLIMITS :Cuir crìochan-luaiths nan carbadan-rèile an comas: {STRING} +STR_CONFIG_SETTING_WAGONSPEEDLIMITS_HELPTEXT :Ma tha seo air, cleachd crìochan-luaiths nan carbadan cuideachd gus an luaths as motha aig trèan a shuidheachadh +STR_CONFIG_SETTING_DISABLE_ELRAILS :Cuir rèilean dealain à comas: {STRING} +STR_CONFIG_SETTING_DISABLE_ELRAILS_HELPTEXT :Ma tha seo air, cha leig thu leas slighean dealain a thogail gus einnseanan dealain a chleachdadh orra + +STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN :Tha a' chiad carbad air stèisean a' chluicheadair a ruigsinn: {STRING} +STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN_HELPTEXT :Seall pàipear-naidheachd nuair a bhios a' chiad carbad air stèisean ùr a' chluicheadair a ruigsinn +STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER :Tha a' chiad carbad air stèisean aig co-fharpaisiche a ruigsinn: {STRING} +STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER_HELPTEXT :Seall pàipear-naidheachd nuair a bhios a' chiad carbad air stèisean ùr aig co-fharpaisiche a ruigsinn +STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS :Tubaistean / dunaidh: {STRING} +STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS_HELPTEXT :Seall pàipear-naidheachd nuair a thachras tubaist no dunaidh +STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION :Fiosrachadh na companaidh: {STRING} +STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION_HELPTEXT :Seall pàipear-naidheachd nuair thèid companaidh ùr a stèidheachadh no nuair a bhios companaidh fo chunnart brisidh +STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN :Gnìomhachas ùr air fhosgladh: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN_HELPTEXT :Seall pàipear-naidheachd nuair a dh'fhosglas gnìomhachas ùr +STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE :Gnìomhachas air a dhùnadh: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE_HELPTEXT :Seall pàipear-naidheachd nuair a thèid gnìomhachas a dhùnadh +STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES :Atharraichean an eaconamaidh: {STRING} +STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES_HELPTEXT :Seall pàipear-naidheachd nuair a dh'atharraicheas eaconamaidh na cruinne +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY :Atharraichean saothrachaidh aig gnìomhachasan a tha gam frithealadh leis a' chompanaidh: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY_HELPTEXT :Seall pàipear-naidheachd nuair a dh'atharraicheas ìre saothrachaidh aig gnìomhachas a tha ga fhrithealadh leis a' chompanaidh agad +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER :Atharraichean saothrachaidh aig gnìomhachasan a tha gam frithealadh le co-fharpaisiche: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER_HELPTEXT :Seall pàipear-naidheachd nuair a dh'atharraicheas ìre saothrachaidh aig gnìomhachas a tha ga fhrithealadh le co-fharpaisiche +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED :Atharraichean saothrachaidh aig gnìomhachasan eile: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED_HELPTEXT :Seall pàipear-naidheachd nuair a dh'atharraicheas ìre saothrachaidh aig gnìomhachas nach eil ga fhrithealadh le companaidh sam bith +STR_CONFIG_SETTING_NEWS_ADVICE :Comhairlean / fiosrachadh mu charbadan a' chompanaidh: {STRING} +STR_CONFIG_SETTING_NEWS_ADVICE_HELPTEXT :Seall brathan mu charbadan a bu chòir dhut an aire a thoirt orra +STR_CONFIG_SETTING_NEWS_NEW_VEHICLES :Carbadan ùra: {STRING} +STR_CONFIG_SETTING_NEWS_NEW_VEHICLES_HELPTEXT :Seall pàipear-naidheachd nuair a bhios seòrsa dhe charbad ùr ri làimh +STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE :Atharraichean air a' charago a gabhar ris: {STRING} +STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE_HELPTEXT :Seall brathan mu stèiseanan a dh'atharraich dè an carago a ghabhas iad ris +STR_CONFIG_SETTING_NEWS_SUBSIDIES :Tarrailean: {STRING} +STR_CONFIG_SETTING_NEWS_SUBSIDIES_HELPTEXT :Seall pàipear-naidheachd mu thachartasan co-cheangailte ri tarrailean +STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION :Fiosrachadh coitcheann: {STRING} +STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION_HELPTEXT :Seall pàipear-naidheachd mu thachartasan coitcheann a leithid ceannach aig còirichean às-dùnach no maoineachadh air ath-thogail rathaidean + +STR_CONFIG_SETTING_NEWS_MESSAGES_OFF :Dheth +STR_CONFIG_SETTING_NEWS_MESSAGES_SUMMARY :Gearr-chunntas +STR_CONFIG_SETTING_NEWS_MESSAGES_FULL :Slàn + +STR_CONFIG_SETTING_COLOURED_NEWS_YEAR :Nochdaidh naidheachdan dathte ann an: {STRING} +STR_CONFIG_SETTING_COLOURED_NEWS_YEAR_HELPTEXT :Am bliadhna a thèid pàipear-naidheachd dathte a chlò-bhualadh a' chiad turas. Bidh na pàipearan-naidheachd ann an dubh is geal roimhe seo +STR_CONFIG_SETTING_STARTING_YEAR :Bliadhna tòiseachaidh: {STRING} +STR_CONFIG_SETTING_SMOOTH_ECONOMY :Cuir eaconamaidh rèidh an comas (atharraichean nas trice is nas beaga): {STRING} +STR_CONFIG_SETTING_SMOOTH_ECONOMY_HELPTEXT :Ma tha seo air, atharraichidh saothrachadh nan gnìomhachasan nas trice is le ceuman nas lugha. Chan eil buaidh aig seo air seòrsaichean gnìomhachais a chaidh a sholar le NewGRF mar as trice +STR_CONFIG_SETTING_ALLOW_SHARES :Ceadaich gun tèid stoca a cheannach bho chompanaidhean eile: {STRING} +STR_CONFIG_SETTING_ALLOW_SHARES_HELPTEXT :Ma tha seo air, ’s urrainn dhut stocan chompanaidhean a cheannach is a reic. Cha bhi stoca ri làimh ach aig companaidhean aig a bheil aois shònraichte +STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE :A' cheudad dhen phrothaid a gheibh carbadan le tar-aiseag carago: {STRING} +STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE_HELPTEXT :A' cheudad dhen phrothaid a gheibh carbadan airson na slighe a shiubhlas iad nuair a nì iad tar-aiseag. Bheir seo barrachd smachd air an teachd a-steach dhut +STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY :Le slaodadh, cuir comharra gach: {STRING} +STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_HELPTEXT :Tagh an t-astar eadar comharran a thèid a thogail air slighe is an t-ath-chnap-starra (comharra, gobhal) nuair a bhios comharran gan slaodadh +STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_VALUE :{COMMA} {P 0 leac leac leacan leac} +STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE :Le slaodadh, cùm astar co-ionnan eadar comharran: {STRING} +STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :Tagh an giùlan aig cur nan comharran nuair a thèid comharran a shlaodadh le Ctrl. Ma tha seo dheth, thèid comharran a chur gach taobh tunail no drochaide gus slighean fada gun chomharran a sheachnadh. Ma tha seo air, thèid comharran a chur gach n-mh leac agus nì seo co-thaobhadh aig comharran air slighean co-shìnte nas fhasa +STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :Tog saimeaforean gu fèin-obrachail ro: {STRING} +STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE_HELPTEXT :Tagh am bliadhna a thèid comharran dealain a chleachdadh airson slighean. Ron bhliadhna seo, thèid comharran neo-dhealanach a chleachdadh (tha an dearbh ghiùlan aca ach coltas eadar-dhealaichte orra) +STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI :Cuir eadar-aghaidh nan comharran an comas: {STRING} +STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI_HELPTEXT :Seall uinneag gus an seòrsa dhe chomharra a thogas tu a thaghadh seach dol tro na seòrsaichean dhe chomharran às aonais uinneige le Ctrl+briogadh air togail chomharran +STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE :An seòrsa dhe chomharra a thèid a thogail a ghnàth: {STRING} +STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE_HELPTEXT :An seòrsa bunaiteach dhe chomharra a thèid a chleachdadh +STR_CONFIG_SETTING_DEFAULT_SIGNAL_NORMAL :Comharran bacaidh +STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBS :Comharran slighe +STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBSOWAY :Comharran aon-shligheach +STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES :Cuairtich tro na seòrsaichean comharra: {STRING} +STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES_HELPTEXT :Tagh dè na seòrsaichean dhe chomharra a thèid a chuairteachadh tromhpa nuair a thèid briogadh le Ctrl air togail comharra leis an inneal togail chomharran +STR_CONFIG_SETTING_CYCLE_SIGNAL_NORMAL :Comharran bacaidh a-mhàin +STR_CONFIG_SETTING_CYCLE_SIGNAL_PBS :Comharran slighe a-mhàin +STR_CONFIG_SETTING_CYCLE_SIGNAL_ALL :Na h-uile + +STR_CONFIG_SETTING_TOWN_LAYOUT :Co-dhealbhachd nan rathaidean airson bailtean ùra: {STRING} +STR_CONFIG_SETTING_TOWN_LAYOUT_HELPTEXT :Co-dhealbhachd airson nan rathaidean ann am bailtean ùra +STR_CONFIG_SETTING_TOWN_LAYOUT_DEFAULT :Tùsail +STR_CONFIG_SETTING_TOWN_LAYOUT_BETTER_ROADS :Rathaidean as fhearr +STR_CONFIG_SETTING_TOWN_LAYOUT_2X2_GRID :Griod 2x2 +STR_CONFIG_SETTING_TOWN_LAYOUT_3X3_GRID :Griod 3x3 +STR_CONFIG_SETTING_TOWN_LAYOUT_RANDOM :Air thuaiream +STR_CONFIG_SETTING_ALLOW_TOWN_ROADS :Faodaidh bailtean rathaidean a thogail: {STRING} +STR_CONFIG_SETTING_ALLOW_TOWN_ROADS_HELPTEXT :Ceadaich dha bhailtean gun tog iad rathaidean ach am fàs iad. Cuir seo à comas gus ùghdarrasan nam bailtean a bhacadh bho thogail rathaidean dhaibh fhèin +STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :Ceadaich dha bhailtean staranan-rèile a thogail: {STRING} +STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS_HELPTEXT :Ma tha seo air, faodaidh bailtean staranan-rèile a thogail +STR_CONFIG_SETTING_NOISE_LEVEL :Ceadaich dha bhailtean smachd a chumail air an fhuaim a dh'adhbharaicheas puirt-adhair: {STRING} +STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :Ma tha an roghainn seo à comas, faodaidh dà phort-adhair a bhith san aon bhaile. Nuair a bhios an roghainn seo air, bidh cuingeachadh air an àireamh dhe phuirt-adhair a-rèir na fuaime a dh'fhulaingeas am baile na chrochas air meud an t-sluaigh is air meud is astar a' phuirt-adhair +STR_CONFIG_SETTING_TOWN_FOUNDING :Stèidheachadh bhailtean sa gheama: {STRING} +STR_CONFIG_SETTING_TOWN_FOUNDING_HELPTEXT :Ma tha an roghainn seo air, faodaidh cluicheadairean bailtean ùra a stèidheachadh sa gheama +STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :Toirmisgte +STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :Ceadaichte +STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :Ceadaichte, co-dhealbhachd a' bhaile ghnàthaichte + +STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT :Cur nan craobh sa gheama: {STRING} +STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_HELPTEXT :Cùm smachd air na craobhan a nochdas sa gheama air thuaiream. Dh'fhaoidte gun toir seo buaidh air gnìomhachasan a tha an eisimeil fàs nan craobhan a leithid muileannan-fiodha +STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NONE :Chan eil gin {RED}(brisidh seo muileannan-fiodha) +STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_RAINFOREST :Ann an coilltean-uisge a-mhàin +STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_ALL :Àite sam bith + +STR_CONFIG_SETTING_TOOLBAR_POS :Ionad a' phrìomh bhàir-inneal: {STRING} +STR_CONFIG_SETTING_TOOLBAR_POS_HELPTEXT :Ionad còmhnard a' phrìomh bhàir-inneal air barr na sgrìn +STR_CONFIG_SETTING_STATUSBAR_POS :Ionad a' bhàir-staide: {STRING} +STR_CONFIG_SETTING_STATUSBAR_POS_HELPTEXT :Ionad còmhnard a' bhàir-staide aig bonn na sgrìn +STR_CONFIG_SETTING_SNAP_RADIUS :Rèideas greimeachaidh nan uinneag: {STRING} +STR_CONFIG_SETTING_SNAP_RADIUS_HELPTEXT :An t-astar eadar dà uinneag mus tèid an uinneag a tha thu a' gluasad a cho-thaobhadh ri uinneag faisg oirre +STR_CONFIG_SETTING_SNAP_RADIUS_VALUE :{COMMA} {P 0 phiogsail phiogsail piogsailean piogsail} +STR_CONFIG_SETTING_SNAP_RADIUS_DISABLED :À comas +STR_CONFIG_SETTING_SOFT_LIMIT :An àireamh as motha dhe dh'uinneagan nach eil steigeach: {STRING} +STR_CONFIG_SETTING_SOFT_LIMIT_HELPTEXT :An àireamh as motha dhe dh'uinneagan fosgailte nach eil steigeach nach tèid a dhùnadh gu fèin-obrachail gus àite a chruthachadh airson uinneagan ùra +STR_CONFIG_SETTING_SOFT_LIMIT_VALUE :{COMMA} +STR_CONFIG_SETTING_SOFT_LIMIT_DISABLED :à comas +STR_CONFIG_SETTING_ZOOM_MIN :Leibheil sùmaidh a-steach as àirde: {STRING} +STR_CONFIG_SETTING_ZOOM_MIN_HELPTEXT :An leibheil as àirde as urrainn dhut sùmadh a-steach ann am port-seallaidh. Thoir an aire gum bi barrachd cuimhne a dhìth ort ma cheadaicheas tu leibheilean sùmaidh nas àirde +STR_CONFIG_SETTING_ZOOM_MAX :Leibheil sùmaidh a-mach as àirde: {STRING} +STR_CONFIG_SETTING_ZOOM_MAX_HELPTEXT :An leibheil as àirde as urrainn dhut sùmadh a-mach ann am port-seallaidh. Dh'fhaoidte gun adhbharaich leibheilean sùmaidh a-mach a tha ro àird dàil +STR_CONFIG_SETTING_ZOOM_LVL_MIN :4x +STR_CONFIG_SETTING_ZOOM_LVL_IN_2X :2x +STR_CONFIG_SETTING_ZOOM_LVL_NORMAL :Àbhaisteach +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 :Luaths fàs nam bailtean: {STRING} +STR_CONFIG_SETTING_TOWN_GROWTH_HELPTEXT :Suidhich dè cho luath ’s a dh'fhàsas bailtean +STR_CONFIG_SETTING_TOWN_GROWTH_NONE :Gun fhàs idir +STR_CONFIG_SETTING_TOWN_GROWTH_SLOW :Slaodach +STR_CONFIG_SETTING_TOWN_GROWTH_NORMAL :Àbhaisteach +STR_CONFIG_SETTING_TOWN_GROWTH_FAST :Luath +STR_CONFIG_SETTING_TOWN_GROWTH_VERY_FAST :Glè luath +STR_CONFIG_SETTING_LARGER_TOWNS :Roinn nam bailtean a thèid nam mòr-bhailtean: {STRING} +STR_CONFIG_SETTING_LARGER_TOWNS_HELPTEXT :Suidhich co mheud bailtean a thèid nam mòr-bhailtean, ’s e seo baile a thòisicheas nas motha is a dh'fhàsas nas luaithe +STR_CONFIG_SETTING_LARGER_TOWNS_VALUE :1 a-mach à {COMMA} +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_LINKGRAPH_INTERVAL :Ùraich graf an sgaoilidh gach {STRING} {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_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 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 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 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_DEFAULT :Am modh sgaoilidh airson seòrsaichean eile dhe charago: {STRING} +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_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 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_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_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_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_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_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_IMPERIAL :Impireil (ft) +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :Meatrach (m) +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI (m) + +STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Ionadaileadh +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_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_AI_NPC :{ORANGE}Cluicheadairean coimpiutair + +STR_CONFIG_SETTING_PATHFINDER_OPF :Tùsail +STR_CONFIG_SETTING_PATHFINDER_NPF :NPF +STR_CONFIG_SETTING_PATHFINDER_YAPF_RECOMMENDED :YAPF {BLUE}(molta) + +STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Lorg shlighean aig trèanaichean: {STRING} +STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :An dòigh a lorgas trèanaichean an slighe +STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :Lorg shlighean aig carbadan-rathaid: {STRING} +STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES_HELPTEXT :An dòigh a lorgas carbadan-rathaid an slighe +STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS :Lorg slighean aig longan: {STRING} +STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT :An dòigh a lorgas longan an slighe +STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :Taobh contrarra aig comharran gu fèin-obrachail: {STRING} +STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT :Faodaidh trèanaichean tilleadh aig comharra nuair a bhios iad air feitheamh ann ùine fada + +STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}Atharraich luach na roghainn + +# Config errors +STR_CONFIG_ERROR :{WHITE}Mearachd leis an fhaidhle rèiteachaidh... +STR_CONFIG_ERROR_ARRAY :{WHITE}... mearachd ann an arraigh “{STRING}" +STR_CONFIG_ERROR_INVALID_VALUE :{WHITE}... luach “{STRING}" mì-dhligheach airson “{STRING}" +STR_CONFIG_ERROR_TRAILING_CHARACTERS :{WHITE}... caractaran anabarrach air deireadh roghainn “{STRING}" +STR_CONFIG_ERROR_DUPLICATE_GRFID :{WHITE}... a' leigeil seachad NewGRF “{STRING}": ID GRF dùblaichte le “{STRING}" +STR_CONFIG_ERROR_INVALID_GRF :{WHITE}... a' leigeil seachad NewGRF “{STRING}" mì-dhligheach: {STRING} +STR_CONFIG_ERROR_INVALID_GRF_NOT_FOUND :gun lorg +STR_CONFIG_ERROR_INVALID_GRF_UNSAFE :neo-thèarainte airson cleachdaidh stadaigich +STR_CONFIG_ERROR_INVALID_GRF_SYSTEM :siostam NewGRF +STR_CONFIG_ERROR_INVALID_GRF_INCOMPATIBLE :neo-chòrdail ris an tionndadh seo dhe OpenTTD +STR_CONFIG_ERROR_INVALID_GRF_UNKNOWN :neo-aithnichte +STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_LEVEL :{WHITE}... tha an leibheil dùmhlachaidh “{STRING}" mì-dhligheach +STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_ALGORITHM :{WHITE}... chan eil am fòrmat “{STRING}" gus geamannan a shàbhaladh ri làimh. A' tilleadh gu “{STRING}" +STR_CONFIG_ERROR_INVALID_BASE_GRAPHICS_NOT_FOUND :{WHITE}... a' leigeil seachad an seata grafaigeachd bunasach “{STRING}": cha deach a lorg +STR_CONFIG_ERROR_INVALID_BASE_SOUNDS_NOT_FOUND :{WHITE}... a' leigeil seachad an seata fuaime bunasach “{STRING}": cha deach a lorg +STR_CONFIG_ERROR_INVALID_BASE_MUSIC_NOT_FOUND :{WHITE}... a' leigeil seachad an seata ciùil bunasach “{STRING}": cha deach a lorg +STR_CONFIG_ERROR_OUT_OF_MEMORY :{WHITE}Chan eil cuimhne gu leòr agad +STR_CONFIG_ERROR_SPRITECACHE_TOO_BIG :{WHITE}Dh'fhàillig le sònrachadh aig {BYTES} dhe thasgadan nam sprites. Chaidh tasgadan nam sprites a lùghdachadh gu {BYTES}. Le sin, bidh an dèanadas aig OpenTTD nas lugha. Gus nach bidh feum ann airson a leithid dhe chuimhne, feuch an cuir thu grafaigeachd 32bpp is/no leibheilean sùmaidh à comas + +# Intro window +STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} + +STR_INTRO_NEW_GAME :{BLACK}Geama ùr +STR_INTRO_LOAD_GAME :{BLACK}Luchdaich geama +STR_INTRO_PLAY_SCENARIO :{BLACK}Cluich cnàmh-sgeul +STR_INTRO_PLAY_HEIGHTMAP :{BLACK}Cluich mapa-àirde +STR_INTRO_SCENARIO_EDITOR :{BLACK}Deasaiche chnàmh-sgeulan +STR_INTRO_MULTIPLAYER :{BLACK}Ioma-chluicheadair + +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_NEWGRF_SETTINGS :{BLACK}Roghainnean NewGRF +STR_INTRO_ONLINE_CONTENT :{BLACK}Susbaint air loidhne +STR_INTRO_SCRIPT_SETTINGS :{BLACK}Roghainnean sgriobt IF/Geama +STR_INTRO_QUIT :{BLACK}Fàg an-seo + +STR_INTRO_TOOLTIP_NEW_GAME :{BLACK}Tòisich geama ùr. Ctrl+Briogadh gus leum thairis air rèiteachadh a mhapa +STR_INTRO_TOOLTIP_LOAD_GAME :{BLACK}Luchdaich geama air a shàbhaladh +STR_INTRO_TOOLTIP_PLAY_HEIGHTMAP :{BLACK}Tòisich geama ùr le mapa-àirde mar chruth-tìre +STR_INTRO_TOOLTIP_PLAY_SCENARIO :{BLACK}Tòisich geama ùr le cnàmh-sgeul gnàthaichte +STR_INTRO_TOOLTIP_SCENARIO_EDITOR :{BLACK}Cruthaich saoghal a' gheama/cnàmh-sgeul gnàthaichte +STR_INTRO_TOOLTIP_MULTIPLAYER :{BLACK}Tòisich geama ioma-chluicheadair + +STR_INTRO_TOOLTIP_TEMPERATE :{BLACK}Tagh an stoidhle crutha-tìre “measarra" +STR_INTRO_TOOLTIP_SUB_ARCTIC_LANDSCAPE :{BLACK}Tagh an stoidhle crutha-tìre “fo-artach" +STR_INTRO_TOOLTIP_SUB_TROPICAL_LANDSCAPE :{BLACK}Tagh an stoidhle crutha-tìre “fo-thropaigeach" +STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Tagh an stoidhle crutha-tìre “tìr nan dèideag" + +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_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 +STR_INTRO_TOOLTIP_QUIT :{BLACK}Fàg “OpenTTD" + +STR_INTRO_TRANSLATION :{BLACK}Tha {NUM} {P sreang shreang sreangan sreang} a dhìth air an eadar-theangachadh seo. Nach toir thu cuideachadh dhuinn gus piseach a thort air OpenTTD ’s tu a' clàradh mar eadar-theangaiche? Thoir sùil air readme.txt airson fiosrachaidh. + +# Quit window +STR_QUIT_CAPTION :{WHITE}Fàg an-seo +STR_QUIT_ARE_YOU_SURE_YOU_WANT_TO_EXIT_OPENTTD :{YELLOW}A bheil thu cinnteach gu bheil thu airson OpenTTD fhàgail is tilleadh dha {STRING}? +STR_QUIT_YES :{BLACK}Tha +STR_QUIT_NO :{BLACK}Chan eil + +# 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}Fàg an geama +STR_ABANDON_GAME_QUERY :{YELLOW}A bheil thu cinnteach gu bheil thu airson an geama seo fhàgail? +STR_ABANDON_SCENARIO_QUERY :{YELLOW}A bheil thu cinnteach gu bheil thu airson an cnàmh-sgeul seo fhàgail? + +# Cheat window +STR_CHEATS :{WHITE}Cealgaireachd +STR_CHEATS_TOOLTIP :{BLACK}Is ciall dha bhogsaichean-cromaige gun deach a' chealgaireachd seo a chleachdadh roimhe +STR_CHEATS_WARNING :{BLACK}Rabhadh! Tha thu gu bhith a' mealladh na co-fharpaisichean agad. Thoir an aire gun cumar cuimhne air an tàmailt seo gu bràth tuilleadh +STR_CHEAT_MONEY :{LTBLUE}Meudaich an t-airgead le {CURRENCY_LONG} +STR_CHEAT_CHANGE_COMPANY :{LTBLUE}A' cluich mar a' chompanaidh: {ORANGE}{COMMA} +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_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 +STR_CHEAT_SWITCH_CLIMATE_TOYLAND_LANDSCAPE :Cruth-tìre nan dèideag +STR_CHEAT_CHANGE_DATE :{LTBLUE}Atharraich an ceann-latha: {ORANGE}{DATE_SHORT} +STR_CHEAT_CHANGE_DATE_QUERY_CAPT :{WHITE}Atharraich am bliadhna an-dràsta +STR_CHEAT_SETUP_PROD :{LTBLUE}Cuir an comas atharrachadh air luachan saothrachaidh: {ORANGE}{STRING} + +# Livery window +STR_LIVERY_CAPTION :{WHITE}Sgeama nan dath ùr + +STR_LIVERY_GENERAL_TOOLTIP :{BLACK}Seall sgeamannan nan dath coitcheann +STR_LIVERY_TRAIN_TOOLTIP :{BLACK}Seall sgeamannan nan dath airson trèanaichean +STR_LIVERY_ROAD_VEHICLE_TOOLTIP :{BLACK}Seall sgeamannan nan dath airson carbadan-rathaid +STR_LIVERY_SHIP_TOOLTIP :{BLACK}Seall sgeamannan nan dath airson longan +STR_LIVERY_AIRCRAFT_TOOLTIP :{BLACK}Seall sgeamannan nan dath airson carbadan-adhair +STR_LIVERY_PRIMARY_TOOLTIP :{BLACK}Tagh am prìomh dhath airson an sgeama a thagh thu. Suidhichidh Ctrl+Briogadh an dath seo airson na h-uile sgeama +STR_LIVERY_SECONDARY_TOOLTIP :{BLACK}Tagh an dàrna dath airson an sgeama a thagh thu. Suidhichidh Ctrl+Briogadh an dath seo airson na h-uile sgeama +STR_LIVERY_PANEL_TOOLTIP :{BLACK}Tagh sgeama nan dath airson atharrachadh, no iomadh sgeama le Ctrl+Briogadh. Briog air a' bhogsa gus cleachdadh an sgeama a thogladh + +STR_LIVERY_DEFAULT :Dathan àbhaisteach +STR_LIVERY_STEAM :Einnsean-smùide +STR_LIVERY_DIESEL :Einnsean Diesel +STR_LIVERY_ELECTRIC :Einnsean-dealain +STR_LIVERY_MONORAIL :Einnsean aona-rèile +STR_LIVERY_MAGLEV :Einnsean magnaiteach +STR_LIVERY_DMU :Càr-rèile Diesel +STR_LIVERY_EMU :Càr-rèile-dealain +STR_LIVERY_PASSENGER_WAGON_STEAM :Carbad thaistealach (Smùid) +STR_LIVERY_PASSENGER_WAGON_DIESEL :Carbad thaistealach (Diesel) +STR_LIVERY_PASSENGER_WAGON_ELECTRIC :Carbad thaistealach (Dealain) +STR_LIVERY_PASSENGER_WAGON_MONORAIL :Carbad thaistealach (Aona-rèile) +STR_LIVERY_PASSENGER_WAGON_MAGLEV :Carbad thaistealach (Magnaiteach) +STR_LIVERY_FREIGHT_WAGON :Carbad carago +STR_LIVERY_BUS :Bus +STR_LIVERY_TRUCK :Làraidh +STR_LIVERY_PASSENGER_SHIP :Bàta-aiseig +STR_LIVERY_FREIGHT_SHIP :Long carago +STR_LIVERY_HELICOPTER :Heileacoptair +STR_LIVERY_SMALL_PLANE :Plèana beag +STR_LIVERY_LARGE_PLANE :Plèana mòr +STR_LIVERY_PASSENGER_TRAM :Trama thaistealach +STR_LIVERY_FREIGHT_TRAM :Trama carago + +# Face selection window +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 +STR_FACE_FEMALE_BUTTON :{BLACK}Boireannach +STR_FACE_FEMALE_TOOLTIP :{BLACK}Tagh aodann boireannaich +STR_FACE_NEW_FACE_BUTTON :{BLACK}Aodann ùr +STR_FACE_NEW_FACE_TOOLTIP :{BLACK}Gin aodann ùr air thuaiream +STR_FACE_ADVANCED :{BLACK}Adhartach +STR_FACE_ADVANCED_TOOLTIP :{BLACK}Taghadh aodainn adhartach +STR_FACE_SIMPLE :{BLACK}Simplidh +STR_FACE_SIMPLE_TOOLTIP :{BLACK}Taghadh aodainn simplidh +STR_FACE_LOAD :{BLACK}Luchdaich +STR_FACE_LOAD_TOOLTIP :{BLACK}Luchdaich aodann as fhearr leat +STR_FACE_LOAD_DONE :{WHITE}Chaidh an t-aodann as fhearr leat a luchdadh on fhaidhle rèiteachaidh OpenTTD +STR_FACE_FACECODE :{BLACK}Àireamh aodann a' chluicheadair +STR_FACE_FACECODE_TOOLTIP :{BLACK}Seall is/no suidhich àireamh aodainn aig ceann-suidhe na companaidh +STR_FACE_FACECODE_CAPTION :{WHITE}Seall is/no suidhich àireamh aodann a' cheann-suidhe +STR_FACE_FACECODE_SET :{WHITE}Chaidh còd-àireimh aodainn ùr a shuidheachadh +STR_FACE_FACECODE_ERR :{WHITE}Cha do ghabh àireamh aodann a' cheann-suidhe a shuidheachadh - feumaidh e bhith na h-àireamh eadar 0 is 4,294,967,295! +STR_FACE_SAVE :{BLACK}Sàbhail +STR_FACE_SAVE_TOOLTIP :{BLACK}Sàbhail mar an t-aodann as fhearr leat +STR_FACE_SAVE_DONE :{WHITE}Thèid an t-aodann seo a shàbhaladh mar am fear as fhearr leat san fhaidhle rèiteachaidh aig OpenTTD +STR_FACE_EUROPEAN :{BLACK}Eòrpach +STR_FACE_SELECT_EUROPEAN :{BLACK}Tagh aodann Eòrpach +STR_FACE_AFRICAN :{BLACK}Afraganach +STR_FACE_SELECT_AFRICAN :{BLACK}Tagh aodann Afraganach +STR_FACE_YES :Air/Oirre +STR_FACE_NO :— +STR_FACE_MOUSTACHE_EARRING_TOOLTIP :{BLACK}Cuir stais no fàinne-chluaise an comas +STR_FACE_HAIR :Falt: +STR_FACE_HAIR_TOOLTIP :{BLACK}Atharraich am falt +STR_FACE_EYEBROWS :Malaidhean: +STR_FACE_EYEBROWS_TOOLTIP :{BLACK}Atharraich na malaidhean +STR_FACE_EYECOLOUR :Dath sùla: +STR_FACE_EYECOLOUR_TOOLTIP :{BLACK}Atharraich dath nan sùilean +STR_FACE_GLASSES :Speuclairean: +STR_FACE_GLASSES_TOOLTIP :{BLACK}Cuir speuclairean an comas +STR_FACE_GLASSES_TOOLTIP_2 :{BLACK}Atharraich na speuclairean +STR_FACE_NOSE :Sròn: +STR_FACE_NOSE_TOOLTIP :{BLACK}Atharraich an t-sròn +STR_FACE_LIPS :Bilean: +STR_FACE_MOUSTACHE :Stais: +STR_FACE_LIPS_MOUSTACHE_TOOLTIP :{BLACK}Atharraich na bilean no an stais +STR_FACE_CHIN :Smigead: +STR_FACE_CHIN_TOOLTIP :{BLACK}Atharraich an smigead +STR_FACE_JACKET :Seacaid: +STR_FACE_JACKET_TOOLTIP :{BLACK}atharraich an t-seacaid +STR_FACE_COLLAR :Coilear: +STR_FACE_COLLAR_TOOLTIP :{BLACK}Atharraich an coilear +STR_FACE_TIE :Tàidh: +STR_FACE_EARRING :Fàinne-chluaise: +STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}Atharraich an tàidh no an fhàinne-chluaise + +# Network server list +STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}Ioma-chluicheadair +STR_NETWORK_SERVER_LIST_ADVERTISED :{BLACK}Sanasaichte +STR_NETWORK_SERVER_LIST_ADVERTISED_TOOLTIP :{BLACK}Dèan taghadh eadar geama sanasaichte (eadar-lìon) no gun sanasachadh (lìonra ionadail, LAN) +STR_NETWORK_SERVER_LIST_ADVERTISED_NO :Gun sanasachadh +STR_NETWORK_SERVER_LIST_ADVERTISED_YES :Sanasaichte +STR_NETWORK_SERVER_LIST_PLAYER_NAME :{BLACK}Ainm cluicheadair: +STR_NETWORK_SERVER_LIST_ENTER_NAME_TOOLTIP :{BLACK}Seo an t-ainm leis an aithnich cluicheadairean eile thu + +STR_NETWORK_SERVER_LIST_GAME_NAME :{BLACK}Ainm +STR_NETWORK_SERVER_LIST_GAME_NAME_TOOLTIP :{BLACK}Ainm a' gheama +STR_NETWORK_SERVER_LIST_GENERAL_ONLINE :{BLACK}{COMMA}/{COMMA} - {COMMA}/{COMMA} +STR_NETWORK_SERVER_LIST_CLIENTS_CAPTION :{BLACK}Cliantan +STR_NETWORK_SERVER_LIST_CLIENTS_CAPTION_TOOLTIP :{BLACK}Cliantan air loidhne / cliantan air a char as motha{}Companaidhean air loidhne / companaidhean air a char as motha +STR_NETWORK_SERVER_LIST_MAP_SIZE_SHORT :{BLACK}{COMMA}x{COMMA} +STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION :{BLACK}Meud a' mhapa +STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION_TOOLTIP :{BLACK}Meud aig mapa a' gheama{}Briog gus seòrsachadh a-rèir raoin +STR_NETWORK_SERVER_LIST_DATE_CAPTION :{BLACK}Ceann-latha +STR_NETWORK_SERVER_LIST_DATE_CAPTION_TOOLTIP :{BLACK}Ceann-latha an-dràsta +STR_NETWORK_SERVER_LIST_YEARS_CAPTION :{BLACK}Bliadhnaichean +STR_NETWORK_SERVER_LIST_YEARS_CAPTION_TOOLTIP :{BLACK}Àireamh nam bliadhnaichean{}a bhios an geama a' ruith +STR_NETWORK_SERVER_LIST_INFO_ICONS_TOOLTIP :{BLACK}Cànan, tionndadh an fhrithealaiche, agus msaa. + +STR_NETWORK_SERVER_LIST_CLICK_GAME_TO_SELECT :{BLACK}Briog air geama air an liosta gus a thaghadh +STR_NETWORK_SERVER_LIST_LAST_JOINED_SERVER :{BLACK}Am frithealaiche sa ghabh thu an turas mu dheireadh: +STR_NETWORK_SERVER_LIST_CLICK_TO_SELECT_LAST :{BLACK}Briog gus am frithealaiche a thaghadh air an do chluich thu an turas mu dheireadh + +STR_NETWORK_SERVER_LIST_GAME_INFO :{SILVER}FIOSRACHADH A' GHEAMA +STR_NETWORK_SERVER_LIST_CLIENTS :{SILVER}Cliantan: {WHITE}{COMMA} / {COMMA} - {COMMA} / {COMMA} +STR_NETWORK_SERVER_LIST_LANGUAGE :{SILVER}Cànan: {WHITE}{STRING} +STR_NETWORK_SERVER_LIST_LANDSCAPE :{SILVER}Cruth-tìre: {WHITE}{STRING} +STR_NETWORK_SERVER_LIST_MAP_SIZE :{SILVER}Meud a' mhapa: {WHITE}{COMMA}x{COMMA} +STR_NETWORK_SERVER_LIST_SERVER_VERSION :{SILVER}Tionndadh an fhrithealaiche: {WHITE}{STRING} +STR_NETWORK_SERVER_LIST_SERVER_ADDRESS :{SILVER}Seòladh an fhrithealaiche: {WHITE}{STRING} +STR_NETWORK_SERVER_LIST_START_DATE :{SILVER}Ceann-latha tòiseachaidh: {WHITE}{DATE_SHORT} +STR_NETWORK_SERVER_LIST_CURRENT_DATE :{SILVER}Ceann-latha an-dràsta: {WHITE}{DATE_SHORT} +STR_NETWORK_SERVER_LIST_PASSWORD :{SILVER}Ga dhìon le facal-faire! +STR_NETWORK_SERVER_LIST_SERVER_OFFLINE :{SILVER}FRITHEALAICHE FAR LOIDHNE +STR_NETWORK_SERVER_LIST_SERVER_FULL :{SILVER}FRITHEALAICHE LÀN +STR_NETWORK_SERVER_LIST_VERSION_MISMATCH :{SILVER}TIONNDAIDHEAN NACH EIL CO-IONNAN +STR_NETWORK_SERVER_LIST_GRF_MISMATCH :{SILVER}NEWGRF NACH EIL CO-IONNAN + +STR_NETWORK_SERVER_LIST_JOIN_GAME :{BLACK}Gabh sa gheama +STR_NETWORK_SERVER_LIST_REFRESH :{BLACK}Ath-nuadhaich am frithealaiche +STR_NETWORK_SERVER_LIST_REFRESH_TOOLTIP :{BLACK}Ath-nuadhaich fiosrachadh an fhrithealaiche + +STR_NETWORK_SERVER_LIST_FIND_SERVER :{BLACK}Lorg frithealaiche +STR_NETWORK_SERVER_LIST_FIND_SERVER_TOOLTIP :{BLACK}Lorg san lìonraidh airson frithealaiche +STR_NETWORK_SERVER_LIST_ADD_SERVER :{BLACK}Cuir frithealaiche ris +STR_NETWORK_SERVER_LIST_ADD_SERVER_TOOLTIP :{BLACK}Cuiridh seo frithealaiche ris an liosta gus an tèid sùil a thoirt air airson geamannan nan ruith +STR_NETWORK_SERVER_LIST_START_SERVER :{BLACK}Tòisich frithealaiche +STR_NETWORK_SERVER_LIST_START_SERVER_TOOLTIP :{BLACK}Tòisich frithealaiche agad fhèin + +STR_NETWORK_SERVER_LIST_PLAYER_NAME_OSKTITLE :{BLACK}Cuir d' ainm a-steach +STR_NETWORK_SERVER_LIST_ENTER_IP :{BLACK}Cuir seòladh an òstair a-steach + +# Start new multiplayer server +STR_NETWORK_START_SERVER_CAPTION :{WHITE}Tòisich geama ioma-chluicheadair ùr + +STR_NETWORK_START_SERVER_NEW_GAME_NAME :{BLACK}Ainm a' gheama: +STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP :{BLACK}Thèid ainm a' gheama a shealltainn dha chàch ann an clàr-taice nan geamannan ioma-chluicheadair +STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}Suidhich facal-faire +STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Dìon an geama agad le facal-faire ach nach eil e ri fhaighinn gu poblach + +STR_NETWORK_START_SERVER_UNADVERTISED :Chan eil +STR_NETWORK_START_SERVER_ADVERTISED :Tha +STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} {P chliant chliant cliantan cliant} +STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Cliantan air a char as motha: +STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}Tagh an àireamh as motha dhe chliantan. Cha leig thu leas a h-uile slot a lìonadh +STR_NETWORK_START_SERVER_COMPANIES_SELECT :{BLACK}{NUM} {P chompanaidh chompanaidh companaidhean companaidh} +STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}Companaidhean air a char as motha: +STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES_TOOLTIP :{BLACK}Cuingich am frithealaiche gu àireamh shònraichte dhe chompanaidhean +STR_NETWORK_START_SERVER_SPECTATORS_SELECT :{BLACK}{NUM} {P amharcaiche amharcaiche amharcaichean amharcaiche} +STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK}Amharcaichean air a char as motha: +STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS_TOOLTIP :{BLACK}Cuingich co mheud duine a dh'fhaodas sealltainn air geamannan air an fhrithealaiche +STR_NETWORK_START_SERVER_LANGUAGE_SPOKEN :{BLACK}Cànan a tha ga bhruidhinn: +STR_NETWORK_START_SERVER_LANGUAGE_TOOLTIP :{BLACK}Bidh fios aig cluicheadairean eile dè an cànan a tha ga bruidhinn air an fhrithealaiche + +STR_NETWORK_START_SERVER_NEW_GAME_NAME_OSKTITLE :{BLACK}Cuir a-steach ainm airson a' gheama lìonraidh + +# Network game languages +############ Leave those lines in this order!! +STR_NETWORK_LANG_ANY :Cànan sam bith +STR_NETWORK_LANG_ENGLISH :Beurla +STR_NETWORK_LANG_GERMAN :Gearmailtis +STR_NETWORK_LANG_FRENCH :Fraingis +STR_NETWORK_LANG_BRAZILIAN :Portagailis Bhraisileach +STR_NETWORK_LANG_BULGARIAN :Bulgarais +STR_NETWORK_LANG_CHINESE :Sìnis +STR_NETWORK_LANG_CZECH :Seacais +STR_NETWORK_LANG_DANISH :Danmhairgis +STR_NETWORK_LANG_DUTCH :Duitsis +STR_NETWORK_LANG_ESPERANTO :Esperanto +STR_NETWORK_LANG_FINNISH :Fionnlannais +STR_NETWORK_LANG_HUNGARIAN :Ungairis +STR_NETWORK_LANG_ICELANDIC :Tìlis +STR_NETWORK_LANG_ITALIAN :Eadailtis +STR_NETWORK_LANG_JAPANESE :Seapanais +STR_NETWORK_LANG_KOREAN :Coirèanais +STR_NETWORK_LANG_LITHUANIAN :Liotuainis +STR_NETWORK_LANG_NORWEGIAN :Nirribhis +STR_NETWORK_LANG_POLISH :Pòlainnis +STR_NETWORK_LANG_PORTUGUESE :Portagailis +STR_NETWORK_LANG_ROMANIAN :Romàinis +STR_NETWORK_LANG_RUSSIAN :Ruisis +STR_NETWORK_LANG_SLOVAK :Slòbhacais +STR_NETWORK_LANG_SLOVENIAN :Slòbhainis +STR_NETWORK_LANG_SPANISH :Spàinntis +STR_NETWORK_LANG_SWEDISH :Suainis +STR_NETWORK_LANG_TURKISH :Turcais +STR_NETWORK_LANG_UKRAINIAN :Ucràinis +STR_NETWORK_LANG_AFRIKAANS :Afraganais +STR_NETWORK_LANG_CROATIAN :Cròthaisis +STR_NETWORK_LANG_CATALAN :Catalanais +STR_NETWORK_LANG_ESTONIAN :Eastoinis +STR_NETWORK_LANG_GALICIAN :Gailìsis +STR_NETWORK_LANG_GREEK :Greugais +STR_NETWORK_LANG_LATVIAN :Laitbheis +############ End of leave-in-this-order + +# Network game lobby +STR_NETWORK_GAME_LOBBY_CAPTION :{WHITE}Lobaidh nan geamannan ioma-chluicheadair + +STR_NETWORK_GAME_LOBBY_PREPARE_TO_JOIN :{BLACK}Ag ullachadh gus gabhail ann: {ORANGE}{STRING} +STR_NETWORK_GAME_LOBBY_COMPANY_LIST_TOOLTIP :{BLACK}Liosta dhen a h-uile companaidh a tha sa gheama an-dràsta. ’S urrainn dhut gabhail ann an tè no tè ùr a stèidheachadh ma tha slot companaidh saor ri làimh + +STR_NETWORK_GAME_LOBBY_COMPANY_INFO :{SILVER}FIOSRACHADH A' CHOMPANAIDH +STR_NETWORK_GAME_LOBBY_COMPANY_NAME :{SILVER}Ainm na companaidh: {WHITE}{STRING} +STR_NETWORK_GAME_LOBBY_INAUGURATION_YEAR :{SILVER}Stèidheachadh: {WHITE}{NUM} +STR_NETWORK_GAME_LOBBY_VALUE :{SILVER}Luach a' chompanaidh: {WHITE}{CURRENCY_LONG} +STR_NETWORK_GAME_LOBBY_CURRENT_BALANCE :{SILVER}Balans an-dràsta: {WHITE}{CURRENCY_LONG} +STR_NETWORK_GAME_LOBBY_LAST_YEARS_INCOME :{SILVER}Teachd a-steach an-uiridh: {WHITE}{CURRENCY_LONG} +STR_NETWORK_GAME_LOBBY_PERFORMANCE :{SILVER}Dèanadas: {WHITE}{NUM} + +STR_NETWORK_GAME_LOBBY_VEHICLES :{SILVER}Carbadan: {WHITE}{NUM} {TRAIN}, {NUM} {LORRY}, {NUM} {BUS}, {NUM} {SHIP}, {NUM} {PLANE} +STR_NETWORK_GAME_LOBBY_STATIONS :{SILVER}Stèiseanan: {WHITE}{NUM} {TRAIN}, {NUM} {LORRY}, {NUM} {BUS}, {NUM} {SHIP}, {NUM} {PLANE} +STR_NETWORK_GAME_LOBBY_PLAYERS :{SILVER}Cluicheadairean: {WHITE}{STRING} + +STR_NETWORK_GAME_LOBBY_NEW_COMPANY :{BLACK}Companaidh ùr +STR_NETWORK_GAME_LOBBY_NEW_COMPANY_TOOLTIP :{BLACK}Cruthaich companaidh ùr +STR_NETWORK_GAME_LOBBY_SPECTATE_GAME :{BLACK}Coimhead air geama +STR_NETWORK_GAME_LOBBY_SPECTATE_GAME_TOOLTIP :{BLACK}Coimhead air a' gheama mar amharcaiche +STR_NETWORK_GAME_LOBBY_JOIN_COMPANY :{BLACK}Gabh sa chompanaidh +STR_NETWORK_GAME_LOBBY_JOIN_COMPANY_TOOLTIP :{BLACK}Cuidich le stiùireadh na companaidh seo + +# Network connecting window +STR_NETWORK_CONNECTING_CAPTION :{WHITE}A' ceangal ... + +############ Leave those lines in this order!! +STR_NETWORK_CONNECTING_1 :{BLACK}(1/6) A' cheangal ... +STR_NETWORK_CONNECTING_2 :{BLACK}(2/6) A' dearbhadh ... +STR_NETWORK_CONNECTING_3 :{BLACK}(3/6) A' feitheamh ... +STR_NETWORK_CONNECTING_4 :{BLACK}(4/6) A' luchdadh mapa a-nuas ... +STR_NETWORK_CONNECTING_5 :{BLACK}(5/6) A' giullachd dàta ... +STR_NETWORK_CONNECTING_6 :{BLACK}(6/6) A' clàradh ... + +STR_NETWORK_CONNECTING_SPECIAL_1 :{BLACK}A' faighinn fiosrachadh a' gheama ... +STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}A' faighinn fiosrachadh na companaidh ... +############ End of leave-in-this-order +STR_NETWORK_CONNECTING_WAITING :{BLACK}{NUM} {P chliant chliant cliantan cliant} air do bheulaibh +STR_NETWORK_CONNECTING_DOWNLOADING_1 :{BLACK}{BYTES} air a{P 0 "" "" n ""} luchdadh a-nuas gu ruige seo +STR_NETWORK_CONNECTING_DOWNLOADING_2 :{BLACK}{BYTES} / {BYTES} air a{P 0 "" "" n ""} luchdadh a-nuas gu ruige seo + +STR_NETWORK_CONNECTION_DISCONNECT :{BLACK}Dì-cheangail + +STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Tha am frithealaiche dìonta. Cuir a-steach facal-faire +STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Tha a' chompanaidh dìonta. Cuir a-steach facal-faire + +# Network company list added strings +STR_NETWORK_COMPANY_LIST_CLIENT_LIST :{WHITE}Liosta nan cliant +STR_NETWORK_COMPANY_LIST_SPECTATE :{WHITE}Coimhead air +STR_NETWORK_COMPANY_LIST_NEW_COMPANY :{WHITE}Companaidh ùr + +# Network client list +STR_NETWORK_CLIENTLIST_KICK :Thoir a bhròg dha +STR_NETWORK_CLIENTLIST_BAN :Toirmisg +STR_NETWORK_CLIENTLIST_GIVE_MONEY :Thoir airgead dha +STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :Bruidhinn ris a h-uile duine +STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :Bruidhinn ris a' chompanaidh +STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :Teachdaireachd phrìobhaideach + +STR_NETWORK_SERVER :Frithealaiche +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 +STR_COMPANY_PASSWORD_OK :{BLACK}Thoir am facal-faire ùr dhan chompanaidh +STR_COMPANY_PASSWORD_CAPTION :{WHITE}Facal-faire na companaidh +STR_COMPANY_PASSWORD_MAKE_DEFAULT :{BLACK}Facal-faire bunaiteach na companaidh +STR_COMPANY_PASSWORD_MAKE_DEFAULT_TOOLTIP :{BLACK}Cleachd am facal-faire companaidh seo a ghnàth airson companaidhean ùra + +# Network company info join/password +STR_COMPANY_VIEW_JOIN :{BLACK}Gabh ann +STR_COMPANY_VIEW_JOIN_TOOLTIP :{BLACK}Gabh ann is cluich mar a' chompanaidh seo +STR_COMPANY_VIEW_PASSWORD :{BLACK}Facal-faire +STR_COMPANY_VIEW_PASSWORD_TOOLTIP :{BLACK}Dìon do chompanaidh le facal-faire ach nach gabh cluicheadairean eile innte gun chead +STR_COMPANY_VIEW_SET_PASSWORD :{BLACK}Suidhich facal-faire na companaidh + +# Network chat +STR_NETWORK_CHAT_SEND :{BLACK}Cuir +STR_NETWORK_CHAT_COMPANY_CAPTION :[Sgioba] : +STR_NETWORK_CHAT_CLIENT_CAPTION :[Prìobhaideach] {STRING}: +STR_NETWORK_CHAT_ALL_CAPTION :[Na h-uile] : + +STR_NETWORK_CHAT_COMPANY :[Sgioba] {STRING}: {WHITE}{STRING} +STR_NETWORK_CHAT_TO_COMPANY :[Sgioba] gu {STRING}: {WHITE}{STRING} +STR_NETWORK_CHAT_CLIENT :[Prìobhaideach] {STRING}: {WHITE}{STRING} +STR_NETWORK_CHAT_TO_CLIENT :[Prìobhaideach] gu {STRING}: {WHITE}{STRING} +STR_NETWORK_CHAT_ALL :[Na h-uile] {STRING}: {WHITE}{STRING} +STR_NETWORK_CHAT_OSKTITLE :{BLACK}Cuir teacsa a-steach airson cabadaich-lìonraidh + +# Network messages +STR_NETWORK_ERROR_NOTAVAILABLE :{WHITE}Cha deach uidheam lìonraidh a lorg no chaidh am prògram a thrusadh às aonais ENABLE_NETWORK +STR_NETWORK_ERROR_NOSERVER :{WHITE}Cha deach geama lìonraidh a lorg +STR_NETWORK_ERROR_NOCONNECTION :{WHITE}Cha do dh'fhreagair am frithealaiche an t-iarrtas +STR_NETWORK_ERROR_NEWGRF_MISMATCH :{WHITE}Cha b' urrainn dhuinn ceangal ris oir chan eil an NewGRF co-ionnan +STR_NETWORK_ERROR_DESYNC :{WHITE}Dh'fhàillig le sioncronachadh a' gheama lìonraidh +STR_NETWORK_ERROR_LOSTCONNECTION :{WHITE}Chaidh ceangal dhan gheama lìonraidh air chall +STR_NETWORK_ERROR_SAVEGAMEERROR :{WHITE}Cha b' urrainn dhuinn an geama air shabhaladh a luchdadh +STR_NETWORK_ERROR_SERVER_START :{WHITE}Cha b' urrainn dhuinn am frithealaiche a thòiseachadh +STR_NETWORK_ERROR_CLIENT_START :{WHITE}Cha b' urrainn dhuinn ceangal a dhèanamh +STR_NETWORK_ERROR_TIMEOUT :{WHITE}Dh'fhalbh an ùine air a' cheangal {NUM} +STR_NETWORK_ERROR_SERVER_ERROR :{WHITE}Mhothaich sinn mearachd leis a' phròtacal is chaidh an ceangal a dhùnadh +STR_NETWORK_ERROR_WRONG_REVISION :{WHITE}Chan eil an tionngadh aig a' chliant seo a' freagairt ri tionndadh an fhrithealaiche +STR_NETWORK_ERROR_WRONG_PASSWORD :{WHITE}Facal-faire cearr +STR_NETWORK_ERROR_SERVER_FULL :{WHITE}Tha am frithealaiche làn +STR_NETWORK_ERROR_SERVER_BANNED :{WHITE}Chaidh do thoirmeasg on fhrithealaiche seo +STR_NETWORK_ERROR_KICKED :{WHITE}Fhuair thu a' bhròg on gheama +STR_NETWORK_ERROR_CHEATER :{WHITE}Chan eil cealgaireachd ceadaichte air an fhrithealaiche seo +STR_NETWORK_ERROR_TOO_MANY_COMMANDS :{WHITE}Tha thu air cus àitheantan a chur dhan fhrithealaiche +STR_NETWORK_ERROR_TIMEOUT_PASSWORD :{WHITE}Bha thu ro fhada a' cur am facal-faire a-steach +STR_NETWORK_ERROR_TIMEOUT_COMPUTER :{WHITE}Tha an coimpiutair agad ro shlaodach gus cumail suas ris an fhrithealaiche +STR_NETWORK_ERROR_TIMEOUT_MAP :{WHITE}Bha an coimpiutair agad ro fhada a' luchdadh a-nuas a' mhapa +STR_NETWORK_ERROR_TIMEOUT_JOIN :{WHITE}Bha an coimpiutair agad ro fhada a' gabhail san fhrithealaiche + +############ Leave those lines in this order!! +STR_NETWORK_ERROR_CLIENT_GENERAL :mearachd choitcheann +STR_NETWORK_ERROR_CLIENT_DESYNC :mearachd sioncronachaidh +STR_NETWORK_ERROR_CLIENT_SAVEGAME :cha b' urrainn dhuinn am mapa a luchdadh +STR_NETWORK_ERROR_CLIENT_CONNECTION_LOST :chaidh ceangal air chall +STR_NETWORK_ERROR_CLIENT_PROTOCOL_ERROR :mearachd pròtacail +STR_NETWORK_ERROR_CLIENT_NEWGRF_MISMATCH :NewGRF neo-ionnann +STR_NETWORK_ERROR_CLIENT_NOT_AUTHORIZED :gun chead +STR_NETWORK_ERROR_CLIENT_NOT_EXPECTED :fhuaras pacaid mì-dhligheach no air nach robhar an dùil +STR_NETWORK_ERROR_CLIENT_WRONG_REVISION :tionndadh cearr +STR_NETWORK_ERROR_CLIENT_NAME_IN_USE :tha an t-ainm seo ga chleachdadh mu thràth +STR_NETWORK_ERROR_CLIENT_WRONG_PASSWORD :facal-faire cearr +STR_NETWORK_ERROR_CLIENT_COMPANY_MISMATCH :companaidh chearr ann an DoCommand +STR_NETWORK_ERROR_CLIENT_KICKED :thug am frithealaiche a' bhròg dhut +STR_NETWORK_ERROR_CLIENT_CHEATER :bhathar a' feuchainn ri cealgaireachd +STR_NETWORK_ERROR_CLIENT_SERVER_FULL :frithealaiche làn +STR_NETWORK_ERROR_CLIENT_TOO_MANY_COMMANDS :bhathar a' cur cus àitheantan +STR_NETWORK_ERROR_CLIENT_TIMEOUT_PASSWORD :cha deach faclan-faire fhaighinn ri àm +STR_NETWORK_ERROR_CLIENT_TIMEOUT_COMPUTER :dh'fhalbh an ùine air +STR_NETWORK_ERROR_CLIENT_TIMEOUT_MAP :bhathar ro fhada a' luchdadh a-nuas a' mhapa +STR_NETWORK_ERROR_CLIENT_TIMEOUT_JOIN :bhathar ro fhada a' giullachd a' mhapa +############ End of leave-in-this-order + +STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION_CAPTION :{WHITE}Dh'fhaoidte gun deach ceangal air chall +STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION :{WHITE}Cha tàinig dàta sam bith on fhrithealaiche fad {NUM} {P diog dhiog diogan diog} + +# Network related errors +STR_NETWORK_SERVER_MESSAGE :*** {1:STRING} +############ Leave those lines in this order!! +STR_NETWORK_SERVER_MESSAGE_GAME_PAUSED :Geama na stad ({STRING}) +STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_1 :Geama fhathast na stad ({STRING}) +STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_2 :Geama fhathast na stad ({STRING}, {STRING}) +STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_3 :Geama fhathast na stad ({STRING}, {STRING}, {STRING}) +STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_4 :Geama fhathast na stad ({STRING}, {STRING}, {STRING}, {STRING}) +STR_NETWORK_SERVER_MESSAGE_GAME_UNPAUSED :Geama a' leantainn air adhart ({STRING}) +STR_NETWORK_SERVER_MESSAGE_GAME_REASON_NOT_ENOUGH_PLAYERS :àireamh dhe chluicheadairean +STR_NETWORK_SERVER_MESSAGE_GAME_REASON_CONNECTING_CLIENTS :a' ceangal cliantan +STR_NETWORK_SERVER_MESSAGE_GAME_REASON_MANUAL :a làimh +STR_NETWORK_SERVER_MESSAGE_GAME_REASON_GAME_SCRIPT :sgriobt geama +############ End of leave-in-this-order +STR_NETWORK_MESSAGE_CLIENT_LEAVING :a' fàgail +STR_NETWORK_MESSAGE_CLIENT_JOINED :*** ghabh {STRING} sa gheama +STR_NETWORK_MESSAGE_CLIENT_JOINED_ID :*** Ghabh {STRING} sa gheama (Cliant {2:NUM}) +STR_NETWORK_MESSAGE_CLIENT_COMPANY_JOIN :*** Ghabh {STRING} ann an companaidh {2:NUM} +STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** Ghabh {STRING} ann mar amharcaiche +STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** Stèidhich {STRING} companaidh ùr ({2:NUM}) +STR_NETWORK_MESSAGE_CLIENT_LEFT :*** Dh'fhalbh {STRING} an geama ({2:STRING}) +STR_NETWORK_MESSAGE_NAME_CHANGE :*** Dh'atharraich {0:STRING} (a h-)ainm gu {1:STRING} +STR_NETWORK_MESSAGE_GIVE_MONEY :*** Thug {STRING} {2:CURRENCY_LONG} dhan chompanaidh agad +STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** Thug thu {2:CURRENCY_LONG} dha {1:STRING} +STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}Dhùin am frithealaiche an seisean +STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}Tha am frithealaiche ag ath-thòiseachadh...{}Fuirich greis... + +# Content downloading window +STR_CONTENT_TITLE :{WHITE}Susbaint ri luchdadh a-nuas +STR_CONTENT_TYPE_CAPTION :{BLACK}Seòrsa +STR_CONTENT_TYPE_CAPTION_TOOLTIP :{BLACK}Seòrsa na susbaint +STR_CONTENT_NAME_CAPTION :{BLACK}Ainm +STR_CONTENT_NAME_CAPTION_TOOLTIP :{BLACK}Ainm na susbainte +STR_CONTENT_MATRIX_TOOLTIP :{BLACK}Briog air nì gus fiosrachadh mu dheidhinn a shealltainn{}Thoir cromag sa bhogsa gus a taghadh airson luchdadh a-nuas +STR_CONTENT_SELECT_ALL_CAPTION :{BLACK}Tagh na h-uile +STR_CONTENT_SELECT_ALL_CAPTION_TOOLTIP :{BLACK}Tagh an t-susbaint uile gus a luchdadh a-nuas +STR_CONTENT_SELECT_UPDATES_CAPTION :{BLACK}Tagh ùrachaidhean +STR_CONTENT_SELECT_UPDATES_CAPTION_TOOLTIP :{BLACK}Tagh a h-uile susbaint a tha na ùrachadh airson susbaint a tha ann gus a luchdadh a-nuas +STR_CONTENT_UNSELECT_ALL_CAPTION :{BLACK}Neo-thagh na h-uile +STR_CONTENT_UNSELECT_ALL_CAPTION_TOOLTIP :{BLACK}Comharraich nach tèid susbaint sam bith a luchdadh a-nuas +STR_CONTENT_SEARCH_EXTERNAL :{BLACK}Lorg air làraichean-lìn taobh a-muigh +STR_CONTENT_SEARCH_EXTERNAL_TOOLTIP :{BLACK}Lorg susbaint nach eil ri làimh air seirbheise susbaint OpenTTD is a bheil ri làimh air làraichean lìn nach eil ceangailte ri OpenTTD +STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER_CAPTION :{WHITE}Tha thu a' fàgail OpenTTD! +STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER :{WHITE}Dh'fhaoidte gum bi na teirmichean ’s na cumhaichean gus susbaint a luchdadh a-nuas bho làraichean-lìn eile eadar-dhealaichte.{}Feumaidh tu sùil a thoirt air na làraichean-lìn a-muigh mu mar a stàlaicheas tu an t-susbaint ann an OpenTTD.{}A bheil thu airson leantainn air adhart? +STR_CONTENT_FILTER_TITLE :{BLACK}Criathrag taga/ainm: +STR_CONTENT_OPEN_URL :{BLACK}Tadhail air an làrach-lìn +STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}Tadhail air làrach-lìn na susbainte seo +STR_CONTENT_DOWNLOAD_CAPTION :{BLACK}Luchdaich a-nuas +STR_CONTENT_DOWNLOAD_CAPTION_TOOLTIP :{BLACK}Tòisich air luchdadh a-nuas na susbainte a thagh thu +STR_CONTENT_TOTAL_DOWNLOAD_SIZE :{SILVER}Meud iomlan an luchdaidh a-nuas: {WHITE}{BYTES} +STR_CONTENT_DETAIL_TITLE :{SILVER}FIOSRACHADH NA SUSBAINTE +STR_CONTENT_DETAIL_SUBTITLE_UNSELECTED :{SILVER}Cha do thagh thu seo gus a luchdadh a-nuas +STR_CONTENT_DETAIL_SUBTITLE_SELECTED :{SILVER}Thagh thu seo gus a luchdadh a-nuas +STR_CONTENT_DETAIL_SUBTITLE_AUTOSELECTED :{SILVER}Chaidh an eisimeileachd seo a thaghadh gus a luchdadh a-nuas +STR_CONTENT_DETAIL_SUBTITLE_ALREADY_HERE :{SILVER}Tha seo agad mu thràth +STR_CONTENT_DETAIL_SUBTITLE_DOES_NOT_EXIST :{SILVER}Tha an t-susbaint seo neo-aithnichte is cha ghabh luchdadh a-nuas ann an OpenTTD +STR_CONTENT_DETAIL_UPDATE :{SILVER}Thèid seo a chur an àite {STRING} a tha ann mu thràth +STR_CONTENT_DETAIL_NAME :{SILVER}Ainm: {WHITE}{STRING} +STR_CONTENT_DETAIL_VERSION :{SILVER}Tionndadh: {WHITE}{STRING} +STR_CONTENT_DETAIL_DESCRIPTION :{SILVER}Tuairisgeul: {WHITE}{STRING} +STR_CONTENT_DETAIL_URL :{SILVER}URL: {WHITE}{STRING} +STR_CONTENT_DETAIL_TYPE :{SILVER}Seòrsa: {WHITE}{STRING} +STR_CONTENT_DETAIL_FILESIZE :{SILVER}Meud an luchdaidh a-nuas: {WHITE}{BYTES} +STR_CONTENT_DETAIL_SELECTED_BECAUSE_OF :{SILVER}Air a thaghadh air sàilleibh: {WHITE}{STRING} +STR_CONTENT_DETAIL_DEPENDENCIES :{SILVER}Eisimeileachdan: {WHITE}{STRING} +STR_CONTENT_DETAIL_TAGS :{SILVER}Tagaichean: {WHITE}{STRING} +STR_CONTENT_NO_ZLIB :{WHITE}Chaidh OpenTTD a thogail às aonais taic dha “zlib"... +STR_CONTENT_NO_ZLIB_SUB :{WHITE}... cha ghabh susbaint sam bith luchdadh a-nuas! + +# Order of these is important! +STR_CONTENT_TYPE_BASE_GRAPHICS :Grafaigeachd bhunasach +STR_CONTENT_TYPE_NEWGRF :NewGRF +STR_CONTENT_TYPE_AI :IF +STR_CONTENT_TYPE_AI_LIBRARY :Tasglann IF +STR_CONTENT_TYPE_SCENARIO :{G=m}Cnàmh-sgeul +STR_CONTENT_TYPE_HEIGHTMAP :{G=m}Mapa-àirde +STR_CONTENT_TYPE_BASE_SOUNDS :Fuaimean bunasach +STR_CONTENT_TYPE_BASE_MUSIC :{G=f}Ceòl bhunasach +STR_CONTENT_TYPE_GAME_SCRIPT :{G=m}Sgriobt geama +STR_CONTENT_TYPE_GS_LIBRARY :{G=m}Tasglann GS + +# Content downloading progress window +STR_CONTENT_DOWNLOAD_TITLE :{WHITE}A' luchdadh a-nuas susbaint... +STR_CONTENT_DOWNLOAD_INITIALISE :{WHITE}Ag iarraidh faidhlichean... +STR_CONTENT_DOWNLOAD_FILE :{WHITE}A' luchdadh a-nuas {STRING} ({NUM} à {NUM}) +STR_CONTENT_DOWNLOAD_COMPLETE :{WHITE}Tha an luchdadh a-nuas coileanta +STR_CONTENT_DOWNLOAD_PROGRESS_SIZE :{WHITE}{0:BYTES} à {1:BYTES} air a{P 0 "" n n n} luchdadh a-nuas ({2:NUM} %) + +# Content downloading error messages +STR_CONTENT_ERROR_COULD_NOT_CONNECT :{WHITE}Cha b' urrainn dhuinn ceangal ri frithealaiche na susbainte... +STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD :{WHITE}Dh'fhàillig leis an luchdadh a-nuas... +STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD_CONNECTION_LOST :{WHITE}... chaidh an ceangal air chall +STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD_FILE_NOT_WRITABLE :{WHITE}... cha ghabh am faidhle sgrìobhadh +STR_CONTENT_ERROR_COULD_NOT_EXTRACT :{WHITE}Cha ghabh am faidhle air a luchdadh a-nuas dì-dhùmhlachadh + +STR_MISSING_GRAPHICS_SET_CAPTION :{WHITE}Grafaigean a dhìth +STR_MISSING_GRAPHICS_SET_MESSAGE :{BLACK}Tha grafaigeachd a dhìth air OpenTTD ach an obraich e ach cha deach gin sam bith a lorg. an toir thu cead dha OpenTTD gus a' ghrafaigeachd seo a luchdadh a-nuas is a stàladh? +STR_MISSING_GRAPHICS_YES_DOWNLOAD :{BLACK}Bheir, luchdaich a' ghrafaigeachd a-nuas +STR_MISSING_GRAPHICS_NO_QUIT :{BLACK}Cha toir, fàg OpenTTD + +# Transparency settings window +STR_TRANSPARENCY_CAPTION :{WHITE}Roghainnean trìd-shoilleireachd +STR_TRANSPARENT_SIGNS_TOOLTIP :{BLACK}Toglaich trìd-shoilleireachd nan sanasan. Ctrl+Briogadh airson glasadh +STR_TRANSPARENT_TREES_TOOLTIP :{BLACK}Toglaich trìd-shoilleireachd nan craobhan. Ctrl+Briogadh airson glasadh +STR_TRANSPARENT_HOUSES_TOOLTIP :{BLACK}Toglaich trìd-shoilleireachd nan taighean. Ctrl+Briogadh airson glasadh +STR_TRANSPARENT_INDUSTRIES_TOOLTIP :{BLACK}Toglaich trìd-shoilleireachd nan gnìomhachasan. Ctrl+Briogadh airson glasadh +STR_TRANSPARENT_BUILDINGS_TOOLTIP :{BLACK}Toglaich trìd-shoilleireachd nan rudan a ghabhas togail a leithid stèiseanan, trèan-lannan is puingean-turais. Ctrl+Briogadh airson glasadh +STR_TRANSPARENT_BRIDGES_TOOLTIP :{BLACK}Toglaich trìd-shoilleireachd nan drochaidean. Ctrl+Briogadh airson glasadh +STR_TRANSPARENT_STRUCTURES_TOOLTIP :{BLACK}Toglaich trìd-shoilleireachd nan structaran a leithid thaighean-solais is tùir chraobh-sgaoilidh. Ctrl+Briogadh airson glasadh +STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}Toglaich trìd-shoilleireachd nan càballan-rèile. Ctrl+Briogadh airson glasadh +STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Toglaich trìd-shoillearachd nan comharraidhean luchdaidh. Ctrl+Briogadh airson glasadh +STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}Falaich nithean an àite an dèanamh trìd-shoilleir + +# Linkgraph legend window +STR_LINKGRAPH_LEGEND_CAPTION :{BLACK}Clàr-mìneachaidh an t-srutha carago +STR_LINKGRAPH_LEGEND_ALL :{BLACK}Na h-uile +STR_LINKGRAPH_LEGEND_NONE :{BLACK}Chan eil gin +STR_LINKGRAPH_LEGEND_SELECT_COMPANIES :{BLACK}Tagh na companaidhean a thèid a shealltainn + +# Linkgraph legend window and linkgraph legend in smallmap +STR_LINKGRAPH_LEGEND_UNUSED :{TINY_FONT}{BLACK}gun chleachdadh +STR_LINKGRAPH_LEGEND_SATURATED :{TINY_FONT}{BLACK}sàsaichte +STR_LINKGRAPH_LEGEND_OVERLOADED :{TINY_FONT}{BLACK}cus dheth + +# Base for station construction window(s) +STR_STATION_BUILD_COVERAGE_AREA_TITLE :{BLACK}Seall raon-còmhdachaidh +STR_STATION_BUILD_COVERAGE_OFF :{BLACK}Air +STR_STATION_BUILD_COVERAGE_ON :{BLACK}Dheth +STR_STATION_BUILD_COVERAGE_AREA_OFF_TOOLTIP :{BLACK}Na seall raon-còmhdachaidh aig làrach nad bheachd +STR_STATION_BUILD_COVERAGE_AREA_ON_TOOLTIP :{BLACK}Seall raon-còmhdachaidh aig làrach nad bheachd +STR_STATION_BUILD_ACCEPTS_CARGO :{BLACK}Gabhar ri: {GOLD}{CARGO_LIST} +STR_STATION_BUILD_SUPPLIES_CARGO :{BLACK}Solairear: {GOLD}{CARGO_LIST} + +# Join station window +STR_JOIN_STATION_CAPTION :{WHITE}Co-aonaich an stèisean +STR_JOIN_STATION_CREATE_SPLITTED_STATION :{YELLOW}Tog stèisean fa leth + +STR_JOIN_WAYPOINT_CAPTION :{WHITE}Co-aonaich a' phuing-thurais +STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Tog puing-thurais fa leth + +# Rail construction toolbar +STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Tog rathad-iarainn +STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :Togail rathaid-iarainn dealain +STR_RAIL_TOOLBAR_MONORAIL_CONSTRUCTION_CAPTION :Tog rathad-iarainn aona-rèile +STR_RAIL_TOOLBAR_MAGLEV_CONSTRUCTION_CAPTION :Tog rathad-iarainn mhagnaiteach + +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Tog rathad-iarainn. Toglaidh Ctrl togail/toirt air falbh airson togail rathad-iarainn. Toglaidh Shift togail/sealladh air tuairmse chosgaisean +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}Tog rathad-iarainn sa mhodh fhèin-thogail. Toglaidh Ctrl togail/toirt air falbh airson togail rathad-iarainn. Toglaidh Shift togail/sealladh air tuairmse chosgaisean +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_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 +STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL :{BLACK}Iompaich/Àrdaich seòrsa na rèile. Toglaidh Shift togail/sealladh air tuairmse chosgaisean + +STR_RAIL_NAME_RAILROAD :Rathad-iarainn +STR_RAIL_NAME_ELRAIL :Rathad-iarainn dealain +STR_RAIL_NAME_MONORAIL :Rathad-iarainn aona-rèile +STR_RAIL_NAME_MAGLEV :Rathad-iarainn magnaiteach + +# Rail depot construction window +STR_BUILD_DEPOT_TRAIN_ORIENTATION_CAPTION :{WHITE}Comhair na trèan-lainn +STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}Tagh comhair an trèana-lainn + +# Rail waypoint construction window +STR_WAYPOINT_CAPTION :{WHITE}Puing-thurais +STR_WAYPOINT_GRAPHICS_TOOLTIP :{BLACK}Tagh seòrsa na puinge-turais + +# Rail station construction window +STR_STATION_BUILD_RAIL_CAPTION :{WHITE}Roghainnean nan stèiseanan-rèile +STR_STATION_BUILD_ORIENTATION :{BLACK}Comhair +STR_STATION_BUILD_RAILROAD_ORIENTATION_TOOLTIP :{BLACK}Tagh comhair an stèisean-rèile +STR_STATION_BUILD_NUMBER_OF_TRACKS :{BLACK}Àireamh dhe shlighean +STR_STATION_BUILD_NUMBER_OF_TRACKS_TOOLTIP :{BLACK}Tagh cò mheud clàr a bhios aig an stèisean +STR_STATION_BUILD_PLATFORM_LENGTH :{BLACK}Faide nan clàr +STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP :{BLACK}Tagh dè cho fad ’s a bhios an stèisean +STR_STATION_BUILD_DRAG_DROP :{BLACK}Slaod is leig às +STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}Tog stèisean le slaodadh is leigeil às + +STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}Tagh seòrsa stèisean gus a shealltainn +STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}Tagh seòrsa an stèisein a tha thu airson togail + +STR_STATION_CLASS_DFLT :Stèisean bunaiteach +STR_STATION_CLASS_WAYP :Puingean-turais + +# Signal window +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 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 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 +STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}Iompachadh chomharran{}Ma thagh thu seo ’s tu a' briogadh air comharra a tha ann, iompaichidh seo an comharra dhan t-seòrsa a thagh thu. Seallaidh Shift+briogadh tuairmse air cosgaisean an iompachaidh dhut +STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_TOOLTIP :{BLACK}Dlùths nan comharran air an cruthachadh le slaodadh +STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_DECREASE_TOOLTIP :{BLACK}Lùghdaich dlùths nan comharran air an cruthachadh le slaodadh +STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_INCREASE_TOOLTIP :{BLACK}Meudaich dlùths nan comharran air an cruthachadh le slaodadh + +# Bridge selection window +STR_SELECT_RAIL_BRIDGE_CAPTION :{WHITE}Tagh drochaid rèile +STR_SELECT_ROAD_BRIDGE_CAPTION :{WHITE}Tagh drochaid rathaid +STR_SELECT_BRIDGE_SELECTION_TOOLTIP :{BLACK}Tagh drochaid - briog air an drochaid a thogras tu gus a togail +STR_SELECT_BRIDGE_INFO :{GOLD}{STRING},{} {VELOCITY} {WHITE}{CURRENCY_LONG} +STR_SELECT_BRIDGE_SCENEDIT_INFO :{GOLD}{STRING},{} {VELOCITY} +STR_BRIDGE_NAME_SUSPENSION_STEEL :Crochaidh, Stàilinn +STR_BRIDGE_NAME_GIRDER_STEEL :Teannadair, Stàilinn +STR_BRIDGE_NAME_CANTILEVER_STEEL :Starr-chrann, Stàillinn +STR_BRIDGE_NAME_SUSPENSION_CONCRETE :Crochaidh, Concraid +STR_BRIDGE_NAME_WOODEN :Fiodha +STR_BRIDGE_NAME_CONCRETE :Concraid +STR_BRIDGE_NAME_TUBULAR_STEEL :Phìobach, Stàilinn +STR_BRIDGE_TUBULAR_SILICON :Phìobach, Sileagan + + +# Road construction toolbar +STR_ROAD_TOOLBAR_ROAD_CONSTRUCTION_CAPTION :{WHITE}Tog rathaidean +STR_ROAD_TOOLBAR_TRAM_CONSTRUCTION_CAPTION :{WHITE}Tog slighean-trama +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_SECTION :{BLACK}Tog pìos dhe rathad. Toglaidh Ctrl togail/toirt air falbh airson togail rathaid. Toglaidh Shift togail/sealladh air tuairmse chosgaisean +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_SECTION :{BLACK}Tog pìos dhe shlighe-trama. Toglaidh Ctrl togail/toirt air falbh airson togail slighe-trama. Toglaidh Shift togail/sealladh air tuairmse chosgaisean +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOROAD :{BLACK}Tog pìos dhe rathad leis a' mhodh fhèin-thogail. Toglaidh Ctrl togail/toirt air falbh airson togail rathaid. Toglaidh Shift togail/sealladh air tuairmse chosgaisean +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOTRAM :{BLACK}Tog pìos dhe slighe-trama sa mhodh fhèin-thogail. Toglaidh Ctrl togail/toirt air falbh airson togail slighe-trama. Toglaidh Shift togail/sealladh air tuairmse chosgaisean +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}Tog garaids (gus carbadan a cheannach is obair-ghlèidhidh a dhèanamh orra). Toglaidh Shift togail/sealladh air tuairmse chosgaisean +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}Tog trama-lann (gus carbadan a cheannach is obair-ghlèidhidh a dhèanamh orra). Toglaidh Shift togail/sealladh air tuairmse chosgaisean +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_BUS_STATION :{BLACK}Tog stèisean bus. Ceanglaidh Ctrl stèiseanan ri chèile. Toglaidh Shift togail/sealladh air tuairmse chosgaisean +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_PASSENGER_TRAM_STATION :{BLACK}Tog stèisean trama thaistealach. Ceanglaidh Ctrl stèiseanan ri chèile. Toglaidh Shift togail/sealladh air tuairmse chosgaisean +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRUCK_LOADING_BAY :{BLACK}Tog ionad-luchdaidh nan làraidh. Ceanglaidh Ctrl stèiseanan ri chèile. Toglaidh Shift togail/sealladh air tuairmse chosgaisean +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_CARGO_TRAM_STATION :{BLACK}Tog stèisean trama carago. Ceanglaidh Ctrl stèiseanan ri chèile. Toglaidh Shift togail/sealladh air tuairmse chosgaisean +STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_ONE_WAY_ROAD :{BLACK}Cuir rathaidean aon-shligheach an/à comas +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_BRIDGE :{BLACK}Tog drochaid rathaid. Toglaidh Shift togail/sealladh air tuairmse chosgaisean +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_BRIDGE :{BLACK}Togh drochaid trama. Toglaidh Shift togail/sealladh air tuairmse chosgaisean +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_TUNNEL :{BLACK}Tog tunail rathaid. Toglaidh Shift togail/sealladh air tuairmse chosgaisean +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_TUNNEL :{BLACK}Tog tunail trama. Toglaidh Shift togail/sealladh air tuairmse chosgaisean +STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_ROAD :{BLACK}Toglaich togail/toirt air falbh airson togail rathaidean +STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS :{BLACK}Toglaich togail/tort air falbh airson slighean trama + +# Road depot construction window +STR_BUILD_DEPOT_ROAD_ORIENTATION_CAPTION :{WHITE}Comhair na garaids +STR_BUILD_DEPOT_ROAD_ORIENTATION_SELECT_TOOLTIP :{BLACK}Tagh comhair na garaids +STR_BUILD_DEPOT_TRAM_ORIENTATION_CAPTION :{WHITE}Comhair an trama-lainn +STR_BUILD_DEPOT_TRAM_ORIENTATION_SELECT_TOOLTIP :{BLACK}Tagh comhair an trama-lainn + +# Road vehicle station construction window +STR_STATION_BUILD_BUS_ORIENTATION :{WHITE}Comhair an stèisein bhus +STR_STATION_BUILD_BUS_ORIENTATION_TOOLTIP :{BLACK}Tagh comhair an stèisein bhus +STR_STATION_BUILD_TRUCK_ORIENTATION :{WHITE}Comhair aig ionad-luchdaidh nan làraidh +STR_STATION_BUILD_TRUCK_ORIENTATION_TOOLTIP :{BLACK}Tagh comhair aig ionad-luchdaidh nan làraidh +STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION :{WHITE}Comhair an stèisean trama thaistealach +STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION_TOOLTIP :{BLACK}Tagh comhair an stèisein airson tramaichean thaistealach +STR_STATION_BUILD_CARGO_TRAM_ORIENTATION :{WHITE}Comhair an stèisein trama carago +STR_STATION_BUILD_CARGO_TRAM_ORIENTATION_TOOLTIP :{BLACK}Tagh comhair an stèisein airson tramaichean carago + +# Waterways toolbar (last two for SE only) +STR_WATERWAYS_TOOLBAR_CAPTION :{WHITE}Tog slighean-uisge +STR_WATERWAYS_TOOLBAR_CAPTION_SE :{WHITE}Slighean-uisge +STR_WATERWAYS_TOOLBAR_BUILD_CANALS_TOOLTIP :{BLACK}Tog canalan. Toglaidh Shift togail/sealladh air tuairmse chosgaisean +STR_WATERWAYS_TOOLBAR_BUILD_LOCKS_TOOLTIP :{BLACK}Tog locan. Toglaidh Shift togail/sealladh air tuairmse chosgaisean +STR_WATERWAYS_TOOLBAR_BUILD_DEPOT_TOOLTIP :{BLACK}Tog cala (gus longan a cheannach is obair-chàraidh a dhèanamh orra). Toglaidh Shift togail/sealladh air tuairmse chosgaisean +STR_WATERWAYS_TOOLBAR_BUILD_DOCK_TOOLTIP :{BLACK}Tog port. Ceanglaidh Ctrl stèiseanan ri chèile. Toglaidh Shift togail/sealladh air tuairmse chosgaisean +STR_WATERWAYS_TOOLBAR_BUOY_TOOLTIP :{BLACK}Cuir fleodrainn ris as urrainn dhut cleachdadh mar phuing-thurais. Toglaidh Shift tuairmse cosgaisean/togail +STR_WATERWAYS_TOOLBAR_BUILD_AQUEDUCT_TOOLTIP :{BLACK}Tog duct-uisge. Toglaidh Shift togail/sealladh air tuairmse chosgaisean +STR_WATERWAYS_TOOLBAR_CREATE_LAKE_TOOLTIP :{BLACK}Mìnich raon uisge.{}Tog canal, mura h-eil thu a' cumail Ctrl sìos air àirde na mara far an tuilich thu an tìr timcheall air an àite. +STR_WATERWAYS_TOOLBAR_CREATE_RIVER_TOOLTIP :{BLACK}Cuir aibhnichean ann + +# Ship depot construction window +STR_DEPOT_BUILD_SHIP_CAPTION :{WHITE}Comhair a' chalaidh +STR_DEPOT_BUILD_SHIP_ORIENTATION_TOOLTIP :{BLACK}Tagh comhair a' chalaidh + +# Dock construction window +STR_STATION_BUILD_DOCK_CAPTION :{G=m}{WHITE}Port +STR_STATION_BUILD_DOCK_CAPTION.nom :{G=m}{WHITE}Port +STR_STATION_BUILD_DOCK_CAPTION.gen :{G=m}{WHITE}Puirt +STR_STATION_BUILD_DOCK_CAPTION.dat :{G=m}{WHITE}Port + +# Airport toolbar +STR_TOOLBAR_AIRCRAFT_CAPTION :{WHITE}Puirt-adhair +STR_TOOLBAR_AIRCRAFT_BUILD_AIRPORT_TOOLTIP :{BLACK}Tog port-adhair. Ceanglaidh Ctrl stèiseanan ri chèile. Toglaidh Shift togail/sealladh air tuairmse chosgaisean + +# Airport construction window +STR_STATION_BUILD_AIRPORT_CAPTION :{WHITE}Tagh port-adhair +STR_STATION_BUILD_AIRPORT_TOOLTIP :{BLACK}Tagh meud/seòrsa a' phuirt-adhair +STR_STATION_BUILD_AIRPORT_CLASS_LABEL :{BLACK}Seòrsa puirt-adhair +STR_STATION_BUILD_AIRPORT_LAYOUT_NAME :{BLACK}Co-dhealbhachd {NUM} + +STR_AIRPORT_SMALL :Beag +STR_AIRPORT_CITY :Baile +STR_AIRPORT_METRO :Mòr-bhaile +STR_AIRPORT_INTERNATIONAL :Eadar-nàiseanta +STR_AIRPORT_COMMUTER :Iomlaideach +STR_AIRPORT_INTERCONTINENTAL :Thar chuain +STR_AIRPORT_HELIPORT :{G=m}Port-heileacoptair +STR_AIRPORT_HELIPORT.nom :{G=m}Port-heileacoptair +STR_AIRPORT_HELIPORT.gen :{G=m}Puirt-heileacoptair +STR_AIRPORT_HELIPORT.dat :{G=m}Port-heileacoptair +STR_AIRPORT_HELIDEPOT :Hangar-heileacoptair +STR_AIRPORT_HELISTATION :{G=m}Stèisean heileacoptair +STR_AIRPORT_HELISTATION.nom :{G=m}Stèisean heileacoptair +STR_AIRPORT_HELISTATION.gen :{G=m}Stèisein heileacoptair +STR_AIRPORT_HELISTATION.dat :{G=m}Stèisean heileacoptair + +STR_AIRPORT_CLASS_SMALL :Puirt-adhair beaga +STR_AIRPORT_CLASS_LARGE :Puirt-adhair mòra +STR_AIRPORT_CLASS_HUB :Puirt-adhair ionaid +STR_AIRPORT_CLASS_HELIPORTS :Puirt-adhair heileacoptair + +STR_STATION_BUILD_NOISE :{BLACK}Fuaim air adhbharachadh: {GOLD}{COMMA} + +# Landscaping toolbar +STR_LANDSCAPING_TOOLBAR :{WHITE}Cruth-tìre +STR_LANDSCAPING_TOOLTIP_LOWER_A_CORNER_OF_LAND :{BLACK}Ìslich oisean tìre. Le slaodadh, thèid a' chiad oisean ìsleachadh is an raon a thaghas tu a chur air an aon àirde. Taghaidh Ctrl raon trastanach. Toglaidh Shift togail/sealladh air tuairmse chosgaisean +STR_LANDSCAPING_TOOLTIP_RAISE_A_CORNER_OF_LAND :{BLACK}Àrdaich oisean tìre. Le slaodadh, thèid a' chiad oisean àrdachadh is an raon a thaghas tu a chur air an aon àirde. Taghaidh Ctrl raon trastanach. Toglaidh Shift togail/sealladh air tuairmse chosgaisean +STR_LANDSCAPING_LEVEL_LAND_TOOLTIP :{BLACK}Cuir raon tìre air an aon àirde ’s a tha aig a' chiad oisean a thaghas tu. Taghaidh Ctrl raon trastanach. Toglaidh Shift togail/sealladh air tuairmse chosgaisean +STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Ceannaich tìr gus a chleachdadh san àm ri teachd. Toglaidh Shift togail/sealladh air tuairmse chosgaisean + +# Object construction window +STR_OBJECT_BUILD_CAPTION :{WHITE}Tagh oibseact +STR_OBJECT_BUILD_TOOLTIP :{BLACK}Tagh oibseact airson togail. Toglaidh Shift togail/sealladh air tuairmse chosgaisean +STR_OBJECT_BUILD_CLASS_TOOLTIP :{BLACK}Tagh seòrsa na h-oibseicte a tha thu airson togail +STR_OBJECT_BUILD_PREVIEW_TOOLTIP :{BLACK}Ro-shealladh an oibseict +STR_OBJECT_BUILD_SIZE :{BLACK}Meud: {GOLD}{NUM} x {NUM} leacan + +STR_OBJECT_CLASS_LTHS :Taighean-solais +STR_OBJECT_CLASS_TRNS :Tùir chraobh-sgaoilidh + +# Tree planting window (last two for SE only) +STR_PLANT_TREE_CAPTION :{WHITE}Craobhan +STR_PLANT_TREE_TOOLTIP :{BLACK}Tagh seòrsa na craoibhe airson cur. Ma tha craobh air an leac mu thràth, cuiridh seo barrachd chraobhan aig a bheil caochladh dhe sheòrsachan a tha neo-eisimeileach on t-seòrsa a thagh thu +STR_TREES_RANDOM_TYPE :{BLACK}Craobhan dhe sheòrsa air thuaiream +STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}Cuir craobhan dhe sheòrsachan air thuaiream. Toglaidh Shift togail/sealladh air tuairmse chosgaisean +STR_TREES_RANDOM_TREES_BUTTON :{BLACK}Craobhan air thuaiream +STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Cuir craobhan air thuaiream air feadh na tìre + +# Land generation window (SE) +STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}Gin cruth-tìre +STR_TERRAFORM_TOOLTIP_PLACE_ROCKY_AREAS_ON_LANDSCAPE :{BLACK}Cuir raointean creagach air a' chruth-tìre +STR_TERRAFORM_TOOLTIP_DEFINE_DESERT_AREA :{BLACK}Sònraich raon fàsaich.{}Cùm air Ctrl gus a thoirt air falbh +STR_TERRAFORM_TOOLTIP_INCREASE_SIZE_OF_LAND_AREA :{BLACK}Meudaich an raon-tìre a thèid àrdachadh/ìsleachadh +STR_TERRAFORM_TOOLTIP_DECREASE_SIZE_OF_LAND_AREA :{BLACK}Lùghdaich an raon-tìre a thèid àrdachadh/ìsleachadh +STR_TERRAFORM_TOOLTIP_GENERATE_RANDOM_LAND :{BLACK}Gin tìr air thuaiream +STR_TERRAFORM_SE_NEW_WORLD :{BLACK}Cruthaich cnàmh-sgeul ùr +STR_TERRAFORM_RESET_LANDSCAPE :{BLACK}Ath-shuidhich an cruth-tìre +STR_TERRAFORM_RESET_LANDSCAPE_TOOLTIP :{BLACK}Thoir a h-uile sealbh companaidh air falbh on mhapa + +STR_QUERY_RESET_LANDSCAPE_CAPTION :{WHITE}Ath-shuidhich an cruth-tìre +STR_RESET_LANDSCAPE_CONFIRMATION_TEXT :{WHITE}A bheil thu cinnteach gu bheil thu airson a h-uile sealbh companaidh a thoirt air falbh? + +# Town generation window (SE) +STR_FOUND_TOWN_CAPTION :{WHITE}Gin baile +STR_FOUND_TOWN_NEW_TOWN_BUTTON :{BLACK}Baile ùr +STR_FOUND_TOWN_NEW_TOWN_TOOLTIP :{BLACK}Stèidhich baile ùr. Cha dèan Shift+Briogadh ach tuairmse chosgaisean a shealltainn +STR_FOUND_TOWN_RANDOM_TOWN_BUTTON :{BLACK}Baile air thuaiream +STR_FOUND_TOWN_RANDOM_TOWN_TOOLTIP :{BLACK}Stèidhich baile ann an àite air thuaiream +STR_FOUND_TOWN_MANY_RANDOM_TOWNS :{BLACK}Iomadh baile air thuaiream +STR_FOUND_TOWN_RANDOM_TOWNS_TOOLTIP :{BLACK}Còmhdaich am mapa le bailtean air thuaiream + +STR_FOUND_TOWN_NAME_TITLE :{YELLOW}Ainm a' bhaile: +STR_FOUND_TOWN_NAME_EDITOR_TITLE :{BLACK}Cuir a-steach ainm a' bhaile +STR_FOUND_TOWN_NAME_EDITOR_HELP :{BLACK}Briog gus ainm a' bhaile a chur a-steach +STR_FOUND_TOWN_NAME_RANDOM_BUTTON :{BLACK}Ainm air thuaiream +STR_FOUND_TOWN_NAME_RANDOM_TOOLTIP :{BLACK}Gin ainm air thuaiream ùr + +STR_FOUND_TOWN_INITIAL_SIZE_TITLE :{YELLOW}Meud a' bhaile: +STR_FOUND_TOWN_INITIAL_SIZE_SMALL_BUTTON :{BLACK}Beag +STR_FOUND_TOWN_INITIAL_SIZE_MEDIUM_BUTTON :{BLACK}Meadhanach +STR_FOUND_TOWN_INITIAL_SIZE_LARGE_BUTTON :{BLACK}Mòr +STR_FOUND_TOWN_SIZE_RANDOM :{BLACK}Air thuaiream +STR_FOUND_TOWN_INITIAL_SIZE_TOOLTIP :{BLACK}Tagh meud a' bhaile +STR_FOUND_TOWN_CITY :{BLACK}Mòr-bhaile +STR_FOUND_TOWN_CITY_TOOLTIP :{BLACK}Fàsaidh mòr-bhailtean nas luaithe na bailtean àbhaisteach{}A' crochadh air na roghainnean, tha iad nas motha nuair a thèid an stèidheachadh + +STR_FOUND_TOWN_ROAD_LAYOUT :{YELLOW}Co-dhealbhachd rathaidean a' bhaile +STR_FOUND_TOWN_SELECT_TOWN_ROAD_LAYOUT :{BLACK}Tagh co-dhealbhachd nan rathaidean aig a' bhaile +STR_FOUND_TOWN_SELECT_LAYOUT_ORIGINAL :{BLACK}Tùsail +STR_FOUND_TOWN_SELECT_LAYOUT_BETTER_ROADS :{BLACK}Rathaidean as fhearr +STR_FOUND_TOWN_SELECT_LAYOUT_2X2_GRID :{BLACK}Griod 2x2 +STR_FOUND_TOWN_SELECT_LAYOUT_3X3_GRID :{BLACK}Griod 3x3 +STR_FOUND_TOWN_SELECT_LAYOUT_RANDOM :{BLACK}Air thuaiream + +# Fund new industry window +STR_FUND_INDUSTRY_CAPTION :{WHITE}Stèidhich gnìomhachas ùr +STR_FUND_INDUSTRY_SELECTION_TOOLTIP :{BLACK}Tagh an gnìomhachas freagarrach bhon liosta seo +STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES :Grunn ghnìomhachasan air thuaiream +STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES_TOOLTIP :{BLACK}Còmhdaich am mapa le gnìomhachasan air thuaiream +STR_FUND_INDUSTRY_INDUSTRY_BUILD_COST :{BLACK}Cosgais: {YELLOW}{CURRENCY_LONG} +STR_FUND_INDUSTRY_PROSPECT_NEW_INDUSTRY :{BLACK}Rùraich +STR_FUND_INDUSTRY_BUILD_NEW_INDUSTRY :{BLACK}Tog +STR_FUND_INDUSTRY_FUND_NEW_INDUSTRY :{BLACK}Maoinich + +# Industry cargoes window +STR_INDUSTRY_CARGOES_INDUSTRY_CAPTION :{WHITE}Sreath gnìomhachais airson gnìomhachas {STRING.gen} +STR_INDUSTRY_CARGOES_CARGO_CAPTION :{WHITE}Sreath gnìomhachais airson carago {STRING.gen} +STR_INDUSTRY_CARGOES_PRODUCERS :{WHITE}Gnìomhachasan saothrachaidh +STR_INDUSTRY_CARGOES_CUSTOMERS :{WHITE}Gnìomhachasan a ghabhas ris +STR_INDUSTRY_CARGOES_HOUSES :{WHITE}Taighean +STR_INDUSTRY_CARGOES_INDUSTRY_TOOLTIP :{BLACK}Briog air a' ghnìomhachas gus a luchd-solair is ceannachd a shealltainn +STR_INDUSTRY_CARGOES_CARGO_TOOLTIP :{BLACK}{STRING}{}riog air a' charago gus a luchd-solair is ceannachd a shealltainn +STR_INDUSTRY_DISPLAY_CHAIN :{BLACK}Seall sreath +STR_INDUSTRY_DISPLAY_CHAIN_TOOLTIP :{BLACK}Seall gnìomhachasan a sholaireas is a ghabhas ri carago +STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP :{BLACK}Ceangail ris a' mheanbh-mhapa +STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP_TOOLTIP :{BLACK}Tagh na gnìomhachasan a tha gan sealltainn air a' mheanbh-mhapa cuideachd +STR_INDUSTRY_CARGOES_SELECT_CARGO :{BLACK}Tagh carago +STR_INDUSTRY_CARGOES_SELECT_CARGO_TOOLTIP :{BLACK}Tagh an carago a tha thu airson sealltainn +STR_INDUSTRY_CARGOES_SELECT_INDUSTRY :{BLACK}Tagh gnìomhachas +STR_INDUSTRY_CARGOES_SELECT_INDUSTRY_TOOLTIP :{BLACK}Tagh an gnìomhachas a tha thu airson sealltainn + +# Land area window +STR_LAND_AREA_INFORMATION_CAPTION :{WHITE}Fiosrachadh air roinn tìre +STR_LAND_AREA_INFORMATION_COST_TO_CLEAR_N_A :{BLACK}Cosgais an fhalamhachaidh: {LTBLUE}neo-aithnichte +STR_LAND_AREA_INFORMATION_COST_TO_CLEAR :{BLACK}Cosgais an fhalamhachaidh: {RED}{CURRENCY_LONG} +STR_LAND_AREA_INFORMATION_REVENUE_WHEN_CLEARED :{BLACK}Teachd a-steach leis an fhalamhachadh: {LTBLUE}{CURRENCY_LONG} +STR_LAND_AREA_INFORMATION_OWNER_N_A :neo-aithnichte +STR_LAND_AREA_INFORMATION_OWNER :{BLACK}Sealbhadair: {LTBLUE}{STRING} +STR_LAND_AREA_INFORMATION_ROAD_OWNER :{BLACK}Seilbheadair an rathaid: {LTBLUE}{STRING} +STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Seilbheadair na slighe-trama: {LTBLUE}{STRING} +STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Seilbheadair na rathaid-iarainn: {LTBLUE}{STRING} +STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Ùghdarras ionadail: {LTBLUE}{STRING} +STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Chan eil gin +STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Ionad: {LTBLUE}{NUM} x {NUM} x {NUM} ({STRING}) +STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}Air a thogail: {LTBLUE}{DATE_LONG} +STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Seòrsa an stèisein: {LTBLUE}{STRING} +STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Seòrsa an stèisein: {LTBLUE}{STRING} +STR_LAND_AREA_INFORMATION_AIRPORT_CLASS :{BLACK}Seòrsa a' phuirt-adhair: {LTBLUE}{STRING} +STR_LAND_AREA_INFORMATION_AIRPORT_NAME :{BLACK}Ainm a' phuirt-adhair: {LTBLUE}{STRING} +STR_LAND_AREA_INFORMATION_AIRPORTTILE_NAME :{BLACK}Ainm leac a' phuirt-adhair: {LTBLUE}{STRING} +STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: {LTBLUE}{STRING} +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 +STR_LAI_CLEAR_DESCRIPTION_ROUGH_LAND :Tìr gharbh +STR_LAI_CLEAR_DESCRIPTION_BARE_LAND :Tìr lom +STR_LAI_CLEAR_DESCRIPTION_GRASS :Tìr feurach +STR_LAI_CLEAR_DESCRIPTION_FIELDS :Achaidhean +STR_LAI_CLEAR_DESCRIPTION_SNOW_COVERED_LAND :Tìr sneachdach +STR_LAI_CLEAR_DESCRIPTION_DESERT :Fàsach + +STR_LAI_RAIL_DESCRIPTION_TRACK :Slighe {STRING.gen} +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_SIGNALS :Slighe {STRING.gen} le comharran bacaidh +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRESIGNALS :Slighe {STRING.gen} le ro-chomharran +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXITSIGNALS :Slighe {STRING.gen} le comharran a-mach +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBOSIGNALS :Slighe {STRING.gen} le comharran aonaichte +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBSSIGNALS :Slighe {STRING.gen} le comharran slighe +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NOENTRYSIGNALS :Slighe {STRING.gen} le comharran aon-shligheach +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PRESIGNALS :Slighe {STRING.gen} le comharran bacaidh is ro-chomharran +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_EXITSIGNALS :Slighe {STRING.gen} le comharran-bacaidh is a-mach +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_COMBOSIGNALS :Slighe {STRING.gen} le comharran-bacaidh is aonaichte +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PBSSIGNALS :Slighe {STRING.gen} le comharran-bacaidh is slighe +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_NOENTRYSIGNALS :Slighe {STRING.gen} le comharran-bacaidh is aon-shligheach +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_EXITSIGNALS :Slighe {STRING.gen} le ro-chomharran is comharran a-mach +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_COMBOSIGNALS :Slighe {STRING.gen} le ro-chomharran is comharran aonaichte +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_PBSSIGNALS :Slighe {STRING.gen} le ro-chomharran is comharran slighe +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_NOENTRYSIGNALS :Slighe {STRING.gen} le ro-chomharran is comharran aon-shligheach +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_COMBOSIGNALS :Slighe {STRING.gen} le comharran a-mach is aonaichte +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_PBSSIGNALS :Slighe {STRING.gen} le comharran a-mach is slighe +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_NOENTRYSIGNALS :Slighe {STRING.gen} le comharran a-mach is aon-shligheach +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_PBSSIGNALS :Slighe {STRING.gen} le comharran aonaichte is slighe +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_NOENTRYSIGNALS :Slighe {STRING.gen} le comharran aonaichte is aon-shligheach +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBS_NOENTRYSIGNALS :Slighe {STRING.gen} le comharran slighe is aon-shligheach +STR_LAI_RAIL_DESCRIPTION_TRAIN_DEPOT :Trèan-lann {STRING} + +STR_LAI_ROAD_DESCRIPTION_ROAD :Rathad +STR_LAI_ROAD_DESCRIPTION_ROAD_WITH_STREETLIGHTS :Rathad le solasan-rathaid +STR_LAI_ROAD_DESCRIPTION_TREE_LINED_ROAD :Rathad craobhach +STR_LAI_ROAD_DESCRIPTION_ROAD_VEHICLE_DEPOT :{G=f}Garaids +STR_LAI_ROAD_DESCRIPTION_ROAD_RAIL_LEVEL_CROSSING :Staran-rèile +STR_LAI_ROAD_DESCRIPTION_TRAMWAY :Slighe-trama + +# Houses come directly from their building names +STR_LAI_TOWN_INDUSTRY_DESCRIPTION_UNDER_CONSTRUCTION :{STRING} (ga togail) + +STR_LAI_TREE_NAME_TREES :Craobhan +STR_LAI_TREE_NAME_RAINFOREST :Coille-uisge +STR_LAI_TREE_NAME_CACTUS_PLANTS :Cactasan + +STR_LAI_STATION_DESCRIPTION_RAILROAD_STATION :{G=m}Stèisean rèile +STR_LAI_STATION_DESCRIPTION_RAILROAD_STATION.nom :{G=m}Stèisean rèile +STR_LAI_STATION_DESCRIPTION_RAILROAD_STATION.gen :{G=m}Stèisein rèile +STR_LAI_STATION_DESCRIPTION_RAILROAD_STATION.dat :{G=m}Stèisean rèile +STR_LAI_STATION_DESCRIPTION_AIRCRAFT_HANGAR :{G=m}Hangar +STR_LAI_STATION_DESCRIPTION_AIRCRAFT_HANGAR.nom :{G=m}Hangar +STR_LAI_STATION_DESCRIPTION_AIRCRAFT_HANGAR.gen :{G=m}Hangair +STR_LAI_STATION_DESCRIPTION_AIRCRAFT_HANGAR.dat :{G=m}Hangar +STR_LAI_STATION_DESCRIPTION_AIRPORT :{G=m}Port-adhair +STR_LAI_STATION_DESCRIPTION_AIRPORT.nom :{G=m}Port-adhair +STR_LAI_STATION_DESCRIPTION_AIRPORT.gen :{G=m}Puirt-adhair +STR_LAI_STATION_DESCRIPTION_AIRPORT.dat :{G=m}Port-adhair +STR_LAI_STATION_DESCRIPTION_TRUCK_LOADING_AREA :Ionad-luchdaidh nan làraidh +STR_LAI_STATION_DESCRIPTION_BUS_STATION :{G=m}Stèisean bus +STR_LAI_STATION_DESCRIPTION_BUS_STATION.nom :{G=m}Stèisean bus +STR_LAI_STATION_DESCRIPTION_BUS_STATION.gen :{G=m}Stèisein bus +STR_LAI_STATION_DESCRIPTION_BUS_STATION.dat :{G=m}Stèisean bus +STR_LAI_STATION_DESCRIPTION_SHIP_DOCK :{G=m}Port +STR_LAI_STATION_DESCRIPTION_SHIP_DOCK.nom :{G=m}Port +STR_LAI_STATION_DESCRIPTION_SHIP_DOCK.gen :{G=m}Puirt +STR_LAI_STATION_DESCRIPTION_SHIP_DOCK.dat :{G=m}Port +STR_LAI_STATION_DESCRIPTION_BUOY :Fleodrainn +STR_LAI_STATION_DESCRIPTION_WAYPOINT :Puing-thurais + +STR_LAI_WATER_DESCRIPTION_WATER :Uisge +STR_LAI_WATER_DESCRIPTION_CANAL :Canal +STR_LAI_WATER_DESCRIPTION_LOCK :Loc +STR_LAI_WATER_DESCRIPTION_RIVER :Abhainn +STR_LAI_WATER_DESCRIPTION_COAST_OR_RIVERBANK :Oirthir no bot +STR_LAI_WATER_DESCRIPTION_SHIP_DEPOT :{G=m}Cala +STR_LAI_WATER_DESCRIPTION_SHIP_DEPOT.nom :{G=m}Cala +STR_LAI_WATER_DESCRIPTION_SHIP_DEPOT.gen :{G=m}Calaidh +STR_LAI_WATER_DESCRIPTION_SHIP_DEPOT.dat :{G=m}Cala + +# Industries come directly from their industry names + +STR_LAI_TUNNEL_DESCRIPTION_RAILROAD :Tunail rèile +STR_LAI_TUNNEL_DESCRIPTION_ROAD :Tunail rathaid + +STR_LAI_BRIDGE_DESCRIPTION_RAIL_SUSPENSION_STEEL :Drochaid-chrochaidh stàilinn rèile +STR_LAI_BRIDGE_DESCRIPTION_RAIL_GIRDER_STEEL :Drochaid-theannadair stàilinn rèile +STR_LAI_BRIDGE_DESCRIPTION_RAIL_CANTILEVER_STEEL :Drochaid starr-chrainn stàilinn rèile +STR_LAI_BRIDGE_DESCRIPTION_RAIL_SUSPENSION_CONCRETE :Drochaid-chrochaidh concraid neartaichte rèile +STR_LAI_BRIDGE_DESCRIPTION_RAIL_WOODEN :Drochaid fhiodha rèile +STR_LAI_BRIDGE_DESCRIPTION_RAIL_CONCRETE :Drochaid concraid rèile +STR_LAI_BRIDGE_DESCRIPTION_RAIL_TUBULAR_STEEL :Drochaid phìobach rèile + +STR_LAI_BRIDGE_DESCRIPTION_ROAD_SUSPENSION_STEEL :Drochaid-chrochaidh stàilinn rathaid +STR_LAI_BRIDGE_DESCRIPTION_ROAD_GIRDER_STEEL :Drochaid-theannadair stàilinn rathaid +STR_LAI_BRIDGE_DESCRIPTION_ROAD_CANTILEVER_STEEL :Drochaid starr-chrainn stàilinn rathaid +STR_LAI_BRIDGE_DESCRIPTION_ROAD_SUSPENSION_CONCRETE :Drochaid-chrochaidh concraid neartaichte rathaid +STR_LAI_BRIDGE_DESCRIPTION_ROAD_WOODEN :Drochaid fhiodha rathaid +STR_LAI_BRIDGE_DESCRIPTION_ROAD_CONCRETE :Drochaid concraid rathaid +STR_LAI_BRIDGE_DESCRIPTION_ROAD_TUBULAR_STEEL :Drochaid phìobach rathaid + +STR_LAI_BRIDGE_DESCRIPTION_AQUEDUCT :Duct-uisge + +STR_LAI_OBJECT_DESCRIPTION_TRANSMITTER :Tùr craobh-sgaoilidh +STR_LAI_OBJECT_DESCRIPTION_LIGHTHOUSE :Taigh-solais +STR_LAI_OBJECT_DESCRIPTION_COMPANY_HEADQUARTERS :Ionad na companaidh +STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Tìr a' chompanaidh + +# About OpenTTD window +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-2014 An sgioba OpenTTD + +# Save/load game/scenario +STR_SAVELOAD_SAVE_CAPTION :{WHITE}Sàbhail an geama +STR_SAVELOAD_LOAD_CAPTION :{WHITE}Luchdaich geama +STR_SAVELOAD_SAVE_SCENARIO :{WHITE}Sàbhail an cnàmh-sgeul +STR_SAVELOAD_LOAD_SCENARIO :{WHITE}Luchdaich cnàmh-sgeul +STR_SAVELOAD_LOAD_HEIGHTMAP :{WHITE}Luchdaich mapa-àirde +STR_SAVELOAD_SAVE_HEIGHTMAP :{WHITE}Sàbhail am mapa-àirde +STR_SAVELOAD_HOME_BUTTON :{BLACK}Briog an-seo gus leum a ghearradh dhan phasgan shàbhalaidh/luchdaidh bhunasach làithreach +STR_SAVELOAD_BYTES_FREE :{BLACK}{BYTES} saora +STR_SAVELOAD_LIST_TOOLTIP :{BLACK}Liosta dhe na draibhean, pasganan is faidhlichean nan geamannan sàbhailte +STR_SAVELOAD_EDITBOX_TOOLTIP :{BLACK}An t-ainm a thagh thu an-dràsta gus an geama a shàbhaladh +STR_SAVELOAD_DELETE_BUTTON :{BLACK}Sguab às +STR_SAVELOAD_DELETE_TOOLTIP :{BLACK}Sguab às dhan gheama air a shàbhaladh a thagh thu +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} +STR_SAVELOAD_DETAIL_GRFSTATUS :{SILVER}NewGRF: {WHITE}{STRING} + +STR_SAVELOAD_OSKTITLE :{BLACK}Cuir a-steach ainm ùr gus an geama a shàbhaladh + +# World generation +STR_MAPGEN_WORLD_GENERATION_CAPTION :{WHITE}Gin saoghal +STR_MAPGEN_MAPSIZE :{BLACK}Meud a' mhapa: +STR_MAPGEN_MAPSIZE_TOOLTIP :{BLACK}Tagh co mheud leacan a bhios sa mhapa. Bidh an àireamh dhe leacan ri làimh beagan nas lugha +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_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_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: +STR_MAPGEN_QUANTITY_OF_SEA_LAKES :{BLACK}Àirde na mara: +STR_MAPGEN_QUANTITY_OF_RIVERS :{BLACK}Aibhnichean: +STR_MAPGEN_SMOOTHNESS :{BLACK}Dè cho rèidh: +STR_MAPGEN_VARIETY :{BLACK}Sgaoileadh caochlaidh: +STR_MAPGEN_GENERATE :{WHITE}Gin am mapa + +# Strings for map borders at game generation +STR_MAPGEN_BORDER_TYPE :{BLACK}Oirean a' mhapa: +STR_MAPGEN_NORTHWEST :{BLACK}Iar-thuath +STR_MAPGEN_NORTHEAST :{BLACK}Ear-thuath +STR_MAPGEN_SOUTHEAST :{BLACK}Ear-dheas +STR_MAPGEN_SOUTHWEST :{BLACK}Iar-dheas +STR_MAPGEN_BORDER_FREEFORM :{BLACK}Cruth saor +STR_MAPGEN_BORDER_WATER :{BLACK}Uisge +STR_MAPGEN_BORDER_RANDOM :{BLACK}Air thuaiream +STR_MAPGEN_BORDER_RANDOMIZE :{BLACK}Air thuaiream +STR_MAPGEN_BORDER_MANUAL :{BLACK}A làimh + +STR_MAPGEN_HEIGHTMAP_ROTATION :{BLACK}Cuairteachadh a' mhapa-àirde: +STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Ainm a' mhapa-àirde: +STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Meud: +STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM} + +STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Atharraich àirde na loidhne-shneachda +STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Atharraich am bliadhna-tòiseachaidh + +# SE Map generation +STR_SE_MAPGEN_CAPTION :{WHITE}Seòrsa a' chnàmh-sgeòil +STR_SE_MAPGEN_FLAT_WORLD :{WHITE}Tìr rèidh +STR_SE_MAPGEN_FLAT_WORLD_TOOLTIP :{BLACK}Gin tìr rèidh +STR_SE_MAPGEN_RANDOM_LAND :{WHITE}Tìr air thuaiream +STR_SE_MAPGEN_FLAT_WORLD_HEIGHT :{BLACK}Àirde na tìre rèidhe: +STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_DOWN :{BLACK}Gluais àirde na tìre rèidhe sìos aon cheum +STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_UP :{BLACK}Gluais àirde na tìre rèidhe suas aon cheum + +STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_QUERY_CAPT :{WHITE}Atharraich àirde na tìre rèidhe + +# Map generation progress +STR_GENERATION_WORLD :{WHITE}A' gintinn saoghal... +STR_GENERATION_ABORT :{BLACK}Sguir dheth +STR_GENERATION_ABORT_CAPTION :{WHITE}Sguir dhe ghintinn an t-saoghail +STR_GENERATION_ABORT_MESSAGE :{YELLOW}A bheil thu airson sgur dhe ghintinn an t-saoghail? +STR_GENERATION_PROGRESS :{WHITE}{NUM}% coileanta +STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / {NUM} +STR_GENERATION_WORLD_GENERATION :{BLACK}Gin saoghal +STR_GENERATION_RIVER_GENERATION :{BLACK}Gin aibhnichean +STR_GENERATION_TREE_GENERATION :{BLACK}Gin craobhan +STR_GENERATION_OBJECT_GENERATION :{BLACK}Gin oibseactan +STR_GENERATION_CLEARING_TILES :{BLACK}Gin raon garbh is creagach +STR_GENERATION_SETTINGUP_GAME :{BLACK}A' suidheachadh a' gheama +STR_GENERATION_PREPARING_TILELOOP :{BLACK}A' ruith lùb-lice +STR_GENERATION_PREPARING_SCRIPT :{BLACK}A' ruith sgriobt +STR_GENERATION_PREPARING_GAME :{BLACK}Ag ullachadh a' gheama + +# NewGRF settings +STR_NEWGRF_SETTINGS_CAPTION :{WHITE}Roghainnean NewGRF +STR_NEWGRF_SETTINGS_INFO_TITLE :{WHITE}Mion-fhiosrachadh NewGRF +STR_NEWGRF_SETTINGS_ACTIVE_LIST :{WHITE}Faidhlichean NewGRF gnìomhach +STR_NEWGRF_SETTINGS_INACTIVE_LIST :{WHITE}Faidhlichean NewGRF neo-ghnìomhach +STR_NEWGRF_SETTINGS_SELECT_PRESET :{ORANGE}Tagh ro-sheata: +STR_NEWGRF_FILTER_TITLE :{ORANGE}Sreang criathraige: +STR_NEWGRF_SETTINGS_PRESET_LIST_TOOLTIP :{BLACK}Luchdaich an ro-sheata a thagh thu +STR_NEWGRF_SETTINGS_PRESET_SAVE :{BLACK}Sàbhail ro-sheata +STR_NEWGRF_SETTINGS_PRESET_SAVE_TOOLTIP :{BLACK}Sàbhail an liosta seo mar ro-sheata +STR_NEWGRF_SETTINGS_PRESET_SAVE_QUERY :{BLACK}Cuir a-steach ainm airson an ro-sheata +STR_NEWGRF_SETTINGS_PRESET_DELETE :{BLACK}Sguab às dhan ro-sheata +STR_NEWGRF_SETTINGS_PRESET_DELETE_TOOLTIP :{BLACK}Sguab às dhan ro-sheata a thagh thu +STR_NEWGRF_SETTINGS_ADD :{BLACK}Cuir ris +STR_NEWGRF_SETTINGS_ADD_FILE_TOOLTIP :{BLACK}Cuir am faidhle NewGRF a thagh thu ris an rèiteachadh agad +STR_NEWGRF_SETTINGS_RESCAN_FILES :{BLACK}Ath-sganaich na faidhlichean +STR_NEWGRF_SETTINGS_RESCAN_FILES_TOOLTIP :{BLACK}Ùraich an liosta dhe na faidhlichean NewGRF a tha ri làimh +STR_NEWGRF_SETTINGS_REMOVE :{BLACK}Thoir air falbh +STR_NEWGRF_SETTINGS_REMOVE_TOOLTIP :{BLACK}Thoir am faidhle NewGRF a thagh thu air falbh on liosta +STR_NEWGRF_SETTINGS_MOVEUP :{BLACK}Gluais suas +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 +STR_NEWGRF_SETTINGS_SHOW_PARAMETERS :{BLACK}Seall paramadairean +STR_NEWGRF_SETTINGS_TOGGLE_PALETTE :{BLACK}Toglaich am pailead +STR_NEWGRF_SETTINGS_TOGGLE_PALETTE_TOOLTIP :{BLACK}Toglaich am pailead aig a' NewGRF a thagh thu.{}Dèan seo ma tha coltas pinc air grafaigeachd a' NewGRF seo sa gheama +STR_NEWGRF_SETTINGS_APPLY_CHANGES :{BLACK}Cuir na h-atharraichean an sàs + +STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_BUTTON :{BLACK}Lorg an t-susbaint a tha a dhìth air loidhne +STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_TOOLTIP :{BLACK}Thoir sùil air loidhne a bheil an t-susbaint a tha a dhìth ri fhaighinn + +STR_NEWGRF_SETTINGS_FILENAME :{BLACK}Ainm an fhaidhle: {SILVER}{STRING} +STR_NEWGRF_SETTINGS_GRF_ID :{BLACK}ID a' GRF: {SILVER}{STRING} +STR_NEWGRF_SETTINGS_VERSION :{BLACK}Tionndadh: {SILVER}{NUM} +STR_NEWGRF_SETTINGS_MIN_VERSION :{BLACK}An tionndadh as sine a tha co-chòrdail: {SILVER}{NUM} +STR_NEWGRF_SETTINGS_MD5SUM :{BLACK}Suim MD5: {SILVER}{STRING} +STR_NEWGRF_SETTINGS_PALETTE :{BLACK}Pailead: {SILVER}{STRING} +STR_NEWGRF_SETTINGS_PARAMETER :{BLACK}Paramadairean: {SILVER}{STRING} + +STR_NEWGRF_SETTINGS_NO_INFO :{BLACK}Chan eil fiosrachadh ri làimh +STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}Cha deach faidhle a dh’freagras a lorg +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 +STR_NEWGRF_PARAMETERS_RESET :{BLACK}Ath-shuidhich +STR_NEWGRF_PARAMETERS_RESET_TOOLTIP :{BLACK}Suidhich a h-uile paramadair air a luach tùsail +STR_NEWGRF_PARAMETERS_DEFAULT_NAME :Paramadair {NUM} +STR_NEWGRF_PARAMETERS_SETTING :{STRING}: {ORANGE}{STRING} +STR_NEWGRF_PARAMETERS_NUM_PARAM :{LTBLUE}Àireamh dhe pharamadairean: {ORANGE}{NUM} + +# NewGRF inspect window +STR_NEWGRF_INSPECT_CAPTION :{WHITE}Sgrùd - {STRING} +STR_NEWGRF_INSPECT_PARENT_BUTTON :{BLACK}Pàrant +STR_NEWGRF_INSPECT_PARENT_TOOLTIP :{BLACK}Sgrùd oibseact an sgòip phàraint + +STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT :{STRING} aig {HEX} +STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_OBJECT :Oibseact +STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :Seòrsa an rèile + +STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}Paramadair 60+x (sia-dheicheach) caochladair NewGRF + +# 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_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_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_PICKER_BUTTON :{BLACK}Tagh sprite +STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Tagh sprite bho àite sam bith air an sgrìn + +STR_SPRITE_ALIGNER_GOTO_CAPTION :{WHITE}Rach dhan sprite + +# NewGRF (self) generated warnings/errors +STR_NEWGRF_ERROR_MSG_INFO :{SILVER}{STRING} +STR_NEWGRF_ERROR_MSG_WARNING :{RED}Rabhadh: {SILVER}{STRING} +STR_NEWGRF_ERROR_MSG_ERROR :{RED}Mearachd: {SILVER}{STRING} +STR_NEWGRF_ERROR_MSG_FATAL :{RED}Marbhtach: {SILVER}{STRING} +STR_NEWGRF_ERROR_FATAL_POPUP :{WHITE}Thachair mearachd NewGRF marbhtach: {}{STRING} +STR_NEWGRF_ERROR_VERSION_NUMBER :Chan obraich {1:STRING} leis an tionndadh aig TTDPatch a chaidh aithris le OpenTTD +STR_NEWGRF_ERROR_DOS_OR_WINDOWS :Tha {1:STRING} airson tionndadh {STRING} aig TTD +STR_NEWGRF_ERROR_UNSET_SWITCH :Chaidh {1:STRING} a dhealbhachadh gus cleachdadh le {STRING} +STR_NEWGRF_ERROR_INVALID_PARAMETER :Paramadair mì-dhligheach airson {1:STRING.gen}: paramadair {STRING} ({NUM}) +STR_NEWGRF_ERROR_LOAD_BEFORE :Feumaidh {1:STRING} a bhith air a luchdadh mus tèid {STRING} a luchdadh +STR_NEWGRF_ERROR_LOAD_AFTER :Feumaidh {2:STRING} air a bhith a' luchdadh mus tèid {1:STRING} a luchdadh +STR_NEWGRF_ERROR_OTTD_VERSION_NUMBER :Tha OpenTTD tionndadh {2:STRING} no nas fhearr a dhìth air {1:STRING} +STR_NEWGRF_ERROR_AFTER_TRANSLATED_FILE :am faidhle GRF ri eadar-theangachadh +STR_NEWGRF_ERROR_TOO_MANY_NEWGRFS_LOADED :Chaidh cus NewGRFan a luchdadh +STR_NEWGRF_ERROR_STATIC_GRF_CAUSES_DESYNC :Ma luchdas tu {1:STRING} mar NewGRF stadaigeach le {STRING}, dh'fhaoidte gun adhbharaich seo dì-shioncronachadh +STR_NEWGRF_ERROR_UNEXPECTED_SPRITE :Sprite air nach robh dùil (sprite {3:NUM}) +STR_NEWGRF_ERROR_UNKNOWN_PROPERTY :Tha buadh {4:HEX} gnìomh 0 neo-aithnichte ann (sprite {3:NUM}) +STR_NEWGRF_ERROR_INVALID_ID :Chaidh feuchainn ri ID mì-dhligheach a chleachdadh (sprite {3:NUM}) +STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}Tha sprite coirbte am broinn {STRING.gen}. Thèid a h-uile sprite coirbte a shealltainn na comharradh-ceiste dhearg (?) +STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Tha iomadh innteart gnìomh 8 ann (sprite {3:NUM}) +STR_NEWGRF_ERROR_READ_BOUNDS :Chaidh leughadh thar deireadh a' sprite mas fhìor (sprite {3:NUM}) +STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}Tha sprite no dhà a dhìth air an t-seata ghrafaigeachd bhunasach a tha thu a' cleachdadh an-dràsta.{}Feuch an ùraich thu an seata grafaigeachd bunasach +STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}Tha sprite no dhà a dhìth air an t-seata ghrafaigeachd bhunasach a tha thu a' cleachdadh an-dràsta.{}Feuch an ùraich thu an seata grafaigeachd bunasach.{}Bhon a tha thu a' cluich le {YELLOW}snapshot leasachaidh aig OpenTTD{WHITE}, ’S dòcha gu bheil {YELLOW} snapshot leasachaidh dhen t-seata grafaigeachd bunasach{WHITE} a dhìth ort cuideachd +STR_NEWGRF_ERROR_GRM_FAILED :Chan eil na goireasan GRF a chaidh iarraidh ri làimh (sprite {3:NUM}) +STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :Chaidh {1:STRING} a chur à comas le {2:STRING} +STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Fòrmat co-dhealbhachd sprite mì-dhligheach/neo-aithnichte (sprite {3:NUM}) + +# NewGRF related 'general' warnings +STR_NEWGRF_POPUP_CAUTION_CAPTION :{WHITE}An aire! +STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}Tha thu an impis geama a tha a’ ruith atharrachadh. Dh’fhaoidte gun tuislich seo OpenTTD no gum bris e cor a' gheama. Na dèan aithisg air buga mu na duilgheadasan seo.{}A bheil thu cinnteach dha-rìribh mu dheidhinn seo? + +STR_NEWGRF_DUPLICATE_GRFID :{WHITE}Cha ghabh am faidhle cur ris: ID GRF dùblaichte +STR_NEWGRF_COMPATIBLE_LOADED :{ORANGE}Cha deach faidhle a dh'fhreagras a lorg (chaidh GRF co-chòrdail a luchdadh) +STR_NEWGRF_TOO_MANY_NEWGRFS :{WHITE}Cha ghabh am faidhle cur ris: Rachadh seo thairis air na tha ceadaichte dhe dh'fhaidhlichean NewGRF + +STR_NEWGRF_COMPATIBLE_LOAD_WARNING :{WHITE}Chaidh GRF(an) co-chòrdail a luchdadh airson nam faidhlichean a tha a dhìth +STR_NEWGRF_DISABLED_WARNING :{WHITE}Chaidh am faidhle/na faidhlichean GRF a tha a dhìth a chur à comas +STR_NEWGRF_UNPAUSE_WARNING_TITLE :{YELLOW}Faidhle/faidhlichean GRF a dhìth +STR_NEWGRF_UNPAUSE_WARNING :{WHITE}Dh'fhaoidte gun tuislich OpenTTD ma leanas tu air a' gheama. Na dèan aithisg air buga mu thuisleachaidhean an uairsin.{}A bheil thu cinnteach dha-rìribh gu bheil thu airson leantainn air a' gheama? + +# NewGRF status +STR_NEWGRF_LIST_NONE :Chan eil gin +STR_NEWGRF_LIST_ALL_FOUND :Tha a h-uile faidhle ann +STR_NEWGRF_LIST_COMPATIBLE :{YELLOW}Chaidh faidhlichean co-chòrdail a lorg +STR_NEWGRF_LIST_MISSING :{RED}Tha faidhlichean a dhìth + +# NewGRF 'it's broken' warnings +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 +STR_NEWGRF_BUGGY_ARTICULATED_CARGO :{WHITE}Tha am fiosrachadh carago/mùthaidh airson “{1:ENGINE}" eadar-dhealaichte on liosta cheannaich an dèidh na togail. Dh'fhaoidte nach mùth fèin-nuadhachadh/-leasachadh mar bu chòir +STR_NEWGRF_BUGGY_ENDLESS_PRODUCTION_CALLBACK :{WHITE}Dh'adhbharaich “{1:STRING}" lùb gun chrìch ann an ais-ghairm an dèanadais +STR_NEWGRF_BUGGY_UNKNOWN_CALLBACK_RESULT :{WHITE}Thill an ais-ghairm {1:HEX} toradh {2:HEX}neo-aithnichte/mì-dhligheach + +# 'User removed essential NewGRFs'-placeholders for stuff without specs +STR_NEWGRF_INVALID_CARGO : +STR_NEWGRF_INVALID_CARGO_ABBREV :?? +STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} dhe +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}A' sganadh NewGRFan +STR_NEWGRF_SCAN_MESSAGE :{BLACK}A' sganadh NewGRFan. A' crochaidh air na tha dhiubh ann, dh'fhaoidte gun toir seo greis... +STR_NEWGRF_SCAN_STATUS :{BLACK}Chaidh {NUM} NewGRF{P "" "" an ""} a-mach à mu {NUM} NewGRF{P "" "" an ""} a sganadh +STR_NEWGRF_SCAN_ARCHIVES :A' sganadh airson tasglannan + +# Sign list window +STR_SIGN_LIST_CAPTION :{WHITE}Liosta nan sanasan - {COMMA} {P sanas shanas sanasan sanas} +STR_SIGN_LIST_MATCH_CASE :{BLACK}Aire do litrichean mòra is beaga +STR_SIGN_LIST_MATCH_CASE_TOOLTIP :{BLACK}Toglaich aire do litrichean mòra is beaga nuair a thèid coimeas a dhèanamh eadar ainm sanais is sreang na criathraige + +# Sign window +STR_EDIT_SIGN_CAPTION :{WHITE}Deasaich teacsa an t-sanais +STR_EDIT_SIGN_NEXT_SIGN_TOOLTIP :{BLACK}Rach dhan ath shanas +STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK}Rach dhan t-sanas roimhe + +STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}Cuir a-steach ainm airson an t-sanais + +# Town directory window +STR_TOWN_DIRECTORY_CAPTION :{WHITE}Bailtean +STR_TOWN_DIRECTORY_NONE :{ORANGE}- Chan eil gin - +STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA}) +STR_TOWN_DIRECTORY_LIST_TOOLTIP :{BLACK}Ainmean nam bailtean - briog air ainm gus am prìomh-shealladh a mheadhanachadh air a' bhaile. Fosglaidh Ctrl+briogadh port-seallaidh ùr air ionad a' bhaile +STR_TOWN_POPULATION :{BLACK}Sluagh an t-saoghail: {COMMA} + +# Town view window +STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN} +STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} (Mòr-bhaile) +STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}Sluagh: {ORANGE}{COMMA}{BLACK} Taighean: {ORANGE}{COMMA} +STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}Taistealaich am mìos mu dheireadh: {ORANGE}{COMMA}{BLACK} as motha: {ORANGE}{COMMA} +STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}Post am mìos mu dheireadh: {ORANGE}{COMMA}{BLACK} as motha: {ORANGE}{COMMA} +STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}Carago a tha a dhìth ach am fàs am baile: +STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{RED}Feum air {ORANGE}{STRING} +STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{BLACK}Feum air {ORANGE}{STRING}{BLACK} sa gheamhradh +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_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 +STR_TOWN_VIEW_LOCAL_AUTHORITY_BUTTON :{BLACK}Ùghdarras ionadail +STR_TOWN_VIEW_LOCAL_AUTHORITY_TOOLTIP :{BLACK}Seall fiosrachadh air an ùghdarras ionadail +STR_TOWN_VIEW_RENAME_TOOLTIP :{BLACK}Atharraich ainm a' bhaile + +STR_TOWN_VIEW_EXPAND_BUTTON :{BLACK}Meudaich +STR_TOWN_VIEW_EXPAND_TOOLTIP :{BLACK}Dèan am baile nas motha +STR_TOWN_VIEW_DELETE_BUTTON :{BLACK}Sguab às +STR_TOWN_VIEW_DELETE_TOOLTIP :{BLACK}Sguab às dhan bhaile seo gu tur + +STR_TOWN_VIEW_RENAME_TOWN_BUTTON :Thoir ainm ùr air a' bhaile + +# Town local authority window +STR_LOCAL_AUTHORITY_CAPTION :{WHITE}Ùghdarras ionadail aig {TOWN} +STR_LOCAL_AUTHORITY_COMPANY_RATINGS :{BLACK}Rang na companaidh giùlain: +STR_LOCAL_AUTHORITY_COMPANY_RATING :{YELLOW}{COMPANY} {COMPANY_NUM}: {ORANGE}{STRING} +STR_LOCAL_AUTHORITY_ACTIONS_TITLE :{BLACK}Gnìomhan ri làimh: +STR_LOCAL_AUTHORITY_ACTIONS_TOOLTIP :{BLACK}Liosta dhe rudan as urrainn dhut dèanamh sa bhaile seo - briog air nì airson barrachd fiosrachaidh +STR_LOCAL_AUTHORITY_DO_IT_BUTTON :{BLACK}Dèan seo +STR_LOCAL_AUTHORITY_DO_IT_TOOLTIP :{BLACK}Dèan an gnìomh a thagh thu air an liosta gu h-àrd + +STR_LOCAL_AUTHORITY_ACTION_SMALL_ADVERTISING_CAMPAIGN :Iomairt shanasachd bheag +STR_LOCAL_AUTHORITY_ACTION_MEDIUM_ADVERTISING_CAMPAIGN :Iomairt shanasachd mheadhanach +STR_LOCAL_AUTHORITY_ACTION_LARGE_ADVERTISING_CAMPAIGN :Iomairt shanasachd mhòr +STR_LOCAL_AUTHORITY_ACTION_ROAD_RECONSTRUCTION :Maoinich ath-thogail nan rathaidean ionadail +STR_LOCAL_AUTHORITY_ACTION_STATUE_OF_COMPANY :Tog ìomhaigh air seilbheadair na companaidh +STR_LOCAL_AUTHORITY_ACTION_NEW_BUILDINGS :Maoinich togalaichean ùra +STR_LOCAL_AUTHORITY_ACTION_EXCLUSIVE_TRANSPORT :Ceannaich còirichean giùlain às-dùnach +STR_LOCAL_AUTHORITY_ACTION_BRIBE :Thoir brìbeadh dhan ùghdarras ionadail + +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_SMALL_ADVERTISING :{YELLOW}Dèan iomairt shanasachd bheag ionadail gus barrachd thaistealach is carago a thadhal dha na seirbheisean giùlain agad.{}Cosgais: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_MEDIUM_ADVERTISING :{YELLOW}Dèan iomairt shanasachd mheadhanach ionadail gus barrachd thaistealach is carago a thadhal dha na seirbheisean giùlain agad.{}Cosgais: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_LARGE_ADVERTISING :{YELLOW}Dèan iomairt shanasachd mhòr ionadail gus barrachd thaistealach is carago a thadhal dha na seirbheisean giùlain agad.{}Cosgais: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_ROAD_RECONSTRUCTION :{YELLOW}Maoinich ath-thogail rathaidean a' bhaile. Adhbharaichidh seo bacaidhean mòra air trafaig-rathaid gu ruige 6 mìosan.{}Cosgais: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_STATUE_OF_COMPANY :{YELLOW}Tog ìomhaigh gus urram a thoirt air a chompanaidh agad.{}Cosgais: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_NEW_BUILDINGS :{YELLOW}Maoinich togalaichean malairt ùra sa bhaile.{}Cosgais: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT :{YELLOW}Ceannaich còirichean giùlain às-dùnach sa bhaile fad bliadhna. Cha toir an t-ùghdarras ionadail cead air taistealaich is carago gus stèiseanan aig companaidhean eile a chleachdadh.{}Cosgais: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}Ceannaich an t-ùghdarras ionadail ach an toir iad rangachadh as fhearr dhut, ach tha cunnart ann gum faigh thu peanas mòr ma thèid do ghlacadh.{}Cosgais: {CURRENCY_LONG} + +# Goal window +STR_GOALS_CAPTION :{WHITE}Amasan aig {COMPANY} +STR_GOALS_SPECTATOR_CAPTION :{WHITE}Amasan coitcheann +STR_GOALS_GLOBAL_TITLE :{BLACK}Amasan coitcheann: +STR_GOALS_TEXT :{ORANGE}{STRING} +STR_GOALS_NONE :{ORANGE}- Chan eil gin - +STR_GOALS_SPECTATOR_NONE :{ORANGE}- Chan eil seo iomchaidh - +STR_GOALS_PROGRESS :{ORANGE}{STRING} +STR_GOALS_PROGRESS_COMPLETE :{GREEN}{STRING} +STR_GOALS_COMPANY_TITLE :{BLACK}Amasan na companaidh: +STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Briog air an amas gus am prìomh-shealladh a mheadhanachadh air gnìomhachas/baile/leac. Fosglaidh Ctrl+briogadh port-seallaidh ùr air ionad a' ghnìomhachais/a' bhaile/na lice + +# Goal question window +STR_GOAL_QUESTION_CAPTION_QUESTION :Ceist +STR_GOAL_QUESTION_CAPTION_INFORMATION :Fiosrachadh +STR_GOAL_QUESTION_CAPTION_WARNING :Rabhadh +STR_GOAL_QUESTION_CAPTION_ERROR :Mearachd + +### 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 +STR_GOAL_QUESTION_BUTTON_YES :Tha +STR_GOAL_QUESTION_BUTTON_DECLINE :Diùlt +STR_GOAL_QUESTION_BUTTON_ACCEPT :Gabh ris +STR_GOAL_QUESTION_BUTTON_IGNORE :Leig seachad +STR_GOAL_QUESTION_BUTTON_RETRY :Feuch ris a-rithist +STR_GOAL_QUESTION_BUTTON_PREVIOUS :Am fear roimhe +STR_GOAL_QUESTION_BUTTON_NEXT :An t-ath-fhear +STR_GOAL_QUESTION_BUTTON_STOP :Stad +STR_GOAL_QUESTION_BUTTON_START :Tòisich +STR_GOAL_QUESTION_BUTTON_GO :Siuthad +STR_GOAL_QUESTION_BUTTON_CONTINUE :Lean air adhart +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 + +# Subsidies window +STR_SUBSIDIES_CAPTION :{WHITE}Tarrailean +STR_SUBSIDIES_OFFERED_TITLE :{BLACK}Tarrailean gan tairgsinn airson seirbheisean a bheir: +STR_SUBSIDIES_OFFERED_FROM_TO :{ORANGE}{STRING} bho {STRING} gu {STRING}{YELLOW} (ron {DATE_SHORT.dat}) +STR_SUBSIDIES_NONE :{ORANGE}- Chan eil gin - +STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}Seirbheisean a gheibh tarrail mu thràth: +STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING} bho {STRING} gu {STRING}{YELLOW} ({COMPANY}{YELLOW}, gu ruige {DATE_SHORT}) +STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Briog air an t-seirbheis gus am prìomh-shealladh a mheadhanachadh air a' ghnìomhachas/bhaile. Fosglaidh Ctrl+briogadh port-seallaidh ùr air ionad a' ghnìomhachais/a' bhaile + +# Story book window +STR_STORY_BOOK_CAPTION :{WHITE}An sgeulaiche aig {COMPANY} +STR_STORY_BOOK_SPECTATOR_CAPTION :{WHITE}Sgeulaiche coitcheann +STR_STORY_BOOK_TITLE :{YELLOW}{STRING} +STR_STORY_BOOK_GENERIC_PAGE_ITEM :Duilleag {NUM} +STR_STORY_BOOK_SEL_PAGE_TOOLTIP :{BLACK}Leum gu duilleag shònraichte ’s tu ga taghadh air an liosta teàrnaidh seo. +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 +STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}Cùm Ctrl sìos gus barrachd air aon nì a thaghadh +STR_STATION_LIST_CAPTION :{WHITE}{COMPANY} - {COMMA} stèisean{P "" "" an ""} +STR_STATION_LIST_STATION :{YELLOW}{STATION} {STATION_FEATURES} +STR_STATION_LIST_WAYPOINT :{YELLOW}{WAYPOINT} +STR_STATION_LIST_NONE :{YELLOW}- Chan eil gin - +STR_STATION_LIST_SELECT_ALL_FACILITIES :{BLACK}Tagh a h-uile goireas +STR_STATION_LIST_SELECT_ALL_TYPES :{BLACK}Tagh na h-uile seòrsa carago (a' gabhail a-steach gun charago a' feitheamh) +STR_STATION_LIST_NO_WAITING_CARGO :{BLACK}Chan eil carago dhe sheòrsa sam bith a' feitheamh + +# 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} bho {STATION}) +STR_STATION_VIEW_RESERVED :{YELLOW}({CARGO_SHORT} glèidhte airson luchdadh) + +STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Na ghabhar ris +STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Seall liosta a' charago a thèid a ghabhail ris +STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}Gabhar ri: {WHITE}{CARGO_LIST} + +STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Tha còirichean giùlain às-dùnach aig an stèisean seo sa bhaile seo. +STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{BLACK}Cheannaich {YELLOW}{COMPANY}{BLACK} còirichean giùlain às-dùnach sa bhaile seo. + +STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Rangachaidhean +STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Seall rangachaidhean nan stèiseanan +STR_STATION_VIEW_SUPPLY_RATINGS_TITLE :{BLACK}Solar mìosail is rangachadh ionadail: +STR_STATION_VIEW_CARGO_SUPPLY_RATING :{WHITE}{STRING}: {YELLOW}{COMMA} / {STRING} ({COMMA}%) + +STR_STATION_VIEW_GROUP :{BLACK}Buidhnich a-rèir +STR_STATION_VIEW_WAITING_STATION :Stèisean: A' feitheamh +STR_STATION_VIEW_WAITING_AMOUNT :Meud: A' feitheamh +STR_STATION_VIEW_PLANNED_STATION :Stèisean: Air a' phlana +STR_STATION_VIEW_PLANNED_AMOUNT :Meud: Air a' phlana +STR_STATION_VIEW_FROM :{YELLOW}{CARGO_SHORT} bho {STATION} +STR_STATION_VIEW_VIA :{YELLOW}{CARGO_SHORT} slighe {STATION} +STR_STATION_VIEW_TO :{YELLOW}{CARGO_SHORT} gu {STATION} +STR_STATION_VIEW_FROM_ANY :{RED}{CARGO_SHORT} o stèisean neo-aithnichte +STR_STATION_VIEW_TO_ANY :{RED}{CARGO_SHORT} gu stèisean sam bith +STR_STATION_VIEW_VIA_ANY :{RED}{CARGO_SHORT} slighe stèisean sam bith +STR_STATION_VIEW_FROM_HERE :{GREEN}{CARGO_SHORT} on stèisean seo +STR_STATION_VIEW_VIA_HERE :{GREEN}{CARGO_SHORT} a' stad aig an stèisean seo +STR_STATION_VIEW_TO_HERE :{GREEN}{CARGO_SHORT} gun stèisean seo +STR_STATION_VIEW_NONSTOP :{YELLOW}{CARGO_SHORT} gun stad + +STR_STATION_VIEW_GROUP_S_V_D :Tùs - Slighe - Ceann-uidhe +STR_STATION_VIEW_GROUP_S_D_V :Tùs - Ceann-uidhe - Slighe +STR_STATION_VIEW_GROUP_V_S_D :Slighe -Tùs - Ceann-uidhe +STR_STATION_VIEW_GROUP_V_D_S :Slighe - Ceann-uidhe -Tùs +STR_STATION_VIEW_GROUP_D_S_V :Ceann-uidhe - Tùs - Slighe +STR_STATION_VIEW_GROUP_D_V_S :Ceann-uidhe - Slighe -Tùs + +############ range for rating starts +STR_CARGO_RATING_APPALLING :Sgriosail +STR_CARGO_RATING_VERY_POOR :Glè dhona +STR_CARGO_RATING_POOR :Dona +STR_CARGO_RATING_MEDIOCRE :Meadhanach +STR_CARGO_RATING_GOOD :Math +STR_CARGO_RATING_VERY_GOOD :Glè mhath +STR_CARGO_RATING_EXCELLENT :Uabhasach math +STR_CARGO_RATING_OUTSTANDING :Barraichte +############ range for rating ends + +STR_STATION_VIEW_CENTER_TOOLTIP :{BLACK}Meadhanaich am prìomh-shealladh air an stèisean. Fosglaidh Ctrl+briogadh port-seallaidh ùr air ionad an stèisein +STR_STATION_VIEW_RENAME_TOOLTIP :{BLACK}Atharraich ainm an stèisein + +STR_STATION_VIEW_SCHEDULED_TRAINS_TOOLTIP :{BLACK}Seall a h-uile trèan is an stèisean seo air a' chlàr-ama aice +STR_STATION_VIEW_SCHEDULED_ROAD_VEHICLES_TOOLTIP :{BLACK}Seall a h-uile carbad-rathaid is an stèisean seo air a' chlàr-ama aige +STR_STATION_VIEW_SCHEDULED_AIRCRAFT_TOOLTIP :{BLACK}Seall a h-uile carbad-adhair is am port-adhair seo air an clàr-ama aige +STR_STATION_VIEW_SCHEDULED_SHIPS_TOOLTIP :{BLACK}Seall a h-uile long is am port seo air a' chlàr-ama aice + +STR_STATION_VIEW_RENAME_STATION_CAPTION :Thoir ainm ùr air an stèisean/ionad-luchdaidh + +STR_STATION_VIEW_CLOSE_AIRPORT :{BLACK}Dùin am port-adhair +STR_STATION_VIEW_CLOSE_AIRPORT_TOOLTIP :{BLACK}Bac carbadan-adhair bho laighe air a' phort-adhair seo + +# Waypoint/buoy view window +STR_WAYPOINT_VIEW_CAPTION :{WHITE}{WAYPOINT} +STR_WAYPOINT_VIEW_CENTER_TOOLTIP :{BLACK}Meadhanaich am prìomh-shealladh air a' phuing-thurais. Fosglaidh Ctrl+briogadh port-seallaidh ùr air ionad na puinge-turais +STR_WAYPOINT_VIEW_CHANGE_WAYPOINT_NAME :{BLACK}Thoir ainm ùr air a' phuing-thurais +STR_BUOY_VIEW_CENTER_TOOLTIP :{BLACK}Meadhanaich am prìomh-shealladh air an fhleodrainn. Fosglaidh Ctrl+briogadh port-seallaidh ùr air ionad na fleodrainn +STR_BUOY_VIEW_CHANGE_BUOY_NAME :{BLACK}Atharraich ainm an fhleodrainn + +STR_EDIT_WAYPOINT_NAME :{WHITE}Deasaich ainm na puinge-turais + +# Finances window +STR_FINANCES_CAPTION :{WHITE}Maoin aig {COMPANY} {BLACK}{COMPANY_NUM} +STR_FINANCES_EXPENDITURE_INCOME_TITLE :{WHITE}Caiteachas/Teachd a-steach +STR_FINANCES_YEAR :{WHITE}{NUM} +STR_FINANCES_SECTION_CONSTRUCTION :{GOLD}Togail +STR_FINANCES_SECTION_NEW_VEHICLES :{GOLD}Carbadan ùra +STR_FINANCES_SECTION_TRAIN_RUNNING_COSTS :{GOLD}Cosgaisean ruith nan trèanaichean +STR_FINANCES_SECTION_ROAD_VEHICLE_RUNNING_COSTS :{GOLD}Cosgaisean ruith nan carbadan-rathaid +STR_FINANCES_SECTION_AIRCRAFT_RUNNING_COSTS :{GOLD}Cosgaisean ruith nan carbadan-adhair +STR_FINANCES_SECTION_SHIP_RUNNING_COSTS :{GOLD}Cosgaisean ruith nan long +STR_FINANCES_SECTION_PROPERTY_MAINTENANCE :{GOLD}Cumail suas nan sealbh +STR_FINANCES_SECTION_TRAIN_INCOME :{GOLD}Teachd a-steach nan trèanaichean +STR_FINANCES_SECTION_ROAD_VEHICLE_INCOME :{GOLD}Teachd a-steach nan carbadan-rathaid +STR_FINANCES_SECTION_AIRCRAFT_INCOME :{GOLD}Teachd a-steach nan carbadan-adhair +STR_FINANCES_SECTION_SHIP_INCOME :{GOLD}Teachd a-steach nan long +STR_FINANCES_SECTION_LOAN_INTEREST :{GOLD}Luach-rèidh iasaid +STR_FINANCES_SECTION_OTHER :{GOLD}Eile +STR_FINANCES_NEGATIVE_INCOME :{BLACK}-{CURRENCY_LONG} +STR_FINANCES_POSITIVE_INCOME :{BLACK}+{CURRENCY_LONG} +STR_FINANCES_TOTAL_CAPTION :{WHITE}Iomlan: +STR_FINANCES_BANK_BALANCE_TITLE :{WHITE}Balans a' bhanca +STR_FINANCES_LOAN_TITLE :{WHITE}Iasad +STR_FINANCES_MAX_LOAN :{WHITE}Iasad as motha: {BLACK}{CURRENCY_LONG} +STR_FINANCES_TOTAL_CURRENCY :{BLACK}{CURRENCY_LONG} +STR_FINANCES_BORROW_BUTTON :{BLACK}Gabh {CURRENCY_LONG} air iasad +STR_FINANCES_BORROW_TOOLTIP :{BLACK}Meudaich an iasad. Le Ctrl+briogadh, gabhaidh tu na dh'fhaodas tu air iasad +STR_FINANCES_REPAY_BUTTON :{BLACK}Pàigh {CURRENCY_LONG} air ais +STR_FINANCES_REPAY_TOOLTIP :{BLACK}Pàigh pàirt dhen iasad air ais. Le Ctrl+briogadh, pàighidh tu air ais nas urrainn dhut +STR_FINANCES_INFRASTRUCTURE_BUTTON :{BLACK}Bun-structar + +# Company view +STR_COMPANY_VIEW_CAPTION :{WHITE}{COMPANY} {BLACK}{COMPANY_NUM} +STR_COMPANY_VIEW_PRESIDENT_MANAGER_TITLE :{WHITE}{PRESIDENT_NAME}{}{GOLD}(Stiùiriche) + +STR_COMPANY_VIEW_INAUGURATED_TITLE :{GOLD}Air a stèidheachadh: {WHITE}{NUM} +STR_COMPANY_VIEW_COLOUR_SCHEME_TITLE :{GOLD}Sgeama nan dathan: +STR_COMPANY_VIEW_VEHICLES_TITLE :{GOLD}Carbadan: +STR_COMPANY_VIEW_TRAINS :{G=f}{WHITE}{COMMA} {P trèan thrèan trèanaichean trèan} +STR_COMPANY_VIEW_ROAD_VEHICLES :{WHITE}{COMMA} {P charbad-rathaid charbad-rathaid carbadan-rathaid carbad-rathaid} +STR_COMPANY_VIEW_AIRCRAFT :{WHITE}{COMMA} {P charbad-adhair charbad-adhair carbadan-adhair carbad-adhair} +STR_COMPANY_VIEW_SHIPS :{G=f}{WHITE}{COMMA} {P long long longan long} +STR_COMPANY_VIEW_VEHICLES_NONE :{WHITE}Gun charbad +STR_COMPANY_VIEW_COMPANY_VALUE :{GOLD}Luach a' chompanaidh: {WHITE}{CURRENCY_LONG} +STR_COMPANY_VIEW_SHARES_OWNED_BY :{WHITE}({COMMA}% le {COMPANY}) +STR_COMPANY_VIEW_INFRASTRUCTURE :{GOLD}Bun-structar: +STR_COMPANY_VIEW_INFRASTRUCTURE_RAIL :{WHITE}{COMMA} {P earrann earrann earrannan earrann} rèile +STR_COMPANY_VIEW_INFRASTRUCTURE_ROAD :{WHITE}{COMMA} {P earrann earrann earrannan earrann} rathaid +STR_COMPANY_VIEW_INFRASTRUCTURE_WATER :{WHITE}{COMMA} {P leac leac leacan leac} uisge +STR_COMPANY_VIEW_INFRASTRUCTURE_STATION :{WHITE}{COMMA} {P leac leac leacan leac} stèisein +STR_COMPANY_VIEW_INFRASTRUCTURE_AIRPORT :{WHITE}{COMMA} {P phort-adhair phort-adhair puirt-adhair port-adhair} +STR_COMPANY_VIEW_INFRASTRUCTURE_NONE :{WHITE}Gun bhun-structar + +STR_COMPANY_VIEW_BUILD_HQ_BUTTON :{BLACK}Tog ionad na companaidh +STR_COMPANY_VIEW_BUILD_HQ_TOOLTIP :{BLACK}Tog ionad na companaidh +STR_COMPANY_VIEW_VIEW_HQ_BUTTON :{BLACK}Seall ionad na companaidh +STR_COMPANY_VIEW_VIEW_HQ_TOOLTIP :{BLACK}Seall ionad na companaidh +STR_COMPANY_VIEW_RELOCATE_HQ :{BLACK}Imrich ionad na companaidh +STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Ath-thog ionad na companaidh àiteigin eile airson cosgais dhe 1% dhe luach a' chompanaidh. Seallaidh Shift+briogadh tuairmse nan cosgaisean gun a bhith ag imrich ionad na companaidh +STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}Mion-fhiosrachadh +STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}Seall cunntadh mionaideach a' bhun-structair + +STR_COMPANY_VIEW_NEW_FACE_BUTTON :{BLACK}Aghaidh ùr +STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}Tagh aghaidh ùr airson an stiùiriche +STR_COMPANY_VIEW_COLOUR_SCHEME_BUTTON :{BLACK}Sgeama nan dathan +STR_COMPANY_VIEW_COLOUR_SCHEME_TOOLTIP :{BLACK}Atharraich dathan na companaidh +STR_COMPANY_VIEW_COMPANY_NAME_BUTTON :{BLACK}Ainm na companaidh +STR_COMPANY_VIEW_COMPANY_NAME_TOOLTIP :{BLACK}Atharraich ainm na companaidh +STR_COMPANY_VIEW_PRESIDENT_NAME_BUTTON :{BLACK}Ainm an stiùiriche +STR_COMPANY_VIEW_PRESIDENT_NAME_TOOLTIP :{BLACK}Thoir ainm ùr air an stiùiriche + +STR_COMPANY_VIEW_BUY_SHARE_BUTTON :{BLACK}Ceannaich earrann dhe 25% aig a' chompanaidh +STR_COMPANY_VIEW_SELL_SHARE_BUTTON :{BLACK}Reic earrann dhe 25% aig a' chompanaidh +STR_COMPANY_VIEW_BUY_SHARE_TOOLTIP :{BLACK}Ceannaich earrann dhe 25% aig a' chompanaidh. Seallaidh Shift+briogadh tuairmse air na cosgaisean gun a bhith a' cheannach earrann +STR_COMPANY_VIEW_SELL_SHARE_TOOLTIP :{BLACK}Reic earrann dhe 25% aig a' chompanaidh seo. Seallaidh Shift+briogadh tuairmse air an teachd a-steach gun a bhith a' reic earrann sam bith + +STR_COMPANY_VIEW_COMPANY_NAME_QUERY_CAPTION :Ainm na companaidh +STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :Ainm an stiùiriche + +STR_BUY_COMPANY_MESSAGE :{WHITE}Tha sinn a' sireadh companaidh giùlain a ghabhas stiùir air a' chompanaidh againn.{}{}A bheil thu airson {COMPANY} a cheannach airson {CURRENCY_LONG}? + +# Company infrastructure window +STR_COMPANY_INFRASTRUCTURE_VIEW_CAPTION :{WHITE}Am bun-structar aig {COMPANY} +STR_COMPANY_INFRASTRUCTURE_VIEW_RAIL_SECT :{GOLD}Earrannan rèile: +STR_COMPANY_INFRASTRUCTURE_VIEW_SIGNALS :{WHITE}Comharran +STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD_SECT :{GOLD}Earrannan rathaid: +STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD :{WHITE}Rathad +STR_COMPANY_INFRASTRUCTURE_VIEW_TRAMWAY :{WHITE}Slighe-trama +STR_COMPANY_INFRASTRUCTURE_VIEW_WATER_SECT :{GOLD}Leacan uisge: +STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS :{WHITE}Canalan +STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}Stèiseanan: +STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}Leacan stèisein +STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}Puirt-adhair +STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL :{WHITE}{CURRENCY_LONG}/bliadhna + +# Industry directory +STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}Gnìomhachasan +STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}- Gun ghnìomhachas - +STR_INDUSTRY_DIRECTORY_ITEM :{ORANGE}{INDUSTRY}{BLACK} ({CARGO_LONG}{STRING}){YELLOW} ({COMMA}% air a ghiùlan) +STR_INDUSTRY_DIRECTORY_ITEM_TWO :{ORANGE}{INDUSTRY}{BLACK} ({CARGO_LONG}{STRING}/{CARGO_LONG}{STRING}){YELLOW} ({COMMA}%/{COMMA}% air a ghiùlan) +STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUSTRY} +STR_INDUSTRY_DIRECTORY_LIST_CAPTION :{BLACK}Ainmean nan gnìomhachasan - briog air an ainm gus am prìomh-shealladh a mheadhanachadh air a' ghnìomhachais. Fosglaidh Ctrl+briogadh port-seallaidh ùr air ionad a' ghnìomhachais + +# Industry view +STR_INDUSTRY_VIEW_CAPTION :{WHITE}{INDUSTRY} +STR_INDUSTRY_VIEW_PRODUCTION_LAST_MONTH_TITLE :{BLACK}Dèanadas sa mhìos seo chaidh: +STR_INDUSTRY_VIEW_TRANSPORTED :{YELLOW}{CARGO_LONG}{STRING}{BLACK} ({COMMA}% air a ghiùlan) +STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Meadhanaich am prìomh-shealladh air a' ghnìomhachas. Fosglaidh Ctrl+briogadh port-seallaidh ùr air ionad a' ghnìomhachais +STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Ìre an dèanadais: {YELLOW}{COMMA}% +STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}Tha an gnìomhachas gu bhith a dhùnadh a dh'aithghearr! + +############ range for requires starts +STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Feum air: {YELLOW}{STRING}{STRING} +STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Feum air: {YELLOW}{STRING}{STRING}, {STRING}{STRING} +STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Feum air: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING} +############ range for requires ends + +############ range for produces starts +STR_INDUSTRY_VIEW_WAITING_FOR_PROCESSING :{BLACK}Carago a' feitheamh air giullachd: +STR_INDUSTRY_VIEW_WAITING_STOCKPILE_CARGO :{YELLOW}{CARGO_LONG}{STRING}{BLACK} +STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Toradh: {YELLOW}{STRING}{STRING} +STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}Toradh: {YELLOW}{STRING}{STRING}, {STRING}{STRING} +############ range for produces ends + +STR_CONFIG_GAME_PRODUCTION :{WHITE}Atharraich an saothrachaidh (iomadach aig 8, suas gu 2040) +STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}Atharraich ìre an saothrachaidh (ceudad, suas gu 800%) + +# Vehicle lists +STR_VEHICLE_LIST_TRAIN_CAPTION :{WHITE}{STRING} - {COMMA} {P trèan thrèan trèanaichean trèan} +STR_VEHICLE_LIST_ROAD_VEHICLE_CAPTION :{WHITE}{STRING} - {COMMA} {P charbad charbad carbadan carbad}-rathaid +STR_VEHICLE_LIST_SHIP_CAPTION :{WHITE}{STRING} - {COMMA} long{P "" "" an ""} +STR_VEHICLE_LIST_AIRCRAFT_CAPTION :{WHITE}{STRING} - {COMMA} {P charbad charbad carbadan carbad}-adhair + +STR_VEHICLE_LIST_TRAIN_LIST_TOOLTIP :{BLACK}Trèanaichean - briog air trèana airson fiosrachaidh +STR_VEHICLE_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}Carbadan-rathaid - briog air carbad airson fiosrachaidh +STR_VEHICLE_LIST_SHIP_TOOLTIP :{BLACK}Longan - briog air long airson fiosrachaidh +STR_VEHICLE_LIST_AIRCRAFT_TOOLTIP :{BLACK}Carbadan-adhair - briog air carbad airson fiosrachaidh + +STR_VEHICLE_LIST_PROFIT_THIS_YEAR_LAST_YEAR :{TINY_FONT}{BLACK}Prothaid am bliadhna: {CURRENCY_LONG} (an-uiridh: {CURRENCY_LONG}) + +STR_VEHICLE_LIST_AVAILABLE_TRAINS :Trèanaichean ri làimh +STR_VEHICLE_LIST_AVAILABLE_ROAD_VEHICLES :Carbadan ri làimh +STR_VEHICLE_LIST_AVAILABLE_SHIPS :Longan ri làimh +STR_VEHICLE_LIST_AVAILABLE_AIRCRAFT :Carbadan-adhair ri làimh +STR_VEHICLE_LIST_AVAILABLE_ENGINES_TOOLTIP :{BLACK}Seall liosta dhe na co-dhealbhachdan einnsein airson an t-seòrsa carbaid seo + +STR_VEHICLE_LIST_MANAGE_LIST :{BLACK}Stiùirich an liosta +STR_VEHICLE_LIST_MANAGE_LIST_TOOLTIP :{BLACK}Cuir òrduighean dhan a h-uile carbad air an liosta seo +STR_VEHICLE_LIST_REPLACE_VEHICLES :Leasaich carbadan +STR_VEHICLE_LIST_SEND_FOR_SERVICING :Cuir airson obrach-glèidhidh + +STR_VEHICLE_LIST_SEND_TRAIN_TO_DEPOT :Cuir gu trèan-lann +STR_VEHICLE_LIST_SEND_ROAD_VEHICLE_TO_DEPOT :Cuir gu garaids +STR_VEHICLE_LIST_SEND_SHIP_TO_DEPOT :Cuir gu cala +STR_VEHICLE_LIST_SEND_AIRCRAFT_TO_HANGAR :Cuir gu hangar + +STR_VEHICLE_LIST_MASS_STOP_LIST_TOOLTIP :{BLACK}Briog gus a h-uile carbad air an liosta a chur na stad +STR_VEHICLE_LIST_MASS_START_LIST_TOOLTIP :{BLACK}Briog gus a h-uile carbad air an liosta a thòiseachadh + +STR_VEHICLE_LIST_SHARED_ORDERS_LIST_CAPTION :{WHITE}Òrduighean gan co-roinneadh le {COMMA} {P charbad charbad carbadan carbad} + +# Group window +STR_GROUP_ALL_TRAINS :Na h-uile trèan +STR_GROUP_ALL_ROAD_VEHICLES :Na h-uile carbad-rathaid +STR_GROUP_ALL_SHIPS :Na h-uile long +STR_GROUP_ALL_AIRCRAFTS :Na h-uile carbad-adhair + +STR_GROUP_DEFAULT_TRAINS :Trèanaichean gun bhuidheann +STR_GROUP_DEFAULT_ROAD_VEHICLES :Carbadan-rathaid gun bhuidheann +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. 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 + +STR_GROUP_RENAME_CAPTION :{BLACK}Thoir ainm ùr air buidheann + +# Build vehicle window +STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :Carbadan-rèile ùra +STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :Carbadan-rèile dealain ùra +STR_BUY_VEHICLE_TRAIN_MONORAIL_CAPTION :Carbadan aona-rèile ùra +STR_BUY_VEHICLE_TRAIN_MAGLEV_CAPTION :Carbadan magnaiteach ùra + +STR_BUY_VEHICLE_TRAIN_ALL_CAPTION :Carbadan-rèile ùra +STR_BUY_VEHICLE_ROAD_VEHICLE_CAPTION :Carbadan-rathaid ùra +STR_BUY_VEHICLE_SHIP_CAPTION :Longan ùra +STR_BUY_VEHICLE_AIRCRAFT_CAPTION :Carbadan-adhair ùra + +STR_PURCHASE_INFO_COST_WEIGHT :{BLACK}Cosgais: {GOLD}{CURRENCY_LONG}{BLACK} Cuideam: {GOLD}{WEIGHT_SHORT} +STR_PURCHASE_INFO_SPEED_POWER :{BLACK}Luaths: {GOLD}{VELOCITY}{BLACK} Cumhachd: {GOLD}{POWER} +STR_PURCHASE_INFO_SPEED :{BLACK}Luaths: {GOLD}{VELOCITY} +STR_PURCHASE_INFO_SPEED_OCEAN :{BLACK}Luaths air a' chuain: {GOLD}{VELOCITY} +STR_PURCHASE_INFO_SPEED_CANAL :{BLACK}Luaths air canal/abhainn: {GOLD}{VELOCITY} +STR_PURCHASE_INFO_RUNNINGCOST :{BLACK}Cosgaisean ruith: {GOLD}{CURRENCY_LONG}/bliadhna +STR_PURCHASE_INFO_CAPACITY :{BLACK}Tomhas-lìonaidh: {GOLD}{CARGO_LONG} {STRING} +STR_PURCHASE_INFO_REFITTABLE :(gabhaidh mùthadh) +STR_PURCHASE_INFO_DESIGNED_LIFE :{BLACK}Air a dhealbhadh: {GOLD}{NUM}{BLACK} Beatha: {GOLD}{COMMA} bliadhna +STR_PURCHASE_INFO_RELIABILITY :{BLACK}Earbsachd as motha: {GOLD}{COMMA}% +STR_PURCHASE_INFO_COST :{BLACK}Cosgais: {GOLD}{CURRENCY_LONG} +STR_PURCHASE_INFO_WEIGHT_CWEIGHT :{BLACK}Cuideam: {GOLD}{WEIGHT_SHORT} ({WEIGHT_SHORT}) +STR_PURCHASE_INFO_COST_SPEED :{BLACK}Cosgais: {GOLD}{CURRENCY_LONG}{BLACK} Luaths: {GOLD}{VELOCITY} +STR_PURCHASE_INFO_AIRCRAFT_CAPACITY :{BLACK}Tomhas-lìonaidh: {GOLD}{CARGO_LONG}, {CARGO_LONG} +STR_PURCHASE_INFO_PWAGPOWER_PWAGWEIGHT :{BLACK}Carbadan le cumhachd: {GOLD}+{POWER}{BLACK} Cuideam: {GOLD}+{WEIGHT_SHORT} +STR_PURCHASE_INFO_REFITTABLE_TO :{BLACK}Gabhaidh mùthadh airson: {GOLD}{STRING} +STR_PURCHASE_INFO_ALL_TYPES :Na h-uile seòrsa dhe charago +STR_PURCHASE_INFO_ALL_BUT :Na h-uile ach {CARGO_LIST} +STR_PURCHASE_INFO_MAX_TE :{BLACK}Spàirn tàirnge as motha: {GOLD}{FORCE} +STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Astar: {GOLD}{COMMA} {P leac leac leacan leac} + +STR_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_BUY_VEHICLE_BUTTON :{BLACK}Ceannaich carbad +STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_BUTTON :{BLACK}Ceannaich carbad +STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_BUTTON :{BLACK}Ceannaich long +STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_BUTTON :{BLACK}Ceannaich carbad-adhair + +STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_TOOLTIP :{BLACK}Ceannaich an carbad-rèile a thagh thu. Seallaidh Shift+briogadh tuairmse air na cosgaisean gun a bhith a' ceannach dad +STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_TOOLTIP :{BLACK}Ceannaich an carbad-rathaid a thagh thu. Seallaidh Shift+briogadh tuairmse air na cosgaisean gun a bhith a' ceannach dad +STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_TOOLTIP :{BLACK}Ceannaich an long a thagh thu. Seallaidh Shift+briogadh tuairmse air na cosgaisean gun a bhith a' ceannach dad +STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_TOOLTIP :{BLACK}Ceannaich an carbad-adhair a thagh thu. Seallaidh Shift+briogadh tuairmse air na cosgaisean gun a bhith a' ceannach dad + +STR_BUY_VEHICLE_TRAIN_RENAME_BUTTON :{BLACK}Thoir ainm ùr air +STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_BUTTON :{BLACK}Thoir ainm ùr air +STR_BUY_VEHICLE_SHIP_RENAME_BUTTON :{BLACK}Thoir ainm ùr air +STR_BUY_VEHICLE_AIRCRAFT_RENAME_BUTTON :{BLACK}Thoir ainm ùr air + +STR_BUY_VEHICLE_TRAIN_RENAME_TOOLTIP :{BLACK}Thoir ainm ùr air an t-seòrsa dhe charbad-rèile +STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK}Thoir ainm ùr air an t-seòrsa dhe charbad-rathaid +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_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 +STR_QUERY_RENAME_AIRCRAFT_TYPE_CAPTION :{WHITE}Thoir ainm ùr air an t-seòrsa dhe charbad-adhair + +# Depot window +STR_DEPOT_CAPTION :{WHITE}{DEPOT} + +STR_DEPOT_RENAME_TOOLTIP :{BLACK}Thoir ainm ùr air an togalach seo +STR_DEPOT_RENAME_DEPOT_CAPTION :Ainm ùr na garaids / na trèan-lann / a' chala / a' hangair + +STR_DEPOT_NO_ENGINE :{BLACK}- +STR_DEPOT_VEHICLE_TOOLTIP :{BLACK}{ENGINE}{STRING} +STR_DEPOT_VEHICLE_TOOLTIP_CHAIN :{BLACK}{NUM} {P charbad charbad carbadan carbad}{STRING} +STR_DEPOT_VEHICLE_TOOLTIP_CARGO :{}{CARGO_LONG} ({CARGO_SHORT}) + +STR_DEPOT_TRAIN_LIST_TOOLTIP :{BLACK}Trèanaichean - slaod carbad le briogadh deas gus a chur ris/a thoirt air falbh bhon trèan no dèan briogadh deas airson fiosrachaidh. Cùm Ctrl sìos gus an dà rud a chur an sàs air a' cheangal a leanas +STR_DEPOT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Carbadan - Dèan briogadh deas air a' charbad airson fiosrachaidh +STR_DEPOT_SHIP_LIST_TOOLTIP :{BLACK}Longan - Dèan briogadh deas air an long airson fiosrachaidh +STR_DEPOT_AIRCRAFT_LIST_TOOLTIP :{BLACK}Carbadan-adhair - Dèan briogadh deas air a' charbad airson fiosrachaidh + +STR_DEPOT_TRAIN_SELL_TOOLTIP :{BLACK}Slaod carbad-rèile an-seo gus a reic +STR_DEPOT_ROAD_VEHICLE_SELL_TOOLTIP :{BLACK}Slaod carbad-rathaid an-seo gus a reic +STR_DEPOT_SHIP_SELL_TOOLTIP :{BLACK}Slaod long an-seo gus a reic +STR_DEPOT_AIRCRAFT_SELL_TOOLTIP :{BLACK}Slaod carbad-adhair an-seo gus a reic + +STR_DEPOT_DRAG_WHOLE_TRAIN_TO_SELL_TOOLTIP :{BLACK}Slaod einnsean trèan an-seo gus an trèan shlàn a reic + +STR_DEPOT_SELL_ALL_BUTTON_TRAIN_TOOLTIP :{BLACK}Reic a h-uile trèan san trèan-lann +STR_DEPOT_SELL_ALL_BUTTON_ROAD_VEHICLE_TOOLTIP :{BLACK}Reic a h-uile carbad-rathaid sa gharaids +STR_DEPOT_SELL_ALL_BUTTON_SHIP_TOOLTIP :{BLACK}Reic a h-uile long sa chala +STR_DEPOT_SELL_ALL_BUTTON_AIRCRAFT_TOOLTIP :{BLACK}Reic a h-uile carbad-adhair sa hangar + +STR_DEPOT_AUTOREPLACE_TRAIN_TOOLTIP :{BLACK}Fèin-leasaich a h-uile trèan san trèan-lann +STR_DEPOT_AUTOREPLACE_ROAD_VEHICLE_TOOLTIP :{BLACK}Fèin-leasaich a h-uile carbad-rathaid sa gharaids +STR_DEPOT_AUTOREPLACE_SHIP_TOOLTIP :{BLACK}Fèin-leasaich a h-uile long sa chala +STR_DEPOT_AUTOREPLACE_AIRCRAFT_TOOLTIP :{BLACK}Fèin-leasaich a h-uile carbad-adhair sa hangar + +STR_DEPOT_TRAIN_NEW_VEHICLES_BUTTON :{BLACK}Carbadan ùra +STR_DEPOT_ROAD_VEHICLE_NEW_VEHICLES_BUTTON :{BLACK}Carbadan ùra +STR_DEPOT_SHIP_NEW_VEHICLES_BUTTON :{BLACK}Longan ùra +STR_DEPOT_AIRCRAFT_NEW_VEHICLES_BUTTON :{BLACK}Carbadan ùra + +STR_DEPOT_TRAIN_NEW_VEHICLES_TOOLTIP :{BLACK}Ceannaich carbad-rèile ùr +STR_DEPOT_ROAD_VEHICLE_NEW_VEHICLES_TOOLTIP :{BLACK}Ceannaich carbad-rathaid ùr +STR_DEPOT_SHIP_NEW_VEHICLES_TOOLTIP :{BLACK}Ceannaich long ùr +STR_DEPOT_AIRCRAFT_NEW_VEHICLES_TOOLTIP :{BLACK}Ceannaich carbad-adhair ùr + +STR_DEPOT_CLONE_TRAIN :{BLACK}Dèan lethbhreac dhe thrèan +STR_DEPOT_CLONE_ROAD_VEHICLE :{BLACK}Dèan lethbhreac dhe charbad +STR_DEPOT_CLONE_SHIP :{BLACK}Dèan lethbhreac dhe long +STR_DEPOT_CLONE_AIRCRAFT :{BLACK}Dèan lethbhreac dhe charbad + +STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}Ceannaichidh seo lethbhreac dhe thrèan, a' gabhail a-steach a h-uile carbad. Briog air a' phutan seo is an uairsin air trèan taobh a-staigh no a-muigh na trèan-lainn. Thoir na h-aon òrduighean dhi le Ctrl+briogadh. Seallaidh Shift+briogadh tuairmse air na cosgaisean gun a bhith a' ceannach dad +STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Ceannaichidh seo lethbhreac dhe charbad-rathaid. Briog air a' phutan seo is an uairsin air carbad taobh a-staigh no a-muigh na garaids. Thoir na h-aon òrduighean dha le Ctrl+briogadh. Seallaidh Shift+briogadh tuairmse air na cosgaisean gun a bhith a' ceannach dad +STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}Ceannaichidh seo lethbhreac dhe long. Briog air a' phutan seo is an uairsin air long taobh a-staigh no a-muigh a' chalaidh. Thoir na h-aon òrduighean dhi le Ctrl+briogadh. Seallaidh Shift+briogadh tuairmse air na cosgaisean gun a bhith a' ceannach dad +STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Ceannaichidh seo lethbhreac dhe charbad-adhair. Briog air a' phutan seo is an uairsin air carbad taobh a-staigh no a-muigh a' hangair. Thoir na h-aon òrduighean dha le Ctrl+briogadh. Seallaidh Shift+briogadh tuairmse air na cosgaisean gun a bhith a' ceannach dad + +STR_DEPOT_TRAIN_LOCATION_TOOLTIP :{BLACK}Meadhanaich am prìomh-shealladh air an trèan-lann. Fosglaidh Ctrl+briogadh port-seallaidh ùr air ionad na trèan-lainn +STR_DEPOT_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Meadhanaich am prìomh-shealladh air a' gharaids. Fosglaidh Ctrl+briogadh port-seallaidh ùr air ionad na garaids +STR_DEPOT_SHIP_LOCATION_TOOLTIP :{BLACK}Meadhanaich am prìomh-shealladh air a' chala. Fosglaidh Ctrl+briogadh port-seallaidh ùr air ionad a' chalaidh +STR_DEPOT_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Meadhanaich am prìomh-shealladh air a' hangar. Fosglaidh Ctrl+briogadh port-seallaidh ùr air ionad a' hangair + +STR_DEPOT_VEHICLE_ORDER_LIST_TRAIN_TOOLTIP :{BLACK}Faigh liosta dhe na h-uile trèana is an trèan-lann seo sna h-òrduighean aice +STR_DEPOT_VEHICLE_ORDER_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}Faigh liosta dhe na h-uile carbad-rathaid is a' gharaids seo sna h-òrduighean aige +STR_DEPOT_VEHICLE_ORDER_LIST_SHIP_TOOLTIP :{BLACK}Faigh liosta dhe na h-uile long is an cala seo sna h-òrduighean aice +STR_DEPOT_VEHICLE_ORDER_LIST_AIRCRAFT_TOOLTIP :{BLACK}Faigh liosta dhe na h-uile carbad-adhair is an hangar seo sna h-òrduighean aige + +STR_DEPOT_MASS_STOP_DEPOT_TRAIN_TOOLTIP :{BLACK}Briog gus a h-uile trèan a chur na stad san trèan-lann +STR_DEPOT_MASS_STOP_DEPOT_ROAD_VEHICLE_TOOLTIP :{BLACK}Briog gus a h-uile carbad-rathaid a chur na stad sa gharaids +STR_DEPOT_MASS_STOP_DEPOT_SHIP_TOOLTIP :{BLACK}Briog gus a h-uile long a chur na stad sa chala +STR_DEPOT_MASS_STOP_HANGAR_TOOLTIP :{BLACK}Briog gus a h-uile carbad-adhair a chur na stad sa hangar + +STR_DEPOT_MASS_START_DEPOT_TRAIN_TOOLTIP :{BLACK}Briog gus a h-uile trèan san trèan-lann a chur a' dol +STR_DEPOT_MASS_START_DEPOT_ROAD_VEHICLE_TOOLTIP :{BLACK}Briog gus a h-uile carbad-rathaid sa gharaids a chur a' dol +STR_DEPOT_MASS_START_DEPOT_SHIP_TOOLTIP :{BLACK}Briog gus a h-uile long sa chala a chur a' dol +STR_DEPOT_MASS_START_HANGAR_TOOLTIP :{BLACK}Briog gus a h-uile carbad-adhair sa hangar a chur a' dol + +STR_DEPOT_SELL_CONFIRMATION_TEXT :{YELLOW}Tha thu an impis na h-uile carbad sa gharaids / san trèan-lann / sa chala / sa hangar seo a reic. A bheil thu cinnteach? + +# Engine preview window +STR_ENGINE_PREVIEW_CAPTION :{WHITE}Brath bho dhèanadair a' charbaid +STR_ENGINE_PREVIEW_MESSAGE :{GOLD}Tha sinn air {STRING} ùr a dhealbhadh - a bheil ùidh agaibh ann ’s nach cleachd ach sibh fhèin e fad bliadhna ach am faic sinn dè cho math ’s a dh’obraicheas e mus reic sinn don a h-uile duine e? +STR_ENGINE_PREVIEW_RAILROAD_LOCOMOTIVE :einnsean-rèile +STR_ENGINE_PREVIEW_ROAD_VEHICLE :carbad-rathaid +STR_ENGINE_PREVIEW_AIRCRAFT :carbad-adhair +STR_ENGINE_PREVIEW_SHIP :{G=f}long +STR_ENGINE_PREVIEW_MONORAIL_LOCOMOTIVE :einnsean aona-rèile +STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :einnsean magnaiteach + +STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Cosgais: {CURRENCY_LONG} Cuideam: {WEIGHT_SHORT}{}Luaths: {VELOCITY} Cumhachd: {POWER}{}Cosgaisean ruith: {CURRENCY_LONG}/bliadhna{}Tomhas-lìonaidh: {CARGO_LONG} +STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}Cosgais: {CURRENCY_LONG} Cuideam: {WEIGHT_SHORT}{}Luaths: {VELOCITY} Cumhachd: {POWER} Neart: {6:FORCE}{}Cosgaisean ruith: {4:CURRENCY_LONG}/bliadhna{}Tomhas-lìonaidh: {5:CARGO_LONG} +STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST :{BLACK}Cosgais: {CURRENCY_LONG} Luaths as motha: {VELOCITY}{}Tomhas-lìonaidh: {CARGO_LONG}, {CARGO_LONG}{}Cosgaisean ruith: {CURRENCY_LONG}/bliadhna +STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK}Cosgais: {CURRENCY_LONG} Luaths as motha: {VELOCITY}{}Tomhas-lìonaidh: {CARGO_LONG}{}Cosgaisean ruith: {CURRENCY_LONG}/bliadhna +STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_CAPACITY_RUNCOST:{BLACK}Cosgais: {CURRENCY_LONG} Luaths as motha: {VELOCITY} Astar: {COMMA} leacan{}Tomhas-lìonaidh: {CARGO_LONG}, {CARGO_LONG}{}Cosgaisean ruith: {CURRENCY_LONG}/bliadhna +STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}Cosgais: {CURRENCY_LONG} Luaths as motha: {VELOCITY} Astar: {COMMA} leacan{}Tomhas-lìonaidh: {CARGO_LONG}{}Cosgaisean ruith: {CURRENCY_LONG}/bliadhna + +# Autoreplace window +STR_REPLACE_VEHICLES_WHITE :{WHITE}Leasaich {STRING} - {STRING} +STR_REPLACE_VEHICLE_TRAIN :{G=f}Trèan +STR_REPLACE_VEHICLE_ROAD_VEHICLE :Carbad-rathaid +STR_REPLACE_VEHICLE_SHIP :{G=f}Long +STR_REPLACE_VEHICLE_AIRCRAFT :Carbad-adhair + +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ì + +STR_REPLACE_VEHICLES_START :{BLACK}Tòisich le leasachadh nan carbadan +STR_REPLACE_VEHICLES_NOW :Leasaich a h-uile carbad an-dràsta +STR_REPLACE_VEHICLES_WHEN_OLD :Na leasaich ach seann charbadan +STR_REPLACE_HELP_START_BUTTON :{BLACK}Brùth gus tòiseachadh le leasachadh an t-seòrsa einnsein a thagh thu air an taobh chlì type leis an t-seòrsa einnsein a thagh thu air an taobh deas +STR_REPLACE_NOT_REPLACING :{BLACK}Gun leasachadh +STR_REPLACE_NOT_REPLACING_VEHICLE_SELECTED :{BLACK}Cha deach carbad sam bith a thaghadh +STR_REPLACE_REPLACING_WHEN_OLD :{ENGINE} nuair a bhios e sean +STR_REPLACE_VEHICLES_STOP :{BLACK}Sguir dhe leasachadh nan carbadan +STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Briog air ach nach tèid einnseanan dhen t-seòrsa a thagh thu air an taobh chlì a leasachadh + +STR_REPLACE_ENGINE_WAGON_SELECT :{BLACK}A' leasachadh: {ORANGE}{STRING} +STR_REPLACE_ENGINE_WAGON_SELECT_HELP :{BLACK}Gearr leum eadar uinneagan leasachadh nan einnseanan is nan carbadan +STR_REPLACE_ENGINES :Einnseanan +STR_REPLACE_WAGONS :Carbadan + +STR_REPLACE_HELP_RAILTYPE :{BLACK}Tagh an seòrsa dhe rèile is tu airson einnseanan a leasachadh air a shon +STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Seallaidh seo an einnsean a tha ga chur an àite an einnsein a thagh thu air an taobh chlì, ma tha gin ann +STR_REPLACE_RAIL_VEHICLES :Carbadan-rèile +STR_REPLACE_ELRAIL_VEHICLES :Carbadan-rèile dealain +STR_REPLACE_MONORAIL_VEHICLES :Carbadan aona-rèile +STR_REPLACE_MAGLEV_VEHICLES :Carbadan magnaiteach + +STR_REPLACE_REMOVE_WAGON :{BLACK}A' toirt air falbh carbad: {ORANGE}{STRING} +STR_REPLACE_REMOVE_WAGON_HELP :{BLACK}Glèidh faide aig trèan nuair a thèid fhèin-leasachadh le toirt air falbh nan carbadan (bho thoiseach na trèan a-mach) ma dh'fhàsas an trèan nas fhaide le einnsean ùr + +# Vehicle view +STR_VEHICLE_VIEW_CAPTION :{WHITE}{VEHICLE} + +STR_VEHICLE_VIEW_TRAIN_LOCATION_TOOLTIP :{BLACK}Meadhanaich am prìomh-shealladh air an trèan. Fosglaidh Ctrl+briogadh port-seallaidh ùr air ionad na trèan +STR_VEHICLE_VIEW_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Meadhanaich am prìomh-shealladh air a' charbad. Fosglaidh Ctrl+briogadh port-seallaidh ùr air ionad a' charbaid +STR_VEHICLE_VIEW_SHIP_LOCATION_TOOLTIP :{BLACK}Meadhanaich am prìomh-shealladh air an long. Fosglaidh Ctrl+briogadh port-seallaidh ùr air ionad na luinge +STR_VEHICLE_VIEW_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Meadhanaich am prìomh-shealladh air a' charbad-adhair. Fosglaidh Ctrl+briogadh port-seallaidh ùr air ionad a' charbaid-adhair + +STR_VEHICLE_VIEW_TRAIN_SEND_TO_DEPOT_TOOLTIP :{BLACK}Cuir an trèan dhan trèan-lann. Cha dèan Ctrl+briogadh ach obair-ghlèidhidh +STR_VEHICLE_VIEW_ROAD_VEHICLE_SEND_TO_DEPOT_TOOLTIP :{BLACK}Cuir carbad dhan gharaids. Cha dèan Ctrl+briogadh ach obair-ghlèidhidh +STR_VEHICLE_VIEW_SHIP_SEND_TO_DEPOT_TOOLTIP :{BLACK}Cuir long dhan chala. Cha dèan Ctrl+briogadh ach obair-ghlèidhidh +STR_VEHICLE_VIEW_AIRCRAFT_SEND_TO_DEPOT_TOOLTIP :{BLACK}Cuir carbad-adhair dhan hangar. Cha dèan Ctrl+briogadh ach obair-ghlèidhidh + +STR_VEHICLE_VIEW_CLONE_TRAIN_INFO :{BLACK}Ceannaichidh seo lethbhreac dhe thrèan, a' gabhail a-steach a h-uile carbad. Thoir na h-aon òrduighean dhan tè ùr le Ctrl+briogadh. Seallaidh Shift+briogadh tuairmse air na cosgaisean gun a bhith a' ceannach dad +STR_VEHICLE_VIEW_CLONE_ROAD_VEHICLE_INFO :{BLACK}Ceannaichidh seo lethbhreac dhe charbad-rathaid. Thoir na h-aon òrduighean dhan fhear ùr le Ctrl+briogadh. Seallaidh Shift+briogadh tuairmse air na cosgaisean gun a bhith a' ceannach dad +STR_VEHICLE_VIEW_CLONE_SHIP_INFO :{BLACK}Ceannaichidh seo lethbhreac dhe long. Thoir na h-aon òrduighean dhan tè ùr le Ctrl+briogadh. Seallaidh Shift+briogadh tuairmse air na cosgaisean gun a bhith a' ceannach dad +STR_VEHICLE_VIEW_CLONE_AIRCRAFT_INFO :{BLACK}Ceannaichidh seo lethbhreac dhe charbad-adhair. Thoir na h-aon òrduighean dhan fhear ùr le Ctrl+briogadh. Seallaidh Shift+briogadh tuairmse air na cosgaisean gun a bhith a' ceannach dad + +STR_VEHICLE_VIEW_TRAIN_IGNORE_SIGNAL_TOOLTIP :{BLACK}Thoir air an trèan leantainn air adhart gun a bhith a' feitheamh air a' chomharra + +STR_VEHICLE_VIEW_TRAIN_REFIT_TOOLTIP :{BLACK}Mùth an trèan ach an gabh i ri seòrsa dhe charago eile +STR_VEHICLE_VIEW_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}Mùth an carbad-rathaid ach an gabh e ri seòrsa dhe charago eile +STR_VEHICLE_VIEW_SHIP_REFIT_TOOLTIP :{BLACK}Mùth an long ach an gabh i ri seòrsa dhe charago eile +STR_VEHICLE_VIEW_AIRCRAFT_REFIT_TOOLTIP :{BLACK}Mùth an carbad-adhair ach an gabh e ri seòrsa dhe charago eile + +STR_VEHICLE_VIEW_TRAIN_REVERSE_TOOLTIP :{BLACK}Thoir tilleadh air an trèan +STR_VEHICLE_VIEW_ROAD_VEHICLE_REVERSE_TOOLTIP :{BLACK}Thoir tilleadh air a' charbad + +STR_VEHICLE_VIEW_TRAIN_ORDERS_TOOLTIP :{BLACK}Seall òrduighean na trèan. Cleachd Ctrl+briogadh gus an clàr-ama aig an trèan a shealltainn +STR_VEHICLE_VIEW_ROAD_VEHICLE_ORDERS_TOOLTIP :{BLACK}Seall òrduighean a' charbaid. Cleachd Ctrl+briogadh gus an clàr-ama aig a' charbad a shealltainn +STR_VEHICLE_VIEW_SHIP_ORDERS_TOOLTIP :{BLACK}Seall òrduighean na luinge. Cleachd Ctrl+briogadh gus an clàr-ama aig an long a shealltainn +STR_VEHICLE_VIEW_AIRCRAFT_ORDERS_TOOLTIP :{BLACK}Seall òrduighean a' charbaid. Cleachd Ctrl+briogadh gus an clàr-ama aig a' charbad a shealltainn + +STR_VEHICLE_VIEW_TRAIN_SHOW_DETAILS_TOOLTIP :{BLACK}Seall mion-fhiosrachadh na trèan +STR_VEHICLE_VIEW_ROAD_VEHICLE_SHOW_DETAILS_TOOLTIP :{BLACK}Seall mion-fhiosrachadh a' charbaid-rathaid +STR_VEHICLE_VIEW_SHIP_SHOW_DETAILS_TOOLTIP :{BLACK}Seall mion-fhiosrachadh na luinge +STR_VEHICLE_VIEW_AIRCRAFT_SHOW_DETAILS_TOOLTIP :{BLACK}Seall mion-fhiosrachadh a' charbaid + +STR_VEHICLE_VIEW_TRAIN_STATE_START_STOP_TOOLTIP :{BLACK}Gnìomh na trèan seo - briog gus an trèan a chur a' dol/na stad. Sgrolaich dhan cheann-uidhe le Ctrl+briogadh +STR_VEHICLE_VIEW_ROAD_VEHICLE_STATE_START_STOP_TOOLTIP :{BLACK}Gnìomh a' charbaid seo - briog gus an carbad a chur a' dol/na stad. Sgrolaich dhan cheann-uidhe le Ctrl+briogadh +STR_VEHICLE_VIEW_SHIP_STATE_START_STOP_TOOLTIP :{BLACK}Gnìomh na luinge seo - briog gus an long a chur a' dol/na stad. Sgrolaich dhan cheann-uidhe le Ctrl+briogadh +STR_VEHICLE_VIEW_AIRCRAFT_STATE_START_STOP_TOOLTIP :{BLACK}Gnìomh a' charbaid-adhair seo - briog gus an carbad a chur a' dol/na stad. Sgrolaich dhan cheann-uidhe le Ctrl+briogadh + +# Messages in the start stop button in the vehicle view +STR_VEHICLE_STATUS_LOADING_UNLOADING :{LTBLUE}A' luchdadh / dì-luchdadh +STR_VEHICLE_STATUS_LEAVING :{LTBLUE}A' fàgail +STR_VEHICLE_STATUS_CRASHED :{RED}Tubaist! +STR_VEHICLE_STATUS_BROKEN_DOWN :{RED}Briste +STR_VEHICLE_STATUS_STOPPED :{RED}Na stad +STR_VEHICLE_STATUS_TRAIN_STOPPING_VEL :{RED}A' stad, {VELOCITY} +STR_VEHICLE_STATUS_TRAIN_NO_POWER :{RED}Gun chumhachd +STR_VEHICLE_STATUS_TRAIN_STUCK :{ORANGE}A' feitheamh airson slighe saoire +STR_VEHICLE_STATUS_AIRCRAFT_TOO_FAR :{ORANGE}Ro fhada dhan ath-cheann-uidhe + +STR_VEHICLE_STATUS_HEADING_FOR_STATION_VEL :{LTBLUE}A' dèanamh air {STATION}, {VELOCITY} +STR_VEHICLE_STATUS_NO_ORDERS_VEL :{LTBLUE}Gun òrdugh, {VELOCITY} +STR_VEHICLE_STATUS_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}A' dèanamh air {WAYPOINT}, {VELOCITY} +STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_VEL :{ORANGE}A' dèanamh air {DEPOT}, {VELOCITY} +STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_SERVICE_VEL :{LTBLUE}Obair-ghlèidhidh aig {DEPOT}, {VELOCITY} + +# Vehicle stopped/started animations +STR_VEHICLE_COMMAND_STOPPED_SMALL :{TINY_FONT}{RED}Na stad +STR_VEHICLE_COMMAND_STOPPED :{RED}Na stad +STR_VEHICLE_COMMAND_STARTED_SMALL :{TINY_FONT}{GREEN}Air tòiseachadh +STR_VEHICLE_COMMAND_STARTED :{GREEN}Air tòiseachadh + +# Vehicle details +STR_VEHICLE_DETAILS_CAPTION :{WHITE}{VEHICLE} (Fiosrachadh) +STR_VEHICLE_NAME_BUTTON :{BLACK}Ainm + +STR_VEHICLE_DETAILS_TRAIN_RENAME :{BLACK}Thoir ainm air an trèan +STR_VEHICLE_DETAILS_ROAD_VEHICLE_RENAME :{BLACK}Thoir ainm air carbad-rathaid +STR_VEHICLE_DETAILS_SHIP_RENAME :{BLACK}Thoir ainm air long +STR_VEHICLE_DETAILS_AIRCRAFT_RENAME :{BLACK}Thoir ainm air carbad-adhair + +STR_VEHICLE_INFO_AGE_RUNNING_COST_YR :{BLACK}Aois: {LTBLUE}{STRING}{BLACK} Cosgaisean ruith: {LTBLUE}{CURRENCY_LONG}/bliadhna +# The next two need to stay in this order +STR_VEHICLE_INFO_AGE :{COMMA} {P bhliadhna bhliadhna bliadhna bliadhna} ({COMMA}) +STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} {P bhliadhna bhliadhna bliadhna bliadhna} ({COMMA}) + +STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Luaths as motha: {LTBLUE}{VELOCITY} +STR_VEHICLE_INFO_MAX_SPEED_RANGE :{BLACK}Luaths as motha: {LTBLUE}{VELOCITY} {BLACK}Astar: {LTBLUE}{COMMA} {P leac leac leacan leac} +STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Cuideam: {LTBLUE}{WEIGHT_SHORT} {BLACK}Cumhachd: {LTBLUE}{POWER}{BLACK} Luaths as motha: {LTBLUE}{VELOCITY} +STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Cuideam: {LTBLUE}{WEIGHT_SHORT} {BLACK}Cumhachd: {LTBLUE}{POWER}{BLACK} Luaths as motha: {LTBLUE}{VELOCITY} {BLACK}Neart as motha: {LTBLUE}{FORCE} + +STR_VEHICLE_INFO_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Prothaid am bliadhna: {LTBLUE}{CURRENCY_LONG} (an-uiridh: {CURRENCY_LONG}) +STR_VEHICLE_INFO_RELIABILITY_BREAKDOWNS :{BLACK}Earbsachd: {LTBLUE}{COMMA}% {BLACK}{P 1 Briseadh Briseadh Brisidhean Briseadh} bhon obair-ghlèidhidh mu dheireadh: {LTBLUE}{COMMA} + +STR_VEHICLE_INFO_BUILT_VALUE :{LTBLUE}{ENGINE} {BLACK}Air a {G 0 thogail togail}: {LTBLUE}{NUM}{BLACK} Luach: {LTBLUE}{CURRENCY_LONG} +STR_VEHICLE_INFO_NO_CAPACITY :{BLACK}Tomhas-lìonaidh: {LTBLUE}—{STRING} +STR_VEHICLE_INFO_CAPACITY :{BLACK}Tomhas-lìonaidh: {LTBLUE}{CARGO_LONG}{3:STRING} +STR_VEHICLE_INFO_CAPACITY_MULT :{BLACK}Tomhas-lìonaidh: {LTBLUE}{CARGO_LONG}{3:STRING} (x{4:NUM}) +STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}Tomhas-lìonaidh: {LTBLUE}{CARGO_LONG}, {CARGO_LONG}{STRING} + +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_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 + +STR_SERVICE_INTERVAL_DROPDOWN_TOOLTIP :{BLACK}Atharraich seòrsa dhe thricead na h-obrach-glèidhidh +STR_VEHICLE_DETAILS_DEFAULT :Tùsail +STR_VEHICLE_DETAILS_DAYS :Latha +STR_VEHICLE_DETAILS_PERCENT :Ceudad + +STR_QUERY_RENAME_TRAIN_CAPTION :{WHITE}Thoir ainm air an trèan +STR_QUERY_RENAME_ROAD_VEHICLE_CAPTION :{WHITE}Thoir ainm air a' charbad-rathaid +STR_QUERY_RENAME_SHIP_CAPTION :{WHITE}Thoir ainm air an long +STR_QUERY_RENAME_AIRCRAFT_CAPTION :{WHITE}Thoir ainm air a' charbad-adhair + +# Extra buttons for train details windows +STR_VEHICLE_DETAILS_TRAIN_ENGINE_BUILT_AND_VALUE :{LTBLUE}{ENGINE}{BLACK} Air a {G 0 thogail togail}: {LTBLUE}{NUM}{BLACK} Luach: {LTBLUE}{CURRENCY_LONG} +STR_VEHICLE_DETAILS_TRAIN_WAGON_VALUE :{LTBLUE}{ENGINE}{BLACK} Luach: {LTBLUE}{CURRENCY_LONG} + +STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY_TEXT :{BLACK}Tomhas-lìonaidh carago iomlan aig an trèan seo: +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}Falamh +STR_VEHICLE_DETAILS_CARGO_FROM :{LTBLUE}{CARGO_LONG} bho {STATION} +STR_VEHICLE_DETAILS_CARGO_FROM_MULT :{LTBLUE}{CARGO_LONG} bho {STATION} (x{NUM}) + +STR_VEHICLE_DETAIL_TAB_CARGO :{G=m}{BLACK}Carago +STR_VEHICLE_DETAILS_TRAIN_CARGO_TOOLTIP :{BLACK}Seall mion-fhiosrachadh mun charago ga ghiùlan +STR_VEHICLE_DETAIL_TAB_INFORMATION :{BLACK}Fiosrachadh +STR_VEHICLE_DETAILS_TRAIN_INFORMATION_TOOLTIP :{BLACK}Seall mion-fhiosrachadh air carbadan-rèile +STR_VEHICLE_DETAIL_TAB_CAPACITIES :{BLACK}Tomhasan-lìonaidh +STR_VEHICLE_DETAILS_TRAIN_CAPACITIES_TOOLTIP :{BLACK}Seall an tomhas-lìonaidh aig gach carbad +STR_VEHICLE_DETAIL_TAB_TOTAL_CARGO :{BLACK}Carago iomlan +STR_VEHICLE_DETAILS_TRAIN_TOTAL_CARGO_TOOLTIP :{BLACK}Seall an carago iomlan aig an trèan, air a roinneadh le seòrsa a' charago + +STR_VEHICLE_DETAILS_TRAIN_ARTICULATED_RV_CAPACITY :{BLACK}Tomhas-lìonaidh: {LTBLUE} + +# Vehicle refit +STR_REFIT_CAPTION :{WHITE}{VEHICLE} (Mùthadh) +STR_REFIT_TITLE :{GOLD}Tagh an seòrsa dhe charago airson a ghiùlan: +STR_REFIT_NEW_CAPACITY_COST_OF_REFIT :{BLACK}Tomhas-lìonaidh ùr: {GOLD}{CARGO_LONG}{}{BLACK}Cosgais a' mhùthaidh: {RED}{CURRENCY_LONG} +STR_REFIT_NEW_CAPACITY_INCOME_FROM_REFIT :{BLACK}Tomhas-lìonaidh ùr: {GOLD}{CARGO_LONG}{}{BLACK}Teachd a-steach bhon mhùthadh: {GREEN}{CURRENCY_LONG} +STR_REFIT_NEW_CAPACITY_COST_OF_AIRCRAFT_REFIT :{BLACK}Tomhas-lìonaidh ùr: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Cosgais a' mhùthaidh: {RED}{CURRENCY_LONG} +STR_REFIT_NEW_CAPACITY_INCOME_FROM_AIRCRAFT_REFIT :{BLACK}Tomhas-lìonaidh ùr: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Teachd a-steach bhon mhùthadh: {GREEN}{CURRENCY_LONG} +STR_REFIT_SELECT_VEHICLES_TOOLTIP :{BLACK}Tagh na carbadan a tha thu airson mùthadh. Slaod an luchag gus iomad charbad a thaghadh. Briog air àite bàn gus an carbad air fad a thaghadh. Taghaidh Ctrl+briogadh carbad is an ceangal a leanas + +STR_REFIT_TRAIN_LIST_TOOLTIP :{BLACK}Tagh an seòrsa dhe charago a ghùlaineas an trèan +STR_REFIT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Tagh an seòrsa dhe charago a ghiùlaineas an carbad-rathaid +STR_REFIT_SHIP_LIST_TOOLTIP :{BLACK}Tagh an seòrsa dhe charago a ghiùlaineas an long +STR_REFIT_AIRCRAFT_LIST_TOOLTIP :{BLACK}Tagh an seòrsa dhe charago a ghiùlaineas an carbad-adhair + +STR_REFIT_TRAIN_REFIT_BUTTON :{BLACK}Mùth an trèan +STR_REFIT_ROAD_VEHICLE_REFIT_BUTTON :{BLACK}Mùth an carbad-rathaid +STR_REFIT_SHIP_REFIT_BUTTON :{BLACK}Mùth an long +STR_REFIT_AIRCRAFT_REFIT_BUTTON :{BLACK}Mùth an carbad-adhair + +STR_REFIT_TRAIN_REFIT_TOOLTIP :{BLACK}Ath-thog an trèan ach an giùlain e an seòrsa dhe charago a thagh thu +STR_REFIT_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}Ath-thog an carbad-rathaid ach an giùlain e an seòrsa dhe charago a thagh thu +STR_REFIT_SHIP_REFIT_TOOLTIP :{BLACK}Ath-thog an long ach an giùlain i an seòrsa dhe charago a thagh thu +STR_REFIT_AIRCRAFT_REFIT_TOOLTIP :{BLACK}Ath-thog an carbad-adhair ach an giùlain e an seòrsa dhe charago a thagh thu + +# Order view +STR_ORDERS_CAPTION :{WHITE}{VEHICLE} (Òrduighean) +STR_ORDERS_TIMETABLE_VIEW :{BLACK}Clàr-ama +STR_ORDERS_TIMETABLE_VIEW_TOOLTIP :{BLACK}Gearr leum dhan t-sealladh clàir-ama + +STR_ORDERS_LIST_TOOLTIP :{BLACK}Liosta nan òrduighean - briog air òrdugh gus a thaghadh. Sgrolaichidh Ctrl+briogadh gu ceann-uidhe an òrduigh +STR_ORDER_INDEX :{COMMA}:{NBSP} +STR_ORDER_TEXT :{STRING} {STRING} {STRING} + +STR_ORDERS_END_OF_ORDERS :- - Deireadh nan òrduighean - - +STR_ORDERS_END_OF_SHARED_ORDERS :- - Deireadh nan òrduighean co-roinnte - - + +# Order bottom buttons +STR_ORDER_NON_STOP :{BLACK}Gun stad +STR_ORDER_GO_TO :Rach gu +STR_ORDER_GO_NON_STOP_TO :Rach gun stad gu +STR_ORDER_GO_VIA :Rach slighe +STR_ORDER_GO_NON_STOP_VIA :Rach gun stad slighe +STR_ORDER_TOOLTIP_NON_STOP :{BLACK}Atharraich an tèid stad leis an òrdugh a thagh thu + +STR_ORDER_TOGGLE_FULL_LOAD :{BLACK}Luchdaich carago sam bith gu iomlan +STR_ORDER_DROP_LOAD_IF_POSSIBLE :Luchdaich na tha ri làimh +STR_ORDER_DROP_FULL_LOAD_ALL :Luchdaich a h-uile carago gu iomlan +STR_ORDER_DROP_FULL_LOAD_ANY :Luchdaich carago sam bith gu iomlan +STR_ORDER_DROP_NO_LOADING :Na luchdaich dad +STR_ORDER_TOOLTIP_FULL_LOAD :{BLACK}Atharraich giùlan luchdaidh aig an òrdugh a thagh thu + +STR_ORDER_TOGGLE_UNLOAD :{BLACK}Dì-luchdaich na h-uile +STR_ORDER_DROP_UNLOAD_IF_ACCEPTED :Dì-luchdaich ma ghabhar ris +STR_ORDER_DROP_UNLOAD :Dì-luchdaich a h-uile rud +STR_ORDER_DROP_TRANSFER :Tar-aisig +STR_ORDER_DROP_NO_UNLOADING :Na dì-luchdaich +STR_ORDER_TOOLTIP_UNLOAD :{BLACK}Atharraich giùlan dì-luchdaidh aig an òrdugh a thagh thu + +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}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 + +STR_ORDER_SERVICE :{BLACK}Obair-ghlèidhidh +STR_ORDER_DROP_GO_ALWAYS_DEPOT :Rach ann an-còmhnaidh +STR_ORDER_DROP_SERVICE_DEPOT :Obair-ghlèidhidh ma tha i a dhìth +STR_ORDER_DROP_HALT_DEPOT :Stad +STR_ORDER_SERVICE_TOOLTIP :{BLACK}Leum thairis air an òrdugh seo mura h-eil feum air obair-ghlèidhidh + +STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}Dàta a' charbaid air a bheil an leum stèidhichte + +# Conditional order variables, must follow order of OrderConditionVariable enum +STR_ORDER_CONDITIONAL_LOAD_PERCENTAGE :Ceudad an luchdaidh +STR_ORDER_CONDITIONAL_RELIABILITY :Earbsachd +STR_ORDER_CONDITIONAL_MAX_SPEED :Luaths as motha +STR_ORDER_CONDITIONAL_AGE :Aois (bliadhna) +STR_ORDER_CONDITIONAL_REQUIRES_SERVICE :Feumach air obair-ghlèidhidh +STR_ORDER_CONDITIONAL_UNCONDITIONALLY :An-còmhnaidh +STR_ORDER_CONDITIONAL_REMAINING_LIFETIME :Beatha air fhàgail (bliadhna) + +STR_ORDER_CONDITIONAL_COMPARATOR_TOOLTIP :{BLACK}Mar a thèid dàta a' charbaid a choimeas ris an luach +STR_ORDER_CONDITIONAL_COMPARATOR_EQUALS :a tha co-ionnan ri +STR_ORDER_CONDITIONAL_COMPARATOR_NOT_EQUALS :nach eil co-ionnan ri +STR_ORDER_CONDITIONAL_COMPARATOR_LESS_THAN :a tha nas lugha na +STR_ORDER_CONDITIONAL_COMPARATOR_LESS_EQUALS :a tha nas lugha na no co-ionnan ri +STR_ORDER_CONDITIONAL_COMPARATOR_MORE_THAN :a tha nas motha na +STR_ORDER_CONDITIONAL_COMPARATOR_MORE_EQUALS :a tha nas motha na no co-ionnan ri +STR_ORDER_CONDITIONAL_COMPARATOR_IS_TRUE :a tha fìor +STR_ORDER_CONDITIONAL_COMPARATOR_IS_FALSE :a tha breugach + +STR_ORDER_CONDITIONAL_VALUE_TOOLTIP :{BLACK}An luach ris a thèid dàta a' charbaid a choimeas +STR_ORDER_CONDITIONAL_VALUE_CAPT :{WHITE}Cuir a-steach luach airson coimeas ris + +STR_ORDERS_SKIP_BUTTON :{BLACK}Leum thairis air +STR_ORDERS_SKIP_TOOLTIP :{BLACK}Leum thairis air an òrdugh seo is tòisich air an ath-fhear. Nì Ctrl+briogadh leum dhan òrdugh a thagh thu + +STR_ORDERS_DELETE_BUTTON :{BLACK}Sguab às +STR_ORDERS_DELETE_TOOLTIP :{BLACK}Sguab às dhan òrdugh a thagh thu +STR_ORDERS_DELETE_ALL_TOOLTIP :{BLACK}Sguab às dha na h-uile òrdugh +STR_ORDERS_STOP_SHARING_BUTTON :{BLACK}Sguir dhen cho-roinneadh +STR_ORDERS_STOP_SHARING_TOOLTIP :{BLACK}Sguir dhe cho-roinneadh liosta nan òrduighean. Sguabaidh Ctrl+briogadh às dhe na h-uile òrdugh airson a' charbaid seo cuideachd + +STR_ORDERS_GO_TO_BUTTON :{BLACK}Rach gu +STR_ORDER_GO_TO_NEAREST_DEPOT :Rach gun gharaids / trèan-lann / chala as fhaisge +STR_ORDER_GO_TO_NEAREST_HANGAR :Rach gun hangar as fhaisge +STR_ORDER_CONDITIONAL :Leum le òrdugh cumhach +STR_ORDER_SHARE :Co-roinn na h-òrduighean +STR_ORDERS_GO_TO_TOOLTIP :{BLACK}Cuir a-steach òrdugh ùr ron òrdugh a thagh thu no cuir ri deireadh na liosta e. Le Ctrl, bith òrdugh stèisein na “Luchdaich carago sam bith gu iomlan", òrdugh puinge-turais na “Gun stad" is òrdugh garaids / trèan-lainn / calaidh / hangair na “obair-ghlèidhidh". Le “Co-roinn na h-òrduighean” no Ctrl, co-roinnidh an carbad seo na h-òrduighean leis a' charbad a thagh thu. Gheibh thu lethbhreac dhe òrduighean le briogadh air carbad. Cuiridh òrdugh garaids / trèan-lainn / calaidh / hangair fèin-obair-ghlèidhidh airson a' charbaid à comas + +STR_ORDERS_VEH_WITH_SHARED_ORDERS_LIST_TOOLTIP :{BLACK}Seall a h-uile carbad a cho-roinneas an clàr-ama seo + +# String parts to build the order string +STR_ORDER_GO_TO_WAYPOINT :Rach slighe {WAYPOINT} +STR_ORDER_GO_NON_STOP_TO_WAYPOINT :Rach gun stad slighe {WAYPOINT} + +STR_ORDER_SERVICE_AT :Obair-ghlèidhidh aig +STR_ORDER_SERVICE_NON_STOP_AT :Obair-ghlèidhidh gun stad aig + +STR_ORDER_NEAREST_DEPOT :as fhaisge +STR_ORDER_NEAREST_HANGAR :’n hangar as fhaisge +STR_ORDER_TRAIN_DEPOT :’n trèan-lann +STR_ORDER_ROAD_VEHICLE_DEPOT :’n gharaids +STR_ORDER_SHIP_DEPOT :’n chala +STR_ORDER_GO_TO_NEAREST_DEPOT_FORMAT :{0:STRING} {2:STRING} {1:STRING} +STR_ORDER_GO_TO_DEPOT_FORMAT :{STRING} {DEPOT} + +STR_ORDER_REFIT_ORDER :(Mùth airson {STRING}) +STR_ORDER_REFIT_STOP_ORDER :(Mùth airson {STRING} is stad) +STR_ORDER_STOP_ORDER :(Stad) + +STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING} + +STR_ORDER_IMPLICIT :(Fillte a-staigh) + +STR_ORDER_FULL_LOAD :(Luchdaich gu iomlan) +STR_ORDER_FULL_LOAD_ANY :(Luchdaich carago sam bith gu iomlan) +STR_ORDER_NO_LOAD :(Na luchdaich dad) +STR_ORDER_UNLOAD :(Dì-luchdaich is gabh ri carago) +STR_ORDER_UNLOAD_FULL_LOAD :(Dì-luchdaich is feitheamh air luchdadh iomlan) +STR_ORDER_UNLOAD_FULL_LOAD_ANY :(Dì-luchdaich is feitheamh air carago sam bith iomlan) +STR_ORDER_UNLOAD_NO_LOAD :(Dì-luchdaich is fàg falamh) +STR_ORDER_TRANSFER :(Tar-aisig is gabh ri carago) +STR_ORDER_TRANSFER_FULL_LOAD :(Tar-aisig is feitheamh air luchdadh iomlan) +STR_ORDER_TRANSFER_FULL_LOAD_ANY :(Tar-aisig is feitheamh air luchdadh sam bith iomlan) +STR_ORDER_TRANSFER_NO_LOAD :(Tar-aisig is fàg falamh) +STR_ORDER_NO_UNLOAD :(Na dì-luchdaich is gabh ri carago) +STR_ORDER_NO_UNLOAD_FULL_LOAD :(Na dì-luchdaich is feitheamh air carago iomlan) +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 :(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}) + +STR_ORDER_AUTO_REFIT_ANY :carago ri làimh + +STR_ORDER_STOP_LOCATION_NEAR_END :[toiseach] +STR_ORDER_STOP_LOCATION_MIDDLE :[meadhan] +STR_ORDER_STOP_LOCATION_FAR_END :[ceann thall] + +STR_ORDER_OUT_OF_RANGE :{RED} (Chan eil an t-ath-cheann-uidhe san rainse) + +STR_ORDER_CONDITIONAL_UNCONDITIONAL :Leum dhan òrdugh {COMMA} +STR_ORDER_CONDITIONAL_NUM :Leum dhan òrdugh {COMMA} le {STRING} {STRING} {COMMA} +STR_ORDER_CONDITIONAL_TRUE_FALSE :Leum dhan òrdugh {COMMA} le {STRING} {STRING} + +STR_INVALID_ORDER :{RED} (Òrdugh mì-dhligheach) + +# Time table window +STR_TIMETABLE_TITLE :{WHITE}{VEHICLE} (Clàr-ama) +STR_TIMETABLE_ORDER_VIEW :{BLACK}Òrduighean +STR_TIMETABLE_ORDER_VIEW_TOOLTIP :{BLACK}Gearr leum dha shealladh nan òrduighean + +STR_TIMETABLE_TOOLTIP :{BLACK}Clàr-ama - briog air òrdugh gus a thaghadh + +STR_TIMETABLE_NO_TRAVEL :Na siubhail +STR_TIMETABLE_NOT_TIMETABLEABLE :Siubhail (fèin-obrachail; clàr-ama ga chruthachadh leis an ath-òrdugh a làimh) +STR_TIMETABLE_TRAVEL_NOT_TIMETABLED :Siubhail (gun chlàr-ama) +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_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) + +STR_TIMETABLE_STATUS_ON_TIME :{BLACK}Tha an carbad seo ri uair an-dràsta +STR_TIMETABLE_STATUS_LATE :{BLACK}Tha an carbad seo {STRING} air deireadh an-dràsta +STR_TIMETABLE_STATUS_EARLY :{BLACK}Tha an carbad seo {STRING} ro àm an-dràsta +STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}Cha do thòisich an clàr-ama seo fhathast +STR_TIMETABLE_STATUS_START_AT :{BLACK}Tòisich an clàr-ama seo {STRING} + +STR_TIMETABLE_STARTING_DATE :{BLACK}Ceann-latha tòiseachaidh +STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Tagh ceann-latha tòiseachaidh airson a' chlàir-ama seo. Suidhichidh Ctrl+Briogadh ceann-latha tòiseachaidh a' chlàir-ama seo is ma tha clàr-ama slàn aig an òrdugh seo, sgaoilidh seo a h-uile carbad a cho-roinneas an t-òrdugh seo gu cunbhalach, stèidhichte air an òrdugh eatorra + +STR_TIMETABLE_CHANGE_TIME :{BLACK}Uair eile +STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Atharraich an ùine a bheireadh an t-òrdugh a thagh thu + +STR_TIMETABLE_CLEAR_TIME :{BLACK}Uair bhàn +STR_TIMETABLE_CLEAR_TIME_TOOLTIP :{BLACK}Thoir an fhaide uarach air falbh bhon òrdugh a thagh thu + +STR_TIMETABLE_CHANGE_SPEED :{BLACK}Crìochan luaiths eile +STR_TIMETABLE_CHANGE_SPEED_TOOLTIP :{BLACK}Atharraich an luaths siubhail as motha airson an òrduigh a thagh thu + +STR_TIMETABLE_CLEAR_SPEED :{BLACK}Crìochan luaiths bàna +STR_TIMETABLE_CLEAR_SPEED_TOOLTIP :{BLACK}Thoir an luaths siubhail as motha air falbh bhon òrdugh a thagh thu + +STR_TIMETABLE_RESET_LATENESS :{BLACK}Ath-shuidhich cunntair nan dàil +STR_TIMETABLE_RESET_LATENESS_TOOLTIP :{BLACK}Ath-shuidhich cunntair nan dàlaichean ach am bi an carbad ri uair + +STR_TIMETABLE_AUTOFILL :{BLACK}Fèin-lìon +STR_TIMETABLE_AUTOFILL_TOOLTIP :{BLACK}Lìon an clàr-ama leis na luachan bhon ath-thuras (Dèan Ctrl+briogadh gus feuchainn ris na h-ùineachan feitheimh a chumail) + +STR_TIMETABLE_EXPECTED :{BLACK}Dùil air +STR_TIMETABLE_SCHEDULED :{BLACK}Clàraichte +STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Gearr leum eadar dùil air is clàraichte + +STR_TIMETABLE_ARRIVAL_ABBREVIATION :R: +STR_TIMETABLE_DEPARTURE_ABBREVIATION :F: + + +# Date window (for timetable) +STR_DATE_CAPTION :{WHITE}Suidhich ceann-latha +STR_DATE_SET_DATE :{BLACK}Suidhich ceann-latha +STR_DATE_SET_DATE_TOOLTIP :{BLACK}Cleachd an ceann-latha a thagh thu mar cheann-latha tòiseachaidh airson a' chlàir-ama +STR_DATE_DAY_TOOLTIP :{BLACK}Tagh latha +STR_DATE_MONTH_TOOLTIP :{BLACK}Tagh mìos +STR_DATE_YEAR_TOOLTIP :{BLACK}Tagh bliadhna + + +# AI debug window +STR_AI_DEBUG :{WHITE}Dì-bhugaich sgriobt an IF/a' gheama +STR_AI_DEBUG_NAME_AND_VERSION :{BLACK}{STRING} (v{NUM}) +STR_AI_DEBUG_NAME_TOOLTIP :{BLACK}Ainm an sgriobt +STR_AI_DEBUG_SETTINGS :{BLACK}Roghainnean +STR_AI_DEBUG_SETTINGS_TOOLTIP :{BLACK}Atharraich roghainnean an sgriobt +STR_AI_DEBUG_RELOAD :{BLACK}Ath-luchdaidh an IF +STR_AI_DEBUG_RELOAD_TOOLTIP :{BLACK}Marbh an IF, ath-luchdaich an sgriobt is ath-thòisich an IF +STR_AI_DEBUG_BREAK_STR_ON_OFF_TOOLTIP :{BLACK}Cuir briseadh an comas/à comas nuair a dh’fhreagras teachdaireachd loga an IF ris an t-sreang brisidh +STR_AI_DEBUG_BREAK_ON_LABEL :{BLACK}Bris le: +STR_AI_DEBUG_BREAK_STR_OSKTITLE :{BLACK}Briseadh +STR_AI_DEBUG_BREAK_STR_TOOLTIP :{BLACK}Nuair a dh’fhreagras teachdaireachd loga an IF ris an t-sreang seo, thèid an geama a chur na stad +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_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_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 +STR_AI_CONFIG_CAPTION :{WHITE}Rèiteachadh an IF/sgriobt geama +STR_AI_CONFIG_GAMELIST_TOOLTIP :{BLACK}An sgriobt geama a thèid a luchdadh leis an ath-gheama +STR_AI_CONFIG_AILIST_TOOLTIP :{BLACK}Na IF a thèid a luchdadh leis an ath-gheama +STR_AI_CONFIG_HUMAN_PLAYER :Cluicheadair daonna +STR_AI_CONFIG_RANDOM_AI :IF air thuaiream +STR_AI_CONFIG_NONE :(gun IF) + +STR_AI_CONFIG_MOVE_UP :{BLACK}Gluais suas +STR_AI_CONFIG_MOVE_UP_TOOLTIP :{BLACK}Gluais an IF a thagh thu suas air an liosta +STR_AI_CONFIG_MOVE_DOWN :{BLACK}Gluais sìos +STR_AI_CONFIG_MOVE_DOWN_TOOLTIP :{BLACK}Gluais an IF a thagh thu sìos air an liosta + +STR_AI_CONFIG_GAMESCRIPT :{SILVER}Sgriobt geama +STR_AI_CONFIG_AI :{SILVER}IFan + +STR_AI_CONFIG_CHANGE :{BLACK}Tagh {STRING} +STR_AI_CONFIG_CHANGE_NONE : +STR_AI_CONFIG_CHANGE_AI :IF +STR_AI_CONFIG_CHANGE_GAMESCRIPT :Sgriobt geama +STR_AI_CONFIG_CHANGE_TOOLTIP :{BLACK}Luchdaich sgriobt eile +STR_AI_CONFIG_CONFIGURE :{BLACK}Rèitich +STR_AI_CONFIG_CONFIGURE_TOOLTIP :{BLACK}Rèitich paramadairean an sgriobt + +# Available AIs window +STR_AI_LIST_CAPTION :{WHITE}{STRING} ri làimh +STR_AI_LIST_CAPTION_AI :IFan +STR_AI_LIST_CAPTION_GAMESCRIPT :Sgriobtaichean geama +STR_AI_LIST_TOOLTIP :{BLACK}Briog gus sgriobt a thaghadh + +STR_AI_LIST_AUTHOR :{LTBLUE}Ùghdar: {ORANGE}{STRING} +STR_AI_LIST_VERSION :{LTBLUE}Tionndadh: {ORANGE}{NUM} +STR_AI_LIST_URL :{LTBLUE}URL: {ORANGE}{STRING} + +STR_AI_LIST_ACCEPT :{BLACK}Gabh ris +STR_AI_LIST_ACCEPT_TOOLTIP :{BLACK}Cleachd an sgriobt a thagh thu +STR_AI_LIST_CANCEL :{BLACK}Sguir dheth +STR_AI_LIST_CANCEL_TOOLTIP :{BLACK}Na atharraich an sgriobt + +# AI Parameters +STR_AI_SETTINGS_CAPTION :{WHITE}Paramadairean aig {STRING} +STR_AI_SETTINGS_CAPTION_AI :IF +STR_AI_SETTINGS_CAPTION_GAMESCRIPT :Sgriobt geama +STR_AI_SETTINGS_CLOSE :{BLACK}Dùin +STR_AI_SETTINGS_RESET :{BLACK}Ath-shuidhich +STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING} +STR_AI_SETTINGS_START_DELAY :An àireamh dhe làithean mus tèid an IF seo a thòiseachadh an dèidh an tè mu dheireadh (mu thimcheall): {ORANGE}{STRING} + + +# Textfile window +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 + + +# 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}Cosgais: {CURRENCY_LONG} +STR_INCOME_FLOAT_COST :{RED}Cosgais: {CURRENCY_LONG} +STR_INCOME_FLOAT_INCOME_SMALL :{TINY_FONT}{GREEN}Teachd a-steach: {CURRENCY_LONG} +STR_INCOME_FLOAT_INCOME :{GREEN}Teachd a-steach: {CURRENCY_LONG} +STR_FEEDER_TINY :{TINY_FONT}{YELLOW}Tar-aiseag: {CURRENCY_LONG} +STR_FEEDER :{YELLOW}Tar-aiseag: {CURRENCY_LONG} +STR_FEEDER_INCOME_TINY :{TINY_FONT}{YELLOW}Tar-aiseag: {CURRENCY_LONG}{WHITE} / {GREEN}Teachd a-steach: {CURRENCY_LONG} +STR_FEEDER_INCOME :{YELLOW}Tar-aiseag: {CURRENCY_LONG}{WHITE} / {GREEN}Teachd a-steach: {CURRENCY_LONG} +STR_FEEDER_COST_TINY :{TINY_FONT}{YELLOW}Tar-aiseig: {CURRENCY_LONG}{WHITE} / {RED}Cosgaisean: {CURRENCY_LONG} +STR_FEEDER_COST :{YELLOW}Tar-aiseag: {CURRENCY_LONG}{WHITE} / {RED}Cosgaisean: {CURRENCY_LONG} +STR_MESSAGE_ESTIMATED_COST :{WHITE}Tuairmse chosgaisean: {CURRENCY_LONG} +STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Tuairmse air an teachd a-steach: {CURRENCY_LONG} + +# Saveload messages +STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Ga shàbhaladh fhathast,{}fuirich greis gus am bi e deiseil! +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 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} +STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Chaidh an sàbhaladh seo a dhèanamh le tionndadh as ùire dhen gheama +STR_GAME_SAVELOAD_ERROR_FILE_NOT_READABLE :Cha ghabh am faidhle a leughadh +STR_GAME_SAVELOAD_ERROR_FILE_NOT_WRITEABLE :Cha ghabh am faidhle sgrìobhadh +STR_GAME_SAVELOAD_ERROR_DATA_INTEGRITY_CHECK_FAILED :Dh’fhàillig le sgrùdadh na fìreantachd air an dàta +STR_GAME_SAVELOAD_NOT_AVAILABLE : +STR_WARNING_LOADGAME_REMOVED_TRAMS :{WHITE}Chaidh an geama a shàbhaladh le tionndadh nach cuir taic ri tramaichean. Chaidh na h-uile trama a thoirt air falbh + +# Map generation messages +STR_ERROR_COULD_NOT_CREATE_TOWN :{WHITE}Chaidh sgur dhe ghinntin a’ mhapa...{}... chan eil àiteachan freagarrach airson bailtean ann +STR_ERROR_NO_TOWN_IN_SCENARIO :{WHITE}... chan eil baile sam bith sa chnàmh-sgeul seo + +STR_ERROR_PNGMAP :{WHITE}Cha ghabh an cruth-tìre luchdadh bhon PNG... +STR_ERROR_PNGMAP_FILE_NOT_FOUND :{WHITE}... cha deach am faidhle a lorg +STR_ERROR_PNGMAP_IMAGE_TYPE :{WHITE}... cha b’ urrainn dhuinn seòrsa an deilbh iompachadh. Tha PNG 8 no 24-biod a dhìth +STR_ERROR_PNGMAP_MISC :{WHITE}... chaidh rudeigin gu cearr (faidhle coirbte, cha chreids) + +STR_ERROR_BMPMAP :{WHITE}Cha ghabh cruth-tìre luchdadh bhon BMP... +STR_ERROR_BMPMAP_IMAGE_TYPE :{WHITE}... cha b’ urrainn dhuinn seòrsa an deilbh iompachadh + +STR_ERROR_HEIGHTMAP_TOO_LARGE :{WHITE}... tha an dealbh ro mhòr + +STR_WARNING_HEIGHTMAP_SCALE_CAPTION :{WHITE}Rabhadh sgèile +STR_WARNING_HEIGHTMAP_SCALE_MESSAGE :{YELLOW}Cha mholamaid gun tèid meud a’ mhapa tùsail atharrachadh cus. A bheil thu airson leantainn air adhart leis an gintinn? + +# Soundset messages +STR_WARNING_FALLBACK_SOUNDSET :{WHITE}Cha deach ach seata dhe dh’fhuaimean èiginneach a lorg. Ma tha thu ag iarraidh fuaimean, stàlaich seata dhe dh’fhuaimean le siostam luchdaidh a-nuas na susbainte + +# Screenshot related messages +STR_WARNING_SCREENSHOT_SIZE_CAPTION :{WHITE}Glacadh-sgrìn anabarrach mòr +STR_WARNING_SCREENSHOT_SIZE_MESSAGE :{YELLOW}Bidh dùmhlachd-bhreacaidh dhe {COMMA} x {COMMA} piogsail aig a’ ghlacadh-sgrìn seo. Dh’fhaoidte gun toir e beagan ùine an glacadh-sgrìn seo a thogail. A bheil thu airson leantainn air adhart? + +STR_MESSAGE_SCREENSHOT_SUCCESSFULLY :{WHITE}Chaidh an glacadh-sgrìn a shàbhaladh gu soirbheachail mar “{STRING}" +STR_ERROR_SCREENSHOT_FAILED :{WHITE}Dh’fhàillig leis a’ ghlacadh-sgrìn! + +# Error message titles +STR_ERROR_MESSAGE_CAPTION :{YELLOW}Brath +STR_ERROR_MESSAGE_CAPTION_OTHER_COMPANY :{YELLOW}Brath bho {STRING} + +# Generic construction errors +STR_ERROR_OFF_EDGE_OF_MAP :{WHITE}Taobh a-muigh a’ mhapa +STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP :{WHITE}Ro fhaisg air oir a’ mhapa +STR_ERROR_NOT_ENOUGH_CASH_REQUIRES_CURRENCY :{WHITE}Airgead a dhìth - feum air {CURRENCY_LONG} +STR_ERROR_FLAT_LAND_REQUIRED :{WHITE}Tha tìr rèidh a dhìth +STR_ERROR_LAND_SLOPED_IN_WRONG_DIRECTION :{WHITE}Sliabh na tìre ris a’ chomhair chearr +STR_ERROR_CAN_T_DO_THIS :{WHITE}Cha ghabh seo dèanamh... +STR_ERROR_BUILDING_MUST_BE_DEMOLISHED :{WHITE}Feumaidh tu an togalach a leagail an toiseach +STR_ERROR_CAN_T_CLEAR_THIS_AREA :{WHITE}Cha ghabh an raon seo falamhachadh... +STR_ERROR_SITE_UNSUITABLE :{WHITE}... ionad mì-fhreagarrach +STR_ERROR_ALREADY_BUILT :{WHITE}... air a t(h)ogail mu thràth +STR_ERROR_OWNED_BY :{WHITE}... tha seo le {STRING} +STR_ERROR_AREA_IS_OWNED_BY_ANOTHER :{WHITE}... tha companaidh eile na shealbhaiche aig an raon seo +STR_ERROR_TERRAFORM_LIMIT_REACHED :{WHITE}... ràinig thu na tha ceadaichte dhut dhe dh’atharrachadh na crutha-tìre +STR_ERROR_CLEARING_LIMIT_REACHED :{WHITE}... ràinig thu na tha ceadaichte dhut dhe dh’fhalamhachadh leacan +STR_ERROR_TREE_PLANT_LIMIT_REACHED :{WHITE}... ràinig thu na tha ceadaichte dhut dhe chur chraobhan +STR_ERROR_NAME_MUST_BE_UNIQUE :{WHITE}Chan fhaod an aon ainm a bhith ann barrachd air aon turas +STR_ERROR_GENERIC_OBJECT_IN_THE_WAY :{WHITE}Tha {1:STRING} san rathad +STR_ERROR_NOT_ALLOWED_WHILE_PAUSED :{WHITE}Chan eil seo ceadaichte fhad ’s a bhios an geama na stad + +# Local authority errors +STR_ERROR_LOCAL_AUTHORITY_REFUSES_TO_ALLOW_THIS :{WHITE}Dhiùilt an t-ùghdarras ionadail aig {TOWN} gun dèan thu seo +STR_ERROR_LOCAL_AUTHORITY_REFUSES_AIRPORT :{WHITE}Dhiùlt an t-ùghdarras ionadail aig {TOWN} gun tog thu port-adhair sa bhaile seo +STR_ERROR_LOCAL_AUTHORITY_REFUSES_NOISE :{WHITE}Dhiùlt an t-ùghdarras ionadail aig {TOWN} gun tog thu port-adhair air sàilleibh fuaime +STR_ERROR_BRIBE_FAILED :{WHITE}Mhothaich sgrùdair ionadail gun do dh’fheuch thu ri brìbeadh a thoirt + +# Levelling errors +STR_ERROR_CAN_T_RAISE_LAND_HERE :{WHITE}Cha ghabh tìr àrdachadh an-seo... +STR_ERROR_CAN_T_LOWER_LAND_HERE :{WHITE}Cha ghabh tìr ìsleachadh an-seo... +STR_ERROR_CAN_T_LEVEL_LAND_HERE :{WHITE}Cha ghabh an tìr dèanamh rèidh an-seo... +STR_ERROR_EXCAVATION_WOULD_DAMAGE :{WHITE}Bhiodh an cladhach a’ milleadh tunail +STR_ERROR_ALREADY_AT_SEA_LEVEL :{WHITE}... air àirde na mara mu thràth +STR_ERROR_TOO_HIGH :{WHITE}... ro àrd +STR_ERROR_ALREADY_LEVELLED :{WHITE}... rèidh mu thràth + +# Company related errors +STR_ERROR_CAN_T_CHANGE_COMPANY_NAME :{WHITE}Cha ghabh ainm na companaidh atharrachadh... +STR_ERROR_CAN_T_CHANGE_PRESIDENT :{WHITE}Chan urrainn dhuinn ainm an stiùiriche atharrachadh... + +STR_ERROR_MAXIMUM_PERMITTED_LOAN :{WHITE}... is {CURRENCY_LONG} an t-iasad as motha a tha ceadaichte dhut +STR_ERROR_CAN_T_BORROW_ANY_MORE_MONEY :{WHITE}Chan urrainn dhut barrachd airgid fhaighinn air iasad... +STR_ERROR_LOAN_ALREADY_REPAYED :{WHITE}... chan eil iasad ri pàigheadh ann +STR_ERROR_CURRENCY_REQUIRED :{WHITE}... feum air {CURRENCY_LONG} +STR_ERROR_CAN_T_REPAY_LOAN :{WHITE}Cha ghabh an t-iasad pàigheadh air ais... +STR_ERROR_INSUFFICIENT_FUNDS :{WHITE}Chan urrainn dhut airgead a thoirt seachad a chaidh a thoirt dhut mar iasad leis a’ bhanca... +STR_ERROR_CAN_T_BUY_COMPANY :{WHITE}Chan urrainn dhut a' chompanaidh a cheannach... +STR_ERROR_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}Cha ghabh ionad na companaidh togail... +STR_ERROR_CAN_T_BUY_25_SHARE_IN_THIS :{WHITE}Chan urrainn dhut earrann dhe 25% aig a' chompanaidh seo a cheannach.... +STR_ERROR_CAN_T_SELL_25_SHARE_IN :{WHITE}Chan urrainn dhut earrann dhe 25% aig a' chompanaidh seo a reic.... +STR_ERROR_PROTECTED :{WHITE}Chan eil a' chompanaidh seo sean gu leòr gus earrannan a reic no a cheannach fhathast... + +# Town related errors +STR_ERROR_CAN_T_GENERATE_TOWN :{WHITE}Cha ghabh baile sam bith a thogail +STR_ERROR_CAN_T_RENAME_TOWN :{WHITE}Cha ghabh ainm a' bhaile atharrachadh... +STR_ERROR_CAN_T_FOUND_TOWN_HERE :{WHITE}Cha ghabh baile stèidheachadh an-seo... +STR_ERROR_CAN_T_EXPAND_TOWN :{WHITE}Cha ghabh am baile leudachadh... +STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP_SUB :{WHITE}... ro fhaisg air oir a' mhapa +STR_ERROR_TOO_CLOSE_TO_ANOTHER_TOWN :{WHITE}... ro fhaisg air baile eile +STR_ERROR_TOO_MANY_TOWNS :{WHITE}... tha cus bhailtean ann +STR_ERROR_NO_SPACE_FOR_TOWN :{WHITE}... chan eil rum air fhàgail air a' mhapa +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 adhartach->Eaconamaidh->Bailtean +STR_ERROR_ROAD_WORKS_IN_PROGRESS :{WHITE}Rathad ga ath-thogail +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 +STR_ERROR_TOO_MANY_INDUSTRIES :{WHITE}... cus ghnìomhachasan +STR_ERROR_CAN_T_GENERATE_INDUSTRIES :{WHITE}Cha ghabh gnìomhachasan gintinn... +STR_ERROR_CAN_T_BUILD_HERE :{WHITE}Cha ghabh {STRING} togail an-seo... +STR_ERROR_CAN_T_CONSTRUCT_THIS_INDUSTRY :{WHITE}Cha ghabh an seòrsa seo dhe ghnìomhachas togail an-seo... +STR_ERROR_INDUSTRY_TOO_CLOSE :{WHITE}... ro fhaisg air gnìomhachas eile +STR_ERROR_MUST_FOUND_TOWN_FIRST :{WHITE}... feumaidh tu baile a stèidheachadh an toiseach +STR_ERROR_ONLY_ONE_ALLOWED_PER_TOWN :{WHITE}... chan eil barrachd air aon dhiubh ceadaichte anns gach baile +STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS_WITH_POPULATION_OF_1200 :{WHITE}... chan urrainn dhut seo a thogail ach ann am bailtean aig a bheil sluagh dhe 1200 air a char as lugha +STR_ERROR_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}... cha ghabh seo togail ach ann an raointean coille-uisge +STR_ERROR_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}... cha ghabh seo togail ach ann an raointean fàsaich +STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}... cha ghabh seo togail ach ann am baile (an àite thaighean) +STR_ERROR_CAN_ONLY_BE_BUILT_NEAR_TOWN_CENTER :{WHITE}... cha ghabh seo togail ach faisg air meadhan a' bhaile +STR_ERROR_CAN_ONLY_BE_BUILT_IN_LOW_AREAS :{WHITE}... cha ghabh seo togail ach ann an raointean ìosal +STR_ERROR_CAN_ONLY_BE_POSITIONED :{WHITE}... cha ghabh seo suidheachadh ach faisg air oirean a' mhapa +STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... cha an coille cur ach os cionn na loidhne-sneachda +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 + +# 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... +STR_ERROR_CAN_T_BUILD_TRUCK_STATION :{WHITE}Cha ghabh ionad-luchdaidh nan làraidh togail... +STR_ERROR_CAN_T_BUILD_PASSENGER_TRAM_STATION :{WHITE}Cha ghabh stèisean trama thaistealach togail... +STR_ERROR_CAN_T_BUILD_CARGO_TRAM_STATION :{WHITE}Cha ghabh stèisean trama carago togail... +STR_ERROR_CAN_T_BUILD_DOCK_HERE :{WHITE}Cha ghabh port togail an-seo... +STR_ERROR_CAN_T_BUILD_AIRPORT_HERE :{WHITE}Cha ghabh port-adhair togail an-seo... + +STR_ERROR_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Tha seo ri taobh barrachd air aon stèisean/ionad-luchdaidh a tha ann mu thràth +STR_ERROR_STATION_TOO_SPREAD_OUT :{WHITE}... tha an stèisean ro sgaoilte +STR_ERROR_TOO_MANY_STATIONS_LOADING :{WHITE}Cus stèiseanan/ionadan luchdaidh +STR_ERROR_TOO_MANY_STATION_SPECS :{WHITE}Cus pàirtean dhe stèisean-rèile +STR_ERROR_TOO_MANY_BUS_STOPS :{WHITE}Gus stèiseanan bus +STR_ERROR_TOO_MANY_TRUCK_STOPS :{WHITE}Tha cus ionadan-luchdaidh nan làraidh ann +STR_ERROR_TOO_CLOSE_TO_ANOTHER_STATION :{WHITE}Ro fhaisg air stèisean/ionad-luchdaidh eile +STR_ERROR_TOO_CLOSE_TO_ANOTHER_DOCK :{WHITE}Ro fhaisg air port eile +STR_ERROR_TOO_CLOSE_TO_ANOTHER_AIRPORT :{WHITE}Ro fhaisg air port-adhair eile +STR_ERROR_CAN_T_RENAME_STATION :{WHITE}Cha ghabh ainm an stèisein atharrachadh... +STR_ERROR_DRIVE_THROUGH_ON_TOWN_ROAD :{WHITE}... tha an rathad seo le baile +STR_ERROR_DRIVE_THROUGH_DIRECTION :{WHITE}... tha comhair an rathaid cearr +STR_ERROR_DRIVE_THROUGH_CORNER :{WHITE}... chan urrainn dha dh’oiseanan a bhith aig stèiseanan draibhidh troimhe +STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}... chan urrainn dha ghoibhlean a bhith aig stèiseanan draibhidh troimhe + +# Station destruction related errors +STR_ERROR_CAN_T_REMOVE_PART_OF_STATION :{WHITE}Cha ghabh pàirt dhen stèisean toirt air falbh... +STR_ERROR_MUST_REMOVE_RAILWAY_STATION_FIRST :{WHITE}Feumaidh tu an stèisean-rèile a thoirt air falbh an toiseach +STR_ERROR_CAN_T_REMOVE_BUS_STATION :{WHITE}Cha ghabh an stèisean bus toirt air falbh... +STR_ERROR_CAN_T_REMOVE_TRUCK_STATION :{WHITE}Cha ghabh ionad-luchdaidh nan làraidh toirt air falbh... +STR_ERROR_CAN_T_REMOVE_PASSENGER_TRAM_STATION :{WHITE}Cha ghabh an stèisean trama thaistealach toirt air falbh... +STR_ERROR_CAN_T_REMOVE_CARGO_TRAM_STATION :{WHITE}Cha ghabh an stèisean trama carago toirt air falbh... +STR_ERROR_MUST_REMOVE_ROAD_STOP_FIRST :{WHITE}Feumaidh tu an stèisean rathaid a thoirt air falbh an toiseach +STR_ERROR_THERE_IS_NO_STATION :{WHITE}... chan eil stèisean an-seo + +STR_ERROR_MUST_DEMOLISH_RAILROAD :{WHITE}Feumaidh tu an stèisean-rèile a leagail a toiseach +STR_ERROR_MUST_DEMOLISH_BUS_STATION_FIRST :{WHITE}Feumaidh tu an stèisean bus a leagail an toiseach +STR_ERROR_MUST_DEMOLISH_TRUCK_STATION_FIRST :{WHITE}Feumaidh tu ionad-luchdaidh nan làraidh a leagail an toiseach +STR_ERROR_MUST_DEMOLISH_PASSENGER_TRAM_STATION_FIRST :{WHITE}Feumaidh tu an stèisean trama thaistealach a leagail an toiseach +STR_ERROR_MUST_DEMOLISH_CARGO_TRAM_STATION_FIRST :{WHITE}Feumaidh tu an stèisean trama carago a leagail an toiseach +STR_ERROR_MUST_DEMOLISH_DOCK_FIRST :{WHITE}Feumaidh tu am port a leagail an toiseach +STR_ERROR_MUST_DEMOLISH_AIRPORT_FIRST :{WHITE}Feumaidh tu am port-adhair a leagail an toiseach + +# Waypoint related errors +STR_ERROR_WAYPOINT_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Tha seo ri taobh barrachd air aon phuing-thurais a tha ann mu thràth +STR_ERROR_TOO_CLOSE_TO_ANOTHER_WAYPOINT :{WHITE}Ro fhaisg air puing-thurais eile + +STR_ERROR_CAN_T_BUILD_TRAIN_WAYPOINT :{WHITE}Cha ghabh puing-thurais trèan togail an-seo... +STR_ERROR_CAN_T_POSITION_BUOY_HERE :{WHITE}Cha ghabh fleodrainn togail an-seo... +STR_ERROR_CAN_T_CHANGE_WAYPOINT_NAME :{WHITE}Cha ghabh ainm na puinge-turais atharrachadh... + +STR_ERROR_CAN_T_REMOVE_TRAIN_WAYPOINT :{WHITE}Cha ghabh puing-thurais trèan toirt air falbh an-seo... +STR_ERROR_MUST_REMOVE_RAILWAYPOINT_FIRST :{WHITE}Feumaidh tu a' phuing-thurais trèan a thoirt air falbh an toiseach +STR_ERROR_BUOY_IN_THE_WAY :{WHITE}... tha fleodrainn san rathad +STR_ERROR_BUOY_IS_IN_USE :{WHITE}... tha companaidh eile a' chleachdadh na fleodrainn! + +# Depot related errors +STR_ERROR_CAN_T_BUILD_TRAIN_DEPOT :{WHITE}Cha ghabh trèan-lann togail an-seo... +STR_ERROR_CAN_T_BUILD_ROAD_DEPOT :{WHITE}Cha ghabh garaids togail an seo... +STR_ERROR_CAN_T_BUILD_TRAM_DEPOT :{WHITE}Cha ghabh trama-lann togail an-seo... +STR_ERROR_CAN_T_BUILD_SHIP_DEPOT :{WHITE}Cha ghabh cala togail an-seo... + +STR_ERROR_CAN_T_RENAME_DEPOT :{WHITE}Cha ghabh ainm na garaids / na trèana-lainn / a' chalaidh / a' hangair atharrachadh... + +STR_ERROR_TRAIN_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... feumaidh e a bhith na stad ann an trèan-lann +STR_ERROR_ROAD_VEHICLE_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... feumaidh e bhith na stad ann an garaids +STR_ERROR_SHIP_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... feumaidh e bhith na stad ann an cala +STR_ERROR_AIRCRAFT_MUST_BE_STOPPED_INSIDE_HANGAR :{WHITE}... feumaidh e bhith na stad ann an hangar + +STR_ERROR_TRAINS_CAN_ONLY_BE_ALTERED_INSIDE_A_DEPOT :{WHITE}Cha ghabh trèan atharrachadh ach nuair a bhios i na stad ann an trèan-lann +STR_ERROR_TRAIN_TOO_LONG :{WHITE}Tha an trèan ro fhada +STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE :{WHITE}Chan urrainn dhan charbad tilleadh... +STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE_MULTIPLE_UNITS :{WHITE}... dèanta dhe iomadh aonad +STR_ERROR_INCOMPATIBLE_RAIL_TYPES :Seòrsaichean rèile neo-chòrdail + +STR_ERROR_CAN_T_MOVE_VEHICLE :{WHITE}Chan urrainn dhan charbad gluasad... +STR_ERROR_REAR_ENGINE_FOLLOW_FRONT :{WHITE}Leanaidh an t-einnsean-deiridh an-còmhnaidh air an fhear air a bheulaibh +STR_ERROR_UNABLE_TO_FIND_ROUTE_TO :{WHITE}Cha ghabh slighe dhan gharaids / trèan-lann / cala / hangar ionadail lorg +STR_ERROR_UNABLE_TO_FIND_LOCAL_DEPOT :{WHITE}Cha ghabh a' gharaids / an trèan-lann / an cala / an hangar ionadail lorg + +STR_ERROR_DEPOT_WRONG_DEPOT_TYPE :Seòrsa dhe gharaids / trèan-lann / cala / hangar cearr + +# Autoreplace related errors +STR_ERROR_TRAIN_TOO_LONG_AFTER_REPLACEMENT :{WHITE}Tha {VEHICLE} ro fhada an dèidh cur an àite +STR_ERROR_AUTOREPLACE_NOTHING_TO_DO :{WHITE}Cha deach riaghailt fèin-leasachaidh/fèin-nuadhachaidh sam bith a chur an sàs +STR_ERROR_AUTOREPLACE_MONEY_LIMIT :(chan eil airgead gu leòr ann) + +# Rail construction errors +STR_ERROR_IMPOSSIBLE_TRACK_COMBINATION :{WHITE}Co-mheasgachadh dhe shlighean do-dhèanta +STR_ERROR_MUST_REMOVE_SIGNALS_FIRST :{WHITE}Feumaidh tu na comharran a thoirt air falbh an toiseach +STR_ERROR_NO_SUITABLE_RAILROAD_TRACK :{WHITE}Chan eil slighe rèile iomchaidh ann +STR_ERROR_MUST_REMOVE_RAILROAD_TRACK :{WHITE}Feumaidh tu an t-slighe rèile a thoirt air falbh an toiseach +STR_ERROR_CROSSING_ON_ONEWAY_ROAD :{WHITE}Rathad aon-shligheach no bacte +STR_ERROR_CROSSING_DISALLOWED :{WHITE}Chan eil staranan-rèile ceadaichte leis an t-seòrsa dhe rèile seo +STR_ERROR_CAN_T_BUILD_SIGNALS_HERE :{WHITE}Cha ghabh comharran togail an-seo... +STR_ERROR_CAN_T_BUILD_RAILROAD_TRACK :{WHITE}Cha ghabh slighe-rèile togail an-seo... +STR_ERROR_CAN_T_REMOVE_RAILROAD_TRACK :{WHITE}Cha ghabh an t-slighe-rèile toirt air falbh an-seo... +STR_ERROR_CAN_T_REMOVE_SIGNALS_FROM :{WHITE}Cha ghabh na comharran toirt air falbh an-seo... +STR_ERROR_SIGNAL_CAN_T_CONVERT_SIGNALS_HERE :{WHITE}Cha ghabh na comharran iompachadh an-seo... +STR_ERROR_THERE_IS_NO_RAILROAD_TRACK :{WHITE}... chan eil slighe-rèile ann +STR_ERROR_THERE_ARE_NO_SIGNALS :{WHITE}... chan eil comharra sam bith ann + +STR_ERROR_CAN_T_CONVERT_RAIL :{WHITE}Cha ghabh seòrsa an rèile iompachadh an-seo... + +# Road construction errors +STR_ERROR_MUST_REMOVE_ROAD_FIRST :{WHITE}Feumaidh tu an rathad a toirt air falbh an toiseach +STR_ERROR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION :{WHITE}... chan urrainn dha ghobhal a bhith aig rathad aon-shligheach +STR_ERROR_CAN_T_BUILD_ROAD_HERE :{WHITE}Cha ghabh rathad togail an-seo... +STR_ERROR_CAN_T_BUILD_TRAMWAY_HERE :{WHITE}Cha ghabh slighe-trama togail an-seo... +STR_ERROR_CAN_T_REMOVE_ROAD_FROM :{WHITE}Cha ghabh rathad toirt air falbh an-seo... +STR_ERROR_CAN_T_REMOVE_TRAMWAY_FROM :{WHITE}Cha ghabh an t-slighe-trama toirt air falbh an-seo... +STR_ERROR_THERE_IS_NO_ROAD :{WHITE}... chan eil rathad ann +STR_ERROR_THERE_IS_NO_TRAMWAY :{WHITE}... chan eil slighe-trama ann + +# Waterway construction errors +STR_ERROR_CAN_T_BUILD_CANALS :{WHITE}Cha ghabh canal togail an-seo... +STR_ERROR_CAN_T_BUILD_LOCKS :{WHITE}Cha ghabh loc togail an-seo... +STR_ERROR_CAN_T_PLACE_RIVERS :{WHITE}Cha ghabh abhainn togail an-seo... +STR_ERROR_MUST_BE_BUILT_ON_WATER :{WHITE}... feumaidh tu seo a thogail air uisge +STR_ERROR_CAN_T_BUILD_ON_WATER :{WHITE}... chan urrainn dhut seo a thogail air uisge +STR_ERROR_CAN_T_BUILD_ON_SEA :{WHITE}... chan urrainn dhut seo a thogail air a' chuain +STR_ERROR_CAN_T_BUILD_ON_CANAL :{WHITE}... chan urrainn dhut seo a thogail air canal +STR_ERROR_CAN_T_BUILD_ON_RIVER :{WHITE}... chan urrainn dhut seo a thogail air abhainn +STR_ERROR_MUST_DEMOLISH_CANAL_FIRST :{WHITE}Feumaidh tu an canal a leagail an toiseach +STR_ERROR_CAN_T_BUILD_AQUEDUCT_HERE :{WHITE}Chan urrainn dhut duct-uisge a thogail an-seo... + +# Tree related errors +STR_ERROR_TREE_ALREADY_HERE :{WHITE}... tha craobh an-seo mu thràth +STR_ERROR_TREE_WRONG_TERRAIN_FOR_TREE_TYPE :{WHITE}... cruth-tìre cearr airson an t-seòrsa dhe chraobh seo +STR_ERROR_CAN_T_PLANT_TREE_HERE :{WHITE}Cha ghabh a' chraobh cur an-seo... + +# Bridge related errors +STR_ERROR_CAN_T_BUILD_BRIDGE_HERE :{WHITE}Cha ghabh an drochaid togail an-seo... +STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}Feumaidh tu an drochaid a leagail an toiseach +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_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 +STR_ERROR_BRIDGE_THROUGH_MAP_BORDER :{WHITE}Bhiodh ceann thall na drochaide taobh a-muigh a' mhapa + +# Tunnel related errors +STR_ERROR_CAN_T_BUILD_TUNNEL_HERE :{WHITE}Cha ghabh tunail togail an-seo... +STR_ERROR_SITE_UNSUITABLE_FOR_TUNNEL :{WHITE}Chan eil an t-àite iomchaidh airson ceann an tunail +STR_ERROR_MUST_DEMOLISH_TUNNEL_FIRST :{WHITE}Feumaidh tu an tunail a leagail an toiseach +STR_ERROR_ANOTHER_TUNNEL_IN_THE_WAY :{WHITE}Tha tunail eile san rathad +STR_ERROR_TUNNEL_THROUGH_MAP_BORDER :{WHITE}Bhiod ceann thall an tunail taobh a-muigh a' mhapa +STR_ERROR_UNABLE_TO_EXCAVATE_LAND :{WHITE}Cha ghabh an tìr cladhach airson ceann thall an tunail +STR_ERROR_TUNNEL_TOO_LONG :{WHITE}... tha an tunail ro fhada + +# Object related errors +STR_ERROR_TOO_MANY_OBJECTS :{WHITE}... tha cus oibseactan ann +STR_ERROR_CAN_T_BUILD_OBJECT :{WHITE}Cha ghabh an t-oibseact togail +STR_ERROR_OBJECT_IN_THE_WAY :{WHITE}Tha oibseact san rathad +STR_ERROR_COMPANY_HEADQUARTERS_IN :{WHITE}... tha ionad na companaidh san rathad +STR_ERROR_CAN_T_PURCHASE_THIS_LAND :{WHITE}Chan urrainn dhut an raon-tìre seo a cheannach... +STR_ERROR_YOU_ALREADY_OWN_IT :{WHITE}... tha e leatsa mu thràth! + +# Group related errors +STR_ERROR_GROUP_CAN_T_CREATE :{WHITE}Cha ghabh am buidheann cruthachadh... +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... + +# Generic vehicle errors +STR_ERROR_TRAIN_IN_THE_WAY :{WHITE}Tha trèan san rathad +STR_ERROR_ROAD_VEHICLE_IN_THE_WAY :{WHITE}Tha carbad-rathaid san rathad +STR_ERROR_SHIP_IN_THE_WAY :{WHITE}Tha long san rathad +STR_ERROR_AIRCRAFT_IN_THE_WAY :{WHITE}Tha carbad-adhair san rathad + +STR_ERROR_CAN_T_REFIT_TRAIN :{WHITE}Cha ghabh an trèan mùthadh... +STR_ERROR_CAN_T_REFIT_ROAD_VEHICLE :{WHITE}Cha ghabh an carbad-rathaid mùthadh... +STR_ERROR_CAN_T_REFIT_SHIP :{WHITE}Cha ghabh an long mùthadh... +STR_ERROR_CAN_T_REFIT_AIRCRAFT :{WHITE}Cha ghabh an carbad-adhair mùthadh... + +STR_ERROR_CAN_T_RENAME_TRAIN :{WHITE}Cha ghabh ainm toirt air an trèan... +STR_ERROR_CAN_T_RENAME_ROAD_VEHICLE :{WHITE}Cha ghabh ainm toirt air a' charbad-rathaid... +STR_ERROR_CAN_T_RENAME_SHIP :{WHITE}Cha ghabh ainm toirt air an long... +STR_ERROR_CAN_T_RENAME_AIRCRAFT :{WHITE}Cha ghabh ainm toirt air a' charbad-adhair... + +STR_ERROR_CAN_T_STOP_START_TRAIN :{WHITE}Cha ghabh an trèana cur a' dol/na stad... +STR_ERROR_CAN_T_STOP_START_ROAD_VEHICLE :{WHITE}Cha ghabh an carbad-rathaid cur a' dol/na stad... +STR_ERROR_CAN_T_STOP_START_SHIP :{WHITE}Cha ghabh an long cur a' dol/na stad... +STR_ERROR_CAN_T_STOP_START_AIRCRAFT :{WHITE}Cha ghabh an carbad-adhair cur a' dol/na stad... + +STR_ERROR_CAN_T_SEND_TRAIN_TO_DEPOT :{WHITE}Cha ghabh an trèan cur dhan trèan-lann... +STR_ERROR_CAN_T_SEND_ROAD_VEHICLE_TO_DEPOT :{WHITE}Cha ghabh an carbad-rathaid cur dhan gharaids... +STR_ERROR_CAN_T_SEND_SHIP_TO_DEPOT :{WHITE}Cha ghabh an long cur dhan chala... +STR_ERROR_CAN_T_SEND_AIRCRAFT_TO_HANGAR :{WHITE}Cha ghabh an carbad-adhair cur dhan hangar... + +STR_ERROR_CAN_T_BUY_TRAIN :{WHITE}Cha ghabh an carbad-rèile ceannach... +STR_ERROR_CAN_T_BUY_ROAD_VEHICLE :{WHITE}Cha ghabh an carbad-rathaid ceannach... +STR_ERROR_CAN_T_BUY_SHIP :{WHITE}Cha ghabh an long ceannach... +STR_ERROR_CAN_T_BUY_AIRCRAFT :{WHITE}Cha ghabh an carbad-adhair ceannach... + +STR_ERROR_CAN_T_RENAME_TRAIN_TYPE :{WHITE}Cha ghabh ainm ùr toirt air an t-seòrsa carbaid-rèile... +STR_ERROR_CAN_T_RENAME_ROAD_VEHICLE_TYPE :{WHITE}Cha ghabh ainm ùr toirt air an t-seòrsa carbaid-rathaid... +STR_ERROR_CAN_T_RENAME_SHIP_TYPE :{WHITE}Cha ghabh ainm ùr toirt air an t-seòrsa luinge... +STR_ERROR_CAN_T_RENAME_AIRCRAFT_TYPE :{WHITE}Cha ghabh ainm ùr toirt air an t-seòrsa carbaid-adhair... + +STR_ERROR_CAN_T_SELL_TRAIN :{WHITE}Cha ghabh an carbad-rèile reic... +STR_ERROR_CAN_T_SELL_ROAD_VEHICLE :{WHITE}Cha ghabh an carbad-rathaid reic... +STR_ERROR_CAN_T_SELL_SHIP :{WHITE}Cha ghabh an long reic... +STR_ERROR_CAN_T_SELL_AIRCRAFT :{WHITE}Cha ghabh an carbad-adhair reic... + +STR_ERROR_RAIL_VEHICLE_NOT_AVAILABLE :{WHITE}Chan eil an carbad ri làimh +STR_ERROR_ROAD_VEHICLE_NOT_AVAILABLE :{WHITE}Chan eil an carbad ri làimh +STR_ERROR_SHIP_NOT_AVAILABLE :{WHITE}Chan eil an long ri làimh +STR_ERROR_AIRCRAFT_NOT_AVAILABLE :{WHITE}Chan eil an carbad ri làimh + +STR_ERROR_TOO_MANY_VEHICLES_IN_GAME :{WHITE}Tha cus charbadan sa gheama +STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}Cha ghabh tricead na h-obrach-glèidhidh atharrachadh... + +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 + +# Specific vehicle errors +STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Chan urrainn dhut toirt air trèanaichean dol seachad air comharra fo chunnart... +STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Chan urrainn dhan trèana tilleadh... +STR_ERROR_TRAIN_START_NO_POWER :Chan eil cumhachd aig an trèan + +STR_ERROR_CAN_T_MAKE_ROAD_VEHICLE_TURN :{WHITE}Chan urrainn dhan charbad-rathaid tilleadh... + +STR_ERROR_AIRCRAFT_IS_IN_FLIGHT :{WHITE}Tha an carbad-adhair air sgiath + +# Order related errors +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 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... +STR_ERROR_CAN_T_SKIP_TO_ORDER :{WHITE}Cha ghabh leum gearradh dhan òrdugh a thagh thu... +STR_ERROR_CAN_T_COPY_SHARE_ORDER :{WHITE}... chan urrainn dhan charbad dol dhan a h-uile stèisean +STR_ERROR_CAN_T_ADD_ORDER :{WHITE}... chan urrainn dhan charbad dol dhan stèisean ud +STR_ERROR_CAN_T_ADD_ORDER_SHARED :{WHITE}... chan urrainn dha charbad a cho-roinneas na h-òrduighean seo dol dhan stèisean ud + +STR_ERROR_CAN_T_SHARE_ORDER_LIST :{WHITE}Cha ghabh liosta nan òrduighean co-roinneadh... +STR_ERROR_CAN_T_STOP_SHARING_ORDER_LIST :{WHITE}Chan urrainn dhut sgur dhe liosta nan òrduighean seo a cho-roinneadh... +STR_ERROR_CAN_T_COPY_ORDER_LIST :{WHITE}Cha ghabh lethbhreac dèanamh dhe liosta nan òrduighean... +STR_ERROR_TOO_FAR_FROM_PREVIOUS_DESTINATION :{WHITE}... ro fhad air falbh on cheann-uidhe roimhe +STR_ERROR_AIRCRAFT_NOT_ENOUGH_RANGE :{WHITE}... chan eil rainse gu leòr aig a' charbad-adhair + +# Timetable related errors +STR_ERROR_CAN_T_TIMETABLE_VEHICLE :{WHITE}Cha ghabh clàr-ama toirt dhan charbad... +STR_ERROR_TIMETABLE_ONLY_WAIT_AT_STATIONS :{WHITE}Chan urrainn dha charbad feitheamh ach aig stèisean +STR_ERROR_TIMETABLE_NOT_STOPPING_HERE :{WHITE}Chan eil an carbad seo a' stad aig an stèisean seo + +# Sign related errors +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 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 + +# Translatable descriptions in media/baseset/*.ob* files +STR_BASEGRAPHICS_DOS_DESCRIPTION :Grafaigeachd aig an deasachadh DOS tùsail aig Transport Tycoon Deluxe. +STR_BASEGRAPHICS_DOS_DE_DESCRIPTION :Grafaigeachd aig an deasachadh DOS (Gearmailteach) tùsail aig Transport Tycoon Deluxe. +STR_BASEGRAPHICS_WIN_DESCRIPTION :Grafaigeachd aig an deasachadh Windows tùsail aig Transport Tycoon Deluxe. +STR_BASESOUNDS_DOS_DESCRIPTION :Fuaimean aig an deasachadh DOS tùsail aig Transport Tycoon Deluxe. +STR_BASESOUNDS_WIN_DESCRIPTION :Fuaimean aig an deasachadh Windows tùsail aig Transport Tycoon Deluxe. +STR_BASESOUNDS_NONE_DESCRIPTION :Pacaid fhuaimean anns nach eil fuaim sam bith. +STR_BASEMUSIC_WIN_DESCRIPTION :Ceòl aig an deasachadh Windows tùsail aig Transport Tycoon Deluxe. +STR_BASEMUSIC_NONE_DESCRIPTION :Pacaid ciùil anns nach eil fonn sam bith. + +##id 0x2000 +# Town building names +STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1 :{G=m}Ionad oifisean àrd +STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_1 :{G=m}Ionad oifisean +STR_TOWN_BUILDING_NAME_SMALL_BLOCK_OF_FLATS_1 :{G=m}Ionad fhlataichean beag +STR_TOWN_BUILDING_NAME_CHURCH_1 :{G=f}Eaglais +STR_TOWN_BUILDING_NAME_LARGE_OFFICE_BLOCK_1 :{G=m}Ionad oifisean mòr +STR_TOWN_BUILDING_NAME_TOWN_HOUSES_1 :Taighean-baile +STR_TOWN_BUILDING_NAME_HOTEL_1 :{G=m}Taigh-òsta +STR_TOWN_BUILDING_NAME_STATUE_1 :{G=f}Ìomhaigh +STR_TOWN_BUILDING_NAME_STATUE_1.nom :{G=f}Ìomhaigh +STR_TOWN_BUILDING_NAME_STATUE_1.gen :{G=f}Ìomhaighe +STR_TOWN_BUILDING_NAME_STATUE_1.dat :{G=f}Ìomhaigh +STR_TOWN_BUILDING_NAME_FOUNTAIN_1 :{G=m}Fuaran +STR_TOWN_BUILDING_NAME_PARK_1 :{G=f}Pàirc +STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_2 :{G=m}Ionad oifisean +STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_1 :Bùthan is oifisean +STR_TOWN_BUILDING_NAME_MODERN_OFFICE_BUILDING_1 :{G=m}Togalach oifisean ùr-nòsach +STR_TOWN_BUILDING_NAME_WAREHOUSE_1 :{G=m}Taigh-bathair +STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_3 :{G=m}Ionad oifisean +STR_TOWN_BUILDING_NAME_STADIUM_1 :{G=m}Stèideam +STR_TOWN_BUILDING_NAME_OLD_HOUSES_1 :Seann taighean +STR_TOWN_BUILDING_NAME_COTTAGES_1 :Taighean-croite +STR_TOWN_BUILDING_NAME_HOUSES_1 :Taighean +STR_TOWN_BUILDING_NAME_FLATS_1 :Flataichean +STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_2 :Ionad oifisean àrd +STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_2 :Bùthan is oifisean +STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_3 :Bùthan is oifisean +STR_TOWN_BUILDING_NAME_THEATER_1 :{G=m}Taigh-cluiche +STR_TOWN_BUILDING_NAME_THEATER_1.nom :{G=m}Taigh-cluiche +STR_TOWN_BUILDING_NAME_THEATER_1.gen :{G=m}Taighe-chluiche +STR_TOWN_BUILDING_NAME_THEATER_1.dat :{G=m}Taigh-cluiche +STR_TOWN_BUILDING_NAME_STADIUM_2 :{G=m}Stèideam +STR_TOWN_BUILDING_NAME_STADIUM_2.nom :{G=m}Stèideam +STR_TOWN_BUILDING_NAME_STADIUM_2.gen :{G=m}Stèideim +STR_TOWN_BUILDING_NAME_STADIUM_2.dat :{G=m}Stèideam +STR_TOWN_BUILDING_NAME_OFFICES_1 :{G=f}Oifisean +STR_TOWN_BUILDING_NAME_HOUSES_2 :{G=m}Taighean +STR_TOWN_BUILDING_NAME_HOUSES_2.nom :{G=m}Taighean +STR_TOWN_BUILDING_NAME_HOUSES_2.gen :{G=m}Thaighean +STR_TOWN_BUILDING_NAME_HOUSES_2.dat :{G=m}Taighean +STR_TOWN_BUILDING_NAME_CINEMA_1 :{G=m}Taigh-dhealbh +STR_TOWN_BUILDING_NAME_CINEMA_1.nom :{G=m}Taigh-dhealbh +STR_TOWN_BUILDING_NAME_CINEMA_1.gen :{G=m}Taighe-dhealbh +STR_TOWN_BUILDING_NAME_CINEMA_1.dat :{G=m}Taigh-dhealbh +STR_TOWN_BUILDING_NAME_SHOPPING_MALL_1 :{G=m}Ionad bhùthan +STR_TOWN_BUILDING_NAME_SHOPPING_MALL_1.nom :{G=m}Ionad bhùthan +STR_TOWN_BUILDING_NAME_SHOPPING_MALL_1.gen :{G=m}Ionaid bhùthan +STR_TOWN_BUILDING_NAME_SHOPPING_MALL_1.dat :{G=m}Ionad bhùthan +STR_TOWN_BUILDING_NAME_IGLOO_1 :{G=m}Taigh-sneachda +STR_TOWN_BUILDING_NAME_IGLOO_1.nom :{G=m}Taigh-sneachda +STR_TOWN_BUILDING_NAME_IGLOO_1.gen :{G=m}Taighe-shneachda +STR_TOWN_BUILDING_NAME_IGLOO_1.dat :{G=m}Taigh-sneachda +STR_TOWN_BUILDING_NAME_TEPEES_1 :{G=m}Tìpidhean +STR_TOWN_BUILDING_NAME_TEPEES_1.nom :{G=m}Tìpidhean +STR_TOWN_BUILDING_NAME_TEPEES_1.gen :{G=m}Thìpidhean +STR_TOWN_BUILDING_NAME_TEPEES_1.dat :{G=m}Tìpidhean +STR_TOWN_BUILDING_NAME_TEAPOT_HOUSE_1 :{G=m}Taigh poit-teatha +STR_TOWN_BUILDING_NAME_TEAPOT_HOUSE_1.nom :{G=m}Taigh poit-teatha +STR_TOWN_BUILDING_NAME_TEAPOT_HOUSE_1.gen :{G=m}Taighe poit-teatha +STR_TOWN_BUILDING_NAME_TEAPOT_HOUSE_1.dat :{G=m}Taigh poit-teatha +STR_TOWN_BUILDING_NAME_PIGGY_BANK_1 :{G=f}Mucag-airgid +STR_TOWN_BUILDING_NAME_PIGGY_BANK_1.nom :{G=f}Mucag-airgid +STR_TOWN_BUILDING_NAME_PIGGY_BANK_1.gen :{G=f}Mucaige-airgid +STR_TOWN_BUILDING_NAME_PIGGY_BANK_1.dat :{G=f}Mucag-airgid + +##id 0x4800 +# industry names +STR_INDUSTRY_NAME_COAL_MINE :Mèinn guail +STR_INDUSTRY_NAME_COAL_MINE.nom :Mèinn guail +STR_INDUSTRY_NAME_COAL_MINE.gen :Mèinn guail +STR_INDUSTRY_NAME_COAL_MINE.dat :Mèinn guail +STR_INDUSTRY_NAME_POWER_STATION :Stèisean-cumhachd +STR_INDUSTRY_NAME_POWER_STATION.nom :Stèisean-cumhachd +STR_INDUSTRY_NAME_POWER_STATION.gen :Stèisein-chumhachd +STR_INDUSTRY_NAME_POWER_STATION.dat :Stèisean-cumhachd +STR_INDUSTRY_NAME_SAWMILL :Muileann-sàbhaidh +STR_INDUSTRY_NAME_SAWMILL.nom :Muileann-sàbhaidh +STR_INDUSTRY_NAME_SAWMILL.gen :Muilinn-shàbhaidh +STR_INDUSTRY_NAME_SAWMILL.dat :Muileann-sàbhaidh +STR_INDUSTRY_NAME_FOREST :Coille +STR_INDUSTRY_NAME_FOREST.nom :Coille +STR_INDUSTRY_NAME_FOREST.gen :Coille +STR_INDUSTRY_NAME_FOREST.dat :Coille +STR_INDUSTRY_NAME_OIL_REFINERY :Fìneadair-ola +STR_INDUSTRY_NAME_OIL_RIG :Crann-ola +STR_INDUSTRY_NAME_OIL_RIG.nom :Crann-ola +STR_INDUSTRY_NAME_OIL_RIG.gen :Crainn-ola +STR_INDUSTRY_NAME_OIL_RIG.dat :Crann-ola +STR_INDUSTRY_NAME_FACTORY :Factaraidh +STR_INDUSTRY_NAME_FACTORY.nom :Factaraidh +STR_INDUSTRY_NAME_FACTORY.gen :Factaraidh +STR_INDUSTRY_NAME_FACTORY.dat :Factaraidh +STR_INDUSTRY_NAME_PRINTING_WORKS :Ionad clò-bhualaidh +STR_INDUSTRY_NAME_PRINTING_WORKS.nom :Ionad clò-bhualaidh +STR_INDUSTRY_NAME_PRINTING_WORKS.gen :Ionad clò-bhualaidh +STR_INDUSTRY_NAME_PRINTING_WORKS.dat :Ionad clò-bhualaidh +STR_INDUSTRY_NAME_STEEL_MILL :Muilleann-stàilinne +STR_INDUSTRY_NAME_STEEL_MILL.nom :Muilleann-stàilinne +STR_INDUSTRY_NAME_STEEL_MILL.gen :Muillinn-stàilinne +STR_INDUSTRY_NAME_STEEL_MILL.dat :Muilleann-stàilinne +STR_INDUSTRY_NAME_FARM :Tuathanas +STR_INDUSTRY_NAME_FARM.nom :Tuathanas +STR_INDUSTRY_NAME_FARM.gen :Tuathanais +STR_INDUSTRY_NAME_FARM.dat :Tuathanas +STR_INDUSTRY_NAME_COPPER_ORE_MINE :Mèinn cloich-copair +STR_INDUSTRY_NAME_COPPER_ORE_MINE.nom :Mèinn cloich-copair +STR_INDUSTRY_NAME_COPPER_ORE_MINE.gen :Mèinn cloich-copair +STR_INDUSTRY_NAME_COPPER_ORE_MINE.dat :Mèinn cloich-copair +STR_INDUSTRY_NAME_OIL_WELLS :Tobraichean-ola +STR_INDUSTRY_NAME_OIL_WELLS.nom :Tobraichean-ola +STR_INDUSTRY_NAME_OIL_WELLS.gen :Thobraichean-ola +STR_INDUSTRY_NAME_OIL_WELLS.dat :Tobraichean-ola +STR_INDUSTRY_NAME_BANK :Banca +STR_INDUSTRY_NAME_BANK.nom :Banca +STR_INDUSTRY_NAME_BANK.gen :Banca +STR_INDUSTRY_NAME_BANK.dat :Banca +STR_INDUSTRY_NAME_FOOD_PROCESSING_PLANT :Factaraidh bìdh +STR_INDUSTRY_NAME_FOOD_PROCESSING_PLANT.nom :Factaraidh bidhe +STR_INDUSTRY_NAME_FOOD_PROCESSING_PLANT.gen :Factaraidh bidhe +STR_INDUSTRY_NAME_FOOD_PROCESSING_PLANT.dat :Factaraidh bidhe +STR_INDUSTRY_NAME_PAPER_MILL :Muileann-pàipeir +STR_INDUSTRY_NAME_PAPER_MILL.nom :Muileann-pàipeir +STR_INDUSTRY_NAME_PAPER_MILL.gen :Muilinn-phàipeir +STR_INDUSTRY_NAME_PAPER_MILL.dat :Muileann-pàipeir +STR_INDUSTRY_NAME_GOLD_MINE :Mèinn òir +STR_INDUSTRY_NAME_GOLD_MINE.nom :Mèinn òir +STR_INDUSTRY_NAME_GOLD_MINE.gen :Mèinn òir +STR_INDUSTRY_NAME_GOLD_MINE.dat :Mèinn òir +STR_INDUSTRY_NAME_BANK_TROPIC_ARCTIC :Banca +STR_INDUSTRY_NAME_BANK_TROPIC_ARCTIC.nom :Banca +STR_INDUSTRY_NAME_BANK_TROPIC_ARCTIC.gen :Banca +STR_INDUSTRY_NAME_BANK_TROPIC_ARCTIC.dat :Banca +STR_INDUSTRY_NAME_DIAMOND_MINE :Mèinn daoimein +STR_INDUSTRY_NAME_DIAMOND_MINE.nom :Mèinn daoimein +STR_INDUSTRY_NAME_DIAMOND_MINE.gen :Mèinn daoimein +STR_INDUSTRY_NAME_DIAMOND_MINE.dat :Mèinn daoimein +STR_INDUSTRY_NAME_IRON_ORE_MINE :Mèinn cloich-iarainn +STR_INDUSTRY_NAME_IRON_ORE_MINE.nom :Mèinn cloich-iarainn +STR_INDUSTRY_NAME_IRON_ORE_MINE.gen :Mèinn cloich-iarainn +STR_INDUSTRY_NAME_IRON_ORE_MINE.dat :Mèinn cloich-iarainn +STR_INDUSTRY_NAME_FRUIT_PLANTATION :Planntachadh-measa +STR_INDUSTRY_NAME_FRUIT_PLANTATION.nom :Planntachadh-measa +STR_INDUSTRY_NAME_FRUIT_PLANTATION.gen :Planntachaidh-mheasa +STR_INDUSTRY_NAME_FRUIT_PLANTATION.dat :Planntachadh-measa +STR_INDUSTRY_NAME_RUBBER_PLANTATION :Planntachadh-rubair +STR_INDUSTRY_NAME_RUBBER_PLANTATION.nom :Planntachadh-rubair +STR_INDUSTRY_NAME_RUBBER_PLANTATION.gen :Planntachaidh-rubair +STR_INDUSTRY_NAME_RUBBER_PLANTATION.dat :Planntachadh-rubair +STR_INDUSTRY_NAME_WATER_SUPPLY :Solar-uisge +STR_INDUSTRY_NAME_WATER_SUPPLY.nom :Solar-uisge +STR_INDUSTRY_NAME_WATER_SUPPLY.gen :Solair-uisge +STR_INDUSTRY_NAME_WATER_SUPPLY.dat :Solar-uisge +STR_INDUSTRY_NAME_WATER_TOWER :Tùr-uisge +STR_INDUSTRY_NAME_WATER_TOWER.nom :Tùr-uisge +STR_INDUSTRY_NAME_WATER_TOWER.gen :Tùir-uisge +STR_INDUSTRY_NAME_WATER_TOWER.dat :Tùr-uisge +STR_INDUSTRY_NAME_FACTORY_2 :Factaraidh +STR_INDUSTRY_NAME_FACTORY_2.nom :Factaraidh +STR_INDUSTRY_NAME_FACTORY_2.gen :Factaraidh +STR_INDUSTRY_NAME_FACTORY_2.dat :Factaraidh +STR_INDUSTRY_NAME_FARM_2 :Tuathanas +STR_INDUSTRY_NAME_FARM_2.nom :Tuathanas +STR_INDUSTRY_NAME_FARM_2.gen :Tuathanais +STR_INDUSTRY_NAME_FARM_2.dat :Tuathanas +STR_INDUSTRY_NAME_LUMBER_MILL :Muileann-fiodha +STR_INDUSTRY_NAME_LUMBER_MILL.nom :Muileann-fiodha +STR_INDUSTRY_NAME_LUMBER_MILL.gen :Muilinn-fhiodha +STR_INDUSTRY_NAME_LUMBER_MILL.dat :Muileann-fiodha +STR_INDUSTRY_NAME_COTTON_CANDY_FOREST :Coille canaich-siùcair +STR_INDUSTRY_NAME_COTTON_CANDY_FOREST.nom :Coille canaich-siùcair +STR_INDUSTRY_NAME_COTTON_CANDY_FOREST.gen :Coille canaich-siùcair +STR_INDUSTRY_NAME_COTTON_CANDY_FOREST.dat :Coille canaich-siùcair +STR_INDUSTRY_NAME_CANDY_FACTORY :Factaraidh mhìlseanan +STR_INDUSTRY_NAME_CANDY_FACTORY.nom :Factaraidh mhìlseanan +STR_INDUSTRY_NAME_CANDY_FACTORY.gen :Factaraidh mhìlseanan +STR_INDUSTRY_NAME_CANDY_FACTORY.dat :Factaraidh mhìlseanan +STR_INDUSTRY_NAME_BATTERY_FARM :Tuathanas bataraidh +STR_INDUSTRY_NAME_BATTERY_FARM.nom :Tuathanas bataraidh +STR_INDUSTRY_NAME_BATTERY_FARM.gen :Tuathanas bataraidh +STR_INDUSTRY_NAME_BATTERY_FARM.dat :Tuathanas bataraidh +STR_INDUSTRY_NAME_COLA_WELLS :Tobraichean-cola +STR_INDUSTRY_NAME_COLA_WELLS.nom :Tobraichean-cola +STR_INDUSTRY_NAME_COLA_WELLS.gen :Thobraichean-cola +STR_INDUSTRY_NAME_COLA_WELLS.dat :Tobraichean-cola +STR_INDUSTRY_NAME_TOY_SHOP :Bùth dhèideagan +STR_INDUSTRY_NAME_TOY_SHOP.nom :Bùth dhèideagan +STR_INDUSTRY_NAME_TOY_SHOP.gen :Bùth dhèideagan +STR_INDUSTRY_NAME_TOY_SHOP.dat :Bùth dhèideagan +STR_INDUSTRY_NAME_TOY_FACTORY :Factaraidh dhèideagan +STR_INDUSTRY_NAME_TOY_FACTORY.nom :Factaraidh dhèideagan +STR_INDUSTRY_NAME_TOY_FACTORY.gen :Factaraidh dhèideagan +STR_INDUSTRY_NAME_TOY_FACTORY.dat :Factaraidh dhèideagan +STR_INDUSTRY_NAME_PLASTIC_FOUNTAINS :Tobraichean-plastaig +STR_INDUSTRY_NAME_PLASTIC_FOUNTAINS.nom :Tobraichean-plastaig +STR_INDUSTRY_NAME_PLASTIC_FOUNTAINS.gen :Thobraichean-plastaig +STR_INDUSTRY_NAME_PLASTIC_FOUNTAINS.dat :Tobraichean-plastaig +STR_INDUSTRY_NAME_FIZZY_DRINK_FACTORY :Factaraidh dheochan gucagach +STR_INDUSTRY_NAME_FIZZY_DRINK_FACTORY.nom :Factaraidh dheochan gucagach +STR_INDUSTRY_NAME_FIZZY_DRINK_FACTORY.gen :Factaraidh dheochan gucagach +STR_INDUSTRY_NAME_FIZZY_DRINK_FACTORY.dat :Factaraidh dheochan gucagach +STR_INDUSTRY_NAME_BUBBLE_GENERATOR :Gineadair bhuilgeanan +STR_INDUSTRY_NAME_BUBBLE_GENERATOR.nom :Gineadair bhuilgeanan +STR_INDUSTRY_NAME_BUBBLE_GENERATOR.gen :Gineadair bhuilgeanan +STR_INDUSTRY_NAME_BUBBLE_GENERATOR.dat :Gineadair bhuilgeanan +STR_INDUSTRY_NAME_TOFFEE_QUARRY :Coireall tofaidh +STR_INDUSTRY_NAME_TOFFEE_QUARRY.nom :Coireall tofaidh +STR_INDUSTRY_NAME_TOFFEE_QUARRY.gen :Coireall tofaidh +STR_INDUSTRY_NAME_TOFFEE_QUARRY.dat :Coireall tofaidh +STR_INDUSTRY_NAME_SUGAR_MINE :Mèinn siùcair +STR_INDUSTRY_NAME_SUGAR_MINE.nom :Mèinn siùcair +STR_INDUSTRY_NAME_SUGAR_MINE.gen :Mèinn siùcair +STR_INDUSTRY_NAME_SUGAR_MINE.dat :Mèinn siùcair + +############ 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 :Gun ainm +STR_SV_TRAIN_NAME :{G=f}Trèan {COMMA} +STR_SV_ROAD_VEHICLE_NAME :Carbad-rathaid {COMMA} +STR_SV_SHIP_NAME :{G=f}Long {COMMA} +STR_SV_AIRCRAFT_NAME :Carbad-adhair {COMMA} + +STR_SV_STNAME :{STRING} +STR_SV_STNAME_NORTH :{STRING} a Tuath +STR_SV_STNAME_SOUTH :{STRING} a Deas +STR_SV_STNAME_EAST :{STRING} an Ear +STR_SV_STNAME_WEST :{STRING} an Iar +STR_SV_STNAME_CENTRAL :Meadhan {STRING} +STR_SV_STNAME_TRANSFER :Tar-aiseag {STRING} +STR_SV_STNAME_HALT :Stad {STRING} +STR_SV_STNAME_VALLEY :Gleann {STRING} +STR_SV_STNAME_HEIGHTS :Àirde {STRING} +STR_SV_STNAME_WOODS :Coille {STRING} +STR_SV_STNAME_LAKESIDE :Loch {STRING} +STR_SV_STNAME_EXCHANGE :Iomlaid {STRING} +STR_SV_STNAME_AIRPORT :{G=m}Port-adhair {STRING} +STR_SV_STNAME_AIRPORT.nom :{G=m}Port-adhair - {STRING} +STR_SV_STNAME_AIRPORT.gen :{G=m}Puirt-adhair - {STRING} +STR_SV_STNAME_AIRPORT.dat :{G=m}Port-adhair - {STRING} +STR_SV_STNAME_OILFIELD :Achadh-ola {STRING} +STR_SV_STNAME_MINES :Mèinnean {STRING} +STR_SV_STNAME_DOCKS :{G=m}Port {STRING} +STR_SV_STNAME_DOCKS.nom :{G=m}Port - {STRING} +STR_SV_STNAME_DOCKS.gen :{G=m}Puirt - {STRING} +STR_SV_STNAME_DOCKS.dat :{G=m}Port - {STRING} +STR_SV_STNAME_BUOY :{STRING} +STR_SV_STNAME_WAYPOINT :{STRING} +##id 0x6020 +STR_SV_STNAME_ANNEXE :Meudachadh {STRING} +STR_SV_STNAME_SIDINGS :Taobh {STRING} +STR_SV_STNAME_BRANCH :Meur {STRING} +STR_SV_STNAME_UPPER :{STRING} Uachdarach +STR_SV_STNAME_LOWER :{STRING} Iochdarach +STR_SV_STNAME_HELIPORT :{G=m}Port-heileacoptair {STRING} +STR_SV_STNAME_HELIPORT.nom :{G=m}Port-heileacoptair - {STRING} +STR_SV_STNAME_HELIPORT.gen :{G=m}Puirt-heileacoptair - {STRING} +STR_SV_STNAME_HELIPORT.dat :{G=m}Port-heileacoptair - {STRING} +STR_SV_STNAME_FOREST :Coille {STRING} +STR_SV_STNAME_FALLBACK :{STRING} Stèisean {NUM} +############ end of savegame specific region! + +##id 0x8000 +# Vehicle names +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank (Smùide) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_250_DIESEL :MJS 250 (Diesel) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_CHOO_CHOO :Einnsean-smùide Calma +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_CHOO_CHOO :Einnsean-smùide Cumhachdach +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :Einnsean-smùide Treun +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_DIESEL :Einnsean Diesel Calma +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_DIESEL :Einnsean Diesel Cumhachdach +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_WILLS_2_8_0_STEAM :Wills 2-8-0 (Smùide) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CHANEY_JUBILEE_STEAM :Chaney “Jubilee" (Smùide) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_GINZU_A4_STEAM :Ginzu “A4" (Smùide) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_8P_STEAM :SH “8P" (Smùide) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MANLEY_MOREL_DMU_DIESEL :Manley-Morel DMU (Diesel) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_DASH_DIESEL :“Dash" (Diesel) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_HENDRY_25_DIESEL :SH/Hendry “25" (Diesel) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_UU_37_DIESEL :UU “37" (Diesel) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_FLOSS_47_DIESEL :Floss “47" (Diesel) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CS_4000_DIESEL :CS 4000 (Diesel) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CS_2400_DIESEL :CS 2400 (Diesel) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CENTENNIAL_DIESEL :Centennial (Diesel) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KELLING_3100_DIESEL :Kelling 3100 (Diesel) +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 :SH “125" (Diesel) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_30_ELECTRIC :SH “30" (Dealain) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_40_ELECTRIC :SH “40" (Dealain) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_T_I_M_ELECTRIC :“T.I.M." (Dealain) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_ASIASTAR_ELECTRIC :“AsiaStar" (Dealain) +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PASSENGER_CAR :Carbad thaistealach +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_MAIL_VAN :Bhana litrichean +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COAL_CAR :{G=f}Truca guail +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_OIL_TANKER :Tancair ola +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_LIVESTOCK_VAN :Bhana sprèidhe +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_GOODS_VAN :{G=m}Bhana bathair +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_GRAIN_HOPPER :{G=f}Drabhailt gràine +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_WOOD_TRUCK :{G=f}Truca fiodha +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_IRON_ORE_HOPPER :{G=f}Drabhailt cloich-iarainn +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_STEEL_TRUCK :{G=f}Truca stàilinne +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_ARMORED_VAN :{G=m}Bhana armach +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FOOD_VAN :{G=m}Bhana bìdh +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PAPER_TRUCK :{G=f}Truca pàipeir +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COPPER_ORE_HOPPER :{G=f}Drabhailt cloich-copair +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_WATER_TANKER :{G=m}Tancair uisge +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FRUIT_TRUCK :{G=f}Truca measa +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_RUBBER_TRUCK :{G=f}Truca rubair +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_SUGAR_TRUCK :{G=f}Truca siùcair +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COTTON_CANDY_HOPPER :{G=f}Drabhailt canaich-siùcair +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_TOFFEE_HOPPER :{G=f}Drabhailt tofaidh +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_BUBBLE_VAN :{G=m}Bhana builgein +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COLA_TANKER :{G=m}Tancair cola +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_CANDY_VAN :{G=m}Bhana mìlsein +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_TOY_VAN :{G=m}Bhana dhèideagan +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_BATTERY_TRUCK :{G=f}Truca bataraidh +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FIZZY_DRINK_TRUCK :{G=f}Truca dheochan gucagach +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PLASTIC_TRUCK :{G=f}Truca plastaig +STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_X2001_ELECTRIC :“X2001" (Dealain) +STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_MILLENNIUM_Z1_ELECTRIC :“Millennium Z1" (Dealain) +STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_WIZZOWOW_Z99 :Z99 Iongantach +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PASSENGER_CAR :{G=m}Carbad thaistealach +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_MAIL_VAN :{G=m}Bhana puist +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COAL_CAR :{G=f}Truca guail +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_OIL_TANKER :{G=m}Tancair ola +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_LIVESTOCK_VAN :{G=m}Bhana sprèidhe +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_GOODS_VAN :{G=m}Bhana bathair +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_GRAIN_HOPPER :{G=f}Drabhailt gràine +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_WOOD_TRUCK :{G=f}Truca fiodha +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_IRON_ORE_HOPPER :{G=f}Drabhailt cloich-iarainn +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_STEEL_TRUCK :{G=f}Truca stàilinne +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_ARMORED_VAN :{G=m}Bhana armach +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FOOD_VAN :Bhana bìdh +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PAPER_TRUCK :{G=f}Truca pàipeir +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COPPER_ORE_HOPPER :{G=f}Drabhailt cloich-copair +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_WATER_TANKER :{G=m}Tancair uisge +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FRUIT_TRUCK :{G=f}Truca measa +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_RUBBER_TRUCK :{G=f}Truca rubair +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_SUGAR_TRUCK :{G=f}Truca siùcair +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COTTON_CANDY_HOPPER :{G=f}Drabhailt canaich-siùcair +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_TOFFEE_HOPPER :{G=f}Drabhailt tofaidh +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_BUBBLE_VAN :{G=m}Bhana builgein +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COLA_TANKER :Tancair cola +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_CANDY_VAN :{G=m}Tancair mìlsein +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_TOY_VAN :{G=m}Bhana dhèideagan +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_BATTERY_TRUCK :{G=f}Truca bataraidh +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FIZZY_DRINK_TRUCK :{G=f}Truca dheochan gucagach +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PLASTIC_TRUCK :{G=f}Truca plastaig +STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV1_LEVIATHAN_ELECTRIC :Lev1 “Leviathan" (Dealain) +STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV2_CYCLOPS_ELECTRIC :Lev2 “Cyclops" (Dealain) +STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV3_PEGASUS_ELECTRIC :Lev3 “Pegasus" (Dealain) +STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV4_CHIMAERA_ELECTRIC :Lev4 “Chimaera" (Dealain) +STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_WIZZOWOW_ROCKETEER :Rocaid Iongantach +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PASSENGER_CAR :{G=m}Carbad thaistealach +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_MAIL_VAN :{G=m}Bhana puist +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COAL_CAR :{G=f}Truca guail +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_OIL_TANKER :{G=m}Tancair ola +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_LIVESTOCK_VAN :{G=m}Bhana sprèidhe +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_GOODS_VAN :{G=m}Bhana bathair +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_GRAIN_HOPPER :{G=f}Drabhailt gràine +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_WOOD_TRUCK :{G=f}Truca fiodha +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_IRON_ORE_HOPPER :{G=f}Drabhailt cloich-iarainn +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_STEEL_TRUCK :{G=f}Truca stàilinne +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_ARMORED_VAN :{G=m}Bhana armach +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FOOD_VAN :{G=m}Bhana bìdh +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PAPER_TRUCK :{G=f}Truca pàipeir +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COPPER_ORE_HOPPER :{G=f}Drabhailt cloich-copair +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_WATER_TANKER :{G=m}Tancair uisge +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FRUIT_TRUCK :{G=f}Truca measa +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_RUBBER_TRUCK :{G=f}Truca rubair +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_SUGAR_TRUCK :{G=f}Truca siùcair +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COTTON_CANDY_HOPPER :{G=f}Drabhailt canaich-siùcair +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_TOFFEE_HOPPER :{G=f}Drabhailt tofaidh +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_BUBBLE_VAN :{G=m}Bhana builgein +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COLA_TANKER :{G=m}Tancair cola +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_CANDY_VAN :Tancair mìlsein +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_TOY_VAN :{G=m}Bhana dhèideagan +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_BATTERY_TRUCK :{G=f}Truca bataraidh +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FIZZY_DRINK_TRUCK :{G=f}Truca dheochan gucagach +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PLASTIC_TRUCK :{G=f}Truca plastaig +STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_REGAL_BUS :{G=m}Bus rìoghail MPS +STR_VEHICLE_NAME_ROAD_VEHICLE_HEREFORD_LEOPARD_BUS :{G=m}Bus Hereford Leopard +STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_BUS :{G=m}Bus Foster +STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_MKII_SUPERBUS :{G=m}Sàr-bhus Foster II +STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKI_BUS :{G=m}Bus Calma I +STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKII_BUS :{G=m}Bus Calma II +STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKIII_BUS :{G=m}Bus Calma III +STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_COAL_TRUCK :{G=f}Truca guail Balogh +STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_COAL_TRUCK :{G=f}Truca guail Uhl +STR_VEHICLE_NAME_ROAD_VEHICLE_DW_COAL_TRUCK :{G=f}Truca guail DW +STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_MAIL_TRUCK :{G=f}Truca puist MPS +STR_VEHICLE_NAME_ROAD_VEHICLE_REYNARD_MAIL_TRUCK :{G=f}Truca puist Reynard +STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_MAIL_TRUCK :{G=f}Truca puist Perry +STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_MAIL_TRUCK :{G=f}Truca puist Threun +STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_MAIL_TRUCK :{G=f}Truca puist Chumhachdach +STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_MAIL_TRUCK :{G=f}Truca puist Iongantach +STR_VEHICLE_NAME_ROAD_VEHICLE_WITCOMBE_OIL_TANKER :{G=m}Tancair ola Witcombe +STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_OIL_TANKER :{G=m}Tancair ola Foster +STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_OIL_TANKER :{G=m}Tancair ola Perry +STR_VEHICLE_NAME_ROAD_VEHICLE_TALBOTT_LIVESTOCK_VAN :{G=m}Bhana sprèidhe Talbott +STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_LIVESTOCK_VAN :{G=m}Bhana sprèidhe Uhl +STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_LIVESTOCK_VAN :{G=m}Bhana sprèidhe Foster +STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_GOODS_TRUCK :{G=f}Truca bathair Balogh +STR_VEHICLE_NAME_ROAD_VEHICLE_CRAIGHEAD_GOODS_TRUCK :{G=f}Truca bathair Craighead +STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_GOODS_TRUCK :{G=f}Truca bathair Goss +STR_VEHICLE_NAME_ROAD_VEHICLE_HEREFORD_GRAIN_TRUCK :{G=f}Truca gràine Hereford +STR_VEHICLE_NAME_ROAD_VEHICLE_THOMAS_GRAIN_TRUCK :{G=f}Truca gràine MhicThòmais +STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_GRAIN_TRUCK :{G=f}Truca gràine Goss +STR_VEHICLE_NAME_ROAD_VEHICLE_WITCOMBE_WOOD_TRUCK :{G=f}Truca fiodha Witcombe +STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_WOOD_TRUCK :{G=f}Truca fiodha Foster +STR_VEHICLE_NAME_ROAD_VEHICLE_MORELAND_WOOD_TRUCK :{G=f}Truca fiodha Moreland +STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_IRON_ORE_TRUCK :{G=f}Truca cloich-iarainn MPS +STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_IRON_ORE_TRUCK :{G=f}Truca cloich-iarainn Uhl +STR_VEHICLE_NAME_ROAD_VEHICLE_CHIPPY_IRON_ORE_TRUCK :{G=f}Truca cloich-iarainn Thapaidh +STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_STEEL_TRUCK :{G=f}Truca stàilinne Balogh +STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_STEEL_TRUCK :{G=f}Truca stàilinne Uhl +STR_VEHICLE_NAME_ROAD_VEHICLE_KELLING_STEEL_TRUCK :{G=f}Truca stàilinne Kelling +STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_ARMORED_TRUCK :{G=f}Truca armach Balogh +STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_ARMORED_TRUCK :{G=f}Truca armach Uhl +STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_ARMORED_TRUCK :{G=f}Truca armach Foster +STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_FOOD_VAN :{G=m}Bhana bìdh Foster +STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_FOOD_VAN :{G=m}Bhana bìdh Perry +STR_VEHICLE_NAME_ROAD_VEHICLE_CHIPPY_FOOD_VAN :{G=m}Bhana bìdh Tapaidh +STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_PAPER_TRUCK :{G=f}Truca pàipeir Uhl +STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_PAPER_TRUCK :{G=f}Truca pàipeir Balogh +STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_PAPER_TRUCK :{G=f}Truca pàipeir MPS +STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_COPPER_ORE_TRUCK :{G=f}Truca cloich-copair MPS +STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_COPPER_ORE_TRUCK :{G=f}Truca cloich-copair Uhl +STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_COPPER_ORE_TRUCK :{G=f}Truca cloich-copair Goss +STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_WATER_TANKER :{G=m}Tancair uisge Uhl +STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_WATER_TANKER :{G=m}Tancair uisge Balogh +STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_WATER_TANKER :{G=m}Tancair uisge MPS +STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_FRUIT_TRUCK :{G=f}Truca measa Balogh +STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_FRUIT_TRUCK :{G=f}Truca measa Uhl +STR_VEHICLE_NAME_ROAD_VEHICLE_KELLING_FRUIT_TRUCK :{G=f}Truca measa Kelling +STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_RUBBER_TRUCK :{G=f}Truca rubair Balogh +STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_RUBBER_TRUCK :{G=f}Truca rubair Uhl +STR_VEHICLE_NAME_ROAD_VEHICLE_RMT_RUBBER_TRUCK :{G=f}Truca rubair RMT +STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_SUGAR_TRUCK :{G=f}Truca siùcair Threun +STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_SUGAR_TRUCK :{G=f}Truca siùcair Chumhachdach +STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_SUGAR_TRUCK :{G=f}Truca siùcair Iongantach +STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_COLA_TRUCK :{G=f}Truca cola Threun +STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_COLA_TRUCK :{G=f}Truca cola Chumhachdach +STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_COLA_TRUCK :{G=f}Truca cola Iongantach +STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_COTTON_CANDY :{G=f}Truca canaich-siùcair Threun +STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_COTTON_CANDY :{G=f}Truca canaich-siùcair Chumhachdach +STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_COTTON_CANDY_TRUCK :{G=f}Truca canaich-siùcair Iongantach +STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_TOFFEE_TRUCK :{G=f}Truca tofaidh Threun +STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_TOFFEE_TRUCK :{G=f}Truca tofaidh Chumhachdach +STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_TOFFEE_TRUCK :{G=f}Truca tofaidh Iongantach +STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_TOY_VAN :{G=m}Bhana dhèideagan Threun +STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_TOY_VAN :{G=m}Bhana dhèideagan Chumhachdach +STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_TOY_VAN :{G=m}Bhana dhèideagan Iongantach +STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_CANDY_TRUCK :{G=f}Truca mìlsein Threun +STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_CANDY_TRUCK :{G=f}Truca mìlsein Chumhachdach +STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_CANDY_TRUCK :{G=f}Truca mìlsein Iongantach +STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_BATTERY_TRUCK :{G=f}Truca bataraidh Threun +STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_BATTERY_TRUCK :{G=f}Truca bataraidh Chumhachdach +STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_BATTERY_TRUCK :{G=f}Truca bataraidh Iongantach +STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_FIZZY_DRINK :{G=f}Truca dheochan gucagach Threun +STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_FIZZY_DRINK :{G=f}Truca dheochan gucagach Chumhachdach +STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_FIZZY_DRINK_TRUCK :{G=f}Truca dheochan gucagach Iongantach +STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_PLASTIC_TRUCK :{G=f}Truca plastaig Threun +STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_PLASTIC_TRUCK :{G=f}Truca plastaig Chumhachdach +STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_PLASTIC_TRUCK :{G=f}Truca plastaig Iongantach +STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_BUBBLE_TRUCK :{G=f}Truca builgein Threun +STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_BUBBLE_TRUCK :{G=f}Truca builgein Chumhachdach +STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_BUBBLE_TRUCK :{G=f}Truca builgein Iongantach +STR_VEHICLE_NAME_SHIP_MPS_OIL_TANKER :{G=m}Tancair ola MPS +STR_VEHICLE_NAME_SHIP_CS_INC_OIL_TANKER :{G=m}Tancair ola CS-Inc. +STR_VEHICLE_NAME_SHIP_MPS_PASSENGER_FERRY :{G=f}Bàta-aiseig MPS +STR_VEHICLE_NAME_SHIP_FFP_PASSENGER_FERRY :{G=f}Bàta-aiseig FFP +STR_VEHICLE_NAME_SHIP_BAKEWELL_300_HOVERCRAFT :{G=f}Bàta-foluaimein Bakewell 300 +STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :{G=f}Bàta-aiseig Mhall +STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :{G=f}Bàta-aiseig Luasganach +STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :{G=f}Long carago Yate +STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :{G=f}Long carago Bakewell +STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :{G=f}Long carago Threun +STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :{G=f}Long carago Chumhachdach +STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :{G=m}Sampson U52 +STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :{G=m}Coleman Count +STR_VEHICLE_NAME_AIRCRAFT_FFP_DART :{G=m}FFP Dart +STR_VEHICLE_NAME_AIRCRAFT_YATE_HAUGAN :{G=m}Yate Haugan +STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_COTSWALD_LB_3 :{G=m}Bakewell Cotswald LB-3 +STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_8 :{G=m}Bakewell Luckett LB-8 +STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_9 :{G=m}Bakewell Luckett LB-9 +STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB80 :{G=m}Bakewell Luckett LB80 +STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_10 :{G=m}Bakewell Luckett LB-10 +STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_11 :{G=m}Bakewell Luckett LB-11 +STR_VEHICLE_NAME_AIRCRAFT_YATE_AEROSPACE_YAC_1_11 :{G=m}Yate Aerospace YAC 1-11 +STR_VEHICLE_NAME_AIRCRAFT_DARWIN_100 :{G=m}Darwin 100 +STR_VEHICLE_NAME_AIRCRAFT_DARWIN_200 :{G=m}Darwin 200 +STR_VEHICLE_NAME_AIRCRAFT_DARWIN_300 :{G=m}Darwin 300 +STR_VEHICLE_NAME_AIRCRAFT_DARWIN_400 :{G=m}Darwin 400 +STR_VEHICLE_NAME_AIRCRAFT_DARWIN_500 :{G=m}Darwin 500 +STR_VEHICLE_NAME_AIRCRAFT_DARWIN_600 :{G=m}Darwin 600 +STR_VEHICLE_NAME_AIRCRAFT_GURU_GALAXY :{G=m}Guru Galaxy +STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A21 :{G=m}Airtaxi A21 +STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A31 :{G=m}Airtaxi A31 +STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A32 :{G=m}Airtaxi A32 +STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A33 :{G=m}Airtaxi A33 +STR_VEHICLE_NAME_AIRCRAFT_YATE_AEROSPACE_YAE46 :{G=m}Yate Aerospace YAe46 +STR_VEHICLE_NAME_AIRCRAFT_DINGER_100 :{G=m}Dinger 100 +STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A34_1000 :{G=m}AirTaxi A34-1000 +STR_VEHICLE_NAME_AIRCRAFT_YATE_Z_SHUTTLE :{G=m}Yate Z-Shuttle +STR_VEHICLE_NAME_AIRCRAFT_KELLING_K1 :{G=m}Kelling K1 +STR_VEHICLE_NAME_AIRCRAFT_KELLING_K6 :{G=m}Kelling K6 +STR_VEHICLE_NAME_AIRCRAFT_KELLING_K7 :{G=m}Kelling K7 +STR_VEHICLE_NAME_AIRCRAFT_DARWIN_700 :{G=m}Darwin 700 +STR_VEHICLE_NAME_AIRCRAFT_FFP_HYPERDART_2 :{G=m}FFP Hyperdart 2 +STR_VEHICLE_NAME_AIRCRAFT_DINGER_200 :{G=m}Dinger 200 +STR_VEHICLE_NAME_AIRCRAFT_DINGER_1000 :{G=m}Dinger 1000 +STR_VEHICLE_NAME_AIRCRAFT_PLODDYPHUT_100 :{G=m}Calma 100 +STR_VEHICLE_NAME_AIRCRAFT_PLODDYPHUT_500 :{G=m}Calma 500 +STR_VEHICLE_NAME_AIRCRAFT_FLASHBANG_X1 :{G=m}Plèana clis X1 +STR_VEHICLE_NAME_AIRCRAFT_JUGGERPLANE_M1 :{G=m}Plèana Ealamh M1 +STR_VEHICLE_NAME_AIRCRAFT_FLASHBANG_WIZZER :{G=m}Plèana Clis Sgiobalta +STR_VEHICLE_NAME_AIRCRAFT_TRICARIO_HELICOPTER :{G=m}Heileacoptair Tricario +STR_VEHICLE_NAME_AIRCRAFT_GURU_X2_HELICOPTER :{G=m}Heileacoptair Guru X2 +STR_VEHICLE_NAME_AIRCRAFT_POWERNAUT_HELICOPTER :{G=m}Heileacoptair Cumhachdach + +##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 :Fleodrainn {TOWN} +STR_FORMAT_BUOY_NAME_SERIAL :Fleodrainn {1:COMMA} {0:TOWN} +STR_FORMAT_COMPANY_NUM :(Companaidh {COMMA}) +STR_FORMAT_GROUP_NAME :Buidheann {COMMA} +STR_FORMAT_INDUSTRY_NAME :{1:STRING} {0:TOWN} +STR_FORMAT_WAYPOINT_NAME :Puing-thurais {TOWN} +STR_FORMAT_WAYPOINT_NAME_SERIAL :Puing-thurais {1:COMMA} {0:TOWN} + +STR_FORMAT_DEPOT_NAME_TRAIN :{G=f}Trèan-lann {TOWN} +STR_FORMAT_DEPOT_NAME_TRAIN.nom :{G=f}Trèan-lann - {TOWN} +STR_FORMAT_DEPOT_NAME_TRAIN.gen :{G=f}Trèan-lainn - {TOWN} +STR_FORMAT_DEPOT_NAME_TRAIN.dat :{G=f}Trèan-lann - {TOWN} +STR_FORMAT_DEPOT_NAME_TRAIN_SERIAL :Trèan-lann {1:COMMA} {0:TOWN} +STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE :{G=f}Garaids {TOWN} +STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE_SERIAL :{G=f}Garaids {1:COMMA} {0:TOWN} +STR_FORMAT_DEPOT_NAME_SHIP :{G=m}Cala {TOWN} +STR_FORMAT_DEPOT_NAME_SHIP.nom :{G=m}Cala - {TOWN} +STR_FORMAT_DEPOT_NAME_SHIP.gen :{G=m}Calaidh - {TOWN} +STR_FORMAT_DEPOT_NAME_SHIP.dat :{G=m}Cala - {TOWN} +STR_FORMAT_DEPOT_NAME_SHIP_SERIAL :{G=m}Cala {1:COMMA} {0:TOWN} +STR_FORMAT_DEPOT_NAME_AIRCRAFT :{G=m}Hangar {STATION} +STR_FORMAT_DEPOT_NAME_AIRCRAFT.nom :{G=m}Hangar - {STATION} +STR_FORMAT_DEPOT_NAME_AIRCRAFT.gen :{G=m}Hangair - {STATION} +STR_FORMAT_DEPOT_NAME_AIRCRAFT.dat :{G=m}Hangar - {STATION} + +STR_UNKNOWN_STATION :stèisean neo-aithnichte +STR_DEFAULT_SIGN_NAME :Sanas +STR_COMPANY_SOMEONE :cuideigin + +STR_SAVEGAME_NAME_DEFAULT :{COMPANY}, {STRING} +STR_SAVEGAME_NAME_SPECTATOR :Amharcaiche, {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_GROUP_NAME :{GROUP} +STR_INDUSTRY_NAME :{INDUSTRY} +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} +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_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} +STR_DATE_LONG_SMALL.dat :{TINY_FONT}{BLACK}{DATE_LONG.dat} +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/galician.txt b/src/lang/galician.txt index e2a671d8f..ba89bbbdc 100644 --- a/src/lang/galician.txt +++ b/src/lang/galician.txt @@ -36,10 +36,10 @@ STR_CARGO_PLURAL_LIVESTOCK :Gando STR_CARGO_PLURAL_GOODS :Mercadorías STR_CARGO_PLURAL_GRAIN :Gran STR_CARGO_PLURAL_WOOD :Madeira -STR_CARGO_PLURAL_IRON_ORE :Hematita +STR_CARGO_PLURAL_IRON_ORE :Mineral de ferro STR_CARGO_PLURAL_STEEL :Aceiro STR_CARGO_PLURAL_VALUABLES :Valores -STR_CARGO_PLURAL_COPPER_ORE :Mineral de Cobre +STR_CARGO_PLURAL_COPPER_ORE :Mineral de cobre STR_CARGO_PLURAL_MAIZE :Millo STR_CARGO_PLURAL_FRUIT :Froita STR_CARGO_PLURAL_DIAMONDS :Diamantes @@ -51,14 +51,14 @@ STR_CARGO_PLURAL_WHEAT :Trigo STR_CARGO_PLURAL_RUBBER :Caucho STR_CARGO_PLURAL_SUGAR :Azucre STR_CARGO_PLURAL_TOYS :Xoguetes -STR_CARGO_PLURAL_CANDY :Caramelos +STR_CARGO_PLURAL_CANDY :Lambetadas STR_CARGO_PLURAL_COLA :Cola -STR_CARGO_PLURAL_COTTON_CANDY :Algodón de Azucre +STR_CARGO_PLURAL_COTTON_CANDY :Algodón de azucre STR_CARGO_PLURAL_BUBBLES :Burbullas STR_CARGO_PLURAL_TOFFEE :Toffee STR_CARGO_PLURAL_BATTERIES :Pilas STR_CARGO_PLURAL_PLASTIC :Plástico -STR_CARGO_PLURAL_FIZZY_DRINKS :Bebidas Gaseosas +STR_CARGO_PLURAL_FIZZY_DRINKS :Bebidas gaseosas # Singular cargo name STR_CARGO_SINGULAR_NOTHING : @@ -70,10 +70,10 @@ STR_CARGO_SINGULAR_LIVESTOCK :Gando STR_CARGO_SINGULAR_GOODS :Mercadorías STR_CARGO_SINGULAR_GRAIN :Gran STR_CARGO_SINGULAR_WOOD :Madeira -STR_CARGO_SINGULAR_IRON_ORE :Hematita +STR_CARGO_SINGULAR_IRON_ORE :Mineral de ferro STR_CARGO_SINGULAR_STEEL :Aceiro STR_CARGO_SINGULAR_VALUABLES :Valores -STR_CARGO_SINGULAR_COPPER_ORE :Mineral de Cobre +STR_CARGO_SINGULAR_COPPER_ORE :Mineral de cobre STR_CARGO_SINGULAR_MAIZE :Millo STR_CARGO_SINGULAR_FRUIT :Froita STR_CARGO_SINGULAR_DIAMOND :Diamante @@ -85,14 +85,14 @@ STR_CARGO_SINGULAR_WHEAT :Trigo STR_CARGO_SINGULAR_RUBBER :Caucho STR_CARGO_SINGULAR_SUGAR :Azucre STR_CARGO_SINGULAR_TOY :Xoguete -STR_CARGO_SINGULAR_CANDY :Caramelo +STR_CARGO_SINGULAR_CANDY :Lambetada STR_CARGO_SINGULAR_COLA :Cola -STR_CARGO_SINGULAR_COTTON_CANDY :Algodón de Azucre +STR_CARGO_SINGULAR_COTTON_CANDY :Algodón de azucre STR_CARGO_SINGULAR_BUBBLE :Burbulla STR_CARGO_SINGULAR_TOFFEE :Toffee STR_CARGO_SINGULAR_BATTERY :Pila STR_CARGO_SINGULAR_PLASTIC :Plástico -STR_CARGO_SINGULAR_FIZZY_DRINK :Bebida Gaseosa +STR_CARGO_SINGULAR_FIZZY_DRINK :Bebida gaseosa # Quantity of cargo STR_QUANTITY_NOTHING : @@ -104,7 +104,7 @@ STR_QUANTITY_LIVESTOCK :{COMMA} item{P STR_QUANTITY_GOODS :{COMMA} caixón{P "" s} de mercadorías STR_QUANTITY_GRAIN :{WEIGHT_LONG} de gran STR_QUANTITY_WOOD :{WEIGHT_LONG} de madeira -STR_QUANTITY_IRON_ORE :{WEIGHT_LONG} de hematita +STR_QUANTITY_IRON_ORE :{WEIGHT_LONG} de mineral de ferro STR_QUANTITY_STEEL :{WEIGHT_LONG} de aceiro STR_QUANTITY_VALUABLES :{COMMA} saco{P "" s} de valores STR_QUANTITY_COPPER_ORE :{WEIGHT_LONG} de mineral de cobre @@ -119,7 +119,7 @@ STR_QUANTITY_WHEAT :{WEIGHT_LONG} d STR_QUANTITY_RUBBER :{VOLUME_LONG} de caucho STR_QUANTITY_SUGAR :{WEIGHT_LONG} de azucre STR_QUANTITY_TOYS :{COMMA} xoguete{P "" s} -STR_QUANTITY_SWEETS :{COMMA} saco{P "" s} de caramelos +STR_QUANTITY_SWEETS :{COMMA} bolsa{P "" s} de lambetadas STR_QUANTITY_COLA :{VOLUME_LONG} de cola STR_QUANTITY_CANDYFLOSS :{WEIGHT_LONG} de algodón de azucre STR_QUANTITY_BUBBLES :{COMMA} burbulla{P "" s} @@ -139,7 +139,7 @@ STR_ABBREV_LIVESTOCK :{TINY_FONT}GA STR_ABBREV_GOODS :{TINY_FONT}ME STR_ABBREV_GRAIN :{TINY_FONT}GR STR_ABBREV_WOOD :{TINY_FONT}MA -STR_ABBREV_IRON_ORE :{TINY_FONT}HE +STR_ABBREV_IRON_ORE :{TINY_FONT}FE STR_ABBREV_STEEL :{TINY_FONT}AC STR_ABBREV_VALUABLES :{TINY_FONT}VA STR_ABBREV_COPPER_ORE :{TINY_FONT}CO @@ -154,7 +154,7 @@ STR_ABBREV_WHEAT :{TINY_FONT}MI STR_ABBREV_RUBBER :{TINY_FONT}CA STR_ABBREV_SUGAR :{TINY_FONT}AZ STR_ABBREV_TOYS :{TINY_FONT}XO -STR_ABBREV_SWEETS :{TINY_FONT}CA +STR_ABBREV_SWEETS :{TINY_FONT}LA STR_ABBREV_COLA :{TINY_FONT}CO STR_ABBREV_CANDYFLOSS :{TINY_FONT}AL STR_ABBREV_BUBBLES :{TINY_FONT}BU @@ -166,22 +166,22 @@ STR_ABBREV_NONE :{TINY_FONT}NON STR_ABBREV_ALL :{TINY_FONT}TODO # 'Mode' of transport for cargoes -STR_PASSENGERS :{COMMA} pasaxeiros -STR_BAGS :{COMMA} sacos -STR_TONS :{COMMA} tons -STR_LITERS :{COMMA} litros -STR_ITEMS :{COMMA} ítems -STR_CRATES :{COMMA} caixóns +STR_PASSENGERS :{COMMA} pasaxeiro{P "" s} +STR_BAGS :{COMMA} saco{P "" s} +STR_TONS :{COMMA} tonelada{P "" s} +STR_LITERS :{COMMA} litro{P "" s} +STR_ITEMS :{COMMA} ítem{P "" s} +STR_CRATES :{COMMA} caixón{P "" s} # Colours, do not shuffle -STR_COLOUR_DARK_BLUE :Azul Escuro -STR_COLOUR_PALE_GREEN :Verde Claro +STR_COLOUR_DARK_BLUE :Azul escuro +STR_COLOUR_PALE_GREEN :Verde pálido STR_COLOUR_PINK :Rosa STR_COLOUR_YELLOW :Amarelo STR_COLOUR_RED :Vermello -STR_COLOUR_LIGHT_BLUE :Azul Claro +STR_COLOUR_LIGHT_BLUE :Azul claro STR_COLOUR_GREEN :Verde -STR_COLOUR_DARK_GREEN :Verde Escuro +STR_COLOUR_DARK_GREEN :Verde escuro STR_COLOUR_BLUE :Azul STR_COLOUR_CREAM :Crema STR_COLOUR_MAUVE :Malva @@ -200,43 +200,54 @@ STR_UNITS_POWER_IMPERIAL :{COMMA}cv STR_UNITS_POWER_METRIC :{COMMA}cv 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} tonelada{P "" s} STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} tonelada{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} galón{P "" s} STR_UNITS_VOLUME_LONG_METRIC :{COMMA} litro{P "" s} 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} pes +STR_UNITS_HEIGHT_IMPERIAL :{COMMA} pés +STR_UNITS_HEIGHT_METRIC :{COMMA} m STR_UNITS_HEIGHT_SI :{COMMA} m # Common window strings -STR_LIST_FILTER_OSKTITLE :{BLACK}Introducir cadea de filtrado -STR_LIST_FILTER_TOOLTIP :{BLACK}Introduce unha palabra pola que filtra la lista +STR_LIST_FILTER_TITLE :{BLACK}Filtrar texto: +STR_LIST_FILTER_OSKTITLE :{BLACK}Introducir cadea de texto a filtrar +STR_LIST_FILTER_TOOLTIP :{BLACK}Introduce unha palabra clave pola que filtra-la lista -STR_TOOLTIP_SORT_ORDER :{BLACK}Selecciona o modo de ordeamento(descendente/ascendente) -STR_TOOLTIP_SORT_CRITERIA :{BLACK}Selecciona o criterio de orde +STR_TOOLTIP_GROUP_ORDER :{BLACK}Selecciona a orde de agrupamento +STR_TOOLTIP_SORT_ORDER :{BLACK}Selecciona a ordenación (descendente/ascendente) +STR_TOOLTIP_SORT_CRITERIA :{BLACK}Selecciona o criterio de ordenación STR_TOOLTIP_FILTER_CRITERIA :{BLACK}Selecciona o criterio de filtrado -STR_BUTTON_SORT_BY :{BLACK}Ordear por +STR_BUTTON_SORT_BY :{BLACK}Ordenar por STR_BUTTON_LOCATION :{BLACK}Situación STR_BUTTON_RENAME :{BLACK}Renomear -STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Pechar fiestra -STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Título da fiestra - arrástrao para move-la fiestra -STR_TOOLTIP_SHADE :{BLACK}Sombrear fiestra - mostra so a barra de título -STR_TOOLTIP_STICKY :{BLACK}Marcar esta fiestra coma non pechable pola tecla de 'Pechar tódalas fiestras' +STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Pechar xanela +STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Título da xanela - arrástrao para move-la xanela +STR_TOOLTIP_SHADE :{BLACK}Sombrear xanela - mostrar só a barra de título +STR_TOOLTIP_DEBUG :{BLACK}Amosar a información de depuración de NewGRF +STR_TOOLTIP_DEFSIZE :{BLACK}Axustar o tamaño da fiestra ao seu tamaño por defecto. Ctrl+Click fai que o actual sexao por defecto +STR_TOOLTIP_STICKY :{BLACK}Marca esta xanela coma non pechable usando a tecla de 'Pechar tódalas xanelas'. Ctrl+Click para gardar o estado actual como o mostrado por defecto STR_TOOLTIP_RESIZE :{BLACK}Pincha e arrastra para redimensiona-la fiestra -STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Intercambiar entre fiestra grande/pequena +STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Alternar entre fiestra grande/pequena STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Barra de desprazamento - despraza a lista hacia arriba/abaixo 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 +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 # Query window STR_BUTTON_DEFAULT :{BLACK}Por defecto @@ -250,17 +261,16 @@ STR_OSK_KEYBOARD_LAYOUT_CAPS :~!@#$%^&*()_+|Q # Measurement tooltip STR_MEASURE_LENGTH :{BLACK}Lonxitude: {NUM} STR_MEASURE_AREA :{BLACK}Área: {NUM} x {NUM} -STR_MEASURE_LENGTH_HEIGHTDIFF :{BLACK}Lonxitude: {NUM}{}Diferencia de altura: {HEIGHT} -STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}Área: {NUM} x {NUM}{}Diferencia de altura: {HEIGHT} +STR_MEASURE_LENGTH_HEIGHTDIFF :{BLACK}Lonxitude: {NUM}{}Diferencia de cota: {HEIGHT} +STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}Área: {NUM} x {NUM}{}Diferencia de cota: {HEIGHT} # These are used in buttons -STR_SORT_BY_CAPTION_POPULATION :{BLACK}Poboación STR_SORT_BY_CAPTION_NAME :{BLACK}Nome STR_SORT_BY_CAPTION_DATE :{BLACK}Data # These are used in dropdowns STR_SORT_BY_NAME :Nome -STR_SORT_BY_PRODUCTION :Producción +STR_SORT_BY_PRODUCTION :Produción STR_SORT_BY_TYPE :Tipo STR_SORT_BY_TRANSPORTED :Transportado STR_SORT_BY_NUMBER :Número @@ -269,155 +279,172 @@ STR_SORT_BY_PROFIT_THIS_YEAR :Beneficio este STR_SORT_BY_AGE :Idade STR_SORT_BY_RELIABILITY :Fiabilidade STR_SORT_BY_TOTAL_CAPACITY_PER_CARGOTYPE :Capacidade total por tipo de carga -STR_SORT_BY_MAX_SPEED :Velocidade Máxima +STR_SORT_BY_MAX_SPEED :Velocidade máxima STR_SORT_BY_MODEL :Modelo STR_SORT_BY_VALUE :Valor STR_SORT_BY_LENGTH :Lonxitude -STR_SORT_BY_LIFE_TIME :Tempo de vida restante +STR_SORT_BY_LIFE_TIME :Vida útil restante +STR_SORT_BY_TIMETABLE_DELAY :Retraso STR_SORT_BY_FACILITY :Tipo de estación -STR_SORT_BY_WAITING :Valor da carga en espera -STR_SORT_BY_ENGINE_ID :EngineID (ordeación clásica) +STR_SORT_BY_WAITING_TOTAL :Carga total en agarda +STR_SORT_BY_WAITING_AVAILABLE :Carga en agarda dispoñíbel +STR_SORT_BY_RATING_MAX :Maior valoración de carga +STR_SORT_BY_RATING_MIN :Menor valoración de carga +STR_SORT_BY_ENGINE_ID :ID do motor (ordenación clásica) STR_SORT_BY_COST :Custo STR_SORT_BY_POWER :Potencia -STR_SORT_BY_INTRO_DATE :Data de Presentación -STR_SORT_BY_RUNNING_COST :Custo Mantemento -STR_SORT_BY_POWER_VS_RUNNING_COST :Potencia/Custo Mantemento -STR_SORT_BY_CARGO_CAPACITY :Capacidade De Carga +STR_SORT_BY_TRACTIVE_EFFORT :Esforzo tractor +STR_SORT_BY_INTRO_DATE :Data de aparición +STR_SORT_BY_RUNNING_COST :Custo de explotación +STR_SORT_BY_POWER_VS_RUNNING_COST :Potencia/Custo de explotación +STR_SORT_BY_CARGO_CAPACITY :Capacidade de carga +STR_SORT_BY_RANGE :Autonomía +STR_SORT_BY_POPULATION :Poboación +STR_SORT_BY_RATING :Puntuación # Tooltips for the main toolbar -STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Pausar Partida +STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Pausar partida STR_TOOLBAR_TOOLTIP_FORWARD :{BLACK}Avance rápido da partida STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}Opcións -STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK}Grabar partida, abandonar partida, saír -STR_TOOLBAR_TOOLTIP_DISPLAY_MAP :{BLACK}Amosa-lo mapa, ventá extra ou lista de sinais +STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK}Gravar partida, abandonar partida, saír +STR_TOOLBAR_TOOLTIP_DISPLAY_MAP :{BLACK}Amosa-lo mapa, ventá extra ou lista de rótulos STR_TOOLBAR_TOOLTIP_DISPLAY_TOWN_DIRECTORY :{BLACK}Amosa-lo directorio de cidades -STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Amosa-los subsidios +STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Amosa-las subvencións STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Amosa-la lista das estacións da compañía STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Amosa-la información das finanzas da compañía STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Amosa-la información xeral da compañía +STR_TOOLBAR_TOOLTIP_DISPLAY_STORY_BOOK :{BLACK}Mostrar historial +STR_TOOLBAR_TOOLTIP_DISPLAY_GOALS_LIST :{BLACK} Mostrar lista de obxectivos STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Amosa-las gráficas -STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Amosa-la táboa da liga de compañías -STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Fundar unha nova industria ou listar tódalas industrias -STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}Amosa a lista dos trens da compañía. Ctrl+Click amosa a lista de vehículos -STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}Amosa-la lista dos vehículos de estrada da compañía. CTRL+Click conmuta a apertura da lista de grupos/vehículos -STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_SHIPS :{BLACK}Amosar a lista dos barcos da compañía. CTRL+Click conmuta a apertura da lista de grupos/vehículos -STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_AIRCRAFT :{BLACK}Amosa-la lista dos avións da compañía, CTRL+Click conmuta a apertura da lista de grupos/vehículos +STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Amosa-lo cadro da liga de compañías +STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Financia-la construción dunha nova industria ou listar tódalas industrias +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}Amosa-la lista dos trens da compañía. Ctrl+Click alterna entre lista de grupos/vehículos +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}Amosa-la lista dos vehículos de estrada da compañía. Ctrl+Click alterna entre lista de grupos/vehículos +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_SHIPS :{BLACK}Amosar a lista dos barcos da compañía. Ctrl+Click alterna entre lista de grupos/vehículos +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_AIRCRAFT :{BLACK}Amosa-la lista dos avións da compañía, Ctrl+Click alterna entre lista de grupos/vehículos STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_IN :{BLACK}Achega-la vista STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_OUT :{BLACK}Alonxa-la vista -STR_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Construír elementos do ferrocarril -STR_TOOLBAR_TOOLTIP_BUILD_ROADS :{BLACK}Construír elementos das estradas -STR_TOOLBAR_TOOLTIP_BUILD_SHIP_DOCKS :{BLACK}Construír elementos para barcos +STR_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Construír vía ferroviaria +STR_TOOLBAR_TOOLTIP_BUILD_ROADS :{BLACK}Construír estradas +STR_TOOLBAR_TOOLTIP_BUILD_SHIP_DOCKS :{BLACK}Construír portos STR_TOOLBAR_TOOLTIP_BUILD_AIRPORTS :{BLACK}Construír aeroportos STR_TOOLBAR_TOOLTIP_LANDSCAPING :{BLACK}Abri-la ferramenta de terreo para subir/baixar terreo, plantar árbores, etc. STR_TOOLBAR_TOOLTIP_SHOW_SOUND_MUSIC_WINDOW :{BLACK}Amosa-la ventá de son/música -STR_TOOLBAR_TOOLTIP_SHOW_LAST_MESSAGE_NEWS :{BLACK}Amosa-la última mensaxe/noticia, amosa-las opcións das mensaxes -STR_TOOLBAR_TOOLTIP_LAND_BLOCK_INFORMATION :{BLACK}Información dunha área de terreo, consola, depuración IA, capturas de pantalla, acerca de OpenTTD +STR_TOOLBAR_TOOLTIP_SHOW_LAST_MESSAGE_NEWS :{BLACK}Amosa-la última mensaxe/nova, amosa-las opcións das mensaxes +STR_TOOLBAR_TOOLTIP_LAND_BLOCK_INFORMATION :{BLACK}Información dunha área de terreo, consola, depuración de scripts, capturas de pantalla, acerca de OpenTTD +STR_TOOLBAR_TOOLTIP_SWITCH_TOOLBAR :{BLACK}Intercambiar barras de ferramentas # Extra tooltips for the scenario editor toolbar -STR_SCENEDIT_TOOLBAR_TOOLTIP_SAVE_SCENARIO_LOAD_SCENARIO :{BLACK}Grabar escenario, cargar scenario, abandonar editor de escenarios, saír +STR_SCENEDIT_TOOLBAR_TOOLTIP_SAVE_SCENARIO_LOAD_SCENARIO :{BLACK}Gravar escenario, cargar scenario, abandonar editor de escenarios, saír STR_SCENEDIT_TOOLBAR_OPENTTD :{YELLOW}OpenTTD -STR_SCENEDIT_TOOLBAR_SCENARIO_EDITOR :{YELLOW}Editor de Escenario -STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_BACKWARD :{BLACK}Move-lo ano de comezo un ano hacia atrás -STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_FORWARD :{BLACK}Move-lo ano de comezo un ano hacia adiante -STR_SCENEDIT_TOOLBAR_TOOLTIP_SET_DATE :{BLACK}Pincha para elixir o ano de comezo +STR_SCENEDIT_TOOLBAR_SCENARIO_EDITOR :{YELLOW}Editor de escenarios +STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_BACKWARD :{BLACK}Move-la data de comezo un ano hacia atrás +STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_FORWARD :{BLACK}Move-la data de comezo un ano hacia adiante +STR_SCENEDIT_TOOLBAR_TOOLTIP_SET_DATE :{BLACK}Pincha para introducir o ano de comezo STR_SCENEDIT_TOOLBAR_TOOLTIP_DISPLAY_MAP_TOWN_DIRECTORY :{BLACK}Amosa-lo mapa, directorio de cidades STR_SCENEDIT_TOOLBAR_LANDSCAPE_GENERATION :{BLACK}Xeración de paisaxe STR_SCENEDIT_TOOLBAR_TOWN_GENERATION :{BLACK}Xeración de cidades STR_SCENEDIT_TOOLBAR_INDUSTRY_GENERATION :{BLACK}Xeración de industrias STR_SCENEDIT_TOOLBAR_ROAD_CONSTRUCTION :{BLACK}Construción de estradas -STR_SCENEDIT_TOOLBAR_PLANT_TREES :{BLACK}Plantar árbores -STR_SCENEDIT_TOOLBAR_PLACE_SIGN :{BLACK}Colocar sinal -STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}Colocar obxecto +STR_SCENEDIT_TOOLBAR_PLANT_TREES :{BLACK}Plantar árbores. Shift alterna entre construir/amosar custo estimado +STR_SCENEDIT_TOOLBAR_PLACE_SIGN :{BLACK}Colocar rótulo +STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}Colocar obxecto. Shift alterna entre construir/amosar custo estimado ############ range for SE file menu starts -STR_SCENEDIT_FILE_MENU_SAVE_SCENARIO :Grabar Escenario -STR_SCENEDIT_FILE_MENU_LOAD_SCENARIO :Cargar Escenario -STR_SCENEDIT_FILE_MENU_LOAD_HEIGHTMAP :Cargar mapa de altura -STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :Saír do editor +STR_SCENEDIT_FILE_MENU_SAVE_SCENARIO :Gravar escenario +STR_SCENEDIT_FILE_MENU_LOAD_SCENARIO :Cargar escenario +STR_SCENEDIT_FILE_MENU_SAVE_HEIGHTMAP :Gravar mapa de cotas +STR_SCENEDIT_FILE_MENU_LOAD_HEIGHTMAP :Cargar mapa de cotas +STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :Saír do editor de escenarios STR_SCENEDIT_FILE_MENU_SEPARATOR : STR_SCENEDIT_FILE_MENU_QUIT :Saír ############ range for SE file menu starts ############ range for settings menu starts -STR_SETTINGS_MENU_GAME_OPTIONS :Opcións da Partida -STR_SETTINGS_MENU_CONFIG_SETTINGS :Opcións avanzadas +STR_SETTINGS_MENU_GAME_OPTIONS :Opcións do xogo +STR_SETTINGS_MENU_CONFIG_SETTINGS :Configuración avanzada +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 +STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :Opcións de transparencia STR_SETTINGS_MENU_TOWN_NAMES_DISPLAYED :Amosar nomes de cidades STR_SETTINGS_MENU_STATION_NAMES_DISPLAYED :Amosar nomes de estacións STR_SETTINGS_MENU_WAYPOINTS_DISPLAYED :Amosar puntos de ruta -STR_SETTINGS_MENU_SIGNS_DISPLAYED :Amosa-los sinais +STR_SETTINGS_MENU_SIGNS_DISPLAYED :Amosa-los rótulos +STR_SETTINGS_MENU_SHOW_COMPETITOR_SIGNS :Amosar rótulos e nomes dos competidores STR_SETTINGS_MENU_FULL_ANIMATION :Animación completa STR_SETTINGS_MENU_FULL_DETAIL :Detalle completo -STR_SETTINGS_MENU_TRANSPARENT_BUILDINGS :Edificios transparentes -STR_SETTINGS_MENU_TRANSPARENT_SIGNS :Sinais de estación transparentes +STR_SETTINGS_MENU_TRANSPARENT_BUILDINGS :Construccións transparentes +STR_SETTINGS_MENU_TRANSPARENT_SIGNS :Rótulos transparentes ############ range ends here ############ range for file menu starts -STR_FILE_MENU_SAVE_GAME :Grabar Partida -STR_FILE_MENU_LOAD_GAME :Cargar Partida -STR_FILE_MENU_QUIT_GAME :Saír ó menu principal +STR_FILE_MENU_SAVE_GAME :Gravar partida +STR_FILE_MENU_LOAD_GAME :Cargar partida +STR_FILE_MENU_QUIT_GAME :Abandonar partida STR_FILE_MENU_SEPARATOR : -STR_FILE_MENU_EXIT :Saír do programa +STR_FILE_MENU_EXIT :Saír ############ range ends here -############ range for map menu starts -STR_MAP_MENU_MAP_OF_WORLD :Mapa do Mundo -STR_MAP_MENU_EXTRA_VIEW_PORT :Fiestra Extra -STR_MAP_MENU_SIGN_LIST :Lista de sinais -############ range for town menu starts, yet the town directory is shown in the map menu in the scenario editor +# map menu +STR_MAP_MENU_MAP_OF_WORLD :Mapa do mundo +STR_MAP_MENU_EXTRA_VIEW_PORT :Xanela extra +STR_MAP_MENU_LINGRAPH_LEGEND :Lenda de tomar carga +STR_MAP_MENU_SIGN_LIST :Lista de rótulos + +############ range for town menu starts STR_TOWN_MENU_TOWN_DIRECTORY :Directorio de cidades -############ end of the 'Display map' dropdown STR_TOWN_MENU_FOUND_TOWN :Fundar poboación -############ end of the 'Town' dropdown +############ range ends here ############ range for subsidies menu starts -STR_SUBSIDIES_MENU_SUBSIDIES :Subsidios +STR_SUBSIDIES_MENU_SUBSIDIES :Subvencións ############ range ends here ############ range for graph menu starts -STR_GRAPH_MENU_OPERATING_PROFIT_GRAPH :G. beneficios operativos +STR_GRAPH_MENU_OPERATING_PROFIT_GRAPH :Gráfica de beneficio operativo STR_GRAPH_MENU_INCOME_GRAPH :Gráfica de ingresos STR_GRAPH_MENU_DELIVERED_CARGO_GRAPH :Gráfica de carga entregada -STR_GRAPH_MENU_PERFORMANCE_HISTORY_GRAPH :G. historial de Rendemento -STR_GRAPH_MENU_COMPANY_VALUE_GRAPH :Gráfica do Valor da Compañía -STR_GRAPH_MENU_CARGO_PAYMENT_RATES :Taxas de pago polas cargas +STR_GRAPH_MENU_PERFORMANCE_HISTORY_GRAPH :Gráfico histórico de rendemento +STR_GRAPH_MENU_COMPANY_VALUE_GRAPH :Gráfica de valor da compañía +STR_GRAPH_MENU_CARGO_PAYMENT_RATES :Taxas de pago por carga ############ range ends here ############ range for company league menu starts -STR_GRAPH_MENU_COMPANY_LEAGUE_TABLE :Táboa da Liga de compañías -STR_GRAPH_MENU_DETAILED_PERFORMANCE_RATING :Puntuación de rendemento detallado +STR_GRAPH_MENU_COMPANY_LEAGUE_TABLE :Cadro da liga de compañías +STR_GRAPH_MENU_DETAILED_PERFORMANCE_RATING :Puntuación de rendemento detallada +STR_GRAPH_MENU_HIGHSCORE :Táboa de máximas puntuacións ############ range ends here ############ range for industry menu starts STR_INDUSTRY_MENU_INDUSTRY_DIRECTORY :Directorio de industrias -STR_INDUSTRY_MENU_FUND_NEW_INDUSTRY :Fundar unha nova industria +STR_INDUSTRY_MENU_INDUSTRY_CHAIN :Cadeas industriais +STR_INDUSTRY_MENU_FUND_NEW_INDUSTRY :Financiar nova industria ############ range ends here ############ range for railway construction menu starts -STR_RAIL_MENU_RAILROAD_CONSTRUCTION :Construción de Ferrocarrís -STR_RAIL_MENU_ELRAIL_CONSTRUCTION :Construción de vías electrificadas -STR_RAIL_MENU_MONORAIL_CONSTRUCTION :Construción de Monorraíl +STR_RAIL_MENU_RAILROAD_CONSTRUCTION :Construción de ferrocarrís +STR_RAIL_MENU_ELRAIL_CONSTRUCTION :Construción de ferrocarrís eléctricos +STR_RAIL_MENU_MONORAIL_CONSTRUCTION :Construción de monorraíl STR_RAIL_MENU_MAGLEV_CONSTRUCTION :Construción de Maglev ############ range ends here ############ range for road construction menu starts -STR_ROAD_MENU_ROAD_CONSTRUCTION :Construción de Estrada +STR_ROAD_MENU_ROAD_CONSTRUCTION :Construción de estradas STR_ROAD_MENU_TRAM_CONSTRUCTION :Construción de vías de tranvía ############ range ends here ############ range for waterways construction menu starts -STR_WATERWAYS_MENU_WATERWAYS_CONSTRUCTION :Construción de canais +STR_WATERWAYS_MENU_WATERWAYS_CONSTRUCTION :Construción de canles ############ range ends here ############ range for airport construction menu starts -STR_AIRCRAFT_MENU_AIRPORT_CONSTRUCTION :Construción de Aeroporto +STR_AIRCRAFT_MENU_AIRPORT_CONSTRUCTION :Construción de aeroportos ############ range ends here ############ range for landscaping menu starts -STR_LANDSCAPING_MENU_LANDSCAPING :Modifica-lo terreo +STR_LANDSCAPING_MENU_LANDSCAPING :Paisaxe STR_LANDSCAPING_MENU_PLANT_TREES :Plantar árbores -STR_LANDSCAPING_MENU_PLACE_SIGN :Colocar sinal +STR_LANDSCAPING_MENU_PLACE_SIGN :Colocar rótulo ############ range ends here ############ range for music menu starts @@ -425,21 +452,26 @@ STR_TOOLBAR_SOUND_MUSIC :Son/música ############ range ends here ############ range for message menu starts -STR_NEWS_MENU_LAST_MESSAGE_NEWS_REPORT :Última mensaxe/noticia -STR_NEWS_MENU_MESSAGE_HISTORY_MENU :Historial de Mensaxes +STR_NEWS_MENU_LAST_MESSAGE_NEWS_REPORT :Última mensaxe/nova +STR_NEWS_MENU_MESSAGE_HISTORY_MENU :Historial de mensaxes ############ range ends here ############ range for about menu starts STR_ABOUT_MENU_LAND_BLOCK_INFO :Información de área de terreo STR_ABOUT_MENU_SEPARATOR : STR_ABOUT_MENU_TOGGLE_CONSOLE :(Des)Activar consola -STR_ABOUT_MENU_AI_DEBUG :Depuración IA -STR_ABOUT_MENU_SCREENSHOT :Captura de Pantalla -STR_ABOUT_MENU_GIANT_SCREENSHOT :Captura Pantalla Mapa Completo +STR_ABOUT_MENU_AI_DEBUG :Depuración IA/script do xogo +STR_ABOUT_MENU_SCREENSHOT :Captura de pantalla +STR_ABOUT_MENU_ZOOMIN_SCREENSHOT :Achegar área capturada +STR_ABOUT_MENU_DEFAULTZOOM_SCREENSHOT :Zoom de captura de pantalla por defecto +STR_ABOUT_MENU_GIANT_SCREENSHOT :Captura de pantalla do mapa completo STR_ABOUT_MENU_ABOUT_OPENTTD :Acerca de 'OpenTTD' +STR_ABOUT_MENU_SPRITE_ALIGNER :Aliñador de sprites +STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Activa/desactiva caixas delimitadoras +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º @@ -455,22 +487,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 @@ -503,50 +553,54 @@ STR_MONTH_DEC :Decembro # Graph window STR_GRAPH_KEY_BUTTON :{BLACK}Lenda -STR_GRAPH_KEY_TOOLTIP :{BLACK}Mostra-la lenda das gráficas +STR_GRAPH_KEY_TOOLTIP :{BLACK}Amosa-la lenda das gráficas 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áfica de Beneficios Operativos -STR_GRAPH_INCOME_CAPTION :{WHITE}Gráfico de Ingresos -STR_GRAPH_CARGO_DELIVERED_CAPTION :{WHITE}Unidades de carga transportadas -STR_GRAPH_COMPANY_PERFORMANCE_RATINGS_CAPTION :{WHITE}Puntuación de rendemento da compañía (Máximo=1000) -STR_GRAPH_COMPANY_VALUES_CAPTION :{WHITE}Valor da Compañía +STR_GRAPH_OPERATING_PROFIT_CAPTION :{WHITE}Gráfica de beneficio operativo +STR_GRAPH_INCOME_CAPTION :{WHITE}Gráfico de ingresos +STR_GRAPH_CARGO_DELIVERED_CAPTION :{WHITE}Unidades de carga entregadas +STR_GRAPH_COMPANY_PERFORMANCE_RATINGS_CAPTION :{WHITE}Puntuación de rendemento da compañía (máximo=1000) +STR_GRAPH_COMPANY_VALUES_CAPTION :{WHITE}Valor da compañía -STR_GRAPH_CARGO_PAYMENT_RATES_CAPTION :{WHITE}Taxas de Pagamento por Carga +STR_GRAPH_CARGO_PAYMENT_RATES_CAPTION :{WHITE}Taxas de pago por carga STR_GRAPH_CARGO_PAYMENT_RATES_X_LABEL :{TINY_FONT}{BLACK}Días en tránsito STR_GRAPH_CARGO_PAYMENT_RATES_TITLE :{TINY_FONT}{BLACK}Pagamento por transportar 10 unidades (ou 1.000 litros) de carga unha distancia de 20 cadros STR_GRAPH_CARGO_ENABLE_ALL :{TINY_FONT}{BLACK}Activar todo STR_GRAPH_CARGO_DISABLE_ALL :{TINY_FONT}{BLACK}Desactivar todo +STR_GRAPH_CARGO_TOOLTIP_ENABLE_ALL :{BLACK}Amosar tódalas cargas no gráfico de pagos por carga +STR_GRAPH_CARGO_TOOLTIP_DISABLE_ALL :{BLACK}Non amosar ningunha carga no gráfico de pagos por carga STR_GRAPH_CARGO_PAYMENT_TOGGLE_CARGO :{BLACK}Amosar/ocultar gráfica para o tipo de carga STR_GRAPH_CARGO_PAYMENT_CARGO :{TINY_FONT}{BLACK}{STRING} +STR_GRAPH_PERFORMANCE_DETAIL_TOOLTIP :{BLACK}Amosar puntuacións de rendemento detalladas # Graph key window STR_GRAPH_KEY_CAPTION :{WHITE}Lenda das gráficas da compañía STR_GRAPH_KEY_COMPANY_SELECTION_TOOLTIP :{BLACK}Pincha aquí para amosar/ocultar a entrada da compañía na gráfica # Company league window -STR_COMPANY_LEAGUE_TABLE_CAPTION :{WHITE}Tabla da Liga de Compañías +STR_COMPANY_LEAGUE_TABLE_CAPTION :{WHITE}Cadro da liga de compañías STR_COMPANY_LEAGUE_COMPANY_NAME :{ORANGE}{COMPANY} {BLACK}{COMPANY_NUM} '{STRING}' STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ENGINEER :Enxeñeiro STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRAFFIC_MANAGER :Xestor de Tráfico -STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRANSPORT_COORDINATOR :Coordinador de Transporte +STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRANSPORT_COORDINATOR :Coordinador de Transportes STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ROUTE_SUPERVISOR :Supervisor de Ruta -STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_DIRECTOR :Director +STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_DIRECTOR :Maquinista STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHIEF_EXECUTIVE :Xefe Executivo STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHAIRMAN :Director STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_PRESIDENT :Presidente STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TYCOON :Magnate # Performance detail window -STR_PERFORMANCE_DETAIL :{WHITE}Punt. rendemento detallada +STR_PERFORMANCE_DETAIL :{WHITE}Puntuación de rendemento detallada STR_PERFORMANCE_DETAIL_KEY :{BLACK}Detalle 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}Ver detalles desta compañía ############ Those following lines need to be in this order!! STR_PERFORMANCE_DETAIL_VEHICLES :{BLACK}Vehículos: STR_PERFORMANCE_DETAIL_STATIONS :{BLACK}Estacións: @@ -559,27 +613,27 @@ STR_PERFORMANCE_DETAIL_MONEY :{BLACK}Diñeiro STR_PERFORMANCE_DETAIL_LOAN :{BLACK}Crédito: STR_PERFORMANCE_DETAIL_TOTAL :{BLACK}Total: ############ End of order list -STR_PERFORMANCE_DETAIL_VEHICLES_TOOLTIP :{BLACK}Número de vehículos que deron beneficios o ano pasado. Inclúe camións/buses, trens, barcos e avións -STR_PERFORMANCE_DETAIL_STATIONS_TOOLTIP :{BLACK}Número de partes de estacións atendida recentemente. Cóntase cada parte da estación (p.e. tren, autobús, aeroporto), aínda que estén conectadas coma unha estación -STR_PERFORMANCE_DETAIL_MIN_PROFIT_TOOLTIP :{BLACK}Beneficios do vehículo con menos ingresos (só se consideran os de máis de dous anos) -STR_PERFORMANCE_DETAIL_MIN_INCOME_TOOLTIP :{BLACK}Cantidade de diñeiro ganado no trimestre co beneficio máis baixo dos últimos 12 trimestres -STR_PERFORMANCE_DETAIL_MAX_INCOME_TOOLTIP :{BLACK}Cantidade de diñeiro gañado no trimestre co beneficio máis alto dos últimos 12 trimestres -STR_PERFORMANCE_DETAIL_DELIVERED_TOOLTIP :{BLACK}Unidades de carga levadas nos últimos catro quartos -STR_PERFORMANCE_DETAIL_CARGO_TOOLTIP :{BLACK}Número de tipos de carga levados no último cuarto -STR_PERFORMANCE_DETAIL_MONEY_TOOLTIP :{BLACK}Cantidade de diñeiro que esta compañía ten no banco +STR_PERFORMANCE_DETAIL_VEHICLES_TOOLTIP :{BLACK}Número de vehículos que deron beneficios o ano pasado. Inclúe vehículos de estrada, trens, barcos e aeronaves +STR_PERFORMANCE_DETAIL_STATIONS_TOOLTIP :{BLACK}Número de estacións atendidas recentemente. As estacións de ferrocarril, paradas de bus, aeroportos, etc. cóntanse por separado aínda que pertenzan á mesma estación +STR_PERFORMANCE_DETAIL_MIN_PROFIT_TOOLTIP :{BLACK}Beneficios do vehículo con menos ingresos (só se consideran os vehículos de máis de dous anos) +STR_PERFORMANCE_DETAIL_MIN_INCOME_TOOLTIP :{BLACK}Cartos gañados no trimestre co beneficio máis baixo dos últimos 12 trimestres +STR_PERFORMANCE_DETAIL_MAX_INCOME_TOOLTIP :{BLACK}Cartos gañados no trimestre co beneficio máis alto dos últimos 12 trimestres +STR_PERFORMANCE_DETAIL_DELIVERED_TOOLTIP :{BLACK}Unidades de carga entregadas nos últimos catro trimestres +STR_PERFORMANCE_DETAIL_CARGO_TOOLTIP :{BLACK}Número de tipos de carga entregados no último trimestre +STR_PERFORMANCE_DETAIL_MONEY_TOOLTIP :{BLACK}Cantidade de cartos que esta compañía ten no banco STR_PERFORMANCE_DETAIL_LOAN_TOOLTIP :{BLACK}Valor do préstamo que ten a compañía -STR_PERFORMANCE_DETAIL_TOTAL_TOOLTIP :{BLACK}Puntos totais de puntos posibles +STR_PERFORMANCE_DETAIL_TOTAL_TOOLTIP :{BLACK}Puntos totais de puntos posíbeis # Music window STR_MUSIC_JAZZ_JUKEBOX_CAPTION :{WHITE}Jazz Jukebox STR_MUSIC_PLAYLIST_ALL :{TINY_FONT}{BLACK}Todo -STR_MUSIC_PLAYLIST_OLD_STYLE :{TINY_FONT}{BLACK}Vello Estilo -STR_MUSIC_PLAYLIST_NEW_STYLE :{TINY_FONT}{BLACK}Novo Estilo +STR_MUSIC_PLAYLIST_OLD_STYLE :{TINY_FONT}{BLACK}Old Style +STR_MUSIC_PLAYLIST_NEW_STYLE :{TINY_FONT}{BLACK}New Style STR_MUSIC_PLAYLIST_EZY_STREET :{TINY_FONT}{BLACK}Ezy Street STR_MUSIC_PLAYLIST_CUSTOM_1 :{TINY_FONT}{BLACK}Persoal 1 STR_MUSIC_PLAYLIST_CUSTOM_2 :{TINY_FONT}{BLACK}Persoal 2 -STR_MUSIC_MUSIC_VOLUME :{TINY_FONT}{BLACK}Volume da Música -STR_MUSIC_EFFECTS_VOLUME :{TINY_FONT}{BLACK}Volume dos Efectos de Son +STR_MUSIC_MUSIC_VOLUME :{TINY_FONT}{BLACK}Volume da música +STR_MUSIC_EFFECTS_VOLUME :{TINY_FONT}{BLACK}Volume dos efectos de son STR_MUSIC_RULER_MIN :{TINY_FONT}{BLACK}MÍN STR_MUSIC_RULER_MAX :{TINY_FONT}{BLACK}MÁX STR_MUSIC_RULER_MARKER :{TINY_FONT}{BLACK}' @@ -589,64 +643,70 @@ STR_MUSIC_TITLE_NONE :{TINY_FONT}{DKG STR_MUSIC_TITLE_NAME :{TINY_FONT}{DKGREEN}"{STRING}" STR_MUSIC_TRACK :{TINY_FONT}{BLACK}Pista STR_MUSIC_XTITLE :{TINY_FONT}{BLACK}Título -STR_MUSIC_SHUFFLE :{TINY_FONT}{BLACK}Mezclar +STR_MUSIC_SHUFFLE :{TINY_FONT}{BLACK}Mesturar STR_MUSIC_PROGRAM :{TINY_FONT}{BLACK}Programa STR_MUSIC_TOOLTIP_SKIP_TO_PREVIOUS_TRACK :{BLACK}Saltar á pista anterior da selección -STR_MUSIC_TOOLTIP_SKIP_TO_NEXT_TRACK_IN_SELECTION :{BLACK}Saltar a pista seguinte da selección -STR_MUSIC_TOOLTIP_STOP_PLAYING_MUSIC :{BLACK}Para-la reproducción de música -STR_MUSIC_TOOLTIP_START_PLAYING_MUSIC :{BLACK}Comeza-la reproducción da música +STR_MUSIC_TOOLTIP_SKIP_TO_NEXT_TRACK_IN_SELECTION :{BLACK}Saltar á pista seguinte da selección +STR_MUSIC_TOOLTIP_STOP_PLAYING_MUSIC :{BLACK}Para-la reprodución da música +STR_MUSIC_TOOLTIP_START_PLAYING_MUSIC :{BLACK}Comeza-la reprodución da música STR_MUSIC_TOOLTIP_DRAG_SLIDERS_TO_SET_MUSIC :{BLACK}Arrastra os deslizadores para configura-los volumes da música e dos efectos de son STR_MUSIC_TOOLTIP_SELECT_ALL_TRACKS_PROGRAM :{BLACK}Selecciona-lo programa 'Tódalas pistas' -STR_MUSIC_TOOLTIP_SELECT_OLD_STYLE_MUSIC :{BLACK}Selecciona-lo programa 'Música vello estilo' -STR_MUSIC_TOOLTIP_SELECT_NEW_STYLE_MUSIC :{BLACK}Selecciona-lo programa 'Música novo estilo' -STR_MUSIC_TOOLTIP_SELECT_EZY_STREET_STYLE :{BLACK}Selecciona-lo programa 'Música Estilo Ezy Street' -STR_MUSIC_TOOLTIP_SELECT_CUSTOM_1_USER_DEFINED :{BLACK}Selecciona-lo programa 'Persoal 1' -STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Selecciona-lo programa 'Persoal 2' +STR_MUSIC_TOOLTIP_SELECT_OLD_STYLE_MUSIC :{BLACK}Selecciona-lo programa 'Música old style' +STR_MUSIC_TOOLTIP_SELECT_NEW_STYLE_MUSIC :{BLACK}Selecciona-lo programa 'Música new style' +STR_MUSIC_TOOLTIP_SELECT_EZY_STREET_STYLE :{BLACK}Selecciona-lo programa 'Música Ezy Street' +STR_MUSIC_TOOLTIP_SELECT_CUSTOM_1_USER_DEFINED :{BLACK}Selecciona-lo programa 'Persoal 1' (definido polo usuario) +STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Selecciona-lo programa 'Persoal 2' (definido polo usuario) STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Activar/desactivar programa aleatorio -STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Mostrar a fiestra de selección de pista musical +STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Amosar a fiestra de selección de pista musical +STR_ERROR_NO_SONGS :{WHITE}Seleccionouse unha lista de reprodución sen cancións. Non se reproducirá ningunha canción # Playlist window -STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}Selección do Programa de Música +STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}Selección do programa de música STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} "{STRING}" -STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}Índice de Pistas +STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}Índice de pistas STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}Programa - '{STRING}' STR_PLAYLIST_CLEAR :{TINY_FONT}{BLACK}Limpar -STR_PLAYLIST_TOOLTIP_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}Limpa-lo programa actual(Só Persoalizado 1 e Persoalizado 2) -STR_PLAYLIST_TOOLTIP_CLICK_TO_ADD_TRACK :{BLACK}Pincha nunha pista de música para engadi-la ó programa actual(Sólo Persoal 1 e Persoal 2) -STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}Pincha na pista de música para borrala do programa actual (Só Persoal1 ou Persoal2) +STR_PLAYLIST_TOOLTIP_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}Limpa-lo programa actual (só Persoal 1 ou Persoal 2) +STR_PLAYLIST_TOOLTIP_CLICK_TO_ADD_TRACK :{BLACK}Pincha nunha pista de música para engadila ao programa actual (só Persoal 1 ou Persoal 2) +STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}Pincha nunha pista de música para borrala do programa actual (só Persoal1 ou Persoal2) # Highscore window -STR_HIGHSCORE_TOP_COMPANIES_WHO_REACHED :{BIG_FONT}{BLACK}Mellores compañías que chegaron ó {NUM} -STR_HIGHSCORE_TOP_COMPANIES_NETWORK_GAME :{BIG_FONT}{BLACK}Táboa da Liga de Compañías en {NUM} +STR_HIGHSCORE_TOP_COMPANIES_WHO_REACHED :{BIG_FONT}{BLACK}Mellores compañías que chegaron a {NUM} +STR_HIGHSCORE_TOP_COMPANIES_NETWORK_GAME :{BIG_FONT}{BLACK}Cadro da liga de compañías en {NUM} STR_HIGHSCORE_POSITION :{BIG_FONT}{BLACK}{COMMA}. STR_HIGHSCORE_PERFORMANCE_TITLE_BUSINESSMAN :Home de negocios -STR_HIGHSCORE_PERFORMANCE_TITLE_ENTREPRENEUR :Empresario +STR_HIGHSCORE_PERFORMANCE_TITLE_ENTREPRENEUR :Emprendedor STR_HIGHSCORE_PERFORMANCE_TITLE_INDUSTRIALIST :Industrial STR_HIGHSCORE_PERFORMANCE_TITLE_CAPITALIST :Capitalista STR_HIGHSCORE_PERFORMANCE_TITLE_MAGNATE :Magnate STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL :Mogul -STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY :Magnate da Centuria -STR_HIGHSCORE_NAME :{BIG_FONT}{PRESIDENT_NAME}, {COMPANY} +STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY :Magnate do Século +STR_HIGHSCORE_NAME :{PRESIDENT_NAME}, {COMPANY} STR_HIGHSCORE_STATS :{BIG_FONT}'{STRING}' ({COMMA}) -STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{BLACK}¡{COMPANY} logra o status de '{STRING}'! -STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{WHITE}¡{PRESIDENT_NAME} de {COMPANY} logra o status '{STRING}'! +STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{BLACK}{COMPANY} logra o status de '{STRING}'! +STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{WHITE}{PRESIDENT_NAME} de {COMPANY} logra o status '{STRING}'! # Smallmap window STR_SMALLMAP_CAPTION :{WHITE}Mapa - {STRING} -STR_SMALLMAP_TYPE_CONTOURS :Contorno +STR_SMALLMAP_TYPE_CONTOURS :Curvas de nivel STR_SMALLMAP_TYPE_VEHICLES :Vehículos STR_SMALLMAP_TYPE_INDUSTRIES :Industrias +STR_SMALLMAP_TYPE_ROUTEMAP :Fluxo de Cargas STR_SMALLMAP_TYPE_ROUTES :Rutas STR_SMALLMAP_TYPE_VEGETATION :Vexetación STR_SMALLMAP_TYPE_OWNERS :Propietarios -STR_SMALLMAP_TOOLTIP_SHOW_LAND_CONTOURS_ON_MAP :{BLACK}Amosa-los contornos do terreo no mapa -STR_SMALLMAP_TOOLTIP_SHOW_VEHICLES_ON_MAP :{BLACK}Amosa-los vehículos no mapa -STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRIES_ON_MAP :{BLACK}Amosa-las industrias no mapa -STR_SMALLMAP_TOOLTIP_SHOW_TRANSPORT_ROUTES_ON :{BLACK}Amosar as rutas de transporte no mapa -STR_SMALLMAP_TOOLTIP_SHOW_VEGETATION_ON_MAP :{BLACK}Amosa-la vexetación no mapa -STR_SMALLMAP_TOOLTIP_SHOW_LAND_OWNERS_ON_MAP :{BLACK}Amosa-los propietarios do terreo no mapa +STR_SMALLMAP_TOOLTIP_SHOW_LAND_CONTOURS_ON_MAP :{BLACK}Amosa as curvas de nivel do terreo no mapa +STR_SMALLMAP_TOOLTIP_SHOW_VEHICLES_ON_MAP :{BLACK}Amosa os vehículos no mapa +STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRIES_ON_MAP :{BLACK}Amosa as industrias no mapa +STR_SMALLMAP_TOOLTIP_SHOW_LINK_STATS_ON_MAP :{BLACK}Amosa o fluxo de cargas no mapa +STR_SMALLMAP_TOOLTIP_SHOW_TRANSPORT_ROUTES_ON :{BLACK}Amosa as rutas de transporte no mapa +STR_SMALLMAP_TOOLTIP_SHOW_VEGETATION_ON_MAP :{BLACK}Amosa a vexetación no mapa +STR_SMALLMAP_TOOLTIP_SHOW_LAND_OWNERS_ON_MAP :{BLACK}Amosa os propietarios do terreo no mapa +STR_SMALLMAP_TOOLTIP_INDUSTRY_SELECTION :{BLACK}Pincha nun tipo de industria para (des)activar a súa representación. Ctrl+Click desactiva tódolos tipos menos o seleccionado. Ctrl+Click outra vez para activar tódolos tipos de industria +STR_SMALLMAP_TOOLTIP_COMPANY_SELECTION :{BLACK}Pincha nunha compañía para (des)activar as súas propiedades. Ctrl+Click desactiva todas menos a seleccionada. Ctrl+Click outra vez para activar tódalas compañías +STR_SMALLMAP_TOOLTIP_CARGO_SELECTION :{BLACK}Pincha nunha carga to (des)activar que amose as propiedades. Ctrl+Click desactiva tódalas cargas excepto a seleccionada. Ctrl+Click outra vez para activar tódalas cargas STR_SMALLMAP_LEGENDA_ROADS :{TINY_FONT}{BLACK}Estradas STR_SMALLMAP_LEGENDA_RAILROADS :{TINY_FONT}{BLACK}Ferrocarrís @@ -654,205 +714,214 @@ STR_SMALLMAP_LEGENDA_STATIONS_AIRPORTS_DOCKS :{TINY_FONT}{BLA STR_SMALLMAP_LEGENDA_BUILDINGS_INDUSTRIES :{TINY_FONT}{BLACK}Edificios/Industrias STR_SMALLMAP_LEGENDA_VEHICLES :{TINY_FONT}{BLACK}Vehículos STR_SMALLMAP_LEGENDA_TRAINS :{TINY_FONT}{BLACK}Trens -STR_SMALLMAP_LEGENDA_ROAD_VEHICLES :{TINY_FONT}{BLACK}Camións/Buses -STR_SMALLMAP_LEGENDA_SHIPS :{TINY_FONT}{BLACK}Navíos +STR_SMALLMAP_LEGENDA_ROAD_VEHICLES :{TINY_FONT}{BLACK}Vehículos de estrada +STR_SMALLMAP_LEGENDA_SHIPS :{TINY_FONT}{BLACK}Barcos STR_SMALLMAP_LEGENDA_AIRCRAFT :{TINY_FONT}{BLACK}Aeronaves -STR_SMALLMAP_LEGENDA_TRANSPORT_ROUTES :{TINY_FONT}{BLACK}Rutas De Transporte +STR_SMALLMAP_LEGENDA_TRANSPORT_ROUTES :{TINY_FONT}{BLACK}Liñas de transporte STR_SMALLMAP_LEGENDA_FOREST :{TINY_FONT}{BLACK}Bosque -STR_SMALLMAP_LEGENDA_RAILROAD_STATION :{TINY_FONT}{BLACK}Estación de Ferrocarril -STR_SMALLMAP_LEGENDA_TRUCK_LOADING_BAY :{TINY_FONT}{BLACK}Bahía de Carga de Camións -STR_SMALLMAP_LEGENDA_BUS_STATION :{TINY_FONT}{BLACK}Estación de Autobús +STR_SMALLMAP_LEGENDA_RAILROAD_STATION :{TINY_FONT}{BLACK}Estación de ferrocarril +STR_SMALLMAP_LEGENDA_TRUCK_LOADING_BAY :{TINY_FONT}{BLACK}Recinto de carga de camións +STR_SMALLMAP_LEGENDA_BUS_STATION :{TINY_FONT}{BLACK}Estación de autobuses STR_SMALLMAP_LEGENDA_AIRPORT_HELIPORT :{TINY_FONT}{BLACK}Aeroporto/Heliporto STR_SMALLMAP_LEGENDA_DOCK :{TINY_FONT}{BLACK}Peirao -STR_SMALLMAP_LEGENDA_ROUGH_LAND :{TINY_FONT}{BLACK}Terra Quebrada -STR_SMALLMAP_LEGENDA_GRASS_LAND :{TINY_FONT}{BLACK}Terra con Herba -STR_SMALLMAP_LEGENDA_BARE_LAND :{TINY_FONT}{BLACK}Terra Deserta -STR_SMALLMAP_LEGENDA_FIELDS :{TINY_FONT}{BLACK}Campos +STR_SMALLMAP_LEGENDA_ROUGH_LAND :{TINY_FONT}{BLACK}Terra +STR_SMALLMAP_LEGENDA_GRASS_LAND :{TINY_FONT}{BLACK}Herba +STR_SMALLMAP_LEGENDA_BARE_LAND :{TINY_FONT}{BLACK}Terra deserta +STR_SMALLMAP_LEGENDA_FIELDS :{TINY_FONT}{BLACK}Leiras STR_SMALLMAP_LEGENDA_TREES :{TINY_FONT}{BLACK}Árbores STR_SMALLMAP_LEGENDA_ROCKS :{TINY_FONT}{BLACK}Rochas STR_SMALLMAP_LEGENDA_WATER :{TINY_FONT}{BLACK}Auga -STR_SMALLMAP_LEGENDA_NO_OWNER :{TINY_FONT}{BLACK}Sen Propietario +STR_SMALLMAP_LEGENDA_NO_OWNER :{TINY_FONT}{BLACK}Sen propietario STR_SMALLMAP_LEGENDA_TOWNS :{TINY_FONT}{BLACK}Poboacións STR_SMALLMAP_LEGENDA_INDUSTRIES :{TINY_FONT}{BLACK}Industrias STR_SMALLMAP_LEGENDA_DESERT :{TINY_FONT}{BLACK}Deserto STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLACK}Neve STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Amosar/ocultar nomes das cidades no mapa -STR_SMALLMAP_CENTER :{BLACK}Centra o mapa pequeno na posición actual +STR_SMALLMAP_CENTER :{BLACK}Centrar o minimapa na posición 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}Desactivar todo STR_SMALLMAP_ENABLE_ALL :{BLACK}Activar todo -STR_SMALLMAP_SHOW_HEIGHT :{BLACK}Mostrar altitude +STR_SMALLMAP_SHOW_HEIGHT :{BLACK}Mostrar cota STR_SMALLMAP_TOOLTIP_DISABLE_ALL_INDUSTRIES :{BLACK}Non mostrar industrias no mapa STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES :{BLACK}Mostrar tódalas industrias no mapa +STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}Amosar/ocultar mapa de cotas do terreo +STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES :{BLACK}Non amosar as propiedades de ningunha compañía no mapa +STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}Amosar as propiedades de tódalas compañías no mapa +STR_SMALLMAP_TOOLTIP_DISABLE_ALL_CARGOS :BLACK}Non amosa ningunha carga no mapa +STR_SMALLMAP_TOOLTIP_ENABLE_ALL_CARGOS :{BLACK}Amosa tódolas cargas no mapa # Status bar messages -STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Mostrar a última mensaxe ou noticia +STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Mostrar a última mensaxe ou nova STR_STATUSBAR_COMPANY_NAME :{SILVER}- - {COMPANY} - - STR_STATUSBAR_PAUSED :{YELLOW}* * EN PAUSA * * -STR_STATUSBAR_AUTOSAVE :{RED}AUTOGRABADO -STR_STATUSBAR_SAVING_GAME :{RED}* * GRABANDO PARTIDA * * +STR_STATUSBAR_AUTOSAVE :{RED}AUTOGRAVADO +STR_STATUSBAR_SAVING_GAME :{RED}* * GRAVANDO PARTIDA * * # News message history -STR_MESSAGE_HISTORY :{WHITE}Historial de Mensaxes -STR_MESSAGE_HISTORY_TOOLTIP :{BLACK}Unha lista das mensaxes e noticias recentes +STR_MESSAGE_HISTORY :{WHITE}Historial de mensaxes +STR_MESSAGE_HISTORY_TOOLTIP :{BLACK}Unha lista das mensaxes e novas recentes STR_MESSAGE_NEWS_FORMAT :{STRING} - {STRING} STR_NEWS_MESSAGE_CAPTION :{WHITE}Mensaxe - -STR_NEWS_FIRST_TRAIN_ARRIVAL :{BIG_FONT}{BLACK}Celebración cidadá . . .{}Chega o primeiro tren a {STATION}! -STR_NEWS_FIRST_BUS_ARRIVAL :{BIG_FONT}{BLACK}Celebración cidadá . . .{}¡Chega o primeiro autobús a {STATION}! -STR_NEWS_FIRST_TRUCK_ARRIVAL :{BIG_FONT}{BLACK}Celebración cidadá . . .{}¡Chega o primeiro camión a {STATION}! -STR_NEWS_FIRST_PASSENGER_TRAM_ARRIVAL :{BIG_FONT}{BLACK}Celebración cidadá . . .{}¡Chega o primeiro tranvía de pasaxeiros a {STATION}! -STR_NEWS_FIRST_CARGO_TRAM_ARRIVAL :{BIG_FONT}{BLACK}Celebración cidadá . . .{}¡Chega o primeiro tranvía de carga a {STATION}! -STR_NEWS_FIRST_SHIP_ARRIVAL :{BIG_FONT}{BLACK}Celebración cidadá . . .{}¡Chega o primeiro barco a {STATION}! -STR_NEWS_FIRST_AIRCRAFT_ARRIVAL :{BIG_FONT}{BLACK}Celebración cidadá . . .{}¡Chega o primeiro avión a {STATION}! - -STR_NEWS_TRAIN_CRASH :{BIG_FONT}{BLACK}¡Accidente Ferroviario!{}{COMMA} mortos na explosión trala colisión -STR_NEWS_ROAD_VEHICLE_CRASH_DRIVER :{BIG_FONT}{BLACK}¡Accidente de Tráfico!{}O conductor morre na explosión producida tra-la colisión cun tren -STR_NEWS_ROAD_VEHICLE_CRASH :{BIG_FONT}{BLACK}¡Accidente de Tráfico!{}{COMMA} mortos na explosión producida tra-la colisión cun tren -STR_NEWS_AIRCRAFT_CRASH :{BIG_FONT}{BLACK}¡Accidente Aéreo!{}{COMMA} mortos na bola de lume en {STATION} -STR_NEWS_PLANE_CRASH_OUT_OF_FUEL :{BIG_FONT}{BLACK}¡Accidente de Avión!¡O avión {} quedou sen combustible, hai {COMMA} mortos na explosión! - -STR_NEWS_DISASTER_ZEPPELIN :{BIG_FONT}{BLACK}¡Desastre cun Zeppelin en {STATION}! -STR_NEWS_DISASTER_SMALL_UFO :{BIG_FONT}{BLACK}¡Vehículo de estrada destruído tras colisionar cun 'OVNI'! -STR_NEWS_DISASTER_AIRPLANE_OIL_REFINERY :{BIG_FONT}{BLACK}¡Explosión dunha refinería de petróleo cerca de {TOWN}! -STR_NEWS_DISASTER_HELICOPTER_FACTORY :{BIG_FONT}{BLACK}¡Factoría destruida en circunstancias sospeitosas cerca de {TOWN}! -STR_NEWS_DISASTER_BIG_UFO :{BIG_FONT}{BLACK}¡Aterrizaxe dun 'OVNI cerca de {TOWN}! -STR_NEWS_DISASTER_COAL_MINE_SUBSIDENCE :{BIG_FONT}{BLACK}¡Afundimento dunha Mina de Carbón deixa un rastro de destrucción cerca de {TOWN}! -STR_NEWS_DISASTER_FLOOD_VEHICLE :{BIG_FONT}{BLACK}¡Inundacións!{}¡Hay polo menos {COMMA} desaparecidos, presuntamente mortos tras unha grande inundación! - -STR_NEWS_COMPANY_IN_TROUBLE_TITLE :{BIG_FONT}{BLACK}¡Compañía de transporte en problemas! +STR_NEWS_CUSTOM_ITEM :{BIG_FONT}{BLACK}{STRING} + +STR_NEWS_FIRST_TRAIN_ARRIVAL :{BIG_FONT}{BLACK}Os cidadáns celebran . . .{}Chega o primeiro tren a {STATION}! +STR_NEWS_FIRST_BUS_ARRIVAL :{BIG_FONT}{BLACK}Os cidadáns celebran . . .{}Chega o primeiro autobús a {STATION}! +STR_NEWS_FIRST_TRUCK_ARRIVAL :{BIG_FONT}{BLACK}Os cidadáns celebran . . .{}Chega o primeiro camión a {STATION}! +STR_NEWS_FIRST_PASSENGER_TRAM_ARRIVAL :{BIG_FONT}{BLACK}Os cidadáns celebran . . .{}Chega o primeiro tranvía de pasaxeiros a {STATION}! +STR_NEWS_FIRST_CARGO_TRAM_ARRIVAL :{BIG_FONT}{BLACK}Os cidadáns celebran . . .{}Chega o primeiro tranvía de carga a {STATION}! +STR_NEWS_FIRST_SHIP_ARRIVAL :{BIG_FONT}{BLACK}Os cidadáns celebran . . .{}Chega o primeiro barco a {STATION}! +STR_NEWS_FIRST_AIRCRAFT_ARRIVAL :{BIG_FONT}{BLACK}Os cidadáns celebran . . .{}Chega o primeiro avión a {STATION}! + +STR_NEWS_TRAIN_CRASH :{BIG_FONT}{BLACK}Accidente ferroviario!{}{COMMA} mortos na deflagración trala colisión +STR_NEWS_ROAD_VEHICLE_CRASH_DRIVER :{BIG_FONT}{BLACK}Accidente de tráfico!{}O condutor morre na deflagración producida trala colisión cun tren +STR_NEWS_ROAD_VEHICLE_CRASH :{BIG_FONT}{BLACK}Accidente de tráfico!{}{COMMA} mortos na deflagración producida trala colisión cun tren +STR_NEWS_AIRCRAFT_CRASH :{BIG_FONT}{BLACK}Accidente aéreo!{}{COMMA} mortos na deflagración en {STATION} +STR_NEWS_PLANE_CRASH_OUT_OF_FUEL :{BIG_FONT}{BLACK}Accidente de aéreo!O avión {} quedou sen combustible, {COMMA} mortos na deflagración! + +STR_NEWS_DISASTER_ZEPPELIN :{BIG_FONT}{BLACK}Desastre dun zeppelin en {STATION}! +STR_NEWS_DISASTER_SMALL_UFO :{BIG_FONT}{BLACK}Vehículo de estrada destruído tras colisionar cun 'OVNI'! +STR_NEWS_DISASTER_AIRPLANE_OIL_REFINERY :{BIG_FONT}{BLACK}Explosión dunha refinaría de petróleo preto de {TOWN}! +STR_NEWS_DISASTER_HELICOPTER_FACTORY :{BIG_FONT}{BLACK}Fábrica destruida en circunstancias sospeitosas preto de {TOWN}! +STR_NEWS_DISASTER_BIG_UFO :{BIG_FONT}{BLACK}Aterrizaxe dun 'OVNI preto de {TOWN}! +STR_NEWS_DISASTER_COAL_MINE_SUBSIDENCE :{BIG_FONT}{BLACK}O afundimento dunha mina de carbón deixa un rastro de destrución preto de {TOWN}! +STR_NEWS_DISASTER_FLOOD_VEHICLE :{BIG_FONT}{BLACK}Inundacións!{}Alomenos {COMMA} desaparecidos, presumibelmente mortos tras unha grande inundación! + +STR_NEWS_COMPANY_IN_TROUBLE_TITLE :{BIG_FONT}{BLACK}Compañía de transportes en problemas! STR_NEWS_COMPANY_IN_TROUBLE_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} vai ser vendida ou declarada en bancarrota se non mellora o seu rendemento pronto! -STR_NEWS_COMPANY_MERGER_TITLE :{BIG_FONT}{BLACK}¡Fusión de compañías de transporte! +STR_NEWS_COMPANY_MERGER_TITLE :{BIG_FONT}{BLACK}Fusión de compañías de transporte! STR_NEWS_COMPANY_MERGER_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} foi vendida a {STRING} por {CURRENCY_LONG}! -STR_NEWS_COMPANY_BANKRUPT_TITLE :{BIG_FONT}{BLACK}¡Bancarrota! +STR_NEWS_COMPANY_BANKRUPT_TITLE :{BIG_FONT}{BLACK}Bancarrota! STR_NEWS_COMPANY_BANKRUPT_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} foi pechada polos acreedores e vendéronse tódalas posesións! -STR_NEWS_COMPANY_LAUNCH_TITLE :{BIG_FONT}{BLACK}¡Lanzada unha nova compañía de transporte! -STR_NEWS_COMPANY_LAUNCH_DESCRIPTION :{BIG_FONT}{BLACK}¡{STRING} comeza a construción cerca de {TOWN}! -STR_NEWS_MERGER_TAKEOVER_TITLE :{BIG_FONT}{BLACK}¡{STRING} comprada por {STRING}! +STR_NEWS_COMPANY_LAUNCH_TITLE :{BIG_FONT}{BLACK}Lanzada unha nova compañía de transportes! +STR_NEWS_COMPANY_LAUNCH_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} comeza a construción preto de {TOWN}! +STR_NEWS_MERGER_TAKEOVER_TITLE :{BIG_FONT}{BLACK}{STRING} comprada por {STRING}! STR_PRESIDENT_NAME_MANAGER :{BLACK}{PRESIDENT_NAME}{}(Presidente) -STR_NEWS_NEW_TOWN :{BLACK}{BIG_FONT}¡{STRING} promoveu a construción dunha nova cidade: {TOWN}! +STR_NEWS_NEW_TOWN :{BLACK}{BIG_FONT}{STRING} promoveu a construción dunha nova cidade: {TOWN}! -STR_NEWS_INDUSTRY_CONSTRUCTION :{BIG_FONT}{BLACK}¡Nova {STRING} en construción cerca de {TOWN}! -STR_NEWS_INDUSTRY_PLANTED :{BIG_FONT}{BLACK}¡Nova {STRING} cerca de {TOWN}! +STR_NEWS_INDUSTRY_CONSTRUCTION :{BIG_FONT}{BLACK}Nova {STRING} en construción cerca de {TOWN}! +STR_NEWS_INDUSTRY_PLANTED :{BIG_FONT}{BLACK}Nova {STRING} asentada preto de {TOWN}! -STR_NEWS_INDUSTRY_CLOSURE_GENERAL :{BIG_FONT}{BLACK}¡{STRING} anuncia o seu peche inminente! -STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS :{BIG_FONT}{BLACK}¡Problemas de suministro en {STRING} provocan o seu peche inminente! -STR_NEWS_INDUSTRY_CLOSURE_LACK_OF_TREES :{BIG_FONT}{BLACK}¡A falta de árbores provoca que {STRING} anuncie o peche inminente! +STR_NEWS_INDUSTRY_CLOSURE_GENERAL :{BIG_FONT}{BLACK}{STRING} anuncia o seu peche inminente! +STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS :{BIG_FONT}{BLACK}Problemas de subministración en {STRING} provocan que anuncie o seu peche inminente! +STR_NEWS_INDUSTRY_CLOSURE_LACK_OF_TREES :{BIG_FONT}{BLACK}A falta de árbores cercanos provoca que {STRING} anuncie o peche inminente! -STR_NEWS_EURO_INTRODUCTION :{BIG_FONT}{BLACK}¡Unión Monetaria Europea!{}{}¡O Euro introdúcese como a única moeda para as transaccións diarias no teu país! -STR_NEWS_BEGIN_OF_RECESSION :{BLACK}{BIG_FONT}¡Recesión Mundial!{}{}¡Expertos financieiros temen o peor a medida que a economía afúndese! -STR_NEWS_END_OF_RECESSION :{BLACK}{BIG_FONT}¡Fin da Recesión!{}{}¡A mellora no comercio inspira confianza nas industrias a media que a economía se reforza! +STR_NEWS_EURO_INTRODUCTION :{BIG_FONT}{BLACK}Unión Económica e Monetaria Europea!{}{}O Euro introdúcese como a única moeda para as transaccións diarias no teu país! +STR_NEWS_BEGIN_OF_RECESSION :{BLACK}{BIG_FONT}Recesión mundial!{}{}Os expertos financeiros temen o peor a medida que a economía afúndese! +STR_NEWS_END_OF_RECESSION :{BLACK}{BIG_FONT}Fin da recesión!{}{}A mellora no comercio inspira confianza nas industrias a media que a economía se reforza! -STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL :{BIG_FONT}{BLACK}¡{INDUSTRY} incrementa a súa producción! -STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_COAL :{BIG_FONT}{BLACK}¡Nova veta de carbón atopada en {INDUSTRY}!{}¡Espérase que a producción dóbrese! -STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_OIL :{BIG_FONT}{BLACK}¡Novas reservas de petróleo atopadas en {INDUSTRY}!{}¡Espérase que a producción dóbrese! -STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM :{BIG_FONT}{BLACK}¡Espérase que a producción se dobre en {INDUSTRY} debido a métodos de cultivo mellorados! -STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_SMOOTH :{BIG_FONT}{BLACK}¡A producción de {STRING} en {INDUSTRY} sube un {COMMA}%! +STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL :{BIG_FONT}{BLACK}{INDUSTRY} incrementa a súa producción! +STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_COAL :{BIG_FONT}{BLACK}Nova veta de carbón atopada en {INDUSTRY}!{}Agárdase que a producción se duplique! +STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_OIL :{BIG_FONT}{BLACK}Novas reservas de petróleo atopadas en {INDUSTRY}!{}Agárdase que a producción se duplique! +STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM :{BIG_FONT}{BLACK}Espérase que a producción se dobre en {INDUSTRY} debido a métodos de cultivo mellorados! +STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_SMOOTH :{BIG_FONT}{BLACK}A producción de {STRING} en {INDUSTRY} sube un {COMMA}%! STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL :{BIG_FONT}{BLACK}{INDUSTRY} baixa a producción nun 50% -STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM :{BIG_FONT}{BLACK}¡Infestación de insectos causa estragos en {INDUSTRY}!{}A producción baixa un 50% -STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_SMOOTH :{BIG_FONT}{BLACK}¡A producción de {STRING} en {INDUSTRY} baixa un {COMMA}%! +STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM :{BIG_FONT}{BLACK}Infestación de insectos causa estragos en {INDUSTRY}{}A producción baixa un 50% +STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_SMOOTH :{BIG_FONT}{BLACK}A producción de {STRING} en {INDUSTRY} baixa un {COMMA}%! STR_NEWS_TRAIN_IS_WAITING :{WHITE}{VEHICLE} está a esperar no depósito STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE} está a esperar no depósito 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 de avións +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 -STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD_AND :{WHITE}{VEHICLE} está a volverse moi vello e precisa ser reemprazado con urxencia -STR_NEWS_TRAIN_IS_STUCK :{WHITE}{VEHICLE} non pode atopar unha ruta para continuar. -STR_NEWS_VEHICLE_IS_LOST :{WHITE}{VEHICLE} está perdido. +STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD_AND :{WHITE}{VEHICLE} está a volverse moi vello e precisa urxente reemprazo +STR_NEWS_TRAIN_IS_STUCK :{WHITE}{VEHICLE} non pode atopar unha ruta para continuar +STR_NEWS_VEHICLE_IS_LOST :{WHITE}{VEHICLE} está perdido STR_NEWS_VEHICLE_IS_UNPROFITABLE :{WHITE}O beneficio do ano pasado de {VEHICLE} foi de {CURRENCY_LONG} +STR_NEWS_AIRCRAFT_DEST_TOO_FAR :{WHITE}{VEHICLE} non pode chegar ao seu próximo destino porque está fóra de alcance STR_NEWS_ORDER_REFIT_FAILED :{WHITE}{VEHICLE} parou porque a orde de reaxuste fallou STR_NEWS_VEHICLE_AUTORENEW_FAILED :{WHITE}Renovación automática fallida en {VEHICLE}{}{STRING} -STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE :{BIG_FONT}{BLACK}¡Novo {STRING} agora dispoñible! +STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE :{BIG_FONT}{BLACK}Novo {STRING} agora dispoñíbel! STR_NEWS_NEW_VEHICLE_TYPE :{BIG_FONT}{BLACK}{ENGINE} -STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}¡Nova {STRING} dispoñible! - {ENGINE} +STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}Nova {STRING} dispoñíbel! - {ENGINE} -STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO :{WHITE}{STATION} xa non acepta {STRING} -STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO_OR_CARGO :{WHITE}{STATION} xa non acepta {STRING} ou {STRING} +STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO :{WHITE}{STATION} xa non acepta máis {STRING} +STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO_OR_CARGO :{WHITE}{STATION} xa non acepta máis {STRING} nin {STRING} STR_NEWS_STATION_NOW_ACCEPTS_CARGO :{WHITE}{STATION} agora acepta {STRING} STR_NEWS_STATION_NOW_ACCEPTS_CARGO_AND_CARGO :{WHITE}{STATION} agora acepta {STRING} e {STRING} -STR_NEWS_OFFER_OF_SUBSIDY_EXPIRED :{BIG_FONT}{BLACK}Oferta de subsidio esgotada:{}{}{STRING} dende {STRING} ata {STRING} non será subsidiada. -STR_NEWS_SUBSIDY_WITHDRAWN_SERVICE :{BIG_FONT}{BLACK}Subsidio retirado:{}{}O servizo de transporte de {STRING} dende {STRING} ata {STRING} xa non ten subsidio. -STR_NEWS_SERVICE_SUBSIDY_OFFERED :{BIG_FONT}{BLACK}¡Oferta de subsidio:{}{}O primeiro servizo de transporte de {STRING} dende {STRING} ata {STRING} será subsidiado pola autoridade local! -STR_NEWS_SERVICE_SUBSIDY_AWARDED_HALF :{BIG_FONT}{BLACK}¡Subsidio concedido a {STRING}!{}{}Polo servizo de transporte de {STRING} dende {STRING} ata {STRING} pagaráse un 50% máis durante o próximo ano! -STR_NEWS_SERVICE_SUBSIDY_AWARDED_DOUBLE :{BIG_FONT}{BLACK}¡Subsidio concedido a {STRING}!{}{}Polo servizo de transporte de {STRING} dende {STRING} ata {STRING} pagaráse o dobre durante o próximo ano! -STR_NEWS_SERVICE_SUBSIDY_AWARDED_TRIPLE :{BIG_FONT}{BLACK}¡Subsidio concedido a {STRING}!{}{}Polo servizo de transporte de {STRING} dende {STRING} ata {STRING} pagaráse o triplo durante o próximo ano! -STR_NEWS_SERVICE_SUBSIDY_AWARDED_QUADRUPLE :{BIG_FONT}{BLACK}¡Subsidio concedido a {STRING}!{}{}Polo servizo de transporte de {STRING} dende {STRING} ata {STRING} pagaráse o cuádruplo durante o próximo ano! +STR_NEWS_OFFER_OF_SUBSIDY_EXPIRED :{BIG_FONT}{BLACK}Oferta de subvención expirada:{}{}{STRING} dende {STRING} ata {STRING} non será subvencionada. +STR_NEWS_SUBSIDY_WITHDRAWN_SERVICE :{BIG_FONT}{BLACK}Subvención reitrada:{}{}O servizo de transporte de {STRING} dende {STRING} ata {STRING} xa non ten subvención. +STR_NEWS_SERVICE_SUBSIDY_OFFERED :{BIG_FONT}{BLACK}Oferta de subvención:{}{}O primeiro servizo de transporte de {STRING} dende {STRING} ata {STRING} será subvencionado durante un ano pola autoridade local! +STR_NEWS_SERVICE_SUBSIDY_AWARDED_HALF :{BIG_FONT}{BLACK}Subvención concedida a {STRING}!{}{}Polo servizo de transporte de {STRING} dende {STRING} ata {STRING} pagarase un 50% máis durante o vindeiro ano! +STR_NEWS_SERVICE_SUBSIDY_AWARDED_DOUBLE :{BIG_FONT}{BLACK}Subvención concedida a {STRING}!{}{}Polo servizo de transporte de {STRING} dende {STRING} ata {STRING} pagarase o dobre durante o vindeiro ano! +STR_NEWS_SERVICE_SUBSIDY_AWARDED_TRIPLE :{BIG_FONT}{BLACK}Subvención concedida a {STRING}!{}{}Polo servizo de transporte de {STRING} dende {STRING} ata {STRING} pagarase o triplo durante o vindeiro ano! +STR_NEWS_SERVICE_SUBSIDY_AWARDED_QUADRUPLE :{BIG_FONT}{BLACK}Subvención concedida a {STRING}!{}{}Polo servizo de transporte de {STRING} dende {STRING} ata {STRING} pagaráse o cuádruplo durante o vindeiro ano! -STR_NEWS_ROAD_REBUILDING :{BIG_FONT}{BLACK}¡Caos no tráfico de {TOWN}!{}{}¡O programa de reconstrución das estradas subvencionado por {STRING} trae 6 meses de miseria para os motoristas! +STR_NEWS_ROAD_REBUILDING :{BIG_FONT}{BLACK}Caos no tráfico de {TOWN}!{}{}O programa de reconstrución de estradas financiado por {STRING} trae 6 meses de miseria para os condutores! +STR_NEWS_EXCLUSIVE_RIGHTS_TITLE :{BIG_FONT}{BLACK}Monopolio de transportes! +STR_NEWS_EXCLUSIVE_RIGHTS_DESCRIPTION :{BIG_FONT}{BLACK}As autoridades locáis de {TOWN} asinan un contrato con {STRING} por un ano de dereitos de transporte exclusivos! # Extra view window STR_EXTRA_VIEW_PORT_TITLE :{WHITE}Vista {COMMA} -STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}Copiar a vista -STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}Copia a sitaución da vista global nesta vista -STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}Pegar desde punto de vista -STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}Pega a situación desta vista na vista global +STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}Copiar á vista +STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}Copia-la sitaución da vista principal a esta vista +STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}Pegar dende vista +STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}Pega-la a situación desta vista na vista principal # Game options window -STR_GAME_OPTIONS_CAPTION :{WHITE}Opcións da Partida +STR_GAME_OPTIONS_CAPTION :{WHITE}Opcións da partida STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Unidades monetarias STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Selección de unidades monetarias ############ start of currency region -STR_GAME_OPTIONS_CURRENCY_GBP :Libras (£) -STR_GAME_OPTIONS_CURRENCY_USD :Dólares ($) +STR_GAME_OPTIONS_CURRENCY_GBP :Libra esterlina (£) +STR_GAME_OPTIONS_CURRENCY_USD :Dólar americano ($) STR_GAME_OPTIONS_CURRENCY_EUR :Euro (€) -STR_GAME_OPTIONS_CURRENCY_JPY :Ien (¥) -STR_GAME_OPTIONS_CURRENCY_ATS :Chelín Austríaco (ATS) -STR_GAME_OPTIONS_CURRENCY_BEF :Franco Belga (BEF) -STR_GAME_OPTIONS_CURRENCY_CHF :Franco Suizo (CHF) -STR_GAME_OPTIONS_CURRENCY_CZK :Corona Checa (CZK) -STR_GAME_OPTIONS_CURRENCY_DEM :Marcos Alemáns (DEM) -STR_GAME_OPTIONS_CURRENCY_DKK :Corona Danesa (DKK) -STR_GAME_OPTIONS_CURRENCY_ESP :Peseta (ESP) -STR_GAME_OPTIONS_CURRENCY_FIM :Marco Finés (FIM) -STR_GAME_OPTIONS_CURRENCY_FRF :Franco (FRF) -STR_GAME_OPTIONS_CURRENCY_GRD :Dracma Grego (GRD) -STR_GAME_OPTIONS_CURRENCY_HUF :Florín Húngaro (HUF) -STR_GAME_OPTIONS_CURRENCY_ISK :Corona Islandesa (ISK) -STR_GAME_OPTIONS_CURRENCY_ITL :Lira Italiana (ITL) -STR_GAME_OPTIONS_CURRENCY_NLG :Florín Holandés (NLG) -STR_GAME_OPTIONS_CURRENCY_NOK :Corona Norueguesa (NOK) -STR_GAME_OPTIONS_CURRENCY_PLN :Zloty Polaco (PLN) -STR_GAME_OPTIONS_CURRENCY_RON :Leu Rumano (RON) -STR_GAME_OPTIONS_CURRENCY_RUR :Rublo Ruso (RUR) -STR_GAME_OPTIONS_CURRENCY_SIT :Tolar Esloveno (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 Brasileño (BRL) -STR_GAME_OPTIONS_CURRENCY_EEK :Corona Estona (EEK) +STR_GAME_OPTIONS_CURRENCY_JPY :Ien xaponés (¥) +STR_GAME_OPTIONS_CURRENCY_ATS :Chelín austríaco (ATS) +STR_GAME_OPTIONS_CURRENCY_BEF :Franco belga (BEF) +STR_GAME_OPTIONS_CURRENCY_CHF :Franco suízo (CHF) +STR_GAME_OPTIONS_CURRENCY_CZK :Coroa checa (CZK) +STR_GAME_OPTIONS_CURRENCY_DEM :Marco alemán (DEM) +STR_GAME_OPTIONS_CURRENCY_DKK :Coroa danesa (DKK) +STR_GAME_OPTIONS_CURRENCY_ESP :Peseta española (ESP) +STR_GAME_OPTIONS_CURRENCY_FIM :Marco finés (FIM) +STR_GAME_OPTIONS_CURRENCY_FRF :Franco francés (FRF) +STR_GAME_OPTIONS_CURRENCY_GRD :Dracma grego (GRD) +STR_GAME_OPTIONS_CURRENCY_HUF :Florín húngaro (HUF) +STR_GAME_OPTIONS_CURRENCY_ISK :Coroa islandesa (ISK) +STR_GAME_OPTIONS_CURRENCY_ITL :Lira italiana (ITL) +STR_GAME_OPTIONS_CURRENCY_NLG :Florín neerlandés (NLG) +STR_GAME_OPTIONS_CURRENCY_NOK :Coroa norueguesa (NOK) +STR_GAME_OPTIONS_CURRENCY_PLN :Złoty polaco (PLN) +STR_GAME_OPTIONS_CURRENCY_RON :Leu rumano (RON) +STR_GAME_OPTIONS_CURRENCY_RUR :Rublo ruso (RUR) +STR_GAME_OPTIONS_CURRENCY_SIT :Tolar esloveno (SIT) +STR_GAME_OPTIONS_CURRENCY_SEK :Coroa sueca (SEK) +STR_GAME_OPTIONS_CURRENCY_TRY :Lira turca (TRY) +STR_GAME_OPTIONS_CURRENCY_SKK :Coroa eslovaca (SKK) +STR_GAME_OPTIONS_CURRENCY_BRL :Real brasileiro (BRL) +STR_GAME_OPTIONS_CURRENCY_EEK :Coroa estona (EEK) +STR_GAME_OPTIONS_CURRENCY_LTL :Litas lituana (LTL) +STR_GAME_OPTIONS_CURRENCY_KRW :Wŏn surcoreano (KRW) +STR_GAME_OPTIONS_CURRENCY_ZAR :Rand sudafricano (ZAR) STR_GAME_OPTIONS_CURRENCY_CUSTOM :Persoal... +STR_GAME_OPTIONS_CURRENCY_GEL :Lari xeorxiano (GEL) +STR_GAME_OPTIONS_CURRENCY_IRR :Real iraniano (IRR) ############ end of currency region -STR_GAME_OPTIONS_MEASURING_UNITS_FRAME :{BLACK}Unidades de medida -STR_GAME_OPTIONS_MEASURING_UNITS_DROPDOWN_TOOLTIP :{BLACK}Selección das unidades de medida ############ start of measuring units region -STR_GAME_OPTIONS_MEASURING_UNITS_IMPERIAL :Imperial -STR_GAME_OPTIONS_MEASURING_UNITS_METRIC :Métrico -STR_GAME_OPTIONS_MEASURING_UNITS_SI :SI ############ 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 rodarán os vehículos +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 STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_RIGHT :Conducir pola dereita @@ -865,9 +934,9 @@ STR_GAME_OPTIONS_TOWN_NAME_FRENCH :Francés STR_GAME_OPTIONS_TOWN_NAME_GERMAN :Alemán STR_GAME_OPTIONS_TOWN_NAME_ADDITIONAL_ENGLISH :Inglés (Adicional) STR_GAME_OPTIONS_TOWN_NAME_LATIN_AMERICAN :Latino-Americano -STR_GAME_OPTIONS_TOWN_NAME_SILLY :Estúpido +STR_GAME_OPTIONS_TOWN_NAME_SILLY :Parvo STR_GAME_OPTIONS_TOWN_NAME_SWEDISH :Sueco -STR_GAME_OPTIONS_TOWN_NAME_DUTCH :Holandés +STR_GAME_OPTIONS_TOWN_NAME_DUTCH :Neerlandés STR_GAME_OPTIONS_TOWN_NAME_FINNISH :Finés STR_GAME_OPTIONS_TOWN_NAME_POLISH :Polaco STR_GAME_OPTIONS_TOWN_NAME_SLOVAK :Eslovaco @@ -883,40 +952,39 @@ STR_GAME_OPTIONS_TOWN_NAME_ITALIAN :Italiano STR_GAME_OPTIONS_TOWN_NAME_CATALAN :Catalán ############ end of townname region -STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Autograbado -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Selecciona o intervalo entre autograbados +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}Idioma -STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Selecciona o idioma para utilizar na interface - -STR_GAME_OPTIONS_FULLSCREEN :{BLACK}Pantalla Completa -STR_GAME_OPTIONS_FULLSCREEN_TOOLTIP :{BLACK}Marca nesta caixa para xogar a OpenTTD en modo de pantalla completa +STR_GAME_OPTIONS_LANGUAGE :{BLACK}Lingua +STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Selecciona a lingua para a interface -STR_GAME_OPTIONS_RESOLUTION :{BLACK}Resolución da pantalla -STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Selecciona a resolución de pantalla a utilizar -STR_GAME_OPTIONS_RESOLUTION_OTHER :outro +STR_GAME_OPTIONS_FULLSCREEN :{BLACK}Pantalla completa +STR_GAME_OPTIONS_FULLSCREEN_TOOLTIP :{BLACK}Marca esta opción para xogar a OpenTTD en modo de pantalla completa -STR_GAME_OPTIONS_SCREENSHOT_FORMAT :{BLACK}Formato capturas de pantalla -STR_GAME_OPTIONS_SCREENSHOT_FORMAT_TOOLTIP :{BLACK}Selecciona o formato a utilizar nas capturas de pantalla +STR_GAME_OPTIONS_RESOLUTION :{BLACK}Resolución de pantalla +STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Selecciona a resolución de pantalla a empregar +STR_GAME_OPTIONS_RESOLUTION_OTHER :outra 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 usar +STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Selecciona o conxunto de gráficos básico a empregar STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} arquivo{P "" s} inexistente{P "" s}/erróneo{P "" s} STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Información adicional sobre o conxunto de gráficos básico STR_GAME_OPTIONS_BASE_SFX :{BLACK}Conxunto de sons base -STR_GAME_OPTIONS_BASE_SFX_TOOLTIP :{BLACK}Selecciona o conxunto de sons base a usar +STR_GAME_OPTIONS_BASE_SFX_TOOLTIP :{BLACK}Selecciona o conxunto de sons base a empregar STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}Información adicional sobre o conxunto de sons base STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Conxunto de música base -STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Selecciona o conxunto de música base a usar -STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} arquivo{P "" s} corrompido{P "" s} +STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Selecciona o conxunto de música base a empregar +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_FULLSCREEN_FAILED :{WHITE}O modo de pantalla completa fallou @@ -925,55 +993,64 @@ STR_ERROR_FULLSCREEN_FAILED :{WHITE}O modo d STR_CURRENCY_WINDOW :{WHITE}Moeda persoalizada STR_CURRENCY_EXCHANGE_RATE :{LTBLUE}Taxa de cambio: {ORANGE}{CURRENCY_LONG} = £ {COMMA} -STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Disminuí-la cantidade da túa moeda por unha Libra Esterlina (£) -STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Incrementa-la cantidade da túa moeda por unha Libra Esterlina (£) -STR_CURRENCY_SET_EXCHANGE_RATE_TOOLTIP :{G=n}{BLACK}Configura-lo cambio da túa moeda por unha Libra Esterlina (£) +STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Disminuí-la cantidade da túa moeda por unha Libra esterlina (£) +STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Incrementa-la cantidade da túa moeda por unha Libra esterlina (£) +STR_CURRENCY_SET_EXCHANGE_RATE_TOOLTIP :{G=n}{BLACK}Configura-lo cambio da túa moeda por unha Libra esterlina (£) STR_CURRENCY_SEPARATOR :{LTBLUE}Separador: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_SEPARATOR_TOOLTIP :{BLACK}Configura-lo separador para a túa moeda STR_CURRENCY_PREFIX :{LTBLUE}Prefixo: {ORANGE}{STRING} -STR_CURRENCY_SET_CUSTOM_CURRENCY_PREFIX_TOOLTIP :{BLACK}Configura-la cadea de prefixo para a túa moeda +STR_CURRENCY_SET_CUSTOM_CURRENCY_PREFIX_TOOLTIP :{BLACK}Configura-lo prefixo para a túa moeda STR_CURRENCY_SUFFIX :{LTBLUE}Sufixo: {ORANGE}{STRING} -STR_CURRENCY_SET_CUSTOM_CURRENCY_SUFFIX_TOOLTIP :{BLACK}Configura-la cadea de sufixo para a túa moeda +STR_CURRENCY_SET_CUSTOM_CURRENCY_SUFFIX_TOOLTIP :{BLACK}Configura-lo sufixo para a túa moeda STR_CURRENCY_SWITCH_TO_EURO :{LTBLUE}Cambiar a Euro: {ORANGE}{NUM} -STR_CURRENCY_SWITCH_TO_EURO_NEVER :{LTBLUE}Camiar a Euro: {ORANGE}nunca -STR_CURRENCY_SET_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Selecciona o ano no que se cambiará ó Euro -STR_CURRENCY_DECREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Cambiar ó Euro máis pronto -STR_CURRENCY_INCREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Cambiar ó Euro máis tarde +STR_CURRENCY_SWITCH_TO_EURO_NEVER :{LTBLUE}Cambiar a Euro: {ORANGE}nunca +STR_CURRENCY_SET_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Selecciona o ano no que se cambiará ao Euro +STR_CURRENCY_DECREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Cambiar ao Euro máis pronto +STR_CURRENCY_INCREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Cambiar ao Euro máis tarde STR_CURRENCY_PREVIEW :{LTBLUE}Vista previa: {ORANGE}{CURRENCY_LONG} -STR_CURRENCY_CUSTOM_CURRENCY_PREVIEW_TOOLTIP :{BLACK}10000 Libras Esterlinas (£) na túa moeda +STR_CURRENCY_CUSTOM_CURRENCY_PREVIEW_TOOLTIP :{BLACK}10000 Libras esterlinas (£) na túa moeda STR_CURRENCY_CHANGE_PARAMETER :{BLACK}Cambiar o parámetro de moeda personalizada STR_DIFFICULTY_LEVEL_SETTING_MAXIMUM_NO_COMPETITORS :{LTBLUE}Nº máximo de opoñentes: {ORANGE}{COMMA} STR_NONE :Ningún -STR_NUM_VERY_LOW :Moi Baixo +STR_FUNDING_ONLY :Só fundadas +STR_MINIMAL :Mínimo +STR_NUM_VERY_LOW :Moi baixo STR_NUM_LOW :Baixo STR_NUM_NORMAL :Normal STR_NUM_HIGH :Alto -STR_NUM_CUSTOM :Persoalizado +STR_NUM_CUSTOM :Personalizado +STR_NUM_CUSTOM_NUMBER :Personalizado ({NUM}) STR_VARIETY_NONE :Ningunha -STR_VARIETY_VERY_LOW :Moi Baixa +STR_VARIETY_VERY_LOW :Moi baixa STR_VARIETY_LOW :Baixa STR_VARIETY_MEDIUM :Media STR_VARIETY_HIGH :Alta -STR_VARIETY_VERY_HIGH :Moi Alta +STR_VARIETY_VERY_HIGH :Moi alta -STR_AI_SPEED_VERY_SLOW :Moi Lento +STR_AI_SPEED_VERY_SLOW :Moi lento STR_AI_SPEED_SLOW :Lento STR_AI_SPEED_MEDIUM :Medio STR_AI_SPEED_FAST :Rápido -STR_AI_SPEED_VERY_FAST :Moi Rápido +STR_AI_SPEED_VERY_FAST :Moi rápido -STR_SEA_LEVEL_VERY_LOW :Moi Baixo +STR_SEA_LEVEL_VERY_LOW :Moi baixo STR_SEA_LEVEL_LOW :Baixo STR_SEA_LEVEL_MEDIUM :Medio STR_SEA_LEVEL_HIGH :Alto +STR_SEA_LEVEL_CUSTOM :Personalizado +STR_SEA_LEVEL_CUSTOM_PERCENTAGE :Personalizado ({NUM}%) +STR_RIVERS_NONE :Ningún +STR_RIVERS_FEW :Poucos +STR_RIVERS_MODERATE :Medio +STR_RIVERS_LOT :Moitos STR_DISASTER_NONE :Ningún STR_DISASTER_REDUCED :Reducido @@ -993,18 +1070,43 @@ STR_CITY_APPROVAL_PERMISSIVE :Permisiva STR_CITY_APPROVAL_TOLERANT :Tolerante 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}Opcións Avanzadas - - +STR_CONFIG_SETTING_CAPTION :{WHITE}Configuración avanzada +STR_CONFIG_SETTING_FILTER_TITLE :{BLACK}Filtrar texto: +STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}Expandir todos +STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}Minimizar todos +STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT :(sen explicación dispoñíbel) +STR_CONFIG_SETTING_DEFAULT_VALUE :{LTBLUE}Valor por defecto: {ORANGE}{STRING} +STR_CONFIG_SETTING_TYPE :{LTBLUE}Tipo de configuración: {ORANGE}{STRING} +STR_CONFIG_SETTING_TYPE_CLIENT :Configuración de cliente (non se almacena nas partidas gravadas; afecta a tódalas partidas) +STR_CONFIG_SETTING_TYPE_GAME_MENU :Configuración da partida (almacénase nas partidas gravadas; afecta só ás novas partidas) +STR_CONFIG_SETTING_TYPE_GAME_INGAME :Configuración da partida (almacénase nas partidas gravadas; afecta só á partida actual) +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_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 +STR_CONFIG_SETTING_RESTRICT_ALL :Configuración experta / tódalas configuracións +STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :Axustes cun valor diferente ao por defecto +STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :Axustes cun valor diferente á túa nova configuración + +STR_CONFIG_SETTING_TYPE_DROPDOWN_HELPTEXT :{BLACK}Restrinxe a seguinte a certos tipos de configuracións +STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :Tódalas configuracións +STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :Configuración de cliente (non se almacena nas partidas gravadas; afecta a tódalas partidas) +STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Configuración da partida (almacénase nas partidas gravadas; afecta só ás novas partidas) +STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Configuración da partida (almacénase nas partidas gravadas; afecta só á partida actual) +STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Configuración da compañía (almacénase nas partidas gravadas; afecta só ás novas partidas) +STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Configuración da compañía (almacénase nas partidas gravadas; afecta só á partida actual) STR_CONFIG_SETTING_OFF :Off STR_CONFIG_SETTING_ON :On -STR_CONFIG_SETTING_DISABLED :deshabilitado +STR_CONFIG_SETTING_DISABLED :Deshabilitado STR_CONFIG_SETTING_COMPANIES_OFF :Off -STR_CONFIG_SETTING_COMPANIES_OWN :Propia Compañía +STR_CONFIG_SETTING_COMPANIES_OWN :Propia compañía STR_CONFIG_SETTING_COMPANIES_ALL :Tódalas compañías STR_CONFIG_SETTING_NONE :Ningún @@ -1015,260 +1117,586 @@ STR_CONFIG_SETTING_HORIZONTAL_POS_LEFT :Esquerda STR_CONFIG_SETTING_HORIZONTAL_POS_CENTER :Centro STR_CONFIG_SETTING_HORIZONTAL_POS_RIGHT :Dereita - -STR_CONFIG_SETTING_BUILDONSLOPES :Permiti-la construción en rampas e costas: {STRING} -STR_CONFIG_SETTING_AUTOSLOPE :Permitir terraformación baixo edificios, pistas, etc. (autopendente): {STRING} -STR_CONFIG_SETTING_CATCHMENT :Permitir áreas de captura máis realistas: {STRING} -STR_CONFIG_SETTING_EXTRADYNAMITE :Permiti-la eliminación de máis estradas, etc... das cidades: {STRING} +STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN :Crédito máximo inicial: {STRING} +STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Cantidade máxima de cartos que unha compañía pode pedir (sen ter en conta a inflación) +STR_CONFIG_SETTING_INTEREST_RATE :Taxa de interés: {STRING} +STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :A taxa de interés do préstamo; controla tamén a inflación, se está activada +STR_CONFIG_SETTING_RUNNING_COSTS :Custos de explotación: {STRING} +STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT :Fixa o nivel de mantemento e custo de operación de vehículos e infraestrutura +STR_CONFIG_SETTING_CONSTRUCTION_SPEED :Velocidade de construción: {STRING} +STR_CONFIG_SETTING_CONSTRUCTION_SPEED_HELPTEXT :Limita a cantidade de accións construtivas das IAs +STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS :Avarías en vehículos: {STRING} +STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS_HELPTEXT :Controla a frecuencia coa que os vehículos mantidos inadecuadamente se avarían +STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER :Multiplicador das subvencións: {STRING} +STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT :Fixa canto se paga polas conexións subvencionadas +STR_CONFIG_SETTING_CONSTRUCTION_COSTS :Custos de construción: {STRING} +STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :Fixa o nivel de custos de construción e compra +STR_CONFIG_SETTING_RECESSIONS :Recesións económicas: {STRING} +STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Se está activado, a economía pode entrar en recesión cada poucos anos. Durante unha recesión tódalas producións son significativamente máis baixas (volvendo ao nivel anterior cando a recesión remata) +STR_CONFIG_SETTING_TRAIN_REVERSING :Prohibir cambio de sentido de trens nas estacións: {STRING} +STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :Se está activado, os trens non poderán cambiar de sentido en estacións pasantes, aínda que o camiño ao seu próximo destino fose máis curto cambiando de sentido +STR_CONFIG_SETTING_DISASTERS :Desastres: {STRING} +STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Activa os desastres, que ocasionalmente poderían bloquear ou destruír vehículos ou infraestrutura +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_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} +STR_CONFIG_SETTING_CATCHMENT_HELPTEXT :Áreas de influencia e captación de diferentes tamaños para os diferentes tipos de estacións e aeroportos +STR_CONFIG_SETTING_EXTRADYNAMITE :Permiti-la eliminación de máis estradas, pontes e túneis de titularidade municipal: {STRING} +STR_CONFIG_SETTING_EXTRADYNAMITE_HELPTEXT :Facilita a destrución de infraestrutura e edificacións de titularidade municipal +STR_CONFIG_SETTING_TRAIN_LENGTH :Lonxitude máxima dos trens: {STRING} +STR_CONFIG_SETTING_TRAIN_LENGTH_HELPTEXT :Fixa a máxima lonxitude dos trens +STR_CONFIG_SETTING_TILE_LENGTH :{COMMA} cadro{P 0 "" s} +STR_CONFIG_SETTING_SMOKE_AMOUNT :Cantidade de fume/chispas producida por vehículos: {STRING} +STR_CONFIG_SETTING_SMOKE_AMOUNT_HELPTEXT :Controla canto fume e cantas chispas emiten os vehículos STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL :Modelo de aceleración dos trens: {STRING} -STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL :Modelo de aceleración para camións/buses: {STRING} -STR_CONFIG_SETTING_FORBID_90_DEG :Prohibir os trens e os barcos xirar 90º: {STRING} +STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL_HELPTEXT :Selecciona o modelo físico de aceleración dos trens. O modelo "orixinal" penaliza as pendentes do mesmo xeito para tódolos vehículos. O modelo "realista" penaliza pendentes e curvas en función de varias propiedades da composición, coma a lonxitude e o esforzo tractor +STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL :Modelo de aceleración para vehículos de estrada: {STRING} +STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL_HELPTEXT :Selecciona o modelo físico de aceleración dos vehículos de carretera. O modelo "orixinal" penaliza as pendentes do mesmo xeito para tódolos vehículos. O modelo "realista" penaliza pendentes e curvas en función de varias propiedades do motor, por exemplo, o esforzo tractor +STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS :Inclinación das pendentes para os trens: {STRING} +STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS_HELPTEXT :Inclinación dun cadro en pendente para un tren. Valores máis elevados dificultan ascender unha colina +STR_CONFIG_SETTING_PERCENTAGE :{COMMA}% +STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS :Inclinación das pendentes para os vehículos de carretera: {STRING} +STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS_HELPTEXT :Inclinación dun cadro en pendente para un vehículo de carretera. Valores máis elevados dificultan ascender unha colina +STR_CONFIG_SETTING_FORBID_90_DEG :Prohibir xiros de 90° a trens e barcos: {STRING} +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_IMPROVEDLOAD :Usa-lo algoritmo de carga mellorado: {STRING} -STR_CONFIG_SETTING_GRADUAL_LOADING :Cargar vehículos gradualmente: {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_INFLATION :Inflación: {STRING} -STR_CONFIG_SETTING_SELECTGOODS :Descarga-la carga só cando haxa demanda: {STRING} -STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :Método de construción de industrias primarias: {STRING} -STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :ningún -STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :coma outras industrias -STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :prospección +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_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_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} +STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_HELPTEXT :Forma de financiar unha industria primaria. 'Ningún' significa que non é posíbel financiar ningunha, 'Prospección' significa que a financiación é posíbel, mais a construcion ten lugar nun punto aleatorio do mapa e pode fallar tamén. 'Coma as outras industrias' significa que as industrias de materias primas poden ser construidas polas compañias igual que as industrias transformadoras na posición desexada +STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :Ningún +STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :Coma as outras industrias +STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :Prospección +STR_CONFIG_SETTING_INDUSTRY_PLATFORM :Área plana ao redor das industrias: {STRING} +STR_CONFIG_SETTING_INDUSTRY_PLATFORM_HELPTEXT :Cantidade de espazo chan ao redor dunha industria. Isto asegura que quedará espazo vacío ao redor da industria para construir vías, etcétera STR_CONFIG_SETTING_MULTIPINDTOWN :Permitir múltiples industrias similares en cada cidade: {STRING} -STR_CONFIG_SETTING_SHOWFINANCES :Mostra-la fiestra de finanzas ó final do ano: {STRING} +STR_CONFIG_SETTING_MULTIPINDTOWN_HELPTEXT :Normalmente, unha cidade non quere máis dunha industria de cada tipo. Con esta configuración, permitiranse varias industrias do mesmo tipo na mesma cidade +STR_CONFIG_SETTING_SIGNALSIDE :Amosar sinais: {STRING} +STR_CONFIG_SETTING_SIGNALSIDE_HELPTEXT :Selecciona a que lado das vías se colocan os sinais +STR_CONFIG_SETTING_SIGNALSIDE_LEFT :Á esquerda +STR_CONFIG_SETTING_SIGNALSIDE_DRIVING_SIDE :No lado da condución +STR_CONFIG_SETTING_SIGNALSIDE_RIGHT :Á dereita +STR_CONFIG_SETTING_SHOWFINANCES :Mostra-la fiestra de finanzas ao final do ano: {STRING} +STR_CONFIG_SETTING_SHOWFINANCES_HELPTEXT :Se se activa, a ventá de finanzas aparece ao final de cada ano para permitir unha inspección doada do estado financiero da compañía STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :As novas ordes son 'sen parada' por defecto: {STRING} -STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :final cercano +STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT_HELPTEXT :Normalmente, un vehículo parará en cada estación pola que pase, Activando esta opción, pasará por cada estación no camiño ata o seu destino final sen paradas. Ten en conta que esta opción só define un valor por defecto para as novas ordes. Pódense fixar ordes individuáis explícitamente para cada comportamento en calquera caso +STR_CONFIG_SETTING_STOP_LOCATION :Os trens paran por defecto no {STRING} do andén +STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :Lugar onde un tren parará por defecto no andén. 'Extremo cercano' significa preto do punto de entrada, 'medio' significa no medio do andén e 'extremo lonxano' significa alonxado do punto de entrada. Ten en conta que esta configuración só define un valor por defecto para as novas ordes. Pódense dar ordes individuáis explícitas para cada comportamento en calquera caso. +STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :extremo cercano STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :medio -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING :Cola para vehículos de estrada (con efectos cuánticos): {STRING} +STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :extremo lonxano STR_CONFIG_SETTING_AUTOSCROLL :Desplaza-la fiestra cando o ratón esté no borde: {STRING} -STR_CONFIG_SETTING_BRIBE :Permiti-la chantaxe as autoridades locales: {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 +STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT_FULLSCREEN :Vista principal e pantalla completa únicamente +STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT :Vista principal +STR_CONFIG_SETTING_AUTOSCROLL_EVERY_VIEWPORT :Tódalas vistas +STR_CONFIG_SETTING_BRIBE :Permiti-lo soborno ás autoridades locales: {STRING} +STR_CONFIG_SETTING_BRIBE_HELPTEXT :Permite ás compañías intentar sobornar á autoridade local. Se o soborno é descuberto por un inspector, a compañía non poderá actuar na cidade durante seis meses STR_CONFIG_SETTING_ALLOW_EXCLUSIVE :Permiti-la compra de dereitos de transporte exclusivos: {STRING} +STR_CONFIG_SETTING_ALLOW_EXCLUSIVE_HELPTEXT :Se unha compañía compar os dereitos de transporte exclusivos nunha cidade, as estacións dos opoñentes (pasaxeiros e mercadorías) non recibirán ningunha carga durante un ano enteiro +STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS :Permitir a financiación de edicifios: {STRING} +STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS_HELPTEXT :Permite ás compañías dar cartos ás cidades para finiacia-la construción de novos edificios +STR_CONFIG_SETTING_ALLOW_FUND_ROAD :Permitira a financiación da reconstrución das estradas locáis: {STRING} +STR_CONFIG_SETTING_ALLOW_FUND_ROAD_HELPTEXT :Permite ás compañías dar cartos ás cidades para a reconstrución de estradas saboteando os servizos de transporte por carretera na cidade STR_CONFIG_SETTING_ALLOW_GIVE_MONEY :Permiti-lo envío de diñeiro a outras compañías: {STRING} +STR_CONFIG_SETTING_ALLOW_GIVE_MONEY_HELPTEXT :Permite transferencias de diñeiro entre compañías en modo multixogador STR_CONFIG_SETTING_FREIGHT_TRAINS :Multiplicador de peso para carga para simular trens pesados: {STRING} -STR_CONFIG_SETTING_PLANE_CRASHES :Nº de accidentes de avión: {STRING} -STR_CONFIG_SETTING_PLANE_CRASHES_NONE :ningún -STR_CONFIG_SETTING_PLANE_CRASHES_REDUCED :reducido -STR_CONFIG_SETTING_PLANE_CRASHES_NORMAL :normal -STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Permiti-la construción de estacións pasantes nas rúas das cidades: {STRING} -STR_CONFIG_SETTING_ADJACENT_STATIONS :Permiti-la construción de estacións contiguas: {STRING} -STR_CONFIG_SETTING_DYNAMIC_ENGINES :Activar motor para múltiples NewGRF: {STRING} -STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}Non é posible cambiar esta opción cando hai vehículos. +STR_CONFIG_SETTING_FREIGHT_TRAINS_HELPTEXT :Fixa o impacto de transportar carga por ferrocarril. Un valor máis alto fai que levar a carga sexa máis dificultoso para os trens, especialmente nas rampas +STR_CONFIG_SETTING_PLANE_SPEED :Factor de velocidade para avións: {STRING} +STR_CONFIG_SETTING_PLANE_SPEED_HELPTEXT :Fixa a velocidade relativa dos avións comparada coa dos outros tipos de vehículos, para reduci-los ingresos do transporte aéreo +STR_CONFIG_SETTING_PLANE_SPEED_VALUE :1 / {COMMA} +STR_CONFIG_SETTING_PLANE_CRASHES :Número de accidentes de avión: {STRING} +STR_CONFIG_SETTING_PLANE_CRASHES_HELPTEXT :Fixa a posibilidade de que ocorra un accidente aéreo +STR_CONFIG_SETTING_PLANE_CRASHES_NONE :Ningún +STR_CONFIG_SETTING_PLANE_CRASHES_REDUCED :Reducido +STR_CONFIG_SETTING_PLANE_CRASHES_NORMAL :Normal +STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Permiti-la construción de estacións pasantes nas rúas de titularidade municipal: {STRING} +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_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 STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :Os aeroportos nunca caducan: {STRING} - -STR_CONFIG_SETTING_ORDER_REVIEW :Revisa-las ordes do vehículo: {STRING} -STR_CONFIG_SETTING_ORDER_REVIEW_OFF :non -STR_CONFIG_SETTING_ORDER_REVIEW_EXDEPOT :si, pero exclúe os vehículos parados -STR_CONFIG_SETTING_ORDER_REVIEW_ON :de tódolos vehículos +STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS_HELPTEXT :Activar esta opción fai que cada tipo de aeroporto siga estando dispoñíbel para sempre dende a súa aparición + +STR_CONFIG_SETTING_WARN_LOST_VEHICLE :Avisar se un vehículo se perde {STRING} +STR_CONFIG_SETTING_WARN_LOST_VEHICLE_HELPTEXT :Xera mensaxes acerca de vehículos que non son capaces de atopar un camiño ata o seu destino +STR_CONFIG_SETTING_ORDER_REVIEW :Revisa-las ordes dos vehículos: {STRING} +STR_CONFIG_SETTING_ORDER_REVIEW_HELPTEXT :Cando se activa, as ordes dos vehículos son comprobadas periodicamente, e se informa cunha mensaxe cando se detectan algúns problemas obvios +STR_CONFIG_SETTING_ORDER_REVIEW_OFF :Non +STR_CONFIG_SETTING_ORDER_REVIEW_EXDEPOT :Si, mais exclúe os vehículos parados +STR_CONFIG_SETTING_ORDER_REVIEW_ON :De tódolos vehículos STR_CONFIG_SETTING_WARN_INCOME_LESS :Avisar se os ingresos dun vehículo son negativos: {STRING} +STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :Cando se activa, envíase unha mensaxe cando un vehículo non xerara ningún beneficio durante un ano STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Os vehículos nunca caducan: {STRING} -STR_CONFIG_SETTING_AUTORENEW_VEHICLE :Autorenova-los vehículos cando envellezan: {STRING} +STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :Cando se activa, tódolos modelos de vehículos seguen a estar dispoñíbeis para sempre dende a súa aparición +STR_CONFIG_SETTING_AUTORENEW_VEHICLE :Autorenova-los vehículos cando vaian vellos: {STRING} +STR_CONFIG_SETTING_AUTORENEW_VEHICLE_HELPTEXT :Cando se activa, un vehículo que se achega ao fin da súa vida útil é reemprazado automáticamente se se cumplen as condicións de renovación +STR_CONFIG_SETTING_AUTORENEW_MONTHS :Autorenovar vehículos {STRING} da idade máxima +STR_CONFIG_SETTING_AUTORENEW_MONTHS_HELPTEXT :Idade relativa na que un vehículo debería ser considerado para a auto-renovación +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} despois STR_CONFIG_SETTING_AUTORENEW_MONEY :Diñeiro mínimo necesario para a autorenovación: {STRING} -STR_CONFIG_SETTING_POPULATION_IN_LABEL :Mostra-la poboación da cidade na etiqueta: {STRING} - -STR_CONFIG_SETTING_LAND_GENERATOR :Xerador de mapas: {STRING} +STR_CONFIG_SETTING_AUTORENEW_MONEY_HELPTEXT :Cantidade mínima de diñeiro que debe quedar no banco antes de considerar auto-renovar vehículos +STR_CONFIG_SETTING_ERRMSG_DURATION :Duración das mesaxes de erro: {STRING} +STR_CONFIG_SETTING_ERRMSG_DURATION_HELPTEXT :Duración das mesaxes de erro que aparecen nunha ventá vermella. Ten en conta que algunhas mesaxes de errores (críticos) non se pechan automáticamente despois deste tempo, senón que deben ser pechadas manualmente +STR_CONFIG_SETTING_ERRMSG_DURATION_VALUE :{COMMA} segundo{P 0 "" s} +STR_CONFIG_SETTING_HOVER_DELAY :Amosar consellos sobre as ferramentas: {STRING} +STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Retardo antes de que os consellos aparezan ao despraza-lo rato sobre algúns elementos da interface. Alternativamente, os consellos poden ser asignados ao botón dereito do rato +STR_CONFIG_SETTING_HOVER_DELAY_VALUE :Manter punteiro {COMMA} segundo{P 0 "" s} +STR_CONFIG_SETTING_HOVER_DELAY_DISABLED :Clic dereito +STR_CONFIG_SETTING_POPULATION_IN_LABEL :Mostra-la poboación da cidade na etiqueta do seu nome: {STRING} +STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :Amosa a poboación das cidades na súa etiqueta sobre o mapa +STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :Grosor das liñas dos gráficos: {STRING} +STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Ancho de liña nos gráficos. Unha liña fina lese con máis precisión, unha liña grosa é máis doada de ver e as cores son máis fáciles de distinguir + +STR_CONFIG_SETTING_LAND_GENERATOR :Xerador de terreo: {STRING} STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :Orixinal STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis -STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Altura da liña de neve: {STRING} +STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Distancia máxima das refinarías ao borde do mundo: {STRING} +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_VERY_SMOOTH :Moi Chairo -STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :Chairo +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_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :Moi escabroso STR_CONFIG_SETTING_TREE_PLACER :Algoritmo de colocación de árbores: {STRING} 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_HEIGHTMAP_ROTATION :Rotación do mapa de altura: {STRING} -STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :Esquerda -STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :Dereita -STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :Nivel de altitude dun escenario chairo: {STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES :Activa-la terraformación nos bordes do mapa: {STRING} - +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_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 + +STR_CONFIG_SETTING_STATION_SPREAD :Tamaño máximo de estación: {STRING} +STR_CONFIG_SETTING_STATION_SPREAD_HELPTEXT :Área máxima que pode ocupar unha estación. Ten en conta que valores altos ralentizarán o xogo STR_CONFIG_SETTING_SERVICEATHELIPAD :Face-lo servizo ós helicópteros no heliporto automáticam.: {STRING} -STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR :Unir barra de paisaxe as barras de raíl/estrada/auga/aeroporto: {STRING} -STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR :Cor para o terreo usado no mapa pequeno: {STRING} +STR_CONFIG_SETTING_SERVICEATHELIPAD_HELPTEXT :Servizo aos helicópteros despois de cada aterraxe, incluso se non hai un depósito no aeroporto +STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR :Unir a barra de paisaxe ás barras de vía/estrada/auga/aeroporto: {STRING} +STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR_HELPTEXT :Cando se abre unha barra de construción para un tipo de transporte, tamén se abre a barra de modificar paisaxe +STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR :Cor para o terreo usado no minimapa: {STRING} +STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :Cor do terreo no minimapa STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :Verde STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :Verde escuro STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Violeta STR_CONFIG_SETTING_REVERSE_SCROLLING :Inverti-la dirección de desprazamento: {STRING} +STR_CONFIG_SETTING_REVERSE_SCROLLING_HELPTEXT :Acción cando o mapa se despraza co botón dereito do rato. Cando se desactiva, o rato move a cámara. Cando se activa, o rato move o mapa STR_CONFIG_SETTING_SMOOTH_SCROLLING :Desprazamento de vista suave: {STRING} -STR_CONFIG_SETTING_MEASURE_TOOLTIP :Mostra-la medida cando se usen as ferramentas de construír: {STRING} +STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Controla como a vista principal se despraza a unah posición específica cando se fai clic no minimapa ou cando se emprega un comando para desprazarse a un obxecto específico sobre o mapa. Se se activa, a vista desprázase suavemente, se se desactiva salta directamente +STR_CONFIG_SETTING_MEASURE_TOOLTIP :Mostrar medidas ao usar as ferramentas de construción: {STRING} +STR_CONFIG_SETTING_MEASURE_TOOLTIP_HELPTEXT :Amosa as distancias en cadros e as diferencias de cota ao arrastrar durante as operacións de construción STR_CONFIG_SETTING_LIVERIES :Mostrar esquemas de cor das compañías: {STRING} +STR_CONFIG_SETTING_LIVERIES_HELPTEXT :Uso de esquemas de cor específicos para vehículos (en oposición a esquemas de cor da compañía) STR_CONFIG_SETTING_LIVERIES_NONE :Ningunha -STR_CONFIG_SETTING_LIVERIES_OWN :Propia Compañía +STR_CONFIG_SETTING_LIVERIES_OWN :Propia compañía STR_CONFIG_SETTING_LIVERIES_ALL :Tódalas compañías -STR_CONFIG_SETTING_PREFER_TEAMCHAT :Charla de equipo o pulsar : {STRING} +STR_CONFIG_SETTING_PREFER_TEAMCHAT :Preferencias de charla de equipo ao pulsar : {STRING} +STR_CONFIG_SETTING_PREFER_TEAMCHAT_HELPTEXT :Cambia a asignación de chat interno da compañía ou público ás teclas resp. STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING :Función da roda do rato: {STRING} +STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING_HELPTEXT :Habilitar desprazamento con rodas de rado bidimensionais STR_CONFIG_SETTING_SCROLLWHEEL_ZOOM :Zoom no mapa STR_CONFIG_SETTING_SCROLLWHEEL_SCROLL :Desprazar mapa STR_CONFIG_SETTING_SCROLLWHEEL_OFF :Desconectado STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER :Velocidade de desprazamento do mapa: {STRING} +STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER_HELPTEXT :Controla a sensibilidade do desprazamento coa roda do rato +STR_CONFIG_SETTING_OSK_ACTIVATION :Teclado en pantalla: {STRING} +STR_CONFIG_SETTING_OSK_ACTIVATION_HELPTEXT :Selecciona o método para abrir o teclado en pantalla para introducir texto nos cadros editables usando o dispositivo sinalador exclusivamente. Para pequenos dispositivos sen teclado real +STR_CONFIG_SETTING_OSK_ACTIVATION_DISABLED :Deshabilitado +STR_CONFIG_SETTING_OSK_ACTIVATION_DOUBLE_CLICK :Dobre clic +STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK_FOCUS :Clic sinxelo (centrado) +STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK :Clic sinxelo (inmediatamente) STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU :Emulación do botón dereito: {STRING} -STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Tecla Command -STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Tecla Control +STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_HELPTEXT :Selecciona o método para emular clics co botón dereito do rato +STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Tecla Command+Clic +STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Ctrl+Clic 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_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 :corto (31-12-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_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 +STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_HELPTEXT :Selecciona que accións poderán ser realizadas cando a partida estea pausada +STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :Sen accións +STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_CONSTRUCTION :Tódalas accións non construtivas +STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_LANDSCAPING :Tódalas accións excepto as referidas a modificacións da paisaxe +STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_ACTIONS :Tódalas accións STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Usa-la lista avanzada de vehículos: {STRING} +STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Habilita-lo uso da lista avanzada de vehículos para agrupalos STR_CONFIG_SETTING_LOADING_INDICATORS :Usar indicadores de carga: {STRING} -STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :Mostra-lo horario en ticks en lugar de días: {STRING} +STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :Escolle se os indicadores de carga se amosan sobre os vehículos en carga/descarga +STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :Mostra-lo horario en ticks en lugar de en días: {STRING} +STR_CONFIG_SETTING_TIMETABLE_IN_TICKS_HELPTEXT :Mostra-los tempos de viaxe nos horarios en ticks en vez de en días +STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE :Mostrar chegada e saída nos horarios: {STRING} +STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE_HELPTEXT :Amosar chegadas e saídas anticipadas nos horarios STR_CONFIG_SETTING_QUICKGOTO :Creación rápida de ordes para vehículos: {STRING} -STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE :Raíl por defecto (nova partida/cargar partida): {STRING} -STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_FIRST :Primeiro dispoñible -STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_LAST :Último dispoñible -STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_MOST_USED :Máis usado +STR_CONFIG_SETTING_QUICKGOTO_HELPTEXT :Pre-selecciona o cursor "ir a" cando se abre a ventá de ordes +STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE :Carril por defecto (despois denova partida/cargar partida): {STRING} +STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_HELPTEXT :Tipo de carril seleccionado despois de comezar ou cargar unha partida. "o primeiro dispoñíbel" selecciona o tipo de vías máis antigo, "último dispoñíbel" selecciona o último dispoñíbel e "o máis usado" selecciona o tipo que se está a usar máis +STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_FIRST :O primeiro dispoñíbel +STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_LAST :O último dispoñíbel +STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_MOST_USED :O máis usado STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :Mostra-las vías reservadas: {STRING} - - -STR_CONFIG_SETTING_MAX_TRAINS :Nº máximo de trens por xogador: {STRING} -STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :Nº máximo de vehículos de estrada por xogador: {STRING} -STR_CONFIG_SETTING_MAX_AIRCRAFT :Nº máximo de avións por xogador: {STRING} -STR_CONFIG_SETTING_MAX_SHIPS :Nº máximo de barcos por xogador: {STRING} +STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION_HELPTEXT :Usa unha cor distinta para as vías reservadas para axudar en problemas de trens que refusan entrar en bloques baseados en rutas +STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :Mante-las ferramentas de construcción activas tralo uso: {STRING} +STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Mante-las ferramentas de construción abertas para pontes, túneis, etc. tralo uso +STR_CONFIG_SETTING_EXPENSES_LAYOUT :Agrupa-los gastos na ventá de finanzas da compañía: {STRING} +STR_CONFIG_SETTING_EXPENSES_LAYOUT_HELPTEXT :Define a apariencia da ventá de gastos da compañía + +STR_CONFIG_SETTING_SOUND_TICKER :Son coas novas: {STRING} +STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :Reproducir son para as mensaxes abreviadas de novas +STR_CONFIG_SETTING_SOUND_NEWS :Xornal: {STRING} +STR_CONFIG_SETTING_SOUND_NEWS_HELPTEXT :Reproducir son coas novas do xornal +STR_CONFIG_SETTING_SOUND_NEW_YEAR :Fin do ano: {STRING} +STR_CONFIG_SETTING_SOUND_NEW_YEAR_HELPTEXT :Reproducir un son ao final dun ano, comparando o resultado anual da empresa co do ano anterior +STR_CONFIG_SETTING_SOUND_CONFIRM :Construción: {STRING} +STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT :Reproducir son para construcións rematadas exitosamente ou outras accións +STR_CONFIG_SETTING_SOUND_CLICK :Click nos botóns: {STRING} +STR_CONFIG_SETTING_SOUND_CLICK_HELPTEXT :Pitar cando se fai click nos botóns +STR_CONFIG_SETTING_SOUND_DISASTER :Desastres/accidentes: {STRING} +STR_CONFIG_SETTING_SOUND_DISASTER_HELPTEXT :Reproducir son para accidentes e desastres +STR_CONFIG_SETTING_SOUND_VEHICLE :Vehículos: {STRING} +STR_CONFIG_SETTING_SOUND_VEHICLE_HELPTEXT :Reproducir efectos de son dos vehículos +STR_CONFIG_SETTING_SOUND_AMBIENT :Son ambiente: {STRING} +STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :Reproducir efectos de son ambiente de paisaxe, industrias e cidades + +STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING :Desactivar construción de infraestruturas cando non haxa vehículos adecuados dispoñíbels: {STRING} +STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING_HELPTEXT :Cando estea activado, unha infraestrutura estará dispoñíbel se hai tamén vehículos dispoñíbels, previndo desperdicios de tempo e cartos nunha infraestrutura inutilizábel +STR_CONFIG_SETTING_MAX_TRAINS :Número máximo de trens por xogador: {STRING} +STR_CONFIG_SETTING_MAX_TRAINS_HELPTEXT :Número máximo de trens que unha compañía pode ter +STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :Número máximo de vehículos de estrada por compañía: {STRING} +STR_CONFIG_SETTING_MAX_ROAD_VEHICLES_HELPTEXT :Número máximo de vehículos de estrada que unha compañía pode ter +STR_CONFIG_SETTING_MAX_AIRCRAFT :Número máximo de avións por compañía: {STRING} +STR_CONFIG_SETTING_MAX_AIRCRAFT_HELPTEXT :Número máximo de avíons que unha compañía pode ter +STR_CONFIG_SETTING_MAX_SHIPS :Número máximo de navíos por compañía: {STRING} +STR_CONFIG_SETTING_MAX_SHIPS_HELPTEXT :Número máximo de navíos que unha compañía pode ter STR_CONFIG_SETTING_AI_BUILDS_TRAINS :Deshabilita-los trens para o ordenador: {STRING} -STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES :Deshabilita-los vehículos de estrada para o ordenador: {STRING} -STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT :Deshabilita-los avións para o ordenador: {STRING} -STR_CONFIG_SETTING_AI_BUILDS_SHIPS :Deshabilita-los barcos para o ordenador: {STRING} - +STR_CONFIG_SETTING_AI_BUILDS_TRAINS_HELPTEXT :Activando esta opción, o xogador controlado pola computadora non pode construir trens +STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES :Deshabilita-los vehículos de estrada para a computadora: {STRING} +STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES_HELPTEXT :Activando esta opción, o xogador controlado pola computadora non pode construir vehículos de estrada +STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT :Deshabilita-los avións para a computadora: {STRING} +STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT_HELPTEXT :Activando esta opción, o xogador controlado pola computadora non pode construir avións +STR_CONFIG_SETTING_AI_BUILDS_SHIPS :Deshabilita-los navíos para a computadora: {STRING} +STR_CONFIG_SETTING_AI_BUILDS_SHIPS_HELPTEXT :Activando esta opción, o xogador controlado pola computadora non pode construir navíos + +STR_CONFIG_SETTING_AI_PROFILE :Configuración por defecto: {STRING} +STR_CONFIG_SETTING_AI_PROFILE_HELPTEXT :Escolle a configuración para usar en IAs aleatorias ou para valores iniciais ao engadir unha nova IA ou un novo script do xogo +STR_CONFIG_SETTING_AI_PROFILE_EASY :Fácil +STR_CONFIG_SETTING_AI_PROFILE_MEDIUM :Medio +STR_CONFIG_SETTING_AI_PROFILE_HARD :Difícil STR_CONFIG_SETTING_AI_IN_MULTIPLAYER :Permitir IA en multixogador: {STRING} +STR_CONFIG_SETTING_AI_IN_MULTIPLAYER_HELPTEXT :Permitir aos xogadores controlados pola computadora participar en partidas multixogador +STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES :#opcodes antes de que os scripts sexan suspendidos: {STRING} +STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES_HELPTEXT :Número máximo de operacións de computación que un scrpit pode realizar nun turno STR_CONFIG_SETTING_SERVINT_ISPERCENT :Intervalos de servizo en porcentaxes: {STRING} -STR_CONFIG_SETTING_NOSERVICE :Deshabilita-lo servizo cando as roturas están a ningún: {STRING} +STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Permite escoller se o mantemento de vehículos comezará debido ao tempo transcurrido dende o último mantemento ou por unha redución da fiabilidade cando se sobrepase unha porcentaxe determinado +STR_CONFIG_SETTING_SERVINT_TRAINS :Intervalo de mantemento por defecto para trens: {STRING} +STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :Fixa o intervalo de mantemento por defecto para trens novos, o cal se empregará no caso de que non se defina explicitamente un novo intervalo de mantemento para o vehículo +STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA} día{P 0 "" s}/% +STR_CONFIG_SETTING_SERVINT_DISABLED :Desactivado +STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES :Intervalo de mantemento por defecto para vehículos de estrada: {STRING} +STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES_HELPTEXT :Fixa o intervalo de mantemento por defecto para vehículos de estrada novos, o cal se empregará no caso de que non se defina explicitamente un novo intervalo de mantemento para o vehículo +STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Intervalo de mantemento por defecto para avións: {STRING} +STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Fixa o intervalo de mantemento por defecto para avións novos, o cal se empregará no caso de que non se defina explicitamente un novo intervalo de mantemento para o vehículo +STR_CONFIG_SETTING_SERVINT_SHIPS :Intervalo de mantemento por defecto para navíos: {STRING} +STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Fixa o intervalo de mantemento por defecto para navíos novos, o cal se empregará no caso de que non se defina explicitamente un novo intervalo de mantemento para o vehículo +STR_CONFIG_SETTING_NOSERVICE :Deshabilita-lo mantemento cando as avarías están desactivadas: {STRING} +STR_CONFIG_SETTING_NOSERVICE_HELPTEXT :Cando estea activado, os vehículos non teñen mantemento no caso de que non poidan ter avarías STR_CONFIG_SETTING_WAGONSPEEDLIMITS :Activa-los límites de velocidade dos vagóns: {STRING} +STR_CONFIG_SETTING_WAGONSPEEDLIMITS_HELPTEXT :Cando estea activado, usar tamén os límites de velocidade dos vagóns para decidir a máxima velocidade do tren STR_CONFIG_SETTING_DISABLE_ELRAILS :Desactivar vías electrificadas: {STRING} +STR_CONFIG_SETTING_DISABLE_ELRAILS_HELPTEXT :Cando estea activado, desactívase o requerimento de electrifica-las vías para o funcionamento de vehículos eléctricos -STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN :Chegada do 1º vehículo a estación do xogador: {STRING} -STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER :Chegada do 1º vehículo a estación dun oponente: {STRING} +STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN :Chegada do primeiro vehículo a estación do xogador: {STRING} +STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN_HELPTEXT :Amosa un xornal cando o primeiro vehíchulo chegue a unha nova estacion +STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER :Chegada do primeiro vehículo a estación dun opoñente: {STRING} +STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER_HELPTEXT :Amosa un xornal cando o primeiro vehíchulo chegue a unha nova estacion dun opoñente STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS :Accidentes / desastres: {STRING} +STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS_HELPTEXT :Amosa un xornal cando un accidente ou desastre ocurre STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION :Información da compañía: {STRING} +STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION_HELPTEXT :Amosa un xornal cando unha nova compañía é creada, ou cando unha compañía está en risco de bancarrota STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN :Apertura de industrias: {STRING} -STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE :Pecha unha industria: {STRING} -STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES :Cambios económicos: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN_HELPTEXT :Amosa no xornal cando abre unha industria nova +STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE :Peche de industrias: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE_HELPTEXT :Amosa no xornal as industrias que pechan +STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES :Cambios na economía: {STRING} +STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES_HELPTEXT :Amosa no xornal os cambios globáis na economía STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY :Cambios de producción nas industrias servidas pola compañía: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY_HELPTEXT :Amosa no xornal cando os niveis de produción das industrias servidas pola compañía cambian STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER :Cambios na producción das industrias servidas polos competidores: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER_HELPTEXT :Amosa no xornal cando os niveis de produción das industrias servidas polos competidores cambian STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED :Cambios de producción doutras industrias: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED_HELPTEXT :Amosa no xornal cando os niveis de produción das industrias non servidas pola compañía ou polos competidores cambian STR_CONFIG_SETTING_NEWS_ADVICE :Consello / información acerca dos vehículos da compañía: {STRING} +STR_CONFIG_SETTING_NEWS_ADVICE_HELPTEXT :Mostra mensaxes sobre os vehículos que requiren atención STR_CONFIG_SETTING_NEWS_NEW_VEHICLES :Novos vehículos: {STRING} +STR_CONFIG_SETTING_NEWS_NEW_VEHICLES_HELPTEXT :Amosa no xornal a dispoñibilidade de novos vehículos STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE :Cambios na admisión de carga: {STRING} -STR_CONFIG_SETTING_NEWS_SUBSIDIES :Subsidios: {STRING} +STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE_HELPTEXT :Mostra mensaxes sobre os cambios na aceptación de carga das estacións +STR_CONFIG_SETTING_NEWS_SUBSIDIES :Subvencións: {STRING} +STR_CONFIG_SETTING_NEWS_SUBSIDIES_HELPTEXT :Amosa no xornal información sobre os temas relacionados coas subvencións STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION :Información xeral: {STRING} +STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION_HELPTEXT :Amosa no xornal infoamación sobre acontecementos xerais, coma a compra de dereitos exclusivos ou o financiamento da reconstrucion das estradas STR_CONFIG_SETTING_NEWS_MESSAGES_OFF :Apagado -STR_CONFIG_SETTING_NEWS_MESSAGES_SUMMARY :Sumario +STR_CONFIG_SETTING_NEWS_MESSAGES_SUMMARY :Resumo STR_CONFIG_SETTING_NEWS_MESSAGES_FULL :Completo -STR_CONFIG_SETTING_COLOURED_NEWS_YEAR :Data de aparición das noticias en cor: {STRING} +STR_CONFIG_SETTING_COLOURED_NEWS_YEAR :Data de aparición das novas en cor: {STRING} +STR_CONFIG_SETTING_COLOURED_NEWS_YEAR_HELPTEXT :Ano no que os avisos dos xornais son impresos en cor. Antes deste ano, emprégase monocromo branco e negro STR_CONFIG_SETTING_STARTING_YEAR :Data de comezo: {STRING} -STR_CONFIG_SETTING_SMOOTH_ECONOMY :Habilita-la economía "suave"(máis cambios, pero máis pequenos): {STRING} -STR_CONFIG_SETTING_ALLOW_SHARES :Permiti-la compra de accións por outras compañías: {STRING} -STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :Construír semáforos automáticamente antes de: {STRING} -STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI :Activa-la IGU de sinais: {STRING} +STR_CONFIG_SETTING_SMOOTH_ECONOMY :Habilita-la economía "estable" (máis cambios, pero máis pequenos): {STRING} +STR_CONFIG_SETTING_SMOOTH_ECONOMY_HELPTEXT :Cando se activa, as producións industriais cambian máis frecuentemente, e a pasos máis curtos +STR_CONFIG_SETTING_ALLOW_SHARES :Permiti-la compra de accións de outras compañías: {STRING} +STR_CONFIG_SETTING_ALLOW_SHARES_HELPTEXT :Cando se activa, permite comprar ou vender accións da compañía. As accións só estarán dispoñíbeis para compañías que acaden certa idade +STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE :Porcentaxe do beneficio parcial a pagar en sistemas transitivos: {STRING} +STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE_HELPTEXT :Porcentaxe dos beneficios asignados ás partes intermedias da ruta en sistemas transitivos, dando un maior control sobre os ingresos +STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY :Colocar sinais cada {STRING} ao arrastrar +STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_HELPTEXT :Controla a distancia entre sinais nunha vía en construción ata o seguinte obstáculo (sinal, cruce) se se arrastran os sinais +STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_VALUE :{COMMA} cadro{P 0 "" s} +STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE :Ao arrastrar, manter a distancia fixa entre sinais: {STRING} +STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :Selecciona o comportamento da ferramenta de colocación de sinais para Ctrl+arrastrar. Se se desactiva, os sinais colócanse nos extremos dos túneis ou das pontes para evitar cantóns largos. Se se activa, os sinais colócanse cada N cadros, facilitando o aliñamento dos sinais en vías paralelas +STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :Construír sinais mecánicos automáticamente antes de: {STRING} +STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE_HELPTEXT :Selecciona o ano no que se comezan a empregar sinais eléctricos nas vías. Antes de este ano, empregaranse sinais mecánicos (que teñen exactamente a mesma función, pero distinta apariencia) +STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI :Activa-la GUI de sinais: {STRING} +STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI_HELPTEXT :Mostra unha xanela para escoller o tipo de sinais que se van a construir, en vez da rotación sen xanela con Ctrl+clic STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE :Tipo de sinal a construír por defecto: {STRING} -STR_CONFIG_SETTING_DEFAULT_SIGNAL_NORMAL :Normal -STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBS :Avanzado -STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBSOWAY :Avanzado de un sentido +STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE_HELPTEXT :Tipo de sinal por defecto +STR_CONFIG_SETTING_DEFAULT_SIGNAL_NORMAL :De bloqueo (normais) +STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBS :Sinais de ruta +STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBSOWAY :Sinais de ruta de sentido único STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES :Circular polos tipos de sinais: {STRING} +STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES_HELPTEXT :Selecciona os tipos de sinal polos que rodará o cursor ao facer Ctrl+clic STR_CONFIG_SETTING_CYCLE_SIGNAL_NORMAL :Só normais -STR_CONFIG_SETTING_CYCLE_SIGNAL_PBS :Só avanzadas +STR_CONFIG_SETTING_CYCLE_SIGNAL_PBS :Só sinais de ruta STR_CONFIG_SETTING_CYCLE_SIGNAL_ALL :Todas STR_CONFIG_SETTING_TOWN_LAYOUT :Distribución das estradas en novas cidades: {STRING} -STR_CONFIG_SETTING_TOWN_LAYOUT_DEFAULT :defecto -STR_CONFIG_SETTING_TOWN_LAYOUT_BETTER_ROADS :mellores estradas +STR_CONFIG_SETTING_TOWN_LAYOUT_HELPTEXT :Distribución da rede de estradas de cidades +STR_CONFIG_SETTING_TOWN_LAYOUT_DEFAULT :Por defecto +STR_CONFIG_SETTING_TOWN_LAYOUT_BETTER_ROADS :Mellores estradas STR_CONFIG_SETTING_TOWN_LAYOUT_2X2_GRID :Reixa 2x2 STR_CONFIG_SETTING_TOWN_LAYOUT_3X3_GRID :Reixa 3x3 -STR_CONFIG_SETTING_TOWN_LAYOUT_RANDOM :aleatorio +STR_CONFIG_SETTING_TOWN_LAYOUT_RANDOM :Aleatorio STR_CONFIG_SETTING_ALLOW_TOWN_ROADS :Permitir ás poboacións construír estradas: {STRING} +STR_CONFIG_SETTING_ALLOW_TOWN_ROADS_HELPTEXT :Permitir ás poboacións construír estradas. Desactiva esta opción para evitar que as cidades constrúan novas estradas +STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :As cidades poden construir pasos a nivel: {STRING} +STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS_HELPTEXT :Activando esta opción, as cidades poden construir pasos a nivel STR_CONFIG_SETTING_NOISE_LEVEL :Permitir á cidade controla-lo nivel de ruído dos aeroportos: {STRING} -STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :prohibido -STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :permitido - -STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_RAINFOREST :só nos bosques -STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_ALL :todas partes +STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :Cando esta opción estea desactivada, pode haber dous aeroportos por cidade. Coa opción activada, o número de aeroportos por cidade está limitada polo nivel de aceptación de ruido da cidade, o cal depende da población da cidade, do tamaño do aeroporto e da distancia +STR_CONFIG_SETTING_TOWN_FOUNDING :Fundar cidades: {STRING} +STR_CONFIG_SETTING_TOWN_FOUNDING_HELPTEXT :Activando esta opción, os distintos xogadores poden fundar novas cidades +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 estradas personalizado + +STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT :Colocación de árbores durante a partida: {STRING} +STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_HELPTEXT :Controla a aparición aleatoria de árbores durante a partida. Isto pode afectar ás industrias que dependan do crecemento arbóreo, por exemplo o serradoiro +STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NONE :Ningún {RED}(rompe o serradoiro) +STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_RAINFOREST :Só nos bosques +STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_ALL :En todas partes STR_CONFIG_SETTING_TOOLBAR_POS :Posición da barra de ferramentas principal: {STRING} +STR_CONFIG_SETTING_TOOLBAR_POS_HELPTEXT :Posición horizontal da barra de ferramentas principal da parte superior da pantalla +STR_CONFIG_SETTING_STATUSBAR_POS :Posición da barra de estado: {STRING} +STR_CONFIG_SETTING_STATUSBAR_POS_HELPTEXT :Posición horizontal da barra de estado da parte inferior da pantalla +STR_CONFIG_SETTING_SNAP_RADIUS :Radio de fixación de fiestra: {STRING} +STR_CONFIG_SETTING_SNAP_RADIUS_HELPTEXT :A distancia entre fiestras antes de que unha fiestra sexa movida é automaticamente aliñada ás fiestras próximas +STR_CONFIG_SETTING_SNAP_RADIUS_VALUE :{COMMA} pixel{P 0 "" s} +STR_CONFIG_SETTING_SNAP_RADIUS_DISABLED :Deshabilitado +STR_CONFIG_SETTING_SOFT_LIMIT :Número máximo de fiestras non ancladas: {STRING} +STR_CONFIG_SETTING_SOFT_LIMIT_HELPTEXT :Número de fiestras abertas non ancladas antes de que se pechen as fiestras máis vellas para facer sitio para unha nova +STR_CONFIG_SETTING_SOFT_LIMIT_VALUE :{COMMA} +STR_CONFIG_SETTING_SOFT_LIMIT_DISABLED :Deshabilitado +STR_CONFIG_SETTING_ZOOM_MIN :Nivel de ampliación de zoom máximo: {STRING} +STR_CONFIG_SETTING_ZOOM_MIN_HELPTEXT :Nivel máximo de ampliación de zoom para vistas. Habilitando un nivel de zoom maior, aumentan tamén os requisitos de memoria +STR_CONFIG_SETTING_ZOOM_MAX :Nivel de redución de zoom máximo: {STRING} +STR_CONFIG_SETTING_ZOOM_MAX_HELPTEXT :Nivel máximo de redución de zoom para vistas. Un nivel de redución de zoom moi alto pode causar retrasos e dificultades na partida +STR_CONFIG_SETTING_ZOOM_LVL_MIN :4x +STR_CONFIG_SETTING_ZOOM_LVL_IN_2X :2x +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 :Velocidade de crecemento das cidades: {STRING} +STR_CONFIG_SETTING_TOWN_GROWTH_HELPTEXT :Velocidade de crecemento das cidades STR_CONFIG_SETTING_TOWN_GROWTH_NONE :Ningún STR_CONFIG_SETTING_TOWN_GROWTH_SLOW :Lento STR_CONFIG_SETTING_TOWN_GROWTH_NORMAL :Normal STR_CONFIG_SETTING_TOWN_GROWTH_FAST :Rápido STR_CONFIG_SETTING_TOWN_GROWTH_VERY_FAST :Moi rápido +STR_CONFIG_SETTING_LARGER_TOWNS :Proporción de pobos que se convertirán en cidades: {STRING} +STR_CONFIG_SETTING_LARGER_TOWNS_HELPTEXT :Cantidade de pobos que se convertirán en cidade. As cidades empezan sendo máis grandes e medran máis rápido +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_MODIFIED_ROAD_REBUILD :Elimina-los elementos absurdos das estradas na construción: {STRING} - -STR_CONFIG_SETTING_GUI :{ORANGE}Interface -STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}Construción +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_DISTRIBUTION_MANUAL :manual +STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC :asimétrica +STR_CONFIG_SETTING_DISTRIBUTION_SYMMETRIC :simétrica +STR_CONFIG_SETTING_LINKGRAPH_ACCURACY :Precisión da distribución: {STRING} +STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT :Canto máis alto sexa o valor, máis tempo de CPU levará o cálculo de distribución. Se leva demasiado tempo podes experimentar retraso. Se sen embargo o fixas nun valor baixo, a distribución será imprecisa, e pode que a carga non sexa enviada aos destinos que ti queres. +STR_CONFIG_SETTING_DEMAND_DISTANCE :Efecto da distancia na demanda: {STRING} +STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT :Se o fixas nunha cantidade maior que 0, a distancia entre a estación de orixe A dalgunha carga e o posíbel destino B influirá na cantidade de carga enviada de A a B. Canto máis lonxe estea B de A, menos carga será enviada. Canto máis alto sexa o valor, menos carga será enviada a estacións lonxanas e máis a estacións cercanas. +STR_CONFIG_SETTING_DEMAND_SIZE :Cantidade de carga a retornar en modo simétrico: {STRING} +STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :Fixar esta opción a menos do 100% fai que a distribución simétrica se comporte máis coma a asimétrica. Enviarase menos cantidade de carga de volta á forza se unha certa cantidade se envía a unha estación. Se o fixas no 0% a distribución simétrica compórtase coma a asimétrica. +STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Saturación de rutas curtas antes de empregar rutas con capacidade: {STRING} +STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Frecuentemente hai múltiples rutas posíbeis entre dúas estacións dadas. En primero lugar intentarase satura-la ruta máis curta, para posteriormente satura-la segunda máis curta e así sucesivamente. A saturación está determinada por unha estimación de capacidade e uso planificado. Unha vez saturadas tódalas rutas, se aínda queda demanda, sobrecargaranse as rutas comezando por aquelas de maior capacidade. A maior parte das veces, o algoritmo non estimará a capacidade con precisión. Esta opción permite especificar ata que porcentaxe de saturación pode ter unha ruta curta na primeira volta do algoritmo antes de escolle-la seguinte máis curta. Fíxao en menos do 100% para evitar estacións sobrecargadas no caso de que se sobreestime a capacidade. + +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Unidades de velocidade: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_HELPTEXT :Cando unha velocidade apareza na interfaz de usuario, facelo nas unidades seleccionadas +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 potencia dos vehículos: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_HELPTEXT :Cando a potencia dun vehículo se amose na interfaz de usuario, facelo nas unidades seleccionadas +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 :Cando se amosen pesos na interfaz do usuario, facelo nas unidades seleccionadas +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_IMPERIAL :Imperial (t/ton curta) +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_METRIC :Métrica (t/tonne) +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 :Cando se amosen volumes na interfaz do usuario, facelo nas unidades seleccionadas +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 para o esforzo tractor: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_HELPTEXT :Cando o esforzo tractor, tamén coñecido coma forza tractriz, se amose na interfaz de usuario, facelo nas unidades seleccionadas +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 para a altura (cota): {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_HELPTEXT :Cando as cotas se amosen na interfaz de usuario, facelo coas unidades seleccionadas +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_LOCALISATION :{ORANGE}Localizació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_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_CONSTRUCTION_SIGNALS :{ORANGE}Sinais -STR_CONFIG_SETTING_STATIONS_CARGOHANDLING :{ORANGE}Xestión da carga -STR_CONFIG_SETTING_AI_NPC :{ORANGE}Xogadores do ordenador -STR_CONFIG_SETTING_VEHICLES_AUTORENEW :{ORANGE}Autorenovar -STR_CONFIG_SETTING_VEHICLES_TRAINS :{ORANGE}Trens -STR_CONFIG_SETTING_ECONOMY_TOWNS :{ORANGE}Cidades -STR_CONFIG_SETTING_ECONOMY_INDUSTRIES :{ORANGE}Industrias +STR_CONFIG_SETTING_AI_NPC :{ORANGE}Xogadores da computadora +STR_CONFIG_SETTING_PATHFINDER_OPF :Orixinal STR_CONFIG_SETTING_PATHFINDER_NPF :NPF STR_CONFIG_SETTING_PATHFINDER_YAPF_RECOMMENDED :YAPF {BLUE}(Recomendado) STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Buscador de ruta para trens: {STRING} +STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Buscador de ruta empregado polos trens STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :Buscador de ruta para vehículos de estrada: {STRING} +STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES_HELPTEXT :Buscador de ruta empregado polos vehículos de estrada STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS :Buscador de ruta para barcos: {STRING} +STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT :Buscador de ruta empregado polos barcos +STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :Cambio de sentido automático nos sinais: {STRING} +STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT :Permite aos trens cambiar de sentido nun sinal, se agardaron durante moito tempo STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}Cambia-lo valor # Config errors +STR_CONFIG_ERROR :{WHITE}Erro co arquivo de configuración... +STR_CONFIG_ERROR_ARRAY :{WHITE}... erro no vector '{STRING}' +STR_CONFIG_ERROR_INVALID_VALUE :{WHITE}...'{STRING}' non é un valor válido para '{STRING}' +STR_CONFIG_ERROR_TRAILING_CHARACTERS :{WHITE}... caracteres en branco ao final da opción '{STRING}' +STR_CONFIG_ERROR_DUPLICATE_GRFID :{WHITE}... ignorando '{STRING}' en NewGRF: ID de GRP duplicada con '{STRING}' +STR_CONFIG_ERROR_INVALID_GRF :{WHITE}... ignorando '{STRING}' invlálido en NewGRF: {STRING} +STR_CONFIG_ERROR_INVALID_GRF_NOT_FOUND :non atopado +STR_CONFIG_ERROR_INVALID_GRF_UNSAFE :non é seguro para uso estático +STR_CONFIG_ERROR_INVALID_GRF_SYSTEM :sistema NewGRF +STR_CONFIG_ERROR_INVALID_GRF_INCOMPATIBLE :incompatible con esta versión de OpenTTD +STR_CONFIG_ERROR_INVALID_GRF_UNKNOWN :descoñecido +STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_LEVEL :{WHITE}... nivel de compresión '{STRING}' non válido +STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_ALGORITHM :{WHITE}...o formato de partida gravada '{STRING}' non está dispoñíbel. Voltando a '{STRING}' +STR_CONFIG_ERROR_INVALID_BASE_GRAPHICS_NOT_FOUND :{WHITE}...ignorando o set de gráficos básicos '{STRING}': non atopado +STR_CONFIG_ERROR_INVALID_BASE_SOUNDS_NOT_FOUND :{WHITE}...ignorando o set de sons básicos '{STRING}': non atopado +STR_CONFIG_ERROR_INVALID_BASE_MUSIC_NOT_FOUND :{WHITE}...ignorando o set de música básico '{STRING}': non atopado +STR_CONFIG_ERROR_OUT_OF_MEMORY :{WHITE}Memoria esgotada +STR_CONFIG_ERROR_SPRITECACHE_TOO_BIG :{WHITE} Fallo ao reservar {BYTES} de caché de sprites. A caché de sprites reduciuse a {BYTES}. Isto reducirá o rendemento de OpenTTD. Para reducir os requisitos de memoria podes tentar deshabilitar os gráficos 32bpp e/ou niveles de zoom # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} -STR_INTRO_NEW_GAME :{BLACK}Nova Partida -STR_INTRO_LOAD_GAME :{BLACK}Cargar Partida -STR_INTRO_PLAY_SCENARIO :{BLACK}Xogar Escenario -STR_INTRO_PLAY_HEIGHTMAP :{BLACK}Xogar Mapa De Altitude -STR_INTRO_SCENARIO_EDITOR :{BLACK}Editor De Escenarios +STR_INTRO_NEW_GAME :{BLACK}Nova partida +STR_INTRO_LOAD_GAME :{BLACK}Cargar partida +STR_INTRO_PLAY_SCENARIO :{BLACK}Xogar escenario +STR_INTRO_PLAY_HEIGHTMAP :{BLACK}Xogar mapa de alturas +STR_INTRO_SCENARIO_EDITOR :{BLACK}Editor de escenarios STR_INTRO_MULTIPLAYER :{BLACK}Multixogador -STR_INTRO_GAME_OPTIONS :{BLACK}Opcións da Partida -STR_INTRO_ADVANCED_SETTINGS :{BLACK}Opcións Avanzadas +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_NEWGRF_SETTINGS :{BLACK}Configuración NewGRF -STR_INTRO_ONLINE_CONTENT :{BLACK}Comprobar Contido Online +STR_INTRO_ONLINE_CONTENT :{BLACK}Comprobar contido online +STR_INTRO_SCRIPT_SETTINGS :{BLACK}Configuración dos scripts de IA STR_INTRO_QUIT :{BLACK}Saír -STR_INTRO_TOOLTIP_NEW_GAME :{BLACK}Comezar nova partida. CTRL+Click salta a configuración do mapa -STR_INTRO_TOOLTIP_LOAD_GAME :{BLACK}Cargar unha partida +STR_INTRO_TOOLTIP_NEW_GAME :{BLACK}Comezar unha nova partida. Ctrl+Click para saltarse a configuración do mapa +STR_INTRO_TOOLTIP_LOAD_GAME :{BLACK}Cargar unha partida gravada STR_INTRO_TOOLTIP_PLAY_HEIGHTMAP :{BLACK}Comezar una nova partida, usando un mapa de altura coma paisaxe -STR_INTRO_TOOLTIP_PLAY_SCENARIO :{BLACK}Comezar unha nova partida, usando un escenario persoalizado -STR_INTRO_TOOLTIP_SCENARIO_EDITOR :{BLACK}Crear un mundo/escenario persoalizado +STR_INTRO_TOOLTIP_PLAY_SCENARIO :{BLACK}Comezar unha nova partida, usando un escenario personalizado +STR_INTRO_TOOLTIP_SCENARIO_EDITOR :{BLACK}Crear un mundo/escenario personalizado STR_INTRO_TOOLTIP_MULTIPLAYER :{BLACK}Comezar unha partida multixogador -STR_INTRO_TOOLTIP_TEMPERATE :{BLACK}Selecciona-lo estilo da paisaxe 'Templado' -STR_INTRO_TOOLTIP_SUB_ARCTIC_LANDSCAPE :{BLACK}Selecciona-lo estilo da paisaxe 'Subártico' -STR_INTRO_TOOLTIP_SUB_TROPICAL_LANDSCAPE :{BLACK}Selecciona-lo estilo da paisaxe 'Subtropical' -STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Selecciona-lo estilo da paisaxe 'Xoguetelandia' +STR_INTRO_TOOLTIP_TEMPERATE :{BLACK}Selecciona-lo estilo de paisaxe 'Temperado' +STR_INTRO_TOOLTIP_SUB_ARCTIC_LANDSCAPE :{BLACK}Selecciona-lo estilo de paisaxe 'Subártico' +STR_INTRO_TOOLTIP_SUB_TROPICAL_LANDSCAPE :{BLACK}Selecciona-lo estilo de paisaxe 'Subtropical' +STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Selecciona-lo estilo da paisaxe 'Terra dos xoguetes' -STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Amosa-las opcións do xogo -STR_INTRO_TOOLTIP_ADVANCED_SETTINGS :{BLACK}Mostra as opcións avanzadas +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_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_QUIT :{BLACK}Saír 'OpenTTD' +STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}Motra-la configuración dos scripts de IA +STR_INTRO_TOOLTIP_QUIT :{BLACK}Saír de 'OpenTTD' +STR_INTRO_TRANSLATION :{BLACK}A ista tradución fáltanlle {NUM} string{P "" s}. Por favor, axúdanos a mellorar OpenTTD rexistrándote coma tradutor. Bótalle un ollo ao readme.txt para máis detalles. # Quit window STR_QUIT_CAPTION :{WHITE}Saír -STR_QUIT_ARE_YOU_SURE_YOU_WANT_TO_EXIT_OPENTTD :{YELLOW}¿Estás seguro de querer saír e volver a {STRING}? +STR_QUIT_ARE_YOU_SURE_YOU_WANT_TO_EXIT_OPENTTD :{YELLOW}Estás seguro de que queres saír e voltar a {STRING}? STR_QUIT_YES :{BLACK}Si STR_QUIT_NO :{BLACK}Non @@ -1285,95 +1713,97 @@ STR_OSNAME_OS2 :OS/2 STR_OSNAME_SUNOS :SunOS # Abandon game -STR_ABANDON_GAME_CAPTION :{WHITE}Saír ó menú principal -STR_ABANDON_GAME_QUERY :{YELLOW}¿Está seguro de que desexa saír da partida? -STR_ABANDON_SCENARIO_QUERY :{YELLOW}¿Estás seguro de que desexas saír deste escenario? +STR_ABANDON_GAME_CAPTION :{WHITE}Saír da partida +STR_ABANDON_GAME_QUERY :{YELLOW}Estás seguro de que queres saír desta partida? +STR_ABANDON_SCENARIO_QUERY :{YELLOW}Estás seguro de que desexas saír deste escenario? # Cheat window -STR_CHEATS :{WHITE}Trampas +STR_CHEATS :{WHITE}Trampulladas STR_CHEATS_TOOLTIP :{BLACK}As caixas de confirmación indican se usaches esta trampa antes -STR_CHEATS_WARNING :{BLACK}¡Advertencia! Estás a piques de traizoar os teus opoñentes. Ten en conta que unha desgraza coma esta lembrarase eternamente. -STR_CHEAT_MONEY :{LTBLUE}Incrementar o diñeiro en {CURRENCY_LONG} +STR_CHEATS_WARNING :{BLACK}Coidado! Estás a piques de traizoar aos teus competidores. Ten en conta que un escándalo coma este vai ser lembrado eternamente +STR_CHEAT_MONEY :{LTBLUE}Incrementar os cartos en {CURRENCY_LONG} STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Xogando coma compañía: {ORANGE}{COMMA} -STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Escavadora máxica (elimina industrias, obx. non eliminables): {ORANGE}{STRING} -STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}Os tuneis poden cruzarse entre eles: {ORANGE}{STRING} +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_SWITCH_CLIMATE_TEMPERATE_LANDSCAPE :Escenario temperado -STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :Escenario sub-ártico -STR_CHEAT_SWITCH_CLIMATE_SUB_TROPICAL_LANDSCAPE :Escenario sub-tropical -STR_CHEAT_SWITCH_CLIMATE_TOYLAND_LANDSCAPE :Escenario xoguetelandia +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 +STR_CHEAT_SWITCH_CLIMATE_TOYLAND_LANDSCAPE :Paisaxe xoguetelandia STR_CHEAT_CHANGE_DATE :{LTBLUE}Cambiar data: {ORANGE}{DATE_SHORT} +STR_CHEAT_CHANGE_DATE_QUERY_CAPT :{WHITE}Cambiar o ano actual STR_CHEAT_SETUP_PROD :{LTBLUE}Permitir a modificación dos valores de producción: {ORANGE}{STRING} # Livery window -STR_LIVERY_CAPTION :{WHITE}Novo Esquema de Cor +STR_LIVERY_CAPTION :{WHITE}Novo esquema de cor STR_LIVERY_GENERAL_TOOLTIP :{BLACK}Mostra-los esquemas de cor xerais STR_LIVERY_TRAIN_TOOLTIP :{BLACK}Mostra-los esquemas de cor dos trens STR_LIVERY_ROAD_VEHICLE_TOOLTIP :{BLACK}Mostra-los esquemas de cor dos vehículos de estrada STR_LIVERY_SHIP_TOOLTIP :{BLACK}Mostra-los esquemas de cor dos barcos -STR_LIVERY_AIRCRAFT_TOOLTIP :{BLACK}Mostra-los esquemas de cor dos avións -STR_LIVERY_PRIMARY_TOOLTIP :{BLACK}Elixe a cor primaria para o esquema seleccionado -STR_LIVERY_SECONDARY_TOOLTIP :{BLACK}Elixe a cor secundaria para o esquema seleccionado +STR_LIVERY_AIRCRAFT_TOOLTIP :{BLACK}Mostra-los esquemas de cor das aeronaves +STR_LIVERY_PRIMARY_TOOLTIP :{BLACK}Elixe a cor primaria para o esquema seleccionado. Ctrl+Click aplicará esta cor a tódolos esquemas +STR_LIVERY_SECONDARY_TOOLTIP :{BLACK}Elixe a cor secundaria para o esquema seleccionado. Ctrl+Click aplicará esta cor a tódolos esquemas STR_LIVERY_PANEL_TOOLTIP :{BLACK}Selecciona un esquema de cor para cambialo, ou múltiples esquemas con CTRL+click. Pincha na caixa para cambia lo uso do esquema -STR_LIVERY_DEFAULT :Esquema de Cor Estándar -STR_LIVERY_STEAM :Máquina de Vapor -STR_LIVERY_DIESEL :Máquina Diésel -STR_LIVERY_ELECTRIC :Máquina Eléctrica -STR_LIVERY_MONORAIL :Máquina Monorraíl -STR_LIVERY_MAGLEV :Máquina Maglev -STR_LIVERY_DMU :DMU -STR_LIVERY_EMU :EMU -STR_LIVERY_PASSENGER_WAGON_STEAM :Vagón De Pasaxeiros (Vapor) -STR_LIVERY_PASSENGER_WAGON_DIESEL :Vagón De Pasaxeiros (Diésel) -STR_LIVERY_PASSENGER_WAGON_ELECTRIC :Vagón De Pasaxeiros (Eléctrico) -STR_LIVERY_PASSENGER_WAGON_MONORAIL :Coche de Pasaxeiros (Monoraíl) -STR_LIVERY_PASSENGER_WAGON_MAGLEV :Coche de Pasaxeiros (Maglev) -STR_LIVERY_FREIGHT_WAGON :Vagón de Carga +STR_LIVERY_DEFAULT :Esquemas de cor estándar +STR_LIVERY_STEAM :Locomotora de vapor +STR_LIVERY_DIESEL :Locomotora diésel +STR_LIVERY_ELECTRIC :Locomotora eléctrica +STR_LIVERY_MONORAIL :Locomotora de monorraíl +STR_LIVERY_MAGLEV :Locomotora maglev +STR_LIVERY_DMU :Automotor diésel +STR_LIVERY_EMU :Automotor eléctrico +STR_LIVERY_PASSENGER_WAGON_STEAM :Coche de pasaxeiros (vapor) +STR_LIVERY_PASSENGER_WAGON_DIESEL :Coche de pasaxeiros (diésel) +STR_LIVERY_PASSENGER_WAGON_ELECTRIC :Coche de pasaxeiros (eléctrico) +STR_LIVERY_PASSENGER_WAGON_MONORAIL :Coche de pasaxeiros (monorraíl) +STR_LIVERY_PASSENGER_WAGON_MAGLEV :Coche de pasaxeiros (maglev) +STR_LIVERY_FREIGHT_WAGON :Vagón de carga STR_LIVERY_BUS :Autobús STR_LIVERY_TRUCK :Camión -STR_LIVERY_PASSENGER_SHIP :Barco de Pasaxeiros -STR_LIVERY_FREIGHT_SHIP :Barco de Carga +STR_LIVERY_PASSENGER_SHIP :Ferry de pasaxeiros +STR_LIVERY_FREIGHT_SHIP :Cargueiro STR_LIVERY_HELICOPTER :Helicóptero -STR_LIVERY_SMALL_PLANE :Aeronave Pequena -STR_LIVERY_LARGE_PLANE :Aeronave Grande -STR_LIVERY_PASSENGER_TRAM :Tranvía de Pasaxeiros -STR_LIVERY_FREIGHT_TRAM :Tranvía de Carga +STR_LIVERY_SMALL_PLANE :Avión pequeno +STR_LIVERY_LARGE_PLANE :Avión grande +STR_LIVERY_PASSENGER_TRAM :Tranvía de pasaxeiros +STR_LIVERY_FREIGHT_TRAM :Tranvía de carga # Face selection window 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 STR_FACE_FEMALE_BUTTON :{BLACK}Muller STR_FACE_FEMALE_TOOLTIP :{BLACK}Seleccionar caras femininas -STR_FACE_NEW_FACE_BUTTON :{BLACK}Nova Cara +STR_FACE_NEW_FACE_BUTTON :{BLACK}Nova cara STR_FACE_NEW_FACE_TOOLTIP :{BLACK}Xerar unha nova cara aleatoriamente STR_FACE_ADVANCED :{BLACK}Avanzado -STR_FACE_ADVANCED_TOOLTIP :{BLACK}Selección avanzada de cara. -STR_FACE_SIMPLE :{BLACK}Simple -STR_FACE_SIMPLE_TOOLTIP :{BLACK}Selección simple de cara. +STR_FACE_ADVANCED_TOOLTIP :{BLACK}Selección avanzada de cara +STR_FACE_SIMPLE :{BLACK}Sinxela +STR_FACE_SIMPLE_TOOLTIP :{BLACK}Selección sinxela de cara STR_FACE_LOAD :{BLACK}Cargar STR_FACE_LOAD_TOOLTIP :{BLACK}Carga-la cara favorita STR_FACE_LOAD_DONE :{WHITE}A túa cara favorita cargouse dende o arquivo de configuración de OpenTTD. -STR_FACE_FACECODE :{BLACK}Nº de cara -STR_FACE_FACECODE_TOOLTIP :{BLACK}Ver e/ou establecer o número da cara do xogador -STR_FACE_FACECODE_CAPTION :{WHITE}Ver e/ou establecer o número da cara do xogador -STR_FACE_FACECODE_SET :{WHITE}Estableceuse o novo número de código da cara. -STR_FACE_FACECODE_ERR :{WHITE}¡Non se pode axustar o número da cara - debe estar entre 0 e 4.294.967.295! -STR_FACE_SAVE :{BLACK}Grabar -STR_FACE_SAVE_TOOLTIP :{BLACK}Grabar a cara favorita -STR_FACE_SAVE_DONE :{WHITE}Esta cara grabaráse como a túa favorita no ficheiro de configuración de OpenTTD. +STR_FACE_FACECODE :{BLACK}Número de cara +STR_FACE_FACECODE_TOOLTIP :{BLACK}Ver e/ou establecer o número da cara do presidente da compañía +STR_FACE_FACECODE_CAPTION :{WHITE}Ver e/ou establecer o número da cara do presidente +STR_FACE_FACECODE_SET :{WHITE}Estableceuse o novo número de cara +STR_FACE_FACECODE_ERR :{WHITE}Non se puido establecer o número de cara! - debe ser un número entre 0 e 4.294.967.295! +STR_FACE_SAVE :{BLACK}Gravar +STR_FACE_SAVE_TOOLTIP :{BLACK}Gravar coma cara favorita +STR_FACE_SAVE_DONE :{WHITE}Esta cara gravarase coma favorita no arquivo de configuración de OpenTTD. STR_FACE_EUROPEAN :{BLACK}Europea STR_FACE_SELECT_EUROPEAN :{BLACK}Seleccionar caras europeas STR_FACE_AFRICAN :{BLACK}Africana STR_FACE_SELECT_AFRICAN :{BLACK}Seleccionar caras africanas STR_FACE_YES :Si STR_FACE_NO :Non -STR_FACE_MOUSTACHE_EARRING_TOOLTIP :{BLACK}Activar bigote ou pendentes +STR_FACE_MOUSTACHE_EARRING_TOOLTIP :{BLACK}Activar mostacho ou pendentes STR_FACE_HAIR :Pelo: STR_FACE_HAIR_TOOLTIP :{BLACK}Cambiar pelo STR_FACE_EYEBROWS :Cellas: @@ -1385,25 +1815,25 @@ STR_FACE_GLASSES_TOOLTIP :{BLACK}Poñer l STR_FACE_GLASSES_TOOLTIP_2 :{BLACK}Cambia-las lentes STR_FACE_NOSE :Nariz: STR_FACE_NOSE_TOOLTIP :{BLACK}Cambia-lo nariz -STR_FACE_LIPS :Labios: -STR_FACE_MOUSTACHE :Bigote: -STR_FACE_LIPS_MOUSTACHE_TOOLTIP :{BLACK}Cambia-los labios ou o bigote -STR_FACE_CHIN :Barbela: -STR_FACE_CHIN_TOOLTIP :{BLACK}Cambia-la barbela +STR_FACE_LIPS :Beizos: +STR_FACE_MOUSTACHE :Mostacho: +STR_FACE_LIPS_MOUSTACHE_TOOLTIP :{BLACK}Cambia-los beizos ou o mostacho +STR_FACE_CHIN :Queixo: +STR_FACE_CHIN_TOOLTIP :{BLACK}Cambia-lo queixo STR_FACE_JACKET :Chaqueta: STR_FACE_JACKET_TOOLTIP :{BLACK}Cambia-la chaqueta STR_FACE_COLLAR :Colo: STR_FACE_COLLAR_TOOLTIP :{BLACK}Cambia-lo colo -STR_FACE_TIE :Lazo: +STR_FACE_TIE :Garavata: STR_FACE_EARRING :Pendentes: -STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}Cambia-lo lazo ou os pendentes +STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}Cambia-la garavata ou os pendentes # Network server list STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}Multixogador -STR_NETWORK_SERVER_LIST_CONNECTION :{BLACK}Conexión: -STR_NETWORK_SERVER_LIST_CONNECTION_TOOLTIP :{BLACK}Escolle entre unha partida en Internet ou unha partida na rede de área local -STR_NETWORK_SERVER_LIST_LAN :LAN -STR_NETWORK_SERVER_LIST_INTERNET :Internet +STR_NETWORK_SERVER_LIST_ADVERTISED :{BLACK}Anunciado +STR_NETWORK_SERVER_LIST_ADVERTISED_TOOLTIP :{BLACK}Escolle entre unha partida con anuncios (internet) ou sen eles (LAN) +STR_NETWORK_SERVER_LIST_ADVERTISED_NO :Non +STR_NETWORK_SERVER_LIST_ADVERTISED_YES :Si STR_NETWORK_SERVER_LIST_PLAYER_NAME :{BLACK}Nome do xogador: STR_NETWORK_SERVER_LIST_ENTER_NAME_TOOLTIP :{BLACK}Este é o nome polo que te identificarán os outros xogadores @@ -1419,22 +1849,22 @@ 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}Anos STR_NETWORK_SERVER_LIST_YEARS_CAPTION_TOOLTIP :{BLACK}Número de anos que{}leva a partida funcionando -STR_NETWORK_SERVER_LIST_INFO_ICONS_TOOLTIP :{BLACK}Idioma, versión do servidor, etc. +STR_NETWORK_SERVER_LIST_INFO_ICONS_TOOLTIP :{BLACK}Lingua, versión do servidor, etc. STR_NETWORK_SERVER_LIST_CLICK_GAME_TO_SELECT :{BLACK}Pincha nunha partida da lista para seleccionala -STR_NETWORK_SERVER_LIST_LAST_JOINED_SERVER :{BLACK}O servidor público o que te uniches a última vez: +STR_NETWORK_SERVER_LIST_LAST_JOINED_SERVER :{BLACK}O servidor público ao que te uniches a última vez: STR_NETWORK_SERVER_LIST_CLICK_TO_SELECT_LAST :{BLACK}Pincha para selecciona-lo servidor no que xogaches a última vez STR_NETWORK_SERVER_LIST_GAME_INFO :{SILVER}INFORMACIÓN DA PARTIDA STR_NETWORK_SERVER_LIST_CLIENTS :{SILVER}Clientes: {WHITE}{COMMA} / {COMMA} - {COMMA} / {COMMA} -STR_NETWORK_SERVER_LIST_LANGUAGE :{SILVER}Idioma: {WHITE}{STRING} -STR_NETWORK_SERVER_LIST_LANDSCAPE :{SILVER}Set de Terreo: {WHITE}{STRING} -STR_NETWORK_SERVER_LIST_MAP_SIZE :{SILVER}Tamaño: {WHITE}{COMMA}x{COMMA} +STR_NETWORK_SERVER_LIST_LANGUAGE :{SILVER}Lingua: {WHITE}{STRING} +STR_NETWORK_SERVER_LIST_LANDSCAPE :{SILVER}Paisaxe: {WHITE}{STRING} +STR_NETWORK_SERVER_LIST_MAP_SIZE :{SILVER}Tamaño do mapa: {WHITE}{COMMA}x{COMMA} STR_NETWORK_SERVER_LIST_SERVER_VERSION :{SILVER}Versión do servidor: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_SERVER_ADDRESS :{SILVER}Dirección do servidor: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_START_DATE :{SILVER}Data de comezo: {WHITE}{DATE_SHORT} STR_NETWORK_SERVER_LIST_CURRENT_DATE :{SILVER}Data actual: {WHITE}{DATE_SHORT} -STR_NETWORK_SERVER_LIST_PASSWORD :{SILVER}¡Protexido con clave! +STR_NETWORK_SERVER_LIST_PASSWORD :{SILVER}Protexido con contrasinal! STR_NETWORK_SERVER_LIST_SERVER_OFFLINE :{SILVER}SERVIDOR DESCONECTADO STR_NETWORK_SERVER_LIST_SERVER_FULL :{SILVER}SERVIDOR CHEO STR_NETWORK_SERVER_LIST_VERSION_MISMATCH :{SILVER}VERSIÓN INCORRECTA @@ -1444,39 +1874,39 @@ STR_NETWORK_SERVER_LIST_JOIN_GAME :{BLACK}Unirse STR_NETWORK_SERVER_LIST_REFRESH :{BLACK}Actualizar servidor STR_NETWORK_SERVER_LIST_REFRESH_TOOLTIP :{BLACK}Actualiza-la información do servidor -STR_NETWORK_SERVER_LIST_FIND_SERVER :{BLACK}Buscar servidor +STR_NETWORK_SERVER_LIST_FIND_SERVER :{BLACK}Procurar servidor STR_NETWORK_SERVER_LIST_FIND_SERVER_TOOLTIP :{BLACK}Buscar un servidor na rede STR_NETWORK_SERVER_LIST_ADD_SERVER :{BLACK}Engadir servidor STR_NETWORK_SERVER_LIST_ADD_SERVER_TOOLTIP :{BLACK}Engade un servidor á lista que será comprobado sempre para buscar partidas. STR_NETWORK_SERVER_LIST_START_SERVER :{BLACK}Iniciar servidor -STR_NETWORK_SERVER_LIST_START_SERVER_TOOLTIP :{BLACK}Comezar un servidor propio +STR_NETWORK_SERVER_LIST_START_SERVER_TOOLTIP :{BLACK}Comezar o teu propio servidor STR_NETWORK_SERVER_LIST_PLAYER_NAME_OSKTITLE :{BLACK}Escribe o teu nome STR_NETWORK_SERVER_LIST_ENTER_IP :{BLACK}Introduce a dirección IP do servidor # Start new multiplayer server -STR_NETWORK_START_SERVER_CAPTION :{WHITE}Comezar nova partida +STR_NETWORK_START_SERVER_CAPTION :{WHITE}Comezar nova partida multixogador -STR_NETWORK_START_SERVER_NEW_GAME_NAME :{BLACK}Nome: -STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP :{BLACK}O nome da partida mostraráse a outros xogadores no menú de selección de partida multixogador +STR_NETWORK_START_SERVER_NEW_GAME_NAME :{BLACK}Nome da partida: +STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP :{BLACK}O nome da partida mostrarase a outros xogadores no menú de selección de partida multixogador STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}Establecer contrasinal -STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Protexe a túa partida cun contrasinal se non queres que outras persoas se unan +STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Protexe a túa partida cun contrasinal se non queres ser accesible públicamente -STR_NETWORK_START_SERVER_LAN_INTERNET :LAN / Internet -STR_NETWORK_START_SERVER_INTERNET_ADVERTISE :Internet (anunciar) +STR_NETWORK_START_SERVER_UNADVERTISED :Non +STR_NETWORK_START_SERVER_ADVERTISED :Si 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_TOOLTIP :{BLACK}Escolle o máximo número de clientes. Non tódolas liñas teñen que estar cubertas +STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}Escolle o máximo número de clientes. Non tódolos ocos teñen que estar cubertos STR_NETWORK_START_SERVER_COMPANIES_SELECT :{BLACK}{NUM} compañía{P "" s} -STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}Nº máx. de compañías: +STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}Número máx. de compañías: STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES_TOOLTIP :{BLACK}Limita-lo servidor a unha certa cantidade de compañías STR_NETWORK_START_SERVER_SPECTATORS_SELECT :{BLACK}{NUM} espectador{P "" es} -STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK}Nº máx. de espectadores: +STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK}Número máx. de espectadores: STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS_TOOLTIP :{BLACK}Limita-lo servidor a unha certa cantidade de espectadores STR_NETWORK_START_SERVER_LANGUAGE_SPOKEN :{BLACK}Idioma falado: -STR_NETWORK_START_SERVER_LANGUAGE_TOOLTIP :{BLACK}Outros xogadores sabrán cal é o idioma que se fala no servidor +STR_NETWORK_START_SERVER_LANGUAGE_TOOLTIP :{BLACK}Outros xogadores saberán cal é o idioma que se fala no servidor -STR_NETWORK_START_SERVER_NEW_GAME_NAME_OSKTITLE :{BLACK}Escribe o nome para a partida en rede +STR_NETWORK_START_SERVER_NEW_GAME_NAME_OSKTITLE :{BLACK}Escribe un nome para a partida en rede # Network game languages ############ Leave those lines in this order!! @@ -1537,43 +1967,44 @@ STR_NETWORK_GAME_LOBBY_STATIONS :{SILVER}Estaci STR_NETWORK_GAME_LOBBY_PLAYERS :{SILVER}Xogadores: {WHITE}{STRING} STR_NETWORK_GAME_LOBBY_NEW_COMPANY :{BLACK}Nova compañía -STR_NETWORK_GAME_LOBBY_NEW_COMPANY_TOOLTIP :{BLACK}Abrir unha nova compañía +STR_NETWORK_GAME_LOBBY_NEW_COMPANY_TOOLTIP :{BLACK}Crear unha nova compañía STR_NETWORK_GAME_LOBBY_SPECTATE_GAME :{BLACK}Observar partida STR_NETWORK_GAME_LOBBY_SPECTATE_GAME_TOOLTIP :{BLACK}Observa-la partida coma espectador -STR_NETWORK_GAME_LOBBY_JOIN_COMPANY :{BLACK}Unirse a compañía -STR_NETWORK_GAME_LOBBY_JOIN_COMPANY_TOOLTIP :{BLACK}Axudar a manexar compañía +STR_NETWORK_GAME_LOBBY_JOIN_COMPANY :{BLACK}Unirse a unha compañía +STR_NETWORK_GAME_LOBBY_JOIN_COMPANY_TOOLTIP :{BLACK}Axudar a dirixir esta compañía # Network connecting window STR_NETWORK_CONNECTING_CAPTION :{WHITE}Conectando... ############ Leave those lines in this order!! STR_NETWORK_CONNECTING_1 :{BLACK}(1/6) Conectando.. -STR_NETWORK_CONNECTING_2 :{BLACK}(2/6) Autorizando.. -STR_NETWORK_CONNECTING_3 :{BLACK}(3/6) Esperando.. -STR_NETWORK_CONNECTING_4 :{BLACK}(4/6) Descargando mapa.. -STR_NETWORK_CONNECTING_5 :{BLACK}(5/6) Procesando datos.. -STR_NETWORK_CONNECTING_6 :{BLACK}(6/6) Rexistrando.. - -STR_NETWORK_CONNECTING_SPECIAL_1 :{BLACK}Descargando información da partida.. -STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}Descargando información da compañía.. +STR_NETWORK_CONNECTING_2 :{BLACK}(2/6) Autorizando... +STR_NETWORK_CONNECTING_3 :{BLACK}(3/6)Agardando... +STR_NETWORK_CONNECTING_4 :{BLACK}(4/6) Descargando mapa... +STR_NETWORK_CONNECTING_5 :{BLACK}(5/6) Procesando datos... +STR_NETWORK_CONNECTING_6 :{BLACK}(6/6) Rexistrando... + +STR_NETWORK_CONNECTING_SPECIAL_1 :{BLACK}Descargando información da partida... +STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}Descargando información da compañía... ############ End of leave-in-this-order STR_NETWORK_CONNECTING_WAITING :{BLACK}{NUM} cliente{P "" s} diante de ti -STR_NETWORK_CONNECTING_DOWNLOADING_2 :{BLACK}{BYTES} / {BYTES} descargados +STR_NETWORK_CONNECTING_DOWNLOADING_1 :{BLACK}Descargados {BYTES} ata agora +STR_NETWORK_CONNECTING_DOWNLOADING_2 :{BLACK}{BYTES} / {BYTES} descargados ata agora STR_NETWORK_CONNECTION_DISCONNECT :{BLACK}Desconectar -STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}O servidor está protexido. Introduce clave -STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}A compañía está protexida. Introduce clave +STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}O servidor está protexido. Introduce o contrasinal +STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}A compañía está protexida. Introduce o contrasinal # Network company list added strings -STR_NETWORK_COMPANY_LIST_CLIENT_LIST :{WHITE}Lista de Clientes +STR_NETWORK_COMPANY_LIST_CLIENT_LIST :{WHITE}Lista de clientes STR_NETWORK_COMPANY_LIST_SPECTATE :{WHITE}Observar STR_NETWORK_COMPANY_LIST_NEW_COMPANY :{WHITE}Nova compañía # Network client list -STR_NETWORK_CLIENTLIST_KICK :Patear -STR_NETWORK_CLIENTLIST_BAN :Expulsar -STR_NETWORK_CLIENTLIST_GIVE_MONEY :Dar diñeiro +STR_NETWORK_CLIENTLIST_KICK :Chimpar +STR_NETWORK_CLIENTLIST_BAN :Bloquear +STR_NETWORK_CLIENTLIST_GIVE_MONEY :Dar cartos STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :Falar a todos STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :Falar con compañía STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :Mensaxe privada @@ -1582,10 +2013,10 @@ STR_NETWORK_SERVER :Servidor STR_NETWORK_CLIENT :Cliente STR_NETWORK_SPECTATORS :Espectadores -STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Introduce a cantidade de diñeiro que queres dar +STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Introduce a cantidade de cartos que queres dar # Network set password -STR_COMPANY_PASSWORD_CANCEL :{BLACK}Non graba lo contrasinal introducido +STR_COMPANY_PASSWORD_CANCEL :{BLACK}Non grava-lo contrasinal introducido STR_COMPANY_PASSWORD_OK :{BLACK}Asignar á compañía o novo contrasinal STR_COMPANY_PASSWORD_CAPTION :{WHITE}Contrasinal da compañía STR_COMPANY_PASSWORD_MAKE_DEFAULT :{BLACK}Contrasinal por defecto para a compañía @@ -1609,7 +2040,7 @@ STR_NETWORK_CHAT_TO_COMPANY :[Equipo] A {STR STR_NETWORK_CHAT_CLIENT :[Privado] {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_TO_CLIENT :[Privado] A {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_ALL :[Todos] {STRING}: {WHITE}{STRING} -STR_NETWORK_CHAT_OSKTITLE :{BLACK}Escribe o texto para a charla en rede +STR_NETWORK_CHAT_OSKTITLE :{BLACK}Escribe o texto para a parola en rede # Network messages STR_NETWORK_ERROR_NOTAVAILABLE :{WHITE}Non se atoparon dispositivos de rede ou compilouse sen ENABLE_NETWORK @@ -1619,21 +2050,26 @@ STR_NETWORK_ERROR_NEWGRF_MISMATCH :{WHITE}Non se p STR_NETWORK_ERROR_DESYNC :{WHITE}Sincronización da partida en rede fallida STR_NETWORK_ERROR_LOSTCONNECTION :{WHITE}Perdeuse a conexión da partida en rede STR_NETWORK_ERROR_SAVEGAMEERROR :{WHITE}Non se pode carga-la partida -STR_NETWORK_ERROR_SERVER_START :{WHITE}Non se pode arranca-lo servidor -STR_NETWORK_ERROR_CLIENT_START :{WHITE}Non se pode conectar +STR_NETWORK_ERROR_SERVER_START :{WHITE}Non se puido inicia-lo servidor +STR_NETWORK_ERROR_CLIENT_START :{WHITE}Non se puido conectar STR_NETWORK_ERROR_TIMEOUT :{WHITE}Conexión #{NUM} fóra de tempo -STR_NETWORK_ERROR_SERVER_ERROR :{WHITE}Produciuse un erro de protocolo e pechouse a conexión -STR_NETWORK_ERROR_WRONG_REVISION :{WHITE}A revisión deste cliente non é igual ca revisión do servidor. -STR_NETWORK_ERROR_WRONG_PASSWORD :{WHITE}Contrasinal errónea +STR_NETWORK_ERROR_SERVER_ERROR :{WHITE}Detectouse un erro de protocolo e pechouse a conexión +STR_NETWORK_ERROR_WRONG_REVISION :{WHITE}A revisión deste cliente non é igual ca revisión do servidor +STR_NETWORK_ERROR_WRONG_PASSWORD :{WHITE}Contrasinal incorrecto STR_NETWORK_ERROR_SERVER_FULL :{WHITE}O servidor está cheo STR_NETWORK_ERROR_SERVER_BANNED :{WHITE}Non se che permite o acceso a este servidor -STR_NETWORK_ERROR_KICKED :{WHITE}Fuches pateado da partida +STR_NETWORK_ERROR_KICKED :{WHITE}Chimpáronte da partida STR_NETWORK_ERROR_CHEATER :{WHITE}Non se permite facer trampas neste servidor +STR_NETWORK_ERROR_TOO_MANY_COMMANDS :{WHITE}Estiveches mandando demasiados comandos ao servidor +STR_NETWORK_ERROR_TIMEOUT_PASSWORD :{WHITE}Tardaches demasiado en introduci-lo contrasinal +STR_NETWORK_ERROR_TIMEOUT_COMPUTER :{WHITE}A túa computadora é demasiado lenta para seguir a velocidade do servidor +STR_NETWORK_ERROR_TIMEOUT_MAP :{WHITE}A túa computadora tardou demasiado en descarga-lo mapa +STR_NETWORK_ERROR_TIMEOUT_JOIN :{WHITE}A túa computadora tardou demasiado en unirse ao servidor ############ Leave those lines in this order!! STR_NETWORK_ERROR_CLIENT_GENERAL :erro xeral STR_NETWORK_ERROR_CLIENT_DESYNC :erro de descincronización -STR_NETWORK_ERROR_CLIENT_SAVEGAME :no se pode carga-lo mapa +STR_NETWORK_ERROR_CLIENT_SAVEGAME :no se puido carga-lo mapa STR_NETWORK_ERROR_CLIENT_CONNECTION_LOST :perdeuse a conexión STR_NETWORK_ERROR_CLIENT_PROTOCOL_ERROR :erro de protocolo STR_NETWORK_ERROR_CLIENT_NEWGRF_MISMATCH :NewGRF erróneo @@ -1641,39 +2077,52 @@ STR_NETWORK_ERROR_CLIENT_NOT_AUTHORIZED :non autorizado STR_NETWORK_ERROR_CLIENT_NOT_EXPECTED :recibiuse un paquete inválido ou inesperado STR_NETWORK_ERROR_CLIENT_WRONG_REVISION :revisión errónea STR_NETWORK_ERROR_CLIENT_NAME_IN_USE :o nome xa está en uso -STR_NETWORK_ERROR_CLIENT_WRONG_PASSWORD :contrasinal incorrecta -STR_NETWORK_ERROR_CLIENT_COMPANY_MISMATCH :company-id erróneo en DoCommand -STR_NETWORK_ERROR_CLIENT_KICKED :pateado polo servidor +STR_NETWORK_ERROR_CLIENT_WRONG_PASSWORD :contrasinal incorrecto +STR_NETWORK_ERROR_CLIENT_COMPANY_MISMATCH :compañía errónea nun DoCommand +STR_NETWORK_ERROR_CLIENT_KICKED :chimpado polo servidor STR_NETWORK_ERROR_CLIENT_CHEATER :intentaba usar unha trampa STR_NETWORK_ERROR_CLIENT_SERVER_FULL :servidor cheo +STR_NETWORK_ERROR_CLIENT_TOO_MANY_COMMANDS :estaba mandando demasiados comandos +STR_NETWORK_ERROR_CLIENT_TIMEOUT_PASSWORD :non recibiu ningún contrasinal a tempo +STR_NETWORK_ERROR_CLIENT_TIMEOUT_COMPUTER :timeout xeral +STR_NETWORK_ERROR_CLIENT_TIMEOUT_MAP :a descarga do mapa tardou demasiado +STR_NETWORK_ERROR_CLIENT_TIMEOUT_JOIN :o procesado do mapa tardou demasiado ############ End of leave-in-this-order +STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION_CAPTION :{WHITE}Posible perda da conexión +STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION :{WHITE}Nos últimos {NUM} segundo{P "" s} non chegaron datos do servidor # Network related errors STR_NETWORK_SERVER_MESSAGE :*** {1:STRING} ############ Leave those lines in this order!! STR_NETWORK_SERVER_MESSAGE_GAME_PAUSED :Partida en pausa ({STRING}) +STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_1 :Partida aínda en pausa ({STRING}) +STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_2 :Partida aínda en pausa ({STRING}, {STRING}) +STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_3 :Partida aínda en pausa ({STRING}, {STRING}, {STRING}) +STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_4 :Partida aínda en pausa ({STRING}, {STRING}, {STRING}, {STRING}) +STR_NETWORK_SERVER_MESSAGE_GAME_UNPAUSED :Pausa rematada ({STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_REASON_NOT_ENOUGH_PLAYERS :número de xogadores STR_NETWORK_SERVER_MESSAGE_GAME_REASON_CONNECTING_CLIENTS :conectando clientes STR_NETWORK_SERVER_MESSAGE_GAME_REASON_MANUAL :manual +STR_NETWORK_SERVER_MESSAGE_GAME_REASON_GAME_SCRIPT :script do xogo ############ End of leave-in-this-order STR_NETWORK_MESSAGE_CLIENT_LEAVING :saíndo STR_NETWORK_MESSAGE_CLIENT_JOINED :*** {STRING} uniuse á partida STR_NETWORK_MESSAGE_CLIENT_JOINED_ID :*** {STRING} uniuse á partida (Cliente #{2:NUM}) -STR_NETWORK_MESSAGE_CLIENT_COMPANY_JOIN :*** {STRING} uniuse a compañía #{2:NUM} -STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} uniuse ós espectadores +STR_NETWORK_MESSAGE_CLIENT_COMPANY_JOIN :*** {STRING} uniuse á compañía #{2:NUM} +STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} uniuse aos espectadores STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} comezou unha nova compañía (#{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} saiu da partida ({2:STRING}) STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} cambiou o seu nome a {STRING} -STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} deu a túa companía {2:CURRENCY_LONG} +STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} deu á túa companía {2:CURRENCY_LONG} STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** Diches a {1:STRING} {2:CURRENCY_LONG} -STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}O servidor pechou a conexión -STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}O servidor estase a reiniciar...{}Espera por favor... +STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}O servidor pechou a sesión +STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}O servidor estase a reiniciar...{}Agarda por favor... # Content downloading window -STR_CONTENT_TITLE :{WHITE}Descargar contido +STR_CONTENT_TITLE :{WHITE}Descargando contidos STR_CONTENT_TYPE_CAPTION :{BLACK}Tipo -STR_CONTENT_TYPE_CAPTION_TOOLTIP :{BLACK}Tipo do contido +STR_CONTENT_TYPE_CAPTION_TOOLTIP :{BLACK}Tipo de contido STR_CONTENT_NAME_CAPTION :{BLACK}Nome STR_CONTENT_NAME_CAPTION_TOOLTIP :{BLACK}Nome do contido STR_CONTENT_MATRIX_TOOLTIP :{BLACK}Pincha nunha liña para ve-los detalles{}Pincha na caixa para marcalo para descargar @@ -1683,14 +2132,20 @@ STR_CONTENT_SELECT_UPDATES_CAPTION :{BLACK}Seleccio STR_CONTENT_SELECT_UPDATES_CAPTION_TOOLTIP :{BLACK}Marcar todo o contido que é unha actualización do existente para descargar STR_CONTENT_UNSELECT_ALL_CAPTION :{BLACK}Deseleccionar todo STR_CONTENT_UNSELECT_ALL_CAPTION_TOOLTIP :{BLACK}Marcar todo o contido para non descargar +STR_CONTENT_SEARCH_EXTERNAL :{BLACK}Procurar sitios web externos +STR_CONTENT_SEARCH_EXTERNAL_TOOLTIP :{BLACK}Procurar contidos non dispoñíbeis no servidor de contidos de OpenTTD en sitios web non asociados con OpenTTD +STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER_CAPTION :{WHITE}Estás a saír de OpenTTD! +STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER :{WHITE}Os termos e condicións cambian para descargar contidos de páxinas web externas.{}Terás que dirixirte aos sitios web externos para ter instruccións acerca de cómo instalar os contidos en OpenTTD.{}Queres continuar? STR_CONTENT_FILTER_TITLE :{BLACK}Filtro etiqueta/nome: +STR_CONTENT_OPEN_URL :{BLACK}Visita a páxina web +STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}Visita a páxina web para este contido STR_CONTENT_DOWNLOAD_CAPTION :{BLACK}Descargar STR_CONTENT_DOWNLOAD_CAPTION_TOOLTIP :{BLACK}Comezar a descarga-lo contido seleccionado STR_CONTENT_TOTAL_DOWNLOAD_SIZE :{SILVER}Tamaño total da descarga: {WHITE}{BYTES} STR_CONTENT_DETAIL_TITLE :{SILVER}INFORMACIÓN DO CONTIDO STR_CONTENT_DETAIL_SUBTITLE_UNSELECTED :{SILVER}Non seleccionaches isto para descargar STR_CONTENT_DETAIL_SUBTITLE_SELECTED :{SILVER}Seleccionaches isto para descargalo -STR_CONTENT_DETAIL_SUBTITLE_AUTOSELECTED :{SILVER}Esta dependencia for seleccionada para descargar +STR_CONTENT_DETAIL_SUBTITLE_AUTOSELECTED :{SILVER}Esta dependencia foi seleccionada para descargar STR_CONTENT_DETAIL_SUBTITLE_ALREADY_HERE :{SILVER}Xa tes isto STR_CONTENT_DETAIL_SUBTITLE_DOES_NOT_EXIST :{SILVER}Este contido é descoñecido e non pode baixarse en OpenTTD STR_CONTENT_DETAIL_UPDATE :{SILVER}Esto é un reemprazo para o {STRING} existente @@ -1703,8 +2158,8 @@ STR_CONTENT_DETAIL_FILESIZE :{SILVER}Tamaño STR_CONTENT_DETAIL_SELECTED_BECAUSE_OF :{SILVER}Seleccionado porque: {WHITE}{STRING} STR_CONTENT_DETAIL_DEPENDENCIES :{SILVER}Dependencias: {WHITE}{STRING} STR_CONTENT_DETAIL_TAGS :{SILVER}Etiquetas: {WHITE}{STRING} -STR_CONTENT_NO_ZLIB :{WHITE}OpenTTD construíuse sen soporte para "zlib"... -STR_CONTENT_NO_ZLIB_SUB :{WHITE}... non é posible descargar contido! +STR_CONTENT_NO_ZLIB :{WHITE}OpenTTD non ten soporte para "zlib"... +STR_CONTENT_NO_ZLIB_SUB :{WHITE}... non é posible descarga-lo contido! # Order of these is important! STR_CONTENT_TYPE_BASE_GRAPHICS :Gráficos base @@ -1715,6 +2170,8 @@ STR_CONTENT_TYPE_SCENARIO :Escenario STR_CONTENT_TYPE_HEIGHTMAP :Mapa de altura STR_CONTENT_TYPE_BASE_SOUNDS :Sons base STR_CONTENT_TYPE_BASE_MUSIC :Música base +STR_CONTENT_TYPE_GAME_SCRIPT :Script do xogo +STR_CONTENT_TYPE_GS_LIBRARY :Biblioteca GS # Content downloading progress window STR_CONTENT_DOWNLOAD_TITLE :{WHITE}Descargando contido... @@ -1730,20 +2187,35 @@ STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD_CONNECTION_LOST :{WHITE}... perd STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD_FILE_NOT_WRITABLE :{WHITE}... arquivo non escribible STR_CONTENT_ERROR_COULD_NOT_EXTRACT :{WHITE}Non se puido descomprimi-lo arquivo descargado +STR_MISSING_GRAPHICS_SET_CAPTION :{WHITE}Gráficos non atopados +STR_MISSING_GRAPHICS_SET_MESSAGE :{BLACK}OpenTTD require gráficos para funcionar que non foron atopados. Queres que OpenTTD descargue e instale estes gráficos? +STR_MISSING_GRAPHICS_YES_DOWNLOAD :{BLACK}Si, descarga os gráficos +STR_MISSING_GRAPHICS_NO_QUIT :{BLACK}Non, abandona OpenTTD # Transparency settings window STR_TRANSPARENCY_CAPTION :{WHITE}Opcións de Transparencia -STR_TRANSPARENT_SIGNS_TOOLTIP :{BLACK}Habilitar transparencia para as sinais das estacións. CTRL+Click para bloquear. -STR_TRANSPARENT_TREES_TOOLTIP :{BLACK}Habilitar transparencia para árbores CTRL+Click para bloquear. -STR_TRANSPARENT_HOUSES_TOOLTIP :{BLACK}Habilitar transparencia para casas. CTRL+Click para bloquear. -STR_TRANSPARENT_INDUSTRIES_TOOLTIP :{BLACK}Habilitar transparencia para industrias. CTRL+Click para bloquear. -STR_TRANSPARENT_BUILDINGS_TOOLTIP :{BLACK}Habilitar transparencia para estacións, depósitos e puntos de ruta. CTRL+Click para bloquear. -STR_TRANSPARENT_BRIDGES_TOOLTIP :{BLACK}Habilitar transparencia para pontes. CTRL+Click para bloquear. -STR_TRANSPARENT_STRUCTURES_TOOLTIP :{BLACK}Habilitar transparencia para estruturas coma faros e antenas. CTRL+Click para bloquear. -STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}Activar a transparencia para a catenaria. CTRL+Click para bloquear. -STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Activar transparencia para os indicadores de carga. CTRL+Click para bloquear. +STR_TRANSPARENT_SIGNS_TOOLTIP :{BLACK}Habilitar transparencia para os rótulos. CTRL+Click para bloquear +STR_TRANSPARENT_TREES_TOOLTIP :{BLACK}Habilitar transparencia para as árbores CTRL+Click para bloquear +STR_TRANSPARENT_HOUSES_TOOLTIP :{BLACK}Habilitar transparencia para as casas. CTRL+Click para bloquear +STR_TRANSPARENT_INDUSTRIES_TOOLTIP :{BLACK}Habilitar transparencia para as industrias. CTRL+Click para bloquear +STR_TRANSPARENT_BUILDINGS_TOOLTIP :{BLACK}Habilitar transparencia para as estacións, depósitos e puntos de ruta. CTRL+Click para bloquear +STR_TRANSPARENT_BRIDGES_TOOLTIP :{BLACK}Habilitar transparencia para as pontes. CTRL+Click para bloquear +STR_TRANSPARENT_STRUCTURES_TOOLTIP :{BLACK}Habilitar transparencia para estruturas coma faros e antenas. CTRL+Click para bloquear +STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}Activar a transparencia para a catenaria. CTRL+Click para bloquear +STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Activar transparencia para os indicadores de carga. CTRL+Click para bloquear STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}Facer os obxectos invisibles en lugar de transparentes +# Linkgraph legend window +STR_LINKGRAPH_LEGEND_CAPTION :{BLACK}Lenda de tomar carga +STR_LINKGRAPH_LEGEND_ALL :{BLACK}Todos +STR_LINKGRAPH_LEGEND_NONE :{BLACK}Ningún +STR_LINKGRAPH_LEGEND_SELECT_COMPANIES :{BLACK}Selecciona as compañías para mostrar + +# Linkgraph legend window and linkgraph legend in smallmap +STR_LINKGRAPH_LEGEND_UNUSED :{TINY_FONT}{BLACK}en desuso +STR_LINKGRAPH_LEGEND_SATURATED :{TINY_FONT}{BLACK}saturado +STR_LINKGRAPH_LEGEND_OVERLOADED :{TINY_FONT}{BLACK}exceso de carga + # Base for station construction window(s) STR_STATION_BUILD_COVERAGE_AREA_TITLE :{BLACK}Resaltar área de cobertura STR_STATION_BUILD_COVERAGE_OFF :{BLACK}Off @@ -1758,6 +2230,7 @@ STR_JOIN_STATION_CAPTION :{WHITE}Unir est STR_JOIN_STATION_CREATE_SPLITTED_STATION :{YELLOW}Construír unha estación separada STR_JOIN_WAYPOINT_CAPTION :{WHITE}Unir punto de ruta +STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Constrúe un un punto de ruta separado # Rail construction toolbar STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Construción de Ferrocarrís @@ -1765,20 +2238,24 @@ STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :Construción de STR_RAIL_TOOLBAR_MONORAIL_CONSTRUCTION_CAPTION :Construción de Monorraíl STR_RAIL_TOOLBAR_MAGLEV_CONSTRUCTION_CAPTION :Construción de Maglev -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Construír vía de ferrocarril. CTRL conmuta entre construír/borrar para a construción das vías -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}Construír a vía de ferrocarril usando o modo Autoraíl. CTRL conmuta entre construír/borrar para a construción das vías -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}Construír depósito de trens (para construír e dar servizo os trens) -STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}Convertir raíl a punto de ruta. CTRL permite unir puntos de ruta -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_STATION :{BLACK}Construír estación de ferrocarril. CTRL permite unir estacións -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Construír sinais de ferrocaril. Ctrl troca entre semáforos/sináis luminosas{}Arrastrando constrúense sinais ó longo dun tramo recto de ferrocarril. Ctrl construe sináis ata o seguinte cruce{}Ctrl+Click abre a ventana de selección -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_BRIDGE :{BLACK}Construír ponte de ferrocaril -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TUNNEL :{BLACK}Construír túnel de ferocarril +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Construír vía de ferrocarril. CTRL conmuta entre construír/eliminar para a construción das vías. Shift conmunta entre construir/mostrar a estimación de custo +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}Construír a vía de ferrocarril usando o modo Autorail. CTRL conmuta entre construír/borrar para a construción das vías +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}Construír depósito de trens (para construción e mantemento de trens). Shift conmuta entre construir e mostrar unha estimación de custo +STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}Convertir raíl a punto de ruta. CTRL permite unir puntos de ruta. Shift conmuta entre construción e mostrar unha estimación do custo +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_STATION :{BLACK}Construír estación de ferrocarril. CTRL permite unir estacións. Shift conmuta entre construción e mostrar unha estimación do custo +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Construír sinais de ferrocaril. Ctrl conmuta entre semáforos/sináis luminosas{}Arrastrando constrúense sinais ó longo dun tramo recto de carril de ferrocarril. Ctrl construe sináis ata o seguinte cruce{}Ctrl+Click abre a ventana de selección. Shift conmuta entre construcion e mostrar unha estimación de coste +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_BRIDGE :{BLACK}Construír ponte de ferrocaril. Shift conmuta entre contrución e mostrar unha estimación do coste +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TUNNEL :{BLACK}Construír túnel de ferocarril. Shift conmuta entre construción e mostrar unha estimación do coste STR_RAIL_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Construír/eliminar vías, sinais, puntos de ruta e estacións. Pulsando CTRL tamén borra a vía de puntos de ruta e estacións -STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL :{BLACK}Convertir/Actualizar tipo de vía +STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL :{BLACK}Convertir/Actualizar tipo de vía. Shift conmuta entre construción e mostrar unha estimación do coste +STR_RAIL_NAME_RAILROAD :Ferrocarril +STR_RAIL_NAME_ELRAIL :Ferrocarril electrificado +STR_RAIL_NAME_MONORAIL :Monorrail +STR_RAIL_NAME_MAGLEV :Maglev # Rail depot construction window -STR_BUILD_DEPOT_TRAIN_ORIENTATION_CAPTION :{WHITE}Orient. do Dep. de Trens +STR_BUILD_DEPOT_TRAIN_ORIENTATION_CAPTION :{WHITE}Orientación do depósito de trens STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}Selecciona-la orientación do depósito de ferrocarrís # Rail waypoint construction window @@ -1786,14 +2263,14 @@ STR_WAYPOINT_CAPTION :{WHITE}Punto de STR_WAYPOINT_GRAPHICS_TOOLTIP :{BLACK}Selecciona-lo tipo de punto de ruta # Rail station construction window -STR_STATION_BUILD_RAIL_CAPTION :{WHITE}Selección da Estación +STR_STATION_BUILD_RAIL_CAPTION :{WHITE}Selección da estación STR_STATION_BUILD_ORIENTATION :{BLACK}Orientación STR_STATION_BUILD_RAILROAD_ORIENTATION_TOOLTIP :{BLACK}Selecciona-la orientación da estación de ferrocarril -STR_STATION_BUILD_NUMBER_OF_TRACKS :{BLACK}Lonxitude da plataforma -STR_STATION_BUILD_NUMBER_OF_TRACKS_TOOLTIP :{BLACK}Selecciona-lo número de platafomas da estación de ferrocarril -STR_STATION_BUILD_PLATFORM_LENGTH :{BLACK}Número de vías +STR_STATION_BUILD_NUMBER_OF_TRACKS :{BLACK}Número de vías +STR_STATION_BUILD_NUMBER_OF_TRACKS_TOOLTIP :{BLACK}Selecciona-lo número de andéns da estación de ferrocarril +STR_STATION_BUILD_PLATFORM_LENGTH :{BLACK}Lonxitude do andén STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP :{BLACK}Selecciona-la lonxitude da estación de ferrocarril -STR_STATION_BUILD_DRAG_DROP :{BLACK}Arrastrar e Soltar +STR_STATION_BUILD_DRAG_DROP :{BLACK}Arrastrar e soltar STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}Construír estación arrastrando e soltando STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}Selecciona a clase de estación a mostrar @@ -1803,90 +2280,91 @@ STR_STATION_CLASS_DFLT :Estación por d STR_STATION_CLASS_WAYP :Puntos de ruta # Signal window -STR_BUILD_SIGNAL_CAPTION :{WHITE}Selección de Sinais -STR_BUILD_SIGNAL_SEMAPHORE_NORM_TOOLTIP :{BLACK}Sinal De Bloque (semáforo){}Este é o tipo máis básico de sinal, só permite un tren no mesmo bloque ó mesmo tempo. -STR_BUILD_SIGNAL_SEMAPHORE_ENTRY_TOOLTIP :{BLACK}Sinal de Entrada(semáforo){}Verde mentras haxa unha ou máis sinais de saída verdes na seguinte sección de vía. Noutro caso estará vermella. -STR_BUILD_SIGNAL_SEMAPHORE_EXIT_TOOLTIP :{BLACK}Sinal de Saída (semáforo){}Actúa igual que unha sinal de bloque pero é necesaria para activar a cor correcta nas sinais de entrada e nas pre-sinais combo. -STR_BUILD_SIGNAL_SEMAPHORE_COMBO_TOOLTIP :{BLACK}Sinal Combo (semáforo){}A sinal combo funciona coma unha sinal de entrada e saída. Esto permíteche crear "árbores" grandes de presinais. -STR_BUILD_SIGNAL_SEMAPHORE_PBS_TOOLTIP :{BLACK}Sinal De Ruta (semáforo){}Unha sinal de ruta permite entrar a máis dun tren nun bloque ó mesmo tempo, se o tren pode atopar unha ruta a un punto de parada seguro. As sinais de ruta estándar poden pasarse en sentido contrario. -STR_BUILD_SIGNAL_SEMAPHORE_PBS_OWAY_TOOLTIP :{BLACK}Sinal De Ruta Dun Sentido (semáforo){}Unha sinal de ruta permite entrar a máis dun tren nun bloque ó mesmo tempo, se o tren pode atopar unha ruta a un punto de parada seguro. As dun sentido non se poden atravesar en sentido contrario. -STR_BUILD_SIGNAL_ELECTRIC_NORM_TOOLTIP :{BLACK}Sinal De Bloque (eléctrica){}Este é o tipo máis básico de sinal, permite só un tren no mesmo bloque ó mesmo tempo. -STR_BUILD_SIGNAL_ELECTRIC_ENTRY_TOOLTIP :{BLACK}Sinal de Entrada (eléctrica){}Verde mentras haxa unha ou máis sinais de saída verdes na seguinte sección de vía. Noutro caso estará vermella. -STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}Sinal de Saída (eléctrica){}Actúa igual que unha sinal de bloque pero é necesaria para activar o color correcto nas sinais de entrada e nas pre-sinais combo. -STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}Sinal Combo (eléctrica){}A sinal combo funciona coma unha sinal de entrada e saída. Esto permíteche crear "árbores" grandes de presinais. -STR_BUILD_SIGNAL_ELECTRIC_PBS_TOOLTIP :{BLACK}Sinal De Ruta (eléctrica){}Unha sinal de ruta permite entrar a máis dun tren nun bloque ó mesmo tempo, se o tren pode atopar unha ruta a un punto de parada seguro. As sinais de ruta estándar poden pasarse en sentido contrario. -STR_BUILD_SIGNAL_ELECTRIC_PBS_OWAY_TOOLTIP :{BLACK}Sinal De Ruta Dun Sentido (eléctrica){}Unha sinal de ruta permite entrar a máis dun tren nun bloque ó mesmo tempo, se o tren pode atopar unha ruta a un punto de parada seguro. As dun sentido non se poden atravesar en sentido contrario. -STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}Convertir Sinal{}Cando está seleccionado, convertirá o sinal no que se pinche ó tipo e variante seleccionados, CTRL+click cambiará a variante existente. -STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_TOOLTIP :{BLACK}Densidade de sinais ó arrastrar -STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_DECREASE_TOOLTIP :{BLACK}Diminuír a densidade de sinais ó arrastrar -STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_INCREASE_TOOLTIP :{BLACK}Aumentar a densidade de sinais ó arrastrar +STR_BUILD_SIGNAL_CAPTION :{WHITE}Selección de sinais +STR_BUILD_SIGNAL_SEMAPHORE_NORM_TOOLTIP :{BLACK}Sinal de bloqueo (mecánico){}Este é o tipo máis básico de sinal, só permite un tren no mesmo cantón ao mesmo tempo. +STR_BUILD_SIGNAL_SEMAPHORE_ENTRY_TOOLTIP :{BLACK}Sinal de entrada (mecánico){}Verde mentras haxa un ou máis sinais de saída verdes na seguinte sección de vía. Noutro caso estará vermella. +STR_BUILD_SIGNAL_SEMAPHORE_EXIT_TOOLTIP :{BLACK}Sinal de saída (mecánico){}Actúa igual que un sinal de bloqueo pero é necesaria para activar a cor correcta nas combinacións de sinal avanzado + sinal de entrada +STR_BUILD_SIGNAL_SEMAPHORE_COMBO_TOOLTIP :{BLACK}Sinal combo (mecánico){}O sinal combo funciona coma un sinal de entrada e saída. Esto permíteche crear "árbores" grandes de sinais avanzados +STR_BUILD_SIGNAL_SEMAPHORE_PBS_TOOLTIP :{BLACK}Sinal de ruta (mecánico){}Un sinal de ruta permite entrar a máis dun tren nun cantón ao mesmo tempo, se o tren pode atopar unha ruta a un punto de parada seguro. Os sinais de ruta estándar poden rebasarse en sentido contrario. +STR_BUILD_SIGNAL_SEMAPHORE_PBS_OWAY_TOOLTIP :{BLACK}Sinal de ruta de sentido único (mecánico){}Un sinal de ruta permite entrar a máis dun tren nun cantón ao mesmo tempo, se o tren pode atopar unha ruta a un punto de parada seguro. Os de un sentido non se poden rebasar en sentido contrario. +STR_BUILD_SIGNAL_ELECTRIC_NORM_TOOLTIP :{BLACK}Sinal de bloqueo (eléctrico){}Este é o tipo máis básico de sinal, permite só un tren no mesmo cantón ao mesmo tempo. +STR_BUILD_SIGNAL_ELECTRIC_ENTRY_TOOLTIP :{BLACK}Sinal de entrada (eléctrico){}Verde mentras haxa un ou máis sinais de saída verdes na seguinte sección de vía. Noutro caso estará vermella. +STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}Sinal de saída (eléctrico){}Actúa igual que un sinal de bloqueo pero é necesaria para activar a cor correcta nas combinacións de sinal avanzado + sinal de entrada +STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}Sinal combo (eléctrico){}O sinal combo funciona coma un sinal de entrada e saída. Esto permíteche crear "árbores" grandes de sinais avanzados +STR_BUILD_SIGNAL_ELECTRIC_PBS_TOOLTIP :{BLACK}Sinal de ruta (eléctrico){}Un sinal de ruta permite entrar a máis dun tren nun cantón ao mesmo tempo, se o tren pode atopar unha ruta a un punto de parada seguro. Os sinais de ruta estándar poden rebasarse en sentido contrario. +STR_BUILD_SIGNAL_ELECTRIC_PBS_OWAY_TOOLTIP :{BLACK}Sinal de ruta de sentido único (eléctrico){}Un sinal de ruta permite entrar a máis dun tren nun cantón ao mesmo tempo, se o tren pode atopar unha ruta a un punto de parada seguro. Os de un sentido non se poden atravesar en sentido contrario. +STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}Convertir sinal{}Cando está seleccionado, convertirá o sinal no que se pinche ao tipo e variante seleccionados, Ctrl+click cambiará a variante existente. Shift+click amosa o custo estimado de conversión +STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_TOOLTIP :{BLACK}Densidade de sinais ao arrastrar +STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_DECREASE_TOOLTIP :{BLACK}Diminuír a densidade de sinais ao arrastrar +STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_INCREASE_TOOLTIP :{BLACK}Aumentar a densidade de sinais ao arrastrar # Bridge selection window -STR_SELECT_RAIL_BRIDGE_CAPTION :{WHITE}Selecciona a Ponte do Ferrocarril -STR_SELECT_ROAD_BRIDGE_CAPTION :{WHITE}Selecciona a Ponte +STR_SELECT_RAIL_BRIDGE_CAPTION :{WHITE}Selecciona ponte ferroviaria +STR_SELECT_ROAD_BRIDGE_CAPTION :{WHITE}Selecciona ponte de estrada STR_SELECT_BRIDGE_SELECTION_TOOLTIP :{BLACK}Selección de pontes - picha na ponte seleccionada para construíla STR_SELECT_BRIDGE_INFO :{GOLD}{STRING},{} {VELOCITY} {WHITE}{CURRENCY_LONG} -STR_BRIDGE_NAME_SUSPENSION_STEEL :Colgante, Aceiro -STR_BRIDGE_NAME_GIRDER_STEEL :Vigas, Aceiro -STR_BRIDGE_NAME_CANTILEVER_STEEL :Voladizo, Aceiro -STR_BRIDGE_NAME_SUSPENSION_CONCRETE :Colgante, Cemento +STR_SELECT_BRIDGE_SCENEDIT_INFO :{GOLD}{STRING},{} {VELOCITY} +STR_BRIDGE_NAME_SUSPENSION_STEEL :Colgante, aceiro +STR_BRIDGE_NAME_GIRDER_STEEL :Vigas, aceiro +STR_BRIDGE_NAME_CANTILEVER_STEEL :Voladizo, aceiro +STR_BRIDGE_NAME_SUSPENSION_CONCRETE :Colgante, formigón STR_BRIDGE_NAME_WOODEN :Madeira -STR_BRIDGE_NAME_CONCRETE :Cemento -STR_BRIDGE_NAME_TUBULAR_STEEL :Tubular, Aceiro -STR_BRIDGE_TUBULAR_SILICON :Tubular, Silicona +STR_BRIDGE_NAME_CONCRETE :Formigón +STR_BRIDGE_NAME_TUBULAR_STEEL :Tubular, aceiro +STR_BRIDGE_TUBULAR_SILICON :Tubular, silicio # Road construction toolbar -STR_ROAD_TOOLBAR_ROAD_CONSTRUCTION_CAPTION :{WHITE}Construción de Estradas -STR_ROAD_TOOLBAR_TRAM_CONSTRUCTION_CAPTION :{WHITE}Construción de Tranvías -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_SECTION :{BLACK}Construír sección de estrada. CTRL conmuta entre construír/borrar para a construción de estradas -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_SECTION :{BLACK}Construír sección de vía de tranvía. CTRL conmuta entre construír/borrar para a construción de vías de tranvía -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOROAD :{BLACK}Construír estrada usando o modo Autoestrada. CTRL conmuta entre construír/borrar para a construción de estradas -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOTRAM :{BLACK}Construír sección de tranvía usando o modo Autotranvía. CTRL conmuta entre construír/borrar para as vías de tranvía -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}Construír depósito de vehículos de estrada (para comprar e dar servizo aos vehículos de estrada) -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}Construír depósito de tranvías (para comprar e dar servizo aos vehículos) -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_BUS_STATION :{BLACK}Construír estación de autobús -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_PASSENGER_TRAM_STATION :{BLACK}Construír estación de tranvía de pasaxeiros -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRUCK_LOADING_BAY :{BLACK}Construír bahía de carga de camións -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_CARGO_TRAM_STATION :{BLACK}Construír estación de tranvía de carga -STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_ONE_WAY_ROAD :{BLACK}Activar/Desactivar estradas dun sentido -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_BRIDGE :{BLACK}Construír ponte de estrada -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_BRIDGE :{BLACK}Construír ponte de tranvías -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_TUNNEL :{BLACK}Construír túnel de estrada -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_TUNNEL :{BLACK}Construír túnel de tranvías -STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_ROAD :{BLACK}Intecambiar construír/eliminar para construír estradas +STR_ROAD_TOOLBAR_ROAD_CONSTRUCTION_CAPTION :{WHITE}Construción de estradas +STR_ROAD_TOOLBAR_TRAM_CONSTRUCTION_CAPTION :{WHITE}Construción de tranvía +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_SECTION :{BLACK}Construír sección de estrada. CTRL conmuta entre construír/borrar para a construción de estradas. Shift conmuta entre construír/mostrar estimación de custo +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_SECTION :{BLACK}Construír sección de vía de tranvía. Ctrl conmuta entre construír/borrar para a construción de vías de tranvía. Shift conmuta entre construír/mostrar estimación de custo +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOROAD :{BLACK}Construír estrada usando o modo Auto-estrada. Ctrl conmuta entre construír/borrar para a construción de estradas. Shift alterna entre construír/mostrar estimación de custo +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOTRAM :{BLACK}Construír sección de tranvía usando o modo Auto-tranvía. Ctrl conmuta entre construír/borrar para as vías de tranvía. Shift alterna entre construír/mostrar estimación de custo +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}Construír depósito de vehículos de estrada (para comprar e dar servizo aos vehículos de estrada). Shift alterna entre construír/mostrar estimación de custo +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}Construír depósito de tranvías (para comprar e dar servizo aos vehículos). Shift alterna entre construír/mostrar estimación de custo +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_BUS_STATION :{BLACK}Construír estación de autobuses. Ctrl habilita unir estacións. Shift alterna entre construír/mostrar estimación de custo +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_PASSENGER_TRAM_STATION :{BLACK}Construír estación de tranvía de pasaxeiros. Ctrl habilita unir estacións. Shift alterna entre construír/mostrar estimación de custo +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRUCK_LOADING_BAY :{BLACK}Construír área de carga de camións. Ctrl habilita unir estacións. Shift alterna entre construír/mostrar estimación de custo +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_CARGO_TRAM_STATION :{BLACK}Construír estación de tranvía de carga. Ctrl habilita unir estacións. Shift alterna entre construír/mostrar estimación de custo +STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_ONE_WAY_ROAD :{BLACK}Activar/Desactivar estradas de sentido único +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_BRIDGE :{BLACK}Construír ponte de estrada. Shift alterna entre construír/mostrar estimación de custo +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_BRIDGE :{BLACK}Construír ponte de tranvía. Shift alterna entre construír/mostrar estimación de custo +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_TUNNEL :{BLACK}Construír túnel de estrada. Shift alterna entre construír/mostrar estimación de custo +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_TUNNEL :{BLACK}Construír túnel de tranvía. Shift alterna entre construír/mostrar estimación de custo +STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_ROAD :{BLACK}Intecambiar construír/eliminar para a construción de estradas STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS :{BLACK}Cambia entre construír/quitar para a construción de tranvías # Road depot construction window -STR_BUILD_DEPOT_ROAD_ORIENTATION_CAPTION :{WHITE}Orient. do Depósito +STR_BUILD_DEPOT_ROAD_ORIENTATION_CAPTION :{WHITE}Orientación do depósito de estrada STR_BUILD_DEPOT_ROAD_ORIENTATION_SELECT_TOOLTIP :{BLACK}Seleciona-la orientación do depósito de vehículos de estrada -STR_BUILD_DEPOT_TRAM_ORIENTATION_CAPTION :{WHITE}Orientación do Depósito de Tranvías +STR_BUILD_DEPOT_TRAM_ORIENTATION_CAPTION :{WHITE}Orientación do depósito de tranvías STR_BUILD_DEPOT_TRAM_ORIENTATION_SELECT_TOOLTIP :{BLACK}Selecciona a orientación do depósito de tranvías # Road vehicle station construction window -STR_STATION_BUILD_BUS_ORIENTATION :{WHITE}Orientación da Estación -STR_STATION_BUILD_BUS_ORIENTATION_TOOLTIP :{BLACK}Selecciona-la orientación da estación de autobús -STR_STATION_BUILD_TRUCK_ORIENTATION :{WHITE}Orientación da Estación -STR_STATION_BUILD_TRUCK_ORIENTATION_TOOLTIP :{BLACK}Selecciona-la orientación da bahía de carga de camións -STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION :{WHITE}Orientación Tranvía Pasaxeiros +STR_STATION_BUILD_BUS_ORIENTATION :{WHITE}Orientación da estación de autobuses +STR_STATION_BUILD_BUS_ORIENTATION_TOOLTIP :{BLACK}Selecciona-la orientación da estación de autobuses +STR_STATION_BUILD_TRUCK_ORIENTATION :{WHITE}Orientación da área de carga de camións +STR_STATION_BUILD_TRUCK_ORIENTATION_TOOLTIP :{BLACK}Selecciona-la orientación da área de carga de camións +STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION :{WHITE}Orientación da estación de tranvía de pasaxeiros STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION_TOOLTIP :{BLACK}Selecciona a orientación da estación de tranvías de pasaxeiros -STR_STATION_BUILD_CARGO_TRAM_ORIENTATION :{WHITE}Orientación da Estación de Carga +STR_STATION_BUILD_CARGO_TRAM_ORIENTATION :{WHITE}Orientación da estación de tranvía de carga STR_STATION_BUILD_CARGO_TRAM_ORIENTATION_TOOLTIP :{BLACK}Selecciona a orientación da estación de tranvías de carga # Waterways toolbar (last two for SE only) -STR_WATERWAYS_TOOLBAR_CAPTION :{WHITE}Construción de Canais -STR_WATERWAYS_TOOLBAR_CAPTION_SE :{WHITE}Canais -STR_WATERWAYS_TOOLBAR_BUILD_CANALS_TOOLTIP :{BLACK}Construir canais. -STR_WATERWAYS_TOOLBAR_BUILD_LOCKS_TOOLTIP :{BLACK}Construír peches -STR_WATERWAYS_TOOLBAR_BUILD_DEPOT_TOOLTIP :{BLACK}Construír depósito para barcos (para comprar e dar servizo aos barcos) -STR_WATERWAYS_TOOLBAR_BUILD_DOCK_TOOLTIP :{BLACK}Construír peirao para barcos -STR_WATERWAYS_TOOLBAR_BUOY_TOOLTIP :{BLACK}Boia de posición, pódese utilizar para marcar puntos de ruta adicionais -STR_WATERWAYS_TOOLBAR_BUILD_AQUEDUCT_TOOLTIP :{BLACK}Construír acueducto -STR_WATERWAYS_TOOLBAR_CREATE_LAKE_TOOLTIP :{BLACK}Define a área de auga.{}Fai un canal, a non ser que manteñas pulsado CTRL ó nivel do mar, entonces inundaránse os arredores do lugar -STR_WATERWAYS_TOOLBAR_CREATE_RIVER_TOOLTIP :{BLACK}Colocar ríos. +STR_WATERWAYS_TOOLBAR_CAPTION :{WHITE}Construción de canles +STR_WATERWAYS_TOOLBAR_CAPTION_SE :{WHITE}Canles +STR_WATERWAYS_TOOLBAR_BUILD_CANALS_TOOLTIP :{BLACK}Construír canles. Shift alterna entre construír/amosar estimación de custo +STR_WATERWAYS_TOOLBAR_BUILD_LOCKS_TOOLTIP :{BLACK}Construír esclusas. Shift alterna entre construír/amosar estimación de custo +STR_WATERWAYS_TOOLBAR_BUILD_DEPOT_TOOLTIP :{BLACK}Construír depósito para barcos (para comprar e dar servizo aos barcos). Shift alterna entre construír/amosar estimación de custo +STR_WATERWAYS_TOOLBAR_BUILD_DOCK_TOOLTIP :{BLACK}Construír peirao para barcos. Ctrl habilita a unión de estacións. Shift alterna entre construír/amosar estimación de custo +STR_WATERWAYS_TOOLBAR_BUOY_TOOLTIP :{BLACK}Boia de posición, pódese empregar para marcar puntos de ruta adicionais. Shift alterna entre construír/amosar estimación de custo +STR_WATERWAYS_TOOLBAR_BUILD_AQUEDUCT_TOOLTIP :{BLACK}Construír acueduto. Shift alterna entre construír/amosar estimación de custo +STR_WATERWAYS_TOOLBAR_CREATE_LAKE_TOOLTIP :{BLACK}Define a área de auga.{}Fai unha canle, a non ser que manteñas pulsado CTRL ao nivel do mar, entón inundaranse os arredores do lugar +STR_WATERWAYS_TOOLBAR_CREATE_RIVER_TOOLTIP :{BLACK}Colocar ríos # Ship depot construction window -STR_DEPOT_BUILD_SHIP_CAPTION :{WHITE}Orient. do Depósito de Barcos +STR_DEPOT_BUILD_SHIP_CAPTION :{WHITE}Orientación do depósito de barcos STR_DEPOT_BUILD_SHIP_ORIENTATION_TOOLTIP :{BLACK}Selecciona-la orientación do depósito de barcos # Dock construction window @@ -1894,21 +2372,23 @@ STR_STATION_BUILD_DOCK_CAPTION :{WHITE}Peirao # Airport toolbar STR_TOOLBAR_AIRCRAFT_CAPTION :{WHITE}Aeroportos -STR_TOOLBAR_AIRCRAFT_BUILD_AIRPORT_TOOLTIP :{BLACK}Construír aeroporto +STR_TOOLBAR_AIRCRAFT_BUILD_AIRPORT_TOOLTIP :{BLACK}Construír aeroporto. Ctrl permite unir estacións. Shift alterna entre construír e amosa-lo custo estimado # Airport construction window -STR_STATION_BUILD_AIRPORT_CAPTION :{WHITE}Selección do Aeroporto +STR_STATION_BUILD_AIRPORT_CAPTION :{WHITE}Selección de aeroporto STR_STATION_BUILD_AIRPORT_TOOLTIP :{BLACK}Selecciona o tamaño/tipo de aeroporto +STR_STATION_BUILD_AIRPORT_CLASS_LABEL :{BLACK}Clase de aeroporto +STR_STATION_BUILD_AIRPORT_LAYOUT_NAME :{BLACK}Patrón {NUM} STR_AIRPORT_SMALL :Pequeno STR_AIRPORT_CITY :Cidade -STR_AIRPORT_METRO :Aeroporto metropolitano -STR_AIRPORT_INTERNATIONAL :Aeroporto Internacional -STR_AIRPORT_COMMUTER :Conmutador +STR_AIRPORT_METRO :Metropolitano +STR_AIRPORT_INTERNATIONAL :Internacional +STR_AIRPORT_COMMUTER :Intercambiador STR_AIRPORT_INTERCONTINENTAL :Intercontinental STR_AIRPORT_HELIPORT :Heliporto -STR_AIRPORT_HELIDEPOT :Helidepósito -STR_AIRPORT_HELISTATION :Heliporto +STR_AIRPORT_HELIDEPOT :Helihangar +STR_AIRPORT_HELISTATION :Heliestación STR_AIRPORT_CLASS_SMALL :Aeroportos pequenos STR_AIRPORT_CLASS_LARGE :Aeroportos grandes @@ -1918,15 +2398,16 @@ STR_AIRPORT_CLASS_HELIPORTS :Aeroportos para STR_STATION_BUILD_NOISE :{BLACK}Ruído xerado: {GOLD}{COMMA} # Landscaping toolbar -STR_LANDSCAPING_TOOLBAR :{WHITE}Modificar o terreo -STR_LANDSCAPING_TOOLTIP_LOWER_A_CORNER_OF_LAND :{BLACK}Baixar unha esquina de terreo -STR_LANDSCAPING_TOOLTIP_RAISE_A_CORNER_OF_LAND :{BLACK}Elevar unha esquina de terreo -STR_LANDSCAPING_LEVEL_LAND_TOOLTIP :{BLACK}Nivelar terreo -STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Comprar terreo para futuro uso +STR_LANDSCAPING_TOOLBAR :{WHITE}Movemento de terras +STR_LANDSCAPING_TOOLTIP_LOWER_A_CORNER_OF_LAND :{BLACK}Baixar unha esquina de terreo. Ao arrastrar báixase a primeira esquina seleccionada e nivela a área seleccionada á nova cota da esquina. Ctrl selecciona a área diagonalmente. Shift alterna entre construír e amosa-lo custo estimado +STR_LANDSCAPING_TOOLTIP_RAISE_A_CORNER_OF_LAND :{BLACK}Elevar unha esquina de terreo. Ao arrastrar elévase a primeira esquina seleccionada e nivela a área seleccionada á nova cota da esquina. Ctrl selecciona a área diagonalmente. Shift alterna entre construír e amosa-lo custo estimado +STR_LANDSCAPING_LEVEL_LAND_TOOLTIP :{BLACK}{BLACK}Nivela unha área de terreo á cota da primeira esquina de terreo seleccionada. Ctrl selecciona a área diagonalmente. Shift alterna entre construír e amosa-lo custo estimado +STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Comprar terreo para usar no futuro. Shift alterna entre construír e amosa-lo custo estimado # Object construction window -STR_OBJECT_BUILD_CAPTION :{WHITE}Selección Obxectos -STR_OBJECT_BUILD_TOOLTIP :{BLACK}Selecciona o obxecto a construír +STR_OBJECT_BUILD_CAPTION :{WHITE}Selección de obxectos +STR_OBJECT_BUILD_TOOLTIP :{BLACK}Selecciona o obxecto a construír. Shift alterna entre construír e amosa-lo custo estimado +STR_OBJECT_BUILD_CLASS_TOOLTIP :{BLACK}Selecciona a clase de obxecto a construír STR_OBJECT_BUILD_PREVIEW_TOOLTIP :{BLACK}Previsualización do obxecto STR_OBJECT_BUILD_SIZE :{BLACK}Tamaño: {GOLD}{NUM} x {NUM} cadros @@ -1935,31 +2416,31 @@ STR_OBJECT_CLASS_TRNS :Transmisores # Tree planting window (last two for SE only) STR_PLANT_TREE_CAPTION :{WHITE}Árbores -STR_PLANT_TREE_TOOLTIP :{BLACK}Selecciona-lo tipo de árbore a plantar +STR_PLANT_TREE_TOOLTIP :{BLACK}Selecciona-lo tipo de árbore a plantar. Se xa hai unha árbore no cadro, isto engadirá máis árbores de varios tipos independentemente do tipo seleccionado STR_TREES_RANDOM_TYPE :{BLACK}Árbores de tipo aleatorio -STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}Colocar árbores dun tipo aleatorio +STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}Colocar árbores de tipo aleatorio. Shift alterna entre construír e amosa-lo custo estimado STR_TREES_RANDOM_TREES_BUTTON :{BLACK}Árbores aleatorias STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Plantar árbores aleatoriamente sobre a paisaxe # Land generation window (SE) -STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}Xeración de Terreo -STR_TERRAFORM_TOOLTIP_PLACE_ROCKY_AREAS_ON_LANDSCAPE :{BLACK}Colocar áreas rocosas na paisaxe -STR_TERRAFORM_TOOLTIP_DEFINE_DESERT_AREA :{BLACK}Definir área de deserto.{}Presiona CTRL para borrala -STR_TERRAFORM_TOOLTIP_INCREASE_SIZE_OF_LAND_AREA :{BLACK}Aumenta-lo tamaño de terreo a baixar/subir -STR_TERRAFORM_TOOLTIP_DECREASE_SIZE_OF_LAND_AREA :{BLACK}Disminuí-lo tamaño de terreo a baixar/subir +STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}Xeración de terreo +STR_TERRAFORM_TOOLTIP_PLACE_ROCKY_AREAS_ON_LANDSCAPE :{BLACK}Colocar áreas rochosas na paisaxe +STR_TERRAFORM_TOOLTIP_DEFINE_DESERT_AREA :{BLACK}Definir área de deserto.{}Mantén pulsado CTRL para borrala +STR_TERRAFORM_TOOLTIP_INCREASE_SIZE_OF_LAND_AREA :{BLACK}Aumenta-lo tamaño de terreo a baixar/elevar +STR_TERRAFORM_TOOLTIP_DECREASE_SIZE_OF_LAND_AREA :{BLACK}Disminuí-lo tamaño de terreo a baixar/elevar STR_TERRAFORM_TOOLTIP_GENERATE_RANDOM_LAND :{BLACK}Xerar terreo aleatorio -STR_TERRAFORM_SE_NEW_WORLD :{BLACK}Crear novo escenario +STR_TERRAFORM_SE_NEW_WORLD :{BLACK}Crear un novo escenario STR_TERRAFORM_RESET_LANDSCAPE :{BLACK}Reiniciar paisaxe STR_TERRAFORM_RESET_LANDSCAPE_TOOLTIP :{BLACK}Quitar tódalas propiedades do xogador do mapa -STR_QUERY_RESET_LANDSCAPE_CAPTION :{WHITE}Reiniciar Paisaxe -STR_RESET_LANDSCAPE_CONFIRMATION_TEXT :{WHITE}¿Estás seguro de querer quitar tódalas propiedades do xogador? +STR_QUERY_RESET_LANDSCAPE_CAPTION :{WHITE}Reiniciar paisaxe +STR_RESET_LANDSCAPE_CONFIRMATION_TEXT :{WHITE}Estás seguro de querer quitar tódalas propiedades do xogador? # Town generation window (SE) -STR_FOUND_TOWN_CAPTION :{WHITE}Xeración de Cidades -STR_FOUND_TOWN_NEW_TOWN_BUTTON :{BLACK}Nova Cidade -STR_FOUND_TOWN_NEW_TOWN_TOOLTIP :{BLACK}Fundar nova cidade -STR_FOUND_TOWN_RANDOM_TOWN_BUTTON :{BLACK}Cidade Aleatoria +STR_FOUND_TOWN_CAPTION :{WHITE}Xeración de cidades +STR_FOUND_TOWN_NEW_TOWN_BUTTON :{BLACK}Nova cidade +STR_FOUND_TOWN_NEW_TOWN_TOOLTIP :{BLACK}Fundar unha nova cidade. Shift+Click amosa o custo estimado +STR_FOUND_TOWN_RANDOM_TOWN_BUTTON :{BLACK}Cidade aleatoria STR_FOUND_TOWN_RANDOM_TOWN_TOOLTIP :{BLACK}Fundar cidade nun emprazamento aleatorio STR_FOUND_TOWN_MANY_RANDOM_TOWNS :{BLACK}Moitas cidades aleatorias STR_FOUND_TOWN_RANDOM_TOWNS_TOOLTIP :{BLACK}Cubri-lo mapa con cidades colocadas aleatoriamente @@ -1975,7 +2456,7 @@ STR_FOUND_TOWN_INITIAL_SIZE_SMALL_BUTTON :{BLACK}Pequeno STR_FOUND_TOWN_INITIAL_SIZE_MEDIUM_BUTTON :{BLACK}Mediano STR_FOUND_TOWN_INITIAL_SIZE_LARGE_BUTTON :{BLACK}Grande STR_FOUND_TOWN_SIZE_RANDOM :{BLACK}Aleatorio -STR_FOUND_TOWN_INITIAL_SIZE_TOOLTIP :{BLACK}Selecciona o tamaño da cidade: +STR_FOUND_TOWN_INITIAL_SIZE_TOOLTIP :{BLACK}Selecciona o tamaño da cidade STR_FOUND_TOWN_CITY :{BLACK}Cidade STR_FOUND_TOWN_CITY_TOOLTIP :{BLACK}As cidades crecen máis rápido que os pobos{}Segundo a configuración, son máis grandes cando se fundan @@ -1988,17 +2469,31 @@ STR_FOUND_TOWN_SELECT_LAYOUT_3X3_GRID :{BLACK}Grella 3 STR_FOUND_TOWN_SELECT_LAYOUT_RANDOM :{BLACK}Aleatoria # Fund new industry window -STR_FUND_INDUSTRY_CAPTION :{WHITE}Fundar unha nova industria +STR_FUND_INDUSTRY_CAPTION :{WHITE}Financiar unha nova industria STR_FUND_INDUSTRY_SELECTION_TOOLTIP :{BLACK}Elixe a industria apropiada desta lista STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES :Moitas industrias aleatorias STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES_TOOLTIP :{BLACK}Cubri-lo mapa con industrias colocadas aleatoriamente STR_FUND_INDUSTRY_INDUSTRY_BUILD_COST :{BLACK}Custo: {YELLOW}{CURRENCY_LONG} STR_FUND_INDUSTRY_PROSPECT_NEW_INDUSTRY :{BLACK}Prospección STR_FUND_INDUSTRY_BUILD_NEW_INDUSTRY :{BLACK}Construír -STR_FUND_INDUSTRY_FUND_NEW_INDUSTRY :{BLACK}Fundar +STR_FUND_INDUSTRY_FUND_NEW_INDUSTRY :{BLACK}Financiar # Industry cargoes window +STR_INDUSTRY_CARGOES_INDUSTRY_CAPTION :{WHITE}Cadea de industrias para a industria {STRING} +STR_INDUSTRY_CARGOES_CARGO_CAPTION :{WHITE}Cadea de industrias para a carga {STRING} +STR_INDUSTRY_CARGOES_PRODUCERS :{WHITE}Industrias provedoras +STR_INDUSTRY_CARGOES_CUSTOMERS :{WHITE}Industrias clientes STR_INDUSTRY_CARGOES_HOUSES :{WHITE}Casas +STR_INDUSTRY_CARGOES_INDUSTRY_TOOLTIP :{BLACK}Pincha na industria para ver os seus provedores e clientes +STR_INDUSTRY_CARGOES_CARGO_TOOLTIP :{BLACK}{STRING}{}Pincha na carga para ver os seus provedores e clientes +STR_INDUSTRY_DISPLAY_CHAIN :{BLACK}Mostrar cadea +STR_INDUSTRY_DISPLAY_CHAIN_TOOLTIP :{BLACK}Mostra-las industrias provedoras e clientes da carga +STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP :{BLACK}Ligar ao mapa +STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP_TOOLTIP :{BLACK}Selecciona as industrias que tamén se amosan no mapa +STR_INDUSTRY_CARGOES_SELECT_CARGO :{BLACK}Seleccionar carga +STR_INDUSTRY_CARGOES_SELECT_CARGO_TOOLTIP :{BLACK}Selecciona a carga que queres mostrar +STR_INDUSTRY_CARGOES_SELECT_INDUSTRY :{BLACK}Seleccionar industria +STR_INDUSTRY_CARGOES_SELECT_INDUSTRY_TOOLTIP :{BLACK}Seleccionar a industria que queres mostrar # Land area window STR_LAND_AREA_INFORMATION_CAPTION :{WHITE}Información dunha área de terreo @@ -2008,29 +2503,54 @@ STR_LAND_AREA_INFORMATION_REVENUE_WHEN_CLEARED :{BLACK}Ingresos STR_LAND_AREA_INFORMATION_OWNER_N_A :N/D STR_LAND_AREA_INFORMATION_OWNER :{BLACK}Propietario: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_ROAD_OWNER :{BLACK}Propietario da estrada: {LTBLUE}{STRING} -STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Propietario da vía: {LTBLUE}{STRING} -STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Propietario da vía: {LTBLUE}{STRING} +STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Propietario da vía tranviaria: {LTBLUE}{STRING} +STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Propietario da vía ferroviaria: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Autoridade local: {LTBLUE}{STRING} -STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Ningún -STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Coordinadas: {LTBLUE}{NUM} x {NUM} x {NUM} ({STRING}) +STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Ningunha +STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Coordenadas: {LTBLUE}{NUM} x {NUM} x {NUM} ({STRING}) STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}Construído: {LTBLUE}{DATE_LONG} -STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Clase da estación: {LTBLUE}{STRING} +STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Clase de estación: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Tipo de estación: {LTBLUE}{STRING} -STR_LAND_AREA_INFORMATION_AIRPORT_CLASS :{BLACK}Clase aeroporto: {LTBLUE}{STRING} -STR_LAND_AREA_INFORMATION_AIRPORT_NAME :{BLACK}Nome aeroporto: {LTBLUE}{STRING} +STR_LAND_AREA_INFORMATION_AIRPORT_CLASS :{BLACK}Clase de aeroporto: {LTBLUE}{STRING} +STR_LAND_AREA_INFORMATION_AIRPORT_NAME :{BLACK}Nome do aeroporto: {LTBLUE}{STRING} +STR_LAND_AREA_INFORMATION_AIRPORTTILE_NAME :{BLACK}Nome do cadro do aeroporto: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: {LTBLUE}{STRING} 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 velocidade da vía: {LTBLUE}{VELOCITY} # Description of land area of different tiles -STR_LAI_CLEAR_DESCRIPTION_ROCKS :Rochas -STR_LAI_CLEAR_DESCRIPTION_ROUGH_LAND :Terra Quebrada -STR_LAI_CLEAR_DESCRIPTION_BARE_LAND :Terra Deserta +STR_LAI_CLEAR_DESCRIPTION_ROCKS :Cons +STR_LAI_CLEAR_DESCRIPTION_ROUGH_LAND :Terra árida +STR_LAI_CLEAR_DESCRIPTION_BARE_LAND :Terra deserta STR_LAI_CLEAR_DESCRIPTION_GRASS :Herba -STR_LAI_CLEAR_DESCRIPTION_FIELDS :Campos +STR_LAI_CLEAR_DESCRIPTION_FIELDS :Leiras STR_LAI_CLEAR_DESCRIPTION_SNOW_COVERED_LAND :Terra cuberta de neve STR_LAI_CLEAR_DESCRIPTION_DESERT :Deserto +STR_LAI_RAIL_DESCRIPTION_TRACK :Vía de {STRING} +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_SIGNALS :Vía de {STRING} con sinais de bloqueo +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRESIGNALS :Vía de {STRING} con sinais avanzados +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXITSIGNALS :Vía de {STRING} con sinais de saída +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBOSIGNALS :Vía de {STRING} con sinais combo +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBSSIGNALS :Vía de {STRING} con sinais de ruta +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NOENTRYSIGNALS :Vía de {STRING} con sinais de ruta monosentido +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PRESIGNALS :Vía de {STRING} con sinais de bloqueo e avanzados +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_EXITSIGNALS :Vía de {STRING} con sinais de bloqueo e saída +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_COMBOSIGNALS :Vía de {STRING} con sinais de bloqueo e combo +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PBSSIGNALS :Vía de {STRING} con sinais de bloqueo e de ruta +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_NOENTRYSIGNALS :Vía de {STRING} con sinais de bloqueo e de ruta monosentido +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_EXITSIGNALS :Vía de {STRING} con sinais avanzados e de saída +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_COMBOSIGNALS :Vía de {STRING} con sinais avanzados e combo +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_PBSSIGNALS :Vía de {STRING} con sinais avanzados e de ruta +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_NOENTRYSIGNALS :Vía de {STRING} con sinais avanzados e de ruta monosentido +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_COMBOSIGNALS :Vía de {STRING} con sinais de saída e combo +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_PBSSIGNALS :Vía de {STRING} con sinais de saída e de ruta +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_NOENTRYSIGNALS :Vía de {STRING} con sinais de saída e de ruta monosentido +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_PBSSIGNALS :Vía de {STRING} con sinais combo e de ruta +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_NOENTRYSIGNALS :Vía de {STRING} con sinais combo e de ruta monosentido +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBS_NOENTRYSIGNALS :Vía de {STRING} con sinais de ruta e de ruta monosentido +STR_LAI_RAIL_DESCRIPTION_TRAIN_DEPOT :Depósito ferroviario {STRING} STR_LAI_ROAD_DESCRIPTION_ROAD :Estrada STR_LAI_ROAD_DESCRIPTION_ROAD_WITH_STREETLIGHTS :Estrada con iluminación @@ -2044,73 +2564,77 @@ STR_LAI_TOWN_INDUSTRY_DESCRIPTION_UNDER_CONSTRUCTION :{STRING} (en co STR_LAI_TREE_NAME_TREES :Árbores STR_LAI_TREE_NAME_RAINFOREST :Selva tropical -STR_LAI_TREE_NAME_CACTUS_PLANTS :Plantas cactus +STR_LAI_TREE_NAME_CACTUS_PLANTS :Cactus STR_LAI_STATION_DESCRIPTION_RAILROAD_STATION :Estación de ferrocarril -STR_LAI_STATION_DESCRIPTION_AIRCRAFT_HANGAR :Hangar de avións +STR_LAI_STATION_DESCRIPTION_AIRCRAFT_HANGAR :Hangar de aeronaves STR_LAI_STATION_DESCRIPTION_AIRPORT :Aeroporto STR_LAI_STATION_DESCRIPTION_TRUCK_LOADING_AREA :Área de carga de camións STR_LAI_STATION_DESCRIPTION_BUS_STATION :Estación de autobús -STR_LAI_STATION_DESCRIPTION_SHIP_DOCK :Peirao para barco +STR_LAI_STATION_DESCRIPTION_SHIP_DOCK :Peirao para barcos STR_LAI_STATION_DESCRIPTION_BUOY :Boia STR_LAI_STATION_DESCRIPTION_WAYPOINT :Punto de control STR_LAI_WATER_DESCRIPTION_WATER :Auga -STR_LAI_WATER_DESCRIPTION_CANAL :Canal +STR_LAI_WATER_DESCRIPTION_CANAL :Canle STR_LAI_WATER_DESCRIPTION_LOCK :Peche STR_LAI_WATER_DESCRIPTION_RIVER :Río -STR_LAI_WATER_DESCRIPTION_COAST_OR_RIVERBANK :Costa ou beiramar +STR_LAI_WATER_DESCRIPTION_COAST_OR_RIVERBANK :Beiramar ou ribeira fluvial STR_LAI_WATER_DESCRIPTION_SHIP_DEPOT :Depósito de barcos # Industries come directly from their industry names -STR_LAI_TUNNEL_DESCRIPTION_RAILROAD :Túnel de ferrocarril +STR_LAI_TUNNEL_DESCRIPTION_RAILROAD :Túnel ferroviario STR_LAI_TUNNEL_DESCRIPTION_ROAD :Túnel de estrada -STR_LAI_BRIDGE_DESCRIPTION_RAIL_SUSPENSION_STEEL :Ponte colgante de aceiro para ferrocarrís -STR_LAI_BRIDGE_DESCRIPTION_RAIL_GIRDER_STEEL :Ponte de vigas de aceiro para ferrocarrís -STR_LAI_BRIDGE_DESCRIPTION_RAIL_CANTILEVER_STEEL :Ponte voladiza de aceiro para ferrocarrís -STR_LAI_BRIDGE_DESCRIPTION_RAIL_SUSPENSION_CONCRETE :Ponte colgante de cemento reforzado para ferrocarrís -STR_LAI_BRIDGE_DESCRIPTION_RAIL_WOODEN :Ponte de madeira para ferrocarrís -STR_LAI_BRIDGE_DESCRIPTION_RAIL_CONCRETE :Ponte de cemento para ferrocarrís -STR_LAI_BRIDGE_DESCRIPTION_RAIL_TUBULAR_STEEL :Ponte tubular para ferrocarrís +STR_LAI_BRIDGE_DESCRIPTION_RAIL_SUSPENSION_STEEL :Ponte ferroviaria colgante de aceiro +STR_LAI_BRIDGE_DESCRIPTION_RAIL_GIRDER_STEEL :Ponte ferroviaria de vigas de aceiro +STR_LAI_BRIDGE_DESCRIPTION_RAIL_CANTILEVER_STEEL :Ponte ferroviaria en voladizo de aceiro +STR_LAI_BRIDGE_DESCRIPTION_RAIL_SUSPENSION_CONCRETE :Ponte ferroviaria colgante de formigón +STR_LAI_BRIDGE_DESCRIPTION_RAIL_WOODEN :Ponte ferroviaria de madeira +STR_LAI_BRIDGE_DESCRIPTION_RAIL_CONCRETE :Ponte ferroviaria de formigón +STR_LAI_BRIDGE_DESCRIPTION_RAIL_TUBULAR_STEEL :Ponte ferroviaria tubular -STR_LAI_BRIDGE_DESCRIPTION_ROAD_SUSPENSION_STEEL :Ponte colgante de aceiro para estradas -STR_LAI_BRIDGE_DESCRIPTION_ROAD_GIRDER_STEEL :Ponte de vigas de aceiro para estradas -STR_LAI_BRIDGE_DESCRIPTION_ROAD_CANTILEVER_STEEL :Ponte voladiza de aceiro para estradas -STR_LAI_BRIDGE_DESCRIPTION_ROAD_SUSPENSION_CONCRETE :Ponte colgante de cemento reforzado para estradas -STR_LAI_BRIDGE_DESCRIPTION_ROAD_WOODEN :Ponte de madeira para estradas -STR_LAI_BRIDGE_DESCRIPTION_ROAD_CONCRETE :Ponte de cemento para estradas -STR_LAI_BRIDGE_DESCRIPTION_ROAD_TUBULAR_STEEL :Ponte tubular para estradas +STR_LAI_BRIDGE_DESCRIPTION_ROAD_SUSPENSION_STEEL :Ponte de estrada colgante de aceiro +STR_LAI_BRIDGE_DESCRIPTION_ROAD_GIRDER_STEEL :Ponte de estrada de vigas de aceiro +STR_LAI_BRIDGE_DESCRIPTION_ROAD_CANTILEVER_STEEL :Ponte de estrada en voladizo de aceiro +STR_LAI_BRIDGE_DESCRIPTION_ROAD_SUSPENSION_CONCRETE :Ponte de estrada colgante de formigón +STR_LAI_BRIDGE_DESCRIPTION_ROAD_WOODEN :Ponte de estrada de madeira +STR_LAI_BRIDGE_DESCRIPTION_ROAD_CONCRETE :Ponte de estrada de formigón +STR_LAI_BRIDGE_DESCRIPTION_ROAD_TUBULAR_STEEL :Ponte de estrada tubular -STR_LAI_BRIDGE_DESCRIPTION_AQUEDUCT :Acueducto +STR_LAI_BRIDGE_DESCRIPTION_AQUEDUCT :Acueduto STR_LAI_OBJECT_DESCRIPTION_TRANSMITTER :Transmisor STR_LAI_OBJECT_DESCRIPTION_LIGHTHOUSE :Faro -STR_LAI_OBJECT_DESCRIPTION_COMPANY_HEADQUARTERS :Cuartel Xeral de Compañía +STR_LAI_OBJECT_DESCRIPTION_COMPANY_HEADQUARTERS :Sede da compañía STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Terreo propiedade dunha compañía # About OpenTTD window STR_ABOUT_OPENTTD :{WHITE}Acerca de OpenTTD -STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Copyright Orixinal {COPYRIGHT} 1995 Chris Sawyer, Tódolos dereitos reservados +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-2012 O Equipo de OpenTTD +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2014 O equipo de OpenTTD # Save/load game/scenario -STR_SAVELOAD_SAVE_CAPTION :{WHITE}Grabar Partida -STR_SAVELOAD_LOAD_CAPTION :{WHITE}Cargar Partida -STR_SAVELOAD_SAVE_SCENARIO :{WHITE}Grabar Escenario -STR_SAVELOAD_LOAD_SCENARIO :{WHITE}Cargar Escenario -STR_SAVELOAD_LOAD_HEIGHTMAP :{WHITE}Cargar Mapa de Altitude -STR_SAVELOAD_HOME_BUTTON :{BLACK}Pincha aquí para ir o directorio por defecto actual para grabar/cargar +STR_SAVELOAD_SAVE_CAPTION :{WHITE}Gravar partida +STR_SAVELOAD_LOAD_CAPTION :{WHITE}Cargar partida +STR_SAVELOAD_SAVE_SCENARIO :{WHITE}Gravar escenario +STR_SAVELOAD_LOAD_SCENARIO :{WHITE}Cargar escenario +STR_SAVELOAD_LOAD_HEIGHTMAP :{WHITE}Cargar mapa de alturas +STR_SAVELOAD_SAVE_HEIGHTMAP :{WHITE}Gravar mapa de alturas +STR_SAVELOAD_HOME_BUTTON :{BLACK}Pincha aquí para ir ao directorio por defecto actual para gravar/cargar STR_SAVELOAD_BYTES_FREE :{BLACK}{BYTES} libre{P "" s} STR_SAVELOAD_LIST_TOOLTIP :{BLACK}Lista de unidades, directorios e arquivos de partida -STR_SAVELOAD_EDITBOX_TOOLTIP :{BLACK}Nome seleccionado actualmente para o arquivo +STR_SAVELOAD_EDITBOX_TOOLTIP :{BLACK}Nome seleccionado actualmente para partidas gravadas STR_SAVELOAD_DELETE_BUTTON :{BLACK}Borrar -STR_SAVELOAD_DELETE_TOOLTIP :{BLACK}Borra-lo arquivo que está seleccionado -STR_SAVELOAD_SAVE_BUTTON :{BLACK}Grabar +STR_SAVELOAD_DELETE_TOOLTIP :{BLACK}Borra-lo arquivo de partida gravada seleccionado +STR_SAVELOAD_SAVE_BUTTON :{BLACK}Gravar STR_SAVELOAD_SAVE_TOOLTIP :{BLACK}Salva-la partida actual, usando o nome seleccionado STR_SAVELOAD_LOAD_BUTTON :{BLACK}Cargar +STR_SAVELOAD_LOAD_TOOLTIP :{BLACK}Carga-la partida seleccionada +STR_SAVELOAD_DETAIL_CAPTION :{BLACK}Detalles da partida +STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}Non hai información dispoñíbel STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING} STR_SAVELOAD_DETAIL_GRFSTATUS :{SILVER}NewGRF: {WHITE}{STRING} @@ -2119,48 +2643,46 @@ STR_SAVELOAD_OSKTITLE :{BLACK}Escribe # World generation STR_MAPGEN_WORLD_GENERATION_CAPTION :{WHITE}Xeración do mundo STR_MAPGEN_MAPSIZE :{BLACK}Tamaño do mapa: +STR_MAPGEN_MAPSIZE_TOOLTIP :{BLACK} Selecciona o tamaño do mapa en cadros. O número de cadros dispoñíbeis será sensiblemente menor STR_MAPGEN_BY :{BLACK}* -STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Num. de cidades: +STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Nº de cidades: STR_MAPGEN_DATE :{BLACK}Data: -STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Num. de industrias: -STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}Altura da liña de neve: -STR_MAPGEN_SNOW_LINE_UP :{BLACK}Subir a altura da liña de neve -STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Baixar a altura da liña de neve -STR_MAPGEN_RANDOM_SEED :{BLACK}Semente Aleatoria: -STR_MAPGEN_RANDOM_SEED_HELP :{BLACK}Pincha para introducir unha semilla -STR_MAPGEN_RANDOM :{BLACK}Aleatorio -STR_MAPGEN_RANDOM_HELP :{BLACK}Cambia-la semente aleatoria usada para a Xeración de Terreo +STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Nº de industrias: +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_LAND_GENERATOR :{BLACK}Xerador de terreo: STR_MAPGEN_TREE_PLACER :{BLACK}Algoritmo para árbores: STR_MAPGEN_TERRAIN_TYPE :{BLACK}Tipo de terreo: STR_MAPGEN_QUANTITY_OF_SEA_LAKES :{BLACK}Nivel do mar: +STR_MAPGEN_QUANTITY_OF_RIVERS :{BLACK}Ríos: STR_MAPGEN_SMOOTHNESS :{BLACK}Suavidade: +STR_MAPGEN_VARIETY :{BLACK}Variedade: STR_MAPGEN_GENERATE :{WHITE}Xerar # Strings for map borders at game generation STR_MAPGEN_BORDER_TYPE :{BLACK}Bordes do mapa: STR_MAPGEN_NORTHWEST :{BLACK}Noroeste -STR_MAPGEN_NORTHEAST :{BLACK}Noreste -STR_MAPGEN_SOUTHEAST :{BLACK}Sureste +STR_MAPGEN_NORTHEAST :{BLACK}Nordés +STR_MAPGEN_SOUTHEAST :{BLACK}Sueste STR_MAPGEN_SOUTHWEST :{BLACK}Suroeste -STR_MAPGEN_BORDER_FREEFORM :{BLACK}Forma Libre +STR_MAPGEN_BORDER_FREEFORM :{BLACK}Forma libre STR_MAPGEN_BORDER_WATER :{BLACK}Auga STR_MAPGEN_BORDER_RANDOM :{BLACK}Aleatorio STR_MAPGEN_BORDER_RANDOMIZE :{BLACK}Aleatorio STR_MAPGEN_BORDER_MANUAL :{BLACK}Manual -STR_MAPGEN_HEIGHTMAP_ROTATION :{BLACK}Rotación do mapa de altura: -STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Nome do mapa de altura: +STR_MAPGEN_HEIGHTMAP_ROTATION :{BLACK}Rotación do mapa de alturas: +STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Nome do mapa de alturas: STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Tamaño: STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM} -STR_MAPGEN_RANDOM_SEED_OSKTITLE :{BLACK}Introduce a semente aleatoria -STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Cambiar a altura da liña de neve +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 # SE Map generation STR_SE_MAPGEN_CAPTION :{WHITE}Tipo de escenario -STR_SE_MAPGEN_FLAT_WORLD :{WHITE}Terreo Chan +STR_SE_MAPGEN_FLAT_WORLD :{WHITE}Terreo chan STR_SE_MAPGEN_FLAT_WORLD_TOOLTIP :{BLACK}Xerar terreo chan STR_SE_MAPGEN_RANDOM_LAND :{WHITE}Terreo aleatorio STR_SE_MAPGEN_FLAT_WORLD_HEIGHT :{BLACK}Altura do terreo chan: @@ -2170,41 +2692,49 @@ STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_UP :{BLACK}Baixar a STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_QUERY_CAPT :{WHITE}Cambiar a altura do terreo chan # Map generation progress -STR_GENERATION_WORLD :{WHITE}Xerando Mundo... +STR_GENERATION_WORLD :{WHITE}Xerando mundo... STR_GENERATION_ABORT :{BLACK}Cancelar -STR_GENERATION_ABORT_CAPTION :{WHITE}Cancelar Xeración De Mundo -STR_GENERATION_ABORT_MESSAGE :{YELLOW}¿Estás seguro de querer terminar a xeración? +STR_GENERATION_ABORT_CAPTION :{WHITE}Cancelar a xeración do mundo +STR_GENERATION_ABORT_MESSAGE :{YELLOW}Estás seguro de querer cancelar a xeración? STR_GENERATION_PROGRESS :{WHITE}{NUM}% completado STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / {NUM} STR_GENERATION_WORLD_GENERATION :{BLACK}Xeración do mundo +STR_GENERATION_RIVER_GENERATION :{BLACK}Xeración de ríos STR_GENERATION_TREE_GENERATION :{BLACK}Xeración de árbores STR_GENERATION_OBJECT_GENERATION :{BLACK}Xeración de obxectos -STR_GENERATION_CLEARING_TILES :{BLACK}Xeración de áreas rocosas e quebradas +STR_GENERATION_CLEARING_TILES :{BLACK}Xeración de áreas rochosas e escarpadas STR_GENERATION_SETTINGUP_GAME :{BLACK}Configurando partida -STR_GENERATION_PREPARING_TILELOOP :{BLACK}Executando tile-loop +STR_GENERATION_PREPARING_TILELOOP :{BLACK}Executando bucle de cadros +STR_GENERATION_PREPARING_SCRIPT :{BLACK}Executando script STR_GENERATION_PREPARING_GAME :{BLACK}Preparando partida # NewGRF settings STR_NEWGRF_SETTINGS_CAPTION :{WHITE}Configuracións NewGRF -STR_NEWGRF_SETTINGS_PRESET_LIST_TOOLTIP :{BLACK}Carga la programación seleccionada -STR_NEWGRF_SETTINGS_PRESET_SAVE :{BLACK}Grabar programación -STR_NEWGRF_SETTINGS_PRESET_SAVE_TOOLTIP :{BLACK}Graba-la lista actual como programación -STR_NEWGRF_SETTINGS_PRESET_SAVE_QUERY :{BLACK}Escribe un nome para a programación -STR_NEWGRF_SETTINGS_PRESET_DELETE :{BLACK}Borrar programación -STR_NEWGRF_SETTINGS_PRESET_DELETE_TOOLTIP :{BLACK}Borra-la programación seleccionada actualmente +STR_NEWGRF_SETTINGS_INFO_TITLE :{WHITE}Información detallada do NewGRF +STR_NEWGRF_SETTINGS_ACTIVE_LIST :{WHITE}Arquivos NewGRF activos +STR_NEWGRF_SETTINGS_INACTIVE_LIST :{WHITE}Arquivos NewGRF inactivos +STR_NEWGRF_SETTINGS_SELECT_PRESET :{ORANGE}Seleccionar perfil +STR_NEWGRF_FILTER_TITLE :{ORANGE}Filtrar cadea de caracteres +STR_NEWGRF_SETTINGS_PRESET_LIST_TOOLTIP :{BLACK}Carga-lo perfil seleccionado +STR_NEWGRF_SETTINGS_PRESET_SAVE :{BLACK}Gravar perfil +STR_NEWGRF_SETTINGS_PRESET_SAVE_TOOLTIP :{BLACK}Grava-la lista actual coma un perfil +STR_NEWGRF_SETTINGS_PRESET_SAVE_QUERY :{BLACK}Escribe un nome para o perfil +STR_NEWGRF_SETTINGS_PRESET_DELETE :{BLACK}Borrar perfil +STR_NEWGRF_SETTINGS_PRESET_DELETE_TOOLTIP :{BLACK}Borra-lo perfil seleccionado actualmente STR_NEWGRF_SETTINGS_ADD :{BLACK}Engadir STR_NEWGRF_SETTINGS_ADD_FILE_TOOLTIP :{BLACK}Engadi-lo arquivo NewGRF seleccionado a túa configuración -STR_NEWGRF_SETTINGS_RESCAN_FILES :{BLACK}Actualizar ficheiros -STR_NEWGRF_SETTINGS_RESCAN_FILES_TOOLTIP :{BLACK}Actualiza a lista dos ficheiros NewGRF dispoñibles +STR_NEWGRF_SETTINGS_RESCAN_FILES :{BLACK}Actualizar arquivos +STR_NEWGRF_SETTINGS_RESCAN_FILES_TOOLTIP :{BLACK}Actualiza a lista dos arquivos NewGRF dispoñíbeis STR_NEWGRF_SETTINGS_REMOVE :{BLACK}Eliminar STR_NEWGRF_SETTINGS_REMOVE_TOOLTIP :{BLACK}Elimina-lo arquivo NewGRF seleccionado da lista 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_FILE_TOOLTIP :{BLACK}Lista dos ficheiros NewGRF instalados. Pincha nun ficheiro para cambiar os parámetros +STR_NEWGRF_SETTINGS_FILE_TOOLTIP :{BLACK}Unha lista dos arquivos NewGRF instalados. -STR_NEWGRF_SETTINGS_SET_PARAMETERS :{BLACK}Conf. parámetros +STR_NEWGRF_SETTINGS_SET_PARAMETERS :{BLACK}Establecer parámetros +STR_NEWGRF_SETTINGS_SHOW_PARAMETERS :{BLACK}Mostrar parámetros STR_NEWGRF_SETTINGS_TOGGLE_PALETTE :{BLACK}Cambiar paleta STR_NEWGRF_SETTINGS_TOGGLE_PALETTE_TOOLTIP :{BLACK}Cambia-la paleta para o NewGRF seleccionado.{}Faino cando os gráficos deste NewGRF se vexan rosa no xogo STR_NEWGRF_SETTINGS_APPLY_CHANGES :{BLACK}Aplica-los cambios @@ -2212,88 +2742,141 @@ STR_NEWGRF_SETTINGS_APPLY_CHANGES :{BLACK}Aplica-l STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_BUTTON :{BLACK}Busca-lo contido que falta en liña STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_TOOLTIP :{BLACK}Comprobar se o contido que falta pode atoparse en liña -STR_NEWGRF_SETTINGS_FILENAME :{BLACK}Ficheiro: {SILVER}{STRING} +STR_NEWGRF_SETTINGS_FILENAME :{BLACK}Arquivo: {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}Mínima versión compatíbel: {SILVER}{NUM} STR_NEWGRF_SETTINGS_MD5SUM :{BLACK}Suma MD5: {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}Non hai información dispoñible -STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}Ficheiro non atopado +STR_NEWGRF_SETTINGS_NO_INFO :{BLACK}Non hai información dispoñíbel +STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}Arquivo correspondente non atopado STR_NEWGRF_SETTINGS_DISABLED :{RED}Desactivado +STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}Incompatible con esta versión de OpenTTD + +# NewGRF save preset window # NewGRF parameters window +STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}Cambiar os parámetros de NewGRF STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Pechar STR_NEWGRF_PARAMETERS_RESET :{BLACK}Reiniciar +STR_NEWGRF_PARAMETERS_RESET_TOOLTIP :{BLACK}Establecer tódolos parámetros cos seus valores por defecto STR_NEWGRF_PARAMETERS_DEFAULT_NAME :Parámetro {NUM} STR_NEWGRF_PARAMETERS_SETTING :{STRING}: {ORANGE}{STRING} STR_NEWGRF_PARAMETERS_NUM_PARAM :{LTBLUE}Número de parámetros: {ORANGE}{NUM} # NewGRF inspect window +STR_NEWGRF_INSPECT_CAPTION :{WHITE}Inspeccionar - {STRING} +STR_NEWGRF_INSPECT_PARENT_BUTTON :{BLACK}Anterior +STR_NEWGRF_INSPECT_PARENT_TOOLTIP :{BLACK}Inspecciona-lo obxecto do entorno superior +STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT :{STRING} en {HEX} STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_OBJECT :Obxecto -STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :Tipo de vía +STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :Tipo de carril +STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}Parámetro de variable NewGRF 60+x (hexadecimal) # Sprite aligner window +STR_SPRITE_ALIGNER_CAPTION :{WHITE}Aliñar sprite {COMMA} ({STRING}) +STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Seguinte sprite +STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Ir ao sprite seguinte, ignorando pseudosprites, sprites recoloreados e sprites de fonte, e volvendo a empezar ao chegar á fin +STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Ir a sprite +STR_SPRITE_ALIGNER_GOTO_TOOLTIP :{BLACK}Ir ao sprite dado. Se non é un sprite normal, ir ao seguinte sprite normal +STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Sprite anterior +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 +STR_SPRITE_ALIGNER_GOTO_CAPTION :{WHITE}Ir ao sprite # NewGRF (self) generated warnings/errors STR_NEWGRF_ERROR_MSG_INFO :{SILVER}{STRING} -STR_NEWGRF_ERROR_MSG_WARNING :{RED}Aviso: {SILVER}{STRING} +STR_NEWGRF_ERROR_MSG_WARNING :{RED}Coidado: {SILVER}{STRING} STR_NEWGRF_ERROR_MSG_ERROR :{RED}Erro: {SILVER}{STRING} -STR_NEWGRF_ERROR_MSG_FATAL :{RED}Grave: {SILVER}{STRING} +STR_NEWGRF_ERROR_MSG_FATAL :{RED}Erro fatal: {SILVER}{STRING} +STR_NEWGRF_ERROR_FATAL_POPUP :{WHITE}Ocorreu un erro fatal de NewGRF: {}{STRING} STR_NEWGRF_ERROR_VERSION_NUMBER :{1:STRING} non funcionará coa versión de TTDPatch reportada por OpenTTD. STR_NEWGRF_ERROR_DOS_OR_WINDOWS :{1:STRING} é para a versión {STRING} de TTD. STR_NEWGRF_ERROR_UNSET_SWITCH :{1:STRING} está deseñado para ser usado con {STRING} STR_NEWGRF_ERROR_INVALID_PARAMETER :Parámetro incorrecto para {1:STRING}: parámetro {STRING} ({NUM}) STR_NEWGRF_ERROR_LOAD_BEFORE :{1:STRING} debe cargarse antes de {STRING}. STR_NEWGRF_ERROR_LOAD_AFTER :{1:STRING} debe cargarse despois de {STRING}. -STR_NEWGRF_ERROR_OTTD_VERSION_NUMBER :{1:STRING} require OpenTTD versión {STRING} ou posterior. -STR_NEWGRF_ERROR_AFTER_TRANSLATED_FILE :o ficheiro GRF foi deseñado para traducir +STR_NEWGRF_ERROR_OTTD_VERSION_NUMBER :{1:STRING} require a versión de OpenTTD {STRING} ou posterior +STR_NEWGRF_ERROR_AFTER_TRANSLATED_FILE :o arquivo GRF que foi deseñado para traducir STR_NEWGRF_ERROR_TOO_MANY_NEWGRFS_LOADED :Cargáronse demasiados NewGRFs. -STR_NEWGRF_ERROR_STATIC_GRF_CAUSES_DESYNC :Cargar {1:STRING} como NewGRF estático con {STRING} pode causar desincronizacións. -STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} contén un sprite corrupto. Tódolos sprites corruptos mostraránse coma una interrogación vermella (?). +STR_NEWGRF_ERROR_STATIC_GRF_CAUSES_DESYNC :Cargar {1:STRING} como NewGRF estático con {STRING} pode causar desincronizacións +STR_NEWGRF_ERROR_UNEXPECTED_SPRITE :Sprite inesperado (sprite {3:NUM}) +STR_NEWGRF_ERROR_UNKNOWN_PROPERTY :Propiedade de acción 0 descoñecida {4:HEX} (sprite {3:NUM}) +STR_NEWGRF_ERROR_INVALID_ID :Intento de usar un ID inválido (sprite {3:NUM}) +STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} contén un sprite corrupto. Tódolos sprites corruptos mostraranse coma unha interrogación vermella (?). +STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Contén múltiples entradas de acción 8 (sprite {3:NUM}) +STR_NEWGRF_ERROR_READ_BOUNDS :Lectura máis aló da fin dun pseudo-sprite (sprite {3:NUM}) +STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE} Ao conxunto de gráficos básicos empregado actualmente fáltalle un número de sprites. {}Por favor, actualiza o conxunto de gráficos básico +STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE} Ao conxunto de gráficos básicos empregado actualmente fáltalle un número de sprites. {}Por favor, actualiza o conxunto de gráficos básico.{}Dado que estás a xogar unha {YELLOW}versión de desenrolo de OpenTTD{WHITE}, é posíbel que tamén necesites unha {YELLOW}versión de desenrolo do conjunto de gráficos base{WHITE} +STR_NEWGRF_ERROR_GRM_FAILED :Os recursos GRF solicitados non están disponíbeis (sprite {3:NUM}) +STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} foi desactivado por {2:STRING} +STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Formato de colocación de sprites inválido ou descoñecido (sprite {3:NUM}) # NewGRF related 'general' warnings -STR_NEWGRF_POPUP_CAUTION_CAPTION :{WHITE}¡Atención! -STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}Vas realizar cambios nunha partida en execución. Esto pode cerrar OpenTTD.{}¿Estás completamente seguro de querer facelo? +STR_NEWGRF_POPUP_CAUTION_CAPTION :{WHITE}Coidado! +STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}Estás a piques de facer cambios nunha partida en execución. Isto pode forzar o peche de Open ou romper o estado do xogoTTD. Non arquives informes acerca deste problema{}Estás completamente seguro de querer facelo? -STR_NEWGRF_DUPLICATE_GRFID :{WHITE}Non se pode engadir o ficheiro: ID do GRF duplicado -STR_NEWGRF_COMPATIBLE_LOADED :{ORANGE}Ficheiro non atopado (cargouse GRF compatible) +STR_NEWGRF_DUPLICATE_GRFID :{WHITE}Non se pode engadir o arquivo: ID do GRF duplicado +STR_NEWGRF_COMPATIBLE_LOADED :{ORANGE}Arquivo correspondente non atopado (cargouse GRF compatible) +STR_NEWGRF_TOO_MANY_NEWGRFS :{WHITE}Non se pode engadir o arquivo: acadado límite de arquivos NewGRF -STR_NEWGRF_COMPATIBLE_LOAD_WARNING :{WHITE}GRF(s) compatibles cargados para os ficheiros que faltan -STR_NEWGRF_DISABLED_WARNING :{WHITE}Deshabilitáronse os ficheiros GRF que faltan -STR_NEWGRF_UNPAUSE_WARNING_TITLE :{YELLOW}Faltan ficheiro(s) GRF -STR_NEWGRF_UNPAUSE_WARNING :{WHITE}Quitar a pausa pode pechar OpenTTD. Non notifiques os erros que se produzan.{}¿Está seguro de querer quitar a pausa? +STR_NEWGRF_COMPATIBLE_LOAD_WARNING :{WHITE}GRF(s) compatibles cargados para os arquivos que faltan +STR_NEWGRF_DISABLED_WARNING :{WHITE}Deshabilitáronse os arquivos GRF que faltan +STR_NEWGRF_UNPAUSE_WARNING_TITLE :{YELLOW}Falta(n) arquivo(s) GRF +STR_NEWGRF_UNPAUSE_WARNING :{WHITE}Quitar a pausa pode forzar o peche de OpenTTD. Non notifiques os erros que se produzan.{}Estás seguro de querer quitar a pausa? # NewGRF status STR_NEWGRF_LIST_NONE :Ningún +STR_NEWGRF_LIST_ALL_FOUND :Tódolos arquivos presentes +STR_NEWGRF_LIST_COMPATIBLE :{YELLOW}Atopados arquivos compatíbeis STR_NEWGRF_LIST_MISSING :{RED}Faltan arquivos # NewGRF 'it's broken' warnings -STR_NEWGRF_BROKEN :{WHITE}O comportamento do NewGRF '{0:STRING}' pode causar desincronizacións e/ou colgues. +STR_NEWGRF_BROKEN :{WHITE}O comportamento do NewGRF '{0:STRING}' pode causar desincronizacións e/ou colgues +STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}Cambiou o estado 'vagón con potencia' para '{1:ENGINE}' fóra dun depósito STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}Cambiou a lonxitude do vehículo a '{1:ENGINE}' cando non está nun depósito -STR_BROKEN_VEHICLE_LENGTH :{WHITE}O tren '{VEHICLE}' pertencente a '{COMPANY}' ten unha lonxitude incorrecta. Esto está causado probablemente por problemas con NewGRFs. O xogo pode desincronizarse ou colgarse. +STR_BROKEN_VEHICLE_LENGTH :{WHITE}O tren '{VEHICLE}' pertencente a '{COMPANY}' ten unha lonxitude inválida. Esto está causado probabelmente por problemas con NewGRFs. O xogo pode desincronizarse ou colgarse STR_NEWGRF_BUGGY :{WHITE}O NewGRF '{0:STRING}' proporciona información incorrecta. +STR_NEWGRF_BUGGY_ARTICULATED_CARGO :{WHITE}Información de carga/reforma para '{1:ENGINE}' difiire da lista de compra despois da construción. Isto pode causar que a renovación/reemprazo automáticos non reformen correctamente STR_NEWGRF_BUGGY_ENDLESS_PRODUCTION_CALLBACK :{WHITE}'{1:STRING}' produciu un bucle sen fin na chamada de retorno de produción +STR_NEWGRF_BUGGY_UNKNOWN_CALLBACK_RESULT :{WHITE}A chamada {1:HEX} devolveu o resultado inválido ou descoñecido {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} de +STR_NEWGRF_INVALID_ENGINE : +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... +STR_NEWGRF_SCAN_STATUS :{BLACK}{NUM} NewGRF{P "" s} comprobados dun total estimado de {NUM} NewGRF{P "" s} +STR_NEWGRF_SCAN_ARCHIVES :Procurando arquivos # Sign list window -STR_SIGN_LIST_CAPTION :{WHITE}Lista de Sinais - {COMMA} Sina{P l is} +STR_SIGN_LIST_CAPTION :{WHITE}Lista de rótulos - {COMMA} rótulo{P "" s} +STR_SIGN_LIST_MATCH_CASE :{BLACK}Corresponder maiúsculas/minúsculas +STR_SIGN_LIST_MATCH_CASE_TOOLTIP :{BLACK}Activar correspondencia de maiúsculas ao comparar os nomes dos rótulos coa cadea de filtrado # Sign window -STR_EDIT_SIGN_CAPTION :{WHITE}Edita lo texto do sinal -STR_EDIT_SIGN_NEXT_SIGN_TOOLTIP :{BLACK}Ir ó sinal seguinte -STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK}Ir ó sinal anterior +STR_EDIT_SIGN_CAPTION :{WHITE}Edita-lo texto do rótulo +STR_EDIT_SIGN_NEXT_SIGN_TOOLTIP :{BLACK}Ir ao seguinte rótulo +STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK}Ir ao rótulo anterior -STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}Escribe un nome para o sinal +STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}Escribe un nome para o rótulo # Town directory window STR_TOWN_DIRECTORY_CAPTION :{WHITE}Cidades @@ -2308,11 +2891,18 @@ STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} ( STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}Poboación: {ORANGE}{COMMA}{BLACK} Casas: {ORANGE}{COMMA} 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: +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_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) +STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{GREEN} (entregados) +STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}A cidade medra cada {ORANGE}{COMMA}{BLACK} día{P "" s} +STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}A cidade medra cada {ORANGE}{COMMA}{BLACK} día{P "" s} (financiada) +STR_TOWN_VIEW_TOWN_GROW_STOPPED :{BLACK}A cidade {RED}non{BLACK} está a medrar STR_TOWN_VIEW_NOISE_IN_TOWN :{BLACK}Límite de ruído na cidade: {ORANGE}{COMMA}{BLACK} máx: {ORANGE}{COMMA} STR_TOWN_VIEW_CENTER_TOOLTIP :{BLACK}Centrar a vista principal na localización da cidade. CTRL+Click abre una nova fiestra na localización da cidade -STR_TOWN_VIEW_LOCAL_AUTHORITY_BUTTON :{BLACK}Aut. Local +STR_TOWN_VIEW_LOCAL_AUTHORITY_BUTTON :{BLACK}Autoridade local STR_TOWN_VIEW_LOCAL_AUTHORITY_TOOLTIP :{BLACK}Mostra-la información sobre a autoridade local STR_TOWN_VIEW_RENAME_TOOLTIP :{BLACK}Cambia-lo nome da cidade @@ -2327,79 +2917,144 @@ STR_TOWN_VIEW_RENAME_TOWN_BUTTON :Renomear cidade STR_LOCAL_AUTHORITY_CAPTION :{WHITE}Autoridade local de {TOWN} STR_LOCAL_AUTHORITY_COMPANY_RATINGS :{BLACK}Puntuacións das compañías de transporte: STR_LOCAL_AUTHORITY_COMPANY_RATING :{YELLOW}{COMPANY} {COMPANY_NUM}: {ORANGE}{STRING} -STR_LOCAL_AUTHORITY_ACTIONS_TITLE :{BLACK}Accións dispoñibles: +STR_LOCAL_AUTHORITY_ACTIONS_TITLE :{BLACK}Accións dispoñíbeis: STR_LOCAL_AUTHORITY_ACTIONS_TOOLTIP :{BLACK}Lista de cousas para facer nesta cidade - pincha nun ítem para máis detalles STR_LOCAL_AUTHORITY_DO_IT_BUTTON :{BLACK}Faino STR_LOCAL_AUTHORITY_DO_IT_TOOLTIP :{BLACK}Executa-la acción marcada na lista superior -STR_LOCAL_AUTHORITY_ACTION_SMALL_ADVERTISING_CAMPAIGN :Campaña publicitaria pequena +STR_LOCAL_AUTHORITY_ACTION_SMALL_ADVERTISING_CAMPAIGN :Pequena campaña publicitaria STR_LOCAL_AUTHORITY_ACTION_MEDIUM_ADVERTISING_CAMPAIGN :Campaña publicitaria mediana -STR_LOCAL_AUTHORITY_ACTION_LARGE_ADVERTISING_CAMPAIGN :Gan campaña publicitaria -STR_LOCAL_AUTHORITY_ACTION_ROAD_RECONSTRUCTION :Subvenciona-la reconstrución das estradas da cidade +STR_LOCAL_AUTHORITY_ACTION_LARGE_ADVERTISING_CAMPAIGN :Gran campaña publicitaria +STR_LOCAL_AUTHORITY_ACTION_ROAD_RECONSTRUCTION :Financia-la reparación das fochancas nas rúas da cidade STR_LOCAL_AUTHORITY_ACTION_STATUE_OF_COMPANY :Construír unha estatua do propietario da compañía -STR_LOCAL_AUTHORITY_ACTION_NEW_BUILDINGS :Subvencionar novos edificios -STR_LOCAL_AUTHORITY_ACTION_EXCLUSIVE_TRANSPORT :Compra-los dereitos de transporte exclusivos +STR_LOCAL_AUTHORITY_ACTION_NEW_BUILDINGS :Financiar novos edificios +STR_LOCAL_AUTHORITY_ACTION_EXCLUSIVE_TRANSPORT :Compra-los dereitos exclusivos de transporte STR_LOCAL_AUTHORITY_ACTION_BRIBE :Suborna-la autoridade local -STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_SMALL_ADVERTISING :{YELLOW}Iniciar unha campaña de publicidade pequena, para atraer máis pasaxeiros e mercadorías os teus servizos de transporte.{}Custo: {CURRENCY_LONG} -STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_MEDIUM_ADVERTISING :{YELLOW}Iniciar unha campaña de publicidade mediana, para atraer máis pasaxeiros e mercadorías os teus servizos de transporte.{}Custo: {CURRENCY_LONG} -STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_LARGE_ADVERTISING :{YELLOW}Iniciar unha gran campaña de publicidade, para atraer máis pasaxeiros e mercadorías ós teus servizos de transporte.{}Custo: {CURRENCY_LONG} -STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_ROAD_RECONSTRUCTION :{YELLOW}Subvenciona-la reconstrución da rede de estradas urbanas. Provoca unha considerable interrupción no tráfico durante seis meses.{}Custo: {CURRENCY_LONG} -STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_STATUE_OF_COMPANY :{YELLOW}Construír unha estatua en honor a túa compañía.{}Custo: {CURRENCY_LONG} -STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_NEW_BUILDINGS :{YELLOW} Subvenciona-la construción de novos edificios comerciais na cidade.{}Custo: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_SMALL_ADVERTISING :{YELLOW}Iniciar unha campaña de publicidade pequena, para atraer máis pasaxeiros e mercadorías aos teus servizos de transporte.{}Custo: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_MEDIUM_ADVERTISING :{YELLOW}Iniciar unha campaña de publicidade mediana, para atraer máis pasaxeiros e mercadorías aos teus servizos de transporte.{}Custo: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_LARGE_ADVERTISING :{YELLOW}Iniciar unha gran campaña de publicidade, para atraer máis pasaxeiros e mercadorías aos teus servizos de transporte.{}Custo: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_ROAD_RECONSTRUCTION :{YELLOW}Financia-la reconstrución das rúas da cidade. Provoca unhas considerables interrupcións no tráfico durante seis meses.{}Custo: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_STATUE_OF_COMPANY :{YELLOW}Construír unha estatua en honor á túa compañía.{}Custo: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_NEW_BUILDINGS :{YELLOW} Financia-la construción de novos edificios comerciais na cidade.{}Custo: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT :{YELLOW}Compra-los dereitos exclusivos de transporte na cidade durante 1 ano. A autoridade só permitirá que os pasaxeiros e as mercadorías usen as estacións da túa compañía.{}Custo: {CURRENCY_LONG} -STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}Suborna-la autoridade local para mellorá-la túa puntuación, co risco dunha gran penalización se o descobren.{}Custo: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}Suborna-la autoridade local para mellora-la túa puntuación, co risco dunha gran penalización se o descobren.{}Custo: {CURRENCY_LONG} # Goal window +STR_GOALS_CAPTION :{WHITE}{COMPANY} Obxectivos +STR_GOALS_SPECTATOR_CAPTION :{WHITE}Obxectivos globais +STR_GOALS_GLOBAL_TITLE :{BLACK}Obxectivos globais: STR_GOALS_TEXT :{ORANGE}{STRING} +STR_GOALS_NONE :{ORANGE}- Ningún - +STR_GOALS_SPECTATOR_NONE :{ORANGE}- Non aplicábel - +STR_GOALS_PROGRESS :{ORANGE}{STRING} +STR_GOALS_PROGRESS_COMPLETE :{GREEN}{STRING} +STR_GOALS_COMPANY_TITLE :{BLACK}Obxectivos da compañía: +STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Pincha nun obxectivo para centra-la vista principal na industria/cidade/cadro. Ctrl+Click abre unha nova ventá na localización da industria/cidade/cadro # Goal question window +STR_GOAL_QUESTION_CAPTION_QUESTION :Pregunta +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 +STR_GOAL_QUESTION_BUTTON_CANCEL :Cancelar +STR_GOAL_QUESTION_BUTTON_OK :OK +STR_GOAL_QUESTION_BUTTON_NO :Non +STR_GOAL_QUESTION_BUTTON_YES :Si +STR_GOAL_QUESTION_BUTTON_DECLINE :Declinar +STR_GOAL_QUESTION_BUTTON_ACCEPT :Aceptar +STR_GOAL_QUESTION_BUTTON_IGNORE :Ignorar +STR_GOAL_QUESTION_BUTTON_RETRY :Tentar de novo +STR_GOAL_QUESTION_BUTTON_PREVIOUS :Anterior +STR_GOAL_QUESTION_BUTTON_NEXT :Seguinte +STR_GOAL_QUESTION_BUTTON_STOP :Stop +STR_GOAL_QUESTION_BUTTON_START :Comezar +STR_GOAL_QUESTION_BUTTON_GO :Ir +STR_GOAL_QUESTION_BUTTON_CONTINUE :Continuar +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 # Subsidies window -STR_SUBSIDIES_CAPTION :{WHITE}Subsidios -STR_SUBSIDIES_OFFERED_TITLE :{BLACK}Sibsidios en oferta para sevicios que transporten: +STR_SUBSIDIES_CAPTION :{WHITE}Subvencións +STR_SUBSIDIES_OFFERED_TITLE :{BLACK}Subvencións ofrecidas para sevizos que transporten: STR_SUBSIDIES_OFFERED_FROM_TO :{ORANGE}{STRING} dende {STRING} ata {STRING}{YELLOW} (antes de {DATE_SHORT}) -STR_SUBSIDIES_NONE :{ORANGE}- Ningún - -STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}Servizos que xa teñen subsidio: +STR_SUBSIDIES_NONE :{ORANGE}- Ningunha - +STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}Servizos que xa teñen subvención: STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING} dende {STRING} ata {STRING}{YELLOW} ({COMPANY}{YELLOW}, ata {DATE_SHORT}) STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Pincha no servizo para centrar a vista na industria/cidade. CTRL+Click abre unha nova fiestra na localización da industria/cidade +# Story book window +STR_STORY_BOOK_SPECTATOR_CAPTION :{WHITE}Historial global +STR_STORY_BOOK_TITLE :{YELLOW}{STRING} +STR_STORY_BOOK_GENERIC_PAGE_ITEM :Páxina {NUM} +STR_STORY_BOOK_PREV_PAGE :{BLACK}Anterior +STR_STORY_BOOK_PREV_PAGE_TOOLTIP :{BLACK}Ir á páxina anterior +STR_STORY_BOOK_NEXT_PAGE :{BLACK}Seguinte +STR_STORY_BOOK_NEXT_PAGE_TOOLTIP :{BLACK}Ir á páxina seguinte + # Station list window STR_STATION_LIST_TOOLTIP :{BLACK}Nomes das estacións - pincha nun nome para centrar a vista na estación. CTRL+Click abre unha nova fiestra na localización da estación -STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}Presiona CTRL para seleccionar máis dun ítem -STR_STATION_LIST_CAPTION :{WHITE}{COMPANY} - {COMMA} Estacións +STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}Mantén pulsado CTRL para seleccionar máis dun ítem +STR_STATION_LIST_CAPTION :{WHITE}{COMPANY} - {COMMA} Estación{P "" s} STR_STATION_LIST_STATION :{YELLOW}{STATION} {STATION_FEATURES} STR_STATION_LIST_WAYPOINT :{YELLOW}{WAYPOINT} -STR_STATION_LIST_NONE :{YELLOW}- Ningún - +STR_STATION_LIST_NONE :{YELLOW}- Ningunha - STR_STATION_LIST_SELECT_ALL_FACILITIES :{BLACK}Seleccionar tódolos edificios STR_STATION_LIST_SELECT_ALL_TYPES :{BLACK}Seleccionar tódolos tipos de carga (incluso os que non están a esperar) -STR_STATION_LIST_NO_WAITING_CARGO :{BLACK}Non queda ningún tipo de carga en espera +STR_STATION_LIST_NO_WAITING_CARGO :{BLACK}Non queda ningunha carga de ningún tipo en espera # 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 dende {STATION}) +STR_STATION_VIEW_RESERVED :{YELLOW}({CARGO_SHORT} reservado para cargar) STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Acepta STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Mostrar a lista da carga aceptada STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}Acepta: {WHITE}{CARGO_LIST} +STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Esta estación ten dereitos de transporte exclusivos nesta cidade. +STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} comprou a exclusiva de dereitos de transporte nesta cidade. STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Puntuacións: STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Mostra-las puntuacións da estación -STR_STATION_VIEW_CARGO_RATINGS_TITLE :{BLACK}Puntuación local para o servizo de transporte: -STR_STATION_VIEW_CARGO_RATING :{WHITE}{STRING}: {YELLOW}{STRING} ({COMMA}%) +STR_STATION_VIEW_SUPPLY_RATINGS_TITLE :{BLACK}Suministro mensual e puntuación local: +STR_STATION_VIEW_CARGO_SUPPLY_RATING :{WHITE}{STRING}: {YELLOW}{COMMA} / {STRING} ({COMMA}%) + +STR_STATION_VIEW_GROUP :{BLACK}Agrupar por +STR_STATION_VIEW_WAITING_STATION :Estación: en agarda +STR_STATION_VIEW_WAITING_AMOUNT :Cantidade: en agarda +STR_STATION_VIEW_PLANNED_STATION :Estación: planificada +STR_STATION_VIEW_PLANNED_AMOUNT :Cantidade: planificada +STR_STATION_VIEW_FROM :{YELLOW}{CARGO_SHORT} dende{STATION} +STR_STATION_VIEW_VIA :{YELLOW}{CARGO_SHORT} vía {STATION} +STR_STATION_VIEW_TO :{YELLOW}{CARGO_SHORT} a {STATION} +STR_STATION_VIEW_FROM_ANY :{RED}{CARGO_SHORT} dende estación descoñecida +STR_STATION_VIEW_TO_ANY :{RED}{CARGO_SHORT} a calquera estación +STR_STATION_VIEW_VIA_ANY :{RED}{CARGO_SHORT} pasando por calquera estación +STR_STATION_VIEW_FROM_HERE :{GREEN}{CARGO_SHORT} dende esta estación +STR_STATION_VIEW_VIA_HERE :{GREEN}{CARGO_SHORT} con parada nesta estación +STR_STATION_VIEW_TO_HERE :{GREEN}{CARGO_SHORT} a esta estación +STR_STATION_VIEW_NONSTOP :{YELLOW}{CARGO_SHORT} sen paradas + +STR_STATION_VIEW_GROUP_S_V_D :Orixe-vía-destino +STR_STATION_VIEW_GROUP_S_D_V :Orixe-destino-vía +STR_STATION_VIEW_GROUP_V_S_D :Vía-orixe-destino +STR_STATION_VIEW_GROUP_V_D_S :Vía-destino-orixe +STR_STATION_VIEW_GROUP_D_S_V :Destino-orixe-vía +STR_STATION_VIEW_GROUP_D_V_S :Destino-vía-orixe ############ range for rating starts STR_CARGO_RATING_APPALLING :Pésima -STR_CARGO_RATING_VERY_POOR :Moi Pobre +STR_CARGO_RATING_VERY_POOR :Moi pobre STR_CARGO_RATING_POOR :Pobre STR_CARGO_RATING_MEDIOCRE :Mediocre STR_CARGO_RATING_GOOD :Boa -STR_CARGO_RATING_VERY_GOOD :Moi Boa +STR_CARGO_RATING_VERY_GOOD :Moi boa STR_CARGO_RATING_EXCELLENT :Excelente STR_CARGO_RATING_OUTSTANDING :Excepcional ############ range for rating ends @@ -2414,85 +3069,111 @@ STR_STATION_VIEW_SCHEDULED_SHIPS_TOOLTIP :{BLACK}Mostrar STR_STATION_VIEW_RENAME_STATION_CAPTION :Renomear estación/área de carga +STR_STATION_VIEW_CLOSE_AIRPORT :{BLACK}Pechar aeroporto +STR_STATION_VIEW_CLOSE_AIRPORT_TOOLTIP :{BLACK}Evita que os avións aterren neste aeroporto # Waypoint/buoy view window STR_WAYPOINT_VIEW_CAPTION :{WHITE}{WAYPOINT} +STR_WAYPOINT_VIEW_CENTER_TOOLTIP :{BLACK}Centra a vista principal na localización do punto de ruta. Ctrl+Click abre unha nova ventá na localización do punto de ruta STR_WAYPOINT_VIEW_CHANGE_WAYPOINT_NAME :{BLACK}Cambiar o nome do punto de ruta +STR_BUOY_VIEW_CENTER_TOOLTIP :{BLACK}Centrar a vista principal na localización da boia. Ctrl+Click abre unha nova ventá na localización da boia STR_BUOY_VIEW_CHANGE_BUOY_NAME :{BLACK}Cambiar o nome da boia -STR_EDIT_WAYPOINT_NAME :{WHITE}Editar o nome do punto de control +STR_EDIT_WAYPOINT_NAME :{WHITE}Editar o nome do punto de ruta # Finances window STR_FINANCES_CAPTION :{WHITE}{COMPANY} Finanzas {BLACK}{COMPANY_NUM} STR_FINANCES_EXPENDITURE_INCOME_TITLE :{WHITE}Gastos/Ingresos STR_FINANCES_YEAR :{WHITE}{NUM} STR_FINANCES_SECTION_CONSTRUCTION :{GOLD}Construción -STR_FINANCES_SECTION_NEW_VEHICLES :{GOLD}Novos Vehículos -STR_FINANCES_SECTION_TRAIN_RUNNING_COSTS :{GOLD}Mantemento dos Trens -STR_FINANCES_SECTION_ROAD_VEHICLE_RUNNING_COSTS :{GOLD}Coste de mantemento dos Vehículos -STR_FINANCES_SECTION_AIRCRAFT_RUNNING_COSTS :{GOLD}Mantemendo das Aeronaves -STR_FINANCES_SECTION_SHIP_RUNNING_COSTS :{GOLD}Mantemento dos Barcos -STR_FINANCES_SECTION_PROPERTY_MAINTENANCE :{GOLD}Mantemento das Propiedades -STR_FINANCES_SECTION_TRAIN_INCOME :{GOLD}Ingresos dos Trens -STR_FINANCES_SECTION_ROAD_VEHICLE_INCOME :{GOLD}Ingresos dos Vehículos -STR_FINANCES_SECTION_AIRCRAFT_INCOME :{GOLD}Ingresos das Aeronaves -STR_FINANCES_SECTION_SHIP_INCOME :{GOLD}Ingresos dos Barcos -STR_FINANCES_SECTION_LOAN_INTEREST :{GOLD}Interese do Préstamo +STR_FINANCES_SECTION_NEW_VEHICLES :{GOLD}Novos vehículos +STR_FINANCES_SECTION_TRAIN_RUNNING_COSTS :{GOLD}Custo operativo dos trens +STR_FINANCES_SECTION_ROAD_VEHICLE_RUNNING_COSTS :{GOLD}Custo operativo dos vehículos de estrada +STR_FINANCES_SECTION_AIRCRAFT_RUNNING_COSTS :{GOLD}Custo operativo das aeronaves +STR_FINANCES_SECTION_SHIP_RUNNING_COSTS :{GOLD}Custo operativo dos barcos +STR_FINANCES_SECTION_PROPERTY_MAINTENANCE :{GOLD}Mantemento de propiedades +STR_FINANCES_SECTION_TRAIN_INCOME :{GOLD}Ingresos dos trens +STR_FINANCES_SECTION_ROAD_VEHICLE_INCOME :{GOLD}Ingresos dos vehículos de estrada +STR_FINANCES_SECTION_AIRCRAFT_INCOME :{GOLD}Ingresos das aeronaves +STR_FINANCES_SECTION_SHIP_INCOME :{GOLD}Ingresos dos barcos +STR_FINANCES_SECTION_LOAN_INTEREST :{GOLD}Interese do préstamo STR_FINANCES_SECTION_OTHER :{GOLD}Outros STR_FINANCES_NEGATIVE_INCOME :{BLACK}-{CURRENCY_LONG} STR_FINANCES_POSITIVE_INCOME :{BLACK}+{CURRENCY_LONG} STR_FINANCES_TOTAL_CAPTION :{WHITE}Total: -STR_FINANCES_BANK_BALANCE_TITLE :{WHITE}Balance do Banco +STR_FINANCES_BANK_BALANCE_TITLE :{WHITE}Balance bancario 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}Solicitar {CURRENCY_LONG} -STR_FINANCES_BORROW_TOOLTIP :{BLACK}Incrementar o préstamo. CTRL+Click solicita o máximo posible +STR_FINANCES_BORROW_BUTTON :{BLACK}Pedir {CURRENCY_LONG} +STR_FINANCES_BORROW_TOOLTIP :{BLACK}Incrementar o préstamo. CTRL+Click solicita o máximo posíbel STR_FINANCES_REPAY_BUTTON :{BLACK}Devolver {CURRENCY_LONG} -STR_FINANCES_REPAY_TOOLTIP :{BLACK}Pagar parte do préstamo. CTRL+Click paga tanto coma sexa posible +STR_FINANCES_REPAY_TOOLTIP :{BLACK}Pagar parte do préstamo. CTRL+Click paga tanto coma sexa posíbel +STR_FINANCES_INFRASTRUCTURE_BUTTON :{BLACK}Infraestrutura # Company view STR_COMPANY_VIEW_CAPTION :{WHITE}{COMPANY} {BLACK}{COMPANY_NUM} STR_COMPANY_VIEW_PRESIDENT_MANAGER_TITLE :{WHITE}{PRESIDENT_NAME}{}{GOLD}(Presidente) STR_COMPANY_VIEW_INAUGURATED_TITLE :{GOLD}Inaugurado: {WHITE}{NUM} -STR_COMPANY_VIEW_COLOUR_SCHEME_TITLE :{GOLD}Esquema de Cor: +STR_COMPANY_VIEW_COLOUR_SCHEME_TITLE :{GOLD}Esquema de cor: STR_COMPANY_VIEW_VEHICLES_TITLE :{GOLD}Vehículos: STR_COMPANY_VIEW_TRAINS :{WHITE}{COMMA} tren{P "" s} STR_COMPANY_VIEW_ROAD_VEHICLES :{WHITE}{COMMA} vehículo{P "" s} de estrada -STR_COMPANY_VIEW_AIRCRAFT :{WHITE}Aeronaves {COMMA} +STR_COMPANY_VIEW_AIRCRAFT :{WHITE} {COMMA} aeronave{P "" s} STR_COMPANY_VIEW_SHIPS :{WHITE}{COMMA} barco{P "" s} STR_COMPANY_VIEW_VEHICLES_NONE :{WHITE}Ningún -STR_COMPANY_VIEW_COMPANY_VALUE :{GOLD}Valor da Compañía: {WHITE}{CURRENCY_LONG} +STR_COMPANY_VIEW_COMPANY_VALUE :{GOLD}Valor da compañía: {WHITE}{CURRENCY_LONG} STR_COMPANY_VIEW_SHARES_OWNED_BY :{WHITE}({COMMA}% propiedade de {COMPANY}) - -STR_COMPANY_VIEW_BUILD_HQ_BUTTON :{BLACK}Construír CX -STR_COMPANY_VIEW_BUILD_HQ_TOOLTIP :{BLACK}Construir o cuartel xeral da compañía -STR_COMPANY_VIEW_VIEW_HQ_BUTTON :{BLACK}Ve-lo CX -STR_COMPANY_VIEW_VIEW_HQ_TOOLTIP :{BLACK}Ver o cuartel xeral da compañía -STR_COMPANY_VIEW_RELOCATE_HQ :{BLACK}Reposicionar CX -STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Recontruí-lo cuartel xeral da compañía en calquer lugar cun custo do 1% do valor da compañía - -STR_COMPANY_VIEW_NEW_FACE_BUTTON :{BLACK}Nova Cara +STR_COMPANY_VIEW_INFRASTRUCTURE :{GOLD}Infraestrutura: +STR_COMPANY_VIEW_INFRASTRUCTURE_RAIL :{WHITE}{COMMA} segmento{P "" s} de vías de ferrocarril +STR_COMPANY_VIEW_INFRASTRUCTURE_ROAD :{WHITE}{COMMA} segmento{P "" s} de estrada +STR_COMPANY_VIEW_INFRASTRUCTURE_WATER :{WHITE}{COMMA} cadro{P "" s} de auga +STR_COMPANY_VIEW_INFRASTRUCTURE_STATION :{WHITE}{COMMA} cadro{P "" s} de estación +STR_COMPANY_VIEW_INFRASTRUCTURE_AIRPORT :{WHITE}{COMMA} aeroporto{P "" s} +STR_COMPANY_VIEW_INFRASTRUCTURE_NONE :{WHITE}Ningún + +STR_COMPANY_VIEW_BUILD_HQ_BUTTON :{BLACK}Construír sede +STR_COMPANY_VIEW_BUILD_HQ_TOOLTIP :{BLACK}Construír a sede da compañía +STR_COMPANY_VIEW_VIEW_HQ_BUTTON :{BLACK}Ver sede +STR_COMPANY_VIEW_VIEW_HQ_TOOLTIP :{BLACK}Ver a sede da compañía +STR_COMPANY_VIEW_RELOCATE_HQ :{BLACK}Reposicionar sede +STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Recontruí-la sede da compañía en calquera outro lugar cun custo do 1% do valor da compañía. Shift+click mostra o custo estimado sen reubica-la sede +STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}Detalles +STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}Ver contas detalladas de infraestrutura + +STR_COMPANY_VIEW_NEW_FACE_BUTTON :{BLACK}Nova cara STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}Selecciona-la nova cara do presidente -STR_COMPANY_VIEW_COLOUR_SCHEME_BUTTON :{BLACK}Esquema de Cor +STR_COMPANY_VIEW_COLOUR_SCHEME_BUTTON :{BLACK}Esquema de cor STR_COMPANY_VIEW_COLOUR_SCHEME_TOOLTIP :{BLACK}Cambia-la cor dos vehículos da compañía -STR_COMPANY_VIEW_COMPANY_NAME_BUTTON :{BLACK}Nome Compañía +STR_COMPANY_VIEW_COMPANY_NAME_BUTTON :{BLACK}Nome da compañía STR_COMPANY_VIEW_COMPANY_NAME_TOOLTIP :{BLACK}Cambiar o nome da compañía -STR_COMPANY_VIEW_PRESIDENT_NAME_BUTTON :{BLACK}Nome Presidente +STR_COMPANY_VIEW_PRESIDENT_NAME_BUTTON :{BLACK}Nome do presidente STR_COMPANY_VIEW_PRESIDENT_NAME_TOOLTIP :{BLACK}Cambiar o nome do presidente -STR_COMPANY_VIEW_BUY_SHARE_BUTTON :{BLACK}Comprar un 25% das accións da compañía +STR_COMPANY_VIEW_BUY_SHARE_BUTTON :{BLACK}Mercar un 25% das accións da compañía STR_COMPANY_VIEW_SELL_SHARE_BUTTON :{BLACK}Vender un 25% das accións da compañía -STR_COMPANY_VIEW_BUY_SHARE_TOOLTIP :{BLACK}Comprar un 25% das accións nesta compañía -STR_COMPANY_VIEW_SELL_SHARE_TOOLTIP :{BLACK}Vender un 25% das accións desta compañía +STR_COMPANY_VIEW_BUY_SHARE_TOOLTIP :{BLACK}Mercar un 25% das accións desta compañía. Shift+Click mostra o custo estimado sen mercar ningunha acción +STR_COMPANY_VIEW_SELL_SHARE_TOOLTIP :{BLACK}Vender un 25% das accións desta compañía. Shift+Click mostra o custo estimado sen vender ningunha acción -STR_COMPANY_VIEW_COMPANY_NAME_QUERY_CAPTION :Nome da Compañía -STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :Nome Do Presidente +STR_COMPANY_VIEW_COMPANY_NAME_QUERY_CAPTION :Nome da compañía +STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :Nome do presidente -STR_BUY_COMPANY_MESSAGE :{WHITE}Buscamos unha compañía de transporte para adquiri-la nosa compañía{}{}¿Queres comprar {COMPANY} por {CURRENCY_LONG}? +STR_BUY_COMPANY_MESSAGE :{WHITE}Buscamos unha compañía de transportes para adquiri-la nosa compañía{}{}Queres mercar{COMPANY} por {CURRENCY_LONG}? # Company infrastructure window +STR_COMPANY_INFRASTRUCTURE_VIEW_CAPTION :{WHITE}Infraestrutura de {COMPANY} +STR_COMPANY_INFRASTRUCTURE_VIEW_RAIL_SECT :{GOLD}Segmentos de vía de ferrocarril: +STR_COMPANY_INFRASTRUCTURE_VIEW_SIGNALS :{WHITE}Sinais +STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD_SECT :{GOLD}Segmentos de estrada: +STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD :{WHITE}Estrada +STR_COMPANY_INFRASTRUCTURE_VIEW_TRAMWAY :{WHITE} Tranvía +STR_COMPANY_INFRASTRUCTURE_VIEW_WATER_SECT :{GOLD}Cadros de auga: +STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS :{WHITE}Canles +STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}Estacións: +STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}Cadros de estación +STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}Aeroportos +STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL :{WHITE}{CURRENCY_LONG}/ano # Industry directory STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}Industrias @@ -2500,13 +3181,15 @@ STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}- Ningu STR_INDUSTRY_DIRECTORY_ITEM :{ORANGE}{INDUSTRY}{BLACK} ({CARGO_LONG}{STRING}){YELLOW} ({COMMA}% transportado) STR_INDUSTRY_DIRECTORY_ITEM_TWO :{ORANGE}{INDUSTRY}{BLACK} ({CARGO_LONG}{STRING}/{CARGO_LONG}{STRING}){YELLOW} ({COMMA}%/{COMMA}% transportado) STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUSTRY} -STR_INDUSTRY_DIRECTORY_LIST_CAPTION :{BLACK}Nomes das industrias - pincha nun nome para centrar a vista nela. CTRL+Pinchar abre una nova fiestra na situación da industria +STR_INDUSTRY_DIRECTORY_LIST_CAPTION :{BLACK}Nomes das industrias - pincha nun nome para centrar a vista nela. Ctrl+Click abre una nova fiestra na situación da industria # Industry view STR_INDUSTRY_VIEW_CAPTION :{WHITE}{INDUSTRY} -STR_INDUSTRY_VIEW_PRODUCTION_LAST_MONTH_TITLE :{BLACK}Producción no último mes: +STR_INDUSTRY_VIEW_PRODUCTION_LAST_MONTH_TITLE :{BLACK}Produción no último mes: STR_INDUSTRY_VIEW_TRANSPORTED :{YELLOW}{CARGO_LONG}{STRING}{BLACK} ({COMMA}% transportado) -STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Centrar a vista principal na localización da industria. CTRl+Click abre unha nova fiestra na localización da industria +STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Centrar a vista principal na localización da industria. Ctrl+Click abre unha nova fiestra na localización da industria +STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Nivel de produción: {YELLOW}{COMMA}% +STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}A industria anunció un peche inminente ############ range for requires starts STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Require: {YELLOW}{STRING}{STRING} @@ -2522,40 +3205,41 @@ STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}Produce: ############ range for produces ends STR_CONFIG_GAME_PRODUCTION :{WHITE}Cambiar produción (múltiplo de 8, ata 2040) +STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}Cambiar o nivel de produción (porcentaxe, ata 800%) # Vehicle lists STR_VEHICLE_LIST_TRAIN_CAPTION :{WHITE}{STRING} - {COMMA} Tren{P "" s} -STR_VEHICLE_LIST_ROAD_VEHICLE_CAPTION :{WHITE}{STRING} - {COMMA} Vehículo{P "" s} de Estrada +STR_VEHICLE_LIST_ROAD_VEHICLE_CAPTION :{WHITE}{STRING} - {COMMA} Vehículo{P "" s} de estrada STR_VEHICLE_LIST_SHIP_CAPTION :{WHITE}{STRING} - {COMMA} Barco{P "" s} STR_VEHICLE_LIST_AIRCRAFT_CAPTION :{WHITE}{STRING} - {COMMA} Aeronave -STR_VEHICLE_LIST_TRAIN_LIST_TOOLTIP :{BLACK}Trens - pincha nun tren para información -STR_VEHICLE_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}Vehículos de estrada - pincha nun vehículo para máis información -STR_VEHICLE_LIST_SHIP_TOOLTIP :{BLACK}Barcos - pincha no barco para máis información -STR_VEHICLE_LIST_AIRCRAFT_TOOLTIP :{BLACK}Avións - pincha no avión para máis información +STR_VEHICLE_LIST_TRAIN_LIST_TOOLTIP :{BLACK}Trens - pincha nun tren para obter información +STR_VEHICLE_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}Vehículos de estrada - pincha nun vehículo para obter información +STR_VEHICLE_LIST_SHIP_TOOLTIP :{BLACK}Barcos - pincha no barco para obter información +STR_VEHICLE_LIST_AIRCRAFT_TOOLTIP :{BLACK}Avións - pincha nun avión para obter información STR_VEHICLE_LIST_PROFIT_THIS_YEAR_LAST_YEAR :{TINY_FONT}{BLACK}Beneficio este ano: {CURRENCY_LONG} (ano pasado: {CURRENCY_LONG}) -STR_VEHICLE_LIST_AVAILABLE_TRAINS :Trens Dispoñibles -STR_VEHICLE_LIST_AVAILABLE_ROAD_VEHICLES :Vehículos Dispoñibles -STR_VEHICLE_LIST_AVAILABLE_SHIPS :Barcos Dispoñibles -STR_VEHICLE_LIST_AVAILABLE_AIRCRAFT :Aeronaves Dispoñibles -STR_VEHICLE_LIST_AVAILABLE_ENGINES_TOOLTIP :{BLACK}Ve-la lista das máquinas dispoñibles para este tipo de vehículo. +STR_VEHICLE_LIST_AVAILABLE_TRAINS :Trens dispoñíbeis +STR_VEHICLE_LIST_AVAILABLE_ROAD_VEHICLES :Vehículos dispoñíbeis +STR_VEHICLE_LIST_AVAILABLE_SHIPS :Barcos dispoñíbeis +STR_VEHICLE_LIST_AVAILABLE_AIRCRAFT :Aeronaves dispoñíbeis +STR_VEHICLE_LIST_AVAILABLE_ENGINES_TOOLTIP :{BLACK}Ve-la lista das máquinas dispoñíbeis para este tipo de vehículo. STR_VEHICLE_LIST_MANAGE_LIST :{BLACK}Xestionar lista STR_VEHICLE_LIST_MANAGE_LIST_TOOLTIP :{BLACK}Envia-las instruccións a tódolos vehículos desta lista -STR_VEHICLE_LIST_REPLACE_VEHICLES :Reemplazar Vehículos -STR_VEHICLE_LIST_SEND_FOR_SERVICING :Enviar para Servizo +STR_VEHICLE_LIST_REPLACE_VEHICLES :Reemprazar vehículos +STR_VEHICLE_LIST_SEND_FOR_SERVICING :Enviar para servizo -STR_VEHICLE_LIST_SEND_TRAIN_TO_DEPOT :Enviar ó Depósito -STR_VEHICLE_LIST_SEND_ROAD_VEHICLE_TO_DEPOT :Enviar ó Depósito -STR_VEHICLE_LIST_SEND_SHIP_TO_DEPOT :Enviar ó Depósito -STR_VEHICLE_LIST_SEND_AIRCRAFT_TO_HANGAR :Enviar ó Hangar +STR_VEHICLE_LIST_SEND_TRAIN_TO_DEPOT :Enviar ao depósito +STR_VEHICLE_LIST_SEND_ROAD_VEHICLE_TO_DEPOT :Enviar ao depósito +STR_VEHICLE_LIST_SEND_SHIP_TO_DEPOT :Enviar ao depósito +STR_VEHICLE_LIST_SEND_AIRCRAFT_TO_HANGAR :Enviar ao hangar -STR_VEHICLE_LIST_MASS_STOP_LIST_TOOLTIP :{BLACK}Pincha para parar tódolos vehículos da lista -STR_VEHICLE_LIST_MASS_START_LIST_TOOLTIP :{BLACK}Pincha para iniciar tódolos vehículos da lista +STR_VEHICLE_LIST_MASS_STOP_LIST_TOOLTIP :{BLACK}Pincha para deter tódolos vehículos da lista +STR_VEHICLE_LIST_MASS_START_LIST_TOOLTIP :{BLACK}Pincha para arrancar tódolos vehículos da lista -STR_VEHICLE_LIST_SHARED_ORDERS_LIST_CAPTION :{WHITE}Ordes compartidas de {COMMA} Vehículo{P "" s} +STR_VEHICLE_LIST_SHARED_ORDERS_LIST_CAPTION :{WHITE}Ordes compartidas de {COMMA} vehículo{P "" s} # Group window STR_GROUP_ALL_TRAINS :Tódolos trens @@ -2574,54 +3258,58 @@ 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 STR_GROUP_RENAME_CAPTION :{BLACK}Renomear un grupo # Build vehicle window -STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :Novos Vehículos de Ferrocarril -STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :Novos Vehículos Eléctricos de Raíles -STR_BUY_VEHICLE_TRAIN_MONORAIL_CAPTION :Novos Vehículos de Monorraíl -STR_BUY_VEHICLE_TRAIN_MAGLEV_CAPTION :Novos Vehículos de Maglev +STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :Novos vehículos ferroviarios +STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :Novos vehículos ferroviarios eléctricos +STR_BUY_VEHICLE_TRAIN_MONORAIL_CAPTION :Novos vehículos de monorraíl +STR_BUY_VEHICLE_TRAIN_MAGLEV_CAPTION :Novos vehículos de levitación magnética (Maglev) -STR_BUY_VEHICLE_TRAIN_ALL_CAPTION :Vehículos de Ferrocaril -STR_BUY_VEHICLE_ROAD_VEHICLE_CAPTION :Novos Vehículos de Estrada -STR_BUY_VEHICLE_SHIP_CAPTION :Novos Barcos -STR_BUY_VEHICLE_AIRCRAFT_CAPTION :Nova Aeronave +STR_BUY_VEHICLE_TRAIN_ALL_CAPTION :Novos vehículos ferroviarios +STR_BUY_VEHICLE_ROAD_VEHICLE_CAPTION :Novos vehículos de estrada +STR_BUY_VEHICLE_SHIP_CAPTION :Novos barcos +STR_BUY_VEHICLE_AIRCRAFT_CAPTION :Novas aeronaves STR_PURCHASE_INFO_COST_WEIGHT :{BLACK}Custo: {GOLD}{CURRENCY_LONG}{BLACK} Peso: {GOLD}{WEIGHT_SHORT} STR_PURCHASE_INFO_SPEED_POWER :{BLACK}Velocidade: {GOLD}{VELOCITY}{BLACK} Potencia: {GOLD}{POWER} STR_PURCHASE_INFO_SPEED :{BLACK}Velocidade: {GOLD}{VELOCITY} -STR_PURCHASE_INFO_RUNNINGCOST :{BLACK}Mantemento: {GOLD}{CURRENCY_LONG}/ano +STR_PURCHASE_INFO_SPEED_OCEAN :{BLACK}Velocidade no océano: {GOLD}{VELOCITY} +STR_PURCHASE_INFO_SPEED_CANAL :{BLACK}Velocidade en canle/río: {GOLD}{VELOCITY} +STR_PURCHASE_INFO_RUNNINGCOST :{BLACK}Custo operativo: {GOLD}{CURRENCY_LONG}/ano STR_PURCHASE_INFO_CAPACITY :{BLACK}Capacidade: {GOLD}{CARGO_LONG} {STRING} -STR_PURCHASE_INFO_REFITTABLE :(reax.) -STR_PURCHASE_INFO_DESIGNED_LIFE :{BLACK}Deseñado: {GOLD}{NUM}{BLACK} Vida: {GOLD}{COMMA} anos -STR_PURCHASE_INFO_RELIABILITY :{BLACK}Fiabilidade Máx.: {GOLD}{COMMA}% +STR_PURCHASE_INFO_REFITTABLE :(reformábel) +STR_PURCHASE_INFO_DESIGNED_LIFE :{BLACK}Deseñado: {GOLD}{NUM}{BLACK} Vida útil: {GOLD}{COMMA} ano{P "" s} +STR_PURCHASE_INFO_RELIABILITY :{BLACK}Fiabilidade máxima: {GOLD}{COMMA}% STR_PURCHASE_INFO_COST :{BLACK}Custo: {GOLD}{CURRENCY_LONG} STR_PURCHASE_INFO_WEIGHT_CWEIGHT :{BLACK}Peso: {GOLD}{WEIGHT_SHORT} ({WEIGHT_SHORT}) STR_PURCHASE_INFO_COST_SPEED :{BLACK}Custo: {GOLD}{CURRENCY_LONG}{BLACK} Velocidade: {GOLD}{VELOCITY} STR_PURCHASE_INFO_AIRCRAFT_CAPACITY :{BLACK}Capacidade: {GOLD}{CARGO_LONG}, {CARGO_LONG} STR_PURCHASE_INFO_PWAGPOWER_PWAGWEIGHT :{BLACK}Vagóns tractores: {GOLD}+{POWER}{BLACK} Peso: {GOLD}+{WEIGHT_SHORT} -STR_PURCHASE_INFO_REFITTABLE_TO :{BLACK}Actualizable a: {GOLD}{STRING} +STR_PURCHASE_INFO_REFITTABLE_TO :{BLACK}Reformábel a: {GOLD}{STRING} STR_PURCHASE_INFO_ALL_TYPES :Tódolos tipos de carga -STR_PURCHASE_INFO_ALL_BUT :Todo excepto {CARGO_LIST} -STR_PURCHASE_INFO_MAX_TE :{BLACK}Esforzo Max. de Tracción: {GOLD}{FORCE} +STR_PURCHASE_INFO_ALL_BUT :Todos excepto {CARGO_LIST} +STR_PURCHASE_INFO_MAX_TE :{BLACK}Esforzo máximo de tracción: {GOLD}{FORCE} +STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Autonomía: {GOLD}{COMMA} cadros -STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Lista de selección de vehículos para trens - pincha nun vehículo para máis información -STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Lista de selección de vehículos de estrada - pincha nun vehículo para máis información -STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Lista de selección de barcos - pincha nun barco para máis información -STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Lista de selección de avións - pincha nun avión para máis información +STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Lista de selección de vehículos ferroviarios - pincha nun vehículo para obter información +STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Lista de selección de vehículos de estrada - pincha nun vehículo para obter información +STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Lista de selección de barcos - pincha nun barco para obter información +STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Lista de selección de avións - pincha nun avión para obter información -STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_BUTTON :{BLACK}Comprar Vehículo -STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_BUTTON :{BLACK}Comprar Vehículo -STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_BUTTON :{BLACK}Comprar Barco -STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_BUTTON :{BLACK}Comprar Aeronave +STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_BUTTON :{BLACK}Mercar vehículo +STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_BUTTON :{BLACK}Mercar vehículo +STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_BUTTON :{BLACK}Mercar barco +STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_BUTTON :{BLACK}Mercar aeronave -STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_TOOLTIP :{BLACK}Comprar o vehículo de ferrocarril seleccionado -STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_TOOLTIP :{BLACK}Comprar o vehículo de estrada seleccionado -STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_TOOLTIP :{BLACK}Comprar o barco seleccionado -STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_TOOLTIP :{BLACK}Comprar o avión seleccionado +STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_TOOLTIP :{BLACK}Mercar o vehículo ferroviario seleccionado. Shift+click mostra o custo estimado sen mercar +STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_TOOLTIP :{BLACK}Mercar o vehículo de estrada seleccionado. Shift+click mostra o custo estimado sen mercar +STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_TOOLTIP :{BLACK}Mercar o barco seleccionado. Shift+click mostra o custo estimado sen mercar +STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_TOOLTIP :{BLACK}Mercar a aeronave seleccionada. Shift+click mostra o custo estimado sen mercar STR_BUY_VEHICLE_TRAIN_RENAME_BUTTON :{BLACK}Renomear STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_BUTTON :{BLACK}Renomear @@ -2642,15 +3330,15 @@ STR_QUERY_RENAME_AIRCRAFT_TYPE_CAPTION :{WHITE}Renomea- STR_DEPOT_CAPTION :{WHITE}{DEPOT} STR_DEPOT_RENAME_TOOLTIP :{BLACK}Cambiar o nome do depósito -STR_DEPOT_RENAME_DEPOT_CAPTION :Nomear depósito +STR_DEPOT_RENAME_DEPOT_CAPTION :Renomear depósito STR_DEPOT_NO_ENGINE :{BLACK}- STR_DEPOT_VEHICLE_TOOLTIP :{BLACK}{ENGINE}{STRING} STR_DEPOT_VEHICLE_TOOLTIP_CHAIN :{BLACK}{NUM} vehículo{P "" s}{STRING} STR_DEPOT_VEHICLE_TOOLTIP_CARGO :{}{CARGO_LONG} ({CARGO_SHORT}) -STR_DEPOT_TRAIN_LIST_TOOLTIP :{BLACK}Trens - arrastra o vehículo para engadilo/quitalo do tren, pincha co botón dereito para información. Pulsa CTRL para aplicar ambas funcións a cadea seguinte -STR_DEPOT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Vehículos - pincha co botón dereito no vehículo para máis información +STR_DEPOT_TRAIN_LIST_TOOLTIP :{BLACK}Trens - arrastra o vehículo co botón esquerdo para engadilo/quitalo do tren, pincha co botón dereito para obter información. Mantén pulsado Ctrl para aplicar ambas funcións á cadea seguinte +STR_DEPOT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Vehículos - click dereito no vehículo para obter información STR_DEPOT_SHIP_LIST_TOOLTIP :{BLACK}Barcos - pincha co botón dereito no barco para máis información STR_DEPOT_AIRCRAFT_LIST_TOOLTIP :{BLACK}Avións - pincha co botón dereito no avión para máis información @@ -2659,10 +3347,10 @@ STR_DEPOT_ROAD_VEHICLE_SELL_TOOLTIP :{BLACK}Arrastra STR_DEPOT_SHIP_SELL_TOOLTIP :{BLACK}Arrastra o barco aquí para vendelo STR_DEPOT_AIRCRAFT_SELL_TOOLTIP :{BLACK}Arrastra o avión aquí para vendelo -STR_DEPOT_DRAG_WHOLE_TRAIN_TO_SELL_TOOLTIP :{BLACK}Arrastra a máquina do tren aquí para vender todo o tren +STR_DEPOT_DRAG_WHOLE_TRAIN_TO_SELL_TOOLTIP :{BLACK}Arrastra a locomotora aquí para vender todo o tren STR_DEPOT_SELL_ALL_BUTTON_TRAIN_TOOLTIP :{BLACK}Vender tódolos trens do depósito -STR_DEPOT_SELL_ALL_BUTTON_ROAD_VEHICLE_TOOLTIP :{BLACK}Vender tódolos vehículos que hai no depósito +STR_DEPOT_SELL_ALL_BUTTON_ROAD_VEHICLE_TOOLTIP :{BLACK}Vender tódolos vehículos no depósito STR_DEPOT_SELL_ALL_BUTTON_SHIP_TOOLTIP :{BLACK}Vender tódolos barcos no depósito STR_DEPOT_SELL_ALL_BUTTON_AIRCRAFT_TOOLTIP :{BLACK}Vender tódolos avións do hangar @@ -2671,30 +3359,30 @@ STR_DEPOT_AUTOREPLACE_ROAD_VEHICLE_TOOLTIP :{BLACK}Autosubs STR_DEPOT_AUTOREPLACE_SHIP_TOOLTIP :{BLACK}Autosubstituír tódolos barcos no depósito STR_DEPOT_AUTOREPLACE_AIRCRAFT_TOOLTIP :{BLACK}Autosubstituír tódolos avións no hangar -STR_DEPOT_TRAIN_NEW_VEHICLES_BUTTON :{BLACK}Novos Vehículos -STR_DEPOT_ROAD_VEHICLE_NEW_VEHICLES_BUTTON :{BLACK}Novos Vehículos -STR_DEPOT_SHIP_NEW_VEHICLES_BUTTON :{BLACK}Novos Barcos -STR_DEPOT_AIRCRAFT_NEW_VEHICLES_BUTTON :{BLACK}Nova Aeronave +STR_DEPOT_TRAIN_NEW_VEHICLES_BUTTON :{BLACK}Novos vehículos +STR_DEPOT_ROAD_VEHICLE_NEW_VEHICLES_BUTTON :{BLACK}Novos vehículos +STR_DEPOT_SHIP_NEW_VEHICLES_BUTTON :{BLACK}Novos barcos +STR_DEPOT_AIRCRAFT_NEW_VEHICLES_BUTTON :{BLACK}Novas aeronaves -STR_DEPOT_TRAIN_NEW_VEHICLES_TOOLTIP :{BLACK}Comprar novo vehículo de ferrocarril -STR_DEPOT_ROAD_VEHICLE_NEW_VEHICLES_TOOLTIP :{BLACK}Comprar novo vehículo de estrada -STR_DEPOT_SHIP_NEW_VEHICLES_TOOLTIP :{BLACK}Comprar novo barco -STR_DEPOT_AIRCRAFT_NEW_VEHICLES_TOOLTIP :{BLACK}Comprar novo avión +STR_DEPOT_TRAIN_NEW_VEHICLES_TOOLTIP :{BLACK}Mercar novo vehículo ferroviario +STR_DEPOT_ROAD_VEHICLE_NEW_VEHICLES_TOOLTIP :{BLACK}Mercar novo vehículo de estrada +STR_DEPOT_SHIP_NEW_VEHICLES_TOOLTIP :{BLACK}Mercar novo barco +STR_DEPOT_AIRCRAFT_NEW_VEHICLES_TOOLTIP :{BLACK}Mercar novo avión -STR_DEPOT_CLONE_TRAIN :{BLACK}Clonar Tren -STR_DEPOT_CLONE_ROAD_VEHICLE :{BLACK}Clonar Vehículo -STR_DEPOT_CLONE_SHIP :{BLACK}Clonar Barco -STR_DEPOT_CLONE_AIRCRAFT :{BLACK}Clonar Aeronave +STR_DEPOT_CLONE_TRAIN :{BLACK}Clonar tren +STR_DEPOT_CLONE_ROAD_VEHICLE :{BLACK}Clonar vehículo +STR_DEPOT_CLONE_SHIP :{BLACK}Clonar barco +STR_DEPOT_CLONE_AIRCRAFT :{BLACK}Clonar aeronave -STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}Isto comprará unha copia dun tren incluídos os vagóns. Pincha neste botón e despois nun tren dentro ou fóra do depósito. CTRL+Pinchar comparte as ordes -STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Isto comprará unha copia do vehículo. Pincha neste botón e despois nun vehículo dentro ou fóra do depósito. CTRL+Pinchar compartirá as ordes -STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}Esto comprará unha copia do barco. Pincha neste botón e despois nun barco dentro ou fóra do depósito. CTRL+Pinchar compartirá as ordes -STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Esto comprará unha copia do avión. Pincha neste botón e nun avión que estea dentro ou fóra do hangar. CTRL+Pinchar compartirá as ordes +STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}Isto mercará unha copia dun tren incluídos tódolos vagóns. Pincha neste botón e despois nun tren dentro ou fóra do depósito. Ctrl+click comparte as ordes. Shift+Click mostra o custo estimado sen mercar +STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Isto mercará unha copia dun vehículo de estrada. Pincha neste botón e despois nun vehículo de estrada dentro ou fóra do depósito. Ctrl+click comparte as ordes. Shift+Click mostra o custo estimado sen mercar +STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}Isto mercará unha copia dun barco. Pincha neste botón e despois nun barco dentro ou fóra do depósito. Ctrl+click comparte as ordes. Shift+Click mostra o custo estimado sen mercar +STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Isto mercará unha copia dun avión. Pincha neste botón e despois nun avión dentro ou fóra do hangar. Ctrl+click comparte as ordes. Shift+Click mostra o custo estimado sen mercar -STR_DEPOT_TRAIN_LOCATION_TOOLTIP :{BLACK}Centrar a vista principal na situación do depósito. CTRL+Pinchar abrirá unha nova fiestra na situación do depósito -STR_DEPOT_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Centrar a vista principal na situación do depósito. CTRL+Pinchar abrirá unha nova fiestra na situación do depósito -STR_DEPOT_SHIP_LOCATION_TOOLTIP :{BLACK}Centrar a vista principal na situación do depósito. CTRL+Pinchar abrirá unha nova fiestra na situación do depósito -STR_DEPOT_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Centrar a vista principal na situación do hangar. CTRL+Pinchar abrirá unha nova fiestra na situación do hangar +STR_DEPOT_TRAIN_LOCATION_TOOLTIP :{BLACK}Centrar a vista principal na situación do depósito. Ctrl+Click abrirá unha nova fiestra na situación do depósito +STR_DEPOT_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Centrar a vista principal na situación do depósito. Ctrl+Click abrirá unha nova fiestra na situación do depósito +STR_DEPOT_SHIP_LOCATION_TOOLTIP :{BLACK}Centrar a vista principal na situación do depósito. Ctrl+Click abrirá unha nova fiestra na situación do depósito +STR_DEPOT_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Centrar a vista principal na situación do hangar. Ctrl+click abrirá unha nova fiestra na situación do hangar STR_DEPOT_VEHICLE_ORDER_LIST_TRAIN_TOOLTIP :{BLACK}Obter a lista de tódolos trens co depósito actual nas súas ordes STR_DEPOT_VEHICLE_ORDER_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}Obter a lista de tódolos vehículos de estrada co depósito actual nas súas ordes @@ -2706,27 +3394,29 @@ STR_DEPOT_MASS_STOP_DEPOT_ROAD_VEHICLE_TOOLTIP :{BLACK}Pincha p STR_DEPOT_MASS_STOP_DEPOT_SHIP_TOOLTIP :{BLACK}Pincha para parar tódolos barcos que hai no depósito STR_DEPOT_MASS_STOP_HANGAR_TOOLTIP :{BLACK}Pincha para parar tódolos avións que hai no hangar -STR_DEPOT_MASS_START_DEPOT_TRAIN_TOOLTIP :{BLACK}Pincha para iniciar tódolos trens que hai no depósito -STR_DEPOT_MASS_START_DEPOT_ROAD_VEHICLE_TOOLTIP :{BLACK}Pincha para iniciar tódolos vehículos que hai no depósito -STR_DEPOT_MASS_START_DEPOT_SHIP_TOOLTIP :{BLACK}Pincha para iniciar tódolos barcos que hai no depósito -STR_DEPOT_MASS_START_HANGAR_TOOLTIP :{BLACK}Pincha para iniciar tódolos avións que hai no hangar +STR_DEPOT_MASS_START_DEPOT_TRAIN_TOOLTIP :{BLACK}Pincha para arrancar tódolos trens que hai no depósito +STR_DEPOT_MASS_START_DEPOT_ROAD_VEHICLE_TOOLTIP :{BLACK}Pincha para arrancar tódolos vehículos que hai no depósito +STR_DEPOT_MASS_START_DEPOT_SHIP_TOOLTIP :{BLACK}Pincha para arrancar tódolos barcos que hai no depósito +STR_DEPOT_MASS_START_HANGAR_TOOLTIP :{BLACK}Pincha para arrancar tódolos avións que hai no hangar -STR_DEPOT_SELL_CONFIRMATION_TEXT :{YELLOW}Vas vender tódolos vehículos do depósito. ¿Estás seguro? +STR_DEPOT_SELL_CONFIRMATION_TEXT :{YELLOW}Vas vender tódolos vehículos do depósito. Estás seguro? # Engine preview window STR_ENGINE_PREVIEW_CAPTION :{WHITE}Mensaxe dun fabricante de vehículos -STR_ENGINE_PREVIEW_MESSAGE :{GOLD}Rematamo-lo deseño dun/dunha nov@ {STRING} - ¿Interésache probar este vehículo en exclusiva durante un ano, para comproba-lo seu rendemento antes de facelo dispoñible para todos? +STR_ENGINE_PREVIEW_MESSAGE :{GOLD}Acabamos de deseñar un novo {STRING} - Interésache probar este vehículo en exclusiva durante un ano, para ve-lo seu rendemento antes de facelo universalmente dispoñíbel? STR_ENGINE_PREVIEW_RAILROAD_LOCOMOTIVE :locomotora de ferrocarril STR_ENGINE_PREVIEW_ROAD_VEHICLE :vehículo de estrada STR_ENGINE_PREVIEW_AIRCRAFT :avión STR_ENGINE_PREVIEW_SHIP :barco -STR_ENGINE_PREVIEW_MONORAIL_LOCOMOTIVE :locomotora de monoraíl +STR_ENGINE_PREVIEW_MONORAIL_LOCOMOTIVE :locomotora de monorraíl STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :locomotora de maglev -STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Custo: {CURRENCY_LONG} Peso: {WEIGHT_SHORT}{}Velocidade: {VELOCITY} Potencia: {POWER}{}Custo de Mantemento: {CURRENCY_LONG}/ano{}Capacidade: {CARGO_LONG} -STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}Coste: {CURRENCY_LONG} Peso: {WEIGHT_SHORT}{}Velocidade: {VELOCITY} Potencia: {POWER} Máx. T.E.: {6:FORCE}{}Mantemento: {4:CURRENCY_LONG}/a{}Capacidade: {5:CARGO_LONG} -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST :{BLACK}Custo: {CURRENCY_LONG} Velocidade Máx.: {VELOCITY}{}Capacidade: {CARGO_LONG}, {CARGO_LONG}{}Custo Mantemento: {CURRENCY_LONG}/ano -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK}Custo: {CURRENCY_LONG} Velocidade Máx.: {VELOCITY}{}Capacidade: {CARGO_LONG}{}Custo Mantemento: {CURRENCY_LONG}/ano +STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Custo: {CURRENCY_LONG} Peso: {WEIGHT_SHORT}{}Velocidade: {VELOCITY} Potencia: {POWER}{}Custo operativo: {CURRENCY_LONG}/ano{}Capacidade: {CARGO_LONG} +STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}Custo: {CURRENCY_LONG} Peso: {WEIGHT_SHORT}{}Velocidade: {VELOCITY} Potencia: {POWER} Esforzo tractor máximo: {6:FORCE}{}Custo operativo: {4:CURRENCY_LONG}/ano{}Capacidade: {5:CARGO_LONG} +STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST :{BLACK}Custo: {CURRENCY_LONG} Velocidade máxima: {VELOCITY}{}Capacidade: {CARGO_LONG}, {CARGO_LONG}{}Custo operativo: {CURRENCY_LONG}/ano +STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK}Custo: {CURRENCY_LONG} Velocidade máxima: {VELOCITY}{}Capacidade: {CARGO_LONG}{}Custo operativo: {CURRENCY_LONG}/ano +STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_CAPACITY_RUNCOST:{BLACK}Custo: {CURRENCY_LONG} Velocidade máxima: {VELOCITY} Autonomía: {COMMA} cadros{}Capacidade: {CARGO_LONG}, {CARGO_LONG}{}Custo operativo: {CURRENCY_LONG}/ano +STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}Custo: {CURRENCY_LONG} Velocidade máxima: {VELOCITY} Autonomía: {COMMA} cadros{}Capacidade: {CARGO_LONG}{}Custo operativo: {CURRENCY_LONG}/ano # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}Substituír {STRING} - {STRING} @@ -2736,86 +3426,92 @@ STR_REPLACE_VEHICLE_SHIP :Barco STR_REPLACE_VEHICLE_AIRCRAFT :Aeronave 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 seleccionada a esquerda +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 -STR_REPLACE_VEHICLES_START :{BLACK}Comezar a Substituír Vehículos +STR_REPLACE_VEHICLES_START :{BLACK}Comezar a substituír vehículos +STR_REPLACE_VEHICLES_NOW :Reemprazar tódolos vehículos agora +STR_REPLACE_VEHICLES_WHEN_OLD :Reemprazar só vehículos vellos STR_REPLACE_HELP_START_BUTTON :{BLACK}Presiona para comezar a substituír o tipo de máquina da esquerda co seleccionado na dereita STR_REPLACE_NOT_REPLACING :{BLACK}Non substituír STR_REPLACE_NOT_REPLACING_VEHICLE_SELECTED :{BLACK}Non hai vehículos seleccionados -STR_REPLACE_VEHICLES_STOP :{BLACK}Parar de Substituír Vehículos +STR_REPLACE_REPLACING_WHEN_OLD :{ENGINE} cando vaia vello +STR_REPLACE_VEHICLES_STOP :{BLACK}Parar de substituír vehículos STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Presiona para parar a substitución do tipo de máquina seleccionada na esquerda STR_REPLACE_ENGINE_WAGON_SELECT :{BLACK}Substituíndo: {ORANGE}{STRING} -STR_REPLACE_ENGINE_WAGON_SELECT_HELP :{BLACK}Cambia entre as fiestras de substitución de máquinas e vagóns -STR_REPLACE_ENGINES :Máquinas +STR_REPLACE_ENGINE_WAGON_SELECT_HELP :{BLACK}Cambia entre as fiestras de substitución de locomotoras e vagóns +STR_REPLACE_ENGINES :Locomotoras STR_REPLACE_WAGONS :Vagóns -STR_REPLACE_HELP_RAILTYPE :{BLACK}Selecciona o tipo de raíl para o que queres substituír as máquinas -STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Mostra qué máquina seleccionada a esquerda vai ser substituída, se é algunha. -STR_REPLACE_RAIL_VEHICLES :Vehículos Raíl -STR_REPLACE_ELRAIL_VEHICLES :Vehículos de Raíl Electrificados -STR_REPLACE_MONORAIL_VEHICLES :Vehículos Monoraíl -STR_REPLACE_MAGLEV_VEHICLES :Vehículos Maglev +STR_REPLACE_HELP_RAILTYPE :{BLACK}Selecciona o tipo de carril para o que queres substituír as locomotoras +STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Mostra que máquina seleccionada á esquerda vai ser substituída, se é algunha. +STR_REPLACE_RAIL_VEHICLES :Vehículos ferroviarios +STR_REPLACE_ELRAIL_VEHICLES :Vehículos de ferrocarril eléctrico +STR_REPLACE_MONORAIL_VEHICLES :Vehículos de monorraíl +STR_REPLACE_MAGLEV_VEHICLES :Vehículos maglev STR_REPLACE_REMOVE_WAGON :{BLACK}Eliminar os vagóns: {ORANGE}{STRING} -STR_REPLACE_REMOVE_WAGON_HELP :{BLACK}Facer que a autosubstitución manteña a lonxitude do tren quitando vagóns (empezando polo principio), se ó substituír a máquina o tren é máis longo. +STR_REPLACE_REMOVE_WAGON_HELP :{BLACK}Facer que a autosubstitución manteña a lonxitude do tren quitando vagóns (empezando pola cabeza), se ao substituír a locomotora o tren se fixera máis longo. # Vehicle view STR_VEHICLE_VIEW_CAPTION :{WHITE}{VEHICLE} -STR_VEHICLE_VIEW_TRAIN_LOCATION_TOOLTIP :{BLACK}Centrar a vista principal na situación do tren. CTRL+Pinchar seguirá ao tran na vista principal -STR_VEHICLE_VIEW_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Centrar a vista principal na situación do vehículo. CTRL+Pinchar seguirá ao vehículo na vista principal -STR_VEHICLE_VIEW_SHIP_LOCATION_TOOLTIP :{BLACK}Centrar a vista principal na situación do barco. CTRL+Pinchar seguirá ao barco na vista principal -STR_VEHICLE_VIEW_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Centra-la vista principal na situación do avión +STR_VEHICLE_VIEW_TRAIN_LOCATION_TOOLTIP :{BLACK}Centrar a vista principal na situación do tren. Ctrl+click seguirá ao tren na vista principal +STR_VEHICLE_VIEW_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Centrar a vista principal na situación do vehículo. Ctrl+click seguirá ao vehículo na vista principal +STR_VEHICLE_VIEW_SHIP_LOCATION_TOOLTIP :{BLACK}Centrar a vista principal na situación do barco. Ctrl+click seguirá ao barco na vista principal +STR_VEHICLE_VIEW_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Centra-la vista principal na situación do avión. Ctrl+click seguirá ao avión na vista principal -STR_VEHICLE_VIEW_TRAIN_SEND_TO_DEPOT_TOOLTIP :{BLACK}Enviar tren ó depósito -STR_VEHICLE_VIEW_ROAD_VEHICLE_SEND_TO_DEPOT_TOOLTIP :{BLACK}Envia-lo vehículo ó depósito -STR_VEHICLE_VIEW_SHIP_SEND_TO_DEPOT_TOOLTIP :{BLACK}Envia-lo barco o depósito -STR_VEHICLE_VIEW_AIRCRAFT_SEND_TO_DEPOT_TOOLTIP :{BLACK}Envia-lo avión ó hangar +STR_VEHICLE_VIEW_TRAIN_SEND_TO_DEPOT_TOOLTIP :{BLACK}Enviar tren ao depósito. Ctrl+click para facer só servizo +STR_VEHICLE_VIEW_ROAD_VEHICLE_SEND_TO_DEPOT_TOOLTIP :{BLACK}Envia-lo vehículo ao depósito. Ctrl click para facer só servizo +STR_VEHICLE_VIEW_SHIP_SEND_TO_DEPOT_TOOLTIP :{BLACK}Envia-lo barco ao depósito. Ctrl click para facer só servizo +STR_VEHICLE_VIEW_AIRCRAFT_SEND_TO_DEPOT_TOOLTIP :{BLACK}Envia-lo avión ao hangar. Ctrl click para facer só servizo -STR_VEHICLE_VIEW_CLONE_TRAIN_INFO :{BLACK}Esto construirá unha copia do tren incluídos os vagóns. CTRL+Click compartirá as ordes -STR_VEHICLE_VIEW_CLONE_ROAD_VEHICLE_INFO :{BLACK}Esto construirá unha copia do vehículo. CTRL+Click compartirá as ordes -STR_VEHICLE_VIEW_CLONE_SHIP_INFO :{BLACK}Esto construirá unha copia do barco. CTRL+Click compartirá as ordes -STR_VEHICLE_VIEW_CLONE_AIRCRAFT_INFO :{BLACK}Esto construirá una copia do avión. CTRL+Click compartirá as ordes +STR_VEHICLE_VIEW_CLONE_TRAIN_INFO :{BLACK}Esto mercará unha copia do tren incluídos os vagóns. Ctrl+click compartirá as ordes. Shift+click mostra o custo estimado sen mercar +STR_VEHICLE_VIEW_CLONE_ROAD_VEHICLE_INFO :{BLACK}Esto construirá unha copia do vehículo. Ctrl+click compartirá as ordes. Shift+click mostra o custo estimado sen mercar +STR_VEHICLE_VIEW_CLONE_SHIP_INFO :{BLACK}Esto construirá unha copia do barco. Ctrl+click compartirá as ordes. Shift+click mostra o custo estimado sen mercar +STR_VEHICLE_VIEW_CLONE_AIRCRAFT_INFO :{BLACK}Esto construirá una copia do avión. Ctrl+click compartirá as ordes. Shift+click mostra o custo estimado sen mercar -STR_VEHICLE_VIEW_TRAIN_IGNORE_SIGNAL_TOOLTIP :{BLACK}Obliga-lo tren a continuar sen esperar a que o sinal o indique +STR_VEHICLE_VIEW_TRAIN_IGNORE_SIGNAL_TOOLTIP :{BLACK}Obligar ao tren a circular sen agardar a que o sinal o autorice -STR_VEHICLE_VIEW_TRAIN_REFIT_TOOLTIP :{BLACK}Modificar o tren para un tipo de carga diferente -STR_VEHICLE_VIEW_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}Reaxustar vehículo para levar un tipo diferente de carga -STR_VEHICLE_VIEW_SHIP_REFIT_TOOLTIP :{BLACK}Reaxustar o barco para levar un tipo diferente de mercadoría +STR_VEHICLE_VIEW_TRAIN_REFIT_TOOLTIP :{BLACK}Modificar o tren para levar un tipo de carga diferente +STR_VEHICLE_VIEW_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}Modificar vehículo para levar un tipo diferente de carga +STR_VEHICLE_VIEW_SHIP_REFIT_TOOLTIP :{BLACK}Modificar o barco para levar un tipo diferente de mercadoría STR_VEHICLE_VIEW_AIRCRAFT_REFIT_TOOLTIP :{BLACK}Modificar o avión para levar un tipo distinto de carga -STR_VEHICLE_VIEW_TRAIN_REVERSE_TOOLTIP :{BLACK}Invertí-lo sentido do tren -STR_VEHICLE_VIEW_ROAD_VEHICLE_REVERSE_TOOLTIP :{BLACK}Forza-lo vehículo a da-la volta +STR_VEHICLE_VIEW_TRAIN_REVERSE_TOOLTIP :{BLACK}Inverti-la marcha do tren +STR_VEHICLE_VIEW_ROAD_VEHICLE_REVERSE_TOOLTIP :{BLACK}Forzar ao vehículo a dar a volta -STR_VEHICLE_VIEW_TRAIN_ORDERS_TOOLTIP :{BLACK}Mostra-las ordes do tren. CTRL+Click mostrará o horario -STR_VEHICLE_VIEW_ROAD_VEHICLE_ORDERS_TOOLTIP :{BLACK}Mostra-las ordes do vehículo -STR_VEHICLE_VIEW_SHIP_ORDERS_TOOLTIP :{BLACK}Mostra-las ordes do barco -STR_VEHICLE_VIEW_AIRCRAFT_ORDERS_TOOLTIP :{BLACK}Mostra-las ordes do avión +STR_VEHICLE_VIEW_TRAIN_ORDERS_TOOLTIP :{BLACK}Mostra-las ordes do tren. Ctrl+click mostra o horario +STR_VEHICLE_VIEW_ROAD_VEHICLE_ORDERS_TOOLTIP :{BLACK}Mostra-las ordes do vehículo. Ctrl+click mostra o horario +STR_VEHICLE_VIEW_SHIP_ORDERS_TOOLTIP :{BLACK}Mostra-las ordes do barco. Ctrl+click mostra o horario +STR_VEHICLE_VIEW_AIRCRAFT_ORDERS_TOOLTIP :{BLACK}Mostra-las ordes do avión. Ctrl+click mostra o horario STR_VEHICLE_VIEW_TRAIN_SHOW_DETAILS_TOOLTIP :{BLACK}Mostra-los detalles do tren STR_VEHICLE_VIEW_ROAD_VEHICLE_SHOW_DETAILS_TOOLTIP :{BLACK}Mostra-los detalles do vehículo de estrada STR_VEHICLE_VIEW_SHIP_SHOW_DETAILS_TOOLTIP :{BLACK}Mostra-los detalles do barco STR_VEHICLE_VIEW_AIRCRAFT_SHOW_DETAILS_TOOLTIP :{BLACK}Mostra-los detalles do avión -STR_VEHICLE_VIEW_TRAIN_STATE_START_STOP_TOOLTIP :{BLACK}Acción actual do tren - pincha para parar/arrancar o tren. CTRL+Click para desprazarse ao destino -STR_VEHICLE_VIEW_ROAD_VEHICLE_STATE_START_STOP_TOOLTIP :{BLACK}Acción actual do vehículo - pincha para parar/arrancar o vehículo. CTRL+Click para desprazarse ao destino -STR_VEHICLE_VIEW_SHIP_STATE_START_STOP_TOOLTIP :{BLACK}Acción actual do barco - pincha para parar/arrancar o barco. CTRL+Click para desprazarse ao destino -STR_VEHICLE_VIEW_AIRCRAFT_STATE_START_STOP_TOOLTIP :{BLACK}Acción actual do avión - pincha para parar/arrancar o avión. CTRL+Click para desprazarse ao destino +STR_VEHICLE_VIEW_TRAIN_STATE_START_STOP_TOOLTIP :{BLACK}Acción actual do tren - pincha para deter/arrancar o tren. Ctrl+click para desprazarse ao destino +STR_VEHICLE_VIEW_ROAD_VEHICLE_STATE_START_STOP_TOOLTIP :{BLACK}Acción actual do vehículo - pincha para parar/arrancar o vehículo. Ctrl+click para desprazarse ao destino +STR_VEHICLE_VIEW_SHIP_STATE_START_STOP_TOOLTIP :{BLACK}Acción actual do barco - pincha para parar/arrancar o barco. Ctrl+click para desprazarse ao destino +STR_VEHICLE_VIEW_AIRCRAFT_STATE_START_STOP_TOOLTIP :{BLACK}Acción actual do avión - pincha para parar/arrancar o avión. Ctrl+click para desprazarse ao destino # Messages in the start stop button in the vehicle view STR_VEHICLE_STATUS_LOADING_UNLOADING :{LTBLUE}Cargando / Descargando STR_VEHICLE_STATUS_LEAVING :{LTBLUE}Saíndo -STR_VEHICLE_STATUS_CRASHED :{RED}¡Estrelado! +STR_VEHICLE_STATUS_CRASHED :{RED}Estrelado! STR_VEHICLE_STATUS_BROKEN_DOWN :{RED}Roto STR_VEHICLE_STATUS_STOPPED :{RED}Parado STR_VEHICLE_STATUS_TRAIN_STOPPING_VEL :{RED}Parando, {VELOCITY} STR_VEHICLE_STATUS_TRAIN_NO_POWER :{RED}Sen enerxía STR_VEHICLE_STATUS_TRAIN_STUCK :{ORANGE}Esperando camiño libre +STR_VEHICLE_STATUS_AIRCRAFT_TOO_FAR :{ORANGE}Demasiado lonxe do próximo destino -STR_VEHICLE_STATUS_HEADING_FOR_STATION_VEL :{LTBLUE}Diríxese a {STATION}, {VELOCITY} +STR_VEHICLE_STATUS_HEADING_FOR_STATION_VEL :{LTBLUE}Dirixíndose a {STATION}, {VELOCITY} STR_VEHICLE_STATUS_NO_ORDERS_VEL :{LTBLUE}Sen ordes, {VELOCITY} -STR_VEHICLE_STATUS_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}Diríxese a {WAYPOINT}, {VELOCITY} +STR_VEHICLE_STATUS_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}Dirixíndose a {WAYPOINT}, {VELOCITY} +STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_VEL :{ORANGE}Dirixíndose a {DEPOT}, {VELOCITY} +STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_SERVICE_VEL :{LTBLUE}Servizo en {DEPOT}, {VELOCITY} # Vehicle stopped/started animations STR_VEHICLE_COMMAND_STOPPED_SMALL :{TINY_FONT}{RED}Parado @@ -2830,19 +3526,20 @@ STR_VEHICLE_NAME_BUTTON :{BLACK}Nome STR_VEHICLE_DETAILS_TRAIN_RENAME :{BLACK}Renomear tren STR_VEHICLE_DETAILS_ROAD_VEHICLE_RENAME :{BLACK}Renomear vehículo de estrada STR_VEHICLE_DETAILS_SHIP_RENAME :{BLACK}Renomear barco -STR_VEHICLE_DETAILS_AIRCRAFT_RENAME :{BLACK}Cambia-lo nome do avión +STR_VEHICLE_DETAILS_AIRCRAFT_RENAME :{BLACK}Renomear avión -STR_VEHICLE_INFO_AGE_RUNNING_COST_YR :{BLACK}Idade: {LTBLUE}{STRING}{BLACK} Custo Mantemento: {LTBLUE}{CURRENCY_LONG}/ano +STR_VEHICLE_INFO_AGE_RUNNING_COST_YR :{BLACK}Idade: {LTBLUE}{STRING}{BLACK} Custo operativo: {LTBLUE}{CURRENCY_LONG}/ano # The next two need to stay in this order STR_VEHICLE_INFO_AGE :{COMMA} ano{P "" s} ({COMMA}) STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} ano{P "" s} ({COMMA}) -STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Velocidade máx.: {LTBLUE}{VELOCITY} -STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Peso: {LTBLUE}{WEIGHT_SHORT} {BLACK}Potencia: {LTBLUE}{POWER}{BLACK} Velocidade máx.: {LTBLUE}{VELOCITY} -STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Peso: {LTBLUE}{WEIGHT_SHORT} {BLACK}Potencia: {LTBLUE}{POWER}{BLACK} Velocidade máx.: {LTBLUE}{VELOCITY} {BLACK}T.E. máx.: {LTBLUE}{FORCE} +STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Velocidade máxima: {LTBLUE}{VELOCITY} +STR_VEHICLE_INFO_MAX_SPEED_RANGE :{BLACK}Velocidade máxima: {LTBLUE}{VELOCITY} {BLACK}Autonomía: {LTBLUE}{COMMA} cadros +STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Peso: {LTBLUE}{WEIGHT_SHORT} {BLACK}Potencia: {LTBLUE}{POWER}{BLACK} Velocidade máxima: {LTBLUE}{VELOCITY} +STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Peso: {LTBLUE}{WEIGHT_SHORT} {BLACK}Potencia: {LTBLUE}{POWER}{BLACK} Velocidade máxima: {LTBLUE}{VELOCITY} {BLACK}T.E. máx.: {LTBLUE}{FORCE} STR_VEHICLE_INFO_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Beneficio este ano: {LTBLUE}{CURRENCY_LONG} (ano pasado: {CURRENCY_LONG}) -STR_VEHICLE_INFO_RELIABILITY_BREAKDOWNS :{BLACK}Fiabilidade: {LTBLUE}{COMMA}% {BLACK}Roturas desde o último servizo: {LTBLUE}{COMMA} +STR_VEHICLE_INFO_RELIABILITY_BREAKDOWNS :{BLACK}Fiabilidade: {LTBLUE}{COMMA}% {BLACK}Avarías dende o último servizo: {LTBLUE}{COMMA} STR_VEHICLE_INFO_BUILT_VALUE :{LTBLUE}{ENGINE} {BLACK}Construído: {LTBLUE}{NUM}{BLACK} Valor: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_INFO_NO_CAPACITY :{BLACK}Capacidade: {LTBLUE}Ningunha{STRING} @@ -2850,17 +3547,22 @@ STR_VEHICLE_INFO_CAPACITY :{BLACK}Capacida STR_VEHICLE_INFO_CAPACITY_MULT :{BLACK}Capacidade: {LTBLUE}{CARGO_LONG}{3:STRING} (x{4:NUM}) STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}Capacidade: {LTBLUE}{CARGO_LONG}, {CARGO_LONG}{STRING} -STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}Transferir Créditos: {LTBLUE}{CURRENCY_LONG} +STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}Créditos de transferencia: {LTBLUE}{CURRENCY_LONG} -STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Intervalo de Servizo: {LTBLUE}{COMMA}days{BLACK} Último Servizo: {LTBLUE}{DATE_LONG} -STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Intervalo servizo: {LTBLUE}{COMMA}%{BLACK} Últ. Servizo: {LTBLUE}{DATE_LONG} -STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Incrementa-lo intervalo dos servizos -STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Disminuí-lo intervalo dos servizos +STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Intervalo de servizo: {LTBLUE}{COMMA}días{BLACK} Último servizo: {LTBLUE}{DATE_LONG} +STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Intervalo de servizo: {LTBLUE}{COMMA}%{BLACK} Último servizo: {LTBLUE}{DATE_LONG} +STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Incrementa-lo intervalo dos servizos en 10. Ctrl+Click increméntao en 5 +STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Diminuí-lo intervalo dos servizos en 10. Ctrl+click diminúeo en 5 + +STR_SERVICE_INTERVAL_DROPDOWN_TOOLTIP :{BLACK}Mudar tipo de intervalo de servizo +STR_VEHICLE_DETAILS_DEFAULT :Por defecto +STR_VEHICLE_DETAILS_DAYS :Días +STR_VEHICLE_DETAILS_PERCENT :Porcentaxe STR_QUERY_RENAME_TRAIN_CAPTION :{WHITE}Renomear tren STR_QUERY_RENAME_ROAD_VEHICLE_CAPTION :{WHITE}Renomear vehículo de estrada STR_QUERY_RENAME_SHIP_CAPTION :{WHITE}Renomear barco -STR_QUERY_RENAME_AIRCRAFT_CAPTION :{WHITE}Cambia-lo nome do avión +STR_QUERY_RENAME_AIRCRAFT_CAPTION :{WHITE}Renomear avión # Extra buttons for train details windows STR_VEHICLE_DETAILS_TRAIN_ENGINE_BUILT_AND_VALUE :{LTBLUE}{ENGINE}{BLACK} Construído: {LTBLUE}{NUM}{BLACK} Valor: {LTBLUE}{CURRENCY_LONG} @@ -2870,63 +3572,67 @@ STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY_TEXT :{BLACK}Capacida 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}Valeiro -STR_VEHICLE_DETAILS_CARGO_FROM :{LTBLUE}{CARGO_LONG} de {STATION} -STR_VEHICLE_DETAILS_CARGO_FROM_MULT :{LTBLUE}{CARGO_LONG} desde {STATION} (x{NUM}) +STR_VEHICLE_DETAILS_CARGO_EMPTY :{LTBLUE}Baleiro +STR_VEHICLE_DETAILS_CARGO_FROM :{LTBLUE}{CARGO_LONG} dende {STATION} +STR_VEHICLE_DETAILS_CARGO_FROM_MULT :{LTBLUE}{CARGO_LONG} dende {STATION} (x{NUM}) STR_VEHICLE_DETAIL_TAB_CARGO :{BLACK}Carga STR_VEHICLE_DETAILS_TRAIN_CARGO_TOOLTIP :{BLACK}Mostrar detalle das mercadorías transportadas STR_VEHICLE_DETAIL_TAB_INFORMATION :{BLACK}Información -STR_VEHICLE_DETAILS_TRAIN_INFORMATION_TOOLTIP :{BLACK}Mostrar detalle dos vehículos do tren +STR_VEHICLE_DETAILS_TRAIN_INFORMATION_TOOLTIP :{BLACK}Mostrar detalle dos vehículos ferroviarios STR_VEHICLE_DETAIL_TAB_CAPACITIES :{BLACK}Capacidades STR_VEHICLE_DETAILS_TRAIN_CAPACITIES_TOOLTIP :{BLACK}Mostrar a capacidade de cada vehículo -STR_VEHICLE_DETAIL_TAB_TOTAL_CARGO :{BLACK}Carga Total +STR_VEHICLE_DETAIL_TAB_TOTAL_CARGO :{BLACK}Carga total STR_VEHICLE_DETAILS_TRAIN_TOTAL_CARGO_TOOLTIP :{BLACK}Mostra-la capacidade total do tren, dividida por tipos de carga STR_VEHICLE_DETAILS_TRAIN_ARTICULATED_RV_CAPACITY :{BLACK}Capacidade: {LTBLUE} # Vehicle refit -STR_REFIT_CAPTION :{WHITE}{VEHICLE} (Reaxustar) +STR_REFIT_CAPTION :{WHITE}{VEHICLE} (Reformar) STR_REFIT_TITLE :{GOLD}Selecciona-lo tipo de carga a levar: -STR_REFIT_NEW_CAPACITY_COST_OF_REFIT :{BLACK}Nova Capacidade: {GOLD}{CARGO_LONG}{}{BLACK}Custo do reaxuste: {RED}{CURRENCY_LONG} +STR_REFIT_NEW_CAPACITY_COST_OF_REFIT :{BLACK}Nova capacidade: {GOLD}{CARGO_LONG}{}{BLACK}Custo da reforma: {RED}{CURRENCY_LONG} +STR_REFIT_NEW_CAPACITY_INCOME_FROM_REFIT :{BLACK}Nova capacidade: {GOLD}{CARGO_LONG}{}{BLACK}Ingreso da reforma: {GREEN}{CURRENCY_LONG} +STR_REFIT_NEW_CAPACITY_COST_OF_AIRCRAFT_REFIT :{BLACK}Nova capacidade: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Custo da reforma: {RED}{CURRENCY_LONG} +STR_REFIT_NEW_CAPACITY_INCOME_FROM_AIRCRAFT_REFIT :{BLACK}Nova capacidade: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Ingresos da reforma: {GREEN}{CURRENCY_LONG} +STR_REFIT_SELECT_VEHICLES_TOOLTIP :{BLACK}Selecciona os vehículos a reformar. Arrastrar co rato permite seleccionar múltiples vehículos. Pinchar nun espazo baleiro seleccionará o vehículo completo. Ctrl+click selecciona un vehículo e os seguintes STR_REFIT_TRAIN_LIST_TOOLTIP :{BLACK}Selecciona o tipo de carga que levará o tren STR_REFIT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Selecciona o tipo de carga que levará este vehículo de estrada -STR_REFIT_SHIP_LIST_TOOLTIP :{BLACK}Selecciona o tipo de mercadoría que vai levar -STR_REFIT_AIRCRAFT_LIST_TOOLTIP :{BLACK}Selecciona o tipo de carga que levará +STR_REFIT_SHIP_LIST_TOOLTIP :{BLACK}Selecciona o tipo de mercadoría que vai levar o barco +STR_REFIT_AIRCRAFT_LIST_TOOLTIP :{BLACK}Selecciona o tipo de carga que levará o avión -STR_REFIT_TRAIN_REFIT_BUTTON :{BLACK}Reaxustar tren -STR_REFIT_ROAD_VEHICLE_REFIT_BUTTON :{BLACK}Reaxustar vehículo -STR_REFIT_SHIP_REFIT_BUTTON :{BLACK}Reaxustar barco -STR_REFIT_AIRCRAFT_REFIT_BUTTON :{BLACK}Reaxustar avión +STR_REFIT_TRAIN_REFIT_BUTTON :{BLACK}Reformar tren +STR_REFIT_ROAD_VEHICLE_REFIT_BUTTON :{BLACK}Reformar vehículo +STR_REFIT_SHIP_REFIT_BUTTON :{BLACK}Reformar barco +STR_REFIT_AIRCRAFT_REFIT_BUTTON :{BLACK}Reformar avión -STR_REFIT_TRAIN_REFIT_TOOLTIP :{BLACK}Modificar o tren para o tipo de carga seleccionado -STR_REFIT_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}Reaxustar vehículo para levar o tipo de carga seleccionado -STR_REFIT_SHIP_REFIT_TOOLTIP :{BLACK}Modificar o barco para levar o tipo de mercadoría seleccionada -STR_REFIT_AIRCRAFT_REFIT_TOOLTIP :{BLACK}Modificar o avión para levar o tipo de carga seleccionada +STR_REFIT_TRAIN_REFIT_TOOLTIP :{BLACK}Reforma-lo tren para o tipo de mercadoría seleccionado +STR_REFIT_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}Reformar vehículo para levar o tipo de mercadoría seleccionado +STR_REFIT_SHIP_REFIT_TOOLTIP :{BLACK}Reformar o barco para levar o tipo de mercadoría seleccionada +STR_REFIT_AIRCRAFT_REFIT_TOOLTIP :{BLACK}Reforma-lo avión para levar o tipo de mercadoría seleccionado # Order view STR_ORDERS_CAPTION :{WHITE}{VEHICLE} (Ordes) STR_ORDERS_TIMETABLE_VIEW :{BLACK}Horario STR_ORDERS_TIMETABLE_VIEW_TOOLTIP :{BLACK}Cambiar á vista de horarios -STR_ORDERS_LIST_TOOLTIP :{BLACK}Lista de Ordes - Pincha nunha orde para seleccionala +STR_ORDERS_LIST_TOOLTIP :{BLACK}Lista de ordes - Pincha nunha orde para seleccionala. Ctrl+click para desprazarse á estación da orde STR_ORDER_INDEX :{COMMA}:{NBSP} STR_ORDER_TEXT :{STRING} {STRING} {STRING} -STR_ORDERS_END_OF_ORDERS :- - Fin das Ordes - - +STR_ORDERS_END_OF_ORDERS :- - Fin das ordes - - STR_ORDERS_END_OF_SHARED_ORDERS :- - Fin das ordes compartidas - - # Order bottom buttons -STR_ORDER_NON_STOP :{BLACK}Sen parar +STR_ORDER_NON_STOP :{BLACK}Sen paradas STR_ORDER_GO_TO :Ir a -STR_ORDER_GO_NON_STOP_TO :Ir sen parar a +STR_ORDER_GO_NON_STOP_TO :Ir sen paradas a STR_ORDER_GO_VIA :Ir vía -STR_ORDER_GO_NON_STOP_VIA :Ir sen parar vía +STR_ORDER_GO_NON_STOP_VIA :Ir sen paradas vía STR_ORDER_TOOLTIP_NON_STOP :{BLACK}Cambiar o comportamento de parada da orde seleccionada STR_ORDER_TOGGLE_FULL_LOAD :{BLACK}Carga completa de calquera carga -STR_ORDER_DROP_LOAD_IF_POSSIBLE :Cargar se está dispoñible +STR_ORDER_DROP_LOAD_IF_POSSIBLE :Cargar se está dispoñíbel STR_ORDER_DROP_FULL_LOAD_ALL :Carga completa de tódalas cargas STR_ORDER_DROP_FULL_LOAD_ANY :Carga completa de calquera carga STR_ORDER_DROP_NO_LOADING :Non cargar @@ -2939,32 +3645,37 @@ STR_ORDER_DROP_TRANSFER :Transferir STR_ORDER_DROP_NO_UNLOADING :Non descargar STR_ORDER_TOOLTIP_UNLOAD :{BLACK}Cambiar o comportamento de descarga da orde seleccionada -STR_ORDER_REFIT :{BLACK}Reaxustar -STR_ORDER_REFIT_TOOLTIP :{BLACK}Selecciona o tipo de carga para reaxustar nesta orde. CTRL+click para quita la instrución de reaxuste +STR_ORDER_REFIT :{BLACK}Reformar +STR_ORDER_REFIT_TOOLTIP :{BLACK}Selecciona o tipo de carga para reformar nesta orde. CTRL+click para quita-la instrución de reforma +STR_ORDER_REFIT_AUTO :{BLACK}Auto-reforma +STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}Selecciona que tipo de carfa se reformará nesta orde. Ctrl+click para borra-la orde de reforma. A auto-reforma só será feita se o vehículo o permite +STR_ORDER_DROP_REFIT_AUTO :Carga fixada +STR_ORDER_DROP_REFIT_AUTO_ANY :Carga dispoñíbel STR_ORDER_SERVICE :{BLACK}Servizo STR_ORDER_DROP_GO_ALWAYS_DEPOT :Ir sempre STR_ORDER_DROP_SERVICE_DEPOT :Facer servizo se é necesario STR_ORDER_DROP_HALT_DEPOT :Parar -STR_ORDER_SERVICE_TOOLTIP :{BLACK}Saltar esta orde a non ser que sexa necesario o servizo +STR_ORDER_SERVICE_TOOLTIP :{BLACK}Saltar esta orde a non ser que sexa necesario un servizo -STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}Datos do vehículo para basa lo salto +STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}Datos do vehículo para saltarse # Conditional order variables, must follow order of OrderConditionVariable enum STR_ORDER_CONDITIONAL_LOAD_PERCENTAGE :Porcentaxe de carga STR_ORDER_CONDITIONAL_RELIABILITY :Fiabilidade STR_ORDER_CONDITIONAL_MAX_SPEED :Velocidade máxima -STR_ORDER_CONDITIONAL_AGE :Idade do vehículo (anos) +STR_ORDER_CONDITIONAL_AGE :Idade (anos) STR_ORDER_CONDITIONAL_REQUIRES_SERVICE :Require servizo STR_ORDER_CONDITIONAL_UNCONDITIONALLY :Sempre +STR_ORDER_CONDITIONAL_REMAINING_LIFETIME :Vida útil restante (anos) STR_ORDER_CONDITIONAL_COMPARATOR_TOOLTIP :{BLACK}Como comparar os datos do vehículo co valor proporcionado STR_ORDER_CONDITIONAL_COMPARATOR_EQUALS :é igual a STR_ORDER_CONDITIONAL_COMPARATOR_NOT_EQUALS :é distinto a STR_ORDER_CONDITIONAL_COMPARATOR_LESS_THAN :é menor que -STR_ORDER_CONDITIONAL_COMPARATOR_LESS_EQUALS :é menor ou igual a +STR_ORDER_CONDITIONAL_COMPARATOR_LESS_EQUALS :é menor ou igual que STR_ORDER_CONDITIONAL_COMPARATOR_MORE_THAN :é maior de -STR_ORDER_CONDITIONAL_COMPARATOR_MORE_EQUALS :é maior ou igual a +STR_ORDER_CONDITIONAL_COMPARATOR_MORE_EQUALS :é maior ou igual que STR_ORDER_CONDITIONAL_COMPARATOR_IS_TRUE :é verdadeiro STR_ORDER_CONDITIONAL_COMPARATOR_IS_FALSE :é falso @@ -2976,12 +3687,16 @@ STR_ORDERS_SKIP_TOOLTIP :{BLACK}Salta-la STR_ORDERS_DELETE_BUTTON :{BLACK}Borrar STR_ORDERS_DELETE_TOOLTIP :{BLACK}Borra-la orde seleccionada +STR_ORDERS_DELETE_ALL_TOOLTIP :{BLACK}Borrar tódalas ordes +STR_ORDERS_STOP_SHARING_BUTTON :{BLACK}Deixar de compartir +STR_ORDERS_STOP_SHARING_TOOLTIP :{BLACK}Deixa de compartir a lista de ordes. Ctrl+Click elimina tódalas ordes para este vehículo STR_ORDERS_GO_TO_BUTTON :{BLACK}Ir a STR_ORDER_GO_TO_NEAREST_DEPOT :Ir ó depósito máis cercano STR_ORDER_GO_TO_NEAREST_HANGAR :Ir ó hangar máis cercano STR_ORDER_CONDITIONAL :Salto de orde condicional -STR_ORDERS_GO_TO_TOOLTIP :{BLACK}Insertar unha nova orde despois da seleccionada, o insertar unha nova orde ó final da lista +STR_ORDER_SHARE :Comparte as ordes +STR_ORDERS_GO_TO_TOOLTIP :{BLACK}Engadir unha nova orde antes da seleccionada ou engadi-la ao final da lista. Ctrl sobre estacións ordea “Cargar completamente calquera carga”, sobre puntos de ruta ordea sen paradas e sobre depósitos ordea mantemento. “Compartir ordes” ou Ctrl permite ó vehículo compartir ordes co vehículo seleccionado. Click nun vehículo copia as ordes. Unha orde de depósito desactiva o mantemento automático do vehículo STR_ORDERS_VEH_WITH_SHARED_ORDERS_LIST_TOOLTIP :{BLACK}Mostrar tódolos vehículos que comparten esta planificación @@ -2989,8 +3704,8 @@ STR_ORDERS_VEH_WITH_SHARED_ORDERS_LIST_TOOLTIP :{BLACK}Mostrar STR_ORDER_GO_TO_WAYPOINT :Ir vía {WAYPOINT} STR_ORDER_GO_NON_STOP_TO_WAYPOINT :Ir sen parar vía {WAYPOINT} -STR_ORDER_SERVICE_AT :Servizo en -STR_ORDER_SERVICE_NON_STOP_AT :Servizo sen parada en +STR_ORDER_SERVICE_AT :Mantemento en +STR_ORDER_SERVICE_NON_STOP_AT :Mantemento sen parada en STR_ORDER_NEAREST_DEPOT :o máis cercano STR_ORDER_NEAREST_HANGAR :o Hangar máis cercano @@ -3006,6 +3721,7 @@ STR_ORDER_STOP_ORDER :(Parar) STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING} +STR_ORDER_IMPLICIT :(Implícito) STR_ORDER_FULL_LOAD :(Carga completa) STR_ORDER_FULL_LOAD_ANY :(Carga completa de calquera carga) @@ -3021,13 +3737,28 @@ STR_ORDER_TRANSFER_NO_LOAD :(Transferir e s STR_ORDER_NO_UNLOAD :(Non descargar e tomar carga) STR_ORDER_NO_UNLOAD_FULL_LOAD :(Non descargar e esperar a carga completa) STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY :(Non descargar e esperar a calquera carga completa) - - +STR_ORDER_NO_UNLOAD_NO_LOAD :(Non descargar nin cargar) + +STR_ORDER_AUTO_REFIT :(Auto-axuste a {STRING}) +STR_ORDER_FULL_LOAD_REFIT :(Carga completa con auto-axuste a {STRING}) +STR_ORDER_FULL_LOAD_ANY_REFIT :(Carga completa de calquera carga con auto-axuste a {STRING}) +STR_ORDER_UNLOAD_REFIT :(Descargar e tomar cargo con autoaxuste para {STRING}) +STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(Descargar e agardar por carga completa con auto-axuste a {STRING}) +STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(Descargar e esperar a calquera carga completa con auto-axuste a {STRING}) +STR_ORDER_TRANSFER_REFIT :(Transferir e tomar carga con autoaxuste para {STRING}) +STR_ORDER_TRANSFER_FULL_LOAD_REFIT :(Transferir e esperar a carga completa con auto-axuste a {STRING}) +STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :(Transferir e esperar por calquera carga completa con auto-axuste a {STRING}) +STR_ORDER_NO_UNLOAD_REFIT :(Non descargar e tomar carga con auto-axuste a {STRING}) +STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT :(Non descargar e esperar a carga completa con auto-axuste a {STRING}) +STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :(Non descargar e esperar a calquera carga completa con auto-axuste a {STRING}) + +STR_ORDER_AUTO_REFIT_ANY :carga dispoñible STR_ORDER_STOP_LOCATION_NEAR_END :[preto do final] STR_ORDER_STOP_LOCATION_MIDDLE :[medio] STR_ORDER_STOP_LOCATION_FAR_END :[lonxe do final] +STR_ORDER_OUT_OF_RANGE :{RED} (O próximo destino está fora de alcance) STR_ORDER_CONDITIONAL_UNCONDITIONAL :Saltar á orde {COMMA} STR_ORDER_CONDITIONAL_NUM :Saltar á orde {COMMA} cando {STRING} {STRING} {COMMA} @@ -3043,8 +3774,11 @@ STR_TIMETABLE_ORDER_VIEW_TOOLTIP :{BLACK}Cambiar STR_TIMETABLE_TOOLTIP :{BLACK}Horario - pincha nunha orde para seleccionala STR_TIMETABLE_NO_TRAVEL :Sen viaxe +STR_TIMETABLE_NOT_TIMETABLEABLE :Viaxar (automático; programado pola próxima orde manual) STR_TIMETABLE_TRAVEL_NOT_TIMETABLED :Viaxar (sen horario) +STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :Viaxar polo menos a {2:VELOCITY} (sen horarios) STR_TIMETABLE_TRAVEL_FOR :Viaxar durante {STRING} +STR_TIMETABLE_TRAVEL_FOR_SPEED :Viaxar por {STRING} polo menos a {VELOCITY} STR_TIMETABLE_STAY_FOR :e parar durante {STRING} STR_TIMETABLE_AND_TRAVEL_FOR :e viaxar durante {STRING} STR_TIMETABLE_DAYS :{COMMA} día{P "" s} @@ -3053,94 +3787,130 @@ STR_TIMETABLE_TICKS :{COMMA} tick{P STR_TIMETABLE_TOTAL_TIME :{BLACK}Levará {STRING} completar este horario STR_TIMETABLE_TOTAL_TIME_INCOMPLETE :{BLACK}Este horario levará {STRING} completalo (non está completo) -STR_TIMETABLE_STATUS_ON_TIME :{BLACK}Este vehículo está actualmente en tempo +STR_TIMETABLE_STATUS_ON_TIME :{BLACK}Este vehículo non leva retraso actualmente STR_TIMETABLE_STATUS_LATE :{BLACK}Este vehículo está retrasado {STRING} STR_TIMETABLE_STATUS_EARLY :{BLACK}Este vehículo vai adiantado {STRING} STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}Este horario aínda non comezóu STR_TIMETABLE_STATUS_START_AT :{BLACK}Este horario comezará o {STRING} STR_TIMETABLE_STARTING_DATE :{BLACK}Data comezo -STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Selecciona unha data como data de inicio de este horario +STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Selecciona unha data coma punto de inicio para este horario. Ctrl + click determina o punto de partida deste horario e distribúe uniformemente tódolos vehículos que compartan esta orde baséandose na súa orde relativa. se a orde está completamente tabulada nos horarios STR_TIMETABLE_CHANGE_TIME :{BLACK}Cambiar Tempo -STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Cambiar a cantidade de tempo que debería levar a orde seleccionada +STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Cambiar o tempo que debería levar a orde seleccionada -STR_TIMETABLE_CLEAR_TIME :{BLACK}Borrar Tempo -STR_TIMETABLE_CLEAR_TIME_TOOLTIP :{BLACK}Quitar a cantidade de tempo para a orde seleccionada +STR_TIMETABLE_CLEAR_TIME :{BLACK}Borrar tempo +STR_TIMETABLE_CLEAR_TIME_TOOLTIP :{BLACK}Borrar o tempo para a orde seleccionada +STR_TIMETABLE_CHANGE_SPEED :{BLACK}Cambiar o límite de velocidade +STR_TIMETABLE_CHANGE_SPEED_TOOLTIP :{BLACK}Cambiar a velocidade máxima da orde seleccionada +STR_TIMETABLE_CLEAR_SPEED :{BLACK}Borrar o límite de velocidade +STR_TIMETABLE_CLEAR_SPEED_TOOLTIP :{BLACK}Borrar a velocidade máxima da orde seleccionada -STR_TIMETABLE_RESET_LATENESS :{BLACK}Reiniciar Contador de Retraso -STR_TIMETABLE_RESET_LATENESS_TOOLTIP :{BLACK}Reiniciar o contador de atraso, para que o vehículo vaia en punto +STR_TIMETABLE_RESET_LATENESS :{BLACK}Reiniciar atraso +STR_TIMETABLE_RESET_LATENESS_TOOLTIP :{BLACK}Reiniciar o contador de atraso, para que o vehículo vaia en hora -STR_TIMETABLE_AUTOFILL :{BLACK}Autoencher +STR_TIMETABLE_AUTOFILL :{BLACK}Encher automaticamente STR_TIMETABLE_AUTOFILL_TOOLTIP :{BLACK}Encher o horario automaticamente cos valores da seguinte viaxe (CTRL+Pinchar para intentar manter os tempos de espera) STR_TIMETABLE_EXPECTED :{BLACK}Esperado STR_TIMETABLE_SCHEDULED :{BLACK}Programado STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Alternar entre o esperado e o programado -STR_TIMETABLE_ARRIVAL_ABBREVIATION :C: +STR_TIMETABLE_ARRIVAL_ABBREVIATION :Ch: STR_TIMETABLE_DEPARTURE_ABBREVIATION :S: # Date window (for timetable) STR_DATE_CAPTION :{WHITE}Establecer data STR_DATE_SET_DATE :{BLACK}Establecer data -STR_DATE_SET_DATE_TOOLTIP :{BLACK}Utiliza a data seleccionada como punto de inicio do horario +STR_DATE_SET_DATE_TOOLTIP :{BLACK}Utiliza a data seleccionada coma punto de partida do horario STR_DATE_DAY_TOOLTIP :{BLACK}Selecciona día STR_DATE_MONTH_TOOLTIP :{BLACK}Selecciona mes STR_DATE_YEAR_TOOLTIP :{BLACK}Selecciona ano # AI debug window -STR_AI_DEBUG :{WHITE}Depuración IA +STR_AI_DEBUG :{WHITE}Depuración IA/script do xogo STR_AI_DEBUG_NAME_AND_VERSION :{BLACK}{STRING} (v{NUM}) -STR_AI_DEBUG_NAME_TOOLTIP :{BLACK}Nome da IA -STR_AI_DEBUG_SETTINGS :{BLACK}Configuración IA -STR_AI_DEBUG_SETTINGS_TOOLTIP :{BLACK}Cambia-la configuración da IA +STR_AI_DEBUG_NAME_TOOLTIP :{BLACK}Nome do script +STR_AI_DEBUG_SETTINGS :{BLACK}Configuración +STR_AI_DEBUG_SETTINGS_TOOLTIP :{BLACK}Cambia-la configuración do script STR_AI_DEBUG_RELOAD :{BLACK}Recargar IA -STR_AI_DEBUG_RELOAD_TOOLTIP :{BLACK}Mata-la IA, recargar o script, e reinicia-la IA +STR_AI_DEBUG_RELOAD_TOOLTIP :{BLACK}Mata-la IA, recargar o script e reinicia-la IA +STR_AI_DEBUG_BREAK_STR_ON_OFF_TOOLTIP :{BLACK}Activar / desactivar pausa cando unha mensaxe de log da IA coincide coa cadena de parada +STR_AI_DEBUG_BREAK_ON_LABEL :{BLACK}Pausar en: +STR_AI_DEBUG_BREAK_STR_OSKTITLE :{BLACK}Pausar en +STR_AI_DEBUG_BREAK_STR_TOOLTIP :{BLACK}Cando unha mensaxe de log da IA coincide con esta cadea, a partida páusase +STR_AI_DEBUG_MATCH_CASE :{BLACK}Coincidir maiúsculas +STR_AI_DEBUG_MATCH_CASE_TOOLTIP :{BLACK}Alterna a coincidencia de maiúsculas ao comparar as mensaxes no log da IA coa cadea de parada STR_AI_DEBUG_CONTINUE :{BLACK}Continuar +STR_AI_DEBUG_CONTINUE_TOOLTIP :{BLACK}Quita-la pausa e continua-la IA +STR_AI_DEBUG_SELECT_AI_TOOLTIP :{BLACK}Ve-la saída da depuración desta IA +STR_AI_GAME_SCRIPT :{BLACK}Script do xogo +STR_AI_GAME_SCRIPT_TOOLTIP :BLACK}Comproba o log do script do xogo -STR_ERROR_AI_NO_AI_FOUND :Non se atopou ningunha AI adecuada para cargar.{} Esta AI é un bot e non vai facer nada.{}Podes descargar varias AIs no sistema de contido online. -STR_ERROR_AI_PLEASE_REPORT_CRASH :{WHITE}Fallou unha das IA en execución. Por favor, informa ó autor desta IA cunha captura da Fiestra de Depuración de IA. -STR_ERROR_AI_DEBUG_SERVER_ONLY :{YELLOW}A fiestra de Depuración de IA só está dispoñible para o servidor +STR_ERROR_AI_NO_AI_FOUND :Non se atopou ningunha IA adecuada para cargar.{} Esta IA é parva e non vai facer nada.{}Podes descargar varias IAs no sistema de contidos online. +STR_ERROR_AI_PLEASE_REPORT_CRASH :{WHITE}Fallou unha das IA en execución. Por favor, informa ao autor desta IA cunha captura da Fiestra de Depuración de IA. +STR_ERROR_AI_DEBUG_SERVER_ONLY :{YELLOW}A fiestra de Depuración de IA só está dispoñíbel para o servidor # AI configuration window -STR_AI_CONFIG_CAPTION :{WHITE}Configuración IA +STR_AI_CONFIG_CAPTION :{WHITE}Configuración IA / scripts do xogo +STR_AI_CONFIG_GAMELIST_TOOLTIP :{BLACK}O script de xogo que se cargará na próxima partida +STR_AI_CONFIG_AILIST_TOOLTIP :{BLACK}As IAs que serán cargadas na próxima partida STR_AI_CONFIG_HUMAN_PLAYER :Xogador humano -STR_AI_CONFIG_RANDOM_AI :IA Aleatoria +STR_AI_CONFIG_RANDOM_AI :IA aleatoria +STR_AI_CONFIG_NONE :(ningunha) STR_AI_CONFIG_MOVE_UP :{BLACK}Subir STR_AI_CONFIG_MOVE_UP_TOOLTIP :{BLACK}Mover a IA seleccionada hacia arriba na lista STR_AI_CONFIG_MOVE_DOWN :{BLACK}Baixar STR_AI_CONFIG_MOVE_DOWN_TOOLTIP :{BLACK}Mover a IA seleccionada hacia abaixo na lista +STR_AI_CONFIG_GAMESCRIPT :{SILVER} Script do xogo +STR_AI_CONFIG_AI :{SILVER}IAs +STR_AI_CONFIG_CHANGE :{BLACK}Seleccionar{STRING} STR_AI_CONFIG_CHANGE_NONE : +STR_AI_CONFIG_CHANGE_AI :IA +STR_AI_CONFIG_CHANGE_GAMESCRIPT :Script do xogo +STR_AI_CONFIG_CHANGE_TOOLTIP :{BLACK}Cargar outro script STR_AI_CONFIG_CONFIGURE :{BLACK}Configurar -STR_AI_CONFIG_CONFIGURE_TOOLTIP :{BLACK}Configura-los parámetros da IA +STR_AI_CONFIG_CONFIGURE_TOOLTIP :{BLACK}Configura-los parámetros do script # Available AIs window -STR_AI_LIST_TOOLTIP :{BLACK}Pincha para seleccionar unha IA +STR_AI_LIST_CAPTION :{WHITE}Dispoñíbel {STRING} +STR_AI_LIST_CAPTION_AI :IAs +STR_AI_LIST_CAPTION_GAMESCRIPT :Scripts do xogo +STR_AI_LIST_TOOLTIP :{BLACK}Pincha para seleccionar un script STR_AI_LIST_AUTHOR :{LTBLUE}Autor: {ORANGE}{STRING} STR_AI_LIST_VERSION :{LTBLUE}Versión: {ORANGE}{NUM} STR_AI_LIST_URL :{LTBLUE}URL: {ORANGE}{STRING} STR_AI_LIST_ACCEPT :{BLACK}Aceptar -STR_AI_LIST_ACCEPT_TOOLTIP :{BLACK}Selecciona-la IA marcada +STR_AI_LIST_ACCEPT_TOOLTIP :{BLACK}Selecciona-lo script marcado STR_AI_LIST_CANCEL :{BLACK}Cancelar -STR_AI_LIST_CANCEL_TOOLTIP :{BLACK}Non cambia-la IA +STR_AI_LIST_CANCEL_TOOLTIP :{BLACK}Non cambia-lo script # AI Parameters +STR_AI_SETTINGS_CAPTION :{WHITE}{STRING} Parámetros +STR_AI_SETTINGS_CAPTION_AI :IA +STR_AI_SETTINGS_CAPTION_GAMESCRIPT :Script do xogo STR_AI_SETTINGS_CLOSE :{BLACK}Pechar -STR_AI_SETTINGS_RESET :{BLACK}Reiniciar +STR_AI_SETTINGS_RESET :{BLACK}Restablecer STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING} +STR_AI_SETTINGS_START_DELAY :Número de días para iniciar esta IA despois da anterior: {ORANGE}{STRING} # Textfile window +STR_TEXTFILE_README_CAPTION :{WHITE} "readme" de {STRING} {STRING} +STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}Rexistro de cambios de {STRING} {STRING} +STR_TEXTFILE_LICENCE_CAPTION :{WHITE} licenza de {STRING}{STRING} +STR_TEXTFILE_VIEW_README :{BLACK}Ver "readme" +STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}Rexistro de cambios +STR_TEXTFILE_VIEW_LICENCE :{BLACK}Licenza # Vehicle loading indicators @@ -3150,6 +3920,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}Custo: {CURRENCY_LONG} @@ -3158,46 +3930,55 @@ STR_INCOME_FLOAT_INCOME_SMALL :{TINY_FONT}{GRE STR_INCOME_FLOAT_INCOME :{GREEN}Ingreso: {CURRENCY_LONG} STR_FEEDER_TINY :{TINY_FONT}{YELLOW}Transferir: {CURRENCY_LONG} STR_FEEDER :{YELLOW}Transferir: {CURRENCY_LONG} -STR_MESSAGE_ESTIMATED_COST :{WHITE}Custo Estimado: {CURRENCY_LONG} -STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Ingreso Estimado: {CURRENCY_LONG} +STR_FEEDER_INCOME_TINY :{TINY_FONT}{YELLOW}Transferir: {CURRENCY_LONG}{WHITE} / {GREEN}Ingresos: {CURRENCY_LONG} +STR_FEEDER_INCOME :{YELLOW}Transferencia: {CURRENCY_LONG}{WHITE} / {GREEN}Ingreso: {CURRENCY_LONG} +STR_FEEDER_COST_TINY :{TINY_FONT}{YELLOW}Transferencia: {CURRENCY_LONG}{WHITE} / {RED}Custo: {CURRENCY_LONG} +STR_FEEDER_COST :{YELLOW}Transferencia: {CURRENCY_LONG}{WHITE} / {RED}Custo: {CURRENCY_LONG} +STR_MESSAGE_ESTIMATED_COST :{WHITE}Custo estimado: {CURRENCY_LONG} +STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Ingreso estimado: {CURRENCY_LONG} # Saveload messages -STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}¡Grabación en progreso,{}por favor espera ata que termine! -STR_ERROR_AUTOSAVE_FAILED :{WHITE}Autograbado fallido +STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Gravación en progreso,{}por favor agarda ata que remate! +STR_ERROR_AUTOSAVE_FAILED :{WHITE}Autogravado fallido STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}No se pode lee-la unidade -STR_ERROR_GAME_SAVE_FAILED :{WHITE}Grabación da partida fallida{}{STRING} +STR_ERROR_GAME_SAVE_FAILED :{WHITE}Gravación da partida fallida{}{STRING} STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Non se pode borra-lo arquivo STR_ERROR_GAME_LOAD_FAILED :{WHITE}Carga da partida fallida{}{STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Erro interno: {STRING} -STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Partida grabada corrupta - {STRING} -STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :A partida grabouse cunha versión máis nova do xogo -STR_GAME_SAVELOAD_ERROR_FILE_NOT_READABLE :Ficheiro ilexible -STR_GAME_SAVELOAD_ERROR_FILE_NOT_WRITEABLE :Non se pode escribir no ficheiro +STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Partida gravada corrupta - {STRING} +STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :A partida gravouse cunha versión máis nova do xogo +STR_GAME_SAVELOAD_ERROR_FILE_NOT_READABLE :Arquivo ilexíbel +STR_GAME_SAVELOAD_ERROR_FILE_NOT_WRITEABLE :Non se pode escribir no arquivo STR_GAME_SAVELOAD_ERROR_DATA_INTEGRITY_CHECK_FAILED :Fallou a comprobación de integridade dos datos -STR_WARNING_LOADGAME_REMOVED_TRAMS :{WHITE}A partida grabouse nunha versión sen soporte para tranvías. Quitáronse tódolos tranvías. +STR_GAME_SAVELOAD_NOT_AVAILABLE : +STR_WARNING_LOADGAME_REMOVED_TRAMS :{WHITE}A partida gravouse nunha versión sen soporte para tranvías. Quitáronse tódolos tranvías. # Map generation messages -STR_ERROR_COULD_NOT_CREATE_TOWN :{WHITE}Xeración de mapas detida...{}... non hai emplazamentos para pobos -STR_ERROR_NO_TOWN_IN_SCENARIO :{WHITE}... non hai cidades neste escenario +STR_ERROR_COULD_NOT_CREATE_TOWN :{WHITE}Xeración de mapas detida...{}... non hai emprazamentos para pobos adecuados +STR_ERROR_NO_TOWN_IN_SCENARIO :{WHITE}... non hai ningunha vila neste escenario -STR_ERROR_PNGMAP :{WHITE}Non se pode cargar o mapa desde o PNG... -STR_ERROR_PNGMAP_FILE_NOT_FOUND :{WHITE}... arquivo non atopado. -STR_ERROR_PNGMAP_IMAGE_TYPE :{WHITE}... non se puido convertir o tipo de imaxe. Necesítase unha imaxe PNG de 8 ou 24 bit. -STR_ERROR_PNGMAP_MISC :{WHITE}... algo saíu mal. Síntoo. (probablemente o ficheiro esté corrupto) +STR_ERROR_PNGMAP :{WHITE}Non se pode cargar o terreo dende o PNG... +STR_ERROR_PNGMAP_FILE_NOT_FOUND :{WHITE}... arquivo non atopado +STR_ERROR_PNGMAP_IMAGE_TYPE :{WHITE}... non se puido convertir o tipo de imaxe. Necesítase unha imaxe PNG de 8 ou 24 bits +STR_ERROR_PNGMAP_MISC :{WHITE}... algo saíu mal (probabelmente o arquivo estea corrupto) -STR_ERROR_BMPMAP :{WHITE}Non se pode carga-la paisaxe desde o BMP... -STR_ERROR_BMPMAP_IMAGE_TYPE :{WHITE}... non se puido convertí-lo tipo de imaxe. +STR_ERROR_BMPMAP :{WHITE}Non se pode carga-la paisaxe dende o BMP... +STR_ERROR_BMPMAP_IMAGE_TYPE :{WHITE}... non se puido converti-lo tipo de imaxe +STR_ERROR_HEIGHTMAP_TOO_LARGE :{WHITE}... a imaxe é demasiado grande STR_WARNING_HEIGHTMAP_SCALE_CAPTION :{WHITE}Aviso de escala -STR_WARNING_HEIGHTMAP_SCALE_MESSAGE :{YELLOW}Non se recomenda redimensionar moito o mapa de orixe. ¿Continuar coa xeración? +STR_WARNING_HEIGHTMAP_SCALE_MESSAGE :{YELLOW}Non se recomenda redimensionar moito o mapa de orixe. Continuar coa xeración? # Soundset messages +STR_WARNING_FALLBACK_SOUNDSET :{WHITE}Só se atopou un conxunto de son baleiro. Se queres sons, instala un conxunto de sons mediante o sistema de descarga de contido # Screenshot related messages +STR_WARNING_SCREENSHOT_SIZE_CAPTION :{WHITE}Captura de pantalla enorme +STR_WARNING_SCREENSHOT_SIZE_MESSAGE :{YELLOW}A captura de pantalla terá unha resolución de {COMMA} x {COMMA} píxeis. Tomar a captura poderá levar un anaco. Queres continuar? -STR_MESSAGE_SCREENSHOT_SUCCESSFULLY :{WHITE}Captura de pantalla grabada con éxito no disco como '{STRING}' -STR_ERROR_SCREENSHOT_FAILED :{WHITE}¡Captura de pantalla fallida! +STR_MESSAGE_SCREENSHOT_SUCCESSFULLY :{WHITE}Captura de pantalla gardada con éxito coma '{STRING}' +STR_ERROR_SCREENSHOT_FAILED :{WHITE}Captura de pantalla fallida! # Error message titles STR_ERROR_MESSAGE_CAPTION :{YELLOW}Mensaxe @@ -3205,75 +3986,87 @@ STR_ERROR_MESSAGE_CAPTION_OTHER_COMPANY :{YELLOW}Mensaxe # Generic construction errors STR_ERROR_OFF_EDGE_OF_MAP :{WHITE}Fóra do borde do mapa -STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP :{WHITE}Demasiado cerca do borde do mapa -STR_ERROR_NOT_ENOUGH_CASH_REQUIRES_CURRENCY :{WHITE}Diñeiro insuficiente - necesitas {CURRENCY_LONG} -STR_ERROR_FLAT_LAND_REQUIRED :{WHITE}Necesitas terreo chan +STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP :{WHITE}Demasiado preto do borde do mapa +STR_ERROR_NOT_ENOUGH_CASH_REQUIRES_CURRENCY :{WHITE}Cartos insuficientes - precisas {CURRENCY_LONG} +STR_ERROR_FLAT_LAND_REQUIRED :{WHITE}Precísase terreo chan STR_ERROR_LAND_SLOPED_IN_WRONG_DIRECTION :{WHITE}Terreo inclinado na dirección incorrecta -STR_ERROR_CAN_T_DO_THIS :{WHITE}Non podes facer eso... +STR_ERROR_CAN_T_DO_THIS :{WHITE}Non podes facer iso... STR_ERROR_BUILDING_MUST_BE_DEMOLISHED :{WHITE}Debes demole-lo edificio primeiro STR_ERROR_CAN_T_CLEAR_THIS_AREA :{WHITE}Non podes limpar esta área... STR_ERROR_SITE_UNSUITABLE :{WHITE}... emprazamento inadecuado -STR_ERROR_ALREADY_BUILT :{WHITE}... xa está construído +STR_ERROR_ALREADY_BUILT :{WHITE}... xa construído STR_ERROR_OWNED_BY :{WHITE}... é propiedade de {STRING} STR_ERROR_AREA_IS_OWNED_BY_ANOTHER :{WHITE}... a área é propiedade doutra compañía +STR_ERROR_TERRAFORM_LIMIT_REACHED :{WHITE}... límite de movemento de terra alcanzado +STR_ERROR_CLEARING_LIMIT_REACHED :{WHITE}... límite de cadros despexados alcanzado +STR_ERROR_TREE_PLANT_LIMIT_REACHED :{WHITE}... límite de árbores plantadas alcanzado STR_ERROR_NAME_MUST_BE_UNIQUE :{WHITE}O nome debe ser único STR_ERROR_GENERIC_OBJECT_IN_THE_WAY :{WHITE}{1:STRING} no camiño +STR_ERROR_NOT_ALLOWED_WHILE_PAUSED :{WHITE}Non permitido mentres a partida está en pausa # Local authority errors -STR_ERROR_LOCAL_AUTHORITY_REFUSES_TO_ALLOW_THIS :{WHITE}{TOWN}: a autoridade local négase a permitilo -STR_ERROR_LOCAL_AUTHORITY_REFUSES_AIRPORT :{WHITE}A autoridade local de {TOWN} négase a permiti-la construción doutro aeroporto -STR_ERROR_LOCAL_AUTHORITY_REFUSES_NOISE :{WHITE}As autoridades locais de {TOWN} rechazan o permiso para aeroporto debido a problemas co ruído +STR_ERROR_LOCAL_AUTHORITY_REFUSES_TO_ALLOW_THIS :{WHITE} O concello de {TOWN} négase a permitir isto +STR_ERROR_LOCAL_AUTHORITY_REFUSES_AIRPORT :{WHITE}O concello de {TOWN} négase a permiti-la construción doutro aeroporto na cidade +STR_ERROR_LOCAL_AUTHORITY_REFUSES_NOISE :{WHITE}As autoridades do concello de {TOWN} rexeitan o permiso para o aeroporto debido a problemas de contaminación acústica +STR_ERROR_BRIBE_FAILED :{WHITE}O teu intento de soborno foi descuberto polo fiscal anticorrupción da comarca # Levelling errors -STR_ERROR_CAN_T_RAISE_LAND_HERE :{WHITE}Non se pode subir o terreo aí... -STR_ERROR_CAN_T_LOWER_LAND_HERE :{WHITE}Non se pode baixar o terreo aí... -STR_ERROR_CAN_T_LEVEL_LAND_HERE :{WHITE}Non se pode aplanar o terreo... -STR_ERROR_EXCAVATION_WOULD_DAMAGE :{WHITE}A excavación danaría un tunel -STR_ERROR_ALREADY_AT_SEA_LEVEL :{WHITE}Xa está a nivel do mar -STR_ERROR_TOO_HIGH :{WHITE}Demasiado alto +STR_ERROR_CAN_T_RAISE_LAND_HERE :{WHITE}Non se pode subir o terreo aquí... +STR_ERROR_CAN_T_LOWER_LAND_HERE :{WHITE}Non se pode baixar o terreo aquí... +STR_ERROR_CAN_T_LEVEL_LAND_HERE :{WHITE}Non se pode nivelar o terreo aquí... +STR_ERROR_EXCAVATION_WOULD_DAMAGE :{WHITE}A excavación danaría un túnel +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 # Company related errors STR_ERROR_CAN_T_CHANGE_COMPANY_NAME :{WHITE}Non se pode cambia-lo nome da compañía... STR_ERROR_CAN_T_CHANGE_PRESIDENT :{WHITE}Non se pode cambia-lo nome do presidente... -STR_ERROR_MAXIMUM_PERMITTED_LOAN :{WHITE}... o tamaño máximo do préstamo permitido é de {CURRENCY_LONG} +STR_ERROR_MAXIMUM_PERMITTED_LOAN :{WHITE}... o préstamo máximo permitido é de {CURRENCY_LONG} STR_ERROR_CAN_T_BORROW_ANY_MORE_MONEY :{WHITE}Non se pode solicitar máis diñeiro... -STR_ERROR_LOAN_ALREADY_REPAYED :{WHITE}... non queda préstamo a pagar -STR_ERROR_CURRENCY_REQUIRED :{WHITE}... necesitas {CURRENCY_LONG} -STR_ERROR_CAN_T_REPAY_LOAN :{WHITE}Non se pode paga-lo préstamo... -STR_ERROR_INSUFFICIENT_FUNDS :{WHITE}Non podes da-lo diñeiro prestado do banco... -STR_ERROR_CAN_T_BUY_COMPANY :{WHITE}Non se pode comprar a compañía... -STR_ERROR_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}Non se pode construí-lo cuartel xeral... -STR_ERROR_CAN_T_BUY_25_SHARE_IN_THIS :{WHITE}Non se pode comprar un 25% das accións nesta compañía... +STR_ERROR_LOAN_ALREADY_REPAYED :{WHITE}... non queda préstamo a devolver +STR_ERROR_CURRENCY_REQUIRED :{WHITE}... precisas {CURRENCY_LONG} +STR_ERROR_CAN_T_REPAY_LOAN :{WHITE}Non se pode devolve-lo préstamo... +STR_ERROR_INSUFFICIENT_FUNDS :{WHITE}Non podes da-lo diñeiro prestado polo banco... +STR_ERROR_CAN_T_BUY_COMPANY :{WHITE}Non se pode compra-la compañía... +STR_ERROR_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}Non se pode construí-la sede +STR_ERROR_CAN_T_BUY_25_SHARE_IN_THIS :{WHITE}Non se pode comprar un 25% das accións desta compañía... STR_ERROR_CAN_T_SELL_25_SHARE_IN :{WHITE}Non se pode vender un 25% das accións desta compañía... -STR_ERROR_PROTECTED :{WHITE}Esta compañía todavía non comercia con accións... +STR_ERROR_PROTECTED :{WHITE}Esta compañía aínda non é suficientemente antiga para comerciar con accións... # Town related errors -STR_ERROR_CAN_T_GENERATE_TOWN :{WHITE}Non se pode construír cidades +STR_ERROR_CAN_T_GENERATE_TOWN :{WHITE}Non se poden construír cidades STR_ERROR_CAN_T_RENAME_TOWN :{WHITE}Non se pode renomear a cidade... -STR_ERROR_CAN_T_FOUND_TOWN_HERE :{WHITE}Non se pode construír a cidade aí... -STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP_SUB :{WHITE}... demasiado cerca do borde do mapa -STR_ERROR_TOO_CLOSE_TO_ANOTHER_TOWN :{WHITE}... demasiado cerca doutra cidade +STR_ERROR_CAN_T_FOUND_TOWN_HERE :{WHITE}Non se pode construír a cidade aquí... +STR_ERROR_CAN_T_EXPAND_TOWN :{WHITE}Non se pode expandi-la vila +STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP_SUB :{WHITE}... demasiado preto do borde do mapa +STR_ERROR_TOO_CLOSE_TO_ANOTHER_TOWN :{WHITE}... demasiado preto doutra cidade STR_ERROR_TOO_MANY_TOWNS :{WHITE}... hai demasiadas cidades -STR_ERROR_NO_SPACE_FOR_TOWN :{WHITE}... non queda máis espacio no mapa -STR_ERROR_TOWN_EXPAND_WARN_NO_ROADS :{WHITE}O pobo non construirá estradas. Podes activar a función de construcción de estradas en Opcións Avanzadas->Economía->Pobos. -STR_ERROR_ROAD_WORKS_IN_PROGRESS :{WHITE}Traballos na estrada en progreso +STR_ERROR_NO_SPACE_FOR_TOWN :{WHITE}... non queda máis espazo no mapa +STR_ERROR_TOWN_EXPAND_WARN_NO_ROADS :{WHITE}O pobo non construirá estradas. Podes activar a función de construción de estradas en Opcións Avanzadas->Economía->Pobos +STR_ERROR_ROAD_WORKS_IN_PROGRESS :{WHITE}Obras na estrada en curso +STR_ERROR_TOWN_CAN_T_DELETE :{WHITE}Non se pode borrar esta vila...{}Unha estación ou depósito está relacionado coa vila ou un cadro propiedade da vila non pode ser eliminado +STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}... non hai ningún sitio adecuado para unha estatua no centro desta vila # Industry related errors STR_ERROR_TOO_MANY_INDUSTRIES :{WHITE}... demasiadas industrias STR_ERROR_CAN_T_GENERATE_INDUSTRIES :{WHITE}Non se poden xera-las industrias... STR_ERROR_CAN_T_BUILD_HERE :{WHITE}Non se pode construír {STRING} aquí... -STR_ERROR_CAN_T_CONSTRUCT_THIS_INDUSTRY :{WHITE}Non se pode construír ese tipo de industria aí... -STR_ERROR_INDUSTRY_TOO_CLOSE :{WHITE}... demasiado cerca doutra industria -STR_ERROR_MUST_FOUND_TOWN_FIRST :{WHITE}... debes construír unha cidade primeiro +STR_ERROR_CAN_T_CONSTRUCT_THIS_INDUSTRY :{WHITE}Non se pode construír este tipo de industria aí... +STR_ERROR_INDUSTRY_TOO_CLOSE :{WHITE}... demasiado preto doutra industria +STR_ERROR_MUST_FOUND_TOWN_FIRST :{WHITE}... debes fundar unha vila primeiro STR_ERROR_ONLY_ONE_ALLOWED_PER_TOWN :{WHITE}... só se permite un por cidade -STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS_WITH_POPULATION_OF_1200 :{WHITE}... só se pode construír en cidades con polo menos 1200 hab. +STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS_WITH_POPULATION_OF_1200 :{WHITE}... só se pode construír en cidades cunha poboación de 1200 habitantes ou superior STR_ERROR_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}... só se pode construír en zonas de selva tropical STR_ERROR_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}... só se pode construír en zonas desérticas -STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}... só se pode construír en cidades -STR_ERROR_CAN_ONLY_BE_POSITIONED :{WHITE}... só se pode emprazar cerca dos bordes do mapa -STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... o bosque só se pode plantar sobre a liña de neve +STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}... só se pode construír nas vilas (reemprazando casas) +STR_ERROR_CAN_ONLY_BE_BUILT_NEAR_TOWN_CENTER :{WHITE}... só se pode construír preto do centro das vilas +STR_ERROR_CAN_ONLY_BE_BUILT_IN_LOW_AREAS :{WHITE}... só se pode construir en terreos baixos +STR_ERROR_CAN_ONLY_BE_POSITIONED :{WHITE}... só se pode emprazar preto dos bordes do mapa +STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... o bosque só se pode plantar sobre a cota de neve +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 # Station construction related errors STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}Non se pode construír a estación de ferrocarril aí... @@ -3286,16 +4079,18 @@ STR_ERROR_CAN_T_BUILD_AIRPORT_HERE :{WHITE}Non se p STR_ERROR_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Xunta máis dunha estación/área de carga existente STR_ERROR_STATION_TOO_SPREAD_OUT :{WHITE}... a estación ocupa demasiado -STR_ERROR_TOO_MANY_STATIONS_LOADING :{WHITE}Hay demasiadas estacións/áreas de carga +STR_ERROR_TOO_MANY_STATIONS_LOADING :{WHITE}Demasiadas estacións/áreas de carga STR_ERROR_TOO_MANY_STATION_SPECS :{WHITE}Demasiadas partes de estación de tren -STR_ERROR_TOO_MANY_BUS_STOPS :{WHITE}Demasiadas paradas de bus +STR_ERROR_TOO_MANY_BUS_STOPS :{WHITE}Demasiadas paradas de autobús STR_ERROR_TOO_MANY_TRUCK_STOPS :{WHITE}Demasiadas estacións de camións -STR_ERROR_TOO_CLOSE_TO_ANOTHER_STATION :{WHITE}Demasiado cerca doutra estación ou área de carga -STR_ERROR_TOO_CLOSE_TO_ANOTHER_DOCK :{WHITE}Demasiado cerca doutro peirao -STR_ERROR_TOO_CLOSE_TO_ANOTHER_AIRPORT :{WHITE}Demasiado cerca doutro aeroporto +STR_ERROR_TOO_CLOSE_TO_ANOTHER_STATION :{WHITE}Demasiado preto doutra estación ou área de carga +STR_ERROR_TOO_CLOSE_TO_ANOTHER_DOCK :{WHITE}Demasiado preto doutro peirao +STR_ERROR_TOO_CLOSE_TO_ANOTHER_AIRPORT :{WHITE}Demasiado preto doutro aeroporto STR_ERROR_CAN_T_RENAME_STATION :{WHITE}Non se pode renomear a estación... STR_ERROR_DRIVE_THROUGH_ON_TOWN_ROAD :{WHITE}... esta rúa pertenece á cidade STR_ERROR_DRIVE_THROUGH_DIRECTION :{WHITE}... a estrada vai na dirección incorrecta +STR_ERROR_DRIVE_THROUGH_CORNER :{WHITE}... as paradas pasantes non poden ter esquinas +STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}... as paradas pasantes non poder ter interseccións # Station destruction related errors STR_ERROR_CAN_T_REMOVE_PART_OF_STATION :{WHITE}Non se pode eliminar parte da estación... @@ -3304,6 +4099,8 @@ STR_ERROR_CAN_T_REMOVE_BUS_STATION :{WHITE}Non se p STR_ERROR_CAN_T_REMOVE_TRUCK_STATION :{WHITE}Non se pode borra-la estación de camións... STR_ERROR_CAN_T_REMOVE_PASSENGER_TRAM_STATION :{WHITE}Non se pode quita-la estación de tranvía de pasaxeiros... STR_ERROR_CAN_T_REMOVE_CARGO_TRAM_STATION :{WHITE}Non se pode quita-la estación de tranvía de carga... +STR_ERROR_MUST_REMOVE_ROAD_STOP_FIRST :{WHITE}Debes retira-la parada primeiro +STR_ERROR_THERE_IS_NO_STATION :{WHITE}... non hai ningunha estación aquí STR_ERROR_MUST_DEMOLISH_RAILROAD :{WHITE}Debes demole-la estación de ferrocarril primeiro STR_ERROR_MUST_DEMOLISH_BUS_STATION_FIRST :{WHITE}Debes demole-la estación de autobús primeiro @@ -3317,110 +4114,121 @@ STR_ERROR_MUST_DEMOLISH_AIRPORT_FIRST :{WHITE}Debes de STR_ERROR_WAYPOINT_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Une máis dun punto de ruta existente STR_ERROR_TOO_CLOSE_TO_ANOTHER_WAYPOINT :{WHITE}Demasiado preto doutro punto de ruta -STR_ERROR_CAN_T_BUILD_TRAIN_WAYPOINT :{WHITE}Non se pode construír un punto de control de tren aí... +STR_ERROR_CAN_T_BUILD_TRAIN_WAYPOINT :{WHITE}Non se pode construír un punto ruta de tren aí... STR_ERROR_CAN_T_POSITION_BUOY_HERE :{WHITE}Non se pode coloca-la boia aquí... -STR_ERROR_CAN_T_CHANGE_WAYPOINT_NAME :{WHITE}Non se pode cambia-lo nome do punto de control... +STR_ERROR_CAN_T_CHANGE_WAYPOINT_NAME :{WHITE}Non se pode cambia-lo nome do punto de ruta... -STR_ERROR_CAN_T_REMOVE_TRAIN_WAYPOINT :{WHITE}Non se pode eliminar-lo punto de control... +STR_ERROR_CAN_T_REMOVE_TRAIN_WAYPOINT :{WHITE}Non se pode eliminar-lo punto de ruta aquí... STR_ERROR_MUST_REMOVE_RAILWAYPOINT_FIRST :{WHITE}Débese retirar primeiro o punto de ruta para trenes STR_ERROR_BUOY_IN_THE_WAY :{WHITE}... boia no camiño STR_ERROR_BUOY_IS_IN_USE :{WHITE}... a boia está en uso por outra compañía! # Depot related errors STR_ERROR_CAN_T_BUILD_TRAIN_DEPOT :{WHITE}Non se pode construír un depósito aí... -STR_ERROR_CAN_T_BUILD_ROAD_DEPOT :{WHITE}Non se pode construír o depósito aí... -STR_ERROR_CAN_T_BUILD_TRAM_DEPOT :{WHITE}Non se pode construír o depósito de tranvías aquí... -STR_ERROR_CAN_T_BUILD_SHIP_DEPOT :{WHITE}Non se pode construír o depósito de barcos aí... +STR_ERROR_CAN_T_BUILD_ROAD_DEPOT :{WHITE}Non se pode construír un depósito aí... +STR_ERROR_CAN_T_BUILD_TRAM_DEPOT :{WHITE}Non se pode construír un depósito de tranvías aquí... +STR_ERROR_CAN_T_BUILD_SHIP_DEPOT :{WHITE}Non se pode construír un depósito de barcos aí... +STR_ERROR_CAN_T_RENAME_DEPOT :{WHITE}Non se pode renomear o depósito... -STR_ERROR_TRAIN_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... debe estar parado dentro do depósito -STR_ERROR_ROAD_VEHICLE_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... debe estar parado dentro do depósito -STR_ERROR_SHIP_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... debe estar parado dentro do depósito -STR_ERROR_AIRCRAFT_MUST_BE_STOPPED_INSIDE_HANGAR :{WHITE}... debe estar parado dentro do hangar +STR_ERROR_TRAIN_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... debe estar parado dentro dun depósito +STR_ERROR_ROAD_VEHICLE_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... debe estar parado dentro dun depósito +STR_ERROR_SHIP_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... debe estar parado dentro dun depósito +STR_ERROR_AIRCRAFT_MUST_BE_STOPPED_INSIDE_HANGAR :{WHITE}... debe estar parado dentro dun hangar -STR_ERROR_TRAINS_CAN_ONLY_BE_ALTERED_INSIDE_A_DEPOT :{WHITE}Os trens só se poden alterar cando estean parados nun depósito +STR_ERROR_TRAINS_CAN_ONLY_BE_ALTERED_INSIDE_A_DEPOT :{WHITE}Os trens só se poden modificar cando estean parados nun depósito STR_ERROR_TRAIN_TOO_LONG :{WHITE}O tren é demasiado longo STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE :{WHITE}Non se pode inverti-la dirección do vehículo... -STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE_MULTIPLE_UNITS :{WHITE}Non se poden xira-los vehículos consistentes de múltiples unidades -STR_ERROR_INCOMPATIBLE_RAIL_TYPES :Tipos de vías incompatibles +STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE_MULTIPLE_UNITS :{WHITE}... consiste en múltiples unidades +STR_ERROR_INCOMPATIBLE_RAIL_TYPES :Tipos de carril incompatíbeis -STR_ERROR_CAN_T_MOVE_VEHICLE :{WHITE}No se pode mover o vehículo... -STR_ERROR_REAR_ENGINE_FOLLOW_FRONT :{WHITE}A máquina traseira sempre seguirá a dianteira +STR_ERROR_CAN_T_MOVE_VEHICLE :{WHITE}Non se pode mover o vehículo... +STR_ERROR_REAR_ENGINE_FOLLOW_FRONT :{WHITE}A locomotora de cola sempre seguirá á de cabeza STR_ERROR_UNABLE_TO_FIND_ROUTE_TO :{WHITE}No se pode atopar unha ruta a un depósito local -STR_ERROR_UNABLE_TO_FIND_LOCAL_DEPOT :{WHITE}No se pode atopar unha ruta ó depósito local +STR_ERROR_UNABLE_TO_FIND_LOCAL_DEPOT :{WHITE}No se pode atopar unha ruta ao depósito local STR_ERROR_DEPOT_WRONG_DEPOT_TYPE :Tipo de depósito erróneo # Autoreplace related errors STR_ERROR_TRAIN_TOO_LONG_AFTER_REPLACEMENT :{WHITE}{VEHICLE} é demasiado longo despois do reemprazo STR_ERROR_AUTOREPLACE_NOTHING_TO_DO :{WHITE}Non se aplicaron as regras de autosubstitución/renovación -STR_ERROR_AUTOREPLACE_MONEY_LIMIT :(límite de diñeiro) +STR_ERROR_AUTOREPLACE_MONEY_LIMIT :(límite de cartos) # Rail construction errors -STR_ERROR_IMPOSSIBLE_TRACK_COMBINATION :{WHITE}Combinación de pistas imposible -STR_ERROR_MUST_REMOVE_SIGNALS_FIRST :{WHITE}Debes borrar os sinais primeiro +STR_ERROR_IMPOSSIBLE_TRACK_COMBINATION :{WHITE}Combinación de vías imposíbel +STR_ERROR_MUST_REMOVE_SIGNALS_FIRST :{WHITE}Debes retira-los sinais primeiro STR_ERROR_NO_SUITABLE_RAILROAD_TRACK :{WHITE}Non hay vía de ferrocarril adecuada -STR_ERROR_MUST_REMOVE_RAILROAD_TRACK :{WHITE}Debes elimina-la pista de ferrocarril primeiro -STR_ERROR_CROSSING_ON_ONEWAY_ROAD :{WHITE}A estrada é dun sentido ou está bloqueada -STR_ERROR_CAN_T_BUILD_SIGNALS_HERE :{WHITE}Non se poden construír os sinais aí... -STR_ERROR_CAN_T_BUILD_RAILROAD_TRACK :{WHITE}Non se pode construír a pista de ferrocarril aí... -STR_ERROR_CAN_T_REMOVE_RAILROAD_TRACK :{WHITE}Non se pode elimina-la pista de ferrocarril de aí... -STR_ERROR_CAN_T_REMOVE_SIGNALS_FROM :{WHITE}Non se pode elimina-los sinais de aí... -STR_ERROR_SIGNAL_CAN_T_CONVERT_SIGNALS_HERE :{WHITE}Non se poden convertí-las sinais aquí... -STR_ERROR_THERE_ARE_NO_SIGNALS :{WHITE}... non hai sinais - -STR_ERROR_CAN_T_CONVERT_RAIL :{WHITE}Non se pode converti-lo tipo de vía aí... +STR_ERROR_MUST_REMOVE_RAILROAD_TRACK :{WHITE}Debes elimina-la vía de ferrocarril primeiro +STR_ERROR_CROSSING_ON_ONEWAY_ROAD :{WHITE}A estrada é de sentido único ou está bloqueada +STR_ERROR_CROSSING_DISALLOWED :{WHITE}Non se permiten pasos a nivel con este tipo de carril +STR_ERROR_CAN_T_BUILD_SIGNALS_HERE :{WHITE}Non se poden construír sinais aquí... +STR_ERROR_CAN_T_BUILD_RAILROAD_TRACK :{WHITE}Non se pode construír vía ferroviaria aquí... +STR_ERROR_CAN_T_REMOVE_RAILROAD_TRACK :{WHITE}Non se pode elimina-la vía ferroviaria de aquí... +STR_ERROR_CAN_T_REMOVE_SIGNALS_FROM :{WHITE}Non se poden elimina-los sinais de aquí... +STR_ERROR_SIGNAL_CAN_T_CONVERT_SIGNALS_HERE :{WHITE}Non se poden converti-los sinais aquí... +STR_ERROR_THERE_IS_NO_RAILROAD_TRACK :{WHITE}... non hai ningunha vía ferroviaria +STR_ERROR_THERE_ARE_NO_SIGNALS :{WHITE}... non hai ningún sinal + +STR_ERROR_CAN_T_CONVERT_RAIL :{WHITE}Non se pode converti-lo tipo de vía aquí... # Road construction errors STR_ERROR_MUST_REMOVE_ROAD_FIRST :{WHITE}Debes elimina-la estrada primeiro STR_ERROR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION :{WHITE}... as estradas dun sentido non poden ter cruces -STR_ERROR_CAN_T_BUILD_ROAD_HERE :{WHITE}Non se pode construí-la estrada aí... -STR_ERROR_CAN_T_BUILD_TRAMWAY_HERE :{WHITE}Non se pode construír un tranvía aquí... -STR_ERROR_CAN_T_REMOVE_ROAD_FROM :{WHITE}Non se pode elimina-la estrada aí... -STR_ERROR_CAN_T_REMOVE_TRAMWAY_FROM :{WHITE}Non se pode quitar o tranvía aquí... +STR_ERROR_CAN_T_BUILD_ROAD_HERE :{WHITE}Non se pode construí-la estrada aquí... +STR_ERROR_CAN_T_BUILD_TRAMWAY_HERE :{WHITE}Non se pode construír tranvía aquí... +STR_ERROR_CAN_T_REMOVE_ROAD_FROM :{WHITE}Non se pode elimina-la estrada aquí... +STR_ERROR_CAN_T_REMOVE_TRAMWAY_FROM :{WHITE}Non se pode retira-lo tranvía de aquí... +STR_ERROR_THERE_IS_NO_ROAD :{WHITE}... non hai ningunha estrada +STR_ERROR_THERE_IS_NO_TRAMWAY :{WHITE}... non hai ningún tranvía # Waterway construction errors -STR_ERROR_CAN_T_BUILD_CANALS :{WHITE}Non se pode construí-los canais aí... -STR_ERROR_CAN_T_BUILD_LOCKS :{WHITE}Non se pode construí-lo peche aí... +STR_ERROR_CAN_T_BUILD_CANALS :{WHITE}Non se poden construír canles aquí... +STR_ERROR_CAN_T_BUILD_LOCKS :{WHITE}Non se poden construír esclusas aquí... STR_ERROR_CAN_T_PLACE_RIVERS :{WHITE}Non se poden colocar ríos aquí... -STR_ERROR_MUST_BE_BUILT_ON_WATER :{WHITE}... debes construí-lo na auga -STR_ERROR_CAN_T_BUILD_ON_WATER :{WHITE}... Non se pode construír na auga -STR_ERROR_MUST_DEMOLISH_CANAL_FIRST :{WHITE}Debes demole-lo canal primeiro -STR_ERROR_CAN_T_BUILD_AQUEDUCT_HERE :{WHITE}Non se pode construír un acueducto aquí... +STR_ERROR_MUST_BE_BUILT_ON_WATER :{WHITE}... debe construírse sobre auga +STR_ERROR_CAN_T_BUILD_ON_WATER :{WHITE}...non se pode construír na auga +STR_ERROR_CAN_T_BUILD_ON_SEA :{WHITE}... non se pode construír en mar aberto +STR_ERROR_CAN_T_BUILD_ON_CANAL :{WHITE}... non se pode construír nunha canle +STR_ERROR_CAN_T_BUILD_ON_RIVER :{WHITE}... non se pode construír nun río +STR_ERROR_MUST_DEMOLISH_CANAL_FIRST :{WHITE}Debes demole-la canle primeiro +STR_ERROR_CAN_T_BUILD_AQUEDUCT_HERE :{WHITE}Non se pode construír un acueduto aquí... # Tree related errors STR_ERROR_TREE_ALREADY_HERE :{WHITE}... xa hai unha árbore aí +STR_ERROR_TREE_WRONG_TERRAIN_FOR_TREE_TYPE :{WHITE}... terreo non adecuado para o tipo de árbore STR_ERROR_CAN_T_PLANT_TREE_HERE :{WHITE}Non se pode plantar unha árbore aí... # Bridge related errors STR_ERROR_CAN_T_BUILD_BRIDGE_HERE :{WHITE}No se pode construír a ponte aí... STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}Debes demole-la ponte primeiro 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 comezos da ponte non están o mesmo nivel +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_START_AND_END_MUST_BE_IN :{WHITE}O inicio e o final deben estar aliñados -STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... os finais da ponte deben estar ambos en terra +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 +STR_ERROR_BRIDGE_THROUGH_MAP_BORDER :{WHITE}A ponte remataría fóra do mapa # Tunnel related errors -STR_ERROR_CAN_T_BUILD_TUNNEL_HERE :{WHITE}Non se pode construír o túnel aí... -STR_ERROR_SITE_UNSUITABLE_FOR_TUNNEL :{WHITE}Emprazamento inadecuado para a entrada do túnel +STR_ERROR_CAN_T_BUILD_TUNNEL_HERE :{WHITE}Non se pode construír un túnel aí... +STR_ERROR_SITE_UNSUITABLE_FOR_TUNNEL :{WHITE}Emprazamento inadecuado para a boca do túnel STR_ERROR_MUST_DEMOLISH_TUNNEL_FIRST :{WHITE}Debes demole-lo túnel primeiro STR_ERROR_ANOTHER_TUNNEL_IN_THE_WAY :{WHITE}Hai outro túnel no camiño -STR_ERROR_TUNNEL_THROUGH_MAP_BORDER :{WHITE}O túnel terminaría fóra do mapa -STR_ERROR_UNABLE_TO_EXCAVATE_LAND :{WHITE}Non se pode excava-lo terreo no outro lado do túnel +STR_ERROR_TUNNEL_THROUGH_MAP_BORDER :{WHITE}O túnel remataría fóra do mapa +STR_ERROR_UNABLE_TO_EXCAVATE_LAND :{WHITE}Non se pode excava-lo terreo na outra boca do túnel +STR_ERROR_TUNNEL_TOO_LONG :{WHITE}... túnel demasiado longo # Object related errors STR_ERROR_TOO_MANY_OBJECTS :{WHITE}... demasiados obxectos STR_ERROR_CAN_T_BUILD_OBJECT :{WHITE}Non se pode construír o obxecto... STR_ERROR_OBJECT_IN_THE_WAY :{WHITE}Hai un obxecto no camiño -STR_ERROR_COMPANY_HEADQUARTERS_IN :{WHITE}... hai un cuartel xeral no camiño -STR_ERROR_CAN_T_PURCHASE_THIS_LAND :{WHITE}Non se pode compra-la área de terreo... -STR_ERROR_YOU_ALREADY_OWN_IT :{WHITE}... ¡xa é da túa propiedade! +STR_ERROR_COMPANY_HEADQUARTERS_IN :{WHITE}... sede dunha compañía no camiño +STR_ERROR_CAN_T_PURCHASE_THIS_LAND :{WHITE}Non se pode comprar esta área de terreo... +STR_ERROR_YOU_ALREADY_OWN_IT :{WHITE}... xa é da túa propiedade! # Group related errors STR_ERROR_GROUP_CAN_T_CREATE :{WHITE}Non se pode crear o grupo... -STR_ERROR_GROUP_CAN_T_DELETE :{WHITE}Non se pode borrar este grupo... +STR_ERROR_GROUP_CAN_T_DELETE :{WHITE}Non se pode eliminar este grupo... STR_ERROR_GROUP_CAN_T_RENAME :{WHITE}Non se pode renomear o grupo... STR_ERROR_GROUP_CAN_T_REMOVE_ALL_VEHICLES :{WHITE}Non se pode borrar tódolos vehículos deste grupo... STR_ERROR_GROUP_CAN_T_ADD_VEHICLE :{WHITE}Non se pode engadir o vehículo a este grupo... @@ -3428,21 +4236,21 @@ STR_ERROR_GROUP_CAN_T_ADD_SHARED_VEHICLE :{WHITE}Non se p # Generic vehicle errors STR_ERROR_TRAIN_IN_THE_WAY :{WHITE}Hai un tren no camiño -STR_ERROR_ROAD_VEHICLE_IN_THE_WAY :{WHITE}Haí un vehículo de estrada no camiño -STR_ERROR_SHIP_IN_THE_WAY :{WHITE}Hay un barco no camiño +STR_ERROR_ROAD_VEHICLE_IN_THE_WAY :{WHITE}Hai un vehículo de estrada no camiño +STR_ERROR_SHIP_IN_THE_WAY :{WHITE}Hai un barco no camiño STR_ERROR_AIRCRAFT_IN_THE_WAY :{WHITE}Aeronave no camiño STR_ERROR_CAN_T_REFIT_TRAIN :{WHITE}No se pode modificar o tren... -STR_ERROR_CAN_T_REFIT_ROAD_VEHICLE :{WHITE}Non se pode reaxusta-lo vehículo -STR_ERROR_CAN_T_REFIT_SHIP :{WHITE}Non se pode reaxusta-lo barco... -STR_ERROR_CAN_T_REFIT_AIRCRAFT :{WHITE}Non se pode reaxusta-lo avión... +STR_ERROR_CAN_T_REFIT_ROAD_VEHICLE :{WHITE}Non se pode modifica-lo vehículo +STR_ERROR_CAN_T_REFIT_SHIP :{WHITE}Non se pode modifica-lo barco... +STR_ERROR_CAN_T_REFIT_AIRCRAFT :{WHITE}Non se pode modifica-lo avión... STR_ERROR_CAN_T_RENAME_TRAIN :{WHITE}No se pode renomea-lo tren... STR_ERROR_CAN_T_RENAME_ROAD_VEHICLE :{WHITE}Non se pode renomea-lo vehículo de estrada... -STR_ERROR_CAN_T_RENAME_SHIP :{WHITE}Non se pode renomea-lo barco +STR_ERROR_CAN_T_RENAME_SHIP :{WHITE}Non se pode renomea-lo barco... STR_ERROR_CAN_T_RENAME_AIRCRAFT :{WHITE}Non se pode renomea-lo avión... -STR_ERROR_CAN_T_STOP_START_TRAIN :{WHITE}No se pode parar/iniciar o tren... +STR_ERROR_CAN_T_STOP_START_TRAIN :{WHITE}No se pode parar/arrancar o tren... STR_ERROR_CAN_T_STOP_START_ROAD_VEHICLE :{WHITE}No se pode parar/arrancar o vehículo de estrada... STR_ERROR_CAN_T_STOP_START_SHIP :{WHITE}Non se pode parar/arrancar o barco... STR_ERROR_CAN_T_STOP_START_AIRCRAFT :{WHITE}Non se pode parar/arrancar o avión... @@ -3452,67 +4260,85 @@ STR_ERROR_CAN_T_SEND_ROAD_VEHICLE_TO_DEPOT :{WHITE}Non se p STR_ERROR_CAN_T_SEND_SHIP_TO_DEPOT :{WHITE}Non se pode enviar o barco ao depósito... STR_ERROR_CAN_T_SEND_AIRCRAFT_TO_HANGAR :{WHITE}Non se pode enviar o avión ao hangar... -STR_ERROR_CAN_T_BUY_TRAIN :{WHITE}No se pode construí-la locomotora... -STR_ERROR_CAN_T_BUY_ROAD_VEHICLE :{WHITE}No se pode construí-lo vehículo... +STR_ERROR_CAN_T_BUY_TRAIN :{WHITE}No se pode construí-lo vehículo ferroviario +STR_ERROR_CAN_T_BUY_ROAD_VEHICLE :{WHITE}No se pode construí-lo vehículo de estrada... STR_ERROR_CAN_T_BUY_SHIP :{WHITE}Non se pode comprar o barco... STR_ERROR_CAN_T_BUY_AIRCRAFT :{WHITE}Non se pode comprar o avión... -STR_ERROR_CAN_T_RENAME_TRAIN_TYPE :{WHITE}Non se pode renomea-lo tipo de vehículo de ferrocarril... +STR_ERROR_CAN_T_RENAME_TRAIN_TYPE :{WHITE}Non se pode renomea-lo tipo de vehículo ferroviario... STR_ERROR_CAN_T_RENAME_ROAD_VEHICLE_TYPE :{WHITE}Non se pode renomear o tipo de vehículo de estrada... STR_ERROR_CAN_T_RENAME_SHIP_TYPE :{WHITE}Non se pode renomear-lo tipo de barco... STR_ERROR_CAN_T_RENAME_AIRCRAFT_TYPE :{WHITE}Non se pode renomear o tipo de avión... -STR_ERROR_CAN_T_SELL_TRAIN :{WHITE}Non se pode vende-lo vehículo de ferrocarril... +STR_ERROR_CAN_T_SELL_TRAIN :{WHITE}Non se pode vende-lo vehículo ferroviario... STR_ERROR_CAN_T_SELL_ROAD_VEHICLE :{WHITE}Non se pode vender o vehículo de estrada... STR_ERROR_CAN_T_SELL_SHIP :{WHITE}No se pode vende-lo barco... STR_ERROR_CAN_T_SELL_AIRCRAFT :{WHITE}Non se pode vende-lo avión... -STR_ERROR_RAIL_VEHICLE_NOT_AVAILABLE :{WHITE}O vehículo non está dispoñible -STR_ERROR_ROAD_VEHICLE_NOT_AVAILABLE :{WHITE}O vehículo non está dispoñible -STR_ERROR_SHIP_NOT_AVAILABLE :{WHITE}O barco non está dispoñible -STR_ERROR_AIRCRAFT_NOT_AVAILABLE :{WHITE}Aeronave non dispoñible +STR_ERROR_RAIL_VEHICLE_NOT_AVAILABLE :{WHITE}O vehículo non está dispoñíbel +STR_ERROR_ROAD_VEHICLE_NOT_AVAILABLE :{WHITE}O vehículo non está dispoñíbel +STR_ERROR_SHIP_NOT_AVAILABLE :{WHITE}O barco non está dispoñíbel +STR_ERROR_AIRCRAFT_NOT_AVAILABLE :{WHITE}Aeronave non dispoñíbel -STR_ERROR_TOO_MANY_VEHICLES_IN_GAME :{WHITE}Hay demasiados vehículos na partida +STR_ERROR_TOO_MANY_VEHICLES_IN_GAME :{WHITE}Demasiados vehículos na partida STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}Non se pode cambia-lo intervalo de servizo... +STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... o vehículo está destruído + +STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}Aínda non hai vehículos dispoñíbeis +STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Comezar unha partida nova a partires de {DATE_SHORT} ou empregar un NewGRF que proporcione vehículos antigos # Specific vehicle errors -STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Non se pode face-lo tren pasar unha sinal de perigo... +STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Non se pode facer que o tren rebase un sinal en perigo... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}No se pode cambia-lo sentido do tren... +STR_ERROR_TRAIN_START_NO_POWER :O tren non ten potencia -STR_ERROR_CAN_T_MAKE_ROAD_VEHICLE_TURN :{WHITE}Non se pode xira-lo vehículo... +STR_ERROR_CAN_T_MAKE_ROAD_VEHICLE_TURN :{WHITE}Non se pode facer que o vehículo dea a volta... STR_ERROR_AIRCRAFT_IS_IN_FLIGHT :{WHITE}O avión está voando # Order related errors -STR_ERROR_NO_MORE_SPACE_FOR_ORDERS :{WHITE}Non hai espacio para máis ordes +STR_ERROR_NO_MORE_SPACE_FOR_ORDERS :{WHITE}Non hai espazo para máis ordes STR_ERROR_TOO_MANY_ORDERS :{WHITE}Demasiadas ordes -STR_ERROR_CAN_T_INSERT_NEW_ORDER :{WHITE}No se pode inserta-la nova orde... +STR_ERROR_CAN_T_INSERT_NEW_ORDER :{WHITE}Non se pode engadir unha nova orde... STR_ERROR_CAN_T_DELETE_THIS_ORDER :{WHITE}Non se pode borrar esta orde... STR_ERROR_CAN_T_MODIFY_THIS_ORDER :{WHITE}Non se pode modificar esta orde... STR_ERROR_CAN_T_MOVE_THIS_ORDER :{WHITE}Non se pode mover esta orde... STR_ERROR_CAN_T_SKIP_ORDER :{WHITE}Non se pode salta-la orde actual... STR_ERROR_CAN_T_SKIP_TO_ORDER :{WHITE}Non se pode salta-la orde seleccionada... -STR_ERROR_CAN_T_COPY_SHARE_ORDER :{WHITE}o vehículo non pode ir a tódalas estacións +STR_ERROR_CAN_T_COPY_SHARE_ORDER :{WHITE}... o vehículo non pode ir a tódalas estacións STR_ERROR_CAN_T_ADD_ORDER :{WHITE}... o vehículo non pode ir a esa estación STR_ERROR_CAN_T_ADD_ORDER_SHARED :{WHITE}... un vehículo que comparte esta orde non pode ir a esa estación STR_ERROR_CAN_T_SHARE_ORDER_LIST :{WHITE}Non se pode comparti-la lista de ordes... +STR_ERROR_CAN_T_STOP_SHARING_ORDER_LIST :{WHITE}Non se pode parar de compartir a lista de ordes... STR_ERROR_CAN_T_COPY_ORDER_LIST :{WHITE}Non se pode copia-la lista de ordes... STR_ERROR_TOO_FAR_FROM_PREVIOUS_DESTINATION :{WHITE}... demasiado lonxe do destino anterior +STR_ERROR_AIRCRAFT_NOT_ENOUGH_RANGE :{WHITE}... o avión non ten autonomía suficiente # Timetable related errors STR_ERROR_CAN_T_TIMETABLE_VEHICLE :{WHITE}Non se pode axusta-lo horario do vehículo... -STR_ERROR_TIMETABLE_ONLY_WAIT_AT_STATIONS :{WHITE}Os vehículos só poden parar nas estacións. -STR_ERROR_TIMETABLE_NOT_STOPPING_HERE :{WHITE}Este vehículo non para nesta estación. +STR_ERROR_TIMETABLE_ONLY_WAIT_AT_STATIONS :{WHITE}Os vehículos só poden parar nas estacións +STR_ERROR_TIMETABLE_NOT_STOPPING_HERE :{WHITE}Este vehículo non para nesta estación # Sign related errors STR_ERROR_TOO_MANY_SIGNS :{WHITE}... demasiados sinais -STR_ERROR_CAN_T_PLACE_SIGN_HERE :{WHITE}Non se pode situar o sinal aí... +STR_ERROR_CAN_T_PLACE_SIGN_HERE :{WHITE}Non se pode situa-lo sinal aí... STR_ERROR_CAN_T_CHANGE_SIGN_NAME :{WHITE}Non se pode cambia-lo nome do sinal... -STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}Non se pode borrar o sinal... +STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}Non se pode borra-lo sinal... # Translatable comment for OpenTTD's desktop shortcut +STR_DESKTOP_SHORTCUT_COMMENT :Xogo de simulación baseado en Transport Tycoon Deluxe + +# Translatable descriptions in media/baseset/*.ob* files +STR_BASEGRAPHICS_DOS_DESCRIPTION :Graficos da edición orixinal de Transport Tycoon Deluxe para DOS. +STR_BASEGRAPHICS_DOS_DE_DESCRIPTION :Graficos da edición orixinal (alemá) de Transport Tycoon Deluxe para DOS. +STR_BASEGRAPHICS_WIN_DESCRIPTION :Graficos da edición orixinal de Transport Tycoon Deluxe para Windows. +STR_BASESOUNDS_DOS_DESCRIPTION :Sons da edición orixinal de Transport Tycoon Deluxe para DOS. +STR_BASESOUNDS_WIN_DESCRIPTION :Sons da edición orixinal de Transport Tycoon Deluxe para Windows. +STR_BASESOUNDS_NONE_DESCRIPTION :Un conxunto de sons sen ningún son +STR_BASEMUSIC_WIN_DESCRIPTION :Música da edición orixinal de Transport Tycoon Deluxe para Windows. +STR_BASEMUSIC_NONE_DESCRIPTION :Un conxunto de músicas sen ningunha música. ##id 0x2000 # Town building names @@ -3521,7 +4347,7 @@ STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_1 :Bloque de ofici STR_TOWN_BUILDING_NAME_SMALL_BLOCK_OF_FLATS_1 :Bloque pequeno de apartamentos STR_TOWN_BUILDING_NAME_CHURCH_1 :Igrexa STR_TOWN_BUILDING_NAME_LARGE_OFFICE_BLOCK_1 :Bloque grande de oficinas -STR_TOWN_BUILDING_NAME_TOWN_HOUSES_1 :Casas de cidade +STR_TOWN_BUILDING_NAME_TOWN_HOUSES_1 :Casas da cidade STR_TOWN_BUILDING_NAME_HOTEL_1 :Hotel STR_TOWN_BUILDING_NAME_STATUE_1 :Estatua STR_TOWN_BUILDING_NAME_FOUNTAIN_1 :Fonte @@ -3533,7 +4359,7 @@ STR_TOWN_BUILDING_NAME_WAREHOUSE_1 :Almacén STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_3 :Bloque de oficinas STR_TOWN_BUILDING_NAME_STADIUM_1 :Estadio STR_TOWN_BUILDING_NAME_OLD_HOUSES_1 :Casas antigas -STR_TOWN_BUILDING_NAME_COTTAGES_1 :Casiñas de campo +STR_TOWN_BUILDING_NAME_COTTAGES_1 :Galpóns STR_TOWN_BUILDING_NAME_HOUSES_1 :Casas STR_TOWN_BUILDING_NAME_FLATS_1 :Apartamentos STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_2 :Bloque alto de oficinas @@ -3547,54 +4373,54 @@ STR_TOWN_BUILDING_NAME_CINEMA_1 :Cine STR_TOWN_BUILDING_NAME_SHOPPING_MALL_1 :Centro comercial STR_TOWN_BUILDING_NAME_IGLOO_1 :Iglú STR_TOWN_BUILDING_NAME_TEPEES_1 :Tipis -STR_TOWN_BUILDING_NAME_TEAPOT_HOUSE_1 :Casa Tetera -STR_TOWN_BUILDING_NAME_PIGGY_BANK_1 :Banco Porquiño +STR_TOWN_BUILDING_NAME_TEAPOT_HOUSE_1 :Casa-tetera +STR_TOWN_BUILDING_NAME_PIGGY_BANK_1 :Porquiño-hucha ##id 0x4800 # industry names -STR_INDUSTRY_NAME_COAL_MINE :Mina de Carbón -STR_INDUSTRY_NAME_POWER_STATION :Estación Enerxética -STR_INDUSTRY_NAME_SAWMILL :Serradeiro +STR_INDUSTRY_NAME_COAL_MINE :Mina de carbón +STR_INDUSTRY_NAME_POWER_STATION :Central eléctrica +STR_INDUSTRY_NAME_SAWMILL :Serradoiro STR_INDUSTRY_NAME_FOREST :Bosque -STR_INDUSTRY_NAME_OIL_REFINERY :Ref. de Petróleo -STR_INDUSTRY_NAME_OIL_RIG :Torre Petrolífera -STR_INDUSTRY_NAME_FACTORY :Factoría +STR_INDUSTRY_NAME_OIL_REFINERY :Refinaría de petróleo +STR_INDUSTRY_NAME_OIL_RIG :Plataforma petrolífera +STR_INDUSTRY_NAME_FACTORY :Fábrica STR_INDUSTRY_NAME_PRINTING_WORKS :Imprenta STR_INDUSTRY_NAME_STEEL_MILL :Siderúrxica STR_INDUSTRY_NAME_FARM :Granxa -STR_INDUSTRY_NAME_COPPER_ORE_MINE :Mina de Mineral de Cobre -STR_INDUSTRY_NAME_OIL_WELLS :Pozo Petrolífero +STR_INDUSTRY_NAME_COPPER_ORE_MINE :Mina de cobre +STR_INDUSTRY_NAME_OIL_WELLS :Pozos petrolíferos STR_INDUSTRY_NAME_BANK :Banco -STR_INDUSTRY_NAME_FOOD_PROCESSING_PLANT :Planta de Proc. de Comida -STR_INDUSTRY_NAME_PAPER_MILL :Fábrica de Papel -STR_INDUSTRY_NAME_GOLD_MINE :Mina de Ouro +STR_INDUSTRY_NAME_FOOD_PROCESSING_PLANT :Planta de procesado de alimentos +STR_INDUSTRY_NAME_PAPER_MILL :Fábrica de papel +STR_INDUSTRY_NAME_GOLD_MINE :Mina de ouro STR_INDUSTRY_NAME_BANK_TROPIC_ARCTIC :Banco -STR_INDUSTRY_NAME_DIAMOND_MINE :Mina de Diamantes -STR_INDUSTRY_NAME_IRON_ORE_MINE :Mina de Hematita -STR_INDUSTRY_NAME_FRUIT_PLANTATION :Plantación de Froita -STR_INDUSTRY_NAME_RUBBER_PLANTATION :Plant. de Árbores de Caucho -STR_INDUSTRY_NAME_WATER_SUPPLY :Acuífero -STR_INDUSTRY_NAME_WATER_TOWER :Torre de Auga -STR_INDUSTRY_NAME_FACTORY_2 :Factoría +STR_INDUSTRY_NAME_DIAMOND_MINE :Mina de diamante +STR_INDUSTRY_NAME_IRON_ORE_MINE :Mina de ferro +STR_INDUSTRY_NAME_FRUIT_PLANTATION :Plantación de froita +STR_INDUSTRY_NAME_RUBBER_PLANTATION :Plantación de sobreiras +STR_INDUSTRY_NAME_WATER_SUPPLY :Subministro de auga +STR_INDUSTRY_NAME_WATER_TOWER :Torre de auga +STR_INDUSTRY_NAME_FACTORY_2 :Fábrica STR_INDUSTRY_NAME_FARM_2 :Granxa -STR_INDUSTRY_NAME_LUMBER_MILL :Fábrica de Madeiros -STR_INDUSTRY_NAME_COTTON_CANDY_FOREST :Bosque de Algodón de Azucre -STR_INDUSTRY_NAME_CANDY_FACTORY :Fábrica de Caramelos -STR_INDUSTRY_NAME_BATTERY_FARM :Granxa de Pilas -STR_INDUSTRY_NAME_COLA_WELLS :Fontes de Cola +STR_INDUSTRY_NAME_LUMBER_MILL :Aserradoiro +STR_INDUSTRY_NAME_COTTON_CANDY_FOREST :Bosque de algodón de azucre +STR_INDUSTRY_NAME_CANDY_FACTORY :Fábrica de lambetadas +STR_INDUSTRY_NAME_BATTERY_FARM :Granxa de pilas +STR_INDUSTRY_NAME_COLA_WELLS :Pozos de cola STR_INDUSTRY_NAME_TOY_SHOP :Xoguetería -STR_INDUSTRY_NAME_TOY_FACTORY :Fábrica de Xoguetes -STR_INDUSTRY_NAME_PLASTIC_FOUNTAINS :Fontes de Plástico -STR_INDUSTRY_NAME_FIZZY_DRINK_FACTORY :Fábrica de Bebidas Gaseosas -STR_INDUSTRY_NAME_BUBBLE_GENERATOR :Xerador de Burbullas -STR_INDUSTRY_NAME_TOFFEE_QUARRY :Canteira de Toffee -STR_INDUSTRY_NAME_SUGAR_MINE :Mina de Azucre +STR_INDUSTRY_NAME_TOY_FACTORY :Fábrica de xoguetes +STR_INDUSTRY_NAME_PLASTIC_FOUNTAINS :Fontes de plástico +STR_INDUSTRY_NAME_FIZZY_DRINK_FACTORY :Fábrica de bebidas gaseosas +STR_INDUSTRY_NAME_BUBBLE_GENERATOR :Xerador de burbullas +STR_INDUSTRY_NAME_TOFFEE_QUARRY :Canteira de toffee +STR_INDUSTRY_NAME_SUGAR_MINE :Mina de azucre ############ 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 :Sen Nome +STR_SV_UNNAMED :Sen nome STR_SV_TRAIN_NAME :Tren {COMMA} STR_SV_ROAD_VEHICLE_NAME :Vehículo de estrada {COMMA} STR_SV_SHIP_NAME :Barco {COMMA} @@ -3603,7 +4429,7 @@ STR_SV_AIRCRAFT_NAME :Aeronave {COMMA STR_SV_STNAME :{STRING} STR_SV_STNAME_NORTH :{STRING} Norte STR_SV_STNAME_SOUTH :{STRING} Sur -STR_SV_STNAME_EAST :{STRING} Este +STR_SV_STNAME_EAST :{STRING} Leste STR_SV_STNAME_WEST :{STRING} Oeste STR_SV_STNAME_CENTRAL :{STRING} Central STR_SV_STNAME_TRANSFER :{STRING} Transferencia @@ -3612,45 +4438,45 @@ STR_SV_STNAME_VALLEY :{STRING} Val STR_SV_STNAME_HEIGHTS :{STRING} Lombas STR_SV_STNAME_WOODS :{STRING} Bosques STR_SV_STNAME_LAKESIDE :{STRING} Ribeira de lago -STR_SV_STNAME_EXCHANGE :{STRING} Cambio +STR_SV_STNAME_EXCHANGE :{STRING} Intercambio STR_SV_STNAME_AIRPORT :Aeroporto de {STRING} -STR_SV_STNAME_OILFIELD :{STRING} Campo de petróleo -STR_SV_STNAME_MINES :{STRING} Minas +STR_SV_STNAME_OILFIELD :Campo de petróleo de {STRING} +STR_SV_STNAME_MINES :Minas de {STRING} STR_SV_STNAME_DOCKS :Peirao de {STRING} STR_SV_STNAME_BUOY :{STRING} STR_SV_STNAME_WAYPOINT :{STRING} ##id 0x6020 STR_SV_STNAME_ANNEXE :{STRING} Anexo STR_SV_STNAME_SIDINGS :{STRING} Apartadeiro -STR_SV_STNAME_BRANCH :{STRING} Rama -STR_SV_STNAME_UPPER :Superior {STRING} -STR_SV_STNAME_LOWER :Inferior {STRING} -STR_SV_STNAME_HELIPORT :{STRING} Heliporto -STR_SV_STNAME_FOREST :{STRING} Bosque -STR_SV_STNAME_FALLBACK :{STRING} Estación #{NUM} +STR_SV_STNAME_BRANCH :{STRING} Ramal +STR_SV_STNAME_UPPER :Alto {STRING} +STR_SV_STNAME_LOWER :Baixo {STRING} +STR_SV_STNAME_HELIPORT :Heliporto de {STRING} +STR_SV_STNAME_FOREST :Bosque de {STRING} +STR_SV_STNAME_FALLBACK :Estación de {STRING} #{NUM} ############ end of savegame specific region! ##id 0x8000 # Vehicle names STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank (Vapor) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_250_DIESEL :MJS 250 (Diesel) +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_PLODDYPHUT_DIESEL :Ploddyphut Diesel -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_DIESEL :Powernaut Diesel +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) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CHANEY_JUBILEE_STEAM :Chaney 'Jubilee' (Vapor) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_GINZU_A4_STEAM :Ginzu 'A4' (Vapor) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_8P_STEAM :SH '8P' (Vapor) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MANLEY_MOREL_DMU_DIESEL :Manley-Morel DMU (Diesel) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_DASH_DIESEL :'Dash' (Diesel) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_HENDRY_25_DIESEL :SH/Hendry '25' (Diesel) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_UU_37_DIESEL :UU '37' (Diesel) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_FLOSS_47_DIESEL :Floss '47' (Diesel) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CS_4000_DIESEL :CS 4000 (Diesel) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CS_2400_DIESEL :CS 2400 (Diesel) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CENTENNIAL_DIESEL :Centennial (Diesel) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MANLEY_MOREL_DMU_DIESEL :Manley-Morel DMU (Diésel) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_DASH_DIESEL :'Dash' (Diésel) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_HENDRY_25_DIESEL :SH/Hendry '25' (Diésel) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_UU_37_DIESEL :UU '37' (Diésel) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_FLOSS_47_DIESEL :Floss '47' (Diésel) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CS_4000_DIESEL :CS 4000 (Diésel) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CS_2400_DIESEL :CS 2400 (Diésel) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CENTENNIAL_DIESEL :Centennial (Diésel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KELLING_3100_DIESEL :Kelling 3100 (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_TURNER_TURBO_DIESEL :Turner Turbo (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_1000_DIESEL :MJS 1000 (Diesel) @@ -3821,7 +4647,7 @@ STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_TOFFEE_TRUCK :Camión de Tofe STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_TOY_VAN :Furgón de Xoguetes MightyMover STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_TOY_VAN :Furgón de Xoguetes Powernaught STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_TOY_VAN :Furgón de Xoguetes Wizzowow -STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_CANDY_TRUCK :Cam. de Caramelos MightyMover +STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_CANDY_TRUCK :Camión de Caramelos MightyMover STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_CANDY_TRUCK :Camión de Caramelos Powernaught STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_CANDY_TRUCK :Camión de Caramelos Wizzowow STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_BATTERY_TRUCK :Camión de Pilas MightyMover @@ -3845,7 +4671,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 @@ -3904,6 +4730,13 @@ STR_FORMAT_INDUSTRY_NAME :{TOWN}: {STRING STR_FORMAT_WAYPOINT_NAME :Punto de Ruta de {TOWN} STR_FORMAT_WAYPOINT_NAME_SERIAL :Punto de Ruta de {TOWN} #{COMMA} +STR_FORMAT_DEPOT_NAME_TRAIN :{TOWN} Depósito Ferroviario +STR_FORMAT_DEPOT_NAME_TRAIN_SERIAL :{TOWN} Depósito Ferroviario #{COMMA} +STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE :{TOWN} Depósito de Vehículos de Estrada +STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE_SERIAL :{TOWN} Depósito de Vehículos de Estrada #{COMMA} +STR_FORMAT_DEPOT_NAME_SHIP :{TOWN} Depósito de Barcos +STR_FORMAT_DEPOT_NAME_SHIP_SERIAL :{TOWN} Depósito de Barcos #{COMMA} +STR_FORMAT_DEPOT_NAME_AIRCRAFT :{STATION} Hangar STR_UNKNOWN_STATION :estación descoñecida STR_DEFAULT_SIGN_NAME :Sinal @@ -3953,8 +4786,9 @@ 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_SPACE_STRING :{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} @@ -3978,9 +4812,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 a154d7445..25f6d33ce 100644 --- a/src/lang/german.txt +++ b/src/lang/german.txt @@ -200,21 +200,28 @@ STR_UNITS_POWER_IMPERIAL :{COMMA}PS STR_UNITS_POWER_METRIC :{COMMA}PS 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} Tonne{P "" n} STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} Tonne{P "" n} 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} Gallone{P "" n} 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} Fuß +STR_UNITS_HEIGHT_METRIC :{COMMA} m STR_UNITS_HEIGHT_SI :{COMMA} m # Common window strings @@ -222,6 +229,7 @@ STR_LIST_FILTER_TITLE :{BLACK}Auswahl- STR_LIST_FILTER_OSKTITLE :{BLACK}Filter eingeben STR_LIST_FILTER_TOOLTIP :{BLACK}Stichwort eingeben, mit dem die Liste gefiltert werden soll +STR_TOOLTIP_GROUP_ORDER :{BLACK}Gruppierung wählen STR_TOOLTIP_SORT_ORDER :{BLACK}Sortierreihenfolge auswählen (absteigend/aufsteigend) STR_TOOLTIP_SORT_CRITERIA :{BLACK}Sortierkriterien auswählen STR_TOOLTIP_FILTER_CRITERIA :{BLACK}Filterkriterien auswählen @@ -233,7 +241,8 @@ STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Fenster STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Titelleiste klicken und ziehen, um das Fenster zu verschieben STR_TOOLTIP_SHADE :{BLACK}Fenster einklappen - Nur die Titelleiste zeigen STR_TOOLTIP_DEBUG :{BLACK}Zeige Daten für NewGRF-Fehlerbeseitigung -STR_TOOLTIP_STICKY :{BLACK}Fenster wird nicht durch die "Schließe alle Fenster"-Taste geschlossen +STR_TOOLTIP_DEFSIZE :{BLACK}Standardgröße des Fensters wieder herstellen. Strg+Klick um die aktuelle Größe als Standard zu speichern +STR_TOOLTIP_STICKY :{BLACK}Fenster wird nicht durch die "Schließe alle Fenster"-Taste geschlossen. Strg+Klick, um den Status als Standard zu speichern STR_TOOLTIP_RESIZE :{BLACK}Klicken und Ziehen zum Ändern der Größe des Fensters STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Zwischen Fenstergrößen umschalten STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Bildlaufleiste: In der Liste auf- und abwärts blättern @@ -257,7 +266,6 @@ STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}Gebiet: # These are used in buttons -STR_SORT_BY_CAPTION_POPULATION :{BLACK}Bevölkerung STR_SORT_BY_CAPTION_NAME :{BLACK}Name STR_SORT_BY_CAPTION_DATE :{BLACK}Datum # These are used in dropdowns @@ -278,7 +286,8 @@ STR_SORT_BY_LENGTH :Länge STR_SORT_BY_LIFE_TIME :Verbleibende Betriebsdauer STR_SORT_BY_TIMETABLE_DELAY :Verspätung STR_SORT_BY_FACILITY :Stationsart -STR_SORT_BY_WAITING :Wert der wartenden Fracht +STR_SORT_BY_WAITING_TOTAL :Insgesamt wartende Fracht +STR_SORT_BY_WAITING_AVAILABLE :Verfügbare, wartende Fracht STR_SORT_BY_RATING_MAX :Beste Bewertung STR_SORT_BY_RATING_MIN :Schlechteste Bewertung STR_SORT_BY_ENGINE_ID :Baureihe @@ -290,6 +299,8 @@ STR_SORT_BY_RUNNING_COST :Betriebskosten STR_SORT_BY_POWER_VS_RUNNING_COST :Leistung/Betriebskosten STR_SORT_BY_CARGO_CAPACITY :Frachtkapazität STR_SORT_BY_RANGE :Reichweite +STR_SORT_BY_POPULATION :Bevölkerung +STR_SORT_BY_RATING :Bewertung # Tooltips for the main toolbar STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Spiel anhalten @@ -302,6 +313,8 @@ STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Subventi STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Liste der firmeneigenen Stationen anzeigen STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Firmenfinanzen anzeigen STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Allgemeine Firmeninformationen anzeigen +STR_TOOLBAR_TOOLTIP_DISPLAY_STORY_BOOK :{BLACK}Zeigt die Chronik an +STR_TOOLBAR_TOOLTIP_DISPLAY_GOALS_LIST :{BLACK}Zeigt die von einem Spielskript festgelegten Ziele an STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Diagramme anzeigen STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Firmentabelle oder Punktestand anzeigen STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Liste aller Industrien oder Errichtung und Finanzierung einer neuen Industrie @@ -313,8 +326,8 @@ STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_IN :{BLACK}Ansicht STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_OUT :{BLACK}Ansicht verkleinern (herauszoomen) STR_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Gleise legen STR_TOOLBAR_TOOLTIP_BUILD_ROADS :{BLACK}Straßen bauen -STR_TOOLBAR_TOOLTIP_BUILD_SHIP_DOCKS :{BLACK}Hafen bauen -STR_TOOLBAR_TOOLTIP_BUILD_AIRPORTS :{BLACK}Flughafen bauen +STR_TOOLBAR_TOOLTIP_BUILD_SHIP_DOCKS :{BLACK}Häfen und Wasserstraßen bauen +STR_TOOLBAR_TOOLTIP_BUILD_AIRPORTS :{BLACK}Flughäfen bauen STR_TOOLBAR_TOOLTIP_LANDSCAPING :{BLACK}Landschaftsbau: Land heben/senken, Bäume pflanzen etc. STR_TOOLBAR_TOOLTIP_SHOW_SOUND_MUSIC_WINDOW :{BLACK}Sound-/Musikfenster anzeigen STR_TOOLBAR_TOOLTIP_SHOW_LAST_MESSAGE_NEWS :{BLACK}Zeige letzte Mitteilung/Nachricht, Nachrichtenoptionen anzeigen @@ -372,19 +385,19 @@ STR_FILE_MENU_SEPARATOR : STR_FILE_MENU_EXIT :OpenTTD beenden ############ range ends here -############ range for map menu starts +# map menu STR_MAP_MENU_MAP_OF_WORLD :Weltkarte STR_MAP_MENU_EXTRA_VIEW_PORT :Zusatzansicht +STR_MAP_MENU_LINGRAPH_LEGEND :Frachtverbindungen STR_MAP_MENU_SIGN_LIST :Schilderliste -############ range for town menu starts, yet the town directory is shown in the map menu in the scenario editor + +############ range for town menu starts STR_TOWN_MENU_TOWN_DIRECTORY :Städteverzeichnis -############ end of the 'Display map' dropdown STR_TOWN_MENU_FOUND_TOWN :Stadt gründen -############ end of the 'Town' dropdown +############ range ends here ############ range for subsidies menu starts STR_SUBSIDIES_MENU_SUBSIDIES :Subventionen -STR_SUBSIDIES_MENU_GOAL :Momentane Ziele ############ range ends here ############ range for graph menu starts @@ -458,7 +471,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. @@ -474,22 +487,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 @@ -585,10 +616,10 @@ STR_PERFORMANCE_DETAIL_TOTAL :{BLACK}Gesamt: STR_PERFORMANCE_DETAIL_VEHICLES_TOOLTIP :{BLACK}Anzahl der Fahrzeuge (Straßenfahrzeuge, Züge, Schiffe und Flugzeuge/Hubschrauber), die im letzten Jahr Gewinn gemacht haben STR_PERFORMANCE_DETAIL_STATIONS_TOOLTIP :{BLACK}Anzahl vor kurzem genutzter Stationen (wenn Stationen verschiedener Typen verbunden sind, werden sie trotzdem einzeln gezählt) STR_PERFORMANCE_DETAIL_MIN_PROFIT_TOOLTIP :{BLACK}Geringster Gewinn der Fahrzeuge, die älter als zwei Jahre sind -STR_PERFORMANCE_DETAIL_MIN_INCOME_TOOLTIP :{BLACK}Geringste Monatseinnahmen in den letzten 12 Quartalen -STR_PERFORMANCE_DETAIL_MAX_INCOME_TOOLTIP :{BLACK}Höchste Monatseinnahmen in den letzten 12 Quartalen -STR_PERFORMANCE_DETAIL_DELIVERED_TOOLTIP :{BLACK}In den letzten 4 Quartalen gelieferte Frachteinheiten -STR_PERFORMANCE_DETAIL_CARGO_TOOLTIP :{BLACK}Im letzten Quartal gelieferte Frachttypen +STR_PERFORMANCE_DETAIL_MIN_INCOME_TOOLTIP :{BLACK}Geringste Quartalseinnahmen in den letzten 3 Jahren +STR_PERFORMANCE_DETAIL_MAX_INCOME_TOOLTIP :{BLACK}Höchste Quartalseinnahmen in den letzten 3 Jahren +STR_PERFORMANCE_DETAIL_DELIVERED_TOOLTIP :{BLACK}Im letzten Jahr gelieferte Frachteinheiten +STR_PERFORMANCE_DETAIL_CARGO_TOOLTIP :{BLACK}Anzahl der transportierten Frachttypen im letzten Quartal STR_PERFORMANCE_DETAIL_MONEY_TOOLTIP :{BLACK}Kontostand dieser Firma STR_PERFORMANCE_DETAIL_LOAN_TOOLTIP :{BLACK}Der von dieser Firma in Anspruch genommene Kredit STR_PERFORMANCE_DETAIL_TOTAL_TOOLTIP :{BLACK}Erreichte Punkte von der maximal erreichbaren Anzahl @@ -651,7 +682,7 @@ STR_HIGHSCORE_PERFORMANCE_TITLE_CAPITALIST :Kapitalist STR_HIGHSCORE_PERFORMANCE_TITLE_MAGNATE :Magnat STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL :Mogul STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY :Tycoon des Jahrhunderts -STR_HIGHSCORE_NAME :{BIG_FONT}{PRESIDENT_NAME}, {COMPANY} +STR_HIGHSCORE_NAME :{PRESIDENT_NAME}, {COMPANY} STR_HIGHSCORE_STATS :{BIG_FONT}'{STRING}' ({COMMA}) STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{BLACK}{COMPANY} erreicht '{STRING}' Status! STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{WHITE}{PRESIDENT_NAME} von {COMPANY} erreicht '{STRING}' Status! @@ -662,17 +693,20 @@ STR_SMALLMAP_CAPTION :{WHITE}Weltkart STR_SMALLMAP_TYPE_CONTOURS :Höhenrelief STR_SMALLMAP_TYPE_VEHICLES :Fahrzeuge STR_SMALLMAP_TYPE_INDUSTRIES :Industrien +STR_SMALLMAP_TYPE_ROUTEMAP :Frachtverbindungen STR_SMALLMAP_TYPE_ROUTES :Strecken STR_SMALLMAP_TYPE_VEGETATION :Vegetation STR_SMALLMAP_TYPE_OWNERS :Eigentümer STR_SMALLMAP_TOOLTIP_SHOW_LAND_CONTOURS_ON_MAP :{BLACK}Höhenlinien auf der Weltkarte anzeigen STR_SMALLMAP_TOOLTIP_SHOW_VEHICLES_ON_MAP :{BLACK}Fahrzeuge auf der Weltkarte anzeigen STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRIES_ON_MAP :{BLACK}Industrien auf der Weltkarte anzeigen +STR_SMALLMAP_TOOLTIP_SHOW_LINK_STATS_ON_MAP :{BLACK}Zeige Frachtverbindungen auf Karte STR_SMALLMAP_TOOLTIP_SHOW_TRANSPORT_ROUTES_ON :{BLACK}Transportwege auf der Weltkarte anzeigen STR_SMALLMAP_TOOLTIP_SHOW_VEGETATION_ON_MAP :{BLACK}Vegetation auf der Weltkarte anzeigen STR_SMALLMAP_TOOLTIP_SHOW_LAND_OWNERS_ON_MAP :{BLACK}Landeigentümer auf der Weltkarte anzeigen STR_SMALLMAP_TOOLTIP_INDUSTRY_SELECTION :{BLACK}Ein Mausklick auf eine der Industriearten zeigt diese auf der Karte an bzw. blendet sie wieder aus. Bei Strg+Klick wird nur die ausgewählte Industrieart angezeigt, alle anderen werden ausgeblendet. Ein weiteres Mal Strg+Klick zeigt wieder alle Industrien an. STR_SMALLMAP_TOOLTIP_COMPANY_SELECTION :{BLACK}Anzeigeeigenschaften mit Klick auf Firma ändern. Strg+Klick deaktiviert alle Firmen außer die ausgewählte. Wiederholtes Strg+Klick aktiviert alle Firmen +STR_SMALLMAP_TOOLTIP_CARGO_SELECTION :{BLACK}Klick auf eine Fracht ändert die Anzeige der Eigenschaften. Strg+Klick zeigt nur die ausgewählte Fracht. Nochmaliger Strg+Klick wählt alle Frachtarten STR_SMALLMAP_LEGENDA_ROADS :{TINY_FONT}{BLACK}Straßen STR_SMALLMAP_LEGENDA_RAILROADS :{TINY_FONT}{BLACK}Gleise @@ -706,6 +740,7 @@ STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLA STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Städtenamen anzeigen ein/aus STR_SMALLMAP_CENTER :{BLACK}Zusatzansicht zur aktuellen Position scrollen 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 ausblenden @@ -716,6 +751,8 @@ STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES :{BLACK}Industri STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}Anzeige des Höhenreliefs umschalten STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES :{BLACK}Zeige kein Eigentum des Unternehmens auf der Karte STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}Zeige das ganze Eigentum des Unternehmens auf der Karte +STR_SMALLMAP_TOOLTIP_DISABLE_ALL_CARGOS :{BLACK}Zeige keine Frachtarten auf der Karte +STR_SMALLMAP_TOOLTIP_ENABLE_ALL_CARGOS :{BLACK}Zeige alle Frachtarten auf der Karte # Status bar messages STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Letzte Nachricht oder letzten Bericht anzeigen @@ -792,13 +829,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 @@ -877,15 +913,12 @@ STR_GAME_OPTIONS_CURRENCY_LTL :Litauische Lita STR_GAME_OPTIONS_CURRENCY_KRW :Südkoreanischer Won (KRW) STR_GAME_OPTIONS_CURRENCY_ZAR :Südafrikanischer Rand (ZAR) STR_GAME_OPTIONS_CURRENCY_CUSTOM :Eigene... +STR_GAME_OPTIONS_CURRENCY_GEL :Georgischer Lari (GEL) +STR_GAME_OPTIONS_CURRENCY_IRR :Iranischer Rial (IRR) ############ end of currency region -STR_GAME_OPTIONS_MEASURING_UNITS_FRAME :{BLACK}Maßeinheiten -STR_GAME_OPTIONS_MEASURING_UNITS_DROPDOWN_TOOLTIP :{BLACK}Auswahl der Maßeinheiten ############ start of measuring units region -STR_GAME_OPTIONS_MEASURING_UNITS_IMPERIAL :Britisch -STR_GAME_OPTIONS_MEASURING_UNITS_METRIC :metrisch -STR_GAME_OPTIONS_MEASURING_UNITS_SI :SI-Basiseinheiten ############ end of measuring units region STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Fahrzeuge @@ -923,11 +956,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 @@ -939,9 +974,6 @@ 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_BASE_GRF :{BLACK}Basisgrafiken STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Zu benutzendes Set an Basisgrafiken auswählen STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} fehlende/fehlerhafte Datei{P "" en} @@ -956,6 +988,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 @@ -1055,8 +1088,9 @@ 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_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 :Grundlegende Einstellungen STR_CONFIG_SETTING_RESTRICT_ADVANCED :Erweiterte Einstellungen STR_CONFIG_SETTING_RESTRICT_ALL :Alle Einstellungen @@ -1070,6 +1104,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 @@ -1087,31 +1125,29 @@ STR_CONFIG_SETTING_HORIZONTAL_POS_LEFT :Links STR_CONFIG_SETTING_HORIZONTAL_POS_CENTER :Mitte STR_CONFIG_SETTING_HORIZONTAL_POS_RIGHT :Rechts -STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN :Maximaler, anfänglicher Kredit: {STRING} +STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN :Kreditlimit bei Spielbeginn: {STRING} STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Maximaler Kredit für eine Firma (ohne Berücksichtigung der Inflation) STR_CONFIG_SETTING_INTEREST_RATE :Zinssatz: {STRING} STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Zinssatz für Kredite; beeinflußt auch die Inflation, falls aktiv STR_CONFIG_SETTING_RUNNING_COSTS :Betriebskosten: {STRING} STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT :Stellt die Höhe der Unterhalts- und Betriebskosten für Fahrzeuge und Infrastruktur ein STR_CONFIG_SETTING_CONSTRUCTION_SPEED :Baugeschwindigkeit: {STRING} -STR_CONFIG_SETTING_CONSTRUCTION_SPEED_HELPTEXT :Begrenze die Anzahl der Bau-Aktionen für KIs +STR_CONFIG_SETTING_CONSTRUCTION_SPEED_HELPTEXT :Begrenzt der eingestellten Baugeschwindigkeit entsprechend die Anzahl der Bau-Aktionen der KIs STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS :Fahrzeugpannen: {STRING} STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS_HELPTEXT :Einstellen wie oft unzureichend gewartete Fahrzeuge Pannen haben können STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER :Subventions-Multiplikator: {STRING} -STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT :Einstellen wieviel für subventionierte Verbindungen gezahlt wird +STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT :Einstellen, wieviel für subventionierte Verbindungen gezahlt wird STR_CONFIG_SETTING_CONSTRUCTION_COSTS :Baukosten: {STRING} STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :Höhe der Bau- und Einkaufskosten festlegen STR_CONFIG_SETTING_RECESSIONS :Rezessionen: {STRING} -STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Falls aktiv, können Rezessionen alle paar Jahre auftreten. Während einer Rezession ist die Produktion aller Industrien viel niedriger (und kehrt zum Ende der Rezession zum gleichen Level zurück wie vor der Rezession) +STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Falls aktiv, können Rezessionen im Abstand von einigen Jahre auftreten. Während einer Rezession ist die Produktion aller Industrien viel niedriger (und kehrt zum Ende der Rezession zum gleichen Level zurück wie vor der Rezession) STR_CONFIG_SETTING_TRAIN_REVERSING :Zügen das Umdrehen in Bahnhöfen verbieten: {STRING} -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_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 :Katastrophen umschalten, welche gelegentlich Fahrzeugeoder Infrastruktur blockieren oder zerstören -STR_CONFIG_SETTING_CITY_APPROVAL :Haltung der Stadtverwaltung gegenüber Landschaftsumgestaltungen: {STRING} -STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Auswählen wieviel Lärm und Umweltschäden von Firmen deren Bewertung bei den Städten beeinflußt +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 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_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} @@ -1136,14 +1172,8 @@ 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_TUNNEL_LENGTH :Maximallänge für Tunnel: {STRING} @@ -1171,8 +1201,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 @@ -1203,16 +1231,12 @@ 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 STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :Flughäfen veralten nie: {STRING} -STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS_HELPTEXT :Mit Hilfe dieser Option können Flughäfen, die einmal eingeführt wurden, das ganze Spiel über gebaut werden und veralten nie +STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS_HELPTEXT :Wird diese Option aktiviert, können Flughäfen, die einmal eingeführt wurden, das ganze Spiel über gebaut werden und veralten nie STR_CONFIG_SETTING_WARN_LOST_VEHICLE :Warnen, wenn Fahrzeug sich verirrt hat: {STRING} STR_CONFIG_SETTING_WARN_LOST_VEHICLE_HELPTEXT :Eine Nachricht einblenden, wenn Fahrzeuge ihr Ziel nicht erreichen können oder keinen Weg dorthin finden @@ -1236,36 +1260,50 @@ STR_CONFIG_SETTING_AUTORENEW_MONEY_HELPTEXT :Geldbetrag, der STR_CONFIG_SETTING_ERRMSG_DURATION :Anzeigedauer für Fehlermeldungen: {STRING} 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 Hilfe-Texte: {STRING} -STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Verzögerung, bevor ein schwebender Hilfetext angezeigt wird. Er kann auch auf die rechte Maustaste gelegt werden -STR_CONFIG_SETTING_HOVER_DELAY_VALUE :Hover für {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_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_OIL_REF_EDGE_DISTANCE :Maximalabstand vom Kartenrand für Ölrafinerien: {STRING} +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 @@ -1301,8 +1339,8 @@ STR_CONFIG_SETTING_SCROLLWHEEL_OFF :Aus STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER :Mausradgeschwindigkeit auf dem Spielfeld: {STRING} STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER_HELPTEXT :Lege die Empfindlichkeit des Mausrads beim Scrollen fest STR_CONFIG_SETTING_OSK_ACTIVATION :On-screen Tastatur: {STRING} -STR_CONFIG_SETTING_OSK_ACTIVATION_HELPTEXT :Wählen der Methode, um die on-screen-Tastatur für die Texteingabe in Eingabefeldern bei der Verwendung von Zeigegeräten zu aktivieren. Dieses ist für kleine Geräte ohne tatsächliche Tastatur gedacht -STR_CONFIG_SETTING_OSK_ACTIVATION_DISABLED :De-aktiviert +STR_CONFIG_SETTING_OSK_ACTIVATION_HELPTEXT :Wählen der Methode, um die On-Screen-Tastatur für die Texteingabe in Eingabefeldern bei der Verwendung von Zeigegeräten zu aktivieren. Dieses ist für kleine Geräte ohne tatsächliche Tastatur gedacht +STR_CONFIG_SETTING_OSK_ACTIVATION_DISABLED :Deaktiviert STR_CONFIG_SETTING_OSK_ACTIVATION_DOUBLE_CLICK :Doppel-Klick STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK_FOCUS :Einfach-Klick (wenn hervorgehoben) STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK :Einfach-Klick (sofort) @@ -1316,17 +1354,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} @@ -1361,18 +1397,18 @@ STR_CONFIG_SETTING_SOUND_TICKER :Nachrichtentick STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :Soundeffekte für Kurzfassungen von Nachrichten abspielen (Ticker) STR_CONFIG_SETTING_SOUND_NEWS :Zeitung: {STRING} STR_CONFIG_SETTING_SOUND_NEWS_HELPTEXT :Soundeffekte bei der Anzeige der Zeitung abspielen -STR_CONFIG_SETTING_SOUND_NEW_YEAR :Jahresende: {STRING} -STR_CONFIG_SETTING_SOUND_NEW_YEAR_HELPTEXT :Soundeffekte beim Jahresrückblick auf die Bilanzen der vergangenen Jahre +STR_CONFIG_SETTING_SOUND_NEW_YEAR :Bericht am Jahresende: {STRING} +STR_CONFIG_SETTING_SOUND_NEW_YEAR_HELPTEXT :Soundeffekte beim Jahresrückblick auf die Bilanzen der vergangenen Jahre abspielen STR_CONFIG_SETTING_SOUND_CONFIRM :Baumaßnahmen: {STRING} STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT :Soundeffekte bei Baumaßnahmen oder anderen Aktionen abspielen -STR_CONFIG_SETTING_SOUND_CLICK :Klich auf Knöpfe: {STRING} +STR_CONFIG_SETTING_SOUND_CLICK :Klick auf Knöpfe: {STRING} STR_CONFIG_SETTING_SOUND_CLICK_HELPTEXT :Piepton bei Klick auf Knöpfe -STR_CONFIG_SETTING_SOUND_DISASTER :Katastrophen und Unfälle: {STRING} +STR_CONFIG_SETTING_SOUND_DISASTER :Unfälle und Katastrophen: {STRING} STR_CONFIG_SETTING_SOUND_DISASTER_HELPTEXT :Soundeffekte von Unfällen und Katastrophen abspielen STR_CONFIG_SETTING_SOUND_VEHICLE :Fahrzeuge: {STRING} STR_CONFIG_SETTING_SOUND_VEHICLE_HELPTEXT :Soundeffekte von Fahrzeugen abspielen STR_CONFIG_SETTING_SOUND_AMBIENT :Umgebungsgeräusche: {STRING} -STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :Soundeffekte für Landschaft, Industrien und Städte +STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :Soundeffekte für Landschaft, Industrien und Städte abspielen STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING :Bau von Infrastruktur verbieten, wenn dafür keine Fahrzeuge verfügbar sind: {STRING} STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING_HELPTEXT :Zeige Infrastruktur nur, wenn sie auch von Fahrzeugen genutzt werden kann, um Verschwendung von Zeit und Geld auf den Bau von unnützer Infrastruktur zu vermeiden @@ -1394,8 +1430,8 @@ STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT_HELPTEXT :Verbiete Comput STR_CONFIG_SETTING_AI_BUILDS_SHIPS :Schiffe für den Computer abschalten: {STRING} STR_CONFIG_SETTING_AI_BUILDS_SHIPS_HELPTEXT :Verbiete Computerspielern, Schiffe zu kaufen -STR_CONFIG_SETTING_AI_PROFILE :Standard-Einstellungen: {STRING} -STR_CONFIG_SETTING_AI_PROFILE_HELPTEXT :Wählen, welches Einstellungs-Profil für zufällige KIs oder anfängliche Werte von KIs oder Spielscripten genommen werden soll +STR_CONFIG_SETTING_AI_PROFILE :Standardeinstellungen: {STRING} +STR_CONFIG_SETTING_AI_PROFILE_HELPTEXT :Auswählen, welcher Schwierigkeitsgrad in den KI-Optionen von zufällig startenden Computerspielern eingestellt werden soll. Wird auch als Standardwert für einzeln ausgewählte KIs oder für Spielskripte verwendet STR_CONFIG_SETTING_AI_PROFILE_EASY :Leicht STR_CONFIG_SETTING_AI_PROFILE_MEDIUM :Mittel STR_CONFIG_SETTING_AI_PROFILE_HARD :Schwierig @@ -1428,7 +1464,7 @@ STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN :Ankunft des ers STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN_HELPTEXT :Zeitung anzeigen, wenn das erste Fahrzeug an einem eigenen Bahnhof eintrifft STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER :Ankunft des ersten Fahrzeugs an Station eines Mitbewerbers: {STRING} STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER_HELPTEXT :Zeitung anzeigen, wenn das erste Fahrzeug am Bahnhof eines Wettbewerbers eintrifft -STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS :Unfälle/Katastrophen: {STRING} +STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS :Unfälle und Katastrophen: {STRING} STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS_HELPTEXT :Zeitung anzeigen, wenn Unfälle oder Katastrophen auftreten STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION :Firmenmitteilungen: {STRING} STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION_HELPTEXT :Zeitung anzeigen, wenn neue Firmen gegründet werden oder kurz vor dem Bankrott stehen @@ -1437,7 +1473,7 @@ STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN_HELPTEXT :Zeitung anzeige STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE :Schließung von Industrien: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE_HELPTEXT :Zeitung anzeigen, wenn Industrien schließen STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES :Änderungen der Wirtschaftslage: {STRING} -STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES_HELPTEXT :Zeitung anzeigen bei Änderungen der globalen Konjunktur +STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES_HELPTEXT :Zeitung bei Änderungen der globalen Konjunktur anzeigen STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY :Produktionsänderung von Industrien, die der Spieler bedient: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY_HELPTEXT :Zeitung anzeigen, wenn die Produktion von Industrien sich ändert, die von der eigenen Firma bedient werden STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER :Produktionsänderung von Industrien, die ein Mitbewerber bedient: {STRING} @@ -1449,7 +1485,7 @@ STR_CONFIG_SETTING_NEWS_ADVICE_HELPTEXT :Nachrichten anz STR_CONFIG_SETTING_NEWS_NEW_VEHICLES :Neue Fahrzeuge: {STRING} STR_CONFIG_SETTING_NEWS_NEW_VEHICLES_HELPTEXT :Zeitung anzeigen, wenn neue Fahrzeugtypen verfügbar werden STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE :Änderungen angenommener Fracht: {STRING} -STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE_HELPTEXT :Nachrichten anzeigen, die Änderungen der aktzeptierten Fracht von Bahnhöfen betreffen +STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE_HELPTEXT :Nachrichten anzeigen, die Änderungen der akzeptierten Fracht von Bahnhöfen betreffen STR_CONFIG_SETTING_NEWS_SUBSIDIES :Subventionen: {STRING} STR_CONFIG_SETTING_NEWS_SUBSIDIES_HELPTEXT :Zeitung anzeigen bei Ereignissen, die Subventionen betreffen STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION :Allgemeine Nachrichten: {STRING} @@ -1467,12 +1503,12 @@ STR_CONFIG_SETTING_SMOOTH_ECONOMY_HELPTEXT :Wird diese Opti STR_CONFIG_SETTING_ALLOW_SHARES :Handel mit Firmenanteilen erlauben: {STRING} STR_CONFIG_SETTING_ALLOW_SHARES_HELPTEXT :Erlaube das Kaufen und Verkaufen von Firmenanteilen. Firmenanteile sind nur verfügbar für Firmen, die hinreichend lange existieren STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE :Prozentsatz des Profits für Teilstrecken: {STRING} -STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE_HELPTEXT :Prozentsatz des Einkommens, der Zuliefer-Routen zugeschlagen wird, um das Einkommen der Fahrzeuge der Lieferkette relativ zueinander zu justieren +STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE_HELPTEXT :Um das Einkommen der einzelnen Fahrzeuge einer Lieferkette ungefähr abschätzen zu können, wird vom Transporterlös bei Ablieferung einer Fracht der gewählte Prozentsatz den Zulieferfahrzeugen zugeschlagen STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY :Signalabstand beim Ziehen: {STRING} STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_HELPTEXT :Lege den Abstand fest, in dem Signale auf Gleisen bis zum nächsten Hindernis (Signal, Weiche) gebaut werden, wenn sie gezogen werden STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_VALUE :{COMMA} Feld{P 0 "" er} STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE :Signalabstand nach Lücken (durch Tunnel, Brücken) nicht verkürzen : {STRING} -STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :Lege das Verhalten beim Bau von Signalen mit Strg+Ziehen fest. Wenn eingeschaltet, werden Signale alle N Felder gebaut, so dass Signale auf parallelen Strecken leichter in Einklang gebracht werden können +STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :Lege das Verhalten beim Bau von Signalen mit Strg+Ziehen fest. Wenn eingeschaltet, werden Signale immer im ausgewählten Signalabstand gebaut. Kann ein Signal wegen einer Brücke oder eines Tunnels nicht gebaut werden, wird es ausgelassen. Ist diese Option ausgeschaltet, wird das Signal in diesem Fall nicht ausgelassen, sondern vor die Brücke bzw. den Tunnel gesetzt. Allerdings verschiebt sich dadurch die Position der folgenden Signale, was bei zweigleisigen Strecken dazu führen kann, dass die Signale nicht auf gleicher Höhe gesetzt werden. STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :Automatischer Bau von Formsignalen bis: {STRING} STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE_HELPTEXT :Lege das Jahr für die Einführung von Lichtzeichen-Signalen fest. Vor diesem Jahr werden Formsignale gebaut. Die haben die gleiche Funktion, sehen aber anders aus STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI :Aktiviere Signal-Menü: {STRING} @@ -1544,32 +1580,94 @@ STR_CONFIG_SETTING_TOWN_GROWTH_FAST :Schnell STR_CONFIG_SETTING_TOWN_GROWTH_VERY_FAST :Sehr schnell STR_CONFIG_SETTING_LARGER_TOWNS :Anteil der Städte, die Großstädte werden: {STRING} STR_CONFIG_SETTING_LARGER_TOWNS_HELPTEXT :Anzahl Städte, die eine Großstadt werden, d.h. derjenigen Städte, die schon zu Beginn des Spiels größer sind und auch schneller wachsen werden -STR_CONFIG_SETTING_LARGER_TOWNS_VALUE :1 aus {COMMA} +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_GUI :{ORANGE}Oberfläche -STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}Konstruktion +STR_CONFIG_SETTING_LINKGRAPH_INTERVAL :Neuberechnung der Warenverteilung alle: {STRING} Tag{P "" 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_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 +STR_CONFIG_SETTING_DISTRIBUTION_SYMMETRIC :symmetrisch +STR_CONFIG_SETTING_DISTRIBUTION_PAX :Verteilungsschema für Passagiere: {STRING} +STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :"Symmetrisch" heißt, dass etwa die selbe Zahl von Passagieren von einer Station A zu einer anderen Station B reisen, wie von B nach A. "Asymmetrisch" heißt, dass Passagiere in beliebigen Zahlen hin- und her fahren können. "Manuell" heißt, dass keine automatische Verteilung der Passagiere stattfindet. +STR_CONFIG_SETTING_DISTRIBUTION_MAIL :Verteilungsschema für Post: {STRING} +STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :"Symmetrisch" heißt, dass etwa die selbe Menge Post von einer Station A zu einer anderen Station B geschickt wird, wie von B nach A. "Asymmetrisch" heißt, dass Post in beliebigen Mengen hin- und her geschickt werden kann. "Manuell" heißt, dass keine automatische Verteilung der Post stattfindet. +STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED :Verteilungsschema für Wertsachen: {STRING} +STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :Neben den Wertsachen im gemäßigten Klima fallen hierunter auch Diamanten im subtropischen und Gold im subarktischen Klima. Bei Verwendung von NewGRFs evtl. auch weitere ähnliche Güter. "Symmetrisch" heißt, dass etwa dieselbe Menge an Waren von Station A zur Station B gelangen möchte, wie umgekehrt von B nach A. "Asymmetrisch" heißt, dass Waren in unterschiedlichen Mengen hin- und hergelangen möchten. "Manuell" heißt, dass keine automatische Verteilung dieser Waren stattfindet. Im gemäßigten Klima kann "symmetrisch" gewählt werden, da Banken sich gegenseitig Wertsachen zusenden. Ansonsten ist "asymmetrisch" oder "manuell" zu empfehlen, da Banken dann nur Gold bzw. Diamanten annehmen und nichts produzieren. +STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT :Verteilungsschema für sonstige Frachtarten: {STRING} +STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :"Symmetrisch" heißt, dass etwa die selbe Menge Waren von einer Station A zu einer anderen Station B geschickt wird, wie von B nach A. "Asymmetrisch" heißt, dass Waren in beliebigen Mengen hin- und her geschickt werden können. "Manuell" heißt, dass keine automatische Verteilung der Waren stattfindet. Hier sollte fast immer "asymmetrisch" oder "manuell" gewählt werden. +STR_CONFIG_SETTING_LINKGRAPH_ACCURACY :Genauigkeit für die Berechnung der Warenverteilung: {STRING} +STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT :Je höher dieser Wert ist, desto genauer und rechenintensiver ist die Berechnung der Warenverteilung. Wird ein zu hoher Wert gewählt, kann das Spiel bei der Berechnung "hängen". Wird ein zu niedriger Wert gewählt, kann es vorkommen, dass Waren nicht dorthin geschickt werden, wo man erwarten würde dass sie hin sollen. +STR_CONFIG_SETTING_DEMAND_DISTANCE :Einfluss der Entfernung auf die Transportnachfrage: {STRING} +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 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} +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_HELPTEXT :Immer wenn die Geschwindigkeit angezeigt wird, zeige sie in den gewählten Einheiten +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_IMPERIAL :Imperial (mph) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_METRIC :Metrisch (km/h) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_SI :SI (m/s) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER :Leistungseinheit von Fahrzeugen: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_HELPTEXT :Immer wenn die Leistung eins Fahrzeugs angezeigt wird, zeige es in den gewählten Einheiten +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_IMPERIAL :Imperial (hp) +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_METRIC :Metrisch (PS) +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_SI :SI (kW) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT :Gewichtseinheit: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_HELPTEXT :Immer wenn Gewichte angezeigt werden, zeige sie in den gewählten Einheiten +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_IMPERIAL :Imperial (short t/ton) +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_METRIC :Metrisch (t/Tonne) +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_SI :SI (kg) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME :Volumeneinheit: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_HELPTEXT :Immer wenn Volumina angezeigt werden, zeige sie in den gewählten Einheiten +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_IMPERIAL :Imperial (gal) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_METRIC :Metrisch (l) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_SI :SI (m³) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE :Einheit für Zugkraft: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_HELPTEXT :Immer wenn die Zugkraft angezeigt wird, zeige sie in den gewählten Einheiten an +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_IMPERIAL :Imperial (lbf) +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_METRIC :Metrisch (kp) +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_SI :SI (kN) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT :Höheneinheiten: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_HELPTEXT :Immer wenn Höhen angezeigt werden, zeige sie in den gewählten Einheiten an +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_LOCALISATION :{ORANGE}Lokalisierung +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_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 @@ -1603,6 +1701,8 @@ STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_ALGORITHM :{WHITE}... '{ST STR_CONFIG_ERROR_INVALID_BASE_GRAPHICS_NOT_FOUND :{WHITE}... ignoriere Basisgrafiken '{STRING}': nicht gefunden STR_CONFIG_ERROR_INVALID_BASE_SOUNDS_NOT_FOUND :{WHITE}... ignoriere Basissounds '{STRING}': nicht gefunden STR_CONFIG_ERROR_INVALID_BASE_MUSIC_NOT_FOUND :{WHITE}... ignoriere Musikset '{STRING}': nicht gefunden +STR_CONFIG_ERROR_OUT_OF_MEMORY :{WHITE}Zu wenig Arbeitsspeicher +STR_CONFIG_ERROR_SPRITECACHE_TOO_BIG :{WHITE}Reservieren von {BYTES} des Spritecaches fehlgeschlagen. Der Spritecache wurde auf {BYTES} verkleinert. Dies wird die Performance von OpenTTD verschlechtern. Um den Speicherbedarf zu verringern, kann man versuchen, 32bpp - Grafiken auszuschalten und/oder den Zoom-Level zu begrenzen # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} @@ -1638,7 +1738,7 @@ STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Spielein STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Zeige die Bestenliste STR_INTRO_TOOLTIP_ADVANCED_SETTINGS :{BLACK}Erweiterte Einstellungen anzeigen und/oder ändern STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}NewGRF-Einstellungen anzeigen und/oder ändern -STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Prüfe auf neue oder aktualisierte Erweiterungen zum Herunterladen +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 STR_INTRO_TOOLTIP_QUIT :{BLACK}OpenTTD beenden @@ -1724,6 +1824,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 @@ -1779,10 +1880,10 @@ STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}Krawatte # Network server list STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}Mehrspieler -STR_NETWORK_SERVER_LIST_CONNECTION :{BLACK}Verbindung: -STR_NETWORK_SERVER_LIST_CONNECTION_TOOLTIP :{BLACK}Zwischen Spiel im Internet und LAN wählen -STR_NETWORK_SERVER_LIST_LAN :LAN -STR_NETWORK_SERVER_LIST_INTERNET :Internet +STR_NETWORK_SERVER_LIST_ADVERTISED :{BLACK}Angekündigt +STR_NETWORK_SERVER_LIST_ADVERTISED_TOOLTIP :{BLACK}Zwischen öffentlich angekündigtem (Internet) und nicht angekündigtem (Local Area Network, LAN) Spiel wählen +STR_NETWORK_SERVER_LIST_ADVERTISED_NO :Nein +STR_NETWORK_SERVER_LIST_ADVERTISED_YES :Ja STR_NETWORK_SERVER_LIST_PLAYER_NAME :{BLACK}Spielername: STR_NETWORK_SERVER_LIST_ENTER_NAME_TOOLTIP :{BLACK}Dieser Name dient zur Identifizierung anderen Spielern gegenüber @@ -1841,16 +1942,16 @@ STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP :{BLACK}Der Name STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}Passwort setzen STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Ein Passwort verhindert, dass unbefugte Leute beitreten -STR_NETWORK_START_SERVER_LAN_INTERNET :LAN/Internet -STR_NETWORK_START_SERVER_INTERNET_ADVERTISE :Internet (ankündigen) +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 @@ -1963,6 +2064,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 @@ -2078,9 +2180,13 @@ STR_CONTENT_MATRIX_TOOLTIP :{BLACK}Auf eine STR_CONTENT_SELECT_ALL_CAPTION :{BLACK}Alles wählen STR_CONTENT_SELECT_ALL_CAPTION_TOOLTIP :{BLACK}Alle Erweiterungen zum Herunterladen auswählen STR_CONTENT_SELECT_UPDATES_CAPTION :{BLACK}Upgrades auswählen -STR_CONTENT_SELECT_UPDATES_CAPTION_TOOLTIP :{BLACK}Alle Erweiterungen, die einen bestehenden Inhalt verbessern, auswählen +STR_CONTENT_SELECT_UPDATES_CAPTION_TOOLTIP :{BLACK}Wähle bei allen vorhandenen Erweiterungen, von denen eine neuere Version verfügbar ist, diese zum Herunterladen aus STR_CONTENT_UNSELECT_ALL_CAPTION :{BLACK}Alles abwählen STR_CONTENT_UNSELECT_ALL_CAPTION_TOOLTIP :{BLACK}Keine Erweiterung zum Herunterladen auswählen +STR_CONTENT_SEARCH_EXTERNAL :{BLACK}Externe Webseiten durchsuchen +STR_CONTENT_SEARCH_EXTERNAL_TOOLTIP :{BLACK}Inhalte, die nicht auf OpenTTD's Server für Online-Erweiterungen vorhanden sind, auf Webseiten suchen, die nicht mit OpenTTD in Verbindung stehen. +STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER_CAPTION :{WHITE}OpenTTD wird hiermit verlassen! +STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER :{WHITE}Die Bedingungen für den Download von Erweiterungen von fremden Webseiten variieren.{}Bei Problemen mit der Installation der Erweiterung in OpenTTD bitte auf der externen Webseite nach Anleitungen suchen.{}Fortfahren? STR_CONTENT_FILTER_TITLE :{BLACK}Filter für Stichworte oder Namen: STR_CONTENT_OPEN_URL :{BLACK}Webseite anzeigen STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}Webseite für diesen Eintrag anzeigen @@ -2099,7 +2205,7 @@ STR_CONTENT_DETAIL_VERSION :{SILVER}Version STR_CONTENT_DETAIL_DESCRIPTION :{SILVER}Beschreibung: {WHITE}{STRING} STR_CONTENT_DETAIL_URL :{SILVER}URL: {WHITE}{STRING} STR_CONTENT_DETAIL_TYPE :{SILVER}Typ: {WHITE}{STRING} -STR_CONTENT_DETAIL_FILESIZE :{SILVER}Gesamtgröße der Erweiterungen: {WHITE}{BYTES} +STR_CONTENT_DETAIL_FILESIZE :{SILVER}Gesamtgröße der Erweiterung: {WHITE}{BYTES} STR_CONTENT_DETAIL_SELECTED_BECAUSE_OF :{SILVER}Ausgewählt wegen: {WHITE}{STRING} STR_CONTENT_DETAIL_DEPENDENCIES :{SILVER}Abhängigkeiten: {WHITE}{STRING} STR_CONTENT_DETAIL_TAGS :{SILVER}Stichworte: {WHITE}{STRING} @@ -2150,6 +2256,17 @@ STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}Transpar STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Transparenz für Ladestandsanzeige einstellen. Strg+Klick, um Umschalten zu verhindern bzw. wieder zu erlauben STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}Objekte unsichtbar statt transparent machen +# Linkgraph legend window +STR_LINKGRAPH_LEGEND_CAPTION :{BLACK}Legende der Frachtverbindungen +STR_LINKGRAPH_LEGEND_ALL :{BLACK}Alle +STR_LINKGRAPH_LEGEND_NONE :{BLACK}Keine +STR_LINKGRAPH_LEGEND_SELECT_COMPANIES :{BLACK}Anzuzeigende Firmen auswählen + +# Linkgraph legend window and linkgraph legend in smallmap +STR_LINKGRAPH_LEGEND_UNUSED :{TINY_FONT}{BLACK}unbenutzt +STR_LINKGRAPH_LEGEND_SATURATED :{TINY_FONT}{BLACK}ausgeglichen +STR_LINKGRAPH_LEGEND_OVERLOADED :{TINY_FONT}{BLACK}überlastet + # Base for station construction window(s) STR_STATION_BUILD_COVERAGE_AREA_TITLE :{BLACK}Einzugsgebiet anzeigen STR_STATION_BUILD_COVERAGE_OFF :{BLACK}aus @@ -2451,7 +2568,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 @@ -2548,7 +2666,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-2012 OpenTTD-Team +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2014 OpenTTD-Team # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Spiel speichern @@ -2567,6 +2685,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} @@ -2577,6 +2696,7 @@ STR_SAVELOAD_OSKTITLE :{BLACK}Namen f # World generation STR_MAPGEN_WORLD_GENERATION_CAPTION :{WHITE}Welterstellung STR_MAPGEN_MAPSIZE :{BLACK}Spielfeldgröße: +STR_MAPGEN_MAPSIZE_TOOLTIP :{BLACK}Die Größe des Spielfelds auswählen. Die tatsächlich verfügbare Anzahl Felder wird geringfügig kleiner sein STR_MAPGEN_BY :{BLACK}* STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Städteanzahl: STR_MAPGEN_DATE :{BLACK}Datum: @@ -2584,10 +2704,6 @@ STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Industri 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: @@ -2614,7 +2730,6 @@ 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_SNOW_LINE_QUERY_CAPT :{WHITE}Höhe der Schneegrenze ändern STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Startjahr ändern @@ -2669,7 +2784,9 @@ 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_FILE_TOOLTIP :{BLACK}Eine Liste der installierten NewGRF-Dateien. +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 STR_NEWGRF_SETTINGS_SHOW_PARAMETERS :{BLACK}Zeige Parameter @@ -2693,6 +2810,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 @@ -2763,6 +2890,7 @@ STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}Änderu STR_NEWGRF_DUPLICATE_GRFID :{WHITE}Datei kann nicht hinzugefügt werden: NewGRF-ID bereits vergeben STR_NEWGRF_COMPATIBLE_LOADED :{ORANGE}Passende Datei nicht gefunden (kompatible NewGRF geladen) +STR_NEWGRF_TOO_MANY_NEWGRFS :{WHITE}Datei kann nicht hinzugefügt werden: Maximale Anzahl von NewGRF-Dateien erreicht STR_NEWGRF_COMPATIBLE_LOAD_WARNING :{WHITE}Kompatible NewGRF(s) für fehlende Dateien geladen STR_NEWGRF_DISABLED_WARNING :{WHITE}Fehlende NewGRF-Dateien wurden deaktiviert @@ -2779,6 +2907,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 @@ -2793,6 +2922,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... @@ -2874,10 +3006,14 @@ STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT :{YELLOW}Für ei STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}Die Stadtverwaltung bestechen, um die eigene Bewertung zu verbessern. Dabei riskiert man allerdings eine harte Strafe, falls man ertappt wird.{}Kosten: {CURRENCY_LONG} # Goal window -STR_GOALS_CAPTION :{WHITE}Ziele +STR_GOALS_CAPTION :{WHITE}{COMPANY} Ziele +STR_GOALS_SPECTATOR_CAPTION :{WHITE}Allgemeine Spielziele STR_GOALS_GLOBAL_TITLE :{BLACK}Allgemeine Spielziele: STR_GOALS_TEXT :{ORANGE}{STRING} STR_GOALS_NONE :{ORANGE}- Keine - +STR_GOALS_SPECTATOR_NONE :{ORANGE}- n.v. - +STR_GOALS_PROGRESS :{ORANGE}{STRING} +STR_GOALS_PROGRESS_COMPLETE :{GREEN}{STRING} STR_GOALS_COMPANY_TITLE :{BLACK}Firmenspezifische Ziele: STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Klick auf Ziel zentriert Hauptansicht auf Industrie/Stadt/Feld. Strg+Klick öffnet eine darauf zentrierte Zusatzansicht @@ -2916,6 +3052,18 @@ STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}Bereits STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING} von {STRING} nach {STRING}{YELLOW} ({COMPANY}{YELLOW}, bis {DATE_SHORT}) STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Klick auf subventionierte Dienstleistung zentriert Hauptansicht auf die Industrie/Stadt. Strg+Klick öffnet neue Zusatzansicht zentriert auf die Industrie/Stadt +# Story book window +STR_STORY_BOOK_CAPTION :{WHITE}Chronik für {COMPANY} +STR_STORY_BOOK_SPECTATOR_CAPTION :{WHITE}Allgemeine Chronik +STR_STORY_BOOK_TITLE :{YELLOW}{STRING} +STR_STORY_BOOK_GENERIC_PAGE_ITEM :Seite {NUM} +STR_STORY_BOOK_SEL_PAGE_TOOLTIP :{BLACK}Springt zur gewünschten Seite, wenn diese im Auswahlmenü angeklickt wird +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 STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}Strg gedrückt halten, um mehrere Einträge auszuwählen @@ -2929,9 +3077,9 @@ 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} unterwegs von {STATION}) +STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} von {STATION}) +STR_STATION_VIEW_RESERVED :{YELLOW}({CARGO_SHORT} reserviert zum Beladen) STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Angenommen STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Zeige Liste der angenommenen Frachtarten @@ -2942,8 +3090,31 @@ STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPAN STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Bewertung STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Stationsbewertung anzeigen -STR_STATION_VIEW_CARGO_RATINGS_TITLE :{BLACK}Örtliche Bewertung der Dienstleistungen: -STR_STATION_VIEW_CARGO_RATING :{WHITE}{STRING}: {YELLOW}{STRING} ({COMMA}%) +STR_STATION_VIEW_SUPPLY_RATINGS_TITLE :{BLACK}Monatliche Lieferung und lokale Bewertung: +STR_STATION_VIEW_CARGO_SUPPLY_RATING :{WHITE}{STRING}: {YELLOW}{COMMA} / {STRING} ({COMMA}%) + +STR_STATION_VIEW_GROUP :{BLACK}Gruppieren nach +STR_STATION_VIEW_WAITING_STATION :Station: Wartend +STR_STATION_VIEW_WAITING_AMOUNT :Menge: Wartend +STR_STATION_VIEW_PLANNED_STATION :Station: Voraussichtlich +STR_STATION_VIEW_PLANNED_AMOUNT :Menge: Voraussichtlich +STR_STATION_VIEW_FROM :{YELLOW}{CARGO_SHORT} von {STATION} +STR_STATION_VIEW_VIA :{YELLOW}{CARGO_SHORT} via {STATION} +STR_STATION_VIEW_TO :{YELLOW}{CARGO_SHORT} nach {STATION} +STR_STATION_VIEW_FROM_ANY :{RED}{CARGO_SHORT} von unbekannter Haltestelle +STR_STATION_VIEW_TO_ANY :{RED}{CARGO_SHORT} zu beliebiger Haltestelle +STR_STATION_VIEW_VIA_ANY :{RED}{CARGO_SHORT} via beliebiger Haltestelle +STR_STATION_VIEW_FROM_HERE :{GREEN}{CARGO_SHORT} von hier +STR_STATION_VIEW_VIA_HERE :{GREEN}{CARGO_SHORT} hier anhaltend +STR_STATION_VIEW_TO_HERE :{GREEN}{CARGO_SHORT} nach hier +STR_STATION_VIEW_NONSTOP :{YELLOW}{CARGO_SHORT} direkt + +STR_STATION_VIEW_GROUP_S_V_D :Start-Via-Ziel +STR_STATION_VIEW_GROUP_S_D_V :Start-Ziel-Via +STR_STATION_VIEW_GROUP_V_S_D :Via-Start-Ziel +STR_STATION_VIEW_GROUP_V_D_S :Via-Ziel-Start +STR_STATION_VIEW_GROUP_D_S_V :Ziel-Start-Via +STR_STATION_VIEW_GROUP_D_V_S :Ziel-Via-Start ############ range for rating starts STR_CARGO_RATING_APPALLING :Furchtbar @@ -3031,13 +3202,13 @@ STR_COMPANY_VIEW_INFRASTRUCTURE_AIRPORT :{WHITE}{COMMA} STR_COMPANY_VIEW_INFRASTRUCTURE_NONE :{WHITE}Keine STR_COMPANY_VIEW_BUILD_HQ_BUTTON :{BLACK}Firmensitz bauen -STR_COMPANY_VIEW_BUILD_HQ_TOOLTIP :{BLACK}Firmensitz bauen +STR_COMPANY_VIEW_BUILD_HQ_TOOLTIP :{BLACK}Firmensitz an einer freien Stelle errichten STR_COMPANY_VIEW_VIEW_HQ_BUTTON :{BLACK}Firmensitz STR_COMPANY_VIEW_VIEW_HQ_TOOLTIP :{BLACK}Firmensitz anzeigen STR_COMPANY_VIEW_RELOCATE_HQ :{BLACK}Verlegen STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Errichte Firmensitz für 1% des Firmenwertes an anderer Stelle neu. Shift+Klick zeigt einen Kostenvoranschlag STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}Details -STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}Detaillierte Infrastrukturinformationen anzeigen +STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}Detaillierte Informationen zur Infrastruktur dieser Firma anzeigen STR_COMPANY_VIEW_NEW_FACE_BUTTON :{BLACK}Neues Gesicht STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}Neues Gesicht für Manager aussuchen @@ -3059,7 +3230,7 @@ STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :Name des Manage STR_BUY_COMPANY_MESSAGE :{WHITE}Wir suchen eine Transportfirma, die unsere Firma übernimmt.{}{}Besteht Interesse daran, {COMPANY} für {CURRENCY_LONG} zu übernehmen? # Company infrastructure window -STR_COMPANY_INFRASTRUCTURE_VIEW_CAPTION :{WHITE}Infrastruktur von{COMPANY} +STR_COMPANY_INFRASTRUCTURE_VIEW_CAPTION :{WHITE}Infrastruktur von {COMPANY} STR_COMPANY_INFRASTRUCTURE_VIEW_RAIL_SECT :{GOLD}Schienenfelder: STR_COMPANY_INFRASTRUCTURE_VIEW_SIGNALS :{WHITE}Signale STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD_SECT :{GOLD}Straßenfelder: @@ -3070,7 +3241,6 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS :{WHITE}Kanäle STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}Stationen: STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}Stationsfelder STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}Flughäfen -STR_COMPANY_INFRASTRUCTURE_VIEW_COST :{WHITE}{1:CURRENCY_LONG}/a ({0:COMMA}) STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL :{WHITE}{CURRENCY_LONG}/a # Industry directory @@ -3087,6 +3257,7 @@ STR_INDUSTRY_VIEW_PRODUCTION_LAST_MONTH_TITLE :{BLACK}Produkti STR_INDUSTRY_VIEW_TRANSPORTED :{YELLOW}{CARGO_LONG}{STRING}{BLACK} ({COMMA}% befördert) STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Hauptansicht zur Industrie scrollen. Strg+Klick öffnet neue Zusatzansicht zentriert auf die Industrie STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Produktionsrate: {YELLOW}{COMMA}% +STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}Diese Industrie wird in Kürze schließen! ############ range for requires starts STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Benötigt: {YELLOW}{STRING}{STRING} @@ -3155,6 +3326,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 @@ -3450,6 +3624,11 @@ STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Wartungs 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 +STR_SERVICE_INTERVAL_DROPDOWN_TOOLTIP :{BLACK}Art des Service-Intervalls ändern +STR_VEHICLE_DETAILS_DEFAULT :Standard +STR_VEHICLE_DETAILS_DAYS :Tage +STR_VEHICLE_DETAILS_PERCENT :Prozent + STR_QUERY_RENAME_TRAIN_CAPTION :{WHITE}Name des Zuges STR_QUERY_RENAME_ROAD_VEHICLE_CAPTION :{WHITE}Name des Fahrzeuges STR_QUERY_RENAME_SHIP_CAPTION :{WHITE}Schiffsname @@ -3538,8 +3717,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 @@ -3630,18 +3809,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 @@ -3667,9 +3846,13 @@ 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} @@ -3685,7 +3868,7 @@ STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}Dieser F STR_TIMETABLE_STATUS_START_AT :{BLACK}Dieser Fahrplan wird ab {STRING} in Kraft sein STR_TIMETABLE_STARTING_DATE :{BLACK}Anfangsdatum -STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Wähle ein Anfangsdatum für den Fahrplan +STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Wähle ein Anfangsdatum für diesen Fahrplan aus. Mit Strg+Klick wird das Anfangsdatum dieses Fahrplans festgelegt und bei allen anderen Fahrzeugen, die nach demselben Fahrplan unterwegs sind, wird ein zeitlich versetztes Anfangsdatum gesetzt, so dass die Abstände zwischen den einzelnen Fahrzeugen immer gleich sind. Dazu muss der Fahrplan erst komplett erfasst worden sein. STR_TIMETABLE_CHANGE_TIME :{BLACK}Zeit ändern STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Zeitrahmen für den markierten Auftrag ändern @@ -3752,7 +3935,7 @@ STR_AI_CONFIG_GAMELIST_TOOLTIP :{BLACK}Das Skri STR_AI_CONFIG_AILIST_TOOLTIP :{BLACK}Die KIs, die im nächsten Spiel geladen werden STR_AI_CONFIG_HUMAN_PLAYER :menschlicher Spieler STR_AI_CONFIG_RANDOM_AI :Zufällige KI -STR_AI_CONFIG_NONE :(keine) +STR_AI_CONFIG_NONE :- STR_AI_CONFIG_MOVE_UP :{BLACK}Nach oben bewegen STR_AI_CONFIG_MOVE_UP_TOOLTIP :{BLACK}Die ausgewählte KI in der Liste nach oben bewegen @@ -3792,13 +3975,15 @@ STR_AI_SETTINGS_CAPTION_GAMESCRIPT :Skript STR_AI_SETTINGS_CLOSE :{BLACK}Schließen STR_AI_SETTINGS_RESET :{BLACK}Zurücksetzen STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING} -STR_AI_SETTINGS_START_DELAY :Ungefährer Abstand in Tagen zwischen dem Starten dieser KI und dem der vorherigen : {ORANGE}{STRING} +STR_AI_SETTINGS_START_DELAY :Wartezeit in Tagen zwischen dem Starten dieser KI und dem der vorherigen : {ORANGE}{STRING} # Textfile window 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 @@ -3821,6 +4006,10 @@ STR_INCOME_FLOAT_INCOME_SMALL :{TINY_FONT}{GRE STR_INCOME_FLOAT_INCOME :{GREEN}Einnahmen: {CURRENCY_LONG} STR_FEEDER_TINY :{TINY_FONT}{YELLOW}Umladen: {CURRENCY_LONG} STR_FEEDER :{YELLOW}Umladen: {CURRENCY_LONG} +STR_FEEDER_INCOME_TINY :{TINY_FONT}{YELLOW}Transfer: {CURRENCY_LONG}{WHITE} / {GREEN}Einnahmen: {CURRENCY_LONG} +STR_FEEDER_INCOME :{YELLOW}Transfer: {CURRENCY_LONG}{WHITE} / {GREEN}Einnahmen: {CURRENCY_LONG} +STR_FEEDER_COST_TINY :{TINY_FONT}{YELLOW}Transfer: {CURRENCY_LONG}{WHITE} / {RED}Kosten: {CURRENCY_LONG} +STR_FEEDER_COST :{YELLOW}Transfer: {CURRENCY_LONG}{WHITE} / {RED}Kosten: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_COST :{WHITE}Geschätzte Kosten: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Geschätzte Einnahmen: {CURRENCY_LONG} @@ -4117,6 +4306,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... @@ -4172,6 +4362,11 @@ STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}Das Wart STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... Fahrzeug ist zerstört +STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL :{WHITE}Es sind keine Fahrzeuge verfügbar! +STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Bitte die NewGRF-Einstellungen ändern, damit Fahrzeuge früher verfügbar sind +STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}Noch keine Fahrzeuge verfügbar +STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Ein neues Spiel nach {DATE_SHORT} beginnen oder ein NewGRF-Fahrzeugset mit früher verfügbaren Fahrzeugen verwenden + # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Der Zug kann das Signal nicht gefahrlos passieren... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Die Zugbewegung kann nicht umgekehrt werden... @@ -4214,6 +4409,16 @@ STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}Kann Sch # Translatable comment for OpenTTD's desktop shortcut STR_DESKTOP_SHORTCUT_COMMENT :Ein auf der Idee von Transport Tycoon Deluxe basierendes Spiel +# Translatable descriptions in media/baseset/*.ob* files +STR_BASEGRAPHICS_DOS_DESCRIPTION :Original Transport Tycoon Deluxe DOS Basisgrafiken. +STR_BASEGRAPHICS_DOS_DE_DESCRIPTION :Original Transport Tycoon Deluxe DOS (Deutsch) Basisgrafiken. +STR_BASEGRAPHICS_WIN_DESCRIPTION :Original Transport Tycoon Deluxe Windows Basisgrafiken. +STR_BASESOUNDS_DOS_DESCRIPTION :Original Transport Tycoon Deluxe DOS Basissounds. +STR_BASESOUNDS_WIN_DESCRIPTION :Original Transport Tycoon Deluxe Windows Basissounds. +STR_BASESOUNDS_NONE_DESCRIPTION :Basissounds ohne Sound. +STR_BASEMUSIC_WIN_DESCRIPTION :Original Transport Tycoon Deluxe Windows Musikset. +STR_BASEMUSIC_NONE_DESCRIPTION :Ein Musikset ohne Musik. + ##id 0x2000 # Town building names STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1 :Hohes Geschäftshaus @@ -4336,7 +4541,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) @@ -4545,7 +4750,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 @@ -4660,8 +4865,9 @@ 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_SPACE_STRING :{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} @@ -4685,9 +4891,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 958047e1d..3fe3fa5b4 100644 --- a/src/lang/greek.txt +++ b/src/lang/greek.txt @@ -255,34 +255,43 @@ 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_METRIC :{COMMA} χλμ/ω +STR_UNITS_VELOCITY_SI :{COMMA} m/s STR_UNITS_POWER_IMPERIAL :{COMMA}hp STR_UNITS_POWER_METRIC :{COMMA}hp 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} τόνο{P ς ι} STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} τόνο{P ς ι} STR_UNITS_WEIGHT_LONG_SI :{COMMA} kg +STR_UNITS_VOLUME_SHORT_IMPERIAL :{COMMA}γαλ STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}λ STR_UNITS_VOLUME_SHORT_SI :{COMMA}m³ +STR_UNITS_VOLUME_LONG_IMPERIAL :{COMMA} γαλόν{P "ι" "ια"} STR_UNITS_VOLUME_LONG_METRIC :{COMMA} λίτρ{P ο α} 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} πόδια -STR_UNITS_HEIGHT_SI :{COMMA} μ +STR_UNITS_HEIGHT_METRIC :{COMMA} μ +STR_UNITS_HEIGHT_SI :{COMMA} m # 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}Επιλογή σειράς ταξινόμησης (καθοδικά/ανοδικά) STR_TOOLTIP_SORT_CRITERIA :{BLACK}Επιλογή κριτηρίου ταξινόμησης STR_TOOLTIP_FILTER_CRITERIA :{BLACK}Επιλέξτε κριτήρια φιλτραρίσματος @@ -294,12 +303,13 @@ 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 εναλλάσσεται κτίσιμο/εμφάνιση εκτίμησης κόστους # Query window STR_BUTTON_DEFAULT :{BLACK}Προεπιλογή @@ -318,7 +328,6 @@ STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}Περι # These are used in buttons -STR_SORT_BY_CAPTION_POPULATION :{BLACK}Πληθυσμός STR_SORT_BY_CAPTION_NAME :{BLACK}Όνομα STR_SORT_BY_CAPTION_DATE :{BLACK}Ημερομηνία # These are used in dropdowns @@ -339,18 +348,21 @@ STR_SORT_BY_LENGTH :Μήκος STR_SORT_BY_LIFE_TIME :Υπόλοιπη διάρκεια ζωής STR_SORT_BY_TIMETABLE_DELAY :Καθυστέρηση δρομολογίου STR_SORT_BY_FACILITY :Τύπος σταθμού -STR_SORT_BY_WAITING :Αξία φορτίου σε αναμονή +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 :Εκτίμηση # Tooltips for the main toolbar STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Παύση παιχνιδιού @@ -363,19 +375,20 @@ 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_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}Κατασκευή σιδηροτροχιάς -STR_TOOLBAR_TOOLTIP_BUILD_ROADS :{BLACK}Κατασκευή δρόμων +STR_TOOLBAR_TOOLTIP_BUILD_ROADS :{BLACK}Κατασκευάστε δρόμους STR_TOOLBAR_TOOLTIP_BUILD_SHIP_DOCKS :{BLACK}Κατασκευή λιμένων -STR_TOOLBAR_TOOLTIP_BUILD_AIRPORTS :{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}Εμφάνιση τελευταίου μηνύματος/αναφοράς νέων, επιλογές μηνυμάτων @@ -387,16 +400,16 @@ STR_SCENEDIT_TOOLBAR_TOOLTIP_SAVE_SCENARIO_LOAD_SCENARIO :{BLACK}Αποθ STR_SCENEDIT_TOOLBAR_OPENTTD :{YELLOW}OpenTTD STR_SCENEDIT_TOOLBAR_SCENARIO_EDITOR :{YELLOW}Πρόγραμμα Επεξεργασίας Σεναρίου STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_BACKWARD :{BLACK}Μετακίνηση ημ/νίας εκκίνησης 1 χρόνο πίσω -STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_FORWARD :{BLACK}Μετακίνηση ημ/νίας εκκίνησης 1 χρόνο μπροστά +STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_FORWARD :{BLACK}Μετακινήστε την ημερομηνία εκκίνησης 1 χρόνο μπροστά 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_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 :Αποθήκευση σεναρίου @@ -411,7 +424,7 @@ 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_SCRIPT_SETTINGS :Ρυθμίσεις ΑΙ και Δέσμης Ενεργειών STR_SETTINGS_MENU_NEWGRF_SETTINGS :Ρυθμίσεις NewGRF STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :Επιλογές διαφάνειας STR_SETTINGS_MENU_TOWN_NAMES_DISPLAYED :Εμφάνιση ονομάτων πόλεων @@ -433,19 +446,18 @@ STR_FILE_MENU_SEPARATOR : STR_FILE_MENU_EXIT :Έξοδος ############ range ends here -############ range for map menu starts +# map menu STR_MAP_MENU_MAP_OF_WORLD :Χάρτης του κόσμου STR_MAP_MENU_EXTRA_VIEW_PORT :Πρόσθετη εμφάνιση STR_MAP_MENU_SIGN_LIST :Λίστα πινακίδων -############ range for town menu starts, yet the town directory is shown in the map menu in the scenario editor + +############ range for town menu starts STR_TOWN_MENU_TOWN_DIRECTORY :Καταλογος πόλεων -############ end of the 'Display map' dropdown STR_TOWN_MENU_FOUND_TOWN :Ιδρύση πόλης -############ end of the 'Town' dropdown +############ range ends here ############ range for subsidies menu starts STR_SUBSIDIES_MENU_SUBSIDIES :Χρηματοδοτήσεις -STR_SUBSIDIES_MENU_GOAL :Τρέχοντες στόχοι ############ range ends here ############ range for graph menu starts @@ -460,6 +472,7 @@ STR_GRAPH_MENU_CARGO_PAYMENT_RATES :Ποσοστά ############ 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 @@ -471,13 +484,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 @@ -518,7 +531,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ος @@ -549,38 +562,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 @@ -700,7 +746,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}Κομμάτι STR_MUSIC_XTITLE :{TINY_FONT}{BLACK}Τίτλος STR_MUSIC_SHUFFLE :{TINY_FONT}{BLACK}Τυχαία αναπαραγωγή @@ -723,7 +769,7 @@ 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_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}Καθαρισμός @@ -742,10 +788,10 @@ STR_HIGHSCORE_PERFORMANCE_TITLE_CAPITALIST :Κεφαλαι STR_HIGHSCORE_PERFORMANCE_TITLE_MAGNATE :Μεγιστάνας STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL :Τυχοδιώκτης STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY :Μεγιστάνας του Αιώνα -STR_HIGHSCORE_NAME :{BIG_FONT}{PRESIDENT_NAME}, {COMPANY} -STR_HIGHSCORE_STATS :{BIG_FONT}'{STRING}' ({COMMA}) +STR_HIGHSCORE_NAME :{PRESIDENT_NAME}, {COMPANY} +STR_HIGHSCORE_STATS :{BIG_FONT}«{STRING}» ({COMMA}) STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{BLACK}{COMPANY} έφτασε στο επίπεδο «{STRING}» -STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{WHITE}{G "Ο" "Η" ""} {PRESIDENT_NAME} της εταιρίας {COMPANY} έφτασε στο επίπεδο «{STRING}»! +STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{WHITE}{G Ο Η ""} {PRESIDENT_NAME} της εταιρίας {COMPANY} έφτασε στο επίπεδο «{STRING}»! # Smallmap window STR_SMALLMAP_CAPTION :{WHITE}Χάρτης - {STRING} @@ -756,14 +802,14 @@ STR_SMALLMAP_TYPE_INDUSTRIES :Βιομηχα 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_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_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_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_LEGENDA_ROADS :{TINY_FONT}{BLACK}Δρόμοι STR_SMALLMAP_LEGENDA_RAILROADS :{TINY_FONT}{BLACK}Σιδηρόδρομοι @@ -797,6 +843,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}Απενεργοποίηση όλων @@ -826,7 +873,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}! @@ -854,11 +901,11 @@ STR_NEWS_COMPANY_BANKRUPT_DESCRIPTION :{BIG_FONT}{BLAC STR_NEWS_COMPANY_LAUNCH_TITLE :{BIG_FONT}{BLACK}Ίδρυση νέας εταιρίας μεταφορών! STR_NEWS_COMPANY_LAUNCH_DESCRIPTION :{BIG_FONT}{BLACK}Η {STRING} ξεκινά τις κατασκευές κοντά στην πόλη {TOWN}! STR_NEWS_MERGER_TAKEOVER_TITLE :{BIG_FONT}{BLACK}Η {STRING} εξαγοράστηκε από την {STRING}! -STR_PRESIDENT_NAME_MANAGER :{BLACK}{PRESIDENT_NAME}{}({G 0 "Διευθυντής" "Διευθύντρια" ""}) +STR_PRESIDENT_NAME_MANAGER :{BLACK}{PRESIDENT_NAME}{}({G 0 Διευθυντής Διευθύντρια ""}) STR_NEWS_NEW_TOWN :{BLACK}{BIG_FONT}Η {STRING} χορήγεισε την κατασκεύη της νέας πόλης {TOWN}! -STR_NEWS_INDUSTRY_CONSTRUCTION :{BIG_FONT}{BLACK}Νέ{G "ος" "α" "ο"} {STRING} υπό κατασκευή κοντά στην πόλη {TOWN}! +STR_NEWS_INDUSTRY_CONSTRUCTION :{BIG_FONT}{BLACK}Νέ{G ος α ο} {STRING} υπό κατασκευή κοντά στην πόλη {TOWN}! STR_NEWS_INDUSTRY_PLANTED :{BIG_FONT}{BLACK}Νέο {STRING} φυτεύεται κοντά στην πόλη {TOWN}! STR_NEWS_INDUSTRY_CLOSURE_GENERAL :{BIG_FONT}{BLACK}{G 0:2 Ο Η Το} {STRING} ανακοίνωσε άμεσο κλείσιμο! @@ -883,13 +930,11 @@ 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_VEHICLE_IS_GETTING_OLD :{WHITE}Το {VEHICLE} αρχίζει να παλιώνει STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}Το {VEHICLE} ξεπερνά το όριο ηλικίας @@ -968,21 +1013,18 @@ 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 -STR_GAME_OPTIONS_MEASURING_UNITS_FRAME :{BLACK}Μονάδες μέτρησης -STR_GAME_OPTIONS_MEASURING_UNITS_DROPDOWN_TOOLTIP :{BLACK}Επιλογή μονάδων μέτρησης ############ start of measuring units region -STR_GAME_OPTIONS_MEASURING_UNITS_IMPERIAL :Αγγλοσαξωνικό -STR_GAME_OPTIONS_MEASURING_UNITS_METRIC :Μετρικό -STR_GAME_OPTIONS_MEASURING_UNITS_SI :SI ############ 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}Επιλογή στυλ ονομάτων πόλεων @@ -1014,25 +1056,24 @@ 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}Επιλογή της γλώσσας του παιχνιδιού -STR_GAME_OPTIONS_FULLSCREEN :{BLACK}Σε όλη την οθόνη +STR_GAME_OPTIONS_FULLSCREEN :{BLACK}Πλήρης οθόνη STR_GAME_OPTIONS_FULLSCREEN_TOOLTIP :{BLACK}Τσεκάρεται αυτό το κουτάκι ωστε να παίξετε το OpenTTD σε όλη την οθόνη 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}Επιλογή του βασικού σετ γραφικών που θα χρησιμοποιηθεί STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} αρχεί{P ο α} που λείπ{P ει ουν} ή είναι κατεστραμμέν{P ο α} @@ -1054,7 +1095,7 @@ STR_ERROR_FULLSCREEN_FAILED :{WHITE}Θέση STR_CURRENCY_WINDOW :{WHITE}Προσαρμοσμένο νόμισμα STR_CURRENCY_EXCHANGE_RATE :{LTBLUE}Ισοτιμία: {ORANGE}{CURRENCY_LONG} = £ {COMMA} STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Μείωση του ποσού της ισοτιμίας σας για μία λίρα (£) -STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Αύξηση του ποσού της ισοτιμίας σας για μία λίρα (£) +STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Αυξήστε το ποσό της ισοτιμίας σας για μία Λίρα (£) STR_CURRENCY_SET_EXCHANGE_RATE_TOOLTIP :{BLACK}Ρυθμίστε τη συναλλαγματική ισοτιμία του νομίσματος για μια λίρα (£) STR_CURRENCY_SEPARATOR :{LTBLUE}Διαχωριστικό: {ORANGE}{STRING} @@ -1130,7 +1171,7 @@ STR_CITY_APPROVAL_PERMISSIVE :Ανεκτικ STR_CITY_APPROVAL_TOLERANT :Υπομονετική STR_CITY_APPROVAL_HOSTILE :Εχθρική -STR_WARNING_NO_SUITABLE_AI :{WHITE}Δεν είναι διαθέσιμο κανένα κατάλληλο Al...{}Μπορείτε να κατεβάσετε AIs μέσω του συστήματος «Online περιεχομένου» +STR_WARNING_NO_SUITABLE_AI :{WHITE}Δεν είναι διαθέσιμο κανένα κατάλληλο Al...{}Μπορείτε να κατεβάσετε AIs μέσω του συστήματος «Διαδικτυακού Περιεχομένου» # Advanced settings window STR_CONFIG_SETTING_CAPTION :{WHITE}Προηγμένες Ρυθμίσεις @@ -1146,7 +1187,8 @@ 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 :Προχωρημένες ρυθμίσεις @@ -1154,6 +1196,17 @@ 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_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 :Ενεργή @@ -1172,11 +1225,26 @@ 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_INTEREST_RATE :Επιτόκιο: {STRING} +STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Επιτόκιο δανείων· επίσης ελέγχεται ο πληθωρισμός αν είναι ενεργοποιημένος STR_CONFIG_SETTING_RUNNING_COSTS :Λειτουργικά έξοδα: {STRING} +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_SUBSIDY_MULTIPLIER :Πολλαπλασιαστής επιδότησης: {STRING} +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_TRAIN_REVERSING :Απαγορεύεται η αντιστροφή τρένων στους σταθμούς: {STRING} +STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :Όταν είναι ενεργοποιημένο, τα τρένα δεν θα κάνουν όπισθεν σε μη-τελικούς σταθμούς, ακόμα και εάν υπάρχει κοντινότερη διαδρομή προς τον επόμενή τους προορισμό όταν κάνουν όπισθεν +STR_CONFIG_SETTING_DISASTERS :Καταστροφές: {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_AUTOSLOPE_HELPTEXT :Επιτρέπεται η διαμόρφωση του εδάφους κάτω από κτίρια και σιδηροτροχιές χωρίς αυτά να αφαιρούνται STR_CONFIG_SETTING_CATCHMENT :Επιτρέπονται πιο ρεαλιστικά ταξινομημένες περιοχές συλλογής : {STRING} @@ -1193,22 +1261,16 @@ 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 :Στροφές 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} @@ -1236,8 +1298,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 :Απενεργοποιημένη @@ -1268,10 +1328,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 :Όταν είναι ενεργοποιημένη, οι υποδομές προκαλούν έξοδα συντήρησης. Το κόστος μεγαλώνει δυσανάλογα με το μέγεθος του δικτύου, επηρεάζοντας έτσι τις μεγάλες εταιρείες περισσότερο από τις μικρότερες @@ -1312,11 +1368,11 @@ STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Πάχος γρ STR_CONFIG_SETTING_LAND_GENERATOR :Γεννήτρια γης: {STRING} STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :Αυθεντική -STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :ΓέννησηΓης +STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis 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_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 :Ανώμαλη @@ -1329,8 +1385,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}Ένα ή περισσότερα τετραγωνίδια σε μια από τις άκρες δεν είναι νερό @@ -1350,7 +1404,7 @@ STR_CONFIG_SETTING_REVERSE_SCROLLING_HELPTEXT :Συμπερι 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_MEASURE_TOOLTIP_HELPTEXT :Εμφάνιση αποστάσεων τετραγωνίδιων και υψομετρικών διαφορών όταν γίνονται λειτουργίες κατασκευών με σύρσιμο του ποντικιού STR_CONFIG_SETTING_LIVERIES :Εμφάνιση χρωμάτων των εταιριών: {STRING} STR_CONFIG_SETTING_LIVERIES_HELPTEXT :Ελέγξτε τη χρήση του χρωματικού μοτίβου των τύπων των οχημάτων για τα οχήματα (σε αντίθεση με τα εταιρικά) STR_CONFIG_SETTING_LIVERIES_NONE :Κανένας @@ -1365,6 +1419,11 @@ STR_CONFIG_SETTING_SCROLLWHEEL_SCROLL :Μετακίν STR_CONFIG_SETTING_SCROLLWHEEL_OFF :Απενεργοποιημένος STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER :Ταχύτητα ροδέλας μετακίνησης χάρτη: {STRING} STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER_HELPTEXT :Έλεγχος της ευαισθησίας του τροχού του ποντικιού κατά την κύλιση +STR_CONFIG_SETTING_OSK_ACTIVATION :Πληκτρολόγιο στην οθόνη: {STRING} +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 :Επιλέξτε τον τρόπο μίμησης των πατημάτων του δεξιού κουμπιού του ποντικιού @@ -1375,17 +1434,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 Δεκ 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} @@ -1416,6 +1471,19 @@ STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Διατήρη STR_CONFIG_SETTING_EXPENSES_LAYOUT :Ομαδοποίηση εξόδων στο παράθυρο οικονομικών της εταιρίας: {STRING} STR_CONFIG_SETTING_EXPENSES_LAYOUT_HELPTEXT :Ορίστε τη μορφή για το παράθυρο των εξόδων της εταιρείας +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_CONFIRM :Οικοδομή: {STRING} +STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT :Παίζει ηχητικό εφέ σε επιτυχής οικοδομές ή άλλες δράσεις +STR_CONFIG_SETTING_SOUND_CLICK_HELPTEXT :Παίζει ήχο όταν γίνεται κλικ σε κουμπιά +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_DISABLE_UNSUITABLE_BUILDING :Απενεργοποίηση των υποδομών για τα οχήματα που δεν είναι διαθέσιμα: {STRING} STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING_HELPTEXT :Όταν είναι ενεργοποιημένο, οι υποδομές είναι διαθέσιμες μόνο όταν υπάρχουν διαθέσιμα οχήματα, αποτρέποντας σπατάλη χρόνου και χρημάτων σε μη χρησιμοποιήσιμες υποδομές @@ -1437,10 +1505,15 @@ STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT_HELPTEXT :Ενεργοπ STR_CONFIG_SETTING_AI_BUILDS_SHIPS :Απενεργοποίηση πλοίων υπολογιστή: {STRING} STR_CONFIG_SETTING_AI_BUILDS_SHIPS_HELPTEXT :Ενεργοποιώντας αυτήν τη ρύθμιση κάνει αδύνατη την κατασκευή πλοίων από παίκτη του υπολογιστή +STR_CONFIG_SETTING_AI_PROFILE :Προκαθορισμένο προφίλ ρυθμίσεων: {STRING} +STR_CONFIG_SETTING_AI_PROFILE_HELPTEXT :Επιλέξτε το προφίλ ρυθμίσεων για χρήση με τυχαία ΑΙ ή για τις αρχικές τιμές όταν προστίθεται νέο AI ή δέσμη ενεργειών +STR_CONFIG_SETTING_AI_PROFILE_EASY :Εύκολο +STR_CONFIG_SETTING_AI_PROFILE_MEDIUM :Μεσαίο +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} @@ -1455,7 +1528,7 @@ STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Προκαθο 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 :Απενεργοποίηση επισκευών όταν οι καταρρεύσεις είναι απενεργοποιημένες: {STRING} STR_CONFIG_SETTING_NOSERVICE_HELPTEXT :Όταν είναι ενεργοποιημένη, τα οχήματα δεν συντηρούνται όταν δεν είναι δυνατό να χαλάσουν STR_CONFIG_SETTING_WAGONSPEEDLIMITS :Ενεργοποίηση ορίων ταχύτητας βαγονιών: {STRING} STR_CONFIG_SETTING_WAGONSPEEDLIMITS_HELPTEXT :Όταν είναι ενεργοποιημένο, χρησιμοποιούνται και τα όρια ταχύτητας των βαγονιών όταν αποφασίζεται η μέγιστη ταχύτητα ενός τραίνου @@ -1463,9 +1536,13 @@ STR_CONFIG_SETTING_DISABLE_ELRAILS :Απενεργ STR_CONFIG_SETTING_DISABLE_ELRAILS_HELPTEXT :Ενεργοποιώντας αυτήν την ρύθμιση απενεργοποιείται η ανάγκη ηλεκτροδότησης των σιδηροτροχιών για να μπορέσουν σε αυτές να λειτουργήσουν οι ηλεκτρικές μηχανές 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 :Παρουσίασε τα νέα όταν το πρώτο όχημα φτάνει σε νέο σταθμό ενός ανταγωνιστή STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS :Ατυχήματα / καταστροφές: {STRING} +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_CLOSE :Κλείσιμο βιομηχανιών: {STRING} STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES :Οικονομικές αλλαγές: {STRING} @@ -1476,6 +1553,7 @@ STR_CONFIG_SETTING_NEWS_ADVICE :Συμβουλ STR_CONFIG_SETTING_NEWS_NEW_VEHICLES :Νέα οχήματα: {STRING} STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE :Αλλαγές στην αποδοχή φορτίου: {STRING} STR_CONFIG_SETTING_NEWS_SUBSIDIES :Επιχορηγήσεις: {STRING} +STR_CONFIG_SETTING_NEWS_SUBSIDIES_HELPTEXT :Πρόβαλλε εφημερίδα σχετικά με συμβάντα που σχετίζονται με επιδοτήσεις STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION :Γενικές πληροφορίες: {STRING} STR_CONFIG_SETTING_NEWS_MESSAGES_OFF :Απενεργοποιημένα @@ -1495,32 +1573,32 @@ 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 και σύρετε. Όταν είναι απενεργοποιημένο, τα σήματα τοποθετούνται γύρω από σήραγγες και γέφυρες για να αποφεύγονται μεγάλα τμήματα χωρίς σήματα. Όταν είναι ενεργοποιημένο, τα σήματα τοποθετούνται κάθε ν τετραγωνίδια, κάνοντας την ευθυγράμμιση των σημάτων σε παράλληλες γραμμές ευκολότερη -STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :Αυτόματο χτίσιμο σηματοφόρων πριν από το: {STRING} +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 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 :Οι πόλεις επιτρέπουν το κτίσιμο ισόπεδων διασταυρώσεων: {STRING} STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS_HELPTEXT :Ενεργοποιώντας αυτήν τη ρύθμιση επιτρέπει στις πόλεις να κατασκευάζουν επίπεδες διαβάσεις STR_CONFIG_SETTING_NOISE_LEVEL :Επιτρέπεται η πόλη να ελέγχει το επίπεδο θορύβου των αεροδρομίων: {STRING} STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :Με αυτήν τη ρύθμιση απενεργοποιημένη, γίνεται να υπάρχουν δύο αεροδρόμια σε κάθε πόλη. Με αυτήν τη ρύθμιση ενεργοποιημένη, ο αριθμός των αεροδρομίων σε μια πόλη περιορίζεται από την αποδοχή του θορύβου από την πόλη, η οποία εξαρτάται από τον πληθυσμό, το μέγεθος του αεροδρομίου και από την απόστασή του από την πόλη @@ -1571,26 +1649,40 @@ 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_LOCALISATION_UNITS_VELOCITY :Μονάδες μέτρησης ταχύτητας: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_SI :SI (m/s) + +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_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_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 @@ -1624,6 +1716,7 @@ STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_ALGORITHM :{WHITE}... ο 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} @@ -1639,11 +1732,11 @@ 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 και Δέσμης Ενεργειών Παιχνιδιού +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}Έναρξη νέου παιχνιδιού, χρησιμοποιώντας ένα προσαρμοσμένο σενάριο @@ -1721,14 +1814,14 @@ STR_LIVERY_DEFAULT :Πρότυπο STR_LIVERY_STEAM :Ατμοκίνητη Μηχανή STR_LIVERY_DIESEL :Πετρελαιοκίνητη Μηχανή STR_LIVERY_ELECTRIC :Ηλεκτροκίνητη Μηχανή -STR_LIVERY_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 :Λεωφορείο @@ -1745,6 +1838,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}Επιλογή αρσενικών προσώπων @@ -1800,10 +1894,8 @@ STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}Αλλα # Network server list STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}Παιχνίδι πολλών παικτών -STR_NETWORK_SERVER_LIST_CONNECTION :{BLACK}Σύνδεση: -STR_NETWORK_SERVER_LIST_CONNECTION_TOOLTIP :{BLACK}Επιλέξτε μεταξύ διαδικτυακού παιχνιδιού ή τοπικού (LAN) παιχνιδιού -STR_NETWORK_SERVER_LIST_LAN :LAN -STR_NETWORK_SERVER_LIST_INTERNET :Διαδίκτυο +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}Αυτό είναι το όνομα με το οποίο θα σας αναγνωρίζουν οι άλλοι παίκτες @@ -1844,7 +1936,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}Προσθέτει ένα διακομιστή στη λίστα ο οποίος θα ελέγχεται κάθε φορά για ενεργά παιχνίδια. @@ -1862,8 +1954,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_LAN_INTERNET :LAN / Διαδίκτυο -STR_NETWORK_START_SERVER_INTERNET_ADVERTISE :Διαδίκτυο (αναγγελία) +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}Επιλέξτε τον μέγιστο αριθμό συμμετεχόντων. Δεν είναι ανάγκη να γεμίσουν όλες οι θέσεις @@ -1984,12 +2076,13 @@ 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}Να μην αποθηκευτεί ο κωδικός STR_COMPANY_PASSWORD_OK :{BLACK}Δώστε στην εταιρεία νέο κωδικό STR_COMPANY_PASSWORD_CAPTION :{WHITE}Κωδικός εταιρείας -STR_COMPANY_PASSWORD_MAKE_DEFAULT :{BLACK}Προεπιλεγμένος κωδικός εταιρείας +STR_COMPANY_PASSWORD_MAKE_DEFAULT :{BLACK}Προκαθορισμένος κωδικός εταιρείας STR_COMPANY_PASSWORD_MAKE_DEFAULT_TOOLTIP :{BLACK}Χρήση αυτού του κωδικού ως προεπιλογή για τις νέες εταιρείες # Network company info join/password @@ -2029,7 +2122,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}Η χρήση cheats δεν επιτρέπεται σε αυτόν τον διακομιστή STR_NETWORK_ERROR_TOO_MANY_COMMANDS :{WHITE}Αποστείλατε πάρα πολλές εντολές στον διακομιστή STR_NETWORK_ERROR_TIMEOUT_PASSWORD :{WHITE}Χρειαστήκατε πολύ χρόνο για να συμπληρώσετε τον κωδικό STR_NETWORK_ERROR_TIMEOUT_COMPUTER :{WHITE}Ο υπολογιστής σας είναι πολύ αργός για να διατηρήσει συγχρόνιση με τον διακομιστή @@ -2049,13 +2142,13 @@ 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_KICKED :εκδιωχθήκατε από το διακομιστή -STR_NETWORK_ERROR_CLIENT_CHEATER :προσπαθησε να χρησιμοποιησει cheat +STR_NETWORK_ERROR_CLIENT_KICKED :εκδιωχθήκατε από τον διακομιστή +STR_NETWORK_ERROR_CLIENT_CHEATER :προσπάθησε να χρησιμοποιησει cheat 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_COMPUTER :γενική λήξη χρονικού ορίου +STR_NETWORK_ERROR_CLIENT_TIMEOUT_MAP :η λήψη του χάρτη καθυστέρησε υπερβολικά STR_NETWORK_ERROR_CLIENT_TIMEOUT_JOIN :η επεξεργασία του χάρτη καθυστέρησε υπερβολικά ############ End of leave-in-this-order @@ -2084,7 +2177,7 @@ STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} σ STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} ξεκίνησε μια νέα εταιρία (#{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} αποχώρησε από το παιχνίδι ({2:STRING}) STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} άλλαξαν το όνομά τους σε {STRING} -STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} έδωσε στην εταιρία σας {2:CURRENCY_LONG} +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}Ο διακομιστής έκλεισε την συνεδρία STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}Ο διακομιστής επανεκκινεί...{}Παρακαλώ περιμένετε... @@ -2099,33 +2192,37 @@ 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_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 σε ιστοσελίδες που δεν είναι συνδεδεμένες με το 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}Επισκεφθείτε την ιστοσελίδα αυτού του περιεχομένου -STR_CONTENT_DOWNLOAD_CAPTION :{BLACK}Κατέβασμα +STR_CONTENT_DOWNLOAD_CAPTION :{BLACK}Λήψη STR_CONTENT_DOWNLOAD_CAPTION_TOOLTIP :{BLACK}Έναρξη κατεβάσματος του επιλεγμένου περιεχόμενου -STR_CONTENT_TOTAL_DOWNLOAD_SIZE :{SILVER}Συνολικό μέγεθος κατεβάσματος: {WHITE}{BYTES} +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_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_SUBTITLE_DOES_NOT_EXIST :{SILVER}Αυτό το περιεχόμενο είναι άγνωστο και δεν γίνεται να κατέβει από το OpenTTD STR_CONTENT_DETAIL_UPDATE :{SILVER}Αυτό είναι αντικατάσταση ενός υπάρχοντος {STRING} STR_CONTENT_DETAIL_NAME :{SILVER}Όνομα: {WHITE}{STRING} STR_CONTENT_DETAIL_VERSION :{SILVER}Έκδοση: {WHITE}{STRING} STR_CONTENT_DETAIL_DESCRIPTION :{SILVER}Περιγραφή: {WHITE}{STRING} 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_FILESIZE :{SILVER}Μέγεθος λήψης: {WHITE}{BYTES} +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_SUB :{WHITE}... το κατέβασμα περιεχομένου δεν είναι δυνατό! +STR_CONTENT_DETAIL_TAGS :{SILVER}Ετικέτες: {WHITE}{STRING} +STR_CONTENT_NO_ZLIB :{WHITE}Το OpenTTD είναι κατασκευασμένο χωρίς υποστήριξη «zlib»... +STR_CONTENT_NO_ZLIB_SUB :{WHITE}... η λήψη περιεχομένου δεν είναι δυνατή! # Order of these is important! STR_CONTENT_TYPE_BASE_GRAPHICS :Βασικά γραφικά @@ -2140,73 +2237,79 @@ STR_CONTENT_TYPE_GAME_SCRIPT :Δέσμη εν STR_CONTENT_TYPE_GS_LIBRARY :Βιβλιοθήκη GS # Content downloading progress window -STR_CONTENT_DOWNLOAD_TITLE :{WHITE}Κατέβασμα περιεχόμενου... +STR_CONTENT_DOWNLOAD_TITLE :{WHITE}Λήψη περιεχόμενου... STR_CONTENT_DOWNLOAD_INITIALISE :{WHITE}Ζητούνται τα αρχεία... -STR_CONTENT_DOWNLOAD_FILE :{WHITE}Τρέχων κατέβασμα {STRING} ({NUM} από {NUM}) -STR_CONTENT_DOWNLOAD_COMPLETE :{WHITE}Το κατέβασμα ολοκληρώθηκε +STR_CONTENT_DOWNLOAD_FILE :{WHITE}Τώρα κατεβαίνει το {STRING} ({NUM} από {NUM}) +STR_CONTENT_DOWNLOAD_COMPLETE :{WHITE}Η λήψη ολοκληρώθηκε STR_CONTENT_DOWNLOAD_PROGRESS_SIZE :{WHITE}{BYTES} από {BYTES} έχουν κατέβει ({NUM} %) # Content downloading error messages -STR_CONTENT_ERROR_COULD_NOT_CONNECT :{WHITE}Δεν μπόρει να γίνει η σύνδεση με τον διακομιστή περιεχομένου... +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_EXTRACT :{WHITE}Δεν μπορεί να γίνει η αποσυμπίεση του κατεβασμένου αρχείου +STR_CONTENT_ERROR_COULD_NOT_EXTRACT :{WHITE}Δεν μπορούσε να γίνει η αποσυμπίεση του κατεβασμένου αρχείου STR_MISSING_GRAPHICS_SET_CAPTION :{WHITE}Λείπουν γραφικά -STR_MISSING_GRAPHICS_SET_MESSAGE :{BLACK}Το OpenTTD απαιτεί γραφικά για να λειτουργήσει αλλά κανένα δεν είναι διαθέσιμο. Θέλετε να επιτρέψετε στο OpenTTD να μεταφορτώσει και να εγκαταστήσει αυτά τα γραφικά; -STR_MISSING_GRAPHICS_YES_DOWNLOAD :{BLACK}Ναι, μεταφόρτωσε τα γραφικά +STR_MISSING_GRAPHICS_SET_MESSAGE :{BLACK}Το OpenTTD απαιτεί γραφικά για να λειτουργήσει αλλά κανένα πακέτο δεν είναι διαθέσιμο. Θέλετε να επιτρέψετε στο OpenTTD να κατεβάσει και να εγκαταστήσει γραφικά; +STR_MISSING_GRAPHICS_YES_DOWNLOAD :{BLACK}Ναι, κατέβασε τα γραφικά STR_MISSING_GRAPHICS_NO_QUIT :{BLACK}Όχι, έξοδος από το OpenTTD # Transparency settings window -STR_TRANSPARENCY_CAPTION :{WHITE}Ρυθμίσεις διαφάνειας -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}Επιλέξτε τα αντικείμενα να είναι αόρατα αντίς διάφανα +STR_TRANSPARENCY_CAPTION :{WHITE}Ρυθμίσεις Διαφάνειας +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_ALL :{BLACK}Όλες +STR_LINKGRAPH_LEGEND_NONE :{BLACK}Καμία + +# Linkgraph legend window and linkgraph legend in smallmap # Base for station construction window(s) STR_STATION_BUILD_COVERAGE_AREA_TITLE :{BLACK}Κάλυψη περιοχής 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_COVERAGE_AREA_OFF_TOOLTIP :{BLACK}Μη εμφάνιση κάλυψης του προτεινόμενου τόπου +STR_STATION_BUILD_COVERAGE_AREA_ON_TOOLTIP :{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}Συνενώση σταθμού +STR_JOIN_STATION_CAPTION :{WHITE}Συνένωση σταθμού STR_JOIN_STATION_CREATE_SPLITTED_STATION :{YELLOW}Χτίστε ένα ξεχωριστό σταθμό STR_JOIN_WAYPOINT_CAPTION :{WHITE}Συνένωση σημείου καθοδήγησης -STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Χτήσιμο ενός ξεχωριστού σημείου καθοδήγησης +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_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_ELRAIL_CONSTRUCTION_CAPTION :Κατασκευή Ηλεκτροδοτημένου Σιδηρόδρομου +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_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 :Ηλεκτροδοτημένη σιδηροτροχιά -STR_RAIL_NAME_MONORAIL :Μονοτροχιά +STR_RAIL_NAME_MONORAIL :Μονοτρόχιος STR_RAIL_NAME_MAGLEV :Maglev # Rail depot construction window @@ -2223,32 +2326,32 @@ 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 :{BLACK}Μήκος πλατφόρμας STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP :{BLACK}Επιλέξτε το μήκος του σιδηροδρομικού σταθμού -STR_STATION_BUILD_DRAG_DROP :{BLACK}Μεταφορά και Απόθεση -STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}Φτιάξε ένα σταθμό χρησιμοποιόντας έλξη & πτώση +STR_STATION_BUILD_DRAG_DROP :{BLACK}Σύρετε και Ελευθερώστε +STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}Φτιάξε ένα σταθμό χρησιμοποιώντας σύρσιμο και ελευθέρωση -STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}Επιλογή για εμφάνιση μιας κλάσης σταθμών -STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}Επέλεξε τον τύπο του σταθμού προς χτίσιμο +STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}Επιλογή τύπου σταθμών για εμφάνιση +STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}Επιλέξτε τον τύπο του σταθμού προς κτίσιμο STR_STATION_CLASS_DFLT :Εξ ορισμού σταθμός STR_STATION_CLASS_WAYP :Σημείο καθοδηγήσης # Signal window -STR_BUILD_SIGNAL_CAPTION :{WHITE}Επιλογή σηματοδότη -STR_BUILD_SIGNAL_SEMAPHORE_NORM_TOOLTIP :{BLACK}Σηματοδότες τμήματος (σηματοφόρος){}Αυτός είναι ο πιο βασικός τύπος σηματοδότη, επιτρέποντας μόνο ένα τρένο να βρίσκεται σε κάθε τμήμα κάθε φορά +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+κλικ εναλλάσεται με την υπάρχουσα παραλλαγή, με Shift+κλικ εμφανίζεται το εκιμώμενο κόστος μετατροπής +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}Αύξηση πυκνότητας σηματοδοτών με σύρσιμο @@ -2260,40 +2363,40 @@ STR_SELECT_BRIDGE_SELECTION_TOOLTIP :{BLACK}Επιλ STR_SELECT_BRIDGE_INFO :{GOLD}{STRING},{} {VELOCITY} {WHITE}{CURRENCY_LONG} STR_SELECT_BRIDGE_SCENEDIT_INFO :{GOLD}{STRING},{} {VELOCITY} STR_BRIDGE_NAME_SUSPENSION_STEEL :Ατσάλινη, με Αναρτήσεις -STR_BRIDGE_NAME_GIRDER_STEEL :Ατσάλινη, Με Δοκούς +STR_BRIDGE_NAME_GIRDER_STEEL :Ατσάλινη, με Δοκούς STR_BRIDGE_NAME_CANTILEVER_STEEL :Ατσάλινη, Κρεμαστή -STR_BRIDGE_NAME_SUSPENSION_CONCRETE :Τσιμεντένια, Με αναρτήσεις +STR_BRIDGE_NAME_SUSPENSION_CONCRETE :Τσιμεντένια, με Αναρτήσεις STR_BRIDGE_NAME_WOODEN :Ξύλινη STR_BRIDGE_NAME_CONCRETE :Τσιμεντένια -STR_BRIDGE_NAME_TUBULAR_STEEL :Ατσάλινη, Φυσούνας -STR_BRIDGE_TUBULAR_SILICON :Σιλικόνη, Φυσούνας +STR_BRIDGE_NAME_TUBULAR_STEEL :Ατσάλινη, Σωληνοειδής +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_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_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}Εναλλαγή κτισίματος/αφαίρεσης της κατασκευής τροχιόδρομου # 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_CAPTION :{WHITE}Προσανατολισμός Αμαξοστασίου Τραμ STR_BUILD_DEPOT_TRAM_ORIENTATION_SELECT_TOOLTIP :{BLACK}Επιλογή προσανατολισμού αμαξοστασίου τραμ # Road vehicle station construction window @@ -2302,21 +2405,21 @@ 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_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}Κατασκευή καναλιού νερού -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_CREATE_RIVER_TOOLTIP :{BLACK}Τοποθέτησε ποτάμια +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_CREATE_RIVER_TOOLTIP :{BLACK}Τοποθετήστε ποτάμια # Ship depot construction window STR_DEPOT_BUILD_SHIP_CAPTION :{WHITE}Προσανατολισμός Ναυπηγείου Πλοίων @@ -2327,12 +2430,12 @@ 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}Επιλογή Αεροδρομίου STR_STATION_BUILD_AIRPORT_TOOLTIP :{BLACK}Επιλογή μεγέθους/τύπου αεροδρομίου -STR_STATION_BUILD_AIRPORT_CLASS_LABEL :{BLACK}Κλάση αεροδρομίου +STR_STATION_BUILD_AIRPORT_CLASS_LABEL :{BLACK}Κατηγορία Αεροδρομίου STR_STATION_BUILD_AIRPORT_LAYOUT_NAME :{BLACK}Σχεδιασμός {NUM} STR_AIRPORT_SMALL :Μικρό @@ -2342,28 +2445,28 @@ STR_AIRPORT_INTERNATIONAL :Διεθνές STR_AIRPORT_COMMUTER :Ταξιδιωτικό STR_AIRPORT_INTERCONTINENTAL :Διηπειρωτικό STR_AIRPORT_HELIPORT :Ελικοδρόμιο -STR_AIRPORT_HELIDEPOT :Υπόστεγο ελικοπτέρων -STR_AIRPORT_HELISTATION :Στάθμος ελικοπτέρων +STR_AIRPORT_HELIDEPOT :Υπόστεγο Ελικοπτέρων +STR_AIRPORT_HELISTATION :Σταθμός Ελικοπτέρων STR_AIRPORT_CLASS_SMALL :Μικρά αεροδρόμια STR_AIRPORT_CLASS_LARGE :Μεγάλα αεροδρόμια -STR_AIRPORT_CLASS_HUB :Κομβίκα αεροδρόμια +STR_AIRPORT_CLASS_HUB :Κομβικά αεροδρόμια STR_AIRPORT_CLASS_HELIPORTS :Ελικοδρόμια STR_STATION_BUILD_NOISE :{BLACK}Παραγόμενος θόρυβος: {GOLD}{COMMA} # Landscaping toolbar STR_LANDSCAPING_TOOLBAR :{WHITE}Μορφοποίηση εδάφους -STR_LANDSCAPING_TOOLTIP_LOWER_A_CORNER_OF_LAND :{BLACK}Χαμηλώστε μια γωνία του εδάφους. Με drag υποβαθμίζετε την πρώτη επιλεγμένη γωνία και ισοπεδώνει την επιφάνεια στο νέο ύψος. Με Ctrl επιλέγετε την επιφάνεια διαγώνια. Shift εναλλάσει χτίσιμο/εμφάνιση εκτίμησης κόστος -STR_LANDSCAPING_TOOLTIP_RAISE_A_CORNER_OF_LAND :{BLACK}Ανυψώστε μια γωνία του εδάφους. Με drag ανυψώνεται η πρώτη επιλεγμένη γωνία και ισοπεδώνεται η επιφάνεια στο νέο ύψος. Με Ctrl επιλέγετε την επιφάνεια διαγώνια. Shift εναλλάσει χτίσιμο/εμφάνιση εκτίμησης κόστος -STR_LANDSCAPING_LEVEL_LAND_TOOLTIP :{BLACK}Ισοπέδωση της γης στο ύψος της πρώτης γωνίας. Με Ctrl επιλέγετε την επιφάνεια διαγώνια. Shift εναλλάσει χτίσιμο/εμφάνιση εκτίμησης κόστος -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}Επιλογή Αντικείμενου -STR_OBJECT_BUILD_TOOLTIP :{BLACK}Επιλογή αντικείμενου για κατασκευή. Shift εναλλάσει χτίσιμο/εμφάνιση εκτίμησης κόστος -STR_OBJECT_BUILD_CLASS_TOOLTIP :{BLACK}Επιλογή της κλάσης του αντικείμενου για χτήσιμο -STR_OBJECT_BUILD_PREVIEW_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} τετράγωνα STR_OBJECT_CLASS_LTHS :Φάροι @@ -2373,20 +2476,20 @@ 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}Φύτευση δέντρων τυχαία στο τοπίο +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_INCREASE_SIZE_OF_LAND_AREA :{BLACK}Αύξηση περιοχής για χαμήλωμα/ανύψωση γης -STR_TERRAFORM_TOOLTIP_DECREASE_SIZE_OF_LAND_AREA :{BLACK}Μείωση περιοχής για χαμήλωμα/ανύψωση γης +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}Δημιουργία τυχαίου εδάφους 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}Είστε σίγουρος ότι θέλετε να αφαιρέσετε όλες τις ιδιοκτησίες παικτών; @@ -2394,7 +2497,7 @@ 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}Ίδρυση νέας πόλης. Με Shift+κλικ εμφανίζει μόνο το εκτιμώμενο κόστος +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}Πολλές τυχαίες πόλεις @@ -2427,9 +2530,9 @@ STR_FOUND_TOWN_SELECT_LAYOUT_RANDOM :{BLACK}Τυχα STR_FUND_INDUSTRY_CAPTION :{WHITE}Χρηματοδότηση νέας βιομηχανίας STR_FUND_INDUSTRY_SELECTION_TOOLTIP :{BLACK}Επιλέξτε την κατάλληλη βιομηχανία από την λίστα STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES :Πολλές τυχαίες βιομηχανίες -STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES_TOOLTIP :{BLACK}Γέμισε τον χάρτη με τυχαίες τοποθετημένες βιομηχανίες +STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES_TOOLTIP :{BLACK}Γέμισε τον χάρτη με τυχαία τοποθετημένες βιομηχανίες STR_FUND_INDUSTRY_INDUSTRY_BUILD_COST :{BLACK}Κόστος: {YELLOW}{CURRENCY_LONG} -STR_FUND_INDUSTRY_PROSPECT_NEW_INDUSTRY :{BLACK}Προβλέψη +STR_FUND_INDUSTRY_PROSPECT_NEW_INDUSTRY :{BLACK}Διερεύνηση STR_FUND_INDUSTRY_BUILD_NEW_INDUSTRY :{BLACK}Κατασκευή STR_FUND_INDUSTRY_FUND_NEW_INDUSTRY :{BLACK}Χρηματοδότηση @@ -2439,40 +2542,45 @@ STR_INDUSTRY_CARGOES_CARGO_CAPTION :{WHITE}Αλυσ STR_INDUSTRY_CARGOES_PRODUCERS :{WHITE}Βιομηχανίες που παράγουν 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_CARGOES_INDUSTRY_TOOLTIP :{BLACK}Κάντε κλικ στη βιομηχανία για να δείτε τους προμηθευτές και τους πελάτες της +STR_INDUSTRY_CARGOES_CARGO_TOOLTIP :{BLACK}{STRING}{}Κάντε κλικ στο εμπόρευμα για να δείτε τους προμηθευτές και τους πελάτες 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_DISPLAY_CHAIN_TOOLTIP :{BLACK}Εμφάνιση βιομηχανιών προμήθειας και αποδοχής για το εμπόρευμα +STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP :{BLACK}Σύνδεση με το μικρό χάρτη +STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP_TOOLTIP :{BLACK}Επιλογή των εμφανιζόμενων βιομηχανιών και στο μικρό χάρτη +STR_INDUSTRY_CARGOES_SELECT_CARGO :{BLACK}Επιλογή εμπορευμάτων +STR_INDUSTRY_CARGOES_SELECT_CARGO_TOOLTIP :{BLACK}Επιλέξτε το εμπόρευμα που θέλετε να εμφανίσετε +STR_INDUSTRY_CARGOES_SELECT_INDUSTRY :{BLACK}Επιλογή βιομηχανίας +STR_INDUSTRY_CARGOES_SELECT_INDUSTRY_TOOLTIP :{BLACK}Επιλέξτε τη βιομηχανία που θέλετε να εμφανίσετε # Land area window STR_LAND_AREA_INFORMATION_CAPTION :{WHITE}Πληροφορίες Περιοχής Εδάφους STR_LAND_AREA_INFORMATION_COST_TO_CLEAR_N_A :{BLACK}Κόστος καθαρισμού: {LTBLUE}Μ/Δ STR_LAND_AREA_INFORMATION_COST_TO_CLEAR :{BLACK}Κόστος καθαρισμού: {RED}{CURRENCY_LONG} -STR_LAND_AREA_INFORMATION_REVENUE_WHEN_CLEARED :{BLACK}Ώφελος όταν καθαριστεί: {LTBLUE}{CURRENCY_LONG} +STR_LAND_AREA_INFORMATION_REVENUE_WHEN_CLEARED :{BLACK}Όφελος όταν καθαριστεί: {LTBLUE}{CURRENCY_LONG} 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_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_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}) +STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Συντεταγμένες: {LTBLUE}{NUM} x {NUM} x {NUM} ({STRING}) STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}Κατασκευή: {LTBLUE}{DATE_LONG} -STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Κλάση στάθμου: {LTBLUE}{STRING} +STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Κατηγορία σταθμού: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Τύπος σταθμού: {LTBLUE}{STRING} -STR_LAND_AREA_INFORMATION_AIRPORT_CLASS :{BLACK}Κλάση αεροδρομίου: {LTBLUE}{STRING} +STR_LAND_AREA_INFORMATION_AIRPORT_CLASS :{BLACK}Κατηγορία αεροδρομίου: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORT_NAME :{BLACK}Όνομα αεροδρομίου: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORTTILE_NAME :{BLACK}Όνομα αεροδρομίου: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: {LTBLUE}{STRING} -STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Αποδεκτό Εμπόρευμα: {LTBLUE} +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 :Πέτρες -STR_LAI_CLEAR_DESCRIPTION_ROUGH_LAND :Σκληρό έδαφος +STR_LAI_CLEAR_DESCRIPTION_ROUGH_LAND :Ανώμαλο έδαφος STR_LAI_CLEAR_DESCRIPTION_BARE_LAND :Γυμνό έδαφος STR_LAI_CLEAR_DESCRIPTION_GRASS :Γρασίδι STR_LAI_CLEAR_DESCRIPTION_FIELDS :Χωράφια @@ -2485,22 +2593,22 @@ 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_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_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_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_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 :Δρόμος @@ -2508,13 +2616,13 @@ 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} (υπό κατασκευή) STR_LAI_TREE_NAME_TREES :Δέντρα -STR_LAI_TREE_NAME_RAINFOREST :Δάσος +STR_LAI_TREE_NAME_RAINFOREST :Τροπικό δάσος STR_LAI_TREE_NAME_CACTUS_PLANTS :Κάκτοι STR_LAI_STATION_DESCRIPTION_RAILROAD_STATION :Σιδηροδρομικός σταθμός @@ -2558,26 +2666,26 @@ STR_LAI_BRIDGE_DESCRIPTION_AQUEDUCT :Κανάλι STR_LAI_OBJECT_DESCRIPTION_TRANSMITTER :Αναμεταδότης STR_LAI_OBJECT_DESCRIPTION_LIGHTHOUSE :Φάρος -STR_LAI_OBJECT_DESCRIPTION_COMPANY_HEADQUARTERS :Κεντρικά Γραφεία Εταιρίας -STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Ιδιόκτητη γή από εταιρία +STR_LAI_OBJECT_DESCRIPTION_COMPANY_HEADQUARTERS :Κεντρικά γραφεία εταιρίας +STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Ιδιοκτησία γης από εταιρία # About OpenTTD window 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-2012 Η ομάδα του OpenTTD +STR_ABOUT_VERSION :{BLACK}Έκδοση OpenTTD{REV} +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2014 Η ομάδα του OpenTTD # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Αποθήκευση Παιχνιδιού STR_SAVELOAD_LOAD_CAPTION :{WHITE}Φόρτωση Παιχνιδιού STR_SAVELOAD_SAVE_SCENARIO :{WHITE}Αποθήκευση Σεναρίου STR_SAVELOAD_LOAD_SCENARIO :{WHITE}Φόρτωση Σεναρίου -STR_SAVELOAD_LOAD_HEIGHTMAP :{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}Τρέχον όνομα για το αποθηκευμένο παιχνίδι +STR_SAVELOAD_LIST_TOOLTIP :{BLACK}Λίστα δισκών, φακέλων και αποθηκευμένων παιχνιδιών +STR_SAVELOAD_EDITBOX_TOOLTIP :{BLACK}Τρέχον επιλεγμένο όνομα για το αποθηκευμένο παιχνίδι STR_SAVELOAD_DELETE_BUTTON :{BLACK}Διαγραφή STR_SAVELOAD_DELETE_TOOLTIP :{BLACK}Διαγραφή του επιλεγμένου αποθηκευμένου παιχνιδιού STR_SAVELOAD_SAVE_BUTTON :{BLACK}Αποθήκευση @@ -2589,22 +2697,19 @@ 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}Δημιουργία Κόσμου STR_MAPGEN_MAPSIZE :{BLACK}Διάσταση χάρτη: +STR_MAPGEN_MAPSIZE_TOOLTIP :{BLACK}Επιλέξτε το μέγεθος του χάρτη σε τετραγωνίδια. Ο αριθμός των τετραγωνίδιων διαθέσιμα για κτίσιμο θα είναι λίγο χαμηλότερος STR_MAPGEN_BY :{BLACK}* -STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Αριθ. πόλεων: -STR_MAPGEN_DATE :{BLACK}Ημερομήνια: -STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Αριθ. βιομηχανιών: +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}Μετακίνηση του ύψους της γραμμής χιονιού μια πάνω -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_SNOW_LINE_UP :{BLACK}Μετακίνηση του ύψους της γραμμής χιονιού ένα πάνω +STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Μετακίνηση του ύψους της γραμμής χιονιού ένα κάτω STR_MAPGEN_LAND_GENERATOR :{BLACK}Δημιουργός εδάφους: STR_MAPGEN_TREE_PLACER :{BLACK}Αλγόριθμος δέντρων: STR_MAPGEN_TERRAIN_TYPE :{BLACK}Τύπος εδάφους: @@ -2624,25 +2729,24 @@ STR_MAPGEN_BORDER_FREEFORM :{BLACK}Ελεύ STR_MAPGEN_BORDER_WATER :{BLACK}Νερό STR_MAPGEN_BORDER_RANDOM :{BLACK}Τυχαία STR_MAPGEN_BORDER_RANDOMIZE :{BLACK}Τυχαία -STR_MAPGEN_BORDER_MANUAL :{BLACK}Χειροκινήτος +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_SNOW_LINE_QUERY_CAPT :{WHITE}Άλλαγη του ύψους της γράμμης χιονιού STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Αλλαγή έτους έναρξης # SE Map generation STR_SE_MAPGEN_CAPTION :{WHITE}Τύπος Σεναρίου STR_SE_MAPGEN_FLAT_WORLD :{WHITE}Επίπεδο έδαφος -STR_SE_MAPGEN_FLAT_WORLD_TOOLTIP :{BLACK}Δημιουρία επίπεδου εδάφους +STR_SE_MAPGEN_FLAT_WORLD_TOOLTIP :{BLACK}Δημιουργία επίπεδου εδάφους STR_SE_MAPGEN_RANDOM_LAND :{WHITE}Τυχαίο έδαφος STR_SE_MAPGEN_FLAT_WORLD_HEIGHT :{BLACK}Ύψος επίπεδης γης: -STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_DOWN :{BLACK}Μετακίνηση του ύψους του επίπεδου εδάφους μια κάτω -STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_UP :{BLACK}Μετακίνηση του ύψους του επίπεδου εδάφους μια πάνω +STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_DOWN :{BLACK}Μετακίνηση του ύψους του επίπεδου εδάφους ένα κάτω +STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_UP :{BLACK}Μετακίνηση του ύψους του επίπεδου εδάφους ένα πάνω STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_QUERY_CAPT :{WHITE}Αλλαγή του ύψους του επίπεδου εδαφους @@ -2650,52 +2754,52 @@ 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}Δημιουργία Κόσμου +STR_GENERATION_WORLD_GENERATION :{BLACK}Δημιουργία κόσμου STR_GENERATION_RIVER_GENERATION :{BLACK}Δημιουργία ποταμού -STR_GENERATION_TREE_GENERATION :{BLACK}Δημιουργία Δέντρων +STR_GENERATION_TREE_GENERATION :{BLACK}Δημιουργία δέντρων STR_GENERATION_OBJECT_GENERATION :{BLACK}Δημιουργία μη μετακινούμενων STR_GENERATION_CLEARING_TILES :{BLACK}Δημιουργία άγριας και πετρώδης περιοχής STR_GENERATION_SETTINGUP_GAME :{BLACK}Ρύθμιση παιχνιδιού -STR_GENERATION_PREPARING_TILELOOP :{BLACK}Εκτέλεση βρόχου τετραγωνιδίων +STR_GENERATION_PREPARING_TILELOOP :{BLACK}Εκτέλεση βρόχου τετραγωνίδιων STR_GENERATION_PREPARING_SCRIPT :{BLACK}Τρέχουσα δέσμη ενεργειών STR_GENERATION_PREPARING_GAME :{BLACK}Προετοιμασία παιχνιδιού # NewGRF settings STR_NEWGRF_SETTINGS_CAPTION :{WHITE}Ρυθμίσεις NewGRF STR_NEWGRF_SETTINGS_INFO_TITLE :{WHITE}Λεπτομερείς πληροφορίες για το NewGRF -STR_NEWGRF_SETTINGS_ACTIVE_LIST :{WHITE}Ενεργά NewGRF αρχεία -STR_NEWGRF_SETTINGS_INACTIVE_LIST :{WHITE}Ανενεργά NewGRF αρχεία -STR_NEWGRF_SETTINGS_SELECT_PRESET :{ORANGE}Επιλογή προκαθορισμένου σετ: +STR_NEWGRF_SETTINGS_ACTIVE_LIST :{WHITE}Ενεργά αρχεία NewGRF +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 :{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}Ανιχνεύση ξανά για αρχεία +STR_NEWGRF_SETTINGS_ADD :{BLACK}Προσθήκη +STR_NEWGRF_SETTINGS_ADD_FILE_TOOLTIP :{BLACK}Προσθέστε το επιλεγμένο αρχείο NewGRF στη διαμόρφωσή σας +STR_NEWGRF_SETTINGS_RESCAN_FILES :{BLACK}Ανίχνευση ξανά για αρχεία STR_NEWGRF_SETTINGS_RESCAN_FILES_TOOLTIP :{BLACK}Ανανέωση της λίστας με τα διαθέσιμα αρχεία NewGRF -STR_NEWGRF_SETTINGS_REMOVE :{BLACK}Αφαίρεσε -STR_NEWGRF_SETTINGS_REMOVE_TOOLTIP :{BLACK}Αφαίρεσε ένα αρχείο NewGRF από τη λίστα -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_FILE_TOOLTIP :{BLACK}Μια λίστα με τα αρχεία NewGRF που είναι εγκατεστημένα. +STR_NEWGRF_SETTINGS_REMOVE :{BLACK}Αφαίρεση +STR_NEWGRF_SETTINGS_REMOVE_TOOLTIP :{BLACK}Αφαιρέστε το επιλεγμένο αρχείο NewGRF από τη λίστα +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_FILE_TOOLTIP :{BLACK}Μία λίστα που περιέχει τα εγκατεστημένα αρχεία NewGRF STR_NEWGRF_SETTINGS_SET_PARAMETERS :{BLACK}Ρύθμιση παραμέτρων STR_NEWGRF_SETTINGS_SHOW_PARAMETERS :{BLACK}Εμφάνιση παραμέτρων STR_NEWGRF_SETTINGS_TOGGLE_PALETTE :{BLACK}Εναλλαγή παλέτας -STR_NEWGRF_SETTINGS_TOGGLE_PALETTE_TOOLTIP :{BLACK}Εναλλάσει την παλέττα του επιλεγμένου NewGRF.{}Κάντε αυτό όταν τα γραφίκα από αυτό το NewGRF δείχνουν ροζ μέσα στο παιχνίδι +STR_NEWGRF_SETTINGS_TOGGLE_PALETTE_TOOLTIP :{BLACK}Εναλλάσσει την παλέτα του επιλεγμένου NewGRF.{}Κάντε αυτό όταν τα γραφικά από αυτό το NewGRF δείχνουν ροζ μέσα στο παιχνίδι STR_NEWGRF_SETTINGS_APPLY_CHANGES :{BLACK}Εφαρμογή αλλαγών -STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_BUTTON :{BLACK}Αναζήτηση μη εγκατεστήμενου περιεχομένου online -STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_TOOLTIP :{BLACK}Έλεγχος πότε μη εγκατεστημένο περιεχόμενο μπορεί να βρεθεί online +STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_BUTTON :{BLACK}Αναζήτηση για λείπων περιεχόμενο στο διαδίκτυο +STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_TOOLTIP :{BLACK}Έλεγχος για αν μπορεί να βρεθεί λείπων περιεχόμενο στο διαδίκτυο STR_NEWGRF_SETTINGS_FILENAME :{BLACK}Όνομα αρχείου: {SILVER}{STRING} STR_NEWGRF_SETTINGS_GRF_ID :{BLACK}GRF ID: {SILVER}{STRING} @@ -2708,7 +2812,9 @@ STR_NEWGRF_SETTINGS_PARAMETER :{BLACK}Παρά STR_NEWGRF_SETTINGS_NO_INFO :{BLACK}Δεν υπάρχουν διαθέσιμες πληροφορίες STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}Δεν βρέθηκε το ταυτοποιημένο αρχείο STR_NEWGRF_SETTINGS_DISABLED :{RED}Απενεργοποιημένο -STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}Μη συμβατό με αυτή την έκδοση του OpenTTD +STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}Μη συμβατό με αυτήν την έκδοση του OpenTTD + +# NewGRF save preset window # NewGRF parameters window STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}Αλλαγή παραμέτρων NewGRF @@ -2731,16 +2837,16 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :Τύπος σι STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}Μεταβλητή NewGRF 60+x παράμετρος (δεκαεξαδικό) # Sprite aligner window -STR_SPRITE_ALIGNER_CAPTION :{WHITE}Ευθυγραμμιση sprite {COMMA} ({STRING}) +STR_SPRITE_ALIGNER_CAPTION :{WHITE}Ευθυγράμμιση sprite {COMMA} ({STRING}) STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Επόμενο στοιχείο -STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Συνέχισε στο επόμενο κανονικό sprite, προσπερνώντας οποιοδήποτε ψευδο/επαναναχρωματιζόμενο/γραμματοσειράς sprite και κάνε τις τελικές διαδικασίες στο τέλος -STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Μετακινήση στο στοιχείο -STR_SPRITE_ALIGNER_GOTO_TOOLTIP :{BLACK}Μετακίνηση στο sprite. Εαν το sprite δεν είναι ένα κανονικό sprite, συνεχίζει στο επόμενο κανονικό sprite +STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Συνέχισε στο επόμενο κανονικό sprite, προσπερνώντας οποιοδήποτε ψευδό/επαναναχρωματιζόμενο/γραμματοσειράς sprite και κάνε τις τελικές διαδικασίες στο τέλος +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, προσπερνώντας οποιοδήποτε ψευδό/επαναναχρωματιζόμενο/γραμματοσειράς sprite και κάνε τις τελικές διαδικασίες στην αρχή 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_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 από οπουδήποτε στη οθόνη @@ -2752,30 +2858,40 @@ STR_NEWGRF_ERROR_MSG_WARNING :{RED}Προει STR_NEWGRF_ERROR_MSG_ERROR :{RED}Λάθος: {SILVER}{STRING} STR_NEWGRF_ERROR_MSG_FATAL :{RED}Καταστροφικό: {SILVER}{STRING} STR_NEWGRF_ERROR_FATAL_POPUP :{WHITE}Ένα καταστροφικό λάθος για τα NewGRF έχει συμβεί: {}{STRING} -STR_NEWGRF_ERROR_VERSION_NUMBER :Το {1:STRING} δεν θα δουλέψει με την έκδοση του TTDPatch οπώς αναφέρεται από το OpenTTD -STR_NEWGRF_ERROR_DOS_OR_WINDOWS :Το {1:STRING} είναι για την έκδοση {STRING} του TTD. +STR_NEWGRF_ERROR_VERSION_NUMBER :Το {1:STRING} δεν θα δουλέψει με την έκδοση του TTDPatch όπως αναφέρεται από το OpenTTD +STR_NEWGRF_ERROR_DOS_OR_WINDOWS :Το {1:STRING} είναι για την έκδοση {STRING} του TTD STR_NEWGRF_ERROR_UNSET_SWITCH :{1:STRING} είναι σχεδιασμένο να δουλέψει με το {STRING} -STR_NEWGRF_ERROR_INVALID_PARAMETER :Λάθος παράμετρος για το {1:STRING}: Παράμετρος {STRING} ({NUM}) -STR_NEWGRF_ERROR_LOAD_BEFORE :Το {1:STRING} πρέπει να φόρτωθει πριν από το {STRING}. -STR_NEWGRF_ERROR_LOAD_AFTER :Το {1:STRING} πρέπει να φόρτωθει μετά από το {STRING}. +STR_NEWGRF_ERROR_INVALID_PARAMETER :Λάθος παράμετρος για το {1:STRING}: παράμετρος {STRING} ({NUM}) +STR_NEWGRF_ERROR_LOAD_BEFORE :Το {1:STRING} πρέπει να φορτωθεί πριν από το {STRING} +STR_NEWGRF_ERROR_LOAD_AFTER :Το {1:STRING} πρέπει να φορτωθεί μετά από το {STRING} STR_NEWGRF_ERROR_OTTD_VERSION_NUMBER :Το {1:STRING} απαιτεί έκδοση OpenTTD {STRING} ή καλύτερη -STR_NEWGRF_ERROR_AFTER_TRANSLATED_FILE :Το αρχείο GRF είναι σχεδιασμένο για να μεταφράζει -STR_NEWGRF_ERROR_TOO_MANY_NEWGRFS_LOADED :Έχουν φορτωθεί πολλά NewGRF. -STR_NEWGRF_ERROR_STATIC_GRF_CAUSES_DESYNC :Η φόρτωση του {1:STRING} ως στατικό NewGRF με {STRING} μπόρει να προκαλέσει αποσυγχρονισμούς -STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} περιέχει ένα κατεστραμμένο sprite. Όλα τα κατεστραμμένα sprites θα εμφανίζονται ως ένα κόκκινο ερωματικό (?) -STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :Το {1:STRING} απενεργοποιήθηκε από το {STRING} +STR_NEWGRF_ERROR_AFTER_TRANSLATED_FILE :το αρχείο GRF είναι σχεδιασμένο για να μεταφράζει +STR_NEWGRF_ERROR_TOO_MANY_NEWGRFS_LOADED :Έχουν φορτωθεί πολλά NewGRF +STR_NEWGRF_ERROR_STATIC_GRF_CAUSES_DESYNC :Η φόρτωση του {1:STRING} ως στατικό NewGRF με {STRING} μπορεί να προκαλέσει αποσυγχρονισμούς +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_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_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}) # NewGRF related 'general' warnings STR_NEWGRF_POPUP_CAUTION_CAPTION :{WHITE}Προσοχή! -STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}Πρόκειται να κάνετε αλλαγές σε ένα παιχνίδι σε εξέλιξη. Αυτό μπορεί να κρασάρει το OpenTTD ή να διαλύσει την κατάσταση του παιχνιδιού. Μην καταχωρείτε αναφορές σφάλματος για τέτοια προβλήματα.{}Είστε απόλυτα σίγουρος/η για αυτή την ενέργεια; +STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}Πρόκειται να κάνετε αλλαγές σε παιχνίδι που είναι ήδη σε εξέλιξη. Αυτό μπορεί να κλείσει απρόοπτα το OpenTTD ή να διαλύσει την κατάσταση του παιχνιδιού. Μην καταχωρείτε αναφορές σφάλματος για τέτοια προβλήματα.{}Είστε απόλυτα σίγουροι για αυτή την ενέργεια; -STR_NEWGRF_DUPLICATE_GRFID :{WHITE}Δεν μπορεί να γίνει η προσθηκη του αρχείου: διπλότυπο GRF ID -STR_NEWGRF_COMPATIBLE_LOADED :{ORANGE}Δεν βρέθηκε αρχείο ταυτοποιημένο (φορτώθηκε συμβατό GRF) +STR_NEWGRF_DUPLICATE_GRFID :{WHITE}Δεν μπορεί να γίνει η προσθήκη του αρχείου: διπλότυπο GRF ID +STR_NEWGRF_COMPATIBLE_LOADED :{ORANGE}Δεν βρέθηκε ταυτοποιημένο αρχείο (φορτώθηκε συμβατό GRF) +STR_NEWGRF_TOO_MANY_NEWGRFS :{WHITE}Δεν μπορεί να προστεθεί το αρχείο: φτάσατε το όριο αρχείων NewGRF -STR_NEWGRF_COMPATIBLE_LOAD_WARNING :{WHITE}Φόρτωση συμβατών GRF(s) για χαμένα αρχεία. -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}Συνέχιση λειτουργίας μπόρει να κρασάρει το OpenTTD. Μην δώσετε αναφορές σφαλμάτων για συνεχόμενα κρασαρίσματα.{}Θέλετε πραγματικά να συνεχίσετε την λειτουργία; +STR_NEWGRF_UNPAUSE_WARNING :{WHITE}Η συνέχιση μπορεί να κλείσει απρόοπτα το OpenTTD. Μη δώσετε αναφορές σφαλμάτων για κλεισίματα.{}Θέλετε πραγματικά να συνεχίσετε την λειτουργία; # NewGRF status STR_NEWGRF_LIST_NONE :Κανένα @@ -2784,36 +2900,42 @@ STR_NEWGRF_LIST_COMPATIBLE :{YELLOW}Βρέ STR_NEWGRF_LIST_MISSING :{RED}Λείπουν αρχεία # NewGRF 'it's broken' warnings -STR_NEWGRF_BROKEN :{WHITE}Η συμπεριφορά του NewGRF '{0:STRING}' είναι πιθάνο να προκαλέσει αποσυγχρονισμούς και/ή κρασαρίσματα. -STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}Άλλαξε το μήκος του οχήματος '{1:ENGINE}' ενώ δεν βρισκόταν μέσα σε αμαξοστάσιο -STR_BROKEN_VEHICLE_LENGTH :{WHITE}Το τρενο'{VEHICLE}' που ανήκει στην εταιρία '{COMPANY}' έχει μη έγκυρο μήκος. Πιθανόν να προέρχεται από πρόβλημα του NewGRFs. Το παιχνίδι μπορεί να αποσυγχρονιστεί ή να κρασάρει. - -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_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}» δίνει λάθος πληροφορίες +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 STR_NEWGRF_INVALID_CARGO :<μη έγκυρο φορτίο> -STR_NEWGRF_INVALID_CARGO_ABBREV :?? +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}Σαρώνονται Νέα GRF -STR_NEWGRF_SCAN_MESSAGE :{BLACK}Σαρώνεται το NewGRFs. Ανάλογα με το μέγεθος, αυτό μπορεί να απαιτήσει κάποιο χρόνο... +STR_NEWGRF_SCAN_CAPTION :{WHITE}Σαρώνονται ΝewGRF +STR_NEWGRF_SCAN_MESSAGE :{BLACK}Σαρώνονται τα NewGRF. Ανάλογα με το μέγεθος, αυτό μπορεί να απαιτήσει κάποιο χρόνο... +STR_NEWGRF_SCAN_STATUS :{BLACK}{NUM} NewGRF σαρώθηκαν από {NUM} υπολογισμένα NewGRF STR_NEWGRF_SCAN_ARCHIVES :Σάρωση για αρχεία # Sign list window -STR_SIGN_LIST_CAPTION :{WHITE}Λίστα πινακίδων - {COMMA} Πινακίδ{P α ες} +STR_SIGN_LIST_CAPTION :{WHITE}Λίστα Πινακίδων - {COMMA} Πινακίδ{P α ες} 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}Αλλαγή κειμένου πινακίδας -STR_EDIT_SIGN_NEXT_SIGN_TOOLTIP :{BLACK}Πηγαίνετε στην επόμενη πινακίδα -STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK}Πηγαίνετε στη προηγούμενη πινακίδα +STR_EDIT_SIGN_CAPTION :{WHITE}Επεξεργασία κειμένου πινακίδας +STR_EDIT_SIGN_NEXT_SIGN_TOOLTIP :{BLACK}Μετάβαση στην επόμενη πινακίδα +STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK}Μετάβαση στη προηγούμενη πινακίδα STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}Δώστε ένα όνομα για την πινακίδα @@ -2821,7 +2943,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 @@ -2840,15 +2962,15 @@ STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}Η πό STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}Η πόλη επεκτείνεται κάθε {ORANGE}{COMMA}{BLACK} ημέρ{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}Αλλαγή ονόματος πόλης +STR_TOWN_VIEW_RENAME_TOOLTIP :{BLACK}Αλλαγή του ονόματος της πόλης STR_TOWN_VIEW_EXPAND_BUTTON :{BLACK}Επέκταση STR_TOWN_VIEW_EXPAND_TOOLTIP :{BLACK}Αύξηση μεγέθους της πόλης STR_TOWN_VIEW_DELETE_BUTTON :{BLACK}Διαγραφή -STR_TOWN_VIEW_DELETE_TOOLTIP :{BLACK}Διαγράφη της πόλης ολοκληρωτικά +STR_TOWN_VIEW_DELETE_TOOLTIP :{BLACK}Διαγραφή της πόλης ολοκληρωτικά STR_TOWN_VIEW_RENAME_TOWN_BUTTON :Μετονομασία Πόλης @@ -2857,35 +2979,36 @@ STR_LOCAL_AUTHORITY_CAPTION :{WHITE}Τοπι STR_LOCAL_AUTHORITY_COMPANY_RATINGS :{BLACK}Ποσοστά εταιρίας μεταφορών: STR_LOCAL_AUTHORITY_COMPANY_RATING :{YELLOW}{COMPANY} {COMPANY_NUM}: {ORANGE}{STRING} STR_LOCAL_AUTHORITY_ACTIONS_TITLE :{BLACK}Διαθέσιμες πράξεις: -STR_LOCAL_AUTHORITY_ACTIONS_TOOLTIP :{BLACK}Λίστα πραγμάτων που πρέπει να γίνουν σε αυτή την πόλη - κάντε κλικ στο αντικείμενο για πληροφορίες -STR_LOCAL_AUTHORITY_DO_IT_BUTTON :{BLACK}Κάνε το +STR_LOCAL_AUTHORITY_ACTIONS_TOOLTIP :{BLACK}Λίστα πραγμάτων που πρέπει να γίνουν σε αυτήν την πόλη - κάντε κλικ στο αντικείμενο για πληροφορίες +STR_LOCAL_AUTHORITY_DO_IT_BUTTON :{BLACK}Κάντε το STR_LOCAL_AUTHORITY_DO_IT_TOOLTIP :{BLACK}Διενέργεια της επιλεγμένης πράξης στην παραπάνω λίστα STR_LOCAL_AUTHORITY_ACTION_SMALL_ADVERTISING_CAMPAIGN :Μικρή διαφημιστική καμπάνια STR_LOCAL_AUTHORITY_ACTION_MEDIUM_ADVERTISING_CAMPAIGN :Μεσαία διαφημιστική καμπάνια STR_LOCAL_AUTHORITY_ACTION_LARGE_ADVERTISING_CAMPAIGN :Μεγάλη διαφημιστική καμπάνια STR_LOCAL_AUTHORITY_ACTION_ROAD_RECONSTRUCTION :Επιχορήγηση ανακατασκευής τοπικού οδικού δικτύου -STR_LOCAL_AUTHORITY_ACTION_STATUE_OF_COMPANY :Χτίσιμο αγάλματος ιδιοκτήτη εταιρίας +STR_LOCAL_AUTHORITY_ACTION_STATUE_OF_COMPANY :Κτίσιμο αγάλματος του ιδιοκτήτη της εταιρίας STR_LOCAL_AUTHORITY_ACTION_NEW_BUILDINGS :Επιχορήγηση νέων κτιρίων STR_LOCAL_AUTHORITY_ACTION_EXCLUSIVE_TRANSPORT :Αγορά αποκλειστικών δικαιωμάτων μεταφοράς -STR_LOCAL_AUTHORITY_ACTION_BRIBE :Δωροδοκίστε την τοπική αρχή +STR_LOCAL_AUTHORITY_ACTION_BRIBE :Δωροδοκήστε την τοπική αρχή -STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_SMALL_ADVERTISING :{YELLOW}'Eναρξη μικρής τοπικής διαφημιστικής καμπάνιας, για να προσελκύσετε περισσότερους επιβάτες και εμπορεύματα στις μεταφορικές σας υπηρεσίες.{} Κόστος: {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_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_EXCLUSIVE_TRANSPORT :{YELLOW}Αγορά αποκλειστικών δικαιωμάτων διάρκειας ενός χρόνου για αυτήν την πόλη. Η τοπική αρχή θα επιτρέπει στους επιβάτες και τα φορτία να χρησιμοποιούν μόνο τους σταθμούς της εταιρίας σας.{} Κόστος: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}Δωροδοκήστε τις τοπικές αρχές για να αυξήσετε τα ποσοστά σας, με ρίσκο ένα μεγάλο πρόστιμο εάν συλληφθείτε.{}Κόστος: {CURRENCY_LONG} # Goal window -STR_GOALS_CAPTION :{WHITE}Στόχοι 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+Κλικ ανοίγει το παράθυρο θέασης στην τοποθεσία της βιομηχανίας/πόλης/τετραγωνίδιο +STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Κάνετε κλικ στον στόχο για να επικεντρωθεί η οθόνη στη βιομηχανία/πόλη/τετραγωνίδιο. Με Ctrl+Κλικ ανοίγει το παράθυρο θέασης στην τοποθεσία της βιομηχανίας/πόλης/τετραγωνίδιου # Goal question window STR_GOAL_QUESTION_CAPTION_QUESTION :Ερώτηση @@ -2916,40 +3039,52 @@ STR_GOAL_QUESTION_BUTTON_CLOSE :Κλείσιμ # Subsidies window STR_SUBSIDIES_CAPTION :{WHITE}Χρηματοδοτήσεις STR_SUBSIDIES_OFFERED_TITLE :{BLACK}Τρέχουσες χρηματοδοτήσεις για ανάληψη υπηρεσιών: -STR_SUBSIDIES_OFFERED_FROM_TO :{ORANGE}{STRING} από {STRING} πρός {STRING}{YELLOW} (έως {DATE_SHORT}) +STR_SUBSIDIES_OFFERED_FROM_TO :{ORANGE}{STRING} από {STRING} προς {STRING}{YELLOW} (έως τις {DATE_SHORT}) STR_SUBSIDIES_NONE :{ORANGE}- Καμία - STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}Υπηρεσίες που έχουν χρηματοδοτηθεί: -STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING} από το σταθμό {STRING} προς το σταθμό {STRING}{YELLOW} ({COMPANY}{YELLOW}, έως {DATE_SHORT}) -STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Πατήστε στην υπηρεσία για κεντράρισμα στην βιομηχανία/πόλη. Με Ctrl-κλικ ανοίγει ένα νεο παράθυρο προβολής στην τοποθεσία της βιομηχανίας/πόλης +STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING} από τον σταθμό {STRING} προς τον σταθμό {STRING}{YELLOW} ({COMPANY}{YELLOW}, έως τις {DATE_SHORT}) +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_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} STR_STATION_LIST_WAYPOINT :{YELLOW}{WAYPOINT} -STR_STATION_LIST_NONE :{YELLOW}- Κανένα - +STR_STATION_LIST_NONE :{YELLOW}- Κανένας - STR_STATION_LIST_SELECT_ALL_FACILITIES :{BLACK}Επιλογή όλων των εγκαταστάσεων STR_STATION_LIST_SELECT_ALL_TYPES :{BLACK}Επιλογή όλων των τύπων φορτίου (συμπεριλαμβανομένου φορτίου μη-αναμονής) 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_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} από μεταφορά από τον σταθμό {STATION}) +STR_STATION_VIEW_RESERVED :{YELLOW}({CARGO_SHORT} {P προορίζεται προορίζωνται} για φόρτωση STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Δέχεται STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Εμφάνιση λίστας αποδεκτών φορτίων STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}Δέχεται: {WHITE}{CARGO_LIST} STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Αυτός ο σταθμός έχει αποκλειστικά δικαιώματα μεταφοράς σε αυτήν την πόλη. -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} αγοράστηκαν αποκλειστικά δικαιώματα γι' αυτήν την πόλη. +STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} αγόρασε αποκλειστικά δικαιώματα για αυτήν την πόλη. STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Βαθμολογίες STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Εμφάνιση στατιστικών σταθμού -STR_STATION_VIEW_CARGO_RATINGS_TITLE :{BLACK}Τοπική βαθμολογία υπηρεσίας μεταφοράς: -STR_STATION_VIEW_CARGO_RATING :{WHITE}{STRING}: {YELLOW}{STRING} ({COMMA}%) +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 STR_CARGO_RATING_APPALLING :Απαίσια @@ -2962,24 +3097,24 @@ 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}Εμφάνιση όλων των τρένων που έχουν αυτό το σταθμό στο δρομολόγιο τους -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_SCHEDULED_TRAINS_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_CLOSE_AIRPORT :{BLACK}Κλείσιμο αεροδρομίου -STR_STATION_VIEW_CLOSE_AIRPORT_TOOLTIP :{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_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}Διαμόρφωση ονόματος σημείου καθοδήγησης @@ -3004,14 +3139,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 @@ -3023,7 +3158,7 @@ STR_COMPANY_VIEW_COLOUR_SCHEME_TITLE :{GOLD}Χρωμ STR_COMPANY_VIEW_VEHICLES_TITLE :{GOLD}Οχήματα: STR_COMPANY_VIEW_TRAINS :{WHITE}{COMMA} τρέν{P ο α} STR_COMPANY_VIEW_ROAD_VEHICLES :{WHITE}{COMMA} {P όχημα οχήματα} δρόμου -STR_COMPANY_VIEW_AIRCRAFT :{WHITE}{COMMA} αεροσκάφος +STR_COMPANY_VIEW_AIRCRAFT :{WHITE}{COMMA} αεροσκάφ{P ος η} STR_COMPANY_VIEW_SHIPS :{WHITE}{COMMA} πλοί{P ο α} STR_COMPANY_VIEW_VEHICLES_NONE :{WHITE}Κανένα STR_COMPANY_VIEW_COMPANY_VALUE :{GOLD}Αξία εταιρίας: {WHITE}{CURRENCY_LONG} @@ -3031,17 +3166,17 @@ STR_COMPANY_VIEW_SHARES_OWNED_BY :{WHITE}({COMMA} STR_COMPANY_VIEW_INFRASTRUCTURE :{GOLD}Υποδομή: STR_COMPANY_VIEW_INFRASTRUCTURE_RAIL :{WHITE}{COMMA} κομμάτι{P "" α} σιδηροτροχιάς STR_COMPANY_VIEW_INFRASTRUCTURE_ROAD :{WHITE}{COMMA} κομμάτι{P "" α} δρόμου -STR_COMPANY_VIEW_INFRASTRUCTURE_WATER :{WHITE}{COMMA} πεδί{P ο α} νερού -STR_COMPANY_VIEW_INFRASTRUCTURE_STATION :{WHITE}{COMMA} πεδί{P ο α} σταθμού +STR_COMPANY_VIEW_INFRASTRUCTURE_WATER :{WHITE}{COMMA} τετραγωνίδι{P ο α} νερού +STR_COMPANY_VIEW_INFRASTRUCTURE_STATION :{WHITE}{COMMA} τετραγωνίδι{P ο α} σταθμού STR_COMPANY_VIEW_INFRASTRUCTURE_AIRPORT :{WHITE}{COMMA} αεροδρόμι{P ο α} STR_COMPANY_VIEW_INFRASTRUCTURE_NONE :{WHITE}Τίποτα -STR_COMPANY_VIEW_BUILD_HQ_BUTTON :{BLACK}Χτίσιμο Αρχηγείου -STR_COMPANY_VIEW_BUILD_HQ_TOOLTIP :{BLACK}Χτίσιμο αρχηγείου εταιρίας +STR_COMPANY_VIEW_BUILD_HQ_BUTTON :{BLACK}Κτίσιμο Αρχηγείου +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% της αξίας της εταιρίας. Με Shift+κλικ εμφανίζεται το εκτιμώμενο κόστος χωρίς επανατοποθέτηση της έδρας. +STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Εποικοδόμηση της έδρας της εταιρίας σε άλλο μέρος, με κόστος το 1% της αξίας της εταιρίας. Με Shift+Κλικ εμφανίζεται το εκτιμώμενο κόστος χωρίς επανατοποθέτηση της έδρας STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}Λεπτομέρειες STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}Προβολή λεπτομερούς μέτρησης υποδομών @@ -3054,15 +3189,15 @@ STR_COMPANY_VIEW_COMPANY_NAME_TOOLTIP :{BLACK}Αλλα STR_COMPANY_VIEW_PRESIDENT_NAME_BUTTON :{BLACK}Όνομα Διευθυντή STR_COMPANY_VIEW_PRESIDENT_NAME_TOOLTIP :{BLACK}Αλλαγή του ονόματος του διευθυντή -STR_COMPANY_VIEW_BUY_SHARE_BUTTON :{BLACK}Αγορά μεριδίου 25% στην εταιρία +STR_COMPANY_VIEW_BUY_SHARE_BUTTON :{BLACK}Αγορά μεριδίου 25% της εταιρία STR_COMPANY_VIEW_SELL_SHARE_BUTTON :{BLACK}Πώληση μεριδίου 25% της εταιρίας -STR_COMPANY_VIEW_BUY_SHARE_TOOLTIP :{BLACK}Αγορά μεριδίου 25% σε αυτή την εταιρεία. Με Shift+κλικ εμφανίζεται το εκτιμώμενο κόστος χωρίς την αγορά μετοχών -STR_COMPANY_VIEW_SELL_SHARE_TOOLTIP :{BLACK}Πώληση μεριδίου 25% της εταιρίας. Με Shift+κλικ εμφανίζεται το εκτιμώμενο κέρδος χωρίς την πώληση μετοχών +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 :Όνομα Διευθυντή -STR_BUY_COMPANY_MESSAGE :{WHITE}Ψάχνουμε μία εταιρία μεταφορών για να εξαγοράσει την εταιρία μας.{}{}Θέλετε να εξαγοράσετε την {COMPANY} για {CURRENCY_LONG}? +STR_BUY_COMPANY_MESSAGE :{WHITE}Ψάχνουμε μία εταιρία μεταφορών για να εξαγοράσει την εταιρία μας.{}{}Θέλετε να εξαγοράσετε την {COMPANY} για {CURRENCY_LONG}; # Company infrastructure window STR_COMPANY_INFRASTRUCTURE_VIEW_CAPTION :{WHITE}Υποδομή της {COMPANY} @@ -3070,13 +3205,12 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_RAIL_SECT :{GOLD}Κομμ STR_COMPANY_INFRASTRUCTURE_VIEW_SIGNALS :{WHITE}Σήματα STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD_SECT :{GOLD}Κομμάτια δρόμου: STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD :{WHITE}Δρόμος -STR_COMPANY_INFRASTRUCTURE_VIEW_TRAMWAY :{WHITE}Τροχιόδρομος(τραμ) -STR_COMPANY_INFRASTRUCTURE_VIEW_WATER_SECT :{GOLD}Πεδία νερού: +STR_COMPANY_INFRASTRUCTURE_VIEW_TRAMWAY :{WHITE}Τροχιόδρομος +STR_COMPANY_INFRASTRUCTURE_VIEW_WATER_SECT :{GOLD}Τετραγωνίδια νερού: STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS :{WHITE}Κανάλια STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}Σταθμοί: -STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}Πεδία σταθμού +STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}Τετραγωνίδια σταθμού STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}Αεροδρόμια -STR_COMPANY_INFRASTRUCTURE_VIEW_COST :{WHITE}{1:CURRENCY_LONG}/έτος ({0:COMMA}) STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL :{WHITE}{CURRENCY_LONG}/έτος # Industry directory @@ -3085,14 +3219,14 @@ 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_PRODUCTION_LEVEL :{BLACK}Έπιπεδο παραγωγής: {YELLOW}{COMMA}% +STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Κεντράρισμα εικόνας στην περιοχή της βιομηχανίας. Με Ctrl+Κλικ ανοίγει νέο παράθυρο προβολής στην περιοχή της βιομηχανίας +STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Επίπεδο παραγωγής: {YELLOW}{COMMA}% ############ range for requires starts STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Απαιτεί: {YELLOW}{STRING}{STRING} @@ -3101,25 +3235,25 @@ STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Απαι ############ range for requires ends ############ range for produces starts -STR_INDUSTRY_VIEW_WAITING_FOR_PROCESSING :{BLACK}Εμπόρευμα σε αναμονή: +STR_INDUSTRY_VIEW_WAITING_FOR_PROCESSING :{BLACK}Εμπόρευματα σε αναμονή: STR_INDUSTRY_VIEW_WAITING_STOCKPILE_CARGO :{YELLOW}{CARGO_LONG}{STRING}{BLACK} STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Παράγει: {YELLOW}{STRING}{STRING} STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}Παράγει: {YELLOW}{STRING}{STRING}, {STRING}{STRING} ############ range for produces ends STR_CONFIG_GAME_PRODUCTION :{WHITE}Αλλαγή παραγωγής (πολλαπλάσιο του 8, μέχρι το 2040) -STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}Αλλαγή του έπιπεδου παραγωγής (ποσοστιαία, μέχρι το 800%) +STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}Αλλαγή του επιπέδου παραγωγής (ποσοστιαία, μέχρι το 800%) # Vehicle lists STR_VEHICLE_LIST_TRAIN_CAPTION :{WHITE}{STRING} - {COMMA} Τρέν{P ο α} STR_VEHICLE_LIST_ROAD_VEHICLE_CAPTION :{WHITE}{STRING} - {COMMA} {P Όχημα Οχήματα} δρόμου STR_VEHICLE_LIST_SHIP_CAPTION :{WHITE}{STRING} - {COMMA} Πλοί{P ο α} -STR_VEHICLE_LIST_AIRCRAFT_CAPTION :{WHITE}{STRING} - {COMMA} Αεροσκάφος +STR_VEHICLE_LIST_AIRCRAFT_CAPTION :{WHITE}{STRING} - {COMMA} Αεροσκάφ{P ος η} -STR_VEHICLE_LIST_TRAIN_LIST_TOOLTIP :{BLACK}Τρένα- Κάντε κλικ στο τρένο για πληροφορίες -STR_VEHICLE_LIST_ROAD_VEHICLE_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}Αεροσκάφη - πατήστε στο αεροσκάφος για πληροφορίες +STR_VEHICLE_LIST_AIRCRAFT_TOOLTIP :{BLACK}Αεροσκάφη - κάντε κλικ στο αεροσκάφος για πληροφορίες STR_VEHICLE_LIST_PROFIT_THIS_YEAR_LAST_YEAR :{TINY_FONT}{BLACK}Κέρδος αυτό το έτος: {CURRENCY_LONG} (προηγούμενο έτος: {CURRENCY_LONG}) @@ -3127,22 +3261,22 @@ STR_VEHICLE_LIST_AVAILABLE_TRAINS :Διαθέσι STR_VEHICLE_LIST_AVAILABLE_ROAD_VEHICLES :Διαθέσιμα Οχήματα STR_VEHICLE_LIST_AVAILABLE_SHIPS :Διαθέσιμα Πλοία STR_VEHICLE_LIST_AVAILABLE_AIRCRAFT :Διαθέσιμα Αεροσκάφη -STR_VEHICLE_LIST_AVAILABLE_ENGINES_TOOLTIP :{BLACK}Προβολή λίστας διαθέσιμων σχεδίων μηχανών για αυτον τύπο οχήματος +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_MANAGE_LIST_TOOLTIP :{BLACK}Στείλτε οδηγίες σε όλα τα οχήματα σε αυτήν τη λίστα +STR_VEHICLE_LIST_REPLACE_VEHICLES :Αντικατάσταση οχημάτων +STR_VEHICLE_LIST_SEND_FOR_SERVICING :Στείλτε για Επισκευή -STR_VEHICLE_LIST_SEND_TRAIN_TO_DEPOT :Στείλε στο υπόστεγο -STR_VEHICLE_LIST_SEND_ROAD_VEHICLE_TO_DEPOT :Στείλε στο αμαξοστασίο -STR_VEHICLE_LIST_SEND_SHIP_TO_DEPOT :Στείλε στο ναυπηγείο -STR_VEHICLE_LIST_SEND_AIRCRAFT_TO_HANGAR :Στείλε στο υπόστεγο +STR_VEHICLE_LIST_SEND_TRAIN_TO_DEPOT :Στείλτε στο Υπόστεγο +STR_VEHICLE_LIST_SEND_ROAD_VEHICLE_TO_DEPOT :Στείλτε στο Αμαξοστάσιο +STR_VEHICLE_LIST_SEND_SHIP_TO_DEPOT :Στείλε στο Ναυπηγείο +STR_VEHICLE_LIST_SEND_AIRCRAFT_TO_HANGAR :Στείλε στο Υπόστεγο STR_VEHICLE_LIST_MASS_STOP_LIST_TOOLTIP :{BLACK}Κάντε κλικ για να σταματήσουν όλα τα οχήματα στη λίστα STR_VEHICLE_LIST_MASS_START_LIST_TOOLTIP :{BLACK}Κάντε κλικ για να ξεκινήσουν όλα τα οχήματα στη λίστα -STR_VEHICLE_LIST_SHARED_ORDERS_LIST_CAPTION :{WHITE}Κοίνες εντόλες του {COMMA} {P οχήματος οχημάτων} +STR_VEHICLE_LIST_SHARED_ORDERS_LIST_CAPTION :{WHITE}Κοινές εντολές {P 0 του των} {COMMA} {P Οχήματος Οχημάτων} # Group window STR_GROUP_ALL_TRAINS :Όλα τα τρένα @@ -3150,27 +3284,28 @@ STR_GROUP_ALL_ROAD_VEHICLES :Όλα τα ο STR_GROUP_ALL_SHIPS :Όλα τα πλοία STR_GROUP_ALL_AIRCRAFTS :Όλα τα αεροσκάφη -STR_GROUP_DEFAULT_TRAINS :Αγκρουπάριστα τρένα -STR_GROUP_DEFAULT_ROAD_VEHICLES :Αγκρουπάριστα όχηματα δρόμου -STR_GROUP_DEFAULT_SHIPS :Αγκρουπάριστα πλοία -STR_GROUP_DEFAULT_AIRCRAFTS :Μη-ομαδοποιημένα αεροσκάφη +STR_GROUP_DEFAULT_TRAINS :Μη ομαδοποιημένα τρένα +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_GROUP_DELETE_TOOLTIP :{BLACK}Διαγραφή της επιλεγμένης ομάδας +STR_GROUP_RENAME_TOOLTIP :{BLACK}Μετονομασία της επιλεγμένης ομάδας +STR_GROUP_REPLACE_PROTECTION_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 :Αφαίρεση όλων των οχημάτων -STR_GROUP_RENAME_CAPTION :{BLACK}Μετονομασία ενός γκρουπ +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_MAGLEV_CAPTION :Νέα Οχήματα Μαγνητικής Αιώρησης +STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :Νέα Οχήματα Ηλεκτροδοτουμένου Σιδηρόδρομου +STR_BUY_VEHICLE_TRAIN_MONORAIL_CAPTION :Νέα Οχήματα Μονοτρόχιου +STR_BUY_VEHICLE_TRAIN_MAGLEV_CAPTION :Νέα Οχήματα Maglev STR_BUY_VEHICLE_TRAIN_ALL_CAPTION :Νέα Οχήματα Σιδηρόδρομου STR_BUY_VEHICLE_ROAD_VEHICLE_CAPTION :Νέα Οχήματα Δρόμου @@ -3178,60 +3313,60 @@ STR_BUY_VEHICLE_SHIP_CAPTION :Νέα Πλοί STR_BUY_VEHICLE_AIRCRAFT_CAPTION :Νέα Αεροσκάφη STR_PURCHASE_INFO_COST_WEIGHT :{BLACK}Κόστος: {GOLD}{CURRENCY_LONG}{BLACK} Βάρος: {GOLD}{WEIGHT_SHORT} -STR_PURCHASE_INFO_SPEED_POWER :{BLACK}Ταχύτητα: {GOLD}{VELOCITY}{BLACK} Ιπποδύναμη: {GOLD}{POWER} +STR_PURCHASE_INFO_SPEED_POWER :{BLACK}Ταχύτητα: {GOLD}{VELOCITY}{BLACK} Δύναμη κινητήρα: {GOLD}{POWER} STR_PURCHASE_INFO_SPEED :{BLACK}Ταχύτητα: {GOLD}{VELOCITY} STR_PURCHASE_INFO_SPEED_OCEAN :{BLACK}Ταχύτητα στον ωκεανό: {GOLD}{VELOCITY} STR_PURCHASE_INFO_SPEED_CANAL :{BLACK}Ταχύτητα σε κανάλι/ποταμό: {GOLD}{VELOCITY} STR_PURCHASE_INFO_RUNNINGCOST :{BLACK}Λειτουργικό Κόστος: {GOLD}{CURRENCY_LONG}/χρ STR_PURCHASE_INFO_CAPACITY :{BLACK}Χωρητικότητα: {GOLD}{CARGO_LONG} {STRING} STR_PURCHASE_INFO_REFITTABLE :(μετατρέψιμο) -STR_PURCHASE_INFO_DESIGNED_LIFE :{BLACK}Έτος σχεδίασης: {GOLD}{NUM}{BLACK} Χρόνος ζώης: {GOLD}{COMMA} χρόν{P ο ια} -STR_PURCHASE_INFO_RELIABILITY :{BLACK}Μεγ. Αξιοπιστία: {GOLD}{COMMA}% +STR_PURCHASE_INFO_DESIGNED_LIFE :{BLACK}Έτος σχεδίασης: {GOLD}{NUM}{BLACK} Χρόνος ζωής: {GOLD}{COMMA} χρόν{P ο ια} +STR_PURCHASE_INFO_RELIABILITY :{BLACK}Μέγ. Αξιοπιστία: {GOLD}{COMMA}% STR_PURCHASE_INFO_COST :{BLACK}Κόστος: {GOLD}{CURRENCY_LONG} STR_PURCHASE_INFO_WEIGHT_CWEIGHT :{BLACK}Βάρος: {GOLD}{WEIGHT_SHORT} ({WEIGHT_SHORT}) STR_PURCHASE_INFO_COST_SPEED :{BLACK}Κόστος: {GOLD}{CURRENCY_LONG}{BLACK} Ταχύτητα: {GOLD}{VELOCITY} 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_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_MAX_TE :{BLACK}Μεγ. Δύναμη Έλξης: {GOLD}{FORCE} -STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Εύρος: {GOLD}{COMMA} πεδία +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_SHIP_LIST_TOOLTIP :{BLACK}Λίστα επιλεγμένων πλοίων - κάντε κλικ σε ένα πλοίο για πληροφορίες +STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Λίστα επιλεγμένων αεροσκαφών - κάντε κλικ σε ένα αεροσκάφος για πληροφορίες STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_BUTTON :{BLACK}Αγορά Οχήματος 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}Αγοράστε το επιλεγμένο οχήμα τρένου. Με 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_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}Μετανομασία -STR_BUY_VEHICLE_SHIP_RENAME_BUTTON :{BLACK}Μετανομασία -STR_BUY_VEHICLE_AIRCRAFT_RENAME_BUTTON :{BLACK}Μετανομασία +STR_BUY_VEHICLE_TRAIN_RENAME_BUTTON :{BLACK}Μετονομασία +STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_BUTTON :{BLACK}Μετονομασία +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_SHIP_RENAME_TOOLTIP :{BLACK}Μετανομάζει τον τύπο πλοίο -STR_BUY_VEHICLE_AIRCRAFT_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}Μετονομασία του τύπου πλοίου +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}Μετονομασία τύπου αεροσκάφους # Depot window STR_DEPOT_CAPTION :{WHITE}{DEPOT} -STR_DEPOT_RENAME_TOOLTIP :{BLACK}Αλλαγή του ονοματός του αμαξοστάσιου/ναυπηγείου +STR_DEPOT_RENAME_TOOLTIP :{BLACK}Αλλαγή του ονόματός του αμαξοστάσιου/ναυπηγείου STR_DEPOT_RENAME_DEPOT_CAPTION :Μετονομασία αμαξοστασίου/ναυπηγείου STR_DEPOT_NO_ENGINE :{BLACK}- @@ -3239,52 +3374,52 @@ STR_DEPOT_VEHICLE_TOOLTIP :{BLACK}{ENGINE} STR_DEPOT_VEHICLE_TOOLTIP_CHAIN :{BLACK}{NUM} {P όχημα οχήματα}{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_SHIP_LIST_TOOLTIP :{BLACK}Πλοία - δέξι κλικ σε ένα πλοίο για πληροφορίες -STR_DEPOT_AIRCRAFT_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_SHIP_SELL_TOOLTIP :{BLACK}Μεταφέρετε το πλοίο εδώ για το πουλήσετε -STR_DEPOT_AIRCRAFT_SELL_TOOLTIP :{BLACK}Μεταφέρετε το αεροσκάφος εδώ για το πουλήσετε +STR_DEPOT_TRAIN_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_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_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}Αυτόματη αντικατάσταση όλων των αεροσκαφών του υποστέγου -STR_DEPOT_TRAIN_NEW_VEHICLES_BUTTON :{BLACK}Νεα τρένα-βαγόνια -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_BUTTON :{BLACK}Νέα Τρένα/Βαγόνια +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_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 :{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+κλικ θα έχει τις ίδιες εντολές. Με 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_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}Παίρνετε μια λίστα με όλα τα οχήματα δρόμου με το επιλεγμένο αμαξοστάσιο στις εντολές τους @@ -3298,125 +3433,125 @@ 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_SHIP_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}Μόλις ολοκληρώσαμε την σχεδιάση {G ενός μιας ενός} {G νέου νέας νέου} {STRING.geniki} - θα ενδιαφερόσασταν για ενός έτους αποκλειστικής χρήσης αυτού του οχήματος, για να δούμε την απόδοση του πριν το κάνουμε ευρέως διαθέσιμο; +STR_ENGINE_PREVIEW_CAPTION :{WHITE}Μήνυμα από κατασκευαστή οχημάτων +STR_ENGINE_PREVIEW_MESSAGE :{GOLD}Μόλις ολοκληρώσαμε την σχεδίαση {G ενός μίας ενός} {G νέου νέας νέου} {STRING.geniki} - θα ενδιαφερόσασταν για ενός έτους αποκλειστικής χρήσης αυτού του οχήματος, για να δούμε την απόδοση του πριν το κάνουμε ευρέως διαθέσιμο; STR_ENGINE_PREVIEW_RAILROAD_LOCOMOTIVE :{G=f}ατμομηχανή STR_ENGINE_PREVIEW_RAILROAD_LOCOMOTIVE.geniki :{G=f}ατμομηχανής -STR_ENGINE_PREVIEW_ROAD_VEHICLE :{G=n}Όχημα δρόμου +STR_ENGINE_PREVIEW_ROAD_VEHICLE :{G=n}οχήματος δρόμου STR_ENGINE_PREVIEW_ROAD_VEHICLE.geniki :{G=n}Οχήματος δρόμου -STR_ENGINE_PREVIEW_AIRCRAFT :{G=n}αεροσκάφος +STR_ENGINE_PREVIEW_AIRCRAFT :{G=n}αεροσκάφους STR_ENGINE_PREVIEW_AIRCRAFT.geniki :{G=n}αεροπλάνου -STR_ENGINE_PREVIEW_SHIP :{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 :{G=f}μηχανής maglev STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE.geniki :{G=f}μηχανής maglev -STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Κόστος: {CURRENCY_LONG} Βάρος: {WEIGHT_SHORT}{}Ταχύτητα: {VELOCITY} Ιπποδύναμη: {POWER}{}Κόστος Λειτουργίας: {CURRENCY_LONG}/χρ{}Χωρητικότητα: {CARGO_LONG} -STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}Κόστος: {CURRENCY_LONG} Βάρος: {WEIGHT_SHORT}{}Ταχύτητα: {VELOCITY} Ιπποδύναμη: {POWER} Μεγ. Ε.Δ: {6:FORCE}{}Λειτουργικό Κόστος: {4:CURRENCY_LONG}/yr{}Χωρητικότητα: {5:CARGO_LONG} -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST :{BLACK}Κόστος: {CURRENCY_LONG} Μεγ. Ταχύτητα: {VELOCITY}{}Χωρητικότητα: {CARGO_LONG}, {CARGO_LONG}{}Κόστος Λειτουργίας: {CURRENCY_LONG}/χρ -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK}Κόστος: {CURRENCY_LONG} Μεγ. Ταχύτητα: {VELOCITY}{}Χωρητικότητα: {CARGO_LONG}{}Κόστος Λειτουργίας: {CURRENCY_LONG}/χρ -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_CAPACITY_RUNCOST:{BLACK}Κόστος: {CURRENCY_LONG} Μέγ. ταχύτητα: {VELOCITY} Εμβέλεια: {COMMA} τετραγωνίδια{}Χωρητικότητα: {CARGO_LONG}, {CARGO_LONG}{}Κόστος λειτουργίας: {CURRENCY_LONG}/έτος -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}Κόστος: {CURRENCY_LONG} Μέγ. ταχύτητα: {VELOCITY} Εμβέλεια: {COMMA} τετραγωνίδια{}Χωρητικότητα: {CARGO_LONG}{}Κόστος λειτουργίας: {CURRENCY_LONG}/έτος +STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Κόστος: {CURRENCY_LONG} Βάρος: {WEIGHT_SHORT}{}Ταχύτητα: {VELOCITY} Δύναμη Κινητήρα: {POWER}{}Κόστος Λειτουργίας: {CURRENCY_LONG}/έτος{}Χωρητικότητα: {CARGO_LONG} +STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}Κόστος: {CURRENCY_LONG} Βάρος: {WEIGHT_SHORT}{}Ταχύτητα: {VELOCITY} Δύναμη Κινητήρα: {POWER} Μεγ. Ε.Δ: {6:FORCE}{}Λειτουργικό Κόστος: {4:CURRENCY_LONG}/έτος{}Χωρητικότητα: {5:CARGO_LONG} +STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST :{BLACK}Κόστος: {CURRENCY_LONG} Μέγ. Ταχύτητα: {VELOCITY}{}Χωρητικότητα: {CARGO_LONG}, {CARGO_LONG}{}Κόστος Λειτουργίας: {CURRENCY_LONG}/έτος +STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK}Κόστος: {CURRENCY_LONG} Μέγ. Ταχύτητα: {VELOCITY}{}Χωρητικότητα: {CARGO_LONG}{}Κόστος Λειτουργίας: {CURRENCY_LONG}/έτος +STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_CAPACITY_RUNCOST:{BLACK}Κόστος: {CURRENCY_LONG} Μέγ. Ταχύτητα: {VELOCITY} Εμβέλεια: {COMMA} τετραγωνίδια{}Χωρητικότητα: {CARGO_LONG}, {CARGO_LONG}{}Κόστος Λειτουργίας: {CURRENCY_LONG}/έτος +STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}Κόστος: {CURRENCY_LONG} Μέγ. Ταχύτητα: {VELOCITY} Εμβέλεια: {COMMA} τετραγωνίδια{}Χωρητικότητα: {CARGO_LONG}{}Κόστος Λειτουργίας: {CURRENCY_LONG}/έτος # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}Αντικατάσταση {STRING} - {STRING} STR_REPLACE_VEHICLE_TRAIN :Τρένο -STR_REPLACE_VEHICLE_ROAD_VEHICLE :Όχημα +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}Επιλέξτε το νέο τύπο μηχανής που θέλετε να χρησιμοποιηθεί στην θέση του επιλεγμένου στα αριστερα τύπου μηχανής +STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Επιλέξτε τον τύπο μηχανής για αντικατάσταση +STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Επιλέξτε τον νέο τύπο μηχανής που θέλετε να χρησιμοποιηθεί στην θέση του επιλεγμένου τύπου μηχανής στα αριστερά -STR_REPLACE_VEHICLES_START :{BLACK}Εκκίνηση της Αντικατάστασης Οχημάτων +STR_REPLACE_VEHICLES_START :{BLACK}Εκκίνηση Αντικατάστασης Οχημάτων STR_REPLACE_VEHICLES_NOW :Αντικατάσταση όλων των οχημάτων τώρα STR_REPLACE_VEHICLES_WHEN_OLD :Αντικατάσταση μόνο παλιών οχημάτων -STR_REPLACE_HELP_START_BUTTON :{BLACK}Πατήστε για να ξεκινήσει η αντικατάσταση του αριστερά επιλεγμένου τύπου μηχανής με το δεξιά επιλεγμένο τύπο μηχανής +STR_REPLACE_HELP_START_BUTTON :{BLACK}Πατήστε για να ξεκινήσει η αντικατάσταση του αριστερά επιλεγμένου τύπου μηχανής με τον τύπο μηχανής επιλεγμένο δεξιά STR_REPLACE_NOT_REPLACING :{BLACK}Δεν γίνεται αντικατάσταση STR_REPLACE_NOT_REPLACING_VEHICLE_SELECTED :{BLACK}Δεν έχει επιλεχτεί όχημα STR_REPLACE_REPLACING_WHEN_OLD :{ENGINE} όταν είναι παλιό -STR_REPLACE_VEHICLES_STOP :{BLACK}Σταμάτημα της Αντικατάστασης Οχημάτων -STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Πατήστε για να σταματήσει η αντικατάσταση του επιλεγμένου στα αριστερά τυπου μηχανής +STR_REPLACE_VEHICLES_STOP :{BLACK}Διακοπή Αντικατάστασης Οχημάτων +STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Πατήστε για να σταματήσει η αντικατάσταση του τύπου μηχανής επιλεγμένος στα αριστερά STR_REPLACE_ENGINE_WAGON_SELECT :{BLACK}Αντικατάσταση: {ORANGE}{STRING} -STR_REPLACE_ENGINE_WAGON_SELECT_HELP :{BLACK}Εναλλάγη μεταξύ των παραθύρων αντικαταστάσης μηχανών και βαγονιών +STR_REPLACE_ENGINE_WAGON_SELECT_HELP :{BLACK}Εναλλαγή μεταξύ των παραθύρων αντικατάστασης μηχανών και βαγονιών STR_REPLACE_ENGINES :Μηχανές STR_REPLACE_WAGONS :Βαγόνια STR_REPLACE_HELP_RAILTYPE :{BLACK}Επιλέξτε τον τύπο σιδηροδρόμου για τον οποίο θέλετε να γίνει η αντικατάσταση των μηχανών -STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Εμφάνιζει ποια μηχανή στα αριστερά θα αντικατασταθεί, εαν υπάρχει -STR_REPLACE_RAIL_VEHICLES :Οχήματα σιδηροδρόμου +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}Υποχρεώνει την αυτομάτη αντικατάσταση να διατηρεί σταθερό το μήκος του τραίνου αφαιρώντας βαγόνια (ξεκινωντας από μπροστά), όταν η αντικατάσταση της μηχανής κάνει το τραίνο μεγαλύτερο. +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_AIRCRAFT_SEND_TO_DEPOT_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_AIRCRAFT_SEND_TO_DEPOT_TOOLTIP :{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_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}Αναγκάστε το τρένο να προχωρήσει χώρις να περιμένει το σηματοδότη να το επιτρέψει +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_TRAIN_REVERSE_TOOLTIP :{BLACK}Αναστροφή κατεύθυνσης τρένου 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_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+Click για να πάτε στο προορισμό -STR_VEHICLE_VIEW_ROAD_VEHICLE_STATE_START_STOP_TOOLTIP :{BLACK}Τρέχουσα ενέργεια οχήματος - κάντε κλικ εδώ για ξεκινήσετε/σταματήσετε το όχημα. Ctrl+Click για να πάτε στο προορισμό -STR_VEHICLE_VIEW_SHIP_STATE_START_STOP_TOOLTIP :{BLACK}Τρέχουσα ενέργεια πλοίου - κάντε κλικ εδώ για ξεκινήσετε/σταματήσετε το πλοίο. Ctrl+Click για να πάτε στο προορισμό -STR_VEHICLE_VIEW_AIRCRAFT_STATE_START_STOP_TOOLTIP :{BLACK}Τρέχουσα ενέργεια αεροσκάφους - πατήστε για ξεκινήσετε/σταματήσετε το αεροσκάφος. Ctrl + Κλικ για να κυλήσετε στον προορισμό +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}Φόρτωση / Ξεφόρτωση -STR_VEHICLE_STATUS_LEAVING :{LTBLUE}Αναχώρηση +STR_VEHICLE_STATUS_LEAVING :{LTBLUE}Αναχωρεί STR_VEHICLE_STATUS_CRASHED :{RED}Κατεστραμμένο! STR_VEHICLE_STATUS_BROKEN_DOWN :{RED}Χαλασμένο STR_VEHICLE_STATUS_STOPPED :{RED}Σταματημένο STR_VEHICLE_STATUS_TRAIN_STOPPING_VEL :{RED}Σταματάει, {VELOCITY} -STR_VEHICLE_STATUS_TRAIN_NO_POWER :{RED}Χώρις ενέργεια κίνησης +STR_VEHICLE_STATUS_TRAIN_NO_POWER :{RED}Χωρίς ενέργεια κίνησης STR_VEHICLE_STATUS_TRAIN_STUCK :{ORANGE}Αναμονή για ελεύθερη τροχιά STR_VEHICLE_STATUS_AIRCRAFT_TOO_FAR :{ORANGE}Υπερβολικά μακριά από τον επόμενο προορισμό STR_VEHICLE_STATUS_HEADING_FOR_STATION_VEL :{LTBLUE}Πάει προς {STATION}, {VELOCITY} -STR_VEHICLE_STATUS_NO_ORDERS_VEL :{LTBLUE}Δεν έχει οδηγίες, {VELOCITY} +STR_VEHICLE_STATUS_NO_ORDERS_VEL :{LTBLUE}Δεν έχει εντολές, {VELOCITY} STR_VEHICLE_STATUS_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}Πορεία προς {WAYPOINT}, {VELOCITY} STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_VEL :{ORANGE}Κατεύθυνση για το {DEPOT}, {VELOCITY} STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_SERVICE_VEL :{LTBLUE}Επισκευή στο {DEPOT}, {VELOCITY} @@ -3428,26 +3563,26 @@ STR_VEHICLE_COMMAND_STARTED_SMALL :{TINY_FONT}{GRE STR_VEHICLE_COMMAND_STARTED :{GREEN}Ξεκίνησε # Vehicle details -STR_VEHICLE_DETAILS_CAPTION :{WHITE}{VEHICLE} (Λεπτομέριες) -STR_VEHICLE_NAME_BUTTON :{BLACK}Όνομα +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_SHIP_RENAME :{BLACK}Όνομα πλοίου -STR_VEHICLE_DETAILS_AIRCRAFT_RENAME :{BLACK}Όνομα αεροσκάφους +STR_VEHICLE_DETAILS_TRAIN_RENAME :{BLACK}Ονομασία τρένου +STR_VEHICLE_DETAILS_ROAD_VEHICLE_RENAME :{BLACK}Ονομασία οχήματος δρόμου +STR_VEHICLE_DETAILS_SHIP_RENAME :{BLACK}Ονομασία πλοίου +STR_VEHICLE_DETAILS_AIRCRAFT_RENAME :{BLACK}Ονομασία αεροσκάφους -STR_VEHICLE_INFO_AGE_RUNNING_COST_YR :{BLACK}Ηλικία: {LTBLUE}{STRING}{BLACK} Λειτουργικό Κόστος: {LTBLUE}{CURRENCY_LONG}/χρ +STR_VEHICLE_INFO_AGE_RUNNING_COST_YR :{BLACK}Ηλικία: {LTBLUE}{STRING}{BLACK} Λειτουργικό Κόστος: {LTBLUE}{CURRENCY_LONG}/έτος # The next two need to stay in this order STR_VEHICLE_INFO_AGE :{COMMA} χρόν{P ος ια} ({COMMA}) STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} χρόν{P ος ια} ({COMMA}) -STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Μεγ. ταχύτητα: {LTBLUE}{VELOCITY} +STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Μέγ. ταχύτητα: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_MAX_SPEED_RANGE :{BLACK}Μέγ. ταχύτητα: {LTBLUE}{VELOCITY} {BLACK}Εμβέλεια: {LTBLUE}{COMMA} τετραγωνίδια -STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Βάρος: {LTBLUE}{WEIGHT_SHORT} {BLACK}Ιπποδύναμη: {LTBLUE}{POWER}{BLACK} Μεγ. Ταχύτητα: {LTBLUE}{VELOCITY} -STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Βάρος: {LTBLUE}{WEIGHT_SHORT} {BLACK}Ιπποδύναμη: {LTBLUE}{POWER}{BLACK} Μεγ. Ταχύτητα: {LTBLUE}{VELOCITY} {BLACK}Μεγ. Ε.Δ: {LTBLUE}{FORCE} +STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Βάρος: {LTBLUE}{WEIGHT_SHORT} {BLACK}Δύναμη Κινητήρα: {LTBLUE}{POWER}{BLACK} Μέγ. Ταχύτητα: {LTBLUE}{VELOCITY} +STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Βάρος: {LTBLUE}{WEIGHT_SHORT} {BLACK}Δύναμη Κινητήρα: {LTBLUE}{POWER}{BLACK} Μέγ. Ταχύτητα: {LTBLUE}{VELOCITY} {BLACK}Μέγ. Ε.Δ: {LTBLUE}{FORCE} -STR_VEHICLE_INFO_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Κέρδη έτους: {LTBLUE}{CURRENCY_LONG} (προηγούμενου έτους: {CURRENCY_LONG}) -STR_VEHICLE_INFO_RELIABILITY_BREAKDOWNS :{BLACK}Αξιοπιστία: {LTBLUE}{COMMA}% {BLACK}Βλάβες μετά την τελευταία επισκευή: {LTBLUE}{COMMA} +STR_VEHICLE_INFO_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Κέρδη αυτό το έτος: {LTBLUE}{CURRENCY_LONG} (προηγούμενου έτους: {CURRENCY_LONG}) +STR_VEHICLE_INFO_RELIABILITY_BREAKDOWNS :{BLACK}Αξιοπιστία: {LTBLUE}{COMMA}% {BLACK}Καταρρεύσεις μετά από την τελευταία επισκευή: {LTBLUE}{COMMA} STR_VEHICLE_INFO_BUILT_VALUE :{LTBLUE}{ENGINE} {BLACK}Κατασκευή: {LTBLUE}{NUM}{BLACK} Αξία: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_INFO_NO_CAPACITY :{BLACK}Χωρητικότητα: {LTBLUE}Τίποτα{STRING} @@ -3459,8 +3594,13 @@ STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}Έσοδ 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_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_VEHICLE_DETAILS_DEFAULT :Προκαθορισμένο +STR_VEHICLE_DETAILS_DAYS :Ημέρες +STR_VEHICLE_DETAILS_PERCENT :Ποσοστό STR_QUERY_RENAME_TRAIN_CAPTION :{WHITE}Όνομα τρένου STR_QUERY_RENAME_ROAD_VEHICLE_CAPTION :{WHITE}Όνομα οχήματος δρόμου @@ -3476,13 +3616,13 @@ STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY :{LTBLUE}- {CARG STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY_MULT :{LTBLUE}- {CARGO_LONG} ({CARGO_SHORT}) (x{NUM}) STR_VEHICLE_DETAILS_CARGO_EMPTY :{LTBLUE}Άδειο -STR_VEHICLE_DETAILS_CARGO_FROM :{LTBLUE}{CARGO_LONG} από σταθμό {STATION} -STR_VEHICLE_DETAILS_CARGO_FROM_MULT :{LTBLUE}{CARGO_LONG} από σταθμό {STATION} (x{NUM}) +STR_VEHICLE_DETAILS_CARGO_FROM :{LTBLUE}{CARGO_LONG} από τον σταθμό {STATION} +STR_VEHICLE_DETAILS_CARGO_FROM_MULT :{LTBLUE}{CARGO_LONG} από τον σταθμό {STATION} (x{NUM}) STR_VEHICLE_DETAIL_TAB_CARGO :{BLACK}Φορτίο -STR_VEHICLE_DETAILS_TRAIN_CARGO_TOOLTIP :{BLACK}Παρουσίαση λεπτομερίων μεταφερώμενων εμπορευμάτων +STR_VEHICLE_DETAILS_TRAIN_CARGO_TOOLTIP :{BLACK}Παρουσίαση λεπτομερειών μεταφερόμενων εμπορευμάτων STR_VEHICLE_DETAIL_TAB_INFORMATION :{BLACK}Πληροφορίες -STR_VEHICLE_DETAILS_TRAIN_INFORMATION_TOOLTIP :{BLACK}Εμφάνιση των λεπτομερίων των βαγονιών +STR_VEHICLE_DETAILS_TRAIN_INFORMATION_TOOLTIP :{BLACK}Εμφάνιση των λεπτομερειών των βαγονιών STR_VEHICLE_DETAIL_TAB_CAPACITIES :{BLACK}Χωρητικότητες STR_VEHICLE_DETAILS_TRAIN_CAPACITIES_TOOLTIP :{BLACK}Εμφάνιση της χωρητικότητας κάθε βαγονιού STR_VEHICLE_DETAIL_TAB_TOTAL_CARGO :{BLACK}Συνολικό Φορτίο @@ -3493,31 +3633,33 @@ STR_VEHICLE_DETAILS_TRAIN_ARTICULATED_RV_CAPACITY :{BLACK}Χωρη # Vehicle refit STR_REFIT_CAPTION :{WHITE}{VEHICLE} (Μετατροπή) STR_REFIT_TITLE :{GOLD}Επιλέξτε τύπο εμπορεύματος για μεταφορά: -STR_REFIT_NEW_CAPACITY_COST_OF_REFIT :{BLACK}Νεα χωρητικότητα: {GOLD}{CARGO_LONG}{}{BLACK}Κόστος μετατροπής: {RED}{CURRENCY_LONG} -STR_REFIT_NEW_CAPACITY_COST_OF_AIRCRAFT_REFIT :{BLACK}Νεα χωρητικότητα: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Κόστος μετατροπής: {RED}{CURRENCY_LONG} -STR_REFIT_SELECT_VEHICLES_TOOLTIP :{BLACK}Επιλέγει το όχημα για μετατροπή. Σύροντας με το ποντίκι επιτρέπει επιλογή πολλαπλών οχημάτων. Κάνοντας κλικ σε άδειο χώρο θα επιλέξει όλο το όχημα. Ctrl+κλικ θα γίνει επιλογή του οχήματος και την επόμενης αλυσίδας +STR_REFIT_NEW_CAPACITY_COST_OF_REFIT :{BLACK}Νέα χωρητικότητα: {GOLD}{CARGO_LONG}{}{BLACK}Κόστος μετατροπής: {RED}{CURRENCY_LONG} +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_TRAIN_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_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_SHIP_REFIT_TOOLTIP :{BLACK}Μετατροπή του πλοίου για να γίνει μεταφορά του επιλεγμένου τύπου εμπορεύματος -STR_REFIT_AIRCRAFT_REFIT_TOOLTIP :{BLACK}Μετατροπή του αεροσκάφους για να μεταφέρει τον επιλεγμένο τύπο εμπορεύματος +STR_REFIT_TRAIN_REFIT_TOOLTIP :{BLACK}Μετατροπή του τρένου ώστε να μεταφέρει τον επιλεγμένο τύπο εμπορεύματος +STR_REFIT_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}Μετατροπή του οχήματος ώστε να μεταφέρει τον επιλεγμένο τύπο εμπορεύματος +STR_REFIT_SHIP_REFIT_TOOLTIP :{BLACK}Μετατροπή του πλοίου ώστε να μεταφέρει τον επιλεγμένο τύπο εμπορεύματος +STR_REFIT_AIRCRAFT_REFIT_TOOLTIP :{BLACK}Μετατροπή του αεροσκάφους ώστε να μεταφέρει τον επιλεγμένο τύπο εμπορεύματος # Order view STR_ORDERS_CAPTION :{WHITE}{VEHICLE} (Εντολές) STR_ORDERS_TIMETABLE_VIEW :{BLACK}Δρομολόγια -STR_ORDERS_TIMETABLE_VIEW_TOOLTIP :{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} @@ -3527,35 +3669,35 @@ STR_ORDERS_END_OF_SHARED_ORDERS :- - Τέλος # Order bottom buttons STR_ORDER_NON_STOP :{BLACK}Χωρίς στάση STR_ORDER_GO_TO :Πήγαινε στο -STR_ORDER_GO_NON_STOP_TO :Πήγαινε χωρίς στάση στο +STR_ORDER_GO_NON_STOP_TO :Πήγαινε χωρίς στάσεις στο STR_ORDER_GO_VIA :Πήγαινε μέσω -STR_ORDER_GO_NON_STOP_VIA :Πήγαινε χωρίς στάση μέσω -STR_ORDER_TOOLTIP_NON_STOP :{BLACK}Αλλάξε τη συμπεριφορά στάσης για την τονισμένη εντολή +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_TOGGLE_FULL_LOAD :{BLACK}Πλήρης φόρτωση οποιουδήποτε εμπορεύματος +STR_ORDER_DROP_LOAD_IF_POSSIBLE :Φόρτωση εάν υπάρχουν διαθέσιμα STR_ORDER_DROP_FULL_LOAD_ALL :Πλήρης φόρτωση όλων των εμπορευμάτων STR_ORDER_DROP_FULL_LOAD_ANY :Πλήρης φόρτωση οποιουδήποτε εμπορεύματος STR_ORDER_DROP_NO_LOADING :Δίχως φόρτωση -STR_ORDER_TOOLTIP_FULL_LOAD :{BLACK}Αλλάξε τη συμπεριφορά φόρτωσης για την τονισμένη εντολή +STR_ORDER_TOOLTIP_FULL_LOAD :{BLACK}Αλλάξτε τη συμπεριφορά φόρτωσης για την επιλεγμένη εντολή STR_ORDER_TOGGLE_UNLOAD :{BLACK}Ξεφόρτωμα όλων -STR_ORDER_DROP_UNLOAD_IF_ACCEPTED :Ξεφόρτωμα έαν είναι αποδεκτό +STR_ORDER_DROP_UNLOAD_IF_ACCEPTED :Ξεφόρτωμα εάν είναι αποδεκτά STR_ORDER_DROP_UNLOAD :Ξεφόρτωμα όλων STR_ORDER_DROP_TRANSFER :Μεταφορά STR_ORDER_DROP_NO_UNLOADING :Δίχως ξεφόρτωση -STR_ORDER_TOOLTIP_UNLOAD :{BLACK}Αλλάξε τη συμπεριφορά ξεφόρτωσης για την τονισμένη εντολή +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 :Διαθέσιμο φορτίο 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}Παράλειψη αυτής της εντολής εκτός αν χρειάζεται επισκευή @@ -3576,7 +3718,7 @@ STR_ORDER_CONDITIONAL_COMPARATOR_NOT_EQUALS :δεν είνα STR_ORDER_CONDITIONAL_COMPARATOR_LESS_THAN :είναι μικρότερο από STR_ORDER_CONDITIONAL_COMPARATOR_LESS_EQUALS :είναι μικρότερο ή ίσο από STR_ORDER_CONDITIONAL_COMPARATOR_MORE_THAN :είναι περισσότερο από -STR_ORDER_CONDITIONAL_COMPARATOR_MORE_EQUALS :είναι περισσότερο ή ισο από +STR_ORDER_CONDITIONAL_COMPARATOR_MORE_EQUALS :είναι περισσότερο από ή ισο με STR_ORDER_CONDITIONAL_COMPARATOR_IS_TRUE :είναι αληθές STR_ORDER_CONDITIONAL_COMPARATOR_IS_FALSE :είναι ψευδές @@ -3584,34 +3726,34 @@ 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_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}Εμφάνιση όλων των οχήματων που μοιράζονται αυτό το δρομολόγιο +STR_ORDERS_VEH_WITH_SHARED_ORDERS_LIST_TOOLTIP :{BLACK}Εμφάνιση όλων των οχημάτων που μοιράζονται αυτό το δρομολόγιο # String parts to build the order string 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_NON_STOP_AT :Επισκευή χωρίς στάση στο STR_ORDER_NEAREST_DEPOT :το κοντινότερο STR_ORDER_NEAREST_HANGAR :το κοντινότερο Υπόστεγο -STR_ORDER_TRAIN_DEPOT :Αμαξοστάσιο τρένων -STR_ORDER_ROAD_VEHICLE_DEPOT :Αμαξοστάσιο οχημάτων +STR_ORDER_TRAIN_DEPOT :Αμαξοστάσιο Τρένων +STR_ORDER_ROAD_VEHICLE_DEPOT :Αμαξοστάσιο Οχημάτων STR_ORDER_SHIP_DEPOT :Ναυπηγείο Πλοίων STR_ORDER_GO_TO_NEAREST_DEPOT_FORMAT :{STRING} {STRING} {STRING} STR_ORDER_GO_TO_DEPOT_FORMAT :{STRING} {DEPOT} @@ -3627,28 +3769,28 @@ STR_ORDER_IMPLICIT :(Σιωπηρή 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_ANY :(Ξεφόρτωμα και αναμόνη για πλήρης φόρτωση οποιουδήποτε) +STR_ORDER_UNLOAD :(Ξεφόρτωσε και πάρε φορτίο) +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_FULL_LOAD_ANY :(Μετάφορα και αναμονή για πλήρης φόρτωση οποιοδήποτε φορτίου) +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_NO_LOAD :(Χώρις ξεφόρτωση και χώρις φόρτωση) +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}) 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_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}) @@ -3672,52 +3814,51 @@ 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_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_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_TOTAL_TIME :{BLACK}Το δρομολόγιο αυτό θα χρειαστεί τουλάχιστον {STRING} για να ολοκληρωθεί. +STR_TIMETABLE_TOTAL_TIME :{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_NOT_STARTED :{BLACK}Αυτό το δρομολόγιο ακόμα δεν έχει ξεκίνησει -STR_TIMETABLE_STATUS_START_AT :{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_STARTING_DATE :{BLACK}Εναρκτήρια ημερομηνία -STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Επιλέξτε μια ημερομηνία ως αρχή για αυτό το δρομολόγιο STR_TIMETABLE_CHANGE_TIME :{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_TOOLTIP :{BLACK}Αλλαγή της μέγιστης ταχύτητα ταξιδίου της επιλεγμένης σειράς +STR_TIMETABLE_CHANGE_SPEED :{BLACK}Αλλαγή Ορίου Ταχύτητας +STR_TIMETABLE_CHANGE_SPEED_TOOLTIP :{BLACK}Αλλαγή της μέγιστης ταχύτητας ταξιδιού της επιλεγμένης εντολής -STR_TIMETABLE_CLEAR_SPEED :{BLACK}Καθαρισμός ορίου ταχύτητας -STR_TIMETABLE_CLEAR_SPEED_TOOLTIP :{BLACK}Καθαρίζει την μέγιστη ταχύτητα ταξιδιού της επιλεγμένης σειράς +STR_TIMETABLE_CLEAR_SPEED :{BLACK}Εκκαθάριση Ορίου Ταχύτητας +STR_TIMETABLE_CLEAR_SPEED_TOOLTIP :{BLACK}Καθαρίζει τη μέγιστη ταχύτητα ταξιδιού της επιλεγμένης εντολής STR_TIMETABLE_RESET_LATENESS :{BLACK}Επαναφορά Μετρητή Καθυστέρησης STR_TIMETABLE_RESET_LATENESS_TOOLTIP :{BLACK}Επαναφορά του μετρητή καθυστέρησης, ώστε το όχημα να είναι στην ώρα του -STR_TIMETABLE_AUTOFILL :{BLACK}Αυτόματη πλήρωση -STR_TIMETABLE_AUTOFILL_TOOLTIP :{BLACK}Συμπληρώστε το δρομολόγιο αυτόματα με τιμές από το επόμενο ταξίδι (Ctrl+κλικ για να προσπαθήσει να κρατήσει τους χρόνους αναμονής) +STR_TIMETABLE_AUTOFILL :{BLACK}Αυτόματη Γέμιση +STR_TIMETABLE_AUTOFILL_TOOLTIP :{BLACK}Συμπληρώστε το δρομολόγιο αυτόματα με τιμές από το επόμενο ταξίδι (Ctrl+Κλικ για να προσπαθήσει να κρατήσει τους χρόνους αναμονής) 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 :ΑΝ: @@ -3734,75 +3875,75 @@ STR_DATE_YEAR_TOOLTIP :{BLACK}Επιλ # AI debug window STR_AI_DEBUG :{WHITE}Αποσφαλμάτωση AI και δέσμης ενεργειών παιχνιδιού -STR_AI_DEBUG_NAME_AND_VERSION :{BLACK}{STRING} (v{NUM}) +STR_AI_DEBUG_NAME_AND_VERSION :{BLACK}{STRING} (έκδοση {NUM}) STR_AI_DEBUG_NAME_TOOLTIP :{BLACK}Όνομα δέσμης ενεργειών STR_AI_DEBUG_SETTINGS :{BLACK}Ρυθμίσεις STR_AI_DEBUG_SETTINGS_TOOLTIP :{BLACK}Αλλαγή των ρυθμίσεων της δέσμης ενεργειών STR_AI_DEBUG_RELOAD :{BLACK}Επαναφόρτωση AI STR_AI_DEBUG_RELOAD_TOOLTIP :{BLACK}Τερματίστε την AI, ξαναφορτώστε τη δέσμη ενεργειών και επανεκκινήστε την AI -STR_AI_DEBUG_BREAK_STR_ON_OFF_TOOLTIP :{BLACK}Ενεργοποίηση/Απενεργοποίηση παύσης όταν μια καταχώρηση ιστορικού της ΑΙ ταυτίζεται με τη συμβολοσειρά παύσης +STR_AI_DEBUG_BREAK_STR_ON_OFF_TOOLTIP :{BLACK}Ενεργοποίηση/απενεργοποίηση παύσης όταν μια καταχώρηση ιστορικού της ΑΙ ταυτίζεται με το αλφαριθμητικό παύσης STR_AI_DEBUG_BREAK_ON_LABEL :{BLACK}Παύση στο: STR_AI_DEBUG_BREAK_STR_OSKTITLE :{BLACK}Παύση στο -STR_AI_DEBUG_BREAK_STR_TOOLTIP :{BLACK}Εάν υπάρξει ταύτιση του παρόντος string με μια καταχώρηση από τα μηνύματα του ΑΙ, τότε γίνεται παύση του παιγνιδιού +STR_AI_DEBUG_BREAK_STR_TOOLTIP :{BLACK}Εάν υπάρξει ταύτιση του παρόντος αλφαριθμητικού με μια καταχώρηση από τα μηνύματα του ΑΙ, τότε γίνεται παύση του παιχνιδιού STR_AI_DEBUG_MATCH_CASE :{BLACK}Ταύτιση μεγέθους -STR_AI_DEBUG_MATCH_CASE_TOOLTIP :{BLACK}Μεταβολή της ταύτισης μεγέθους όταν η γίνεται σύγκριση μιας καταχώρησης της ΑΙ με τη συμβολοσειρά παύσης +STR_AI_DEBUG_MATCH_CASE_TOOLTIP :{BLACK}Μεταβολή της ταύτισης μεγέθους όταν η γίνεται σύγκριση μιας καταχώρησης της ΑΙ με το αλφαριθμητικό παύσης STR_AI_DEBUG_CONTINUE :{BLACK}Συνέχεια STR_AI_DEBUG_CONTINUE_TOOLTIP :{BLACK}Συνέχιση του παιχνιδιού και της λειτουργίας της AI STR_AI_DEBUG_SELECT_AI_TOOLTIP :{BLACK}Εμφάνιση της εξόδου αποσφαλμάτωσης αυτής της AI -STR_AI_GAME_SCRIPT :{BLACK}Δέσμη ενεργειών παιχνιδιού +STR_AI_GAME_SCRIPT :{BLACK}Δέσμη Ενεργειών Παιχνιδιού STR_AI_GAME_SCRIPT_TOOLTIP :{BLACK}Έλεγχος ιστορικού δέσμης ενεργειών παιχνιδιού -STR_ERROR_AI_NO_AI_FOUND :Δεν βρέθηκε κατάλληλη AI για φόρτωση.{}Αυτή η AI είναι μια ψεύτικη AI και δεν θα κάνει τίποτα.{}Μπορείτε να κατεβάσετε διάφορες AΙ από το σύστημα 'Online περιεχομένου' +STR_ERROR_AI_NO_AI_FOUND :Δεν βρέθηκε κατάλληλη AI για φόρτωση.{}Αυτή η AI είναι ψεύτικη και δεν θα κάνει τίποτα.{}Μπορείτε να κατεβάσετε διάφορες AΙ από το σύστημα Διαδικτυακού Περιεχομένου. STR_ERROR_AI_PLEASE_REPORT_CRASH :{WHITE}Μια τρέχουσα δέσμη ενεργειών τερμάτισε απότομα. Παρακαλώ ενημερώστε τον συγγραφέα της δέσμης ενεργειών με ένα στιγμιότυπο οθόνης από το παράθυρο αποσφαλμάτωσης AI/Παιχνιδιού -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_GAMELIST_TOOLTIP :{BLACK}Η δέσμη ενεργειών παιχνιδιού που θα φορτωθεί στο επόμενο παιχνίδι +STR_AI_CONFIG_CAPTION :{WHITE}Ρύθμιση ΑΙ και Δέσμης Ενεργειών +STR_AI_CONFIG_GAMELIST_TOOLTIP :{BLACK}Η Δέσμη Ενεργειών παιχνιδιού που θα φορτωθεί στο επόμενο παιχνίδι STR_AI_CONFIG_AILIST_TOOLTIP :{BLACK}Οι AIs που θα φορτωθούν στο επόμενο παιχνίδι STR_AI_CONFIG_HUMAN_PLAYER :Ανθρώπινος παίκτης STR_AI_CONFIG_RANDOM_AI :Τυχαία AI STR_AI_CONFIG_NONE :{G=f}(καμία) -STR_AI_CONFIG_MOVE_UP :{BLACK}Μετακίνηση πάνω +STR_AI_CONFIG_MOVE_UP :{BLACK}Μετακίνηση Πάνω STR_AI_CONFIG_MOVE_UP_TOOLTIP :{BLACK}Μετακίνηση της επιλεγμένης AI πάνω στη λίστα -STR_AI_CONFIG_MOVE_DOWN :{BLACK}Μετακίνηση κάτω -STR_AI_CONFIG_MOVE_DOWN_TOOLTIP :{BLACK}Μεταφορά της επιλεγμένης AI κάτω στη λίστα +STR_AI_CONFIG_MOVE_DOWN :{BLACK}Μετακίνηση Κάτω +STR_AI_CONFIG_MOVE_DOWN_TOOLTIP :{BLACK}Μετακίνηση της επιλεγμένης AI κάτω στη λίστα -STR_AI_CONFIG_GAMESCRIPT :{SILVER}Δέσμη ενεργειών παιχνιδιού -STR_AI_CONFIG_AI :{SILVER}AIs +STR_AI_CONFIG_GAMESCRIPT :{SILVER}Δέσμη Ενεργειών +STR_AI_CONFIG_AI :{SILVER}AI STR_AI_CONFIG_CHANGE :{BLACK}Επιλογή {STRING} STR_AI_CONFIG_CHANGE_NONE : STR_AI_CONFIG_CHANGE_AI :ΑΙ -STR_AI_CONFIG_CHANGE_GAMESCRIPT :Δέσμη ενεργειών Παιχνιδιού +STR_AI_CONFIG_CHANGE_GAMESCRIPT :Δέσμη Ενεργειών STR_AI_CONFIG_CHANGE_TOOLTIP :{BLACK}Φόρτωση άλλης δέσμης ενεργειών STR_AI_CONFIG_CONFIGURE :{BLACK}Ρυθμίσεις -STR_AI_CONFIG_CONFIGURE_TOOLTIP :{BLACK}Ρύθμιση των παραμέτρων ενός script +STR_AI_CONFIG_CONFIGURE_TOOLTIP :{BLACK}Ρύθμιση των παραμέτρων της Δέσμης Ενεργειών # Available AIs window -STR_AI_LIST_CAPTION :{WHITE}Διαθέσιμο {STRING} -STR_AI_LIST_CAPTION_AI :AIs -STR_AI_LIST_CAPTION_GAMESCRIPT :Δέσμες ενεργειών Παιχνιδιού -STR_AI_LIST_TOOLTIP :{BLACK}Πατήστε για επιλέξετε ένα script +STR_AI_LIST_CAPTION :{WHITE}Διαθέσιμη {STRING} +STR_AI_LIST_CAPTION_AI :AI +STR_AI_LIST_CAPTION_GAMESCRIPT :Δέσμες Ενεργειών +STR_AI_LIST_TOOLTIP :{BLACK}Κάντε κλικ για επιλέξετε μία δέσμη ενεργειών -STR_AI_LIST_AUTHOR :{LTBLUE}Συγγραφέας: {ORANGE}{STRING} +STR_AI_LIST_AUTHOR :{LTBLUE}Δημιουργός: {ORANGE}{STRING} STR_AI_LIST_VERSION :{LTBLUE}Έκδοση: {ORANGE}{NUM} -STR_AI_LIST_URL :{LTBLUE}Ιστιοσελίδα: {ORANGE}{STRING} +STR_AI_LIST_URL :{LTBLUE}Ιστοσελίδα: {ORANGE}{STRING} STR_AI_LIST_ACCEPT :{BLACK}Αποδοχή -STR_AI_LIST_ACCEPT_TOOLTIP :{BLACK}Αποδοχή του επιλεγμένου script +STR_AI_LIST_ACCEPT_TOOLTIP :{BLACK}Αποδοχή της επιλεγμένης δέσμης ενεργειών STR_AI_LIST_CANCEL :{BLACK}Άκυρο -STR_AI_LIST_CANCEL_TOOLTIP :{BLACK}Να μην γίνει αλλάγη script +STR_AI_LIST_CANCEL_TOOLTIP :{BLACK}Να μην γίνει αλλαγή δέσμης ενεργειών # AI Parameters STR_AI_SETTINGS_CAPTION :{WHITE}{STRING} Παράμετροι STR_AI_SETTINGS_CAPTION_AI :AI -STR_AI_SETTINGS_CAPTION_GAMESCRIPT :Σενάριο παιχνιδιού +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 :Αριθμός ημερών για την εκκίνηση του επόμενου AI μετά από το προηγούμενο (περίπου): {ORANGE}{STRING} +STR_AI_SETTINGS_START_DELAY :Αριθμός ημερών για την εκκίνηση της επόμενης AI μετά από τη προηγούμενη (περίπου): {ORANGE}{STRING} # Textfile window @@ -3821,154 +3962,162 @@ 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}Κόστος: {CURRENCY_LONG} STR_INCOME_FLOAT_COST :{RED}Κόστος: {CURRENCY_LONG} STR_INCOME_FLOAT_INCOME_SMALL :{TINY_FONT}{GREEN}Έσοδα: {CURRENCY_LONG} STR_INCOME_FLOAT_INCOME :{GREEN}Έσοδα: {CURRENCY_LONG} -STR_FEEDER_TINY :{TINY_FONT}{YELLOW}Από μεταφορά: {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} # Saveload messages STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Η αποθήκευση είναι σε εξέλιξη,{}παρακαλώ περιμένετε να τελειώσει! -STR_ERROR_AUTOSAVE_FAILED :{WHITE}Το αυτόματο σώσιμο απέτυχε +STR_ERROR_AUTOSAVE_FAILED :{WHITE}Η αυτόματη αποθήκευση απέτυχε STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Αδύνατη η ανάγνωση του δίσκου -STR_ERROR_GAME_SAVE_FAILED :{WHITE}Αποθήκευση Παιχνιδιού Απέτυχε{}{STRING} +STR_ERROR_GAME_SAVE_FAILED :{WHITE}Η Αποθήκευση Παιχνιδιού Απέτυχε{}{STRING} STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Αδύνατη η διαγραφή του αρχείου -STR_ERROR_GAME_LOAD_FAILED :{WHITE}Φόρτωση Παιχνιδιού Απέτυχε{}{STRING} +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 :Το αρχείο δεν είναι για γράψιμο +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_COULD_NOT_CREATE_TOWN :{WHITE}Η δημιουργία του χάρτη εγκαταλείφτηκε...{}... δεν υπάρχουν κατάλληλες τοποθεσίες για πόλεις STR_ERROR_NO_TOWN_IN_SCENARIO :{WHITE}... δεν υπάρχει καμία πόλη σε αυτό το σενάριο -STR_ERROR_PNGMAP :{WHITE}Δεν είναι δυνατή η φόρτωση από PNG... -STR_ERROR_PNGMAP_FILE_NOT_FOUND :{WHITE}... το αρχείο δεν βρέθηκε -STR_ERROR_PNGMAP_IMAGE_TYPE :{WHITE}... δεν είναι δυνατή η μετατροπή του τύπου εικόνας. 8 ή 24-bit PNG εικόνα χρείαζεται. +STR_ERROR_PNGMAP :{WHITE}Δεν ήταν δυνατή η φόρτωση τοπίου από PNG... +STR_ERROR_PNGMAP_FILE_NOT_FOUND :{WHITE}... το αρχείο δε βρέθηκε +STR_ERROR_PNGMAP_IMAGE_TYPE :{WHITE}... δεν ήταν δυνατή η μετατροπή του τύπου εικόνας. Χρειάζεται εικόνα PNG 8 ή 24 bit STR_ERROR_PNGMAP_MISC :{WHITE}... κάτι πήγε στραβά (πιθανώς κατεστραμμένο αρχείο) -STR_ERROR_BMPMAP :{WHITE}Αδυναμία φόρτωσης τοπίου από το ΒΜΡ... -STR_ERROR_BMPMAP_IMAGE_TYPE :{WHITE}... αδύνατη η μετατροπή του τύπου εικόνας +STR_ERROR_BMPMAP :{WHITE}Δεν ήταν δυνατή η φόρτωση τοπίου από ΒΜΡ... +STR_ERROR_BMPMAP_IMAGE_TYPE :{WHITE}... δεν ήταν δυνατή η μετατροπή του τύπου εικόνας STR_ERROR_HEIGHTMAP_TOO_LARGE :{WHITE}... η εικόνα είναι πολύ μεγάλη -STR_WARNING_HEIGHTMAP_SCALE_CAPTION :{WHITE}Προειδοποιήση κλίμακας -STR_WARNING_HEIGHTMAP_SCALE_MESSAGE :{YELLOW}Αλλάγη μεγέθους του πηγαίου χάρτη δεν συνίσταται. Να προχωρήσω με την δημιουργία; +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}Τεράστιο στιγμιότυπο οθόνης +STR_WARNING_SCREENSHOT_SIZE_MESSAGE :{YELLOW}Το στιγμιότυπο θα έχει ανάλυση {COMMA} × {COMMA} πίξελ. Η λήψη αυτού του στιγμιότυπου μπορεί να πάρει πολύ ώρα. Θέλετε σίγουρα να συνεχίσετε; -STR_MESSAGE_SCREENSHOT_SUCCESSFULLY :{WHITE}Το στιγμιότυπο οθόνης αποθηκεύθηκε επιτυχώς ώς '{STRING}' -STR_ERROR_SCREENSHOT_FAILED :{WHITE}Το στιγμιότυπο οθόνης απέτυχε! +STR_MESSAGE_SCREENSHOT_SUCCESSFULLY :{WHITE}Το στιγμιότυπο οθόνης αποθηκεύτηκε επιτυχώς ως «{STRING}» +STR_ERROR_SCREENSHOT_FAILED :{WHITE}Η λήψη στιγμιότυπου οθόνης απέτυχε! # Error message titles STR_ERROR_MESSAGE_CAPTION :{YELLOW}Μήνυμα STR_ERROR_MESSAGE_CAPTION_OTHER_COMPANY :{YELLOW}Μήνυμα από {STRING} # Generic construction errors -STR_ERROR_OFF_EDGE_OF_MAP :{WHITE}Απο την άκρη του χάρτη +STR_ERROR_OFF_EDGE_OF_MAP :{WHITE}Από την άκρη του χάρτη STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP :{WHITE}Πολύ κοντά στην άκρη του χάρτη STR_ERROR_NOT_ENOUGH_CASH_REQUIRES_CURRENCY :{WHITE}Δεν υπάρχουν αρκετά χρήματα - απαιτούνται {CURRENCY_LONG} STR_ERROR_FLAT_LAND_REQUIRED :{WHITE}Απαιτείται επίπεδο έδαφος STR_ERROR_LAND_SLOPED_IN_WRONG_DIRECTION :{WHITE}Το έδαφος έχει λάθος κλίση STR_ERROR_CAN_T_DO_THIS :{WHITE}Αυτό δεν γίνεται... STR_ERROR_BUILDING_MUST_BE_DEMOLISHED :{WHITE}Το κτίριο πρέπει πρώτα να κατεδαφιστεί -STR_ERROR_CAN_T_CLEAR_THIS_AREA :{WHITE}Αυτή η περιοχή είναι αδύνατο να καθαριστεί... +STR_ERROR_CAN_T_CLEAR_THIS_AREA :{WHITE}Είναι αδύνατο να καθαριστεί αυτή η περιοχή... STR_ERROR_SITE_UNSUITABLE :{WHITE}... ακατάλληλη περιοχή -STR_ERROR_ALREADY_BUILT :{WHITE}... ήδη χτισμένο +STR_ERROR_ALREADY_BUILT :{WHITE}... ήδη κτισμένο STR_ERROR_OWNED_BY :{WHITE}... ιδιοκτησία του {STRING} -STR_ERROR_AREA_IS_OWNED_BY_ANOTHER :{WHITE}... αυτή η περιοχή είναι ιδιοκτησία άλλης εταιρίας +STR_ERROR_AREA_IS_OWNED_BY_ANOTHER :{WHITE}... η περιοχή είναι ιδιοκτησία άλλης εταιρίας STR_ERROR_TERRAFORM_LIMIT_REACHED :{WHITE}... υπερβαίνει το όριο διαμόρφωσης του εδάφους STR_ERROR_CLEARING_LIMIT_REACHED :{WHITE}... υπερβαίνει το όριο καθαρισμού τετραγωνιδίων STR_ERROR_TREE_PLANT_LIMIT_REACHED :{WHITE}... υπερβαίνει το όριο φύτευσης δέντρων STR_ERROR_NAME_MUST_BE_UNIQUE :{WHITE}Το όνομα πρέπει να είναι μοναδικό STR_ERROR_GENERIC_OBJECT_IN_THE_WAY :{WHITE}{1:STRING} στη μέση -STR_ERROR_NOT_ALLOWED_WHILE_PAUSED :{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_AIRPORT :{WHITE}Η τοπική αρχή της πόλης {TOWN} αρνείται να επιτρέψει τη δημιουργία νέου αεροδρομίου -STR_ERROR_LOCAL_AUTHORITY_REFUSES_NOISE :{WHITE}{TOWN} Οι τοπικές αρχές αρνούνται να δώσουν την άδεια για αεροδρόμιο λογω ανησυχιών για τον θόρυβο -STR_ERROR_BRIBE_FAILED :{WHITE}Η δωροδοκία που προσπαθήσατε έγινε αντιλυπτή από ένα τοπικό ερευνητή +STR_ERROR_LOCAL_AUTHORITY_REFUSES_NOISE :{WHITE}Οι τοπικές αρχές της πόλης {TOWN} αρνούνται να δώσουν την άδεια για αεροδρόμιο λόγω ανησυχιών για τον θόρυβο +STR_ERROR_BRIBE_FAILED :{WHITE}Η δωροδοκία που προσπαθήσατε να δώσετε έγινε αντιληπτή από τοπικό ερευνητή # Levelling errors -STR_ERROR_CAN_T_RAISE_LAND_HERE :{WHITE}Αδύνατο να υψωθεί η γη εδώ... -STR_ERROR_CAN_T_LOWER_LAND_HERE :{WHITE}Αδύνατο να χαμηλώσει η γη εδώ... -STR_ERROR_CAN_T_LEVEL_LAND_HERE :{WHITE}Αδύνατο να έρθει στο ίδιο επίπεδο η γη εδώ... +STR_ERROR_CAN_T_RAISE_LAND_HERE :{WHITE}Δεν είναι δυνατό να υψωθεί η γη εδώ... +STR_ERROR_CAN_T_LOWER_LAND_HERE :{WHITE}Δεν είναι δυνατό να χαμηλώσει η γη εδώ... +STR_ERROR_CAN_T_LEVEL_LAND_HERE :{WHITE}Δεν είναι δυνατό να έρθει στο ίδιο επίπεδο η γη εδώ... STR_ERROR_EXCAVATION_WOULD_DAMAGE :{WHITE}Η εκσκαφή θα κατέστρεφε το τούνελ -STR_ERROR_ALREADY_AT_SEA_LEVEL :{WHITE}Ήδη στο επίπεδο της θάλασσας +STR_ERROR_ALREADY_AT_SEA_LEVEL :{WHITE}... ήδη στο επίπεδο της θάλασσας STR_ERROR_TOO_HIGH :{WHITE}... πολύ ψηλά STR_ERROR_ALREADY_LEVELLED :{WHITE}... ήδη επίπεδο # Company related errors -STR_ERROR_CAN_T_CHANGE_COMPANY_NAME :{WHITE}Αδύνατο να αλλάξει το όνομα της εταιρίας... -STR_ERROR_CAN_T_CHANGE_PRESIDENT :{WHITE}Αδύνατο να αλλάξει το όνομα του διευθυντή... +STR_ERROR_CAN_T_CHANGE_COMPANY_NAME :{WHITE}Δεν ήταν δυνατό να αλλάξει το όνομα της εταιρίας... +STR_ERROR_CAN_T_CHANGE_PRESIDENT :{WHITE}Δεν ήταν δυνατό να αλλάξει το όνομα του διευθυντή... STR_ERROR_MAXIMUM_PERMITTED_LOAN :{WHITE}... το μέγιστο επιτρεπόμενο δάνειο είναι {CURRENCY_LONG} -STR_ERROR_CAN_T_BORROW_ANY_MORE_MONEY :{WHITE}Αδύνατος ο δανεισμός περισσοτέρων χρημάτων... +STR_ERROR_CAN_T_BORROW_ANY_MORE_MONEY :{WHITE}Δεν μπορείτε να δανειστείτε περισσότερα χρήματα... STR_ERROR_LOAN_ALREADY_REPAYED :{WHITE}... δεν υπάρχει δάνειο προς αποπληρωμή -STR_ERROR_CURRENCY_REQUIRED :{WHITE}... Απαιτούνται {CURRENCY_LONG} +STR_ERROR_CURRENCY_REQUIRED :{WHITE}... απαιτούνται {CURRENCY_LONG} STR_ERROR_CAN_T_REPAY_LOAN :{WHITE}Αδύνατη η αποπληρωμή του δανείου... -STR_ERROR_INSUFFICIENT_FUNDS :{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_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_PROTECTED :{WHITE}Αυτή η εταιρία δεν είναι αρκετά παλιά για συναλλαγή μετοχών ακόμα... +STR_ERROR_PROTECTED :{WHITE}Αυτή η εταιρία δεν είναι αρκετά παλιά για συναλλαγή μετοχών... # Town related errors -STR_ERROR_CAN_T_GENERATE_TOWN :{WHITE}Αδύνατο να χτιστούν πόλεις +STR_ERROR_CAN_T_GENERATE_TOWN :{WHITE}Αδύνατο να κτιστούν πόλεις STR_ERROR_CAN_T_RENAME_TOWN :{WHITE}Δεν μπορεί να μετονομαστεί η πόλη... -STR_ERROR_CAN_T_FOUND_TOWN_HERE :{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}... πολύ κοντά στην άκρη του χάρτη 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_ROAD_WORKS_IN_PROGRESS :{WHITE}Έργα οδοποιϊας σε εξέλιξη -STR_ERROR_TOWN_CAN_T_DELETE :{WHITE}Δεν γίνεται να διαγραφεί η πόλη...{}Ένας σταθμός ή ένα αμαξοστάσιο αναφέρεται στην πόλη ή ένα τετραγωνίδιο της πόλης δεν μπορεί να αφαιρεθεί +STR_ERROR_NO_SPACE_FOR_TOWN :{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_BUILD_HERE :{WHITE}Αδύνατο να χτιστεί {G ο η το} {STRING} εδώ... -STR_ERROR_CAN_T_CONSTRUCT_THIS_INDUSTRY :{WHITE}Αδύνατο να χτιστεί αυτός ο τύπος βιομηχανίας εδώ... +STR_ERROR_CAN_T_GENERATE_INDUSTRIES :{WHITE}Δε γίνεται να δημιουργηθούν βιομηχανίες... +STR_ERROR_CAN_T_BUILD_HERE :{WHITE}Δεν είναι δυνατό να κτιστεί {G ο η το} {STRING} εδώ... +STR_ERROR_CAN_T_CONSTRUCT_THIS_INDUSTRY :{WHITE}Δεν είναι δυνατό να κτιστεί αυτός ο τύπος βιομηχανίας εδώ... STR_ERROR_INDUSTRY_TOO_CLOSE :{WHITE}... πολύ κοντά σε άλλη βιομηχανία -STR_ERROR_MUST_FOUND_TOWN_FIRST :{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_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_NEAR_TOWN_CENTER :{WHITE}... μπορεί να χτιστεί μόνο κοντά σε κέντρα πόλεων -STR_ERROR_CAN_ONLY_BE_BUILT_IN_LOW_AREAS :{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_NEAR_TOWN_CENTER :{WHITE}... μπορεί να κτιστεί μόνο κοντά σε κέντρα πόλεων +STR_ERROR_CAN_ONLY_BE_BUILT_IN_LOW_AREAS :{WHITE}... μπορεί να κτιστεί μόνο σε χαμηλές περιοχές STR_ERROR_CAN_ONLY_BE_POSITIONED :{WHITE}... μπορούν να τοποθετηθούν μόνο στις άκρες του χάρτη -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_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_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_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}Δεν μπορεί να κτιστεί επιβατικός σταθμός τραμ... +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}... ο σταθμός είναι υπερβολικά απλωμένος @@ -3976,7 +4125,7 @@ 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_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}Δεν μπορεί να μετονομαστεί ο σταθμός... @@ -3987,11 +4136,11 @@ 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_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_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_CARGO_TRAM_STATION :{WHITE}Δεν μπορεί να αφαιρεθεί ο σταθμός εμπορευμάτων τραμ... STR_ERROR_MUST_REMOVE_ROAD_STOP_FIRST :{WHITE}Πρέπει να γίνει αφαίρεση της στάσης οχημάτων πρώτα STR_ERROR_THERE_IS_NO_STATION :{WHITE}... δεν υπάρχει σταθμός εδώ @@ -3999,12 +4148,12 @@ 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_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_WAYPOINT_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Προστίθεται σε περισσότερο από ένα υπάρχον σημείο καθοδήγησης STR_ERROR_TOO_CLOSE_TO_ANOTHER_WAYPOINT :{WHITE}Πολύ κοντά σε άλλο σημείο καθοδήγησης STR_ERROR_CAN_T_BUILD_TRAIN_WAYPOINT :{WHITE}Αδύνατο να χτιστεί σημείο καθοδήγησης τρένου εδώ... @@ -4017,34 +4166,34 @@ 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_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_UNABLE_TO_FIND_ROUTE_TO :{WHITE}Αδύνατο να βρεθεί δρόμος για το τοπικό αμαξοστάσιο +STR_ERROR_UNABLE_TO_FIND_LOCAL_DEPOT :{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_NOTHING_TO_DO :{WHITE}Χωρίς εφαρμογή κανόνων αυτόματης ανανέωσης/αντικατάστασης STR_ERROR_AUTOREPLACE_MONEY_LIMIT :(χρηματικό όριο) # Rail construction errors @@ -4053,63 +4202,63 @@ 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_CROSSING_DISALLOWED :{WHITE}Δεν επιτρέπονται ισόπεδες διασταυρώσεις για αυτόν το τύπο σιδηροδρόμου -STR_ERROR_CAN_T_BUILD_SIGNALS_HERE :{WHITE}Δεν μπορούν να χτιστούν σηματοδότες εδώ... -STR_ERROR_CAN_T_BUILD_RAILROAD_TRACK :{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_SIGNAL_CAN_T_CONVERT_SIGNALS_HERE :{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_CAN_T_BUILD_ROAD_HERE :{WHITE}Αδύνατο να χτιστεί δρόμος εδώ... -STR_ERROR_CAN_T_BUILD_TRAMWAY_HERE :{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}... δεν υπάρχει τροχιόδρομος(τραμ) +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_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_RIVER :{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}Πρέπει να κατεδαφιστεί το κανάλι πρώτα -STR_ERROR_CAN_T_BUILD_AQUEDUCT_HERE :{WHITE}Δεν μπορεί να χτιστεί κανάλι εδώ... +STR_ERROR_CAN_T_BUILD_AQUEDUCT_HERE :{WHITE}Δεν μπορεί να κτιστεί κανάλι εδώ... # Tree related errors STR_ERROR_TREE_ALREADY_HERE :{WHITE}... υπάρχει ήδη δέντρο εδώ -STR_ERROR_TREE_WRONG_TERRAIN_FOR_TREE_TYPE :{WHITE}... λάθος έδαφος για αυτό το τύπο δέντρου -STR_ERROR_CAN_T_PLANT_TREE_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}Η γέφυρα δεν καταλήγει στο ίδιο επίπεδο 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_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}Άλλο τουνελ στη μέση +STR_ERROR_ANOTHER_TUNNEL_IN_THE_WAY :{WHITE}Υπάρχει άλλο τούνελ στη μέση STR_ERROR_TUNNEL_THROUGH_MAP_BORDER :{WHITE}Το τούνελ θα καταλήξει εκτός του χάρτη STR_ERROR_UNABLE_TO_EXCAVATE_LAND :{WHITE}Αδύνατο να γίνει εκσκαφή γης στην άλλη άκρη του τούνελ -STR_ERROR_TUNNEL_TOO_LONG :{WHITE}... τούνελ πολύ μακρύ +STR_ERROR_TUNNEL_TOO_LONG :{WHITE}... το τούνελ είναι πολύ μακρύ # Object related errors STR_ERROR_TOO_MANY_OBJECTS :{WHITE}... πάρα πολλά αντικείμενα @@ -4120,12 +4269,12 @@ 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}Δεν μπορεί να προσθεθούν κοινά οχήματα στο γκρουπ... +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}Τρένο καθ'οδόν @@ -4134,29 +4283,29 @@ 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}Δεν μπορεί να σταματήσει/ξεκινήσει το αεροσκάφος... -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_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}Δεν μπορεί να αγοραστεί όχημα σιδηρόδρομου... 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}Δεν μπορεί να μετονομαστεί ο τύπος οχήματος δρόμου... @@ -4178,26 +4327,28 @@ 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}Δεν μπορεί το τρένο να περάσει σήμα με κίνδυνο... 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_CAN_T_MAKE_ROAD_VEHICLE_TURN :{WHITE}Δεν γίνεται να αλλάξει πορεία το όχημα... STR_ERROR_AIRCRAFT_IS_IN_FLIGHT :{WHITE}Το αεροσκάφος είναι σε πτήση # Order related errors STR_ERROR_NO_MORE_SPACE_FOR_ORDERS :{WHITE}Δεν υπάρχει άλλος χώρος για εντολές 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_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_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 :{WHITE}... το όχημα δεν μπορεί να πάει σε αυτόν τον σταθμό STR_ERROR_CAN_T_ADD_ORDER_SHARED :{WHITE}... ένα όχημα που μοιράζεται αυτή την εντολή δεν μπορεί να πάει σε εκείνο τον σταθμό STR_ERROR_CAN_T_SHARE_ORDER_LIST :{WHITE}Αδύνατο να μοιραστεί η λίστα εντολών... @@ -4209,7 +4360,7 @@ 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}Αυτό το όχημα δεν σταματάει σε αυτό το σταθμό +STR_ERROR_TIMETABLE_NOT_STOPPING_HERE :{WHITE}Αυτό το όχημα δεν σταματάει σε αυτόν τον σταθμό # Sign related errors STR_ERROR_TOO_MANY_SIGNS :{WHITE}... πάρα πολλά σήματα @@ -4220,6 +4371,16 @@ STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}Δεν # Translatable comment for OpenTTD's desktop shortcut 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 :Ένα πάκετο μουσικής χωρίς πραγματική μουσική. + ##id 0x2000 # Town building names STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1 :Ψηλό συγκρότημα γραφείων @@ -4232,14 +4393,14 @@ STR_TOWN_BUILDING_NAME_HOTEL_1 :Ξενοδοχ STR_TOWN_BUILDING_NAME_STATUE_1 :Άγαλμα STR_TOWN_BUILDING_NAME_FOUNTAIN_1 :Συντριβάνι STR_TOWN_BUILDING_NAME_PARK_1 :Πάρκο -STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_2 :Συγκρότημα Γραφείων +STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_2 :Συγκρότημα γραφείων STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_1 :Καταστήματα και γραφεία STR_TOWN_BUILDING_NAME_MODERN_OFFICE_BUILDING_1 :Μοντέρνο κτίριο γραφείων STR_TOWN_BUILDING_NAME_WAREHOUSE_1 :Αποθήκη STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_3 :Συγκρότημα γραφείων STR_TOWN_BUILDING_NAME_STADIUM_1 :Γήπεδο STR_TOWN_BUILDING_NAME_OLD_HOUSES_1 :Παλιά σπίτια -STR_TOWN_BUILDING_NAME_COTTAGES_1 :Χωράφια +STR_TOWN_BUILDING_NAME_COTTAGES_1 :Αγροικίες STR_TOWN_BUILDING_NAME_HOUSES_1 :Σπίτια STR_TOWN_BUILDING_NAME_FLATS_1 :Διαμερίσματα STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_2 :Ψηλό συγκρότημα γραφείων @@ -4252,9 +4413,9 @@ STR_TOWN_BUILDING_NAME_HOUSES_2 :Σπίτια STR_TOWN_BUILDING_NAME_CINEMA_1 :Κινηματογράφος STR_TOWN_BUILDING_NAME_SHOPPING_MALL_1 :Εμπορικό κέντρο STR_TOWN_BUILDING_NAME_IGLOO_1 :Ιγκλού -STR_TOWN_BUILDING_NAME_TEPEES_1 :Σκηνές ινδιάνων +STR_TOWN_BUILDING_NAME_TEPEES_1 :Σκηνές Ινδιάνων STR_TOWN_BUILDING_NAME_TEAPOT_HOUSE_1 :Σπίτι-Καφετιέρα -STR_TOWN_BUILDING_NAME_PIGGY_BANK_1 :Τράπεζα-κουμπαράς +STR_TOWN_BUILDING_NAME_PIGGY_BANK_1 :Τράπεζα-Κουμπαράς ##id 0x4800 # industry names @@ -4316,7 +4477,7 @@ STR_SV_STNAME_SOUTH :Νότιο {STR STR_SV_STNAME_EAST :Ανατολικό {STRING} STR_SV_STNAME_WEST :Δυτικό {STRING} STR_SV_STNAME_CENTRAL :Κεντρικό {STRING} -STR_SV_STNAME_TRANSFER :Μετεπιβίβασης {STRING} +STR_SV_STNAME_TRANSFER :Μετεπιβίβαση {STRING} STR_SV_STNAME_HALT :Όρια {STRING} STR_SV_STNAME_VALLEY :Κοιλάδα {STRING} STR_SV_STNAME_HEIGHTS :Λόφοι {STRING} @@ -4324,11 +4485,11 @@ STR_SV_STNAME_WOODS :Δάσος {STR STR_SV_STNAME_LAKESIDE :Λίμνη {STRING} STR_SV_STNAME_EXCHANGE :{STRING} Ανταλλαγής STR_SV_STNAME_AIRPORT :Αεροδρόμιο {STRING} -STR_SV_STNAME_OILFIELD :{G=m}Πετρελαιοπηγές {STRING} -STR_SV_STNAME_MINES :{G=n}Ορυχεία {STRING} -STR_SV_STNAME_DOCKS :{G=n}Λιμάνι {STRING} -STR_SV_STNAME_BUOY :{G=f}{STRING} -STR_SV_STNAME_WAYPOINT :{G=n}{STRING} +STR_SV_STNAME_OILFIELD :Πετρελαιοπηγές {STRING} +STR_SV_STNAME_MINES :Ορυχεία {STRING} +STR_SV_STNAME_DOCKS :Λιμάνι {STRING} +STR_SV_STNAME_BUOY :{STRING} +STR_SV_STNAME_WAYPOINT :{STRING} ##id 0x6020 STR_SV_STNAME_ANNEXE :Παράρτημα {STRING} STR_SV_STNAME_SIDINGS :Παράκαμψη {STRING} @@ -4346,30 +4507,30 @@ 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 (Ατμοκίνητο) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CHANEY_JUBILEE_STEAM :Chaney 'Jubilee' (Ατμοκίνητο) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_GINZU_A4_STEAM :Ginzu 'A4' (Ατμοκίνητο) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_8P_STEAM :SH '8P' (Ατμοκίνητο) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CHANEY_JUBILEE_STEAM :Chaney «Jubilee» (Ατμοκίνητο) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_GINZU_A4_STEAM :Ginzu «A4» (Ατμοκίνητο) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_8P_STEAM :SH «8P» (Ατμοκίνητο) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MANLEY_MOREL_DMU_DIESEL :Manley-Morel DMU (Πετρελαίου) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_DASH_DIESEL :'Dash' (Πετρελαίου) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_HENDRY_25_DIESEL :SH/Hendry '25' (Πετρελαίου) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_UU_37_DIESEL :UU '37' (Πετρελαίου) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_FLOSS_47_DIESEL :Floss '47' (Πετρελαίου) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_DASH_DIESEL :«Dash» (Πετρελαίου) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_HENDRY_25_DIESEL :SH/Hendry «25» (Πετρελαίου) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_UU_37_DIESEL :UU «37» (Πετρελαίου) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_FLOSS_47_DIESEL :Floss «47» (Πετρελαίου) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CS_4000_DIESEL :CS 4000 (Πετρελαίου) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CS_2400_DIESEL :CS 2400 (Πετρελαίου) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CENTENNIAL_DIESEL :Centennial (Πετρελαίου) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KELLING_3100_DIESEL :Kelling 3100 (Πετρελαίου) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_TURNER_TURBO_DIESEL :Turner Turbo (Πετρελαίου) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_1000_DIESEL :MJS 1000 (Πετρελαίου) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_125_DIESEL :SH '125' (Πετρελαίου) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_30_ELECTRIC :SH '30' (Ηλεκτρικό) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_40_ELECTRIC :SH '40' (Ηλεκτρικό) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_T_I_M_ELECTRIC :'T.I.M.' (Ηλεκτρικό) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_ASIASTAR_ELECTRIC :'AsiaStar' (Ηλεκτρικό) -STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PASSENGER_CAR :Βαγόνι επιβατών +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_125_DIESEL :SH «125» (Πετρελαίου) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_30_ELECTRIC :SH «30» (Ηλεκτρικό) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_40_ELECTRIC :SH «40» (Ηλεκτρικό) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_T_I_M_ELECTRIC :«T.I.M.» (Ηλεκτρικό) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_ASIASTAR_ELECTRIC :«AsiaStar» (Ηλεκτρικό) +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 :Βαγόνι Πετρελαίου @@ -4396,8 +4557,8 @@ 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_PLASTIC_TRUCK :Βαγόνι Πλαστικού -STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_X2001_ELECTRIC :'X2001' (Ηλεκτρικό) -STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_MILLENNIUM_Z1_ELECTRIC :'Millennium Z1' (Ηλεκτρικό) +STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_X2001_ELECTRIC :«X2001» (Ηλεκτρικό) +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 :Επιβατικό Βαγόνι STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_MAIL_VAN :Βαγόνι Αλληλογραφίας @@ -4418,7 +4579,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 :Βαγόνι Γλυκών @@ -4426,10 +4587,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 :Βαγόνι Αλληλογραφίας @@ -4477,9 +4638,9 @@ 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_UHL_LIVESTOCK_VAN :Ημιφορτηγό μεταφοράς ζώων Uhl -STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_LIVESTOCK_VAN :Ημιφορτηγό μεταφοράς ζώων Foster +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 @@ -4489,15 +4650,15 @@ STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_GRAIN_TRUCK :Φορτηγό 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_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 @@ -4507,56 +4668,56 @@ STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_PAPER_TRUCK :Φορτηγό 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 -STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_COLA_TRUCK :Φορτηγό κόλας MightyMover -STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_COLA_TRUCK :Φορτηγό κόλας Powernaught -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 Candyfloss -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 -STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_CANDY_TRUCK :Φορτηγό γλυκών MightyMover -STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_CANDY_TRUCK :Φορτηγό γλυκών Powernaught -STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_CANDY_TRUCK :Φορτηγό γλυκών Wizzowow -STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_BATTERY_TRUCK :Φορτηγό μπαταρίων MightyMover -STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_BATTERY_TRUCK :Φορτηγό μπαταρίων Powernaught -STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_BATTERY_TRUCK :Φορτηγό μπαταρίων Wizzowow -STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_FIZZY_DRINK :Φορτηγό αναψυκτικου MightyMover -STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_FIZZY_DRINK :Φορτηγό αναψυκτικου Powernaught -STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_FIZZY_DRINK_TRUCK :Φορτηγό αναψυκτικου Wizzowow -STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_PLASTIC_TRUCK :Φορτηγό πλαστικού MightyMover -STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_PLASTIC_TRUCK :Φορτηγό πλαστικού Powernaught -STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_PLASTIC_TRUCK :Φορτηγό πλαστικού Wizzowow -STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_BUBBLE_TRUCK :Φορτηγό φυσσαλίδων MightyMover -STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_BUBBLE_TRUCK :Φορτηγό φυσσαλίδων Powernaught -STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_BUBBLE_TRUCK :Φορτηγό φυσσαλίδων Wizzowow +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 +STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_COLA_TRUCK :Φορτηγό Κόλας MightyMover +STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_COLA_TRUCK :Φορτηγό Κόλας Powernaught +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_TOY_VAN :Ημιφορτηγό Παιχνιδιών MightyMover +STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_TOY_VAN :Ημιφορτηγό Παιχνιδιών Powernaught +STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_TOY_VAN :Ημιφορτηγό Παιχνιδιών Wizzowow +STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_CANDY_TRUCK :Φορτηγό Γλυκών MightyMover +STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_CANDY_TRUCK :Φορτηγό Γλυκών Powernaught +STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_CANDY_TRUCK :Φορτηγό Γλυκών Wizzowow +STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_BATTERY_TRUCK :Φορτηγό Μπαταριών MightyMover +STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_BATTERY_TRUCK :Φορτηγό Μπαταριών Powernaught +STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_BATTERY_TRUCK :Φορτηγό Μπαταριών Wizzowow +STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_FIZZY_DRINK :Φορτηγό Αναψυκτικού MightyMover +STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_FIZZY_DRINK :Φορτηγό Αναψυκτικού Powernaught +STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_FIZZY_DRINK_TRUCK :Φορτηγό Αναψυκτικού Wizzowow +STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_PLASTIC_TRUCK :Φορτηγό Πλαστικού MightyMover +STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_PLASTIC_TRUCK :Φορτηγό Πλαστικού Powernaught +STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_PLASTIC_TRUCK :Φορτηγό Πλαστικού Wizzowow +STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_BUBBLE_TRUCK :Φορτηγό Φυσαλίδων MightyMover +STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_BUBBLE_TRUCK :Φορτηγό Φυσαλίδων Powernaught +STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_BUBBLE_TRUCK :Φορτηγό Φυσαλίδων Wizzowow STR_VEHICLE_NAME_SHIP_MPS_OIL_TANKER :Δεξαμενόπλοιο MPS STR_VEHICLE_NAME_SHIP_CS_INC_OIL_TANKER :Δεξαμενόπλοιο CS-Inc. -STR_VEHICLE_NAME_SHIP_MPS_PASSENGER_FERRY :Επιβατηγό πλοίο MPS -STR_VEHICLE_NAME_SHIP_FFP_PASSENGER_FERRY :Επιβατηγό πλοίο FFP Passenger +STR_VEHICLE_NAME_SHIP_MPS_PASSENGER_FERRY :Επιβατηγό Πλοίο MPS +STR_VEHICLE_NAME_SHIP_FFP_PASSENGER_FERRY :Επιβατηγό Πλοίο FFP STR_VEHICLE_NAME_SHIP_BAKEWELL_300_HOVERCRAFT :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_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_AIRCRAFT_SAMPSON_U52 :Sampson U52 STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :Coleman Count STR_VEHICLE_NAME_AIRCRAFT_FFP_DART :FFP Dart @@ -4611,16 +4772,16 @@ STR_FORMAT_BUOY_NAME_SERIAL :Σημαδού STR_FORMAT_COMPANY_NUM :(Εταιρία {COMMA}) STR_FORMAT_GROUP_NAME :Ομάδα {COMMA} STR_FORMAT_INDUSTRY_NAME :{1:STRING} {0:TOWN} -STR_FORMAT_WAYPOINT_NAME :Σημείο καθοδηγήσης {TOWN} -STR_FORMAT_WAYPOINT_NAME_SERIAL :Σημείο καθοδηγήσης {TOWN} #{COMMA} +STR_FORMAT_WAYPOINT_NAME :Σημείο Καθοδήγησης {TOWN} +STR_FORMAT_WAYPOINT_NAME_SERIAL :Σημείο Καθοδήγησης {TOWN} #{COMMA} -STR_FORMAT_DEPOT_NAME_TRAIN :{TOWN} Αμαξοστάσιο Τρένων -STR_FORMAT_DEPOT_NAME_TRAIN_SERIAL :{TOWN} Αμαξοστάσιο Τρένων #{COMMA} -STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE :{TOWN} Αμαξοστάσιο Οχημάτων δρόμου -STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE_SERIAL :{TOWN} Αμαξοστάσιο Οχημάτων δρόμου #{COMMA} -STR_FORMAT_DEPOT_NAME_SHIP :{TOWN} Ναυπηγείο Πλοιών -STR_FORMAT_DEPOT_NAME_SHIP_SERIAL :{TOWN} Ναυπηγείο Πλοιών #{COMMA} -STR_FORMAT_DEPOT_NAME_AIRCRAFT :{STATION} Υπόστεγο +STR_FORMAT_DEPOT_NAME_TRAIN :Αμαξοστάσιο Τρένων {TOWN} +STR_FORMAT_DEPOT_NAME_TRAIN_SERIAL :Αμαξοστάσιο Τρένων {TOWN} #{COMMA} +STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE :Αμαξοστάσιο Οχημάτων Δρόμου {TOWN} +STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE_SERIAL :Αμαξοστάσιο Οχημάτων Δρόμου {TOWN} #{COMMA} +STR_FORMAT_DEPOT_NAME_SHIP :Ναυπηγείο Πλοίων {TOWN} +STR_FORMAT_DEPOT_NAME_SHIP_SERIAL :Ναυπηγείο Πλοίων {TOWN} #{COMMA} +STR_FORMAT_DEPOT_NAME_AIRCRAFT :Υπόστεγο {STATION} STR_UNKNOWN_STATION :άγνωστος σταθμός STR_DEFAULT_SIGN_NAME :Πινακίδα @@ -4670,8 +4831,9 @@ 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_SPACE_STRING :{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} @@ -4695,9 +4857,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 a50679af3..4344056f6 100644 --- a/src/lang/hebrew.txt +++ b/src/lang/hebrew.txt @@ -109,37 +109,37 @@ STR_CARGO_SINGULAR_FIZZY_DRINK.plural :משקאות מ # Quantity of cargo STR_QUANTITY_NOTHING : -STR_QUANTITY_PASSENGERS :{P 0 נוסע ""} {COMMA} {P "" נוסעים} +STR_QUANTITY_PASSENGERS :{P 0 "נוסע " ""}{COMMA}{P "" " נוסעים"} STR_QUANTITY_COAL :{WEIGHT_LONG} של פחם -STR_QUANTITY_MAIL :{P 0 שק ""} {COMMA} {P "" שקים} של דואר +STR_QUANTITY_MAIL :{P 0 "שק " ""}{COMMA}{P "" " שקים"} של דואר STR_QUANTITY_OIL :{VOLUME_LONG} של נפט -STR_QUANTITY_LIVESTOCK :{P 0 פריט ""} {COMMA} {P "" פריטים} של בקר -STR_QUANTITY_GOODS :{P 0 ארגז ""} {COMMA} {P "" ארגזים} של מוצרים +STR_QUANTITY_LIVESTOCK :{P 0 "פריט " ""}{COMMA}{P "" " פריטים"} של בקר +STR_QUANTITY_GOODS :{P 0 " ארגז" ""}{COMMA}{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 :{P 0 שק ""} {COMMA} {P "" שקים} של מוצרי ערך +STR_QUANTITY_VALUABLES :{P 0 "שק " ""}{COMMA}{P "" " שקים"} של מוצרי ערך STR_QUANTITY_COPPER_ORE :{WEIGHT_LONG} של עפרת נחושת STR_QUANTITY_MAIZE :{WEIGHT_LONG} של תירס STR_QUANTITY_FRUIT :{WEIGHT_LONG} של פירות -STR_QUANTITY_DIAMONDS :{P 0 שק ""} {COMMA} {P "" שקים} של יהלומים +STR_QUANTITY_DIAMONDS :{P 0 "שק " ""}{COMMA}{P "" " שקים"} של יהלומים STR_QUANTITY_FOOD :{WEIGHT_LONG} של מזון STR_QUANTITY_PAPER :{WEIGHT_LONG} של נייר -STR_QUANTITY_GOLD :{P 0 שק ""} {COMMA} {P "" שקים} של זהב +STR_QUANTITY_GOLD :{P 0 "שק " ""}{COMMA}{P "" " שקים"} של זהב STR_QUANTITY_WATER :{VOLUME_LONG} של מים STR_QUANTITY_WHEAT :{WEIGHT_LONG} של חיטה STR_QUANTITY_RUBBER :{VOLUME_LONG} של גומי STR_QUANTITY_SUGAR :{WEIGHT_LONG} של סוכר -STR_QUANTITY_TOYS :{P 0 צעצוע ""} {COMMA} {P "" צעצועים} -STR_QUANTITY_SWEETS :{P 0 שק ""} {COMMA} {P "" שקים} של ממתקים +STR_QUANTITY_TOYS :{P 0 "צעצוע " ""}{COMMA}{P "" " צעצועים"} +STR_QUANTITY_SWEETS :{P 0 "שק " ""}{COMMA}{P "" " שקים"} של ממתקים STR_QUANTITY_COLA :{VOLUME_LONG} של קולה STR_QUANTITY_CANDYFLOSS :{WEIGHT_LONG} של צמר גפן מתוק -STR_QUANTITY_BUBBLES :{P 0 בועה ""} {COMMA} {P "" בועות} +STR_QUANTITY_BUBBLES :{P 0 "בועה " ""}{COMMA}{P "" " בועות"} STR_QUANTITY_TOFFEE :{WEIGHT_LONG} של טופי -STR_QUANTITY_BATTERIES :{P 0 סוללה ""} {COMMA} {P "" סוללות} +STR_QUANTITY_BATTERIES :{P 0 "סוללה " ""}{COMMA}{P "" " סוללות"} STR_QUANTITY_PLASTIC :{VOLUME_LONG} של פלסטיק -STR_QUANTITY_FIZZY_DRINKS :{COMMA} משקאות מוגזים +STR_QUANTITY_FIZZY_DRINKS :{P 0 "משקה מוגז " ""}{COMMA}{P "" " משקאות מוגזים"} STR_QUANTITY_N_A :N/A # Two letter abbreviation of cargo name @@ -179,12 +179,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} טונות -STR_LITERS :{COMMA} ליטרים -STR_ITEMS :{COMMA} פריטים -STR_CRATES :{COMMA} ארגזים +STR_PASSENGERS :{P 0 "נוסע " ""}{COMMA}{P "" " נוסעים"} +STR_BAGS :{P 0 "שק " ""}{COMMA}{P "" " שקים"} +STR_TONS :{P 0 "טון " ""}{COMMA}{P "" " טונות"} +STR_LITERS :{P 0 "ליטר " ""}{COMMA}{P "" " ליטרים"} +STR_ITEMS :{P 0 "פריט " ""}{COMMA}{P "" "פריטים"} +STR_CRATES :{P 0 "ארגז " ""}{COMMA}{P "" "ארגזים"} # Colours, do not shuffle STR_COLOUR_DARK_BLUE :כחול כהה @@ -213,27 +213,36 @@ 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} טו{P "נות" "ן"} +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_METRIC :{COMMA} ליטר {P "" "ים"} +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 +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}בחר קריטריון סינון @@ -245,12 +254,13 @@ 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}הסרת בניינים וכו' ממשבצת קרקע +STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}הסרת בניינים וכו' במשבצת קרקע. מקש Ctrl מסמן את האזור באופן אלכנסוני. מקש Shift מעביר בין בנייה לבין הצגה של הערכת העלות # Query window STR_BUTTON_DEFAULT :{BLACK}בחירת מחדל @@ -269,7 +279,6 @@ STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}איזו # These are used in buttons -STR_SORT_BY_CAPTION_POPULATION :{BLACK}אכלוסיה STR_SORT_BY_CAPTION_NAME :{BLACK}שם STR_SORT_BY_CAPTION_DATE :{BLACK}תאריך # These are used in dropdowns @@ -290,28 +299,35 @@ STR_SORT_BY_LENGTH :אורך STR_SORT_BY_LIFE_TIME :זמן חיים נותר STR_SORT_BY_TIMETABLE_DELAY :עיכוב בלוח זמנים STR_SORT_BY_FACILITY :סוג תחנה -STR_SORT_BY_WAITING :ערך הסחורה שמחכה +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_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_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}הצג סובסידיות 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}ממן בניה של תעשייה חדשה או הצג את רשימת כל התעשיות @@ -328,11 +344,11 @@ 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}מידע על איזור קרקע, קונסולה, דיבאג של בינה מלאכותית, צילומי מסך, אודות OpenTTD +STR_TOOLBAR_TOOLTIP_LAND_BLOCK_INFORMATION :{BLACK}מידע על איזור קרקע, קונסולה, דיבאג של סקריפטים, צילומי מסך, אודות OpenTTD STR_TOOLBAR_TOOLTIP_SWITCH_TOOLBAR :{BLACK}החלף סרגל כלים # Extra tooltips for the scenario editor toolbar -STR_SCENEDIT_TOOLBAR_TOOLTIP_SAVE_SCENARIO_LOAD_SCENARIO :{BLACK}שמור תרחיש, טען תרחיש, צא מעורך התרחישים, צא מהמשחק +STR_SCENEDIT_TOOLBAR_TOOLTIP_SAVE_SCENARIO_LOAD_SCENARIO :{BLACK}שמור תרחיש, טען תרחיש, עזוב את עורך התרחישים, צא STR_SCENEDIT_TOOLBAR_OPENTTD :{YELLOW}OpenTTD STR_SCENEDIT_TOOLBAR_SCENARIO_EDITOR :{YELLOW}עורך התרחישים STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_BACKWARD :{BLACK}שנה את שנת ההתחלה לשנה 1 פחות @@ -343,15 +359,16 @@ 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_PLANT_TREES :{BLACK}נטע עצים +STR_SCENEDIT_TOOLBAR_PLANT_TREES :{BLACK}נטע עצים. מקש ה-Shift מעביר בין מצב בנייה לבין מצב הצגת הערכת עלות STR_SCENEDIT_TOOLBAR_PLACE_SIGN :{BLACK}מקם סימניה -STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}מיקום פריט +STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}מקם פריט. מקש ה-Shift מעביר בין מצב בנייה לבין מצב הצגת הערכת עלות ############ range for SE file menu starts STR_SCENEDIT_FILE_MENU_SAVE_SCENARIO :שמור תרחיש STR_SCENEDIT_FILE_MENU_LOAD_SCENARIO :טען תרחיש +STR_SCENEDIT_FILE_MENU_SAVE_HEIGHTMAP :שמור מפת גבהים STR_SCENEDIT_FILE_MENU_LOAD_HEIGHTMAP :טען מפת גבהים -STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :צא מהעורך +STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :עזוב את עורך התרחישים STR_SCENEDIT_FILE_MENU_SEPARATOR : STR_SCENEDIT_FILE_MENU_QUIT :יציאה ############ range for SE file menu starts @@ -359,6 +376,7 @@ 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 :אפשרויות שקיפות STR_SETTINGS_MENU_TOWN_NAMES_DISPLAYED :שמות ערים @@ -369,7 +387,7 @@ 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 :הסתר שלטי תחנות +STR_SETTINGS_MENU_TRANSPARENT_SIGNS :שלטים שקופים ############ range ends here ############ range for file menu starts @@ -380,15 +398,16 @@ STR_FILE_MENU_SEPARATOR : STR_FILE_MENU_EXIT :יציאה ############ range ends here -############ range for map menu starts +# 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, yet the town directory is shown in the map menu in the scenario editor + +############ range for town menu starts STR_TOWN_MENU_TOWN_DIRECTORY :מדריך הערים -############ end of the 'Display map' dropdown STR_TOWN_MENU_FOUND_TOWN :ייסד עיר -############ end of the 'Town' dropdown +############ range ends here ############ range for subsidies menu starts STR_SUBSIDIES_MENU_SUBSIDIES :סובסידיות @@ -406,10 +425,12 @@ STR_GRAPH_MENU_CARGO_PAYMENT_RATES :שערי תשל ############ 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 @@ -452,14 +473,18 @@ STR_NEWS_MENU_MESSAGE_HISTORY_MENU :היסטורי STR_ABOUT_MENU_LAND_BLOCK_INFO :מידע על שטח קרקע STR_ABOUT_MENU_SEPARATOR : STR_ABOUT_MENU_TOGGLE_CONSOLE :פתח/סגור קונסולה -STR_ABOUT_MENU_AI_DEBUG :דיבאג לבינה מלאכותית +STR_ABOUT_MENU_AI_DEBUG :דיבאג של סקריפטים של בינה מלאכותית או של המשחק STR_ABOUT_MENU_SCREENSHOT :צילום מסך +STR_ABOUT_MENU_ZOOMIN_SCREENSHOT :צילום מסך בהגדלה מלאה STR_ABOUT_MENU_DEFAULTZOOM_SCREENSHOT :ברירת מחדל של תקריב צילום מסך STR_ABOUT_MENU_GIANT_SCREENSHOT :צילום מסך ענק STR_ABOUT_MENU_ABOUT_OPENTTD :'OpenTTD'{NBSP}אודות +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 @@ -475,22 +500,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 @@ -570,6 +613,7 @@ 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} : תחנות @@ -583,7 +627,7 @@ STR_PERFORMANCE_DETAIL_LOAN :{BLACK} : הל STR_PERFORMANCE_DETAIL_TOTAL :{BLACK}: סה"כ ############ End of order list STR_PERFORMANCE_DETAIL_VEHICLES_TOOLTIP :{BLACK}מספר כלי תחבורה שהציגו רווחים בשנה החולפת. נכללים רכבים, רכבות, כלי שייט וכלי טייס -STR_PERFORMANCE_DETAIL_STATIONS_TOOLTIP :{BLACK}מספר חלקי התחנות שנתנו שירות. כל חלק של תחנה (למשל, תחנות רכבת, תחנות אוטובוס, נמלי תעופה) נחשבים, אפילו אם הם מחוברים כתחנה אחת +STR_PERFORMANCE_DETAIL_STATIONS_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 הריבעונים האחרונים @@ -651,7 +695,7 @@ STR_HIGHSCORE_PERFORMANCE_TITLE_CAPITALIST :קפיטליס STR_HIGHSCORE_PERFORMANCE_TITLE_MAGNATE :איל הון STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL :איל הון STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY :טיקון המאה -STR_HIGHSCORE_NAME :{BIG_FONT}{PRESIDENT_NAME}, {COMPANY} +STR_HIGHSCORE_NAME :{PRESIDENT_NAME}, {COMPANY} STR_HIGHSCORE_STATS :{BIG_FONT}'{STRING}' ({COMMA}) STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{BLACK}{COMPANY} הגיעה למעמד '{STRING}'! STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{WHITE}'{2:STRING}' הגיע לדרגת {NBSP}{1:COMPANY} מ {NBSP}{0:PRESIDENT_NAME} @@ -662,15 +706,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}מסילות @@ -704,6 +753,8 @@ 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}השתק את כולן STR_SMALLMAP_ENABLE_ALL :{BLACK}הצג את כולן @@ -711,6 +762,10 @@ STR_SMALLMAP_SHOW_HEIGHT :{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}הצג את כל נכסי החברות על גבי המפה +STR_SMALLMAP_TOOLTIP_DISABLE_ALL_CARGOS :{BLACK}אל תציג מטענים במפה +STR_SMALLMAP_TOOLTIP_ENABLE_ALL_CARGOS :{BLACK}הצג את כל המטענים במפה # Status bar messages STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}הצג הודעה או חדשות אחרונים @@ -725,6 +780,7 @@ STR_MESSAGE_HISTORY_TOOLTIP :{BLACK}רשימ STR_MESSAGE_NEWS_FORMAT :{1:STRING} - {0:STRING} STR_NEWS_MESSAGE_CAPTION :{WHITE}הודעה +STR_NEWS_CUSTOM_ITEM :{BIG_FONT}{BLACK}{STRING} STR_NEWS_FIRST_TRAIN_ARRIVAL :{BIG_FONT}{BLACK}התושבים חוגגים . . .{}רכבת ראשונה הגיעה ל{STATION}! STR_NEWS_FIRST_BUS_ARRIVAL :{BIG_FONT}{BLACK}תושבים חוגגים . . .{}אוטובוס ראשון הגיע ל{STATION}! @@ -786,20 +842,19 @@ 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} +STR_NEWS_TRAIN_IS_STUCK :אינה יכולה למצוא נתיב המשך {WHITE}{VEHICLE} +STR_NEWS_VEHICLE_IS_LOST :{WHITE}{VEHICLE} הל{P "ך" "כה"} לאיבוד STR_NEWS_VEHICLE_IS_UNPROFITABLE :ריווחי {WHITE}{VEHICLE} שנה שעברה הם {CURRENCY_LONG} +STR_NEWS_AIRCRAFT_DEST_TOO_FAR :{WHITE}{VEHICLE}אינ{G 0 "ו" "ה"} יכול{G 0 "" "ה"} להגיע אל היעד הבא כי הוא מחוץ לטווח STR_NEWS_ORDER_REFIT_FAILED :כשלון בהתאמה מחדש הביא לעצירה של {WHITE}{VEHICLE} STR_NEWS_VEHICLE_AUTORENEW_FAILED :{WHITE}{1:STRING}{}נכשל {NBSP}{0:VEHICLE} חידוש אוטומטי עבור @@ -822,13 +877,15 @@ STR_NEWS_SERVICE_SUBSIDY_AWARDED_TRIPLE :{BIG_FONT}{BLAC STR_NEWS_SERVICE_SUBSIDY_AWARDED_QUADRUPLE :{BIG_FONT}{BLACK}סובסידיה לשירות ניתנה לחברת {STRING}!{}{}שירות הובלת {STRING.plural} מ{STRING} אל {STRING} יזכה לשיעור תשלום מוכפל פי 4 לשנה הקרובה! STR_NEWS_ROAD_REBUILDING :{BIG_FONT}{BLACK}פקקי תנועה ענקיים ב{TOWN}!{}{} תכנית לשיפוץ מקיף של הכבישים במימון {STRING} מביאה לקטסטרופת תנועה לשישה חודשים +STR_NEWS_EXCLUSIVE_RIGHTS_TITLE :{BIG_FONT}{BLACK}מונופול תחבורה! +STR_NEWS_EXCLUSIVE_RIGHTS_DESCRIPTION :{BIG_FONT}{BLACK}הרשות המקומית של {TOWN} חותמת חוזה עם {STRING} המעניק זכויות תעבורה בלעדיות למשך שנה! # 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_TT :{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}אפשרויות משחק @@ -836,19 +893,19 @@ STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}מטבע STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}בחירת מטבע ############ start of currency region -STR_GAME_OPTIONS_CURRENCY_GBP :(£) פאונדים -STR_GAME_OPTIONS_CURRENCY_USD :($) דולרים -STR_GAME_OPTIONS_CURRENCY_EUR :(€) יורו -STR_GAME_OPTIONS_CURRENCY_JPY :(¥) ין +STR_GAME_OPTIONS_CURRENCY_GBP :(GBP) לירה שטרלינג +STR_GAME_OPTIONS_CURRENCY_USD :(USD) דולר אמריקאי +STR_GAME_OPTIONS_CURRENCY_EUR :(EUR) יורו +STR_GAME_OPTIONS_CURRENCY_JPY :(JPY) ין יפני STR_GAME_OPTIONS_CURRENCY_ATS :(ATS) שילינג אוסטרלי STR_GAME_OPTIONS_CURRENCY_BEF :(BEF) פרנק בולגרי STR_GAME_OPTIONS_CURRENCY_CHF :(CHF) פרנק שוודי STR_GAME_OPTIONS_CURRENCY_CZK :(CZK) קרונה צ'כית -STR_GAME_OPTIONS_CURRENCY_DEM :מרק גרמני +STR_GAME_OPTIONS_CURRENCY_DEM :(DEM) מרק גרמני STR_GAME_OPTIONS_CURRENCY_DKK :(DKK) קרונה דנית -STR_GAME_OPTIONS_CURRENCY_ESP :(ESP) פזטה +STR_GAME_OPTIONS_CURRENCY_ESP :(ESP) פזטה ספרדית STR_GAME_OPTIONS_CURRENCY_FIM :(FIM) מרק פיני -STR_GAME_OPTIONS_CURRENCY_FRF :(FRF) פרנק +STR_GAME_OPTIONS_CURRENCY_FRF :(FRF) פרנק צרפתי STR_GAME_OPTIONS_CURRENCY_GRD :(GRD) דרכמה יוונית STR_GAME_OPTIONS_CURRENCY_HUF :(HUF) פורינט הונגרי STR_GAME_OPTIONS_CURRENCY_ISK :(ISK) קרונה איסלנדית @@ -864,19 +921,19 @@ STR_GAME_OPTIONS_CURRENCY_TRY :(TRY) לירה STR_GAME_OPTIONS_CURRENCY_SKK :(SKK) קורונה סלובקית STR_GAME_OPTIONS_CURRENCY_BRL :(BRL) ריל ברזילאי STR_GAME_OPTIONS_CURRENCY_EEK :(EEK) קרוני אסטוני +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 -STR_GAME_OPTIONS_MEASURING_UNITS_FRAME :{BLACK}יחידות מדידה -STR_GAME_OPTIONS_MEASURING_UNITS_DROPDOWN_TOOLTIP :{BLACK}בחירת יחידות מדידה ############ start of measuring units region -STR_GAME_OPTIONS_MEASURING_UNITS_IMPERIAL :אימפריאל -STR_GAME_OPTIONS_MEASURING_UNITS_METRIC :מטרית -STR_GAME_OPTIONS_MEASURING_UNITS_SI :השיטה הבינלאומית ############ end of measuring units region -STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}כלי רכב +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 :סע בצד ימין @@ -911,11 +968,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}בחר את שפת הממשק @@ -927,12 +986,9 @@ 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 :{BLACK}ערכת גרפיקה בסיסית STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}בחר בערכת גרפיקה בסיסית לשימוש -STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} קובץ{P "" s} חסר/הושחט +STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{P 0 "קובץ " ""}{NUM}{P "" " קבצים"} חסר{P 0 "" ים}/הושחט{P 0 "" ו} STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}מידע נוסף אודות ערכת הגרפיקה הבסיסית STR_GAME_OPTIONS_BASE_SFX :{BLACK}ערכת צלילים בסיסיים @@ -944,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 @@ -968,13 +1025,15 @@ 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}עבור ליורו מאוחר יותר -STR_CURRENCY_PREVIEW :{ORANGE}{CURRENCY_LONG}{LTBLUE} :צפיה מקדימה +STR_CURRENCY_PREVIEW :{ORANGE}{CURRENCY_LONG}{LTBLUE} :תצוגה מקדימה STR_CURRENCY_CUSTOM_CURRENCY_PREVIEW_TOOLTIP :{BLACK}10000 ליש"ט (£) במטבע שלך STR_CURRENCY_CHANGE_PARAMETER :{BLACK}שנה פרמטר עבור מטבע מותאם אישית STR_DIFFICULTY_LEVEL_SETTING_MAXIMUM_NO_COMPETITORS :{ORANGE}{COMMA}{LTBLUE} : מספר מתחרים מירבי STR_NONE :ללא +STR_FUNDING_ONLY :מימון בלבד +STR_MINIMAL :מזערי STR_NUM_VERY_LOW :נמוך מאוד STR_NUM_LOW :נמוך STR_NUM_NORMAL :רגיל @@ -1002,6 +1061,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_DISASTER_NONE :ללא STR_DISASTER_REDUCED :מופחת @@ -1025,253 +1088,610 @@ STR_WARNING_NO_SUITABLE_AI :{WHITE}אין # Advanced settings window STR_CONFIG_SETTING_CAPTION :{WHITE}הגדרות מתקדמות - - +STR_CONFIG_SETTING_FILTER_TITLE :{BLACK}מחרוזת סינון: +STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}הרחב הכל +STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}צמצם הכל +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_COMPANY_INGAME :הגדרת חברה (מאוחסנת במשחק שמור; משפיעה על החברה הנוכחית בלבד) + +STR_CONFIG_SETTING_RESTRICT_CATEGORY :{BLACK}קטגוריה: +STR_CONFIG_SETTING_RESTRICT_TYPE :{BLACK}סוג: +STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}מגביל את הרשימה להלן תוך שימוש בסינון שהוגדר מראש. +STR_CONFIG_SETTING_RESTRICT_BASIC :הגדרות בסיסיות +STR_CONFIG_SETTING_RESTRICT_ADVANCED :הגדרות מתקדמות +STR_CONFIG_SETTING_RESTRICT_ALL :הגדרות מומחה / כל ההגדרות +STR_CONFIG_SETTING_RESTRICT_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_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 :דלוק -STR_CONFIG_SETTING_DISABLED :מבוטל +STR_CONFIG_SETTING_DISABLED :מנוטרל STR_CONFIG_SETTING_COMPANIES_OFF :כבוי STR_CONFIG_SETTING_COMPANIES_OWN :עבור החברה שלי STR_CONFIG_SETTING_COMPANIES_ALL :עבור כל החברות +STR_CONFIG_SETTING_NONE :ללא +STR_CONFIG_SETTING_ORIGINAL :מקורי +STR_CONFIG_SETTING_REALISTIC :מציאותי STR_CONFIG_SETTING_HORIZONTAL_POS_LEFT :שמאל 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_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_RUNNING_COSTS :עלויות תפעול: {STRING} +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_SUBSIDY_MULTIPLIER :מכפיל עבור סובסידיה: {STRING} +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_TRAIN_REVERSING :מנע החלפת כיוון רכבות בתחנות: {STRING} +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_AUTOSLOPE :אפשר יצירת מילוי עפר תחת מבנים, פסי רכבת וכו': {STRING} +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_TRAIN_LENGTH :אורך מירבי של רכבות: {STRING} +STR_CONFIG_SETTING_TRAIN_LENGTH_HELPTEXT :קבע את האורך המירבי של רכבות +STR_CONFIG_SETTING_TILE_LENGTH :{P 0 " אריח" ""}{COMMA}{P 0 "" " אריחים"} +STR_CONFIG_SETTING_SMOKE_AMOUNT :כמות עשן/ניצוצות של כלי רכב: {STRING} +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_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_FORBID_90_DEG :אסור על רכבות וספינות לבצע פניות של 90 מעלות: {STRING} +STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :סיבוב של 90 מעלות מתרחש כאשר מסילה אנכית באה מיד אחרי מסילה אופקית במשבצת סמוכה, וכך מאלצת את הרכבת לבצע פנייה של 90 מעלות בעת חציית גבול המשבצות במקום פניית 45 הרגילה עבור צירופי מסילות אחרים. הנ"ל תקף גם לגבי רדיוס הסיבוב של אוניות STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :{STRING} :אפשר חיבור בין תחנות שאינן צמודות זו לזו -STR_CONFIG_SETTING_IMPROVEDLOAD :השתמש באלגוריתם טעינה משופר: {STRING} -STR_CONFIG_SETTING_GRADUAL_LOADING :טען כלי רכב בהדרגה: {STRING} +STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :אפשר הוספת חלקים לתחנה מבלי לגעת ישירות בחלקים הקיימים. דורש קליק בצירוף לחיצה על מקש Ctrl בעת מיקום החלקים החדשים STR_CONFIG_SETTING_INFLATION :אנפלציה: {STRING} -STR_CONFIG_SETTING_SELECTGOODS :מסור סחורה לתחנה רק כאשר יש ביקוש: {STRING} +STR_CONFIG_SETTING_INFLATION_HELPTEXT :אפשר אינפלציה בכלכלה, כך שהעלויות עולות מעט מהר יותר מאשר התשלומים +STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH :אורך גשר מירבי: {STRING} +STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_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_NONE :בכלל לא +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} :אפשר יצירת מספר תעשיות זהות בשטחה של עיר אחת +STR_CONFIG_SETTING_MULTIPINDTOWN_HELPTEXT :בדרך כלל, עיירה אינה רוצה יותר מאחד מכל סוג של תעשייה. הגדרה זו תאפשר מספר תעשיות מאותו סוג באותה עיירה +STR_CONFIG_SETTING_SIGNALSIDE :הצג רמזורים: {STRING} +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_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_AUTOSCROLL :{STRING} :גלילת תצוגה בעת שסמן העכבר נמצא בסמוך לקצוות +STR_CONFIG_SETTING_AUTOSCROLL_HELPTEXT :כאשר מאופשר, חלונות תצוגה יתחילו לגלול כאשר העכבר קרוב לקצה החלון +STR_CONFIG_SETTING_AUTOSCROLL_DISABLED :מבוטל +STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT_FULLSCREEN :חלון תצוגה ראשי, מסך מלא בלבד +STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT :חלון תצוגה ראשי +STR_CONFIG_SETTING_AUTOSCROLL_EVERY_VIEWPORT :כל חלון תצוגה STR_CONFIG_SETTING_BRIBE :אפשר נתינת שוחד לערים מקומיים {STRING} +STR_CONFIG_SETTING_BRIBE_HELPTEXT :השואפשר לחברות לנסות לשחד את הרשות העירונית המקומית. אם חד מתגלה ע"י פקח, החברה לא תוכל לפעול בעיירה במשך שישה חודשים STR_CONFIG_SETTING_ALLOW_EXCLUSIVE :אפשר קנייה של אפשריות הובלה בלעדיים : {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 :אפשר לחברות להעניק כסף לעיירות לצורך סלילה מחדש של כבישים, כדי לחבל בשירותים מבוססי כביש בעיירה STR_CONFIG_SETTING_ALLOW_GIVE_MONEY :אפשר שלחת כספים לחברות אחרות: {STRING} +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_VALUE :1 חלקי {COMMA} STR_CONFIG_SETTING_PLANE_CRASHES :מספר התרסקויות מטוסים: {STRING} +STR_CONFIG_SETTING_PLANE_CRASHES_HELPTEXT :קבע את הסיכוי להתרחשות של התרסקות מטוס 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_HELPTEXT :אפשר בנייה של תחנות "על הדרך" בכבישים בבעלות עיירות STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :אפשר נסיעה דרך תמרורי-עצירה על דרכים בבעלות מתחרים: {STRING} -STR_CONFIG_SETTING_ADJACENT_STATIONS :{STRING} :אפשר בניית תחנות בשכנות -STR_CONFIG_SETTING_DYNAMIC_ENGINES :אפשר מספר ערכות מנוע GRF חדשות: {STRING} -STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}החלפת הגדרה זו לא אפשרית כאשר יש רכבים +STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT :אפשר בנייה של תחנות "על הדרך" בכבישים בבעלות חברות אחרות +STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}שינוי הגדרה זו אינה אפשרית כאשר קיימים כלי רכב +STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :תחזוקת תשתיות: {STRING} +STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :כאשר מאופשר, תשתיות גורמות לעלויות תחזוקה. העלות גדלה באופן שהוא מעבר ליחסי לעומת גודל הרשת, וכך משפיע יותר על חברות גדולות מאשר על חברות קטנות STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :בטל התיישנות נמלי תעופה: {STRING} +STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS_HELPTEXT :אפשור הגדרה זו גורם לכל סוג נמל תעופה להישאר זמין לעד אחרי השקתו +STR_CONFIG_SETTING_WARN_LOST_VEHICLE :התרע אם רכב אבוד: {STRING} +STR_CONFIG_SETTING_WARN_LOST_VEHICLE_HELPTEXT :הפעל הודעות אודות רכבים שאינם מסוגלים למצוא מסלול אל היעד שנקבע להם STR_CONFIG_SETTING_ORDER_REVIEW :{STRING} :בדוק מסלולי נסיעה +STR_CONFIG_SETTING_ORDER_REVIEW_HELPTEXT :כאשר מאופשר, הוראות כלי הרכב נבחנות מדי כמה זמן, וכמה בעיות ברורות מדווחות באמצעות מבזק חדשות כאשר הן מזוהות STR_CONFIG_SETTING_ORDER_REVIEW_OFF :לא -STR_CONFIG_SETTING_ORDER_REVIEW_EXDEPOT :כן,למעט עבור רכבים שבעצירה -STR_CONFIG_SETTING_ORDER_REVIEW_ON :עבור כל הרכבים +STR_CONFIG_SETTING_ORDER_REVIEW_EXDEPOT :כן,למעט רכבים דוממים +STR_CONFIG_SETTING_ORDER_REVIEW_ON :עבור כל כלי רכב STR_CONFIG_SETTING_WARN_INCOME_LESS :{STRING} :התרע על רכבים בעלי הכנסה שלילית +STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :כאשר מאופשר, נשלח מבזק חדשות כאשר רכב לא הכניס שום רווח במשך שנה קלנדרית STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :{STRING} :בטל התיישנות כלי רכב +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_HELPTEXT :גיל יחסי בו יש לשקול חידוש אוטומטי של כלי רכב +STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_BEFORE :{P 0 "חודש " ""}{COMMA}{P "" "חודשים"} לפני +STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_AFTER :{P 0 "חודש " ""}{COMMA}{P "" "חודשים"} אחרי STR_CONFIG_SETTING_AUTORENEW_MONEY :סכום הכסף המינימלי הנדרש בשביל חידוש: {STRING} +STR_CONFIG_SETTING_AUTORENEW_MONEY_HELPTEXT :סכום כסף מזערי אשר חייב להשאר בבנק לפני שקילת חידוש אוטומטי של כלי רכב +STR_CONFIG_SETTING_ERRMSG_DURATION :משך הצגת הודעת שגיאה: {STRING} +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_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_EDGES_NOT_EMPTY :{WHITE}לפחות משבצת אחת בקצה הצפוני אינה ריקה STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}לפחות משבצת אחת באחד הקצוות אינה מכוסה מים +STR_CONFIG_SETTING_STATION_SPREAD :פריסה מירבית לתחנה: {STRING} +STR_CONFIG_SETTING_STATION_SPREAD_HELPTEXT :שטח מירבי עליו יכולים להתפרס חלקיה השונים של תחנה בודדת. יש לשים לב כי ערכים גבוהים יאטו את המשחק STR_CONFIG_SETTING_SERVICEATHELIPAD :{STRING}טיפול אוטומטי במסוקים במנחת +STR_CONFIG_SETTING_SERVICEATHELIPAD_HELPTEXT :תחזק מסוקים אחרי כל נחיתה, אפילו אם אין מוסך בנמל התעופה STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR :{STRING}ֿ :חבר את סרגל פני השטח לסרגלי בניית כבישים/מסילות/שדות תעופה/מזחים +STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR_HELPTEXT :בעת פתיחת סרגל כלים של בנייה עבור סוג תעבורה, פתחג ם את סרגל הכלים עבור שינוי פני השטח STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR :צבע קרקע שבשימוש מפה קטנה: {STRING} +STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :צבע פני השטח במפה הקטנה STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :ירוק STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :ירוק כהה 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_MEASURE_TOOLTIP :{STRING} :'הצג מידות בעת בניית כבישים/מסילות וכיוב -STR_CONFIG_SETTING_LIVERIES :{STRING} :הצג את צבעי החברה +STR_CONFIG_SETTING_MEASURE_TOOLTIP_HELPTEXT :הצג מרחק במשבצות והבדלי גבהים בעת גרירה תוך כדי פעולות בנייה +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 :{STRING} : העדפת צ'אט קבוצתי ע"י +STR_CONFIG_SETTING_PREFER_TEAMCHAT_HELPTEXT :החלף את שיוך הצ'טים הפנים-חברתי והפומבי למקשים ו- בהתאמה STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING :{STRING} :השתמש בכפתור הגלילה בעכבר עבור +STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING_HELPTEXT :אפשר גלילה באמצעות גלגלי עכבר דו-מימדיים STR_CONFIG_SETTING_SCROLLWHEEL_ZOOM :הקטנת/הגדלת מרחק מהתצוגה STR_CONFIG_SETTING_SCROLLWHEEL_SCROLL :גלילה STR_CONFIG_SETTING_SCROLLWHEEL_OFF :לא בשימוש STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER :{STRING} :מהירות כפתור הגלילה בעכבר +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-click STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Control-click 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_PAUSE_ON_NEW_GAME :עצור משחק אוטומטית אחרי התחלת משחק חדש: {STRING} -STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :השתמש ברשימת כלי הרכב המתקדמת: {STRING} +STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT :כאשר מאופשר, המשחק יושהה אוטומטית בעת התחלת משחק חדש, דבר המאפשר בחינה מדוקדקת יותר של המפה +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_HELPTEXT :אפשר שימוש ברשימות כלי הרכב המתקדמות לצורך חלוקת כלי רכב לקבוצות STR_CONFIG_SETTING_LOADING_INDICATORS :{STRING} :הצג מצביעי הטענה +STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :בחר האם מדדי טעינה יוצגו מעל רכבים בעת טעינתם או פריקתם STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :{STRING} :הצג לוח זמנים בפעימות במקום בימים +STR_CONFIG_SETTING_TIMETABLE_IN_TICKS_HELPTEXT :הצג זמני נסיעה בלוחות זמנים בפעימות משחק במקום בימים 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_DEFAULT_RAIL_TYPE :{STRING} :(ברירת מחדל לפסי רכבת (בתחילת משחק או לאחר טעינה -STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_FIRST :הישן ביותר -STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_LAST :החדש ביותר +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 :השאר את כלי הבנייה עבור גשרים, מנהרות וכו' פתוחים אחרי השימוש STR_CONFIG_SETTING_EXPENSES_LAYOUT :{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_EXPENSES_LAYOUT_HELPTEXT :הגדר את הסידור עבור חלון הוצאות החברה + +STR_CONFIG_SETTING_SOUND_TICKER :מבזקי חדשות: {STRING} +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_CONFIRM :בנייה: {STRING} +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_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_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_HELPTEXT :מספר מירבי של רכבי כביש בהם חברה יכולה להחזיק +STR_CONFIG_SETTING_MAX_AIRCRAFT :מספר כלי טייס מירבי לשחקן: {STRING} +STR_CONFIG_SETTING_MAX_AIRCRAFT_HELPTEXT :מספר מירבי של מטוסים בהם חברה יכולה להחזיק +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_AIRCRAFT :{STRING} :מנע הפעלת כלי טייס ע”י שחקני המחשב +STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT_HELPTEXT :אפשור הגדרה זו הופך בניית מטוסים לבלתי אפשרית עבור שחקן מחשב STR_CONFIG_SETTING_AI_BUILDS_SHIPS :{STRING} :מנע הפעלת כלי שייט ע”י שחקני המחשב +STR_CONFIG_SETTING_AI_BUILDS_SHIPS_HELPTEXT :אפשור הגדרה זו הופך בניית אוניות לבלתי אפשרית עבור שחקן מחשב +STR_CONFIG_SETTING_AI_PROFILE :פרופיל הגדרות ברירת מחדל: {STRING} +STR_CONFIG_SETTING_AI_PROFILE_HELPTEXT :בחר באיזה פרופיל הגדרות להשתמש עבור שחקני מחשב אקראיים או עבור ערכים ראשוניים בעת הוספת שחקן מחשב חדש או סקריפט משחק +STR_CONFIG_SETTING_AI_PROFILE_EASY :קל +STR_CONFIG_SETTING_AI_PROFILE_MEDIUM :בינוני +STR_CONFIG_SETTING_AI_PROFILE_HARD :קשה STR_CONFIG_SETTING_AI_IN_MULTIPLAYER :{STRING} :אפשר שחקני מחשב במשחק רשת +STR_CONFIG_SETTING_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_HELPTEXT :בחר האם תחזוקת כלי רכב מופעלת על פי הזמן שעבר מאז התחזוקה האחרונה או על פי ירידת האמינות באחוז מסוים ביחס לאמינות המירבית +STR_CONFIG_SETTING_SERVINT_TRAINS :ברירת מחדל למרווח הזמן בין תחזוקות עבור רכבות: {STRING} +STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :קבע את ברירת המחדל למרווח הזמן בין תחזוקות עבור רכבות חדשות, אם לא נקבע באופן מפורש מרווח זמן עבור כלי הרכב +STR_CONFIG_SETTING_SERVINT_VALUE :{P 0 "יום " ""}{COMMA}{P "" " ימים"}/% +STR_CONFIG_SETTING_SERVINT_DISABLED :מבוטל +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_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_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_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 :תמצית 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_ALLOW_SHARES :אפשר קניית מניות מחברות אחרות: {STRING} +STR_CONFIG_SETTING_ALLOW_SHARES_HELPTEXT :כאשר מאופשר, מתיר קנייה ומכירה של מניות של חברות. מניות יהיו זמינות רק עבור חברות המגיעות לגיל מסוים +STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE :אחוז הרווח מקטע נסיעה לתשלום במערכות הזנה: {STRING} +STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE_HELPTEXT :אחוז הרווח הניתן לקטעי ביניים במערכות הזנה, דבר הנותן שליטה מוגברת על ההכנסות +STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY :בעת גרירה, הצב רמזורים בכל: {STRING} +STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_HELPTEXT :קבע את המרחק בו רמזורים ייבנו על מסילה עד המכשול הבא (רמזור, צומת), אם רמזורים נגררים +STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_VALUE :{P 0 "משבצת " ""}{COMMA}{P "" " משבצות"} +STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE :בעת גרירה, שמור על מרחק קבוע בין רמזורים: {STRING} +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_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_NORMAL :רמזורי בלוק בלבד STR_CONFIG_SETTING_CYCLE_SIGNAL_PBS :רמזורי נתיב בלבד STR_CONFIG_SETTING_CYCLE_SIGNAL_ALL :הכל STR_CONFIG_SETTING_TOWN_LAYOUT :מתווה דרך לערים חדשות: {STRING} -STR_CONFIG_SETTING_TOWN_LAYOUT_DEFAULT :רגילה +STR_CONFIG_SETTING_TOWN_LAYOUT_HELPTEXT :פריסה עבור רשת הכבישים של עיירות +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} +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_FORBIDDEN :אסור STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :מותר STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :מותר, מתווה עיר מותאם אישית STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT :מיקום עצים במהלך המשחק: {STRING} +STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_HELPTEXT :שלוט בהופעה אקראית של עצים במהלך המשחק. זה עלול להשפיע על תעשיות המסתמכות על צמיחת עצים, לדוגמא מנסרות STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NONE :ללא {RED}(שובר מנסרת עץ) STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_RAINFOREST :רק ביערות גשם STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_ALL :בכל מקום STR_CONFIG_SETTING_TOOLBAR_POS :{STRING} :מיקום הסרגל העיקרי +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_HELPTEXT :מרחק מירבי בין חלונות בו החלון המוזז מיושר אוטומטית אל חלונות קרובים +STR_CONFIG_SETTING_SNAP_RADIUS_VALUE :{P 0 "פיקסל " ""}{COMMA}{P "" " פיקסלים"} +STR_CONFIG_SETTING_SNAP_RADIUS_DISABLED :מבוטל STR_CONFIG_SETTING_SOFT_LIMIT :Window soft limit (non-sticky): {STRING} +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_LVL_MIN :פי 4 +STR_CONFIG_SETTING_ZOOM_LVL_IN_2X :פי 2 +STR_CONFIG_SETTING_ZOOM_LVL_NORMAL :רגילה +STR_CONFIG_SETTING_ZOOM_LVL_OUT_2X :פי 2 +STR_CONFIG_SETTING_ZOOM_LVL_OUT_4X :פי 4 +STR_CONFIG_SETTING_ZOOM_LVL_OUT_8X :פי 8 STR_CONFIG_SETTING_TOWN_GROWTH :{STRING} : קצב ההתרחבות של העיירות +STR_CONFIG_SETTING_TOWN_GROWTH_HELPTEXT :מהירות גדילת עיירות STR_CONFIG_SETTING_TOWN_GROWTH_NONE :מבוטל STR_CONFIG_SETTING_TOWN_GROWTH_SLOW :איטי STR_CONFIG_SETTING_TOWN_GROWTH_NORMAL :רגיל STR_CONFIG_SETTING_TOWN_GROWTH_FAST :מהיר STR_CONFIG_SETTING_TOWN_GROWTH_VERY_FAST :מהיר מאוד +STR_CONFIG_SETTING_LARGER_TOWNS :החלק מן העיירות אשר יהפכו לערים: {STRING} +STR_CONFIG_SETTING_LARGER_TOWNS_HELPTEXT :כמות העיירות אשר יהפכו לערים, כך עיירה אשר מתחילה גדולה יותר וגדלה מהר יותר +STR_CONFIG_SETTING_LARGER_TOWNS_VALUE :1 ב-{COMMA} +STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :ללא 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_CITY_SIZE_MULTIPLIER_HELPTEXT :גודל ממוצע של ערים יחסית לעיירות רגילות בתחילת המשחק + +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_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 STR_CONFIG_SETTING_PATHFINDER_YAPF_RECOMMENDED :YAPF {BLUE}(מומלץ) -STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :{STRING} :אלגורתם איתור נתיב לרכבות -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :{STRING} :אלגורתם איתור נתיב לרכבים -STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS :{STRING} :אלגורתם איתור נתיב לכלי שייט +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_SHIPS :{STRING} :אלגוריתם איתור נתיב עבור כלי שייט +STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT :אלגוריתם איתור נתיב עבור אוניות +STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :החלפת כיוון אוטומטית ברמזורים: {STRING} +STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT :אפשר לרכבות להחליף כיוון ברמזור, אם הן חיכו שם זמן ממושך STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}שנה ערך # Config errors +STR_CONFIG_ERROR :{WHITE}שגיאה בנוגע לקובץ התצורה... +STR_CONFIG_ERROR_ARRAY :{WHITE}... שגיאה במערך '{STRING}' +STR_CONFIG_ERROR_INVALID_VALUE :{WHITE}... ערך לא חוקי '{STRING}' עבור '{STRING}' +STR_CONFIG_ERROR_TRAILING_CHARACTERS :{WHITE}... תווים עוקבים בסוף ההגדרה '{STRING}' +STR_CONFIG_ERROR_DUPLICATE_GRFID :{WHITE}... מתעלם מ-NewGRF '{STRING}': מזהה GRF משוכפל לעומת '{STRING}' +STR_CONFIG_ERROR_INVALID_GRF :{WHITE}... מתעלם מ-NewGRF לא חוקי '{STRING}': {STRING} +STR_CONFIG_ERROR_INVALID_GRF_NOT_FOUND :לא נמצא +STR_CONFIG_ERROR_INVALID_GRF_UNSAFE :לא בטיחותי עבור שימוש סטטי +STR_CONFIG_ERROR_INVALID_GRF_SYSTEM :NewGRF מערכת +STR_CONFIG_ERROR_INVALID_GRF_INCOMPATIBLE :לא תואם גרסה זו של OpenTTD +STR_CONFIG_ERROR_INVALID_GRF_UNKNOWN :לא ידוע +STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_LEVEL :{WHITE}... רמת דחיסה '{STRING}' אינה חוקית +STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_ALGORITHM :{WHITE}... פורמט שמירת משחק '{STRING}' אינו זמין. עובר להשתמש ב-'{STRING}' +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}': לא נמצאה # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} @@ -1284,9 +1704,11 @@ STR_INTRO_SCENARIO_EDITOR :{BLACK}עורך 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}הגדרות סקריפטים של משחק/שחקני מחשב STR_INTRO_QUIT :{BLACK}צא STR_INTRO_TOOLTIP_NEW_GAME :{BLACK}התחל משחק חדש. Ctrl+לחיצה מדלג על תצורת מפה @@ -1302,11 +1724,14 @@ 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}הצג הגדרות שדרוג גראפי STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK} חפש תוכן חדש/מעודכן להורדה -STR_INTRO_TOOLTIP_QUIT :{BLACK}'OpenTTD'- צא מ +STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK} הצג הגדרות סקריפטים של משחק/שחקני מחשב +STR_INTRO_TOOLTIP_QUIT :{BLACK}צא מ-'OpenTTD' +STR_INTRO_TRANSLATION :{BLACK}בתרגום זה חסרים {P 0 "מחרוזת " ""}{NUM}{P "" " מחרוזות"}. אנא עזור לשפר את OpenTTD ע"י הצטרפות כמתרגם. קרא בקובץ readme.txt לפרטים. # Quit window STR_QUIT_CAPTION :{WHITE}צא @@ -1334,7 +1759,7 @@ STR_ABANDON_SCENARIO_QUERY :{YELLOW}האם # Cheat window STR_CHEATS :{WHITE}(cheats) טריקים STR_CHEATS_TOOLTIP :{BLACK}תיבות הסימון מציינות האם השתמשת בטריק הנתון בעבר -STR_CHEATS_WARNING :{BLACK}אזהרה! אתה עומד לבגוד בחבריך למשחק. קח בחשבון שחרפה כזו תיזכר לנצח. +STR_CHEATS_WARNING :{BLACK}אזהרה! את/ה עומ/ת לבגוד בחבריך למשחק. קח/י בחשבון שחרפה כזו תיזכר לנצח. STR_CHEAT_MONEY :{LTBLUE}{CURRENCY_LONG}- הגדל את כמות הכסף במאזנך ל STR_CHEAT_CHANGE_COMPANY :{ORANGE}{COMMA}{LTBLUE} :שחק כבעלי החברה STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}טרקטור אימתני (הסרת מפעלים, רכיבים שאי אפשר להזיז): {ORANGE}{STRING} @@ -1345,6 +1770,7 @@ STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :אקלים קר STR_CHEAT_SWITCH_CLIMATE_SUB_TROPICAL_LANDSCAPE :אקלים טרופי STR_CHEAT_SWITCH_CLIMATE_TOYLAND_LANDSCAPE :ארץ הצעצועים STR_CHEAT_CHANGE_DATE :{LTBLUE}שנה תאריך:{ORANGE}{DATE_SHORT} +STR_CHEAT_CHANGE_DATE_QUERY_CAPT :{WHITE}שנה את השנה הנוכחית STR_CHEAT_SETUP_PROD :{LTBLUE}אפשר שינוי ערכי התפוקה: {ORANGE}{STRING} # Livery window @@ -1355,8 +1781,8 @@ 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}בחר צבע עיקרי להגדרת צבעים זו -STR_LIVERY_SECONDARY_TOOLTIP :{BLACK}בחר צבע מישני להגדרת צבעים זו +STR_LIVERY_PRIMARY_TOOLTIP :{BLACK}בחר/י צבע עיקרי עבור ערכת הצבעים המסומנת. קליק בשילוב לחיצה על מקש Ctrl יקבע את הצבע הזה עבור כל ערכת צבעים +STR_LIVERY_SECONDARY_TOOLTIP :{BLACK}בחר/י צבע משני עבור ערכת הצבעים המסומנת. קליק בשילוב לחיצה על מקש Ctrl יקבע את הצבע הזה עבור כל ערכת צבעים STR_LIVERY_PANEL_TOOLTIP :{BLACK} .CTRL+click בחר הגדרת צבע שברצונך לערוך או מספר הגדרות ע"י STR_LIVERY_DEFAULT :צבע כללי @@ -1387,6 +1813,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}בחר תווי פנים של גברים @@ -1397,14 +1824,14 @@ STR_FACE_NEW_FACE_TOOLTIP :{BLACK}צור STR_FACE_ADVANCED :{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}הפנים החביבות עליך הוטענו מהקובץ 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}שמור את הפנים לקובץ @@ -1442,10 +1869,6 @@ STR_FACE_TIE_EARRING_TOOLTIP :{BLACK} שנה # Network server list STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}משחק רשת -STR_NETWORK_SERVER_LIST_CONNECTION :{BLACK} :חיבור -STR_NETWORK_SERVER_LIST_CONNECTION_TOOLTIP :{BLACK} :(LAN)בחר משחק באינטרנט/רשת מקומית -STR_NETWORK_SERVER_LIST_LAN :LAN -STR_NETWORK_SERVER_LIST_INTERNET :אינטרנט STR_NETWORK_SERVER_LIST_PLAYER_NAME :{BLACK} :שם השחקן STR_NETWORK_SERVER_LIST_ENTER_NAME_TOOLTIP :{BLACK}זהו שמך כפי שיצפה ע"י המשתתפים האחרים @@ -1489,7 +1912,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}הפעל שרת חדש @@ -1504,16 +1927,14 @@ 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_LAN_INTERNET :LAN / אינטרנט -STR_NETWORK_START_SERVER_INTERNET_ADVERTISE :(אינטרנט (פרסם -STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} לקוח{P "" ות} -STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{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_TOOLTIP :{BLACK} :מספר משתתפים מירבי -STR_NETWORK_START_SERVER_COMPANIES_SELECT :{BLACK}{NUM} חבר{P ה ות} -STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{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_TOOLTIP :{BLACK}הגבל את השרת למספר מסויים של חברות -STR_NETWORK_START_SERVER_SPECTATORS_SELECT :{BLACK}צופים {NUM} -STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{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_TOOLTIP :{BLACK}הגבלת השרת למספר צופים מסויים STR_NETWORK_START_SERVER_LANGUAGE_SPOKEN :{BLACK}שפת דיבור: STR_NETWORK_START_SERVER_LANGUAGE_TOOLTIP :{BLACK}שחקנים אחרים ידעו איו שפה מדוברת בשרת @@ -1599,7 +2020,8 @@ STR_NETWORK_CONNECTING_6 :{BLACK}(6/6) נ STR_NETWORK_CONNECTING_SPECIAL_1 :{BLACK}טוען מידע על המשחק... STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}טוען מידע על החברה... ############ End of leave-in-this-order -STR_NETWORK_CONNECTING_WAITING :{BLACK} שחקנים {NUM} לפניך +STR_NETWORK_CONNECTING_WAITING :{BLACK}{P 0 "שחקן " ""}{NUM}{P "" " שחקנים"} לפניך +STR_NETWORK_CONNECTING_DOWNLOADING_1 :{BLACK}{BYTES} הורדו עד כה STR_NETWORK_CONNECTING_DOWNLOADING_2 :{BLACK}{BYTES} / {BYTES} :הורדו STR_NETWORK_CONNECTION_DISCONNECT :{BLACK}התנתק @@ -1625,6 +2047,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}בטל שמירת הסיסמה החדשה @@ -1637,7 +2060,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 @@ -1671,6 +2094,11 @@ STR_NETWORK_ERROR_SERVER_FULL :{WHITE}השרת STR_NETWORK_ERROR_SERVER_BANNED :{WHITE}הינך מודח משרת זה STR_NETWORK_ERROR_KICKED :{WHITE}נזרקת מהמשחק ע"י המשתתפים האחרים 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_JOIN :{WHITE}למחשב שלך לקח יותר מדי זמן כדי להצטרף אל השרת ############ Leave those lines in this order!! STR_NETWORK_ERROR_CLIENT_GENERAL :שגיאה כללית @@ -1688,8 +2116,15 @@ STR_NETWORK_ERROR_CLIENT_COMPANY_MISMATCH :המספר המ STR_NETWORK_ERROR_CLIENT_KICKED :נזרקת על ידי הסרבר 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_MAP :הורדת המפה ארכה זמן רב מדי +STR_NETWORK_ERROR_CLIENT_TIMEOUT_JOIN :עיבוד המפה ארך זמן רב מדי ############ End of leave-in-this-order +STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION_CAPTION :{WHITE}איבוד קשר אפשרי +STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION :{WHITE}ב- {NUM} שני{P "יה" "ות"} האחרוות לא התקבל מידע מהשרת # Network related errors STR_NETWORK_SERVER_MESSAGE :*** {1:STRING} @@ -1698,10 +2133,12 @@ STR_NETWORK_SERVER_MESSAGE_GAME_PAUSED :המשחק הו STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_1 :המשחק עדיין מופסק ({STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_2 :המשחק עדיין מופסק ({STRING}, {STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_3 :המשחק עדיין מופסק ({STRING}, {STRING}, {STRING}) +STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_4 :משחק עדיין מושהה ({STRING}, {STRING}, {STRING}, {STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_UNPAUSED :המשחק הומשך ({STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_REASON_NOT_ENOUGH_PLAYERS :מספר שחקנים STR_NETWORK_SERVER_MESSAGE_GAME_REASON_CONNECTING_CLIENTS :מתחבר ללקוחות STR_NETWORK_SERVER_MESSAGE_GAME_REASON_MANUAL :ידני +STR_NETWORK_SERVER_MESSAGE_GAME_REASON_GAME_SCRIPT :סקריפט משחק ############ End of leave-in-this-order STR_NETWORK_MESSAGE_CLIENT_LEAVING :עוזב STR_NETWORK_MESSAGE_CLIENT_JOINED :הצטרף למשחק {STRING} *** @@ -1730,6 +2167,8 @@ 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_OPEN_URL :{BLACK}בקר באתר האינטרנט +STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}בקר באתר האינטרנט עבור התוכן הזה STR_CONTENT_DOWNLOAD_CAPTION :{BLACK} הורד STR_CONTENT_DOWNLOAD_CAPTION_TOOLTIP :{BLACK} החל בהורדת התכנים שנבחרו STR_CONTENT_TOTAL_DOWNLOAD_SIZE :{WHITE}{BYTES}{SILVER} :גודל ההורדה @@ -1761,6 +2200,8 @@ STR_CONTENT_TYPE_SCENARIO :תרחיש STR_CONTENT_TYPE_HEIGHTMAP :מפת גבהים STR_CONTENT_TYPE_BASE_SOUNDS :צלילים בסיסיים STR_CONTENT_TYPE_BASE_MUSIC :מוזיקת בסיס +STR_CONTENT_TYPE_GAME_SCRIPT :סקריפט משחק +STR_CONTENT_TYPE_GS_LIBRARY :ספריית סקריפטי משחק # Content downloading progress window STR_CONTENT_DOWNLOAD_TITLE :{WHITE}מוריד תוכן... @@ -1776,20 +2217,29 @@ 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}גרפיקה חסרה +STR_MISSING_GRAPHICS_SET_MESSAGE :{BLACK}OpenTTD דורש גרפיקה כדי לפעול אבל כזו לא נמצאה. האם לאפשר ל-OpenTTD להוריד ולהתקין את הגרפיקה הזו? +STR_MISSING_GRAPHICS_YES_DOWNLOAD :{BLACK}כן, הורד את הגרפיקה +STR_MISSING_GRAPHICS_NO_QUIT :{BLACK}לא, צא מ-OpenTTD # 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 + # Base for station construction window(s) STR_STATION_BUILD_COVERAGE_AREA_TITLE :{BLACK}הדגשת שטח הכיסוי STR_STATION_BUILD_COVERAGE_OFF :{BLACK}מופסק @@ -1812,17 +2262,21 @@ 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 :מסילת ברזל חשמלית +STR_RAIL_NAME_MONORAIL :רכבת חד-פסית +STR_RAIL_NAME_MAGLEV :מסילת ברזל מגנטית # Rail depot construction window STR_BUILD_DEPOT_TRAIN_ORIENTATION_CAPTION :{WHITE}כיוון המוסך @@ -1851,19 +2305,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}הגדל צפיפות @@ -1873,6 +2327,7 @@ STR_SELECT_RAIL_BRIDGE_CAPTION :{WHITE}בחר STR_SELECT_ROAD_BRIDGE_CAPTION :{WHITE}בחירת גשר לכביש STR_SELECT_BRIDGE_SELECTION_TOOLTIP :{BLACK} בחירת סוג הגשר – בחר את הסוג שברצונך לבנות STR_SELECT_BRIDGE_INFO :{GOLD}{STRING},{} {VELOCITY} {WHITE}{CURRENCY_LONG} +STR_SELECT_BRIDGE_SCENEDIT_INFO :{GOLD}{STRING},{} {VELOCITY} STR_BRIDGE_NAME_SUSPENSION_STEEL :גשר תלוי, ברזל STR_BRIDGE_NAME_GIRDER_STEEL :גשר קורות, ברזל STR_BRIDGE_NAME_CANTILEVER_STEEL :גשר זיז, פלדה @@ -1886,21 +2341,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}שנה מצב בנה\מחק למבני חשמלית @@ -1915,22 +2370,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}כיוון המבדוק @@ -1941,12 +2396,13 @@ 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}בחירת שדה תעופה STR_STATION_BUILD_AIRPORT_TOOLTIP :{BLACK}בחר את גודל/סוג שדה התעופה STR_STATION_BUILD_AIRPORT_CLASS_LABEL :{BLACK}רמת שדה תעופה +STR_STATION_BUILD_AIRPORT_LAYOUT_NAME :{BLACK}פריסה {NUM} STR_AIRPORT_SMALL :קטן STR_AIRPORT_CITY :עירוני @@ -1967,14 +2423,15 @@ 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} משבצת @@ -1983,11 +2440,11 @@ 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}פזר עצים באופן אקראי על המפה +STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}שתול עצים באופן אקראי על פני השטח # Land generation window (SE) STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}יצירת טופוגרפיה @@ -1998,15 +2455,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}ערים אקראיות @@ -2046,6 +2503,21 @@ STR_FUND_INDUSTRY_BUILD_NEW_INDUSTRY :{BLACK}בנה STR_FUND_INDUSTRY_FUND_NEW_INDUSTRY :{BLACK}ממן # Industry cargoes window +STR_INDUSTRY_CARGOES_INDUSTRY_CAPTION :{WHITE}שרשרת תעשיות עבור תעשיה {STRING} +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_CARGO_TOOLTIP :{BLACK}{STRING}{}הקלק על המטען כדי לראות את הספקים והלקוחות שלו +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}בחר מטען +STR_INDUSTRY_CARGOES_SELECT_CARGO_TOOLTIP :{BLACK}בחר את המטען אשר ברצונך להציג +STR_INDUSTRY_CARGOES_SELECT_INDUSTRY :{BLACK}בחר תעשיה +STR_INDUSTRY_CARGOES_SELECT_INDUSTRY_TOOLTIP :{BLACK}בחר את התעשיה אשר ברצונך להציג # Land area window STR_LAND_AREA_INFORMATION_CAPTION :{WHITE}מידע על שטח קרקע @@ -2070,6 +2542,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 :סלעים @@ -2080,12 +2553,35 @@ STR_LAI_CLEAR_DESCRIPTION_FIELDS :שדות 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_TRAIN_DEPOT :{STRING} מוסך רכבות STR_LAI_ROAD_DESCRIPTION_ROAD :כביש 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_ROAD_RAIL_LEVEL_CROSSING :מפגש כביש/מסילה STR_LAI_ROAD_DESCRIPTION_TRAMWAY :חשמלית # Houses come directly from their building names @@ -2143,7 +2639,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-2012 The OpenTTD team +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2014 The OpenTTD team # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}שמור משחק @@ -2151,6 +2647,7 @@ STR_SAVELOAD_LOAD_CAPTION :{WHITE}טען 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_BYTES_FREE :{BLACK}בתים פנויים {BYTES} STR_SAVELOAD_LIST_TOOLTIP :{BLACK}רשימה של כוננים, תיקיות וקובצי משחקים שמורים @@ -2161,8 +2658,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} @@ -2171,6 +2669,7 @@ STR_SAVELOAD_OSKTITLE :{BLACK}הכנס # World generation STR_MAPGEN_WORLD_GENERATION_CAPTION :{WHITE}יצור עולם STR_MAPGEN_MAPSIZE :{BLACK}:גודל המפה +STR_MAPGEN_MAPSIZE_TOOLTIP :{BLACK}בחר את גודל המפה במשבצות. מספר המשבצות הזמינות תהיה קצת קטנה יותר. STR_MAPGEN_BY :{BLACK}* STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK} :מספר העיירות STR_MAPGEN_DATE :{BLACK} :תאריך @@ -2178,14 +2677,11 @@ 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_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_VARIETY :{BLACK}הפצה מגוונת: STR_MAPGEN_GENERATE :{WHITE}יצירת קרקע @@ -2207,7 +2703,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}שנה את שנת הפתיחה @@ -2230,11 +2725,13 @@ STR_GENERATION_ABORT_MESSAGE :{YELLOW}?בטו STR_GENERATION_PROGRESS :{WHITE}{NUM}% :הושלם STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / {NUM} STR_GENERATION_WORLD_GENERATION :{BLACK}יצור עולם +STR_GENERATION_RIVER_GENERATION :{BLACK}יצירת נהרות STR_GENERATION_TREE_GENERATION :{BLACK}יצירת עצים STR_GENERATION_OBJECT_GENERATION :{BLACK}יצירת מבנים בלתי ניידים STR_GENERATION_CLEARING_TILES :{BLACK}יצירת איזורים סלעיים STR_GENERATION_SETTINGUP_GAME :{BLACK}קביעת הגדרות המשחק STR_GENERATION_PREPARING_TILELOOP :{BLACK}מריץ לולאה על כל המשבצות +STR_GENERATION_PREPARING_SCRIPT :{BLACK}מריץ סקריפט STR_GENERATION_PREPARING_GAME :{BLACK}מכין את המשחק לפעולה # NewGRF settings @@ -2260,9 +2757,12 @@ 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}קבע ערכים +STR_NEWGRF_SETTINGS_SHOW_PARAMETERS :{BLACK}הצג פרמטרים STR_NEWGRF_SETTINGS_TOGGLE_PALETTE :{BLACK}החלף פלטת צבעים STR_NEWGRF_SETTINGS_TOGGLE_PALETTE_TOOLTIP :{BLACK}מחליף את פלטת הצבעים עבור קובץ השדרוג הגראפי שנבחר. השתמש באפשרות זו אם הצבעים שהתקבלו אינם די ברורים STR_NEWGRF_SETTINGS_APPLY_CHANGES :{BLACK}החל הגדרות @@ -2272,6 +2772,7 @@ STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_TOOLTIP :{BLACK} בדו STR_NEWGRF_SETTINGS_FILENAME :{SILVER}{STRING}{BLACK}: שם קובץ STR_NEWGRF_SETTINGS_GRF_ID :{BLACK}GRF ID: {SILVER}{STRING} +STR_NEWGRF_SETTINGS_VERSION :{BLACK}גרסא: {SILVER}{NUM} STR_NEWGRF_SETTINGS_MIN_VERSION :{BLACK}גירסה מינימלת תואמת: {SILVER}{NUM} STR_NEWGRF_SETTINGS_MD5SUM :{BLACK}MD5sum: {SILVER}{STRING} STR_NEWGRF_SETTINGS_PALETTE :{SILVER}{STRING}{BLACK}: פלטת צבעים @@ -2280,23 +2781,53 @@ STR_NEWGRF_SETTINGS_PARAMETER :{SILVER}{STRING STR_NEWGRF_SETTINGS_NO_INFO :{BLACK}לא קיים מידע 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}סגור STR_NEWGRF_PARAMETERS_RESET :{BLACK}אתחל STR_NEWGRF_PARAMETERS_RESET_TOOLTIP :{BLACK}הגדר את כל הפרמטרים לערך ברירת המחדל שלהם +STR_NEWGRF_PARAMETERS_DEFAULT_NAME :פרמטר {NUM} +STR_NEWGRF_PARAMETERS_SETTING :{STRING}: {ORANGE}{STRING} STR_NEWGRF_PARAMETERS_NUM_PARAM :{LTBLUE}מספר הגדרות: {ORANGE}{NUM} # NewGRF inspect window STR_NEWGRF_INSPECT_CAPTION :{WHITE}בדוק - {STRING} STR_NEWGRF_INSPECT_PARENT_BUTTON :{BLACK}הורה +STR_NEWGRF_INSPECT_PARENT_TOOLTIP :{BLACK}בחן את העצם של ההיקף שמעל +STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT :{STRING} ב-{HEX} STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_OBJECT :אוביקט STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :סוג מסילה +STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}משתנה NewGRF פרמטר 60+x (הקסה-דצימלי) # 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_GOTO_BUTTON :{BLACK}דלג לספרייט +STR_SPRITE_ALIGNER_GOTO_TOOLTIP :{BLACK}עבור לספרייט הנתון. אם הוא אינו ספרייט רגיל, עבור לספרייט הרגיל הראשון שבא אחריו +STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}הספרייט הקודם +STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}עבור לספרייט הקודם, כאשר נדלג על כל הספרייטים המיוחדים ונחזור בסוף לתחילת הרשימה +STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}הייצוג של הספרייט הנבחר. בעת ציור הספרייט, נתעלם מהיישור שלו +STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}הזז את הספרייט, תוך שינוי מיקום על צירי ה-X וה-Y STR_SPRITE_ALIGNER_OFFSETS :{BLACK}X היסט: {NUM}, Y היסט: {NUM} +STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}בחר ספרייט +STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}בחר ספרייט מנקודה כלשהיא במסך +STR_SPRITE_ALIGNER_GOTO_CAPTION :{WHITE}עבור לספרייט # NewGRF (self) generated warnings/errors STR_NEWGRF_ERROR_MSG_INFO :{SILVER}{STRING} @@ -2306,19 +2837,33 @@ STR_NEWGRF_ERROR_MSG_FATAL :{SILVER}{STRING STR_NEWGRF_ERROR_FATAL_POPUP :{WHITE}התרחשה שגיאה קריטית ב-NewGRF: {}{STRING} STR_NEWGRF_ERROR_VERSION_NUMBER :{1:STRING} לא יעבוד עם גרסת ה-TTDPatch שדווחה ע"י OpenTTD. STR_NEWGRF_ERROR_DOS_OR_WINDOWS :{1:STRING} היא עבור גרסת {STRING} של TTD. +STR_NEWGRF_ERROR_UNSET_SWITCH :{1:STRING} נועד להיות בשימוש יחד עם {STRING} STR_NEWGRF_ERROR_INVALID_PARAMETER :פרמטר לא חוקי עבור {1:STRING}: פרמטר {STRING} ({NUM}) +STR_NEWGRF_ERROR_LOAD_BEFORE :{1:STRING} חייב להיטען לפני {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_CORRUPT_SPRITE :{YELLOW}{STRING} contains a corrupt sprite. All corrupt sprites will be shown as a red question mark (?). +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} מכיל אלמנט גרפי שגוי. כל האלמנטים הגרפיים השגויים יוצגו כסימן שאלה אדום (?) +STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :מכיל מספר רשומות Action 8 (ספרייט {3:NUM}) +STR_NEWGRF_ERROR_READ_BOUNDS :קראת אחר סוף הפסאודו-ספרייט (ספרייט {3:NUM}) +STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}בערכת גרפיקה הבסיסית חסרים מספר ספרייטים.{}אנא עדכן את הערכה הגרפית הבסיסית +STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}בערכת גרפיקה הבסיסית חסרים מספר ספרייטים.{}אנא עדכן את הערכה הגרפית הבסיסית.{}מכיוון שהינך משחק {YELLOW}גרסת פיתוח של OpenTTD{WHITE}, אולי תצטרך {YELLOW}גרסת פיתוח של ערכת הגרפיקה הבסיסית{WHITE} +STR_NEWGRF_ERROR_GRM_FAILED :משאב GRF המבוקש אינו זמין (ספרייט {3:NUM}) +STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} נהפך ללא זמין ע"י {2:STRING} +STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :מבנה פורמט ספרייט לא תקין/לא ידוע (ספרייט {3:NUM}) # 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}הקובץ לא נמצא, הוטען קובץ תואם +STR_NEWGRF_TOO_MANY_NEWGRFS :{WHITE}לא ניתן להוסיף את הקובץ: מספר קבצי שדרוג גראפי מקסימאלי STR_NEWGRF_COMPATIBLE_LOAD_WARNING :{WHITE}קבצים תואמים נטענו במקום קבצים חסרים STR_NEWGRF_DISABLED_WARNING :{WHITE}שדרוגים גראפים אחדים לא נמצאו ולפיכך נוטרלו @@ -2332,13 +2877,15 @@ STR_NEWGRF_LIST_COMPATIBLE :{YELLOW}נמצ STR_NEWGRF_LIST_MISSING :{RED}חסרים קבצים # NewGRF 'it's broken' warnings -STR_NEWGRF_BROKEN :{WHITE}התנהגות ה-NewGRF '{STRING}' עלולה לגרום לקריסה ו/או חוסר סנכרון במשחק. -STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}זה שינה את אורך הרכב ל'{1:ENGINE}' כאשר לא במוסך. -STR_BROKEN_VEHICLE_LENGTH :{WHITE}רכבת '{VEHICLE}' השייכת לחברת '{COMPANY}' בעלת אורך לא חוקי. דבר זה נגמר ככל הנראה בעקבות בעיות ב-NEWGRF.המשחק עלול לצאת מסנכרון או לקרוס. +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_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 STR_NEWGRF_INVALID_CARGO :<מטען לא חוקי> @@ -2347,10 +2894,19 @@ 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-ים. כתלות בכמות זה עלול לארוך זמן מה... +STR_NEWGRF_SCAN_STATUS :{BLACK}{NUM} NewGRF{P "" "-ים"} נסרק {P 0 "" "ו"} מתוך כ-{NUM} NewGRF{P "" "-ים"} +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}אפשר/בטל התאמת רישיות בעת השוואת שמות שלטים אל מחרוזת הסינון # Sign window STR_EDIT_SIGN_CAPTION :{WHITE}שנה את המלל של הסימניה @@ -2375,6 +2931,12 @@ STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{ORANGE}{1:COMM 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_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}עיירה גדלה כל {P 0 " יום" ""}{ORANGE}{COMMA}{BLACK}{P "" " ימים"} +STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}עיירה גדלה כל {P 0 " יום" ""}{ORANGE}{COMMA}{BLACK}{P "" " ימים"} (ממומנת) +STR_TOWN_VIEW_TOWN_GROW_STOPPED :{BLACK}העיירה {RED}איננה{BLACK} גדלה STR_TOWN_VIEW_NOISE_IN_TOWN :{ORANGE}{1:COMMA}{BLACK} :מירבית {ORANGE}{0:COMMA}{BLACK} :רמת הרעש המותרת בעיר זו STR_TOWN_VIEW_CENTER_TOOLTIP :{BLACK}מקד את התצוגה על מיקום העיר. Ctrl+לחיצה פותח חלונית תצוגה חדשה במיקום העיר STR_TOWN_VIEW_LOCAL_AUTHORITY_BUTTON :{BLACK}רשות מקומית @@ -2416,11 +2978,40 @@ 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 פותח חלון תצוגה חדש במיקום התעשיה/העיירה/המשבצת # Goal question window +STR_GOAL_QUESTION_CAPTION_QUESTION :שאלה +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 :ביטול +STR_GOAL_QUESTION_BUTTON_OK :אישור +STR_GOAL_QUESTION_BUTTON_NO :לא +STR_GOAL_QUESTION_BUTTON_YES :כן +STR_GOAL_QUESTION_BUTTON_DECLINE :דחה +STR_GOAL_QUESTION_BUTTON_ACCEPT :קבל/י +STR_GOAL_QUESTION_BUTTON_IGNORE :התעלם/י +STR_GOAL_QUESTION_BUTTON_RETRY :נסה/י שוב +STR_GOAL_QUESTION_BUTTON_PREVIOUS :הקודם +STR_GOAL_QUESTION_BUTTON_NEXT :הבא +STR_GOAL_QUESTION_BUTTON_STOP :עצור +STR_GOAL_QUESTION_BUTTON_START :התחל +STR_GOAL_QUESTION_BUTTON_GO :סע +STR_GOAL_QUESTION_BUTTON_CONTINUE :המשך +STR_GOAL_QUESTION_BUTTON_RESTART :אתחל +STR_GOAL_QUESTION_BUTTON_POSTPONE :דחה +STR_GOAL_QUESTION_BUTTON_SURRENDER :היכנע +STR_GOAL_QUESTION_BUTTON_CLOSE :סגור # Subsidies window STR_SUBSIDIES_CAPTION :{WHITE}סובסידיות @@ -2431,10 +3022,13 @@ STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK} :שיר STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING} מ-{STRING} אל {STRING}{YELLOW} ({COMPANY}{YELLOW}, עד {DATE_SHORT}) 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} - {COMMA} תחנת{P "" s} +STR_STATION_LIST_CAPTION :{WHITE}{COMPANY} - {P 0 "תחנה " ""}{COMMA}{P "" " תחנות"} STR_STATION_LIST_STATION :{YELLOW} {1:STATION_FEATURES}{0:STATION} STR_STATION_LIST_WAYPOINT :{YELLOW}{WAYPOINT} STR_STATION_LIST_NONE :{YELLOW}- כלום - @@ -2444,7 +3038,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}) @@ -2452,11 +3045,34 @@ STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}מקבל STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}הצג רשימת סוגי המטען שהתחנה מקבלת STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}מקבלת: {WHITE}{CARGO_LIST} +STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}לתחנה זו זכויות תעבורה בלעדיות בעיירה זו. +STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} רכשה זכויות תעבורה בלעדיות בעיירה זו. STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}דירוג STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}הצג את דירוג השירות -STR_STATION_VIEW_CARGO_RATINGS_TITLE :{BLACK} :דירוג מקומי של שירותי הובלה -STR_STATION_VIEW_CARGO_RATING :{WHITE}{STRING}: {YELLOW}{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 :מחריד @@ -2479,6 +3095,8 @@ STR_STATION_VIEW_SCHEDULED_SHIPS_TOOLTIP :{BLACK}הצג 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} @@ -2517,6 +3135,7 @@ STR_FINANCES_BORROW_BUTTON :{BLACK}לווה STR_FINANCES_BORROW_TOOLTIP :{BLACK}הגדל את ההלוואה. Ctrl+לחיצה מלווה ככל שניתן STR_FINANCES_REPAY_BUTTON :{BLACK}החזר {CURRENCY_LONG} STR_FINANCES_REPAY_TOOLTIP :{BLACK}פרע חלק מההלוואה.Ctrl+לחיצה פורע ככל שניתן +STR_FINANCES_INFRASTRUCTURE_BUTTON :{BLACK}תשתיות # Company view STR_COMPANY_VIEW_CAPTION :{WHITE}{COMPANY} {BLACK}{COMPANY_NUM} @@ -2532,13 +3151,22 @@ STR_COMPANY_VIEW_SHIPS :{WHITE}כלי STR_COMPANY_VIEW_VEHICLES_NONE :{WHITE}אין STR_COMPANY_VIEW_COMPANY_VALUE :{GOLD}{CURRENCY_LONG}{WHITE}:שווי החברה STR_COMPANY_VIEW_SHARES_OWNED_BY :{WHITE}({1:COMPANY} נמצאים בבעלות{NBSP} {0:COMMA}%) +STR_COMPANY_VIEW_INFRASTRUCTURE :{GOLD}תשתיות: +STR_COMPANY_VIEW_INFRASTRUCTURE_RAIL :{WHITE}{P 0 "חלק מסילה " ""}{COMMA}{P "" " חלקי מסילה"} +STR_COMPANY_VIEW_INFRASTRUCTURE_ROAD :{WHITE}{P 0 "חלק כביש " ""}{COMMA}{P "" " חלקי כביש"} +STR_COMPANY_VIEW_INFRASTRUCTURE_WATER :{WHITE}{P 0 "משבצת מים " ""}{COMMA}{P "" " משבצות מים"} +STR_COMPANY_VIEW_INFRASTRUCTURE_STATION :{WHITE}{P 0 "משבצת תחנה " ""}{COMMA}{P "" " משבצות תחנה"} +STR_COMPANY_VIEW_INFRASTRUCTURE_AIRPORT :{WHITE}{P 0 "נמל תעופה " ""}{COMMA}{P "" " נמלי תעופה"} +STR_COMPANY_VIEW_INFRASTRUCTURE_NONE :{WHITE}ללא STR_COMPANY_VIEW_BUILD_HQ_BUTTON :{BLACK}בנה בניין מטה 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}צפה בספירות מפורטות של תשתיות STR_COMPANY_VIEW_NEW_FACE_BUTTON :{BLACK}פנים חדשות STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}בחר פנים חדשות למנהל @@ -2551,8 +3179,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 :שם המנהל @@ -2560,6 +3188,18 @@ STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :שם המנהל STR_BUY_COMPANY_MESSAGE :{WHITE}.אנו מחפשים אחר קונה לחברה{} ? {NBSP}{1:CURRENCY_LONG} תמורת {NBSP}{0:COMPANY} האם אתה מעוניין לקנות את # Company infrastructure window +STR_COMPANY_INFRASTRUCTURE_VIEW_CAPTION :{WHITE}תתיות של {COMPANY} +STR_COMPANY_INFRASTRUCTURE_VIEW_RAIL_SECT :{GOLD}חלקי מסילה: +STR_COMPANY_INFRASTRUCTURE_VIEW_SIGNALS :{WHITE}רמזורים +STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD_SECT :{GOLD}חלקי כביש: +STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD :{WHITE}כביש +STR_COMPANY_INFRASTRUCTURE_VIEW_TRAMWAY :{WHITE}מסילת רכבת קלה +STR_COMPANY_INFRASTRUCTURE_VIEW_WATER_SECT :{GOLD}משבצות מים: +STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS :{WHITE}תעלות +STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}תחנות: +STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}משבצות תחנה +STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}נמלי תעופה +STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL :{WHITE}{CURRENCY_LONG}/שנה # Industry directory STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}תעשיות @@ -2637,12 +3277,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 :הסר את כל הכלים מהקבוצה @@ -2662,10 +3303,12 @@ STR_BUY_VEHICLE_AIRCRAFT_CAPTION :כלי טייס STR_PURCHASE_INFO_COST_WEIGHT :{GOLD}{1:WEIGHT_SHORT}{BLACK} :משקל {GOLD}{0:CURRENCY_LONG}{BLACK} :מחיר STR_PURCHASE_INFO_SPEED_POWER :{BLACK}מהירות: {GOLD}{VELOCITY}{BLACK} הספק: {GOLD}{POWER} STR_PURCHASE_INFO_SPEED :{GOLD}{VELOCITY}{BLACK} :מהירות +STR_PURCHASE_INFO_SPEED_OCEAN :{BLACK}מהירות על גבי אוקיינוס: {GOLD}{VELOCITY} +STR_PURCHASE_INFO_SPEED_CANAL :{BLACK}מהחרות על גבי תעלה/נהר: {GOLD}{VELOCITY} 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}) @@ -2676,6 +3319,7 @@ STR_PURCHASE_INFO_REFITTABLE_TO :{BLACK} :נית STR_PURCHASE_INFO_ALL_TYPES :כל סוגי המטען STR_PURCHASE_INFO_ALL_BUT :{CARGO_LIST} כל סוגי המטען למעט STR_PURCHASE_INFO_MAX_TE :{BLACK}כוח סחיבה מקסימלי: {GOLD}{FORCE} +STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}טווח: {GOLD}{COMMA} משבצות STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK} בחירת קרונות - לחץ על קרון לקבלת מידע STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}רשימת כלי הרכב - בחר כלי רכב למידע @@ -2687,10 +3331,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}שנה שם @@ -2715,7 +3359,7 @@ STR_DEPOT_RENAME_DEPOT_CAPTION :שינוי שם STR_DEPOT_NO_ENGINE :{BLACK}- STR_DEPOT_VEHICLE_TOOLTIP :{BLACK}{0:ENGINE}{1:STRING} -STR_DEPOT_VEHICLE_TOOLTIP_CHAIN :{BLACK}{NUM} כלי{P "" s}{STRING} +STR_DEPOT_VEHICLE_TOOLTIP_CHAIN :{BLACK}{P 0 "כלי רכב " ""}{NUM}{P "" " כלי רכב"}{STRING} STR_DEPOT_VEHICLE_TOOLTIP_CARGO :{}{CARGO_LONG} ({CARGO_SHORT}) STR_DEPOT_TRAIN_LIST_TOOLTIP :{BLACK}רכבות - לחצן ימני על רכבת לקבלת מידע, גרור עם לחצן שמאלי קרון להוספתו/הסרתו מהרכבת. החזק Ctrl כדי לבצע את הפונקציות על השרשרת הבאה @@ -2755,10 +3399,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+לחיצה פותח חלונית תצוגה חדשה במיקום המוסך @@ -2796,8 +3440,11 @@ STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}{1:WEIGH STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}עלות: {CURRENCY_LONG} משקל: {WEIGHT_SHORT}{}מהירות: {VELOCITY} הספק: {POWER} מקסימלי T.E.: {6:FORCE}{}עלות תפעולית: {4:CURRENCY_LONG}/לשנה{}קיבולת: {5:CARGO_LONG} STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST :{BLACK}עלות: {CURRENCY_LONG} מהירות מקסימלית: {VELOCITY}{}קיבולת: {CARGO_LONG}, {CARGO_LONG}{}עלות שוטפת: {CURRENCY_LONG}/לשנה STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK}עלות: {CURRENCY_LONG} מהירות מקסימלית: {VELOCITY}{}קיבולת: {CARGO_LONG}{}הוצאה שוטפת: {CURRENCY_LONG}/לשנה +STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_CAPACITY_RUNCOST:{BLACK}עלות: {CURRENCY_LONG} מהירות מירבית: {VELOCITY} טווח: {COMMA} משבצות{}קיבולת: {CARGO_LONG}, {CARGO_LONG}{}עלות תפעול: {CURRENCY_LONG}/שנה +STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}עלות: {CURRENCY_LONG} מהירות מירבית: {VELOCITY} טווח: {COMMA} משבצות{}קיבולת: {CARGO_LONG}{}עלות תפעול: {CURRENCY_LONG}/שנה # Autoreplace window +STR_REPLACE_VEHICLES_WHITE :{WHITE}החלף {STRING} - {STRING} STR_REPLACE_VEHICLE_TRAIN :רכבת STR_REPLACE_VEHICLE_ROAD_VEHICLE :רכב STR_REPLACE_VEHICLE_SHIP :כלי שייט @@ -2807,9 +3454,12 @@ STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}בחר STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}בחר את הקטר/מנוע שברצונך לבנות במקום הקטר/מנוע הקיים 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_VEHICLE_SELECTED :{BLACK}לא נבחר כלי +STR_REPLACE_REPLACING_WHEN_OLD :{ENGINE} כאשר ישן STR_REPLACE_VEHICLES_STOP :{BLACK}הפסק את החלפת הכלים STR_REPLACE_HELP_STOP_BUTTON :{BLACK}לחץ כאן להפסיק את ההחלפה @@ -2826,7 +3476,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} @@ -2841,10 +3491,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}הכרח את הרכבת להמשיך מבלי להמתין לרמזור @@ -2880,6 +3530,7 @@ STR_VEHICLE_STATUS_STOPPED :{RED}נעצרה STR_VEHICLE_STATUS_TRAIN_STOPPING_VEL :{RED}{VELOCITY} ,עוצרת STR_VEHICLE_STATUS_TRAIN_NO_POWER :{RED}סוג מסילה לא מתאים לרכבת זו STR_VEHICLE_STATUS_TRAIN_STUCK :{ORANGE}ממתינה לנתיב פנוי +STR_VEHICLE_STATUS_AIRCRAFT_TOO_FAR :{ORANGE}מרחק גדול מדי עד ליעד הבא STR_VEHICLE_STATUS_HEADING_FOR_STATION_VEL :{LTBLUE}פונה אל {STATION}, {VELOCITY} STR_VEHICLE_STATUS_NO_ORDERS_VEL :{LTBLUE}אין הוראות, {VELOCITY} @@ -2908,6 +3559,7 @@ STR_VEHICLE_INFO_AGE :({1:COMMA}) ש STR_VEHICLE_INFO_AGE_RED :{RED}({1:COMMA}) שנים {NBSP}{0:COMMA} STR_VEHICLE_INFO_MAX_SPEED :{BLACK}מהירות מקסימלית: {LTBLUE}{VELOCITY} +STR_VEHICLE_INFO_MAX_SPEED_RANGE :{BLACK}מהירות מירבית: {LTBLUE}{VELOCITY} {BLACK}טווח: {LTBLUE}{COMMA} משבצות STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}משקל: {LTBLUE}{WEIGHT_SHORT} {BLACK}הספק: {LTBLUE}{POWER}{BLACK} מהירות מקסימלית: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}משקל: {LTBLUE}{WEIGHT_SHORT} {BLACK}הספק: {LTBLUE}{POWER}{BLACK} מהירות מקסימלית: {LTBLUE}{VELOCITY} {BLACK}T.E. מקסימלי: {LTBLUE}{FORCE} @@ -2927,6 +3579,7 @@ STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{LTBLUE}{1:DATE STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}הגדל את מרווח הזמן עד קבלת שירות ב-10. Ctrl+לחיצה מגדיל את המרווח ב-5 STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}הקטן את מרווח הזמן עד קבלת שירות ב-10. Ctrl+לחיצה מקטינה את המרווח ב-5 + STR_QUERY_RENAME_TRAIN_CAPTION :{WHITE}תן שם לרכבת STR_QUERY_RENAME_ROAD_VEHICLE_CAPTION :{WHITE}תן שם לכלי הרכב STR_QUERY_RENAME_SHIP_CAPTION :{WHITE}תן שם לכלי השייט @@ -2959,6 +3612,10 @@ STR_VEHICLE_DETAILS_TRAIN_ARTICULATED_RV_CAPACITY :{BLACK} :קיב STR_REFIT_CAPTION :{WHITE}(התאם) {VEHICLE} STR_REFIT_TITLE :{GOLD}בחר את סוג המטען עבור כלי שייט זה STR_REFIT_NEW_CAPACITY_COST_OF_REFIT :{RED}{1:CURRENCY_LONG}{BLACK} :עלות ההתאמה {}{GOLD}{0:CARGO_LONG}{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_TRAIN_LIST_TOOLTIP :{BLACK}בחר את סוג המשא עבור הרכבת STR_REFIT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}בחר את סוג המטען לנשיאה @@ -2980,7 +3637,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} @@ -3011,6 +3668,10 @@ 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_DROP_REFIT_AUTO :מטען קבוע +STR_ORDER_DROP_REFIT_AUTO_ANY :מטען זמין STR_ORDER_SERVICE :{BLACK}טיפול STR_ORDER_DROP_GO_ALWAYS_DEPOT :עבור תמיד דרך @@ -3024,9 +3685,10 @@ 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 :זמן חיים נותר (שנים) STR_ORDER_CONDITIONAL_COMPARATOR_TOOLTIP :{BLACK}כיצד יושוו נתוני כלי הרכב לערך נתון מסויים STR_ORDER_CONDITIONAL_COMPARATOR_EQUALS :שווה ל @@ -3046,12 +3708,16 @@ STR_ORDERS_SKIP_TOOLTIP :{BLACK}דלג 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_GO_TO_BUTTON :{BLACK}עבור אל STR_ORDER_GO_TO_NEAREST_DEPOT :עבור דרך המוסך הקרוב STR_ORDER_GO_TO_NEAREST_HANGAR :עבור דרך סככת המטוסים הקרובה STR_ORDER_CONDITIONAL :דילוג מותנה על יעד -STR_ORDERS_GO_TO_TOOLTIP :{BLACK}הכנס הוראה חדשה לפני ההוראה המודגשת, או הוסף הוראה לסוף הרשימה. Ctrl גורם להוראות של תחנות להיות 'טען מטען כלשהו במלואו', נקודות ציון להיות 'ללא עצירה' והוראות מוסכים להיות 'בשירות' +STR_ORDER_SHARE :שתף פקודות +STR_ORDERS_GO_TO_TOOLTIP :{BLACK}הכנס הוראה חדשה לפני ההוראה המודגשת, או הוסף הוראה לסוף הרשימה. Ctrl גורם להוראות של תחנות להיות 'טען מטען כלשהו במלואו', נקודות ציון להיות 'ללא עצירה' והוראות מוסכים להיות 'בשירות'. 'שתף הוראות' או Ctrl מאפשר שיתוף הוראות עם כלי הרכב הנבחר. לחיצה על כלי רכב מעתיקה את ההוראות ממנו. הוראה למוסך מבטלת את הטיפולים האוטומטיים של כלי הרכב STR_ORDERS_VEH_WITH_SHARED_ORDERS_LIST_TOOLTIP :{BLACK}הצג את כל הרכבים אשר עבורם יעד זה הוא מצומד @@ -3076,6 +3742,7 @@ STR_ORDER_STOP_ORDER :(עצור) STR_ORDER_GO_TO_STATION :{2:STRING} {1:STATION} {0:STRING} +STR_ORDER_IMPLICIT :(משתמע) STR_ORDER_FULL_LOAD :(העמס הכל) STR_ORDER_FULL_LOAD_ANY :(העמס כל סוג מטען במלואו) @@ -3088,17 +3755,31 @@ 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 :(אל תפרוק ואל תעמיס) - +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 :מטען זמין STR_ORDER_STOP_LOCATION_NEAR_END :[קצה קרוב] STR_ORDER_STOP_LOCATION_MIDDLE :[אמצע] STR_ORDER_STOP_LOCATION_FAR_END :[קצה רחוק] +STR_ORDER_OUT_OF_RANGE :{RED} (היעד הבא נמצא מחוץ לטווח) STR_ORDER_CONDITIONAL_UNCONDITIONAL :{COMMA} :דלג ליעד STR_ORDER_CONDITIONAL_NUM :{3:COMMA} {2:STRING} {1:STRING} כאשר {NBSP}{0:COMMA}{NBSP} דלג ליעד @@ -3114,12 +3795,15 @@ STR_TIMETABLE_ORDER_VIEW_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_FOR :{STRING} ערוך מסע ל +STR_TIMETABLE_TRAVEL_FOR_SPEED :סע למשך {STRING} במהירות שהיא לכל היותר {VELOCITY} STR_TIMETABLE_STAY_FOR :{STRING} והמתן למשך STR_TIMETABLE_AND_TRAVEL_FOR :{STRING} וערוך מסע ל -STR_TIMETABLE_DAYS :ימים {COMMA} -STR_TIMETABLE_TICKS :פעימות {COMMA} +STR_TIMETABLE_DAYS :{P 0 "יום " ""}{COMMA}{P "" " ימים"} +STR_TIMETABLE_TICKS :{P 0 "פעימה " ""}{COMMA}{P "" " פעימות"} STR_TIMETABLE_TOTAL_TIME :{BLACK}{STRING} להשלמת לוח זמנים זה נדרשים STR_TIMETABLE_TOTAL_TIME_INCOMPLETE :{BLACK}.(לא כל היעדים תוזמנו) {STRING} להשלמת לוח זמנים זה ידרשו לפחות @@ -3131,7 +3815,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}בחר תאריך להיות נקודת ההתחלה של לוח זמנים זה +STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}בחר תאריך כנקודת ההתחלה ללוח הזמנים. Ctrl+לחיצה קובע את נקודת ההתחלה של לוח זמנים זה ומפזר בצורה אחידה בין כל כלי התחבורה המשותפים בלוח זמנים זה לפי סדרם, במידה וכל ההוראות כפופות ללוח הזמנים. STR_TIMETABLE_CHANGE_TIME :{BLACK}שנה זמן STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}שנה את פרק הזמן לשהייה ביעד שנבחר @@ -3139,7 +3823,11 @@ STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}שנה STR_TIMETABLE_CLEAR_TIME :{BLACK}אפס זמן STR_TIMETABLE_CLEAR_TIME_TOOLTIP :{BLACK}אפס את פרק הזמן לשהייה ביעד שנבחר +STR_TIMETABLE_CHANGE_SPEED :{BLACK}שנה מגבלת מהירות +STR_TIMETABLE_CHANGE_SPEED_TOOLTIP :{BLACK}שנה את מהירות הנסיעה המירבית של הפקודה המסומנת +STR_TIMETABLE_CLEAR_SPEED :{BLACK}הסר מגבלת מהירות +STR_TIMETABLE_CLEAR_SPEED_TOOLTIP :{BLACK}הסר את מהירות הנסיעה המירבית של הפקודה המסומנת STR_TIMETABLE_RESET_LATENESS :{BLACK}אפס מונה איחורים STR_TIMETABLE_RESET_LATENESS_TOOLTIP :{BLACK}אפס את מונה האיחורים על מנת לאפשר לכלי להגיע בזמן @@ -3165,42 +3853,57 @@ 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}המשך STR_AI_DEBUG_CONTINUE_TOOLTIP :{BLACK}בטל הפסקה והמשך את הבינה המלאכותית +STR_AI_DEBUG_SELECT_AI_TOOLTIP :{BLACK}צפה בפלט הדיבאג עבור שחקן מחשב זה +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 :שחקן אנושי STR_AI_CONFIG_RANDOM_AI :בינה מלאכותית אקראית +STR_AI_CONFIG_NONE :(ללא) STR_AI_CONFIG_MOVE_UP :{BLACK}הזז מעלה STR_AI_CONFIG_MOVE_UP_TOOLTIP :{BLACK}הזז את ה-AI הנבחר מעלה ברשימה STR_AI_CONFIG_MOVE_DOWN :{BLACK}הזז מטה STR_AI_CONFIG_MOVE_DOWN_TOOLTIP :{BLACK}הזז את ה-AI הנבחר למטה ברשימה +STR_AI_CONFIG_GAMESCRIPT :{SILVER}סקריפט משחק +STR_AI_CONFIG_AI :{SILVER}שחקני מחשב +STR_AI_CONFIG_CHANGE :{BLACK}בחר {STRING} STR_AI_CONFIG_CHANGE_NONE : +STR_AI_CONFIG_CHANGE_AI :שחקן מחשב +STR_AI_CONFIG_CHANGE_GAMESCRIPT :סקריפט משחק +STR_AI_CONFIG_CHANGE_TOOLTIP :{BLACK}טען סקריפט נוסף STR_AI_CONFIG_CONFIGURE :{BLACK}שנה הגדרות STR_AI_CONFIG_CONFIGURE_TOOLTIP :{BLACK}שנה הגדרות בינה מלאכותית # Available AIs window +STR_AI_LIST_CAPTION :{WHITE}זמין {STRING} +STR_AI_LIST_CAPTION_AI :שחקני מחשב +STR_AI_LIST_CAPTION_GAMESCRIPT :סקריפטי משחק STR_AI_LIST_TOOLTIP :{BLACK} לחץ לבחירת בינה מלאכותית STR_AI_LIST_AUTHOR :{LTBLUE}יוצר: {ORANGE}{STRING} @@ -3208,16 +3911,29 @@ 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}אל תשנה את התסריט # AI Parameters +STR_AI_SETTINGS_CAPTION :{WHITE}{STRING} פרמטרים +STR_AI_SETTINGS_CAPTION_AI :שחקן מחשב +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} # Textfile window +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}רשיון # Vehicle loading indicators @@ -3227,6 +3943,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}{CURRENCY_LONG} :מחיר @@ -3252,28 +3970,31 @@ 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}... לא יכול להמיר סוג תמונה +STR_ERROR_HEIGHTMAP_TOO_LARGE :{WHITE}... התמונה גדולה מדי 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}צילום מסך ענק +STR_WARNING_SCREENSHOT_SIZE_MESSAGE :{YELLOW}צילום המסך יהיה בעל רזולוציה של {COMMA} x {COMMA} פיקסלים. תהליך הצילום עלול לארוך זמן מה. האם ברצונך להמשיך? STR_MESSAGE_SCREENSHOT_SUCCESSFULLY :{WHITE}תמונת המסך נשמרה בהצלחה כ-'{STRING}' STR_ERROR_SCREENSHOT_FAILED :{WHITE}!לא יכול ליצור תמונה @@ -3295,13 +4016,18 @@ STR_ERROR_SITE_UNSUITABLE :{WHITE}... אז STR_ERROR_ALREADY_BUILT :{WHITE}... כבר בנוי STR_ERROR_OWNED_BY :{WHITE}... בבעלות {STRING} STR_ERROR_AREA_IS_OWNED_BY_ANOTHER :{WHITE}... השטח בבעלותה של חברה אחרת +STR_ERROR_TERRAFORM_LIMIT_REACHED :{WHITE}... הגעת למגבלת שינוי פני הקרקע +STR_ERROR_CLEARING_LIMIT_REACHED :{WHITE}... הגעת למגבלת פינוי המשבצות +STR_ERROR_TREE_PLANT_LIMIT_REACHED :{WHITE}... הגעת למגבלת נטיעת העצים STR_ERROR_NAME_MUST_BE_UNIQUE :{WHITE}השם חייב להיות ייחודי STR_ERROR_GENERIC_OBJECT_IN_THE_WAY :{WHITE}חוסם את הדרך {1:STRING} +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_AIRPORT :{WHITE}הרשות המקומית של {TOWN} מתנגדת לבניית שדה תעופה נוסף בעיר STR_ERROR_LOCAL_AUTHORITY_REFUSES_NOISE :{WHITE}הרשות המקומית ב{TOWN} מתנגדת להקמת שדה תעופה בשל חשש מהרעש +STR_ERROR_BRIBE_FAILED :{WHITE}נסיונך לשוחד התגלה ע"י חוקר אזורי # Levelling errors STR_ERROR_CAN_T_RAISE_LAND_HERE :{WHITE}לא ניתן להגביה את הקרקע... @@ -3332,13 +4058,15 @@ STR_ERROR_PROTECTED :{WHITE}חברה STR_ERROR_CAN_T_GENERATE_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}... קרוב מידי לקצה המפה 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}... יותר מידי תעשיות @@ -3351,10 +4079,13 @@ 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}... יכול להיות ממוקם בסמוך לשולי המפה בלבד 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}לא ניתן לבנות תחנת רכבת כאן... @@ -3377,6 +4108,8 @@ 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}... לא ניתן לבטל חלק מהתחנה @@ -3386,6 +4119,7 @@ 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}יש להסיר את תחנת האוטובוס תחילה @@ -3436,7 +4170,7 @@ 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_NOTHING_TO_DO :{WHITE}לא יושמו כללים להחלפה/חידוש אוטומטיים STR_ERROR_AUTOREPLACE_MONEY_LIMIT :(הגבלת כסף) # Rail construction errors @@ -3445,13 +4179,16 @@ 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_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_SIGNAL_CAN_T_CONVERT_SIGNALS_HERE :{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}יש להסיר את הכביש תחילה @@ -3460,6 +4197,8 @@ 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}לא ניתן לבנות כאן תעלה... @@ -3487,6 +4226,7 @@ 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}לא ניתן להקים מנהרה כאן... @@ -3495,8 +4235,11 @@ STR_ERROR_MUST_DEMOLISH_TUNNEL_FIRST :{WHITE}יש ל STR_ERROR_ANOTHER_TUNNEL_IN_THE_WAY :{WHITE}מנהרה אחרת מפריעה STR_ERROR_TUNNEL_THROUGH_MAP_BORDER :{WHITE}התעלה תסתיים מחוץ למפה STR_ERROR_UNABLE_TO_EXCAVATE_LAND :{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}לא ניתן לקנות שטח זה... @@ -3561,9 +4304,15 @@ 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}לא ניתן להכריח את הרכבת לעבור ברמזור בעת סכנה... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}לא ניתן להפוך את כיוון הנסיעה של הרכבת... +STR_ERROR_TRAIN_START_NO_POWER :לרכבת אין כוח STR_ERROR_CAN_T_MAKE_ROAD_VEHICLE_TURN :{WHITE}לא ניתן לבצע סיבוב של כלי הרכב... @@ -3583,13 +4332,15 @@ 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}הכלי אינו עובר ביעד זה +STR_ERROR_TIMETABLE_ONLY_WAIT_AT_STATIONS :{WHITE}כלי רכב יכולים להמתין בתחנות בלבד +STR_ERROR_TIMETABLE_NOT_STOPPING_HERE :{WHITE}כלי הרכב אינו עוצר בתחנה זו # Sign related errors STR_ERROR_TOO_MANY_SIGNS :{WHITE}... יותר מידי סימניות @@ -3600,6 +4351,8 @@ STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}לא נ # Translatable comment for OpenTTD's desktop shortcut STR_DESKTOP_SHORTCUT_COMMENT :משחק סימולציה המבוסס על תחבורה, הון ופאר +# Translatable descriptions in media/baseset/*.ob* files + ##id 0x2000 # Town building names STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1 :בניין משרדים גבוה @@ -3724,7 +4477,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 (קיטור' @@ -3931,10 +4684,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 :'אף-אף-פי דארט' @@ -4048,8 +4801,9 @@ 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_SPACE_STRING :{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} @@ -4073,9 +4827,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 9b3bb2f79..4e12f5123 100644 --- a/src/lang/hungarian.txt +++ b/src/lang/hungarian.txt @@ -262,27 +262,36 @@ STR_UNITS_POWER_IMPERIAL :{COMMA}LE STR_UNITS_POWER_METRIC :{COMMA}LE 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} tonna STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} tonna 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} köbméter +STR_UNITS_FORCE_IMPERIAL :{COMMA} lbf +STR_UNITS_FORCE_METRIC :{COMMA} kp STR_UNITS_FORCE_SI :{COMMA} kN STR_UNITS_HEIGHT_IMPERIAL :{COMMA} láb +STR_UNITS_HEIGHT_METRIC :{COMMA} m STR_UNITS_HEIGHT_SI :{COMMA} m # Common window strings +STR_LIST_FILTER_TITLE :{BLACK}Szűrő kifejezés: STR_LIST_FILTER_OSKTITLE :{BLACK}Kulcsszó megadása a szűréshez STR_LIST_FILTER_TOOLTIP :{BLACK}Írj ide egy kulcsszót ami alapján szűrni szeretnéd a listát +STR_TOOLTIP_GROUP_ORDER :{BLACK}Csoportosítási szempont kiválasztása STR_TOOLTIP_SORT_ORDER :{BLACK}Csökkenő/növekvő sorbarendezés STR_TOOLTIP_SORT_CRITERIA :{BLACK}Sorbarendezési feltétel STR_TOOLTIP_FILTER_CRITERIA :{BLACK}Szűrési feltétel kiválasztása @@ -294,7 +303,8 @@ STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Ablak be STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Ablak címsora - húzd ezt a mozgatáshoz STR_TOOLTIP_SHADE :{BLACK}Ablak összecsukása - csak a címsor látszódik STR_TOOLTIP_DEBUG :{BLACK}NewGRF nyomonkövetés információ mutatása -STR_TOOLTIP_STICKY :{BLACK}Ez az ablak akkor se záródjon be, ha az "Összes ablak bezárása" gombot megnyomjuk +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_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 @@ -318,7 +328,6 @@ STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}Terület # These are used in buttons -STR_SORT_BY_CAPTION_POPULATION :{BLACK}Lakosság STR_SORT_BY_CAPTION_NAME :{BLACK}Név STR_SORT_BY_CAPTION_DATE :{BLACK}Dátum # These are used in dropdowns @@ -339,7 +348,8 @@ STR_SORT_BY_LENGTH :Hossz STR_SORT_BY_LIFE_TIME :Élettartamból hátralévő idő STR_SORT_BY_TIMETABLE_DELAY :Menetrendi késés STR_SORT_BY_FACILITY :Állomástípus -STR_SORT_BY_WAITING :Várakozó rakomány értéke +STR_SORT_BY_WAITING_TOTAL :Összes várakozó rakomány +STR_SORT_BY_WAITING_AVAILABLE :Elérhető várakozó rakomány STR_SORT_BY_RATING_MAX :Legjobb vélemény szerint STR_SORT_BY_RATING_MIN :Legrosszabb vélemény szerint STR_SORT_BY_ENGINE_ID :JárműID @@ -351,6 +361,8 @@ STR_SORT_BY_RUNNING_COST :Üzemeltetési STR_SORT_BY_POWER_VS_RUNNING_COST :Telj./Üzemeltetési ktsg. STR_SORT_BY_CARGO_CAPACITY :Szállítási kapacitás STR_SORT_BY_RANGE :Hatótávolság +STR_SORT_BY_POPULATION :Lakosság +STR_SORT_BY_RATING :Értékelés # Tooltips for the main toolbar STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Játék szüneteltetése @@ -363,6 +375,8 @@ STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Támogat STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Állomások listája STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Pénzügyi adatok STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Általános adatok +STR_TOOLBAR_TOOLTIP_DISPLAY_STORY_BOOK :{BLACK}Napló +STR_TOOLBAR_TOOLTIP_DISPLAY_GOALS_LIST :{BLACK}Célok listája STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Grafikonok STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}A vállalatok helyezése STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Gazdasági épület építése, meglévők listázása @@ -394,9 +408,9 @@ STR_SCENEDIT_TOOLBAR_LANDSCAPE_GENERATION :{BLACK}Táj sze STR_SCENEDIT_TOOLBAR_TOWN_GENERATION :{BLACK}Település-generálás STR_SCENEDIT_TOOLBAR_INDUSTRY_GENERATION :{BLACK}Gazdasági épület-generálás STR_SCENEDIT_TOOLBAR_ROAD_CONSTRUCTION :{BLACK}Út építése -STR_SCENEDIT_TOOLBAR_PLANT_TREES :{BLACK}Faültetés. Shift lenyomásával megmutatja a becsült költséget +STR_SCENEDIT_TOOLBAR_PLANT_TREES :{BLACK}Faültetés. Shift lenyomásával megmutatja a becsült építési költséget STR_SCENEDIT_TOOLBAR_PLACE_SIGN :{BLACK}Felirat lerakása -STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}Objektum elhelyezése. Shift lenyomásával megmutatja a becsült költséget +STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}Objektum elhelyezése. Shift lenyomásával megmutatja a várható költséget ############ range for SE file menu starts STR_SCENEDIT_FILE_MENU_SAVE_SCENARIO :Pálya mentése @@ -433,24 +447,24 @@ STR_FILE_MENU_SEPARATOR : STR_FILE_MENU_EXIT :Kilépés ############ range ends here -############ range for map menu starts +# map menu STR_MAP_MENU_MAP_OF_WORLD :Világtérkép STR_MAP_MENU_EXTRA_VIEW_PORT :Extra látkép +STR_MAP_MENU_LINGRAPH_LEGEND :Rakományáramlási jelmagyarázat STR_MAP_MENU_SIGN_LIST :Feliratok listája -############ range for town menu starts, yet the town directory is shown in the map menu in the scenario editor + +############ range for town menu starts STR_TOWN_MENU_TOWN_DIRECTORY :Városlista -############ end of the 'Display map' dropdown STR_TOWN_MENU_FOUND_TOWN :Új város alapítása -############ end of the 'Town' dropdown +############ range ends here ############ range for subsidies menu starts STR_SUBSIDIES_MENU_SUBSIDIES :Támogatások -STR_SUBSIDIES_MENU_GOAL :Jelenlegi célok ############ range ends here ############ range for graph menu starts STR_GRAPH_MENU_OPERATING_PROFIT_GRAPH :Működési nyereség grafikon -STR_GRAPH_MENU_INCOME_GRAPH :Jövedelem grafikon +STR_GRAPH_MENU_INCOME_GRAPH :Bevétel grafikon STR_GRAPH_MENU_DELIVERED_CARGO_GRAPH :Elszállított rakomány grafikon STR_GRAPH_MENU_PERFORMANCE_HISTORY_GRAPH :Teljesítmény grafikon STR_GRAPH_MENU_COMPANY_VALUE_GRAPH :Vállalat értéke grafikon @@ -460,10 +474,12 @@ STR_GRAPH_MENU_CARGO_PAYMENT_RATES :Rakományok sz ############ range for company league menu starts STR_GRAPH_MENU_COMPANY_LEAGUE_TABLE :Vállalatok helyezései STR_GRAPH_MENU_DETAILED_PERFORMANCE_RATING :Teljesítményértékelések részletezése +STR_GRAPH_MENU_HIGHSCORE :Rekord Tábla ############ range ends here ############ range for industry menu starts STR_INDUSTRY_MENU_INDUSTRY_DIRECTORY :Gazdasági épületek listája +STR_INDUSTRY_MENU_INDUSTRY_CHAIN :Ipari lánc STR_INDUSTRY_MENU_FUND_NEW_INDUSTRY :Új gazdasági épület építése ############ range ends here @@ -517,7 +533,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. @@ -533,22 +549,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 @@ -588,7 +622,7 @@ STR_GRAPH_Y_LABEL :{TINY_FONT}{STR STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA} STR_GRAPH_OPERATING_PROFIT_CAPTION :{WHITE}Működési nyereség grafikon -STR_GRAPH_INCOME_CAPTION :{WHITE}Jövedelem grafikon +STR_GRAPH_INCOME_CAPTION :{WHITE}Bevétel grafikon STR_GRAPH_CARGO_DELIVERED_CAPTION :{WHITE}Elszállított áruk mennyisége STR_GRAPH_COMPANY_PERFORMANCE_RATINGS_CAPTION :{WHITE}Vállalatok teljesítménye (legjobb teljesítmény=1000) STR_GRAPH_COMPANY_VALUES_CAPTION :{WHITE}Vállalatok értéke @@ -700,7 +734,7 @@ STR_PLAYLIST_TOOLTIP_CLICK_TO_ADD_TRACK :{BLACK}Kattints STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}Kattints a zeneszámra annak az aktuális zenei műsorból való eltávolításához (csak Saját 1 és Saját 2 esetén) # Highscore window -STR_HIGHSCORE_TOP_COMPANIES_WHO_REACHED :{BIG_FONT}{BLACK}Legjobb vállalatok melyek elérték {NUM}-t +STR_HIGHSCORE_TOP_COMPANIES_WHO_REACHED :{BIG_FONT}{BLACK}A legjobb vállalatok, melyek elérték {NUM}-t STR_HIGHSCORE_TOP_COMPANIES_NETWORK_GAME :{BIG_FONT}{BLACK}Vállalatok helyezései {NUM} STR_HIGHSCORE_POSITION :{BIG_FONT}{BLACK}{COMMA}. STR_HIGHSCORE_PERFORMANCE_TITLE_BUSINESSMAN :Üzletember @@ -710,7 +744,7 @@ STR_HIGHSCORE_PERFORMANCE_TITLE_CAPITALIST :Tőkés STR_HIGHSCORE_PERFORMANCE_TITLE_MAGNATE :Nagytőkés STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL :Mágnás STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY :Az évszázad iparmágnása -STR_HIGHSCORE_NAME :{BIG_FONT}{PRESIDENT_NAME}, {COMPANY} +STR_HIGHSCORE_NAME :{PRESIDENT_NAME}, {COMPANY} STR_HIGHSCORE_STATS :{BIG_FONT}'{STRING}' ({COMMA}) STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{BLACK}{COMPANY} elérte a '{STRING}' rangot! STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{WHITE}{PRESIDENT_NAME} - {COMPANY} elérte a '{STRING}' rangot! @@ -721,17 +755,20 @@ STR_SMALLMAP_CAPTION :{WHITE}Térkép STR_SMALLMAP_TYPE_CONTOURS :Domborzat STR_SMALLMAP_TYPE_VEHICLES :Járművek STR_SMALLMAP_TYPE_INDUSTRIES :Gazdaság +STR_SMALLMAP_TYPE_ROUTEMAP :Rakományáramlás STR_SMALLMAP_TYPE_ROUTES :Utak STR_SMALLMAP_TYPE_VEGETATION :Növényzet STR_SMALLMAP_TYPE_OWNERS :Tulajdonosok STR_SMALLMAP_TOOLTIP_SHOW_LAND_CONTOURS_ON_MAP :{BLACK}Domborzat mutatása a térképen STR_SMALLMAP_TOOLTIP_SHOW_VEHICLES_ON_MAP :{BLACK}Járművek mutatása a térképen STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRIES_ON_MAP :{BLACK}Gazdasági épületek mutatása a térképen +STR_SMALLMAP_TOOLTIP_SHOW_LINK_STATS_ON_MAP :{BLACK}Rakományáramlás mutatása a térképen STR_SMALLMAP_TOOLTIP_SHOW_TRANSPORT_ROUTES_ON :{BLACK}Szállítási útvonalak mutatása a térképen STR_SMALLMAP_TOOLTIP_SHOW_VEGETATION_ON_MAP :{BLACK}Növényzet mutatása a térképen STR_SMALLMAP_TOOLTIP_SHOW_LAND_OWNERS_ON_MAP :{BLACK}Tulajdonosok mutatása a térképen STR_SMALLMAP_TOOLTIP_INDUSTRY_SELECTION :{BLACK}Kattints egy gazdasági épület típusra annak megjelenítésének ki/bekapcsolásához. Ctrl+kattintással kikapcsolja az összeset kivéve a kiválasztott típust. Ctrl+kattintás még egyszer bekapcsolja az összeset STR_SMALLMAP_TOOLTIP_COMPANY_SELECTION :{BLACK}Kattints egy vállalatra a tulajdonainak megjelenítésének ki/bekapcsolásához. Ctrl+kattintással kikapcsolja az összeset kivéve a kiválasztottat. Ctrl+kattintás még egyszer bekapcsolja az összeset +STR_SMALLMAP_TOOLTIP_CARGO_SELECTION :{BLACK}Kattints egy árura, hogy váltsad a tulajdonságának megjelenítését. Ctrl+Kattintás a kíválasztott árun kívül a többit letiltja. Ismételt Ctrl+Kattintásra minden árut engedélyez STR_SMALLMAP_LEGENDA_ROADS :{TINY_FONT}{BLACK}Út STR_SMALLMAP_LEGENDA_RAILROADS :{TINY_FONT}{BLACK}Vasút @@ -766,6 +803,7 @@ STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLA STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Városnevek be/ki STR_SMALLMAP_CENTER :{BLACK}A térkép közepét a jelenlegi helyre állítja 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}Kikapcsol mind @@ -776,6 +814,8 @@ STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES :{BLACK}Mutasd a STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}Magasságtérkép be/kikapcsolása STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES :{BLACK}Semelyik vállalat tulajdonainak megjelenítése a térképen STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}Összes vállalat tulajdonainak megjelenítése a térképen +STR_SMALLMAP_TOOLTIP_DISABLE_ALL_CARGOS :{BLACK}Semmilyen rakomány megjelenítés a térképen +STR_SMALLMAP_TOOLTIP_ENABLE_ALL_CARGOS :{BLACK}Minden rakomány megjelnítése a térképen # Status bar messages STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Utolsó üzenet vagy újsághír megmutatása @@ -847,18 +887,17 @@ STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL :{BIG_FONT}{BLAC STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM :{BIG_FONT}{BLACK}Egy rovaráradat {INDUSTRY} pusztulását okozta!{}A termelés a felére csökkent STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_SMOOTH :{BIG_FONT}{BLACK}{STRING}termelés csökkent! {INDUSTRY} mostantól {COMMA}%-kal kevesebbet termel! -STR_NEWS_TRAIN_IS_WAITING :{WHITE}{VEHICLE} a fűtőházban vár +STR_NEWS_TRAIN_IS_WAITING :{WHITE}{VEHICLE} a járműtelepen vár STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE} a garázsban vár 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 @@ -937,15 +976,12 @@ STR_GAME_OPTIONS_CURRENCY_LTL :Litván Litas ( STR_GAME_OPTIONS_CURRENCY_KRW :Dél-koreai Von (KRW) STR_GAME_OPTIONS_CURRENCY_ZAR :Dél-afrikai Rand (ZAR) STR_GAME_OPTIONS_CURRENCY_CUSTOM :Saját... +STR_GAME_OPTIONS_CURRENCY_GEL :Grúz Lari (GEL) +STR_GAME_OPTIONS_CURRENCY_IRR :Iráni Riál (IRR) ############ end of currency region -STR_GAME_OPTIONS_MEASURING_UNITS_FRAME :{BLACK}Mértékegységek -STR_GAME_OPTIONS_MEASURING_UNITS_DROPDOWN_TOOLTIP :{BLACK}Mértékegység választás ############ start of measuring units region -STR_GAME_OPTIONS_MEASURING_UNITS_IMPERIAL :Angolszász -STR_GAME_OPTIONS_MEASURING_UNITS_METRIC :Metrikus -STR_GAME_OPTIONS_MEASURING_UNITS_SI :SI ############ end of measuring units region STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Közúti járművek @@ -983,11 +1019,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 @@ -999,9 +1037,6 @@ 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_BASE_GRF :{BLACK}Grafikus alapcsomag STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}A játékhoz használandó grafikus alapcsomag kiválasztása STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} hiányzó/hibás fájl @@ -1103,6 +1138,9 @@ STR_WARNING_NO_SUITABLE_AI :{WHITE}Nincsen # Advanced settings window STR_CONFIG_SETTING_CAPTION :{WHITE}Haladó 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 ö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} @@ -1112,15 +1150,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_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 :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_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_ALL :Minden beállítás +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á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 @@ -1138,9 +1187,29 @@ STR_CONFIG_SETTING_HORIZONTAL_POS_LEFT :Balra STR_CONFIG_SETTING_HORIZONTAL_POS_CENTER :Középen STR_CONFIG_SETTING_HORIZONTAL_POS_RIGHT :Jobbra +STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN :Maximális kezdeti hitelkeret: {STRING} +STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Maximálisan kölcsönözhető összeg (az inflációtól eltekintve) +STR_CONFIG_SETTING_INTEREST_RATE :Kamatláb: {STRING} +STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Banki hitel kamat; inflációt is szabályozza, ha be van kapcsolva +STR_CONFIG_SETTING_RUNNING_COSTS :Üzemeltetési költségek: {STRING} +STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT :Járművek karbantartási és üzemeltetési költségeinek a szintje +STR_CONFIG_SETTING_CONSTRUCTION_SPEED :Építkezési sebesség: {STRING} +STR_CONFIG_SETTING_CONSTRUCTION_SPEED_HELPTEXT :Korlátozza az építkezési sebességét számítógépes ellenfeleknek +STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS :Jármű lerobbanások: {STRING} +STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS_HELPTEXT :Megfelelően karbantartott járművek lerobbanásának gyakorisága +STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER :Támogatási szorzó érték: {STRING} +STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT :Támogatott kapcsolatok kifizetéseinek szorzója +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_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} +STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Ha engedélyezve van, néha katasztrófa történhet, ami megállíthatja vagy megsemmisítheti a járműveket és az infrastruktúrát +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_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} @@ -1165,14 +1234,8 @@ 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_TUNNEL_LENGTH :Alagutak maximális hossza: {STRING} @@ -1199,9 +1262,7 @@ STR_CONFIG_SETTING_STOP_LOCATION :A vonatok az á STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :A hely, ahol a vonat az állomási peron mellett alapértelmezetten megáll. Az 'elején' jelentése, hogy a vonat a peron belépéshez legközelebbi pontján fog megállni, 'közepén' jelentése, hogy a vonat a peron közepén fog megállni, 'végén' jelentése, hogy a vonat a peron belépéshez ellentétes végén fog megállni. Ez a beállítás csak egy alapértelmezett értéket jelent új utasítások részére, az egyes utasítások viszont beállíthatóak másfajta működésmódra is természetesen 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 :vége -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_STOP_LOCATION_FAR_END :távoli végén 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 @@ -1232,10 +1293,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 @@ -1293,8 +1350,6 @@ STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Magasságtérk 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 @@ -1329,6 +1384,12 @@ STR_CONFIG_SETTING_SCROLLWHEEL_SCROLL :Térkép mozgat STR_CONFIG_SETTING_SCROLLWHEEL_OFF :Ki STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER :Egérgörgő sebessége a térképen: {STRING} STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER_HELPTEXT :Egérgörgős mozgatás érzékenységének beállítása +STR_CONFIG_SETTING_OSK_ACTIVATION :Képernyőbillentyűzet: {STRING} +STR_CONFIG_SETTING_OSK_ACTIVATION_HELPTEXT :Válaszd ki a képernyűbillentyűzet ablak megnyitásának módját, hogy csak mutatóeszközzel is be tudj íni szöveget vagy számot. Ez a billentyűzet nélküli játéknál hasznos. +STR_CONFIG_SETTING_OSK_ACTIVATION_DISABLED :Kikapcsolva +STR_CONFIG_SETTING_OSK_ACTIVATION_DOUBLE_CLICK :Dupla kattintás +STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK_FOCUS :Egyszeres kattintás (amikor előtérben van) +STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK :Egyszeres kattintás (azonnal) STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU :Jobb egérgomb emuláció: {STRING} STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_HELPTEXT :Jobb egérgomb emulálási módszerének kiválasztása @@ -1339,24 +1400,20 @@ 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_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} STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_HELPTEXT :A szünet közben történő cselekvések kiválasztása STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :semmilyen cselekvés -STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_CONSTRUCTION :minden ami nem építés -STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_LANDSCAPING :minden ami nem tájrendezés +STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_CONSTRUCTION :Minden, ami nem építés +STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_LANDSCAPING :Minden, ami nem tájrendezés STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_ACTIONS :minden cselekvés STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Továbbfejlesztett járműlista használata: {STRING} STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Továbbfejlesztett járműlista használatának engedélyezése a járművek csoportosításához @@ -1380,6 +1437,22 @@ STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Az építő esz STR_CONFIG_SETTING_EXPENSES_LAYOUT :Kiadási/bevételi adatok csoportosítása a pénzügyi ablakban: {STRING} STR_CONFIG_SETTING_EXPENSES_LAYOUT_HELPTEXT :A pénzügyi adatok ablak elrendezésének beállítása +STR_CONFIG_SETTING_SOUND_TICKER :Hírsáv: {STRING} +STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :Hang lejátszása új hír érkezésekor +STR_CONFIG_SETTING_SOUND_NEWS :Újság: {STRING} +STR_CONFIG_SETTING_SOUND_NEWS_HELPTEXT :Hanglejátszás az újság megjelenésekor +STR_CONFIG_SETTING_SOUND_NEW_YEAR :Év vége: {STRING} +STR_CONFIG_SETTING_SOUND_NEW_YEAR_HELPTEXT :Hang lejátszása az előző évhez viszonyítva a cég jelen évi teljesítményének év végi összesítésénél +STR_CONFIG_SETTING_SOUND_CONFIRM :Építkezés: {STRING} +STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT :Hanglejátszás sikeres építkezések vagy más tevékenységek után +STR_CONFIG_SETTING_SOUND_CLICK :Gombra kattintás: {STRING} +STR_CONFIG_SETTING_SOUND_CLICK_HELPTEXT :Sípolás gombra kattintáskor +STR_CONFIG_SETTING_SOUND_DISASTER :Katasztrófák/balesetek: {STRING} +STR_CONFIG_SETTING_SOUND_DISASTER_HELPTEXT :Balesetek és katasztrófák hangjainak lejátszása +STR_CONFIG_SETTING_SOUND_VEHICLE :Járművek: {STRING} +STR_CONFIG_SETTING_SOUND_VEHICLE_HELPTEXT :Járműhangok lejátszása +STR_CONFIG_SETTING_SOUND_AMBIENT :Terület: {STRING} +STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :Az ipar, városok és tájak környezeti hangjainak lejátszása STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING :Infrastruktúra építésének tiltása amíg nem elérhető megfelelő jármű: {STRING} STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING_HELPTEXT :Bekapcsolva az infrastruktúra csak akkor elérhető, ha van megfelelő jármű, megakadályozva a felesleges pénzköltést a kihasználhatatlan infrastruktúrára @@ -1401,6 +1474,11 @@ STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT_HELPTEXT :Bekapcsolva a s STR_CONFIG_SETTING_AI_BUILDS_SHIPS :Hajók tiltása a gépi ellenfeleknek: {STRING} STR_CONFIG_SETTING_AI_BUILDS_SHIPS_HELPTEXT :Bekapcsolva a számítógép által irányított ellenfelek nem építhetnek hajókat +STR_CONFIG_SETTING_AI_PROFILE :Alapértelmezett beállítás: {STRING} +STR_CONFIG_SETTING_AI_PROFILE_HELPTEXT :Válaszd ki, hogy melyik beállítási mintát használja a 'véletlen' MI a belső beállításainak, amikor új MI-t vagy szkriptet adsz hozzá +STR_CONFIG_SETTING_AI_PROFILE_EASY :Könnyű +STR_CONFIG_SETTING_AI_PROFILE_MEDIUM :Közepes +STR_CONFIG_SETTING_AI_PROFILE_HARD :Nehéz STR_CONFIG_SETTING_AI_IN_MULTIPLAYER :Számítógépes ellenfelek a hálózati játékokban: {STRING} STR_CONFIG_SETTING_AI_IN_MULTIPLAYER_HELPTEXT :Számítógép által irányított játékosok részvételének engedélyezése többjátékos játékokban @@ -1427,20 +1505,35 @@ STR_CONFIG_SETTING_DISABLE_ELRAILS :Villamosított STR_CONFIG_SETTING_DISABLE_ELRAILS_HELPTEXT :Bekapcsolva nem szükséges villamosítani egy vágányt ahhoz, hogy azon villanymozdonyok közlekedhessenek STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN :Első jármű megérkezése a játékos megállójába: {STRING} +STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN_HELPTEXT :Újság megjelenítése amikor a cég új állomásához megérkezik az első jármű STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER :Első jármű megérkezése az ellenfél megállójába: {STRING} +STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER_HELPTEXT :Újság megjelenítése amikor egy konkurens vállalat új állomásához megérkezik az első jármű STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS :Balesetek / természeti csapások: {STRING} +STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS_HELPTEXT :Újság megjelenítése balesetek vagy katasztrófák bekövetkezésekor STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION :Vállalati információk: {STRING} +STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION_HELPTEXT :Újság megjelenítése amikor egy új cég alapul vagy csődközelbe kerül STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN :Új gazdasági épületek megjelenése: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN_HELPTEXT :Újság megjelenítése amikor új ipartelep nyílik STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE :Gazdasági épületek bezárása: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE_HELPTEXT :Újság megjelenítése, amikor egy ipartelep bezár STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES :Gazdasági változások: {STRING} +STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES_HELPTEXT :Újság megjelenítése a globális gazdasági változásokkal kapcsolatban STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY :Termelésváltozások a vállalatod által kiszolgált gazdasági létesítményeknél: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY_HELPTEXT :Újsághír megjelenítése, amikor a cág által kiszolgált gazdasági épületben termelési változás áll be STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER :Termelésváltozások a konkurenseid által kiszolgált gazdasági létesítményeknél: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER_HELPTEXT :Újsághír megjelenítése, amikor a versenytársak által kiszolgált gazdasági épületben termelési változás áll be STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED :Más gazdasági termelési változások: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED_HELPTEXT :Üzenet megjelenítése, amikor egy olyan ipartelep teljesítménye változik, amely nem kötődik semelyik cég tevékenységéhez STR_CONFIG_SETTING_NEWS_ADVICE :A vállalat járműveire vonatkozó ötletek / információk: {STRING} +STR_CONFIG_SETTING_NEWS_ADVICE_HELPTEXT :Üzenet megjelenítése beavatkozást igénylő járművekkel kapcsolatban STR_CONFIG_SETTING_NEWS_NEW_VEHICLES :Új járművek: {STRING} +STR_CONFIG_SETTING_NEWS_NEW_VEHICLES_HELPTEXT :Újság megjelenítése, amikor egy új jármű elérhetővé válik STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE :Rakományok elfogadásainak változásai: {STRING} +STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE_HELPTEXT :Üzenet megjelenítése az állomások bizonyos áruk fogadóképességének változásáról STR_CONFIG_SETTING_NEWS_SUBSIDIES :Támogatások: {STRING} +STR_CONFIG_SETTING_NEWS_SUBSIDIES_HELPTEXT :Újság megjelenítése szállítási támogatásokkal kapcsolatban STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION :Általános információk: {STRING} +STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION_HELPTEXT :Újság megjelenítése mely információkat tartalmaz általános eseményekről, mint például exkluzív szállítási jogok vásárlása vagy új útfelújítási hozzájárulás STR_CONFIG_SETTING_NEWS_MESSAGES_OFF :Ki STR_CONFIG_SETTING_NEWS_MESSAGES_SUMMARY :Kivonat @@ -1483,7 +1576,7 @@ STR_CONFIG_SETTING_TOWN_LAYOUT_2X2_GRID :2x2-es háló STR_CONFIG_SETTING_TOWN_LAYOUT_3X3_GRID :3x3-as háló STR_CONFIG_SETTING_TOWN_LAYOUT_RANDOM :véletlenszerű STR_CONFIG_SETTING_ALLOW_TOWN_ROADS :Települések építhetnek utakat: {STRING} -STR_CONFIG_SETTING_ALLOW_TOWN_ROADS_HELPTEXT :Településeknek útak építésének engedélyezése a növekedéshez. Kikapcsolva megakadályozza az önkormányzatot, hogy önmaga utakat építhessen +STR_CONFIG_SETTING_ALLOW_TOWN_ROADS_HELPTEXT :Településeknek utak építésének engedélyezése a növekedéshez. Kikapcsolva megakadályozza az önkormányzatot, hogy önmaga utakat építhessen STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :A városok építhetnek vasúti átjárókat: {STRING} STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS_HELPTEXT :Engedélyezve a települések építhetnek vasúti átjárókat STR_CONFIG_SETTING_NOISE_LEVEL :Település által szabályzott zajszint reptereknek: {STRING} @@ -1535,26 +1628,90 @@ 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_GUI :{ORANGE}Megjelenítés -STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}Építkezés +STR_CONFIG_SETTING_LINKGRAPH_INTERVAL :A szétosztási gráf frissítése {STRING} 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_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 +STR_CONFIG_SETTING_DISTRIBUTION_SYMMETRIC :szimmetrikus +STR_CONFIG_SETTING_DISTRIBUTION_PAX :Utasok szétosztása: {STRING} +STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :A "szimmetrikus" azt jelenti, hogy megközelítóleg ugyanannyi utas 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ű utas mehet. "Kézi" esetben az utasok nem lesznek automatikusan szétosztva. +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_DEFAULT :Egyéb rakománytípusok szétosztása: {STRING} +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} +STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT :Ha 0-nál magasabb értékre állítod, az A és B állomás távolsága befolyásolni fogja az A-ból B-be küldött rakomány mennyiségét. Minél messzebb van B A-tól, annál kevesebb rakomány kerül majd küldésre. Minél magasabb ez a beállítás, annál kevesebb rakomány megy majd a távolibb állomásokra, és annál több rakomány megy majd a közelebbi állomásokra. +STR_CONFIG_SETTING_DEMAND_SIZE :Szimmetrikus esetben a visszaküldött rakomány mennyisége: {STRING} +STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :100%-nál kisebb beállítás esetén a szimmetrikus szétosztás jobban fog hasonlítani az aszimmetrikusra. Adott mennyiségű rakomány küldése esetén kevesebb lesz automatikusan visszaküldve. 0% esetén a szimmetrikus szétosztás pontosan úgy fog viselkedni, mint az aszimmetrikus szétosztás. +STR_CONFIG_SETTING_SHORT_PATH_SATURATION :A rövidebb utak telítettsége a szabad utak felhasználása előtt: {STRING} +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_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_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_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_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_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_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_LOCALISATION :{ORANGE}Honosítá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_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_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 @@ -1588,6 +1745,8 @@ STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_ALGORITHM :{WHITE}... a(z) STR_CONFIG_ERROR_INVALID_BASE_GRAPHICS_NOT_FOUND :{WHITE}... érvénytelen grafikus alapcsomag nem került betöltésre - '{STRING}': nem található STR_CONFIG_ERROR_INVALID_BASE_SOUNDS_NOT_FOUND :{WHITE}... érvénytelen hang alapcsomag nem került betöltésre - '{STRING}': nem található STR_CONFIG_ERROR_INVALID_BASE_MUSIC_NOT_FOUND :{WHITE}... érvénytelen zenei alapcsomag nem került betöltésre - '{STRING}': nem található +STR_CONFIG_ERROR_OUT_OF_MEMORY :{WHITE}Kevés a memória +STR_CONFIG_ERROR_SPRITECACHE_TOO_BIG :{WHITE}{BYTES} memória gyorsítótár kiosztása sikertelen. A gyorsítótár le lett csökkentve {BYTES}ra. Ez csökkenti az OpenTTD teljesítményét. Csökkentheted a memóriaigényt, ha kikapcsolod a 32bpp grafikát és/vagy a nagyítási szinteket # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} @@ -1600,6 +1759,7 @@ STR_INTRO_SCENARIO_EDITOR :{BLACK}Pályasz STR_INTRO_MULTIPLAYER :{BLACK}Hálózati játék STR_INTRO_GAME_OPTIONS :{BLACK}Beállítások +STR_INTRO_HIGHSCORE :{BLACK}Rekord tábla STR_INTRO_ADVANCED_SETTINGS :{BLACK}Haladó beállítások STR_INTRO_NEWGRF_SETTINGS :{BLACK}NewGRF beállítások STR_INTRO_ONLINE_CONTENT :{BLACK}Letölthető tartalmak @@ -1619,6 +1779,7 @@ STR_INTRO_TOOLTIP_SUB_TROPICAL_LANDSCAPE :{BLACK}Szubtró 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_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_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 @@ -1707,6 +1868,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 @@ -1762,10 +1924,10 @@ STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}Nyakkend # Network server list STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}Hálózati játék -STR_NETWORK_SERVER_LIST_CONNECTION :{BLACK}Kapcsolat: -STR_NETWORK_SERVER_LIST_CONNECTION_TOOLTIP :{BLACK}Válassz az internetes vagy helyi hálózati játék közül -STR_NETWORK_SERVER_LIST_LAN :Helyi hálózat -STR_NETWORK_SERVER_LIST_INTERNET :Internet +STR_NETWORK_SERVER_LIST_ADVERTISED :{BLACK}Hírdetett +STR_NETWORK_SERVER_LIST_ADVERTISED_TOOLTIP :{BLACK}Válassz hírdetett (internet) és nem hírdetett (helyi hálózat, LAN) játék közül. +STR_NETWORK_SERVER_LIST_ADVERTISED_NO :Nem +STR_NETWORK_SERVER_LIST_ADVERTISED_YES :Igen STR_NETWORK_SERVER_LIST_PLAYER_NAME :{BLACK}Játékos neve: STR_NETWORK_SERVER_LIST_ENTER_NAME_TOOLTIP :{BLACK}A többi játékos ilyen néven fog ismerni Téged. @@ -1824,8 +1986,8 @@ STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP :{BLACK}A játé STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}Jelszó beállítása STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Védd le a játékodat jelszóval, ha nem akarod hogy illetéktelenek csatlakozzanak -STR_NETWORK_START_SERVER_LAN_INTERNET :Hálózat / Internet -STR_NETWORK_START_SERVER_INTERNET_ADVERTISE :Internet (reklámoz) +STR_NETWORK_START_SERVER_UNADVERTISED :Nem +STR_NETWORK_START_SERVER_ADVERTISED :Igen STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} kliens STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Játékosok max. száma: STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}A maximálisan felcsatlakozható kliensek számának kiválasztása. Nem szükséges pont ennyi embernek éppen kapcsolódva lennie @@ -1946,6 +2108,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 @@ -2064,6 +2227,10 @@ STR_CONTENT_SELECT_UPDATES_CAPTION :{BLACK}Frissít STR_CONTENT_SELECT_UPDATES_CAPTION_TOOLTIP :{BLACK}Már meglévő tartalmakhoz az összes elérhető frissítés kijelölése letöltéshez STR_CONTENT_UNSELECT_ALL_CAPTION :{BLACK}Nincs kijelölés STR_CONTENT_UNSELECT_ALL_CAPTION_TOOLTIP :{BLACK}Megszünteti az összes kijelölést +STR_CONTENT_SEARCH_EXTERNAL :{BLACK}Keresés külső weblapokon +STR_CONTENT_SEARCH_EXTERNAL_TOOLTIP :{BLACK}Keresett tartalom nem érhető el az OpenTTD tartalomszolgáltatásának olyan weblapokon, melyek nincsenek az OpenTTD-hez társítva +STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER_CAPTION :{WHITE}Elhagyod az OpenTTD-t! +STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER :{WHITE}Külső oldalakról letölthető tartalmak szabályai és feltételei változóak.{}A tartalom OpenTTD-be való telepítéséhez segítségért fordulj a külső weboldalhoz.{}Akarod folytatni? STR_CONTENT_FILTER_TITLE :{BLACK}Címke/név szűrő: STR_CONTENT_OPEN_URL :{BLACK}Webhely STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}A tartalom webhelyének meglátogatása @@ -2133,6 +2300,17 @@ STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}Felsőve STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Átlátszó rakodásjelző bekapcsolása. Ctrl+kattintással zárolható STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}Az objektum ne átlátszó legyen, hanem láthatatlan +# Linkgraph legend window +STR_LINKGRAPH_LEGEND_CAPTION :{BLACK}Rakományáramlási jelmagyarázat +STR_LINKGRAPH_LEGEND_ALL :{BLACK}Mind +STR_LINKGRAPH_LEGEND_NONE :{BLACK}Nincs +STR_LINKGRAPH_LEGEND_SELECT_COMPANIES :{BLACK}Megjelenítendő cégek kiválasztása + +# Linkgraph legend window and linkgraph legend in smallmap +STR_LINKGRAPH_LEGEND_UNUSED :{TINY_FONT}{BLACK}nem használt +STR_LINKGRAPH_LEGEND_SATURATED :{TINY_FONT}{BLACK}telített +STR_LINKGRAPH_LEGEND_OVERLOADED :{TINY_FONT}{BLACK}túlterhelt + # Base for station construction window(s) STR_STATION_BUILD_COVERAGE_AREA_TITLE :{BLACK}Lefedett terület mutatása: STR_STATION_BUILD_COVERAGE_OFF :{BLACK}Ki @@ -2155,16 +2333,16 @@ STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :Villamosított STR_RAIL_TOOLBAR_MONORAIL_CONSTRUCTION_CAPTION :Egysínű vasút építése STR_RAIL_TOOLBAR_MAGLEV_CONSTRUCTION_CAPTION :Maglev vasút építése -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Pályafektetés. A Ctrl billentyűvel válthatsz építés és rombolás között. Shift lenyomásával megmutatja a becsült költséget -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}Vasúti pálya építése egyszerűsített módón. A Ctrl billentyű segítségével lehet váltani az építés/rombolás között. Shift lenyomásával megmutatja a becsült költséget -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}Vasúti fűtőház építése (vonatok vételére és karbantartására). Shift lenyomásával megmutatja a becsült költséget -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 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 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 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 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 költséget +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Pályafektetés. A Ctrl billentyűvel válthatsz építés és rombolás között. Shift lenyomásával megmutatja a becsült építési/bontási költséget +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}Vasúti pálya építése egyszerűsített módon. A Ctrl billentyű segítségével lehet váltani az építés/rombolás között. Shift lenyomásával megmutatja a becsült építési/eltávolítási költséget +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_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 -STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL :{BLACK}Sínek átalakítása a kiválasztott típusra. Shift lenyomásával megmutatja a becsült költséget +STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL :{BLACK}Sínek átalakítása a kiválasztott típusra. Shift lenyomásával megmutatja a becsült építési költséget STR_RAIL_NAME_RAILROAD :Vasút STR_RAIL_NAME_ELRAIL :Villamosított vasút @@ -2172,8 +2350,8 @@ STR_RAIL_NAME_MONORAIL :Egysínű STR_RAIL_NAME_MAGLEV :Maglev # Rail depot construction window -STR_BUILD_DEPOT_TRAIN_ORIENTATION_CAPTION :{WHITE}Fűtőház helyzete -STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}Fűtőház helyzetének kiválasztása +STR_BUILD_DEPOT_TRAIN_ORIENTATION_CAPTION :{WHITE}Járműtelep helyzete +STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}Járműtelep helyzetének kiválasztása # Rail waypoint construction window STR_WAYPOINT_CAPTION :{WHITE}Ellenőrző pont @@ -2205,7 +2383,7 @@ STR_BUILD_SIGNAL_SEMAPHORE_COMBO_TOOLTIP :{BLACK}Kombiná STR_BUILD_SIGNAL_SEMAPHORE_PBS_TOOLTIP :{BLACK}Irányjelző (alak){}Egy irányjelző lehetővé teszi, hogy amennyiben a vonatok le tudnak foglalni maguknak egy biztonságos vágányutat a következő jelzőig, több vonat is beléphessen ugyanabba a jelzőblokkba. Az irányjelzők mellett hátulról is el lehet haladni STR_BUILD_SIGNAL_SEMAPHORE_PBS_OWAY_TOOLTIP :{BLACK}Egyirányú irányjelző (alak){}Egy irányjelző lehetővé teszi, hogy amennyiben a vonatok le tudnak foglalni maguknak egy biztonságos vágányutat a következő jelzőig, több vonat is beléphessen ugyanabba a jelzőblokkba. Az egyirányú jelzők mellett nem lehet hátulról elhaladni STR_BUILD_SIGNAL_ELECTRIC_NORM_TOOLTIP :{BLACK}Normál jelző (fény){}A legegyszerűbb jelzőtípus, az előtte lévő jelzőblokkba egyszerre csak egy vonatot enged tartózkodni -STR_BUILD_SIGNAL_ELECTRIC_ENTRY_TOOLTIP :{BLACK}Bejárati jelző (fény){}Mindaddig szabad, amíg van legalább egy szabad kijárati jelző az utána következő szakaszon. Egyébként Megálljt jelez +STR_BUILD_SIGNAL_ELECTRIC_ENTRY_TOOLTIP :{BLACK}Bejárati jelző (fény){}Mindaddig szabad (zöld), amíg van legalább egy szabad kijárati jelző az utána következő szakaszon. Egyébként Megálljt (piros) jelez STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}Kijárati jelző (fény){}Ugyanúgy viselkedik mint a normál jelző, de megléte elengedhetetlenül szükséges a bejárati- és a kombinált jelzők működéséhez STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}Kombinált jelző (fény){}A kombinált jelző voltaképpen egy kijárati- és egy bejárati jelző egybeépítve. Segítségével komoly váltókörzetek építhetőek bejárati jelzőkből STR_BUILD_SIGNAL_ELECTRIC_PBS_TOOLTIP :{BLACK}Irányjelző (fény){}Egy irányjelző lehetővé teszi, hogy amennyiben a vonatok le tudnak foglalni maguknak egy biztonságos vágányutat a következő jelzőig, több vonat is beléphessen ugyanabba a jelzőblokkba. Az irányjelzők mellett hátulról is el lehet haladni @@ -2234,21 +2412,21 @@ STR_BRIDGE_TUBULAR_SILICON :Cső, Szilikon # Road construction toolbar STR_ROAD_TOOLBAR_ROAD_CONSTRUCTION_CAPTION :{WHITE}Út építése STR_ROAD_TOOLBAR_TRAM_CONSTRUCTION_CAPTION :{WHITE}Villamospálya építése -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_SECTION :{BLACK}Út építése. A Ctrl billentyűvel válthatsz építés és rombolás között. Shift lenyomásával megmutatja a becsült költséget -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_SECTION :{BLACK}Villamospálya építése. A Ctrl billentyűvel válthatsz építés és rombolás között. Shift lenyomásával megmutatja a becsült költséget -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOROAD :{BLACK}Közút építése egyszerűsített módon. A Ctrl billentyűvel válthatsz építés és rombolás között. Shift lenyomásával megmutatja a becsült költséget -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOTRAM :{BLACK}Villamospálya építése egyszerűsített módon. A Ctrl billentyűvel válthatsz építés és rombolás között. Shift lenyomásával megmutatja a becsült költséget -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}Garázs építése (járművek vételére és karbantartására). Shift lenyomásával megmutatja a becsült költséget -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}Villamos remíz építése (járművek megépítésére és javítására). Shift lenyomásával megmutatja a becsült költséget -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_BUS_STATION :{BLACK}Buszmegálló építése. A Ctrl lenyomásával egyesítheted más állomásokkal. Shift lenyomásával megmutatja a becsült költséget -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_PASSENGER_TRAM_STATION :{BLACK}Villamos-utasváró építése. A Ctrl lenyomásával egyesítheted más állomásokkal. Shift lenyomásával megmutatja a becsült költséget -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRUCK_LOADING_BAY :{BLACK}Teherautó-rakodóhely építése. A Ctrl lenyomásával egyesítheted más állomásokkal. Shift lenyomásával megmutatja a becsült költséget -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_CARGO_TRAM_STATION :{BLACK}Tehervillamos-állomás építése. A Ctrl lenyomásával egyesítheted más állomásokkal. Shift lenyomásával megmutatja a becsült költséget +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_SECTION :{BLACK}Út építése. A Ctrl billentyűvel válthatsz építés és rombolás között. Shift lenyomásával megmutatja a becsült építési/bontási költséget +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_SECTION :{BLACK}Villamospálya építése. A Ctrl billentyűvel válthatsz építés és rombolás között. Shift lenyomásával megmutatja a becsült építési/bontási költséget +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOROAD :{BLACK}Közút építése egyszerűsített módon. A Ctrl billentyűvel válthatsz építés és rombolás között. Shift lenyomásával megmutatja a becsült építési költséget +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOTRAM :{BLACK}Villamospálya építése egyszerűsített módon. A Ctrl billentyűvel válthatsz építés és rombolás között. Shift lenyomásával megmutatja a becsült építési költséget +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}Garázs építése (járművek vételére és karbantartására). Shift lenyomásával megmutatja a becsült építési költséget +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}Villamos remíz építése (járművek megépítésére és javítására). Shift lenyomásával megmutatja a becsült építési költséget +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_BUS_STATION :{BLACK}Buszmegálló é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_ROAD_TOOLBAR_TOOLTIP_BUILD_PASSENGER_TRAM_STATION :{BLACK}Villamos-utasváró é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_ROAD_TOOLBAR_TOOLTIP_BUILD_TRUCK_LOADING_BAY :{BLACK}Teherautó-rakodóhely é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_ROAD_TOOLBAR_TOOLTIP_BUILD_CARGO_TRAM_STATION :{BLACK}Tehervillamos-á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_ROAD_TOOLBAR_TOOLTIP_TOGGLE_ONE_WAY_ROAD :{BLACK}Egyirányú utak be/kikapcsolása -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_BRIDGE :{BLACK}Közúti híd építése. Shift lenyomásával megmutatja a becsült költséget -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_BRIDGE :{BLACK}Villamos-híd építése. Shift lenyomásával megmutatja a becsült költséget -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_TUNNEL :{BLACK}Közúti alagút építése. Shift lenyomásával megmutatja a becsült költséget -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_TUNNEL :{BLACK}Villamos-alagút építése. Shift lenyomásával megmutatja a becsült költséget +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_BRIDGE :{BLACK}Közúti híd építése. Shift lenyomásával megmutatja a becsült építési költséget +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_BRIDGE :{BLACK}Villamos-híd építése. Shift lenyomásával megmutatja a becsült építési költséget +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_TUNNEL :{BLACK}Közúti alagút építése. Shift lenyomásával megmutatja a becsült építési költséget +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_TUNNEL :{BLACK}Villamos-alagút építése. Shift lenyomásával megmutatja a becsült építési költséget STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_ROAD :{BLACK}Építés és felszedés közötti váltás utaknál STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS :{BLACK}Építés és bontás közötti váltás villamospályáknál @@ -2271,12 +2449,12 @@ STR_STATION_BUILD_CARGO_TRAM_ORIENTATION_TOOLTIP :{BLACK}Tehervil # Waterways toolbar (last two for SE only) STR_WATERWAYS_TOOLBAR_CAPTION :{WHITE}Vízi utak építése STR_WATERWAYS_TOOLBAR_CAPTION_SE :{WHITE}Vízi utak -STR_WATERWAYS_TOOLBAR_BUILD_CANALS_TOOLTIP :{BLACK}Csatorna építése. Shift lenyomásával megmutatja a becsült költséget -STR_WATERWAYS_TOOLBAR_BUILD_LOCKS_TOOLTIP :{BLACK}Zsilip építése. Shift lenyomásával megmutatja a becsült költséget -STR_WATERWAYS_TOOLBAR_BUILD_DEPOT_TOOLTIP :{BLACK}Dokk építése (hajók vételére és karbantartására). Shift lenyomásával megmutatja a becsült költséget -STR_WATERWAYS_TOOLBAR_BUILD_DOCK_TOOLTIP :{BLACK}Kikötő építése. A Ctrl lenyomásával egyesítheted más állomásokkal. Shift lenyomásával megmutatja a becsült költséget -STR_WATERWAYS_TOOLBAR_BUOY_TOOLTIP :{BLACK}Bója lerakása, ami aztán ellenőrzőpontként használható. Shift lenyomásával megmutatja a becsült költséget -STR_WATERWAYS_TOOLBAR_BUILD_AQUEDUCT_TOOLTIP :{BLACK}Akvadukt építése. Shift lenyomásával megmutatja a becsült költséget +STR_WATERWAYS_TOOLBAR_BUILD_CANALS_TOOLTIP :{BLACK}Csatorna építése. Shift lenyomásával megmutatja a becsült építési költséget +STR_WATERWAYS_TOOLBAR_BUILD_LOCKS_TOOLTIP :{BLACK}Zsilip építése. Shift lenyomásával megmutatja a várható építési költséget +STR_WATERWAYS_TOOLBAR_BUILD_DEPOT_TOOLTIP :{BLACK}Dokk építése (hajók vételére és karbantartására). Shift lenyomásával megmutatja a becsült építési költséget +STR_WATERWAYS_TOOLBAR_BUILD_DOCK_TOOLTIP :{BLACK}Kikötő é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_WATERWAYS_TOOLBAR_BUOY_TOOLTIP :{BLACK}Bója lerakása, amit a hajók útirányjelző pontként használhatnak. Shift lenyomásával megmutatja a becsült építési költséget +STR_WATERWAYS_TOOLBAR_BUILD_AQUEDUCT_TOOLTIP :{BLACK}Csatornahíd építése. Shift lenyomásával megmutatja a várható építési költséget STR_WATERWAYS_TOOLBAR_CREATE_LAKE_TOOLTIP :{BLACK}Vizi terület definiálása.{}Csatornát készít, kivéve ha tengerszinten Ctrl gombot lenyomva használod, ekkor elárasztja a területet STR_WATERWAYS_TOOLBAR_CREATE_RIVER_TOOLTIP :{BLACK}Folyók elhelyezése @@ -2289,7 +2467,7 @@ STR_STATION_BUILD_DOCK_CAPTION :{WHITE}Kikötő # Airport toolbar STR_TOOLBAR_AIRCRAFT_CAPTION :{WHITE}Repülőterek -STR_TOOLBAR_AIRCRAFT_BUILD_AIRPORT_TOOLTIP :{BLACK}Repülőtér építése. A Ctrl lenyomásával egyesítheted más állomásokkal. Shift lenyomásával megmutatja a becsült költséget +STR_TOOLBAR_AIRCRAFT_BUILD_AIRPORT_TOOLTIP :{BLACK}Repülőtér é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 # Airport construction window STR_STATION_BUILD_AIRPORT_CAPTION :{WHITE}Repülőtér beállítása @@ -2316,14 +2494,14 @@ STR_STATION_BUILD_NOISE :{BLACK}Zajterme # Landscaping toolbar STR_LANDSCAPING_TOOLBAR :{WHITE}Tájrendezés -STR_LANDSCAPING_TOOLTIP_LOWER_A_CORNER_OF_LAND :{BLACK}Egy pont lesüllyesztése. Húzással az első kiválasztott sarkot lesüllyeszti, majd a kiválasztott területet vele szintbe hozza. Ctrl lenyomásával átlós terület jelölhető ki. Shift lenyomásával megmutatja a becsült költséget -STR_LANDSCAPING_TOOLTIP_RAISE_A_CORNER_OF_LAND :{BLACK}Egy sarokpont megemelése. Húzással az első kiválasztott sarkot megemeli, majd a kiválasztott területet vele szintbe hozza. Ctrl lenyomásával átlós terület jelölhető ki. Shift lenyomásával megmutatja a becsült költséget -STR_LANDSCAPING_LEVEL_LAND_TOOLTIP :{BLACK}Talaj szintre hozása a kijelölt saroknál fogva. Ctrl lenyomásával átlós terület jelölhető ki. Shift lenyomásával megmutatja a becsült költséget -STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Földterület megvétele későbbi használatra. Shift lenyomásával megmutatja a becsült költséget +STR_LANDSCAPING_TOOLTIP_LOWER_A_CORNER_OF_LAND :{BLACK}Egy pont lesüllyesztése. Húzással az első kiválasztott sarkot lesüllyeszti, majd a kiválasztott területet vele egy szintbe hozza. Ctrl lenyomásával átlós terület jelölhető ki. Shift lenyomásával megmutatja a terepsüllyesztés várható építési költségét +STR_LANDSCAPING_TOOLTIP_RAISE_A_CORNER_OF_LAND :{BLACK}Egy sarokpont megemelése. Húzással az első kiválasztott sarkot megemeli, majd a kiválasztott területet vele egy szintbe hozza. Ctrl lenyomásával átlós terület jelölhető ki. Shift lenyomásával megmutatja a terepemelés várható építési költségét +STR_LANDSCAPING_LEVEL_LAND_TOOLTIP :{BLACK}Talaj a kijelölt sarokpont szintjére hozása. Ctrl lenyomásával átlós terület jelölhető ki. Shift lenyomásával megmutatja az átalakítás várható költségét +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_TOOLTIP :{BLACK}Építendő objektum kiválasztása. Shift lenyomásával megmutatja a becsült költséget +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 STR_OBJECT_BUILD_SIZE :{BLACK}Méret: {GOLD}{NUM} x {NUM} mező @@ -2335,7 +2513,7 @@ STR_OBJECT_CLASS_TRNS :Adótornyok STR_PLANT_TREE_CAPTION :{WHITE}Fák STR_PLANT_TREE_TOOLTIP :{BLACK}Ültetendő fa kiválasztása. Ha már van fa a mezőn, akkor újabb fák ültetése a kiválasztott fatípustól függetlenül STR_TREES_RANDOM_TYPE :{BLACK}Véletlenszerű fafélék -STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}Véletlenszerűen kiválasztott fákat helyez el. Shift lenyomásával megmutatja a becsült költséget +STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}Véletlenszerűen kiválasztott fákat helyez el. Shift lenyomásával megmutatja a várható telepítési költséget STR_TREES_RANDOM_TREES_BUTTON :{BLACK}Véletlenszerű fák STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Véletlenszerűen fákat ültet a térképre @@ -2407,6 +2585,10 @@ STR_INDUSTRY_DISPLAY_CHAIN :{BLACK}Láncola STR_INDUSTRY_DISPLAY_CHAIN_TOOLTIP :{BLACK}Rakományellátó és fogyasztó gazdasági épületek megjelenítése STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP :{BLACK}Térképre kapcsolás STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP_TOOLTIP :{BLACK}A térképen megjelenített gazdasági épületek kiválasztása +STR_INDUSTRY_CARGOES_SELECT_CARGO :{BLACK}Szállítmánytípus kiválasztása +STR_INDUSTRY_CARGOES_SELECT_CARGO_TOOLTIP :{BLACK}Válaszd ki a szállítmány típust amit meg akarsz jeleníteni +STR_INDUSTRY_CARGOES_SELECT_INDUSTRY :{BLACK}Iparág választás +STR_INDUSTRY_CARGOES_SELECT_INDUSTRY_TOOLTIP :{BLACK}Válaszd ki az iparágat amit meg akarsz jeleníteni # Land area window STR_LAND_AREA_INFORMATION_CAPTION :{WHITE}Terület-információ @@ -2431,6 +2613,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 @@ -2463,7 +2646,7 @@ STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_NOENTRYSIGNALS :{STRING} vasút STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_PBSSIGNALS :{STRING} vasúti pálya kombinált- és irányjelzőkkel STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_NOENTRYSIGNALS :{STRING} vasúti pálya kombinált- és egyirányú irányjelzőkkel STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBS_NOENTRYSIGNALS :{STRING} vasúti pálya irány- és egyirányú irányjelzőkkel -STR_LAI_RAIL_DESCRIPTION_TRAIN_DEPOT :{STRING} fűtőház +STR_LAI_RAIL_DESCRIPTION_TRAIN_DEPOT :{STRING} járműtelep STR_LAI_ROAD_DESCRIPTION_ROAD :Út STR_LAI_ROAD_DESCRIPTION_ROAD_WITH_STREETLIGHTS :Út közvilágítással @@ -2516,7 +2699,7 @@ STR_LAI_BRIDGE_DESCRIPTION_ROAD_WOODEN :Fa közúti hí STR_LAI_BRIDGE_DESCRIPTION_ROAD_CONCRETE :Beton közúti híd STR_LAI_BRIDGE_DESCRIPTION_ROAD_TUBULAR_STEEL :Cső közúti híd -STR_LAI_BRIDGE_DESCRIPTION_AQUEDUCT :Akvadukt +STR_LAI_BRIDGE_DESCRIPTION_AQUEDUCT :Csatornahíd STR_LAI_OBJECT_DESCRIPTION_TRANSMITTER :Rádióadó-torony STR_LAI_OBJECT_DESCRIPTION_LIGHTHOUSE :Világítótorony @@ -2527,7 +2710,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-2012 Az OpenTTD csapat +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2014 Az OpenTTD csapat # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Játék mentése @@ -2546,6 +2729,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} @@ -2556,6 +2740,7 @@ STR_SAVELOAD_OSKTITLE :{BLACK}Add meg # World generation STR_MAPGEN_WORLD_GENERATION_CAPTION :{WHITE}Világ létrehozása STR_MAPGEN_MAPSIZE :{BLACK}Térkép méret: +STR_MAPGEN_MAPSIZE_TOOLTIP :{BLACK}Válaszd ki a térkép méretét. Az elérhető mezők száma egy kicsit kevesebb lesz STR_MAPGEN_BY :{BLACK}* STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Várossűrűség: STR_MAPGEN_DATE :{BLACK}Dátum: @@ -2563,10 +2748,6 @@ STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Gazd. é 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: @@ -2593,7 +2774,6 @@ 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_SNOW_LINE_QUERY_CAPT :{WHITE}Hóhatár megváltoztatása STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Kezdő év megváltoztatása @@ -2648,7 +2828,7 @@ 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_FILE_TOOLTIP :{BLACK}A feltelepített NewGRF-ek listája. +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 STR_NEWGRF_SETTINGS_SHOW_PARAMETERS :{BLACK}Paraméterek megjelenítése @@ -2672,6 +2852,8 @@ 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 + # NewGRF parameters window STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}NewGRF paraméterek megváltoztatása STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Bezárás @@ -2731,6 +2913,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_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}) @@ -2741,6 +2924,7 @@ STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}Te épp STR_NEWGRF_DUPLICATE_GRFID :{WHITE}Nem lehetséges a fájl hozzáadása: duplikált GRF azonosító STR_NEWGRF_COMPATIBLE_LOADED :{ORANGE}Pontosan megegyező fájlt nem találtam (kompatibilis GRF-fel helyettesítve) +STR_NEWGRF_TOO_MANY_NEWGRFS :{WHITE}Nem adhatod hozzá: Elérted a NewGRF fájlok maximális számát STR_NEWGRF_COMPATIBLE_LOAD_WARNING :{WHITE}Kompatibilis GRFek betöltve a hiányzó fájlok helyett STR_NEWGRF_DISABLED_WARNING :{WHITE}Hiányzó GRF fájlokat kikapcsoltam @@ -2755,8 +2939,9 @@ STR_NEWGRF_LIST_MISSING :{RED}Hiányzó # NewGRF 'it's broken' warnings 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 fűtőházban -STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}Megváltoztatta '{1:ENGINE}' jármű hosszát mikor nem volt bent a fűtőházban +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 @@ -2771,6 +2956,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... @@ -2852,10 +3040,14 @@ STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT :{YELLOW}Egy év STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}A megítélésed növelése az önkormányzat megvesztegetésével, komoly büntetést kockáztatva, ha az kiderül.{}Ára: {CURRENCY_LONG} # Goal window -STR_GOALS_CAPTION :{WHITE}Célok +STR_GOALS_CAPTION :{WHITE}{COMPANY} céljai +STR_GOALS_SPECTATOR_CAPTION :{WHITE}Globális célok STR_GOALS_GLOBAL_TITLE :{BLACK}Globális célok: STR_GOALS_TEXT :{ORANGE}{STRING} STR_GOALS_NONE :{ORANGE}- Nincs - +STR_GOALS_SPECTATOR_NONE :{ORANGE}- Nem alkalmazható - +STR_GOALS_PROGRESS :{ORANGE}{STRING} +STR_GOALS_PROGRESS_COMPLETE :{GREEN}{STRING} STR_GOALS_COMPANY_TITLE :{BLACK}Vállalat céljai: STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Kattintással a fő nézetet a célra állítja. Ctrl+kattintással új látképet nyit a gazdasági épület/település/mező helyéről @@ -2894,6 +3086,18 @@ STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}Már tá STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING} szállításáért {STRING} és {STRING} között {YELLOW} ({COMPANY}{YELLOW} ({DATE_SHORT}ig) STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Kattints egy sorra a város/gazdasági épület megnézéséhez. Ctrl+kattintás esetén új látképet nyit a város/gazdasági épület pozíciójára +# Story book window +STR_STORY_BOOK_CAPTION :{WHITE}{COMPANY} naplója +STR_STORY_BOOK_SPECTATOR_CAPTION :{WHITE}Globális napló +STR_STORY_BOOK_TITLE :{YELLOW}{STRING} +STR_STORY_BOOK_GENERIC_PAGE_ITEM :{NUM}. oldal +STR_STORY_BOOK_SEL_PAGE_TOOLTIP :{BLACK}Ugrás tetszőleges oldalra +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 STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}Több elem kiválasztásához tartsd lenyomva a Ctrl gombot @@ -2907,9 +3111,9 @@ 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) STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Elfogadás STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Az elfogadott áruk listájának mutatása @@ -2920,8 +3124,31 @@ STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPAN STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Vélemény STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Vélemény megmutatása az állomásról -STR_STATION_VIEW_CARGO_RATINGS_TITLE :{BLACK}A szállítás helyi megítélése: -STR_STATION_VIEW_CARGO_RATING :{WHITE}{STRING}: {YELLOW}{STRING} ({COMMA}%) +STR_STATION_VIEW_SUPPLY_RATINGS_TITLE :{BLACK}Havi kínálat és helyi minősítés: +STR_STATION_VIEW_CARGO_SUPPLY_RATING :{WHITE}{STRING}: {YELLOW}{COMMA} / {STRING} ({COMMA}%) + +STR_STATION_VIEW_GROUP :{BLACK}Csoportosítás +STR_STATION_VIEW_WAITING_STATION :Állomás: várakozik +STR_STATION_VIEW_WAITING_AMOUNT :Mennyiség: várakozik +STR_STATION_VIEW_PLANNED_STATION :Állomás: tervezett +STR_STATION_VIEW_PLANNED_AMOUNT :Mennyiség: tervezett +STR_STATION_VIEW_FROM :{YELLOW}{CARGO_SHORT} {STATION} állomásról +STR_STATION_VIEW_VIA :{YELLOW}{CARGO_SHORT} {STATION} állomáson keresztül +STR_STATION_VIEW_TO :{YELLOW}{CARGO_SHORT} {STATION} állomásra +STR_STATION_VIEW_FROM_ANY :{RED}{CARGO_SHORT} ismeretlen állomásról +STR_STATION_VIEW_TO_ANY :{RED}{CARGO_SHORT} bármely állomásra +STR_STATION_VIEW_VIA_ANY :{RED}{CARGO_SHORT} bármely állomáson keresztül +STR_STATION_VIEW_FROM_HERE :{GREEN}{CARGO_SHORT} erről az állomásról +STR_STATION_VIEW_VIA_HERE :{GREEN}{CARGO_SHORT} ezen az állomáson keresztül +STR_STATION_VIEW_TO_HERE :{GREEN}{CARGO_SHORT} erre az állomásra +STR_STATION_VIEW_NONSTOP :{YELLOW}{CARGO_SHORT} megállás nélkül + +STR_STATION_VIEW_GROUP_S_V_D :Honnan-Keresztül-Hova +STR_STATION_VIEW_GROUP_S_D_V :Honnan-Hova-Keresztül +STR_STATION_VIEW_GROUP_V_S_D :Keresztül-Honnan-Hova +STR_STATION_VIEW_GROUP_V_D_S :Keresztül-Hova-Honnan +STR_STATION_VIEW_GROUP_D_S_V :Hova-Honnan-Keresztül +STR_STATION_VIEW_GROUP_D_V_S :Hova-Keresztül-Honnan ############ range for rating starts STR_CARGO_RATING_APPALLING :szörnyű @@ -3048,7 +3275,6 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS :{WHITE}Csatorn STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}Állomások: STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}Állomáselemek STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}Repülőterek -STR_COMPANY_INFRASTRUCTURE_VIEW_COST :{WHITE}{1:CURRENCY_LONG}/év ({0:COMMA}) STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL :{WHITE}{CURRENCY_LONG}/év # Industry directory @@ -3065,6 +3291,7 @@ STR_INDUSTRY_VIEW_PRODUCTION_LAST_MONTH_TITLE :{BLACK}Múlt ha STR_INDUSTRY_VIEW_TRANSPORTED :{YELLOW}{CARGO_LONG}{STRING}{BLACK} ({COMMA}% elszállítva) STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}A fő nézetet a gazdasági épületre állítja. Ctrl+kattintás esetén új látképet nyit a gazdasági épület pozíciójára STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Termelési szint: {YELLOW}{COMMA}% +STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}A gyár bejelentette a közelgő bezárását! ############ range for requires starts STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Felhasznál: {YELLOW}{STRING}{STRING} @@ -3106,7 +3333,7 @@ STR_VEHICLE_LIST_MANAGE_LIST_TOOLTIP :{BLACK}A listá STR_VEHICLE_LIST_REPLACE_VEHICLES :Járművek lecserélése STR_VEHICLE_LIST_SEND_FOR_SERVICING :Javításra küld -STR_VEHICLE_LIST_SEND_TRAIN_TO_DEPOT :Elküldi fűtőházba +STR_VEHICLE_LIST_SEND_TRAIN_TO_DEPOT :Elküldi járműtelepre STR_VEHICLE_LIST_SEND_ROAD_VEHICLE_TO_DEPOT :Elküldi garázsba STR_VEHICLE_LIST_SEND_SHIP_TO_DEPOT :Elküldi dokkba STR_VEHICLE_LIST_SEND_AIRCRAFT_TO_HANGAR :Elküldi hangárba @@ -3127,12 +3354,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 @@ -3223,12 +3453,12 @@ STR_DEPOT_AIRCRAFT_SELL_TOOLTIP :{BLACK}Húzz id STR_DEPOT_DRAG_WHOLE_TRAIN_TO_SELL_TOOLTIP :{BLACK}Húzd ide a mozdonyt a teljes vonat eladásához -STR_DEPOT_SELL_ALL_BUTTON_TRAIN_TOOLTIP :{BLACK}Összes fűtőházban tartózkodó vonat eladása +STR_DEPOT_SELL_ALL_BUTTON_TRAIN_TOOLTIP :{BLACK}A járműtelepen tartózkodó összes vonat eladása STR_DEPOT_SELL_ALL_BUTTON_ROAD_VEHICLE_TOOLTIP :{BLACK}Összes garázsban tartózkodó jármű eladása STR_DEPOT_SELL_ALL_BUTTON_SHIP_TOOLTIP :{BLACK}Összes dokkban tartózkodó hajó eladása STR_DEPOT_SELL_ALL_BUTTON_AIRCRAFT_TOOLTIP :{BLACK}Összes hangárban tartózkodó repülő eladása -STR_DEPOT_AUTOREPLACE_TRAIN_TOOLTIP :{BLACK}A fűtőházban tartózkodó összes vonat automatikus cseréje +STR_DEPOT_AUTOREPLACE_TRAIN_TOOLTIP :{BLACK}A járműtelepen tartózkodó összes vonat automatikus cseréje STR_DEPOT_AUTOREPLACE_ROAD_VEHICLE_TOOLTIP :{BLACK}A garázsban tartózkodó összes jármű automatikus cseréje STR_DEPOT_AUTOREPLACE_SHIP_TOOLTIP :{BLACK}A dokkban tartózkodó összes hajó automatikus cseréje STR_DEPOT_AUTOREPLACE_AIRCRAFT_TOOLTIP :{BLACK}A hangárban tartózkodó összes repülő automatikus cseréje @@ -3253,17 +3483,17 @@ STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Ide katt 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 -STR_DEPOT_TRAIN_LOCATION_TOOLTIP :{BLACK}A fő nézetet a fűtőházra állítja. Ctrl+kattintás esetén új látképet nyit a fűtőház pozíciójára +STR_DEPOT_TRAIN_LOCATION_TOOLTIP :{BLACK}A fő nézetet a járműtelepre állítja. Ctrl+kattintás esetén új látképet nyit a járműtelep pozíciójára STR_DEPOT_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}A fő nézetet a garázsra állítja. Ctrl+kattintás esetén új látképet nyit a garázs pozíciójára STR_DEPOT_SHIP_LOCATION_TOOLTIP :{BLACK}A fő nézetet a dokkra állítja. Ctrl+kattintás esetén új látképet nyit a dokk pozíciójára STR_DEPOT_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}A fő nézetet a hangárra állítja. Ctrl+kattintás esetén új látképet nyit a hangár pozíciójára -STR_DEPOT_VEHICLE_ORDER_LIST_TRAIN_TOOLTIP :{BLACK}Az összes, a fűtőházat menetrendszerűen látogató vonat listájának összeállítása +STR_DEPOT_VEHICLE_ORDER_LIST_TRAIN_TOOLTIP :{BLACK}Vonatok listája, amelyek menetrendjében a járműtelep szerepel STR_DEPOT_VEHICLE_ORDER_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}Az összes, a hangárt menetrendszerüen látogató jármű listájának összeállítása STR_DEPOT_VEHICLE_ORDER_LIST_SHIP_TOOLTIP :{BLACK}Az összes, a dokkot menetrendszerüen látogató hajó listájának összeállítása STR_DEPOT_VEHICLE_ORDER_LIST_AIRCRAFT_TOOLTIP :{BLACK}Az összes, a hangárt menetrendszerüen látogató repülőgép listájának összeállítása -STR_DEPOT_MASS_STOP_DEPOT_TRAIN_TOOLTIP :{BLACK}Kattints ide az összes vonat megállításához a fűtőházban +STR_DEPOT_MASS_STOP_DEPOT_TRAIN_TOOLTIP :{BLACK}Kattints ide a járműtelepen lévő összes vonat megállításához STR_DEPOT_MASS_STOP_DEPOT_ROAD_VEHICLE_TOOLTIP :{BLACK}Kattints ide az összes közúti jármű megállításához a garázsban STR_DEPOT_MASS_STOP_DEPOT_SHIP_TOOLTIP :{BLACK}Kattints ide az összes hajó leállításához a dokkban STR_DEPOT_MASS_STOP_HANGAR_TOOLTIP :{BLACK}Kattints ide az összes repülőgép leállításához a hangárban @@ -3299,8 +3529,8 @@ 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_HELP_LEFT_ARRAY :{BLACK}Cserélendő mozdonytípus kiválasztása -STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}A bal oldalon kiválasztott mozdonytípus helyett kívánt új mozdonytípus kiválasztása +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 STR_REPLACE_VEHICLES_START :{BLACK}Járműcsere elkezdése STR_REPLACE_VEHICLES_NOW :Az összes jármű azonnali lecserélése @@ -3335,7 +3565,7 @@ STR_VEHICLE_VIEW_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Közelí STR_VEHICLE_VIEW_SHIP_LOCATION_TOOLTIP :{BLACK}Közelítés a hajó jelenlegi helyzetére. Ctrl+kattintással a hajó követése a fő nézetben STR_VEHICLE_VIEW_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Közelítés a repülőgép jelenlegi helyzetére. Ctrl+kattintással a repülőgép követése a fő nézetben -STR_VEHICLE_VIEW_TRAIN_SEND_TO_DEPOT_TOOLTIP :{BLACK}A fűtőházba küldi a vonatot. Ctrl+kattintással csak javításra +STR_VEHICLE_VIEW_TRAIN_SEND_TO_DEPOT_TOOLTIP :{BLACK}A járműtelepre küldi a vonatot. Ctrl+kattintással csak javításra STR_VEHICLE_VIEW_ROAD_VEHICLE_SEND_TO_DEPOT_TOOLTIP :{BLACK}Garázsba küldi a járművet. Ctrl+kattintással csak javításra STR_VEHICLE_VIEW_SHIP_SEND_TO_DEPOT_TOOLTIP :{BLACK}Dokkba küldi a hajót. Ctrl+kattintással csak javításra STR_VEHICLE_VIEW_AIRCRAFT_SEND_TO_DEPOT_TOOLTIP :{BLACK}Hangárba küldi a repülőgépet. Ctrl+kattintással csak javításra @@ -3428,6 +3658,11 @@ STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Javítá 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 +STR_SERVICE_INTERVAL_DROPDOWN_TOOLTIP :{BLACK}Javítási időköz módjának megváltoztatása +STR_VEHICLE_DETAILS_DEFAULT :Alapértelmezett +STR_VEHICLE_DETAILS_DAYS :Napok +STR_VEHICLE_DETAILS_PERCENT :Százalék + STR_QUERY_RENAME_TRAIN_CAPTION :{WHITE}Vonat átnevezése STR_QUERY_RENAME_ROAD_VEHICLE_CAPTION :{WHITE}Közúti jármű átnevezése STR_QUERY_RENAME_SHIP_CAPTION :{WHITE}Hajó átnevezése @@ -3578,7 +3813,7 @@ STR_ORDER_SERVICE_NON_STOP_AT :Javításra meg STR_ORDER_NEAREST_DEPOT :a legközelebbi STR_ORDER_NEAREST_HANGAR :a legközelebbi hangárba -STR_ORDER_TRAIN_DEPOT :fűtőházba +STR_ORDER_TRAIN_DEPOT :járműtelepre STR_ORDER_ROAD_VEHICLE_DEPOT :garázsba STR_ORDER_SHIP_DEPOT :dokkba STR_ORDER_GO_TO_NEAREST_DEPOT_FORMAT :{STRING} {STRING} {STRING} @@ -3609,11 +3844,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) @@ -3648,6 +3883,10 @@ 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 @@ -3663,7 +3902,7 @@ STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}A menetr STR_TIMETABLE_STATUS_START_AT :{BLACK}A menetrend megkezdésének dátuma {STRING} STR_TIMETABLE_STARTING_DATE :{BLACK}Indulás dátuma -STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Menetrend kezdeti dátumának kiválasztása +STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Menetrend kezdeti dátumának kiválasztása. A ctrl+kattintás azon kívül, hogy beállítja ennek a menetrendnek a kezdetét, egyenletesen elosztja az ezen a menetrenden osztozó járműveket a jelenlegi utasításuk alapján, amennyiben a menetrend teljesen időzítve van. STR_TIMETABLE_CHANGE_TIME :{BLACK}Idő megváltoztatása STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}A kijelölt utasítás végrehajtási idejét változtatja meg @@ -3777,6 +4016,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 @@ -3799,6 +4040,10 @@ STR_INCOME_FLOAT_INCOME_SMALL :{TINY_FONT}{GRE STR_INCOME_FLOAT_INCOME :{GREEN}{CURRENCY_LONG} bevétel STR_FEEDER_TINY :{TINY_FONT}{YELLOW}Eleszállít: {CURRENCY_LONG} STR_FEEDER :{YELLOW}Elszállít: {CURRENCY_LONG} +STR_FEEDER_INCOME_TINY :{TINY_FONT}{YELLOW}Elszállítás: {CURRENCY_LONG}{WHITE} / {GREEN}Bevétel: {CURRENCY_LONG} +STR_FEEDER_INCOME :{YELLOW}Elszállítás: {CURRENCY_LONG}{WHITE} / {GREEN}Bevétel: {CURRENCY_LONG} +STR_FEEDER_COST_TINY :{TINY_FONT}{YELLOW}Elszállítás: {CURRENCY_LONG}{WHITE} / {RED}Költség: {CURRENCY_LONG} +STR_FEEDER_COST :{YELLOW}Elszállítás: {CURRENCY_LONG}{WHITE} / {RED}Költség: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_COST :{WHITE}Becsült ár: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Becsült bevétel: {CURRENCY_LONG} @@ -3839,6 +4084,8 @@ STR_WARNING_HEIGHTMAP_SCALE_MESSAGE :{YELLOW}A forr STR_WARNING_FALLBACK_SOUNDSET :{WHITE}Csak egy elavult hang alapcsomagot találtam. Ha szeretnél hangokat, telepíts egy hang alapcsomagot a tartalomletöltő rendszeren keresztül # Screenshot related messages +STR_WARNING_SCREENSHOT_SIZE_CAPTION :{WHITE}Hatalmas képernyőkép +STR_WARNING_SCREENSHOT_SIZE_MESSAGE :{YELLOW}A képernyőkép felbontása {COMMA} x {COMMA} pixel lesz. A méret miatt ez eltarthat egy ideig. Szeretnéd folytatni? STR_MESSAGE_SCREENSHOT_SUCCESSFULLY :{WHITE}A képernyő elmentve '{STRING}' néven STR_ERROR_SCREENSHOT_FAILED :{WHITE}A képmentés nem sikerült! @@ -3987,7 +4234,7 @@ STR_ERROR_BUOY_IN_THE_WAY :{WHITE}... bój STR_ERROR_BUOY_IS_IN_USE :{WHITE}... a bóját más vállalat használja! # Depot related errors -STR_ERROR_CAN_T_BUILD_TRAIN_DEPOT :{WHITE}Nem építhetsz ide fűtőházat... +STR_ERROR_CAN_T_BUILD_TRAIN_DEPOT :{WHITE}Nem építhetsz ide járműtelepet... STR_ERROR_CAN_T_BUILD_ROAD_DEPOT :{WHITE}Nem építhetsz ide garázst... STR_ERROR_CAN_T_BUILD_TRAM_DEPOT :{WHITE}Ide nem lehet remízt építeni... STR_ERROR_CAN_T_BUILD_SHIP_DEPOT :{WHITE}Nem építhetsz ide dokkot... @@ -3999,7 +4246,7 @@ STR_ERROR_ROAD_VEHICLE_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... gar STR_ERROR_SHIP_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... dokkban kellene állnia ehhez STR_ERROR_AIRCRAFT_MUST_BE_STOPPED_INSIDE_HANGAR :{WHITE}... hangárban kellene állnia ehhez -STR_ERROR_TRAINS_CAN_ONLY_BE_ALTERED_INSIDE_A_DEPOT :{WHITE}Csak a fűtőházban álló vonatokat lehet megváltoztatni +STR_ERROR_TRAINS_CAN_ONLY_BE_ALTERED_INSIDE_A_DEPOT :{WHITE}Csak a járműtelepen álló vonatokat lehet megváltoztatni STR_ERROR_TRAIN_TOO_LONG :{WHITE}Túl hosszú a vonat STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE :{WHITE}A járművet nem lehet megfordítani... STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE_MULTIPLE_UNITS :{WHITE}... több részből álló járművet tartalmaz @@ -4054,7 +4301,7 @@ STR_ERROR_CAN_T_BUILD_ON_SEA :{WHITE}... nem STR_ERROR_CAN_T_BUILD_ON_CANAL :{WHITE}... nem építhető csatornára STR_ERROR_CAN_T_BUILD_ON_RIVER :{WHITE}... nem építhető folyóra STR_ERROR_MUST_DEMOLISH_CANAL_FIRST :{WHITE}A csatornát előbb le kell rombolni -STR_ERROR_CAN_T_BUILD_AQUEDUCT_HERE :{WHITE}Ide nem lehet akvaduktot építeni... +STR_ERROR_CAN_T_BUILD_AQUEDUCT_HERE :{WHITE}Ide nem lehet csatornahidat építeni... # Tree related errors STR_ERROR_TREE_ALREADY_HERE :{WHITE}... már van itt fa @@ -4093,6 +4340,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... @@ -4118,7 +4366,7 @@ STR_ERROR_CAN_T_STOP_START_ROAD_VEHICLE :{WHITE}Nem ind STR_ERROR_CAN_T_STOP_START_SHIP :{WHITE}Nem indíthatod el vagy állíthatod meg a hajót... STR_ERROR_CAN_T_STOP_START_AIRCRAFT :{WHITE}Nem indíthatod el vagy állíthatod meg a repülőgépet... -STR_ERROR_CAN_T_SEND_TRAIN_TO_DEPOT :{WHITE}Nem küldheted a vonatot a fűtőházba... +STR_ERROR_CAN_T_SEND_TRAIN_TO_DEPOT :{WHITE}Nem küldheted a vonatot a járműtelepre... STR_ERROR_CAN_T_SEND_ROAD_VEHICLE_TO_DEPOT :{WHITE}Nem küldheted a járművet a garázsba... STR_ERROR_CAN_T_SEND_SHIP_TO_DEPOT :{WHITE}Nem küldheted a hajót a dokkba... STR_ERROR_CAN_T_SEND_AIRCRAFT_TO_HANGAR :{WHITE}Nem küldheted a repülőgépet a hangárba... @@ -4148,6 +4396,11 @@ 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! + # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Nem haladhatja meg a vonat a megállj jelzést... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Nem fordíthatod meg a vonatot... @@ -4190,6 +4443,16 @@ STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}A felira # Translatable comment for OpenTTD's desktop shortcut STR_DESKTOP_SHORTCUT_COMMENT :Transport Tycoon Deluxe alapokon nyugvó szimulációs játék +# Translatable descriptions in media/baseset/*.ob* files +STR_BASEGRAPHICS_DOS_DESCRIPTION :Az eredeti Transport Tycoon Deluxe DOS verziójának grafikája. +STR_BASEGRAPHICS_DOS_DE_DESCRIPTION :Az eredeti Transport Tycoon Deluxe DOS (német) verziójának grafikája. +STR_BASEGRAPHICS_WIN_DESCRIPTION :Az eredeti Transport Tycoon Deluxe Windows verziójának grafikája. +STR_BASESOUNDS_DOS_DESCRIPTION :Az eredeti Transport Tycoon Deluxe DOS verziójának hangjai. +STR_BASESOUNDS_WIN_DESCRIPTION :Az eredeti Transport Tycoon Deluxe Windows verziójának hangjai. +STR_BASESOUNDS_NONE_DESCRIPTION :Hang alapcsomag hangok nélkül. +STR_BASEMUSIC_WIN_DESCRIPTION :Az eredeti Transport Tycoon Deluxe Windows verziójának zenéje. +STR_BASEMUSIC_NONE_DESCRIPTION :Zenei alapcsomag zene nélkül. + ##id 0x2000 # Town building names STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1 :Magas irodaház @@ -4287,7 +4550,7 @@ STR_INDUSTRY_NAME_CANDY_FACTORY.t :cukorkagyárat STR_INDUSTRY_NAME_BATTERY_FARM :Elemfarm STR_INDUSTRY_NAME_BATTERY_FARM.t :elemfarmot STR_INDUSTRY_NAME_COLA_WELLS :Kólakút -STR_INDUSTRY_NAME_COLA_WELLS.t :kólakútat +STR_INDUSTRY_NAME_COLA_WELLS.t :kólakutat STR_INDUSTRY_NAME_TOY_SHOP :Játékbolt STR_INDUSTRY_NAME_TOY_SHOP.t :játékboltot STR_INDUSTRY_NAME_TOY_FACTORY :Játékgyár @@ -4621,8 +4884,8 @@ STR_FORMAT_WAYPOINT_NAME.ba :{TOWN} Ellenőr STR_FORMAT_WAYPOINT_NAME_SERIAL :{TOWN} {COMMA}. sz. Ellenőrző pont STR_FORMAT_WAYPOINT_NAME_SERIAL.ba :{TOWN} {COMMA}. sz. Ellenőrző ponton -STR_FORMAT_DEPOT_NAME_TRAIN :{TOWN} Fűtőház -STR_FORMAT_DEPOT_NAME_TRAIN_SERIAL :{TOWN} {COMMA}. sz. Fűtőház +STR_FORMAT_DEPOT_NAME_TRAIN :{TOWN} Járműtelep +STR_FORMAT_DEPOT_NAME_TRAIN_SERIAL :{TOWN} {COMMA}. sz. Vasúti járműtelep STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE :{TOWN} Garázs STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE_SERIAL :{TOWN} {COMMA}. sz. Garázs STR_FORMAT_DEPOT_NAME_SHIP :{TOWN} Dokk @@ -4677,8 +4940,9 @@ 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_SPACE_STRING :{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} @@ -4702,9 +4966,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 eb744b028..e5586ae2e 100644 --- a/src/lang/icelandic.txt +++ b/src/lang/icelandic.txt @@ -98,7 +98,7 @@ STR_CARGO_SINGULAR_FIZZY_DRINK :Gosdrykkja STR_QUANTITY_NOTHING : STR_QUANTITY_PASSENGERS :{COMMA} farþeg{P i ar} STR_QUANTITY_COAL :{WEIGHT_LONG} af kolum -STR_QUANTITY_MAIL :{COMMA} pokar af pósti +STR_QUANTITY_MAIL :{COMMA} pok{P i ar} af pósti STR_QUANTITY_OIL :{VOLUME_LONG} af olíu STR_QUANTITY_LIVESTOCK :{COMMA} grip{P u i}r STR_QUANTITY_GOODS :{COMMA} kass{P i ar} af vörum @@ -167,11 +167,11 @@ STR_ABBREV_ALL :{TINY_FONT}ALLT # 'Mode' of transport for cargoes STR_PASSENGERS :{COMMA} farþeg{P i ar} -STR_BAGS :{COMMA} pokar{P "" s} +STR_BAGS :{COMMA} pok{P i ar} STR_TONS :{COMMA} tonn -STR_LITERS :{COMMA} lítrar -STR_ITEMS :{COMMA} hlutir -STR_CRATES :{COMMA} kassar +STR_LITERS :{COMMA} lítr{P i ar} +STR_ITEMS :{COMMA} hlut{P ur ir} +STR_CRATES :{COMMA} kass{P i ar} # Colours, do not shuffle STR_COLOUR_DARK_BLUE :Dökkblár @@ -226,7 +226,7 @@ STR_TOOLTIP_SORT_ORDER :{BLACK}Velja up STR_TOOLTIP_SORT_CRITERIA :{BLACK}Velja uppröðun STR_TOOLTIP_FILTER_CRITERIA :{BLACK}Veldu hvers kyns farartæki þú vilt kaupa STR_BUTTON_SORT_BY :{BLACK}Flokka eftir -STR_BUTTON_LOCATION :{BLACK}Staður +STR_BUTTON_LOCATION :{BLACK}Staðsetning STR_BUTTON_RENAME :{BLACK}Endurnefna STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Loka glugga @@ -238,7 +238,7 @@ STR_TOOLTIP_RESIZE :{BLACK}Ýttu og STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Stækka/smækka gluggastærð STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Skrunslá - færir lista upp/niður 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 +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ð # Query window STR_BUTTON_DEFAULT :{BLACK}Sjálfgildi @@ -257,7 +257,6 @@ STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}Svæði: # These are used in buttons -STR_SORT_BY_CAPTION_POPULATION :{BLACK}Fólksfjöldi STR_SORT_BY_CAPTION_NAME :{BLACK}Nafn STR_SORT_BY_CAPTION_DATE :{BLACK}Dagsetning # These are used in dropdowns @@ -278,7 +277,6 @@ STR_SORT_BY_LENGTH :Lengd STR_SORT_BY_LIFE_TIME :Líftími eftir STR_SORT_BY_TIMETABLE_DELAY :Seinkun áætlunar STR_SORT_BY_FACILITY :Tegund stöðvar -STR_SORT_BY_WAITING :Verðgildi farms á stöð STR_SORT_BY_RATING_MAX :Hæsta einkunn stöðvar STR_SORT_BY_RATING_MIN :Lægsta einkunn stöðvar STR_SORT_BY_ENGINE_ID :Einkenni (hefðbundin röðun) @@ -290,12 +288,14 @@ STR_SORT_BY_RUNNING_COST :Rekstrarkostna STR_SORT_BY_POWER_VS_RUNNING_COST :Afl/Rekstrarkostnaður STR_SORT_BY_CARGO_CAPACITY :Burðargeta STR_SORT_BY_RANGE :Drægni +STR_SORT_BY_POPULATION :Fólksfjöldi +STR_SORT_BY_RATING :Einkunn # Tooltips for the main toolbar STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Stöðva leik STR_TOOLBAR_TOOLTIP_FORWARD :{BLACK}Spóla leikinn áfram STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}Stillingar -STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK}Vista leik, hætta í leik, hætta +STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK}Vista leik, hætta í leik, hætta í OpenTTD STR_TOOLBAR_TOOLTIP_DISPLAY_MAP :{BLACK}Sýna kort STR_TOOLBAR_TOOLTIP_DISPLAY_TOWN_DIRECTORY :{BLACK}Sýna bæjarmöppu STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Sýna samstarfssamninga @@ -305,20 +305,20 @@ STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Sýna al STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Sýna línurit STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Sýna stigatöflu fyrirtækja STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Fjármagna byggingu nýs iðnaðars -STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}Sýna lista yfir lestar fyrirtækis. Ctrl+Click skiptir milli hópa/farartækja lista -STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}Sýna lista yfir götufarartæki fyrirtækis. Ctrl+Click velur opnun á hóp/farartækja lista -STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_SHIPS :{BLACK}Sýna lista yfir skip fyrirtækis. Ctrl+Click velur opnun á hóp/farartækja lista -STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_AIRCRAFT :{BLACK}Sýna lista yfir flugvélar fyrirtækis. Ctrl+Click velur opnun á hóp/farartækja lista +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}Sýna lista yfir lestar fyrirtækis. Ctrl+smella skiptir milli hópa/farartækja lista +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}Sýna lista yfir götufarartæki fyrirtækis. Ctrl+smella velur opnun á hóp/farartækja lista +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_SHIPS :{BLACK}Sýna lista yfir skip fyrirtækis. Ctrl+smella velur opnun á hóp/farartækja lista +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_AIRCRAFT :{BLACK}Sýna lista yfir flugvélar fyrirtækis. Ctrl+smella velur opnun á hóp/farartækja lista STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_IN :{BLACK}Þrengja sýnishorn STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_OUT :{BLACK}Víkka sýnishorn -STR_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Leggja lestartein +STR_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Leggja járnbrautarspor STR_TOOLBAR_TOOLTIP_BUILD_ROADS :{BLACK}Leggja veg STR_TOOLBAR_TOOLTIP_BUILD_SHIP_DOCKS :{BLACK}Byggja bryggju STR_TOOLBAR_TOOLTIP_BUILD_AIRPORTS :{BLACK}Byggja flugvöll STR_TOOLBAR_TOOLTIP_LANDSCAPING :{BLACK}Opna landslags verkfæraslána til að hækka/lækka land, gróðursetja tré o.s.frv. STR_TOOLBAR_TOOLTIP_SHOW_SOUND_MUSIC_WINDOW :{BLACK}Sýna hljóð/tónlistar glugga STR_TOOLBAR_TOOLTIP_SHOW_LAST_MESSAGE_NEWS :{BLACK}Sýna síðustu skilaboð/fréttatilkynningu, sýna skilaboðastillingar -STR_TOOLBAR_TOOLTIP_LAND_BLOCK_INFORMATION :{BLACK}Landsvæðisupplýsingar +STR_TOOLBAR_TOOLTIP_LAND_BLOCK_INFORMATION :{BLACK}Landsvæðisupplýsingar, stjórnborð, aflúsunu forskrifta, skjáskot, um OpenTTD STR_TOOLBAR_TOOLTIP_SWITCH_TOOLBAR :{BLACK}Skipta á tækjaslá # Extra tooltips for the scenario editor toolbar @@ -333,9 +333,9 @@ STR_SCENEDIT_TOOLBAR_LANDSCAPE_GENERATION :{BLACK}Landslag STR_SCENEDIT_TOOLBAR_TOWN_GENERATION :{BLACK}Bæjargerð STR_SCENEDIT_TOOLBAR_INDUSTRY_GENERATION :{BLACK}Iðnaðargerð STR_SCENEDIT_TOOLBAR_ROAD_CONSTRUCTION :{BLACK}Vegagerð -STR_SCENEDIT_TOOLBAR_PLANT_TREES :{BLACK}Gróðursetja tré +STR_SCENEDIT_TOOLBAR_PLANT_TREES :{BLACK}Gróðursetja tré. Shift sýnir áætlaðan kostnað STR_SCENEDIT_TOOLBAR_PLACE_SIGN :{BLACK}Setja skilti -STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}Setja hlut +STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}Setja hlut. Shift sýnir áætlaðan kostnað ############ range for SE file menu starts STR_SCENEDIT_FILE_MENU_SAVE_SCENARIO :Vista kort @@ -361,7 +361,7 @@ STR_SETTINGS_MENU_SHOW_COMPETITOR_SIGNS :Skilti og nöfn STR_SETTINGS_MENU_FULL_ANIMATION :Fullar myndhreyfingar STR_SETTINGS_MENU_FULL_DETAIL :Full nákvæmni STR_SETTINGS_MENU_TRANSPARENT_BUILDINGS :Gegnsæjar byggingar -STR_SETTINGS_MENU_TRANSPARENT_SIGNS :Gegnsæ stöðvanöfn +STR_SETTINGS_MENU_TRANSPARENT_SIGNS :Gegnsæ skilti ############ range ends here ############ range for file menu starts @@ -372,19 +372,18 @@ STR_FILE_MENU_SEPARATOR : STR_FILE_MENU_EXIT :Hætta ############ range ends here -############ range for map menu starts +# map menu STR_MAP_MENU_MAP_OF_WORLD :Heimskort STR_MAP_MENU_EXTRA_VIEW_PORT :Auka sjónarhorn STR_MAP_MENU_SIGN_LIST :Skiltalisti -############ range for town menu starts, yet the town directory is shown in the map menu in the scenario editor + +############ range for town menu starts STR_TOWN_MENU_TOWN_DIRECTORY :Listi yfir bæi -############ end of the 'Display map' dropdown STR_TOWN_MENU_FOUND_TOWN :Fann bæ -############ end of the 'Town' dropdown +############ range ends here ############ range for subsidies menu starts STR_SUBSIDIES_MENU_SUBSIDIES :Samstarfssamningar -STR_SUBSIDIES_MENU_GOAL :Markmið ############ range ends here ############ range for graph menu starts @@ -409,10 +408,10 @@ STR_INDUSTRY_MENU_FUND_NEW_INDUSTRY :Fjármagna nýj ############ range ends here ############ range for railway construction menu starts -STR_RAIL_MENU_RAILROAD_CONSTRUCTION :Járnbrautarlestarframkvæmdir -STR_RAIL_MENU_ELRAIL_CONSTRUCTION :Rafmagnsteina framkvæmdir +STR_RAIL_MENU_RAILROAD_CONSTRUCTION :Járnbrautarspors framkvæmdir +STR_RAIL_MENU_ELRAIL_CONSTRUCTION :Rafmagnsspora framkvæmdir STR_RAIL_MENU_MONORAIL_CONSTRUCTION :Einteinungsframkvæmdir -STR_RAIL_MENU_MAGLEV_CONSTRUCTION :Maglev framkvæmdir +STR_RAIL_MENU_MAGLEV_CONSTRUCTION :Segulsvifvagna framkvæmdir ############ range ends here ############ range for road construction menu starts @@ -447,16 +446,18 @@ STR_NEWS_MENU_MESSAGE_HISTORY_MENU :Saga skilaboða STR_ABOUT_MENU_LAND_BLOCK_INFO :Landssvæðisupplýsingar STR_ABOUT_MENU_SEPARATOR : STR_ABOUT_MENU_TOGGLE_CONSOLE :Kveikja á stýriskjá -STR_ABOUT_MENU_AI_DEBUG :Aflúsun gervigreindar +STR_ABOUT_MENU_AI_DEBUG :Aflúsun gervigreindar/forskrifta STR_ABOUT_MENU_SCREENSHOT :Skjámynd -STR_ABOUT_MENU_ZOOMIN_SCREENSHOT :Þysjuð inn skjámynd +STR_ABOUT_MENU_ZOOMIN_SCREENSHOT :Súmuð inn skjáskot STR_ABOUT_MENU_DEFAULTZOOM_SCREENSHOT :Taka skjáskot af súmi STR_ABOUT_MENU_GIANT_SCREENSHOT :Risa skjámynd STR_ABOUT_MENU_ABOUT_OPENTTD :Um 'OpenTTD' STR_ABOUT_MENU_SPRITE_ALIGNER :Samstilla hreyfimynd +STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Sýna/fela afmörkunar kassa +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 @@ -472,22 +473,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 @@ -537,8 +556,8 @@ STR_GRAPH_CARGO_PAYMENT_RATES_X_LABEL :{TINY_FONT}{BLA STR_GRAPH_CARGO_PAYMENT_RATES_TITLE :{TINY_FONT}{BLACK}Laun fyrir flutning á 10 einingum (eða 10,000 lítra) af farmi um 20 reiti STR_GRAPH_CARGO_ENABLE_ALL :{TINY_FONT}{BLACK}Sýna allt STR_GRAPH_CARGO_DISABLE_ALL :{TINY_FONT}{BLACK}Fela allt -STR_GRAPH_CARGO_TOOLTIP_ENABLE_ALL :{BLACK}Sýna alla farma á farmgreiðslulínuritinu -STR_GRAPH_CARGO_TOOLTIP_DISABLE_ALL :{BLACK}Sýna enga farma á farmgreiðsluyfirlitinu +STR_GRAPH_CARGO_TOOLTIP_ENABLE_ALL :{BLACK}Sýna alla farma á farmgjalda línuritinu +STR_GRAPH_CARGO_TOOLTIP_DISABLE_ALL :{BLACK}Sýna enga farma á farmgjalda línuritinu STR_GRAPH_CARGO_PAYMENT_TOGGLE_CARGO :{BLACK}Taka út/setja inn graf fyrir farmgerðir STR_GRAPH_CARGO_PAYMENT_CARGO :{TINY_FONT}{BLACK}{STRING} @@ -558,7 +577,7 @@ STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ROUTE_SUPERVISOR :Leiðarumsjóna STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_DIRECTOR :Stjórnandi STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHIEF_EXECUTIVE :Framkvæmdarstjóri STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHAIRMAN :Stjórnarformaður -STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_PRESIDENT :Forseti +STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_PRESIDENT :Forstjóri STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TYCOON :Auðkýfingur # Performance detail window @@ -581,7 +600,7 @@ STR_PERFORMANCE_DETAIL_LOAN :{BLACK}Lán: STR_PERFORMANCE_DETAIL_TOTAL :{BLACK}Alls: ############ End of order list STR_PERFORMANCE_DETAIL_VEHICLES_TOOLTIP :{BLACK}Fjöldi farartækja sem skiluðu hagnaði síðasta ár. Inniheldur bifreiðar, lestir, skip og flugvélar -STR_PERFORMANCE_DETAIL_STATIONS_TOOLTIP :{BLACK}Fjöldi stöðvarhluta sem hafa nýlega verið þjónustaðir. Hver hluti stöðvar (t.d. lestarstöð, strætóstöð, flugvöllur) er talinn, jafnvel þótt þeir séu tengdir sem ein stöð. +STR_PERFORMANCE_DETAIL_STATIONS_TOOLTIP :{BLACK}Fjöldi stöðvarhluta sem hafa nýlega verið þjónustaðir. Hver hluti stöðvar (t.d. lestarstöð, strætóstöð, flugvöllur) er talinn sérstaklega, jafnvel þótt þeir séu tengdir einni stöð STR_PERFORMANCE_DETAIL_MIN_PROFIT_TOOLTIP :{BLACK}Hagnaður tekjulægsta farartækisins (sem þó er eldra en 2 ára) STR_PERFORMANCE_DETAIL_MIN_INCOME_TOOLTIP :{BLACK}Heildar afkoma í ársfjórðungi með lægsta gróða yfir síðastliðna 12 ársfjórðunga STR_PERFORMANCE_DETAIL_MAX_INCOME_TOOLTIP :{BLACK}Heildar afkoma í ársfjórðungi með hæðsta gróða yfir síðastliðnu 12 ársfjórðunga @@ -649,7 +668,7 @@ STR_HIGHSCORE_PERFORMANCE_TITLE_CAPITALIST :Kapítalisti STR_HIGHSCORE_PERFORMANCE_TITLE_MAGNATE :Áhrifamaður STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL :Stórlax STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY :Viðskiptajöfur aldarinnar -STR_HIGHSCORE_NAME :{BIG_FONT}{PRESIDENT_NAME}, {COMPANY} +STR_HIGHSCORE_NAME :{PRESIDENT_NAME}, {COMPANY} STR_HIGHSCORE_STATS :{BIG_FONT}'{STRING}' ({COMMA}) STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{BLACK}{COMPANY} öðlast '{STRING}' titil! STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{WHITE}{PRESIDENT_NAME} úr {COMPANY} öðlast '{STRING}' titil! @@ -669,6 +688,8 @@ STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRIES_ON_MAP :{BLACK}Sýna i STR_SMALLMAP_TOOLTIP_SHOW_TRANSPORT_ROUTES_ON :{BLACK}Sýna flutningsleiðir á korti STR_SMALLMAP_TOOLTIP_SHOW_VEGETATION_ON_MAP :{BLACK}Sýna uppskerur á korti STR_SMALLMAP_TOOLTIP_SHOW_LAND_OWNERS_ON_MAP :{BLACK}Sýna lóðareigendur á korti +STR_SMALLMAP_TOOLTIP_INDUSTRY_SELECTION :{BLACK}Smelltu á iðnað til að sýna/fela hann á kortinu. Ctrl+Smella felur allan iðnað fyrir utan þann sem þú velur. Ctrl+Smella á hann aftur til að birta allar tegundir iðnaðar +STR_SMALLMAP_TOOLTIP_COMPANY_SELECTION :{BLACK}Smelltu á fyrirtæki til að sýna/fela eignir þess. Ctrl+Smella til að fela öll fyrirtæki fyrir utan það sem þú velur. Ctrl+Smella á það aftur til að birta öll fyrirtæki STR_SMALLMAP_LEGENDA_ROADS :{TINY_FONT}{BLACK}Vegir STR_SMALLMAP_LEGENDA_RAILROADS :{TINY_FONT}{BLACK}Járnbrautir @@ -702,6 +723,7 @@ STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLA STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Sýna/fela bæjarnöfn á korti STR_SMALLMAP_CENTER :{BLACK}Miðjustilla smákortið miðað við núverandi staðsetningu STR_SMALLMAP_INDUSTRY :{TINY_FONT}{STRING} ({NUM}) +STR_SMALLMAP_COMPANY :{TINY_FONT}{COMPANY} STR_SMALLMAP_TOWN :{TINY_FONT}{WHITE}{TOWN} STR_SMALLMAP_DISABLE_ALL :{BLACK}Fela allt STR_SMALLMAP_ENABLE_ALL :{BLACK}Sýna allt @@ -709,6 +731,8 @@ STR_SMALLMAP_SHOW_HEIGHT :{BLACK}Sýna h STR_SMALLMAP_TOOLTIP_DISABLE_ALL_INDUSTRIES :{BLACK}Sýna ekki iðnaði STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES :{BLACK}Sýna alla iðnaði STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}Sýna/fela hæðakort +STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES :{BLACK}Fela eignir allra fyrirtækja á kortinu +STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}Sýna eignir allra fyrirtækja á kortinu # Status bar messages STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Sýna seinustu skilaboð eða fréttatilkynningu @@ -723,6 +747,7 @@ STR_MESSAGE_HISTORY_TOOLTIP :{BLACK}Listi yf STR_MESSAGE_NEWS_FORMAT :{STRING} - {STRING} STR_NEWS_MESSAGE_CAPTION :{WHITE}Skilaboð +STR_NEWS_CUSTOM_ITEM :{BIG_FONT}{BLACK}{STRING} STR_NEWS_FIRST_TRAIN_ARRIVAL :{BIG_FONT}{BLACK}Bæjarbúar fagna . . .{}Fyrsta lest kemur við á {STATION}! STR_NEWS_FIRST_BUS_ARRIVAL :{BIG_FONT}{BLACK}Bæjarbúar fagna . . .{}Fyrsti strætisvagn kemur við á {STATION}! @@ -755,7 +780,7 @@ STR_NEWS_COMPANY_BANKRUPT_DESCRIPTION :{BIG_FONT}{BLAC STR_NEWS_COMPANY_LAUNCH_TITLE :{BIG_FONT}{BLACK}Nýtt flutningsfyrirtæki stofnað! STR_NEWS_COMPANY_LAUNCH_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} hefur byggingu nálægt {TOWN}! STR_NEWS_MERGER_TAKEOVER_TITLE :{BIG_FONT}{BLACK}{STRING} hefur verið yfirtekið af {STRING}! -STR_PRESIDENT_NAME_MANAGER :{BLACK}{PRESIDENT_NAME}{}(Forstöðumaður) +STR_PRESIDENT_NAME_MANAGER :{BLACK}{PRESIDENT_NAME}{}(Forstjóri) STR_NEWS_NEW_TOWN :{BLACK}{BIG_FONT}{STRING} fjármagnaði nýjan bæ: {TOWN}! @@ -784,20 +809,19 @@ 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 -STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}{VEHICLE} hefur of fáar stöðvar á áætlun -STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}{VEHICLE} hefur ógilda færslu á áætlun -STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}{VEHICLE} hefur endurteknar færslur á áætlun -STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}{VEHICLE} hefur ógilda stöð á áætlun -# end of order system +# 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 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ð STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD_AND :{WHITE}{VEHICLE} er tekinn að eldast mikið og nauðsynlegt er að skipta honum út STR_NEWS_TRAIN_IS_STUCK :{WHITE}{VEHICLE} ratar ekki á áfangastað -STR_NEWS_VEHICLE_IS_LOST :{WHITE}{VEHICLE} er týnd. +STR_NEWS_VEHICLE_IS_LOST :{WHITE}{VEHICLE} hefur villst STR_NEWS_VEHICLE_IS_UNPROFITABLE :{WHITE}Hagnaður síðasta árs af {VEHICLE} nam {CURRENCY_LONG} +STR_NEWS_AIRCRAFT_DEST_TOO_FAR :{WHITE}{VEHICLE} kemst ekki á næsta áfangastað vegna þess að hann er of langt í burtu STR_NEWS_ORDER_REFIT_FAILED :{WHITE}{VEHICLE} stöðvaði vegna þess að umbeðin endursetning klikkaði STR_NEWS_VEHICLE_AUTORENEW_FAILED :{WHITE}Sjálfvirk uppfærsla brást fyrir {VEHICLE}{}{STRING} @@ -826,7 +850,7 @@ STR_NEWS_EXCLUSIVE_RIGHTS_DESCRIPTION :{BIG_FONT}{BLAC # Extra view window STR_EXTRA_VIEW_PORT_TITLE :{WHITE}Sjónarhorn {COMMA} STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}Afrita í sjónarhorn -STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}Afrita aðalsjónarhornið í sjónarhornsrammann +STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}Afrita aðalsjónarhornið í þetta sjónarhorn STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}Afrita frá sjónarhorni STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}Afrita sjónarhornið í rammanum í aðalsjónarhornið @@ -836,26 +860,26 @@ STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Gjaldmi STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Val á gjaldmiðli ############ start of currency region -STR_GAME_OPTIONS_CURRENCY_GBP :Pund (£) -STR_GAME_OPTIONS_CURRENCY_USD :Bandaríkjadalur ($) -STR_GAME_OPTIONS_CURRENCY_EUR :Evra (€) -STR_GAME_OPTIONS_CURRENCY_JPY :Jen (¥) +STR_GAME_OPTIONS_CURRENCY_GBP :Sterlingspund (GBP) +STR_GAME_OPTIONS_CURRENCY_USD :Bandaríkjadalur (USD) +STR_GAME_OPTIONS_CURRENCY_EUR :Evra (EUR) +STR_GAME_OPTIONS_CURRENCY_JPY :Japanskt jen (JPY) STR_GAME_OPTIONS_CURRENCY_ATS :Austurrískur skildingur (ATS) STR_GAME_OPTIONS_CURRENCY_BEF :Belgískur franki (BEF) STR_GAME_OPTIONS_CURRENCY_CHF :Svissneskur franki (CHF) STR_GAME_OPTIONS_CURRENCY_CZK :Tékknesk kóróna (CZK) STR_GAME_OPTIONS_CURRENCY_DEM :Þýskt mark (DEM) STR_GAME_OPTIONS_CURRENCY_DKK :Dönsk króna (DKK) -STR_GAME_OPTIONS_CURRENCY_ESP :Pesetar (ESP) +STR_GAME_OPTIONS_CURRENCY_ESP :Spænskir pesetar (ESP) STR_GAME_OPTIONS_CURRENCY_FIM :Finnskt mark (FIM) -STR_GAME_OPTIONS_CURRENCY_FRF :Franki (FRF) +STR_GAME_OPTIONS_CURRENCY_FRF :Franskur franki (FRF) STR_GAME_OPTIONS_CURRENCY_GRD :Grísk drakma (GRD) STR_GAME_OPTIONS_CURRENCY_HUF :Ungversk forinta (HUF) STR_GAME_OPTIONS_CURRENCY_ISK :Íslensk króna (ISK) STR_GAME_OPTIONS_CURRENCY_ITL :Ítölsk líra (ITL) STR_GAME_OPTIONS_CURRENCY_NLG :Hollensk gyllini (NLG) STR_GAME_OPTIONS_CURRENCY_NOK :Norsk króna (NOK) -STR_GAME_OPTIONS_CURRENCY_PLN :Pólsk zloty (PLN) +STR_GAME_OPTIONS_CURRENCY_PLN :Pólskt slot (PLN) STR_GAME_OPTIONS_CURRENCY_RON :Rúmensk leu (RON) STR_GAME_OPTIONS_CURRENCY_RUR :Rússnesk rúbla (RUR) STR_GAME_OPTIONS_CURRENCY_SIT :Slóvensk tolar (SIT) @@ -864,16 +888,16 @@ STR_GAME_OPTIONS_CURRENCY_TRY :Tyrknesk líra STR_GAME_OPTIONS_CURRENCY_SKK :Slóvakísk kórúna (SKK) STR_GAME_OPTIONS_CURRENCY_BRL :Brasilísk ríla (BRL) STR_GAME_OPTIONS_CURRENCY_EEK :Eistnesk Króna (EEK) -STR_GAME_OPTIONS_CURRENCY_CUSTOM :Sérvalið... +STR_GAME_OPTIONS_CURRENCY_LTL :Litháenskt litas (LTL) +STR_GAME_OPTIONS_CURRENCY_KRW :Suðurkóreskt vonn (KRW) +STR_GAME_OPTIONS_CURRENCY_ZAR :Suður-Afrískt rand (ZAR) +STR_GAME_OPTIONS_CURRENCY_CUSTOM :Sérsniðinn... +STR_GAME_OPTIONS_CURRENCY_GEL :Lari (Gel) +STR_GAME_OPTIONS_CURRENCY_IRR :Íranskt ríal (IRR) ############ end of currency region -STR_GAME_OPTIONS_MEASURING_UNITS_FRAME :{BLACK}Mælieiningar -STR_GAME_OPTIONS_MEASURING_UNITS_DROPDOWN_TOOLTIP :{BLACK}Kerfi mælieininga ############ start of measuring units region -STR_GAME_OPTIONS_MEASURING_UNITS_IMPERIAL :Amerískt kerfi -STR_GAME_OPTIONS_MEASURING_UNITS_METRIC :Metrakerfi -STR_GAME_OPTIONS_MEASURING_UNITS_SI :SI kerfi ############ end of measuring units region STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Aksturstefna @@ -911,11 +935,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 @@ -927,9 +953,6 @@ 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 STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} týnd{P "" ar} eða ónýt{P "" ar} skrá{P "" r} @@ -941,14 +964,14 @@ STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}Aukauppl STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Grunntónlistarsafn STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Veld grunntónlistarsafn til að nota -STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} ónýt skrá{P "" s} +STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} ónýt{P "" ar} skrá{P "" r} STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Auka upplýsingar um grunntónlistarsafnið STR_ERROR_FULLSCREEN_FAILED :{WHITE}Skjáfyllihamur brást # Custom currency window -STR_CURRENCY_WINDOW :{WHITE}Sérvalinn gjaldeyrir +STR_CURRENCY_WINDOW :{WHITE}Sérsniðinn gjaldmiðill STR_CURRENCY_EXCHANGE_RATE :{LTBLUE}Gengi: {ORANGE}{CURRENCY_LONG} = £ {COMMA} STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Hækka gengi miðað við pund (£) STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Lækka gengi miðað við pund (£) @@ -965,21 +988,24 @@ STR_CURRENCY_SET_CUSTOM_CURRENCY_SUFFIX_TOOLTIP :{BLACK}Veldu vi STR_CURRENCY_SWITCH_TO_EURO :{LTBLUE}Skipta í Evrur: {ORANGE}{NUM} STR_CURRENCY_SWITCH_TO_EURO_NEVER :{LTBLUE}Skipta í Evrur: {ORANGE}aldrei STR_CURRENCY_SET_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Veldu ártal fyrir evruskipti -STR_CURRENCY_DECREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Skipta fyr yfir í evru -STR_CURRENCY_INCREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Skipta síðar yfir í evru +STR_CURRENCY_DECREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Skipta yfir í evrur fyrr +STR_CURRENCY_INCREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Skipta yfir í evrur síðar STR_CURRENCY_PREVIEW :{LTBLUE}Dæmi: {ORANGE}{CURRENCY_LONG} STR_CURRENCY_CUSTOM_CURRENCY_PREVIEW_TOOLTIP :{BLACK}10.000 pund (£) í þessum gjaldmiðli -STR_CURRENCY_CHANGE_PARAMETER :{BLACK}Breyta sérvöldum gjaldeyri +STR_CURRENCY_CHANGE_PARAMETER :{BLACK}Breyta sérsniðnum gjaldmiðli STR_DIFFICULTY_LEVEL_SETTING_MAXIMUM_NO_COMPETITORS :{LTBLUE}Hámarksfjöldi keppinauta: {ORANGE}{COMMA} STR_NONE :Engin +STR_FUNDING_ONLY :Með fjármögnun +STR_MINIMAL :Lágmark STR_NUM_VERY_LOW :Mjög Lágt STR_NUM_LOW :Fáir STR_NUM_NORMAL :Miðlungs STR_NUM_HIGH :Margir STR_NUM_CUSTOM :Sérstillt +STR_NUM_CUSTOM_NUMBER :Sérstillt ({NUM}) STR_VARIETY_NONE :Engin STR_VARIETY_VERY_LOW :Mjög lágt @@ -998,7 +1024,13 @@ STR_SEA_LEVEL_VERY_LOW :Mjög lítið STR_SEA_LEVEL_LOW :Lítið STR_SEA_LEVEL_MEDIUM :Miðlungs STR_SEA_LEVEL_HIGH :Mikið +STR_SEA_LEVEL_CUSTOM :Sérstillt +STR_SEA_LEVEL_CUSTOM_PERCENTAGE :Sérstillt ({NUM}%) +STR_RIVERS_NONE :Engar +STR_RIVERS_FEW :Fáar +STR_RIVERS_MODERATE :Miðlungs +STR_RIVERS_LOT :Margar STR_DISASTER_NONE :Ekkert STR_DISASTER_REDUCED :Minnkað @@ -1025,6 +1057,7 @@ STR_CONFIG_SETTING_CAPTION :{WHITE}Ítarleg STR_CONFIG_SETTING_FILTER_TITLE :{BLACK}Sía: STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}Þenja út STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}Draga saman +STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT :(engin skýring til) STR_CONFIG_SETTING_DEFAULT_VALUE :{LTBLUE}Sjálfgefið gildi: {ORANGE}{STRING} STR_CONFIG_SETTING_TYPE :{LTBLUE}Gerð stillingar: {ORANGE}{STRING} STR_CONFIG_SETTING_TYPE_CLIENT :Tölvustilling (ekki geymt í vistunarskrám; hefur áhrif á alla leiki) @@ -1033,7 +1066,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 @@ -1054,7 +1086,7 @@ STR_CONFIG_SETTING_ON :Já STR_CONFIG_SETTING_DISABLED :Óvirkt STR_CONFIG_SETTING_COMPANIES_OFF :Af -STR_CONFIG_SETTING_COMPANIES_OWN :Eigin fyrirtækis +STR_CONFIG_SETTING_COMPANIES_OWN :Eigin fyrirtæki STR_CONFIG_SETTING_COMPANIES_ALL :Allra fyrirtækja STR_CONFIG_SETTING_NONE :Enginn @@ -1065,10 +1097,10 @@ STR_CONFIG_SETTING_HORIZONTAL_POS_LEFT :Vinstri STR_CONFIG_SETTING_HORIZONTAL_POS_CENTER :Miðja STR_CONFIG_SETTING_HORIZONTAL_POS_RIGHT :Hægri -STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN :Hámarks lán: {STRING} +STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN :Hámarkslán: {STRING} STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Hámarks upphæð sem fyrirtæki getur fengið lánað (ekki er gert ráð fyrir verðbólgu) STR_CONFIG_SETTING_INTEREST_RATE :Vextir: {STRING} -STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Vexti á lánum; stjórnar einnig verðbólgi ef hún ef kveikt er á henni +STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Vextir á lánum, stjórnar einnig verðbólgu, ef hún er virk STR_CONFIG_SETTING_RUNNING_COSTS :Rekstrarkostnaður: {STRING} STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT :Stillingar á hversu dýrt er að reka farartæki og mannvirki teng þeim STR_CONFIG_SETTING_CONSTRUCTION_SPEED :Framkvæmdahraði: {STRING} @@ -1082,73 +1114,137 @@ STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :Stillingar á b STR_CONFIG_SETTING_RECESSIONS :Efnahagslægð: {STRING} STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Ef virkt getur komið efnahagslægð á nokkurra ára fresti. Meðan á efnahagslægð stendur er öll framleiðsla marktækt minni (framleiðslan fellur í fyrra horf þegar efnahagslægðinni líkur) STR_CONFIG_SETTING_TRAIN_REVERSING :Banna lest að snúa í lestarstöð: {STRING} -STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :Ef þetta er virkt munu lestar ekki snúna við á lestartstöð, ef það er styttri leið á næsta áfangastað þegar þær snúa við +STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :Ef virkt, munu lestar ekki snúa við á lestastöðvum sem eru ekki endastöðvarekki snúa við á lestarstöðvar, þó að styttri leið sé á næsta áfangastað þegar þær snúa við STR_CONFIG_SETTING_DISASTERS :Hörmungar: {STRING} STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Kveikja eða slökkva á hörmungum, hörmungar sem af og til stoppa eða eyðileggja farartæki eða byggingar 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 lestarteina og stöðvar í flestum brekkum. Ef hún er óvirk er það bara hægt í brekkum sem snúa í sömu átt og teinarnir og því þurfa þeir engar undirstöður -STR_CONFIG_SETTING_AUTOSLOPE :Leyfa landslagsbreytingar undir byggingum, teinum o.fl. (landfylling): {STRING} +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} +STR_CONFIG_SETTING_CATCHMENT_HELPTEXT :Mismunandi stærð á söfnunarsvæðum fyrir mismunandi stöðvar og flugvelli STR_CONFIG_SETTING_EXTRADYNAMITE :Leyfa meiri eyðingu vega, brúa, gangna o.s.frv. í eigu bæjar: {STRING} +STR_CONFIG_SETTING_EXTRADYNAMITE_HELPTEXT :Að það sé auðveldara að fjarlægja byggingar og mannvirki í eigu bæjarins +STR_CONFIG_SETTING_TRAIN_LENGTH :Hámarkslengd lestar: {STRING} +STR_CONFIG_SETTING_TRAIN_LENGTH_HELPTEXT :Hver er hámarkslengd lestanna +STR_CONFIG_SETTING_TILE_LENGTH :{COMMA} reit{P 0 ur ir} STR_CONFIG_SETTING_SMOKE_AMOUNT :Magn reyks/neista frá lestum: {STRING} +STR_CONFIG_SETTING_SMOKE_AMOUNT_HELPTEXT :Hversu mikill reikur eða neistar koma frá farartækjum STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL :Hröðun lesta: {STRING} +STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL_HELPTEXT :Veldu hvernig eðlisfræði virkar á hröðun lesta. "Upprunalegt" er þannig að brekkur hafa sömu áhrif á allar lestar. "Raunverulegt" er þannig að áhrif brekkna og beygja fer eftir mismunandi þáttum, eins og lengd og togkraft lestanna STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL :Hröðun bifreiða: {STRING} +STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL_HELPTEXT :Veldu hvernig eðlisfræði virkar á hröðun bíla. "Upprunalegt" er þannig að brekkur hafa sömu áhrif á alla bíla. "Raunverulegt" er þannig að áhrif brekkna fer eftir mismunandi þáttum, eins og til dæmis togkraft bílsins +STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS :Halli á brekkum fyrir lestir: {STRING} +STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS_HELPTEXT :Halli á brekkum fyrir lest. Hærri gildi gera það erfiðara fyrir lestina að fara upp brekkuna +STR_CONFIG_SETTING_PERCENTAGE :{COMMA}% +STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS :Halli á brekkum fyrir bíla: {STRING} +STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS_HELPTEXT :Halli á brekkum fyrir bíla. Hærri gildi gera það erfiðara fyrir bíla að fara upp brekkunar STR_CONFIG_SETTING_FORBID_90_DEG :Banna lestum og skipum að taka 90° beygjur: {STRING} +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_IMPROVEDLOAD :Nota endurbættan algóriþma við hleðslu: {STRING} -STR_CONFIG_SETTING_GRADUAL_LOADING :Ferma farartæki smám saman: {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_INFLATION :Verðbólga: {STRING} -STR_CONFIG_SETTING_SELECTGOODS :Aðeins afhlaða farmi á stöðvum þar sem er eftirspurn: {STRING} +STR_CONFIG_SETTING_INFLATION_HELPTEXT :Hafa verðbólgu, þá eykst kostnaður aðeins hraðar en greiðslur +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} +STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH_HELPTEXT :Hámarkslengd á göngum sem á að byggja STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :Fjármögnun nýrra hráefnisiðnaða: {STRING} +STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_HELPTEXT :Aðferðir við að fjármagna hráefnisiðnað. 'Enginn' þýðir að það er ekki hægt að fjármagna iðnaðinn, 'Með jarðefnisleit' þýðir að fjármögnun er möguleg, en iðnaðurinn er byggður á tilviljunnarkenndum stað á kortinu og gæti þess vegna mistekist, 'Eins og annar iðnaður' þýðir að hráefnisiðnaður getur verið fjármagnaður eins og annar iðnaður og á þeim stað sem fyrirtækið kýs STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :Engin STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :Eins og annar iðnaður STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :Með jarðefnisleit +STR_CONFIG_SETTING_INDUSTRY_PLATFORM :Slétt svæði í kringum iðnað: {STRING} +STR_CONFIG_SETTING_INDUSTRY_PLATFORM_HELPTEXT :Stærð slétts svæðis í kringum iðnað. Þetta tryggir að nóg sé að auðu svæði í kringum iðnað til að byggja spor og fleira STR_CONFIG_SETTING_MULTIPINDTOWN :Leyfa marga svipaða iðnaði í sama bæ: {STRING} +STR_CONFIG_SETTING_MULTIPINDTOWN_HELPTEXT :Venjulega vilja bæir ekki fleiri en einn iðnað af hverri tegund. Með þessari stillingu á munu bæir leyfa nokkra iðnaði af sömu gerð í kringum sama bæinn +STR_CONFIG_SETTING_SIGNALSIDE :Sýna umferðarmerki: {STRING} +STR_CONFIG_SETTING_SIGNALSIDE_HELPTEXT :Veldu hvoru megin við sporið á að setja umferðarmerkin +STR_CONFIG_SETTING_SIGNALSIDE_LEFT :Vinstra megin +STR_CONFIG_SETTING_SIGNALSIDE_DRIVING_SIDE :Akstursstefnu megin +STR_CONFIG_SETTING_SIGNALSIDE_RIGHT :Hægra megin STR_CONFIG_SETTING_SHOWFINANCES :Sýna fjármálaglugga í lok árs: {STRING} -STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :Nýjar skipanir eru "hraðleiðar" sem sjálfgildi {STRING} +STR_CONFIG_SETTING_SHOWFINANCES_HELPTEXT :Ef þetta er virkt þá koma fjárhagsupplýsingar fyrirtækisins við enda hvers árs til að auðvelda yfirlit yfir fjárhag fyrirtækisins +STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :Nýjar skipanir eru sjálfgefnar sem 'hraðleiðar': {STRING} +STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT_HELPTEXT :Venjulega stoppa farartæki á öllum stöðvum sem þau fara í gegnum. Með því að virkja þessa stillingu mun faratækið fara í gegnum allar þær stöðvar á leið sinni án þess að stoppa. Athugið, þessi stilling skilgreinir aðeins hver sjálfgefin stilling er fyrir nýjar skipanir. Hægt er að breyta þessum stillingum fyrir hvert og eitt farartæki STR_CONFIG_SETTING_STOP_LOCATION :Við nýja áfangastaði stöðva lestir sjálfgefið við {STRING} brautarpallsins +STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :Sjálfgefin stilling hvar lestin stoppar á brautarpallinum. 'upphaf' þýðir nálægt þeim hluta sem lestin kemur inn í lestarstöðina, 'miðju' þýðir fyrir miðju lestarstöðvarinnar og 'enda' þýðir fjærst þeim hluta sem lestin kom inn í lestarstöðina. Athugið, þessi stilling skilgreinir aðeins hver sjálfgefin stilling er fyrir nýjar skipanir. Hægt er að breyta þessum stillingum fyrir hvert og eitt farartæki 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_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 STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT_FULLSCREEN :Aðal sjónarhorn, aðeins í fullum skjá STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT :Aðal sjónarhorn STR_CONFIG_SETTING_AUTOSCROLL_EVERY_VIEWPORT :Öll sjónarhorn STR_CONFIG_SETTING_BRIBE :Leyfilegt að múta bæjaryfirvöldum: {STRING} +STR_CONFIG_SETTING_BRIBE_HELPTEXT :Fyrirtæki geta reint að múta borgarstjórn. Ef eftirlistmenn uppgötva að verið sé múta bæjarstjórn, mun fyrirtækið ekki geta starfað í bænum í sex mánuði STR_CONFIG_SETTING_ALLOW_EXCLUSIVE :Heimila sölu á sérleyfi til flutninga: {STRING} STR_CONFIG_SETTING_ALLOW_EXCLUSIVE_HELPTEXT :Ef fyrirtæki kaupir sérleyfi af bæjaryfirvöldum munu stöðvar keppinauta (farþegar og farmur) ekki fá neinn farm í heilt ár +STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS :Leyfa byggingastyrki: {STRING} +STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS_HELPTEXT :Leyfa fyrirtækjum að gefa bæjum peninga til að styrkja byggingu nýrra húsa +STR_CONFIG_SETTING_ALLOW_FUND_ROAD :Leyfa styrki til að endurnýja vegi bæjarins: {STRING} +STR_CONFIG_SETTING_ALLOW_FUND_ROAD_HELPTEXT :Leyfa fyrirtækjum að gefa bæjum peninga til að þeir geti endurbyggt vegi og þar með eyðileggja þjónustu bíla í bænum STR_CONFIG_SETTING_ALLOW_GIVE_MONEY :Heimila peningagreiðslur til annarra fyrirtækja: {STRING} +STR_CONFIG_SETTING_ALLOW_GIVE_MONEY_HELPTEXT :Leyfa flutning á peningum milli fyrirtækja í fjölspilun STR_CONFIG_SETTING_FREIGHT_TRAINS :Margfalda þyngd farms til að líkja eftir þyngri lestum: {STRING} +STR_CONFIG_SETTING_FREIGHT_TRAINS_HELPTEXT :Stilltu hversu margfalt þyngri farmur er í lestum, hærri sem talan er því meiri kröfur eru gerðar á lestina, sérstaklega upp brekkur +STR_CONFIG_SETTING_PLANE_SPEED :Hraðastuðull flugvéla: {STRING} +STR_CONFIG_SETTING_PLANE_SPEED_HELPTEXT :Stilltu hlutfallslegan hraða flugvéla miðað við önnur farartæki til að minnka tekjur vegna flutninga með flugvél +STR_CONFIG_SETTING_PLANE_SPEED_VALUE :1 / {COMMA} STR_CONFIG_SETTING_PLANE_CRASHES :Fjöldi flugvélaslysa: {STRING} +STR_CONFIG_SETTING_PLANE_CRASHES_HELPTEXT :Stilltu hvaða líkur séu á því að flugvel hrapi STR_CONFIG_SETTING_PLANE_CRASHES_NONE :Engin STR_CONFIG_SETTING_PLANE_CRASHES_REDUCED :fækkuð STR_CONFIG_SETTING_PLANE_CRASHES_NORMAL :miðlungs -STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Leyfa strætóstöðvar á gangstéttum bæja: {STRING} -STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :Leyfa stöðvar á gangstéttum vega í eigu keppinauta: {STRING} -STR_CONFIG_SETTING_ADJACENT_STATIONS :Heimila sambyggingu stöðva: {STRING} -STR_CONFIG_SETTING_DYNAMIC_ENGINES :Virkja mörg NewGRF vélasöfn: {STRING} -STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}Ekki er hægt að breyta þessari stillingu þegar til eru farartæki. +STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Leyfa stoppistöðvar sem keyrt er í gegnum, á vegum í eigu bæja: {STRING} +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_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 STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :Alltaf hægt að byggja allar gerðir flugvalla: {STRING} +STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS_HELPTEXT :Ef þessi stilling er virk þá er hver tegund flugvallar alltaf aðgengileg eftir að hann verður fyrst aðgengilegur +STR_CONFIG_SETTING_WARN_LOST_VEHICLE :Vara við ef farartæki villast: {STRING} +STR_CONFIG_SETTING_WARN_LOST_VEHICLE_HELPTEXT :Byrtir skilaboð um að farartæki finni ekki leiðina sem liggur að næsta áfangastað STR_CONFIG_SETTING_ORDER_REVIEW :Fara yfir áætlanir farartækja: {STRING} +STR_CONFIG_SETTING_ORDER_REVIEW_HELPTEXT :Þegar þessi stilling er virk, eru skipanir ökutækja reglulega kannaðar og sum augljós atriði eru tilkynnt með frétta boðum þegar þau uppgötvast STR_CONFIG_SETTING_ORDER_REVIEW_OFF :Nei STR_CONFIG_SETTING_ORDER_REVIEW_EXDEPOT :Allra nema kyrrstæðra farartækja STR_CONFIG_SETTING_ORDER_REVIEW_ON :Allra farartækja STR_CONFIG_SETTING_WARN_INCOME_LESS :Birta viðvörun ef tap er af rekstri farartækis: {STRING} +STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :Þegar þessi stilling er virk, eru frétta boð send ef farartæki hafa ekki skilað hagnaði síðasta dagatals ár STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Farartæki úreldast aldrei: {STRING} +STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :Ef þessi stilling er virk, eru öll farartæki alltaf í boði eftir að þau voru fyrst kynnt til sögunnar STR_CONFIG_SETTING_AUTORENEW_VEHICLE :Uppfæra faratæki sjálfvirkt þegar þau eldast: {STRING} +STR_CONFIG_SETTING_AUTORENEW_VEHICLE_HELPTEXT :Ef þessi stilling er virk, eru farartæki endurnýjuð sjálfvirkt þegar endingartími þeirra er komin +STR_CONFIG_SETTING_AUTORENEW_MONTHS :Endurnýja farartæki sjálfvirkt {STRING} hámarksaldur +STR_CONFIG_SETTING_AUTORENEW_MONTHS_HELPTEXT :Hvenær íhuga ætti sjálfvirka útskipting á farartæki +STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_BEFORE :{COMMA} mánuð{P 0 i um} fyrir +STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_AFTER :{COMMA} mánuð{P 0 i um} eftir STR_CONFIG_SETTING_AUTORENEW_MONEY :Lágmarks bankainnistæða fyrir sjálfvirka uppfæringu: {STRING} -STR_CONFIG_SETTING_POPULATION_IN_LABEL :Sýna íbúafjölda í bæjarmerki: {STRING} +STR_CONFIG_SETTING_AUTORENEW_MONEY_HELPTEXT :Lágmarksupphæð peninga sem verður að vera til í bankanum áður en hægt er að skipta farartækjum sjálfvirkt út +STR_CONFIG_SETTING_ERRMSG_DURATION :Tími sem villuskilaboð eru sýnileg: {STRING} +STR_CONFIG_SETTING_ERRMSG_DURATION_HELPTEXT :Tími sem villuboð í rauðu gluggunum eru sýnd. Athugið að sumum (alvarlegum) villuboðum er ekki lokað sjálfvirkt eftir þennan tíma, þeim verður að loka handvirkt +STR_CONFIG_SETTING_ERRMSG_DURATION_VALUE :{COMMA} sekúnd{P 0 a ur} +STR_CONFIG_SETTING_HOVER_DELAY :Sýna vísbendingar: {STRING} +STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Töf áður en vísbendingar eru birtar þegar músinni er haldið yfir einhverju af viðmóts atriðunum. Eins er stundum að finna vísbendingar með því að hægri smella +STR_CONFIG_SETTING_HOVER_DELAY_VALUE :Halda músinni yfir í {COMMA} sekúndu {P 0 "" r} +STR_CONFIG_SETTING_HOVER_DELAY_DISABLED :Hægri smella +STR_CONFIG_SETTING_POPULATION_IN_LABEL :Sýna íbúafjölda með nafni bæjarins: {STRING} +STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :Sýna íbúafjölda bæjarins með nafni bæjarins á kortinu +STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :Þykkt lína í línuritum: {STRING} +STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Breidd lína í línuritinu. Þunn lína gefur nákvæmari lestur, meðan breiðari lína sést betur og gerir auðveldara að þekkja litina í sundu STR_CONFIG_SETTING_LAND_GENERATOR :Landslagsmótun: {STRING} STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :Upphafleg STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis +STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Hámarksfjarlægð frá brún að olíuhreinsistöð: {STRING} STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Olíuhreinsistöðvar eru aðeins byggðar nálægt jöðrum á kortinu, það er að segja á ströndum á kortum sem eru af eyjum STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Hæð snjólínu: {STRING} STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Hrjúfleiki landslags (TerraGenesis stilling) : {STRING} @@ -1164,30 +1260,40 @@ 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 +STR_CONFIG_SETTING_STATION_SPREAD :Hámarksstærð stöðva: {STRING} +STR_CONFIG_SETTING_STATION_SPREAD_HELPTEXT :Hámarkssvæði sem ein stöð má dreifast yfir. Athugið að há gildi hægja á leiknum STR_CONFIG_SETTING_SERVICEATHELIPAD :Skoða þyrlur sjálfvirkt á þyrlupalli: {STRING} +STR_CONFIG_SETTING_SERVICEATHELIPAD_HELPTEXT :Þjónusta þyrlur í hvert skipti sem þær hafa lent, jafnvel þó það sé ekkert skýli á flugvellinum STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR :Opna landmótunarglugga samhliða öðrum framkvæmdum: {STRING} +STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR_HELPTEXT :Þegar framkvæmdagluggar fyrir farartæki eru opnaðir þá verður líka gluggi fyrir mótun lands opnaður STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR :Litur á landinu sem birtist á kortinu: {STRING} +STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :Litur á landslagi á litla kortinu STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :Grænn STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :Dökkgrænn STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Fjólublátt STR_CONFIG_SETTING_REVERSE_SCROLLING :Færa sjónarhorn í öfuga átt miðað við mús: {STRING} +STR_CONFIG_SETTING_REVERSE_SCROLLING_HELPTEXT :Hegðun þegar sjónarhornið er fært með hægri músartakkanum. Þegar stillingin er óvirk færir músin myndavélina. Þegar stillingin er virk færir músin sjónarhornið STR_CONFIG_SETTING_SMOOTH_SCROLLING :Mjúkt skrun í skjágluggum: {STRING} -STR_CONFIG_SETTING_MEASURE_TOOLTIP :Sýna mælstiku við byggingu: {STRING} +STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Stýrir hvernig aðalsjónarhornið færist á ákveðna staði þegar smellt er á þá á litla kortinu eða þegar ákveðinn hlutur er valin á kortinu. Ef stillingin er virk færist aðalsjónarhornið rólega, ef stillingin er óvirk fer aðalsjónarhornið beint á ákveðna staðinn +STR_CONFIG_SETTING_MEASURE_TOOLTIP :Sýna mælingar þegar verið er að byggja og breyta landslagi: {STRING} +STR_CONFIG_SETTING_MEASURE_TOOLTIP_HELPTEXT :Sýna fjölda reita og hæðarmismun þegar músin er dregin meðan verið er að byggja STR_CONFIG_SETTING_LIVERIES :Sýna auka litastillingar: {STRING} +STR_CONFIG_SETTING_LIVERIES_HELPTEXT :Stýra notkun auka litastillinga á farartækjum (öfuggt við sérstöðu fyrirtækja) STR_CONFIG_SETTING_LIVERIES_NONE :Aldrei -STR_CONFIG_SETTING_LIVERIES_OWN :Eigin fyrirtækis +STR_CONFIG_SETTING_LIVERIES_OWN :Eigin fyrirtæki STR_CONFIG_SETTING_LIVERIES_ALL :Allra fyrirtækja STR_CONFIG_SETTING_PREFER_TEAMCHAT :Nota liðsspjall með : {STRING} +STR_CONFIG_SETTING_PREFER_TEAMCHAT_HELPTEXT :Í staðinn fyrir að spjall við alla í fjölspili sé virkjað með virkjar það spjall við þá sem eru með í fyrirtækinu þínu. virkar ávalt á hinn veginn miðað við það sem gerir STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING :Virkni skrunhjóls: {STRING} +STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING_HELPTEXT :Til að nýta skrunhjól á músum sem virka bæði upp/niður og til hliðanna STR_CONFIG_SETTING_SCROLLWHEEL_ZOOM :Víkka/þrengja sjónarhorn STR_CONFIG_SETTING_SCROLLWHEEL_SCROLL :Skruna á korti STR_CONFIG_SETTING_SCROLLWHEEL_OFF :Engin STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER :Hraði skrunhjóls á korti: {STRING} +STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER_HELPTEXT :Stjórnaðu næmni skrunhjólsins á músinni STR_CONFIG_SETTING_OSK_ACTIVATION :Lyklaborð á skjá: {STRING} STR_CONFIG_SETTING_OSK_ACTIVATION_HELPTEXT :Veldu hvernig á að fá fram lyklaborð á skjáinn þar sem hægt er að skrifa texta með að ýta á takana. Þetta er hugsað fyrir lítil tæki sem eru án lyklaborðs STR_CONFIG_SETTING_OSK_ACTIVATION_DISABLED :Óvirkt @@ -1196,32 +1302,50 @@ STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK_FOCUS :Ýta einusinni STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK :Ýta einusinni (birtist strax) STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU :Hægrismellshermun: {STRING} -STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Command-smella -STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Control-smella +STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_HELPTEXT :Veldu hvernig herma á eftir hægri smelli á músinni +STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Command+smella +STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Ctrl+smella 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_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} +STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_HELPTEXT :Veldu hvað það er sem má gera þegar leikurinn er á bið +STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :Ekkert +STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_CONSTRUCTION :Allt nema byggja +STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_LANDSCAPING :Allt nema að breyta landslaginu +STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_ACTIONS :Allt STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Ítarlegur listi yfir farartæki: {STRING} STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Virkja möguleika á ítarlegum lista yfir farartæki sem notaður er til að flokka farartæki STR_CONFIG_SETTING_LOADING_INDICATORS :Sýna stöðu lestunar: {STRING} +STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :Sýna fyrir ofan farartækin stöðu lestunar þegar þau eru að ferma eða afferma STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :Birta áætlanir í slögum frekar en dögum: {STRING} -STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE :Sýna komu og brottfaratíma í áætlunum: {STRING} -STR_CONFIG_SETTING_QUICKGOTO :Fljótleg gerð áætlunar: {STRING} +STR_CONFIG_SETTING_TIMETABLE_IN_TICKS_HELPTEXT :Sýna ferðatíma í áætlun í slögum frekar en dögum +STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE :Sýna komu- og brottfaratíma í áætlunum: {STRING} +STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE_HELPTEXT :Sýna áætlaðan komu- og brottfarar tíma í áætlun +STR_CONFIG_SETTING_QUICKGOTO :Fljótleg gerð skipana: {STRING} +STR_CONFIG_SETTING_QUICKGOTO_HELPTEXT :Forvelja 'fara að' þegar skipana glugginn fyrir farartæki er opnaður STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE :Valin lestartegund (eftir nýjan leik/opnaðan leik): {STRING} +STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_HELPTEXT :Tegund spors sem valið er fyrst eftir að leikur byrjar. 'Fyrsta mögulega' velur elstu gerð spors, 'Síðasta mögulega' velur nýjustu gerð spors og 'Mest notuð' velur það spor sem mest er af á kortinu STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_FIRST :Fyrsta mögulega STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_LAST :Síðasta mögulega STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_MOST_USED :Mest notuð STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :Sýna frátekin spor: {STRING} +STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION_HELPTEXT :Frátekin spor fá annan lit til að auðvelda að finna vandamál þegar lestar fara ekki inn á svæði STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :Halda byggingartólum virkum eftir notkun: {STRING} +STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Halda byggingartólum fyrir brýr, gögn og fleira opnum eftir notkun STR_CONFIG_SETTING_EXPENSES_LAYOUT :Hópa saman útgjöld í fjármálaglugga: {STRING} +STR_CONFIG_SETTING_EXPENSES_LAYOUT_HELPTEXT :Skilgreinir útlit fjármálaglugga STR_CONFIG_SETTING_SOUND_TICKER :Frétta borði: {STRING} STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :Spila hljóð fyrir samantekt á fréttatilkynningum @@ -1240,15 +1364,25 @@ STR_CONFIG_SETTING_SOUND_VEHICLE_HELPTEXT :Spila hljóð f STR_CONFIG_SETTING_SOUND_AMBIENT :Umlykjandi: {STRING} STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :Spila umlykjandi hljóð frá landslagi, iðnaði og bæjum +STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING :Gera óvirkar byggingar tengd farartækjum sem eru ófáanleg: {STRING} +STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING_HELPTEXT :Ef þessi stilling er virk eru byggingartól fyrir farartæki aðeins virk ef þau farartæki eru í boði, þetta kemur í veg fyrir eyðslu á tíma og peningum og ónothæfar framkvæmdir STR_CONFIG_SETTING_MAX_TRAINS :Lestir á leikmann mest: {STRING} +STR_CONFIG_SETTING_MAX_TRAINS_HELPTEXT :Hámarksfjöldi járnbrautarlesta sem fyrirtæki getur átt STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :Bifreiðir á leikmann mest: {STRING} +STR_CONFIG_SETTING_MAX_ROAD_VEHICLES_HELPTEXT :Hámarksfjöldi bifreiða, þar með talið sporvagna, sem fyrirtæki getur átt STR_CONFIG_SETTING_MAX_AIRCRAFT :Flugvélar á leikmann mest: {STRING} +STR_CONFIG_SETTING_MAX_AIRCRAFT_HELPTEXT :Hámarksfjöldi flugvéla sem fyrirtæki getur átt STR_CONFIG_SETTING_MAX_SHIPS :Skip á leikmann mest: {STRING} +STR_CONFIG_SETTING_MAX_SHIPS_HELPTEXT :Hámarksfjöldi skipa sem fyrirtæki getur átt STR_CONFIG_SETTING_AI_BUILDS_TRAINS :Útiloka lestir frá tölvu: {STRING} +STR_CONFIG_SETTING_AI_BUILDS_TRAINS_HELPTEXT :Ef þessi stilling er virk er ómögulegt fyrir gervigreindar leikmenn að vera með járnbrautalestar STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES :Útiloka bifreiðir frá tölvu: {STRING} +STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES_HELPTEXT :Ef þessi stilling er virk er ómögulegt fyrir gervigreindar leikmenn að vera með bíla og sporvagna STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT :Útiloka flugvélar frá tölvu: {STRING} +STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT_HELPTEXT :Ef þessi stilling er virk er ómögulegt fyrir gervigreindar leikmenn að vera með flugvélar STR_CONFIG_SETTING_AI_BUILDS_SHIPS :Útiloka skip frá tölvu: {STRING} +STR_CONFIG_SETTING_AI_BUILDS_SHIPS_HELPTEXT :Ef þessi stilling er virk er ómögulegt fyrir gervigreindar leikmenn að vera með skip STR_CONFIG_SETTING_AI_PROFILE :Erfiðleikastig: {STRING} STR_CONFIG_SETTING_AI_PROFILE_HELPTEXT :Veldu hvaða erfiðleikastig á að nota fyrir gervigreind eða leikja breytingar (Game Script) @@ -1257,11 +1391,28 @@ STR_CONFIG_SETTING_AI_PROFILE_MEDIUM :Miðlungs STR_CONFIG_SETTING_AI_PROFILE_HARD :Erfitt STR_CONFIG_SETTING_AI_IN_MULTIPLAYER :Leyfa gervigreind í fjölspilun: {STRING} +STR_CONFIG_SETTING_AI_IN_MULTIPLAYER_HELPTEXT :Leyfir gervigreindar leikmönnum að taka þátt í fjölspilunar leikjum +STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES :#opcodes áður en forskriftir eru stöðvaðar: {STRING} +STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES_HELPTEXT :Hámarksfjöldi útreikninga sem forskrift getur gert í hvert skipti STR_CONFIG_SETTING_SERVINT_ISPERCENT :Tími milli viðhalds farartækja sýndur í hundraðshlutum: {STRING} -STR_CONFIG_SETTING_NOSERVICE :Leggja niður viðhald þegar bilanir eru stilltar af: {STRING} +STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Veldu hvort þjónusta við farartæki ákvarðast af því hve langur tími er liðinn síðan það var síðast þjónustað eða þá að áreiðanleik farartækisins er orðinn ákveðin prósentutala af hámarksáreiðanleika +STR_CONFIG_SETTING_SERVINT_TRAINS :Sjálfgefið millibil fyrir þjónustu hjá járnbrautarlestum: {STRING} +STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :Stilltu sjálfgefið millibil fyrir þjónustu hjá nýjum járnbrautarlestum, á við ef ekkert tiltekið millibil er stillt fyrir farartækið +STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA} dag{P 0 ur ar}/% +STR_CONFIG_SETTING_SERVINT_DISABLED :Óvirkt +STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES :Sjálfgefið millibil fyrir þjónustu hjá bílum og sporvögnum: {STRING} +STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES_HELPTEXT :Stilltu sjálfgefið millibil fyrir þjónustu hjá nýjum bílum og sporvögnum, á við ef ekkert tiltekið millibil er stillt fyrir farartækið +STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Sjálfgefið millibil fyrir þjónustu hjá flugvélum: {STRING} +STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Stilltu sjálfgefið millibil fyrir þjónustu hjá nýjum flugvélum, á við ef ekkert tiltekið millibil er stillt fyrir farartækið +STR_CONFIG_SETTING_SERVINT_SHIPS :Sjálfgefið millibil fyrir þjónustu hjá skipum: {STRING} +STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Stilltu sjálfgefið millibil fyrir þjónustu hjá nýjum skipum, á við ef ekkert tiltekið millibil er stillt fyrir farartækið +STR_CONFIG_SETTING_NOSERVICE :Sleppa viðhaldi þegar bilanir eru óvirkar: {STRING} +STR_CONFIG_SETTING_NOSERVICE_HELPTEXT :Ef þessi stilling er virk eru farartæki ekki þjónustuð ef þau geta ekki bilað STR_CONFIG_SETTING_WAGONSPEEDLIMITS :Leyfa hraðatakmarkanir vagna: {STRING} +STR_CONFIG_SETTING_WAGONSPEEDLIMITS_HELPTEXT :Ef þessi stilling er virk er hámarkshraði á vögnum einnig notaður til að ákvarða hámarks hraða á járnbrautalestum STR_CONFIG_SETTING_DISABLE_ELRAILS :Ekki nota rafknúnar lestir: {STRING} +STR_CONFIG_SETTING_DISABLE_ELRAILS_HELPTEXT :Ef þessi stilling er virk er ekki boðið upp á að nota rafmagns knúnar járnbrautalestar né spor fyrir þá STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN :Aðkoma fyrsta farartækis á stöð leikmanns: {STRING} STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN_HELPTEXT :Birta dagblöð þegar fyrsta farartækið kemur á stöð í eigu nýs spilara @@ -1299,83 +1450,146 @@ STR_CONFIG_SETTING_NEWS_MESSAGES_SUMMARY :Úrtak STR_CONFIG_SETTING_NEWS_MESSAGES_FULL :Allt STR_CONFIG_SETTING_COLOURED_NEWS_YEAR :Fréttir byrja að birtast í lit árið: {STRING} +STR_CONFIG_SETTING_COLOURED_NEWS_YEAR_HELPTEXT :Árið sem tilkynningar í dagblöðuðum byrja að vera í lit. Fram að þessum tíma eru blöð í svart/hvítu STR_CONFIG_SETTING_STARTING_YEAR :Upphafsár: {STRING} STR_CONFIG_SETTING_SMOOTH_ECONOMY :Virkja jafnan efnahag (fleiri og minni breytingar): {STRING} +STR_CONFIG_SETTING_SMOOTH_ECONOMY_HELPTEXT :Ef þessi stilling er virk breytist framleiðsla í iðnaði oftar og í smærri skrefum. Þessi stilling hefur yfirleitt engin áhrif ef tegund iðnaðar er ákveðinn með NewGRF STR_CONFIG_SETTING_ALLOW_SHARES :Leyfa hlutabréfakaup í öðrum fyrirtækjum: {STRING} +STR_CONFIG_SETTING_ALLOW_SHARES_HELPTEXT :Ef þessi stilling er virk er hægt að kaupa og selja hlutabréf í fyrirtækjum. Hlutabréf eru aðeins aðgengileg fyrir fyrirtæki sem hafa náð ákveðnum aldri +STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE :Hlutfall hagnaðar sem greiðist til tengiþjónustu: {STRING} +STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE_HELPTEXT :Hlutfall hagnaðar sem greiðist til tengiþjónustu, farartækja sem eru milliliðir. Gefur meiri stjórn á tekjunum +STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY :Bil milli umferðarmerkja þegar þau eru dregin: {STRING} +STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_HELPTEXT :Stillir fjarlægð á milli umferðarmerkja, ef þau eru dregin, fram að næstu hindrun (merki, vegamót) +STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_VALUE :{COMMA} reit{P 0 ur ir} +STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE :Halda stöðugu bili milli umferðarmerkja, þegar þau eru dregin: {STRING} +STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :Veldu hvernig umferðarmerki dreifast þegar þau eru Ctrl+dregin. Ef stillingin er óvirk eru merki sett sitthvoru megin við göng og brýr til að koma í veg fyrir að löng svæði án merkja myndis. Ef hún er virk, eru merki sett á X reita fresti sem gerir það að verkum að auðveldara er að halda merkjum hlið við hlið á samsíða sporum STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :Nota skilti í stað ljósa fyrir: {STRING} -STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI :Virkja valmynd lestarljósa: {STRING} -STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE :Ljósagerð sem skal byggja sem sjálfgildi: {STRING} -STR_CONFIG_SETTING_DEFAULT_SIGNAL_NORMAL :venjuleg -STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBS :Brautar ljós -STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBSOWAY :Ein-stefnu ljós -STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES :Skruna milli tegundir merkja: {STRING} -STR_CONFIG_SETTING_CYCLE_SIGNAL_NORMAL :Aðeins stöðvunar-merki -STR_CONFIG_SETTING_CYCLE_SIGNAL_PBS :Aðeins Leiðar-merki +STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE_HELPTEXT :Stilltu árið sem ljósamerki eru notuð í staðinn fyrir hreyfimerki. Fram að þessu ári eru notuð hreyfimerki (þau hafa nákvæmlega sömu virkni, en líta öðruvísi út) +STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI :Virkja valmynd umferðarmerkja: {STRING} +STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI_HELPTEXT :Sýna glugga þar sem er hægt að velja á milli tegundar umferðarmerkja, í staðinn fyrir engan glugga og að þurfa að skipta á milli merkja með því að Ctrl+smella +STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE :Umferðarmerki sem eru sjálfgefin: {STRING} +STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE_HELPTEXT :Sjálfgefin umferðarmerki +STR_CONFIG_SETTING_DEFAULT_SIGNAL_NORMAL :Hefðbundin merki +STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBS :Leiðarmerki +STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBSOWAY :Einstefnu leiðarmerki +STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES :Skipta milli tegunda umferðarmerkja: {STRING} +STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES_HELPTEXT :Veldu tegund umferðarljósa sem á að skipta á milli með því að Ctrl+smella +STR_CONFIG_SETTING_CYCLE_SIGNAL_NORMAL :Aðeins hefðbundin merki +STR_CONFIG_SETTING_CYCLE_SIGNAL_PBS :Aðeins Leiðarmerki STR_CONFIG_SETTING_CYCLE_SIGNAL_ALL :Allt -STR_CONFIG_SETTING_TOWN_LAYOUT :Vegskipulag fyrir nýja bæji: {STRING} +STR_CONFIG_SETTING_TOWN_LAYOUT :Vegskipulag fyrir nýja bæi: {STRING} +STR_CONFIG_SETTING_TOWN_LAYOUT_HELPTEXT :Skipulag á vegakerfi í bæjum STR_CONFIG_SETTING_TOWN_LAYOUT_DEFAULT :sjálfgefið STR_CONFIG_SETTING_TOWN_LAYOUT_BETTER_ROADS :betri vegi STR_CONFIG_SETTING_TOWN_LAYOUT_2X2_GRID :2x2 net STR_CONFIG_SETTING_TOWN_LAYOUT_3X3_GRID :3x3 net STR_CONFIG_SETTING_TOWN_LAYOUT_RANDOM :slembið STR_CONFIG_SETTING_ALLOW_TOWN_ROADS :Bæir geta lagt vegi: {STRING} -STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :Heimila bæjum að byggja götu yfir lestarteina: {STRING} -STR_CONFIG_SETTING_NOISE_LEVEL :Leyfa stjórn á hljóðstyrk frá flugvöllum af bæjum: {STRING} +STR_CONFIG_SETTING_ALLOW_TOWN_ROADS_HELPTEXT :Leyfa bæjum að byggja vegi til að stækka. Slökkva á þessari stillingu til að koma í veg fyrir að bæjar yfirvöld geti byggt vegi sjálf +STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :Heimila bæjum að byggja vega/lestar gatnamót: {STRING} +STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS_HELPTEXT :Ef þessi stilling er virk geta bæir gert vegi yfir járnbrautarspor +STR_CONFIG_SETTING_NOISE_LEVEL :Láta hávaða frá flugvöllum stjórna hvort bæjir leyfi þá innan bæjarmarka: {STRING} +STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :Ef þessi stilling er óvirk þá geta verið tveir flugvellir í hverjum bæ. Ef hún er virk er fjöldi flugvalla í bæjum takmarkaður við hvað bæir þola mikinn hávaða, sem stýrist af fólksfjölda, stærð flugvallar og fjarlægð STR_CONFIG_SETTING_TOWN_FOUNDING :Stofna bæi í leik: {STRING} +STR_CONFIG_SETTING_TOWN_FOUNDING_HELPTEXT :Ef þessi stilling er virk geta leikmenn byggt nýja bæi í leiknum STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :bannað STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :leyft STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :Leyft, sérsniðið bæjarskipulag STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT :Staðsetning trjáa í leik: {STRING} +STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_HELPTEXT :Stjórnar hvernig tré birtast meðan á leiknum stendur. Þessi stilling getur haft áhrif á iðnað sem byggir á trjám, til dæmis timburverksmiðjur STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NONE :Engin {RED}(skemmir timburverksmiðjur) STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_RAINFOREST :aðeins í regnskógum STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_ALL :allstaðar STR_CONFIG_SETTING_TOOLBAR_POS :Staðsetning tækjasláar: {STRING} +STR_CONFIG_SETTING_TOOLBAR_POS_HELPTEXT :Lárétt staða aðal tækjasláar efst á skjánum +STR_CONFIG_SETTING_STATUSBAR_POS :Staðsetning stöðulínu: {STRING} +STR_CONFIG_SETTING_STATUSBAR_POS_HELPTEXT :Lárétt staða stöðulínu neðst á skjánum +STR_CONFIG_SETTING_SNAP_RADIUS :Smella radíus fyrir Windows: {STRING} +STR_CONFIG_SETTING_SNAP_RADIUS_HELPTEXT :Bil á milli glugga áður en gluggin sem verið er að færa smellur sjálfvirkt að næsta glugga +STR_CONFIG_SETTING_SNAP_RADIUS_VALUE :{COMMA} díl{P 0 l ar} +STR_CONFIG_SETTING_SNAP_RADIUS_DISABLED :Óvirkt STR_CONFIG_SETTING_SOFT_LIMIT :Hámarksfjöldi glugga (ófestra): {STRING} +STR_CONFIG_SETTING_SOFT_LIMIT_HELPTEXT :Fjöldi glugga, sem ekki eru fastir saman, sem geta verið opnir áður en gluggar fara að loka sjálfkrafa til að gera pláss fyrir nýja glugga +STR_CONFIG_SETTING_SOFT_LIMIT_VALUE :{COMMA} +STR_CONFIG_SETTING_SOFT_LIMIT_DISABLED :óvirkt +STR_CONFIG_SETTING_ZOOM_MIN :Hámarksaðdráttur: {STRING} +STR_CONFIG_SETTING_ZOOM_MIN_HELPTEXT :Hámarksaðdráttur í sjónarhornum. Athugið að með meiri aðdrátti aukast minnis kröfur á tölvuna +STR_CONFIG_SETTING_ZOOM_MAX :Hámark hvað er hægt að súma út: {STRING} +STR_CONFIG_SETTING_ZOOM_MAX_HELPTEXT :Hversu langt er hægt að súma frá sjónarhornum. Því hærri sem talan er því meiri líkur eru á töf í tölvunni +STR_CONFIG_SETTING_ZOOM_LVL_MIN :4x +STR_CONFIG_SETTING_ZOOM_LVL_IN_2X :2x +STR_CONFIG_SETTING_ZOOM_LVL_NORMAL :Venjulegt +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 :Vaxtarhraði bæja: {STRING} +STR_CONFIG_SETTING_TOWN_GROWTH_HELPTEXT :Hversu hratt bæir stækka STR_CONFIG_SETTING_TOWN_GROWTH_NONE :Enginn STR_CONFIG_SETTING_TOWN_GROWTH_SLOW :Hægur STR_CONFIG_SETTING_TOWN_GROWTH_NORMAL :Venjulegur STR_CONFIG_SETTING_TOWN_GROWTH_FAST :Hraður STR_CONFIG_SETTING_TOWN_GROWTH_VERY_FAST :Mjög hraður +STR_CONFIG_SETTING_LARGER_TOWNS :Hlutfall af bæjum sem verða borgir: {STRING} +STR_CONFIG_SETTING_LARGER_TOWNS_HELPTEXT :Bæir sem munu verða borgir, bæir sem eru stærri í byrjun og vaxa hraðar +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_MODIFIED_ROAD_REBUILD :Fjarlægja fráleita vegahluti þegar vegagerð stendur yfir: {STRING} +STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Meðalstærð borga miðað við bæi, við upphaf leiks + + + -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}Lestaljós og -merki -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ðuð +STR_CONFIG_SETTING_PATHFINDER_OPF :Upprunalegt STR_CONFIG_SETTING_PATHFINDER_NPF :NPF STR_CONFIG_SETTING_PATHFINDER_YAPF_RECOMMENDED :YAPF {BLUE}(Ráðlegt) -STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Leiðsagnarkerfi lesta: {STRING} +STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Leiðsögukerfi lesta: {STRING} +STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Leiðsögukerfi sem nota á fyrir lestir STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :Leiðsögukerfi bifreiða: {STRING} +STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES_HELPTEXT :Leiðsögukerfi sem nota á fyrir bíla og sporvagna STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS :Leiðsögukerfi skipa: {STRING} +STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT :Leiðsögukerfi sem nota á fyrir skip +STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :Snúa járnbrautarlestum sjálfkrafa við á umferðarmerkjum: {STRING} +STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT :Leyfa járnbrautarlestum að snúa við á umferðarmerkjum ef þau hafa beðið þar í langan tíma STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}Breyta gildi stillingar # Config errors -STR_CONFIG_ERROR_INVALID_BASE_GRAPHICS_NOT_FOUND :{WHITE}... sleppi grunngrafík '{STRING}': finnst ekki -STR_CONFIG_ERROR_INVALID_BASE_SOUNDS_NOT_FOUND :{WHITE}... sleppi grunn hljóðsafni '{STRING}': finnst ekki -STR_CONFIG_ERROR_INVALID_BASE_MUSIC_NOT_FOUND :{WHITE}... sleppi grunn tónlistarsafni '{STRING}': finnst ekki +STR_CONFIG_ERROR :{WHITE}Villa kom upp við stillingar skrána... +STR_CONFIG_ERROR_ARRAY :{WHITE}... villa í fylki '{STRING}' +STR_CONFIG_ERROR_INVALID_VALUE :{WHITE}... rangt gildi '{STRING}' fyrir '{STRING}' +STR_CONFIG_ERROR_TRAILING_CHARACTERS :{WHITE}... auka stafir í enda stillingu '{STRING}' +STR_CONFIG_ERROR_DUPLICATE_GRFID :{WHITE}... sleppi NewGRF '{STRING}': eins GRF ID með '{STRING}' +STR_CONFIG_ERROR_INVALID_GRF :{WHITE}... sleppi biluðu NewGRF '{STRING}': {STRING} +STR_CONFIG_ERROR_INVALID_GRF_NOT_FOUND :finnst ekki +STR_CONFIG_ERROR_INVALID_GRF_UNSAFE :óöruggt vegna fasta notkunnar +STR_CONFIG_ERROR_INVALID_GRF_SYSTEM :kerfis NewGRF +STR_CONFIG_ERROR_INVALID_GRF_INCOMPATIBLE :ósamhæft þessari útgáfu af OpenTTD +STR_CONFIG_ERROR_INVALID_GRF_UNKNOWN :óþekkt +STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_LEVEL :{WHITE}... þjöppunarstyrkur '{STRING}' er ekki leyfður +STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_ALGORITHM :{WHITE}... vistunarsnið '{STRING}' er ekki aðgengilegt. Breyti í '{STRING}' +STR_CONFIG_ERROR_INVALID_BASE_GRAPHICS_NOT_FOUND :{WHITE}... sleppi grunngrafík, '{STRING}' finnst ekki +STR_CONFIG_ERROR_INVALID_BASE_SOUNDS_NOT_FOUND :{WHITE}... sleppi grunn hljóðsafni, '{STRING}' finnst ekki +STR_CONFIG_ERROR_INVALID_BASE_MUSIC_NOT_FOUND :{WHITE}... sleppi grunn tónlistarsafni, '{STRING}' finnst ekki +STR_CONFIG_ERROR_OUT_OF_MEMORY :{WHITE}Minnið í tölvunni nægir ekki +STR_CONFIG_ERROR_SPRITECACHE_TOO_BIG :{WHITE}Úthlutuðum {BYTES} af skyndiminni fyrir hreyfimyndir mistókst. Skyndiminnið vegna hreyfimynda var minnkað í {BYTES}. Þetta mun minnka reiknigetu OpenTTD. Til minnka minniskröfur getur þú reynt að óvikrja 32bpp grafíkina og/eða minnkað leyfilegt súm # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} @@ -1392,9 +1606,10 @@ STR_INTRO_HIGHSCORE :{BLACK}Stigataf 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 STR_INTRO_QUIT :{BLACK}Hætta -STR_INTRO_TOOLTIP_NEW_GAME :{BLACK}Hefja nýjan leik. Ctrl+Click sleppir kortastillingum +STR_INTRO_TOOLTIP_NEW_GAME :{BLACK}Hefja nýjan leik. Ctrl+smella sleppir kortastillingum STR_INTRO_TOOLTIP_LOAD_GAME :{BLACK}Opna vistaðan leik STR_INTRO_TOOLTIP_PLAY_HEIGHTMAP :{BLACK}Hefja nýjan leik byggðan á hæðakorti STR_INTRO_TOOLTIP_PLAY_SCENARIO :{BLACK}Hefja nýjan leik í sérvöldu korti @@ -1411,8 +1626,10 @@ STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Birta st 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 STR_INTRO_TOOLTIP_QUIT :{BLACK}Hætta í OpenTTD +STR_INTRO_TRANSLATION :{BLACK}Það vantar {NUM} þýðing{P u ar} í þetta tungumál. Vinsamlegast hjálpaðu við að gera OpenTTD betra með því að skrá þig sem þýðanda. Nánari upplýsingar í readme.txt. # Quit window STR_QUIT_CAPTION :{WHITE}Hætta @@ -1440,7 +1657,7 @@ STR_ABANDON_SCENARIO_QUERY :{YELLOW}Ertu vi # Cheat window STR_CHEATS :{WHITE}Svindl STR_CHEATS_TOOLTIP :{BLACK}Valreitur segir til um ef þú hefur notað þetta svindl áður -STR_CHEATS_WARNING :{BLACK}Aðvörun! Þú ert í þann mund að svíkja keppinauta þína. Hafðu í huga að þess lags svívirðing mun ætíð höfð í minnum. +STR_CHEATS_WARNING :{BLACK}Aðvörun! Þú ert í þann mund að svíkja keppinauta þína. Hafðu í huga að þess lags svívirðing mun ætíð höfð í minnum STR_CHEAT_MONEY :{LTBLUE}Auka pening um {CURRENCY_LONG} STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Spila sem fyrirtæki: {ORANGE}{COMMA} STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Töfrajarðýta (eyðir iðnaði, óeyðanlegum hlutum): {ORANGE}{STRING} @@ -1451,6 +1668,7 @@ STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :Heimskautalands STR_CHEAT_SWITCH_CLIMATE_SUB_TROPICAL_LANDSCAPE :Miðjarðarlandslag STR_CHEAT_SWITCH_CLIMATE_TOYLAND_LANDSCAPE :Leikfangalandslag STR_CHEAT_CHANGE_DATE :{LTBLUE}Breyta dagsetningu: {ORANGE} {DATE_SHORT} +STR_CHEAT_CHANGE_DATE_QUERY_CAPT :{WHITE}Breyta um ár STR_CHEAT_SETUP_PROD :{LTBLUE}Leyfa breytingar á verðmæti framleiðslu: {ORANGE}{STRING} # Livery window @@ -1461,15 +1679,15 @@ STR_LIVERY_TRAIN_TOOLTIP :{BLACK}Litaskem STR_LIVERY_ROAD_VEHICLE_TOOLTIP :{BLACK}Litaskema bifreiða STR_LIVERY_SHIP_TOOLTIP :{BLACK}Litaskema skipa STR_LIVERY_AIRCRAFT_TOOLTIP :{BLACK}Litaskema flugvéla -STR_LIVERY_PRIMARY_TOOLTIP :{BLACK}Veldu lit fyrir valda hluti á listanum -STR_LIVERY_SECONDARY_TOOLTIP :{BLACK}Veldu seinni lit fyrir valda hluti á listanum +STR_LIVERY_PRIMARY_TOOLTIP :{BLACK}Veldu aðallitinn fyrir valda hluti á listanum. Ctrl+Smella setur þennan lit fyrir alla hluti +STR_LIVERY_SECONDARY_TOOLTIP :{BLACK}Veldu seinni lit fyrir valda hluti á listanum. Ctrl+Smella setur þennan lit á alla hluti á listanum STR_LIVERY_PANEL_TOOLTIP :{BLACK}Veldu hluti til að breyta lit á, CTRL-smelltu til að velja marga saman. Smelltu í reitinn til að virkja valinn lit. STR_LIVERY_DEFAULT :Aðal litaskema STR_LIVERY_STEAM :Gufuvagnar STR_LIVERY_DIESEL :Díselvagnar STR_LIVERY_ELECTRIC :Rafmagnsvagnar -STR_LIVERY_MONORAIL :Einteingungsvagnar +STR_LIVERY_MONORAIL :Einteinungar STR_LIVERY_MAGLEV :Segulsvifvagnar STR_LIVERY_DMU :Fjölvagna dísellest STR_LIVERY_EMU :Fjölvagna rafmagnslest @@ -1493,6 +1711,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 @@ -1501,17 +1720,17 @@ STR_FACE_FEMALE_TOOLTIP :{BLACK}Velja kv STR_FACE_NEW_FACE_BUTTON :{BLACK}Nýtt Andlit STR_FACE_NEW_FACE_TOOLTIP :{BLACK}Mynda andlit af handahófi STR_FACE_ADVANCED :{BLACK}Ítarlegt -STR_FACE_ADVANCED_TOOLTIP :{BLACK}Ítarleg breyting andlits +STR_FACE_ADVANCED_TOOLTIP :{BLACK}Ítarleg breyting á andlitinu STR_FACE_SIMPLE :{BLACK}Einfalt -STR_FACE_SIMPLE_TOOLTIP :{BLACK}Einföld breyting andlits +STR_FACE_SIMPLE_TOOLTIP :{BLACK}Einföld breyting á andlitinu STR_FACE_LOAD :{BLACK}Hlaða STR_FACE_LOAD_TOOLTIP :{BLACK}Hlaða uppáhalds andliti STR_FACE_LOAD_DONE :{WHITE}Þitt uppáhalds andlit hefur verið sótt úr OpenTTD stilliskrá STR_FACE_FACECODE :{BLACK}Andlit nr. -STR_FACE_FACECODE_TOOLTIP :{BLACK}Skoða og/eða stilla andlitsnúmer -STR_FACE_FACECODE_CAPTION :{WHITE}Skoða og/eða stilla andlitsnúmer -STR_FACE_FACECODE_SET :{WHITE}Nýtt andlitsnúmer hefur verið stillt. -STR_FACE_FACECODE_ERR :{WHITE}Gat ekki stillt andlitsnúmer - verður að vera tala á bilinu 0 og upp í 4.294.967.295! +STR_FACE_FACECODE_TOOLTIP :{BLACK}Skoða og/eða stilla andlitsnúmer á forstjóra fyrirtækisins +STR_FACE_FACECODE_CAPTION :{WHITE}Skoða og/eða stilla andlitsnúmer forstjóra +STR_FACE_FACECODE_SET :{WHITE}Nýtt andlitsnúmer hefur verið stillt +STR_FACE_FACECODE_ERR :{WHITE}Gat ekki stillt andlitsnúmer forstjóra - verður að vera tala á bilinu 0 og upp í 4.294.967.295! STR_FACE_SAVE :{BLACK}Vista STR_FACE_SAVE_TOOLTIP :{BLACK}Vista uppáhalds andlit STR_FACE_SAVE_DONE :{WHITE}Þetta andlit mun verða vistað sem þitt uppahald í OpenTTD stilliskrá @@ -1548,10 +1767,6 @@ STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}Breyta b # Network server list STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}Fjölspilun -STR_NETWORK_SERVER_LIST_CONNECTION :{BLACK}Tenging: -STR_NETWORK_SERVER_LIST_CONNECTION_TOOLTIP :{BLACK}Veldu milli internetleiks eða staðarnetleiks -STR_NETWORK_SERVER_LIST_LAN :Staðarnet -STR_NETWORK_SERVER_LIST_INTERNET :Internet STR_NETWORK_SERVER_LIST_PLAYER_NAME :{BLACK}Nafn leikmanns: STR_NETWORK_SERVER_LIST_ENTER_NAME_TOOLTIP :{BLACK}Þetta er nafnið sem aðrir leikmenn munu þekkja þig undir @@ -1595,7 +1810,7 @@ STR_NETWORK_SERVER_LIST_REFRESH_TOOLTIP :{BLACK}Endurný STR_NETWORK_SERVER_LIST_FIND_SERVER :{BLACK}Finna þjón STR_NETWORK_SERVER_LIST_FIND_SERVER_TOOLTIP :{BLACK}Leita að þjónum á neti STR_NETWORK_SERVER_LIST_ADD_SERVER :{BLACK}Bæta við þjóni -STR_NETWORK_SERVER_LIST_ADD_SERVER_TOOLTIP :{BLACK}Bætir þjóni við listann sem mun alltaf sýna leiki í spilun +STR_NETWORK_SERVER_LIST_ADD_SERVER_TOOLTIP :{BLACK}Bætir þjóni við listann, hann mun alltaf vera athugaður þegar leitað er eftir leikjum í gangi STR_NETWORK_SERVER_LIST_START_SERVER :{BLACK}Hefja þjón STR_NETWORK_SERVER_LIST_START_SERVER_TOOLTIP :{BLACK}Hefja eigin þjón @@ -1610,8 +1825,6 @@ STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP :{BLACK}Nafn lei STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}Veldu lykilorð STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Verndaðu leikinn þinn með lykilorði ef þú vilt ekki að óboðnir tengist honum -STR_NETWORK_START_SERVER_LAN_INTERNET :Staðarnet / Internet -STR_NETWORK_START_SERVER_INTERNET_ADVERTISE :Internet (auglýsa) STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} biðlar{P i ar} STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Hámarksfjöldi notenda: STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}Veldu hámarksfjölda notenda. Ekki þarf að fylla öll pláss @@ -1695,17 +1908,18 @@ STR_NETWORK_GAME_LOBBY_JOIN_COMPANY_TOOLTIP :{BLACK}Hjálpa STR_NETWORK_CONNECTING_CAPTION :{WHITE}Tengist... ############ Leave those lines in this order!! -STR_NETWORK_CONNECTING_1 :{BLACK}(1/6) Tengist.. -STR_NETWORK_CONNECTING_2 :{BLACK}(2/6) Staðfesti.. -STR_NETWORK_CONNECTING_3 :{BLACK}(3/6) Bíð.. -STR_NETWORK_CONNECTING_4 :{BLACK}(4/6) Hala niður korti.. -STR_NETWORK_CONNECTING_5 :{BLACK}(5/6) Vinn úr gögnum.. -STR_NETWORK_CONNECTING_6 :{BLACK}(6/6) Skrái.. - -STR_NETWORK_CONNECTING_SPECIAL_1 :{BLACK}Næ í upplýsingar um leik.. -STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}Næ í upplýsingar um fyrirtæki.. +STR_NETWORK_CONNECTING_1 :{BLACK}(1/6) Tengist... +STR_NETWORK_CONNECTING_2 :{BLACK}(2/6) Staðfesti... +STR_NETWORK_CONNECTING_3 :{BLACK}(3/6) Bíð... +STR_NETWORK_CONNECTING_4 :{BLACK}(4/6) Hala niður korti... +STR_NETWORK_CONNECTING_5 :{BLACK}(5/6) Vinn úr gögnum... +STR_NETWORK_CONNECTING_6 :{BLACK}(6/6) Skrái... + +STR_NETWORK_CONNECTING_SPECIAL_1 :{BLACK}Næ í upplýsingar um leik... +STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}Næ í upplýsingar um fyrirtæki... ############ End of leave-in-this-order -STR_NETWORK_CONNECTING_WAITING :{BLACK}{NUM} þjónar fyrir framan þig +STR_NETWORK_CONNECTING_WAITING :{BLACK}{NUM} þjón{P n ar} fyrir framan þig +STR_NETWORK_CONNECTING_DOWNLOADING_1 :{BLACK}{BYTES} hefur verið niðurhalað STR_NETWORK_CONNECTING_DOWNLOADING_2 :{BLACK}{BYTES} / {BYTES} niðurhöluð hingaðtil STR_NETWORK_CONNECTION_DISCONNECT :{BLACK}Aftengjast @@ -1731,6 +1945,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ð @@ -1778,6 +1993,10 @@ STR_NETWORK_ERROR_SERVER_BANNED :{WHITE}Þú ert STR_NETWORK_ERROR_KICKED :{WHITE}Þér var hent út úr leiknum STR_NETWORK_ERROR_CHEATER :{WHITE}Svindl er ekki leyft á þessum þjóni STR_NETWORK_ERROR_TOO_MANY_COMMANDS :{WHITE}Þú ert að senda of margar skipanir á vefþjóninn +STR_NETWORK_ERROR_TIMEOUT_PASSWORD :{WHITE}Þú varst oft lengi að setja inn lykilorð +STR_NETWORK_ERROR_TIMEOUT_COMPUTER :{WHITE}Tölvan þín er of hæg til að halda í við netþjóninn +STR_NETWORK_ERROR_TIMEOUT_MAP :{WHITE}Tölvan þín var of lengi að sækja kortið +STR_NETWORK_ERROR_TIMEOUT_JOIN :{WHITE}Tölvan þín var of lengi að tengjast netþjóninum ############ Leave those lines in this order!! STR_NETWORK_ERROR_CLIENT_GENERAL :almenn villa @@ -1796,8 +2015,14 @@ STR_NETWORK_ERROR_CLIENT_KICKED :hent út af þj STR_NETWORK_ERROR_CLIENT_CHEATER :reyndi að svindla STR_NETWORK_ERROR_CLIENT_SERVER_FULL :vefþjónn fullur STR_NETWORK_ERROR_CLIENT_TOO_MANY_COMMANDS :var að senda of margar skipanir +STR_NETWORK_ERROR_CLIENT_TIMEOUT_PASSWORD :fékk ekkert lykilorð +STR_NETWORK_ERROR_CLIENT_TIMEOUT_COMPUTER :almenn tímamörk +STR_NETWORK_ERROR_CLIENT_TIMEOUT_MAP :að niðurhala kortinu tók of langan tíma +STR_NETWORK_ERROR_CLIENT_TIMEOUT_JOIN :úrvinnsla kortsins tók of langan tíma ############ End of leave-in-this-order +STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION_CAPTION :{WHITE}Hefur líklega misst sambandið +STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION :{WHITE}Síðustu {NUM} sekúndu{P "" r} hafa engin gögn borist frá þjóninum # Network related errors STR_NETWORK_SERVER_MESSAGE :*** {1:STRING} @@ -1806,10 +2031,12 @@ STR_NETWORK_SERVER_MESSAGE_GAME_PAUSED :Leikur í pásu STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_1 :Leikur enn í pásu ({STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_2 :Leikur enn í pásu ({STRING}, {STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_3 :Leikur enn í pásu ({STRING}, {STRING}, {STRING}) +STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_4 :Leikurinn er enn stöðvaður ({STRING}, {STRING}, {STRING}, {STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_UNPAUSED :Leikur heldur áfram ({STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_REASON_NOT_ENOUGH_PLAYERS :fjöldi leikmanna STR_NETWORK_SERVER_MESSAGE_GAME_REASON_CONNECTING_CLIENTS :tengdir notendur STR_NETWORK_SERVER_MESSAGE_GAME_REASON_MANUAL :Forvaldar +STR_NETWORK_SERVER_MESSAGE_GAME_REASON_GAME_SCRIPT :forskrift ############ End of leave-in-this-order STR_NETWORK_MESSAGE_CLIENT_LEAVING :yfirgefur STR_NETWORK_MESSAGE_CLIENT_JOINED :*** {STRING} tengdist leiknum @@ -1837,7 +2064,13 @@ STR_CONTENT_SELECT_UPDATES_CAPTION :{BLACK}Velja up STR_CONTENT_SELECT_UPDATES_CAPTION_TOOLTIP :{BLACK}Velja til niðurhals allar uppfærslur fyrir pakka sem nú þegar hefur verið náð í STR_CONTENT_UNSELECT_ALL_CAPTION :{BLACK}Af-velja allt STR_CONTENT_UNSELECT_ALL_CAPTION_TOOLTIP :{BLACK}Afvelja allt frá niðurhali +STR_CONTENT_SEARCH_EXTERNAL :{BLACK}Leita á utanaðkomandi vefsíðum +STR_CONTENT_SEARCH_EXTERNAL_TOOLTIP :{BLACK}Leita eftir efni sem ekki er fáanlegt á OpenTTD efnisveitunni, á vefsíðum sem ekki eru hluti af OpenTTD +STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER_CAPTION :{WHITE}Þú ert að fara úr OpenTTD! +STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER :{WHITE}Skilyrði og skilmálar til að sækja efni frá utanaðkomandi vefsíðum eru mismunandi.{}Þú verður að fara eftir upplýsingum frá þeim vefsíðum um hvernig setja á inn efni í OpenTTD.{}Viltu halda áfram? STR_CONTENT_FILTER_TITLE :{BLACK}Leitarstrengur: +STR_CONTENT_OPEN_URL :{BLACK}Skoða vefsíðu +STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}Kíktu á vefsíðu tengda þessu efni STR_CONTENT_DOWNLOAD_CAPTION :{BLACK}Niðurhala STR_CONTENT_DOWNLOAD_CAPTION_TOOLTIP :{BLACK}Hefja niðurhal á völdum pökkum STR_CONTENT_TOTAL_DOWNLOAD_SIZE :{SILVER}Stærð niðurhals: {WHITE}{BYTES} @@ -1869,6 +2102,8 @@ STR_CONTENT_TYPE_SCENARIO :Kort STR_CONTENT_TYPE_HEIGHTMAP :Hæðakort STR_CONTENT_TYPE_BASE_SOUNDS :Venjuleg hljóð STR_CONTENT_TYPE_BASE_MUSIC :Venjuleg tónlist +STR_CONTENT_TYPE_GAME_SCRIPT :Forskrift +STR_CONTENT_TYPE_GS_LIBRARY :Safn forskrifta # Content downloading progress window STR_CONTENT_DOWNLOAD_TITLE :{WHITE}Hel niður efni... @@ -1884,20 +2119,28 @@ STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD_CONNECTION_LOST :{WHITE}... teng STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD_FILE_NOT_WRITABLE :{WHITE}... skráin er ekki skrifanleg STR_CONTENT_ERROR_COULD_NOT_EXTRACT :{WHITE}Gat ekki afþjappað niðurhöluðu skránni +STR_MISSING_GRAPHICS_SET_CAPTION :{WHITE}Vantar grafík +STR_MISSING_GRAPHICS_SET_MESSAGE :{BLACK}OpenTTD þarf á grafík til að virka en engin fannst. Leyfir þú OpenTTD að sækja og setja upp grafíkina? +STR_MISSING_GRAPHICS_YES_DOWNLOAD :{BLACK}Já, sækja grafík +STR_MISSING_GRAPHICS_NO_QUIT :{BLACK}Nei, hætta í OpenTTD # Transparency settings window STR_TRANSPARENCY_CAPTION :{WHITE}Stilling gegnsæjis -STR_TRANSPARENT_SIGNS_TOOLTIP :{BLACK}Virkja/afvirkja gegnsæji stöðvaskiltia. CTRL+smella til að læsa. -STR_TRANSPARENT_TREES_TOOLTIP :{BLACK}Virkja/afvirkja gegnsæji trjáa. CTRL+smella til að læsa. +STR_TRANSPARENT_SIGNS_TOOLTIP :{BLACK}Virkja/afvirkja gegnsæji skilta. CTRL+smella til að læsa. +STR_TRANSPARENT_TREES_TOOLTIP :{BLACK}Virkja/afvirkja gegnsæji trjáa. Ctrl+smella til að læsa. STR_TRANSPARENT_HOUSES_TOOLTIP :{BLACK}Virkja/afvirkja gegnsæji húsa. CTRL+smella til að læsa. -STR_TRANSPARENT_INDUSTRIES_TOOLTIP :{BLACK}Virkja/afvirkja gegnsæji iðnaða. CTRL+smella til að læsa. -STR_TRANSPARENT_BUILDINGS_TOOLTIP :{BLACK}Virkja/afvirkja gegnsæji bygginga á borð við stöðvar, skýli og veghlið. CTRL+smella til að læsa. -STR_TRANSPARENT_BRIDGES_TOOLTIP :{BLACK}Virkja/afvirkja gegnsæji brúa. CTRL+smella til að læsa. -STR_TRANSPARENT_STRUCTURES_TOOLTIP :{BLACK}Virkja/afvirkja gegnsæji bygginga á borð við vita og möstur. CTRL+smella til að læsa. +STR_TRANSPARENT_INDUSTRIES_TOOLTIP :{BLACK}Virkja/afvirkja gegnsæji iðnaða. Ctrl+smella til að læsa +STR_TRANSPARENT_BUILDINGS_TOOLTIP :{BLACK}Virkja/afvirkja gegnsæji bygginga á borð við stöðvar, skýli og veghlið. CTRL+smella til að læsa +STR_TRANSPARENT_BRIDGES_TOOLTIP :{BLACK}Virkja/afvirkja gegnsæji brúa. Ctrl+smella til að læsa +STR_TRANSPARENT_STRUCTURES_TOOLTIP :{BLACK}Virkja/afvirkja gegnsæji bygginga á borð við vita og möstur. Ctrl+smella til að læsa STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}Virkja/afvirkja gegnsæji raflína. CTRL+smella til að læsa. -STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Virkja/afvirkja gegnsæji hleðslumæla. CTRL+smella til að læsa. +STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Virkja/afvirkja gegnsæji hleðslumæla. Ctrl+smella til að læsa STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}Gera hluti ósýnilega en ekki gagnsæja +# Linkgraph legend window + +# Linkgraph legend window and linkgraph legend in smallmap + # Base for station construction window(s) STR_STATION_BUILD_COVERAGE_AREA_TITLE :{BLACK}Svæði sem tilheyrir stöð STR_STATION_BUILD_COVERAGE_OFF :{BLACK}Fela @@ -1915,22 +2158,26 @@ STR_JOIN_WAYPOINT_CAPTION :{WHITE}Tengja m STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Reisa aðra millistöð # Rail construction toolbar -STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Járnbrautarlestarframkvæmdir +STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Járnbrautarspors framkvæmdir STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :Raflestaframkvæmdir STR_RAIL_TOOLBAR_MONORAIL_CONSTRUCTION_CAPTION :Einteinungsframkvæmdir -STR_RAIL_TOOLBAR_MAGLEV_CONSTRUCTION_CAPTION :Maglev framkvæmdir - -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Leggja lestarteina. Ctrl velur byggja/fjarlægja fyrir lestarframkvæmdir -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}Leggja lestarteina í Sjálvirkiteina ham. Ctrl velur byggja/farjlæga fyrir lestarframkvæmdir -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}Byggja lestarskýli (til að byggja og þjónusta lestar) -STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}Breyta teini í lestarhlið. Ctrl leyfir samteningu lestarhliða. -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_STATION :{BLACK}Byggja lestarstöð. Ctrl leyfir samtengingu stöðva. -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Byggja lestarljós. Ctrl velur hreyfiskilti/ljósamerki{} Dragðu til að bygga ljós eftir beinni lestarlínu{}Ctrl+Smella opnar/lokar lestarljósa glugganum -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_BRIDGE :{BLACK}Byggja lestarbrú -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TUNNEL :{BLACK}Byggja lestargöng -STR_RAIL_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Skipta á milli byggja/fjarlægja lestarteina, lestarljós, leiðarsteina og lestarstöðvar. Haltu Ctrl inni til að líka fjarlægja lestarteina úr leiðarsteinum og lestarstöðvum -STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL :{BLACK}Breyta/uppfæra gerð lestarteins - +STR_RAIL_TOOLBAR_MAGLEV_CONSTRUCTION_CAPTION :Segulsvifvagna framkvæmdir + +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Leggja járnbrautarspor. Ctrl velur byggja/fjarlægja fyrir járnbrautar framkvæmdir. Shift sýnir áætlaðan kostnað +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}Leggja járnbrautarspor, stefna sporsins er sjálfvirk. Ctrl til að eyða járnbrautarspori. Shift sýnir áætlaðan kostnað +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}Byggja lestarskýli (til að byggja og þjónusta lestar). Shift sýnir áætlaðan kostnað +STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}Breyta spori í vegvísi. Ctrl leyfir samteingingu vegvísa. Shift sýnir áætlaðan kostnað +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_STATION :{BLACK}Byggja lestarstöð. Ctrl leyfir samtengingu stöðva. Shift sýnir áætlaðan kostnað +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Leggja járnbrautar umferðarmerki. Ctrl velur hreyfimerki/ljósamerki{}Dragðu til að leggja umferðarmerki eftir beinu járnbrautarspori{}Ctrl+smella opnar/lokar umferðarmerkja glugganum. Shift sýnir áætlaðan kostnað +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_BRIDGE :{BLACK}Byggja lestarbrú. Shift sýnir áætlaðan kostnað +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TUNNEL :{BLACK}Byggja lestargöng. Shift sýnir áætlaðan kostnað +STR_RAIL_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Skipta á milli byggja/fjarlægja járnbrautarspor, umferðarmerki, vegvísi og járnbrautarstöðva. Haltu Ctrl inni til að fjarlægja spor af vegvísum og stöðvum +STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL :{BLACK}Breyta/uppfæra gerð spors. Shift sýnir áætlaðan kostnað + +STR_RAIL_NAME_RAILROAD :Járnbrautarspor +STR_RAIL_NAME_ELRAIL :Rafmagns járnbrautarspor +STR_RAIL_NAME_MONORAIL :Einteinaspor +STR_RAIL_NAME_MAGLEV :Segulsvifvagnaspor # Rail depot construction window STR_BUILD_DEPOT_TRAIN_ORIENTATION_CAPTION :{WHITE}Lega lestarskýlis @@ -1958,29 +2205,30 @@ STR_STATION_CLASS_DFLT :Sjálfgefin st STR_STATION_CLASS_WAYP :Millistöð # Signal window -STR_BUILD_SIGNAL_CAPTION :{WHITE}Lestaljós -STR_BUILD_SIGNAL_SEMAPHORE_NORM_TOOLTIP :{BLACK}Hefðbundin merki{}Merki eru nauðsynleg til að koma í veg fyrir að lestir lendi í árekstri. -STR_BUILD_SIGNAL_SEMAPHORE_ENTRY_TOOLTIP :{BLACK}Komumerki{}Hleypir í gegn uns ekkert frámerki er eftir opið. -STR_BUILD_SIGNAL_SEMAPHORE_EXIT_TOOLTIP :{BLACK}Frámerki{}Virkar eins og hefðbundið merki en er nauðsynlegt til að fá rétta virkni fyrir komu- og fjölmerki. -STR_BUILD_SIGNAL_SEMAPHORE_COMBO_TOOLTIP :{BLACK}Tvívirk-ljós (hangandi){}Tvívirku ljósin einfaldlega virka bæði sem inn og út ljós. Þetta leyfir þér að byggja stór "tré" af for-ljósum. -STR_BUILD_SIGNAL_SEMAPHORE_PBS_TOOLTIP :{BLACK}Leiðarmerki (skilti){}Leiðarmerki gera fleiri en einni lest í einu kleift að keyra inn á svæði án umferðarmerkja ef þær finna örugga leið út af því aftur. Lestir geta farið framhjá venjulegum skiltum aftanfrá. -STR_BUILD_SIGNAL_SEMAPHORE_PBS_OWAY_TOOLTIP :{BLACK}Einstefnuleiðarmerki (skilti){}Leiðarmerki gera fleiri en einni lest í einu kleift að keyra inn á svæði án umferðarmerkja ef þær finna örugga leið út af því aftur. Lestir geta ekki farið framhjá einstefnuskiltum aftanfrá. -STR_BUILD_SIGNAL_ELECTRIC_NORM_TOOLTIP :{BLACK}Hefðbundin ljós{}Ljós eru nauðsynleg til að koma í veg fyrir að lestir lendi í árekstri. -STR_BUILD_SIGNAL_ELECTRIC_ENTRY_TOOLTIP :{BLACK}Komuljós{}Hleypir í gegn uns ekkert fráljós er lengur grænt. -STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}Fráljós{}Virkar eins og hefðbundið ljós en er naðusynlegt til að fá rétta virkni fyrir komu- og fjölljós. -STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}Tvívirk-ljós (electric){}Tvívirku ljósin einfaldlega virka bæði sem inn og út ljós. Þetta leyfir þér að byggja stór "tré" af for-ljósum. -STR_BUILD_SIGNAL_ELECTRIC_PBS_TOOLTIP :{BLACK}Leiðarmerki (ljós){}Leiðarmerki gera fleiri en einni lest í einu kleift að keyra inn á svæði án umferðarmerkja ef þær finna örugga leið út af því aftur. Lestir geta farið framhjá venjulegum skiltum aftanfrá. -STR_BUILD_SIGNAL_ELECTRIC_PBS_OWAY_TOOLTIP :{BLACK}Einstefnuleiðarmerki (ljós){}Leiðarmerki gera fleiri en einni lest í einu kleift að keyra inn á svæði án umferðarmerkja ef þær finna örugga leið út af því aftur. Lestir geta ekki farið framhjá einstefnuskiltum aftanfrá. -STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}Breyting ljósa{}Þegar valið þá breytist merki sem til er fyrir í valda gerð og tegund. CTRL-smellur mun rúlla í gegnum núverandi tegund. -STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_TOOLTIP :{BLACK}Þéttleiki dreginna ljósa -STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_DECREASE_TOOLTIP :{BLACK}Minnka þéttleika dreginna ljósa -STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_INCREASE_TOOLTIP :{BLACK}Auka þéttleika dreginna ljósa +STR_BUILD_SIGNAL_CAPTION :{WHITE}Umferðarmerki +STR_BUILD_SIGNAL_SEMAPHORE_NORM_TOOLTIP :{BLACK}Hefðbundin merki (hreyfimerki){}Þetta er einfaldasta tegund merkja, bara ein lest getur verið á sama svæði hverju sinni +STR_BUILD_SIGNAL_SEMAPHORE_ENTRY_TOOLTIP :{BLACK}Komumerki(hreyfimerki){}Grænt svo lengi sem eitt eða fleiri græn frámerki koma á eftir. Annars sýnir það rautt +STR_BUILD_SIGNAL_SEMAPHORE_EXIT_TOOLTIP :{BLACK}Frámerki (hreyfimerki){}Virkar eins og hefðbundið merki en er nauðsynlegt til að fá réttan lit á komu- og tvívirk for-merki +STR_BUILD_SIGNAL_SEMAPHORE_COMBO_TOOLTIP :{BLACK}Tvívirk merki (hreyfimerki){}Tvívirku merkin virka einfaldlega bæði sem inn og út merki. Þetta leyfir þér að byggja stór "tré" af for-merkjum +STR_BUILD_SIGNAL_SEMAPHORE_PBS_TOOLTIP :{BLACK}Leiðarmerki (hreyfimerki){}Leiðarmerki gera fleiri en einni lest í einu kleift að keyra inn á sama umferðarsvæðið á sama tíma ef þær finna örugga leið út úr því aftur. Lestir geta farið framhjá venjulegum merkjum aftanfrá +STR_BUILD_SIGNAL_SEMAPHORE_PBS_OWAY_TOOLTIP :{BLACK}Einstefnumerki (hreyfimerki){}Leiðarmerki gera fleiri en einni lest í einu kleift að keyra inn á sama umferðarsvæðið á sama tíma ef þær finna örugga leið út úr því aftur. Lestir geta ekki farið framhjá venjulegum merkjum aftanfrá +STR_BUILD_SIGNAL_ELECTRIC_NORM_TOOLTIP :{BLACK}Hefðbundin merki (ljósamerki){}Þetta er einfaldasta tegund merkja, bara ein lest getur verið á sama svæði hverju sinni +STR_BUILD_SIGNAL_ELECTRIC_ENTRY_TOOLTIP :{BLACK}Komumerki (ljósamerki){}Græn eins lengi og eitt eða fleiri frámerki sem á eftir koma eru græn. Annars sýnir það rautt +STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}Frámerki (ljósamerki){}Virkar eins og hefðbundið merki en er nauðsynlegt til að fá rétta virkni fyrir komu- og tvívirk for-merki +STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}Tvívirk merki (ljósamerki){}Tvívirku merkin virka einfaldlega sem bæði inn og út merki. Þetta leyfir þér að byggja stór "tré" af for-ljósum +STR_BUILD_SIGNAL_ELECTRIC_PBS_TOOLTIP :{BLACK}Leiðarljós (lestaljós){}Leiðarmerki gera fleiri en einni lest í einu kleift að keyra inn á sama umferðarsvæðið á sama tíma ef þær finna örugga leið út úr því aftur. Lestir geta farið framhjá venjulegum merkjum aftanfrá +STR_BUILD_SIGNAL_ELECTRIC_PBS_OWAY_TOOLTIP :{BLACK}Einstefnumerki (ljósamerki){}Leiðarmerki gera fleiri en einni lest í einu kleift að keyra inn á sama umferðarsvæðið á sama tíma ef þær finna örugga leið út úr því aftur. Lestir geta ekki farið framhjá venjulegum merkjum aftanfrá +STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}Breyta merkjum{}Þegar þetta er valið þá breytist umferðarmerkið sem fyrir er í valda gerð og tegund. Ctrl-smella mun rúlla í gegnum merkin. Shift-smella sýnir áætlaðan kostnað við að skipta um skilti +STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_TOOLTIP :{BLACK}Þéttleiki dreginna umferðarmerkja +STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_DECREASE_TOOLTIP :{BLACK}Minnka þéttleika dreginna umferðarmerkja +STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_INCREASE_TOOLTIP :{BLACK}Auka þéttleika dreginna umferðarmerkja # Bridge selection window STR_SELECT_RAIL_BRIDGE_CAPTION :{WHITE}Veldu tegund brúar STR_SELECT_ROAD_BRIDGE_CAPTION :{WHITE}Veldu vegabrú STR_SELECT_BRIDGE_SELECTION_TOOLTIP :{BLACK}Brúarval - smelltu á brú að eigin vali til að reysa hana STR_SELECT_BRIDGE_INFO :{GOLD}{STRING},{} {VELOCITY} {WHITE}{CURRENCY_LONG} +STR_SELECT_BRIDGE_SCENEDIT_INFO :{GOLD}{STRING},{} {VELOCITY} STR_BRIDGE_NAME_SUSPENSION_STEEL :Hengibrú, stál STR_BRIDGE_NAME_GIRDER_STEEL :Burðarbitabrú, stál STR_BRIDGE_NAME_CANTILEVER_STEEL :Svifbitabrú, stál @@ -1994,21 +2242,21 @@ STR_BRIDGE_TUBULAR_SILICON :Rörabrú, kís # Road construction toolbar STR_ROAD_TOOLBAR_ROAD_CONSTRUCTION_CAPTION :{WHITE}Vegagerð STR_ROAD_TOOLBAR_TRAM_CONSTRUCTION_CAPTION :{WHITE}Sporvagnaframkvæmdir -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_SECTION :{BLACK}Leggja veg. Ctrl velur byggja/fjarlægja fyrir vegavinnu -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_SECTION :{BLACK}Leggja sporvagnaspor. Ctrl velur byggja/fjarlæga fyrir sporvagnabyggingu -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOROAD :{BLACK}Leggja veghluta í sjálfvirkum vegaham. Ctrl velur byggja/fjarlægja fyrir vegavinnu -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOTRAM :{BLACK}Leggja sporvagnaspor í sjálfvirkum sporvagnsham. Ctrl velur byggja/fjarlægja fyrir sporvagnavinnu -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}Byggja bifreiðaskýli (til að kaupa og gera við bifreiðar) -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}Reisa sporvagnaskýli (til að kaupa og þjónusta vagna) -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_BUS_STATION :{BLACK}Byggja strætóstoppistöð. Ctrl leyfir samtengingu stöðva. -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_PASSENGER_TRAM_STATION :{BLACK}Reisa sporvagnastöð fyrir farþega. Ctrl leyfir samtengingu stöðva -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRUCK_LOADING_BAY :{BLACK}Byggja flutningabílastöð. Ctrl leyfir samtengingu stöðva -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_CARGO_TRAM_STATION :{BLACK}Reisa sporvagnastöð fyrir farm. Ctrl leyfir samtengingu stöðva +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_SECTION :{BLACK}Leggja veg. Ctrl velur byggja/fjarlægja vegi. Shift sýnir áætlaðan kosntað +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_SECTION :{BLACK}Leggja sporvagnaspor. Ctrl velur byggja/fjarlæga fyrir sporin. Shift sýnir áætlaðan kostnað +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOROAD :{BLACK}Leggja veghluta í sjálfvirkum vegaham. Ctrl velur byggja/fjarlægja vegi. Shift sýnir áætlaðan kostnað +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOTRAM :{BLACK}Leggja sporvagnaspor í sjálfvirkum sporvagnsham. Ctrl velur byggja/fjarlægja spor. Shift sýnir áætlaðan kostnað +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}Byggja bifreiðaskýli (til að kaupa og gera við bifreiðar). Shift sýnir áætlaðan kostnað +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}Reisa sporvagnaskýli (til að kaupa og þjónusta vagna). Shift sýnir áætlaðan kostnað +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_BUS_STATION :{BLACK}Byggja strætóstoppistöð. Ctrl leyfir samtengingu stöðva.Shift sýnir áætlaðan kostnað +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_PASSENGER_TRAM_STATION :{BLACK}Reisa sporvagnastöð fyrir farþega. Ctrl leyfir samtengingu stöðva. Shift sýnir áætlaðan kostnað +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRUCK_LOADING_BAY :{BLACK}Byggja flutningabílastöð. Ctrl leyfir samtengingu stöðva. Shift sýnir áætlaðan kostnað +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_CARGO_TRAM_STATION :{BLACK}Reisa sporvagnastöð fyrir farm. Ctrl leyfir samtengingu stöðva. Shift sýnir áætlaðan kostnað STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_ONE_WAY_ROAD :{BLACK}Virkja/afvirkja einstefnugötur -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_BRIDGE :{BLACK}Byggja vegabrú -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_BRIDGE :{BLACK}Byggja sporvagnabrú -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_TUNNEL :{BLACK}Byggja göng -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_TUNNEL :{BLACK}Grafa sporvagnagöng +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_BRIDGE :{BLACK}Byggja vegabrú. Shift sýnir áætlaðan kostnað +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_BRIDGE :{BLACK}Byggja sporvagnabrú. Shift sýnir áætlaðan kostnað +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_TUNNEL :{BLACK}Byggja göng. Shift sýnir áætlaðan kostnað +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_TUNNEL :{BLACK}Grafa sporvagnagöng. Shift sýnir áætlaðan kostnað STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_ROAD :{BLACK}Skipta á milli byggja/fjarlægja fyrir vegagerð STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS :{BLACK}Skipta á milli þess að leggja leggja og fjarlægja sporvagnaspor @@ -2023,22 +2271,22 @@ STR_STATION_BUILD_BUS_ORIENTATION :{WHITE}Staða s STR_STATION_BUILD_BUS_ORIENTATION_TOOLTIP :{BLACK}Veldu stöðu strætisvagnastöðvar STR_STATION_BUILD_TRUCK_ORIENTATION :{WHITE}Staða póstvagnsstöðvar STR_STATION_BUILD_TRUCK_ORIENTATION_TOOLTIP :{BLACK}Veldu stöðu póstvagnsstöðvar -STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION :{WHITE}Staða sporvagnafarþegastöðvar +STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION :{WHITE}Staða farþegastöðvar fyrir sporvagna STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION_TOOLTIP :{BLACK}Velja stöðu farþegasporvagnastöðvar -STR_STATION_BUILD_CARGO_TRAM_ORIENTATION :{WHITE}Staða farmsporvagnastöðvar +STR_STATION_BUILD_CARGO_TRAM_ORIENTATION :{WHITE}Staða farmstöðvar fyrir sporvagna STR_STATION_BUILD_CARGO_TRAM_ORIENTATION_TOOLTIP :{BLACK}Velja stöðu farmsporvagnastöðvar # Waterways toolbar (last two for SE only) STR_WATERWAYS_TOOLBAR_CAPTION :{WHITE}Vatnaframkvæmdir STR_WATERWAYS_TOOLBAR_CAPTION_SE :{WHITE}Skipaskurður -STR_WATERWAYS_TOOLBAR_BUILD_CANALS_TOOLTIP :{BLACK}Grafa skipaskurði. -STR_WATERWAYS_TOOLBAR_BUILD_LOCKS_TOOLTIP :{BLACK}Grafa skruðgátt -STR_WATERWAYS_TOOLBAR_BUILD_DEPOT_TOOLTIP :{BLACK}Reisa slipp (til að kaupa og þjónasta skip) -STR_WATERWAYS_TOOLBAR_BUILD_DOCK_TOOLTIP :{BLACK}Byggja bryggju. Ctrl leyfir samtengingu stöðva -STR_WATERWAYS_TOOLBAR_BUOY_TOOLTIP :{BLACK}Setja niður bauju sem hægt er að nota sem leiðarvísi fyrir skip -STR_WATERWAYS_TOOLBAR_BUILD_AQUEDUCT_TOOLTIP :{BLACK}Byggja vatnsleyðslu +STR_WATERWAYS_TOOLBAR_BUILD_CANALS_TOOLTIP :{BLACK}Grafa skipaskurði. Shift sýnir áætlaðan kostnað +STR_WATERWAYS_TOOLBAR_BUILD_LOCKS_TOOLTIP :{BLACK}Grafa skipastiga. Shift sýnir áætlaðan kostnað +STR_WATERWAYS_TOOLBAR_BUILD_DEPOT_TOOLTIP :{BLACK}Reisa slipp (til að kaupa og þjónasta skip). Shift sýnir áætlaðan kostnað +STR_WATERWAYS_TOOLBAR_BUILD_DOCK_TOOLTIP :{BLACK}Byggja bryggju. Ctrl leyfir samtengingu stöðva. Shift sýnir áætlaðan kostnað +STR_WATERWAYS_TOOLBAR_BUOY_TOOLTIP :{BLACK}Setja niður bauju sem hægt er að nota sem leiðarvísi. Shift sýnir áætlaðan kostnað +STR_WATERWAYS_TOOLBAR_BUILD_AQUEDUCT_TOOLTIP :{BLACK}Byggja vatnsveitubrú. Shift sýnir áætlaðan kostnað STR_WATERWAYS_TOOLBAR_CREATE_LAKE_TOOLTIP :{BLACK}Skilgreina vantssvæði.{}Grafa skipaskurð, nema CTRL sé haldið niðri við sjávarmál, þá flæðir yfir umhverfið í staðin. -STR_WATERWAYS_TOOLBAR_CREATE_RIVER_TOOLTIP :{BLACK}Búa til fljót. +STR_WATERWAYS_TOOLBAR_CREATE_RIVER_TOOLTIP :{BLACK}Búa til fljót # Ship depot construction window STR_DEPOT_BUILD_SHIP_CAPTION :{WHITE}Staða slipps @@ -2049,7 +2297,7 @@ STR_STATION_BUILD_DOCK_CAPTION :{WHITE}Höfn # Airport toolbar STR_TOOLBAR_AIRCRAFT_CAPTION :{WHITE}Flugvellir -STR_TOOLBAR_AIRCRAFT_BUILD_AIRPORT_TOOLTIP :{BLACK}Byggja flugvöll. Ctrl leyfir samtengingu stöðva +STR_TOOLBAR_AIRCRAFT_BUILD_AIRPORT_TOOLTIP :{BLACK}Byggja flugvöll. Ctrl leyfir samtengingu stöðva. Shift sýnir áætlaðan kostnað # Airport construction window STR_STATION_BUILD_AIRPORT_CAPTION :{WHITE}Flugvallastillingar @@ -2076,27 +2324,28 @@ STR_STATION_BUILD_NOISE :{BLACK}Hávaði # Landscaping toolbar STR_LANDSCAPING_TOOLBAR :{WHITE}Mótun lands -STR_LANDSCAPING_TOOLTIP_LOWER_A_CORNER_OF_LAND :{BLACK}Lækka horn af landssvæði -STR_LANDSCAPING_TOOLTIP_RAISE_A_CORNER_OF_LAND :{BLACK}Lyfta horni af landssvæði -STR_LANDSCAPING_LEVEL_LAND_TOOLTIP :{BLACK}Jafna land -STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Kaupa landssvæði til notkunar síðar +STR_LANDSCAPING_TOOLTIP_LOWER_A_CORNER_OF_LAND :{BLACK}Lækka horn af landssvæði. Dragðu til að lækka fyrsta hornið og svo valið landsvæði útfrá því. Ctrl velur svæðið skáhalt. Shift sýnir áætlaðan kostnað +STR_LANDSCAPING_TOOLTIP_RAISE_A_CORNER_OF_LAND :{BLACK}Lyfta horni af landssvæði. Dragðu til að lyfta fyrsta horninu og svo valið landsvæði útfrá því. Ctrl velur svæðið skáhalt. Shift sýnir áætlaðan kostnað +STR_LANDSCAPING_LEVEL_LAND_TOOLTIP :{BLACK}Jafna land miðað við fyrsta valda hornið. Ctrl velur svæðið skáhalt. Shift sýnir áætlaðan kostnað +STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Kaupa landssvæði til notkunar síðar. Shift sýnir áætlaðan kostnað # Object construction window STR_OBJECT_BUILD_CAPTION :{WHITE}Hlutaval -STR_OBJECT_BUILD_TOOLTIP :{BLACK}Veldu hlut til að byggja +STR_OBJECT_BUILD_TOOLTIP :{BLACK}Veldu hlut til að byggja. Shift sýnir áætlaðan kostnað +STR_OBJECT_BUILD_CLASS_TOOLTIP :{BLACK}Veldu flokk hlutarins sem á að byggja STR_OBJECT_BUILD_PREVIEW_TOOLTIP :{BLACK}Sýnishorn af hlutnum -STR_OBJECT_BUILD_SIZE :{BLACK}Stærð: {GOLD}{NUM} x {NUM} fletir +STR_OBJECT_BUILD_SIZE :{BLACK}Stærð: {GOLD}{NUM} x {NUM} reitir STR_OBJECT_CLASS_LTHS :Vitar STR_OBJECT_CLASS_TRNS :Sendar # Tree planting window (last two for SE only) STR_PLANT_TREE_CAPTION :{WHITE}Tré -STR_PLANT_TREE_TOOLTIP :{BLACK}Veldu trjátegund sem á að gróðursetja +STR_PLANT_TREE_TOOLTIP :{BLACK}Veldu trjátegund sem á að gróðursetja. Ef það er fyrir tré á reitnum, verðu fleiri trjám mismunandi trjám plantað óhað hvaða tegund hefur verið valin STR_TREES_RANDOM_TYPE :{BLACK}Tré af handahófskenndri gerð -STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}Gróðursetja tré af handahófskenndri gerð +STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}Gróðursetja tré af handahófskenndri gerð. Shift sýnir áætlaðan kostnað STR_TREES_RANDOM_TREES_BUTTON :{BLACK}Tré af handahófi -STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Gróðursetja tré af handahófi á landið +STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Gróðursetja tré af handahófi um landið # Land generation window (SE) STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}Landslagsgerð @@ -2107,15 +2356,15 @@ STR_TERRAFORM_TOOLTIP_DECREASE_SIZE_OF_LAND_AREA :{BLACK}Minnka s STR_TERRAFORM_TOOLTIP_GENERATE_RANDOM_LAND :{BLACK}Mynda til land af handahófi STR_TERRAFORM_SE_NEW_WORLD :{BLACK}Búa til nýtt kort STR_TERRAFORM_RESET_LANDSCAPE :{BLACK}Eyða landi -STR_TERRAFORM_RESET_LANDSCAPE_TOOLTIP :{BLACK}Fjarlægja allar eignir leikmanna af landinu +STR_TERRAFORM_RESET_LANDSCAPE_TOOLTIP :{BLACK}Fjarlægja allar eignir fyrirtækja af kortinu STR_QUERY_RESET_LANDSCAPE_CAPTION :{WHITE}Eyða landi -STR_RESET_LANDSCAPE_CONFIRMATION_TEXT :{WHITE}Ertu viss um að þú viljir fjarlægja allar eignir leikmanna? +STR_RESET_LANDSCAPE_CONFIRMATION_TEXT :{WHITE}Ertu viss um að þú viljir fjarlægja allar eignir fyrirtækja? # Town generation window (SE) STR_FOUND_TOWN_CAPTION :{WHITE}Bæjargerð STR_FOUND_TOWN_NEW_TOWN_BUTTON :{BLACK}Nýr bær -STR_FOUND_TOWN_NEW_TOWN_TOOLTIP :{BLACK}Stofna nýjan bæ +STR_FOUND_TOWN_NEW_TOWN_TOOLTIP :{BLACK}Stofna nýjan bæ. Shift sýnir áætlaðan kostnað STR_FOUND_TOWN_RANDOM_TOWN_BUTTON :{BLACK}Handahófskenndur bær STR_FOUND_TOWN_RANDOM_TOWN_TOOLTIP :{BLACK}Stofna bæ á handahófskenndum stað STR_FOUND_TOWN_MANY_RANDOM_TOWNS :{BLACK}Búa til marga bæi @@ -2180,7 +2429,7 @@ STR_LAND_AREA_INFORMATION_OWNER_N_A :Enginn STR_LAND_AREA_INFORMATION_OWNER :{BLACK}Eigandi: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_ROAD_OWNER :{BLACK}Eigandi vegs: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Eigandi spors: {LTBLUE}{STRING} -STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Eigandi lestarteina: {LTBLUE}{STRING} +STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Eigandi járnbrautarspors: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Bæjaryfirvöld: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Enginn STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Hnit: {LTBLUE}{NUM}x{NUM}x{NUM} ({STRING}) @@ -2193,7 +2442,7 @@ STR_LAND_AREA_INFORMATION_AIRPORTTILE_NAME :{BLACK}Nafn flu STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Tekið á móti: {LTBLUE} STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) -STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Hámarkshraði járnbrautar: {LTBLUE}{VELOCITY} +STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Hámarkshraði járnbrautarlestar: {LTBLUE}{VELOCITY} # Description of land area of different tiles STR_LAI_CLEAR_DESCRIPTION_ROCKS :Klettar @@ -2204,6 +2453,29 @@ STR_LAI_CLEAR_DESCRIPTION_FIELDS :Akur STR_LAI_CLEAR_DESCRIPTION_SNOW_COVERED_LAND :Snjóþekið land STR_LAI_CLEAR_DESCRIPTION_DESERT :Eyðimörk +STR_LAI_RAIL_DESCRIPTION_TRACK :{STRING} spor +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_SIGNALS :{STRING} spor með hefðbundnum umferðarmerkjum +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRESIGNALS :{STRING} spor með for-merkjum +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXITSIGNALS :{STRING} spor með frámerkjum +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBOSIGNALS :{STRING} spor með tvívirkum merkjum +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBSSIGNALS :{STRING} spor með leiðarmerkjum +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NOENTRYSIGNALS :{STRING} spor með einstefnu leiðarmerkjum +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PRESIGNALS :{STRING} spor með hefðbundnum- og formerkjum +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_EXITSIGNALS :{STRING} spor með hefðbundnum- og frámerkjum +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_COMBOSIGNALS :{STRING} spor með hefðbundnum- tvívirkum merkjum +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PBSSIGNALS :{STRING} spor með hefðbundnum- og leiðarmerkjum +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_NOENTRYSIGNALS :{STRING} spor með hefðbundnum- og einstefnu leiðarmerkjum +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_EXITSIGNALS :{STRING} spor með for- og frámerkjum +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_COMBOSIGNALS :{STRING} spor með for- og tvívirkum merkjum +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_PBSSIGNALS :{STRING} spor með for- og leiðarmerkjum +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_NOENTRYSIGNALS :{STRING} spor með for- og einstefnu leiðarmerkjum +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_COMBOSIGNALS :{STRING} spor með frá- og tvívirkum merkjum +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_PBSSIGNALS :{STRING} spor með frá- og leiðarmerkjum +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_NOENTRYSIGNALS :{STRING} spor með frá- og einstefnu leiðarmerkjum +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_PBSSIGNALS :{STRING} spor með tvívirkum- og leiðarmerkjum +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_NOENTRYSIGNALS :{STRING} spor með tvívirkum- og einstefnu leiðarmerkjum +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBS_NOENTRYSIGNALS :{STRING} spor með leiðarmerkjum og einstefnu leiðarmerkjum +STR_LAI_RAIL_DESCRIPTION_TRAIN_DEPOT :{STRING} lestarskýli STR_LAI_ROAD_DESCRIPTION_ROAD :Vegur STR_LAI_ROAD_DESCRIPTION_ROAD_WITH_STREETLIGHTS :Vegur með götuljósum @@ -2242,7 +2514,7 @@ STR_LAI_TUNNEL_DESCRIPTION_ROAD :Vegagöng STR_LAI_BRIDGE_DESCRIPTION_RAIL_SUSPENSION_STEEL :Stálhengibrú, lestir STR_LAI_BRIDGE_DESCRIPTION_RAIL_GIRDER_STEEL :Stálburðarbitabrú, lestir -STR_LAI_BRIDGE_DESCRIPTION_RAIL_CANTILEVER_STEEL :Stálsvifbitabrú, lestir +STR_LAI_BRIDGE_DESCRIPTION_RAIL_CANTILEVER_STEEL :Stálsvifbitabrú fyrir lestir STR_LAI_BRIDGE_DESCRIPTION_RAIL_SUSPENSION_CONCRETE :Styrkt steypuhengirbú, lestir STR_LAI_BRIDGE_DESCRIPTION_RAIL_WOODEN :Viðarbrú, lestir STR_LAI_BRIDGE_DESCRIPTION_RAIL_CONCRETE :Steypubrú, lestir @@ -2250,7 +2522,7 @@ STR_LAI_BRIDGE_DESCRIPTION_RAIL_TUBULAR_STEEL :Rörabrú, lest STR_LAI_BRIDGE_DESCRIPTION_ROAD_SUSPENSION_STEEL :Stálhengibrú, vegur STR_LAI_BRIDGE_DESCRIPTION_ROAD_GIRDER_STEEL :Stálburðarbitabrú, vegur -STR_LAI_BRIDGE_DESCRIPTION_ROAD_CANTILEVER_STEEL :Stálsvifbitabrú, vegur +STR_LAI_BRIDGE_DESCRIPTION_ROAD_CANTILEVER_STEEL :Stálsvifbitabrú fyrir vegi STR_LAI_BRIDGE_DESCRIPTION_ROAD_SUSPENSION_CONCRETE :Styrkt steypuhengibrú, vegur STR_LAI_BRIDGE_DESCRIPTION_ROAD_WOODEN :Viðarbrú, vegur STR_LAI_BRIDGE_DESCRIPTION_ROAD_CONCRETE :Stepubrú, vegur @@ -2267,7 +2539,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-2012 OpenTTD hópurinn +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2014 OpenTTD hópurinn # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Vista leik @@ -2275,6 +2547,7 @@ STR_SAVELOAD_LOAD_CAPTION :{WHITE}Opna lei STR_SAVELOAD_SAVE_SCENARIO :{WHITE}Vista kort STR_SAVELOAD_LOAD_SCENARIO :{WHITE}Opna kort STR_SAVELOAD_LOAD_HEIGHTMAP :{WHITE}Hlaða hæðakorti +STR_SAVELOAD_SAVE_HEIGHTMAP :{WHITE}Vista hæðarkort STR_SAVELOAD_HOME_BUTTON :{BLACK}Smelltu hér til að opna möppu fyrir vistaða leiki STR_SAVELOAD_BYTES_FREE :{BLACK}{BYTES} laus STR_SAVELOAD_LIST_TOOLTIP :{BLACK}Listi yfir drif, möppur og vistaða leiki @@ -2295,6 +2568,7 @@ STR_SAVELOAD_OSKTITLE :{BLACK}Sláðu # World generation STR_MAPGEN_WORLD_GENERATION_CAPTION :{WHITE}Sköpun heims STR_MAPGEN_MAPSIZE :{BLACK}Kortastærð: +STR_MAPGEN_MAPSIZE_TOOLTIP :{BLACK}Veldu stærð kortsins í reitum. Fjöldi reita verða aðeins færri STR_MAPGEN_BY :{BLACK}* STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Fjöldi bæja: STR_MAPGEN_DATE :{BLACK}Dags.: @@ -2302,14 +2576,11 @@ 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: STR_MAPGEN_QUANTITY_OF_SEA_LAKES :{BLACK}Magn sjávar: +STR_MAPGEN_QUANTITY_OF_RIVERS :{BLACK}Ár: STR_MAPGEN_SMOOTHNESS :{BLACK}Sléttleiki lands: STR_MAPGEN_VARIETY :{BLACK}Fjölbreytileikadreifing: STR_MAPGEN_GENERATE :{WHITE}Mynda land @@ -2331,7 +2602,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 @@ -2354,11 +2624,13 @@ STR_GENERATION_ABORT_MESSAGE :{YELLOW}Ertu vi STR_GENERATION_PROGRESS :{WHITE}{NUM}% tilbúið STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / {NUM} STR_GENERATION_WORLD_GENERATION :{BLACK}Sköpun heims +STR_GENERATION_RIVER_GENERATION :{BLACK}Bý til ár STR_GENERATION_TREE_GENERATION :{BLACK}Gróðursetning trjáa STR_GENERATION_OBJECT_GENERATION :{BLACK}Staðsetning fastra hluta STR_GENERATION_CLEARING_TILES :{BLACK}Hrjúft og grýtt landslag STR_GENERATION_SETTINGUP_GAME :{BLACK}Set upp leik STR_GENERATION_PREPARING_TILELOOP :{BLACK}Keyri reitalykkju +STR_GENERATION_PREPARING_SCRIPT :{BLACK}Keyri forskrift STR_GENERATION_PREPARING_GAME :{BLACK}Undirbý leik # NewGRF settings @@ -2384,9 +2656,10 @@ STR_NEWGRF_SETTINGS_MOVEUP :{BLACK}Færa of STR_NEWGRF_SETTINGS_MOVEUP_TOOLTIP :{BLACK}Færa valda NewGRF skrá ofar á listann STR_NEWGRF_SETTINGS_MOVEDOWN :{BLACK}Færa neðar STR_NEWGRF_SETTINGS_MOVEDOWN_TOOLTIP :{BLACK}Færa valda NewGRF skrá neðar á listann -STR_NEWGRF_SETTINGS_FILE_TOOLTIP :{BLACK}Listi yfir NewGRF skrár sem eru til staðar. Smelltu á skrá til að eiga við eiginleika hennar. +STR_NEWGRF_SETTINGS_FILE_TOOLTIP :{BLACK}Listi yfir NewGRF skrár sem eru uppsettar STR_NEWGRF_SETTINGS_SET_PARAMETERS :{BLACK}Stilla breytur +STR_NEWGRF_SETTINGS_SHOW_PARAMETERS :{BLACK}Sýna breytur STR_NEWGRF_SETTINGS_TOGGLE_PALETTE :{BLACK}Skipta milli litaskema STR_NEWGRF_SETTINGS_TOGGLE_PALETTE_TOOLTIP :{BLACK}Skipta um litaskema fyrir valin sett.{}Ef mikið af bleikum lit birtist á röngum stöðum mun þetta laga vandann. STR_NEWGRF_SETTINGS_APPLY_CHANGES :{BLACK}Virkja breytingar @@ -2397,6 +2670,7 @@ STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_TOOLTIP :{BLACK}Skoða h STR_NEWGRF_SETTINGS_FILENAME :{BLACK}Skráarnafn: {SILVER}{STRING} STR_NEWGRF_SETTINGS_GRF_ID :{BLACK}GRF einkenni: {SILVER}{STRING} STR_NEWGRF_SETTINGS_VERSION :{BLACK}Útgáfa: {SILVER}{NUM} +STR_NEWGRF_SETTINGS_MIN_VERSION :{BLACK}Lágmarks útgáfa sem er samhæf: {SILVER}{NUM} STR_NEWGRF_SETTINGS_MD5SUM :{BLACK}MD5 summa: {SILVER}{STRING} STR_NEWGRF_SETTINGS_PALETTE :{BLACK}Litaskema: {SILVER}{STRING} STR_NEWGRF_SETTINGS_PARAMETER :{BLACK}Eiginleikar: {SILVER}{STRING} @@ -2404,6 +2678,9 @@ STR_NEWGRF_SETTINGS_PARAMETER :{BLACK}Eiginlei STR_NEWGRF_SETTINGS_NO_INFO :{BLACK}Engar upplýsingar tiltækar STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}Viðeigandi skrá finnst ekki 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 @@ -2412,6 +2689,7 @@ STR_NEWGRF_PARAMETERS_RESET :{BLACK}Endursti STR_NEWGRF_PARAMETERS_RESET_TOOLTIP :{BLACK}Setja allar stillingar á sjálfvalin gildi. STR_NEWGRF_PARAMETERS_DEFAULT_NAME :Stilling {NUM} STR_NEWGRF_PARAMETERS_SETTING :{STRING}: {ORANGE}{STRING} +STR_NEWGRF_PARAMETERS_NUM_PARAM :{LTBLUE}Fjöldi breyta: {ORANGE}{NUM} # NewGRF inspect window STR_NEWGRF_INSPECT_CAPTION :{WHITE}Skoða - {STRING} @@ -2420,7 +2698,7 @@ STR_NEWGRF_INSPECT_PARENT_TOOLTIP :{BLACK}Skoða h STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT :{STRING} hjá {HEX} STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_OBJECT :Hlutur -STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :Tegund teina +STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :Tegund spora STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGRF breyta 60+x stilling (hexadecimal) @@ -2445,7 +2723,7 @@ STR_NEWGRF_ERROR_MSG_INFO :{SILVER}{STRING STR_NEWGRF_ERROR_MSG_WARNING :{RED}Aðvörun: {SILVER}{STRING} STR_NEWGRF_ERROR_MSG_ERROR :{RED}Villa: {SILVER}{STRING} STR_NEWGRF_ERROR_MSG_FATAL :{RED}Banvænt: {SILVER}{STRING} -STR_NEWGRF_ERROR_FATAL_POPUP :{WHITE}Alvarle NewGRF villa átti sér stað: {}{STRING} +STR_NEWGRF_ERROR_FATAL_POPUP :{WHITE}Alvarleg NewGRF villa átti sér stað: {}{STRING} STR_NEWGRF_ERROR_VERSION_NUMBER :{1:STRING} Mun ekki virka með útgáfu TTDPatch sem OpenTTD gefur til kynna. STR_NEWGRF_ERROR_DOS_OR_WINDOWS :{1:STRING} er fyrir {STRING} útgáfu af TTD. STR_NEWGRF_ERROR_UNSET_SWITCH :{1:STRING} er hannað til að notast með {STRING} @@ -2454,18 +2732,27 @@ STR_NEWGRF_ERROR_LOAD_BEFORE :{1:STRING} ver STR_NEWGRF_ERROR_LOAD_AFTER :{1:STRING} verður að hlaðast eftir {STRING}. STR_NEWGRF_ERROR_OTTD_VERSION_NUMBER :{1:STRING} þarf OpenTTD útgáfu {STRING} eða nýrri. STR_NEWGRF_ERROR_AFTER_TRANSLATED_FILE :GRF skránni sem það var hannað til að þýða -STR_NEWGRF_ERROR_TOO_MANY_NEWGRFS_LOADED :Of mörg NewGRF eru hlaðin. +STR_NEWGRF_ERROR_TOO_MANY_NEWGRFS_LOADED :Of mörg NewGRF eru hlaðin STR_NEWGRF_ERROR_STATIC_GRF_CAUSES_DESYNC :Ef {1:STRING} er hlaðið sem kyrrstæðu NewGRF ásamt {STRING} gætu orðið hnökrar á keyrslu leiksins. -STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} inniheldur gallaða mynd. Allar gallaðar myndir munu birtast sem rauð spurningamerki (?). -STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}Grunnteiknisafnið sem er í notkun vantar hluta af hreyfimyndunum.{}Vinsamlegast uppfærðu grunnteiknisafnið. +STR_NEWGRF_ERROR_UNEXPECTED_SPRITE :Óvænt hreyfimynd (hreyfimynd {3:NUM}) +STR_NEWGRF_ERROR_UNKNOWN_PROPERTY :Óþekkt aðgerð, 0 eiginleikar {4:HEX} (hreyfimynd {3:NUM}) +STR_NEWGRF_ERROR_INVALID_ID :Verið að reyna að nota ógilt ID (hreyfimynd {3:NUM}) +STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} inniheldur gallaða mynd. Allar gallaðar myndir munu birtast sem rauð spurningamerki (?) +STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Inniheldur margþættar aðgerðir, 8 innkomur (hreyfimynd {3:NUM}) +STR_NEWGRF_ERROR_READ_BOUNDS :Les fyrir endan af gervi-hreyfimynd (hreyfimynd {3:NUM}) +STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}Grunnteiknisafnið sem er í notkun vantar hluta af hreyfimyndunum.{}Vinsamlegast uppfærðu grunnteiknisafnið STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}Í Grafíska safnið sem nú er í notkun vantar nokkrar myndir.{}Vinsamlegast uppfærið grafíska safnið.{}Þar sem þú ert að spila {YELLOW}þróunar útgáfu af OpenTTD{WHITE}, gæti verið að þú þyrftir líka {YELLOW} þróunar útgáfu af grafíska safninu{WHITE} +STR_NEWGRF_ERROR_GRM_FAILED :Umbeðin GRF gögn ekki tiltæk (hreyfimynd {3:NUM}) +STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} var óvirkjað af {2:STRING} +STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Rangt/óþekkt hreyfimyndar snið (hreyfimynd {3:NUM}) # NewGRF related 'general' warnings STR_NEWGRF_POPUP_CAUTION_CAPTION :{WHITE}Varúð! -STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}Þú ert í þann mund að eiga við leik í gangi, við það gæti OpenTTD hrunið.{}Ertu viss um að þú viljir halda áfram? +STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}Þú ert í þann mund að eiga við leik í gangi, við það gæti OpenTTD hrunið. Vinsamlegast ekki senda inn upplýsingar um villu vegna þess.{}Ertu viss um að þú viljir halda áfram? STR_NEWGRF_DUPLICATE_GRFID :{WHITE}Get ekki bætt skrá við: tvö eins GRF einkenni STR_NEWGRF_COMPATIBLE_LOADED :{ORANGE}Viðeigandi skrá finnst ekki (samsvarandi GRF hlaðið) +STR_NEWGRF_TOO_MANY_NEWGRFS :{WHITE}Get ekki bætt við skrá: Fjöldi skráa í NewGRF hefur náð hámarki STR_NEWGRF_COMPATIBLE_LOAD_WARNING :{WHITE}Samsvarandi GRF hlaðið í staðin týndrar skrár STR_NEWGRF_DISABLED_WARNING :{WHITE}Týndar GRF skrár hafa verið gerðar óvirkar @@ -2479,14 +2766,15 @@ STR_NEWGRF_LIST_COMPATIBLE :{YELLOW}Fann sa STR_NEWGRF_LIST_MISSING :{RED}Vantar skrár # NewGRF 'it's broken' warnings -STR_NEWGRF_BROKEN :{WHITE}Hegðun NewGRF '{0:STRING}' er líkleg til að valda hnökrum og/eða hruni á kreyslu leiksins. -STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}Breytir stöðu á togvagni '{1:ENGINE}' þegar hann er ekki í skýli -STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}Breytir lengd á farartæki '{1:ENGINE}' þegar það er ekki í skýli. -STR_BROKEN_VEHICLE_LENGTH :{WHITE}Lest '{VEHICLE}' sem tilheyrir '{COMPANY}' er ekki af réttri lengd. Þessu valda sennilega NewGRF vandamál. Leikurinn kann að missa samband eða hrynja. +STR_NEWGRF_BROKEN :{WHITE}Hegðun NewGRF '{0:STRING}' er líkleg til að valda hnökrum og/eða hruni á keyrslu leiksins +STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}Breytir stöðu á knúnum togvagni '{1:ENGINE}' þegar hann er ekki í skýli +STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}Breytir lengd á farartæki '{1:ENGINE}' þegar það er ekki í skýli +STR_BROKEN_VEHICLE_LENGTH :{WHITE}Lest '{VEHICLE}' sem tilheyrir '{COMPANY}' er ekki af réttri lengd. Þessu valda sennilega NewGRF vandamál. Leikurinn kann að missa samband eða hrynja -STR_NEWGRF_BUGGY :{WHITE}Rangar upplýsingar fylgja '{0:STRING}' NewGRF. -STR_NEWGRF_BUGGY_ARTICULATED_CARGO :{WHITE}Farm/breytingaupplýsingar fyrir '{1:ENGINE}' stangast á við innkaupalista eftir kaup. Þetta kann að valda því að sjálfvirk uppfærsla/útskipting mistakist. -STR_NEWGRF_BUGGY_ENDLESS_PRODUCTION_CALLBACK :{WHITE}'{1:STRING}' olli endalausri lykkju í framleiðsluferlinu. +STR_NEWGRF_BUGGY :{WHITE}Rangar upplýsingar fylgja '{0:STRING}' NewGRF +STR_NEWGRF_BUGGY_ARTICULATED_CARGO :{WHITE}Farm/breytingaupplýsingar fyrir '{1:ENGINE}' stangast á við innkaupalista eftir kaup. Þetta kann að valda því að sjálfvirk uppfærsla/útskipting mistakist +STR_NEWGRF_BUGGY_ENDLESS_PRODUCTION_CALLBACK :{WHITE}'{1:STRING}' olli endalausri lykkju í framleiðsluferlinu +STR_NEWGRF_BUGGY_UNKNOWN_CALLBACK_RESULT :{WHITE}Kall á {1:HEX} skilaði rangri/óþekktri niðurstöðu {2:HEX} # 'User removed essential NewGRFs'-placeholders for stuff without specs STR_NEWGRF_INVALID_CARGO : @@ -2495,10 +2783,16 @@ 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... +STR_NEWGRF_SCAN_STATUS :{BLACK}{NUM} NewGRF af sirka {NUM} skönnuð +STR_NEWGRF_SCAN_ARCHIVES :Skanna eftir skjalasöfnum # Sign list window -STR_SIGN_LIST_CAPTION :{WHITE}Merkjalisti - {COMMA} Merki{P "" s} +STR_SIGN_LIST_CAPTION :{WHITE}Merkjalisti - {COMMA} Merki STR_SIGN_LIST_MATCH_CASE :{BLACK}Stemma há-/lágstafi STR_SIGN_LIST_MATCH_CASE_TOOLTIP :{BLACK}Skifta á milli há-/lágstafa stemmingu þegar nöfn skilta eru borin saman við síaðan texta @@ -2513,7 +2807,7 @@ STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}Sláðu STR_TOWN_DIRECTORY_CAPTION :{WHITE}Bæir STR_TOWN_DIRECTORY_NONE :{ORANGE}- Enginn - STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA}) -STR_TOWN_DIRECTORY_LIST_TOOLTIP :{BLACK}Bæjanöfn - smelltu á nafn til að færa sjónarhorn að viðkomandi bæ. Ctrl+Smelltu til að opna sýnisglugga yfir þessum bæ +STR_TOWN_DIRECTORY_LIST_TOOLTIP :{BLACK}Bæjanöfn - smelltu á nafn til að færa sjónarhorn að viðkomandi bæ. Ctrl+smelltu til að opna nýtt sjónarhorn yfir þessum bæ STR_TOWN_POPULATION :{BLACK}Heildaríbúafjöldi: {COMMA} # Town view window @@ -2525,8 +2819,14 @@ STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}Póstur STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}Nauðsynlegur farmur fyrir stækkun bæjarins: STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{ORANGE}{STRING}{RED} nauðsynlegt STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} nauðsynlegt á veturnar +STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED_GENERAL :{ORANGE}{STRING}{GREEN} afhent +STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{RED} (vantar enn) +STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{GREEN} (afhent) +STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}Bærinn stækkar á {ORANGE}{COMMA}{BLACK} dag{P s a} fresti +STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}Bærinn stækkar á {ORANGE}{COMMA}{BLACK} dag{P s a} (stofnaður) +STR_TOWN_VIEW_TOWN_GROW_STOPPED :{BLACK}Bærinn er {RED}ekki{BLACK} að stækka STR_TOWN_VIEW_NOISE_IN_TOWN :{BLACK}Hávaðamörk í bænum: {ORANGE}{COMMA}{BLACK} mest: {ORANGE}{COMMA} -STR_TOWN_VIEW_CENTER_TOOLTIP :{BLACK}Færa sjónarhorn á staðsetningu bæjar. Ctrl+Smelltu til að opna sýnisglugga yfir þessum bæ +STR_TOWN_VIEW_CENTER_TOOLTIP :{BLACK}Færa aðalsjónarhorn á staðsetningu þessa bæjar. Ctrl+smelltu til að opna nýtt sjónarhorn yfir þessum bæ STR_TOWN_VIEW_LOCAL_AUTHORITY_BUTTON :{BLACK}Bæjaryfirvöld STR_TOWN_VIEW_LOCAL_AUTHORITY_TOOLTIP :{BLACK}Sýna upplýsingar um bæjaryfirvöld STR_TOWN_VIEW_RENAME_TOOLTIP :{BLACK}Breyta nafni bæjar @@ -2566,11 +2866,37 @@ STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT :{YELLOW} Kaupa STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}Múta bæjaryfirvöldum til að auka við fylgi þitt, með hættu á þungri refsingu komist það upp.{} Kostnaður: {CURRENCY_LONG} # Goal window +STR_GOALS_GLOBAL_TITLE :{BLACK}Markmið allra: STR_GOALS_TEXT :{ORANGE}{STRING} +STR_GOALS_NONE :{ORANGE}- Engin - +STR_GOALS_COMPANY_TITLE :{BLACK}Fyrirtækja markmið: +STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Smelltu á markmiðið til að miðja aðal sjónarhornið á iðnað/bæ/reit. Ctrl+smella opnar nýtt sjónarhorn á iðnað/bæ/reit # Goal question window +STR_GOAL_QUESTION_CAPTION_QUESTION :Spurning +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 +STR_GOAL_QUESTION_BUTTON_CANCEL :Hætta við +STR_GOAL_QUESTION_BUTTON_OK :Í lagi +STR_GOAL_QUESTION_BUTTON_NO :Nei +STR_GOAL_QUESTION_BUTTON_YES :Já +STR_GOAL_QUESTION_BUTTON_DECLINE :Afþakka +STR_GOAL_QUESTION_BUTTON_ACCEPT :Þyggja +STR_GOAL_QUESTION_BUTTON_IGNORE :Hunsa +STR_GOAL_QUESTION_BUTTON_RETRY :Reyna aftur +STR_GOAL_QUESTION_BUTTON_PREVIOUS :Fyrri +STR_GOAL_QUESTION_BUTTON_NEXT :Næsta +STR_GOAL_QUESTION_BUTTON_STOP :Stoppa +STR_GOAL_QUESTION_BUTTON_START :Byrja +STR_GOAL_QUESTION_BUTTON_GO :Af stað +STR_GOAL_QUESTION_BUTTON_CONTINUE :Halda áfram +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 # Subsidies window STR_SUBSIDIES_CAPTION :{WHITE}Samstarfssamningar @@ -2579,12 +2905,14 @@ STR_SUBSIDIES_OFFERED_FROM_TO :{ORANGE}{STRING STR_SUBSIDIES_NONE :{ORANGE}- Enginn - STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}Samningar þegar í gildi: STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING} frá {STRING} til {STRING}{YELLOW} ({COMPANY}{YELLOW}, þangað til {DATE_SHORT}) -STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Ýttu á þjónustu til að færa sýnishorn á tiltekinn iðnað/bæ. Ctrl+Smelltu til að opna sýnisglugga yfir þessum iðnaði/bæ +STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Ýttu á þjónustu til að færa sjónarhorn á tiltekinn iðnað/bæ. Ctrl+smelltu til að opna sjónarhorn yfir þessum iðnaði/bæ + +# Story book window # Station list window -STR_STATION_LIST_TOOLTIP :{BLACK}Nöfn stöðva - ýttu á nafn til að færa miðju sjónarhorns á stöð. Ctrl+Smelltu til að opna sýnisglugga yfir þessari stöð +STR_STATION_LIST_TOOLTIP :{BLACK}Nöfn stöðva - ýttu á nafn til að færa miðju sjónarhorns á stöð. Ctrl+smelltu til að opna nýtt sjónarhorn yfir þessari stöð STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}Haltu CTRL inni til að velja fleiri en einn hlut -STR_STATION_LIST_CAPTION :{WHITE}{COMPANY} - {COMMA} Stöðvar +STR_STATION_LIST_CAPTION :{WHITE}{COMPANY} - {COMMA} Stöð{P "" var} STR_STATION_LIST_STATION :{YELLOW}{STATION} {STATION_FEATURES} STR_STATION_LIST_WAYPOINT :{YELLOW}{WAYPOINT} STR_STATION_LIST_NONE :{YELLOW}- Ekkert - @@ -2594,19 +2922,22 @@ 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) STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Tekur við STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Sýna lista yfir móttækilegan varning STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}Móttekur: {WHITE}{CARGO_LIST} +STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Þessi stöð er með sérleyfi til flutninga í þessum bæ. +STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} keypti sérleyfi til flutninga í þessum bæ. STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Einkunn STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Sýna einkunn stöðvar -STR_STATION_VIEW_CARGO_RATINGS_TITLE :{BLACK}Staðbundin einkunn flutningsþjónustu: -STR_STATION_VIEW_CARGO_RATING :{WHITE}{STRING}: {YELLOW}{STRING} ({COMMA}%) +STR_STATION_VIEW_CARGO_SUPPLY_RATING :{WHITE}{STRING}: {YELLOW}{COMMA} / {STRING} ({COMMA}%) + + ############ range for rating starts STR_CARGO_RATING_APPALLING :Hræðilegur @@ -2619,16 +2950,18 @@ STR_CARGO_RATING_EXCELLENT :Frábær STR_CARGO_RATING_OUTSTANDING :Framúrskarandi ############ range for rating ends -STR_STATION_VIEW_CENTER_TOOLTIP :{BLACK}Færa miðju sýnishorns á staðsetningu stöðvarCtrl+Smelltu til að opna sýnisglugga yfir þessari stöð +STR_STATION_VIEW_CENTER_TOOLTIP :{BLACK}Færa miðju aðal sjónarhorns á staðsetningu stöðvar. Ctrl+smelltu til að opna sýnisglugga yfir þessari stöð STR_STATION_VIEW_RENAME_TOOLTIP :{BLACK}Breyta nafni stöðvar -STR_STATION_VIEW_SCHEDULED_TRAINS_TOOLTIP :{BLACK}Sýna allar lestir sem hafa þessa stöð á áætlun -STR_STATION_VIEW_SCHEDULED_ROAD_VEHICLES_TOOLTIP :{BLACK}Sýna allar bifreiðir sem hafa þessa stöð á áætlun -STR_STATION_VIEW_SCHEDULED_AIRCRAFT_TOOLTIP :{BLACK}Sýna allar flugvélar sem hafa þessa stöð á áætlun -STR_STATION_VIEW_SCHEDULED_SHIPS_TOOLTIP :{BLACK}Sýna öll skip sem hafa þessa stöð á áætlun +STR_STATION_VIEW_SCHEDULED_TRAINS_TOOLTIP :{BLACK}Sýna allar lestir sem hafa þessa stöð á sinni áætlun +STR_STATION_VIEW_SCHEDULED_ROAD_VEHICLES_TOOLTIP :{BLACK}Sýna allar bifreiðir sem hafa þessa stöð á sinni áætlun +STR_STATION_VIEW_SCHEDULED_AIRCRAFT_TOOLTIP :{BLACK}Sýna allar flugvélar sem hafa þessa stöð á sinni áætlun +STR_STATION_VIEW_SCHEDULED_SHIPS_TOOLTIP :{BLACK}Sýna öll skip sem hafa þessa stöð á sinni áætlun STR_STATION_VIEW_RENAME_STATION_CAPTION :Endurnefna stöð/lestunarsvæði +STR_STATION_VIEW_CLOSE_AIRPORT :{BLACK}Loka flugvelli +STR_STATION_VIEW_CLOSE_AIRPORT_TOOLTIP :{BLACK}Koma í veg fyrir að flugvélar geti lent á þessum flugvelli # Waypoint/buoy view window STR_WAYPOINT_VIEW_CAPTION :{WHITE}{WAYPOINT} @@ -2664,13 +2997,14 @@ STR_FINANCES_LOAN_TITLE :{WHITE}Lán STR_FINANCES_MAX_LOAN :{WHITE}Hámarkslán: {BLACK}{CURRENCY_LONG} STR_FINANCES_TOTAL_CURRENCY :{BLACK}{CURRENCY_LONG} STR_FINANCES_BORROW_BUTTON :{BLACK}Taka lán {CURRENCY_LONG} -STR_FINANCES_BORROW_TOOLTIP :{BLACK}Auka lán. Ctrl smelltu til að lána eins mikið og hægt er +STR_FINANCES_BORROW_TOOLTIP :{BLACK}Auka lán. Ctrl+smella til að lána eins mikið og hægt er STR_FINANCES_REPAY_BUTTON :{BLACK}Borga lán {CURRENCY_LONG} -STR_FINANCES_REPAY_TOOLTIP :{BLACK}Borga til baka af láni. Ctrl smelltu til að borga eins mikið og hægt er +STR_FINANCES_REPAY_TOOLTIP :{BLACK}Borga til baka af láni. Ctrl+smella til að borga eins mikið og hægt er +STR_FINANCES_INFRASTRUCTURE_BUTTON :{BLACK}Innviðir # 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_PRESIDENT_MANAGER_TITLE :{WHITE}{PRESIDENT_NAME}{}{GOLD}(Forstjóri) STR_COMPANY_VIEW_INAUGURATED_TITLE :{GOLD}Hafið: {WHITE}{NUM} STR_COMPANY_VIEW_COLOUR_SCHEME_TITLE :{GOLD}Litaskema: @@ -2682,13 +3016,22 @@ STR_COMPANY_VIEW_SHIPS :{WHITE}{COMMA} STR_COMPANY_VIEW_VEHICLES_NONE :{WHITE}Engin STR_COMPANY_VIEW_COMPANY_VALUE :{GOLD}Heildarverðmæti fyrirtækis: {WHITE}{CURRENCY_LONG} STR_COMPANY_VIEW_SHARES_OWNED_BY :{WHITE}({COMMA}% í eigu {COMPANY}) +STR_COMPANY_VIEW_INFRASTRUCTURE :{GOLD}Innviðir: +STR_COMPANY_VIEW_INFRASTRUCTURE_RAIL :{WHITE}{COMMA} járnbrautarspor +STR_COMPANY_VIEW_INFRASTRUCTURE_ROAD :{WHITE}{COMMA} veg{P ur ir} +STR_COMPANY_VIEW_INFRASTRUCTURE_WATER :{WHITE}{COMMA} vatns reit{P ur ir} +STR_COMPANY_VIEW_INFRASTRUCTURE_STATION :{WHITE}{COMMA} stöðvar reit{P ur ir} +STR_COMPANY_VIEW_INFRASTRUCTURE_AIRPORT :{WHITE}{COMMA} flugv{P öllur ellir} +STR_COMPANY_VIEW_INFRASTRUCTURE_NONE :{WHITE}Engir STR_COMPANY_VIEW_BUILD_HQ_BUTTON :{BLACK}Byggja HS STR_COMPANY_VIEW_BUILD_HQ_TOOLTIP :{BLACK}Byggja höfðustöðvar fyrirtækisins STR_COMPANY_VIEW_VIEW_HQ_BUTTON :{BLACK}Skoða HS STR_COMPANY_VIEW_VIEW_HQ_TOOLTIP :{BLACK}Sjá höfuðstöðvar fyrirtækisins STR_COMPANY_VIEW_RELOCATE_HQ :{BLACK}Flytja HS -STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Endurreisa höfuðstöðvarnar annarsstaðar fyrir 1% af verðmæti fyrirtækis +STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Endurreisa höfuðstöðvarnar annarsstaðar fyrir 1% af verðmæti fyrirtækis. Shift sýnir áætlaðan kostnað við flutning á höfuðstöðvum +STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}Nánar +STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}Skoða nánar fjölda innviða STR_COMPANY_VIEW_NEW_FACE_BUTTON :{BLACK}Nýtt Andlit STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}Velja nýtt andlit á forstöðumanninn @@ -2696,20 +3039,32 @@ STR_COMPANY_VIEW_COLOUR_SCHEME_BUTTON :{BLACK}Litaskem STR_COMPANY_VIEW_COLOUR_SCHEME_TOOLTIP :{BLACK}Breyta útliti á farartækjum fyrirtækisins STR_COMPANY_VIEW_COMPANY_NAME_BUTTON :{BLACK}Nafn fyrirtækis STR_COMPANY_VIEW_COMPANY_NAME_TOOLTIP :{BLACK}Breyta nafni fyrirtækisins -STR_COMPANY_VIEW_PRESIDENT_NAME_BUTTON :{BLACK}Nafn forstöðumanns -STR_COMPANY_VIEW_PRESIDENT_NAME_TOOLTIP :{BLACK}Breyta nafni forstöðumanns +STR_COMPANY_VIEW_PRESIDENT_NAME_BUTTON :{BLACK}Nafn forstjóra +STR_COMPANY_VIEW_PRESIDENT_NAME_TOOLTIP :{BLACK}Breyta nafni forstjóra STR_COMPANY_VIEW_BUY_SHARE_BUTTON :{BLACK}Kaupa 25% hlut í fyrirtæki STR_COMPANY_VIEW_SELL_SHARE_BUTTON :{BLACK}Selja 25% hlut í fyrirtæki -STR_COMPANY_VIEW_BUY_SHARE_TOOLTIP :{BLACK}Kaupa 25% hlut í þessu fyrirtæki -STR_COMPANY_VIEW_SELL_SHARE_TOOLTIP :{BLACK}Selja 25% hlut í þessu fyrirtæki +STR_COMPANY_VIEW_BUY_SHARE_TOOLTIP :{BLACK}Kaupa 25% hlut í þessu fyrirtæki. Shift+smella sýnir áætlaðan kostnað +STR_COMPANY_VIEW_SELL_SHARE_TOOLTIP :{BLACK}Selja 25% hlut í þessu fyrirtæki. Shift+smella sýnir áætlaðan kostnað STR_COMPANY_VIEW_COMPANY_NAME_QUERY_CAPTION :Nafn Fyrirtækis -STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :Nafn forstöðumanns +STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :Nafn forstjóra STR_BUY_COMPANY_MESSAGE :{WHITE}Við erum að leita að flutningsfyrirtæki til að taka yfir okkar rekstri.{}{}Viltu kaupa {COMPANY} fyrir {CURRENCY_LONG}? # Company infrastructure window +STR_COMPANY_INFRASTRUCTURE_VIEW_CAPTION :{WHITE}Innviðir hjá {COMPANY} +STR_COMPANY_INFRASTRUCTURE_VIEW_RAIL_SECT :{GOLD}Járnbrautarspor: +STR_COMPANY_INFRASTRUCTURE_VIEW_SIGNALS :{WHITE}Umferðarmerki +STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD_SECT :{GOLD}Vegir: +STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD :{WHITE}Vegir +STR_COMPANY_INFRASTRUCTURE_VIEW_TRAMWAY :{WHITE}Sporvagnaspor +STR_COMPANY_INFRASTRUCTURE_VIEW_WATER_SECT :{GOLD}Vatns reitir: +STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS :{WHITE}Skipaskurðir +STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}Stöðvar: +STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}Stöðva reitir +STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}Flugvellir +STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL :{WHITE}{CURRENCY_LONG} á ári # Industry directory STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}Iðnaðir @@ -2717,18 +3072,20 @@ STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}- Engin STR_INDUSTRY_DIRECTORY_ITEM :{ORANGE}{INDUSTRY}{BLACK} ({CARGO_LONG}{STRING}){YELLOW} ({COMMA}% flutt) STR_INDUSTRY_DIRECTORY_ITEM_TWO :{ORANGE}{INDUSTRY}{BLACK} ({CARGO_LONG}{STRING}/{CARGO_LONG}{STRING}){YELLOW} ({COMMA}%/{COMMA}% flutt) STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUSTRY} -STR_INDUSTRY_DIRECTORY_LIST_CAPTION :{BLACK}Iðnaðar nafn - smella á nafn til að færa miðju sjónarhorns á iðnað. Ctrl+Smelltu til að opna sýnisglugga yfir þessum iðnaði +STR_INDUSTRY_DIRECTORY_LIST_CAPTION :{BLACK}Iðnaðar nöfn - smella á nafn til að færa miðju sjónarhorns á iðnað. Ctrl+smella til að opna nýtt sjónarhorn yfir þessum iðnaði # Industry view STR_INDUSTRY_VIEW_CAPTION :{WHITE}{INDUSTRY} STR_INDUSTRY_VIEW_PRODUCTION_LAST_MONTH_TITLE :{BLACK}Framleiðsla síðasta mánaðar: STR_INDUSTRY_VIEW_TRANSPORTED :{YELLOW}{CARGO_LONG}{STRING}{BLACK} ({COMMA}% flutt) -STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Miðja aðalsjónarhorn á iðnað. Ctrl+Smelltu til að opna sýnisglugga yfir þessum iðnaði +STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Miðja aðalsjónarhorn á iðnað. Ctrl+smelltu til að opna sýnisglugga yfir þessum iðnaði +STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Framleiðsla: {YELLOW}{COMMA}% +STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}Iðnaðurinn hefur tilkynnt yfirvofandi lokun. ############ range for requires starts -STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Tekur við: {YELLOW}{STRING}{STRING} -STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Tekur við: {YELLOW}{STRING}{STRING}, {STRING}{STRING} -STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Tekur við: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING} +STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Þarf: {YELLOW}{STRING}{STRING} +STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Þarf: {YELLOW}{STRING}{STRING}, {STRING}{STRING} +STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Þarf: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING} ############ range for requires ends ############ range for produces starts @@ -2739,10 +3096,11 @@ STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}Framlei ############ range for produces ends STR_CONFIG_GAME_PRODUCTION :{WHITE}Breyta framleiðslu (margfeldi af 8, allt að 2040) +STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}Breyta framleiðslumagni (prósentu hámark er 800%) # Vehicle lists -STR_VEHICLE_LIST_TRAIN_CAPTION :{WHITE}{STRING} - {COMMA} Lestir -STR_VEHICLE_LIST_ROAD_VEHICLE_CAPTION :{WHITE}{STRING} - {COMMA} Bílar +STR_VEHICLE_LIST_TRAIN_CAPTION :{WHITE}{STRING} - {COMMA} Lest{P "" ir} +STR_VEHICLE_LIST_ROAD_VEHICLE_CAPTION :{WHITE}{STRING} - {COMMA} Bíl{P l ar} STR_VEHICLE_LIST_SHIP_CAPTION :{WHITE}{STRING} - {COMMA} Skip STR_VEHICLE_LIST_AIRCRAFT_CAPTION :{WHITE}{STRING} - {COMMA} Flugvél @@ -2757,7 +3115,7 @@ STR_VEHICLE_LIST_AVAILABLE_TRAINS :Lestaúrval STR_VEHICLE_LIST_AVAILABLE_ROAD_VEHICLES :Bifreiðaúrval STR_VEHICLE_LIST_AVAILABLE_SHIPS :Skipaúrval STR_VEHICLE_LIST_AVAILABLE_AIRCRAFT :Flugvélaúrval -STR_VEHICLE_LIST_AVAILABLE_ENGINES_TOOLTIP :{BLACK}Skoða úrval +STR_VEHICLE_LIST_AVAILABLE_ENGINES_TOOLTIP :{BLACK}Skoða lista yfir fáanleg farartæki af þessari gerð STR_VEHICLE_LIST_MANAGE_LIST :{BLACK}Stýra lista STR_VEHICLE_LIST_MANAGE_LIST_TOOLTIP :{BLACK}Senda boð til allra farartækja á listanum @@ -2772,7 +3130,7 @@ STR_VEHICLE_LIST_SEND_AIRCRAFT_TO_HANGAR :Senda í skýli STR_VEHICLE_LIST_MASS_STOP_LIST_TOOLTIP :{BLACK}Smelltu til að stöðva öll farartæki á listanum STR_VEHICLE_LIST_MASS_START_LIST_TOOLTIP :{BLACK}Smelltu til að ræsa öll farartæki á listanum -STR_VEHICLE_LIST_SHARED_ORDERS_LIST_CAPTION :{WHITE}Samnýttar skipanir {COMMA} {P farartækis farartækja} +STR_VEHICLE_LIST_SHARED_ORDERS_LIST_CAPTION :{WHITE}Samnýttar skipanir {COMMA} farartæk{P is ja} # Group window STR_GROUP_ALL_TRAINS :Allar lestir @@ -2791,6 +3149,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 @@ -2799,10 +3158,10 @@ STR_GROUP_RENAME_CAPTION :{BLACK}Endurnef # Build vehicle window STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :Lestaúrval STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :Nýjir rafdrifnir lestarvagnar -STR_BUY_VEHICLE_TRAIN_MONORAIL_CAPTION :Nýir einteingungsvagnar -STR_BUY_VEHICLE_TRAIN_MAGLEV_CAPTION :Nýir segullestarvagnar +STR_BUY_VEHICLE_TRAIN_MONORAIL_CAPTION :Nýir einteinungsvagnar +STR_BUY_VEHICLE_TRAIN_MAGLEV_CAPTION :Nýir segulsvifvagnar -STR_BUY_VEHICLE_TRAIN_ALL_CAPTION :Járnbrautarlestir +STR_BUY_VEHICLE_TRAIN_ALL_CAPTION :Ný járnbrautarlest STR_BUY_VEHICLE_ROAD_VEHICLE_CAPTION :Bifreiðaúrval STR_BUY_VEHICLE_SHIP_CAPTION :Skipaúrval STR_BUY_VEHICLE_AIRCRAFT_CAPTION :Flugvélaúrval @@ -2810,6 +3169,8 @@ STR_BUY_VEHICLE_AIRCRAFT_CAPTION :Flugvélaúrval STR_PURCHASE_INFO_COST_WEIGHT :{BLACK}Verð: {GOLD}{CURRENCY_LONG}{BLACK} Þyngd: {GOLD}{WEIGHT_SHORT} STR_PURCHASE_INFO_SPEED_POWER :{BLACK}Hámarkshraði: {GOLD}{VELOCITY}{BLACK} Afl: {GOLD}{POWER} STR_PURCHASE_INFO_SPEED :{BLACK}Hraði: {GOLD}{VELOCITY} +STR_PURCHASE_INFO_SPEED_OCEAN :{BLACK}Hraði á sjó: {GOLD}{VELOCITY} +STR_PURCHASE_INFO_SPEED_CANAL :{BLACK}Hraði í skipaskurðum/ám: {GOLD}{VELOCITY} STR_PURCHASE_INFO_RUNNINGCOST :{BLACK}Rekstrarkostnaður: {GOLD}{CURRENCY_LONG} á ári STR_PURCHASE_INFO_CAPACITY :{BLACK}Burðargeta: {GOLD}{CARGO_LONG} {STRING} STR_PURCHASE_INFO_REFITTABLE :(breytanlegt) @@ -2823,7 +3184,8 @@ STR_PURCHASE_INFO_PWAGPOWER_PWAGWEIGHT :{BLACK}Drifvagn STR_PURCHASE_INFO_REFITTABLE_TO :{BLACK}Hægt að breyta farmi í: {GOLD}{STRING} STR_PURCHASE_INFO_ALL_TYPES :Allar tegundir farms STR_PURCHASE_INFO_ALL_BUT :Allt nema {CARGO_LIST} -STR_PURCHASE_INFO_MAX_TE :{BLACK}Hámarks : {GOLD}{FORCE} +STR_PURCHASE_INFO_MAX_TE :{BLACK}Hámarks togkrafur: {GOLD}{FORCE} +STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Drægni: {GOLD}{COMMA} reitir STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Lestarlisti - smelltu á farartæki fyrir meiri upplýsingar STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Bifreiðalisti - ýttu á bifreið fyrir nánari upplýsingar @@ -2835,10 +3197,10 @@ STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_BUTTON :{BLACK}Kaupa bi STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_BUTTON :{BLACK}Kaupa skip STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_BUTTON :{BLACK}Kaupa flugvél -STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_TOOLTIP :{BLACK}Kaupa valinn lestarvagn -STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_TOOLTIP :{BLACK}Kaupa valda bifreið -STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_TOOLTIP :{BLACK}Kaupa valið skip -STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_TOOLTIP :{BLACK}Kaupa valda flugvél +STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_TOOLTIP :{BLACK}Kaupa valinn lestarvagn. Shift+smella sýnir áætlaðan kostnað án þess að kaupa +STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_TOOLTIP :{BLACK}Kaupa valda bifreið. Shift+smella sýnir áætlaðan kostnað án þess að kaupa +STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_TOOLTIP :{BLACK}Kaupa valið skip. Shift+smella sýnir áætlaðan kostnað án þess að kaupa +STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_TOOLTIP :{BLACK}Kaupa valda flugvél. Shift+smella sýnir áætlaðan kostnað án þess að kaupa STR_BUY_VEHICLE_TRAIN_RENAME_BUTTON :{BLACK}Endurnefna STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_BUTTON :{BLACK}Endurnefna @@ -2863,7 +3225,7 @@ STR_DEPOT_RENAME_DEPOT_CAPTION :Endurnefna ský STR_DEPOT_NO_ENGINE :{BLACK}- STR_DEPOT_VEHICLE_TOOLTIP :{BLACK}{ENGINE}{STRING} -STR_DEPOT_VEHICLE_TOOLTIP_CHAIN :{BLACK}{NUM} farartæki{P "" s}{STRING} +STR_DEPOT_VEHICLE_TOOLTIP_CHAIN :{BLACK}{NUM} farartæki{STRING} STR_DEPOT_VEHICLE_TOOLTIP_CARGO :{}{CARGO_LONG} ({CARGO_SHORT}) STR_DEPOT_TRAIN_LIST_TOOLTIP :{BLACK}Lestir - dragðu farartæki til að bæta við/fjarlægja úr lest, hægri smelltu fyrir upplýsingar. Haltu inni Ctrl til að láta aðgerðina virka á eftirfarandi keðju @@ -2903,20 +3265,20 @@ STR_DEPOT_CLONE_ROAD_VEHICLE :{BLACK}Afrita b STR_DEPOT_CLONE_SHIP :{BLACK}Afrita skip STR_DEPOT_CLONE_AIRCRAFT :{BLACK}Afrita flugvél -STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}Þetta býr til aðra lest að tengivögnunum meðtöldum sem er eins og sú sem þú velur, hvort heldur sem er innan eða utan skýlisins. Smelltu á takkann og svo á lestina. Ctrl smelltu til að deila áætlun -STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Þetta býr til aðra bifreið sem er eins og sú sem þú velur, hvort heldur sem er innan eða utan skýlisins. Smelltu á takkann og svo á bifreiðina. Control smelltu til að deila áætlun -STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}Þetta býr til annað skip sem er eins og það sem þú velur, hvort heldur sem er innan eða utan skýlisins. Smelltu á takkann og svo á skipið. Control smelltu til að deila áætlun -STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Þetta býr til aðra flugvél sem er eins og sú sem þú velur, hvort heldur sem er innan eða utan skýlisins. Smelltu á takkann og svo á flugvélina. Control smelltu til að deila áætlun +STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}Þetta býr til aðra alveg eins lest að tengivögnunum meðtöldum. Smelltu á takkann og svo á lestina, hvort heldur sem er innan eða utan skýlisins. Ctrl+smella til að deila skipunum. Shift+smella sýnir áætlaðan kostnað án þess að kaupa +STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Þetta býr til aðra alveg eins bifreið. Smelltu á takkann og svo á bifreiðina, hvort heldur sem er innan eða utan skýlisins. Ctrl+smella til að deila skipunum. Shift+smella til að sýna áætlaðan kostnað án þess að kaupa +STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}Þetta býr til annað alveg eins skip. Smelltu á takkann og svo á skipið, hvort heldur sem er innan eða utan skýlisins. Ctrl+smella til að deila skipunum. Shift+smella sýnir áætlaðan kostnað án þess að kaupa +STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Þetta býr til aðra alveg eins flugvél. Smelltu á takkann og svo á flugvélina, hvort heldur sem er innan eða utan skýlisins. Ctrl+smella til að deila skipunum. Shift+smella sýnir áætlaðan kostnað án þess að kaupa -STR_DEPOT_TRAIN_LOCATION_TOOLTIP :{BLACK}Miðstilla sjónarhorn á staðsetningu lestarskýlis. Ctrl smelltu til að opna sýnisglugga á staðsetningu lestarskýlis +STR_DEPOT_TRAIN_LOCATION_TOOLTIP :{BLACK}Miðstilla sjónarhorn á staðsetningu lestarskýlis. Ctrl+smella til að opna sýnisglugga á staðsetningu lestarskýlis STR_DEPOT_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Miðja aðalsjónarhorn á bifreiðaskýli. Ctrl smelltu til að opna sýnisglugga yfir staðsetningu bifreiðaskýlis STR_DEPOT_SHIP_LOCATION_TOOLTIP :{BLACK}Miðja aðalsjónarhorn á slipp Ctrl smelltu til að opna sýnisglugga yfir staðsetningu slipps STR_DEPOT_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Miðja aðalsjónarhorn á flugskýli. Ctrl smelltu til að opna sýnisglugga yfir staðsetningu flugskýlis -STR_DEPOT_VEHICLE_ORDER_LIST_TRAIN_TOOLTIP :{BLACK}Fá lista yfir allar lestir sem hafa þetta skýli á áætlun -STR_DEPOT_VEHICLE_ORDER_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}Fá lista yfir allar bifreiðir sem hafa þetta skýli á áætlun -STR_DEPOT_VEHICLE_ORDER_LIST_SHIP_TOOLTIP :{BLACK}Fá lista yfir öll skip sem hafa þennan slipp á áætlun -STR_DEPOT_VEHICLE_ORDER_LIST_AIRCRAFT_TOOLTIP :{BLACK}Fá lista yfir allar flugvélar sem hafa flugskýli á þessum velli á áætlun +STR_DEPOT_VEHICLE_ORDER_LIST_TRAIN_TOOLTIP :{BLACK}Fá lista yfir allar lestir sem hafa þetta skýli í sinni skipun +STR_DEPOT_VEHICLE_ORDER_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}Fá lista yfir allar bifreiðir sem hafa þetta skýli í sinni skipun +STR_DEPOT_VEHICLE_ORDER_LIST_SHIP_TOOLTIP :{BLACK}Fá lista yfir öll skip sem hafa þennan slipp í sinni skipun +STR_DEPOT_VEHICLE_ORDER_LIST_AIRCRAFT_TOOLTIP :{BLACK}Fá lista yfir allar flugvélar sem hafa flugskýli á þessum velli í sinni skipun STR_DEPOT_MASS_STOP_DEPOT_TRAIN_TOOLTIP :{BLACK}Smelltu til að stöðva allar lestir í skýlinu STR_DEPOT_MASS_STOP_DEPOT_ROAD_VEHICLE_TOOLTIP :{BLACK}Smelltu til að stöðva allar bifreiðar í skýlinu @@ -2937,13 +3299,15 @@ STR_ENGINE_PREVIEW_RAILROAD_LOCOMOTIVE :lest STR_ENGINE_PREVIEW_ROAD_VEHICLE :bifreið STR_ENGINE_PREVIEW_AIRCRAFT :flugvél STR_ENGINE_PREVIEW_SHIP :sjóferju -STR_ENGINE_PREVIEW_MONORAIL_LOCOMOTIVE :einteinungslest -STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :segul lest +STR_ENGINE_PREVIEW_MONORAIL_LOCOMOTIVE :einteinungs eimreið +STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :Segulsvifvagn STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Verð: {CURRENCY_LONG} Þyngd: {WEIGHT_SHORT}{}Hraði: {VELOCITY} Afl: {POWER}{}Rekstrarkostnaður: {CURRENCY_LONG} á ári{}Burðargeta: {CARGO_LONG} STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}Verð: {CURRENCY_LONG} Þyngd: {WEIGHT_SHORT}{}Hámarskhraði: {VELOCITY} Afl: {POWER} Hámarks kraftur: {6:FORCE}{}Running Cost: {4:CURRENCY_LONG}/ári{}Burðargeta: {5:CARGO_LONG} STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST :{BLACK}Verð: {CURRENCY_LONG} Hámarkshraði: {VELOCITY}{}Burðargeta: {CARGO_LONG}, {CARGO_LONG}{}Rekstrarkostnaður: {CURRENCY_LONG} á ári STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK}Verð: {CURRENCY_LONG} Hámarkshraði: {VELOCITY}{}Burðargeta: {CARGO_LONG}{}Rekstrarkostnaður: {CURRENCY_LONG} á ári +STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_CAPACITY_RUNCOST:{BLACK}Verð: {CURRENCY_LONG} Hámarkshraði: {VELOCITY} Drægni: {COMMA} reitir{}Capacity: {CARGO_LONG}, {CARGO_LONG}{}Rekstrarkosnaður: {CURRENCY_LONG} á ári +STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}Verð: {CURRENCY_LONG} Hámarkshraði: {VELOCITY} Drægni: {COMMA} reitir{}Burðargeta: {CARGO_LONG}{}Rekstrarkostnaður: {CURRENCY_LONG} á ári # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}Endurnýja {STRING} - {STRING} @@ -2956,9 +3320,12 @@ STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Veldu va STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Velja vagntegund sem þú myndir vilja nota í staðin fyrir vagntegundina sem valinn er vinstra megin STR_REPLACE_VEHICLES_START :{BLACK}Hefja skipti +STR_REPLACE_VEHICLES_NOW :Skipta út öllum farartækjum +STR_REPLACE_VEHICLES_WHEN_OLD :Skipta út gömlum farartækjum STR_REPLACE_HELP_START_BUTTON :{BLACK}Smelltu til að hefja skipti á vagntegundinni sem valin er til vinstri með vagntegundinni sem valin er til hægri STR_REPLACE_NOT_REPLACING :{BLACK}Skipti ekki STR_REPLACE_NOT_REPLACING_VEHICLE_SELECTED :{BLACK}Enginn vagn valinn +STR_REPLACE_REPLACING_WHEN_OLD :{ENGINE} ef gömul STR_REPLACE_VEHICLES_STOP :{BLACK}Stöðva skipti STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Smelltu til að stöðva skipti á vagntegundinni sem valin er vinstra megin @@ -2967,7 +3334,7 @@ STR_REPLACE_ENGINE_WAGON_SELECT_HELP :{BLACK}Skipta STR_REPLACE_ENGINES :Dráttarvagnar STR_REPLACE_WAGONS :Vagnar -STR_REPLACE_HELP_RAILTYPE :{BLACK}Veldu hvernig lestir þú skipta út +STR_REPLACE_HELP_RAILTYPE :{BLACK}Veldu hvaða tegund lesta það er sem þú vilt skipta út STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Sýnir hvaða vagn kemur í stað þess sem valinn er vinstra megin STR_REPLACE_RAIL_VEHICLES :Járnbrautavagnar STR_REPLACE_ELRAIL_VEHICLES :Rafdrifnir lestarvagnar @@ -2975,27 +3342,27 @@ STR_REPLACE_MONORAIL_VEHICLES :Einteinungsvagn STR_REPLACE_MAGLEV_VEHICLES :Segulsvifvagnar STR_REPLACE_REMOVE_WAGON :{BLACK}Selja lestarvagna: {ORANGE}{STRING} -STR_REPLACE_REMOVE_WAGON_HELP :{BLACK}Heldur lengd lestar með því að fjarlægja vagna (framan frá) ef útskipting dráttarvagna myndi lengja hana. +STR_REPLACE_REMOVE_WAGON_HELP :{BLACK}Heldur lengd lestar með því að fjarlægja vagna (framan frá), ef útskipting dráttarvagna myndi lengja hana # Vehicle view STR_VEHICLE_VIEW_CAPTION :{WHITE}{VEHICLE} -STR_VEHICLE_VIEW_TRAIN_LOCATION_TOOLTIP :{BLACK}Miðstilla sjónarhorn á staðsetningu lestar. Ctrl smelltu til að fylgja lestina í aðalglugga +STR_VEHICLE_VIEW_TRAIN_LOCATION_TOOLTIP :{BLACK}Miðstilla sjónarhorn á staðsetningu lestar. Ctrl+smella til að fylgja lestina í aðal sjónarhorni STR_VEHICLE_VIEW_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Miðja aðalsjónarhornið á bifreið. Ctrl smelltu til að fylgja bifreiðina í aðalglugga STR_VEHICLE_VIEW_SHIP_LOCATION_TOOLTIP :{BLACK}Miðja aðalsjónarhorn á staðsetningu skips. Ctrl smelltu til að fylgja skipi í aðalglugga STR_VEHICLE_VIEW_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Miðja aðalsjónarhorn á flugvélina. Ctrl smelltu til að fylgja flugvél í aðalglugga -STR_VEHICLE_VIEW_TRAIN_SEND_TO_DEPOT_TOOLTIP :{BLACK}Senda lest í skýli +STR_VEHICLE_VIEW_TRAIN_SEND_TO_DEPOT_TOOLTIP :{BLACK}Senda lest í skýli. Ctrl+smella til þjóna lestinni einungis STR_VEHICLE_VIEW_ROAD_VEHICLE_SEND_TO_DEPOT_TOOLTIP :{BLACK}Senda bifreið í skýli STR_VEHICLE_VIEW_SHIP_SEND_TO_DEPOT_TOOLTIP :{BLACK}Senda skipið í slipp STR_VEHICLE_VIEW_AIRCRAFT_SEND_TO_DEPOT_TOOLTIP :{BLACK}Senda flugvélina i flugskýli -STR_VEHICLE_VIEW_CLONE_TRAIN_INFO :{BLACK}Þetta býr til aðra eins lest að tengivögnunum meðtöldum. Control smelltu til að deila áætlun -STR_VEHICLE_VIEW_CLONE_ROAD_VEHICLE_INFO :{BLACK}Þetta býr til aðra eins bifreið. Ctrl smelltu til að deila áætlun -STR_VEHICLE_VIEW_CLONE_SHIP_INFO :{BLACK}Þetta býr til annað eins skip. Ctrl smelltu til að deila áætlun -STR_VEHICLE_VIEW_CLONE_AIRCRAFT_INFO :{BLACK}Þetta býr til aðra eins flugvél. Ctrl smelltu til að deila áætlun +STR_VEHICLE_VIEW_CLONE_TRAIN_INFO :{BLACK}Þetta býr til aðra alveg eins lest að tengivögnunum meðtöldum. Ctrl+smella til að deila skipunum. Shift+smella sýnir áætlaðan kostnað án þess að kaupa +STR_VEHICLE_VIEW_CLONE_ROAD_VEHICLE_INFO :{BLACK}Þetta býr til aðra alveg eins bifreið. Ctrl+smella til að deila skipunum. Shift+smella sýnir áætlaðan kostnað án þess að kaupa +STR_VEHICLE_VIEW_CLONE_SHIP_INFO :{BLACK}Þetta býr til annað alveg eins skip. Ctrl+smella til að deila skipunum. Shift+smella sýnir áætlaðan kostnað án þess að kaupa +STR_VEHICLE_VIEW_CLONE_AIRCRAFT_INFO :{BLACK}Þetta býr til aðra alveg eins flugvél. Ctrl+smella til að deila skipunum. Shift+smella sýnir áætlaðan kostnað án þess að kaupa -STR_VEHICLE_VIEW_TRAIN_IGNORE_SIGNAL_TOOLTIP :{BLACK}Neyða lest til að halda áfram án þess að bíða eftir réttu ljósi +STR_VEHICLE_VIEW_TRAIN_IGNORE_SIGNAL_TOOLTIP :{BLACK}Neyða lest til að halda áfram án þess að bíða eftir réttu umferðarmerki STR_VEHICLE_VIEW_TRAIN_REFIT_TOOLTIP :{BLACK}Breyta lest svo hún flytji annan farm STR_VEHICLE_VIEW_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}Breyta bifreið svo hún flytji annan farm @@ -3005,7 +3372,7 @@ STR_VEHICLE_VIEW_AIRCRAFT_REFIT_TOOLTIP :{BLACK}Breyta f STR_VEHICLE_VIEW_TRAIN_REVERSE_TOOLTIP :{BLACK}Breyta stefnu lestar STR_VEHICLE_VIEW_ROAD_VEHICLE_REVERSE_TOOLTIP :{BLACK}Þvinga bifreið til að snúa við -STR_VEHICLE_VIEW_TRAIN_ORDERS_TOOLTIP :{BLACK}Sýna lestarskipanir. Ctrl smelltu til að sjá lestaráætlun +STR_VEHICLE_VIEW_TRAIN_ORDERS_TOOLTIP :{BLACK}Sýna lestaskipanir. Ctrl+smella til að sjá lestaráætlun STR_VEHICLE_VIEW_ROAD_VEHICLE_ORDERS_TOOLTIP :{BLACK}Sýna skipanir bifreiðar. Ctrl smelltu til að sjá áæltun bifreiðar STR_VEHICLE_VIEW_SHIP_ORDERS_TOOLTIP :{BLACK}Sýna skipanir skips. Ctrl smelltu til að sjá áæltun skips STR_VEHICLE_VIEW_AIRCRAFT_ORDERS_TOOLTIP :{BLACK}Sýna skipanir flugvélar. Ctrl smelltu til að sjá áæltun flugvélar @@ -3015,13 +3382,13 @@ STR_VEHICLE_VIEW_ROAD_VEHICLE_SHOW_DETAILS_TOOLTIP :{BLACK}Sýna up STR_VEHICLE_VIEW_SHIP_SHOW_DETAILS_TOOLTIP :{BLACK}Sýna nánari upplýsingar um skip STR_VEHICLE_VIEW_AIRCRAFT_SHOW_DETAILS_TOOLTIP :{BLACK}Sýna nánari upplýsingar um skip -STR_VEHICLE_VIEW_TRAIN_STATE_START_STOP_TOOLTIP :{BLACK}Núverandi aðgerð lestar - smelltu hér til að stöðva/ræsa lestina. Ctrl+Smella til að fara á áfangastað +STR_VEHICLE_VIEW_TRAIN_STATE_START_STOP_TOOLTIP :{BLACK}Núverandi aðgerð lestar - smelltu hér til að stöðva/ræsa lestina. Ctrl+smella til að fara á áfangastað STR_VEHICLE_VIEW_ROAD_VEHICLE_STATE_START_STOP_TOOLTIP :{BLACK}Núverandi aðgerð bifreiðar - smelltu hér til að stöðva/ræsa bifreið. Ctrl+Smella til að fara á áfangastað STR_VEHICLE_VIEW_SHIP_STATE_START_STOP_TOOLTIP :{BLACK}Núverandi aðgerð skips - smelltu hér til að stöðva/ræsa skipið. Ctrl+Smella til at fara á áfangastað STR_VEHICLE_VIEW_AIRCRAFT_STATE_START_STOP_TOOLTIP :{BLACK}Núverandi aðgerð - smelltu hér til að stöðva/ræsa flugvél. Ctrl+Smella til at fara á áfangastað # Messages in the start stop button in the vehicle view -STR_VEHICLE_STATUS_LOADING_UNLOADING :{LTBLUE}Fermandi / Affermandi +STR_VEHICLE_STATUS_LOADING_UNLOADING :{LTBLUE}Ferma / Afferma STR_VEHICLE_STATUS_LEAVING :{LTBLUE}Yfirgefur STR_VEHICLE_STATUS_CRASHED :{RED}Árekstur! STR_VEHICLE_STATUS_BROKEN_DOWN :{RED}Vélarbilun @@ -3029,6 +3396,7 @@ STR_VEHICLE_STATUS_STOPPED :{RED}Stöðvað STR_VEHICLE_STATUS_TRAIN_STOPPING_VEL :{RED}Stöðva, {VELOCITY} STR_VEHICLE_STATUS_TRAIN_NO_POWER :{RED}Ekkert afl STR_VEHICLE_STATUS_TRAIN_STUCK :{ORANGE}Bíð eftir lausri leið +STR_VEHICLE_STATUS_AIRCRAFT_TOO_FAR :{ORANGE}Of langt á næst áfangastað STR_VEHICLE_STATUS_HEADING_FOR_STATION_VEL :{LTBLUE}Á leið til {STATION}, {VELOCITY} STR_VEHICLE_STATUS_NO_ORDERS_VEL :{LTBLUE}Engar skipanir, {VELOCITY} @@ -3057,6 +3425,7 @@ STR_VEHICLE_INFO_AGE :{COMMA} ár ({C STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} ár ({COMMA}) STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Hámarkshraði: {LTBLUE}{VELOCITY} +STR_VEHICLE_INFO_MAX_SPEED_RANGE :{BLACK}Hámarkshraði: {LTBLUE}{VELOCITY} {BLACK}Drægni: {LTBLUE}{COMMA} reitir STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Þyngd: {LTBLUE}{WEIGHT_SHORT} {BLACK}Afl: {LTBLUE}{POWER}{BLACK} Hámarkshraði: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Þyngd: {LTBLUE}{WEIGHT_SHORT} {BLACK}Afl: {LTBLUE}{POWER}{BLACK} Hámarkshraði: {LTBLUE}{VELOCITY} {BLACK}Hámarks dráttarafl.: {LTBLUE}{FORCE} @@ -3069,13 +3438,18 @@ STR_VEHICLE_INFO_CAPACITY :{BLACK}Burðarg STR_VEHICLE_INFO_CAPACITY_MULT :{BLACK}Burðargeta: {LTBLUE}{CARGO_LONG}{3:STRING} (x{4:NUM}) STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}Burðargeta: {LTBLUE}{CARGO_LONG}, {CARGO_LONG}{STRING} -STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}Millifæra gjaldeyri: {LTBLUE}{CURRENCY_LONG} +STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}Flytja inneign: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Skoðanamillibil: {LTBLUE}{COMMA}dagar{BLACK} Seinasta skoðun: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Skoðanamillibil: {LTBLUE}{COMMA}%{BLACK} Seinasta skoðun: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Lengja skoðanamillibil með 10. Ctrl smelltu til að lengja skoðanamillibilið með 5 STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Stytta skoðanamillibil með 10. Ctrl smelltu til að sytta skoðanamillibilið með 5 +STR_SERVICE_INTERVAL_DROPDOWN_TOOLTIP :{BLACK}Velja eftir hverju þjónustu á bílnum skuli háttað +STR_VEHICLE_DETAILS_DEFAULT :Sjálfgefið +STR_VEHICLE_DETAILS_DAYS :Dagar +STR_VEHICLE_DETAILS_PERCENT :Prósentur + STR_QUERY_RENAME_TRAIN_CAPTION :{WHITE}Skírðu lestina STR_QUERY_RENAME_ROAD_VEHICLE_CAPTION :{WHITE}Nefna bifreið STR_QUERY_RENAME_SHIP_CAPTION :{WHITE}Nefna skip @@ -3109,7 +3483,9 @@ STR_REFIT_CAPTION :{WHITE}{VEHICLE STR_REFIT_TITLE :{GOLD}Veldu farm sem á að flytja: STR_REFIT_NEW_CAPACITY_COST_OF_REFIT :{BLACK}Ný burðargeta: {GOLD}{CARGO_LONG}{}{BLACK}Breytingarkostnaður: {RED}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_INCOME_FROM_REFIT :{BLACK}Nýtt rými: {GOLD}{CARGO_LONG}{}{BLACK}Tekjur vegna endurnýjunar: {GREEN}{CURRENCY_LONG} +STR_REFIT_NEW_CAPACITY_COST_OF_AIRCRAFT_REFIT :{BLACK}Nýtt rými: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Breytingakostnaður: {RED}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_INCOME_FROM_AIRCRAFT_REFIT :{BLACK}Nýtt rými: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Tekjur vegna endurnýjunar: {GREEN}{CURRENCY_LONG} +STR_REFIT_SELECT_VEHICLES_TOOLTIP :{BLACK}Veldu farartækið sem á að breyta. Ef dregið er með músinni er hægt að velja mörg farartæki. Smella á autt svæði velur allt farartækið. Ctrl+smella velur farartækið og röðina fyrir aftan STR_REFIT_TRAIN_LIST_TOOLTIP :{BLACK}Veldu hvernig farm lestin á að flytja STR_REFIT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Veldu tegund farms sem bifreið mun flytja @@ -3131,7 +3507,7 @@ STR_ORDERS_CAPTION :{WHITE}{VEHICLE STR_ORDERS_TIMETABLE_VIEW :{BLACK}Áætlun STR_ORDERS_TIMETABLE_VIEW_TOOLTIP :{BLACK}Skipta yfir í áætlanasýn -STR_ORDERS_LIST_TOOLTIP :{BLACK}Áætlun - smelltu til að velja stöð. CTRL + músartakki færir sjónarhorn að stöðinni +STR_ORDERS_LIST_TOOLTIP :{BLACK}Listi yfir skipanir - smelltu á skipun til að velja hana. Ctrl+smella færir sjónarhorn að áfangastað skipunar STR_ORDER_INDEX :{COMMA}:{NBSP} STR_ORDER_TEXT :{STRING} {STRING} {STRING} @@ -3149,12 +3525,12 @@ STR_ORDER_TOOLTIP_NON_STOP :{BLACK}Breyta s STR_ORDER_TOGGLE_FULL_LOAD :{BLACK}Fullfermi af hvaða farmi sem er STR_ORDER_DROP_LOAD_IF_POSSIBLE :Hlaða ef það er hægt STR_ORDER_DROP_FULL_LOAD_ALL :Fullhlaða öllum farmi -STR_ORDER_DROP_FULL_LOAD_ANY :Fullhlaða hvaða farmi sem er +STR_ORDER_DROP_FULL_LOAD_ANY :Fullhlaða einhverjum farmi STR_ORDER_DROP_NO_LOADING :Ekki hlaða STR_ORDER_TOOLTIP_FULL_LOAD :{BLACK}Breyta fermishegðun valinna skipana STR_ORDER_TOGGLE_UNLOAD :{BLACK}Afferma allt -STR_ORDER_DROP_UNLOAD_IF_ACCEPTED :Afhlaða ef tekið er við farmi +STR_ORDER_DROP_UNLOAD_IF_ACCEPTED :Afhlaða ef tekið er við STR_ORDER_DROP_UNLOAD :Afhlaða allt STR_ORDER_DROP_TRANSFER :Flytja STR_ORDER_DROP_NO_UNLOADING :Ekki afhlaða @@ -3162,6 +3538,10 @@ STR_ORDER_TOOLTIP_UNLOAD :{BLACK}Breyta h STR_ORDER_REFIT :{BLACK}Breyta STR_ORDER_REFIT_TOOLTIP :{BLACK}Veldu farm til að breyta í. CTRL smelltu til að fjarlægja breytiskipun +STR_ORDER_REFIT_AUTO :{BLACK}Sjálfvirk breyting +STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}Veldu í hvaða tegund farmurinn breytist í þessari skipun. Ctrl+smella til að sleppa breytingar skipun. Sjálfvirk breyting verður bara gerð ef farartækið leyfir það +STR_ORDER_DROP_REFIT_AUTO :Ákveðinn farmur +STR_ORDER_DROP_REFIT_AUTO_ANY :Tiltækur farmur STR_ORDER_SERVICE :{BLACK}Skoðun STR_ORDER_DROP_GO_ALWAYS_DEPOT :Fara alltaf @@ -3178,6 +3558,7 @@ STR_ORDER_CONDITIONAL_MAX_SPEED :Hámarkshraði STR_ORDER_CONDITIONAL_AGE :Aldur (ár) STR_ORDER_CONDITIONAL_REQUIRES_SERVICE :Þarfnast þjónustu STR_ORDER_CONDITIONAL_UNCONDITIONALLY :Alltaf +STR_ORDER_CONDITIONAL_REMAINING_LIFETIME :Eftir af líftíma (ár) STR_ORDER_CONDITIONAL_COMPARATOR_TOOLTIP :{BLACK}Samanburður gagna farartækis við gefið gildi STR_ORDER_CONDITIONAL_COMPARATOR_EQUALS :er jafnt og @@ -3197,12 +3578,16 @@ STR_ORDERS_SKIP_TOOLTIP :{BLACK}Sleppa n STR_ORDERS_DELETE_BUTTON :{BLACK}Eyða STR_ORDERS_DELETE_TOOLTIP :{BLACK}Eyða valdri skipun +STR_ORDERS_DELETE_ALL_TOOLTIP :{BLACK}Eyða öllum skipunum +STR_ORDERS_STOP_SHARING_BUTTON :{BLACK}Hætta að deila +STR_ORDERS_STOP_SHARING_TOOLTIP :{BLACK}Hætta að deila skipunum. Ctrl+smella eyðir auk þess öllum skipunum hjá þessu farartæki STR_ORDERS_GO_TO_BUTTON :{BLACK}Fara að STR_ORDER_GO_TO_NEAREST_DEPOT :Fara í næsta skýli STR_ORDER_GO_TO_NEAREST_HANGAR :Fara í næsta flugskýli STR_ORDER_CONDITIONAL :Skilyrðisbundin hunsun skipana -STR_ORDERS_GO_TO_TOOLTIP :{BLACK}Skeyta inn nýrri skipun á undan valdri skipun, eða bæta við á enda listans. Ctrl bætir við stöðvar sjálfkrafa 'fullhlaða hvaða farmi sem er', við millistöðvar 'Ekki stöðva' og við skýli 'þjónusta' +STR_ORDER_SHARE :Deila skipunum +STR_ORDERS_GO_TO_TOOLTIP :{BLACK}Skeyta inn nýrri skipun á undan valdri skipun, eða bæta við aftast á listann. Ctrl lætur skipanir 'fullhlaða einhverjum farmi', vegvísa skipanir 'ekki stöðva' og skýlis skipanir 'þjónusta'. 'Deila skipun' eða Ctrl lætur þetta farartæki deila skipunum með völdu farartæki. Smella á farartæki deilir skipunum með því farartæki. Ef skýli er í skipunum óvirkjar það sjálfvirka þjónustu á farartækinu STR_ORDERS_VEH_WITH_SHARED_ORDERS_LIST_TOOLTIP :{BLACK}Sýna öll farartæki sem deila þessari áætlun @@ -3227,9 +3612,10 @@ STR_ORDER_STOP_ORDER :(Stopp) STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING} +STR_ORDER_IMPLICIT :(Undanskilin) STR_ORDER_FULL_LOAD :(Fullhlaða) -STR_ORDER_FULL_LOAD_ANY :(Fullhlaða hvaða farmi sem er) +STR_ORDER_FULL_LOAD_ANY :(Fullhlaða einhverjum farmi) STR_ORDER_NO_LOAD :(Ekki hlaða) STR_ORDER_UNLOAD :(Afhlaða og taka farm) STR_ORDER_UNLOAD_FULL_LOAD :(Afhlaða og bíða fullhleðslu) @@ -3242,13 +3628,28 @@ STR_ORDER_TRANSFER_NO_LOAD :(Flytja og yfir STR_ORDER_NO_UNLOAD :(Ekki afhlaða en taka farm) STR_ORDER_NO_UNLOAD_FULL_LOAD :(Ekki afhlaða en býða fullfermis) STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY :(Ekki afhlaða og bíða hvaða fullfermis sem er) - - +STR_ORDER_NO_UNLOAD_NO_LOAD :(Hvorki afferma né ferma) + +STR_ORDER_AUTO_REFIT :(Breya sjálfvirkt í {STRING}) +STR_ORDER_FULL_LOAD_REFIT :(Fullhlaða og breyta sjálfvirkt í {STRING}) +STR_ORDER_FULL_LOAD_ANY_REFIT :(Fullhlaða einum farmi og breyta sjálfvirkt í {STRING}) +STR_ORDER_UNLOAD_REFIT :(Afferma og taka farm með sjálfvirkni breyttni til {STRING}) +STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(Afhlaða og breyta í {STRING}, bíða svo fullfermis) +STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(Afhlaða og breyta í {STRING}, bíða svo einhvers fullfermis) +STR_ORDER_TRANSFER_REFIT :(Flytja, breyta í {STRING} og taka farm) +STR_ORDER_TRANSFER_FULL_LOAD_REFIT :(Flytja, breyta í {STRING} og bíða fullfermis) +STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :(Flytja, breyta í {STRING} og bíða einhvers fullfermis) +STR_ORDER_NO_UNLOAD_REFIT :(Ekki afhlaða, breyta í {STRING} og taka farm) +STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT :(Ekki afhlaða, breyta í {STRING} og bíða fullfermis) +STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :(Ekki afhlaða, breyta í {STRING} og bíða einhvers fullfermis) + +STR_ORDER_AUTO_REFIT_ANY :tiltækur farmur STR_ORDER_STOP_LOCATION_NEAR_END :[upphaf] STR_ORDER_STOP_LOCATION_MIDDLE :[miðja] STR_ORDER_STOP_LOCATION_FAR_END :[endir] +STR_ORDER_OUT_OF_RANGE :{RED} (Of langt í næsta áfangastað) STR_ORDER_CONDITIONAL_UNCONDITIONAL :Hoppa í skipun {COMMA} STR_ORDER_CONDITIONAL_NUM :Hoppa í skipun {COMMA} þegar {STRING} {STRING} {COMMA} @@ -3264,8 +3665,11 @@ STR_TIMETABLE_ORDER_VIEW_TOOLTIP :{BLACK}Skipta y STR_TIMETABLE_TOOLTIP :{BLACK}Áætlun - smelltu á skipun til að velja hana. STR_TIMETABLE_NO_TRAVEL :Engin ferðalög +STR_TIMETABLE_NOT_TIMETABLEABLE :Ferðalag (sjálfvirkt; áætlað eftir næstu handvirku skipun) STR_TIMETABLE_TRAVEL_NOT_TIMETABLED :Ferðalag (ekki sett í áætlun) +STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :Ferðast með hámarkshraða {2:VELOCITY} (ekki áætlað) STR_TIMETABLE_TRAVEL_FOR :Ferðast í {STRING} +STR_TIMETABLE_TRAVEL_FOR_SPEED :Ferðast í {STRING} með hámarkshraða {VELOCITY} STR_TIMETABLE_STAY_FOR :og bíða í {STRING} STR_TIMETABLE_AND_TRAVEL_FOR :og ferðast í {STRING} STR_TIMETABLE_DAYS :{COMMA} dag{P "" a} @@ -3281,7 +3685,6 @@ STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}Þessi t STR_TIMETABLE_STATUS_START_AT :{BLACK}Tímaáætlunin byrjar {STRING} STR_TIMETABLE_STARTING_DATE :{BLACK}Byrjunardagsetning -STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Veldu dagsetningu til að hefja notkun tímaáætlunar STR_TIMETABLE_CHANGE_TIME :{BLACK}Breyta tíma STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Breyta tímanum sem valin skipun ætti að taka @@ -3289,7 +3692,11 @@ STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Breyta t STR_TIMETABLE_CLEAR_TIME :{BLACK}Hreinsa tíma STR_TIMETABLE_CLEAR_TIME_TOOLTIP :{BLACK}Hreinsa tímann fyrir valda skipun +STR_TIMETABLE_CHANGE_SPEED :{BLACK}Breyttu hámarkshraða +STR_TIMETABLE_CHANGE_SPEED_TOOLTIP :{BLACK}Breyttu hámarkshraða á valdri skipun +STR_TIMETABLE_CLEAR_SPEED :{BLACK}Hreinsa hámarkshraða +STR_TIMETABLE_CLEAR_SPEED_TOOLTIP :{BLACK}Hreinsa hámarkshraða á valdri skipun STR_TIMETABLE_RESET_LATENESS :{BLACK}Endurstilla seinkunnarteljara STR_TIMETABLE_RESET_LATENESS_TOOLTIP :{BLACK}Endurstilla seinkunarteljara, svo farartækið verði á réttum tíma @@ -3315,61 +3722,85 @@ STR_DATE_YEAR_TOOLTIP :{BLACK}Veldu á # AI debug window -STR_AI_DEBUG :{WHITE}Aflúsun gervigreindar +STR_AI_DEBUG :{WHITE}Aflúsun gervigreindar/forskrifta STR_AI_DEBUG_NAME_AND_VERSION :{BLACK}{STRING} (v{NUM}) -STR_AI_DEBUG_NAME_TOOLTIP :{BLACK}Nafn gervigreindar -STR_AI_DEBUG_SETTINGS :{BLACK}Stillingar gerfigreindar -STR_AI_DEBUG_SETTINGS_TOOLTIP :{BLACK}Breyta stillingunum fyrir þessa gerfigreind +STR_AI_DEBUG_NAME_TOOLTIP :{BLACK}Nafn forskriftar +STR_AI_DEBUG_SETTINGS :{BLACK}Stillingar +STR_AI_DEBUG_SETTINGS_TOOLTIP :{BLACK}Breyta stillingunum fyrir forskrift STR_AI_DEBUG_RELOAD :{BLACK}Endurhlaða gervigreind STR_AI_DEBUG_RELOAD_TOOLTIP :{BLACK}Stöðva gervigreindina, endurhlaða skriftunni og ræsa gervigreindina á ný STR_AI_DEBUG_BREAK_STR_ON_OFF_TOOLTIP :{BLACK}Virkja/óvirkja pásu þegar AI skilaboð stemma við pásu texta STR_AI_DEBUG_BREAK_ON_LABEL :{BLACK}Pása á: STR_AI_DEBUG_BREAK_STR_OSKTITLE :{BLACK}Pása í gangi -STR_AI_DEBUG_BREAK_STR_TOOLTIP :{BLACK}Þegar gerfigreindarskilboð stemmi við textan fer leikurinn í pásu. +STR_AI_DEBUG_BREAK_STR_TOOLTIP :{BLACK}Þegar gerfigreindarskilboð stemma við textan fer leikurinn í pásu STR_AI_DEBUG_MATCH_CASE :{BLACK}Stemma há-/lágstafi STR_AI_DEBUG_MATCH_CASE_TOOLTIP :{BLACK}Skifta á milli stemmingu á há-/lágstöfum þegar gerfigreindarskilaboð eru borin saman við pásu texta STR_AI_DEBUG_CONTINUE :{BLACK}Áfram STR_AI_DEBUG_CONTINUE_TOOLTIP :{BLACK}Láta gerfigreind halda áfram. STR_AI_DEBUG_SELECT_AI_TOOLTIP :{BLACK}Skoða ferlisupplýsingar frá þessari gerfigreind +STR_AI_GAME_SCRIPT :{BLACK}Forskrift +STR_AI_GAME_SCRIPT_TOOLTIP :{BLACK}Skoða forskriftar kladdann -STR_ERROR_AI_NO_AI_FOUND :Engin nothæf gerfigreind fundin.{}Þetta er platgerfigreind sem gerir ekkert.{}Hægt er að ná í gerfigreindir með 'Ná í viðbætur af netinu' valmöguleikanum. -STR_ERROR_AI_PLEASE_REPORT_CRASH :{WHITE}Ein af gervigreindunum hrundi. Vinsamlega gerðu höfundi gervigreindarinnar viðvart og sendu inn mynd af aflúsunarglugga gervigreindarinnar. -STR_ERROR_AI_DEBUG_SERVER_ONLY :{YELLOW}Aflúsunargluggi gervigreindar er aðeins aðgengilegur á þjóni +STR_ERROR_AI_NO_AI_FOUND :Engin nothæf gerfigreind fundin.{}Þetta er platgerfigreind sem gerir ekkert.{}Hægt er að ná í gerfigreindir með 'Ná í viðbætur af netinu' valmöguleikanum +STR_ERROR_AI_PLEASE_REPORT_CRASH :{WHITE}Ein af forskriftunum hrundi. Vinsamlega gerðu höfundi forskriftarinnar viðvart og sendu inn mynd af aflúsunarglugga gervigreindarinnar/forskriftarinnar +STR_ERROR_AI_DEBUG_SERVER_ONLY :{YELLOW}Aflúsunargluggi gervigreindar/forskriftar er aðeins aðgengilegur á þjóni # AI configuration window -STR_AI_CONFIG_CAPTION :{WHITE}Stilling gervigreindar +STR_AI_CONFIG_CAPTION :{WHITE}Stilling gervigreindar/forskriftar +STR_AI_CONFIG_GAMELIST_TOOLTIP :{BLACK}Forskriftin sem verður hlaðin í næsta leik +STR_AI_CONFIG_AILIST_TOOLTIP :{BLACK}Gervigreindin sem verður hlaðin í næsta leik STR_AI_CONFIG_HUMAN_PLAYER :Mennskur leikmaður STR_AI_CONFIG_RANDOM_AI :Gervigreind af handahófi +STR_AI_CONFIG_NONE :(engin) STR_AI_CONFIG_MOVE_UP :{BLACK}Færa upp STR_AI_CONFIG_MOVE_UP_TOOLTIP :{BLACK}Færa valda gerfigreind upp listann STR_AI_CONFIG_MOVE_DOWN :{BLACK}Færa niður STR_AI_CONFIG_MOVE_DOWN_TOOLTIP :{BLACK}Færa valda gerfigreind niður listann +STR_AI_CONFIG_GAMESCRIPT :{SILVER}Forskrift +STR_AI_CONFIG_AI :{SILVER}Gervigreindir +STR_AI_CONFIG_CHANGE :{BLACK}Veldu {STRING} STR_AI_CONFIG_CHANGE_NONE : +STR_AI_CONFIG_CHANGE_AI :gervigreind +STR_AI_CONFIG_CHANGE_GAMESCRIPT :Forskrift +STR_AI_CONFIG_CHANGE_TOOLTIP :{BLACK}Hlaða annarri forskrift STR_AI_CONFIG_CONFIGURE :{BLACK}Stilla -STR_AI_CONFIG_CONFIGURE_TOOLTIP :{BLACK}Stilltu eiginleika gervigreindarinnar +STR_AI_CONFIG_CONFIGURE_TOOLTIP :{BLACK}Stilltu eiginleika forskriftar # Available AIs window -STR_AI_LIST_TOOLTIP :{BLACK}Smelltu til að merkja gervigreind +STR_AI_LIST_CAPTION :{WHITE}Mögulegar {STRING} +STR_AI_LIST_CAPTION_AI :gervigreindir +STR_AI_LIST_CAPTION_GAMESCRIPT :leikja forskriftir +STR_AI_LIST_TOOLTIP :{BLACK}Smelltu til að velja forskrift STR_AI_LIST_AUTHOR :{LTBLUE}Höfundur: {ORANGE}{STRING} STR_AI_LIST_VERSION :{LTBLUE}Útgáfa: {ORANGE}{NUM} STR_AI_LIST_URL :{LTBLUE}Vefslóð: {ORANGE}{STRING} STR_AI_LIST_ACCEPT :{BLACK}Í lagi -STR_AI_LIST_ACCEPT_TOOLTIP :{BLACK}Velja merkta gervigreind +STR_AI_LIST_ACCEPT_TOOLTIP :{BLACK}Velja merkta forskrift STR_AI_LIST_CANCEL :{BLACK}Hætta við -STR_AI_LIST_CANCEL_TOOLTIP :{BLACK}Hætta við breytingar +STR_AI_LIST_CANCEL_TOOLTIP :{BLACK}Hætta við breytingar forskriftar # AI Parameters +STR_AI_SETTINGS_CAPTION :{WHITE}{STRING} breytur +STR_AI_SETTINGS_CAPTION_AI :Gervigreindar +STR_AI_SETTINGS_CAPTION_GAMESCRIPT :Leikja forskriftar STR_AI_SETTINGS_CLOSE :{BLACK}Loka STR_AI_SETTINGS_RESET :{BLACK}Frumstilla STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING} +STR_AI_SETTINGS_START_DELAY :Hversu mörgum dögum eftir síðustu gervigreind á að hlaða þessari (sirka): {ORANGE}{STRING} # Textfile window +STR_TEXTFILE_README_CAPTION :{WHITE}{STRING} lesskrá (readme) fyrir {STRING} +STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}{STRING} breytiskrá (changelog) fyrir {STRING} +STR_TEXTFILE_LICENCE_CAPTION :{WHITE}{STRING} leyfi fyrir {STRING} +STR_TEXTFILE_VIEW_README :{BLACK}Skoða lesskrá +STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}Breytiskrá +STR_TEXTFILE_VIEW_LICENCE :{BLACK}Leyfi # Vehicle loading indicators @@ -3389,6 +3820,10 @@ STR_INCOME_FLOAT_INCOME_SMALL :{TINY_FONT}{GRE STR_INCOME_FLOAT_INCOME :{GREEN}Tekjur: {CURRENCY_LONG} STR_FEEDER_TINY :{TINY_FONT}{YELLOW}Yfirfæra: {CURRENCY_LONG} STR_FEEDER :{YELLOW}Yfirfæra: {CURRENCY_LONG} +STR_FEEDER_INCOME_TINY :{TINY_FONT}{YELLOW}Flutt: {CURRENCY_LONG}{WHITE} / {GREEN}Tekjur: {CURRENCY_LONG} +STR_FEEDER_INCOME :{YELLOW}Flutt: {CURRENCY_LONG}{WHITE} / {GREEN}Tekjur: {CURRENCY_LONG} +STR_FEEDER_COST_TINY :{TINY_FONT}{YELLOW}Flutt: {CURRENCY_LONG}{WHITE} / {RED} Kostnaður: {CURRENCY_LONG} +STR_FEEDER_COST :{YELLOW}Flutt: {CURRENCY_LONG}{WHITE} / {RED}Kostnaður: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_COST :{WHITE}Áætlaður kostnaður: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Áætlaðar tekjur: {CURRENCY_LONG} @@ -3406,26 +3841,27 @@ STR_GAME_SAVELOAD_ERROR_FILE_NOT_READABLE :Skrá er ekki l STR_GAME_SAVELOAD_ERROR_FILE_NOT_WRITEABLE :Skrá er ekki skrifanleg STR_GAME_SAVELOAD_ERROR_DATA_INTEGRITY_CHECK_FAILED :Könnun gagnaheilinda mistókst STR_GAME_SAVELOAD_NOT_AVAILABLE : -STR_WARNING_LOADGAME_REMOVED_TRAMS :{WHITE}Leikurinn var vistaður í útgáfu án sporvagna. Allir sporvagnar hafa verið fjarlægðir. +STR_WARNING_LOADGAME_REMOVED_TRAMS :{WHITE}Leikurinn var vistaður í útgáfu án sporvagna. Allir sporvagnar hafa verið fjarlægðir # Map generation messages STR_ERROR_COULD_NOT_CREATE_TOWN :{WHITE}Sköpun korts hætt...{}... ekkert hentugt bæjarstæði STR_ERROR_NO_TOWN_IN_SCENARIO :{WHITE}... það er enginn bær í þessu landi STR_ERROR_PNGMAP :{WHITE}Get ekki hlaðið landslagi úr PNG skrá... -STR_ERROR_PNGMAP_FILE_NOT_FOUND :{WHITE}... skrá ekki til staðar. -STR_ERROR_PNGMAP_IMAGE_TYPE :{WHITE}... gat ekki meðhöndlað myndsniðið. 8 eða 24 bita PNG myndir nauðsynlegar. -STR_ERROR_PNGMAP_MISC :{WHITE}... eitthvað fór úrskeiðis (mögulega gölluð skrá). +STR_ERROR_PNGMAP_FILE_NOT_FOUND :{WHITE}... skrá ekki til staðar +STR_ERROR_PNGMAP_IMAGE_TYPE :{WHITE}... gat ekki meðhöndlað myndsniðið. 8 eða 24 bita PNG myndir nauðsynlegar +STR_ERROR_PNGMAP_MISC :{WHITE}... eitthvað fór úrskeiðis (mögulega gölluð skrá) STR_ERROR_BMPMAP :{WHITE}Get ekki hlaðið landslagi úr BMP skrá... -STR_ERROR_BMPMAP_IMAGE_TYPE :{WHITE}... gat ekki breytt myndsniði. +STR_ERROR_BMPMAP_IMAGE_TYPE :{WHITE}... gat ekki breytt myndsniði +STR_ERROR_HEIGHTMAP_TOO_LARGE :{WHITE}... myndin er of stór STR_WARNING_HEIGHTMAP_SCALE_CAPTION :{WHITE}Stærð hæðarlínukorts STR_WARNING_HEIGHTMAP_SCALE_MESSAGE :{YELLOW}Ekki er mælt með því að breyta stærð grunnkorts of mikið. Viltu halda áfram? # Soundset messages -STR_WARNING_FALLBACK_SOUNDSET :{WHITE}Fann aðeins varahljóðsafn. Ef þú vilt hljóð geturðu sett þau upp með innbyggðu efnisveitunni. +STR_WARNING_FALLBACK_SOUNDSET :{WHITE}Fann aðeins varahljóðsafn. Ef þú vilt hljóð geturðu sett þau upp með innbyggðu efnisveitunni # Screenshot related messages STR_WARNING_SCREENSHOT_SIZE_CAPTION :{WHITE}Stórt skjáskot @@ -3451,13 +3887,18 @@ STR_ERROR_SITE_UNSUITABLE :{WHITE}... óhe STR_ERROR_ALREADY_BUILT :{WHITE}... nú þegar byggt STR_ERROR_OWNED_BY :{WHITE}... í eigu {STRING} STR_ERROR_AREA_IS_OWNED_BY_ANOTHER :{WHITE}... svæðið er í eigu annars fyrirtækis +STR_ERROR_TERRAFORM_LIMIT_REACHED :{WHITE}... takmörkun fyrir landlagsgerð náð +STR_ERROR_CLEARING_LIMIT_REACHED :{WHITE}... ekki hægt að hreinsa fleiri reiti +STR_ERROR_TREE_PLANT_LIMIT_REACHED :{WHITE}... ekki hægt að planta fleiri trjám STR_ERROR_NAME_MUST_BE_UNIQUE :{WHITE}Nafnið verður að vera sérstætt STR_ERROR_GENERIC_OBJECT_IN_THE_WAY :{WHITE}{1:STRING} er fyrir +STR_ERROR_NOT_ALLOWED_WHILE_PAUSED :{WHITE}Ekki leyft á meðan leikurinn er á bið # Local authority errors STR_ERROR_LOCAL_AUTHORITY_REFUSES_TO_ALLOW_THIS :{WHITE}{TOWN} bæjaryfirvöld leyfa þetta ekki STR_ERROR_LOCAL_AUTHORITY_REFUSES_AIRPORT :{WHITE}Bæjaryfirvöld {TOWN} leyfa ekki byggingu annars flugvallar nærliggjandi bænum STR_ERROR_LOCAL_AUTHORITY_REFUSES_NOISE :{WHITE}{TOWN} Stjórn bæjarins hafnar leyfir fyrir flugvelli vegna hljóðmengunar +STR_ERROR_BRIBE_FAILED :{WHITE}Mútunartilraun þín hefur verið uppgötvuð af héraðsrannsakanda # Levelling errors STR_ERROR_CAN_T_RAISE_LAND_HERE :{WHITE}Get ekki lyft landssvæði hér... @@ -3470,7 +3911,7 @@ STR_ERROR_ALREADY_LEVELLED :{WHITE}... nú # Company related errors STR_ERROR_CAN_T_CHANGE_COMPANY_NAME :{WHITE}Ekki hægt að breyta nafni fyrirtækis... -STR_ERROR_CAN_T_CHANGE_PRESIDENT :{WHITE}Ekki hægt að breyta nafni forstöðumanns... +STR_ERROR_CAN_T_CHANGE_PRESIDENT :{WHITE}Get ekki breytt nafni forstjóra... STR_ERROR_MAXIMUM_PERMITTED_LOAN :{WHITE}... hámarksleyfi á láni er {CURRENCY_LONG} STR_ERROR_CAN_T_BORROW_ANY_MORE_MONEY :{WHITE}Ekki hægt að fá meiri pening lánaðan... @@ -3496,7 +3937,7 @@ STR_ERROR_NO_SPACE_FOR_TOWN :{WHITE}... þa STR_ERROR_TOWN_EXPAND_WARN_NO_ROADS :{WHITE}Bærinn getur ekki lagt vegi. Því er hægt að breyta í Ítarlegar stillingar->Efnahagur->Bæir. STR_ERROR_ROAD_WORKS_IN_PROGRESS :{WHITE}Vegaframkvæmdir standa yfir STR_ERROR_TOWN_CAN_T_DELETE :{WHITE}Ekki hægt að eyða bæ...{}Stöð eða skýli vísar í þennan bæ eða ekki hægt að fjarlægja reit í eigu bæjarins. -STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}... það er enginn ákjósanlegur staður fyrir styttu í miðbæ þessa bæjar +STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}... það er enginn ákjósanlegur staður fyrir styttu í miðju þessa bæjar # Industry related errors STR_ERROR_TOO_MANY_INDUSTRIES :{WHITE}... of margir iðnaðir @@ -3509,10 +3950,13 @@ STR_ERROR_ONLY_ONE_ALLOWED_PER_TOWN :{WHITE}... aðe STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS_WITH_POPULATION_OF_1200 :{WHITE}... aðeins hægt að byggja í bæjum með fleiri en 1200 íbúum STR_ERROR_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}... aðeins hægt að byggja á regnskógasvæðum STR_ERROR_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}... aðeins hægt að byggja í eyðimörk -STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}... aðeins hægt að byggja í bæjum +STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}... aðeins hægt að byggja í bæjum (skiptir út húsum) +STR_ERROR_CAN_ONLY_BE_BUILT_NEAR_TOWN_CENTER :{WHITE}... er aðeins hægt að byggja nálægt miðju bæja STR_ERROR_CAN_ONLY_BE_BUILT_IN_LOW_AREAS :{WHITE}... aðeins hægt að byggja á láglendi STR_ERROR_CAN_ONLY_BE_POSITIONED :{WHITE}... getur aðeins verið staðsett nálægt brún kortsins STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... skógur getur aðeins verið gróðursettur yfir snjólínu +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... @@ -3585,8 +4029,8 @@ STR_ERROR_AIRCRAFT_MUST_BE_STOPPED_INSIDE_HANGAR :{WHITE}... ver STR_ERROR_TRAINS_CAN_ONLY_BE_ALTERED_INSIDE_A_DEPOT :{WHITE}Aðeins er hægt að eiga við lestir þegar þær bíða í skýli STR_ERROR_TRAIN_TOO_LONG :{WHITE}Lestin er of löng STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE :{WHITE}Get ekki snúið lestinni við... -STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE_MULTIPLE_UNITS :{WHITE}Get ekki snúið vögnum sem tilheyra vagnapari -STR_ERROR_INCOMPATIBLE_RAIL_TYPES :Ósamstæðir lestarteinar +STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE_MULTIPLE_UNITS :{WHITE}... samanstendur af mörgum einingum +STR_ERROR_INCOMPATIBLE_RAIL_TYPES :Ósamstæð spor STR_ERROR_CAN_T_MOVE_VEHICLE :{WHITE}Get ekki fært farartæki... STR_ERROR_REAR_ENGINE_FOLLOW_FRONT :{WHITE}Aftari dráttarvagn fylgir alltaf fremri hluta @@ -3601,21 +4045,21 @@ STR_ERROR_AUTOREPLACE_NOTHING_TO_DO :{WHITE}Engar re STR_ERROR_AUTOREPLACE_MONEY_LIMIT :(takmarkað fjármagn) # Rail construction errors -STR_ERROR_IMPOSSIBLE_TRACK_COMBINATION :{WHITE}Ómöguleg lestarteinasamstæða -STR_ERROR_MUST_REMOVE_SIGNALS_FIRST :{WHITE}Verður að fjarlægja ljós fyrst -STR_ERROR_NO_SUITABLE_RAILROAD_TRACK :{WHITE}Enginn hentugur lestarteinn -STR_ERROR_MUST_REMOVE_RAILROAD_TRACK :{WHITE}Verður að fjarlægja lestartein fyrst +STR_ERROR_IMPOSSIBLE_TRACK_COMBINATION :{WHITE}Ómöguleg spor samsetning +STR_ERROR_MUST_REMOVE_SIGNALS_FIRST :{WHITE}Verður að fjarlægja umferðarmerki fyrst +STR_ERROR_NO_SUITABLE_RAILROAD_TRACK :{WHITE}Ekkert hentugt járnbrautarspor +STR_ERROR_MUST_REMOVE_RAILROAD_TRACK :{WHITE}Verður að fjarlægja járnbrautarspor fyrst STR_ERROR_CROSSING_ON_ONEWAY_ROAD :{WHITE}Vegurinn er einstefnuvegur eða stíflaður -STR_ERROR_CROSSING_DISALLOWED :{WHITE}Gatnamót ekki leyfð fyrir þessa tegund teina -STR_ERROR_CAN_T_BUILD_SIGNALS_HERE :{WHITE}Get ekki byggt umferðarljós hér... -STR_ERROR_CAN_T_BUILD_RAILROAD_TRACK :{WHITE}Get ekki byggt lestartein hér... -STR_ERROR_CAN_T_REMOVE_RAILROAD_TRACK :{WHITE}Get ekki fjarlægt lestartein héðan... -STR_ERROR_CAN_T_REMOVE_SIGNALS_FROM :{WHITE}Get ekki fjarlægt umferðarljós héðan... -STR_ERROR_SIGNAL_CAN_T_CONVERT_SIGNALS_HERE :{WHITE}Get ekki breytt ljósum hér... -STR_ERROR_THERE_IS_NO_RAILROAD_TRACK :{WHITE}... það eru enginn lestarteinn -STR_ERROR_THERE_ARE_NO_SIGNALS :{WHITE}... það eru engin ljós +STR_ERROR_CROSSING_DISALLOWED :{WHITE}Gatnamót ekki leyfð fyrir þessa tegund járnbrautarspora +STR_ERROR_CAN_T_BUILD_SIGNALS_HERE :{WHITE}Get ekki byggt umferðarmerki hér... +STR_ERROR_CAN_T_BUILD_RAILROAD_TRACK :{WHITE}Get ekki byggt járnbrautarspor hér... +STR_ERROR_CAN_T_REMOVE_RAILROAD_TRACK :{WHITE}Get ekki fjarlægt járnbrautarspor héðan... +STR_ERROR_CAN_T_REMOVE_SIGNALS_FROM :{WHITE}Get ekki fjarlægt umferðarmerki héðan... +STR_ERROR_SIGNAL_CAN_T_CONVERT_SIGNALS_HERE :{WHITE}Get ekki breytt umferðarmerkjum hér... +STR_ERROR_THERE_IS_NO_RAILROAD_TRACK :{WHITE}... það er ekkert járnbrautarspor +STR_ERROR_THERE_ARE_NO_SIGNALS :{WHITE}... það eru engin umferðarmerki -STR_ERROR_CAN_T_CONVERT_RAIL :{WHITE}Get ekki breytt lestarteini... +STR_ERROR_CAN_T_CONVERT_RAIL :{WHITE}Get ekki breytt spori... # Road construction errors STR_ERROR_MUST_REMOVE_ROAD_FIRST :{WHITE}Verður að fjarlægja veg fyrst @@ -3633,6 +4077,9 @@ STR_ERROR_CAN_T_BUILD_LOCKS :{WHITE}Ekki hæ STR_ERROR_CAN_T_PLACE_RIVERS :{WHITE}Ekki hægt að setja ár hér... STR_ERROR_MUST_BE_BUILT_ON_WATER :{WHITE}... verður að byggjast á vatni STR_ERROR_CAN_T_BUILD_ON_WATER :{WHITE}... Get ekki byggt á vatni +STR_ERROR_CAN_T_BUILD_ON_SEA :{WHITE}... ekki hægt að byggja á opnu hafi +STR_ERROR_CAN_T_BUILD_ON_CANAL :{WHITE}... ekki hægt að byggja á skipaskurðum +STR_ERROR_CAN_T_BUILD_ON_RIVER :{WHITE}... ekki hægt að byggja á ám STR_ERROR_MUST_DEMOLISH_CANAL_FIRST :{WHITE}Verður að fylla upp í skipaskurð fyrst STR_ERROR_CAN_T_BUILD_AQUEDUCT_HERE :{WHITE}Ekki hægt að byggja vatnsleyðslu hér... @@ -3650,6 +4097,7 @@ STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Brú er STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}Verður að byrja og enda í sömu línu STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... báðir endar brúarinnar verða að vera á landi STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... of löng brú +STR_ERROR_BRIDGE_THROUGH_MAP_BORDER :{WHITE}Brúin myndi enda fyrir utan kortið # Tunnel related errors STR_ERROR_CAN_T_BUILD_TUNNEL_HERE :{WHITE}Get ekki grafið göng hér... @@ -3658,6 +4106,7 @@ STR_ERROR_MUST_DEMOLISH_TUNNEL_FIRST :{WHITE}Verður STR_ERROR_ANOTHER_TUNNEL_IN_THE_WAY :{WHITE}Önnur göng fyrir STR_ERROR_TUNNEL_THROUGH_MAP_BORDER :{WHITE}Göng myndu enda utan korts STR_ERROR_UNABLE_TO_EXCAVATE_LAND :{WHITE}Get ekki breytt landi fyrir hinn enda gangnanna +STR_ERROR_TUNNEL_TOO_LONG :{WHITE}... göngin of long # Object related errors STR_ERROR_TOO_MANY_OBJECTS :{WHITE}... of margir hlutir @@ -3726,9 +4175,13 @@ 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... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Get ekki snúið lest við... +STR_ERROR_TRAIN_START_NO_POWER :Lestin hefur ekkert afl STR_ERROR_CAN_T_MAKE_ROAD_VEHICLE_TURN :{WHITE}Get ekki snúið bifreiðinni við... @@ -3747,14 +4200,16 @@ STR_ERROR_CAN_T_COPY_SHARE_ORDER :{WHITE}... fara STR_ERROR_CAN_T_ADD_ORDER :{WHITE}... farartæki getur ekki farið á þessa stöð STR_ERROR_CAN_T_ADD_ORDER_SHARED :{WHITE}... farartæki sem deilir þessum skipunum getur ekki farið á þessa stöð -STR_ERROR_CAN_T_SHARE_ORDER_LIST :{WHITE}Get ekki deilt áætlun... -STR_ERROR_CAN_T_COPY_ORDER_LIST :{WHITE}Get ekki afritað áætlun... +STR_ERROR_CAN_T_SHARE_ORDER_LIST :{WHITE}Get ekki deilt skipana lista... +STR_ERROR_CAN_T_STOP_SHARING_ORDER_LIST :{WHITE}Get ekki hætt að deila skipun... +STR_ERROR_CAN_T_COPY_ORDER_LIST :{WHITE}Get ekki afritað skipana lista... STR_ERROR_TOO_FAR_FROM_PREVIOUS_DESTINATION :{WHITE}... of langt frá fyrri stað +STR_ERROR_AIRCRAFT_NOT_ENOUGH_RANGE :{WHITE}... flugvél hefur ekki næga drægni # Timetable related errors -STR_ERROR_CAN_T_TIMETABLE_VEHICLE :{WHITE}Get ekki stillt áætlun farartækis... -STR_ERROR_TIMETABLE_ONLY_WAIT_AT_STATIONS :{WHITE}Farartæki getur aðeins beðið við stöð. -STR_ERROR_TIMETABLE_NOT_STOPPING_HERE :{WHITE}Þetta farartæki mun ekki stoppa við þessa stöð. +STR_ERROR_CAN_T_TIMETABLE_VEHICLE :{WHITE}Get ekki gert áætlun farartækis... +STR_ERROR_TIMETABLE_ONLY_WAIT_AT_STATIONS :{WHITE}Farartæki getur aðeins beðið við stöð +STR_ERROR_TIMETABLE_NOT_STOPPING_HERE :{WHITE}Þetta farartæki mun ekki stoppa við þessa stöð # Sign related errors STR_ERROR_TOO_MANY_SIGNS :{WHITE}... of mörg skilti @@ -3765,6 +4220,16 @@ STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}Ekki hæ # Translatable comment for OpenTTD's desktop shortcut STR_DESKTOP_SHORTCUT_COMMENT :Transport Tycoon Deluxe eftirherma +# Translatable descriptions in media/baseset/*.ob* files +STR_BASEGRAPHICS_DOS_DESCRIPTION :Upprunalega grafíkin úr Transport Tycoon Deluxe DOS útgáfunni. +STR_BASEGRAPHICS_DOS_DE_DESCRIPTION :Upprunalega grafíkin úr Transport Tycoon Deluxe DOS (þýsku) útgáfunni. +STR_BASEGRAPHICS_WIN_DESCRIPTION :Upprunalega grafíkin úr Transport Tycoon Deluxe Windows útgáfunni. +STR_BASESOUNDS_DOS_DESCRIPTION :Upprunalega hljóðið úr Transport Tycoon Deluxe DOS útgáfunni. +STR_BASESOUNDS_WIN_DESCRIPTION :Upprunalega hljóðið úr Transport Tycoon Deluxe Windows útgáfunni. +STR_BASESOUNDS_NONE_DESCRIPTION :Hljóðpakki án hljóðs. +STR_BASEMUSIC_WIN_DESCRIPTION :Upprunalega tónlistin úr Transport Tycoon Deluxe Windows útgáfunni. +STR_BASEMUSIC_NONE_DESCRIPTION :Tónlistarpakki sem er í raun án tónlistar. + ##id 0x2000 # Town building names STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1 :Há skrifstofubygging @@ -3887,7 +4352,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) @@ -4096,7 +4561,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 @@ -4211,7 +4676,7 @@ 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_SPACE_STRING :{STRING} {STRING} +STR_JUST_STRING_STRING :{STRING}{STRING} STR_JUST_RAW_STRING :{STRING} # Slightly 'raw' stringcodes with colour or size @@ -4236,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 9f12f6dec..8249dd97f 100644 --- a/src/lang/indonesian.txt +++ b/src/lang/indonesian.txt @@ -21,7 +21,7 @@ ##id 0x0000 STR_NULL : STR_EMPTY : -STR_UNDEFINED :(belum terdefinisi) +STR_UNDEFINED :(tidak terdefinisi) STR_JUST_NOTHING :Tidak ada # Cargo related strings @@ -29,16 +29,16 @@ STR_JUST_NOTHING :Tidak ada STR_CARGO_PLURAL_NOTHING : STR_CARGO_PLURAL_PASSENGERS :Penumpang STR_CARGO_PLURAL_COAL :Batubara -STR_CARGO_PLURAL_MAIL :Dokumen +STR_CARGO_PLURAL_MAIL :Surat STR_CARGO_PLURAL_OIL :Minyak STR_CARGO_PLURAL_LIVESTOCK :Ternak -STR_CARGO_PLURAL_GOODS :Barang jadi +STR_CARGO_PLURAL_GOODS :Barang Jadi STR_CARGO_PLURAL_GRAIN :Gandum STR_CARGO_PLURAL_WOOD :Kayu -STR_CARGO_PLURAL_IRON_ORE :Bijih besi +STR_CARGO_PLURAL_IRON_ORE :Bijih Besi STR_CARGO_PLURAL_STEEL :Baja -STR_CARGO_PLURAL_VALUABLES :Barang berharga -STR_CARGO_PLURAL_COPPER_ORE :Biji Tembaga +STR_CARGO_PLURAL_VALUABLES :Barang Berharga +STR_CARGO_PLURAL_COPPER_ORE :Bijih Tembaga STR_CARGO_PLURAL_MAIZE :Jagung STR_CARGO_PLURAL_FRUIT :Buah STR_CARGO_PLURAL_DIAMONDS :Intan @@ -51,28 +51,28 @@ STR_CARGO_PLURAL_RUBBER :Karet STR_CARGO_PLURAL_SUGAR :Gula STR_CARGO_PLURAL_TOYS :Mainan STR_CARGO_PLURAL_CANDY :Manisan -STR_CARGO_PLURAL_COLA :Cola -STR_CARGO_PLURAL_COTTON_CANDY :Harum manis +STR_CARGO_PLURAL_COLA :Kola +STR_CARGO_PLURAL_COTTON_CANDY :Arum Manis STR_CARGO_PLURAL_BUBBLES :Gelembung STR_CARGO_PLURAL_TOFFEE :Gula-gula STR_CARGO_PLURAL_BATTERIES :Baterai STR_CARGO_PLURAL_PLASTIC :Plastik -STR_CARGO_PLURAL_FIZZY_DRINKS :Minuman berdesis +STR_CARGO_PLURAL_FIZZY_DRINKS :Minuman Berdesis # Singular cargo name STR_CARGO_SINGULAR_NOTHING : STR_CARGO_SINGULAR_PASSENGER :Penumpang STR_CARGO_SINGULAR_COAL :Batubara -STR_CARGO_SINGULAR_MAIL :Dokumen +STR_CARGO_SINGULAR_MAIL :Surat STR_CARGO_SINGULAR_OIL :Minyak STR_CARGO_SINGULAR_LIVESTOCK :Ternak -STR_CARGO_SINGULAR_GOODS :Barang jadi +STR_CARGO_SINGULAR_GOODS :Barang Jadi STR_CARGO_SINGULAR_GRAIN :Gandum STR_CARGO_SINGULAR_WOOD :Kayu -STR_CARGO_SINGULAR_IRON_ORE :Biji besi +STR_CARGO_SINGULAR_IRON_ORE :Bijih Besi STR_CARGO_SINGULAR_STEEL :Baja -STR_CARGO_SINGULAR_VALUABLES :Barang berharga -STR_CARGO_SINGULAR_COPPER_ORE :Biji Tembaga +STR_CARGO_SINGULAR_VALUABLES :Barang Berharga +STR_CARGO_SINGULAR_COPPER_ORE :Bijih Tembaga STR_CARGO_SINGULAR_MAIZE :Jagung STR_CARGO_SINGULAR_FRUIT :Buah STR_CARGO_SINGULAR_DIAMOND :Intan @@ -85,19 +85,19 @@ STR_CARGO_SINGULAR_RUBBER :Karet STR_CARGO_SINGULAR_SUGAR :Gula STR_CARGO_SINGULAR_TOY :Mainan STR_CARGO_SINGULAR_CANDY :Manisan -STR_CARGO_SINGULAR_COLA :Cola -STR_CARGO_SINGULAR_COTTON_CANDY :Harum manis +STR_CARGO_SINGULAR_COLA :Kola +STR_CARGO_SINGULAR_COTTON_CANDY :Arum Manis STR_CARGO_SINGULAR_BUBBLE :Gelembung STR_CARGO_SINGULAR_TOFFEE :Gula-gula STR_CARGO_SINGULAR_BATTERY :Baterai STR_CARGO_SINGULAR_PLASTIC :Plastik -STR_CARGO_SINGULAR_FIZZY_DRINK :Minuman berdesis +STR_CARGO_SINGULAR_FIZZY_DRINK :Minuman Berdesis # Quantity of cargo STR_QUANTITY_NOTHING : STR_QUANTITY_PASSENGERS :{COMMA} penumpang STR_QUANTITY_COAL :{WEIGHT_LONG} batubara -STR_QUANTITY_MAIL :{COMMA} kantong dokumen +STR_QUANTITY_MAIL :{COMMA} kantong surat STR_QUANTITY_OIL :{VOLUME_LONG} minyak STR_QUANTITY_LIVESTOCK :{COMMA} ekor ternak STR_QUANTITY_GOODS :{COMMA} peti barang jadi @@ -107,7 +107,7 @@ STR_QUANTITY_IRON_ORE :{WEIGHT_LONG} b STR_QUANTITY_STEEL :{WEIGHT_LONG} baja STR_QUANTITY_VALUABLES :{COMMA} kantong barang berharga STR_QUANTITY_COPPER_ORE :{WEIGHT_LONG} bijih tembaga -STR_QUANTITY_MAIZE :{WEIGHT_LONG} tepung jagung +STR_QUANTITY_MAIZE :{WEIGHT_LONG} jagung STR_QUANTITY_FRUIT :{WEIGHT_LONG} buah-buahan STR_QUANTITY_DIAMONDS :{COMMA} kantong intan STR_QUANTITY_FOOD :{WEIGHT_LONG} makanan @@ -119,10 +119,10 @@ STR_QUANTITY_RUBBER :{VOLUME_LONG} k STR_QUANTITY_SUGAR :{WEIGHT_LONG} gula STR_QUANTITY_TOYS :{COMMA} mainan STR_QUANTITY_SWEETS :{COMMA} kantong manisan -STR_QUANTITY_COLA :{VOLUME_LONG} cola -STR_QUANTITY_CANDYFLOSS :{WEIGHT_LONG} Harum manis +STR_QUANTITY_COLA :{VOLUME_LONG} kola +STR_QUANTITY_CANDYFLOSS :{WEIGHT_LONG} arum manis STR_QUANTITY_BUBBLES :{COMMA} gelembung -STR_QUANTITY_TOFFEE :{WEIGHT_LONG} kopi toffee +STR_QUANTITY_TOFFEE :{WEIGHT_LONG} gula-gula STR_QUANTITY_BATTERIES :{COMMA} baterai STR_QUANTITY_PLASTIC :{VOLUME_LONG} plastik STR_QUANTITY_FIZZY_DRINKS :{COMMA} minuman berdesis @@ -155,9 +155,9 @@ STR_ABBREV_SUGAR :{TINY_FONT}GL STR_ABBREV_TOYS :{TINY_FONT}MA STR_ABBREV_SWEETS :{TINY_FONT}MN STR_ABBREV_COLA :{TINY_FONT}KL -STR_ABBREV_CANDYFLOSS :{TINY_FONT}HM +STR_ABBREV_CANDYFLOSS :{TINY_FONT}AM STR_ABBREV_BUBBLES :{TINY_FONT}GL -STR_ABBREV_TOFFEE :{TINY_FONT}KT +STR_ABBREV_TOFFEE :{TINY_FONT}GG STR_ABBREV_BATTERIES :{TINY_FONT}BA STR_ABBREV_PLASTIC :{TINY_FONT}PL STR_ABBREV_FIZZY_DRINKS :{TINY_FONT}MB @@ -195,25 +195,32 @@ STR_UNITS_VELOCITY_IMPERIAL :{COMMA} mil/j STR_UNITS_VELOCITY_METRIC :{COMMA} km/jam STR_UNITS_VELOCITY_SI :{COMMA} meter/detik -STR_UNITS_POWER_IMPERIAL :{COMMA}hp -STR_UNITS_POWER_METRIC :{COMMA}hp +STR_UNITS_POWER_IMPERIAL :{COMMA}dk +STR_UNITS_POWER_METRIC :{COMMA}dk 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 STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} ton 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} 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}Kata pen STR_LIST_FILTER_OSKTITLE :{BLACK}Masukkan kata penyaring STR_LIST_FILTER_TOOLTIP :{BLACK}Masukkan kata kunci untuk menyaring daftar +STR_TOOLTIP_GROUP_ORDER :{BLACK}Pilihkan urutan kelompok STR_TOOLTIP_SORT_ORDER :{BLACK}Pilih modus pengurutan (menurun/menaik) STR_TOOLTIP_SORT_CRITERIA :{BLACK}Pilih kriteria pengurutan STR_TOOLTIP_FILTER_CRITERIA :{BLACK}Pilih kriteria @@ -232,7 +240,8 @@ STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Tutup wi STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Judul Jendela - klik dan tahan disini untuk memindahkan jendela STR_TOOLTIP_SHADE :{BLACK}Gulung jendela - Hanya tampilkan judulnya STR_TOOLTIP_DEBUG :{BLACK}Tampilkan informasi debug NewGRF -STR_TOOLTIP_STICKY :{BLACK}Catat jendela ini agar tidak tertutup saat di beri perintah "Tutup Semua Jendela" +STR_TOOLTIP_DEFSIZE :{BLACK}Mengubah ukuran jendela ke ukuran standar. Ctrl+Click untuk menyimpan ukuran sekarang sebagai standar +STR_TOOLTIP_STICKY :{BLACK}Tandai jendela ini agar tidak tertutup dengan perintah "Tutup Semua Jendela". Ctrl+klik untuk menjadikannya tetap STR_TOOLTIP_RESIZE :{BLACK}Klik dan Geser untuk mengubah ukuran jendela ini. STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Tandai besar/kecil ukuran jendela STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Batang Geser - Geser daftar ke atas/bawah @@ -256,7 +265,6 @@ STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}Area: {N # These are used in buttons -STR_SORT_BY_CAPTION_POPULATION :{BLACK}Populasi STR_SORT_BY_CAPTION_NAME :{BLACK}Nama STR_SORT_BY_CAPTION_DATE :{BLACK}Tanggal # These are used in dropdowns @@ -277,23 +285,26 @@ STR_SORT_BY_LENGTH :Panjang STR_SORT_BY_LIFE_TIME :Sisa masa pakai STR_SORT_BY_TIMETABLE_DELAY :Penundaan jadwal STR_SORT_BY_FACILITY :Tipe Stasiun -STR_SORT_BY_WAITING :Nilai tunggu kargo +STR_SORT_BY_WAITING_TOTAL :Total kargo menunggu +STR_SORT_BY_WAITING_AVAILABLE :Kargo menunggu yang tersedia STR_SORT_BY_RATING_MAX :Rating kargo tertinggi STR_SORT_BY_RATING_MIN :Rating kargo terendah 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 # 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 @@ -301,6 +312,8 @@ STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Tampilka STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Tampilkan daftar stasiun perusahaan STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Tampilkan informasi keuangan perusahaan STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Tampilkan informasi umum perusahaan +STR_TOOLBAR_TOOLTIP_DISPLAY_STORY_BOOK :{BLACK}Tampilkan buku cerita +STR_TOOLBAR_TOOLTIP_DISPLAY_GOALS_LIST :{BLACK}Tampilkan daftar sasaran STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Tampilkan grafik STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Tampilkan daftar perusahaan STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Danai pembangunan industri baru atau daftar semua industri @@ -359,7 +372,7 @@ STR_SETTINGS_MENU_SIGNS_DISPLAYED :Tanda ditampilk STR_SETTINGS_MENU_SHOW_COMPETITOR_SIGNS :Tampilan penanda dan nama pesaing STR_SETTINGS_MENU_FULL_ANIMATION :Animasi penuh STR_SETTINGS_MENU_FULL_DETAIL :Detail penuh -STR_SETTINGS_MENU_TRANSPARENT_BUILDINGS :Bangunan tembus pandang +STR_SETTINGS_MENU_TRANSPARENT_BUILDINGS :Transparankan bangunan STR_SETTINGS_MENU_TRANSPARENT_SIGNS :Transparankan tanda-tanda ############ range ends here @@ -371,19 +384,19 @@ STR_FILE_MENU_SEPARATOR : STR_FILE_MENU_EXIT :Keluar ############ range ends here -############ range for map menu starts +# map menu STR_MAP_MENU_MAP_OF_WORLD :Peta Dunia STR_MAP_MENU_EXTRA_VIEW_PORT :Viewport ekstra +STR_MAP_MENU_LINGRAPH_LEGEND :Legenda aliran kargo STR_MAP_MENU_SIGN_LIST :Daftar Tanda -############ range for town menu starts, yet the town directory is shown in the map menu in the scenario editor + +############ range for town menu starts STR_TOWN_MENU_TOWN_DIRECTORY :Daftar kota -############ end of the 'Display map' dropdown STR_TOWN_MENU_FOUND_TOWN :Bangun Kota -############ end of the 'Town' dropdown +############ range ends here ############ range for subsidies menu starts STR_SUBSIDIES_MENU_SUBSIDIES :Subsidi -STR_SUBSIDIES_MENU_GOAL :Target saat ini ############ range ends here ############ range for graph menu starts @@ -397,7 +410,7 @@ STR_GRAPH_MENU_CARGO_PAYMENT_RATES :Daftar biaya ka ############ range for company league menu starts STR_GRAPH_MENU_COMPANY_LEAGUE_TABLE :Tabel Perusahaan -STR_GRAPH_MENU_DETAILED_PERFORMANCE_RATING :Rating kemampuan secara rinci +STR_GRAPH_MENU_DETAILED_PERFORMANCE_RATING :Penilaian terperinci kinerja STR_GRAPH_MENU_HIGHSCORE :Tabel Skor ############ range ends here @@ -454,9 +467,10 @@ STR_ABOUT_MENU_GIANT_SCREENSHOT :Ambil gambar ke STR_ABOUT_MENU_ABOUT_OPENTTD :Tentang 'OpenTTD' STR_ABOUT_MENU_SPRITE_ALIGNER :Penjajar Sprite STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Hidup/Matikan kotak batas +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 @@ -472,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 @@ -514,7 +546,7 @@ STR_MONTH_JUL :Juli STR_MONTH_AUG :Agustus STR_MONTH_SEP :September STR_MONTH_OCT :Oktober -STR_MONTH_NOV :November +STR_MONTH_NOV :Nopember STR_MONTH_DEC :Desember ############ range for months ends @@ -529,7 +561,7 @@ STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COM STR_GRAPH_OPERATING_PROFIT_CAPTION :{WHITE}Grafik keuntungan operasional STR_GRAPH_INCOME_CAPTION :{WHITE}Grafik Pendapatan STR_GRAPH_CARGO_DELIVERED_CAPTION :{WHITE}Jumlah kargo terkirim -STR_GRAPH_COMPANY_PERFORMANCE_RATINGS_CAPTION :{WHITE}Peringkat rating perusahaan (rating maksimal=1000) +STR_GRAPH_COMPANY_PERFORMANCE_RATINGS_CAPTION :{WHITE}Peringkat kinerja perusahaan (peringkat maksimal=1000) STR_GRAPH_COMPANY_VALUES_CAPTION :{WHITE}Nilai Perusahaan STR_GRAPH_CARGO_PAYMENT_RATES_CAPTION :{WHITE}Daftar tarif kargo @@ -542,7 +574,7 @@ STR_GRAPH_CARGO_TOOLTIP_DISABLE_ALL :{BLACK}menampil STR_GRAPH_CARGO_PAYMENT_TOGGLE_CARGO :{BLACK}Pilih jenis kargo yang akan ditampilkan STR_GRAPH_CARGO_PAYMENT_CARGO :{TINY_FONT}{BLACK}{STRING} -STR_GRAPH_PERFORMANCE_DETAIL_TOOLTIP :{BLACK}Perlihatkan detil rating kekuatan +STR_GRAPH_PERFORMANCE_DETAIL_TOOLTIP :{BLACK}Tampilkan rincian penilaian kinerja # Graph key window STR_GRAPH_KEY_CAPTION :{WHITE}Grafik item perusahaan @@ -562,7 +594,7 @@ STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_PRESIDENT :Presiden STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TYCOON :Tycoon # Performance detail window -STR_PERFORMANCE_DETAIL :{WHITE}Rating kemampuan secara rinci +STR_PERFORMANCE_DETAIL :{WHITE}Penilaian terperinci kinerja STR_PERFORMANCE_DETAIL_KEY :{BLACK}Detail STR_PERFORMANCE_DETAIL_AMOUNT_CURRENCY :{BLACK}({CURRENCY_SHORT}/{CURRENCY_SHORT}) STR_PERFORMANCE_DETAIL_AMOUNT_INT :{BLACK}({COMMA}/{COMMA}) @@ -631,7 +663,7 @@ STR_ERROR_NO_SONGS :{WHITE}Set Musi # Playlist window STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}Pilihan program Musik STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} "{STRING}" -STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}Daftar Track +STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}Daftar rel STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}Program - '{STRING}' STR_PLAYLIST_CLEAR :{TINY_FONT}{BLACK}Kosong STR_PLAYLIST_TOOLTIP_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}Hapus program saat ini (hanya Bebas 1 atau Bebas 2) @@ -642,14 +674,14 @@ STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}Klik pad STR_HIGHSCORE_TOP_COMPANIES_WHO_REACHED :{BIG_FONT}{BLACK}Perusahaan tertinggi yang mencapai tahun {NUM} STR_HIGHSCORE_TOP_COMPANIES_NETWORK_GAME :{BIG_FONT}{BLACK}Tabel Liga Perusahaan {NUM} STR_HIGHSCORE_POSITION :{BIG_FONT}{BLACK}{COMMA}. -STR_HIGHSCORE_PERFORMANCE_TITLE_BUSINESSMAN :Pengusaha +STR_HIGHSCORE_PERFORMANCE_TITLE_BUSINESSMAN :Pebisnis STR_HIGHSCORE_PERFORMANCE_TITLE_ENTREPRENEUR :Pengusaha -STR_HIGHSCORE_PERFORMANCE_TITLE_INDUSTRIALIST :Ahli Industri +STR_HIGHSCORE_PERFORMANCE_TITLE_INDUSTRIALIST :Industrialis STR_HIGHSCORE_PERFORMANCE_TITLE_CAPITALIST :Kapitalis STR_HIGHSCORE_PERFORMANCE_TITLE_MAGNATE :Tokoh terkemuka STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL :Jutawan STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY :Tycoon abad ini -STR_HIGHSCORE_NAME :{BIG_FONT}{PRESIDENT_NAME}, {COMPANY} +STR_HIGHSCORE_NAME :{PRESIDENT_NAME}, {COMPANY} STR_HIGHSCORE_STATS :{BIG_FONT}'{STRING}' ({COMMA}) STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{BLACK}{COMPANY} mencapai status '{STRING}' ! STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{WHITE}{PRESIDENT_NAME} dari {COMPANY} mencapai status '{STRING}' ! @@ -660,17 +692,20 @@ STR_SMALLMAP_CAPTION :{WHITE}Peta - { STR_SMALLMAP_TYPE_CONTOURS :Kontur STR_SMALLMAP_TYPE_VEHICLES :Kendaraan STR_SMALLMAP_TYPE_INDUSTRIES :Industri +STR_SMALLMAP_TYPE_ROUTEMAP :Aliran kargo STR_SMALLMAP_TYPE_ROUTES :Rute STR_SMALLMAP_TYPE_VEGETATION :Vegetasi STR_SMALLMAP_TYPE_OWNERS :Pemilik STR_SMALLMAP_TOOLTIP_SHOW_LAND_CONTOURS_ON_MAP :{BLACK}Tampilkan kontur tanah pada peta STR_SMALLMAP_TOOLTIP_SHOW_VEHICLES_ON_MAP :{BLACK}Tampilkan kendaraan dalam peta STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRIES_ON_MAP :{BLACK}Tampilkan industri dalam peta +STR_SMALLMAP_TOOLTIP_SHOW_LINK_STATS_ON_MAP :{BLACK}Tampilkan aliran kargo di peta STR_SMALLMAP_TOOLTIP_SHOW_TRANSPORT_ROUTES_ON :{BLACK}Tampilkan rute kendaraan di peta -STR_SMALLMAP_TOOLTIP_SHOW_VEGETATION_ON_MAP :{BLACK}Tampilkan pepohonan di peta +STR_SMALLMAP_TOOLTIP_SHOW_VEGETATION_ON_MAP :{BLACK}Tampilkan vegetasi di peta STR_SMALLMAP_TOOLTIP_SHOW_LAND_OWNERS_ON_MAP :{BLACK}Tampilkan pemilik area di peta STR_SMALLMAP_TOOLTIP_INDUSTRY_SELECTION :{BLACK}Klik di tipe industri untuk menampilkannya. Ctrl+klik untuk mematikan semuanya, kecuali yang terpilih. Ctrl+klik lagi untuk menyalakannya kembali. -STR_SMALLMAP_TOOLTIP_COMPANY_SELECTION :{BLACK}Klik pada nama perusajaan untuk menampilkan propertinya, Ctrl+klik untuk mematikan semuanya, kecuali yang terpilih. Ctrl+klik lagi untuk menyalakannya kembali +STR_SMALLMAP_TOOLTIP_COMPANY_SELECTION :{BLACK}Klik pada nama perusahaan untuk menampilkan propertinya, Ctrl+klik untuk mematikan semuanya, kecuali yang terpilih. Ctrl+klik lagi untuk menyalakannya kembali +STR_SMALLMAP_TOOLTIP_CARGO_SELECTION :{BLACK}Tekan di kargo untuk mengganti tampilan propertinya. Ctrl+Click akan mematikan semua kargo selain yang terpilih. Ctrl+Click sekali lagi akan menghidupkan kembali semua kargo STR_SMALLMAP_LEGENDA_ROADS :{TINY_FONT}{BLACK}Jalan raya STR_SMALLMAP_LEGENDA_RAILROADS :{TINY_FONT}{BLACK}Rel kereta @@ -704,6 +739,7 @@ STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLA STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Hidup/matikan tampilan nama kota di peta STR_SMALLMAP_CENTER :{BLACK}Tengahkan peta kecil pada posisi ini 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}Matikan semua @@ -714,6 +750,8 @@ STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES :{BLACK}Tampilka STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}tampilkan/sembunyikan heightmap STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES :{BLACK}Hilangkan semua properti perusahaan di peta STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}Tampilkan semua properti perusahaan di peta +STR_SMALLMAP_TOOLTIP_DISABLE_ALL_CARGOS :{BLACK}Jangan tampilkan kargo di peta +STR_SMALLMAP_TOOLTIP_ENABLE_ALL_CARGOS :{BLACK}Tampilkan semua kargo di peta # Status bar messages STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Tampilkan pesan atau laporan berita terakhir @@ -738,14 +776,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}! @@ -790,13 +828,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 @@ -875,15 +912,12 @@ STR_GAME_OPTIONS_CURRENCY_LTL :Litas Lithuania STR_GAME_OPTIONS_CURRENCY_KRW :Won Korea Selatan (KRW) STR_GAME_OPTIONS_CURRENCY_ZAR :Rand Afrika Selatan (ZAR) STR_GAME_OPTIONS_CURRENCY_CUSTOM :Atur sendiri... +STR_GAME_OPTIONS_CURRENCY_GEL :Lari Georgia (GEL) +STR_GAME_OPTIONS_CURRENCY_IRR :Rial Iran (IRR) ############ end of currency region -STR_GAME_OPTIONS_MEASURING_UNITS_FRAME :{BLACK}Satuan pengukuran -STR_GAME_OPTIONS_MEASURING_UNITS_DROPDOWN_TOOLTIP :{BLACK}Pilihan satuan pengukuran ############ start of measuring units region -STR_GAME_OPTIONS_MEASURING_UNITS_IMPERIAL :Imperial -STR_GAME_OPTIONS_MEASURING_UNITS_METRIC :Metrik -STR_GAME_OPTIONS_MEASURING_UNITS_SI :Standar Internasional ############ end of measuring units region STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Kendaraan jalan raya @@ -921,11 +955,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 @@ -937,9 +973,6 @@ 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_BASE_GRF :{BLACK}Set Grafik Dasar STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Pilih grafik dasar yang digunakan STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} berkas hilang atau rusak @@ -954,6 +987,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 @@ -972,7 +1006,7 @@ STR_CURRENCY_SET_CUSTOM_CURRENCY_PREFIX_TOOLTIP :{BLACK}Masukkan STR_CURRENCY_SUFFIX :{LTBLUE}Akhiran: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_SUFFIX_TOOLTIP :{BLACK}Masukkan akhiran untuk mata uang -STR_CURRENCY_SWITCH_TO_EURO :{LTBLUE}Menggunakan Euro tahun: {ORANGE}{NUM} +STR_CURRENCY_SWITCH_TO_EURO :{LTBLUE}Berganti ke Euro: {ORANGE}{NUM} STR_CURRENCY_SWITCH_TO_EURO_NEVER :{LTBLUE}Menggunakan Euro: {ORANGE}tidak pernah STR_CURRENCY_SET_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Masukkan tahun perpindahan ke Euro STR_CURRENCY_DECREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Berpindah ke Euro lebih awal @@ -1045,19 +1079,34 @@ STR_CONFIG_SETTING_FILTER_TITLE :{BLACK}Penyarin STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}Perluas semua STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}Persempit semua STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT :(penjelasan belum tersedia) - -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_DEFAULT_VALUE :{LTBLUE}Nilai standar: {ORANGE}{STRING} +STR_CONFIG_SETTING_TYPE :{LTBLUE}Tipe setting: {ORANGE}{STRING} +STR_CONFIG_SETTING_TYPE_CLIENT :Setting klien (tidak disimpan di penyimpanan; mempengaruhi semua permainan) +STR_CONFIG_SETTING_TYPE_GAME_MENU :Setting permainan (disimpan dalam penyimpanan; hanya mempengaruhi permainan baru) +STR_CONFIG_SETTING_TYPE_GAME_INGAME :Setting permainan (disimpan dalam penyimpanan; hanya mempengaruhi permainan saat ini)) +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_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 STR_CONFIG_SETTING_RESTRICT_ADVANCED :Pengaturan lanjut STR_CONFIG_SETTING_RESTRICT_ALL :Pengaturan mahir / semua aturan 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 +STR_CONFIG_SETTING_TYPE_DROPDOWN_HELPTEXT :{BLACK}Membatasi urutan / tabel di bawah ke setting tertentu +STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :Semua setting +STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :Setting klien (tidak disimpan di penyimpanan; mempengaruhi semua permainan) STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Pengaturan permainan (ikut tersimpan; hanya memiliki efek pada permainan baru) 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 @@ -1075,8 +1124,29 @@ STR_CONFIG_SETTING_HORIZONTAL_POS_LEFT :Kiri STR_CONFIG_SETTING_HORIZONTAL_POS_CENTER :Tengah STR_CONFIG_SETTING_HORIZONTAL_POS_RIGHT :Kanan +STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN :Maksimum pinjaman awal: {STRING} +STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Jumlah maksimum yang dapat dipinjam (tanpa menghitung inflasi) +STR_CONFIG_SETTING_INTEREST_RATE :Bunga pinjaman: {STRING} +STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Bunga pinjaman; juga mengendalikan inflasi jika dinyalakan +STR_CONFIG_SETTING_RUNNING_COSTS :Biaya pemeliharaan: {STRING} +STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT :Menetapkan tingkat biaya pemeliharaan dan biaya untuk menjalankan kendaraan dan infrastruktur +STR_CONFIG_SETTING_CONSTRUCTION_SPEED :Kecepatan konstruksi: {STRING} +STR_CONFIG_SETTING_CONSTRUCTION_SPEED_HELPTEXT :Membatasi jumlah kegiatan konstruksi untuk AI +STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS :Kendaraan mogok: {STRING} +STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS_HELPTEXT :Mengontrol seberapa sering kendaraan yang tidak diservis dapat rusak +STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER :Pengalian jumlah subsidi: {STRING} +STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT :Menetapkan banyaknya pembayaran untuk koneksi yang disubsidi +STR_CONFIG_SETTING_CONSTRUCTION_COSTS :Biaya konstruksi: {STRING} +STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :Menetapkan tingkat biaya konstruksi dan pembelian +STR_CONFIG_SETTING_RECESSIONS :Resesi : {STRING} +STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Jika dinyalakan, resesi akan terjadi dalam beberapa tahun sekali. Saat resesi semua produksi produk akan berkurang (kembali normal saat resesi selesai) +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 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_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} @@ -1089,7 +1159,7 @@ STR_CONFIG_SETTING_TILE_LENGTH :{COMMA} ubin STR_CONFIG_SETTING_SMOKE_AMOUNT :Banyaknya asap / percikan lokomotif: {STRING} STR_CONFIG_SETTING_SMOKE_AMOUNT_HELPTEXT :Atur berapa banyak asap dan api dari kendaraan STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL :Model akselerasi kereta: {STRING} -STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL_HELPTEXT :Pilih model fisik dari percepatan kereta. Model asli mengurangi kecepatan kendaraan dalam tikungan/tanjakan jumlah sama. Model realistis mengurangi kecepatan dalam tikungan/tanjakan berdasarkan berbagai hal seperti panjang kendaraan dan kekuatan traksi. +STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL_HELPTEXT :Pilih model fisika dari percepatan kereta. Model asli mengurangi kecepatan kendaraan dalam tikungan/tanjakan jumlah sama. Model realistis mengurangi kecepatan dalam tikungan/tanjakan berdasarkan berbagai hal seperti panjang kendaraan dan kekuatan traksi. STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL :Model kendaraan percepatan: {STRING} STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL_HELPTEXT :Pilih model fisik untuk asklerasi kendaraan. Model asli mengurangi kecepatan kendaraan dalam tikungan/tanjakan jumlah sama. Model realistis mengurangi kecepatan dalam tikungan/tanjakan berdasarkan berbagai hal seperti panjang kendaraan dan kekuatan traksi. STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS :Kemiringan untuk kereta: {STRING} @@ -1098,213 +1168,402 @@ STR_CONFIG_SETTING_PERCENTAGE :{COMMA}% STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS :Kemiringan untuk kendaraan: {STRING} STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS_HELPTEXT :Kemiringan untuk kendaraan. Nilai yang lebih tinggi membuat lebih sulit menaiki bukit STR_CONFIG_SETTING_FORBID_90_DEG :Kereta dan kapal dilarang belok 90 derajat: {STRING} -STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :Putar balik terjadi ketika trek horizontal diikuti langsung oleh trek vertikal di ubin berikutnya, jadi membuatnya berputar balik di ujung ubin daripada memutar 45 derajat ke kombinasi trek lain. Ini juga berlaku pada radius putaran kapal. -STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :Ijinkan menggabung stasiun meski tdk menempel: {STRING} +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_GRADUAL_LOADING :Angkut secara bertahap: {STRING} STR_CONFIG_SETTING_INFLATION :Inflasi: {STRING} -STR_CONFIG_SETTING_SELECTGOODS :Menerima kargo di suatu stasiun hanya jika dibutuhkan: {STRING} +STR_CONFIG_SETTING_INFLATION_HELPTEXT :Perbolehkan inflasi dalam ekonomi, dimana biaya naik sedikit lebih cepat daripada pembayaran +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_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} +STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_HELPTEXT :Cara menemukan industri primer. 'tidak ada' berarti tidak mungkin menemukan industri primer pada permainan. 'prospektif' berarti industri primer hanya ditemukan di tempat tertentu. 'seperti industri lainnya' berarti industri primer ditemukan seperti industri lainnya STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :Tidak ada STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :Seperti industri lainnya STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :Prospektif +STR_CONFIG_SETTING_INDUSTRY_PLATFORM :Luas area datar disekitar industri: {STRING} +STR_CONFIG_SETTING_INDUSTRY_PLATFORM_HELPTEXT :Jumlah dataran kosong di sekitar industri. Ini bisa digunakan untuk membangun rel,dll STR_CONFIG_SETTING_MULTIPINDTOWN :Ijinkan lebih dari satu industri sejenis dalam satu kota: {STRING} +STR_CONFIG_SETTING_MULTIPINDTOWN_HELPTEXT :Normalnya, sebuah kota tidak mau ada lebih dari satu industri sejenis. Dengan setelan ini, kota membolehkan ada industri sejenis lebih dari satu +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 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 STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :Tujuan baru standarnya adalah 'non-stop': {STRING} +STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT_HELPTEXT :Biasanya, kendaraan akan berhenti di setiap stasiun yang di lewati. Dengan mengaktifkan pengaturan ini, maka kendaraan akan melewati semua stasiun dalam perjalanan ke tujuan akhir. Perhatikan, bahwa pengaturan ini hanya mendefinisikan nilai default. Perintah individu dapat diatur STR_CONFIG_SETTING_STOP_LOCATION :Order kereta yang baru aslinya berhenti {STRING} dari stasiun +STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :Tempat kereta akan berhenti di peron stasiun. 'Dekat akhir' berarti dekat dengan titik masuk, 'tengah' berarti di tengah-tengah peron, dan 'jauh dari akhir' berarti jauh dari titik masuk 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_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 +STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT_FULLSCREEN :Viewport utama, hanya layar penuh +STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT :Viewport utama +STR_CONFIG_SETTING_AUTOSCROLL_EVERY_VIEWPORT :Semua viewport STR_CONFIG_SETTING_BRIBE :Ijinkan kolusi pada penguasa setempat: {STRING} +STR_CONFIG_SETTING_BRIBE_HELPTEXT :Membolehkan perusahaan untuk menyuap pemerintah kota. Jika tertangkap, perusahaan tidak bisa berinteraksi dengan kota selama 6 bulan STR_CONFIG_SETTING_ALLOW_EXCLUSIVE :Ijinkan pembelian hak ekslusif pengelolaan transportasi: {STRING} +STR_CONFIG_SETTING_ALLOW_EXCLUSIVE_HELPTEXT :Jika perusahaan membeli hak monopoli transportasi for sebuah kota, stasiun lawan (penumpang dan kargo) tidak akan menerima apapun selama setahun STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS :Ijinkan mendanai bangunan: {STRING} +STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS_HELPTEXT :Perbolehkan perusahaan untuk memberi dana kepada kota untuk membangun bangunan baru STR_CONFIG_SETTING_ALLOW_FUND_ROAD :Ijinkan pendanaan rekonstruksi jalan lokal: {STRING} +STR_CONFIG_SETTING_ALLOW_FUND_ROAD_HELPTEXT :Membolehkan perusahaan memberi uang ke kota untuk re-konstuksi jalan untuk menyabotase kendaraan jalan raya STR_CONFIG_SETTING_ALLOW_GIVE_MONEY :Ijinkan pengiriman uang ke perusahaan lain: {STRING} +STR_CONFIG_SETTING_ALLOW_GIVE_MONEY_HELPTEXT :Perbolehkan pemindahan uang antar perusahaan di mode multiplayer STR_CONFIG_SETTING_FREIGHT_TRAINS :Faktor kali muatan untuk simulasi kereta yang berat: {STRING} +STR_CONFIG_SETTING_FREIGHT_TRAINS_HELPTEXT :Tetapkan dampak dari barang bawaan terhadap kereta. Nilai lebih tinggi membuat kereta barang membutuhkan lebih banyak tenaga, terutama di perbukitan +STR_CONFIG_SETTING_PLANE_SPEED :Faktor kecepatan pesawat: {STRING} +STR_CONFIG_SETTING_PLANE_SPEED_HELPTEXT :Menyesuaikan kecepatan relatif pesawat dengan kendaraan lain,untuk mereduksi pendapatan melalui pesawat +STR_CONFIG_SETTING_PLANE_SPEED_VALUE :1 / {COMMA} STR_CONFIG_SETTING_PLANE_CRASHES :Frekuensi kecelakaan pesawat: {STRING} +STR_CONFIG_SETTING_PLANE_CRASHES_HELPTEXT :Atur jumlah kecelakaan pesawat yang terjadi STR_CONFIG_SETTING_PLANE_CRASHES_NONE :Nihil STR_CONFIG_SETTING_PLANE_CRASHES_REDUCED :Dikurangi STR_CONFIG_SETTING_PLANE_CRASHES_NORMAL :Normal STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Ijinkan terminal drive-thru pada jalan milik kota: {STRING} +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_ADJACENT_STATIONS :Ijinkan membangun stasiun berdampingan: {STRING} -STR_CONFIG_SETTING_DYNAMIC_ENGINES :Aktifkan beberapa pengaturan mesin NewGRF : {STRING} +STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT :Membolehkan konstruksi halte di jalan yang dimiliki perusahaan lain 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 :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 STR_CONFIG_SETTING_WARN_LOST_VEHICLE :Ingatkan saat kendaraan tersesat: {STRING} +STR_CONFIG_SETTING_WARN_LOST_VEHICLE_HELPTEXT :Menampilkan pesan tentang kendaraan yang tidak menemukan arah selanjutnya STR_CONFIG_SETTING_ORDER_REVIEW :Tinjau pemberhentian kendaraan: {STRING} +STR_CONFIG_SETTING_ORDER_REVIEW_HELPTEXT :Jika dinyalakan, perintah kendaraan akan sewaktu-waktu diperiksa, dan beberapa masalah akan dilaporkan dengan surat kabar when jika dideteksi STR_CONFIG_SETTING_ORDER_REVIEW_OFF :Tidak STR_CONFIG_SETTING_ORDER_REVIEW_EXDEPOT :Ya, tetapi selain kendaraan yang berhenti STR_CONFIG_SETTING_ORDER_REVIEW_ON :Semua kendaraan STR_CONFIG_SETTING_WARN_INCOME_LESS :Ingatkan jika ada kendaraan yg merugi: {STRING} +STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :Jika dinyalakan,sebuah surat kabar akan dikirim jika kendaraan tidak mendapat keuntungan dalam satu tahun STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Kendaraan tidak pernah kadaluarsa: {STRING} +STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :Jika dinyalakan,semua model kendaraan akan ada selamanya sejak pendesainanya STR_CONFIG_SETTING_AUTORENEW_VEHICLE :Perbarui otomatis kendaraan yang telah tua: {STRING} +STR_CONFIG_SETTING_AUTORENEW_VEHICLE_HELPTEXT :Jika dinyalakan, kendaraan mendekati akhir usianya akan secara otomatis diperbarui jika masih tersedia kendaraan itu +STR_CONFIG_SETTING_AUTORENEW_MONTHS :Perbarui otomatis jika kendaraan {STRING} umur maksimal +STR_CONFIG_SETTING_AUTORENEW_MONTHS_HELPTEXT :Umur relatif saat sebuah kendaraan akan diperbarui otomatis +STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_BEFORE :{COMMA} bulan sebelumnya +STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_AFTER :{COMMA} bulan sesudahnya STR_CONFIG_SETTING_AUTORENEW_MONEY :Minimal dana tersedia untuk perbaruan otomatis: {STRING} +STR_CONFIG_SETTING_AUTORENEW_MONEY_HELPTEXT :Jumlah uang minimal yang harus ada di bank sebelum mamperbarui otomatis kendaraan +STR_CONFIG_SETTING_ERRMSG_DURATION :Durasi pesan kesalahan: {STRING} +STR_CONFIG_SETTING_ERRMSG_DURATION_HELPTEXT :Durasi penampilan pesan kesalahan di jendela merah. Beberapa pesan kesalahan tidak ditutup secara otomatis setelah ini, tapi harus ditutup secara manual +STR_CONFIG_SETTING_ERRMSG_DURATION_VALUE :{COMMA} detik +STR_CONFIG_SETTING_HOVER_DELAY :Tampilkan tooltips: {STRING} +STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Delay sebelum bantuan peralatan ditampilkan saat mouse diatas sebuah ikon. Selain itu bantuan peralatan juga dapat ditampilkan dengan klik kanan +STR_CONFIG_SETTING_HOVER_DELAY_VALUE :Melayang untuk {COMMA} detik +STR_CONFIG_SETTING_HOVER_DELAY_DISABLED :Klik kanan STR_CONFIG_SETTING_POPULATION_IN_LABEL :Tampilkan populasi kota di label nama kota: {STRING} +STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :Tampilkan populasi kota di label nama kota pada peta 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 :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_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 +STR_CONFIG_SETTING_STATION_SPREAD :Penyebaran stasiun maksimal: {STRING} +STR_CONFIG_SETTING_STATION_SPREAD_HELPTEXT :Area maksimal dari sebuah stasiun yang menyebar. Semakin luas semakin memperlambat permainan STR_CONFIG_SETTING_SERVICEATHELIPAD :Perbaikan helikopter di helipad secara otomatis: {STRING} +STR_CONFIG_SETTING_SERVICEATHELIPAD_HELPTEXT :Perbaiki helikopter setelah mendarat, bahkan jika di bandara tidak ada dipo STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR :Tempel toolbar Landsekap ke toolbar rel/jalan/air/bandara: {STRING} +STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR_HELPTEXT :Saat membuka toolbar konstruksi untuk jenis transportasi, akan membuka toolbar proses lansekap STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR :Warna daratan pada peta kecil: {STRING} +STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :Warna daratan di peta dunia STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :Hijau STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :Hijau Gelap STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Violet STR_CONFIG_SETTING_REVERSE_SCROLLING :Berbalik Arah: {STRING} +STR_CONFIG_SETTING_REVERSE_SCROLLING_HELPTEXT :Untuk menggeser peta berlawanan arah dengan klik kanan. Ketika dimatikan, mouse menggeser kamera. Ketika dinyalakan, mouse menggeser peta STR_CONFIG_SETTING_SMOOTH_SCROLLING :Pergeseran pandangan viewport secara halus: {STRING} +STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Menyetel bagaimana tampilan utama menggeser posisi di peta kecil. Jika dinyalakan, peta akan bergeser secara halus. Jika dimatikan, peta langsung menuju tempat yang di klik STR_CONFIG_SETTING_MEASURE_TOOLTIP :Tampilkan ukuran ketika menggunakan alat pembangun: {STRING} +STR_CONFIG_SETTING_MEASURE_TOOLTIP_HELPTEXT :Tampilkan perbedaan jarak dan tinggi ubin saat proses pembangunan STR_CONFIG_SETTING_LIVERIES :Tampilkan warna perusahaan: {STRING} +STR_CONFIG_SETTING_LIVERIES_HELPTEXT :Kontrol penggunaan tipe kendaraan spesifik untuk kendaraan (dalam perusahaan tertentu) STR_CONFIG_SETTING_LIVERIES_NONE :Tidak ada STR_CONFIG_SETTING_LIVERIES_OWN :Perusahaan milik sendiri STR_CONFIG_SETTING_LIVERIES_ALL :Semua Perusahaan STR_CONFIG_SETTING_PREFER_TEAMCHAT :Lebih suka Tim Chat dengan : {STRING} +STR_CONFIG_SETTING_PREFER_TEAMCHAT_HELPTEXT :Ubah ikatan obrolan internal dan awam dari perusahaan ke resp. STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING :Fungsi tombol scroll mouse: {STRING} +STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING_HELPTEXT :Membolehkan menggeser dengan ban mouse 2 dimensi STR_CONFIG_SETTING_SCROLLWHEEL_ZOOM :Perbesar Peta STR_CONFIG_SETTING_SCROLLWHEEL_SCROLL :Geser Peta STR_CONFIG_SETTING_SCROLLWHEEL_OFF :Non-aktifkan STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER :Kecepatan pergeseran Peta: {STRING} +STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER_HELPTEXT :Mengatur sensitif nya penggeseran dengan mouse +STR_CONFIG_SETTING_OSK_ACTIVATION :Keyboard di layar: {STRING} +STR_CONFIG_SETTING_OSK_ACTIVATION_HELPTEXT :Pilih metoda membuka keyboard di layar untuk memasukkan teks ke dalam editbox menggunakan perangkat berujung. Berguna untuk perangkat-perangkat kecil tak ber-keyboard. +STR_CONFIG_SETTING_OSK_ACTIVATION_DISABLED :Non-aktifkan +STR_CONFIG_SETTING_OSK_ACTIVATION_DOUBLE_CLICK :Klik ganda +STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK_FOCUS :Klik sekali (saat tersorot) +STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK :Klik sekali (langsung) STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU :Emulasikan klik kanan: {STRING} +STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_HELPTEXT :Pilih metode untuk meng-emulasi klik kanan mouse STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Perintah-klik STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Kontrol-klik 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_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} +STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_HELPTEXT :Pilih tindakan yang mungkin dilakukan saat permainan berhenti sejenak STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :Tidak ada tindakan STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_CONSTRUCTION :Semua tindakan kecuali pembangunan STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_LANDSCAPING :Semua kecuali mengubah dataran STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_ACTIONS :Semua tindakan STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Gunakan daftar kendaraan tingkat lanjut: {STRING} +STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Mengaktifkan penggunaan daftar kendaraan lebih lanjut dalam pengelompokkan kendaraan STR_CONFIG_SETTING_LOADING_INDICATORS :Tampilkan indikator pengangkutan: {STRING} +STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :Pilih apakah petunjuk beban ditayangkan di atas kendaran yang sedang mengisi atau menurunkan beban STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :Penjadwalan menggunakan satuan titik , bukan satuan hari: {STRING} +STR_CONFIG_SETTING_TIMETABLE_IN_TICKS_HELPTEXT :Menunjukan waktu perjalanan dalam titik permainan daripada dalam hari STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE :Tampilkan keberangkatan dan kedatangan pada jadwal: {STRING} +STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE_HELPTEXT :Tampilkan waktu diantisipasi kedatangan dan keberangkatan di jadwal STR_CONFIG_SETTING_QUICKGOTO :Buat pemberhentian kendaraan secara cepat: {STRING} +STR_CONFIG_SETTING_QUICKGOTO_HELPTEXT :Pra-pilih kursor 'pergi ke' ketika jendela perintah dibuka STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE :Jenis rel saat baru bermain/memuat permainan: {STRING} +STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_HELPTEXT :Jenis rel yang dipilih setelah memulai atau pemuatan permainan. 'tersedia pertama' pilihkan jenis rel paling tua, 'tersedia terakhir' pilihkan jenis rel paling baru, dan 'sering dipakai' pilihkan jenis yang sekarang paling sering dipakai STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_FIRST :Tersedia pertama STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_LAST :Tersedia terakhir STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_MOST_USED :Sering dipakai STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :Sorot rel yang akan terpakai: {STRING} +STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION_HELPTEXT :Beri warna yang berbeda untuk jalur-jalur yang dicadangkan untuk menolong ketika terdapat kereta yang menolak masuk ke blok menurut jalurnya STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :Toolbar tetap aktif setelah dipakai: {STRING} +STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Menjagakan alat pembangunan untuk jembatan, terowongan, etc. buka setelah dipakai STR_CONFIG_SETTING_EXPENSES_LAYOUT :Kelompokkan pengeluaran perusahaan dalam neraca: {STRING} - +STR_CONFIG_SETTING_EXPENSES_LAYOUT_HELPTEXT :Mendefinisikan tata ruang untuk tetingkap biaya perusahaan + +STR_CONFIG_SETTING_SOUND_TICKER :Ticker berita: {STRING} +STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :Mainkan suara untuk pesanan berita yang diringkas +STR_CONFIG_SETTING_SOUND_NEWS :Koran: {STRING} +STR_CONFIG_SETTING_SOUND_NEWS_HELPTEXT :Mainkan suara saat penampilan koran +STR_CONFIG_SETTING_SOUND_NEW_YEAR :Akhir tahun: {STRING} +STR_CONFIG_SETTING_SOUND_NEW_YEAR_HELPTEXT :Mainkan suara di akhir tahun ringkaskan prestasi perusahaan selama tahun dibandingkan tahun terakhir +STR_CONFIG_SETTING_SOUND_CONFIRM :Pembangunan: {STRING} +STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT :Mainkan suara waktu pembangunan yang berhasil atau aksi lain +STR_CONFIG_SETTING_SOUND_CLICK :Klik tombol: {STRING} +STR_CONFIG_SETTING_SOUND_CLICK_HELPTEXT :Berbunyi waktu mengklik tombol +STR_CONFIG_SETTING_SOUND_DISASTER :Bencana/kecelakaan: {STRING} +STR_CONFIG_SETTING_SOUND_DISASTER_HELPTEXT :Mainkan efek suara kecelakaan dan bencana +STR_CONFIG_SETTING_SOUND_VEHICLE :Kendaraan: {STRING} +STR_CONFIG_SETTING_SOUND_VEHICLE_HELPTEXT :Mainkan efek suara kendaraan +STR_CONFIG_SETTING_SOUND_AMBIENT :Ambien: {STRING} +STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :Mainkan suara ambien pemandangan, industri dan kota STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING :Matikan infrastruktur bangunan saat tak ada kendaraan yang tersedia: {STRING} +STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING_HELPTEXT :Jika diaktifkan, infrastruktur cuma tersedia jika ada kendaraan tersedia, mencegah buang waktu dan uang di infrastruktur yang tidak bisa digunakan STR_CONFIG_SETTING_MAX_TRAINS :Maks. kereta tiap pemain: {STRING} +STR_CONFIG_SETTING_MAX_TRAINS_HELPTEXT :Batas jumlah kereta yang boleh dimiliki satu perusahaan STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :Maks. kendaraan jalan raya tiap pemain: {STRING} +STR_CONFIG_SETTING_MAX_ROAD_VEHICLES_HELPTEXT :Batas jumlah kendaraan jalan raya yang boleh dimiliki satu perusahaan STR_CONFIG_SETTING_MAX_AIRCRAFT :Maks. pesawat tiap pemain: {STRING} +STR_CONFIG_SETTING_MAX_AIRCRAFT_HELPTEXT :Batas jumlah pesawat yang boleh dimiliki satu perusahaan STR_CONFIG_SETTING_MAX_SHIPS :Maks. kapal tiap pemain: {STRING} +STR_CONFIG_SETTING_MAX_SHIPS_HELPTEXT :Jumlah maximum kapal yang boleh dimilki sebuah perusahaan STR_CONFIG_SETTING_AI_BUILDS_TRAINS :Non-aktifkan kereta bagi pemain komputer: {STRING} +STR_CONFIG_SETTING_AI_BUILDS_TRAINS_HELPTEXT :Mengaktifkan pengaturan ini membuat pemain komputer (AI) tidak dapat membangun kereta STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES :Non-aktifkan kendaraan jalan raya bagi pemain komputer: {STRING} +STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES_HELPTEXT :Mengaktifkan pengaturan ini membuat pemain komputer (AI) tidak dapat membangun kendaraan jalan raya STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT :Non-aktifkan pesawat bagi pemain komputer: {STRING} +STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT_HELPTEXT :Mengaktifkan pengaturan ini membuat pemain komputer (AI) tidak dapat membangun pesawat STR_CONFIG_SETTING_AI_BUILDS_SHIPS :Non-aktifkan kapal bagi pemain komputer: {STRING} +STR_CONFIG_SETTING_AI_BUILDS_SHIPS_HELPTEXT :Mengaktifkan pengaturan ini membuat pemain komputer (AI) tidak dapat membangun kapal +STR_CONFIG_SETTING_AI_PROFILE :Profil pengaturan standar: {STRING} +STR_CONFIG_SETTING_AI_PROFILE_HELPTEXT :Pilih profil yang digunakan untuk pengaturan AI acak atau nilai awal saat menambahkan AI atau Game Script baru +STR_CONFIG_SETTING_AI_PROFILE_EASY :Gampang +STR_CONFIG_SETTING_AI_PROFILE_MEDIUM :Sedang +STR_CONFIG_SETTING_AI_PROFILE_HARD :Susah STR_CONFIG_SETTING_AI_IN_MULTIPLAYER :Ijinkan kecerdasan pada modus banyak pemain: {STRING} +STR_CONFIG_SETTING_AI_IN_MULTIPLAYER_HELPTEXT :Bolehkan pemain komputer AI untuk ikut permainan multiplayer STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES :#opcodes sebelum scripts di-tahan: {STRING} +STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES_HELPTEXT :Batas maksimal langkah perhitungan yang boleh ambil oleh skript dalam satu putaran STR_CONFIG_SETTING_SERVINT_ISPERCENT :Jangka waktu perbaikan dalam persen: {STRING} +STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Pilih apakah servis kendaraan dipicu oleh waktu terlewat sejak servis terakhir atau dari kehandalan menjatuh beberapa persentase dari kehandalan maximum +STR_CONFIG_SETTING_SERVINT_TRAINS :Interval dasar untuk kereta: {STRING} +STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :Setel interval dasar untuk kereta, jika tidak ada interval tetap +STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA} hari/% +STR_CONFIG_SETTING_SERVINT_DISABLED :Di non-aktifkan +STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES :Interval dasar untuk kendaraan jalan raya: {STRING} +STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES_HELPTEXT :Setel Interval perbaikan untuk kendaraan jalan raya baru, jika tidak ada interval tetap +STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Interval perbaikan untuk pesawat: {STRING} +STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Setel interval perbaikan untuk pesawat baru, jika tidak ada interval asli yang disetel +STR_CONFIG_SETTING_SERVINT_SHIPS :Interval dasar untuk kapal: {STRING} +STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Mengatur interval perbaikan untuk kapal baru, jika tidak ada interval perbaikan, setelan dasar akan diatur untuk kendaraan STR_CONFIG_SETTING_NOSERVICE :Tidak perlu perbaikan jika tidak pernah mogok: {STRING} +STR_CONFIG_SETTING_NOSERVICE_HELPTEXT :Jika diaktifkan, kendaraan tidak akan diperbaiki jika tidak pernah mogok STR_CONFIG_SETTING_WAGONSPEEDLIMITS :Aktifkan batas kecepatan gerbong: {STRING} +STR_CONFIG_SETTING_WAGONSPEEDLIMITS_HELPTEXT :Jika diaktifkan, batas kecepatan gerbong juga digunakan untuk menentukan kecepatan maksimum kereta STR_CONFIG_SETTING_DISABLE_ELRAILS :Non-aktifkan rel listrik: {STRING} +STR_CONFIG_SETTING_DISABLE_ELRAILS_HELPTEXT :Mengaktifkan setelan ini mematikan kebutuhan kereta listrik untuk berjalan di rel elektris STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN :Kedatangan kendaraan pertama pada stasiun pemain: {STRING} +STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN_HELPTEXT :Tampilkan koran saat kendaraan pertama datang di stasiun pemain STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER :Kedatangan kendaraan pertama pada stasiun lawan: {STRING} +STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER_HELPTEXT :Tampilkan koran saat kendaraan pertama datang di stasiun kompetitor STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS :Kecelakaan / bencana: {STRING} +STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS_HELPTEXT :Tampilkan berita saat ada kecelakaan atau bencana STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION :Informasi Perusahaan: {STRING} +STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION_HELPTEXT :Tampilkan koran saat ada perusahaan yang baru berdiri, atau jika ada perusahaan yang akan bangkrut STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN :Pembukaan Industri Baru: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN_HELPTEXT :Tampilkan koran jika ada industri baru STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE :Penutupan Industri: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE_HELPTEXT :Tampilkan surat kabar jika industri ditutup STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES :Perubahan ekonomi: {STRING} +STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES_HELPTEXT :Tampilkan koran/surat kabar tentang pergantian ekonomi dunia STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY :Perubahan produksi pada industri yang ditangani oleh pemain: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY_HELPTEXT :Tampilkan perubahan produksi industri yang dilayani pemain STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER :Perubahan produksi pada industri yang ditangani oleh para pesaing: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER_HELPTEXT :Tampilkan koran ketika produksi industri yang di layani kompetitor naik/turun STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED :Perubahan pada produksi industri lainnya: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED_HELPTEXT :Tampilkan koran ketika produksi industri yang tidak di layani oleh sebuah perusahaan berubak STR_CONFIG_SETTING_NEWS_ADVICE :Saran / informasi pada kendaraan pemain.: {STRING} +STR_CONFIG_SETTING_NEWS_ADVICE_HELPTEXT :Tampilkan pesan kendaraan yang membutuhkan perawatan STR_CONFIG_SETTING_NEWS_NEW_VEHICLES :Kendaraan baru: {STRING} +STR_CONFIG_SETTING_NEWS_NEW_VEHICLES_HELPTEXT :Tampilkan koran/surat kabar saat kendaraan baru menjadi ada STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE :Perubahan penerimaan kargo: {STRING} +STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE_HELPTEXT :Tampilkan pesan tentang stasiun yang mengganti penerimaan kargo STR_CONFIG_SETTING_NEWS_SUBSIDIES :Subsidi: {STRING} +STR_CONFIG_SETTING_NEWS_SUBSIDIES_HELPTEXT :Tampilkan koran tentang kejadian yg berhubungan dengan subsidi STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION :Informasi umum: {STRING} +STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION_HELPTEXT :Tampilkan koran/surat kabar untuk berita umum, seperti pembelian perusahaan,dll STR_CONFIG_SETTING_NEWS_MESSAGES_OFF :Mati STR_CONFIG_SETTING_NEWS_MESSAGES_SUMMARY :Ringkasan STR_CONFIG_SETTING_NEWS_MESSAGES_FULL :Penuh STR_CONFIG_SETTING_COLOURED_NEWS_YEAR :Berita berwarna tampil pada: {STRING} +STR_CONFIG_SETTING_COLOURED_NEWS_YEAR_HELPTEXT :Tahun saat surat kabar/koran menjadi berwarna. Sebelum tahun ini, koran menggunakan warna hitam-putih STR_CONFIG_SETTING_STARTING_YEAR :Tahun mulai: {STRING} STR_CONFIG_SETTING_SMOOTH_ECONOMY :Aktifkan pertumbuhan ekonomi yang stabil (jarang berubah): {STRING} +STR_CONFIG_SETTING_SMOOTH_ECONOMY_HELPTEXT :Ketika diaktifkan, produksi industri mengalami perubahan lebih sering, dalam gerakan kecil. Pengaturan tidak berpengaruh jika jenis industri disediakan oleh NewGRF STR_CONFIG_SETTING_ALLOW_SHARES :Ijinkan pembelian saham perusahaan lain: {STRING} +STR_CONFIG_SETTING_ALLOW_SHARES_HELPTEXT :Jika diaktifkan, pemain dibolehkan membeli saham suatu perusahaan. Saham hanya bisa dibeli saat perusahaan memasuki umur tertentu +STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE :Persentase keuntungan akhir dari sistem pengisi: {STRING} +STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE_HELPTEXT :Persentase pendapatan yang diberikan dari sistem pengisi, memberikan lebih banyak kendali pendapatan +STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY :Saat menyeret, tempatkan sinyal setiap: {STRING} +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 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} +STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI_HELPTEXT :Tampilkan jendela untuk memilih jenis sinyal to untuk dibangun, daripada hanya menggunakan perputaran sinyal secara Ctrl+klik untuk membangun sinyal STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE :Tipe sinyal standar: {STRING} +STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE_HELPTEXT :Tipe sinyal default untuk dipakai STR_CONFIG_SETTING_DEFAULT_SIGNAL_NORMAL :Sinyal Blok STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBS :Sinyal Jalur STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBSOWAY :Sinyal jalur satu arah STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES :Pergantian jenis sinyal: {STRING} +STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES_HELPTEXT :Pilih tipe sinyal untuk berganti secara memutar, Ctrl+klik saat membangun sinyal STR_CONFIG_SETTING_CYCLE_SIGNAL_NORMAL :Hanya sinyal blok STR_CONFIG_SETTING_CYCLE_SIGNAL_PBS :Hanya sinyal jalur STR_CONFIG_SETTING_CYCLE_SIGNAL_ALL :Semua STR_CONFIG_SETTING_TOWN_LAYOUT :Tampilan jalan untuk kota baru: {STRING} +STR_CONFIG_SETTING_TOWN_LAYOUT_HELPTEXT :Rancangan bentuk jaringan jalan di kota STR_CONFIG_SETTING_TOWN_LAYOUT_DEFAULT :Asli STR_CONFIG_SETTING_TOWN_LAYOUT_BETTER_ROADS :Jalan raya yang lebih baik STR_CONFIG_SETTING_TOWN_LAYOUT_2X2_GRID :kotak 2x2 STR_CONFIG_SETTING_TOWN_LAYOUT_3X3_GRID :kotak 3x3 STR_CONFIG_SETTING_TOWN_LAYOUT_RANDOM :Acak STR_CONFIG_SETTING_ALLOW_TOWN_ROADS :Kota mengijinkan untuk membuat jalan: {STRING} +STR_CONFIG_SETTING_ALLOW_TOWN_ROADS_HELPTEXT :Perbolehkan kota untuk membangun jalan. Matikan untuk mencegah kota membangun jalan 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 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 STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :Diijinkan STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :Diijinkan, layout kota sendiri STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT :Penempatan pohon dalam permainan: {STRING} +STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_HELPTEXT :Mengendalikan kemunculan pohon dalam permainan. Ini akan berefek pada industri yang memerlukan pohon, contohnya pengolahan kayu gelondongan STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NONE :Tidak ada {RED}(memotong Pabrik Pengolahan Kayu Gelondongan) STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_RAINFOREST :Hanya pada hutan hujan STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_ALL :Dimanapun STR_CONFIG_SETTING_TOOLBAR_POS :Posisi toolbar utama: {STRING} +STR_CONFIG_SETTING_TOOLBAR_POS_HELPTEXT :Posisi horizontal toolbar utama di bagian atas layar STR_CONFIG_SETTING_STATUSBAR_POS :Posisi status bar: {STRING} +STR_CONFIG_SETTING_STATUSBAR_POS_HELPTEXT :Posisi horizontal bar status di bagian bawah layar +STR_CONFIG_SETTING_SNAP_RADIUS :Radius snap jendela: {STRING} +STR_CONFIG_SETTING_SNAP_RADIUS_HELPTEXT :Jarak jendela sebelum jendela direkatkan dengan jendela lain +STR_CONFIG_SETTING_SNAP_RADIUS_VALUE :{COMMA} piksel +STR_CONFIG_SETTING_SNAP_RADIUS_DISABLED :Non-aktifkan STR_CONFIG_SETTING_SOFT_LIMIT :Batas jumlah jendela (tak lekat): {STRING} +STR_CONFIG_SETTING_SOFT_LIMIT_HELPTEXT :Banyaknya jendela sebelum jendela (yang tidak sticky) lama otomatis ditutup +STR_CONFIG_SETTING_SOFT_LIMIT_VALUE :{COMMA} +STR_CONFIG_SETTING_SOFT_LIMIT_DISABLED :Non-aktifkan STR_CONFIG_SETTING_ZOOM_MIN :Tingkat Perbesaran Maksimal: {STRING} +STR_CONFIG_SETTING_ZOOM_MIN_HELPTEXT :Perbesaran viewport maksimal. Semakin besar semakin banyak memori yang dibutuhkan STR_CONFIG_SETTING_ZOOM_MAX :Tingkat zoom out Maksimal: {STRING} +STR_CONFIG_SETTING_ZOOM_MAX_HELPTEXT :Pengecilan maksimum untuk viewport. Semakin kecil semakin tidak jelas STR_CONFIG_SETTING_ZOOM_LVL_MIN :4x STR_CONFIG_SETTING_ZOOM_LVL_IN_2X :2x STR_CONFIG_SETTING_ZOOM_LVL_NORMAL :Normal @@ -1312,57 +1571,137 @@ 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 :Kecepatan pertumbuhan kota: {STRING} +STR_CONFIG_SETTING_TOWN_GROWTH_HELPTEXT :Kecepatan pertumbuhan kota STR_CONFIG_SETTING_TOWN_GROWTH_NONE :Tidak tumbuh STR_CONFIG_SETTING_TOWN_GROWTH_SLOW :Pelan STR_CONFIG_SETTING_TOWN_GROWTH_NORMAL :Normal STR_CONFIG_SETTING_TOWN_GROWTH_FAST :Cepat STR_CONFIG_SETTING_TOWN_GROWTH_VERY_FAST :Sangat cepat +STR_CONFIG_SETTING_LARGER_TOWNS :Proporsi desa yang akan menjadi kota: {STRING} +STR_CONFIG_SETTING_LARGER_TOWNS_HELPTEXT :Jumlah desa yang akan berubah menjadi kota, lalu kota mulai tumbuh besar dan cepat +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_MODIFIED_ROAD_REBUILD :Buang elemen jalan yang aneh saat membangun: {STRING} - -STR_CONFIG_SETTING_GUI :{ORANGE}Antaramuka -STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}Konstruksi +STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Ukuran rata-rata kota besar terhadap kota kecil saat permainan dimulai + +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. +STR_CONFIG_SETTING_LINKGRAPH_TIME :Ambil {STRING} hari untuk menghitung grafik distribusi +STR_CONFIG_SETTING_LINKGRAPH_TIME_HELPTEXT :Waktu dibutuhkan untuk setiap perhitungan dari komponen 'linkgraph'. Ketika perhitungan dimulai, ada utas 'dibuat' yang boleh dijalankan untuk jumlah hari ini. Semakin pendek anda mengatur ini lebih mungkin utas ini belum selesai ketika itu seharusnya. Kemudian permainan berhenti sampai itu ("lag"). Semakin lama anda mengatur semakin lama itu untuk distribusinya untuk memperbarui ketika rute mengganti. +STR_CONFIG_SETTING_DISTRIBUTION_MANUAL :manual +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 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 iklim sedang, 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 iklim sedang 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_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} +STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT :Semakin tinggi anda mengatur ini semakin banyak waktu CPU perhitungan "linkgraph" akan mengambil. Jika waktu terlalu lama anda mungkin melihat "lag".Jika anda mengatur itu ke nilai rendah, tetapi, distribusi akan menjadi tidak akurat, dan anda mungkin melihat kargo tidak dikirim ke tempat anda berharap untuk pergi. +STR_CONFIG_SETTING_DEMAND_DISTANCE :Efek jarak kepada permintaan : {STRING} +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 :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} +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_HELPTEXT :Apabila kecepatan ditampilkan di antarmuka, nyatakan di satuan yang dipilih +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_IMPERIAL :Imperial (mpj) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_METRIC :Metrik (km/j) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_SI :SI (m/d) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER :Satuan daya kendaraan: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_HELPTEXT :Apabila daya kendaraan ditampilkan di antarmuka, nyatakan di satuan yang dipilih +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_IMPERIAL :Imperial (hp) +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_METRIC :Metrik (hp) +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_SI :SI (kW) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT :Satuan keberatan: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_HELPTEXT :Apabila keberatan ditampilkan di antarmuka, nyatakan di satuan yang dipilih +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_IMPERIAL :Imperial (short t/ton) +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_METRIC :Metrik (t/ton) +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_SI :SI (kg) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME :Satuan volume: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_HELPTEXT :Apabila volume ditampilkan di antarmuka, nyatakan di satuan yang dipilih +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_IMPERIAL :Imperial (gal) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_METRIC :Metrik (l) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_SI :SI (m³) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE :Satuan gaya traksi: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_HELPTEXT :Apabila gaya traksi ditampilkan di antarmuka, nyatakan di satuan yang dipilih +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_IMPERIAL :Imperial (lbf) +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_METRIC :Metrik (kgf) +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_SI :SI (kN) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT :Satuan ketinggian: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_HELPTEXT :Apabila ketinggian ditampilkan di antarmuka, nyatakan di satuan yang dipilih +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_LOCALISATION :{ORANGE}Lokalisasi +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_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_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 STR_CONFIG_SETTING_PATHFINDER_YAPF_RECOMMENDED :YAPF {BLUE}(Recommended) STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Pencari jejak untuk kereta: {STRING} +STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Pencari jejak untuk kereta STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :Pencari jejak untuk kendaraan jalan raya: {STRING} +STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES_HELPTEXT :Pencari jejak untuk kendaraan jalan raya STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS :Pencari jejak untuk kapal : {STRING} +STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT :Pencari jejak untuk kapal STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :Berputar otomatis di sinyal: {STRING} +STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT :Perbolehkan kereta berputar di sinyal, jika telah menunggu lama STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}Ganti nilai tetapan # Config errors STR_CONFIG_ERROR :{WHITE}Kesalahan pada file konfigurasi... STR_CONFIG_ERROR_ARRAY :{WHITE}... kesalahan pada array '{STRING}' -STR_CONFIG_ERROR_INVALID_VALUE :{WHITE}... nilai '{STRING}' tdk sah untuk '{STRING}' -STR_CONFIG_ERROR_TRAILING_CHARACTERS :{WHITE}... huruf pengisi diujung setting '{STRING}' +STR_CONFIG_ERROR_INVALID_VALUE :{WHITE}... nilai '{STRING}' tidak sah untuk '{STRING}' +STR_CONFIG_ERROR_TRAILING_CHARACTERS :{WHITE}... karakter pengisi di akhir setelan '{STRING}' STR_CONFIG_ERROR_DUPLICATE_GRFID :{WHITE}... mengabaikan NewGRF '{STRING}': GRF ID kembar sama '{STRING}' STR_CONFIG_ERROR_INVALID_GRF :{WHITE}... mengabaikan NewGRF tidak valid '{STRING}': {STRING} -STR_CONFIG_ERROR_INVALID_GRF_NOT_FOUND :tdk ditemukan -STR_CONFIG_ERROR_INVALID_GRF_UNSAFE :tdk aman untuk pemakaian statis +STR_CONFIG_ERROR_INVALID_GRF_NOT_FOUND :tidak ditemukan +STR_CONFIG_ERROR_INVALID_GRF_UNSAFE :tidak aman untuk pemakaian statis STR_CONFIG_ERROR_INVALID_GRF_SYSTEM :sistem NewGRF -STR_CONFIG_ERROR_INVALID_GRF_INCOMPATIBLE :tdk kompatibel dengan OpenTTD versi ini -STR_CONFIG_ERROR_INVALID_GRF_UNKNOWN :tdk diketahui +STR_CONFIG_ERROR_INVALID_GRF_INCOMPATIBLE :tidak kompatibel dengan OpenTTD versi ini +STR_CONFIG_ERROR_INVALID_GRF_UNKNOWN :tidak diketahui STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_LEVEL :{WHITE}... tingkat kompresi '{STRING}' tidak sah STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_ALGORITHM :{WHITE}... format savegame '{STRING}' tidak tersedia. Kembali ke '{STRING}' +STR_CONFIG_ERROR_INVALID_BASE_GRAPHICS_NOT_FOUND :{WHITE}... mengabaikan set grafis dasar '{STRING}': tak ditemukan +STR_CONFIG_ERROR_INVALID_BASE_SOUNDS_NOT_FOUND :{WHITE}... mengabaikan set suara dasar '{STRING}': tidak ditemukan +STR_CONFIG_ERROR_INVALID_BASE_MUSIC_NOT_FOUND :{WHITE}... mengabaikan set musik dasar '{STRING}': tidak ditemukan +STR_CONFIG_ERROR_OUT_OF_MEMORY :{WHITE}Kehabisan memori +STR_CONFIG_ERROR_SPRITECACHE_TOO_BIG :{WHITE}Mengalokasikan {BYTES} 'spritecache' gagal. 'Spritecache' dikurangi ke {BYTES}. Ini akan kurangi kinerja OpenTTD. Untuk kurangi kebutuhan memori anda bisa coba matikan grafik 32bpp dan/atau tingkat pembesaran # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} @@ -1375,6 +1714,7 @@ STR_INTRO_SCENARIO_EDITOR :{BLACK}Editor S STR_INTRO_MULTIPLAYER :{BLACK}Bermain bersama STR_INTRO_GAME_OPTIONS :{BLACK}Pengaturan Permainan +STR_INTRO_HIGHSCORE :{BLACK}Tabel nilai tertinggi STR_INTRO_ADVANCED_SETTINGS :{BLACK}Pengaturan lanjutan STR_INTRO_NEWGRF_SETTINGS :{BLACK}Pengaturan NewGRF STR_INTRO_ONLINE_CONTENT :{BLACK}Cari konten @@ -1394,8 +1734,9 @@ STR_INTRO_TOOLTIP_SUB_TROPICAL_LANDSCAPE :{BLACK}Pilih ga STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Pilih gaya lansekap 'Taman Bermain' 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_NEWGRF_SETTINGS :{BLACK}Tampilkan setting NewGRF +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 STR_INTRO_TOOLTIP_QUIT :{BLACK}Keluar OpenTTD @@ -1422,7 +1763,7 @@ STR_OSNAME_SUNOS :SunOS # Abandon game STR_ABANDON_GAME_CAPTION :{WHITE}Batalkan Permainan -STR_ABANDON_GAME_QUERY :{YELLOW}Apakah anda yakin untuk membatalkan permainan saat ini? +STR_ABANDON_GAME_QUERY :{YELLOW}Apakah anda yakin untuk meninggalkan permainan? STR_ABANDON_SCENARIO_QUERY :{YELLOW}Apa anda yakin mau keluar dari skenario ini ? # Cheat window @@ -1434,8 +1775,8 @@ 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 :Lansekap 'sederhana' -STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :Lansekap 'Sub Antartika' +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' STR_CHEAT_CHANGE_DATE :{LTBLUE}Ganti tanggal: {ORANGE} {DATE_SHORT} @@ -1482,6 +1823,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 @@ -1537,10 +1879,10 @@ STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}Ubah das # Network server list STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}Bermain bersama -STR_NETWORK_SERVER_LIST_CONNECTION :{BLACK}Koneksi: -STR_NETWORK_SERVER_LIST_CONNECTION_TOOLTIP :{BLACK}Pilih jalur internet atau jalur jaringan lokal (LAN). -STR_NETWORK_SERVER_LIST_LAN :LAN -STR_NETWORK_SERVER_LIST_INTERNET :Internet +STR_NETWORK_SERVER_LIST_ADVERTISED :{BLACK}Diiklankan +STR_NETWORK_SERVER_LIST_ADVERTISED_TOOLTIP :{BLACK}Pilih antara permainan diiklankan (internet) dan tidak diiklankan (Jaringan wilayah lokal, LAN) +STR_NETWORK_SERVER_LIST_ADVERTISED_NO :Tidak +STR_NETWORK_SERVER_LIST_ADVERTISED_YES :Ya STR_NETWORK_SERVER_LIST_PLAYER_NAME :{BLACK}Nama pemain: STR_NETWORK_SERVER_LIST_ENTER_NAME_TOOLTIP :{BLACK}Ini adalah nama yang akan terlihat oleh pemain lain @@ -1599,8 +1941,8 @@ STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP :{BLACK}Nama per STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}Atur kata sandi STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Lindungi permainan ini dengan kata kunci jika anda tidak ingin membiarkannya terbuka untuk umum -STR_NETWORK_START_SERVER_LAN_INTERNET :LAN / Internet -STR_NETWORK_START_SERVER_INTERNET_ADVERTISE :Internet (mengiklankan) +STR_NETWORK_START_SERVER_UNADVERTISED :Tidak +STR_NETWORK_START_SERVER_ADVERTISED :Ya STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} klien STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Maksimum klien: STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}Pilih jumlah klien maksimal. Tidak semua slot harus diisi @@ -1721,6 +2063,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 @@ -1791,6 +2134,7 @@ STR_NETWORK_ERROR_CLIENT_CHEATER :tadi mencoba cu STR_NETWORK_ERROR_CLIENT_SERVER_FULL :server penuh STR_NETWORK_ERROR_CLIENT_TOO_MANY_COMMANDS :terlalu banyak mengirim perintah STR_NETWORK_ERROR_CLIENT_TIMEOUT_PASSWORD :tidak menerima password dalam batasan waktu +STR_NETWORK_ERROR_CLIENT_TIMEOUT_COMPUTER :waktu koneksi habis STR_NETWORK_ERROR_CLIENT_TIMEOUT_MAP :pengunduhan peta memakan banyak waktu STR_NETWORK_ERROR_CLIENT_TIMEOUT_JOIN :pengolahan peta memakan banyak waktu ############ End of leave-in-this-order @@ -1838,6 +2182,10 @@ STR_CONTENT_SELECT_UPDATES_CAPTION :{BLACK}Pilih pe STR_CONTENT_SELECT_UPDATES_CAPTION_TOOLTIP :{BLACK}Pilih semua konten yang tersedia pembaruannya untuk diunduh STR_CONTENT_UNSELECT_ALL_CAPTION :{BLACK}Hps semua pilihan STR_CONTENT_UNSELECT_ALL_CAPTION_TOOLTIP :{BLACK}Tandai semua untuk tidak diunduh +STR_CONTENT_SEARCH_EXTERNAL :{BLACK}Cari di website luar +STR_CONTENT_SEARCH_EXTERNAL_TOOLTIP :{BLACK}Cari konten yang tidak tersedia dalam server konten OpenTTD di website yang tidak berhubungan dengan OpenTTD +STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER_CAPTION :{WHITE}Anda keluar dari OpenTTD! +STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER :{WHITE}Syarat dan ketentuan untuk menguduh konten dari situs web luar berbeda-beda.{}Anda harus merujuk ke situs web luar tersebut untuk petunjuk pemasangan kontennya ke OpenTTD.{} Apakah anda ingin melanjutkan? STR_CONTENT_FILTER_TITLE :{BLACK}Tanda/nama filter: STR_CONTENT_OPEN_URL :{BLACK}Kunjungi laman STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}Kunjungi laman untuk konten ini @@ -1860,11 +2208,11 @@ STR_CONTENT_DETAIL_FILESIZE :{SILVER}Ukuran: STR_CONTENT_DETAIL_SELECTED_BECAUSE_OF :{SILVER}Terpilih karena: {WHITE}{STRING} STR_CONTENT_DETAIL_DEPENDENCIES :{SILVER}Memerlukan : {WHITE}{STRING} STR_CONTENT_DETAIL_TAGS :{SILVER}Kata kunci: {WHITE}{STRING} -STR_CONTENT_NO_ZLIB :{WHITE}OpenTTD tidak mendukung "zlib"... +STR_CONTENT_NO_ZLIB :{WHITE}OpenTTD tidak dapat mendukung "zlib"... STR_CONTENT_NO_ZLIB_SUB :{WHITE}... pengunduhan konten tidak dimungkinkan! # Order of these is important! -STR_CONTENT_TYPE_BASE_GRAPHICS :Grafis dasar +STR_CONTENT_TYPE_BASE_GRAPHICS :Grafik dasar STR_CONTENT_TYPE_NEWGRF :NewGRF STR_CONTENT_TYPE_AI :AI STR_CONTENT_TYPE_AI_LIBRARY :Perpustakaan AI @@ -1885,7 +2233,7 @@ STR_CONTENT_DOWNLOAD_PROGRESS_SIZE :{WHITE}{BYTES} # Content downloading error messages STR_CONTENT_ERROR_COULD_NOT_CONNECT :{WHITE}Tak dapat tersambung ke server STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD :{WHITE}Gagal mengunduh... -STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD_CONNECTION_LOST :{WHITE}... hubungan terputus +STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD_CONNECTION_LOST :{WHITE}... koneksi terputus STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD_FILE_NOT_WRITABLE :{WHITE}... berkas tak dapat ditulisi STR_CONTENT_ERROR_COULD_NOT_EXTRACT :{WHITE}Tak dapat mengembangkan file terunduh @@ -1907,6 +2255,17 @@ STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}Hidup/ma STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Hidup/matikan indikator proses pemuatan kargo. CTRL+klik untuk mengunci STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}Atur obyek menjadi sama sekali tidak nampak daripada transparan. +# Linkgraph legend window +STR_LINKGRAPH_LEGEND_CAPTION :{BLACK}Legenda aliran kargo +STR_LINKGRAPH_LEGEND_ALL :{BLACK}Semua +STR_LINKGRAPH_LEGEND_NONE :{BLACK}Tidak ada +STR_LINKGRAPH_LEGEND_SELECT_COMPANIES :{BLACK}Pilih perusahaan yang akan ditampilkan + +# Linkgraph legend window and linkgraph legend in smallmap +STR_LINKGRAPH_LEGEND_UNUSED :{TINY_FONT}{BLACK}tak terpakai +STR_LINKGRAPH_LEGEND_SATURATED :{TINY_FONT}{BLACK}sudah penuh (jenuh) +STR_LINKGRAPH_LEGEND_OVERLOADED :{TINY_FONT}{BLACK}kelebihan beban + # Base for station construction window(s) STR_STATION_BUILD_COVERAGE_AREA_TITLE :{BLACK}Jangkauan layanan STR_STATION_BUILD_COVERAGE_OFF :{BLACK}Non-aktifkan @@ -1967,7 +2326,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 @@ -2007,15 +2366,15 @@ 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 STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOTRAM :{BLACK}Bangun jalur trem menggunakan mode Autotram. Ctrl untuk mengganti mode bangun/bongkar pada konstruksi jalur trem. Shift untuk menampilkan perkiraan biaya 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 stasiun bus. Ctrl untuk mengaktifkan penggabungan stasiun. 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_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 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 @@ -2033,12 +2392,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 @@ -2181,6 +2540,10 @@ STR_INDUSTRY_DISPLAY_CHAIN :{BLACK}Tampilka STR_INDUSTRY_DISPLAY_CHAIN_TOOLTIP :{BLACK}Menampilkan industri yang menyediakan dan menerima kargo STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP :{BLACK}Tautkan ke peta STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP_TOOLTIP :{BLACK}Pilih agar industri ini diikutkan dalam peta mini +STR_INDUSTRY_CARGOES_SELECT_CARGO :{BLACK}Pilih kargo +STR_INDUSTRY_CARGOES_SELECT_CARGO_TOOLTIP :{BLACK}Pilih kargo yang akan ditampilkan +STR_INDUSTRY_CARGOES_SELECT_INDUSTRY :{BLACK}Pilih industri +STR_INDUSTRY_CARGOES_SELECT_INDUSTRY_TOOLTIP :{BLACK}Pilih industri yang akan ditampilkan # Land area window STR_LAND_AREA_INFORMATION_CAPTION :{WHITE}Informasi area daratan @@ -2205,6 +2568,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 @@ -2301,7 +2665,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-2012 Tim OpenTTD +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2014 Tim OpenTTD # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Simpan Permainan @@ -2320,7 +2684,8 @@ 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_DETAIL_CAPTION :{BLACK}Detil Permainan +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} STR_SAVELOAD_DETAIL_GRFSTATUS :{SILVER}NewGRF: {WHITE}{STRING} @@ -2328,8 +2693,9 @@ 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: @@ -2337,10 +2703,6 @@ STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Jumlah i 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: @@ -2367,7 +2729,6 @@ 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_SNOW_LINE_QUERY_CAPT :{WHITE}Ubah ketinggian garis salju STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Ganti Tahun Permulaan @@ -2385,11 +2746,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 @@ -2401,7 +2762,7 @@ STR_GENERATION_PREPARING_GAME :{BLACK}Menyiapk # NewGRF settings STR_NEWGRF_SETTINGS_CAPTION :{WHITE}Pengaturan NewGRF -STR_NEWGRF_SETTINGS_INFO_TITLE :{WHITE}Informasi detail NewGRF +STR_NEWGRF_SETTINGS_INFO_TITLE :{WHITE}Rincian Informasi NewGRF STR_NEWGRF_SETTINGS_ACTIVE_LIST :{WHITE}File NewGRF aktif STR_NEWGRF_SETTINGS_INACTIVE_LIST :{WHITE}File NewGRF tidak aktif STR_NEWGRF_SETTINGS_SELECT_PRESET :{ORANGE}Pilih preset: @@ -2422,7 +2783,9 @@ 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_FILE_TOOLTIP :{BLACK}Daftar file NewGRF yang diinstal. +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 STR_NEWGRF_SETTINGS_SHOW_PARAMETERS :{BLACK}Tampilkan parameter @@ -2446,6 +2809,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 @@ -2498,9 +2871,17 @@ STR_NEWGRF_ERROR_OTTD_VERSION_NUMBER :{1:STRING} memb STR_NEWGRF_ERROR_AFTER_TRANSLATED_FILE :Berkas NewGRF telah didesain untuk diterjemahkan STR_NEWGRF_ERROR_TOO_MANY_NEWGRFS_LOADED :Terlalu banyak berkas NewGRF yang dimuat STR_NEWGRF_ERROR_STATIC_GRF_CAUSES_DESYNC :Memuat NewGRF {1:STRING} secara statis dengan {STRING} dapat menyebabkan de-sinkronisasi +STR_NEWGRF_ERROR_UNEXPECTED_SPRITE :Sprite salah / tidak terduga (sprite {3:NUM}) +STR_NEWGRF_ERROR_UNKNOWN_PROPERTY :Properti Action 0 tidak diketahui {4:HEX} (sprite {3:NUM}) +STR_NEWGRF_ERROR_INVALID_ID :Mencoba menggunakan ID invalid (sprite {3:NUM}) STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} terdapat sprite yang rusak. Semua sprite rusak akan ditandai dengan tanda tanya merah (?) +STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Memuat beberapa entri Action 8 (sprite {3:NUM}) +STR_NEWGRF_ERROR_READ_BOUNDS :Baca akhir sprite palsu (sprite {3:NUM}) STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}Beberapa 'sprite' tidak terdapat pada Set Grafik Dasar yang sedang digunakan.{}Silahkan update Set Grafik Dasar +STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}Set grafis dasar kekurangan beberapa sprite.{}Tolong perbarui set grafis dasar.{}Karena anda memainkan {YELLOW}snapshot pengembangan OpenTTD{WHITE}, anda mungkin memerlukan{YELLOW}snapshot pengembangan set grafis dasar{WHITE} +STR_NEWGRF_ERROR_GRM_FAILED :Sumber GRF yang diminta tidak tersedia (sprite {3:NUM}) STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} dinonaktifkan oleh {STRING} +STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Format sprite salah/tidak diketahui (sprite {3:NUM}) # NewGRF related 'general' warnings STR_NEWGRF_POPUP_CAUTION_CAPTION :{WHITE}Peringatan! @@ -2508,6 +2889,7 @@ STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}Anda ak STR_NEWGRF_DUPLICATE_GRFID :{WHITE}Tidak dapat menambahkan: GRF ID sudah ada STR_NEWGRF_COMPATIBLE_LOADED :{ORANGE}Berkas yang cocok tidak diketemukan (GRF kompatibel telah dimuat) +STR_NEWGRF_TOO_MANY_NEWGRFS :{WHITE}Tidak dapat menambahkan NewGRF : Batas maksimal NewGRF tercapai STR_NEWGRF_COMPATIBLE_LOAD_WARNING :{WHITE}GRF kompatibel telah dimuat untuk berkas yang hilang STR_NEWGRF_DISABLED_WARNING :{WHITE}Berkas GRF telah di non-aktifkan @@ -2524,6 +2906,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 @@ -2538,9 +2921,12 @@ 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 NewGRFs. Tergantung banyaknya cukup memakan waktu... +STR_NEWGRF_SCAN_MESSAGE :{BLACK}Memindai berkas NewGRF. Lamanya waktu tergantung dari jumlah berkas... STR_NEWGRF_SCAN_STATUS :{BLACK}{NUM} NewGRF dipindai dari kira2 {NUM} NewGRF STR_NEWGRF_SCAN_ARCHIVES :Memindai arsip @@ -2568,7 +2954,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 @@ -2619,10 +3005,14 @@ STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT :{YELLOW}Beli ha STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}Kolusi dengan pemkot agar naik peringkat, beresiko terkena hukuman jika tertangkap.{}Biaya: {CURRENCY_LONG} # Goal window -STR_GOALS_CAPTION :{WHITE}Target +STR_GOALS_CAPTION :{WHITE}{COMPANY} Target +STR_GOALS_SPECTATOR_CAPTION :{WHITE}Target Global STR_GOALS_GLOBAL_TITLE :{BLACK}Target global: STR_GOALS_TEXT :{ORANGE}{STRING} STR_GOALS_NONE :{ORANGE}- Tidak ada - +STR_GOALS_SPECTATOR_NONE :{ORANGE}- Tak terpakaikan - +STR_GOALS_PROGRESS :{ORANGE}{STRING} +STR_GOALS_PROGRESS_COMPLETE :{GREEN}{STRING} STR_GOALS_COMPANY_TITLE :{BLACK}Target perusahaan: STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Klik pada tujuan untuk mengarahkan pandangan pada tengah industri/kota/kotak. Ctrl+klik untuk membuka jendela baru pada lokasi industri/kota/kotak @@ -2661,6 +3051,18 @@ STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}Jasa tra STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING} dari {STRING} ke {STRING}{YELLOW} ({COMPANY}{YELLOW}, hingga {DATE_SHORT}) STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Klik pada layanan untuk mengarahkan pandangan utama pada industri/kota. Ctrl+Click akan membuka viewport baru pada lokasi industri/kota +# Story book window +STR_STORY_BOOK_CAPTION :{WHITE}{COMPANY} Buku Cerita +STR_STORY_BOOK_SPECTATOR_CAPTION :{WHITE}Buku Cerita Global +STR_STORY_BOOK_TITLE :{YELLOW}{STRING} +STR_STORY_BOOK_GENERIC_PAGE_ITEM :Halaman {NUM} +STR_STORY_BOOK_SEL_PAGE_TOOLTIP :{BLACK}Loncat ke halaman yang dipilih dari daftar drop-down ini +STR_STORY_BOOK_PREV_PAGE :{BLACK}Sebelumnya +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 STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}Tekan CTRL untuk memilih lebih dari satu item @@ -2674,9 +3076,9 @@ 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} dialihkan dari {STATION}) +STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} dari {STATION}) +STR_STATION_VIEW_RESERVED :{YELLOW}({CARGO_SHORT} direservasi untuk memuat) STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Menerima STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Tampilkan daftar kargo yang bisa diterima @@ -2687,8 +3089,31 @@ STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPAN STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Peringkat STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Tampilkna peringkat dari stasiun -STR_STATION_VIEW_CARGO_RATINGS_TITLE :{BLACK}Peringkat layanan transportasi (lokal): -STR_STATION_VIEW_CARGO_RATING :{WHITE}{STRING}: {YELLOW}{STRING} ({COMMA}%) +STR_STATION_VIEW_SUPPLY_RATINGS_TITLE :{BLACK}Asupan bulanan dan penilaian tempatan: +STR_STATION_VIEW_CARGO_SUPPLY_RATING :{WHITE}{STRING}: {YELLOW}{COMMA} / {STRING} ({COMMA}%) + +STR_STATION_VIEW_GROUP :{BLACK}Pengelompokkan +STR_STATION_VIEW_WAITING_STATION :Station: Menunggu +STR_STATION_VIEW_WAITING_AMOUNT :Jumlah: Menunggu +STR_STATION_VIEW_PLANNED_STATION :Stasiun: Menurut Rencana +STR_STATION_VIEW_PLANNED_AMOUNT :Jumlah: Menurut Rencana +STR_STATION_VIEW_FROM :{YELLOW}{CARGO_SHORT} dari {STATION} +STR_STATION_VIEW_VIA :{YELLOW}{CARGO_SHORT} via {STATION} +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} 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 +STR_STATION_VIEW_NONSTOP :{YELLOW}{CARGO_SHORT} tanpa berhenti + +STR_STATION_VIEW_GROUP_S_V_D :Sumber-Lewat-Tujuan +STR_STATION_VIEW_GROUP_S_D_V :Sumber-Tujuan-Lewat +STR_STATION_VIEW_GROUP_V_S_D :Lewat-Sumber-Tujuan +STR_STATION_VIEW_GROUP_V_D_S :Lewat-Tujuan-Sumber +STR_STATION_VIEW_GROUP_D_S_V :Tujuan-Sumber-Lewat +STR_STATION_VIEW_GROUP_D_V_S :Tujusn-Lewat-Sumber ############ range for rating starts STR_CARGO_RATING_APPALLING :Mengerikan @@ -2733,7 +3158,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 @@ -2815,7 +3240,6 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS :{WHITE}Kanal STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}Stasiun: STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}area stasiun STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}Bandara -STR_COMPANY_INFRASTRUCTURE_VIEW_COST :{WHITE}{1:CURRENCY_LONG}/thn ({0:COMMA}) STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL :{WHITE}{CURRENCY_LONG}/thn # Industry directory @@ -2832,6 +3256,7 @@ STR_INDUSTRY_VIEW_PRODUCTION_LAST_MONTH_TITLE :{BLACK}Produksi STR_INDUSTRY_VIEW_TRANSPORTED :{YELLOW}{CARGO_LONG}{STRING}{BLACK} ({COMMA}% terkirim) STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Arahkan pandangan utama pada lokasi industri. Ctrl+Click akan membuka viewport baru pada lokasi industri STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Tingkat produksi: {YELLOW}{COMMA}% +STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}Industri akan segera ditutup! ############ range for requires starts STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Membutuhkan: {YELLOW}{STRING}{STRING} @@ -2897,9 +3322,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 @@ -3179,7 +3607,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} @@ -3195,6 +3623,11 @@ STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Jangka w STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Tambah jarak waktu perbaikan dengan 10. Ctrl+Click menambah jarak waktu perbaikan dengan 5. STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Kurangi jarak waktu perbaikan dengan 10. Ctrl+Click mengurangi jarak waktu perbaikan dengan 5 +STR_SERVICE_INTERVAL_DROPDOWN_TOOLTIP :{BLACK}Ubah jenis interval perbaikan +STR_VEHICLE_DETAILS_DEFAULT :Standar +STR_VEHICLE_DETAILS_DAYS :Hari +STR_VEHICLE_DETAILS_PERCENT :Persentase + STR_QUERY_RENAME_TRAIN_CAPTION :{WHITE}Nama kereta STR_QUERY_RENAME_ROAD_VEHICLE_CAPTION :{WHITE}Nama kendaraan STR_QUERY_RENAME_SHIP_CAPTION :{WHITE}Nama kapal @@ -3227,7 +3660,9 @@ STR_VEHICLE_DETAILS_TRAIN_ARTICULATED_RV_CAPACITY :{BLACK}Kapasita STR_REFIT_CAPTION :{WHITE}{VEHICLE} (Renovasi) STR_REFIT_TITLE :{GOLD}Pilih jenis kargo yang akan dibawa: STR_REFIT_NEW_CAPACITY_COST_OF_REFIT :{BLACK}Kapasitas baru: {GOLD}{CARGO_LONG}{}{BLACK}Biaya ubah kargo: {RED}{CURRENCY_LONG} +STR_REFIT_NEW_CAPACITY_INCOME_FROM_REFIT :{BLACK}Kapasitas baru: {GOLD}{CARGO_LONG}{}{BLACK}Hasil refit: {GREEN}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_COST_OF_AIRCRAFT_REFIT :{BLACK}Kapasitas baru: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Biaya modifikasi: {RED}{CURRENCY_LONG} +STR_REFIT_NEW_CAPACITY_INCOME_FROM_AIRCRAFT_REFIT :{BLACK}Kapasitas baru: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Pendapatan dari refit: {GREEN}{CURRENCY_LONG} STR_REFIT_SELECT_VEHICLES_TOOLTIP :{BLACK}Pilih kendaraan yg akan dimodifikasi. Drag untuk memilih sekaligus beberapa kendaraan. Klik pada ruang kosong untuk memilih semua kendaraan. Ctrl+Klik untuk memilih kendaraan berikut rangkaiannya STR_REFIT_TRAIN_LIST_TOOLTIP :{BLACK}Pilih jenis kargo yang akan dibawa kereta @@ -3413,6 +3848,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 @@ -3428,7 +3867,7 @@ STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}Jadwal m STR_TIMETABLE_STATUS_START_AT :{BLACK}Jadwal ini akan dimulai pada {STRING} STR_TIMETABLE_STARTING_DATE :{BLACK}Tanggal mulai -STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Pilih tanggal sebagai titik awal jadwal ini +STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Pilih sebarang hari sebagai titik mula timetable. Ctrl+Click akan men-set titik awal timetable dan akan menyebarkan semua kendaraan yang berorder sama secara merata berdasarkan order relatif, jika order tersebut sepenuhnya terjadwalkan. STR_TIMETABLE_CHANGE_TIME :{BLACK}Ubah Durasi STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Ubah jumlah waktu yang seharusnya dibutuhkan, pada tujuan yang terpilih @@ -3450,7 +3889,7 @@ STR_TIMETABLE_AUTOFILL_TOOLTIP :{BLACK}Isi jadw STR_TIMETABLE_EXPECTED :{BLACK}Harapan STR_TIMETABLE_SCHEDULED :{BLACK}Dijadwalkan -STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Ubah antara harapan dan jadwal +STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Ubah antara perkiraan dan jadwal STR_TIMETABLE_ARRIVAL_ABBREVIATION :A: STR_TIMETABLE_DEPARTURE_ABBREVIATION :D: @@ -3495,7 +3934,7 @@ STR_AI_CONFIG_GAMELIST_TOOLTIP :{BLACK}Skrip Pe STR_AI_CONFIG_AILIST_TOOLTIP :{BLACK}AI yg akan dijalankan pada permainan berikutnya STR_AI_CONFIG_HUMAN_PLAYER :Pemain Manusia STR_AI_CONFIG_RANDOM_AI :AI Acak -STR_AI_CONFIG_NONE :(tdk ada) +STR_AI_CONFIG_NONE :(tidak ada) STR_AI_CONFIG_MOVE_UP :{BLACK}Naikkan STR_AI_CONFIG_MOVE_UP_TOOLTIP :{BLACK}Naikkan AI terpilih dalam daftar @@ -3542,6 +3981,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 @@ -3554,6 +3995,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}Biaya: {CURRENCY_LONG} @@ -3562,6 +4005,10 @@ STR_INCOME_FLOAT_INCOME_SMALL :{TINY_FONT}{GRE STR_INCOME_FLOAT_INCOME :{GREEN}Pemasukan: {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}Pemasukan: {CURRENCY_LONG} +STR_FEEDER_INCOME :{YELLOW}Transfer: {CURRENCY_LONG}{WHITE} / {GREEN}Pemasukan: {CURRENCY_LONG} +STR_FEEDER_COST_TINY :{TINY_FONT}{YELLOW}Transfer: {CURRENCY_LONG}{WHITE} / {RED}Biaya: {CURRENCY_LONG} +STR_FEEDER_COST :{YELLOW}Transfer: {CURRENCY_LONG}{WHITE} / {RED}Biaya: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_COST :{WHITE}Perkiraan Biaya: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Perkiraan Pemasukan: {CURRENCY_LONG} @@ -3588,7 +4035,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 @@ -3602,6 +4049,8 @@ STR_WARNING_HEIGHTMAP_SCALE_MESSAGE :{YELLOW}Ukuran STR_WARNING_FALLBACK_SOUNDSET :{WHITE}Hanya efek suara standar yang ditemukan. Jika anda ingin efek suara, unduhlah dari "Cari Konten" # Screenshot related messages +STR_WARNING_SCREENSHOT_SIZE_CAPTION :{WHITE}Tangkapan layar besar +STR_WARNING_SCREENSHOT_SIZE_MESSAGE :{YELLOW}Resolusi tangkapan layar {COMMA} x {COMMA} piksel. Membuat tangkapan layar akan memakan waktu. Anda ingin melanjutkan? STR_MESSAGE_SCREENSHOT_SUCCESSFULLY :{WHITE}Pengambilan gambar telah berhasil disimpan sebagai '{STRING}' STR_ERROR_SCREENSHOT_FAILED :{WHITE}Pengambilan gambar gagal @@ -3639,7 +4088,7 @@ STR_ERROR_BRIBE_FAILED :{WHITE}Sogokan # Levelling errors STR_ERROR_CAN_T_RAISE_LAND_HERE :{WHITE}Tidak dapat menaikkan tanah disini STR_ERROR_CAN_T_LOWER_LAND_HERE :{WHITE}Tidak dapat menurunkan tanah disini -STR_ERROR_CAN_T_LEVEL_LAND_HERE :{WHITE}Nggak bisa rata... +STR_ERROR_CAN_T_LEVEL_LAND_HERE :{WHITE}Dataran tak bisa diratakan... STR_ERROR_EXCAVATION_WOULD_DAMAGE :{WHITE}Penggalian akan merusak terowongan STR_ERROR_ALREADY_AT_SEA_LEVEL :{WHITE}Telah sama dengan ketinggian laut STR_ERROR_TOO_HIGH :{WHITE}Terlalu tinggi @@ -3696,9 +4145,9 @@ STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE}... hany # 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 membangunstasiun bus... -STR_ERROR_CAN_T_BUILD_TRUCK_STATION :{WHITE}Tidak dapat membangun gerbong stasiun... -STR_ERROR_CAN_T_BUILD_PASSENGER_TRAM_STATION :{WHITE}Tidak dapat membangun stasiun trem disini... +STR_ERROR_CAN_T_BUILD_BUS_STATION :{WHITE}Tidak dapat membangun terminal bus... +STR_ERROR_CAN_T_BUILD_TRUCK_STATION :{WHITE}Tidak dapat membangun stasiun bongkar-muat... +STR_ERROR_CAN_T_BUILD_PASSENGER_TRAM_STATION :{WHITE}Tidak dapat membangun halte trem disini... STR_ERROR_CAN_T_BUILD_CARGO_TRAM_STATION :{WHITE}Tidak dapat membangun stasiun kargo trem... STR_ERROR_CAN_T_BUILD_DOCK_HERE :{WHITE}Tidak dapat membuat pelabuhan disini... STR_ERROR_CAN_T_BUILD_AIRPORT_HERE :{WHITE}Tidak dapat membangun bandara disini... @@ -3721,17 +4170,17 @@ STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}... term # Station destruction related errors 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 stasiun Bus... -STR_ERROR_CAN_T_REMOVE_TRUCK_STATION :{WHITE}Tidak dapat membongkar stasiun truk... -STR_ERROR_CAN_T_REMOVE_PASSENGER_TRAM_STATION :{WHITE}Tidak dapat membongkar stasiun trem... +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 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 @@ -3781,7 +4230,7 @@ STR_ERROR_AUTOREPLACE_NOTHING_TO_DO :{WHITE}Tidak ad STR_ERROR_AUTOREPLACE_MONEY_LIMIT :(batas min. uang) # Rail construction errors -STR_ERROR_IMPOSSIBLE_TRACK_COMBINATION :{WHITE}Kombinasi rel yang tidak mungkin +STR_ERROR_IMPOSSIBLE_TRACK_COMBINATION :{WHITE}Kombinasi rel yang mustahil STR_ERROR_MUST_REMOVE_SIGNALS_FIRST :{WHITE}Sinyal harus dihancurkan dulu STR_ERROR_NO_SUITABLE_RAILROAD_TRACK :{WHITE}Tidak tersedia rel yang sesuai STR_ERROR_MUST_REMOVE_RAILROAD_TRACK :{WHITE}Harus membongkar rel terlebih dahulu @@ -3801,9 +4250,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 @@ -3814,8 +4263,8 @@ STR_ERROR_CAN_T_PLACE_RIVERS :{WHITE}Tidak da STR_ERROR_MUST_BE_BUILT_ON_WATER :{WHITE}... harus dibangun di atas air STR_ERROR_CAN_T_BUILD_ON_WATER :{WHITE}... tidak dapat membangun di atas air STR_ERROR_CAN_T_BUILD_ON_SEA :{WHITE}... tidak dapat membangun di laut terbuka -STR_ERROR_CAN_T_BUILD_ON_CANAL :{WHITE}... tdk dapat membangun di atas kanal -STR_ERROR_CAN_T_BUILD_ON_RIVER :{WHITE}... tdk dapat membangun diatas sungai +STR_ERROR_CAN_T_BUILD_ON_CANAL :{WHITE}... tidak dapat membangun di atas kanal +STR_ERROR_CAN_T_BUILD_ON_RIVER :{WHITE}... tidak dapat membangun di atas sungai STR_ERROR_MUST_DEMOLISH_CANAL_FIRST :{WHITE}Harus menghancurkan kanal terlebih dahulu STR_ERROR_CAN_T_BUILD_AQUEDUCT_HERE :{WHITE}Tidak dapat membangun jembatan air disini... @@ -3856,6 +4305,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... @@ -3907,14 +4357,19 @@ STR_ERROR_SHIP_NOT_AVAILABLE :{WHITE}Kapal ti STR_ERROR_AIRCRAFT_NOT_AVAILABLE :{WHITE}Pesawat tidak tersedia STR_ERROR_TOO_MANY_VEHICLES_IN_GAME :{WHITE}Terlalu banyak kendaraan dalam permainan -STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}Tidak dapat mengubah jarak waktu perbaikan... +STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}Tidak dapat mengubah waktu perbaikan... STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... kendaraan hancur +STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL :{WHITE}Tak satupun kendaraan tersedia +STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Tukarkan konfigurasi NewGRF anda +STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}Belum ada kendaraan yang tersedia saat ini +STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Mulai permainan baru setelah {DATE_SHORT} atau gunakan NewGRF yang menyediakan kendaraan awal + # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Tidak dapat memaksa kereta melanggar sinyal pada saat bahaya... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Tidak dapat memutar balik arah kereta... -STR_ERROR_TRAIN_START_NO_POWER :Kereta tdk bertenaga +STR_ERROR_TRAIN_START_NO_POWER :Kereta tidak bertenaga STR_ERROR_CAN_T_MAKE_ROAD_VEHICLE_TURN :{WHITE}Tidak dapat memutar kendaraan... @@ -3953,6 +4408,16 @@ STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}Tidak da # Translatable comment for OpenTTD's desktop shortcut STR_DESKTOP_SHORTCUT_COMMENT :Permainan simulasi berdasarkan Transport Tycoon Deluxe +# Translatable descriptions in media/baseset/*.ob* files +STR_BASEGRAPHICS_DOS_DESCRIPTION :Grafik orisinil Transport Tycoon Deluxe versi DOS. +STR_BASEGRAPHICS_DOS_DE_DESCRIPTION :Grafik orisinil Transport Tycoon Deluxe versi DOS (Jerman). +STR_BASEGRAPHICS_WIN_DESCRIPTION :Grafik orisinil Transport Tycoon Deluxe versi Windows. +STR_BASESOUNDS_DOS_DESCRIPTION :Efek suara orisinil Transport Tycoon Deluxe versi DOS. +STR_BASESOUNDS_WIN_DESCRIPTION :Efek suara orisinil Transport Tycoon Deluxe versi Windows. +STR_BASESOUNDS_NONE_DESCRIPTION :Paket efek suara tanpa suara apapun. +STR_BASEMUSIC_WIN_DESCRIPTION :Musik pengiring orisinil Transport Tycoon Deluxe versi Windows. +STR_BASEMUSIC_NONE_DESCRIPTION :Paket musik tanpa musik sungguhan. + ##id 0x2000 # Town building names STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1 :Gedung perkantoran tinggi @@ -4075,7 +4540,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) @@ -4099,7 +4564,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 Dokumen +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 @@ -4129,7 +4594,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 @@ -4161,7 +4626,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 @@ -4197,12 +4662,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 @@ -4284,7 +4749,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 @@ -4399,8 +4864,9 @@ 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_SPACE_STRING :{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} @@ -4424,9 +4890,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 761c10aaf..5d1c20c3c 100644 --- a/src/lang/irish.txt +++ b/src/lang/irish.txt @@ -255,7 +255,6 @@ STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}Achar: { # These are used in buttons -STR_SORT_BY_CAPTION_POPULATION :{BLACK}Daonra STR_SORT_BY_CAPTION_NAME :{BLACK}Ainm STR_SORT_BY_CAPTION_DATE :{BLACK}Dáta # These are used in dropdowns @@ -276,7 +275,6 @@ 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 :Luach an lastais 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) @@ -288,6 +286,7 @@ STR_SORT_BY_RUNNING_COST :Costas le Rith STR_SORT_BY_POWER_VS_RUNNING_COST :Cumhacht/Costas le Rith STR_SORT_BY_CARGO_CAPACITY :Méid an Lastais STR_SORT_BY_RANGE :Raon +STR_SORT_BY_POPULATION :Daonra # Tooltips for the main toolbar STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Cuir an cluiche ar sos @@ -370,19 +369,18 @@ STR_FILE_MENU_SEPARATOR : STR_FILE_MENU_EXIT :Scoir ############ range ends here -############ range for map menu starts +# 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_SIGN_LIST :Liosta na gcomharthaí -############ range for town menu starts, yet the town directory is shown in the map menu in the scenario editor + +############ range for town menu starts STR_TOWN_MENU_TOWN_DIRECTORY :Liosta bailte -############ end of the 'Display map' dropdown STR_TOWN_MENU_FOUND_TOWN :Aimsíodh baile -############ end of the 'Town' dropdown +############ range ends here ############ range for subsidies menu starts STR_SUBSIDIES_MENU_SUBSIDIES :Fordheontais -STR_SUBSIDIES_MENU_GOAL :Spriocanna reatha ############ range ends here ############ range for graph menu starts @@ -454,7 +452,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ú @@ -470,22 +468,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 @@ -647,7 +663,7 @@ STR_HIGHSCORE_PERFORMANCE_TITLE_CAPITALIST :Caipitlí STR_HIGHSCORE_PERFORMANCE_TITLE_MAGNATE :Móruasal STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL :Mógal STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY :Toicí an Chéid -STR_HIGHSCORE_NAME :{BIG_FONT}{PRESIDENT_NAME}, {COMPANY} +STR_HIGHSCORE_NAME :{PRESIDENT_NAME}, {COMPANY} STR_HIGHSCORE_STATS :{BIG_FONT}'{STRING}' ({COMMA}) STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{BLACK}Baineann {COMPANY} an stádas '{STRING}' amach! STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{WHITE}Baineann {PRESIDENT_NAME} ó {COMPANY} an stádas '{STRING}' amach! @@ -786,13 +802,11 @@ STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}Tá feit 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_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 @@ -867,13 +881,8 @@ STR_GAME_OPTIONS_CURRENCY_EEK :Krooni na hEast STR_GAME_OPTIONS_CURRENCY_CUSTOM :Saincheaptha... ############ end of currency region -STR_GAME_OPTIONS_MEASURING_UNITS_FRAME :{BLACK}Aonaid tomhais -STR_GAME_OPTIONS_MEASURING_UNITS_DROPDOWN_TOOLTIP :{BLACK}Aonaid tomhais a roghnú ############ start of measuring units region -STR_GAME_OPTIONS_MEASURING_UNITS_IMPERIAL :Impiriúil -STR_GAME_OPTIONS_MEASURING_UNITS_METRIC :Méadrach -STR_GAME_OPTIONS_MEASURING_UNITS_SI :SI ############ end of measuring units region STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Feithiclí Bóithre @@ -911,11 +920,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 @@ -927,9 +938,6 @@ 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_BASE_GRF :{BLACK}Sraith graifice bunaidh STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Roghnaigh an sraith grafaice bunaidh le húsáid STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} {P ch ch ch gc c}omhad ar iarraidh/truaillithe @@ -1032,7 +1040,17 @@ STR_WARNING_NO_SUITABLE_AI :{WHITE}Níl aon # Advanced settings window STR_CONFIG_SETTING_CAPTION :{WHITE}Ardsocruithe +STR_CONFIG_SETTING_RESTRICT_CATEGORY :{BLACK}Catagóir: +STR_CONFIG_SETTING_RESTRICT_TYPE :{BLACK}Cineál: +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) +STR_CONFIG_SETTINGS_NONE :{WHITE}- Ceann ar bith - STR_CONFIG_SETTING_OFF :As STR_CONFIG_SETTING_ON :Air @@ -1051,7 +1069,6 @@ 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_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} @@ -1060,10 +1077,7 @@ STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL :Samhail luasgh STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL :Samhail luasghéaraithe d'fheithiclí bóthair: {STRING} STR_CONFIG_SETTING_FORBID_90_DEG :Cuir cosc ar thraenacha agus ar longa casadh 90° a dhéanamh: {STRING} 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_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 @@ -1075,7 +1089,6 @@ STR_CONFIG_SETTING_STOP_LOCATION :Stopann orduith 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_BRIBE :Ceadaigh breabanna a thabhairt don údarás áitiúil: {STRING} STR_CONFIG_SETTING_ALLOW_EXCLUSIVE :Ceadaigh cearta eisiach iompair a cheannach: {STRING} @@ -1088,8 +1101,6 @@ 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_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_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} @@ -1124,7 +1135,6 @@ STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Rothlú an mhap 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 é @@ -1155,14 +1165,12 @@ 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_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_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_COMMAND_PAUSE_LEVEL :Agus an cluiche ar sos, ceadaigh: {STRING} STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :gníomh ar bith @@ -1182,6 +1190,16 @@ STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :Taispeáin iarn STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :Fág uirlisí tógála gníomhach i ndiaidh úsáide: {STRING} STR_CONFIG_SETTING_EXPENSES_LAYOUT :Speansais an ghrúpa i bhfuinneog airgeadais cuideachta: {STRING} +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} +STR_CONFIG_SETTING_SOUND_CLICK_HELPTEXT :bíp nuair ata cnaipe brúite +STR_CONFIG_SETTING_SOUND_DISASTER :Tubaistí / timpistí: {STRING} +STR_CONFIG_SETTING_SOUND_DISASTER_HELPTEXT :Seinn maisíochtaí fuaime timpistí agus tubaistí +STR_CONFIG_SETTING_SOUND_VEHICLE :Feithiclí: {STRING} +STR_CONFIG_SETTING_SOUND_VEHICLE_HELPTEXT :Seinn maisíochtaí fuaime feithiclí +STR_CONFIG_SETTING_SOUND_AMBIENT :comhthimpeallach: {STRING} +STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :Seinn maisíochtaí fuaime comhthimpeallach tírdhreacha, tionscail agus bailte 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} @@ -1266,25 +1284,35 @@ 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_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_GRAPHICS :{ORANGE}Grafaicí +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_NPF :NPF STR_CONFIG_SETTING_PATHFINDER_YAPF_RECOMMENDED :YAPF {BLUE}(Molta) @@ -1413,6 +1441,7 @@ STR_LIVERY_FREIGHT_TRAM :Tram Lastais STR_FACE_CAPTION :{WHITE}Aghaidh a Roghnú STR_FACE_CANCEL_TOOLTIP :{BLACK}Cealaigh roghnúchán aghaidhe nua 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 @@ -1468,10 +1497,6 @@ STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}Athraigh # Network server list STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}Ilimreoirí -STR_NETWORK_SERVER_LIST_CONNECTION :{BLACK}Nasc: -STR_NETWORK_SERVER_LIST_CONNECTION_TOOLTIP :{BLACK}Roghnaigh idir cluiche idirlín agus cluiche Líonra Achair Logánta (LAN) -STR_NETWORK_SERVER_LIST_LAN :LAN -STR_NETWORK_SERVER_LIST_INTERNET :Idirlíon 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 @@ -1530,8 +1555,6 @@ 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_LAN_INTERNET :LAN / Idirlíon -STR_NETWORK_START_SERVER_INTERNET_ADVERTISE :Idirlíon (déan fógraíocht) 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 @@ -1652,6 +1675,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 @@ -1821,6 +1845,10 @@ STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}Scorána STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Scoránaigh trédhearcacht do tháscairí lódála. Ctrl+Cliceáil le glasáil. STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}Socraigh go bhfuil nithe dofheicthe seachas trédhearcach +# Linkgraph legend window + +# Linkgraph legend window and linkgraph legend in smallmap + # Base for station construction window(s) STR_STATION_BUILD_COVERAGE_AREA_TITLE :{BLACK}Aibhsigh an limistéar clúdaigh STR_STATION_BUILD_COVERAGE_OFF :{BLACK}As @@ -2115,6 +2143,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 @@ -2188,7 +2217,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-2012 An fhoireann OpenTTD +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2014 An fhoireann OpenTTD # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Sábháil an Cluiche @@ -2206,6 +2235,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} @@ -2216,6 +2246,7 @@ STR_SAVELOAD_OSKTITLE :{BLACK}Iontrái # World generation STR_MAPGEN_WORLD_GENERATION_CAPTION :{WHITE}Domhan a Chruthú STR_MAPGEN_MAPSIZE :{BLACK}Méid na léarscáile: +STR_MAPGEN_MAPSIZE_TOOLTIP :{BLACK}Roghnaigh an méid de na léarscáile i tíleanna. Beidh líon na tíleanna ar fáil a bheith beagán níos lú STR_MAPGEN_BY :{BLACK}* STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Líon na mbailte: STR_MAPGEN_DATE :{BLACK}Dáta: @@ -2223,10 +2254,6 @@ STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Líon na 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: @@ -2252,7 +2279,6 @@ 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_SNOW_LINE_QUERY_CAPT :{WHITE}Athraigh airde na líne sneachta STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Athraigh an bhliain tosaigh @@ -2328,6 +2354,8 @@ 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 + # NewGRF parameters window STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}Athraigh na paraiméadair NewGRF STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Dún @@ -2389,6 +2417,7 @@ STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}Tá tú STR_NEWGRF_DUPLICATE_GRFID :{WHITE}Ní féidir comhad a chur leis: ID GRF dúbailte STR_NEWGRF_COMPATIBLE_LOADED :{ORANGE}Níor aimsíodh comhad a mheaitseálann (GRF comhoiriúnach lódáilte) +STR_NEWGRF_TOO_MANY_NEWGRFS :{WHITE}Ní féidir cuir comhaid: Teorainn comhad NewGRF bainte amach STR_NEWGRF_COMPATIBLE_LOAD_WARNING :{WHITE}Lódáladh GRF(anna) comhoiriúnacha do na comhaid atá ar lár STR_NEWGRF_DISABLED_WARNING :{WHITE}Díchumasaíodh na comha(i)d GRF atá ar lár @@ -2418,6 +2447,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 # Sign list window @@ -2508,6 +2540,9 @@ STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}Seirbhí 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_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 STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}Coinnigh síos Ctrl le níos mó ná rud amháin a roghnú @@ -2521,7 +2556,6 @@ 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}) @@ -2532,8 +2566,8 @@ STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}Glactar 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_CARGO_RATINGS_TITLE :{BLACK}Rátáil áitiúil na seirbhíse iompair: -STR_STATION_VIEW_CARGO_RATING :{WHITE}{STRING}: {YELLOW}{STRING} ({COMMA}%) + + ############ range for rating starts STR_CARGO_RATING_APPALLING :Uafásach @@ -2720,6 +2754,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 @@ -2888,7 +2925,7 @@ STR_REPLACE_VEHICLES_START :{BLACK}Tosaigh 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_VEHICLES_STOP :{BLACK}Stop ag athsholáthar Feithiclí +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é STR_REPLACE_ENGINE_WAGON_SELECT :{BLACK}Ag athsholáthar: {ORANGE}{STRING} @@ -3005,6 +3042,11 @@ STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Eatramh STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Méadaigh an t-eatramh seirbhísithe de 10. Méadaítear an t-eatramh seirbhísithe de 5 le Ctrl+Cliceáil STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Laghdaigh an t-eatramh seirbhísithe d 10. Laghdaítear an t-eatramh seirbhísithe de 5 le Ctrl+Cliceáil +STR_SERVICE_INTERVAL_DROPDOWN_TOOLTIP :{BLACK}Athraigh cineál eatramh seirbhísithe +STR_VEHICLE_DETAILS_DEFAULT :Réamhshocrú +STR_VEHICLE_DETAILS_DAYS :Laethanta +STR_VEHICLE_DETAILS_PERCENT :Céatadán + STR_QUERY_RENAME_TRAIN_CAPTION :{WHITE}Ainmnigh traein STR_QUERY_RENAME_ROAD_VEHICLE_CAPTION :{WHITE}Ainmnigh feithicil bóthair STR_QUERY_RENAME_SHIP_CAPTION :{WHITE}Ainmnigh long @@ -3201,9 +3243,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 "" "" "" "" ""} @@ -3219,7 +3265,6 @@ 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}Roghnaith dáta mar phointe tosaigh don amchlár seo 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 @@ -3315,6 +3360,8 @@ STR_AI_SETTINGS_SETTING :{STRING}: {ORAN 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 @@ -3581,6 +3628,7 @@ 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_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... @@ -3621,6 +3669,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... @@ -3676,6 +3725,8 @@ 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_EXPLANATION :{WHITE}Athraigh do chumraíocht NewGRF + # 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ú... @@ -3716,6 +3767,8 @@ STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}Ní féi # Translatable comment for OpenTTD's desktop shortcut STR_DESKTOP_SHORTCUT_COMMENT :Cluiche ionsamhlúcháin bunaithe ar Transport Tycoon Deluxe +# Translatable descriptions in media/baseset/*.ob* files + ##id 0x2000 # Town building names STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1 :Bloc oifigí ard @@ -3838,7 +3891,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) @@ -4047,7 +4100,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 @@ -4162,7 +4215,7 @@ 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_SPACE_STRING :{STRING} {STRING} +STR_JUST_STRING_STRING :{STRING}{STRING} STR_JUST_RAW_STRING :{STRING} # Slightly 'raw' stringcodes with colour or size @@ -4187,9 +4240,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 29965ddea..312bdb21f 100644 --- a/src/lang/italian.txt +++ b/src/lang/italian.txt @@ -201,21 +201,28 @@ STR_UNITS_POWER_IMPERIAL :{COMMA} hp STR_UNITS_POWER_METRIC :{COMMA} hp 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 STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} tonnellat{P a 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} gallon{P e i} STR_UNITS_VOLUME_LONG_METRIC :{COMMA} litr{P o 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} piedi +STR_UNITS_HEIGHT_METRIC :{COMMA} m STR_UNITS_HEIGHT_SI :{COMMA} m # Common window strings @@ -223,6 +230,7 @@ STR_LIST_FILTER_TITLE :{BLACK}Filtro: STR_LIST_FILTER_OSKTITLE :{BLACK}Inserire il filtro STR_LIST_FILTER_TOOLTIP :{BLACK}Inserire una parola da utilizzare per filtrare la lista +STR_TOOLTIP_GROUP_ORDER :{BLACK}Seleziona il criterio di raggruppamento STR_TOOLTIP_SORT_ORDER :{BLACK}Seleziona l'ordinamento (decrescente/crescente) STR_TOOLTIP_SORT_CRITERIA :{BLACK}Seleziona il criterio di ordinamento STR_TOOLTIP_FILTER_CRITERIA :{BLACK}Seleziona il criterio di filtraggio @@ -234,7 +242,8 @@ STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Chiude l STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Titolo della finestra - trascinarlo per muovere la finestra STR_TOOLTIP_SHADE :{BLACK}Comprimi finestra - Mostra solo il titolo STR_TOOLTIP_DEBUG :{BLACK}Mostra le informazioni di debug NewGRF -STR_TOOLTIP_STICKY :{BLACK}Marca questa finestra in modo che non venga chiusa quando si preme il tasto 'Chiudi tutte le finestre' +STR_TOOLTIP_DEFSIZE :{BLACK}Riporta la finestra alle dimensioni predefinite. CTRL+clic memorizza le dimensioni correnti come predefinite +STR_TOOLTIP_STICKY :{BLACK}Marca questa finestra in modo che non venga chiusa quando si preme il tasto 'Chiudi tutte le finestre'. CTRL+clic salva lo scelta come predefinita STR_TOOLTIP_RESIZE :{BLACK}Fare clic e trascinare per ridimensionare questa finestra STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Seleziona dimensione grande/piccola della finestra STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Barra di scorrimento - scorre l'elenco su/giù @@ -258,7 +267,6 @@ STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}Area: {N # These are used in buttons -STR_SORT_BY_CAPTION_POPULATION :{BLACK}Popolazione STR_SORT_BY_CAPTION_NAME :{BLACK}Nome STR_SORT_BY_CAPTION_DATE :{BLACK}Data # These are used in dropdowns @@ -279,7 +287,8 @@ STR_SORT_BY_LENGTH :Lunghezza STR_SORT_BY_LIFE_TIME :Vita rimanente STR_SORT_BY_TIMETABLE_DELAY :Ritardo sull'orario STR_SORT_BY_FACILITY :Tipo di stazione -STR_SORT_BY_WAITING :Carichi in attesa +STR_SORT_BY_WAITING_TOTAL :Carichi in attesa totali +STR_SORT_BY_WAITING_AVAILABLE :Carichi in attesa disponibili STR_SORT_BY_RATING_MAX :Valutazione maggiore STR_SORT_BY_RATING_MIN :Valutazione minore STR_SORT_BY_ENGINE_ID :EngineID (ordine classico) @@ -291,6 +300,8 @@ STR_SORT_BY_RUNNING_COST :Costo d'eserciz STR_SORT_BY_POWER_VS_RUNNING_COST :Potenza / Costo d'esercizio STR_SORT_BY_CARGO_CAPACITY :Capacità di carico STR_SORT_BY_RANGE :{G=f}Autonomia +STR_SORT_BY_POPULATION :Popolazione +STR_SORT_BY_RATING :Valutazione # Tooltips for the main toolbar STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Pausa @@ -303,6 +314,8 @@ STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Mostra i STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Mostra l'elenco delle stazioni di una compagnia STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Mostra informazioni finanziare sulle compagnie STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Mostra informazioni generali sulle compagnie +STR_TOOLBAR_TOOLTIP_DISPLAY_STORY_BOOK :{BLACK}Mostra la storia delle compagnie +STR_TOOLBAR_TOOLTIP_DISPLAY_GOALS_LIST :{BLACK}Mostra le liste degli obiettivi STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Mostra i grafici STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Mostra la classifica delle compagnie STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Finanzia la costruzione di una nuova industria o mostra l'elenco delle industrie @@ -373,19 +386,19 @@ STR_FILE_MENU_SEPARATOR : STR_FILE_MENU_EXIT :Esci ############ range ends here -############ range for map menu starts +# map menu STR_MAP_MENU_MAP_OF_WORLD :Mappa del mondo STR_MAP_MENU_EXTRA_VIEW_PORT :Mini visuale extra +STR_MAP_MENU_LINGRAPH_LEGEND :Legenda rotte commerciali STR_MAP_MENU_SIGN_LIST :Elenco cartelli -############ range for town menu starts, yet the town directory is shown in the map menu in the scenario editor + +############ range for town menu starts STR_TOWN_MENU_TOWN_DIRECTORY :Elenco città -############ end of the 'Display map' dropdown STR_TOWN_MENU_FOUND_TOWN :Fonda città -############ end of the 'Town' dropdown +############ range ends here ############ range for subsidies menu starts STR_SUBSIDIES_MENU_SUBSIDIES :Sussidi -STR_SUBSIDIES_MENU_GOAL :Obiettivi ############ range ends here ############ range for graph menu starts @@ -459,38 +472,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 @@ -531,18 +562,18 @@ STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COM STR_GRAPH_OPERATING_PROFIT_CAPTION :{WHITE}Grafico margine operativo STR_GRAPH_INCOME_CAPTION :{WHITE}Grafico ricavi -STR_GRAPH_CARGO_DELIVERED_CAPTION :{WHITE}Unità di merce consegnate +STR_GRAPH_CARGO_DELIVERED_CAPTION :{WHITE}Unità di carico consegnate STR_GRAPH_COMPANY_PERFORMANCE_RATINGS_CAPTION :{WHITE}Valutazione prestazioni compagnie (massima valutazione=1000) STR_GRAPH_COMPANY_VALUES_CAPTION :{WHITE}Valore delle compagnie STR_GRAPH_CARGO_PAYMENT_RATES_CAPTION :{WHITE}Tariffe di pagamento carichi STR_GRAPH_CARGO_PAYMENT_RATES_X_LABEL :{TINY_FONT}{BLACK}Giorni di viaggio -STR_GRAPH_CARGO_PAYMENT_RATES_TITLE :{TINY_FONT}{BLACK}Pagamento per la consegna di 10 unità (o 10.000 litri) di merce alla distanza di 20 riquadri +STR_GRAPH_CARGO_PAYMENT_RATES_TITLE :{TINY_FONT}{BLACK}Pagamento per la consegna di 10 unità (o 10.000 litri) di carico alla distanza di 20 riquadri STR_GRAPH_CARGO_ENABLE_ALL :{TINY_FONT}{BLACK}Abilita tutti STR_GRAPH_CARGO_DISABLE_ALL :{TINY_FONT}{BLACK}Disabilita tutti STR_GRAPH_CARGO_TOOLTIP_ENABLE_ALL :{BLACK}Mostra tutti i tipi di carico sul grafico delle tariffe STR_GRAPH_CARGO_TOOLTIP_DISABLE_ALL :{BLACK}Non mostra alcun tipo di carico sul grafico delle tariffe -STR_GRAPH_CARGO_PAYMENT_TOGGLE_CARGO :{BLACK}Attiva/disattiva il grafico per il tipo di merce +STR_GRAPH_CARGO_PAYMENT_TOGGLE_CARGO :{BLACK}Attiva/disattiva il grafico per il tipo di carico STR_GRAPH_CARGO_PAYMENT_CARGO :{TINY_FONT}{BLACK}{STRING} STR_GRAPH_PERFORMANCE_DETAIL_TOOLTIP :{BLACK}Mostra valutazione dettagliata prestazioni @@ -588,8 +619,8 @@ STR_PERFORMANCE_DETAIL_STATIONS_TOOLTIP :{BLACK}Numero d STR_PERFORMANCE_DETAIL_MIN_PROFIT_TOOLTIP :{BLACK}Profitto del veicolo con ricavi minori (sono considerati solo i veicoli più vecchi di due anni) STR_PERFORMANCE_DETAIL_MIN_INCOME_TOOLTIP :{BLACK}Ammontare di denaro guadagnato nel trimestre con il minimo profitto degli ultimi 12 trimestri STR_PERFORMANCE_DETAIL_MAX_INCOME_TOOLTIP :{BLACK}Ammontare di denaro guadagnato nel trimestre con il massimo profitto degli ultimi 12 trimestri -STR_PERFORMANCE_DETAIL_DELIVERED_TOOLTIP :{BLACK}Unità di merce consegnate negli ultimi quattro trimestri -STR_PERFORMANCE_DETAIL_CARGO_TOOLTIP :{BLACK}Tipi di merci consegnati nell'ultimo trimestre +STR_PERFORMANCE_DETAIL_DELIVERED_TOOLTIP :{BLACK}Unità di carico consegnate negli ultimi quattro trimestri +STR_PERFORMANCE_DETAIL_CARGO_TOOLTIP :{BLACK}Tipi di carico consegnati nell'ultimo trimestre STR_PERFORMANCE_DETAIL_MONEY_TOOLTIP :{BLACK}Ammontare di denaro di questa compagnia in banca STR_PERFORMANCE_DETAIL_LOAN_TOOLTIP :{BLACK}L'ammontare di denaro che questa compagnia ha preso in prestito STR_PERFORMANCE_DETAIL_TOTAL_TOOLTIP :{BLACK}Punteggio totale rispetto al massimo realizzabile @@ -652,7 +683,7 @@ STR_HIGHSCORE_PERFORMANCE_TITLE_CAPITALIST :Capitalista STR_HIGHSCORE_PERFORMANCE_TITLE_MAGNATE :Finanziere STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL :Magnate STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY :Magnate del secolo -STR_HIGHSCORE_NAME :{BIG_FONT}{PRESIDENT_NAME}, {COMPANY} +STR_HIGHSCORE_NAME :{PRESIDENT_NAME}, {COMPANY} STR_HIGHSCORE_STATS :{BIG_FONT}'{STRING}' ({COMMA}) STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{BLACK}{COMPANY} raggiunge lo status di '{STRING}'! STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{WHITE}{PRESIDENT_NAME} della {COMPANY} raggiunge lo status di '{STRING}'! @@ -663,17 +694,20 @@ STR_SMALLMAP_CAPTION :{WHITE}Mappa - STR_SMALLMAP_TYPE_CONTOURS :Territorio STR_SMALLMAP_TYPE_VEHICLES :Veicoli STR_SMALLMAP_TYPE_INDUSTRIES :Industrie +STR_SMALLMAP_TYPE_ROUTEMAP :Rotte commerciali STR_SMALLMAP_TYPE_ROUTES :Percorsi STR_SMALLMAP_TYPE_VEGETATION :Vegetazione STR_SMALLMAP_TYPE_OWNERS :Proprietari STR_SMALLMAP_TOOLTIP_SHOW_LAND_CONTOURS_ON_MAP :{BLACK}Mostra la conformazione del terreno sulla mappa STR_SMALLMAP_TOOLTIP_SHOW_VEHICLES_ON_MAP :{BLACK}Mostra i veicoli sulla mappa STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRIES_ON_MAP :{BLACK}Mostra le industrie sulla mappa +STR_SMALLMAP_TOOLTIP_SHOW_LINK_STATS_ON_MAP :{BLACK}Mostra le rotte commerciali sulla mappa STR_SMALLMAP_TOOLTIP_SHOW_TRANSPORT_ROUTES_ON :{BLACK}Mostra i percorsi di trasporto sulla mappa STR_SMALLMAP_TOOLTIP_SHOW_VEGETATION_ON_MAP :{BLACK}Mostra la vegetazione sulla mappa STR_SMALLMAP_TOOLTIP_SHOW_LAND_OWNERS_ON_MAP :{BLACK}Mostra i proprietari dei terreni sulla mappa STR_SMALLMAP_TOOLTIP_INDUSTRY_SELECTION :{BLACK}Fare clic su un tipo di industria per attivare/disattivare la visualizzazione.CTRL+clic disabilita tutti i tipi tranne quello selezionato. CTRL+clic nuovamente abilita tutti i tipi STR_SMALLMAP_TOOLTIP_COMPANY_SELECTION :{BLACK}Fare clic su una compagnia per attivare/disattivare la visualizzazione delle sue proprietà. CTRL+clic disabilita tutte le compagnie tranne quella selezionata. CTRL+clic nuovamente abilita tutte le compagnie +STR_SMALLMAP_TOOLTIP_CARGO_SELECTION :{BLACK}Fare clic su un carico per attivare/disattivare la visualizzazione delle sue proprietà. CTRL+clic disabilita tutti i carichi tranne quello selezionato. CTRL+clic nuovamente abilita tutti i carichi STR_SMALLMAP_LEGENDA_ROADS :{TINY_FONT}{BLACK}Strade STR_SMALLMAP_LEGENDA_RAILROADS :{TINY_FONT}{BLACK}Ferrovie @@ -707,6 +741,7 @@ STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLA STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Attiva/disattiva la visualizzazione dei nomi delle città sulla mappa STR_SMALLMAP_CENTER :{BLACK}Centra la minimappa sulla posizione corrente 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}Disabilita tutti @@ -717,6 +752,8 @@ STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES :{BLACK}Mostra t STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}Attiva/disattiva la visualizzazione della mappa altimetrica STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES :{BLACK}Nasconde le proprietà di tutte le compagnie dalla mappa STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}Mostra le proprietà di tutte le compagnie sulla mappa +STR_SMALLMAP_TOOLTIP_DISABLE_ALL_CARGOS :{BLACK}Nasconde tutti i carichi dalla mappa +STR_SMALLMAP_TOOLTIP_ENABLE_ALL_CARGOS :{BLACK}Mostra tutti i carichi sulla mappa # Status bar messages STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Mostra l'ultimo messaggio o notizia @@ -793,13 +830,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 @@ -878,15 +914,12 @@ STR_GAME_OPTIONS_CURRENCY_LTL :Litas lituano ( STR_GAME_OPTIONS_CURRENCY_KRW :Won sudcoreano (KRW) STR_GAME_OPTIONS_CURRENCY_ZAR :Rand sudafricano (ZAR) STR_GAME_OPTIONS_CURRENCY_CUSTOM :Personalizzata... +STR_GAME_OPTIONS_CURRENCY_GEL :Lari georgiano (GEL) +STR_GAME_OPTIONS_CURRENCY_IRR :Rial iraniano (IRR) ############ end of currency region -STR_GAME_OPTIONS_MEASURING_UNITS_FRAME :{BLACK}Unità di misura -STR_GAME_OPTIONS_MEASURING_UNITS_DROPDOWN_TOOLTIP :{BLACK}Seleziona le unità di misura ############ start of measuring units region -STR_GAME_OPTIONS_MEASURING_UNITS_IMPERIAL :Imperiali -STR_GAME_OPTIONS_MEASURING_UNITS_METRIC :Metriche -STR_GAME_OPTIONS_MEASURING_UNITS_SI :SI ############ end of measuring units region STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Automezzi @@ -924,11 +957,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 @@ -940,9 +975,6 @@ 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_BASE_GRF :{BLACK}Pacchetto grafico di base STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Seleziona il pacchetto grafico di base da utilizzare STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} file mancant{P e i}/corrott{P o i} @@ -957,6 +989,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 @@ -1056,8 +1089,9 @@ 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_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 :Impostazioni di base STR_CONFIG_SETTING_RESTRICT_ADVANCED :Impostazioni avanzate STR_CONFIG_SETTING_RESTRICT_ALL :Tutte le impostazioni (utenti esperti) @@ -1065,12 +1099,16 @@ STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :Impostazioni co STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :Impostazioni con un valore diverso di quello impostato a inizio partita STR_CONFIG_SETTING_TYPE_DROPDOWN_HELPTEXT :{BLACK}Limita la lista sottostante alle impostazioni di un tipo specifico -STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :Tutte le impostazioni -STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :Impostazione del client (non conservata nei salvataggi; influenza tutte le partite) -STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Impostazione di gioco (conservata nei salvataggi; influenza solo le nuove partite) -STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Impostazione di gioco (conservata nel salvataggio; influenza solo la partita corrente) -STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Impostazione della compagnia (conservata nei salvataggi; influenza solo le nuove partite) -STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Impostazione della compagnia (conservata nel salvataggio; influenza solo la compagnia corrente) +STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :Tutti i tipi di impostazioni +STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :Impostazioni del client (non conservate nei salvataggi; influenzano tutte le partite) +STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Impostazioni di gioco (conservate nei salvataggi; influenzano solo le nuove partite) +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 @@ -1133,8 +1171,6 @@ 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_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} @@ -1159,14 +1195,8 @@ 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_TUNNEL_LENGTH :Lunghezza massima dei tunnel: {STRING} @@ -1194,8 +1224,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 @@ -1226,10 +1254,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 @@ -1268,27 +1292,41 @@ STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :Mosta la popola 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_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 @@ -1309,7 +1347,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 @@ -1339,17 +1377,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} @@ -1358,7 +1394,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 @@ -1373,7 +1409,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. @@ -1395,7 +1431,7 @@ STR_CONFIG_SETTING_SOUND_DISASTER_HELPTEXT :Emette gli effe STR_CONFIG_SETTING_SOUND_VEHICLE :Veicoli: {STRING} STR_CONFIG_SETTING_SOUND_VEHICLE_HELPTEXT :Emette gli effetti sonori dei veicoli STR_CONFIG_SETTING_SOUND_AMBIENT :Ambientazione: {STRING} -STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :Emette gli effetti sonori del paesaggio, delle industrie e delle città +STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :Emette i suoni ambientali del paesaggio, delle industrie e delle città STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING :Disabilita costruzione delle infrastrutture quando non sono disponibili veicoli adatti: {STRING} STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING_HELPTEXT :Se abilitata, le infrastrutture sono disponibili solo se ci sono veicoli adatta disponibili, evitando così lo spreco di tempo e denaro in infrastrutture inutilizzabili @@ -1471,8 +1507,8 @@ STR_CONFIG_SETTING_NEWS_ADVICE :Consigli / info STR_CONFIG_SETTING_NEWS_ADVICE_HELPTEXT :Mostra messaggi sui veicoli che richiedono attenzione STR_CONFIG_SETTING_NEWS_NEW_VEHICLES :Nuovi veicoli: {STRING} STR_CONFIG_SETTING_NEWS_NEW_VEHICLES_HELPTEXT :Mostra un giornale quando un nuovo tipo di veicolo diventa disponibile -STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE :Cambiamenti della merce accettata: {STRING} -STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE_HELPTEXT :Mostra messaggi sui cambiamenti delle merci accettate dalle stazioni +STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE :Cambiamenti dei carichi accettati: {STRING} +STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE_HELPTEXT :Mostra messaggi sui cambiamenti delle carichi accettati dalle stazioni STR_CONFIG_SETTING_NEWS_SUBSIDIES :Sussidi: {STRING} STR_CONFIG_SETTING_NEWS_SUBSIDIES_HELPTEXT :Mostra un giornale su avvenimenti relativi ai sussidi STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION :Informazioni generali: {STRING} @@ -1571,28 +1607,90 @@ 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_GUI :{ORANGE}Interfaccia -STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}Costruzione +STR_CONFIG_SETTING_LINKGRAPH_INTERVAL :Aggiorna il grafo di distribuzione ogni {STRING} 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_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 +STR_CONFIG_SETTING_DISTRIBUTION_SYMMETRIC :Simmetrica +STR_CONFIG_SETTING_DISTRIBUTION_PAX :Modalità di distribuzione dei passeggeri: {STRING} +STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :In modalità "Simmetrica" il numero di passeggeri che viaggiano da una stazione A ad una B è approssimativamente lo stesso di quelli che viaggiano da B ad A. In modalità "Asimmetrica" è consentito il viaggio di un numero di passeggeri arbitrario in entrambe le direzioni. In modalità "Manuale" non viene effettuata alcuna distribuzione automatica dei passeggeri. +STR_CONFIG_SETTING_DISTRIBUTION_MAIL :Modalità di distribuzione della posta: {STRING} +STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :In modalità "Simmetrica" la quantità di posta spedita da una stazione A ad una B è approssimativamente la stessa di quella spedita da B ad A. In modalità "Asimmetrica" è consentita la spedizione di quantità di posta arbitrarie in entrambe le direzioni. In modalità "Manuale" non viene effettuata alcuna distribuzione automatica della posta. +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à "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 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} +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_HELPTEXT :Seleziona le unità di misura da utilizzare per mostrare le velocità nell'interfaccia utente +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_IMPERIAL :Imperiali (mph) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_METRIC :Metriche (km/h) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_SI :SI (m/s) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER :Unità di potenza veicoli: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_HELPTEXT :Seleziona le unità di misura da utilizzare per mostrare i valori di potenza dei veicoli nell'interfaccia utente +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_IMPERIAL :Imperiali (hp) +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_METRIC :Metriche (hp) +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_SI :SI (kW) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT :Unità di peso: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_HELPTEXT :Seleziona le unità di misura da utilizzare per mostrare i pesi nell'interfaccia utente +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_IMPERIAL :Imperiali (t/ton corti) +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_METRIC :Metriche (t/tonnellate) +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_SI :SI (kg) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME :Unità di volume: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_HELPTEXT :Seleziona le unità di misura da utilizzare per mostrare i volumi nell'interfaccia utente +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_IMPERIAL :Imperiali (gal) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_METRIC :Metriche (l) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_SI :SI (m³) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE :Unità di sforzo di trazione: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_HELPTEXT :Seleziona le unità di misura da utilizzare per mostrare i valori di sforzo di trazione (o forza di trazione) nell'interfaccia utente +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_IMPERIAL :Imperiali (lbf) +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_METRIC :Metriche (kgf) +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_SI :SI (kN) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT :Unità di altezza: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_HELPTEXT :Seleziona le unità di misura da utilizzare per mostrare le altezze nell'interfaccia utente +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :Imperiali (piedi) +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :Metriche (m) +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI (m) + +STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Localizzazione +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_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 @@ -1626,6 +1724,8 @@ STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_ALGORITHM :{WHITE}... form STR_CONFIG_ERROR_INVALID_BASE_GRAPHICS_NOT_FOUND :{WHITE}... ignorato pacchetto grafico di base '{STRING}': non trovato STR_CONFIG_ERROR_INVALID_BASE_SOUNDS_NOT_FOUND :{WHITE}... ignorato pacchetto sonoro di base '{STRING}': non trovato STR_CONFIG_ERROR_INVALID_BASE_MUSIC_NOT_FOUND :{WHITE}... ignorato pachetto musicale di base '{STRING}': non trovato +STR_CONFIG_ERROR_OUT_OF_MEMORY :{WHITE}Memoria esaurita +STR_CONFIG_ERROR_SPRITECACHE_TOO_BIG :{WHITE}Impossibile allocare {BYTES} della cache degli sprite. La cache degli sprite è stata limitata a {BYTES}; questo comporterà una riduzione delle prestazioni di OpenTTD. Per ridurre la quantità di memoria richiesta è possibile disabilitare la grafica a 32 bit e/o i livelli di zoom # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} @@ -1747,6 +1847,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 @@ -1802,10 +1903,10 @@ STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}Cambia l # Network server list STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}Multigiocatore -STR_NETWORK_SERVER_LIST_CONNECTION :{BLACK}Connessione: -STR_NETWORK_SERVER_LIST_CONNECTION_TOOLTIP :{BLACK}Sceglie fra una partita in Internet o in rete locale (LAN) -STR_NETWORK_SERVER_LIST_LAN :LAN -STR_NETWORK_SERVER_LIST_INTERNET :Internet +STR_NETWORK_SERVER_LIST_ADVERTISED :{BLACK}Pubblico +STR_NETWORK_SERVER_LIST_ADVERTISED_TOOLTIP :{BLACK}Sceglie fra partita pubblica (su Internet) o privata (su rete locale, LAN) +STR_NETWORK_SERVER_LIST_ADVERTISED_NO :No +STR_NETWORK_SERVER_LIST_ADVERTISED_YES :Sì STR_NETWORK_SERVER_LIST_PLAYER_NAME :{BLACK}Nome giocatore: STR_NETWORK_SERVER_LIST_ENTER_NAME_TOOLTIP :{BLACK}Questo è il nome con cui si verrà identificati dagli altri giocatori @@ -1864,8 +1965,8 @@ STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP :{BLACK}Il nome STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}Imposta password STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Protegge la partita con una password in modo che non sia accessibile pubblicamente -STR_NETWORK_START_SERVER_LAN_INTERNET :LAN / Internet -STR_NETWORK_START_SERVER_INTERNET_ADVERTISE :Internet (pubblicizza) +STR_NETWORK_START_SERVER_UNADVERTISED :No +STR_NETWORK_START_SERVER_ADVERTISED :Sì STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} client STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Limite client: STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}Imposta il numero massimo di client. Non tutti i posti dovranno essere occupati @@ -1986,6 +2087,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 @@ -2104,6 +2206,10 @@ STR_CONTENT_SELECT_UPDATES_CAPTION :{BLACK}Sel. agg STR_CONTENT_SELECT_UPDATES_CAPTION_TOOLTIP :{BLACK}Include nel download tutte le versioni aggiornate di contenuti esistenti STR_CONTENT_UNSELECT_ALL_CAPTION :{BLACK}Deseleziona tutti STR_CONTENT_UNSELECT_ALL_CAPTION_TOOLTIP :{BLACK}Esclude dal download tutti gli elementi +STR_CONTENT_SEARCH_EXTERNAL :{BLACK}Cerca in siti web esterni +STR_CONTENT_SEARCH_EXTERNAL_TOOLTIP :{BLACK}Cerca contenuti non disponibili sul servizio contenuti di OpenTTD in siti esterni non direttamente associati a OpenTTD +STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER_CAPTION :{WHITE}Si sta lasciando OpenTTD +STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER :{WHITE}I termini e le condizioni per lo scaricamento di contenuti da siti web esterni possono variare.{}Fare riferimento ai siti esterni per istruzioni su come installare il contenuto in OpenTTD.{}Si desidera proseguire? STR_CONTENT_FILTER_TITLE :{BLACK}Filtra per nome/tag: STR_CONTENT_OPEN_URL :{BLACK}Visita sito web STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}Visita il sito web di questo contenuto @@ -2173,6 +2279,19 @@ STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}Attiva/d STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Attiva/disattiva la trasparenza degli indicatori di caricamento. CTRL+clic per bloccare STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}Rendi gli oggetti invisibili invece che trasparenti +# Linkgraph legend window +STR_LINKGRAPH_LEGEND_CAPTION :{BLACK}Legenda rotte commerciali +STR_LINKGRAPH_LEGEND_ALL :{BLACK}Tutti +STR_LINKGRAPH_LEGEND_NONE :{BLACK}Nessuno +STR_LINKGRAPH_LEGEND_NONE.ms :{BLACK}Nessuno +STR_LINKGRAPH_LEGEND_NONE.fs :{BLACK}Nessuna +STR_LINKGRAPH_LEGEND_SELECT_COMPANIES :{BLACK}Seleziona le compagnie da mostrare + +# Linkgraph legend window and linkgraph legend in smallmap +STR_LINKGRAPH_LEGEND_UNUSED :{TINY_FONT}{BLACK}inutilizzata +STR_LINKGRAPH_LEGEND_SATURATED :{TINY_FONT}{BLACK}satura +STR_LINKGRAPH_LEGEND_OVERLOADED :{TINY_FONT}{BLACK}sovraccarica + # Base for station construction window(s) STR_STATION_BUILD_COVERAGE_AREA_TITLE :{BLACK}Evidenzia area coperta STR_STATION_BUILD_COVERAGE_OFF :{BLACK}Off @@ -2476,9 +2595,10 @@ STR_LAND_AREA_INFORMATION_AIRPORT_CLASS :{BLACK}Tipo aer STR_LAND_AREA_INFORMATION_AIRPORT_NAME :{BLACK}Nome aeroporto: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORTTILE_NAME :{BLACK}Nome blocco aeroporto: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: {LTBLUE}{STRING} -STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Merce accettata: {LTBLUE} +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 @@ -2575,7 +2695,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-2012 Il team OpenTTD +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2014 Il team OpenTTD # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Salva partita @@ -2594,6 +2714,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} @@ -2604,6 +2725,7 @@ STR_SAVELOAD_OSKTITLE :{BLACK}Inserire # World generation STR_MAPGEN_WORLD_GENERATION_CAPTION :{WHITE}Generazione mondo STR_MAPGEN_MAPSIZE :{BLACK}Area mappa: +STR_MAPGEN_MAPSIZE_TOOLTIP :{BLACK}Seleziona l'area della mappa espressa in riquadri. Il numero effettivo di riquadri disponibili sarà leggermente inferiore STR_MAPGEN_BY :{BLACK}* STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Numero città: STR_MAPGEN_DATE :{BLACK}Data: @@ -2611,10 +2733,6 @@ STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Numero i 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: @@ -2641,7 +2759,6 @@ 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_SNOW_LINE_QUERY_CAPT :{WHITE}Cambia l'altezza delle nevi perenni STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Cambia l'anno di inizio @@ -2696,6 +2813,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 @@ -2720,6 +2839,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 @@ -2790,6 +2919,7 @@ STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}Si stan STR_NEWGRF_DUPLICATE_GRFID :{WHITE}Impossibile aggiungere il file: GRF ID duplicato STR_NEWGRF_COMPATIBLE_LOADED :{ORANGE}File corrispondente non trovato (caricato file GRF compatibile) +STR_NEWGRF_TOO_MANY_NEWGRFS :{WHITE}Impossibile aggiungere il file: si è raggiunto il limite per i file NewGRF STR_NEWGRF_COMPATIBLE_LOAD_WARNING :{WHITE}File GRF compatibili caricati al posto dei file mancanti STR_NEWGRF_DISABLED_WARNING :{WHITE}I file GRF mancanti sono stati disabilitati @@ -2806,6 +2936,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}' @@ -2820,6 +2951,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... @@ -2901,10 +3035,14 @@ STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT :{YELLOW}Acquist STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}Corrompi l'autorità locale per aumentare la tua valutazione, con il rischio di una severa multa se scoperto.{}Costo: {CURRENCY_LONG} # Goal window -STR_GOALS_CAPTION :{WHITE}Obiettivi +STR_GOALS_CAPTION :{WHITE}Obiettivi della {COMPANY} +STR_GOALS_SPECTATOR_CAPTION :{WHITE}Obiettivi globali STR_GOALS_GLOBAL_TITLE :{BLACK}Obiettivi globali: STR_GOALS_TEXT :{ORANGE}{STRING} STR_GOALS_NONE :{ORANGE}- Nessuno - +STR_GOALS_SPECTATOR_NONE :{ORANGE}- Non applicabile - +STR_GOALS_PROGRESS :{ORANGE}{STRING} +STR_GOALS_PROGRESS_COMPLETE :{GREEN}{STRING} STR_GOALS_COMPANY_TITLE :{BLACK}Obiettivi della compagnia: STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Fare clic su un obiettivo per centrare la visuale principale sull'industria, città o riquadro. CTRL+clic mostra l'industria/città/riquadro in una mini visuale @@ -2943,6 +3081,18 @@ STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}Servizi STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING} da {STRING} a {STRING}{YELLOW} ({COMPANY}{YELLOW}, fino al {DATE_SHORT}) STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Fare clic su un servizio per centrare la visuale principale sull'industria o città. CTRL+clic mostra l'industria/città in una mini visuale +# Story book window +STR_STORY_BOOK_CAPTION :{WHITE}Storia della {COMPANY} +STR_STORY_BOOK_SPECTATOR_CAPTION :{WHITE}Storia globale +STR_STORY_BOOK_TITLE :{YELLOW}{STRING} +STR_STORY_BOOK_GENERIC_PAGE_ITEM :Pagina {NUM} +STR_STORY_BOOK_SEL_PAGE_TOOLTIP :{BLACK}Salta a una pagina specifica selezionandola dall'elenco +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. STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}Tenere premuto CTRL per selezionare più di un elemento @@ -2951,17 +3101,17 @@ STR_STATION_LIST_STATION :{YELLOW}{STATIO STR_STATION_LIST_WAYPOINT :{YELLOW}{WAYPOINT} STR_STATION_LIST_NONE :{YELLOW}- Nessuna - STR_STATION_LIST_SELECT_ALL_FACILITIES :{BLACK}Seleziona tutti i fabbricati -STR_STATION_LIST_SELECT_ALL_TYPES :{BLACK}Seleziona tutti i tipi di merce (comprese le merci non in attesa) -STR_STATION_LIST_NO_WAITING_CARGO :{BLACK}Non c'è nessun tipo di merce in attesa +STR_STATION_LIST_SELECT_ALL_TYPES :{BLACK}Seleziona tutti i tipi di carico (inclusi i carichi non in attesa) +STR_STATION_LIST_NO_WAITING_CARGO :{BLACK}Non c'è nessun tipo di carico in attesa # 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} in viaggio {G "da " dall' "dalla "}{STATION}) +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) STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Accetta -STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Mostra la lista delle merci accettate +STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Mostra la lista dei carichi accettati STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}Accetta: {WHITE}{CARGO_LIST} STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Questa stazione gode di diritti di trasporto esclusivi in questa città. @@ -2969,8 +3119,31 @@ STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}La {COM STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Valutazione STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Mostra la valutazione della stazione -STR_STATION_VIEW_CARGO_RATINGS_TITLE :{BLACK}Valutazione del servizio trasporti locale: -STR_STATION_VIEW_CARGO_RATING :{WHITE}{STRING}: {YELLOW}{STRING} ({COMMA}%) +STR_STATION_VIEW_SUPPLY_RATINGS_TITLE :{BLACK}Forniture mensili e valutazione locale: +STR_STATION_VIEW_CARGO_SUPPLY_RATING :{WHITE}{STRING}: {YELLOW}{COMMA} / {STRING} ({COMMA}%) + +STR_STATION_VIEW_GROUP :{BLACK}Raggruppa per +STR_STATION_VIEW_WAITING_STATION :Stazione: In attesa +STR_STATION_VIEW_WAITING_AMOUNT :Quantità: In attesa +STR_STATION_VIEW_PLANNED_STATION :Stazione: Pianificato +STR_STATION_VIEW_PLANNED_AMOUNT :Quantità: Pianificato +STR_STATION_VIEW_FROM :{YELLOW}{CARGO_SHORT} da {STATION} +STR_STATION_VIEW_VIA :{YELLOW}{CARGO_SHORT} via {STATION} +STR_STATION_VIEW_TO :{YELLOW}{CARGO_SHORT} a {STATION} +STR_STATION_VIEW_FROM_ANY :{RED}{CARGO_SHORT} da stazione sconosciuta +STR_STATION_VIEW_TO_ANY :{RED}{CARGO_SHORT} a qualsiasi stazione +STR_STATION_VIEW_VIA_ANY :{RED}{CARGO_SHORT} via qualsiasi stazione +STR_STATION_VIEW_FROM_HERE :{GREEN}{CARGO_SHORT} da questa stazione +STR_STATION_VIEW_VIA_HERE :{GREEN}{CARGO_SHORT} in fermata a questa stazione +STR_STATION_VIEW_TO_HERE :{GREEN}{CARGO_SHORT} a questa stazione +STR_STATION_VIEW_NONSTOP :{YELLOW}{CARGO_SHORT} no-stop + +STR_STATION_VIEW_GROUP_S_V_D :Origine, Via, Destinazione +STR_STATION_VIEW_GROUP_S_D_V :Origine, Destinazione, Via +STR_STATION_VIEW_GROUP_V_S_D :Via, Origine, Destinazione +STR_STATION_VIEW_GROUP_V_D_S :Via, Destinazione, Origine +STR_STATION_VIEW_GROUP_D_S_V :Destinazione, Origine, Via +STR_STATION_VIEW_GROUP_D_V_S :Destinazione, Via, Origine ############ range for rating starts STR_CARGO_RATING_APPALLING :Terribile @@ -3097,7 +3270,6 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS :{WHITE}Canali STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}Stazioni: STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}Riquadri stazione STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}Aeroporti -STR_COMPANY_INFRASTRUCTURE_VIEW_COST :{WHITE}{1:CURRENCY_LONG}/anno ({0:COMMA}) STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL :{WHITE}{CURRENCY_LONG}/anno # Industry directory @@ -3114,6 +3286,7 @@ STR_INDUSTRY_VIEW_PRODUCTION_LAST_MONTH_TITLE :{BLACK}Produzio STR_INDUSTRY_VIEW_TRANSPORTED :{YELLOW}{CARGO_LONG}{STRING}{BLACK} ({COMMA}% trasportato) STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Centra la visuale principale sulla posizione dell'industria. CTRL+clic la mostra in una mini visuale. STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Livello di produzione: {YELLOW}{COMMA}% +STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}L'industria ha annunciato che a breve chiuderà! ############ range for requires starts STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Richiede: {YELLOW}{STRING}{STRING} @@ -3176,12 +3349,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 @@ -3477,6 +3653,11 @@ STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Interval 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. +STR_SERVICE_INTERVAL_DROPDOWN_TOOLTIP :{BLACK}Cambia il tipo di intervallo di manutenzione +STR_VEHICLE_DETAILS_DEFAULT :Predefinito +STR_VEHICLE_DETAILS_DAYS :Giorni +STR_VEHICLE_DETAILS_PERCENT :Percentuale + STR_QUERY_RENAME_TRAIN_CAPTION :{WHITE}Nome del treno STR_QUERY_RENAME_ROAD_VEHICLE_CAPTION :{WHITE}Rinomina l'automezzo STR_QUERY_RENAME_SHIP_CAPTION :{WHITE}Rinomina nave @@ -3565,8 +3746,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 @@ -3657,18 +3838,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 @@ -3694,9 +3875,13 @@ 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} @@ -3712,7 +3897,7 @@ STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}Il viagg STR_TIMETABLE_STATUS_START_AT :{BLACK}Il viaggio inizierà in data {STRING} STR_TIMETABLE_STARTING_DATE :{BLACK}Data iniziale -STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Seleziona una data come punto di partenza della tabella oraria +STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Seleziona una data come punto di partenza della tabella oraria. CTRL+clic imposta la data iniziale di questa tabella oraria per tutti i veicoli che condividono gli ordini, distribuendole equamente in base in base al loro ordinamento relativo, ammesso che i tempi siano tutti specificati STR_TIMETABLE_CHANGE_TIME :{BLACK}Cambia tempo STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Cambia la quantità di tempo che dovrebbe essere impiegata per l'ordine selezionato @@ -3826,6 +4011,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 @@ -3848,6 +4035,10 @@ STR_INCOME_FLOAT_INCOME_SMALL :{TINY_FONT}{GRE STR_INCOME_FLOAT_INCOME :{GREEN}Ricavo: {CURRENCY_LONG} STR_FEEDER_TINY :{TINY_FONT}{YELLOW}Trasferiti: {CURRENCY_LONG} STR_FEEDER :{YELLOW}Trasferiti: {CURRENCY_LONG} +STR_FEEDER_INCOME_TINY :{TINY_FONT}{YELLOW}Trasferiti: {CURRENCY_LONG}{WHITE} / {GREEN}Ricavo: {CURRENCY_LONG} +STR_FEEDER_INCOME :{YELLOW}Trasferiti: {CURRENCY_LONG}{WHITE} / {GREEN}Ricavo: {CURRENCY_LONG} +STR_FEEDER_COST_TINY :{TINY_FONT}{YELLOW}Trasferiti: {CURRENCY_LONG}{WHITE} / {RED}Costo: {CURRENCY_LONG} +STR_FEEDER_COST :{YELLOW}Trasferiti: {CURRENCY_LONG}{WHITE} / {RED}Costo: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_COST :{WHITE}Costo stimato: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Ricavo stimato: {CURRENCY_LONG} @@ -4144,6 +4335,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... @@ -4199,6 +4391,11 @@ STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}Impossib STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... il veicolo è distrutto +STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL :{WHITE}Non sarà disponibile alcun veicolo +STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Cambiare i NewGRF configurati +STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}Non sono ancora disponibili veicoli +STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Iniziare una nuova partita dopo il {DATE_SHORT} o utilizzare un NewGRF che fornisca veicoli a partire da date antecedenti + # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Impossibile far passare al treno un segnale di pericolo... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Impossibile invertire la direzione del treno... @@ -4241,6 +4438,16 @@ STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}Impossib # Translatable comment for OpenTTD's desktop shortcut STR_DESKTOP_SHORTCUT_COMMENT :Gioco di simulazione basato su Transport Tycoon Deluxe +# Translatable descriptions in media/baseset/*.ob* files +STR_BASEGRAPHICS_DOS_DESCRIPTION :Grafica originale di Transport Tycoon Deluxe, edizione DOS. +STR_BASEGRAPHICS_DOS_DE_DESCRIPTION :Grafica originale di Transport Tycoon Deluxe (tedesco), edizione DOS. +STR_BASEGRAPHICS_WIN_DESCRIPTION :Grafica originale di Transport Tycoon Deluxe, edizione Windows. +STR_BASESOUNDS_DOS_DESCRIPTION :Suoni originali di Transport Tycoon Deluxe, edizione DOS. +STR_BASESOUNDS_WIN_DESCRIPTION :Suoni originali di Transport Tycoon Deluxe, edizione Windows. +STR_BASESOUNDS_NONE_DESCRIPTION :Un pacchetto sonoro non contenente alcun suono. +STR_BASEMUSIC_WIN_DESCRIPTION :Musica originale di Transport Tycoon Deluxe, edizione Windows. +STR_BASEMUSIC_NONE_DESCRIPTION :Un pacchetto musicale non contenente alcuna musica. + ##id 0x2000 # Town building names STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1 :Grattacielo di uffici @@ -4363,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 (Vapore) @@ -4572,7 +4779,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 @@ -4687,8 +4894,9 @@ 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_SPACE_STRING :{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} @@ -4712,9 +4920,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 54cd1e434..b16e952e4 100644 --- a/src/lang/japanese.txt +++ b/src/lang/japanese.txt @@ -21,7 +21,7 @@ ##id 0x0000 STR_NULL : STR_EMPTY : -STR_UNDEFINED :(文字列が未定義です) +STR_UNDEFINED :(文字列未定義) STR_JUST_NOTHING :なし # Cargo related strings @@ -91,7 +91,7 @@ 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 : @@ -121,11 +121,11 @@ STR_QUANTITY_TOYS :おもちゃ{CO STR_QUANTITY_SWEETS :お菓子{COMMA}袋 STR_QUANTITY_COLA :コーラ{VOLUME_LONG} STR_QUANTITY_CANDYFLOSS :わたあめ{WEIGHT_LONG} -STR_QUANTITY_BUBBLES :泡{COMMA}つ +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 @@ -154,10 +154,10 @@ STR_ABBREV_RUBBER :{TINY_FONT}ゴ STR_ABBREV_SUGAR :{TINY_FONT}糖 STR_ABBREV_TOYS :{TINY_FONT}玩 STR_ABBREV_SWEETS :{TINY_FONT}菓 -STR_ABBREV_COLA :{TINY_FONT}Co +STR_ABBREV_COLA :{TINY_FONT}コ STR_ABBREV_CANDYFLOSS :{TINY_FONT}わ STR_ABBREV_BUBBLES :{TINY_FONT}泡 -STR_ABBREV_TOFFEE :{TINY_FONT}タフ +STR_ABBREV_TOFFEE :{TINY_FONT}タ STR_ABBREV_BATTERIES :{TINY_FONT}電 STR_ABBREV_PLASTIC :{TINY_FONT}プ STR_ABBREV_FIZZY_DRINKS :{TINY_FONT}ソ @@ -173,70 +173,80 @@ STR_ITEMS :{COMMA}件 STR_CRATES :{COMMA}箱 # Colours, do not shuffle -STR_COLOUR_DARK_BLUE :紺色 -STR_COLOUR_PALE_GREEN :薄緑色 -STR_COLOUR_PINK :ピンク色 -STR_COLOUR_YELLOW :黄色 -STR_COLOUR_RED :赤色 -STR_COLOUR_LIGHT_BLUE :薄青色 -STR_COLOUR_GREEN :緑色 -STR_COLOUR_DARK_GREEN :濃緑色 -STR_COLOUR_BLUE :青色 -STR_COLOUR_CREAM :クリーム色 -STR_COLOUR_MAUVE :モーブ色 -STR_COLOUR_PURPLE :紫色 -STR_COLOUR_ORANGE :オレンジ色 -STR_COLOUR_BROWN :茶色 -STR_COLOUR_GREY :灰色 -STR_COLOUR_WHITE :白色 +STR_COLOUR_DARK_BLUE :紺 +STR_COLOUR_PALE_GREEN :薄緑 +STR_COLOUR_PINK :桃 +STR_COLOUR_YELLOW :黄 +STR_COLOUR_RED :赤 +STR_COLOUR_LIGHT_BLUE :薄青 +STR_COLOUR_GREEN :緑 +STR_COLOUR_DARK_GREEN :濃緑 +STR_COLOUR_BLUE :青 +STR_COLOUR_CREAM :薄黄 +STR_COLOUR_MAUVE :藤紫 +STR_COLOUR_PURPLE :紫 +STR_COLOUR_ORANGE :橙 +STR_COLOUR_BROWN :茶 +STR_COLOUR_GREY :灰 +STR_COLOUR_WHITE :白 # Units used in OpenTTD -STR_UNITS_VELOCITY_IMPERIAL :{COMMA}mi/h +STR_UNITS_VELOCITY_IMPERIAL :{COMMA}mph STR_UNITS_VELOCITY_METRIC :{COMMA}km/h STR_UNITS_VELOCITY_SI :{COMMA}m/s -STR_UNITS_POWER_IMPERIAL :{COMMA}hp (英馬力) -STR_UNITS_POWER_METRIC :{COMMA}hp (英馬力) +STR_UNITS_POWER_IMPERIAL :{COMMA}英馬力 +STR_UNITS_POWER_METRIC :{COMMA}仏馬力 STR_UNITS_POWER_SI :{COMMA}kW -STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}t +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}米トン STR_UNITS_WEIGHT_LONG_METRIC :{COMMA}トン STR_UNITS_WEIGHT_LONG_SI :{COMMA}kg +STR_UNITS_VOLUME_SHORT_IMPERIAL :{COMMA}gal. STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}ℓ STR_UNITS_VOLUME_SHORT_SI :{COMMA}m³ +STR_UNITS_VOLUME_LONG_IMPERIAL :{COMMA}ガロン STR_UNITS_VOLUME_LONG_METRIC :{COMMA}リットル STR_UNITS_VOLUME_LONG_SI :{COMMA}m³ +STR_UNITS_FORCE_IMPERIAL :{COMMA}重量ポンド +STR_UNITS_FORCE_METRIC :{COMMA}kgf STR_UNITS_FORCE_SI :{COMMA}kN -STR_UNITS_HEIGHT_IMPERIAL :{COMMA}ft +STR_UNITS_HEIGHT_IMPERIAL :{COMMA}フィート +STR_UNITS_HEIGHT_METRIC :{COMMA}m STR_UNITS_HEIGHT_SI :{COMMA}m # Common window strings -STR_LIST_FILTER_OSKTITLE :{BLACK}フィルターを入力 -STR_LIST_FILTER_TOOLTIP :{BLACK}フィルターのキーワードを入力 +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_TOOLTIP_SORT_CRITERIA :{BLACK}並べ替えの基準を選択します +STR_TOOLTIP_FILTER_CRITERIA :{BLACK}フィルタリングの基準を選択します STR_BUTTON_SORT_BY :{BLACK}並べ替え -STR_BUTTON_LOCATION :{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_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}「すべてのウィンドウを閉じる」をクリックしても、このウィンドウが閉じられないようにします。 -STR_TOOLTIP_RESIZE :{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キーを押しながら決定すると、コストを見積もります。 +STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}スクロールバーです。リストを縦にスクロールします +STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}スクロールバーです。リストを横にスクロールします +STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}建物などを範囲指定して撤去します。Ctrlを押すと、範囲が斜めになります。Shiftを押しながら決定すると、費用を見積もります # Query window STR_BUTTON_DEFAULT :{BLACK}デフォルト @@ -248,210 +258,219 @@ STR_OSK_KEYBOARD_LAYOUT :{NBSP}123456789 STR_OSK_KEYBOARD_LAYOUT_CAPS :{NBSP}!"#$%&'() =~|QWERTYUIOP`{{}ASDFGHJKL+*} ZXCVBNM<>?_ # Measurement tooltip -STR_MEASURE_LENGTH :{BLACK}長さ: {NUM} -STR_MEASURE_AREA :{BLACK}地域: {NUM} × {NUM} -STR_MEASURE_LENGTH_HEIGHTDIFF :{BLACK}長さ: {NUM}{}高さの違い: {HEIGHT} -STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}地域: {NUM} × {NUM}{}高さの違い: {HEIGHT} +STR_MEASURE_LENGTH :{BLACK}距離: {NUM} +STR_MEASURE_AREA :{BLACK}面積: {NUM} × {NUM} +STR_MEASURE_LENGTH_HEIGHTDIFF :{BLACK}距離: {NUM}{}高低差: {HEIGHT} +STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}面積: {NUM} × {NUM}{}高低差: {HEIGHT} # These are used in buttons -STR_SORT_BY_CAPTION_POPULATION :{BLACK}人口 STR_SORT_BY_CAPTION_NAME :{BLACK}名前 STR_SORT_BY_CAPTION_DATE :{BLACK}日付 # These are used in dropdowns STR_SORT_BY_NAME :名前 STR_SORT_BY_PRODUCTION :生産量 STR_SORT_BY_TYPE :種類 -STR_SORT_BY_TRANSPORTED :運送済み +STR_SORT_BY_TRANSPORTED :搬送済量 STR_SORT_BY_NUMBER :番号 STR_SORT_BY_PROFIT_LAST_YEAR :昨年の損益 STR_SORT_BY_PROFIT_THIS_YEAR :今年の損益 STR_SORT_BY_AGE :使用年数 STR_SORT_BY_RELIABILITY :信頼性 -STR_SORT_BY_TOTAL_CAPACITY_PER_CARGOTYPE :貨物の種類別の総容量 -STR_SORT_BY_MAX_SPEED :最大速度 +STR_SORT_BY_TOTAL_CAPACITY_PER_CARGOTYPE :貨物種類別の総容量 +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_TIMETABLE_DELAY :到着時刻の遅れ -STR_SORT_BY_FACILITY :駅の種類 -STR_SORT_BY_WAITING :積載待ち貨物の価値 -STR_SORT_BY_RATING_MAX :貨物運搬の最高評価 -STR_SORT_BY_RATING_MIN :貨物運搬の最低評価 -STR_SORT_BY_ENGINE_ID :エンジンID(標準) -STR_SORT_BY_COST :値段 -STR_SORT_BY_POWER :仕事率 +STR_SORT_BY_VALUE :資産価値 +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(オリジナル版) +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_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_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}データのセーブ、ゲームの中断、OpenTTDの終了ができます。 -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_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_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_PAUSE_GAME :{BLACK}ゲームをポーズします +STR_TOOLBAR_TOOLTIP_FORWARD :{BLACK}ゲームスピードを早くします +STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}ゲームオプションの設定画面を開きます +STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK}ゲームのセーブ、中断、OpenTTDの終了ができます +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+クリックで一覧のみ表示します +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}鉄道を建設します +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_SHOW_SOUND_MUSIC_WINDOW :{BLACK}音楽/効果音のウィンドウを表示します。 -STR_TOOLBAR_TOOLTIP_SHOW_LAST_MESSAGE_NEWS :{BLACK}最後のメッセージとニュースの表示と、メッセージオプションの設定ができます。 -STR_TOOLBAR_TOOLTIP_LAND_BLOCK_INFORMATION :{BLACK}地域の情報、コンソール、AIのデバッグ、スクリーンショット、OpenTTDについて、などのツール群です。 -STR_TOOLBAR_TOOLTIP_SWITCH_TOOLBAR :{BLACK}ツールバーの切り替えをします。 +STR_TOOLBAR_TOOLTIP_SHOW_SOUND_MUSIC_WINDOW :{BLACK}音楽/効果音のウィンドウを表示します +STR_TOOLBAR_TOOLTIP_SHOW_LAST_MESSAGE_NEWS :{BLACK}最後のメッセージ/ニュースの表示と、メッセージオプションの設定ができます +STR_TOOLBAR_TOOLTIP_LAND_BLOCK_INFORMATION :{BLACK}地域の情報、コンソール、スクリプトのデバッグ、スクリーンショット、OpenTTDについて、などのツール群です +STR_TOOLBAR_TOOLTIP_SWITCH_TOOLBAR :{BLACK}ツールバーを切り替えます # Extra tooltips for the scenario editor toolbar -STR_SCENEDIT_TOOLBAR_TOOLTIP_SAVE_SCENARIO_LOAD_SCENARIO :{BLACK}シナリオのセーブ、シナリオのロード、シナリオエディタの終了、OpenTTDの終了ができます。 +STR_SCENEDIT_TOOLBAR_TOOLTIP_SAVE_SCENARIO_LOAD_SCENARIO :{BLACK}シナリオのセーブ、シナリオのロード、シナリオエディタの終了、OpenTTDの終了ができます STR_SCENEDIT_TOOLBAR_OPENTTD :{YELLOW}OpenTTD STR_SCENEDIT_TOOLBAR_SCENARIO_EDITOR :{YELLOW}シナリオエディタ -STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_BACKWARD :{BLACK}開始年月日を1年戻します。 -STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_FORWARD :{BLACK}開始年月日を1年進めます。 -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_PLANT_TREES :{BLACK}木を植えます。Shiftキーを押しながら決定するとコストを見積もります。 -STR_SCENEDIT_TOOLBAR_PLACE_SIGN :{BLACK}看板を設置します。 -STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}物を設置します。Shiftキーを押しながら決定するとコストを見積もります。 +STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_BACKWARD :{BLACK}開始年月日を1年戻します +STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_FORWARD :{BLACK}開始年月日を1年進めます +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_PLANT_TREES :{BLACK}木を植えます。Shiftキーを押しながら決定すると費用を見積もります +STR_SCENEDIT_TOOLBAR_PLACE_SIGN :{BLACK}標識を設置します +STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}オブジェクトを設置します。Shiftを押しながら決定すると費用を見積もります ############ range for SE file menu starts STR_SCENEDIT_FILE_MENU_SAVE_SCENARIO :シナリオをセーブ STR_SCENEDIT_FILE_MENU_LOAD_SCENARIO :シナリオをロード -STR_SCENEDIT_FILE_MENU_SAVE_HEIGHTMAP :ハイトマップをセーブする +STR_SCENEDIT_FILE_MENU_SAVE_HEIGHTMAP :ハイトマップをセーブ STR_SCENEDIT_FILE_MENU_LOAD_HEIGHTMAP :ハイトマップをロード STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :タイトルに戻る -STR_SCENEDIT_FILE_MENU_SEPARATOR : +STR_SCENEDIT_FILE_MENU_SEPARATOR :――――――――― STR_SCENEDIT_FILE_MENU_QUIT :OpenTTDを終了 ############ range for SE file menu starts ############ range for settings menu starts -STR_SETTINGS_MENU_GAME_OPTIONS :ゲームオプションの設定 -STR_SETTINGS_MENU_CONFIG_SETTINGS :追加機能の設定 -STR_SETTINGS_MENU_SCRIPT_SETTINGS :AIとかスクリプトの設定 +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 :透明度の設定 -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 :駅の看板の表示を半透明にする +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_SAVE_GAME :セーブ +STR_FILE_MENU_LOAD_GAME :ロード STR_FILE_MENU_QUIT_GAME :タイトルに戻る -STR_FILE_MENU_SEPARATOR : +STR_FILE_MENU_SEPARATOR :――――――― STR_FILE_MENU_EXIT :OpenTTDを終了 ############ range ends here -############ range for map menu starts -STR_MAP_MENU_MAP_OF_WORLD :世界地図 +# map menu +STR_MAP_MENU_MAP_OF_WORLD :地図 STR_MAP_MENU_EXTRA_VIEW_PORT :ビューポートを開く -STR_MAP_MENU_SIGN_LIST :看板のリスト -############ range for town menu starts, yet the town directory is shown in the map menu in the scenario editor -STR_TOWN_MENU_TOWN_DIRECTORY :町のリスト -############ end of the 'Display map' dropdown -STR_TOWN_MENU_FOUND_TOWN :町の新設に出資 -############ end of the 'Town' dropdown +STR_MAP_MENU_LINGRAPH_LEGEND :貨物輸送履歴 +STR_MAP_MENU_SIGN_LIST :標識リスト + +############ range for town menu starts +STR_TOWN_MENU_TOWN_DIRECTORY :街一覧 +STR_TOWN_MENU_FOUND_TOWN :街新設に出資 +############ range ends here ############ range for subsidies menu starts STR_SUBSIDIES_MENU_SUBSIDIES :助成金 -STR_SUBSIDIES_MENU_GOAL :現在の目的 ############ 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 :貨物の運送報酬の相場 +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_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_DIRECTORY :産業リスト +STR_INDUSTRY_MENU_INDUSTRY_CHAIN :産業チェイン 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_MONORAIL_CONSTRUCTION :モノレールの建設 -STR_RAIL_MENU_MAGLEV_CONSTRUCTION :マグレブ(リニア)の建設 +STR_RAIL_MENU_RAILROAD_CONSTRUCTION :鉄道建設 +STR_RAIL_MENU_ELRAIL_CONSTRUCTION :電気鉄道建設 +STR_RAIL_MENU_MONORAIL_CONSTRUCTION :モノレール建設 +STR_RAIL_MENU_MAGLEV_CONSTRUCTION :マグレブ(リニア)建設 ############ range ends here ############ range for road construction menu starts -STR_ROAD_MENU_ROAD_CONSTRUCTION :道路の建設 -STR_ROAD_MENU_TRAM_CONSTRUCTION :路面電車の建設 +STR_ROAD_MENU_ROAD_CONSTRUCTION :道路建設 +STR_ROAD_MENU_TRAM_CONSTRUCTION :路面電車建設 ############ range ends here ############ range for waterways construction menu starts -STR_WATERWAYS_MENU_WATERWAYS_CONSTRUCTION :水路の建設 +STR_WATERWAYS_MENU_WATERWAYS_CONSTRUCTION :水運設備建設 ############ range ends here ############ range for airport construction menu starts -STR_AIRCRAFT_MENU_AIRPORT_CONSTRUCTION :空港の建設 +STR_AIRCRAFT_MENU_AIRPORT_CONSTRUCTION :空港建設 ############ range ends here ############ range for landscaping menu starts -STR_LANDSCAPING_MENU_LANDSCAPING :地形のツール -STR_LANDSCAPING_MENU_PLANT_TREES :木を植える -STR_LANDSCAPING_MENU_PLACE_SIGN :看板の設置 +STR_LANDSCAPING_MENU_LANDSCAPING :地形ツール +STR_LANDSCAPING_MENU_PLANT_TREES :植林 +STR_LANDSCAPING_MENU_PLACE_SIGN :標識設置 ############ range ends here ############ range for music menu starts -STR_TOOLBAR_SOUND_MUSIC :効果音/音楽 +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 :メッセージの履歴 +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_TOGGLE_CONSOLE :コンソールの表示/非表示 -STR_ABOUT_MENU_AI_DEBUG :AI のデバッグ -STR_ABOUT_MENU_SCREENSHOT :スクリーンショットを取る -STR_ABOUT_MENU_ZOOMIN_SCREENSHOT :高解像度のスクリーンショットを取る -STR_ABOUT_MENU_GIANT_SCREENSHOT :全体のスクリーンショットを取る +STR_ABOUT_MENU_LAND_BLOCK_INFO :地域情報 +STR_ABOUT_MENU_SEPARATOR :――――――――――――――――― +STR_ABOUT_MENU_TOGGLE_CONSOLE :コンソールの表示切替 +STR_ABOUT_MENU_AI_DEBUG :AI/ゲームスクリプトのデバッグ +STR_ABOUT_MENU_SCREENSHOT :スクリーンショット撮影(現在のズーム) +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 :スプライトを整列 +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 @@ -467,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 @@ -514,90 +551,90 @@ STR_MONTH_DEC :12 ############ range for months ends # Graph window -STR_GRAPH_KEY_BUTTON :{BLACK}項目の対応 -STR_GRAPH_KEY_TOOLTIP :{BLACK}グラフの説明を表示します +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_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単位(または10000リットル)を20マス運送したときの報酬 +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_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}会社の格付けの詳細情報を表示します。 +STR_GRAPH_PERFORMANCE_DETAIL_TOOLTIP :{BLACK}格付の詳細情報を表示します # Graph key window -STR_GRAPH_KEY_CAPTION :{WHITE}会社と項目の対応表 -STR_GRAPH_KEY_COMPANY_SELECTION_TOOLTIP :{BLACK}この会社の項目の、表示/非表示を切り替えます。 +STR_GRAPH_KEY_CAPTION :{WHITE}会社凡例 +STR_GRAPH_KEY_COMPANY_SELECTION_TOOLTIP :{BLACK}この会社の表示/非表示を切り替えます # Company league window -STR_COMPANY_LEAGUE_TABLE_CAPTION :{WHITE}会社の格付けの順位表 +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 :社長 -STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TYCOON :大君 +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 :総長 +STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TYCOON :巨頭 # Performance detail window -STR_PERFORMANCE_DETAIL :{WHITE}会社の格付けの詳細情報 +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_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}この会社の詳細情報を見ます。 +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}合計: +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_STATIONS_TOOLTIP :{BLACK}最近使われている、駅の数を表します。2種類以上の交通で構成された駅は、一つとして数えます。 -STR_PERFORMANCE_DETAIL_MIN_PROFIT_TOOLTIP :{BLACK}車両全体の中での、一番利益の低い車両(購入から2年以上)の利益を表します。 -STR_PERFORMANCE_DETAIL_MIN_INCOME_TOOLTIP :{BLACK}過去3年間の、最小収益を記録した、四半期間を表します。 -STR_PERFORMANCE_DETAIL_MAX_INCOME_TOOLTIP :{BLACK}過去3年間の、最大収益を記録した、四半期間を表します。 -STR_PERFORMANCE_DETAIL_DELIVERED_TOOLTIP :{BLACK}過去1年間に運送した貨物の量を表します。 -STR_PERFORMANCE_DETAIL_CARGO_TOOLTIP :{BLACK}最後の四半期間に運送した貨物の種類の数を表します。 -STR_PERFORMANCE_DETAIL_MONEY_TOOLTIP :{BLACK}この会社の資本金を表します。 -STR_PERFORMANCE_DETAIL_LOAN_TOOLTIP :{BLACK}この会社の社債の量を表します。 -STR_PERFORMANCE_DETAIL_TOTAL_TOOLTIP :{BLACK}格付けの点数の合計を表します。 +STR_PERFORMANCE_DETAIL_VEHICLES_TOOLTIP :{BLACK}去年黒字だった列車・車両・船舶・航空機の数です +STR_PERFORMANCE_DETAIL_STATIONS_TOOLTIP :{BLACK}最近業務に使われた停留施設の数です。2種類以上の交通機関で構成される場合は、それぞれ別々に数えます +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}過去1年間に運送した貨物の量です +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_JAZZ_JUKEBOX_CAPTION :{WHITE}ジャズ・ジュークボックス -STR_MUSIC_PLAYLIST_ALL :{TINY_FONT}{BLACK}すべての曲 +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}カスタム1 STR_MUSIC_PLAYLIST_CUSTOM_2 :{TINY_FONT}{BLACK}カスタム2 -STR_MUSIC_MUSIC_VOLUME :{TINY_FONT}{BLACK}音楽の音量 -STR_MUSIC_EFFECTS_VOLUME :{TINY_FONT}{BLACK}エフェクトの音量 -STR_MUSIC_RULER_MIN :{TINY_FONT}{BLACK}MIN -STR_MUSIC_RULER_MAX :{TINY_FONT}{BLACK}MAX +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} @@ -611,289 +648,293 @@ 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}プレイリスト'Ezyストリート'を選択します。 -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}選択された音楽セットに曲がありません。 +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}プレイリスト'Ezyストリート'を選択します +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_TRACK_INDEX :{TINY_FONT}{BLACK}楽曲索引 STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}プレイリスト - '{STRING}' 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_ADD_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}年に到達した会社のハイスコア -STR_HIGHSCORE_TOP_COMPANIES_NETWORK_GAME :{BIG_FONT}{BLACK}{NUM}の会社の格付けの順位 +STR_HIGHSCORE_TOP_COMPANIES_WHO_REACHED :{BIG_FONT}{BLACK}{NUM}年まで勤続経営した首位企業 +STR_HIGHSCORE_TOP_COMPANIES_NETWORK_GAME :{BIG_FONT}{BLACK}{NUM}の格付順位 STR_HIGHSCORE_POSITION :{BIG_FONT}{BLACK}{COMMA}. -STR_HIGHSCORE_PERFORMANCE_TITLE_BUSINESSMAN :事務家 +STR_HIGHSCORE_PERFORMANCE_TITLE_BUSINESSMAN :実務家 STR_HIGHSCORE_PERFORMANCE_TITLE_ENTREPRENEUR :起業家 STR_HIGHSCORE_PERFORMANCE_TITLE_INDUSTRIALIST :実業家 STR_HIGHSCORE_PERFORMANCE_TITLE_CAPITALIST :資本家 -STR_HIGHSCORE_PERFORMANCE_TITLE_MAGNATE :大事業家 -STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL :権力者 -STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY :世紀の大君 -STR_HIGHSCORE_NAME :{BIG_FONT}{PRESIDENT_NAME}、{COMPANY} -STR_HIGHSCORE_STATS :{BIG_FONT}'{STRING}' ({COMMA}) -STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{BLACK}{COMPANY} は '{STRING}' の称号を獲得した! -STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{WHITE}{PRESIDENT_NAME} の {COMPANY} は '{STRING}' の称号を獲得した! +STR_HIGHSCORE_PERFORMANCE_TITLE_MAGNATE :重鎮 +STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL :大御所 +STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY :世紀の大物 +STR_HIGHSCORE_NAME :{PRESIDENT_NAME}、{COMPANY} +STR_HIGHSCORE_STATS :{BIG_FONT}'{STRING}' ({COMMA}) +STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{BLACK}{COMPANY} は '{STRING}' の称号を獲得した! +STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{WHITE}{PRESIDENT_NAME} の {COMPANY} は '{STRING}' の称号を獲得した! # Smallmap window STR_SMALLMAP_CAPTION :{WHITE}地図 - {STRING} -STR_SMALLMAP_TYPE_CONTOURS :地形 -STR_SMALLMAP_TYPE_VEHICLES :車両 +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_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_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_CARGO_SELECTION :{BLACK}貨物種別をクリックすると、その貨物種別の表示/非表示が切り替わります。Ctrl+クリックで、その貨物種別以外の表示を切り替えます。もう一度同じ操作をすると、元に戻ります STR_SMALLMAP_LEGENDA_ROADS :{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_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_AIRCRAFT :{TINY_FONT}{BLACK}航空機 STR_SMALLMAP_LEGENDA_TRANSPORT_ROUTES :{TINY_FONT}{BLACK}運送経路 STR_SMALLMAP_LEGENDA_FOREST :{TINY_FONT}{BLACK}森林 STR_SMALLMAP_LEGENDA_RAILROAD_STATION :{TINY_FONT}{BLACK}駅 STR_SMALLMAP_LEGENDA_TRUCK_LOADING_BAY :{TINY_FONT}{BLACK}荷役所 STR_SMALLMAP_LEGENDA_BUS_STATION :{TINY_FONT}{BLACK}バス停 -STR_SMALLMAP_LEGENDA_AIRPORT_HELIPORT :{TINY_FONT}{BLACK}空港/ヘリポート +STR_SMALLMAP_LEGENDA_AIRPORT_HELIPORT :{TINY_FONT}{BLACK}空港/ヘリポート STR_SMALLMAP_LEGENDA_DOCK :{TINY_FONT}{BLACK}埠頭 STR_SMALLMAP_LEGENDA_ROUGH_LAND :{TINY_FONT}{BLACK}荒地 STR_SMALLMAP_LEGENDA_GRASS_LAND :{TINY_FONT}{BLACK}草地 -STR_SMALLMAP_LEGENDA_BARE_LAND :{TINY_FONT}{BLACK}空地 -STR_SMALLMAP_LEGENDA_FIELDS :{TINY_FONT}{BLACK}田畑 -STR_SMALLMAP_LEGENDA_TREES :{TINY_FONT}{BLACK}木 +STR_SMALLMAP_LEGENDA_BARE_LAND :{TINY_FONT}{BLACK}露地 +STR_SMALLMAP_LEGENDA_FIELDS :{TINY_FONT}{BLACK}耕作地 +STR_SMALLMAP_LEGENDA_TREES :{TINY_FONT}{BLACK}樹林 STR_SMALLMAP_LEGENDA_ROCKS :{TINY_FONT}{BLACK}岩石 -STR_SMALLMAP_LEGENDA_WATER :{TINY_FONT}{BLACK}水 +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_TOWNS :{TINY_FONT}{BLACK}街 STR_SMALLMAP_LEGENDA_INDUSTRIES :{TINY_FONT}{BLACK}産業 STR_SMALLMAP_LEGENDA_DESERT :{TINY_FONT}{BLACK}砂漠 STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLACK}雪 -STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}地図での町名の表示/非表示を切り替えます。 -STR_SMALLMAP_CENTER :{BLACK}ミニマップの画面を、メイン画面で表示している場所に移動します。 +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}全て非表示 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_SHOW_HEIGHT :{BLACK}標高別に色分けをするかどうかを切り替えます。 -STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES :{BLACK}全ての会社の所有物を非表示にします。 -STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{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}全会社の所有施設を表示します +STR_SMALLMAP_TOOLTIP_DISABLE_ALL_CARGOS :{BLACK}全貨物種別を非表示にします +STR_SMALLMAP_TOOLTIP_ENABLE_ALL_CARGOS :{BLACK}全貨物種別を表示します # Status bar messages -STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}最近のメッセージ/ニュースを表示します。 +STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}最新のメッセージ/ニュースを表示します STR_STATUSBAR_COMPANY_NAME :{SILVER}- - {COMPANY} - - -STR_STATUSBAR_PAUSED :{YELLOW}**ポーズ中** +STR_STATUSBAR_PAUSED :{YELLOW}* * ポーズ中 * * STR_STATUSBAR_AUTOSAVE :{RED}オートセーブ -STR_STATUSBAR_SAVING_GAME :{RED}**ゲームをセーブ中** +STR_STATUSBAR_SAVING_GAME :{RED}* * ゲームセーブ中 * * # News message history STR_MESSAGE_HISTORY :{WHITE}メッセージ履歴 -STR_MESSAGE_HISTORY_TOOLTIP :{BLACK}最近のニュースやメッセージのリストです。 +STR_MESSAGE_HISTORY_TOOLTIP :{BLACK}最新のニュース/メッセージのリストです STR_MESSAGE_NEWS_FORMAT :{STRING} - {STRING} STR_NEWS_MESSAGE_CAPTION :{WHITE}メッセージ STR_NEWS_CUSTOM_ITEM :{BIG_FONT}{BLACK}{STRING} -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_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}に初めて航空機が到着!{}住民から歓声が湧き上がっている模様。 - -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}飛行機墜落事故発生!{}{1:STATION}で飛行機が墜落し、搭乗していた{0:COMMA}人が死亡。 -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_AIRPLANE_OIL_REFINERY :{BIG_FONT}{BLACK}{TOWN}付近で石油精製所が爆発した! -STR_NEWS_DISASTER_HELICOPTER_FACTORY :{BIG_FONT}{BLACK}{TOWN}付近の工場が、原因不明の崩壊! -STR_NEWS_DISASTER_BIG_UFO :{BIG_FONT}{BLACK}{TOWN}付近にUFOが着陸! -STR_NEWS_DISASTER_COAL_MINE_SUBSIDENCE :{BIG_FONT}{BLACK}{TOWN}付近の炭鉱が、地盤沈下の影響で崩壊! -STR_NEWS_DISASTER_FLOOD_VEHICLE :{BIG_FONT}{BLACK}洪水発生!{}この洪水により、少なくとも{COMMA}人が死亡、もしくは行方不明。 - -STR_NEWS_COMPANY_IN_TROUBLE_TITLE :{BIG_FONT}{BLACK}運送会社にトラブル発生! -STR_NEWS_COMPANY_IN_TROUBLE_DESCRIPTION :{BIG_FONT}{BLACK}{STRING}はすぐに業績改善をしないと、倒産または買収されてしまいます! -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_LAUNCH_TITLE :{BIG_FONT}{BLACK}新しい運送会社が開業! -STR_NEWS_COMPANY_LAUNCH_DESCRIPTION :{BIG_FONT}{BLACK}{STRING}が{TOWN}付近で建設を開始! -STR_NEWS_MERGER_TAKEOVER_TITLE :{BIG_FONT}{BLACK}{1:STRING}が{0:STRING}を買収! -STR_PRESIDENT_NAME_MANAGER :{BLACK}{PRESIDENT_NAME}{}(経営者) - -STR_NEWS_NEW_TOWN :{BLACK}{BIG_FONT}{1:TOWN}が{0:STRING}の出資により新しく設立! - -STR_NEWS_INDUSTRY_CONSTRUCTION :{BIG_FONT}{BLACK}新しい{STRING}が{TOWN}付近に建設! -STR_NEWS_INDUSTRY_PLANTED :{BIG_FONT}{BLACK}新しい{STRING}が{TOWN}付近に植林! - -STR_NEWS_INDUSTRY_CLOSURE_GENERAL :{BIG_FONT}{BLACK}{STRING}がまもなく閉鎖! -STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS :{BIG_FONT}{BLACK}{STRING}が配給の問題により、まもなく閉鎖! -STR_NEWS_INDUSTRY_CLOSURE_LACK_OF_TREES :{BIG_FONT}{BLACK}{STRING}が周辺の森林の不足により、まもなく閉鎖! - -STR_NEWS_EURO_INTRODUCTION :{BIG_FONT}{BLACK}ヨーロッパの通貨と併合!{}{}この地域は、ユーロを通常業務の通貨として導入! -STR_NEWS_BEGIN_OF_RECESSION :{BIG_FONT}{BLACK}世界的な不況!{}{}金融の専門家が経済の落ち込みを危惧! -STR_NEWS_END_OF_RECESSION :{BIG_FONT}{BLACK}不況の終わり!{}{}経済が回復し、産業の取引量が増強! - -STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL :{BIG_FONT}{BLACK}{INDUSTRY}の生産量が増加! -STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_COAL :{BIG_FONT}{BLACK}{INDUSTRY}で新しい石炭層の発見!{}生産量が二倍になる予想! -STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_OIL :{BIG_FONT}{BLACK}{INDUSTRY}で新しい油層の発見!{}生産量が二倍になる予想! -STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM :{BIG_FONT}{BLACK}{INDUSTRY}の農業経営が改善!生産量が二倍になる予想! -STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_SMOOTH :{BIG_FONT}{BLACK}{1:INDUSTRY}で{0:STRING}の生産量が{2:COMMA}%増加! -STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL :{BIG_FONT}{BLACK}{INDUSTRY}の生産量が50%減少。 -STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM :{BIG_FONT}{BLACK}{INDUSTRY}で害虫が大量発生!{} 生産量が50%減少。 -STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_SMOOTH :{BIG_FONT}{BLACK}{1:INDUSTRY}で{0:STRING}の生産量が{2:COMMA}%減少! - -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 -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}が迷っています。 -STR_NEWS_VEHICLE_IS_UNPROFITABLE :{WHITE}昨年の{VEHICLE}の利益は{CURRENCY_LONG}でした。 - -STR_NEWS_ORDER_REFIT_FAILED :{WHITE}{VEHICLE}の修復に失敗したため、命令を停止しました。 +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_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}に初めて航空機が到着! + +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}航空機事故発生!{}{1:STATION}で着陸に失敗、搭乗していた{0:COMMA}名が死亡 +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_AIRPLANE_OIL_REFINERY :{BIG_FONT}{BLACK}その瞬間、一面火の海に! {TOWN}付近の石油精製所が爆発! +STR_NEWS_DISASTER_HELICOPTER_FACTORY :{BIG_FONT}{BLACK}{TOWN}の工場が突如倒壊 原因は未だ不明! +STR_NEWS_DISASTER_BIG_UFO :{BIG_FONT}{BLACK}{TOWN}付近にUFOが着陸! +STR_NEWS_DISASTER_COAL_MINE_SUBSIDENCE :{BIG_FONT}{BLACK}大自然の脅威! {TOWN}付近の炭鉱、坑道崩落で陥没全壊! +STR_NEWS_DISASTER_FLOOD_VEHICLE :{BIG_FONT}{BLACK}洪水発生!{}この洪水により、少なくとも{COMMA}人が死亡、もしくは行方不明 + +STR_NEWS_COMPANY_IN_TROUBLE_TITLE :{BIG_FONT}{BLACK}経営不振! 正念場の輸送企業 +STR_NEWS_COMPANY_IN_TROUBLE_DESCRIPTION :{BIG_FONT}{BLACK}{STRING}の業績悪化、倒産・買収の危機! +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_LAUNCH_TITLE :{BIG_FONT}{BLACK}新たな運送会社、開業! +STR_NEWS_COMPANY_LAUNCH_DESCRIPTION :{BIG_FONT}{BLACK}{STRING}が{TOWN}付近で建設開始! +STR_NEWS_MERGER_TAKEOVER_TITLE :{BIG_FONT}{BLACK}{1:STRING}、{0:STRING}を買収! +STR_PRESIDENT_NAME_MANAGER :{BLACK}{PRESIDENT_NAME}{} (社長) + +STR_NEWS_NEW_TOWN :{BLACK}{BIG_FONT}{0:STRING}の出資により、新たに{1:TOWN}の開発が始まる! + +STR_NEWS_INDUSTRY_CONSTRUCTION :{BIG_FONT}{BLACK}新たな{STRING}が{TOWN}付近に開設! +STR_NEWS_INDUSTRY_PLANTED :{BIG_FONT}{BLACK}新たな{STRING}が{TOWN}付近に作付け開始! + +STR_NEWS_INDUSTRY_CLOSURE_GENERAL :{BIG_FONT}{BLACK}{STRING}がまもなく閉鎖! +STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS :{BIG_FONT}{BLACK}{STRING}が材料供給不足により、まもなく閉鎖! +STR_NEWS_INDUSTRY_CLOSURE_LACK_OF_TREES :{BIG_FONT}{BLACK}{STRING}が周辺の林野不足により、まもなく閉鎖! + +STR_NEWS_EURO_INTRODUCTION :{BIG_FONT}{BLACK}欧州通貨統合!{}{}この国でもユーロを標準通貨として導入! +STR_NEWS_BEGIN_OF_RECESSION :{BIG_FONT}{BLACK}世界的不況!{}{}金融専門家は景気の落ち込みを危惧! +STR_NEWS_END_OF_RECESSION :{BIG_FONT}{BLACK}恐慌終結!{}{}流通量の増加、産業界に経済の底力を印象づけ! + +STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL :{BIG_FONT}{BLACK}{INDUSTRY}、生産を拡大! +STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_COAL :{BIG_FONT}{BLACK}{INDUSTRY}で新たに有望な石炭層発見!{}生産量は二倍になる見込み! +STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_OIL :{BIG_FONT}{BLACK}今世紀最大の奇跡! {INDUSTRY}で新たな油脈発見!{}生産量は二倍になる見込み! +STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM :{BIG_FONT}{BLACK}朗報! {INDUSTRY}で新農作法導入{}生産量は二倍になる見込み! +STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_SMOOTH :{BIG_FONT}{BLACK}{1:INDUSTRY}で{0:STRING}の生産量が{2:COMMA}%増加! +STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL :{BIG_FONT}{BLACK}{INDUSTRY}の生産量が半減 +STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM :{BIG_FONT}{BLACK}害虫発生で{INDUSTRY}が大パニック!{} 生産量が半減! +STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_SMOOTH :{BIG_FONT}{BLACK}{1:INDUSTRY}で{0:STRING}の生産量が{2:COMMA}%減少! + +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}は格納庫に駐機しました + +# 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}の指令に無効な停留施設があります +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_VEHICLE_IS_LOST :{WHITE}{VEHICLE}が迷っています +STR_NEWS_VEHICLE_IS_UNPROFITABLE :{WHITE}昨年の{VEHICLE}の収益は{CURRENCY_LONG}で{RED}赤字{WHITE}です +STR_NEWS_AIRCRAFT_DEST_TOO_FAR :{WHITE}航続距離を超えるため、{VEHICLE}は次の目的地に到達できません + +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}が新登場! +STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE :{BIG_FONT}{BLACK}{STRING}が新登場! STR_NEWS_NEW_VEHICLE_TYPE :{BIG_FONT}{BLACK}{ENGINE} -STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}{STRING}が新登場! - {ENGINE} +STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}{STRING}が新登場! - {ENGINE} STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO :{WHITE}{STATION}は今後{STRING}を受入れません STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO_OR_CARGO :{WHITE}{STATION}は今後{STRING}と{STRING}を受入れません STR_NEWS_STATION_NOW_ACCEPTS_CARGO :{WHITE}{STATION}は今後{STRING}を受入れます STR_NEWS_STATION_NOW_ACCEPTS_CARGO_AND_CARGO :{WHITE}{STATION}は今後{STRING}と{STRING}を受入れます -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}を運ぶ便の{}先駆一社に一年間助成金を与えます! -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}を運ぶ便に{}100%の助成金が支給されます! -STR_NEWS_SERVICE_SUBSIDY_AWARDED_TRIPLE :{BIG_FONT}{BLACK}{0:STRING}が助成金を獲得!{}今後一年間{2:STRING}から{3:STRING}へ{1:STRING}を運ぶ便に{}200%の助成金が支給されます! -STR_NEWS_SERVICE_SUBSIDY_AWARDED_QUADRUPLE :{BIG_FONT}{BLACK}{0:STRING}が助成金を獲得!{}今後一年間{2:STRING}から{3:STRING}へ{1:STRING}を運ぶ便に{}300%の助成金が支給されます! +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}を運んだ{}会社に地元当局より1年間助成金を交付されます! +STR_NEWS_SERVICE_SUBSIDY_AWARDED_HALF :{BIG_FONT}{BLACK}{0:STRING}が助成金を獲得!{}今後一年間{2:STRING}から{3:STRING}へ{1:STRING}を運ぶ便の{}収入は1.5倍になります! +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_EXCLUSIVE_RIGHTS_TITLE :{BIG_FONT}{BLACK}輸送の独占になりました! +STR_NEWS_ROAD_REBUILDING :{BIG_FONT}{BLACK}混乱する道路交通!{}{}{1:STRING}が{0:TOWN}の街路補修に出資{}地元ドライバーには悪夢の半年に! +STR_NEWS_EXCLUSIVE_RIGHTS_TITLE :{BIG_FONT}{BLACK}輸送独占! +STR_NEWS_EXCLUSIVE_RIGHTS_DESCRIPTION :{BIG_FONT}{BLACK} {TOWN}が{STRING}と1年間の排他輸送契約を締結! # 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_TT :{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}ゲームの設定 +STR_GAME_OPTIONS_CAPTION :{WHITE}ゲーム設定 STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}通貨単位 STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}通貨単位の選択 ############ start of currency region -STR_GAME_OPTIONS_CURRENCY_GBP :英ポンド(£) -STR_GAME_OPTIONS_CURRENCY_USD :米ドル($) -STR_GAME_OPTIONS_CURRENCY_EUR :ユーロ(€) -STR_GAME_OPTIONS_CURRENCY_JPY :日本円(¥) -STR_GAME_OPTIONS_CURRENCY_ATS :オーストリアシリング(ATS) -STR_GAME_OPTIONS_CURRENCY_BEF :ベルギーフランク(BEF) -STR_GAME_OPTIONS_CURRENCY_CHF :スイスフランク(CHF) -STR_GAME_OPTIONS_CURRENCY_CZK :チェココルナ(CZK) -STR_GAME_OPTIONS_CURRENCY_DEM :ドイツマルク(DEM) -STR_GAME_OPTIONS_CURRENCY_DKK :デンマーククローネ(DKK) -STR_GAME_OPTIONS_CURRENCY_ESP :スペインペセタ(₧) -STR_GAME_OPTIONS_CURRENCY_FIM :フィンランドマーカ(FIM) -STR_GAME_OPTIONS_CURRENCY_FRF :フランスフラン(₣) -STR_GAME_OPTIONS_CURRENCY_GRD :ギリシアドラクマ(GRD) -STR_GAME_OPTIONS_CURRENCY_HUF :ハンガリーフォリント(HUF) -STR_GAME_OPTIONS_CURRENCY_ISK :アイスランドクローナ(ISK) -STR_GAME_OPTIONS_CURRENCY_ITL :イタリアリーラ(ITL) -STR_GAME_OPTIONS_CURRENCY_NLG :オランダギルダー(NLG) -STR_GAME_OPTIONS_CURRENCY_NOK :ノルウェイクローネ(NOK) -STR_GAME_OPTIONS_CURRENCY_PLN :ポーランドズロティ(PLN) -STR_GAME_OPTIONS_CURRENCY_RON :ルーマニアレイ(RON) -STR_GAME_OPTIONS_CURRENCY_RUR :ロシアルーブル(RUR) -STR_GAME_OPTIONS_CURRENCY_SIT :スロベニアトラール(SIT) -STR_GAME_OPTIONS_CURRENCY_SEK :スウェーデンクローナ(SEK) -STR_GAME_OPTIONS_CURRENCY_TRY :トルコリーラ(TL) -STR_GAME_OPTIONS_CURRENCY_SKK :スロバキアコルナ(SKK) -STR_GAME_OPTIONS_CURRENCY_BRL :ブラジルレアル(BRL) +STR_GAME_OPTIONS_CURRENCY_GBP :英ポンド(£) +STR_GAME_OPTIONS_CURRENCY_USD :米ドル($) +STR_GAME_OPTIONS_CURRENCY_EUR :ユーロ(€) +STR_GAME_OPTIONS_CURRENCY_JPY :日本円(¥) +STR_GAME_OPTIONS_CURRENCY_ATS :オーストリアシリング(ATS) +STR_GAME_OPTIONS_CURRENCY_BEF :ベルギーフランク(BEF) +STR_GAME_OPTIONS_CURRENCY_CHF :スイスフランク(CHF) +STR_GAME_OPTIONS_CURRENCY_CZK :チェココルナ(CZK) +STR_GAME_OPTIONS_CURRENCY_DEM :ドイツマルク(DEM) +STR_GAME_OPTIONS_CURRENCY_DKK :デンマーククローネ(DKK) +STR_GAME_OPTIONS_CURRENCY_ESP :スペインペセタ(₧) +STR_GAME_OPTIONS_CURRENCY_FIM :フィンランドマーカ(FIM) +STR_GAME_OPTIONS_CURRENCY_FRF :フランスフラン(₣) +STR_GAME_OPTIONS_CURRENCY_GRD :ギリシアドラクマ(GRD) +STR_GAME_OPTIONS_CURRENCY_HUF :ハンガリーフォリント(HUF) +STR_GAME_OPTIONS_CURRENCY_ISK :アイスランドクローナ(ISK) +STR_GAME_OPTIONS_CURRENCY_ITL :イタリアリラ(ITL) +STR_GAME_OPTIONS_CURRENCY_NLG :オランダギルダー(NLG) +STR_GAME_OPTIONS_CURRENCY_NOK :ノルウェイクローネ(NOK) +STR_GAME_OPTIONS_CURRENCY_PLN :ポーランドズロティ(PLN) +STR_GAME_OPTIONS_CURRENCY_RON :ルーマニアレイ(RON) +STR_GAME_OPTIONS_CURRENCY_RUR :ロシアルーブル(RUR) +STR_GAME_OPTIONS_CURRENCY_SIT :スロベニアトラール(SIT) +STR_GAME_OPTIONS_CURRENCY_SEK :スウェーデンクローナ(SEK) +STR_GAME_OPTIONS_CURRENCY_TRY :トルコリラ(TL) +STR_GAME_OPTIONS_CURRENCY_SKK :スロバキアコルナ(SKK) +STR_GAME_OPTIONS_CURRENCY_BRL :ブラジルレアル(BRL) STR_GAME_OPTIONS_CURRENCY_EEK :エストニアクローン(EEK) 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_CUSTOM :カスタム… +STR_GAME_OPTIONS_CURRENCY_GEL :グルジア ラリー(GEL) +STR_GAME_OPTIONS_CURRENCY_IRR :イラン リアル(IRR) ############ end of currency region -STR_GAME_OPTIONS_MEASURING_UNITS_FRAME :{BLACK}測定単位 -STR_GAME_OPTIONS_MEASURING_UNITS_DROPDOWN_TOOLTIP :{BLACK}測定単位の選択 ############ start of measuring units region -STR_GAME_OPTIONS_MEASURING_UNITS_IMPERIAL :インペリアル法 -STR_GAME_OPTIONS_MEASURING_UNITS_METRIC :メートル法 -STR_GAME_OPTIONS_MEASURING_UNITS_SI :国際単位法 ############ 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_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_TOWN_NAMES_FRAME :{BLACK}市町村名 -STR_GAME_OPTIONS_TOWN_NAMES_DROPDOWN_TOOLTIP :{BLACK}市町村名の種類の選択 +STR_GAME_OPTIONS_TOWN_NAMES_FRAME :{BLACK}街名 +STR_GAME_OPTIONS_TOWN_NAMES_DROPDOWN_TOOLTIP :{BLACK}街名のスタイルを選択します ############ start of townname region STR_GAME_OPTIONS_TOWN_NAME_ORIGINAL_ENGLISH :イギリス STR_GAME_OPTIONS_TOWN_NAME_FRENCH :フランス STR_GAME_OPTIONS_TOWN_NAME_GERMAN :ドイツ -STR_GAME_OPTIONS_TOWN_NAME_ADDITIONAL_ENGLISH :イギリス(追加) +STR_GAME_OPTIONS_TOWN_NAME_ADDITIONAL_ENGLISH :イギリス(追加) STR_GAME_OPTIONS_TOWN_NAME_LATIN_AMERICAN :ラテンアメリカ -STR_GAME_OPTIONS_TOWN_NAME_SILLY :玩具国 +STR_GAME_OPTIONS_TOWN_NAME_SILLY :無邪気の国 STR_GAME_OPTIONS_TOWN_NAME_SWEDISH :スウェーデン STR_GAME_OPTIONS_TOWN_NAME_DUTCH :オランダ STR_GAME_OPTIONS_TOWN_NAME_FINNISH :フィンランド @@ -911,43 +952,43 @@ 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}自動保存の間隔を選択します -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月 +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}ゲームの言語を選択します STR_GAME_OPTIONS_FULLSCREEN :{BLACK}フルスクリーン -STR_GAME_OPTIONS_FULLSCREEN_TOOLTIP :{BLACK}OpenTTD をフルスクリーンでプレイするにはチックします +STR_GAME_OPTIONS_FULLSCREEN_TOOLTIP :{BLACK}OpenTTD をフルスクリーンでプレイするにはチェックします -STR_GAME_OPTIONS_RESOLUTION :{BLACK}画面の解像度 -STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}画面の解像度を選択します +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}ベースGRFセット -STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}使用するGRFの選択 -STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}破損したファイル/見つからないファイルは{NUM}つあります -STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}ベースGRFセットについての追加情報 +STR_GAME_OPTIONS_BASE_GRF :{BLACK}基本グラフィックセット +STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}使用するグラフィックセットを選択します +STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}見つからないか破損しているファイルが{NUM}個あります +STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}基本グラフィックセットについての追加情報 -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_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_TOOLTIP :{BLACK}使用する音楽の選択 -STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM}つの破損ファイルがあります -STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}ベース音楽セットについて追加情報 +STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}基本音楽セット +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_FULLSCREEN_FAILED :{WHITE}フルスクリーンモードが設定できません +STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}サポートされている解像度リストの回復に失敗しました +STR_ERROR_FULLSCREEN_FAILED :{WHITE}フルスクリーンモードでの実行に失敗しました # Custom currency window @@ -957,25 +998,25 @@ STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}英ポ STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}英ポンドに対するお使いの通貨の為替レートを増やします STR_CURRENCY_SET_EXCHANGE_RATE_TOOLTIP :{BLACK}英ポンドに対するお使いの通貨の為替レートを設定します -STR_CURRENCY_SEPARATOR :{LTBLUE}分離記号: {ORANGE}{STRING} -STR_CURRENCY_SET_CUSTOM_CURRENCY_SEPARATOR_TOOLTIP :{BLACK}通貨の区切り記号を入力します +STR_CURRENCY_SEPARATOR :{LTBLUE}桁区切記号: {ORANGE}{STRING} +STR_CURRENCY_SET_CUSTOM_CURRENCY_SEPARATOR_TOOLTIP :{BLACK}通貨の桁区切記号を入力します -STR_CURRENCY_PREFIX :{LTBLUE}接頭文字: {ORANGE}{STRING} +STR_CURRENCY_PREFIX :{LTBLUE}接頭文字: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_PREFIX_TOOLTIP :{BLACK}通貨の接頭文字を入力します -STR_CURRENCY_SUFFIX :{LTBLUE}接尾文字: {ORANGE}{STRING} +STR_CURRENCY_SUFFIX :{LTBLUE}接尾文字: {ORANGE}{STRING} 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_SET_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}ユーロになる年を選択 +STR_CURRENCY_SWITCH_TO_EURO :{LTBLUE}ユーロ切替: {ORANGE}{NUM}年 +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}もっと遅くにユーロに切り替え -STR_CURRENCY_PREVIEW :{LTBLUE}プレビュー:{ORANGE}{CURRENCY_LONG} -STR_CURRENCY_CUSTOM_CURRENCY_PREVIEW_TOOLTIP :{BLACK}お使いの通貨で£10,000(英ポンド) +STR_CURRENCY_PREVIEW :{LTBLUE}プレビュー: {ORANGE}{CURRENCY_LONG} +STR_CURRENCY_CUSTOM_CURRENCY_PREVIEW_TOOLTIP :{BLACK}}£10,000(英ポンド)に対する為替レートを設定します STR_CURRENCY_CHANGE_PARAMETER :{BLACK}カスタム通貨の設定を変更 -STR_DIFFICULTY_LEVEL_SETTING_MAXIMUM_NO_COMPETITORS :{LTBLUE}競争者数の上限:{ORANGE}{COMMA} +STR_DIFFICULTY_LEVEL_SETTING_MAXIMUM_NO_COMPETITORS :{LTBLUE}最大競争会社数: {ORANGE}{COMMA} STR_NONE :なし STR_FUNDING_ONLY :出資のみ @@ -1016,10 +1057,10 @@ STR_DISASTER_NONE :なし STR_DISASTER_REDUCED :軽減 STR_DISASTER_NORMAL :通常 -STR_SUBSIDY_X1_5 :50% -STR_SUBSIDY_X2 :100% -STR_SUBSIDY_X3 :200% -STR_SUBSIDY_X4 :300% +STR_SUBSIDY_X1_5 :×1.5 +STR_SUBSIDY_X2 :×2 +STR_SUBSIDY_X3 :×3 +STR_SUBSIDY_X4 :×4 STR_TERRAIN_TYPE_VERY_FLAT :特に平地 STR_TERRAIN_TYPE_FLAT :平地 @@ -1030,299 +1071,637 @@ STR_CITY_APPROVAL_PERMISSIVE :寛大 STR_CITY_APPROVAL_TOLERANT :寛容 STR_CITY_APPROVAL_HOSTILE :対立 -STR_WARNING_NO_SUITABLE_AI :{WHITE}適切なAIがありません...{}いくつかのAIは「オンラインの項目を確認」からダウンロード可能です +STR_WARNING_NO_SUITABLE_AI :{WHITE}適切なAIがありません...{}AIは「オンライン項目を確認」からダウンロード可能です # Advanced settings window -STR_CONFIG_SETTING_CAPTION :{WHITE}拡張設定・パッチ設定 +STR_CONFIG_SETTING_CAPTION :{WHITE}拡張設定 +STR_CONFIG_SETTING_FILTER_TITLE :{BLACK}フィルター設定: +STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}全てを開く +STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}全てを折りたたむ STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT :(説明がありません) -STR_CONFIG_SETTING_DEFAULT_VALUE :{LTBLUE}デフォルト設定:{ORANGE}{STRING} - - - -STR_CONFIG_SETTING_OFF :切 -STR_CONFIG_SETTING_ON :入 -STR_CONFIG_SETTING_DISABLED :切 - -STR_CONFIG_SETTING_COMPANIES_OFF :切 -STR_CONFIG_SETTING_COMPANIES_OWN :自分 -STR_CONFIG_SETTING_COMPANIES_ALL :すべて +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_COMPANY_INGAME :会社設定(現在の会社のみに影響) + +STR_CONFIG_SETTING_RESTRICT_CATEGORY :{BLACK}カテゴリ: +STR_CONFIG_SETTING_RESTRICT_TYPE :{BLACK}種類: +STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}定義されたフィルタでリストをフィルタリングします。 +STR_CONFIG_SETTING_RESTRICT_BASIC :基本設定 +STR_CONFIG_SETTING_RESTRICT_ADVANCED :詳細設定 +STR_CONFIG_SETTING_RESTRICT_ALL :拡張設定(全設定) +STR_CONFIG_SETTING_RESTRICT_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_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 :有効 +STR_CONFIG_SETTING_DISABLED :不可 + +STR_CONFIG_SETTING_COMPANIES_OFF :無効 +STR_CONFIG_SETTING_COMPANIES_OWN :自社のみ +STR_CONFIG_SETTING_COMPANIES_ALL :全社 STR_CONFIG_SETTING_NONE :なし STR_CONFIG_SETTING_ORIGINAL :オリジナル -STR_CONFIG_SETTING_REALISTIC :リアルな +STR_CONFIG_SETTING_REALISTIC :リアル STR_CONFIG_SETTING_HORIZONTAL_POS_LEFT :左 -STR_CONFIG_SETTING_HORIZONTAL_POS_CENTER :中位 +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} -STR_CONFIG_SETTING_TRAIN_LENGTH :電車のマックス長さ:{STRING} -STR_CONFIG_SETTING_TRAIN_LENGTH_HELPTEXT :電車のマックス長さを決めりことができる +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_RUNNING_COSTS :維持費: {STRING} +STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT :車両や施設のメンテナンスコストを設定します +STR_CONFIG_SETTING_CONSTRUCTION_SPEED :建設速度: {STRING} +STR_CONFIG_SETTING_CONSTRUCTION_SPEED_HELPTEXT :AIの建設速度を設定します +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} +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_DISASTERS :災害: {STRING} +STR_CONFIG_SETTING_DISASTERS_HELPTEXT :設定を有効にすると時折、乗り物や交通インフラを遮断・破壊する災害が起きるようになります +STR_CONFIG_SETTING_CITY_APPROVAL :地域の再編に対する町の姿勢: {STRING} +STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :会社が街域で引き起こした騒音(主に空港)や環境破壊がどの程度、街での評価や同じ地域での更なる建設行為に影響するかを設定します + +STR_CONFIG_SETTING_AUTOSLOPE :建物/路線の自動地形追従: {STRING} +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_TRAIN_LENGTH :列車の最大長: {STRING} +STR_CONFIG_SETTING_TRAIN_LENGTH_HELPTEXT :列車の最大長を設定します STR_CONFIG_SETTING_TILE_LENGTH :{COMMA}タイル -STR_CONFIG_SETTING_SMOKE_AMOUNT :車両の 煙/火の粉 の量{STRING} -STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL :電車の加速モデル:{STRING} -STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL :道路車両の加速モデル: {STRING} +STR_CONFIG_SETTING_SMOKE_AMOUNT :煙・火花の量{STRING} +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_TRAIN_SLOPE_STEEPNESS :線路の勾配率: {STRING} +STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS_HELPTEXT :線路1タイルあたりの勾配率を設定します。数値を上げると急勾配になり、列車が坂を上りにくくなります。 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} +STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS :道路の勾配率: {STRING} +STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS_HELPTEXT :道路1タイルあたりの勾配率を設定します。数値を上げると急勾配になり、車両が坂を上りにくくなります。 +STR_CONFIG_SETTING_FORBID_90_DEG :列車/船舶の直角進路変更禁止: {STRING} +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_INFLATION :インフレ: {STRING} +STR_CONFIG_SETTING_INFLATION_HELPTEXT :インフレを有効にします。経費の方が収入よりわずかに早く上昇していきます。 +STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH :橋の最大長:{STRING} +STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_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_MULTIPINDTOWN :町内に重複している産業の建設を許容:{STRING} -STR_CONFIG_SETTING_SIGNALSIDE :信号が見える: {STRING} -STR_CONFIG_SETTING_SIGNALSIDE_LEFT :左へ -STR_CONFIG_SETTING_SIGNALSIDE_DRIVING_SIDE :運転の方へ -STR_CONFIG_SETTING_SIGNALSIDE_RIGHT :右へ -STR_CONFIG_SETTING_SHOWFINANCES :年末に財政ウインドウを表示:{STRING} -STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :新規指令にデフォルトで 'non-stop'をつける: {STRING} -STR_CONFIG_SETTING_STOP_LOCATION :新規鉄道車両は初期設定によりプラットホームの{STRING}に停車します -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} -STR_CONFIG_SETTING_ALLOW_FUND_ROAD :地方の道路の再建に出資するのを許容: {STRING} -STR_CONFIG_SETTING_ALLOW_GIVE_MONEY :他社への送金を許容:{STRING} -STR_CONFIG_SETTING_FREIGHT_TRAINS :重い列車のシミュレーションのための重量乗数の設定:{STRING} -STR_CONFIG_SETTING_PLANE_SPEED :飛行機の速さの約数:{STRING} -STR_CONFIG_SETTING_PLANE_SPEED_VALUE :{COMMA}分の1 -STR_CONFIG_SETTING_PLANE_CRASHES :墜落事故数: {STRING} +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} +STR_CONFIG_SETTING_MULTIPINDTOWN_HELPTEXT :この世界の住人は一般的に、同一産業の拠点が同じ街に2箇所以上あることを望んでいません。この設定を有効にすると同一産業の拠点を複数同じ街に建設できるようになります +STR_CONFIG_SETTING_SIGNALSIDE :信号の設置位置: {STRING} +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_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_AUTOSCROLL :エッジスクロール: {STRING} +STR_CONFIG_SETTING_AUTOSCROLL_HELPTEXT :有効にすると、ウィンドウの端にカーソルを持っていくとスクロールするようになります +STR_CONFIG_SETTING_AUTOSCROLL_DISABLED :しない +STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT_FULLSCREEN :する (フルスクリーン時有効) +STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT :する +STR_CONFIG_SETTING_AUTOSCROLL_EVERY_VIEWPORT :する (ビューポートでも有効) +STR_CONFIG_SETTING_BRIBE :議会の買収: {STRING} +STR_CONFIG_SETTING_BRIBE_HELPTEXT :街で議会買収を企てることが可能になります。成功すれば街での評判が良くなりますが、地元当局に事が発覚した場合、罰金を受けた上評判が悪くなり、その街では半年間何もすることができなくなります +STR_CONFIG_SETTING_ALLOW_EXCLUSIVE :独占運送契約の締結: {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 :街の道路補修に資金を提供することが可能になります。半年間街内の不通にして敵を混乱させることはできますが、「街路補修時に道路整理」を有効にしない限り工事自体にメリットはありません +STR_CONFIG_SETTING_ALLOW_GIVE_MONEY :他社への送金: {STRING} +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_VALUE :{COMMA}分の1 +STR_CONFIG_SETTING_PLANE_CRASHES :航空事故数: {STRING} +STR_CONFIG_SETTING_PLANE_CRASHES_HELPTEXT :航空機事故の発生率を定めます 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_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_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_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}この設定の変更は既に輸送車両が存在する時には不可能です STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :インフラ補修: {STRING} - -STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :空港の購入可能期限がない: {STRING} - -STR_CONFIG_SETTING_WARN_LOST_VEHICLE :車両の行き先が無いなら注意する: {STRING} -STR_CONFIG_SETTING_ORDER_REVIEW :列車の指令をレビュー:{STRING} -STR_CONFIG_SETTING_ORDER_REVIEW_OFF :切 -STR_CONFIG_SETTING_ORDER_REVIEW_EXDEPOT :入(停止中の車両を取り除く) -STR_CONFIG_SETTING_ORDER_REVIEW_ON :入(すべての車両) -STR_CONFIG_SETTING_WARN_INCOME_LESS :車両の利益が損失になってから警告を表示:{STRING} -STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :車両の購入可能期限がない:{STRING} -STR_CONFIG_SETTING_AUTORENEW_VEHICLE :車両が古くなるとき自動交換:{STRING} -STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_BEFORE :{COMMA}ヶ月前 -STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_AFTER :{COMMA}ヶ月後 -STR_CONFIG_SETTING_AUTORENEW_MONEY :自動交換するための最小資金:{STRING} +STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :有効にすると、インフラ設備にも維持費が発生するようになります。維持費はネットワークのサイズに非線形で比例する為、小さい会社よりも大きい会社の方が影響が大きくなります + +STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :空港の旧式化撤廃: {STRING} +STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS_HELPTEXT :有効にすると、いずれの種類の空港であっても、その開発後であれば永久に建設が可能になります + +STR_CONFIG_SETTING_WARN_LOST_VEHICLE :迷走車両の注意喚起: {STRING} +STR_CONFIG_SETTING_WARN_LOST_VEHICLE_HELPTEXT :輸送車両が目的地への経路を見付けられない場合にメッセージを出します +STR_CONFIG_SETTING_ORDER_REVIEW :輸送車両の指令を監査: {STRING} +STR_CONFIG_SETTING_ORDER_REVIEW_HELPTEXT :有効にすると、輸送車両の各指令は定期的にチェックされ、何か問題(指令の重複など)が見つかった場合にはメッセージで知らせてくるようになります +STR_CONFIG_SETTING_ORDER_REVIEW_OFF :無効 +STR_CONFIG_SETTING_ORDER_REVIEW_EXDEPOT :有効 (車庫で待機中の車両は除く) +STR_CONFIG_SETTING_ORDER_REVIEW_ON :有効 (全車両) +STR_CONFIG_SETTING_WARN_INCOME_LESS :赤字車両の警告表示: {STRING} +STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :有効にすると、輸送車両が一年(1/1~12/31)の間全く利益を上げていない場合、メッセージで知らせてくるようになります。 +STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :輸送機器の旧式化撤廃: {STRING} +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_HELPTEXT :自動交換が必要と見なされる時期を決定します +STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_BEFORE :迎える{COMMA}ヶ月前 +STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_AFTER :迎えた{COMMA}ヶ月後 +STR_CONFIG_SETTING_AUTORENEW_MONEY :自動交換時の最小資金: {STRING} +STR_CONFIG_SETTING_AUTORENEW_MONEY_HELPTEXT :輸送機器の交換時に必要な最低預金残高を決定します +STR_CONFIG_SETTING_ERRMSG_DURATION :エラーメッセージの表示時間: {STRING} +STR_CONFIG_SETTING_ERRMSG_DURATION_HELPTEXT :赤地のエラーメッセージが表示されている時間を設定します。注: 致命的なエラーの場合はこの時間を経過しても自動では閉じません。 STR_CONFIG_SETTING_ERRMSG_DURATION_VALUE :{COMMA}秒 -STR_CONFIG_SETTING_HOVER_DELAY :ツールチップを見せる:{STRING} +STR_CONFIG_SETTING_HOVER_DELAY :ツールチップ表示: {STRING} +STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :カーソルをインターフェイス要素に乗せた場合にツールチップが表示されるまでの時間を決定します。この設定でツールチップを右クリックで表示するようにもできます +STR_CONFIG_SETTING_HOVER_DELAY_VALUE :マウスオーバー {COMMA}秒後 STR_CONFIG_SETTING_HOVER_DELAY_DISABLED :右クリック -STR_CONFIG_SETTING_POPULATION_IN_LABEL :町名に人口を含む:{STRING} - -STR_CONFIG_SETTING_LAND_GENERATOR :地形作成:{STRING} -STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :旧式 +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_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_TREE_PLACER :植林アルゴリズム:{STRING} +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 :地形の起伏: {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_HEIGHTMAP_ROTATION :ハイトマップの回転:{STRING} +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}北端の1箇所以上のタイルが空白ではありません。 +STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :シナリオマップ生成時の平地高さ: {STRING} +STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}北端の1箇所以上のタイルが空き地ではありません STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}マップ端の1箇所以上のタイルが水域ではありません -STR_CONFIG_SETTING_SERVICEATHELIPAD :ヘリコプターを自動的ヘリパッドで修理:{STRING} -STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR :地形のツールバーを鉄道/道路/船舶/空港のツールバーに付ける:{STRING} -STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR :ミニマップに表示する土地の色: {STRING} -STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :ミニマップの地形の色 -STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :緑色 -STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :濃い緑色 -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_NONE :なし -STR_CONFIG_SETTING_LIVERIES_OWN :プレーヤーの会社 -STR_CONFIG_SETTING_LIVERIES_ALL :すべての会社 -STR_CONFIG_SETTING_PREFER_TEAMCHAT :でのチームチャットを優先:{STRING} +STR_CONFIG_SETTING_STATION_SPREAD :プラットホームの最大長: {STRING} +STR_CONFIG_SETTING_STATION_SPREAD_HELPTEXT :単一駅がどれだけ拡張できるかを決定します。注: 設定値を大きくするとゲームが遅くなります +STR_CONFIG_SETTING_SERVICEATHELIPAD :ヘリパッドでの修理許容: {STRING} +STR_CONFIG_SETTING_SERVICEATHELIPAD_HELPTEXT :ヘリが着陸する毎に自動的に点検を行います。ヘリポートに格納庫があるかどうかには左右されません +STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR :インフラ建設ツールバーに地形ツールバーを追加: {STRING} +STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR_HELPTEXT :鉄道/道路/船舶/空港の建設ツールバーを開いた際に、土木工事用に地形ツールバーも開くようになります +STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR :ミニマップの陸地色: {STRING} +STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :ミニマップの陸地の色を指定します +STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :緑 +STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :濃緑 +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_MEASURE_TOOLTIP :測定ツールチップ表示: {STRING} +STR_CONFIG_SETTING_MEASURE_TOOLTIP_HELPTEXT :タイルをまたぐような建設活動の際に、距離や面積、高低差などの情報を表示するようになります +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_HELPTEXT :有効にすると、チャットメッセージを送信する際のEnterとCtrl+Enterの挙動を入れ替えます。つまりEnterを押した際に全プレーヤーではなく、チームメンバーのみにメッセージが送信されるようになります STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING :マウスホイールの動作:{STRING} -STR_CONFIG_SETTING_SCROLLWHEEL_ZOOM :地図をズーム -STR_CONFIG_SETTING_SCROLLWHEEL_SCROLL :地図をスクロール +STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING_HELPTEXT :マウスホイールを使ったときのゲーム動作を決めます +STR_CONFIG_SETTING_SCROLLWHEEL_ZOOM :ズームイン・ズームアウト +STR_CONFIG_SETTING_SCROLLWHEEL_SCROLL :スクロール STR_CONFIG_SETTING_SCROLLWHEEL_OFF :切 -STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER :地図のスクロール速度:{STRING} - -STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU :右ボタンのエミュレーション:{STRING} -STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :コマンド+クリック -STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :コントロール+クリック +STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER :地図のスクロール速度: {STRING} +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 :コマンド+クリック (Mac) +STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Ctrl+クリック (Win) 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_DATE_FORMAT_IN_SAVE_NAMES :セーブ時に{STRING} の日付フォーマットを使用します。 -STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_HELPTEXT :セーブデータ名の年月日系 -STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :長 -STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :短 -STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO 標準 +STR_CONFIG_SETTING_AUTOSAVE :オートセーブ: {STRING} +STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :オートセーブの間隔を設定します -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_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_PAUSE_ON_NEW_GAME :新規ゲームを開始したときに自動的にポーズ:{STRING} -STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :一時停止(ポース)の時この行動を許可 {STRING} -STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :行動が無い +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 :ゲームが一時停止(ポーズ)中に可能な行動を設定します +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_LOADING_INDICATORS :積み降ろしを表示:{STRING} -STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :日の代わりに時刻表をティックで表示:{STRING} -STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE :時刻表に発着情報を表示する: {STRING} -STR_CONFIG_SETTING_QUICKGOTO :【駅を選択】をデフォルトでONにする: {STRING} -STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE :デフォルトの鉄道の種類(新規ゲーム後/ゲームの読み込み後):{STRING} -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_PERSISTENT_BUILDINGTOOLS :ビルドのツールバーは使用後に表示したままにする:{STRING} -STR_CONFIG_SETTING_EXPENSES_LAYOUT :財政ウィンドウ内でグループ分けされた費用表示をする: {STRING} - - -STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING :列車に合った施設を建設してください。{STRING} -STR_CONFIG_SETTING_MAX_TRAINS :会社1つあたりの列車数上限:{STRING} -STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :会社1つあたりの道路車両数上限:{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} -STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT :コンピュータは飛行機を使用しない:{STRING} -STR_CONFIG_SETTING_AI_BUILDS_SHIPS :コンピュータは船舶を使用しない:{STRING} - - -STR_CONFIG_SETTING_AI_IN_MULTIPLAYER :マルチプレイヤーゲームで AI を許容(実験的):{STRING} - -STR_CONFIG_SETTING_SERVINT_ISPERCENT :修理間隔をパーセントで表示:{STRING} -STR_CONFIG_SETTING_NOSERVICE :故障を切にすると修理も切にする:{STRING} -STR_CONFIG_SETTING_WAGONSPEEDLIMITS :貨車の速度制限を使用:{STRING} -STR_CONFIG_SETTING_DISABLE_ELRAILS :電鉄を切にする:{STRING} - -STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN :自分の新しい駅に初めて車両が到着: {STRING} -STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER :競争相手の新しい駅に初めて車両が到着: {STRING} -STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS :事故/災害: {STRING} +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_HELPTEXT :有効にすると、リスト内で輸送機器をグループ化できるようになります +STR_CONFIG_SETTING_LOADING_INDICATORS :積み降ろし進行度を表示: {STRING} +STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :積み降ろしを行っている輸送機関の上に、その進行度合いを示すインジケーターを表示するかどうかを設定します +STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :ダイヤの時間単位にゲーム時を使用: {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_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_MOST_USED :最多 +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 :橋やトンネルなどを建設した後もツールバーを開いたままにします +STR_CONFIG_SETTING_EXPENSES_LAYOUT :財政ウィンドウのグループ分け: {STRING} +STR_CONFIG_SETTING_EXPENSES_LAYOUT_HELPTEXT :財政ウィンドウのレイアウトを収入部門・支出部門でグループ分けするかどうかを設定します + +STR_CONFIG_SETTING_SOUND_TICKER :ニュース表示: {STRING} +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_CONFIRM :建設: {STRING} +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_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_DISABLE_UNSUITABLE_BUILDING :有効なインフラのみ建設可能: {STRING} +STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING_HELPTEXT :有効にするとその時点で使用可能な設備のみが建設できます。(例: 電気機関車が購入できないときに電気鉄道は建設不可) +STR_CONFIG_SETTING_MAX_TRAINS :会社あたりの列車数上限: {STRING} +STR_CONFIG_SETTING_MAX_TRAINS_HELPTEXT :1社が保有できる最大の列車数を設定します +STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :会社あたりの車両数上限: {STRING} +STR_CONFIG_SETTING_MAX_ROAD_VEHICLES_HELPTEXT :1社が保有できる最大の車両数を設定します +STR_CONFIG_SETTING_MAX_AIRCRAFT :会社あたりの航空機数上限: {STRING} +STR_CONFIG_SETTING_MAX_AIRCRAFT_HELPTEXT :1社が保有できる最大の航空機数を設定します +STR_CONFIG_SETTING_MAX_SHIPS :会社あたりの船舶数上限: {STRING} +STR_CONFIG_SETTING_MAX_SHIPS_HELPTEXT :1社が保有できる最大の船舶数を設定します + +STR_CONFIG_SETTING_AI_BUILDS_TRAINS :AI企業の鉄道輸送を不許可: {STRING} +STR_CONFIG_SETTING_AI_BUILDS_TRAINS_HELPTEXT :コンピュータが設立するライバル企業が鉄道輸送を使えないようにします +STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES :AI企業の道路輸送を不許可: {STRING} +STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES_HELPTEXT :コンピュータが設立するライバル企業が道路輸送/路面電車輸送を使えないようにします +STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT :AI企業の航空輸送を不許可: {STRING} +STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT_HELPTEXT :コンピュータが設立するライバル企業が航空輸送を使えないようにします +STR_CONFIG_SETTING_AI_BUILDS_SHIPS :AI企業の船舶輸送を不許可: {STRING} +STR_CONFIG_SETTING_AI_BUILDS_SHIPS_HELPTEXT :コンピュータが設立するライバル企業が船舶輸送を使えないようにします + +STR_CONFIG_SETTING_AI_PROFILE :規定の設定プロファイル: {STRING} +STR_CONFIG_SETTING_AI_PROFILE_HELPTEXT :新たなAIやゲームスクリプトを追加するときに、どの設定プロファイルを使ってランダムAIや初期値を与えるかを決定します +STR_CONFIG_SETTING_AI_PROFILE_EASY :初級 +STR_CONFIG_SETTING_AI_PROFILE_MEDIUM :中級 +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_HELPTEXT :AIやゲームスクリプトが一つの「詰め込み指令」を処理する際に、一度に演算できる命令コード数を設定します。一般に値を小さくした場合、ゲームへの負荷が軽減されます + +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_DISABLED :点検なし +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_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_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_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_ECONOMY_CHANGES :経済の変化: {STRING} -STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY :自分が運送している産業の生産量の変化: {STRING} -STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER :競争相手が運送している産業の生産量の変化: {STRING} -STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED :その他の産業の生産量の変化: {STRING} -STR_CONFIG_SETTING_NEWS_ADVICE :会社の車両の勧告/情報: {STRING} -STR_CONFIG_SETTING_NEWS_NEW_VEHICLES :新しい乗り物の登場: {STRING} -STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE :受入れする貨物の変化: {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 :簡易 -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_SEMAPHORE_BUILD_BEFORE_DATE :次の年まで腕木式信号を建設:{STRING} -STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI :信号のGUIを使用: {STRING} -STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE :信号建設コマンドのデフォルト信号形式 : {STRING} -STR_CONFIG_SETTING_DEFAULT_SIGNAL_NORMAL :ブロック信号 +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_ALLOW_SHARES :他社株の取引許容: {STRING} +STR_CONFIG_SETTING_ALLOW_SHARES_HELPTEXT :有効にすると、ライバル会社の株式を取引できるようになります。この設定を有効にしても、目的の社が設立から丸5年経過していない場合は取引できません +STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE :区間払いの割合: {STRING} +STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE_HELPTEXT :転送を行う輸送網(フィーダーシステム)を構築した場合、中継地点までの輸送で総輸送費の何%を受け取れるかを設定します(転送時に予想される最終輸送費から仮に部分払いし、最終的に貨物が目的地に到着した時点で清算します)。転送元の輸送機器が赤字になるのを防ぎます +STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY :信号間隔: {STRING} +STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_HELPTEXT :Ctrl+ドラッグで信号を設置する際に、障害物(別の信号やポイント)が現れるまでどのくらいの間隔で信号を設置するかを設定します +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+ドラッグで信号を設置する際の挙動を調整します。無効にした場合、閉塞が極端に長くなるのを防ぐため、橋/トンネルの両端に信号が特に設置されます。有効にした場合、橋/トンネルがあっても一切無視して一定間隔で信号を配置します。これは特に平行路線で信号の位置を揃えるのに有効です +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_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_NORMAL :ブロック信号のみ -STR_CONFIG_SETTING_CYCLE_SIGNAL_PBS :パス信号のみ +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_DEFAULT :デフォルト -STR_CONFIG_SETTING_TOWN_LAYOUT_BETTER_ROADS :改善の道路網 +STR_CONFIG_SETTING_TOWN_LAYOUT :街の道路配置: {STRING} +STR_CONFIG_SETTING_TOWN_LAYOUT_HELPTEXT :街での道路区画計画を設定します +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_ALLOW_TOWN_ROADS :町は道路建設を許容: {STRING} -STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :町に平面交差の建設を許可: {STRING} -STR_CONFIG_SETTING_NOISE_LEVEL :空港建設に対する街の騒音レベル規制を許可する: {STRING} -STR_CONFIG_SETTING_TOWN_FOUNDING :インゲームで街の新設に出資: {STRING} -STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :不可能 -STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :可能 -STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :可能、町を設定もできます - -STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT :インゲームでの植樹: {STRING} -STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NONE :なし {RED}(製剤所は使えなくなります) -STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_RAINFOREST :雨林の中だけ -STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_ALL :各地 - -STR_CONFIG_SETTING_TOOLBAR_POS :メインツールバーの位置:{STRING} -STR_CONFIG_SETTING_STATUSBAR_POS :お知らせバ−の置き場: {STRING} -STR_CONFIG_SETTING_SOFT_LIMIT :スティッキーではないウィンドウ数のソフトウェア制限 : {STRING}個 -STR_CONFIG_SETTING_TOWN_GROWTH :市町村の展開:{STRING} -STR_CONFIG_SETTING_TOWN_GROWTH_NONE :なし +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_NOISE_LEVEL :空港建設に対する街の騒音レベル規制: {STRING} +STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :この設定を無効にすると、街に作れる空港は最大2つまでになります。有効にした場合は、各空港の騒音レベルの総和が街の騒音許容レベル以下になるようにしか建てられません。騒音レベルは空港の大きさ・街からの距離により、騒音許容レベルは街の人口により左右されます +STR_CONFIG_SETTING_TOWN_FOUNDING :ゲーム中での街新設: {STRING} +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 :有効(道路配置も設定可) + +STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT :樹木の自然成長: {STRING} +STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_HELPTEXT :ゲーム中、ランダムに生えてくる樹種を設定します。設定によっては樹木の生育に依存する産業に悪影響が生じる可能性があります(「不可」にした場合、亜熱帯地域の伐採所を機能させ続けるためには手動で植林し続ける必要があります) +STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NONE :不能 {RED}(亜熱帯地域の伐採所に影響) +STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_RAINFOREST :熱帯雨林地帯のみ +STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_ALL :全地域 + +STR_CONFIG_SETTING_TOOLBAR_POS :メインツールバーの位置: {STRING} +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_HELPTEXT :他のウィンドウに近づけられたウィンドウがスナップ(引き寄せ)される距離を設定します。スナップの無効化もできます +STR_CONFIG_SETTING_SNAP_RADIUS_VALUE :{COMMA} ピクセル +STR_CONFIG_SETTING_SNAP_RADIUS_DISABLED :スナップしない +STR_CONFIG_SETTING_SOFT_LIMIT :最大ウィンドウ数: {STRING} +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_LVL_MIN :4倍 +STR_CONFIG_SETTING_ZOOM_LVL_IN_2X :2倍 +STR_CONFIG_SETTING_ZOOM_LVL_NORMAL :通常 +STR_CONFIG_SETTING_ZOOM_LVL_OUT_2X :2倍 +STR_CONFIG_SETTING_ZOOM_LVL_OUT_4X :4倍 +STR_CONFIG_SETTING_ZOOM_LVL_OUT_8X :8倍 +STR_CONFIG_SETTING_TOWN_GROWTH :街の成長速度: {STRING} +STR_CONFIG_SETTING_TOWN_GROWTH_HELPTEXT :街の成長速度を設定します +STR_CONFIG_SETTING_TOWN_GROWTH_NONE :成長しない STR_CONFIG_SETTING_TOWN_GROWTH_SLOW :遅い 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_VEHICLES :{ORANGE}車両 -STR_CONFIG_SETTING_STATIONS :{ORANGE}駅 -STR_CONFIG_SETTING_ECONOMY :{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_LARGER_TOWNS :都市になる町の比率: {STRING} +STR_CONFIG_SETTING_LARGER_TOWNS_HELPTEXT :町のうち、成長によってその何分の1が都市になるか(あるいは全くならないか)を設定します。都市になると拡大・成長速度が速くなります +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_LINKGRAPH_INTERVAL :分配グラフの更新頻度: {STRING}日 +STR_CONFIG_SETTING_LINKGRAPH_INTERVAL_HELPTEXT :リンクグラフを再計算する時間間隔を設定します。それぞれの再計算では、グラフの単一要素に関わる経路計画だけを計算します。つまり、グラフの一部が更新されるだけで、全体が設定した間隔で更新されるという訳ではありません。この間隔を短くすると再計算のためにCPUへの負荷が大きくなります。長くすると、新たなルートが貨物分配に組み込まれるのに時間がかかるようになります。 +STR_CONFIG_SETTING_LINKGRAPH_TIME :分配グラフの再計算時間: {STRING}日 +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 :この値を高くすると、リンクグラフ演算の為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_HELPTEXT :二つの停留施設間を結ぶ経路が複数存在することが往々にしてあります。そのような場合、貨物分配アルゴリズムは最初に最短となる経路を飽和するまで使用し、次いで2番目の最短経路を使用するというように埋めていきます。飽和したかどうかは、推定収容力、輸送計画によって判断されます。すべての経路を飽和してもまだ需要を満たせない場合、高容量な経路を優先しつつ、すべての経路に負荷を掛けます。しかしほとんどの場合、アルゴリズムは経路の輸送力を正確に見積もることができません。この設定では、高収容力の路線を使用し始める前にどの程度最短経路を飽和するかを設定します。収容力より需要が上回ると推定される時には、停留施設が混み合うのを避けるために100%未満に設定して下さい。 + +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 :国際単位系 (m/s) + +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 :国際単位系 (kW) + +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 :国際単位系 (kg) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME :容積単位: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_HELPTEXT :ゲーム中の容積をいずれの単位系で表すか決定します +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_IMPERIAL :ヤード・ポンド法 (ガロン(gal)) +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 :ヤード・ポンド法 (重量ポンド(lbf)) +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_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_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_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_AI_NPC :{ORANGE}コンピュータプレイヤー STR_CONFIG_SETTING_PATHFINDER_OPF :オリジナル STR_CONFIG_SETTING_PATHFINDER_NPF :NPF STR_CONFIG_SETTING_PATHFINDER_YAPF_RECOMMENDED :YAPF{BLUE}(おすすめ) -STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :電車の経路探索アルゴリズム:{STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :道路車両の経路探索アルゴリズム:{STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS :船舶の経路処理アルゴリズム:{STRING} -STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :信号待ちで自動的に折り返す: {STRING} +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_SHIPS :船舶の経路探索アルゴリズム: {STRING} +STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT :船舶の経路探索アルゴリズムを決めます +STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :信号待ちでの折返し: {STRING} +STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT :列車が信号で長く待たされた場合、進路を反転することを許可します 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}'の値、'{0:STRING}'が不正です +STR_CONFIG_ERROR_TRAILING_CHARACTERS :{WHITE}設定'{STRING}'の文末に不正な制御文字があります +STR_CONFIG_ERROR_DUPLICATE_GRFID :{WHITE}'{1:STRING}'とGRF IDが重複したため、NewGRF '{0:STRING}'は読み込まれませんでした +STR_CONFIG_ERROR_INVALID_GRF :{WHITE}{1:STRING}為、NewGRF '{0:STRING}'は読み込まれませんでした +STR_CONFIG_ERROR_INVALID_GRF_NOT_FOUND :ファイルが見つからない +STR_CONFIG_ERROR_INVALID_GRF_UNSAFE :安定版ではない +STR_CONFIG_ERROR_INVALID_GRF_SYSTEM :システムNewGRFの +STR_CONFIG_ERROR_INVALID_GRF_INCOMPATIBLE :このバージョンのOpenTTDとは互換性がない +STR_CONFIG_ERROR_INVALID_GRF_UNKNOWN :未知の理由の +STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_LEVEL :{WHITE}'{STRING}'の圧縮レベルが不正です +STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_ALGORITHM :{WHITE}データ形式'{STRING}'には対応していません。'{STRING}'に戻ります +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}メモリー不足 +STR_CONFIG_ERROR_SPRITECACHE_TOO_BIG :{WHITE}スプライトキャッシュ中、{BYTES}の割り当てに失敗しました。スプライトキャッシュは{BYTES}に減ったため、OpenTTDの処理速度が低下する恐れがあります。必要メモリ量を減らすには32bitグラフィックを無効にするか、最大ズームイン・ズームアウトのレベルを下げてください # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} @@ -1334,35 +1713,39 @@ 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_ADVANCED_SETTINGS :{BLACK}拡張設定 STR_INTRO_NEWGRF_SETTINGS :{BLACK}NewGRFの設定 -STR_INTRO_ONLINE_CONTENT :{BLACK}オンラインの項目を確認 +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_LOAD_GAME :{BLACK}ゲームを開きます -STR_INTRO_TOOLTIP_PLAY_HEIGHTMAP :{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_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_ADVANCED_SETTINGS :{BLACK}パッチ・拡張設定を表示 -STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}NewGRF の設定を表示 -STR_INTRO_TOOLTIP_ONLINE_CONTENT :{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/ゲームスクリプトの設定を行います STR_INTRO_TOOLTIP_QUIT :{BLACK}OpenTTD を終了します -STR_INTRO_TRANSLATION :{BLACK}この言語セットには{NUM}個{P ""}の未訳があります。翻訳者としてサインアップしOpenTTDをより良くする為に御助力下さい。(詳細はreadme.txtをごらんください) +STR_INTRO_TRANSLATION :{BLACK}この言語セットには{NUM}個の未訳文字列があります。翻訳者としてWeb登録し、OpenTTDをより良くする為にご助力下さい。(詳細はreadme.txtをご覧下さい) # Quit window STR_QUIT_CAPTION :{WHITE}終了 -STR_QUIT_ARE_YOU_SURE_YOU_WANT_TO_EXIT_OPENTTD :{YELLOW}このゲームを終了して、{}{STRING}に戻してもよろしいですか? +STR_QUIT_ARE_YOU_SURE_YOU_WANT_TO_EXIT_OPENTTD :{YELLOW}このゲームを終了し、{}{STRING}に戻ってもよろしいですか? STR_QUIT_YES :{BLACK}はい STR_QUIT_NO :{BLACK}いいえ @@ -1379,67 +1762,68 @@ STR_OSNAME_OS2 :OS/2 STR_OSNAME_SUNOS :SunOS # Abandon game -STR_ABANDON_GAME_CAPTION :{WHITE}ゲームを断念 -STR_ABANDON_GAME_QUERY :{YELLOW}このゲームを終了してもよろしいですか? -STR_ABANDON_SCENARIO_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_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_SWITCH_CLIMATE_TEMPERATE_LANDSCAPE :温帯国 -STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :亜寒帯国 -STR_CHEAT_SWITCH_CLIMATE_SUB_TROPICAL_LANDSCAPE :亜熱帯国 -STR_CHEAT_SWITCH_CLIMATE_TOYLAND_LANDSCAPE :玩具国 +STR_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_SWITCH_CLIMATE_TEMPERATE_LANDSCAPE :温帯 +STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :亜寒帯 +STR_CHEAT_SWITCH_CLIMATE_SUB_TROPICAL_LANDSCAPE :亜熱帯 +STR_CHEAT_SWITCH_CLIMATE_TOYLAND_LANDSCAPE :おもちゃの国 STR_CHEAT_CHANGE_DATE :{LTBLUE}日付を変更: {ORANGE}{DATE_SHORT} -STR_CHEAT_CHANGE_DATE_QUERY_CAPT :{WHITE}年を変更する -STR_CHEAT_SETUP_PROD :{LTBLUE}生産量の変更を入にする:{ORANGE}{STRING} +STR_CHEAT_CHANGE_DATE_QUERY_CAPT :{WHITE}現在日時を変更 +STR_CHEAT_SETUP_PROD :{LTBLUE}生産量変更: {ORANGE}{STRING} # Livery window -STR_LIVERY_CAPTION :{WHITE}新規カラースキーム - -STR_LIVERY_GENERAL_TOOLTIP :{BLACK}一般のカラースキームを表示します -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}選択したカラースキームの主の色を選択します -STR_LIVERY_SECONDARY_TOOLTIP :{BLACK}選択したカラースキームの二次色を選択します -STR_LIVERY_PANEL_TOOLTIP :{BLACK}変更するにはカラースキームを選択します。Control+クリックすると多数のカラースキームが選択できます。カラースキームの使用を切り替えるにはチックボックスをクリックします。 - -STR_LIVERY_DEFAULT :通常のカラースキーム -STR_LIVERY_STEAM :蒸気機関車 -STR_LIVERY_DIESEL :ディーゼル機関車 -STR_LIVERY_ELECTRIC :電気機関車 -STR_LIVERY_MONORAIL :モノレール機関車 -STR_LIVERY_MAGLEV :磁気浮上式機関車 -STR_LIVERY_DMU :気動車 -STR_LIVERY_EMU :電車 -STR_LIVERY_PASSENGER_WAGON_STEAM :客車(蒸気) -STR_LIVERY_PASSENGER_WAGON_DIESEL :客車(ディーゼル) -STR_LIVERY_PASSENGER_WAGON_ELECTRIC :客車(電気) -STR_LIVERY_PASSENGER_WAGON_MONORAIL :客車(モノレール) -STR_LIVERY_PASSENGER_WAGON_MAGLEV :客車(リニア-マグレブ) +STR_LIVERY_CAPTION :{WHITE}コーポレートカラー + +STR_LIVERY_GENERAL_TOOLTIP :{BLACK}通常のコーポレートカラー(車両塗装色)を表示します +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_DEFAULT :通常の塗装色 +STR_LIVERY_STEAM :機関車 (蒸気) +STR_LIVERY_DIESEL :機関車 (ディーゼル) +STR_LIVERY_ELECTRIC :機関車 (電気) +STR_LIVERY_MONORAIL :機関車 (モノレール) +STR_LIVERY_MAGLEV :機関車 (リニア) +STR_LIVERY_DMU :気動車 (動力分散式) +STR_LIVERY_EMU :電車 (動力分散式) +STR_LIVERY_PASSENGER_WAGON_STEAM :客車 (蒸気) +STR_LIVERY_PASSENGER_WAGON_DIESEL :客車 (ディーゼル) +STR_LIVERY_PASSENGER_WAGON_ELECTRIC :客車 (電気) +STR_LIVERY_PASSENGER_WAGON_MONORAIL :客車 (モノレール) +STR_LIVERY_PASSENGER_WAGON_MAGLEV :客車 (リニア) STR_LIVERY_FREIGHT_WAGON :貨車 STR_LIVERY_BUS :バス STR_LIVERY_TRUCK :トラック STR_LIVERY_PASSENGER_SHIP :客船 STR_LIVERY_FREIGHT_SHIP :貨物船 STR_LIVERY_HELICOPTER :ヘリコプター -STR_LIVERY_SMALL_PLANE :小型飛行機 -STR_LIVERY_LARGE_PLANE :大型飛行機 +STR_LIVERY_SMALL_PLANE :小型機 +STR_LIVERY_LARGE_PLANE :大型機 STR_LIVERY_PASSENGER_TRAM :旅客用路面電車 STR_LIVERY_FREIGHT_TRAM :貨物用路面電車 # Face selection window -STR_FACE_CAPTION :{WHITE}顔の選択 -STR_FACE_CANCEL_TOOLTIP :{BLACK}新規顔の選択をキャンセルします -STR_FACE_OK_TOOLTIP :{BLACK}新規顔を適用します +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}男性顔を表示します @@ -1448,134 +1832,134 @@ 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_SIMPLE :{BLACK}簡単 -STR_FACE_SIMPLE_TOOLTIP :{BLACK}顔を簡単に選択します。 +STR_FACE_ADVANCED_TOOLTIP :{BLACK}顔をパーツ別に詳しく選択します +STR_FACE_SIMPLE :{BLACK}簡易 +STR_FACE_SIMPLE_TOOLTIP :{BLACK}顔を簡易式で編集します STR_FACE_LOAD :{BLACK}開く -STR_FACE_LOAD_TOOLTIP :{BLACK}お好みの顔を開きます。 -STR_FACE_LOAD_DONE :{WHITE}お好みの顔を OpenTTD の設定ファイルから読み込みました。 -STR_FACE_FACECODE :{BLACK}プレーヤーの顔番号 -STR_FACE_FACECODE_TOOLTIP :{BLACK}プレヤーの顔番号を表示/変更 -STR_FACE_FACECODE_CAPTION :{WHITE}プレヤーの顔番号を表示/変更 -STR_FACE_FACECODE_SET :{WHITE}新しい顔番号が設定されました。 -STR_FACE_FACECODE_ERR :{WHITE}顔番号が設定できませんでした - 0 と 4,294,967,295 の間の数値ではありません。 +STR_FACE_LOAD_TOOLTIP :{BLACK}お気に入りの顔を開きます +STR_FACE_LOAD_DONE :{WHITE}お気に入りの顔をOpenTTDの設定ファイルから読み込みました +STR_FACE_FACECODE :{BLACK}顔番号 +STR_FACE_FACECODE_TOOLTIP :{BLACK}この顔番号を表示/変更します +STR_FACE_FACECODE_CAPTION :{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}お好みの顔を保存します。 -STR_FACE_SAVE_DONE :{WHITE}この顔をお好みの顔として OpenTTD の設定ファイルに保存します。 -STR_FACE_EUROPEAN :{BLACK}白人 -STR_FACE_SELECT_EUROPEAN :{BLACK}白人の顔を選択します -STR_FACE_AFRICAN :{BLACK}黒人 -STR_FACE_SELECT_AFRICAN :{BLACK}黒人の顔を選択します -STR_FACE_YES :はい -STR_FACE_NO :いいえ -STR_FACE_MOUSTACHE_EARRING_TOOLTIP :{BLACK}口ひげもしくはイヤリングを表示 -STR_FACE_HAIR :髪の毛: -STR_FACE_HAIR_TOOLTIP :{BLACK}髪の毛を変更 -STR_FACE_EYEBROWS :まゆ: -STR_FACE_EYEBROWS_TOOLTIP :{BLACK}まゆを変更 -STR_FACE_EYECOLOUR :目の色: -STR_FACE_EYECOLOUR_TOOLTIP :{BLACK}瞳の色を変更 -STR_FACE_GLASSES :眼鏡: -STR_FACE_GLASSES_TOOLTIP :{BLACK}眼鏡をかける -STR_FACE_GLASSES_TOOLTIP_2 :{BLACK}眼鏡を変更 -STR_FACE_NOSE :鼻: -STR_FACE_NOSE_TOOLTIP :{BLACK}鼻を変更: -STR_FACE_LIPS :口唇: -STR_FACE_MOUSTACHE :口ひげ: -STR_FACE_LIPS_MOUSTACHE_TOOLTIP :{BLACK}口唇/口ひげを変更 -STR_FACE_CHIN :顎: -STR_FACE_CHIN_TOOLTIP :{BLACK}顎を変更 -STR_FACE_JACKET :ジャケット: -STR_FACE_JACKET_TOOLTIP :{BLACK}ジャケットを変更: -STR_FACE_COLLAR :襟: -STR_FACE_COLLAR_TOOLTIP :{BLACK}襟を変更: -STR_FACE_TIE :ネクタイ: -STR_FACE_EARRING :イヤリング: -STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}ネクタイ/イヤリングを変更 +STR_FACE_SAVE_TOOLTIP :{BLACK}お気に入りの顔として保存します +STR_FACE_SAVE_DONE :{WHITE}この顔をお気に入りの顔として、OpenTTDの設定ファイルに保存します +STR_FACE_EUROPEAN :{BLACK}ヨーロッパ系 +STR_FACE_SELECT_EUROPEAN :{BLACK}ヨーロッパ系の顔を選択します +STR_FACE_AFRICAN :{BLACK}アフリカ系 +STR_FACE_SELECT_AFRICAN :{BLACK}アフリカ系の顔を選択します +STR_FACE_YES :あり +STR_FACE_NO :なし +STR_FACE_MOUSTACHE_EARRING_TOOLTIP :{BLACK}口ひげかイヤリングを付けます +STR_FACE_HAIR :髪型: +STR_FACE_HAIR_TOOLTIP :{BLACK}髪型を変更します +STR_FACE_EYEBROWS :まゆ: +STR_FACE_EYEBROWS_TOOLTIP :{BLACK}まゆを変更します +STR_FACE_EYECOLOUR :瞳の色: +STR_FACE_EYECOLOUR_TOOLTIP :{BLACK}瞳の色を変更します +STR_FACE_GLASSES :眼鏡: +STR_FACE_GLASSES_TOOLTIP :{BLACK}眼鏡ありにします +STR_FACE_GLASSES_TOOLTIP_2 :{BLACK}眼鏡を変更します +STR_FACE_NOSE :鼻: +STR_FACE_NOSE_TOOLTIP :{BLACK}鼻を変更します +STR_FACE_LIPS :唇: +STR_FACE_MOUSTACHE :口ひげ: +STR_FACE_LIPS_MOUSTACHE_TOOLTIP :{BLACK}唇/口ひげを変更します +STR_FACE_CHIN :顎: +STR_FACE_CHIN_TOOLTIP :{BLACK}顎を変更します +STR_FACE_JACKET :ジャケット: +STR_FACE_JACKET_TOOLTIP :{BLACK}ジャケットを変更します +STR_FACE_COLLAR :襟: +STR_FACE_COLLAR_TOOLTIP :{BLACK}襟を変更します +STR_FACE_TIE :ネクタイ: +STR_FACE_EARRING :イヤリング: +STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}ネクタイ/イヤリングを変更します # Network server list -STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}多人数ゲーム -STR_NETWORK_SERVER_LIST_CONNECTION :{BLACK}接続: -STR_NETWORK_SERVER_LIST_CONNECTION_TOOLTIP :{BLACK}LAN内、もしくはインターネット上のゲームを選択します -STR_NETWORK_SERVER_LIST_LAN :LAN -STR_NETWORK_SERVER_LIST_INTERNET :インターネット -STR_NETWORK_SERVER_LIST_PLAYER_NAME :{BLACK}プレヤー名: -STR_NETWORK_SERVER_LIST_ENTER_NAME_TOOLTIP :{BLACK}他のプレーヤーから見えるあなたの名前です +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}他のプレーヤーがあなたを特定するために使う名前です STR_NETWORK_SERVER_LIST_GAME_NAME :{BLACK}名前 STR_NETWORK_SERVER_LIST_GAME_NAME_TOOLTIP :{BLACK}ゲーム名 STR_NETWORK_SERVER_LIST_GENERAL_ONLINE :{BLACK}{COMMA}/{COMMA} - {COMMA}/{COMMA} 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_CLIENTS_CAPTION_TOOLTIP :{BLACK}オンラインのクライアント数/最大クライアント数{}オンラインの会社数/最大会社数 +STR_NETWORK_SERVER_LIST_MAP_SIZE_SHORT :{BLACK}{COMMA}×{COMMA} +STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION :{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}実行年間 -STR_NETWORK_SERVER_LIST_YEARS_CAPTION_TOOLTIP :{BLACK}ゲームの起動から{}の年間 -STR_NETWORK_SERVER_LIST_INFO_ICONS_TOOLTIP :{BLACK}言語、サーババージョンなど +STR_NETWORK_SERVER_LIST_YEARS_CAPTION_TOOLTIP :{BLACK}ゲームの起動から経過した年数です +STR_NETWORK_SERVER_LIST_INFO_ICONS_TOOLTIP :{BLACK}言語、サーバーバージョンなど STR_NETWORK_SERVER_LIST_CLICK_GAME_TO_SELECT :{BLACK}選択するにはリスト内のゲームをクリックします -STR_NETWORK_SERVER_LIST_LAST_JOINED_SERVER :{BLACK}前回参加したサーバ: -STR_NETWORK_SERVER_LIST_CLICK_TO_SELECT_LAST :{BLACK}クリックして前回参加したサーバを選択します +STR_NETWORK_SERVER_LIST_LAST_JOINED_SERVER :{BLACK}前回参加したサーバー: +STR_NETWORK_SERVER_LIST_CLICK_TO_SELECT_LAST :{BLACK}クリックすると前回参加したサーバーを選択します STR_NETWORK_SERVER_LIST_GAME_INFO :{SILVER}ゲーム情報 -STR_NETWORK_SERVER_LIST_CLIENTS :{SILVER}クライアント:{WHITE}{COMMA} / {COMMA} - {COMMA} / {COMMA} +STR_NETWORK_SERVER_LIST_CLIENTS :{SILVER}クライアント: {WHITE}{COMMA} / {COMMA} - {COMMA} / {COMMA} 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_ADDRESS :{SILVER}サーバアドレス:{WHITE}{STRING} +STR_NETWORK_SERVER_LIST_LANDSCAPE :{SILVER}地域: {WHITE}{STRING} +STR_NETWORK_SERVER_LIST_MAP_SIZE :{SILVER}地図サイズ: {WHITE}{COMMA}×{COMMA} +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} -STR_NETWORK_SERVER_LIST_PASSWORD :{SILVER}パスワードが必要! -STR_NETWORK_SERVER_LIST_SERVER_OFFLINE :{SILVER}サーバはオフラインです -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_PASSWORD :{SILVER}パスワード保護有! +STR_NETWORK_SERVER_LIST_SERVER_OFFLINE :{SILVER}サーバーがオフラインです +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_REFRESH :{BLACK}サーバを更新 -STR_NETWORK_SERVER_LIST_REFRESH_TOOLTIP :{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_TOOLTIP :{BLACK}ネットワーク上のサーバを検索します -STR_NETWORK_SERVER_LIST_ADD_SERVER :{BLACK}サーバを追加 -STR_NETWORK_SERVER_LIST_ADD_SERVER_TOOLTIP :{BLACK}検索時常に稼働確認するサーバを追加します -STR_NETWORK_SERVER_LIST_START_SERVER :{BLACK}サーバを開始 -STR_NETWORK_SERVER_LIST_START_SERVER_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_START_SERVER :{BLACK}サーバーを開始 +STR_NETWORK_SERVER_LIST_START_SERVER_TOOLTIP :{BLACK}自分でサーバーを立ち上げます -STR_NETWORK_SERVER_LIST_PLAYER_NAME_OSKTITLE :{BLACK}プレヤー名を入力 +STR_NETWORK_SERVER_LIST_PLAYER_NAME_OSKTITLE :{BLACK}プレイヤー名を入力 STR_NETWORK_SERVER_LIST_ENTER_IP :{BLACK}ホストアドレスを入力します # Start new multiplayer server STR_NETWORK_START_SERVER_CAPTION :{WHITE}新規マルチプレイヤーゲームを開始 -STR_NETWORK_START_SERVER_NEW_GAME_NAME :{BLACK}ゲーム名: -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_LAN_INTERNET :LAN/インターネット -STR_NETWORK_START_SERVER_INTERNET_ADVERTISE :インターネット(公開) -STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}クライアント{NUM}人 -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}最高交通会社数: -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_TOOLTIP :{BLACK}サーバ上の傍観者数上限を指定します +STR_NETWORK_START_SERVER_NEW_GAME_NAME :{BLACK}ゲーム名: +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} +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}最大会社数: +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_TOOLTIP :{BLACK}このサーバーでの最大観覧者数を指定します STR_NETWORK_START_SERVER_LANGUAGE_SPOKEN :{BLACK}言語: -STR_NETWORK_START_SERVER_LANGUAGE_TOOLTIP :{BLACK}サーバ上の主言語を表示します +STR_NETWORK_START_SERVER_LANGUAGE_TOOLTIP :{BLACK}このサーバーで使われる主言語を表示します STR_NETWORK_START_SERVER_NEW_GAME_NAME_OSKTITLE :{BLACK}ネットワークゲーム名を入力 # Network game languages ############ Leave those lines in this order!! -STR_NETWORK_LANG_ANY :何でも +STR_NETWORK_LANG_ANY :言語未指定 STR_NETWORK_LANG_ENGLISH :英語 STR_NETWORK_LANG_GERMAN :ドイツ語 STR_NETWORK_LANG_FRENCH :フランス語 @@ -1614,405 +1998,443 @@ 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}このゲームに現在参加している交通会社のリストです。すでに経営している交通会社に参加するか、空き会社スロットがある場合は交通会社を新規開業することができます。 +STR_NETWORK_GAME_LOBBY_PREPARE_TO_JOIN :{ORANGE}{STRING}{BLACK}への参加準備 +STR_NETWORK_GAME_LOBBY_COMPANY_LIST_TOOLTIP :{BLACK}このゲームに現在参加している会社のリストです。ゲームに参加する場合、既にある会社の経営に参画するか、新規開業(空きスロットがある場合)するかのいずれかになります -STR_NETWORK_GAME_LOBBY_COMPANY_INFO :{SILVER}交通会社情報 -STR_NETWORK_GAME_LOBBY_COMPANY_NAME :{SILVER}会社名:{WHITE}{STRING} -STR_NETWORK_GAME_LOBBY_INAUGURATION_YEAR :{SILVER}開業日付:{WHITE}{NUM} -STR_NETWORK_GAME_LOBBY_VALUE :{SILVER}企業価値:{WHITE}{CURRENCY_LONG} -STR_NETWORK_GAME_LOBBY_CURRENT_BALANCE :{SILVER}残額:{WHITE}{CURRENCY_LONG} -STR_NETWORK_GAME_LOBBY_LAST_YEARS_INCOME :{SILVER}昨年の損益:{WHITE}{CURRENCY_LONG} -STR_NETWORK_GAME_LOBBY_PERFORMANCE :{SILVER}パフォーマンス:{WHITE}{NUM} +STR_NETWORK_GAME_LOBBY_COMPANY_INFO :{SILVER}会社情報 +STR_NETWORK_GAME_LOBBY_COMPANY_NAME :{SILVER}会社名: {WHITE}{STRING} +STR_NETWORK_GAME_LOBBY_INAUGURATION_YEAR :{SILVER}開業日: {WHITE}{NUM} +STR_NETWORK_GAME_LOBBY_VALUE :{SILVER}企業価値: {WHITE}{CURRENCY_LONG} +STR_NETWORK_GAME_LOBBY_CURRENT_BALANCE :{SILVER}預金残高: {WHITE}{CURRENCY_LONG} +STR_NETWORK_GAME_LOBBY_LAST_YEARS_INCOME :{SILVER}昨年の損益: {WHITE}{CURRENCY_LONG} +STR_NETWORK_GAME_LOBBY_PERFORMANCE :{SILVER}会社格付: {WHITE}{NUM} -STR_NETWORK_GAME_LOBBY_VEHICLES :{SILVER}車両:{WHITE}{NUM} {TRAIN}、{NUM} {LORRY}、{NUM} {BUS}、{NUM} {SHIP}、{NUM} {PLANE} -STR_NETWORK_GAME_LOBBY_STATIONS :{SILVER}駅/バス停/空港/埠頭:{WHITE}{NUM} {TRAIN}、{NUM} {LORRY}、{NUM} {BUS}、{NUM} {SHIP}、{NUM} {PLANE} -STR_NETWORK_GAME_LOBBY_PLAYERS :{SILVER}プレヤー:{WHITE}{STRING} +STR_NETWORK_GAME_LOBBY_VEHICLES :{SILVER}輸送機器数: {WHITE}{NUM} {TRAIN}、{NUM} {LORRY}、{NUM} {BUS}、{NUM} {SHIP}、{NUM} {PLANE} +STR_NETWORK_GAME_LOBBY_STATIONS :{SILVER}停留施設数: {WHITE}{NUM} {TRAIN}、{NUM} {LORRY}、{NUM} {BUS}、{NUM} {SHIP}、{NUM} {PLANE} +STR_NETWORK_GAME_LOBBY_PLAYERS :{SILVER}プレイヤー数: {WHITE}{STRING} 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_TOOLTIP :{BLACK}傍観者としてゲームを見ます -STR_NETWORK_GAME_LOBBY_JOIN_COMPANY :{BLACK}会社に加入 -STR_NETWORK_GAME_LOBBY_JOIN_COMPANY_TOOLTIP :{BLACK}この交通会社の経営に参加します +STR_NETWORK_GAME_LOBBY_NEW_COMPANY_TOOLTIP :{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}この交通会社の経営に参画します # Network connecting window -STR_NETWORK_CONNECTING_CAPTION :{WHITE}接続中... +STR_NETWORK_CONNECTING_CAPTION :{WHITE}接続中… ############ Leave those lines in this order!! -STR_NETWORK_CONNECTING_1 :{BLACK}(1/6)接続中... -STR_NETWORK_CONNECTING_2 :{BLACK}(2/6)認証中... -STR_NETWORK_CONNECTING_3 :{BLACK}(3/6)待機中... -STR_NETWORK_CONNECTING_4 :{BLACK}(4/6)地図をダウンロード中... -STR_NETWORK_CONNECTING_5 :{BLACK}(5/6)データを処理中... -STR_NETWORK_CONNECTING_6 :{BLACK}(6/6)登録中... - -STR_NETWORK_CONNECTING_SPECIAL_1 :{BLACK}ゲーム情報を読み込み中... -STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}会社情報を読み込み中... +STR_NETWORK_CONNECTING_1 :{BLACK}(1/6) 接続中 +STR_NETWORK_CONNECTING_2 :{BLACK}(2/6) 認証中 +STR_NETWORK_CONNECTING_3 :{BLACK}(3/6) 待機中 +STR_NETWORK_CONNECTING_4 :{BLACK}(4/6) 地図をダウンロード中 +STR_NETWORK_CONNECTING_5 :{BLACK}(5/6) データ処理中 +STR_NETWORK_CONNECTING_6 :{BLACK}(6/6) 登録中 + +STR_NETWORK_CONNECTING_SPECIAL_1 :{BLACK}ゲーム情報を読み込み中 +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_WAITING :{BLACK}あなたより先に{NUM}人が待機しています +STR_NETWORK_CONNECTING_DOWNLOADING_1 :{BLACK}{BYTES}ダウンロード済 +STR_NETWORK_CONNECTING_DOWNLOADING_2 :{BLACK}{1:BYTES}中、{0: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}クライアントリスト -STR_NETWORK_COMPANY_LIST_SPECTATE :{WHITE}傍観モード +STR_NETWORK_COMPANY_LIST_SPECTATE :{WHITE}観覧モード STR_NETWORK_COMPANY_LIST_NEW_COMPANY :{WHITE}新会社 # Network client list -STR_NETWORK_CLIENTLIST_KICK :蹴る -STR_NETWORK_CLIENTLIST_BAN :BAN +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_CLIENT :秘密メッセージ +STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :個人的なメッセージ -STR_NETWORK_SERVER :サーバ +STR_NETWORK_SERVER :サーバー STR_NETWORK_CLIENT :クライアント -STR_NETWORK_SPECTATORS :傍観者 +STR_NETWORK_SPECTATORS :観覧者 -STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}送金したい総額を入力 +STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}送りたい金額を入力 +STR_NETWORK_TOOLBAR_LIST_SPECTATOR :{BLACK}観覧者 # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}入力したパスワードを保存しない -STR_COMPANY_PASSWORD_OK :{BLACK}選択した交通会社の新しいパスワードを設定 -STR_COMPANY_PASSWORD_CAPTION :{WHITE}交通会社のパスワード -STR_COMPANY_PASSWORD_MAKE_DEFAULT :{BLACK}デフォルトの交通会社のパスワード -STR_COMPANY_PASSWORD_MAKE_DEFAULT_TOOLTIP :{BLACK}このパスワードを新しい交通会社のパスワードとして使用 +STR_COMPANY_PASSWORD_OK :{BLACK}会社パスワードを変更 +STR_COMPANY_PASSWORD_CAPTION :{WHITE}会社パスワード +STR_COMPANY_PASSWORD_MAKE_DEFAULT :{BLACK}デフォルトの会社パスワード +STR_COMPANY_PASSWORD_MAKE_DEFAULT_TOOLTIP :{BLACK}このパスワードを新しい交通会社の規定パスワードとして使用します # Network company info join/password -STR_COMPANY_VIEW_JOIN :{BLACK}参加 -STR_COMPANY_VIEW_JOIN_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_SET_PASSWORD :{BLACK}会社のパスワードを設定 +STR_COMPANY_VIEW_SET_PASSWORD :{BLACK}会社パスワードを設定 # Network chat STR_NETWORK_CHAT_SEND :{BLACK}送信 -STR_NETWORK_CHAT_COMPANY_CAPTION :『チーム』: -STR_NETWORK_CHAT_CLIENT_CAPTION :[プライベート] {STRING}: -STR_NETWORK_CHAT_ALL_CAPTION :『全員』: +STR_NETWORK_CHAT_COMPANY_CAPTION :『チーム』: +STR_NETWORK_CHAT_CLIENT_CAPTION :『個人通信』 {STRING}: +STR_NETWORK_CHAT_ALL_CAPTION :『全員』: -STR_NETWORK_CHAT_COMPANY :『チーム』{STRING}:{WHITE}{STRING} -STR_NETWORK_CHAT_TO_COMPANY :『チーム』{STRING}へ:{WHITE}{STRING} -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_COMPANY :『チーム』{STRING}: {WHITE}{STRING} +STR_NETWORK_CHAT_TO_COMPANY :『チーム』{STRING}へ: {WHITE}{STRING} +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}チャットメッセージを入力 # Network messages -STR_NETWORK_ERROR_NOTAVAILABLE :{WHITE}ネットワークデバイスが見つかりませんでした。ENABLE_NETWORK を切にしてコンパイルされた可能性もあります。 +STR_NETWORK_ERROR_NOTAVAILABLE :{WHITE}ネットワークデバイスが見つかりませんでした。ENABLE_NETWORKなしでゲームがコンパイルされた可能性もあります STR_NETWORK_ERROR_NOSERVER :{WHITE}ネットワークゲームが見つかりませんでした STR_NETWORK_ERROR_NOCONNECTION :{WHITE}サーバが応答しませんでした -STR_NETWORK_ERROR_NEWGRF_MISMATCH :{WHITE}NewGRF 不一致によって接続できませんでした +STR_NETWORK_ERROR_NEWGRF_MISMATCH :{WHITE}NewGRFの不一致によって接続できませんでした STR_NETWORK_ERROR_DESYNC :{WHITE}ネットワークゲームの同期が失敗しました -STR_NETWORK_ERROR_LOSTCONNECTION :{WHITE}ネットワークゲームへの接続が失われました +STR_NETWORK_ERROR_LOSTCONNECTION :{WHITE}ネットワークゲームへの接続が切断しました STR_NETWORK_ERROR_SAVEGAMEERROR :{WHITE}保存したゲームが開けませんでした -STR_NETWORK_ERROR_SERVER_START :{WHITE}サーバが開始できませんでした +STR_NETWORK_ERROR_SERVER_START :{WHITE}サーバーを開始できませんでした STR_NETWORK_ERROR_CLIENT_START :{WHITE}接続できませんでした -STR_NETWORK_ERROR_TIMEOUT :{WHITE}接続 {NUM} にタイムアウトエラーが発生しました -STR_NETWORK_ERROR_SERVER_ERROR :{WHITE}プロトコルエラーによって接続が解除されました -STR_NETWORK_ERROR_WRONG_REVISION :{WHITE}クライアントバージョンはサーババージョンと一致していません -STR_NETWORK_ERROR_WRONG_PASSWORD :{WHITE}不正なパスワード +STR_NETWORK_ERROR_TIMEOUT :{WHITE}接続 {NUM} でタイムアウトエラーが発生しました +STR_NETWORK_ERROR_SERVER_ERROR :{WHITE}プロトコルエラーによって接続が切断されました +STR_NETWORK_ERROR_WRONG_REVISION :{WHITE}クライアントバージョンがサーバーバージョンと一致していません +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}このサーバ上にチートを許可しません -STR_NETWORK_ERROR_TOO_MANY_COMMANDS :{WHITE}プレーヤがサーバにコマンドを送り過ぎです。 +STR_NETWORK_ERROR_SERVER_BANNED :{WHITE}サーバー側であなたの参加が禁止されています +STR_NETWORK_ERROR_KICKED :{WHITE}ゲームから追放されました +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_JOIN :{WHITE}タイムアウトによりサーバーへの接続を確立できません ############ Leave those lines in this order!! STR_NETWORK_ERROR_CLIENT_GENERAL :一般エラー STR_NETWORK_ERROR_CLIENT_DESYNC :同期エラー -STR_NETWORK_ERROR_CLIENT_SAVEGAME :保存したゲームが開けなかった -STR_NETWORK_ERROR_CLIENT_CONNECTION_LOST :接続消失 +STR_NETWORK_ERROR_CLIENT_SAVEGAME :マップロード失敗 +STR_NETWORK_ERROR_CLIENT_CONNECTION_LOST :接続切断 STR_NETWORK_ERROR_CLIENT_PROTOCOL_ERROR :プロトコルエラー STR_NETWORK_ERROR_CLIENT_NEWGRF_MISMATCH :NewGRF 不一致 -STR_NETWORK_ERROR_CLIENT_NOT_AUTHORIZED :認証していない -STR_NETWORK_ERROR_CLIENT_NOT_EXPECTED :不正あるいは予期しないパケットを受信しました -STR_NETWORK_ERROR_CLIENT_WRONG_REVISION :対応していないバージョン -STR_NETWORK_ERROR_CLIENT_NAME_IN_USE :プレヤー名がすでに使用中 +STR_NETWORK_ERROR_CLIENT_NOT_AUTHORIZED :非認証 +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 :wrong company-id in DoCommand -STR_NETWORK_ERROR_CLIENT_KICKED :サーバに蹴られた -STR_NETWORK_ERROR_CLIENT_CHEATER :チートして試していた -STR_NETWORK_ERROR_CLIENT_SERVER_FULL :サーバ満員 -STR_NETWORK_ERROR_CLIENT_TOO_MANY_COMMANDS :コマンドを送りすぎ +STR_NETWORK_ERROR_CLIENT_COMPANY_MISMATCH :DoCommand内に不正な会社 +STR_NETWORK_ERROR_CLIENT_KICKED :サーバーが追放 +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_MAP :マップのダウンロード時間超過 +STR_NETWORK_ERROR_CLIENT_TIMEOUT_JOIN :マップの処理時間超過 ############ End of leave-in-this-order -STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION_CAPTION :{WHITE}ネットワークに接続を無くしたかのせいがあります -STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION :{WHITE}最後の{NUM} 瞬間 サーバーからデータが届きませんでした。 +STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION_CAPTION :{WHITE}接続切断の可能性 +STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION :{WHITE}過去{NUM}秒間にわたりサーバーからデータを受信できていません # Network related errors STR_NETWORK_SERVER_MESSAGE :*** {1:STRING} ############ Leave those lines in this order!! -STR_NETWORK_SERVER_MESSAGE_GAME_PAUSED :ゲームはポーズされました。 ({STRING}) +STR_NETWORK_SERVER_MESSAGE_GAME_PAUSED :ゲームがポーズされました。 ({STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_1 :ゲームはまだポーズされています。 ({STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_2 :ゲームはまだポーズされています。({STRING}、{STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_3 :ゲームはまだポーズされています。 ({STRING}、{STRING}、{STRING}) -STR_NETWORK_SERVER_MESSAGE_GAME_UNPAUSED :ポーズは解除されました。({STRING}) -STR_NETWORK_SERVER_MESSAGE_GAME_REASON_NOT_ENOUGH_PLAYERS :プレーヤーの人数が十分ではありません -STR_NETWORK_SERVER_MESSAGE_GAME_REASON_CONNECTING_CLIENTS :クライアントを接続中 +STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_4 :ゲームはまだポーズされています。 ({STRING}、{STRING}、{STRING}、{STRING}) +STR_NETWORK_SERVER_MESSAGE_GAME_UNPAUSED :ゲームのポーズが解除されました。({STRING}) +STR_NETWORK_SERVER_MESSAGE_GAME_REASON_NOT_ENOUGH_PLAYERS :プレーヤー数不足 +STR_NETWORK_SERVER_MESSAGE_GAME_REASON_CONNECTING_CLIENTS :クライアントに接続中 STR_NETWORK_SERVER_MESSAGE_GAME_REASON_MANUAL :手動 +STR_NETWORK_SERVER_MESSAGE_GAME_REASON_GAME_SCRIPT :ゲームスクリプト ############ End of leave-in-this-order STR_NETWORK_MESSAGE_CLIENT_LEAVING :退出 -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_LEFT :*** {STRING} は退出してきました({2:STRING}) +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_LEFT :*** {STRING} が退出しました({2:STRING}) STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} は名前を {STRING} に変更しました -STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} は {2:CURRENCY_LONG} を送金してくれました +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}サーバがセッションを終了しました -STR_NETWORK_MESSAGE_SERVER_REBOOT :{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_TYPE_CAPTION_TOOLTIP :{BLACK}コンテンツの種類 STR_CONTENT_NAME_CAPTION :{BLACK}名前 -STR_CONTENT_NAME_CAPTION_TOOLTIP :{BLACK}項目の名前 -STR_CONTENT_MATRIX_TOOLTIP :{BLACK}項目をキリックして詳しく表示します。{}ダウンロードするにはチェックボックスを付けます。 -STR_CONTENT_SELECT_ALL_CAPTION :{BLACK}すべてを選択 -STR_CONTENT_SELECT_ALL_CAPTION_TOOLTIP :{BLACK}すべての項目を選択します。 +STR_CONTENT_NAME_CAPTION_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_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_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}外部サイトではNewGRFの利用要件やファイル状況がサイトにより異なります。{}OpenTTDへのインストール方法は当該の外部サイトを参照してください。{}続けてもよろしいですか? +STR_CONTENT_FILTER_TITLE :{BLACK}タグ/名前のフィルター: +STR_CONTENT_OPEN_URL :{BLACK}サイトを見る +STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}このコンテンツのあるウェブサイトを訪れます 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_ALREADY_HERE :{SILVER}これはもうダウンロードされました -STR_CONTENT_DETAIL_SUBTITLE_DOES_NOT_EXIST :{SILVER}不明なコンテンツの為、OpenTTDでダウンロード出来ません。 -STR_CONTENT_DETAIL_UPDATE :{SILVER}現在の物と取り替えます{STRING} -STR_CONTENT_DETAIL_NAME :{SILVER}項目名:{WHITE}{STRING} -STR_CONTENT_DETAIL_VERSION :{SILVER}バージョン:{WHITE}{STRING} -STR_CONTENT_DETAIL_DESCRIPTION :{SILVER}説明:{WHITE}{STRING} -STR_CONTENT_DETAIL_URL :{SILVER}URL:{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_TAGS :{SILVER}タグ:{WHITE}{STRING} -STR_CONTENT_NO_ZLIB :{WHITE}OpenTTDは、"zlib"のサポートをしていません。 -STR_CONTENT_NO_ZLIB_SUB :{WHITE}... ダウンロードすることができません! +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_ALREADY_HERE :{SILVER}既にダウンロード済です +STR_CONTENT_DETAIL_SUBTITLE_DOES_NOT_EXIST :{SILVER}ファイルが未知の形式のため、OpenTTDからはダウンロード出来ません +STR_CONTENT_DETAIL_UPDATE :{SILVER}このコンテンツは既にダウンロードされた{STRING}を置き換えます +STR_CONTENT_DETAIL_NAME :{SILVER}コンテンツ名: {WHITE}{STRING} +STR_CONTENT_DETAIL_VERSION :{SILVER}バージョン: {WHITE}{STRING} +STR_CONTENT_DETAIL_DESCRIPTION :{SILVER}説明: {WHITE}{STRING} +STR_CONTENT_DETAIL_URL :{SILVER}URL: {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_TAGS :{SILVER}タグ: {WHITE}{STRING} +STR_CONTENT_NO_ZLIB :{WHITE}OpenTTDは"zlib"をサポートしていません +STR_CONTENT_NO_ZLIB_SUB :{WHITE}ダウンロードすることができません! # Order of these is important! -STR_CONTENT_TYPE_BASE_GRAPHICS :ベースグラフィック +STR_CONTENT_TYPE_BASE_GRAPHICS :基本グラフィック STR_CONTENT_TYPE_NEWGRF :NewGRF STR_CONTENT_TYPE_AI :AI -STR_CONTENT_TYPE_AI_LIBRARY :AI ライブラリ +STR_CONTENT_TYPE_AI_LIBRARY :AIライブラリ STR_CONTENT_TYPE_SCENARIO :シナリオ STR_CONTENT_TYPE_HEIGHTMAP :ハイトマップ -STR_CONTENT_TYPE_BASE_SOUNDS :ベース音 -STR_CONTENT_TYPE_BASE_MUSIC :ベース音楽 +STR_CONTENT_TYPE_BASE_SOUNDS :基本効果音 +STR_CONTENT_TYPE_BASE_MUSIC :基本音楽 +STR_CONTENT_TYPE_GAME_SCRIPT :ゲームスクリプト +STR_CONTENT_TYPE_GS_LIBRARY :ゲームスクリプトライブラリ # Content downloading progress window -STR_CONTENT_DOWNLOAD_TITLE :{WHITE}項目をダウンロード中... -STR_CONTENT_DOWNLOAD_INITIALISE :{WHITE}ダウンロードを初期化中... -STR_CONTENT_DOWNLOAD_FILE :{WHITE}{STRING} をダウンロード中({2:NUM} の {1:NUM}) +STR_CONTENT_DOWNLOAD_TITLE :{WHITE}選択したコンテンツをダウンロード中... +STR_CONTENT_DOWNLOAD_INITIALISE :{WHITE}初期化中... +STR_CONTENT_DOWNLOAD_FILE :{WHITE}{STRING} をダウンロード中({2:NUM} 個中の {1:NUM} 個目) STR_CONTENT_DOWNLOAD_COMPLETE :{WHITE}ダウンロード完了 -STR_CONTENT_DOWNLOAD_PROGRESS_SIZE :{WHITE}{BYTES} / {BYTES} ダウンロードされました ({NUM} %) +STR_CONTENT_DOWNLOAD_PROGRESS_SIZE :{WHITE}{BYTES} / {BYTES} ダウンロード済 ({NUM} %) # Content downloading error messages -STR_CONTENT_ERROR_COULD_NOT_CONNECT :{WHITE}サーバに接続することができませんでした... +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}基本グラフィック欠落 +STR_MISSING_GRAPHICS_SET_MESSAGE :{BLACK}OpenTTDの動作に必要な基本グラフィックが見つかりません。ダウンロードしてインストールしますか? +STR_MISSING_GRAPHICS_YES_DOWNLOAD :{BLACK}はい、グラフィックをダウンロードします +STR_MISSING_GRAPHICS_NO_QUIT :{BLACK}いいえ、OpenTTDを終了します # Transparency settings window -STR_TRANSPARENCY_CAPTION :{WHITE}半透明設定 -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}透明のかわりに不可視を使用 +STR_TRANSPARENCY_CAPTION :{WHITE}透過表示設定 +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}貨物流通履歴 +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}駅の受入れる地域をハイライトします +STR_STATION_BUILD_COVERAGE_AREA_TITLE :{BLACK}集荷範囲のハイライト 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 :{BLACK}受入れ貨物:{GOLD}{CARGO_LIST} -STR_STATION_BUILD_SUPPLIES_CARGO :{BLACK}供給: {GOLD}{CARGO_LIST} +STR_STATION_BUILD_COVERAGE_AREA_OFF_TOOLTIP :{BLACK}停留施設の旅客・貨物集荷範囲をハイライトしません +STR_STATION_BUILD_COVERAGE_AREA_ON_TOOLTIP :{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}駅を統合 -STR_JOIN_STATION_CREATE_SPLITTED_STATION :{YELLOW}結合しない +STR_JOIN_STATION_CAPTION :{WHITE}停留施設を統合 +STR_JOIN_STATION_CREATE_SPLITTED_STATION :{YELLOW}統合せずに建設 STR_JOIN_WAYPOINT_CAPTION :{WHITE}通過点を統合 -STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}結合しない +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 :モノレールの建設 -STR_RAIL_TOOLBAR_MAGLEV_CONSTRUCTION_CAPTION :磁気浮上式鉄道の建設 - -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}線路を建設します。{}(Ctrl+クリック/ドラッグで一時的な建設/破壊の切り替えができます) -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}自動線路建設モードを用いて線路を建設 -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}鉄道の信号を建設します -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_BRIDGE :{BLACK}鉄道橋を建設します -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TUNNEL :{BLACK}鉄道のトンネルを建設します -STR_RAIL_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR :{BLACK}線路と信号の建設/破壊を切り替えます。{}(駅及び通過点の破壊時はCtrlで駅/通過点を線路ごと破壊します) -STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL :{BLACK}線路種類を交換/更新 - +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+クリックで信号種類を選ぶウィンドウが出ます(「信号の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を押したままにすると駅・通過点の撤去時に線路ごと撤去されます +STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL :{BLACK}既設の線路をこのレール種に変更します。Shiftを押しながら決定すると費用の見積が出ます + +STR_RAIL_NAME_RAILROAD :鉄道 (非電化) +STR_RAIL_NAME_ELRAIL :鉄道 (電化) +STR_RAIL_NAME_MONORAIL :モノレール +STR_RAIL_NAME_MAGLEV :マグレブ # Rail depot construction window -STR_BUILD_DEPOT_TRAIN_ORIENTATION_CAPTION :{WHITE}鉄道車庫の配置 -STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}鉄道車庫の配置方向を選択します +STR_BUILD_DEPOT_TRAIN_ORIENTATION_CAPTION :{WHITE}列車庫建設 +STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}列車庫の向きを選択します # Rail waypoint construction window -STR_WAYPOINT_CAPTION :{WHITE}通過点 -STR_WAYPOINT_GRAPHICS_TOOLTIP :{BLACK}通過点の種類を選択します +STR_WAYPOINT_CAPTION :{WHITE}中継駅 +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_NUMBER_OF_TRACKS :{BLACK}線路数 -STR_STATION_BUILD_NUMBER_OF_TRACKS_TOOLTIP :{BLACK}駅の線路数を選択します +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_DRAG_DROP :{BLACK}自動サイズ -STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}ドラッグアンドドロップで駅を建設します +STR_STATION_BUILD_DRAG_DROP :{BLACK}任意のサイズ +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 :デフォルト駅 -STR_STATION_CLASS_WAYP :通過点 +STR_STATION_CLASS_DFLT :標準駅 +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}入口信号(腕木式){}信号の先の区間にある出口信号のうち最低1個が青であれば青になります。 -STR_BUILD_SIGNAL_SEMAPHORE_EXIT_TOOLTIP :{BLACK}出口信号(腕木式){}動作は通常の信号と同様ですが、入口/コンボ信号を使用する場合に必要になります。 -STR_BUILD_SIGNAL_SEMAPHORE_COMBO_TOOLTIP :{BLACK}コンボ信号(腕木式){}コンボ信号は入口信号と出口信号の機能を併せたものです。 -STR_BUILD_SIGNAL_SEMAPHORE_PBS_TOOLTIP :{BLACK}パス信号 (腕木式) {}パス信号は、1編成以上の列車に対し、列車が安全な停止位置までの経路を予約できる場合同時に信号区間に進入する事を許可します。標準パス信号は信号の背面から通過することができます。 -STR_BUILD_SIGNAL_SEMAPHORE_PBS_OWAY_TOOLTIP :{BLACK}一方通行パス信号 (腕木式) {}パス信号は、1編成以上の列車に対し、列車が安全な停止位置までの経路を予約できる場合同時に信号区間に進入する事を許可します。一方通行パス信号は信号の背面から通過することはできません。 -STR_BUILD_SIGNAL_ELECTRIC_NORM_TOOLTIP :{BLACK}通常の信号(電子式){}線路上に複数の電車を走行させる場合は、事故を避ける為に信号が必要になります。 -STR_BUILD_SIGNAL_ELECTRIC_ENTRY_TOOLTIP :{BLACK}入口信号(電子式){}信号の先の区間にある出口信号のうち最低1個が青であれば青になります。 -STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}出口信号(電子式){}動作は通常の信号と同様ですが、入口/コンボ信号を使用する場合に必要になります。 -STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}コンボ信号(電子式){}コンボ信号は入口信号と出口信号の機能を併せたものです。 -STR_BUILD_SIGNAL_ELECTRIC_PBS_TOOLTIP :{BLACK}パス信号 (電子式) {} パス信号は、1編成以上の列車に対し、列車が安全な停止位置までの経路を予約できる場合同時に信号区間に進入する事を許可します。標準パス信号は信号の背面から通過することができます。 -STR_BUILD_SIGNAL_ELECTRIC_PBS_OWAY_TOOLTIP :{BLACK}一方通行パス信号 (電子式) {} パス信号は、1編成以上の列車に対し、列車が安全な停止位置までの経路を予約できる場合同時に信号区間に進入する事を許可します。一方通行パス信号は信号の背面から通過することはできません。 -STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}信号を交換{}すでに設置した信号をクリックしたときに選択した信号の種類に交換します。 -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}ドラッグ時の信号設置密度を増やす +STR_BUILD_SIGNAL_CAPTION :{WHITE}信号種類の選択 +STR_BUILD_SIGNAL_SEMAPHORE_NORM_TOOLTIP :{BLACK}閉塞信号 (腕木式){}最も一般的な信号で、1つの閉塞内(信号同士の間の区間)には1編成のみが進入できます。配置した信号をクリックすると信号の向きを「一方向→一方向(逆)→二方向」の順で変えられます。一方向式の信号は背面から通過できません +STR_BUILD_SIGNAL_SEMAPHORE_ENTRY_TOOLTIP :{BLACK}入口信号 (腕木式){}この信号の先にある出口信号のうち最低でも1つが緑であれば緑になりますが、そうでなければ赤になります。場内信号に良く使われます +STR_BUILD_SIGNAL_SEMAPHORE_EXIT_TOOLTIP :{BLACK}出口信号 (腕木式){}動作は普通の閉塞信号と同様ですが、入口/コンボ信号を使用する場合に必要になります。ホームの入り口に良く使われます +STR_BUILD_SIGNAL_SEMAPHORE_COMBO_TOOLTIP :{BLACK}コンボ信号 (腕木式){}コンボ信号は入口信号と出口信号の機能を併せ持つ信号です。この信号を使うと多数の分岐のあるような場内信号網を作ることができます +STR_BUILD_SIGNAL_SEMAPHORE_PBS_TOOLTIP :{BLACK}パス信号 (腕木式) {}パス信号では、互いに衝突しない経路が確保できる場合には1つの閉塞内に複数の列車が入ることを許容します。汎用性は高いですが、一方向式しか使えず信号の背面から進行してくる列車を防護することができません。この信号で列車が停車中に正面から対向列車が来ると問答無用で衝突事故を起こします! +STR_BUILD_SIGNAL_SEMAPHORE_PBS_OWAY_TOOLTIP :{BLACK}一方通行パス信号 (腕木式) {}パス信号では、互いに衝突しない経路が確保できる場合には1つの閉塞内に複数の列車が入ることを許容します。このタイプのパス信号は信号の背面から通過することはできません +STR_BUILD_SIGNAL_ELECTRIC_NORM_TOOLTIP :{BLACK}閉塞信号 (色灯式){}最も一般的な信号で、1つの閉塞内(信号同士の間の区間)には1編成のみが進入できます。配置した信号をクリックすると信号の向きを「一方向→一方向(逆)→二方向」の順で変えられます。一方向式の信号は背面から通過できません +STR_BUILD_SIGNAL_ELECTRIC_ENTRY_TOOLTIP :{BLACK}入口信号 (色灯式){}この信号の先にある出口信号のうち最低でも1つが緑であれば緑になりますが、そうでなければ赤になります。場内信号に良く使われます +STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}出口信号 (色灯式){}動作は普通の閉塞信号と同様ですが、入口/コンボ信号を使用する場合に必要になります。ホームの入り口に良く使われます +STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}コンボ信号 (色灯式){}コンボ信号は入口信号と出口信号の機能を併せ持つ信号です。この信号を使うと多数の分岐のあるような場内信号網を作ることができます +STR_BUILD_SIGNAL_ELECTRIC_PBS_TOOLTIP :{BLACK}パス信号 (色灯式) {}パス信号では、互いに衝突しない経路が確保できる場合には1つの閉塞内に複数の列車が入ることを許容します。汎用性は高いですが、一方向式しか使えず信号の背面から進行してくる列車を防護することができません。この信号で列車が停車中に正面から対向列車が来ると問答無用で衝突事故を起こします! +STR_BUILD_SIGNAL_ELECTRIC_PBS_OWAY_TOOLTIP :{BLACK}一方通行パス信号 (色灯式) {}パス信号では、互いに衝突しない経路が確保できる場合には1つの閉塞内に複数の列車が入ることを許容します。このタイプのパス信号は信号の背面から通過することはできません +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}ドラッグ時の信号設置間隔を増やします # Bridge selection window -STR_SELECT_RAIL_BRIDGE_CAPTION :{WHITE}鉄道橋を選択 -STR_SELECT_ROAD_BRIDGE_CAPTION :{WHITE}道路橋を選択 -STR_SELECT_BRIDGE_SELECTION_TOOLTIP :{BLACK}橋の選択 - 建設したい橋の種類をクリックしてください +STR_SELECT_RAIL_BRIDGE_CAPTION :{WHITE}鉄道橋建設 +STR_SELECT_ROAD_BRIDGE_CAPTION :{WHITE}道路橋建設 +STR_SELECT_BRIDGE_SELECTION_TOOLTIP :{BLACK}建設したい橋の種類をクリックしてください STR_SELECT_BRIDGE_INFO :{GOLD}{STRING}、{} {VELOCITY} {WHITE}{CURRENCY_LONG} STR_SELECT_BRIDGE_SCENEDIT_INFO :{GOLD}{STRING},{} {VELOCITY} -STR_BRIDGE_NAME_SUSPENSION_STEEL :つり橋、鋼鉄製 -STR_BRIDGE_NAME_GIRDER_STEEL :けた橋、鋼鉄製 -STR_BRIDGE_NAME_CANTILEVER_STEEL :カンチレバー橋、鋼鉄製 -STR_BRIDGE_NAME_SUSPENSION_CONCRETE :つり橋、コンクリート製 -STR_BRIDGE_NAME_WOODEN :木製 -STR_BRIDGE_NAME_CONCRETE :コンクリート製 -STR_BRIDGE_NAME_TUBULAR_STEEL :鋼管橋、鋼鉄製 -STR_BRIDGE_TUBULAR_SILICON :鋼管橋、シリコン製 +STR_BRIDGE_NAME_SUSPENSION_STEEL :吊橋(S造) +STR_BRIDGE_NAME_GIRDER_STEEL :桁橋(S造) +STR_BRIDGE_NAME_CANTILEVER_STEEL :カンチレバートラス橋(S造) +STR_BRIDGE_NAME_SUSPENSION_CONCRETE :吊橋(RC造) +STR_BRIDGE_NAME_WOODEN :トラス橋(木造) +STR_BRIDGE_NAME_CONCRETE :桁橋(RC造) +STR_BRIDGE_NAME_TUBULAR_STEEL :管状橋(S造) +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}道路を建設します -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_SECTION :{BLACK}路面電車軌道を建設します -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOROAD :{BLACK}自動道路建設モードを用いて道路を建設 -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOTRAM :{BLACK}自動路面電車線建設モードを用いて路面電車線を建設 -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}荷役所を建設します。 -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_CARGO_TRAM_STATION :{BLACK}貨物用路面電車駅を建設。 -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_TOGGLE_BUILD_REMOVE_FOR_ROAD :{BLACK}道路の建設/破壊を切り替えます -STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS :{BLACK}路面電車線の建設/破壊を切り替えます +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_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_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_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}路面電車庫の向きを選択します # 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_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}貨物用電停の向きを選択します # 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_CREATE_LAKE_TOOLTIP :{BLACK}。水を作成します。{}通常の使用時に運河を建設します。Controlをクリックすると、海水位にある地域が浸水できます。 -STR_WATERWAYS_TOOLBAR_CREATE_RIVER_TOOLTIP :{BLACK}川を造る +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_CREATE_RIVER_TOOLTIP :{BLACK}川を造ります # Ship depot construction window -STR_DEPOT_BUILD_SHIP_CAPTION :{WHITE}造船所の配置 -STR_DEPOT_BUILD_SHIP_ORIENTATION_TOOLTIP :{BLACK}造船所の配置を選択します +STR_DEPOT_BUILD_SHIP_CAPTION :{WHITE}造船所建設 +STR_DEPOT_BUILD_SHIP_ORIENTATION_TOOLTIP :{BLACK}造船所の向きを選択します # Dock construction window 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}空港の選択 -STR_STATION_BUILD_AIRPORT_TOOLTIP :{BLACK}空港のサイズ/種類を選択します +STR_STATION_BUILD_AIRPORT_TOOLTIP :{BLACK}空港のサイズ/種類を選択します STR_STATION_BUILD_AIRPORT_CLASS_LABEL :{BLACK}空港の種類 STR_STATION_BUILD_AIRPORT_LAYOUT_NAME :{BLACK}レイアウト{NUM} -STR_AIRPORT_SMALL :町空港 -STR_AIRPORT_CITY :市空港 -STR_AIRPORT_METRO :都市空港 +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 :ヘリコプター庫 @@ -2020,148 +2442,176 @@ STR_AIRPORT_HELISTATION :ヘリステー STR_AIRPORT_CLASS_SMALL :小型空港 STR_AIRPORT_CLASS_LARGE :大型空港 -STR_AIRPORT_CLASS_HUB :ハブ型空港 +STR_AIRPORT_CLASS_HUB :ハブ空港 STR_AIRPORT_CLASS_HELIPORTS :ヘリコプター空港 -STR_STATION_BUILD_NOISE :{BLACK}発生した雑音:{GOLD}{COMMA} +STR_STATION_BUILD_NOISE :{BLACK}騒音量: {GOLD}{COMMA} # 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_CLASS_TOOLTIP :{BLACK}造る物を選びます。 -STR_OBJECT_BUILD_PREVIEW_TOOLTIP :{BLACK}物のプレヴィウ +STR_OBJECT_BUILD_CAPTION :{WHITE}オブジェクトを配置 +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} マス -STR_OBJECT_CLASS_LTHS :ライトハウス -STR_OBJECT_CLASS_TRNS :ラジオツランスメーター +STR_OBJECT_CLASS_LTHS :灯台 +STR_OBJECT_CLASS_TRNS :電波塔 # Tree planting window (last two for SE only) -STR_PLANT_TREE_CAPTION :{WHITE}木 -STR_PLANT_TREE_TOOLTIP :{BLACK}植林する木の種類を選択 -STR_TREES_RANDOM_TYPE :{BLACK}ランドムな木 -STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}ランダムな木で植林します -STR_TREES_RANDOM_TREES_BUTTON :{BLACK}ランドムな木 -STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}ランダムに植林します +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_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_PLACE_ROCKY_AREAS_ON_LANDSCAPE :{BLACK}地表を岩石地帯にします 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_INCREASE_SIZE_OF_LAND_AREA :{BLACK}上げ下げするタイルサイズを拡大します +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 :{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_RANDOM_TOWN_BUTTON :{BLACK}ランダムな町 -STR_FOUND_TOWN_RANDOM_TOWN_TOOLTIP :{BLACK}ランダムなところに町を建設します -STR_FOUND_TOWN_MANY_RANDOM_TOWNS :{BLACK}多くのランダムな市町村 -STR_FOUND_TOWN_RANDOM_TOWNS_TOOLTIP :{BLACK}地図にたくさんの市町村を建設します - -STR_FOUND_TOWN_NAME_TITLE :{YELLOW}町名: -STR_FOUND_TOWN_NAME_EDITOR_TITLE :{BLACK}町名入力 -STR_FOUND_TOWN_NAME_EDITOR_HELP :{BLACK}クリックしたら、町名入力ができます -STR_FOUND_TOWN_NAME_RANDOM_BUTTON :{BLACK}ランダム町名 -STR_FOUND_TOWN_NAME_RANDOM_TOOLTIP :{BLACK}ランダム町名を作らせます - -STR_FOUND_TOWN_INITIAL_SIZE_TITLE :{YELLOW}町のサイズ: -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_CAPTION :{WHITE}街の建設 +STR_FOUND_TOWN_NEW_TOWN_BUTTON :{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}多くのランダムな街 +STR_FOUND_TOWN_RANDOM_TOWNS_TOOLTIP :{BLACK}地図にたくさんの街を建設します + +STR_FOUND_TOWN_NAME_TITLE :{YELLOW}街名: +STR_FOUND_TOWN_NAME_EDITOR_TITLE :{BLACK}街名入力 +STR_FOUND_TOWN_NAME_EDITOR_HELP :{BLACK}クリックすると街名を変更できます +STR_FOUND_TOWN_NAME_RANDOM_BUTTON :{BLACK}ランダムな街名 +STR_FOUND_TOWN_NAME_RANDOM_TOOLTIP :{BLACK}ランダムな街名を出力します + +STR_FOUND_TOWN_INITIAL_SIZE_TITLE :{YELLOW}街のサイズ: +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_CITY :{BLACK}市町村 -STR_FOUND_TOWN_CITY_TOOLTIP :{BLACK}市は町と比べて、より早く拡大します。{}設定によって、基礎のときの大きさもより大きいです。 +STR_FOUND_TOWN_INITIAL_SIZE_TOOLTIP :{BLACK}街のサイズを選択します +STR_FOUND_TOWN_CITY :{BLACK}都市 +STR_FOUND_TOWN_CITY_TOOLTIP :{BLACK}都市は町と比べて、より早く拡大します。{}初期設定によりますが、設立の時点でも人口は町より多くなります -STR_FOUND_TOWN_ROAD_LAYOUT :{YELLOW}市町村の道路配置 -STR_FOUND_TOWN_SELECT_TOWN_ROAD_LAYOUT :{BLACK}この市町村の道路配置を選択してください。 +STR_FOUND_TOWN_ROAD_LAYOUT :{YELLOW}街の道路配置 +STR_FOUND_TOWN_SELECT_TOWN_ROAD_LAYOUT :{BLACK}この街の道路配置(区画)を決定します STR_FOUND_TOWN_SELECT_LAYOUT_ORIGINAL :{BLACK}オリジナル -STR_FOUND_TOWN_SELECT_LAYOUT_BETTER_ROADS :{BLACK}改善した道路 -STR_FOUND_TOWN_SELECT_LAYOUT_2X2_GRID :{BLACK}2x2の格子 -STR_FOUND_TOWN_SELECT_LAYOUT_3X3_GRID :{BLACK}3x3 格子 +STR_FOUND_TOWN_SELECT_LAYOUT_BETTER_ROADS :{BLACK}改善版 +STR_FOUND_TOWN_SELECT_LAYOUT_2X2_GRID :{BLACK}2x2の格子状 +STR_FOUND_TOWN_SELECT_LAYOUT_3X3_GRID :{BLACK}3x3の格子状 STR_FOUND_TOWN_SELECT_LAYOUT_RANDOM :{BLACK}ランダム # Fund new industry window -STR_FUND_INDUSTRY_CAPTION :{WHITE}新規産業の建設を出資 -STR_FUND_INDUSTRY_SELECTION_TOOLTIP :{BLACK}適当な産業を選択します +STR_FUND_INDUSTRY_CAPTION :{WHITE}新規産業の建設に出資 +STR_FUND_INDUSTRY_SELECTION_TOOLTIP :{BLACK}建設したい産業をリストから選択します STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES :多くのランダムな産業 -STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES_TOOLTIP :{BLACK}地図にたくさんの産業を建設します -STR_FUND_INDUSTRY_INDUSTRY_BUILD_COST :{BLACK}価格:{YELLOW}{CURRENCY_LONG} -STR_FUND_INDUSTRY_PROSPECT_NEW_INDUSTRY :{BLACK}調査 +STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES_TOOLTIP :{BLACK}マップ全域にランダムに産業を建設します +STR_FUND_INDUSTRY_INDUSTRY_BUILD_COST :{BLACK}費用: {YELLOW}{CURRENCY_LONG} +STR_FUND_INDUSTRY_PROSPECT_NEW_INDUSTRY :{BLACK}調査/探鉱 STR_FUND_INDUSTRY_BUILD_NEW_INDUSTRY :{BLACK}建設 STR_FUND_INDUSTRY_FUND_NEW_INDUSTRY :{BLACK}出資 # Industry cargoes window -STR_INDUSTRY_CARGOES_INDUSTRY_CAPTION :{WHITE}産業チェーンから{STRING}産業 -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_CARGO_TOOLTIP :{BLACK}{STRING}{}貨物をクリックすると、その配給元と顧客を見に行きます。 -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_INDUSTRY_CAPTION :{WHITE}産業:{STRING}に関わる産業チェーン +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_CARGO_TOOLTIP :{BLACK}{STRING}{}貨物をクリックすると、その貨物を供給または受入れする産業を表示します +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}貨物を選択 +STR_INDUSTRY_CARGOES_SELECT_CARGO_TOOLTIP :{BLACK}産業チェーンを表示したい貨物を選択します +STR_INDUSTRY_CARGOES_SELECT_INDUSTRY :{BLACK}産業を選択 +STR_INDUSTRY_CARGOES_SELECT_INDUSTRY_TOOLTIP :{BLACK}産業チェーンを表示したい産業を選択します # Land area window -STR_LAND_AREA_INFORMATION_CAPTION :{WHITE}地域の情報 -STR_LAND_AREA_INFORMATION_COST_TO_CLEAR_N_A :{BLACK}破壊費用:{LTBLUE}破壊不可 -STR_LAND_AREA_INFORMATION_COST_TO_CLEAR :{BLACK}破壊費用:{RED}{CURRENCY_LONG} -STR_LAND_AREA_INFORMATION_REVENUE_WHEN_CLEARED :{BLACK}撤去すると収入: {LTBLUE}{CURRENCY_LONG} +STR_LAND_AREA_INFORMATION_CAPTION :{WHITE}地域情報 +STR_LAND_AREA_INFORMATION_COST_TO_CLEAR_N_A :{BLACK}撤去費用: {LTBLUE}撤去不可 +STR_LAND_AREA_INFORMATION_COST_TO_CLEAR :{BLACK}撤去費用: {RED}{CURRENCY_LONG} +STR_LAND_AREA_INFORMATION_REVENUE_WHEN_CLEARED :{BLACK}撤去時売却益: {LTBLUE}{CURRENCY_LONG} STR_LAND_AREA_INFORMATION_OWNER_N_A :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_LOCAL_AUTHORITY :{BLACK}町議会:{LTBLUE}{STRING} +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_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}) -STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}購入年:{LTBLUE}{DATE_LONG} -STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}駅の種類:{LTBLUE}{STRING} -STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}駅の種類:{LTBLUE}{STRING} -STR_LAND_AREA_INFORMATION_AIRPORT_CLASS :{BLACK}空港のクラス: {LTBLUE}{STRING} -STR_LAND_AREA_INFORMATION_AIRPORT_NAME :{BLACK}空港の名前: {LTBLUE}{STRING} -STR_LAND_AREA_INFORMATION_AIRPORTTILE_NAME :{BLACK}空港のタイル名: {LTBLUE}{STRING} -STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF:{LTBLUE}{STRING} -STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}受入れる貨物:{LTBLUE} +STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}座標: {LTBLUE}{NUM}x{NUM}x{NUM}({STRING}) +STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}建設年: {LTBLUE}{DATE_LONG} +STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}駅の種類: {LTBLUE}{STRING} +STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}駅の種類: {LTBLUE}{STRING} +STR_LAND_AREA_INFORMATION_AIRPORT_CLASS :{BLACK}空港規模: {LTBLUE}{STRING} +STR_LAND_AREA_INFORMATION_AIRPORT_NAME :{BLACK}空港種類: {LTBLUE}{STRING} +STR_LAND_AREA_INFORMATION_AIRPORTTILE_NAME :{BLACK}空港の土地種類: {LTBLUE}{STRING} +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_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_SNOW_COVERED_LAND :積雪地域 +STR_LAI_CLEAR_DESCRIPTION_FIELDS :耕作地 +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_TRAIN_DEPOT :{STRING} 列車庫 STR_LAI_ROAD_DESCRIPTION_ROAD :道路 -STR_LAI_ROAD_DESCRIPTION_ROAD_WITH_STREETLIGHTS :街路照明のある道路 +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}(工事中) +STR_LAI_TOWN_INDUSTRY_DESCRIPTION_UNDER_CONSTRUCTION :{STRING}(工事中) STR_LAI_TREE_NAME_TREES :木 STR_LAI_TREE_NAME_RAINFOREST :熱帯雨林 @@ -2174,13 +2624,13 @@ STR_LAI_STATION_DESCRIPTION_TRUCK_LOADING_AREA :荷役所 STR_LAI_STATION_DESCRIPTION_BUS_STATION :バス停 STR_LAI_STATION_DESCRIPTION_SHIP_DOCK :埠頭 STR_LAI_STATION_DESCRIPTION_BUOY :ブイ -STR_LAI_STATION_DESCRIPTION_WAYPOINT :通過点 +STR_LAI_STATION_DESCRIPTION_WAYPOINT :中継駅 -STR_LAI_WATER_DESCRIPTION_WATER :水 +STR_LAI_WATER_DESCRIPTION_WATER :水域 STR_LAI_WATER_DESCRIPTION_CANAL :運河 STR_LAI_WATER_DESCRIPTION_LOCK :水門 STR_LAI_WATER_DESCRIPTION_RIVER :川 -STR_LAI_WATER_DESCRIPTION_COAST_OR_RIVERBANK :海岸または川岸 +STR_LAI_WATER_DESCRIPTION_COAST_OR_RIVERBANK :海岸/川岸 STR_LAI_WATER_DESCRIPTION_SHIP_DEPOT :造船所 # Industries come directly from their industry names @@ -2188,34 +2638,34 @@ STR_LAI_WATER_DESCRIPTION_SHIP_DEPOT :造船所 STR_LAI_TUNNEL_DESCRIPTION_RAILROAD :鉄道トンネル STR_LAI_TUNNEL_DESCRIPTION_ROAD :道路トンネル -STR_LAI_BRIDGE_DESCRIPTION_RAIL_SUSPENSION_STEEL :つり橋、鋼鉄製 -STR_LAI_BRIDGE_DESCRIPTION_RAIL_GIRDER_STEEL :けた橋、鋼鉄製 -STR_LAI_BRIDGE_DESCRIPTION_RAIL_CANTILEVER_STEEL :カンチレバー橋、鋼鉄製 -STR_LAI_BRIDGE_DESCRIPTION_RAIL_SUSPENSION_CONCRETE :つり橋、鉄筋コンクリート製 -STR_LAI_BRIDGE_DESCRIPTION_RAIL_WOODEN :橋、木製 -STR_LAI_BRIDGE_DESCRIPTION_RAIL_CONCRETE :橋、コンクリート製 -STR_LAI_BRIDGE_DESCRIPTION_RAIL_TUBULAR_STEEL :鋼管橋 - -STR_LAI_BRIDGE_DESCRIPTION_ROAD_SUSPENSION_STEEL :つり橋、鋼鉄製 -STR_LAI_BRIDGE_DESCRIPTION_ROAD_GIRDER_STEEL :けた橋、鋼鉄製 -STR_LAI_BRIDGE_DESCRIPTION_ROAD_CANTILEVER_STEEL :カンチレバー橋、鋼鉄製 -STR_LAI_BRIDGE_DESCRIPTION_ROAD_SUSPENSION_CONCRETE :つり橋、鉄筋コンクリート製 -STR_LAI_BRIDGE_DESCRIPTION_ROAD_WOODEN :橋、木製 -STR_LAI_BRIDGE_DESCRIPTION_ROAD_CONCRETE :橋、コンクリート製 -STR_LAI_BRIDGE_DESCRIPTION_ROAD_TUBULAR_STEEL :鋼管橋 +STR_LAI_BRIDGE_DESCRIPTION_RAIL_SUSPENSION_STEEL :鉄道橋 (吊橋(S造)) +STR_LAI_BRIDGE_DESCRIPTION_RAIL_GIRDER_STEEL :鉄道橋 (桁橋(S造)) +STR_LAI_BRIDGE_DESCRIPTION_RAIL_CANTILEVER_STEEL :鉄道橋 (カンチレバートラス橋(S造)) +STR_LAI_BRIDGE_DESCRIPTION_RAIL_SUSPENSION_CONCRETE :鉄道橋 (斜張橋(RC造)) +STR_LAI_BRIDGE_DESCRIPTION_RAIL_WOODEN :鉄道橋 (トラス橋(木造)) +STR_LAI_BRIDGE_DESCRIPTION_RAIL_CONCRETE :鉄道橋 (桁橋(RC造)) +STR_LAI_BRIDGE_DESCRIPTION_RAIL_TUBULAR_STEEL :鉄道橋 (管状橋(S造)) + +STR_LAI_BRIDGE_DESCRIPTION_ROAD_SUSPENSION_STEEL :道路橋 (吊橋(S造)) +STR_LAI_BRIDGE_DESCRIPTION_ROAD_GIRDER_STEEL :道路橋 (桁橋(S造)) +STR_LAI_BRIDGE_DESCRIPTION_ROAD_CANTILEVER_STEEL :道路橋 (カンチレバートラス橋(S造)) +STR_LAI_BRIDGE_DESCRIPTION_ROAD_SUSPENSION_CONCRETE :道路橋 (斜張橋(RC造)) +STR_LAI_BRIDGE_DESCRIPTION_ROAD_WOODEN :道路橋 (トラス橋(木造)) +STR_LAI_BRIDGE_DESCRIPTION_ROAD_CONCRETE :道路橋 (桁橋(RC造)) +STR_LAI_BRIDGE_DESCRIPTION_ROAD_TUBULAR_STEEL :鉄道橋 (管状橋(S造)) STR_LAI_BRIDGE_DESCRIPTION_AQUEDUCT :水路橋 -STR_LAI_OBJECT_DESCRIPTION_TRANSMITTER :送信機 +STR_LAI_OBJECT_DESCRIPTION_TRANSMITTER :電波塔 STR_LAI_OBJECT_DESCRIPTION_LIGHTHOUSE :灯台 -STR_LAI_OBJECT_DESCRIPTION_COMPANY_HEADQUARTERS :交通会社本部ビル -STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :会社が所有している地域 +STR_LAI_OBJECT_DESCRIPTION_COMPANY_HEADQUARTERS :本社ビル +STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :社有地 # About OpenTTD window -STR_ABOUT_OPENTTD :{WHITE}OpenTTD について -STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}オリジナル版権{COPYRIGHT} 1995 Chris Sawyer、不許複製 +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-2012 The OpenTTD team +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2014 The OpenTTD team # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}ゲームを保存 @@ -2224,7 +2674,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}ゲームのファイル名 @@ -2233,91 +2683,89 @@ STR_SAVELOAD_DELETE_TOOLTIP :{BLACK}選択 STR_SAVELOAD_SAVE_BUTTON :{BLACK}保存 STR_SAVELOAD_SAVE_TOOLTIP :{BLACK}指定したファイル名で現在のゲームを保存します STR_SAVELOAD_LOAD_BUTTON :{BLACK}ロード -STR_SAVELOAD_LOAD_TOOLTIP :{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} -STR_SAVELOAD_OSKTITLE :{BLACK}セーブゲーム名を入力 +STR_SAVELOAD_OSKTITLE :{BLACK}保存名を入力 # World generation -STR_MAPGEN_WORLD_GENERATION_CAPTION :{WHITE}世界作成 -STR_MAPGEN_MAPSIZE :{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_WORLD_GENERATION_CAPTION :{WHITE}地域設定 +STR_MAPGEN_MAPSIZE :{BLACK}地図サイズ: +STR_MAPGEN_MAPSIZE_TOOLTIP :{BLACK}生成する地図のサイズです。実際にはこのサイズより少し小さくなります +STR_MAPGEN_BY :{BLACK}× +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}雪線を上げる 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_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_VARIETY :{BLACK}地方の相違の分布: +STR_MAPGEN_SMOOTHNESS :{BLACK}地形のなだらかさ: +STR_MAPGEN_VARIETY :{BLACK}地形の地域性: STR_MAPGEN_GENERATE :{WHITE}作成 # Strings for map borders at game generation -STR_MAPGEN_BORDER_TYPE :{BLACK}地図の端: -STR_MAPGEN_NORTHWEST :{BLACK}西北 -STR_MAPGEN_NORTHEAST :{BLACK}東北 -STR_MAPGEN_SOUTHEAST :{BLACK}東南 -STR_MAPGEN_SOUTHWEST :{BLACK}西南 -STR_MAPGEN_BORDER_FREEFORM :{BLACK}自由な型 -STR_MAPGEN_BORDER_WATER :{BLACK}水 +STR_MAPGEN_BORDER_TYPE :{BLACK}地図端: +STR_MAPGEN_NORTHWEST :{BLACK}北西 +STR_MAPGEN_NORTHEAST :{BLACK}北東 +STR_MAPGEN_SOUTHEAST :{BLACK}南東 +STR_MAPGEN_SOUTHWEST :{BLACK}南西 +STR_MAPGEN_BORDER_FREEFORM :{BLACK}自由形成 +STR_MAPGEN_BORDER_WATER :{BLACK}水域 STR_MAPGEN_BORDER_RANDOM :{BLACK}ランダム -STR_MAPGEN_BORDER_RANDOMIZE :{BLACK}ランダム -STR_MAPGEN_BORDER_MANUAL :{BLACK}手動 +STR_MAPGEN_BORDER_RANDOMIZE :{BLACK}ランダム設定 +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} * {NUM} +STR_MAPGEN_HEIGHTMAP_ROTATION :{BLACK}ハイトマップの回転: +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}始める年を変えます +STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}開始年の変更 # SE Map generation -STR_SE_MAPGEN_CAPTION :{WHITE}シナリオの種類 -STR_SE_MAPGEN_FLAT_WORLD :{WHITE}平たい地形 -STR_SE_MAPGEN_FLAT_WORLD_TOOLTIP :{BLACK}平たい地形を作成 -STR_SE_MAPGEN_RANDOM_LAND :{WHITE}ランダムな地形 -STR_SE_MAPGEN_FLAT_WORLD_HEIGHT :{BLACK}平地の土地の高さ: -STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_DOWN :{BLACK}平地の高さを下げる -STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_UP :{BLACK}平地の高さを上げる +STR_SE_MAPGEN_CAPTION :{WHITE}シナリオ種類 +STR_SE_MAPGEN_FLAT_WORLD :{WHITE}平地マップ +STR_SE_MAPGEN_FLAT_WORLD_TOOLTIP :{BLACK}全域が平地のマップを作成します +STR_SE_MAPGEN_RANDOM_LAND :{WHITE}ランダムマップ +STR_SE_MAPGEN_FLAT_WORLD_HEIGHT :{BLACK}平地マップの高度: +STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_DOWN :{BLACK}平地高度を下げる +STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_UP :{BLACK}平地高度を上げる -STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_QUERY_CAPT :{WHITE}平地の高さを変更 +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_PROGRESS :{WHITE}{NUM}%完了 -STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM}/{NUM} -STR_GENERATION_WORLD_GENERATION :{BLACK}地形作成中 -STR_GENERATION_RIVER_GENERATION :{BLACK}河川を生成 +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_RIVER_GENERATION :{BLACK}河川を生成中 STR_GENERATION_TREE_GENERATION :{BLACK}植林中 -STR_GENERATION_OBJECT_GENERATION :{BLACK}灯台/送信機作成中 -STR_GENERATION_CLEARING_TILES :{BLACK}岩石/でこぼこの地形を作成中 +STR_GENERATION_OBJECT_GENERATION :{BLACK}灯台/電波塔配置中 +STR_GENERATION_CLEARING_TILES :{BLACK}岩石/荒地を設定中 STR_GENERATION_SETTINGUP_GAME :{BLACK}ゲームを設定中 STR_GENERATION_PREPARING_TILELOOP :{BLACK}タイルループを実行中 +STR_GENERATION_PREPARING_SCRIPT :{BLACK}スクリプト実行中 STR_GENERATION_PREPARING_GAME :{BLACK}ゲームを準備中 # NewGRF settings -STR_NEWGRF_SETTINGS_CAPTION :{WHITE}NewGRFの設定 -STR_NEWGRF_SETTINGS_INFO_TITLE :{WHITE}NewGRFの詳細情報 -STR_NEWGRF_SETTINGS_ACTIVE_LIST :{WHITE}有効なNewGRFファイル -STR_NEWGRF_SETTINGS_INACTIVE_LIST :{WHITE}無効なNewGRFファイル -STR_NEWGRF_SETTINGS_SELECT_PRESET :{ORANGE}プリセットの選択: +STR_NEWGRF_SETTINGS_CAPTION :{WHITE}NewGRF設定 +STR_NEWGRF_SETTINGS_INFO_TITLE :{WHITE}NewGRF 詳細情報 +STR_NEWGRF_SETTINGS_ACTIVE_LIST :{WHITE}アクティブなNewGRF +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}プリセットを保存 @@ -2326,243 +2774,346 @@ STR_NEWGRF_SETTINGS_PRESET_SAVE_QUERY :{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}ファイルを更新 -STR_NEWGRF_SETTINGS_RESCAN_FILES_TOOLTIP :{BLACK}使用可能なNewGRFファイルのリストを更新 +STR_NEWGRF_SETTINGS_ADD_FILE_TOOLTIP :{BLACK}選択したNewGRFをアクティブリストに追加します +STR_NEWGRF_SETTINGS_RESCAN_FILES :{BLACK}更新 +STR_NEWGRF_SETTINGS_RESCAN_FILES_TOOLTIP :{BLACK}使用可能なNewGRFのリストを更新します STR_NEWGRF_SETTINGS_REMOVE :{BLACK}削除 -STR_NEWGRF_SETTINGS_REMOVE_TOOLTIP :{BLACK}NewGRFファイルをリストから削除します +STR_NEWGRF_SETTINGS_REMOVE_TOOLTIP :{BLACK}選択したNewGRFをアクティブリストから削除します 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_FILE_TOOLTIP :{BLACK}インストールしたNewGRFファイルのリストです。設定を変更するにはファイルをクリックします。 - -STR_NEWGRF_SETTINGS_SET_PARAMETERS :{BLACK}パラメータの設定 -STR_NEWGRF_SETTINGS_TOGGLE_PALETTE :{BLACK}パレットを切り替える -STR_NEWGRF_SETTINGS_TOGGLE_PALETTE_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}パラメータ設定 +STR_NEWGRF_SETTINGS_SHOW_PARAMETERS :{BLACK}パラメータを表示 +STR_NEWGRF_SETTINGS_TOGGLE_PALETTE :{BLACK}パレットの切り替え +STR_NEWGRF_SETTINGS_TOGGLE_PALETTE_TOOLTIP :{BLACK}選択したパレットを切り替えます。{}(このNewGRFのグラフィックがピンクになってしまうとき、この操作を試してみてください) STR_NEWGRF_SETTINGS_APPLY_CHANGES :{BLACK}変更を適用 -STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_BUTTON :{BLACK}抜けている項目をオンラインで検索 -STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_TOOLTIP :{BLACK}抜けている項目はインターネットで検索します。 +STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_BUTTON :{BLACK}不足コンテンツをオンラインで検索 +STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_TOOLTIP :{BLACK}不足しているコンテンツをインターネットで検索します -STR_NEWGRF_SETTINGS_FILENAME :{BLACK}ファイル名:{SILVER}{STRING} -STR_NEWGRF_SETTINGS_GRF_ID :{BLACK}GRF ID:{SILVER}{STRING} +STR_NEWGRF_SETTINGS_FILENAME :{BLACK}ファイル名: {SILVER}{STRING} +STR_NEWGRF_SETTINGS_GRF_ID :{BLACK}GRF ID: {SILVER}{STRING} STR_NEWGRF_SETTINGS_VERSION :{BLACK}バージョン: {SILVER}{NUM} -STR_NEWGRF_SETTINGS_MIN_VERSION :{BLACK}最小対応するバージョン: {SILVER}{NUM} -STR_NEWGRF_SETTINGS_MD5SUM :{BLACK}MD5sum:{SILVER}{STRING} -STR_NEWGRF_SETTINGS_PALETTE :{BLACK}パレット:{SILVER}{STRING} -STR_NEWGRF_SETTINGS_PARAMETER :{BLACK}設定:{SILVER}{STRING} +STR_NEWGRF_SETTINGS_MIN_VERSION :{BLACK}対応する最旧バージョン: {SILVER}{NUM} +STR_NEWGRF_SETTINGS_MD5SUM :{BLACK}MD5sum: {SILVER}{STRING} +STR_NEWGRF_SETTINGS_PALETTE :{BLACK}パレット: {SILVER}{STRING} +STR_NEWGRF_SETTINGS_PARAMETER :{BLACK}設定: {SILVER}{STRING} -STR_NEWGRF_SETTINGS_NO_INFO :{BLACK}情報はありません -STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}一致しているファイルが見つかりません +STR_NEWGRF_SETTINGS_NO_INFO :{BLACK}情報がありません +STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}一致するファイルが見つかりません STR_NEWGRF_SETTINGS_DISABLED :{RED}切 -STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}このバージョンのOpenTTDと適合しません。 +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}閉じる STR_NEWGRF_PARAMETERS_RESET :{BLACK}リセット -STR_NEWGRF_PARAMETERS_RESET_TOOLTIP :{BLACK}すべてのパラメータをデファルトヴァルウに変更する -STR_NEWGRF_PARAMETERS_DEFAULT_NAME :パラメーター{NUM} +STR_NEWGRF_PARAMETERS_RESET_TOOLTIP :{BLACK}全パラメータを標準値に変更する +STR_NEWGRF_PARAMETERS_DEFAULT_NAME :パラメーター {NUM} STR_NEWGRF_PARAMETERS_SETTING :{STRING}: {ORANGE}{STRING} -STR_NEWGRF_PARAMETERS_NUM_PARAM :{LTBLUE}パラメータの数: {ORANGE}{NUM} +STR_NEWGRF_PARAMETERS_NUM_PARAM :{LTBLUE}パラメータ総数: {ORANGE}{NUM} # NewGRF inspect window -STR_NEWGRF_INSPECT_CAPTION :{WHITE}検査する - {STRING} +STR_NEWGRF_INSPECT_CAPTION :{WHITE}{STRING}を精査 STR_NEWGRF_INSPECT_PARENT_BUTTON :{BLACK}派生元 -STR_NEWGRF_INSPECT_PARENT_TOOLTIP :{BLACK}オブジェクトの派生範囲を調べる +STR_NEWGRF_INSPECT_PARENT_TOOLTIP :{BLACK}派生元のオブジェクトを調べます -STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT :{STRING} at {HEX} -STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_OBJECT :物 +STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT :{1:HEX}の{0:STRING} +STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_OBJECT :オブジェクト STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :線路の種類 -STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGRFの変数 60+x のパラメーター (16進) +STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGRFの可変60+xパラメーター (16進) # Sprite aligner window -STR_SPRITE_ALIGNER_CAPTION :{WHITE}スプライトを整列{COMMA} ({STRING}) +STR_SPRITE_ALIGNER_CAPTION :{WHITE}スプライト{COMMA} 配列 ({STRING}) STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}次のスプライト -STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}次のノーマルスプライトに進めます。疑似/リカラー/フォントスプライトとラッピングされた範囲は、終わりまでスキップします。 -STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}スプライトへ行く -STR_SPRITE_ALIGNER_GOTO_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_SPRITE_TOOLTIP :{BLACK}現在選択されているスプライトの代表。このスプライトを描画するときは、整列しません。 -STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}XとYオフセットを変更し、その周りにスプライトを移動します。 +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}画面内のどこかから、スプライトを選びます +STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}スプライトを選ぶ +STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}画面内からスプライトを選びます -STR_SPRITE_ALIGNER_GOTO_CAPTION :{WHITE}スプライトへ行きます。 +STR_SPRITE_ALIGNER_GOTO_CAPTION :{WHITE}スプライトへ行く # NewGRF (self) generated warnings/errors STR_NEWGRF_ERROR_MSG_INFO :{SILVER}{STRING} -STR_NEWGRF_ERROR_MSG_WARNING :{RED}警告:{SILVER}{STRING} -STR_NEWGRF_ERROR_MSG_ERROR :{RED}エラー:{SILVER}{STRING} -STR_NEWGRF_ERROR_MSG_FATAL :{RED}エラー:{SILVER}{STRING} -STR_NEWGRF_ERROR_FATAL_POPUP :{WHITE}致命的な NewGRF エラーが発生しました: {}{STRING} -STR_NEWGRF_ERROR_VERSION_NUMBER :{1:STRING}はOpenTTDのTTDPatchバージョンに対応していません。 -STR_NEWGRF_ERROR_DOS_OR_WINDOWS :{1:STRING}はTTDの{STRING}バージョンのみに対応しています。 -STR_NEWGRF_ERROR_UNSET_SWITCH :{1:STRING}を使用時に、{STRING}を入にしなければなりません -STR_NEWGRF_ERROR_INVALID_PARAMETER :{1:STRING}のパラメータが不正:パラメータ {STRING}({NUM}) -STR_NEWGRF_ERROR_LOAD_AFTER :{1:STRING}は{STRING}の読み込み後のみに読み込めます。 -STR_NEWGRF_ERROR_OTTD_VERSION_NUMBER :{1:STRING} は OpenTTD バージョン {STRING} もしくはそれ以降のバージョンが必要です。 -STR_NEWGRF_ERROR_AFTER_TRANSLATED_FILE :訳しにデザインされたGRFファイル -STR_NEWGRF_ERROR_TOO_MANY_NEWGRFS_LOADED :読み込んだ NewGRF が多すぎます。 -STR_NEWGRF_ERROR_STATIC_GRF_CAUSES_DESYNC :{2:STRING} を {1:STRING} を含む固定的な NewGRF として開くと、同期エラーを起こす可能性があります。 -STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} は壊れたスプライトを含みます。壊れたスプライトは赤疑問符として表示されます。 -STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}現在を使ってるグラフィックセットが複数のダータが無いです。.{}セットを更新して下さいますよう、お願いします。 -STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING}は{STRING}により無効にされました。 +STR_NEWGRF_ERROR_MSG_WARNING :{RED}警告: {SILVER}{STRING} +STR_NEWGRF_ERROR_MSG_ERROR :{RED}エラー: {SILVER}{STRING} +STR_NEWGRF_ERROR_MSG_FATAL :{RED}致命的エラー: {SILVER}{STRING} +STR_NEWGRF_ERROR_FATAL_POPUP :{WHITE}NewGRFに致命的なエラーが発生しました: {}{STRING} +STR_NEWGRF_ERROR_VERSION_NUMBER :{1:STRING}はOpenTTDのTTDPatchバージョンには対応していません +STR_NEWGRF_ERROR_DOS_OR_WINDOWS :{1:STRING}はTTDのバージョン{STRING}にのみ対応しています +STR_NEWGRF_ERROR_UNSET_SWITCH :{1:STRING}を使用時には{STRING}を有効にしなければなりません +STR_NEWGRF_ERROR_INVALID_PARAMETER :{1:STRING}のパラメータが不正です: パラメータ {STRING}({NUM}) +STR_NEWGRF_ERROR_LOAD_BEFORE :{1:STRING}は{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 :このGRFファイルは後発翻訳版です +STR_NEWGRF_ERROR_TOO_MANY_NEWGRFS_LOADED :NewGRFが多すぎます +STR_NEWGRF_ERROR_STATIC_GRF_CAUSES_DESYNC :{2:STRING}を含む{1:STRING}を常用のNewGRFとして読み込むと、同期エラーを起こす可能性があります +STR_NEWGRF_ERROR_UNEXPECTED_SPRITE :予期しないスプライトです (スプライト {3:NUM}) +STR_NEWGRF_ERROR_UNKNOWN_PROPERTY :アクション0のプロパティ{4:HEX}は無効です (スプライト {3:NUM}) +STR_NEWGRF_ERROR_INVALID_ID :不正なIDが使用されています (スプライト {3:NUM}) +STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING}には破損スプライトがあります。破損スプライトは赤疑問符({RED}?{YELLOW})として表示されます +STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :アクション8のエントリが複数含まれています (スプライト {3:NUM}) +STR_NEWGRF_ERROR_READ_BOUNDS :疑似スプライトのデータが十分にありません (スプライト {3:NUM}) +STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}使用中の基本グラフィックセットから複数のスプライトが欠落しています。{}セットを更新して下さいますよう、お願いします +STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}使用中の基本グラフィックセットから複数のスプライトが欠落しています。{}セットを更新して下さいますよう、お願いします{}{YELLOW}OpenTTDの速報開発版{WHITE}をお使いの際は、{YELLOW}速報開発版に即したグラフィックセット{WHITE}が必要となる場合があります +STR_NEWGRF_ERROR_GRM_FAILED :要求されたGRFのリソースは使用できません (スプライト {3:NUM}) +STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING}は{STRING}により無効にされました +STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :不正なレイアウト書式です (スプライト {3:NUM}) # NewGRF related 'general' warnings -STR_NEWGRF_POPUP_CAUTION_CAPTION :{WHITE}注意! -STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}実行中のゲームに変更を適用すると、クラッシュのリスクがあります。{}続けてもよろしいですか? +STR_NEWGRF_POPUP_CAUTION_CAPTION :{WHITE}注意! +STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}実行中のゲームに変更を適用すると、ソフトのクラッシュ又はゲーム破損が起こる可能性があります。これらのトラブルに関するバグ報告はしないで下さい。{}続けてもよろしいですか? -STR_NEWGRF_DUPLICATE_GRFID :{WHITE}ファイルが追加できません:重複のGRF ID -STR_NEWGRF_COMPATIBLE_LOADED :{ORANGE}一致しているファイルが見つかりません(代替 GRF を使用中) +STR_NEWGRF_DUPLICATE_GRFID :{WHITE}既にあるファイルとGRF IDが重複するため、このファイルは追加できません +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_UNPAUSE_WARNING_TITLE :{YELLOW}GRF ファイルが見つかりません -STR_NEWGRF_UNPAUSE_WARNING :{WHITE}ポーズを解除した場合は、OpenTTD の安定性に悪影響を与える可能性があります。この後クラッシュが行った場合は、バグレポートの報告をご遠慮ください。{}ポーズを解除してもよろしいですか? +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}ポーズを解除した場合、OpenTTDがクラッシュする可能性があります。解除後クラッシュが起こった場合のバグ報告はご遠慮ください。{}ポーズを解除してもよろしいですか? # NewGRF status STR_NEWGRF_LIST_NONE :なし -STR_NEWGRF_LIST_ALL_FOUND :現存する全てのファイル -STR_NEWGRF_LIST_COMPATIBLE :{YELLOW}一致したファイル -STR_NEWGRF_LIST_MISSING :{RED}欠けているファイル +STR_NEWGRF_LIST_ALL_FOUND :ローカルにある全ファイル +STR_NEWGRF_LIST_COMPATIBLE :{YELLOW}一致するファイル +STR_NEWGRF_LIST_MISSING :{RED}欠落ファイル # NewGRF 'it's broken' warnings -STR_NEWGRF_BROKEN :{WHITE}NewGRF '{0:STRING}' のビヘービアは 同期エラーやクラッシュを引き起こす可能性があります! -STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}機関車の状態を'{1:ENGINE}'と車庫で交換しました。 -STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}列車の長さを '{1:ENGINE}'と車庫で交換しました。 -STR_BROKEN_VEHICLE_LENGTH :{WHITE}「{1:COMPANY}」が所有している「{0:VEHICLE}」という列車は不正な長さです。使用している NewGRF が原因であるかもしれません。同期エラーやクラッシュが起こる可能性があります! +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}' の情報が誤っています。 -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 -STR_NEWGRF_INVALID_CARGO :<壊れそうな 貨物> +STR_NEWGRF_INVALID_CARGO :<無効な貨物> STR_NEWGRF_INVALID_CARGO_ABBREV :?? -STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} は <壊れそうな貨物> -STR_NEWGRF_INVALID_ENGINE :<壊れそうな列車モデル> -STR_NEWGRF_INVALID_INDUSTRYTYPE :<潰れそうな産業> +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の数により時間がかかります。 +STR_NEWGRF_SCAN_CAPTION :{WHITE}NewGRFをスキャンしています +STR_NEWGRF_SCAN_MESSAGE :{BLACK}NewGRFをスキャンしています。NewGRFの数によっては時間がかかります +STR_NEWGRF_SCAN_STATUS :{BLACK}総数{1:NUM}個中{0:NUM}個のNewGRFをスキャンしました 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_CAPTION :{WHITE}標識リスト - {COMMA}個の標識 +STR_SIGN_LIST_MATCH_CASE :{BLACK}文字種判別 +STR_SIGN_LIST_MATCH_CASE_TOOLTIP :{BLACK}標識の文字を検索する際、大文字/小文字を区別するかどうかを切り替えます # Sign window -STR_EDIT_SIGN_CAPTION :{WHITE}標示のテキストを編集 -STR_EDIT_SIGN_NEXT_SIGN_TOOLTIP :{BLACK}次の標示へ移動 -STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK}前の標示へ移動 +STR_EDIT_SIGN_CAPTION :{WHITE}標識を編集 +STR_EDIT_SIGN_NEXT_SIGN_TOOLTIP :{BLACK}次の標識へ移動 +STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK}前の標識へ移動 -STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}看板のメッセージを入力 +STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}標識の内容を入力 # Town directory window -STR_TOWN_DIRECTORY_CAPTION :{WHITE}市町村 +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_POPULATION :{BLACK}世界人口:{COMMA}人 +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_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} required +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_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_NOISE_IN_TOWN :{BLACK}市内の雑音制限:{ORANGE}{COMMA}{BLACK} 最大:{ORANGE}{COMMA} -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_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_GROW_STOPPED :{BLACK}街は{RED}成長を止めています{BLACK} +STR_TOWN_VIEW_NOISE_IN_TOWN :{BLACK}騒音量: {ORANGE}{COMMA}{BLACK} (現状) / {ORANGE}{COMMA}{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}街名を変更します STR_TOWN_VIEW_EXPAND_BUTTON :{BLACK}拡大 -STR_TOWN_VIEW_EXPAND_TOOLTIP :{BLACK}町のサイズをあげます -STR_TOWN_VIEW_DELETE_BUTTON :{BLACK}破壊 -STR_TOWN_VIEW_DELETE_TOOLTIP :{BLACK}この町を完全に破壊します +STR_TOWN_VIEW_EXPAND_TOOLTIP :{BLACK}街のサイズを大きくします +STR_TOWN_VIEW_DELETE_BUTTON :{BLACK}撤去 +STR_TOWN_VIEW_DELETE_TOOLTIP :{BLACK}この街を完全に撤去します -STR_TOWN_VIEW_RENAME_TOWN_BUTTON :町名を変更 +STR_TOWN_VIEW_RENAME_TOWN_BUTTON :街名を変更 # Town local authority window -STR_LOCAL_AUTHORITY_CAPTION :{WHITE}{TOWN}の町議会 -STR_LOCAL_AUTHORITY_COMPANY_RATINGS :{BLACK}会社の町内の世評: -STR_LOCAL_AUTHORITY_COMPANY_RATING :{YELLOW}{COMPANY} {COMPANY_NUM}:{ORANGE}{STRING} -STR_LOCAL_AUTHORITY_ACTIONS_TITLE :{BLACK}起こせる動作: -STR_LOCAL_AUTHORITY_ACTIONS_TOOLTIP :{BLACK}この町に起こせる動作 - 詳しくは項目をクリックします -STR_LOCAL_AUTHORITY_DO_IT_BUTTON :{BLACK}続ける -STR_LOCAL_AUTHORITY_DO_IT_TOOLTIP :{BLACK}上記のリストの洗濯中の動作を起こします。 - -STR_LOCAL_AUTHORITY_ACTION_SMALL_ADVERTISING_CAMPAIGN :小型広告キャンペーン -STR_LOCAL_AUTHORITY_ACTION_MEDIUM_ADVERTISING_CAMPAIGN :中型広告キャンペーン -STR_LOCAL_AUTHORITY_ACTION_LARGE_ADVERTISING_CAMPAIGN :大型広告キャンペーン -STR_LOCAL_AUTHORITY_ACTION_ROAD_RECONSTRUCTION :道路再建に出資 -STR_LOCAL_AUTHORITY_ACTION_STATUE_OF_COMPANY :会社長の彫像を建設 +STR_LOCAL_AUTHORITY_CAPTION :{WHITE}{TOWN} 地方自治体 +STR_LOCAL_AUTHORITY_COMPANY_RATINGS :{BLACK}社の評判: +STR_LOCAL_AUTHORITY_COMPANY_RATING :{YELLOW}{COMPANY} {COMPANY_NUM}: {ORANGE}{STRING} +STR_LOCAL_AUTHORITY_ACTIONS_TITLE :{BLACK}可能な活動: +STR_LOCAL_AUTHORITY_ACTIONS_TOOLTIP :{BLACK}この街で行える活動です。クリックするとそれぞれの詳細が表示されます +STR_LOCAL_AUTHORITY_DO_IT_BUTTON :{BLACK}実行 +STR_LOCAL_AUTHORITY_DO_IT_TOOLTIP :{BLACK}上のリストで選択した活動を行います + +STR_LOCAL_AUTHORITY_ACTION_SMALL_ADVERTISING_CAMPAIGN :小規模広告キャンペーン +STR_LOCAL_AUTHORITY_ACTION_MEDIUM_ADVERTISING_CAMPAIGN :中規模広告キャンペーン +STR_LOCAL_AUTHORITY_ACTION_LARGE_ADVERTISING_CAMPAIGN :大規模広告キャンペーン +STR_LOCAL_AUTHORITY_ACTION_ROAD_RECONSTRUCTION :道路補修に出資 +STR_LOCAL_AUTHORITY_ACTION_STATUE_OF_COMPANY :社長の彫像を建設 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_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}一年間の独占的運送権を購入します。{}町議会は乗客や貨物があなたの交通会社の運送経路の使用のみを制御します。{}価格:{CURRENCY_LONG} -STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}町議会間の評価を高めるに買収する。注意:露見された場合は処罰が厳しいです!{}価格:{CURRENCY_LONG} +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}旅客と貨物を確保する為に、街でラジオCMを実施します{} 費用: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_LARGE_ADVERTISING :{YELLOW}旅客と貨物を確保する為に、街でTV-CMを開始します{} 費用: {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}街と一年間の独占運送契約を締結します。{}乗客や貨物はあなたの会社の運送経路のみを使用するようになります。{} 費用: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}買収を行い、議会内の評判を高めます。注意: 露見した場合は処罰されます{} 費用: {CURRENCY_LONG} # Goal window +STR_GOALS_CAPTION :{WHITE}{COMPANY} 目標 +STR_GOALS_SPECTATOR_CAPTION :{BLACK}大目標 +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+クリックで新たなビューポートを開いて対象を表示します # Goal question window +STR_GOAL_QUESTION_CAPTION_QUESTION :質問 +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 :キャンセル +STR_GOAL_QUESTION_BUTTON_OK :OK +STR_GOAL_QUESTION_BUTTON_NO :いいえ +STR_GOAL_QUESTION_BUTTON_YES :はい +STR_GOAL_QUESTION_BUTTON_DECLINE :辞退 +STR_GOAL_QUESTION_BUTTON_ACCEPT :受入 +STR_GOAL_QUESTION_BUTTON_IGNORE :無視 +STR_GOAL_QUESTION_BUTTON_RETRY :再実行 +STR_GOAL_QUESTION_BUTTON_PREVIOUS :前 +STR_GOAL_QUESTION_BUTTON_NEXT :次 +STR_GOAL_QUESTION_BUTTON_STOP :停止 +STR_GOAL_QUESTION_BUTTON_START :開始 +STR_GOAL_QUESTION_BUTTON_GO :進む +STR_GOAL_QUESTION_BUTTON_CONTINUE :続行 +STR_GOAL_QUESTION_BUTTON_RESTART :再起動 +STR_GOAL_QUESTION_BUTTON_POSTPONE :延期 +STR_GOAL_QUESTION_BUTTON_SURRENDER :あきらめる +STR_GOAL_QUESTION_BUTTON_CLOSE :閉じる # Subsidies window STR_SUBSIDIES_CAPTION :{WHITE}助成金 -STR_SUBSIDIES_OFFERED_TITLE :{BLACK}次の運送経路に助成金を提案: -STR_SUBSIDIES_OFFERED_FROM_TO :{ORANGE}{STRING}を{STRING}から{STRING}へ{YELLOW}(有効期限:{DATE_SHORT}) +STR_SUBSIDIES_OFFERED_TITLE :{BLACK}助成金が提案された経路: +STR_SUBSIDIES_OFFERED_FROM_TO :{ORANGE}{STRING}を{STRING}から{STRING}へ{YELLOW}(有効期限: {DATE_SHORT}) STR_SUBSIDIES_NONE :{ORANGE}- なし - -STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}すでに助成金を受けている運送経路: -STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING}を{STRING}から{STRING}へ{YELLOW}({COMPANY}{YELLOW}、{DATE_SHORT}まで) -STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}町/産業を見るためにサービスをクリックして下さい +STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}助成金が交付されている経路: +STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING}を{STRING}から{STRING}へ{YELLOW}({COMPANY}{YELLOW}、交付期限:{DATE_SHORT}) +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}駅名 - メイン画面を駅の場所に移動するには駅名をクリックします -STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}複数の項目を選択するにはcontrolを押します -STR_STATION_LIST_CAPTION :{WHITE}{COMPANY} - {COMMA}軒の駅 +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} STR_STATION_LIST_WAYPOINT :{YELLOW}{WAYPOINT} STR_STATION_LIST_NONE :{YELLOW}- なし - -STR_STATION_LIST_SELECT_ALL_FACILITIES :{BLACK}すべての駅を選択 -STR_STATION_LIST_SELECT_ALL_TYPES :{BLACK}すべての貨物種類を選択(到着待たぬ貨物も含む) -STR_STATION_LIST_NO_WAITING_CARGO :{BLACK}到着待ちの貨物がありません +STR_STATION_LIST_SELECT_ALL_FACILITIES :{BLACK}全停留施設を選択 +STR_STATION_LIST_SELECT_ALL_TYPES :{BLACK}全貨物種類を選択(積込待ちのない貨物も含む) +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_EN_ROUTE_FROM :{YELLOW}(うち、{1:STATION}からの転送{0:CARGO_SHORT}) +STR_STATION_VIEW_RESERVED :{YELLOW}({CARGO_SHORT}が積込予約済み) STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}受入れ貨物 STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}受入れる貨物のリストを表示します -STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}受入れ貨物:{WHITE}{CARGO_LIST} +STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}受入れ貨物: {WHITE}{CARGO_LIST} +STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}この停留施設は街の独占輸送契約の恩恵下にあります +STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK}はこの街と独占輸送契約を締結しています STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}評価 -STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}駅の評価を表示します -STR_STATION_VIEW_CARGO_RATINGS_TITLE :{BLACK}近所の交通の評価: -STR_STATION_VIEW_CARGO_RATING :{WHITE}{STRING}:{YELLOW}{STRING}({COMMA}%) +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}{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_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 :最低 @@ -2575,771 +3126,865 @@ STR_CARGO_RATING_EXCELLENT :すばらしい STR_CARGO_RATING_OUTSTANDING :最高 ############ range for rating ends -STR_STATION_VIEW_CENTER_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_AIRCRAFT_TOOLTIP :{BLACK}この空港が指令リストに入っているすべての飛行機を表示します -STR_STATION_VIEW_SCHEDULED_SHIPS_TOOLTIP :{BLACK}この埠頭が指令リストに入っているすべての船舶を表示します +STR_STATION_VIEW_SCHEDULED_TRAINS_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_BUOY_VIEW_CHANGE_BUOY_NAME :{BLACK}ブイの名前を変える +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}通過点名を変更 +STR_EDIT_WAYPOINT_NAME :中継駅名を表示 # Finances window -STR_FINANCES_CAPTION :{WHITE}{COMPANY}の経営状況 {BLACK}{COMPANY_NUM} -STR_FINANCES_EXPENDITURE_INCOME_TITLE :{WHITE}支払い/収益 +STR_FINANCES_CAPTION :{WHITE}{COMPANY} 経営状況 {BLACK}{COMPANY_NUM} +STR_FINANCES_EXPENDITURE_INCOME_TITLE :{WHITE}支出/収入 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_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_AIRCRAFT_INCOME :{GOLD}飛行機の損益 -STR_FINANCES_SECTION_SHIP_INCOME :{GOLD}船舶の損益 -STR_FINANCES_SECTION_LOAN_INTEREST :{GOLD}借入金の金利 +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_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_AIRCRAFT_INCOME :{GOLD}航空機損益 +STR_FINANCES_SECTION_SHIP_INCOME :{GOLD}船舶損益 +STR_FINANCES_SECTION_LOAN_INTEREST :{GOLD}借入金利息 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_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}借入 +STR_FINANCES_BORROW_BUTTON :{BLACK}{CURRENCY_LONG}を借入 +STR_FINANCES_BORROW_TOOLTIP :{BLACK}銀行から資金を借り受けます。Ctrl+クリックで借入上限一杯まで資金を借り受けます STR_FINANCES_REPAY_BUTTON :{BLACK}{CURRENCY_LONG}を返済 -STR_FINANCES_REPAY_TOOLTIP :{BLACK}返済 +STR_FINANCES_REPAY_TOOLTIP :{BLACK}銀行に借入金を返済します。Ctrl+クリックで現資金から可能な限りの借入金を返済します +STR_FINANCES_INFRASTRUCTURE_BUTTON :{BLACK}インフラ設備 # Company view STR_COMPANY_VIEW_CAPTION :{WHITE}{COMPANY} {BLACK}{COMPANY_NUM} -STR_COMPANY_VIEW_PRESIDENT_MANAGER_TITLE :{WHITE}{PRESIDENT_NAME}{}{GOLD}(社長) - -STR_COMPANY_VIEW_INAUGURATED_TITLE :{GOLD}開業日付:{WHITE}{NUM} -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_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}({1:COMPANY}が{0:COMMA}%株式保有) - -STR_COMPANY_VIEW_BUILD_HQ_BUTTON :{BLACK}本部ビルを建設 -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_NEW_FACE_BUTTON :{BLACK}新規顔 -STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}社長の新しい顔を選択します -STR_COMPANY_VIEW_COLOUR_SCHEME_BUTTON :{BLACK}カラースキーム -STR_COMPANY_VIEW_COLOUR_SCHEME_TOOLTIP :{BLACK}交通会社のカラースキームを変更 +STR_COMPANY_VIEW_PRESIDENT_MANAGER_TITLE :{WHITE}{PRESIDENT_NAME}{}{GOLD}(社長) + +STR_COMPANY_VIEW_INAUGURATED_TITLE :{GOLD}開業年: {WHITE}{NUM} +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_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}({1:COMPANY}が株式の{0:COMMA}%を保有) +STR_COMPANY_VIEW_INFRASTRUCTURE :{GOLD}インフラ設備: +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_AIRPORT :{WHITE} 空港 {COMMA}箇所 +STR_COMPANY_VIEW_INFRASTRUCTURE_NONE :{WHITE} なし + +STR_COMPANY_VIEW_BUILD_HQ_BUTTON :{BLACK}本社ビルを建設 +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%になります)。Shift+クリックで費用を見積もります +STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}詳細 +STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}インフラ設備の詳細な個数・タイル数を表示します + +STR_COMPANY_VIEW_NEW_FACE_BUTTON :{BLACK}顔の変更 +STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}社長の顔を変更します +STR_COMPANY_VIEW_COLOUR_SCHEME_BUTTON :{BLACK}コーポレートカラー +STR_COMPANY_VIEW_COLOUR_SCHEME_TOOLTIP :{BLACK}社のコーポレートカラーを変更します STR_COMPANY_VIEW_COMPANY_NAME_BUTTON :{BLACK}会社名 STR_COMPANY_VIEW_COMPANY_NAME_TOOLTIP :{BLACK}会社名を変更します -STR_COMPANY_VIEW_PRESIDENT_NAME_BUTTON :{BLACK}社長の名前 +STR_COMPANY_VIEW_PRESIDENT_NAME_BUTTON :{BLACK}社長名 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_BUTTON :{BLACK}会社株の25%を買収 +STR_COMPANY_VIEW_SELL_SHARE_BUTTON :{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 :社長の名前 +STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :社長名 -STR_BUY_COMPANY_MESSAGE :{WHITE}経済の現状によって当社を他の交通会社へご売却いたします。{}{}{COMPANY}を{CURRENCY_LONG}で買収しますか? +STR_BUY_COMPANY_MESSAGE :{WHITE}現在、当{COMPANY}は業績悪化に伴い、債務の肩代わりを条件に社の全資産をお譲り致そうと考えております。{}{}債務{CURRENCY_LONG}を一括代済し、この会社を吸収合併しますか? # Company infrastructure window +STR_COMPANY_INFRASTRUCTURE_VIEW_CAPTION :{WHITE}{COMPANY} インフラ設備 +STR_COMPANY_INFRASTRUCTURE_VIEW_RAIL_SECT :{GOLD}線路長: +STR_COMPANY_INFRASTRUCTURE_VIEW_SIGNALS :{WHITE}信号 +STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD_SECT :{GOLD}道路長(含軌道): +STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD :{WHITE}道路 +STR_COMPANY_INFRASTRUCTURE_VIEW_TRAMWAY :{WHITE}軌道 +STR_COMPANY_INFRASTRUCTURE_VIEW_WATER_SECT :{GOLD}水運長: +STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS :{WHITE}運河 +STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}停留施設数: +STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}停留施設(タイル数) STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}空港 -STR_COMPANY_INFRASTRUCTURE_VIEW_COST :{WHITE}{1:CURRENCY_LONG}/年 ({0:COMMA}) STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL :{WHITE}{CURRENCY_LONG}/年 # Industry directory STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}産業 -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_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}産業の名前- 名前をクリックで産業を画面の中央に表示 +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}主の画面を産業の場所に移動します +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} -STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}必要な原料:{YELLOW}{STRING}{STRING}と{STRING}{STRING} -STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}必要な原料:{YELLOW}{STRING}{STRING}、{STRING}{STRING}、{STRING}{STRING} +STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}必要資源: {YELLOW}{STRING}{STRING} +STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}必要資源: {YELLOW}{STRING}{STRING}と{STRING}{STRING} +STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}必要資源: {YELLOW}{STRING}{STRING}、{STRING}{STRING}、{STRING}{STRING} ############ range for requires ends ############ range for produces starts -STR_INDUSTRY_VIEW_WAITING_FOR_PROCESSING :{BLACK}処理待ちの貨物: +STR_INDUSTRY_VIEW_WAITING_FOR_PROCESSING :{BLACK}加工待ちの貨物: STR_INDUSTRY_VIEW_WAITING_STOCKPILE_CARGO :{YELLOW}{CARGO_LONG}{STRING}{BLACK} -STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}産物:{YELLOW}{STRING}{STRING} -STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}産物:{YELLOW}{STRING}{STRING}、{STRING}{STRING} +STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}生産品: {YELLOW}{STRING}{STRING} +STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}生産品: {YELLOW}{STRING}{STRING}、{STRING}{STRING} ############ range for produces ends -STR_CONFIG_GAME_PRODUCTION :{WHITE}生産量を変更 -STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}生産量を変更 (パーセンテージ、800%まで可能) +STR_CONFIG_GAME_PRODUCTION :{WHITE}生産量を変更 (8の倍数、最大2040) +STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}生産量を変更 (%表記、最大800%) # Vehicle lists -STR_VEHICLE_LIST_TRAIN_CAPTION :{WHITE}{STRING} - 列車{COMMA}本 -STR_VEHICLE_LIST_ROAD_VEHICLE_CAPTION :{WHITE}{STRING} - 道路車両{COMMA}両 +STR_VEHICLE_LIST_TRAIN_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_AIRCRAFT_CAPTION :{WHITE}{STRING} - 航空機{COMMA}機 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}飛行機 - 情報を見るには飛行機をクリックします +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_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}この車両種類のデザインのリストを表示します +STR_VEHICLE_LIST_AVAILABLE_AIRCRAFT :購入可能な航空機 +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_MANAGE_LIST_TOOLTIP :{BLACK}このリスト内のすべての車両にこの指令を送信 +STR_VEHICLE_LIST_REPLACE_VEHICLES :輸送機器更新 +STR_VEHICLE_LIST_SEND_FOR_SERVICING :回送して点検 -STR_VEHICLE_LIST_SEND_TRAIN_TO_DEPOT :電車庫へ回送 +STR_VEHICLE_LIST_SEND_TRAIN_TO_DEPOT :列車庫へ回送 STR_VEHICLE_LIST_SEND_ROAD_VEHICLE_TO_DEPOT :車庫へ回送 STR_VEHICLE_LIST_SEND_SHIP_TO_DEPOT :造船所へ回送 STR_VEHICLE_LIST_SEND_AIRCRAFT_TO_HANGAR :格納庫へ回送 -STR_VEHICLE_LIST_MASS_STOP_LIST_TOOLTIP :{BLACK}リストに入っているすべての車両を停止するにはクリックします -STR_VEHICLE_LIST_MASS_START_LIST_TOOLTIP :{BLACK}リストに入っているすべての車両を開始するにはクリックします +STR_VEHICLE_LIST_MASS_STOP_LIST_TOOLTIP :{BLACK}リスト中の全輸送機器の運用を停止するにはクリックします +STR_VEHICLE_LIST_MASS_START_LIST_TOOLTIP :{BLACK}リスト中の全輸送機器の運用を開始するにはクリックします -STR_VEHICLE_LIST_SHARED_ORDERS_LIST_CAPTION :{WHITE}{COMMA}台の車両の共有指令 +STR_VEHICLE_LIST_SHARED_ORDERS_LIST_CAPTION :{WHITE}{COMMA}台が指令を共有 # Group window -STR_GROUP_ALL_TRAINS :すべての列車 -STR_GROUP_ALL_ROAD_VEHICLES :すべての道路車両 -STR_GROUP_ALL_SHIPS :すべての船舶 -STR_GROUP_ALL_AIRCRAFTS :すべての飛行機 - -STR_GROUP_DEFAULT_TRAINS :無所属の列車 -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_GROUP_ALL_TRAINS :全列車 +STR_GROUP_ALL_ROAD_VEHICLES :全車両 +STR_GROUP_ALL_SHIPS :全船舶 +STR_GROUP_ALL_AIRCRAFTS :全航空機 + +STR_GROUP_DEFAULT_TRAINS :グループ化されていない列車 +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_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 :すべての車両を取り除く +STR_GROUP_ADD_SHARED_VEHICLE :共有輸送機器を追加 +STR_GROUP_REMOVE_ALL_VEHICLES :全輸送機器を削除 STR_GROUP_RENAME_CAPTION :{BLACK}グループ名を変更 # Build vehicle window -STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :新規鉄道車両 -STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :新規電動鉄道車両 +STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :新規機関車(非電化) +STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :新規機関車(電化)/電車 STR_BUY_VEHICLE_TRAIN_MONORAIL_CAPTION :新規モノレール車両 -STR_BUY_VEHICLE_TRAIN_MAGLEV_CAPTION :新規磁気浮上式鉄道車両 +STR_BUY_VEHICLE_TRAIN_MAGLEV_CAPTION :新規リニア車両 -STR_BUY_VEHICLE_TRAIN_ALL_CAPTION :鉄道車両 -STR_BUY_VEHICLE_ROAD_VEHICLE_CAPTION :新規道路車両 +STR_BUY_VEHICLE_TRAIN_ALL_CAPTION :新規列車 +STR_BUY_VEHICLE_ROAD_VEHICLE_CAPTION :新規車両 STR_BUY_VEHICLE_SHIP_CAPTION :新規船舶 -STR_BUY_VEHICLE_AIRCRAFT_CAPTION :新規飛行機 - -STR_PURCHASE_INFO_COST_WEIGHT :{BLACK}価格:{GOLD}{CURRENCY_LONG}{BLACK} 重量:{GOLD}{WEIGHT_SHORT} -STR_PURCHASE_INFO_SPEED_POWER :{BLACK}最大速度:{GOLD}{VELOCITY}{BLACK} 出力:{GOLD}{POWER} -STR_PURCHASE_INFO_SPEED :{BLACK}最大速度:{GOLD}{VELOCITY} -STR_PURCHASE_INFO_SPEED_OCEAN :{BLACK}洋上での速度: {GOLD}{VELOCITY} -STR_PURCHASE_INFO_SPEED_CANAL :{BLACK}水路/川における速度: {GOLD}{VELOCITY} -STR_PURCHASE_INFO_RUNNINGCOST :{BLACK}運転費:{GOLD}一年間{CURRENCY_LONG} -STR_PURCHASE_INFO_CAPACITY :{BLACK}容量:{GOLD}{CARGO_LONG} {STRING} -STR_PURCHASE_INFO_REFITTABLE :(改装可能) -STR_PURCHASE_INFO_DESIGNED_LIFE :{BLACK}設計年:{GOLD}{NUM}{BLACK} 年限:{GOLD}{COMMA}年間 -STR_PURCHASE_INFO_RELIABILITY :{BLACK}最高信頼度:{GOLD}{COMMA}% -STR_PURCHASE_INFO_COST :{BLACK}価格:{GOLD}{CURRENCY_LONG} -STR_PURCHASE_INFO_WEIGHT_CWEIGHT :{BLACK}重量:{GOLD}{WEIGHT_SHORT}({WEIGHT_SHORT}) -STR_PURCHASE_INFO_COST_SPEED :{BLACK}価格:{GOLD}{CURRENCY_LONG}{BLACK} 最大速度:{GOLD}{VELOCITY} -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_BUY_VEHICLE_AIRCRAFT_CAPTION :新規航空機 + +STR_PURCHASE_INFO_COST_WEIGHT :{BLACK}価格: {GOLD}{CURRENCY_LONG}{BLACK} 重量: {GOLD}{WEIGHT_SHORT} +STR_PURCHASE_INFO_SPEED_POWER :{BLACK}最高速度: {GOLD}{VELOCITY}{BLACK} 出力: {GOLD}{POWER} +STR_PURCHASE_INFO_SPEED :{BLACK}最高速度: {GOLD}{VELOCITY} +STR_PURCHASE_INFO_SPEED_OCEAN :{BLACK}外洋/湖での航行速度: {GOLD}{VELOCITY} +STR_PURCHASE_INFO_SPEED_CANAL :{BLACK}水路/川での航行速度: {GOLD}{VELOCITY} +STR_PURCHASE_INFO_RUNNINGCOST :{BLACK}運用費: {GOLD}{CURRENCY_LONG}/年 +STR_PURCHASE_INFO_CAPACITY :{BLACK}収容量: {GOLD}{CARGO_LONG} {STRING} +STR_PURCHASE_INFO_REFITTABLE :(改造可能) +STR_PURCHASE_INFO_DESIGNED_LIFE :{BLACK}設計年: {GOLD}{NUM}{BLACK} 耐用年数: {GOLD}{COMMA}年 +STR_PURCHASE_INFO_RELIABILITY :{BLACK}最高信頼度: {GOLD}{COMMA}% +STR_PURCHASE_INFO_COST :{BLACK}価格: {GOLD}{CURRENCY_LONG} +STR_PURCHASE_INFO_WEIGHT_CWEIGHT :{BLACK}重量: {GOLD}{WEIGHT_SHORT}({WEIGHT_SHORT}) +STR_PURCHASE_INFO_COST_SPEED :{BLACK}価格: {GOLD}{CURRENCY_LONG}{BLACK} 最高速度: {GOLD}{VELOCITY} +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_BUT :{CARGO_LIST}を除いてすべて -STR_PURCHASE_INFO_MAX_TE :{BLACK}最大牽引力:{GOLD}{FORCE} +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}列車リスト - 個々の情報を見るには列車をクリックします +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_BUY_VEHICLE_BUTTON :{BLACK}車両を購入 +STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_BUTTON :{BLACK}列車を購入 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_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}名称変更 +STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_BUTTON :{BLACK}名称を変更 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_SHIP_RENAME_TOOLTIP :{BLACK}船舶名を変更 -STR_BUY_VEHICLE_AIRCRAFT_RENAME_TOOLTIP :{BLACK}飛行機の名称を変更 +STR_BUY_VEHICLE_TRAIN_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_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}飛行機の名称を変更 +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}航空機の機種名を変更 # Depot window STR_DEPOT_CAPTION :{WHITE}{DEPOT} STR_DEPOT_RENAME_TOOLTIP :{BLACK}車庫の名前を変えます -STR_DEPOT_RENAME_DEPOT_CAPTION :車庫の名前を変える +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}列車 - 情報を見るには列車をクリックします。車両を追加/取り除くにはドラッグします。 -STR_DEPOT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}車両 - クリックして情報を表示します -STR_DEPOT_SHIP_LIST_TOOLTIP :{BLACK}船舶のリスト - 情報を見るには船舶をクリックします -STR_DEPOT_AIRCRAFT_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_SHIP_SELL_TOOLTIP :{BLACK}販売するには船舶をここへドラッグします -STR_DEPOT_AIRCRAFT_SELL_TOOLTIP :{BLACK}売却するには飛行機をここへドラッグします +STR_DEPOT_TRAIN_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_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_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_AUTOREPLACE_TRAIN_TOOLTIP :{BLACK}電車庫内のすべての列車を自動交換します -STR_DEPOT_AUTOREPLACE_ROAD_VEHICLE_TOOLTIP :{BLACK}車庫内のすべての道路車両を自動交換します -STR_DEPOT_AUTOREPLACE_SHIP_TOOLTIP :{BLACK}造船所内のすべての船舶を自動交換します -STR_DEPOT_AUTOREPLACE_AIRCRAFT_TOOLTIP :{BLACK}格納庫内のすべての飛行機を自動交換します +STR_DEPOT_AUTOREPLACE_TRAIN_TOOLTIP :{BLACK}列車庫内の全列車を自動交換します +STR_DEPOT_AUTOREPLACE_ROAD_VEHICLE_TOOLTIP :{BLACK}車庫内の全車両を自動交換します +STR_DEPOT_AUTOREPLACE_SHIP_TOOLTIP :{BLACK}造船所内の全船舶を自動交換します +STR_DEPOT_AUTOREPLACE_AIRCRAFT_TOOLTIP :{BLACK}格納庫内の全航空機を自動交換します -STR_DEPOT_TRAIN_NEW_VEHICLES_BUTTON :{BLACK}新規車両 +STR_DEPOT_TRAIN_NEW_VEHICLES_BUTTON :{BLACK}新規列車 STR_DEPOT_ROAD_VEHICLE_NEW_VEHICLES_BUTTON :{BLACK}新規車両 STR_DEPOT_SHIP_NEW_VEHICLES_BUTTON :{BLACK}新規船舶 -STR_DEPOT_AIRCRAFT_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 :{BLACK}列車を複製 +STR_DEPOT_CLONE_ROAD_VEHICLE :{BLACK}道路車両を複製 +STR_DEPOT_CLONE_SHIP :{BLACK}船舶を複製 +STR_DEPOT_CLONE_AIRCRAFT :{BLACK}航空機を複製 -STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}すべての車両を含めて、この列車を複製します。このボタンをクリックして、他の列車をクリックします。も電車庫内でも電車庫外でもかまいません。Control+クリックすると、指令を共有します。 -STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}道路車両を複製します。このボタンをクリックして、他の車両をクリックします。車庫内でも車庫外でもかまいません。Control+クリックすると、指令を共有します。 -STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}船舶を複製します。このボタンをクリックして、造船所内および造船所外の船舶をクリックします。Control+クリックすると、指令を共有します -STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}飛行機を複製します。このボタンをクリックして、格納庫内および格納庫外の飛行機をクリックします。Control+クリックすると、指令リストを共有します。 +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}メイン画面を鉄道車庫の場所に移動します -STR_DEPOT_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}主の画面を車庫の場所に移動します -STR_DEPOT_SHIP_LOCATION_TOOLTIP :{BLACK}メイン画面を造船所の場所に移動します -STR_DEPOT_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}メイン画面を格納庫の場所に移動します +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_SHIP_TOOLTIP :{BLACK}選択中の造船所が指令リストに入っているすべての船舶のリストを表示します -STR_DEPOT_VEHICLE_ORDER_LIST_AIRCRAFT_TOOLTIP :{BLACK}選択中の格納庫が指令リストに入っているすべての飛行機のリストを表示します +STR_DEPOT_VEHICLE_ORDER_LIST_TRAIN_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_SHIP_TOOLTIP :{BLACK}造船所内のすべての船舶を停止するにはクリックします -STR_DEPOT_MASS_STOP_HANGAR_TOOLTIP :{BLACK}格納庫内のすべての飛行機を停止するにはクリックします +STR_DEPOT_MASS_STOP_DEPOT_TRAIN_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_SHIP_TOOLTIP :{BLACK}造船所内のすべての船舶を開始するにはクリックします -STR_DEPOT_MASS_START_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_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}を設計致しました。{}パフォーマンスなどを検査する為貴社に一年間の独占的先行利用をご提供したいと思いますがよろしいでしょうか? -STR_ENGINE_PREVIEW_RAILROAD_LOCOMOTIVE :鉄道車両 -STR_ENGINE_PREVIEW_ROAD_VEHICLE :道路車両 -STR_ENGINE_PREVIEW_AIRCRAFT :飛行機 +STR_ENGINE_PREVIEW_CAPTION :{WHITE}製造会社からのメッセージ +STR_ENGINE_PREVIEW_MESSAGE :{GOLD}弊社は新たに{STRING}を設計致しました。{}実地でのパフォーマンスなどを検討する為、貴社に独占モニター権を提供したいと考えておりますがいかがでしょうか? +STR_ENGINE_PREVIEW_RAILROAD_LOCOMOTIVE :列車 +STR_ENGINE_PREVIEW_ROAD_VEHICLE :車両 +STR_ENGINE_PREVIEW_AIRCRAFT :航空機 STR_ENGINE_PREVIEW_SHIP :船舶 -STR_ENGINE_PREVIEW_MONORAIL_LOCOMOTIVE :モノレール車両 -STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :磁気浮上式鉄道車両 +STR_ENGINE_PREVIEW_MONORAIL_LOCOMOTIVE :モノレール列車 +STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :リニア列車 -STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}価格:{CURRENCY_LONG} 重量:{WEIGHT_SHORT}{}最大速度:{VELOCITY} 出力:{POWER}{}運転費:一年間{CURRENCY_LONG}{}容量:{CARGO_LONG} -STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}価格: {CURRENCY_LONG} 重量: {WEIGHT_SHORT}{}速度: {VELOCITY} 出力: {POWER} 最大牽引力: {6:FORCE}{}運転費用: {4:CURRENCY_LONG}/年{}容量: {5:CARGO_LONG} -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST :{BLACK}値段:{CURRENCY_LONG} 最高速度:{VELOCITY}{}収容能力:{CARGO_LONG}、{CARGO_LONG}{}維持費:一年間{CURRENCY_LONG} -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK}値段:{CURRENCY_LONG} 最高速度:{VELOCITY}{}収容能力:{CARGO_LONG}{}維持費:一年間{CURRENCY_LONG} +STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}価格: {CURRENCY_LONG} 重量: {WEIGHT_SHORT}{}最高速度: {VELOCITY}{}出力: {POWER}{}運用費: {CURRENCY_LONG}/年{}収容量: {CARGO_LONG} +STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}価格: {CURRENCY_LONG} 重量: {WEIGHT_SHORT}{}最高速度: {VELOCITY} 出力: {POWER} 最大牽引力: {6:FORCE}{}運用費: {4:CURRENCY_LONG}/年{}収容量 {5:CARGO_LONG} +STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST :{BLACK}価格: {CURRENCY_LONG} 最高速度: {VELOCITY}{}収容量: {CARGO_LONG}、{CARGO_LONG}{}運用費: {CURRENCY_LONG}/年 +STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK}価格: {CURRENCY_LONG} 最高速度: {VELOCITY}{}収容量: {CARGO_LONG}{}運用費: {CURRENCY_LONG}/年 +STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_CAPACITY_RUNCOST:{BLACK}価格: {CURRENCY_LONG} 最高速度: {VELOCITY} 航続距離: {COMMA}タイル{}収容量: {CARGO_LONG}、{CARGO_LONG}{}運用費: {CURRENCY_LONG}/年 +STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}価格: {CURRENCY_LONG} 最高速度: {VELOCITY} 航続距離: {COMMA}タイル{}収容量: {CARGO_LONG}{}運用費: {CURRENCY_LONG}/年 # Autoreplace window +STR_REPLACE_VEHICLES_WHITE :{WHITE}{STRING}の自動置換 - {STRING} STR_REPLACE_VEHICLE_TRAIN :列車 -STR_REPLACE_VEHICLE_ROAD_VEHICLE :道路車両 +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}左に選択した機関車の種類の代わりに使用する機関車の種類を選択 - -STR_REPLACE_VEHICLES_START :{BLACK}車両の交換を開始 -STR_REPLACE_HELP_START_BUTTON :{BLACK}左に選択した機関車の種類を右に選択した機関車の種類を開始するにはクリックします -STR_REPLACE_NOT_REPLACING :{BLACK}交換していない -STR_REPLACE_NOT_REPLACING_VEHICLE_SELECTED :{BLACK}選択した車両がありません -STR_REPLACE_VEHICLES_STOP :{BLACK}車両の交換を停止 -STR_REPLACE_HELP_STOP_BUTTON :{BLACK}左に選択した機関車の種類の交換を停止するにはクリックします - -STR_REPLACE_ENGINE_WAGON_SELECT :{BLACK}交換:{ORANGE}{STRING} -STR_REPLACE_ENGINE_WAGON_SELECT_HELP :{BLACK}機関車/貨車のウィンドウに切り替えます。 +STR_REPLACE_VEHICLE_AIRCRAFT :航空機 + +STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}置換対象を選択 +STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}左で選択した輸送機器を置き換える輸送機器を選択します + +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_VEHICLE_SELECTED :{BLACK}車両が選択されていません +STR_REPLACE_REPLACING_WHEN_OLD :老朽化したら{ENGINE}に置換 +STR_REPLACE_VEHICLES_STOP :{BLACK}置換終了 +STR_REPLACE_HELP_STOP_BUTTON :{BLACK}クリックすると選択した輸送機器の置換を終了します + +STR_REPLACE_ENGINE_WAGON_SELECT :{BLACK}置換対象: {ORANGE}{STRING} +STR_REPLACE_ENGINE_WAGON_SELECT_HELP :{BLACK}置換対象を機関車/貨車に切り替えます STR_REPLACE_ENGINES :機関車 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_HELP_RAILTYPE :{BLACK}置換対象となる線路種類を切り替えます +STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}左で選択された機関車の置換対象を(あれば)表示します +STR_REPLACE_RAIL_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}自動交換によって列車の長さが長くなる場合は、列車の長さを保守するには客車/貨車を取り除くことができます。列車の先頭から開始します。 +STR_REPLACE_REMOVE_WAGON :{BLACK}列車の短縮: {ORANGE}{STRING} +STR_REPLACE_REMOVE_WAGON_HELP :{BLACK}機関車の交換で列車長が長くなる場合、列車長を維持する為に客車/貨車を減らすことができます。外されるのは従属部分の先頭からになります # Vehicle view STR_VEHICLE_VIEW_CAPTION :{WHITE}{VEHICLE} -STR_VEHICLE_VIEW_TRAIN_LOCATION_TOOLTIP :{BLACK}メイン画面を列車の場所に移動します -STR_VEHICLE_VIEW_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}主の画面を車両の場所に移動します -STR_VEHICLE_VIEW_SHIP_LOCATION_TOOLTIP :{BLACK}主の画面を船舶の場所に移動します -STR_VEHICLE_VIEW_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}メイン画面を飛行機の場所に移動します +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}列車を電車庫へ回送します。Control+クリックすすると、補修のみします。 -STR_VEHICLE_VIEW_ROAD_VEHICLE_SEND_TO_DEPOT_TOOLTIP :{BLACK}車両を車庫へ改装します。Control+クリックすると修理しか行いません。 -STR_VEHICLE_VIEW_SHIP_SEND_TO_DEPOT_TOOLTIP :{BLACK}船舶を造船所へ回送します。Contorl+クリックすると修理のみをします -STR_VEHICLE_VIEW_AIRCRAFT_SEND_TO_DEPOT_TOOLTIP :{BLACK}飛行機を格納庫へ回送します。Control+クリックすると修理のみします +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_AIRCRAFT_SEND_TO_DEPOT_TOOLTIP :{BLACK}航空機を格納庫へ回送します。Ctrl+クリックすると点検後、再出庫します -STR_VEHICLE_VIEW_CLONE_TRAIN_INFO :{BLACK}すべての車両を含めて、この列車を複製します。Control+クリックすると、指令を共有します。 -STR_VEHICLE_VIEW_CLONE_ROAD_VEHICLE_INFO :{BLACK}道路車両を複製します。Control+クリックすると、指令を共有します。 -STR_VEHICLE_VIEW_CLONE_SHIP_INFO :{BLACK}船を購入します。(コントロール+クリック)すると、プランを共有します。(シフト+クイック)をすると、)船の価格を表せます。 -STR_VEHICLE_VIEW_CLONE_AIRCRAFT_INFO :{BLACK}飛行機を購入します。(コントロール+クリック)をすると、このリストを共有します。(シフト+クリック)をすると、飛行機の価格を表示します。 +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}列車の続行を強制します(信号を無視します) +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_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_TRAIN_REVERSE_TOOLTIP :{BLACK}列車を逆転させます -STR_VEHICLE_VIEW_ROAD_VEHICLE_REVERSE_TOOLTIP :{BLACK}車両を逆転します +STR_VEHICLE_VIEW_TRAIN_REVERSE_TOOLTIP :{BLACK}運転方向を反転させます +STR_VEHICLE_VIEW_ROAD_VEHICLE_REVERSE_TOOLTIP :{BLACK}車両を反転します -STR_VEHICLE_VIEW_TRAIN_ORDERS_TOOLTIP :{BLACK}列車の指令を表示します -STR_VEHICLE_VIEW_ROAD_VEHICLE_ORDERS_TOOLTIP :{BLACK}車両の指令を表示します -STR_VEHICLE_VIEW_SHIP_ORDERS_TOOLTIP :{BLACK}船舶の指令を表示 -STR_VEHICLE_VIEW_AIRCRAFT_ORDERS_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_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_AIRCRAFT_SHOW_DETAILS_TOOLTIP :{BLACK}航空機の情報を表示します -STR_VEHICLE_VIEW_TRAIN_STATE_START_STOP_TOOLTIP :{BLACK}列車の現在の動作 - 始動/停止するにはここにクリックします -STR_VEHICLE_VIEW_ROAD_VEHICLE_STATE_START_STOP_TOOLTIP :{BLACK}車両の現在の動作 - 開始/停止するにはクリックします -STR_VEHICLE_VIEW_SHIP_STATE_START_STOP_TOOLTIP :{BLACK}船舶の現在の動作 - 始動/停止するにはここへクリックします -STR_VEHICLE_VIEW_AIRCRAFT_STATE_START_STOP_TOOLTIP :{BLACK}飛行機の現在の動作 - 始動/停止するにはここをクリックします。Ctrlキー+クリックで目的地に移動します +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}積み降ろし中 STR_VEHICLE_STATUS_LEAVING :{LTBLUE}出発中 -STR_VEHICLE_STATUS_CRASHED :{RED}事故! -STR_VEHICLE_STATUS_BROKEN_DOWN :{RED}故障中 -STR_VEHICLE_STATUS_STOPPED :{RED}停止中 -STR_VEHICLE_STATUS_TRAIN_STOPPING_VEL :{RED}停車中、{VELOCITY} +STR_VEHICLE_STATUS_CRASHED :{RED}事故! +STR_VEHICLE_STATUS_BROKEN_DOWN :{RED}故障! +STR_VEHICLE_STATUS_STOPPED :{RED}運用停止中 +STR_VEHICLE_STATUS_TRAIN_STOPPING_VEL :{RED}減速中 {VELOCITY} STR_VEHICLE_STATUS_TRAIN_NO_POWER :{RED}動力がありません -STR_VEHICLE_STATUS_TRAIN_STUCK :{ORANGE}空き経路待ち中 +STR_VEHICLE_STATUS_TRAIN_STUCK :{ORANGE}先の区間が空くのを待っています +STR_VEHICLE_STATUS_AIRCRAFT_TOO_FAR :{ORANGE}次の目的地が遠すぎます -STR_VEHICLE_STATUS_HEADING_FOR_STATION_VEL :{LTBLUE}{STATION}へ行く、{VELOCITY} -STR_VEHICLE_STATUS_NO_ORDERS_VEL :{LTBLUE}指令なし、{VELOCITY} -STR_VEHICLE_STATUS_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}{WAYPOINT}へ行く、{VELOCITY} -STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_VEL :{ORANGE}先頭へ{DEPOT}, {VELOCITY} -STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_SERVICE_VEL :{LTBLUE}サービスで{DEPOT}, {VELOCITY} +STR_VEHICLE_STATUS_HEADING_FOR_STATION_VEL :{LTBLUE}{STATION}へ向かっています {VELOCITY} +STR_VEHICLE_STATUS_NO_ORDERS_VEL :{LTBLUE}指令なし {VELOCITY} +STR_VEHICLE_STATUS_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}{WAYPOINT}へ向かっています {VELOCITY} +STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_VEL :{ORANGE}{DEPOT}へ回送中です {VELOCITY} +STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_SERVICE_VEL :{LTBLUE}{DEPOT}へ保守回送中です {VELOCITY} # Vehicle stopped/started animations -STR_VEHICLE_COMMAND_STOPPED_SMALL :{TINY_FONT}{RED}停止中 -STR_VEHICLE_COMMAND_STOPPED :{RED}停止中 +STR_VEHICLE_COMMAND_STOPPED_SMALL :{TINY_FONT}{RED}運用停止中 +STR_VEHICLE_COMMAND_STOPPED :{RED}運用停止中 STR_VEHICLE_COMMAND_STARTED_SMALL :{TINY_FONT}{GREEN}発進中 -STR_VEHICLE_COMMAND_STARTED :{GREEN}発進中 +STR_VEHICLE_COMMAND_STARTED :{GREEN}運用開始 # Vehicle details -STR_VEHICLE_DETAILS_CAPTION :{WHITE}{VEHICLE}(詳細) +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_SHIP_RENAME :{BLACK}船舶を名付ける -STR_VEHICLE_DETAILS_AIRCRAFT_RENAME :{BLACK}飛行機を名付ける +STR_VEHICLE_DETAILS_ROAD_VEHICLE_RENAME :{BLACK}車両に名前を付ける +STR_VEHICLE_DETAILS_SHIP_RENAME :{BLACK}船舶に名前を付ける +STR_VEHICLE_DETAILS_AIRCRAFT_RENAME :{BLACK}航空機に名前を付ける -STR_VEHICLE_INFO_AGE_RUNNING_COST_YR :{BLACK}年齢:{LTBLUE}{STRING}{BLACK} 維持費:一年間{LTBLUE}{CURRENCY_LONG} +STR_VEHICLE_INFO_AGE_RUNNING_COST_YR :{BLACK}使用年数: {LTBLUE}{STRING}{BLACK} 維持費: 一年間{LTBLUE}{CURRENCY_LONG} # The next two need to stay in this order -STR_VEHICLE_INFO_AGE :{COMMA}年({COMMA}年) -STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA}年({COMMA}年) +STR_VEHICLE_INFO_AGE :{COMMA}年({COMMA}年) +STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA}年({COMMA}年) -STR_VEHICLE_INFO_MAX_SPEED :{BLACK}最高速度:{LTBLUE}{VELOCITY} -STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}重さ:{LTBLUE}{WEIGHT_SHORT} {BLACK}力:{LTBLUE}{POWER}{BLACK} 最高速度:{LTBLUE}{VELOCITY} -STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}重さ:{LTBLUE}{WEIGHT_SHORT} {BLACK}力:{LTBLUE}{POWER}{BLACK} 最高速度:{LTBLUE}{VELOCITY} {BLACK}最大牽引力:{LTBLUE}{FORCE} +STR_VEHICLE_INFO_MAX_SPEED :{BLACK}最高速度: {LTBLUE}{VELOCITY} +STR_VEHICLE_INFO_MAX_SPEED_RANGE :{BLACK}最高速度: {LTBLUE}{VELOCITY} {BLACK}航続距離: {LTBLUE}{COMMA}タイル +STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}重量: {LTBLUE}{WEIGHT_SHORT} {BLACK}出力: {LTBLUE}{POWER}{BLACK} 最高速度: {LTBLUE}{VELOCITY} +STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}重量: {LTBLUE}{WEIGHT_SHORT} {BLACK}出力: {LTBLUE}{POWER}{BLACK} 最高速度: {LTBLUE}{VELOCITY} {BLACK}最大牽引力: {LTBLUE}{FORCE} -STR_VEHICLE_INFO_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}今年の利益:{LTBLUE}{CURRENCY_LONG}(昨年:{CURRENCY_LONG}) -STR_VEHICLE_INFO_RELIABILITY_BREAKDOWNS :{BLACK}信頼度:{LTBLUE}{COMMA}% {BLACK}修理後の故障:{LTBLUE}{COMMA} +STR_VEHICLE_INFO_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}今年の収益: {LTBLUE}{CURRENCY_LONG}(昨年: {CURRENCY_LONG}) +STR_VEHICLE_INFO_RELIABILITY_BREAKDOWNS :{BLACK}信頼度: {LTBLUE}{COMMA}% {BLACK}点検後の故障数: {LTBLUE}{COMMA} -STR_VEHICLE_INFO_BUILT_VALUE :{LTBLUE}{ENGINE} {BLACK}購入年:{LTBLUE}{NUM}{BLACK} 現在価値:{LTBLUE}{CURRENCY_LONG} -STR_VEHICLE_INFO_NO_CAPACITY :{BLACK}容量: {LTBLUE}なし{STRING} -STR_VEHICLE_INFO_CAPACITY :{BLACK}収容能力:{LTBLUE}{CARGO_LONG}{3:STRING} -STR_VEHICLE_INFO_CAPACITY_MULT :{BLACK}収容能力:{LTBLUE}{CARGO_LONG}{3:STRING} (x{4:NUM}) -STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}収容能力:{LTBLUE}{CARGO_LONG}, {CARGO_LONG}{STRING} +STR_VEHICLE_INFO_BUILT_VALUE :{LTBLUE}{ENGINE} {BLACK}購入年: {LTBLUE}{NUM}{BLACK} 車両価値: {LTBLUE}{CURRENCY_LONG} +STR_VEHICLE_INFO_NO_CAPACITY :{BLACK}収容能力: {LTBLUE}なし{STRING} +STR_VEHICLE_INFO_CAPACITY :{BLACK}収容能力: {LTBLUE}{CARGO_LONG}{3:STRING} +STR_VEHICLE_INFO_CAPACITY_MULT :{BLACK}収容能力: {LTBLUE}{CARGO_LONG}{3:STRING} (x{4:NUM}) +STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}収容能力: {LTBLUE}{CARGO_LONG}, {CARGO_LONG}{STRING} -STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}振り替えクレジット: {LTBLUE}{CURRENCY_LONG} +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}補修間隔を増やす -STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}補修間隔を減らす +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_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}飛行機を名付ける +STR_QUERY_RENAME_AIRCRAFT_CAPTION :{WHITE}航空機を名付ける # Extra buttons for train details windows -STR_VEHICLE_DETAILS_TRAIN_ENGINE_BUILT_AND_VALUE :{LTBLUE}{ENGINE}{BLACK} 購入日付:{LTBLUE}{NUM}{BLACK} 価値:{LTBLUE}{CURRENCY_LONG} -STR_VEHICLE_DETAILS_TRAIN_WAGON_VALUE :{LTBLUE}{ENGINE}{BLACK} 価値:{LTBLUE}{CURRENCY_LONG} +STR_VEHICLE_DETAILS_TRAIN_ENGINE_BUILT_AND_VALUE :{LTBLUE}{ENGINE}{BLACK} 購入日: {LTBLUE}{NUM}{BLACK} 車両価値: {LTBLUE}{CURRENCY_LONG} +STR_VEHICLE_DETAILS_TRAIN_WAGON_VALUE :{LTBLUE}{ENGINE}{BLACK} 車両価値: {LTBLUE}{CURRENCY_LONG} -STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY_TEXT :{BLACK}この列車の貨物最大容量: +STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY_TEXT :{BLACK}この列車の貨物最大収容量: 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}空 -STR_VEHICLE_DETAILS_CARGO_FROM :{LTBLUE}{CARGO_LONG}(原点:{STATION}) -STR_VEHICLE_DETAILS_CARGO_FROM_MULT :{LTBLUE}{CARGO_LONG}(原点:{STATION})(x{NUM}) +STR_VEHICLE_DETAILS_CARGO_EMPTY :{LTBLUE}空荷 +STR_VEHICLE_DETAILS_CARGO_FROM :{LTBLUE}{CARGO_LONG} (積載地: {STATION}) +STR_VEHICLE_DETAILS_CARGO_FROM_MULT :{LTBLUE}{CARGO_LONG} (積載地: {STATION})(x{NUM}) STR_VEHICLE_DETAIL_TAB_CARGO :{BLACK}貨物 STR_VEHICLE_DETAILS_TRAIN_CARGO_TOOLTIP :{BLACK}運送している貨物の情報を表示します STR_VEHICLE_DETAIL_TAB_INFORMATION :{BLACK}情報 -STR_VEHICLE_DETAILS_TRAIN_INFORMATION_TOOLTIP :{BLACK}鉄道車両の情報を表示します -STR_VEHICLE_DETAIL_TAB_CAPACITIES :{BLACK}容量 -STR_VEHICLE_DETAILS_TRAIN_CAPACITIES_TOOLTIP :{BLACK}各車両の容量を表示します +STR_VEHICLE_DETAILS_TRAIN_INFORMATION_TOOLTIP :{BLACK}列車の情報を表示します +STR_VEHICLE_DETAIL_TAB_CAPACITIES :{BLACK}収容量 +STR_VEHICLE_DETAILS_TRAIN_CAPACITIES_TOOLTIP :{BLACK}各車両の収容量を表示します STR_VEHICLE_DETAIL_TAB_TOTAL_CARGO :{BLACK}合計貨物 -STR_VEHICLE_DETAILS_TRAIN_TOTAL_CARGO_TOOLTIP :{BLACK}貨物種類に並べ替えて列車の合計容量を表示します +STR_VEHICLE_DETAILS_TRAIN_TOTAL_CARGO_TOOLTIP :{BLACK}貨物種類別に並べ替え、列車の合計収容量を表示します -STR_VEHICLE_DETAILS_TRAIN_ARTICULATED_RV_CAPACITY :{BLACK}容量:{LTBLUE} +STR_VEHICLE_DETAILS_TRAIN_ARTICULATED_RV_CAPACITY :{BLACK}収容量: {LTBLUE} # Vehicle refit -STR_REFIT_CAPTION :{WHITE}{VEHICLE}(改装) -STR_REFIT_TITLE :{GOLD}運送する貨物の種類を選択: -STR_REFIT_NEW_CAPACITY_COST_OF_REFIT :{BLACK}改装後の積載量:{GOLD}{CARGO_LONG}{}{BLACK}改装費用:{RED}{CURRENCY_LONG} -STR_REFIT_NEW_CAPACITY_COST_OF_AIRCRAFT_REFIT :{BLACK}新しいキャパシティ: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}レフィットの価格: {RED}{CURRENCY_LONG} -STR_REFIT_SELECT_VEHICLES_TOOLTIP :{BLACK}レフィットが行う車両を選択して下さい。マウスでドラーグをすると、複数の車両を選択できます。空スペースにクリックすると車両内すべての物を選択します。(コントロール+クリック)をすると車両内の物とその後のチェーンを選択します。 - -STR_REFIT_TRAIN_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_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_SHIP_REFIT_TOOLTIP :{BLACK}選択した種類の貨物を運送する為に船舶を改装します -STR_REFIT_AIRCRAFT_REFIT_TOOLTIP :{BLACK}選択した種類の貨物を運送するために飛行機を改装 +STR_REFIT_CAPTION :{WHITE}{VEHICLE}(改造) +STR_REFIT_TITLE :{GOLD}新たに運搬する貨物種類: +STR_REFIT_NEW_CAPACITY_COST_OF_REFIT :{BLACK}改造後の積載量: {GOLD}{CARGO_LONG}{}{BLACK}改造費用: {RED}{CURRENCY_LONG} +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_TRAIN_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_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_SHIP_REFIT_TOOLTIP :{BLACK}選択した種類の貨物を運送するために船舶を改造します +STR_REFIT_AIRCRAFT_REFIT_TOOLTIP :{BLACK}選択した種類の貨物を運送するために航空機を改造します # Order view -STR_ORDERS_CAPTION :{WHITE}{VEHICLE}(指令) -STR_ORDERS_TIMETABLE_VIEW :{BLACK}時刻表 -STR_ORDERS_TIMETABLE_VIEW_TOOLTIP :{BLACK}時刻表を表示します +STR_ORDERS_CAPTION :{WHITE}{VEHICLE} (指令) +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} STR_ORDERS_END_OF_ORDERS :- - 指令終了 - - -STR_ORDERS_END_OF_SHARED_ORDERS :- - 共有指令の終了- - +STR_ORDERS_END_OF_SHARED_ORDERS :- - 共有指令終了- - # Order bottom buttons -STR_ORDER_NON_STOP :{BLACK}直通運転(途中停車しない) -STR_ORDER_GO_TO :行く -STR_ORDER_GO_NON_STOP_TO :まで直通運転(途中の駅を通過する) -STR_ORDER_GO_VIA :経由停車点 -STR_ORDER_GO_NON_STOP_VIA :まで直通運転(経由点を通る) -STR_ORDER_TOOLTIP_NON_STOP :{BLACK}選択した指令の停止方法を変更します +STR_ORDER_NON_STOP :{BLACK}直通運転 +STR_ORDER_GO_TO :各停運転 +STR_ORDER_GO_NON_STOP_TO :直通運転 +STR_ORDER_GO_VIA :各停運転し通過 +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_FULL_LOAD_ALL :全積載 STR_ORDER_DROP_FULL_LOAD_ANY :いずれかを全積載 -STR_ORDER_DROP_NO_LOADING :積載しない -STR_ORDER_TOOLTIP_FULL_LOAD :{BLACK}選択した指令の積み込む方法を変更します +STR_ORDER_DROP_NO_LOADING :荷積み無し +STR_ORDER_TOOLTIP_FULL_LOAD :{BLACK}選択した指令先での荷積み方式を変更します STR_ORDER_TOGGLE_UNLOAD :{BLACK}全て降ろす STR_ORDER_DROP_UNLOAD_IF_ACCEPTED :受入有なら降ろす STR_ORDER_DROP_UNLOAD :全て降ろす STR_ORDER_DROP_TRANSFER :転送 -STR_ORDER_DROP_NO_UNLOADING :降ろさない -STR_ORDER_TOOLTIP_UNLOAD :{BLACK}選択した指令の降ろす方法を変更します +STR_ORDER_DROP_NO_UNLOADING :荷下ろし無し +STR_ORDER_TOOLTIP_UNLOAD :{BLACK}選択した指令先での荷下ろし方式を変更します -STR_ORDER_REFIT :{BLACK}再装備 -STR_ORDER_REFIT_TOOLTIP :{BLACK}貨物の種類を選択してください。Control+クリックすると、再装備をキャンセルします。 +STR_ORDER_REFIT :{BLACK}改造 +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_HALT_DEPOT :停止 -STR_ORDER_SERVICE_TOOLTIP :{BLACK}修理が必要でないとこの指令をスキップ +STR_ORDER_DROP_SERVICE_DEPOT :必要であれば点検 +STR_ORDER_DROP_HALT_DEPOT :運用停止 +STR_ORDER_SERVICE_TOOLTIP :{BLACK}点検が必要ない時にはこの指令はスキップされます -STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}ベースに車両のデータをジャンプ +STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}輸送機器データに基づく条件分岐 # Conditional order variables, must follow order of OrderConditionVariable enum 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_AGE :使用年数(年) +STR_ORDER_CONDITIONAL_REQUIRES_SERVICE :点検要求 STR_ORDER_CONDITIONAL_UNCONDITIONALLY :常に -STR_ORDER_CONDITIONAL_REMAINING_LIFETIME :寿命までの残期間(年) +STR_ORDER_CONDITIONAL_REMAINING_LIFETIME :耐用年数までの残期間(年) -STR_ORDER_CONDITIONAL_COMPARATOR_TOOLTIP :{BLACK}車両の価格を見る -STR_ORDER_CONDITIONAL_COMPARATOR_EQUALS :の -STR_ORDER_CONDITIONAL_COMPARATOR_NOT_EQUALS :ではない +STR_ORDER_CONDITIONAL_COMPARATOR_TOOLTIP :{BLACK}輸送機器のデータと指定の数値でどのような条件式を組むかを決定します +STR_ORDER_CONDITIONAL_COMPARATOR_EQUALS :に等しい +STR_ORDER_CONDITIONAL_COMPARATOR_NOT_EQUALS :と異なる STR_ORDER_CONDITIONAL_COMPARATOR_LESS_THAN :未満の STR_ORDER_CONDITIONAL_COMPARATOR_LESS_EQUALS :以下の STR_ORDER_CONDITIONAL_COMPARATOR_MORE_THAN :より多い STR_ORDER_CONDITIONAL_COMPARATOR_MORE_EQUALS :以上の -STR_ORDER_CONDITIONAL_COMPARATOR_IS_TRUE :である -STR_ORDER_CONDITIONAL_COMPARATOR_IS_FALSE :ではない +STR_ORDER_CONDITIONAL_COMPARATOR_IS_TRUE :真である +STR_ORDER_CONDITIONAL_COMPARATOR_IS_FALSE :偽である -STR_ORDER_CONDITIONAL_VALUE_TOOLTIP :{BLACK}乗り物のデータと比較する値 -STR_ORDER_CONDITIONAL_VALUE_CAPT :{WHITE}比較に用いる値を入力 +STR_ORDER_CONDITIONAL_VALUE_TOOLTIP :{BLACK}輸送機器のデータと比較する値を指定します +STR_ORDER_CONDITIONAL_VALUE_CAPT :{WHITE}比較値を入力 STR_ORDERS_SKIP_BUTTON :{BLACK}スキップ -STR_ORDERS_SKIP_TOOLTIP :{BLACK}実行中の指令をスキップして、次へ移動します。Control クリックすると、選択した指令へ移動します。 +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}注文オーダの共有が止まる。(コントロール+クリック)を押したら、リストも消去します。 +STR_ORDERS_DELETE_ALL_TOOLTIP :{BLACK}指令を全て消去 +STR_ORDERS_STOP_SHARING_BUTTON :{BLACK}共有を解除 +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}選択した指令の前/リストの終わりに新規指令を挿入します +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_VEH_WITH_SHARED_ORDERS_LIST_TOOLTIP :{BLACK}この指令リストを共有しているすべての車両を表示します +STR_ORDERS_VEH_WITH_SHARED_ORDERS_LIST_TOOLTIP :{BLACK}この指令リストを共有している全車両を表示します # String parts to build the order string -STR_ORDER_GO_TO_WAYPOINT :{WAYPOINT}を経て行く -STR_ORDER_GO_NON_STOP_TO_WAYPOINT :{WAYPOINT}を経て直行で行く +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 :最も近い格納庫 -STR_ORDER_TRAIN_DEPOT :電車庫 +STR_ORDER_NEAREST_DEPOT :最寄りの +STR_ORDER_NEAREST_HANGAR :最寄りの格納庫 +STR_ORDER_TRAIN_DEPOT :列車庫 STR_ORDER_ROAD_VEHICLE_DEPOT :車庫 STR_ORDER_SHIP_DEPOT :造船所 -STR_ORDER_GO_TO_NEAREST_DEPOT_FORMAT :{STRING} {STRING} {STRING} -STR_ORDER_GO_TO_DEPOT_FORMAT :{STRING} {DEPOT} +STR_ORDER_GO_TO_NEAREST_DEPOT_FORMAT :{1:STRING}{2:STRING}{0:STRING} +STR_ORDER_GO_TO_DEPOT_FORMAT :{1:DEPOT}へ{0:STRING} -STR_ORDER_REFIT_ORDER :({STRING}に改装) -STR_ORDER_REFIT_STOP_ORDER :({STRING}に改装して、止める) -STR_ORDER_STOP_ORDER :(停止) +STR_ORDER_REFIT_ORDER :({STRING}に改造) +STR_ORDER_REFIT_STOP_ORDER :({STRING}に改造して、運用停止) +STR_ORDER_STOP_ORDER :(運用停止) -STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING} +STR_ORDER_GO_TO_STATION :{1:STATION}へ{0:STRING} {2:STRING} -STR_ORDER_IMPLICIT :(自動的) +STR_ORDER_IMPLICIT :(自動) -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_ANY :(降ろしていずれか一種のを全積載) -STR_ORDER_UNLOAD_NO_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_ANY :(荷下ろししていずれかの貨物の満載まで待機) +STR_ORDER_UNLOAD_NO_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_NO_LOAD :(降ろさず積載しない) - - - -STR_ORDER_STOP_LOCATION_NEAR_END :[手前に止まる] -STR_ORDER_STOP_LOCATION_MIDDLE :[中間に止まる] -STR_ORDER_STOP_LOCATION_FAR_END :[奥に止まる] - +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_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_NO_UNLOAD_FULL_LOAD_ANY_REFIT :(荷下ろしせず{STRING}に自動改造しいずれかの貨物の満載まで待機) + +STR_ORDER_AUTO_REFIT_ANY :改造可能な貨物種類 + +STR_ORDER_STOP_LOCATION_NEAR_END :[停止位置:先端] +STR_ORDER_STOP_LOCATION_MIDDLE :[停止位置:中間] +STR_ORDER_STOP_LOCATION_FAR_END :[停止位置:終端] + +STR_ORDER_OUT_OF_RANGE :{RED} (航続距離不足) STR_ORDER_CONDITIONAL_UNCONDITIONAL :指令{COMMA}に飛ぶ -STR_ORDER_CONDITIONAL_NUM :{1:STRING} が {3:COMMA}{2:STRING}時、指令{0:COMMA}に飛ぶ -STR_ORDER_CONDITIONAL_TRUE_FALSE :{1:STRING}{2:STRING}時、指令{0:COMMA}に飛ぶ +STR_ORDER_CONDITIONAL_NUM :{1:STRING}が{3:COMMA}{2:STRING}時、指令{0:COMMA}に飛ぶ +STR_ORDER_CONDITIONAL_TRUE_FALSE :{1:STRING}が{2:STRING}時、指令{0:COMMA}に飛ぶ -STR_INVALID_ORDER :{RED}(不正な指令) +STR_INVALID_ORDER :{RED} (不正な指令) # Time table window -STR_TIMETABLE_TITLE :{WHITE}{VEHICLE}(時刻表) +STR_TIMETABLE_TITLE :{WHITE}{VEHICLE} (ダイヤ) STR_TIMETABLE_ORDER_VIEW :{BLACK}指令 -STR_TIMETABLE_ORDER_VIEW_TOOLTIP :{BLACK}指令を表示します - -STR_TIMETABLE_TOOLTIP :{BLACK}時刻表 - 指令を選択するにはクリックします。 - -STR_TIMETABLE_NO_TRAVEL :どこにも行かない -STR_TIMETABLE_NOT_TIMETABLEABLE :自動的運行(次の注文により時刻表を変更) -STR_TIMETABLE_TRAVEL_NOT_TIMETABLED :運行(未計画) -STR_TIMETABLE_TRAVEL_FOR :{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_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_STARTING_DATE :{BLACK}開始日 -STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}タイムテーブルを始める日時を選んでください +STR_TIMETABLE_ORDER_VIEW_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_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}日 +STR_TIMETABLE_TICKS :{COMMA}ゲーム時 + +STR_TIMETABLE_TOTAL_TIME :{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_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}選択した指令の実行時間を変更します +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_TOOLTIP :{BLACK}選択した移動区間での最高速度を設定します +STR_TIMETABLE_CLEAR_SPEED :{BLACK}制限速度を撤廃 +STR_TIMETABLE_CLEAR_SPEED_TOOLTIP :{BLACK}選択した移動区間にある最高速度を撤廃します -STR_TIMETABLE_RESET_LATENESS :{BLACK}遅刻回数をリセット -STR_TIMETABLE_RESET_LATENESS_TOOLTIP :{BLACK}遅刻回数をリセットして、車両が定刻になります +STR_TIMETABLE_RESET_LATENESS :{BLACK}遅延をリセット +STR_TIMETABLE_RESET_LATENESS_TOOLTIP :{BLACK}ダイヤからの遅延量をリセットして、現状を定刻にします -STR_TIMETABLE_AUTOFILL :{BLACK}自動時刻 -STR_TIMETABLE_AUTOFILL_TOOLTIP :{BLACK}自動的に全ての行き先を設定する(Ctrlキー+クリックで遅延時間をキープ) +STR_TIMETABLE_AUTOFILL :{BLACK}オートフィル +STR_TIMETABLE_AUTOFILL_TOOLTIP :{BLACK}実際に各指令が実行された時の所要時間を収集してダイヤを作成します。Ctrl+クリックでは既存の停車時間は維持して移動時間のみ更新します(輸送機器を上位モデルに置き換えたときに便利です) -STR_TIMETABLE_EXPECTED :{BLACK}予想された -STR_TIMETABLE_SCHEDULED :{BLACK}予定されていた -STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}推測と予定表を切り返える +STR_TIMETABLE_EXPECTED :{BLACK}予想日時 +STR_TIMETABLE_SCHEDULED :{BLACK}定刻日時 +STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}予想日時(現状の運転時刻から推定される今後の発着日時)と定刻日時(ダイヤから割り出される定刻の発着日時)の表示を切り返えます -STR_TIMETABLE_ARRIVAL_ABBREVIATION :A: -STR_TIMETABLE_DEPARTURE_ABBREVIATION :D: +STR_TIMETABLE_ARRIVAL_ABBREVIATION :着: +STR_TIMETABLE_DEPARTURE_ABBREVIATION :発: # Date window (for timetable) STR_DATE_CAPTION :{WHITE}日付設定 STR_DATE_SET_DATE :{BLACK}日付設定 -STR_DATE_SET_DATE_TOOLTIP :{BLACK}タイムテーブルの選択日時と同じ開始日時を使う +STR_DATE_SET_DATE_TOOLTIP :{BLACK}現在のダイヤの日時を開始日時として使う STR_DATE_DAY_TOOLTIP :{BLACK}日を選択 STR_DATE_MONTH_TOOLTIP :{BLACK}月を選択 STR_DATE_YEAR_TOOLTIP :{BLACK}年を選択 # AI debug window -STR_AI_DEBUG :{WHITE}AI デバッグ -STR_AI_DEBUG_NAME_AND_VERSION :{BLACK}{STRING} (v{NUM}) -STR_AI_DEBUG_NAME_TOOLTIP :{BLACK}AI の名前 -STR_AI_DEBUG_SETTINGS :{BLACK}コンピュータのプレーヤの設定 -STR_AI_DEBUG_SETTINGS_TOOLTIP :{BLACK}コンピュータのプレーヤの設定を切り替える +STR_AI_DEBUG :{WHITE}AI/ゲームスクリプトのデバッグ +STR_AI_DEBUG_NAME_AND_VERSION :{BLACK}{STRING} (ver. {NUM}) +STR_AI_DEBUG_NAME_TOOLTIP :{BLACK}スクリプト名 +STR_AI_DEBUG_SETTINGS :{BLACK}設定 +STR_AI_DEBUG_SETTINGS_TOOLTIP :{BLACK}スクリプトの設定を変更します STR_AI_DEBUG_RELOAD :{BLACK}AI を再起動 -STR_AI_DEBUG_RELOAD_TOOLTIP :{BLACK}AI を停止して、スクリプトを読み込んで、AI を再起動します。 -STR_AI_DEBUG_BREAK_STR_ON_OFF_TOOLTIP :{BLACK}AIログメッセージがブレーク文字列にマッチしたときに停止する (有効/無効) +STR_AI_DEBUG_RELOAD_TOOLTIP :{BLACK}このAIを一度停止して、スクリプトを再読込の上、再起動します +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_MATCH_CASE :{BLACK}マッチケース -STR_AI_DEBUG_MATCH_CASE_TOOLTIP :{BLACK}AIのログメッセージと文字列の一致条件を切り替え -STR_AI_DEBUG_CONTINUE :{BLACK}続ける -STR_AI_DEBUG_CONTINUE_TOOLTIP :{BLACK}AIの一時中断を解く -STR_AI_DEBUG_SELECT_AI_TOOLTIP :{BLACK}AIのコンソールを見る - -STR_ERROR_AI_NO_AI_FOUND :読み込む適切なAIが見つかりません。{}このAIはダミーAIで何も行いません。{}幾つかのAIを'オンラインコンテンツ'システム経由でダウンロード可能です。 -STR_ERROR_AI_PLEASE_REPORT_CRASH :{WHITE}実行中の AI の一つが予期せずに終了しました。AI の作者に AI デバッグのウインドウのスクリーンショットが含む電子メールをご送信ください。 -STR_ERROR_AI_DEBUG_SERVER_ONLY :{YELLOW}AI デバッグウインドウはサーバのみで使用することができます。 +STR_AI_DEBUG_BREAK_STR_TOOLTIP :{BLACK}AIのログメッセージがこの文字列と一致したときにゲームをポーズします +STR_AI_DEBUG_MATCH_CASE :{BLACK}文字種判別 +STR_AI_DEBUG_MATCH_CASE_TOOLTIP :{BLACK}AIのログメッセージと停止条件の文字列を比較する際に、大文字/小文字を区別するかどうかを切り替えます +STR_AI_DEBUG_CONTINUE :{BLACK}再開 +STR_AI_DEBUG_CONTINUE_TOOLTIP :{BLACK}ポーズを解除し、AIを継続運用します +STR_AI_DEBUG_SELECT_AI_TOOLTIP :{BLACK}このAIのデバッグ出力を見ます +STR_AI_GAME_SCRIPT :{BLACK}ゲームスクリプト +STR_AI_GAME_SCRIPT_TOOLTIP :{BLACK}ゲームスクリプトのログを確認します + +STR_ERROR_AI_NO_AI_FOUND :適切なAIが見つかりません。{}このAIはダミーAIで何も行いません。{}AIは「オンラインコンテンツの確認」経由でダウンロード可能です +STR_ERROR_AI_PLEASE_REPORT_CRASH :{WHITE}実行中のAIの一つがクラッシュしました。AIの作者にデバッグウインドウのスクリーンショットを付け、ご報告ください +STR_ERROR_AI_DEBUG_SERVER_ONLY :{YELLOW}AI/ゲームスクリプトのデバッグウインドウはサーバーでのみ使用することができます # AI configuration window -STR_AI_CONFIG_CAPTION :{WHITE}AI の設定 +STR_AI_CONFIG_CAPTION :{WHITE}AIの設定 +STR_AI_CONFIG_GAMELIST_TOOLTIP :{BLACK}このゲームスクリプトは次のゲーム開始時からロードされます +STR_AI_CONFIG_AILIST_TOOLTIP :{BLACK}}このAIは次のゲーム開始時からロードされます STR_AI_CONFIG_HUMAN_PLAYER :人間のプレーヤー -STR_AI_CONFIG_RANDOM_AI :ランダムな AI +STR_AI_CONFIG_RANDOM_AI :ランダムなAI +STR_AI_CONFIG_NONE :(なし) -STR_AI_CONFIG_MOVE_UP :{BLACK}上にします +STR_AI_CONFIG_MOVE_UP :{BLACK}上に移動 STR_AI_CONFIG_MOVE_UP_TOOLTIP :{BLACK}選択したAIの順位を上げる -STR_AI_CONFIG_MOVE_DOWN :{BLACK}下にします +STR_AI_CONFIG_MOVE_DOWN :{BLACK}下に移動 STR_AI_CONFIG_MOVE_DOWN_TOOLTIP :{BLACK}選択したAIの順位を下げる +STR_AI_CONFIG_GAMESCRIPT :{SILVER}ゲームスクリプト +STR_AI_CONFIG_AI :{SILVER}AI +STR_AI_CONFIG_CHANGE :{BLACK}{STRING}を選択 STR_AI_CONFIG_CHANGE_NONE : +STR_AI_CONFIG_CHANGE_AI :AI +STR_AI_CONFIG_CHANGE_GAMESCRIPT :ゲームスクリプト +STR_AI_CONFIG_CHANGE_TOOLTIP :{BLACK}他のスクリプトをロードします STR_AI_CONFIG_CONFIGURE :{BLACK}設定 -STR_AI_CONFIG_CONFIGURE_TOOLTIP :{BLACK}AI のパラメータを設定します +STR_AI_CONFIG_CONFIGURE_TOOLTIP :{BLACK}スクリプトのパラメータを設定します # Available AIs window -STR_AI_LIST_TOOLTIP :{BLACK}クリックして AI を選択します。 +STR_AI_LIST_CAPTION :{WHITE}使用可能な{STRING} +STR_AI_LIST_CAPTION_AI :AI +STR_AI_LIST_CAPTION_GAMESCRIPT :ゲームスクリプト +STR_AI_LIST_TOOLTIP :{BLACK}クリックしてスクリプトを選択します -STR_AI_LIST_AUTHOR :{LTBLUE}作成者: {ORANGE}{STRING} -STR_AI_LIST_VERSION :{LTBLUE}バージョン: {ORANGE}{NUM} +STR_AI_LIST_AUTHOR :{LTBLUE}作成者: {ORANGE}{STRING} +STR_AI_LIST_VERSION :{LTBLUE}バージョン: {ORANGE}{NUM} STR_AI_LIST_URL :{LTBLUE}URL: {ORANGE}{STRING} -STR_AI_LIST_ACCEPT :{BLACK}OK -STR_AI_LIST_ACCEPT_TOOLTIP :{BLACK}選択した AI を使用します。 +STR_AI_LIST_ACCEPT :{BLACK}適用 +STR_AI_LIST_ACCEPT_TOOLTIP :{BLACK}選択したスクリプトを使用します STR_AI_LIST_CANCEL :{BLACK}キャンセル -STR_AI_LIST_CANCEL_TOOLTIP :{BLACK}AI を変更しません +STR_AI_LIST_CANCEL_TOOLTIP :{BLACK}スクリプトを変更しません # AI Parameters +STR_AI_SETTINGS_CAPTION :{WHITE}{STRING} パラメータ +STR_AI_SETTINGS_CAPTION_AI :AI +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 :AI企業の設立間隔(倒産/買収後): {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}ライセンス @@ -3350,402 +3995,429 @@ 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}価値:{CURRENCY_LONG} -STR_INCOME_FLOAT_COST :{RED}価値:{CURRENCY_LONG} -STR_INCOME_FLOAT_INCOME_SMALL :{TINY_FONT}{GREEN}収入:{CURRENCY_LONG} -STR_INCOME_FLOAT_INCOME :{GREEN}収入:{CURRENCY_LONG} -STR_FEEDER_TINY :{TINY_FONT}{YELLOW}送金:{CURRENCY_LONG} -STR_FEEDER :{YELLOW}送金:{CURRENCY_LONG} -STR_MESSAGE_ESTIMATED_COST :{WHITE}推定の費用:{CURRENCY_LONG} -STR_MESSAGE_ESTIMATED_INCOME :{WHITE}推定の収入:{CURRENCY_LONG} +STR_INCOME_FLOAT_COST_SMALL :{TINY_FONT}{RED}費用: {CURRENCY_LONG} +STR_INCOME_FLOAT_COST :{RED}費用: {CURRENCY_LONG} +STR_INCOME_FLOAT_INCOME_SMALL :{TINY_FONT}{GREEN}収益: {CURRENCY_LONG} +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} # Saveload messages -STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}ゲームを保存しています{}完了してからしばらくお待ちください! +STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}ゲームを保存しています{}完了までしばらくお待ちください! STR_ERROR_AUTOSAVE_FAILED :{WHITE}自動保存に失敗しました -STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}ドライブが読み込めません +STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}ドライブを読み込めません STR_ERROR_GAME_SAVE_FAILED :{WHITE}ゲームの保存に失敗しました{}{STRING} 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_TOO_NEW_SAVEGAME :セーブゲームはより新しいバージョンによって保存されました +STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :内部エラー: {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 :ファイルに書き込むことができません -STR_GAME_SAVELOAD_ERROR_DATA_INTEGRITY_CHECK_FAILED :データインテグリティチェック失敗 +STR_GAME_SAVELOAD_ERROR_DATA_INTEGRITY_CHECK_FAILED :データ保全性チェック失敗 STR_GAME_SAVELOAD_NOT_AVAILABLE :<使用不能> 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_COULD_NOT_CREATE_TOWN :{WHITE}マップ生成中止{}街を配置するスペースがありません +STR_ERROR_NO_TOWN_IN_SCENARIO :{WHITE}このシナリオには街がありません -STR_ERROR_PNGMAP :{WHITE}PNG ファイルから地形が読み込めません... -STR_ERROR_PNGMAP_FILE_NOT_FOUND :{WHITE}... ファイルが見つかりませんでした -STR_ERROR_PNGMAP_IMAGE_TYPE :{WHITE}... イメージのフォーマットが交換できませんでした。256色もしくは1670万色のPNGファイルしか対応していません。 -STR_ERROR_PNGMAP_MISC :{WHITE}... 不明なエラーが発生しました。破損したファイルの可能性があります。 +STR_ERROR_PNGMAP :{WHITE}PNGファイルから地形が読み込めません +STR_ERROR_PNGMAP_FILE_NOT_FOUND :{WHITE}ファイルが見つかりません +STR_ERROR_PNGMAP_IMAGE_TYPE :{WHITE}イメージのフォーマットを変換できませんでした。8ビットもしくは24ビットのPNGファイルにのみ対応しています +STR_ERROR_PNGMAP_MISC :{WHITE}不明なエラーが発生しました。ファイルが破損している可能性があります -STR_ERROR_BMPMAP :{WHITE}BMP ファイルから地形が読み込めません... -STR_ERROR_BMPMAP_IMAGE_TYPE :{WHITE}... イメージのフォーマットが交換できませんでした。 +STR_ERROR_BMPMAP :{WHITE}BMPファイルから地形が読み込めません +STR_ERROR_BMPMAP_IMAGE_TYPE :{WHITE}イメージのフォーマットを変換できませんでした -STR_ERROR_HEIGHTMAP_TOO_LARGE :{WHITE} イメージが大きすぎます。 +STR_ERROR_HEIGHTMAP_TOO_LARGE :{WHITE}イメージが大きすぎます STR_WARNING_HEIGHTMAP_SCALE_CAPTION :{WHITE}リサイズ警告 STR_WARNING_HEIGHTMAP_SCALE_MESSAGE :{YELLOW}ソース地図をリサイズしすぎることはお勧めしません。地形作成を続けてもよろしいですか? # Soundset messages -STR_WARNING_FALLBACK_SOUNDSET :{WHITE}音セットは代替として使える1つの音セットしか見つかりませんでした。音セットは「オンラインの項目を確認」からダウンロード可能です。 +STR_WARNING_FALLBACK_SOUNDSET :{WHITE}フェイルバック用の効果音セットしか見つかりませんでした。効果音セットは「オンラインコンテンツを確認」からダウンロード可能です # Screenshot related messages +STR_WARNING_SCREENSHOT_SIZE_CAPTION :{WHITE}巨大なスクリーンショット +STR_WARNING_SCREENSHOT_SIZE_MESSAGE :{YELLOW}このスクリーンショットのサイズは {COMMA}×{COMMA} ピクセルになります。このまま続行してもよろしいですか? STR_MESSAGE_SCREENSHOT_SUCCESSFULLY :{WHITE}スクリーンショットを'{STRING}'に正常に保存しました -STR_ERROR_SCREENSHOT_FAILED :{WHITE}スクリーンショットの保存に失敗しました! +STR_ERROR_SCREENSHOT_FAILED :{WHITE}スクリーンショットの保存に失敗しました! # Error message titles STR_ERROR_MESSAGE_CAPTION :{YELLOW}メッセージ STR_ERROR_MESSAGE_CAPTION_OTHER_COMPANY :{YELLOW}{STRING}からのメッセージ # Generic construction errors -STR_ERROR_OFF_EDGE_OF_MAP :{WHITE}地図の端を越えています -STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP :{WHITE}地図の端に近すぎます -STR_ERROR_NOT_ENOUGH_CASH_REQUIRES_CURRENCY :{WHITE}資金が足りません。{CURRENCY_LONG}がかかります +STR_ERROR_OFF_EDGE_OF_MAP :{WHITE}マップからはみ出します +STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP :{WHITE}}マップ端に近すぎます +STR_ERROR_NOT_ENOUGH_CASH_REQUIRES_CURRENCY :{WHITE}資金が足りません。{CURRENCY_LONG}必要です STR_ERROR_FLAT_LAND_REQUIRED :{WHITE}平地が必要です STR_ERROR_LAND_SLOPED_IN_WRONG_DIRECTION :{WHITE}土地の傾きが違います -STR_ERROR_CAN_T_DO_THIS :{WHITE}これはできません... -STR_ERROR_BUILDING_MUST_BE_DEMOLISHED :{WHITE}まずは建物を破壊しなければなりません -STR_ERROR_CAN_T_CLEAR_THIS_AREA :{WHITE}この土地を破壊できません -STR_ERROR_SITE_UNSUITABLE :{WHITE}... 地域が不適当です -STR_ERROR_ALREADY_BUILT :{WHITE}... すでに建設されました -STR_ERROR_OWNED_BY :{WHITE}... 所有者は {STRING} -STR_ERROR_AREA_IS_OWNED_BY_ANOTHER :{WHITE}... この土地は他の会社に所有されています -STR_ERROR_TERRAFORM_LIMIT_REACHED :{WHITE}風景の境界です。 -STR_ERROR_CLEARING_LIMIT_REACHED :{WHITE}タイルの境界を除去します。 -STR_ERROR_NAME_MUST_BE_UNIQUE :{WHITE}名前は唯一でなければなりません +STR_ERROR_CAN_T_DO_THIS :{WHITE}それをすることはできません +STR_ERROR_BUILDING_MUST_BE_DEMOLISHED :{WHITE}先に建物を撤去しなければなりません +STR_ERROR_CAN_T_CLEAR_THIS_AREA :{WHITE}この範囲を撤去することは出来ません +STR_ERROR_SITE_UNSUITABLE :{WHITE}地形が不適当です +STR_ERROR_ALREADY_BUILT :{WHITE}既に設置されています +STR_ERROR_OWNED_BY :{WHITE}{STRING}の所有設備です +STR_ERROR_AREA_IS_OWNED_BY_ANOTHER :{WHITE}この土地は他の会社に所有されています +STR_ERROR_TERRAFORM_LIMIT_REACHED :{WHITE}一度に出来る整地量を越えています +STR_ERROR_CLEARING_LIMIT_REACHED :{WHITE}一度に出来る撤去量を越えています +STR_ERROR_TREE_PLANT_LIMIT_REACHED :{WHITE}木の本数が多すぎます +STR_ERROR_NAME_MUST_BE_UNIQUE :{WHITE}名前は重複してはいけません STR_ERROR_GENERIC_OBJECT_IN_THE_WAY :{WHITE}{1:STRING}があります -STR_ERROR_NOT_ALLOWED_WHILE_PAUSED :{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_AIRPORT :{WHITE}{TOWN}町議会は町内に他の空港の建設を許可しません -STR_ERROR_LOCAL_AUTHORITY_REFUSES_NOISE :{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}あなたの行った贈収賄が地元当局に露見しました! # Levelling errors -STR_ERROR_CAN_T_RAISE_LAND_HERE :{WHITE}ここの土地を上げられません -STR_ERROR_CAN_T_LOWER_LAND_HERE :{WHITE}ここの土地を下げられません -STR_ERROR_CAN_T_LEVEL_LAND_HERE :{WHITE}ここの土地を平坦にできません... -STR_ERROR_EXCAVATION_WOULD_DAMAGE :{WHITE}掘削するとトンネルが破壊されます +STR_ERROR_CAN_T_RAISE_LAND_HERE :{WHITE}この土地を上げられません +STR_ERROR_CAN_T_LOWER_LAND_HERE :{WHITE}この土地を下げられません +STR_ERROR_CAN_T_LEVEL_LAND_HERE :{WHITE}この土地を平坦にできません... +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_ALREADY_LEVELLED :{WHITE}すでに平坦になっています # Company related errors -STR_ERROR_CAN_T_CHANGE_COMPANY_NAME :{WHITE}会社名が変更できません... -STR_ERROR_CAN_T_CHANGE_PRESIDENT :{WHITE}社長の名前を変更できません... - -STR_ERROR_MAXIMUM_PERMITTED_LOAN :{WHITE}... 最高借入金は{CURRENCY_LONG}です。 -STR_ERROR_CAN_T_BORROW_ANY_MORE_MONEY :{WHITE}より借入できません... -STR_ERROR_LOAN_ALREADY_REPAYED :{WHITE}... 残額がありません -STR_ERROR_CURRENCY_REQUIRED :{WHITE}...{CURRENCY_LONG}が必要 -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_PROTECTED :{WHITE}この会社は株式取引出来る年限に達していません... +STR_ERROR_CAN_T_CHANGE_COMPANY_NAME :{WHITE}会社名を変更できません +STR_ERROR_CAN_T_CHANGE_PRESIDENT :{WHITE}社長名を変更できません + +STR_ERROR_MAXIMUM_PERMITTED_LOAN :{WHITE}最高借入金は{CURRENCY_LONG}です +STR_ERROR_CAN_T_BORROW_ANY_MORE_MONEY :{WHITE}これ以上は借入できません +STR_ERROR_LOAN_ALREADY_REPAYED :{WHITE}全額返済済みです +STR_ERROR_CURRENCY_REQUIRED :{WHITE}{CURRENCY_LONG}が必要です +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_PROTECTED :{WHITE}この会社は開設から6年が経過していません # Town related errors -STR_ERROR_CAN_T_GENERATE_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}... 地図の端に近すぎます -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_ROAD_WORKS_IN_PROGRESS :{WHITE}道路工事中 -STR_ERROR_TOWN_CAN_T_DELETE :{WHITE}町を削除できません...{}この町を参照する駅または車庫か町に所有されたタイルが除去できません -STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}... 街の中心部に像を建てるのに適した場所がありません。 +STR_ERROR_CAN_T_GENERATE_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}マップ端に近すぎます +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_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_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_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_LOW_AREAS :{WHITE}... 低高度領域にしか建設できません -STR_ERROR_CAN_ONLY_BE_POSITIONED :{WHITE}... 地図の端のみに設置できます -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_TOO_MANY_INDUSTRIES :{WHITE}産業の制限軒数を超えています +STR_ERROR_CAN_T_GENERATE_INDUSTRIES :{WHITE}産業拠点を建設できません +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_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_NEAR_TOWN_CENTER :{WHITE}街の中心部にのみ建設できます +STR_ERROR_CAN_ONLY_BE_BUILT_IN_LOW_AREAS :{WHITE}高度が低い地域にのみ建設できます +STR_ERROR_CAN_ONLY_BE_POSITIONED :{WHITE}マップ端部のみに設置できます +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_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_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}ここには乗客用電停を建設できません +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_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_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}1個以上の既存の通過点と隣接しています。 -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_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_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_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_CAN_T_MOVE_VEHICLE :{WHITE}この車輌を移動できません... -STR_ERROR_REAR_ENGINE_FOLLOW_FRONT :{WHITE}ダブルヘッドの場合、後部の機関車は常に前部の機関車について行きます -STR_ERROR_UNABLE_TO_FIND_ROUTE_TO :{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_AUTOREPLACE_NOTHING_TO_DO :{WHITE}自動交換/更新の規則は適用されませんでした。 -STR_ERROR_AUTOREPLACE_MONEY_LIMIT :(資金の限度) +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_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_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_SIGNAL_CAN_T_CONVERT_SIGNALS_HERE :{WHITE}ここの信号を交換できません... -STR_ERROR_THERE_IS_NO_RAILROAD_TRACK :{WHITE}... 線路がありません -STR_ERROR_THERE_ARE_NO_SIGNALS :{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_SIGNAL_CAN_T_CONVERT_SIGNALS_HERE :{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_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_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}先に運河を破壊しなければなりません -STR_ERROR_CAN_T_BUILD_AQUEDUCT_HERE :{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_RIVER :{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_WRONG_TERRAIN_FOR_TREE_TYPE :{WHITE}... 木の種類に合わない地形です -STR_ERROR_CAN_T_PLANT_TREE_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_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}先に橋を破壊しなければなりません -STR_ERROR_CAN_T_START_AND_END_ON :{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}橋がマップから出ますから建てられません。 +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_UNABLE_TO_EXCAVATE_LAND :{WHITE}向こうの土地を掘削できません -STR_ERROR_TUNNEL_TOO_LONG :{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}他のトンネルが既にあります +STR_ERROR_TUNNEL_THROUGH_MAP_BORDER :{WHITE}トンネル出口がマップ外です +STR_ERROR_UNABLE_TO_EXCAVATE_LAND :{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}... すでに所有しています! +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}グループに共有車両を追加できません... +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_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}鉄道車両が購入できません... -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_RENAME_TRAIN_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_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_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}列車を購入できません +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_RENAME_TRAIN_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_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}利用可能な輸送機器がありません +STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}{DATE_SHORT}年以降に開始するか、これより早い時期に輸送機器が開発されるNewGRFを利用して下さい # 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_TRAIN_PASS_SIGNAL :{WHITE}赤信号を無視させることができません +STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}列車を反転できません +STR_ERROR_TRAIN_START_NO_POWER :{WHITE}列車に動力車がありません -STR_ERROR_CAN_T_MAKE_ROAD_VEHICLE_TURN :{WHITE}道路車両を転回できません ... +STR_ERROR_CAN_T_MAKE_ROAD_VEHICLE_TURN :{WHITE}車両を転回できません STR_ERROR_AIRCRAFT_IS_IN_FLIGHT :{WHITE}飛行中です # Order related errors STR_ERROR_NO_MORE_SPACE_FOR_ORDERS :{WHITE}これ以上の指令を追加できません 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} 飛行機の距離が足りません +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}この車両はこの駅/バス停で停車しません。 +STR_ERROR_CAN_T_TIMETABLE_VEHICLE :{WHITE}この輸送機器にダイヤを設定できません +STR_ERROR_TIMETABLE_ONLY_WAIT_AT_STATIONS :{WHITE}輸送機器は停留施設でのみ待機できます +STR_ERROR_TIMETABLE_NOT_STOPPING_HERE :{WHITE}この輸送機器はこの停留施設には停まれません # Sign related errors -STR_ERROR_TOO_MANY_SIGNS :{WHITE}... 標示が多すぎます -STR_ERROR_CAN_T_PLACE_SIGN_HERE :{WHITE}ここに標示を設置できません... -STR_ERROR_CAN_T_CHANGE_SIGN_NAME :{WHITE}標示のテキストを変更できません... -STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}標示を削除できません +STR_ERROR_TOO_MANY_SIGNS :{WHITE}標識が多すぎます +STR_ERROR_CAN_T_PLACE_SIGN_HERE :{WHITE}ここに標識を設置できません +STR_ERROR_CAN_T_CHANGE_SIGN_NAME :{WHITE}標識のテキストを変更できません +STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}標識を削除できません # Translatable comment for OpenTTD's desktop shortcut 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 :空の音楽パック + ##id 0x2000 # Town building names STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1 :超高層ビル @@ -3760,17 +4432,17 @@ STR_TOWN_BUILDING_NAME_FOUNTAIN_1 :噴水 STR_TOWN_BUILDING_NAME_PARK_1 :公園 STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_2 :オフィスビル STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_1 :雑居ビル -STR_TOWN_BUILDING_NAME_MODERN_OFFICE_BUILDING_1 :近代のオフィスビル +STR_TOWN_BUILDING_NAME_MODERN_OFFICE_BUILDING_1 :近代的オフィスビル STR_TOWN_BUILDING_NAME_WAREHOUSE_1 :倉庫 STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_3 :オフィスビル STR_TOWN_BUILDING_NAME_STADIUM_1 :スタジアム -STR_TOWN_BUILDING_NAME_OLD_HOUSES_1 :老舗 +STR_TOWN_BUILDING_NAME_OLD_HOUSES_1 :旧家 STR_TOWN_BUILDING_NAME_COTTAGES_1 :小屋 STR_TOWN_BUILDING_NAME_HOUSES_1 :家屋 STR_TOWN_BUILDING_NAME_FLATS_1 :アパート STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_2 :大型オフィスビル -STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_2 :雑居 -STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_3 :雑居 +STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_2 :雑居ビル +STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_3 :雑居ビル STR_TOWN_BUILDING_NAME_THEATER_1 :劇場 STR_TOWN_BUILDING_NAME_STADIUM_2 :スタジアム STR_TOWN_BUILDING_NAME_OFFICES_1 :オフィスビル @@ -3780,19 +4452,19 @@ STR_TOWN_BUILDING_NAME_SHOPPING_MALL_1 :商店街 STR_TOWN_BUILDING_NAME_IGLOO_1 :イグルー STR_TOWN_BUILDING_NAME_TEPEES_1 :テント STR_TOWN_BUILDING_NAME_TEAPOT_HOUSE_1 :茶瓶小屋 -STR_TOWN_BUILDING_NAME_PIGGY_BANK_1 :ブタ型貯金箱 +STR_TOWN_BUILDING_NAME_PIGGY_BANK_1 :ブタの貯金箱 ##id 0x4800 # industry names STR_INDUSTRY_NAME_COAL_MINE :炭鉱 STR_INDUSTRY_NAME_POWER_STATION :発電所 -STR_INDUSTRY_NAME_SAWMILL :製材工場 +STR_INDUSTRY_NAME_SAWMILL :製材所 STR_INDUSTRY_NAME_FOREST :森林 STR_INDUSTRY_NAME_OIL_REFINERY :石油精製所 -STR_INDUSTRY_NAME_OIL_RIG :石油掘削装置 +STR_INDUSTRY_NAME_OIL_RIG :海上油田 STR_INDUSTRY_NAME_FACTORY :工場 STR_INDUSTRY_NAME_PRINTING_WORKS :印刷所 -STR_INDUSTRY_NAME_STEEL_MILL :製鋼所 +STR_INDUSTRY_NAME_STEEL_MILL :製鉄所 STR_INDUSTRY_NAME_FARM :農場 STR_INDUSTRY_NAME_COPPER_ORE_MINE :銅鉱山 STR_INDUSTRY_NAME_OIL_WELLS :油田 @@ -3805,17 +4477,17 @@ STR_INDUSTRY_NAME_DIAMOND_MINE :ダイヤモン STR_INDUSTRY_NAME_IRON_ORE_MINE :鉄鉱山 STR_INDUSTRY_NAME_FRUIT_PLANTATION :果物農園 STR_INDUSTRY_NAME_RUBBER_PLANTATION :ゴム園 -STR_INDUSTRY_NAME_WATER_SUPPLY :給水設備 +STR_INDUSTRY_NAME_WATER_SUPPLY :水源施設 STR_INDUSTRY_NAME_WATER_TOWER :給水塔 STR_INDUSTRY_NAME_FACTORY_2 :工場 STR_INDUSTRY_NAME_FARM_2 :農場 STR_INDUSTRY_NAME_LUMBER_MILL :製材所 STR_INDUSTRY_NAME_COTTON_CANDY_FOREST :綿菓子の森 -STR_INDUSTRY_NAME_CANDY_FACTORY :菓子工場 +STR_INDUSTRY_NAME_CANDY_FACTORY :お菓子工場 STR_INDUSTRY_NAME_BATTERY_FARM :電池農園 -STR_INDUSTRY_NAME_COLA_WELLS :コーラ井 -STR_INDUSTRY_NAME_TOY_SHOP :玩具店 -STR_INDUSTRY_NAME_TOY_FACTORY :玩具工場 +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_BUBBLE_GENERATOR :発泡所 @@ -3826,18 +4498,18 @@ STR_INDUSTRY_NAME_SUGAR_MINE :砂糖鉱山 ############ These strings may never get a new id, or savegames will break! ##id 0x6000 STR_SV_EMPTY : -STR_SV_UNNAMED :名前無し +STR_SV_UNNAMED :[未命名] 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} +STR_SV_AIRCRAFT_NAME :航空機{COMMA} STR_SV_STNAME :{STRING} STR_SV_STNAME_NORTH :北{STRING} STR_SV_STNAME_SOUTH :南{STRING} STR_SV_STNAME_EAST :東{STRING} STR_SV_STNAME_WEST :西{STRING} -STR_SV_STNAME_CENTRAL :{STRING}町 +STR_SV_STNAME_CENTRAL :{STRING}中央 STR_SV_STNAME_TRANSFER :{STRING}前 STR_SV_STNAME_HALT :{STRING}停車場 STR_SV_STNAME_VALLEY :{STRING}谷 @@ -3850,7 +4522,7 @@ STR_SV_STNAME_OILFIELD :{STRING}油田 STR_SV_STNAME_MINES :{STRING}山 STR_SV_STNAME_DOCKS :{STRING}埠頭 STR_SV_STNAME_BUOY :{STRING} -STR_SV_STNAME_WAYPOINT :{STRING} +STR_SV_STNAME_WAYPOINT :{STRING}中継駅 ##id 0x6020 STR_SV_STNAME_ANNEXE :新{STRING} STR_SV_STNAME_SIDINGS :{STRING}里 @@ -3864,262 +4536,262 @@ STR_SV_STNAME_FALLBACK :{STRING} 駅 {N ##id 0x8000 # Vehicle names -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Kirby Paul社タンク機関車(蒸気動) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_250_DIESEL :MJS社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_PLODDYPHUT_DIESEL :ポンポン社ディーゼル -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_DIESEL :パワーノート社ディーゼル -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_WILLS_2_8_0_STEAM :Wills社2-8-0(蒸気動) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CHANEY_JUBILEE_STEAM :Chaney社「記念祭」(蒸気動) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_GINZU_A4_STEAM :Ginzu社A4系(蒸気動) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_8P_STEAM :SH社8P系(蒸気動) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MANLEY_MOREL_DMU_DIESEL :Manley-Morel社気動車(ディーゼル動) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_DASH_DIESEL :「ダッシュ」(ディーゼル動) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_HENDRY_25_DIESEL :SH社25系「Hendry」(ディーゼル動) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_UU_37_DIESEL :UU社37系(ディーゼル動) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_FLOSS_47_DIESEL :Floss社47系(ディーゼル動) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CS_4000_DIESEL :CS社4000系(ディーゼル動) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CS_2400_DIESEL :CS社2400系(ディーゼル動) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CENTENNIAL_DIESEL :「百年祭」(ディーゼル動) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KELLING_3100_DIESEL :Kelling社3100系(ディーゼル動) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_TURNER_TURBO_DIESEL :Turner社「ターボ」(ディーゼル動) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_1000_DIESEL :MJS社1000系(ディーゼル動) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_125_DIESEL :SH社125系(ディーゼル動) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_30_ELECTRIC :SH社30系(電動) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_40_ELECTRIC :SH社40系(電動) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_T_I_M_ELECTRIC :「T.I.M.」(電動) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_ASIASTAR_ELECTRIC :「アジアスター」(電動) +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 :ポンポン社 シューシュー +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_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 :Wills 2-8-0 (蒸気) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CHANEY_JUBILEE_STEAM :Chaney Jubilee (蒸気) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_GINZU_A4_STEAM :Ginzu A4 (蒸気) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_8P_STEAM :SH 8P (蒸気) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MANLEY_MOREL_DMU_DIESEL :Manley-Morel DMU (ディーゼル) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_DASH_DIESEL :Dash (ディーゼル) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_HENDRY_25_DIESEL :SH/Hendry 25 (ディーゼル) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_UU_37_DIESEL :UU 37 (ディーゼル) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_FLOSS_47_DIESEL :Floss 47 (ディーゼル) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CS_4000_DIESEL :CS 4000 (ディーゼル) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CS_2400_DIESEL :CS 2400 (ディーゼル) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CENTENNIAL_DIESEL :Centennial (ディーゼル) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KELLING_3100_DIESEL :Kelling 3100 (ディーゼル) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_TURNER_TURBO_DIESEL :Turner Turbo (ディーゼル) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_1000_DIESEL :MJS 1000 (ディーゼル) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_125_DIESEL :SH 125 (ディーゼル) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_30_ELECTRIC :SH 30 (電気) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_40_ELECTRIC :SH 40 (電気) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_T_I_M_ELECTRIC :T.I.M. (電気) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_ASIASTAR_ELECTRIC :AsiaStar (電気) 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_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_GRAIN_HOPPER :穀物ホッパー -STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_WOOD_TRUCK :木材貨車 -STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_IRON_ORE_HOPPER :鉄鉱ホッパー -STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_STEEL_TRUCK :鋼鉄貨車 +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 :鉄鉱ホッパー車 +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_STEEL_TRUCK :鉄鋼車 STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_ARMORED_VAN :装甲車 -STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FOOD_VAN :食品貨車 +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FOOD_VAN :食品車 STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PAPER_TRUCK :紙貨車 -STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COPPER_ORE_HOPPER :銅鉱ホッパー +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COPPER_ORE_HOPPER :銅鉱ホッパー車 STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_WATER_TANKER :水タンク車 -STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FRUIT_TRUCK :果物貨車 +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_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_BUBBLE_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 :電池トラック -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 :「ミレニアム Z1」(電動) -STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_WIZZOWOW_Z99 :ヒューピュー社Z99系 +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_PLASTIC_TRUCK :プラスチック貨車 +STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_X2001_ELECTRIC :X2001 (電気) +STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_MILLENNIUM_Z1_ELECTRIC :Millennium Z1 (電気) +STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_WIZZOWOW_Z99 :ピューピュー社 Z99 STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PASSENGER_CAR :客車 STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_MAIL_VAN :郵便車 -STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COAL_CAR :石炭貨車 +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COAL_CAR :石炭車 STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_OIL_TANKER :石油タンク車 STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_LIVESTOCK_VAN :家畜車 -STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_GOODS_VAN :商品貨車 -STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_GRAIN_HOPPER :穀物ホッパー -STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_WOOD_TRUCK :木材貨車 -STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_IRON_ORE_HOPPER :鉄鉱ホッパー -STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_STEEL_TRUCK :鋼鉄貨車 +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_GOODS_VAN :商品車 +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_GRAIN_HOPPER :穀物ホッパー車 +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_WOOD_TRUCK :木材車 +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_IRON_ORE_HOPPER :鉄鉱ホッパー車 +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_STEEL_TRUCK :鉄鋼車 STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_ARMORED_VAN :装甲車 -STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FOOD_VAN :食品貨車 +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FOOD_VAN :食品車 STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PAPER_TRUCK :紙貨車 -STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COPPER_ORE_HOPPER :銅鉱ホッパー +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COPPER_ORE_HOPPER :銅鉱ホッパー車 STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_WATER_TANKER :水タンク車 -STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FRUIT_TRUCK :果物貨車 +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_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_BUBBLE_VAN :泡貨車 STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COLA_TANKER :コーラタンク車 -STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_CANDY_VAN :菓子トラック -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 :浮一系「リバイアサン」(電動) -STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV2_CYCLOPS_ELECTRIC :浮二系「シクロプス」(電動) -STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV3_PEGASUS_ELECTRIC :浮三系「ペガサス」(電動) -STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV4_CHIMAERA_ELECTRIC :浮四系「キメラ」(電動) -STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_WIZZOWOW_ROCKETEER :ヒューピュー社「ロケット」 +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_CANDY_VAN :菓子車 +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_WIZZOWOW_ROCKETEER :ピューピュー社 ロケッター STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PASSENGER_CAR :客車 STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_MAIL_VAN :郵便車 -STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COAL_CAR :石炭貨車 +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COAL_CAR :石炭車 STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_OIL_TANKER :石油タンク車 STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_LIVESTOCK_VAN :家畜車 -STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_GOODS_VAN :商品貨車 -STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_GRAIN_HOPPER :穀物ホッパー -STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_WOOD_TRUCK :木材貨車 -STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_IRON_ORE_HOPPER :鉄鉱ホッパー -STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_STEEL_TRUCK :鋼鉄貨車 +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_GOODS_VAN :商品車 +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_GRAIN_HOPPER :穀物ホッパー車 +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_WOOD_TRUCK :木材車 +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_IRON_ORE_HOPPER :鉄鉱ホッパー車 +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_STEEL_TRUCK :鉄鋼車 STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_ARMORED_VAN :装甲車 -STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FOOD_VAN :食品貨車 +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FOOD_VAN :食品車 STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PAPER_TRUCK :紙貨車 -STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COPPER_ORE_HOPPER :銅鉱ホッパー +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COPPER_ORE_HOPPER :銅鉱ホッパー車 STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_WATER_TANKER :水タンク車 -STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FRUIT_TRUCK :果物貨車 +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_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_BUBBLE_VAN :泡貨車 STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COLA_TANKER :コーラタンク車 -STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_CANDY_VAN :菓子トラック -STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_TOY_VAN :玩具トラック -STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_BATTERY_TRUCK :電池トラック -STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FIZZY_DRINK_TRUCK :炭酸飲料トラック -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社 マークⅡスーパーバス -STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKI_BUS :ブーブー社マークⅠバス -STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKII_BUS :ブーブー社マークⅡバス -STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKIII_BUS :ブーブー社マークⅢバス -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 :マイティムーヴァー社郵便車 -STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_MAIL_TRUCK :パワーノート社郵便車 -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_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 :マイティムーヴァー社砂糖トラック -STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_SUGAR_TRUCK :パワーノート社砂糖トラック -STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_SUGAR_TRUCK :ヒューピュー社砂糖トラック -STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_COLA_TRUCK :マイティムーヴァー社コーラタンク車 -STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_COLA_TRUCK :パワーノート社コーラタンク車 -STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_COLA_TRUCK :ヒューピュー社コーラタンク車 -STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_COTTON_CANDY :マイティムーヴァー社綿菓子トラック -STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_COTTON_CANDY :パワーノート社綿菓子トラック -STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_COTTON_CANDY_TRUCK :ヒューピュー社綿菓子トラック -STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_TOFFEE_TRUCK :マイティムーヴァー社タフィートラック -STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_TOFFEE_TRUCK :パワーノート社タフィートラック -STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_TOFFEE_TRUCK :ヒューピュー社タフィートラック -STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_TOY_VAN :マイティムーヴァー社玩具トラック -STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_TOY_VAN :パワーノート社玩具トラック -STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_TOY_VAN :ヒューピュー社玩具トラック -STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_CANDY_TRUCK :巨大ムーブ社菓子トラック -STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_CANDY_TRUCK :パワーノート社菓子トラック -STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_CANDY_TRUCK :ヒューピュー社菓子トラック -STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_BATTERY_TRUCK :マイティムーヴァー社電池トラック -STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_BATTERY_TRUCK :パワーノート社電池トラック -STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_BATTERY_TRUCK :ヒューピュー社電池トラック -STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_FIZZY_DRINK :マイティムーヴァー社炭酸飲料トラック -STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_FIZZY_DRINK :パワーノート社炭酸飲料トラック -STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_FIZZY_DRINK_TRUCK :ヒューピュー社炭酸飲料トラック -STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_PLASTIC_TRUCK :マイティムーヴァー社プラスチックトラック -STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_PLASTIC_TRUCK :パワーノート社プラスチックトラック -STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_PLASTIC_TRUCK :ヒューピュー社プラスチックトラック -STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_BUBBLE_TRUCK :マイティムーヴァー社泡トラック -STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_BUBBLE_TRUCK :パワーノート社泡トラック -STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_BUBBLE_TRUCK :ヒューピュー社泡トラック -STR_VEHICLE_NAME_SHIP_MPS_OIL_TANKER :MPS社油槽船 -STR_VEHICLE_NAME_SHIP_CS_INC_OIL_TANKER :CS社油槽船 -STR_VEHICLE_NAME_SHIP_MPS_PASSENGER_FERRY :MPS社客船 -STR_VEHICLE_NAME_SHIP_FFP_PASSENGER_FERRY :FFP社客船 -STR_VEHICLE_NAME_SHIP_BAKEWELL_300_HOVERCRAFT :Bakewell社300系ホバークラフト -STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :シュッシュッ社客船 -STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :ビクビク社客船 -STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :Yate社貨物船 -STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :Bakewell社貨物船 -STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :巨大ムーブ社貨物船 -STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :パワーノート社貨物船 -STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :Sampson社U52型 -STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :Coleman社「カウント」 -STR_VEHICLE_NAME_AIRCRAFT_FFP_DART :FFP社「ダート」 -STR_VEHICLE_NAME_AIRCRAFT_YATE_HAUGAN :コンコルド -STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_COTSWALD_LB_3 :Bakewell社「Cotswold」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」LB-80型 -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 エアロスペース社 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社「ギャラクシー」 -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 エアロスペース社YAe46型 -STR_VEHICLE_NAME_AIRCRAFT_DINGER_100 :Dinger社100型 -STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A34_1000 :Airtaxi社A34-100型 -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社ハイパーダート2型 -STR_VEHICLE_NAME_AIRCRAFT_DINGER_200 :Dinger社200型 -STR_VEHICLE_NAME_AIRCRAFT_DINGER_1000 :Dinger社1000型 -STR_VEHICLE_NAME_AIRCRAFT_PLODDYPHUT_100 :ポンポン社100型 -STR_VEHICLE_NAME_AIRCRAFT_PLODDYPHUT_500 :ポンポン社500型 -STR_VEHICLE_NAME_AIRCRAFT_FLASHBANG_X1 :雷電社X1型 -STR_VEHICLE_NAME_AIRCRAFT_JUGGERPLANE_M1 :巨大エーロスペース社M1型 -STR_VEHICLE_NAME_AIRCRAFT_FLASHBANG_WIZZER :雷電社「ヒュー」 -STR_VEHICLE_NAME_AIRCRAFT_TRICARIO_HELICOPTER :Tricario社ヘリコプター -STR_VEHICLE_NAME_AIRCRAFT_GURU_X2_HELICOPTER :Guru社X2型ヘリコプター -STR_VEHICLE_NAME_AIRCRAFT_POWERNAUT_HELICOPTER :パワーノート社ヘリコプター +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_CANDY_VAN :菓子車 +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_TOY_VAN :玩具車 +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_BATTERY_TRUCK :電池車 +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FIZZY_DRINK_TRUCK :炭酸飲料車 +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_PLODDYPHUT_MKI_BUS :ポンポン社 MkI バス +STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKII_BUS :ポンポン社 MkII バス +STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKIII_BUS :ポンポン社 MkIII バス +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 :マイティムーヴァー社 郵便車 +STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_MAIL_TRUCK :パワーノート社 郵便車 +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_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 :マイティムーヴァー社 砂糖トラック +STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_SUGAR_TRUCK :パワーノート社 砂糖トラック +STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_SUGAR_TRUCK :ピューピュー社 砂糖トラック +STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_COLA_TRUCK :マイティムーヴァー社 コーラタンク車 +STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_COLA_TRUCK :パワーノート社 コーラタンク車 +STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_COLA_TRUCK :ピューピュー社 コーラタンク車 +STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_COTTON_CANDY :マイティムーヴァー社 綿菓子トラック +STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_COTTON_CANDY :パワーノート社 綿菓子トラック +STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_COTTON_CANDY_TRUCK :ピューピュー社 綿菓子トラック +STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_TOFFEE_TRUCK :マイティムーヴァー社 タフィートラック +STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_TOFFEE_TRUCK :パワーノート社 タフィートラック +STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_TOFFEE_TRUCK :ピューピュー社 タフィートラック +STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_TOY_VAN :マイティムーヴァー社 玩具トラック +STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_TOY_VAN :パワーノート社 玩具トラック +STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_TOY_VAN :ヒューピュー社 玩具トラック +STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_CANDY_TRUCK :マイティムーヴァー社 菓子トラック +STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_CANDY_TRUCK :パワーノート社 菓子トラック +STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_CANDY_TRUCK :ピューピュー社 菓子トラック +STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_BATTERY_TRUCK :マイティムーヴァー社 電池トラック +STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_BATTERY_TRUCK :パワーノート社 電池トラック +STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_BATTERY_TRUCK :ピューピュー社 電池トラック +STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_FIZZY_DRINK :マイティムーヴァー社 炭酸飲料トラック +STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_FIZZY_DRINK :パワーノート社 炭酸飲料トラック +STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_FIZZY_DRINK_TRUCK :ピューピュー社 炭酸飲料トラック +STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_PLASTIC_TRUCK :マイティムーヴァー社 プラスチックトラック +STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_PLASTIC_TRUCK :パワーノート社 プラスチックトラック +STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_PLASTIC_TRUCK :ピューピュー社 プラスチックトラック +STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_BUBBLE_TRUCK :マイティムーヴァー社 泡トラック +STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_BUBBLE_TRUCK :パワーノート社 泡トラック +STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_BUBBLE_TRUCK :ピューピュー社 泡トラック +STR_VEHICLE_NAME_SHIP_MPS_OIL_TANKER :MPS タンカー +STR_VEHICLE_NAME_SHIP_CS_INC_OIL_TANKER :CS-Inc. タンカー +STR_VEHICLE_NAME_SHIP_MPS_PASSENGER_FERRY :MPS フェリー +STR_VEHICLE_NAME_SHIP_FFP_PASSENGER_FERRY :FFP フェリー +STR_VEHICLE_NAME_SHIP_BAKEWELL_300_HOVERCRAFT :Bakewell 300 ホバークラフト +STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :シュッシュッ社 フェリー +STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :ビクビク社 フェリー +STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :Yate 貨物船 +STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :Bakewell 貨物船 +STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :マイティムーヴァー社 貨物船 +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 +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 :ポンポン社 100 +STR_VEHICLE_NAME_AIRCRAFT_PLODDYPHUT_500 :ポンポン社 500 +STR_VEHICLE_NAME_AIRCRAFT_FLASHBANG_X1 :雷電社 X1 +STR_VEHICLE_NAME_AIRCRAFT_JUGGERPLANE_M1 :巨大機社 M1 +STR_VEHICLE_NAME_AIRCRAFT_FLASHBANG_WIZZER :雷電社 ピュー +STR_VEHICLE_NAME_AIRCRAFT_TRICARIO_HELICOPTER :Tricario ヘリコプター +STR_VEHICLE_NAME_AIRCRAFT_GURU_X2_HELICOPTER :Guru X2 ヘリコプター +STR_VEHICLE_NAME_AIRCRAFT_POWERNAUT_HELICOPTER :パワーノート社 ヘリコプター ##id 0x8800 # Formatting of some strings @@ -4130,29 +4802,29 @@ STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRI STR_FORMAT_BUOY_NAME :{TOWN} ブイ STR_FORMAT_BUOY_NAME_SERIAL :{TOWN} 第{COMMA}ブイ -STR_FORMAT_COMPANY_NUM :(会社{COMMA}) +STR_FORMAT_COMPANY_NUM :(会社{COMMA}) STR_FORMAT_GROUP_NAME :グループ {COMMA} STR_FORMAT_INDUSTRY_NAME :{TOWN}{STRING} -STR_FORMAT_WAYPOINT_NAME :{TOWN}の通過点 -STR_FORMAT_WAYPOINT_NAME_SERIAL :{TOWN}の通過点 #{COMMA} +STR_FORMAT_WAYPOINT_NAME :{TOWN}中継駅 +STR_FORMAT_WAYPOINT_NAME_SERIAL :第{1:COMMA} {0:TOWN}中継駅 STR_FORMAT_DEPOT_NAME_TRAIN :{TOWN} 列車庫 STR_FORMAT_DEPOT_NAME_TRAIN_SERIAL :{TOWN} 第{COMMA}列車庫 -STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE :{TOWN} 自動車車庫 -STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE_SERIAL :{TOWN} 第{COMMA}自動車車庫 +STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE :{TOWN} 車庫 +STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE_SERIAL :{TOWN} 第{COMMA}車庫 STR_FORMAT_DEPOT_NAME_SHIP :{TOWN} 造船所 STR_FORMAT_DEPOT_NAME_SHIP_SERIAL :{TOWN} 第{COMMA}造船所 STR_FORMAT_DEPOT_NAME_AIRCRAFT :{STATION} 格納庫 -STR_UNKNOWN_STATION :不明な駅 -STR_DEFAULT_SIGN_NAME :標示 -STR_COMPANY_SOMEONE :誰かは +STR_UNKNOWN_STATION :不明な停留施設 +STR_DEFAULT_SIGN_NAME :標識 +STR_COMPANY_SOMEONE :誰か STR_SAVEGAME_NAME_DEFAULT :{COMPANY}、{STRING} STR_SAVEGAME_NAME_SPECTATOR :観客、{1:STRING} # Viewport strings -STR_VIEWPORT_TOWN_POP :{WHITE}{TOWN} ({COMMA}) +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} @@ -4192,8 +4864,9 @@ 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_SPACE_STRING :{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} @@ -4217,9 +4890,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 6a45c9a4f..ddba95732 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,8 +55,8 @@ 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_BATTERIES :{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,8 +89,8 @@ 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_BATTERY :{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}탄산음료 @@ -123,8 +123,8 @@ STR_QUANTITY_SWEETS :사탕 {COMMA} 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_TOFFEE :토피 {WEIGHT_LONG} +STR_QUANTITY_BATTERIES :건전지 {COMMA}개 STR_QUANTITY_PLASTIC :플라스틱 {VOLUME_LONG} STR_QUANTITY_FIZZY_DRINKS :탄산음료 {COMMA}개 STR_QUANTITY_N_A :없음 @@ -159,18 +159,18 @@ STR_ABBREV_COLA :{TINY_FONT}콜 STR_ABBREV_CANDYFLOSS :{TINY_FONT}솜 STR_ABBREV_BUBBLES :{TINY_FONT}거 STR_ABBREV_TOFFEE :{TINY_FONT}태 -STR_ABBREV_BATTERIES :{TINY_FONT}배 +STR_ABBREV_BATTERIES :{TINY_FONT}건 STR_ABBREV_PLASTIC :{TINY_FONT}플 STR_ABBREV_FIZZY_DRINKS :{TINY_FONT}탄 STR_ABBREV_NONE :{TINY_FONT}X STR_ABBREV_ALL :{TINY_FONT}모두 # 'Mode' of transport for cargoes -STR_PASSENGERS :{G=m}{COMMA} 승객 +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_ITEMS :{G=m}{COMMA} 마리 STR_CRATES :{G=f}{COMMA} 상자 # Colours, do not shuffle @@ -200,21 +200,28 @@ STR_UNITS_POWER_IMPERIAL :{COMMA}마력 STR_UNITS_POWER_METRIC :{COMMA}마력 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} 톤 STR_UNITS_WEIGHT_LONG_METRIC :{COMMA}톤 STR_UNITS_WEIGHT_LONG_SI :{COMMA}kg +STR_UNITS_VOLUME_SHORT_IMPERIAL :{COMMA}갤런 STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}l STR_UNITS_VOLUME_SHORT_SI :{COMMA}m³ +STR_UNITS_VOLUME_LONG_IMPERIAL :{COMMA} 갤런 STR_UNITS_VOLUME_LONG_METRIC :{COMMA}리터 STR_UNITS_VOLUME_LONG_SI :{COMMA}m³ +STR_UNITS_FORCE_IMPERIAL :{COMMA} 파운드중 +STR_UNITS_FORCE_METRIC :{COMMA} kg중 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 @@ -222,8 +229,9 @@ STR_LIST_FILTER_TITLE :{BLACK}검색 STR_LIST_FILTER_OSKTITLE :{BLACK}검색할 문자를 입력하세요 STR_LIST_FILTER_TOOLTIP :{BLACK}검색할 키워드를 입력하세요 -STR_TOOLTIP_SORT_ORDER :{BLACK}정렬 방법을 선택하십시오 (내림차순/오름차순) -STR_TOOLTIP_SORT_CRITERIA :{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}위치 @@ -233,12 +241,13 @@ 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+클릭하면 그 상태를 기본으로 설정합니다. 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 키를 누른채로 사용하면 예상 가격을 볼 수 있습니다. # Query window STR_BUTTON_DEFAULT :{BLACK}기본값 @@ -257,7 +266,6 @@ STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}넓이: # These are used in buttons -STR_SORT_BY_CAPTION_POPULATION :{BLACK}인구 STR_SORT_BY_CAPTION_NAME :{BLACK}이름 STR_SORT_BY_CAPTION_DATE :{BLACK}날짜 # These are used in dropdowns @@ -278,18 +286,21 @@ STR_SORT_BY_LENGTH :길이 STR_SORT_BY_LIFE_TIME :남은 수명 STR_SORT_BY_TIMETABLE_DELAY :시간표 지연 STR_SORT_BY_FACILITY :역 종류 -STR_SORT_BY_WAITING :대기 화물량 +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 (기본 정렬) STR_SORT_BY_COST :가격 STR_SORT_BY_POWER :힘 -STR_SORT_BY_TRACTIVE_EFFORT :견인 효과 +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 :{G=f}유지비 +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,13 +313,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}철도 시설을 건설합니다. @@ -331,11 +344,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 :시나리오 저장 @@ -350,7 +363,7 @@ 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_SCRIPT_SETTINGS :인공지능/게임 스크립트 설정 STR_SETTINGS_MENU_NEWGRF_SETTINGS :NewGRF 설정 STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :투명 설정 STR_SETTINGS_MENU_TOWN_NAMES_DISPLAYED :도시 이름을 표시함 @@ -360,7 +373,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 @@ -372,19 +385,19 @@ STR_FILE_MENU_SEPARATOR : STR_FILE_MENU_EXIT :종료 ############ range ends here -############ range for map menu starts +# 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, yet the town directory is shown in the map menu in the scenario editor + +############ range for town menu starts STR_TOWN_MENU_TOWN_DIRECTORY :도시 목록 -############ end of the 'Display map' dropdown STR_TOWN_MENU_FOUND_TOWN :도시 건설 -############ end of the 'Town' dropdown +############ range ends here ############ range for subsidies menu starts STR_SUBSIDIES_MENU_SUBSIDIES :보조금 -STR_SUBSIDIES_MENU_GOAL :현재 목표 ############ range ends here ############ range for graph menu starts @@ -404,13 +417,13 @@ STR_GRAPH_MENU_HIGHSCORE :고득점 순 ############ range for industry menu starts STR_INDUSTRY_MENU_INDUSTRY_DIRECTORY :산업시설 목록 -STR_INDUSTRY_MENU_INDUSTRY_CHAIN :산업시설 연계 +STR_INDUSTRY_MENU_INDUSTRY_CHAIN :산업시설 연계도 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 @@ -447,7 +460,7 @@ STR_NEWS_MENU_MESSAGE_HISTORY_MENU :과거 메시 STR_ABOUT_MENU_LAND_BLOCK_INFO :지형 정보 STR_ABOUT_MENU_SEPARATOR : STR_ABOUT_MENU_TOGGLE_CONSOLE :콘솔 켜기/끄기 -STR_ABOUT_MENU_AI_DEBUG :AI / 게임 스크립트 디버그 +STR_ABOUT_MENU_AI_DEBUG :인공지능/게임 스크립트 디버그 STR_ABOUT_MENU_SCREENSHOT :스크린샷 찍기 STR_ABOUT_MENU_ZOOMIN_SCREENSHOT :스크린샷 찍기 (지금 보고 있는 영역) STR_ABOUT_MENU_DEFAULTZOOM_SCREENSHOT :스크린샷 찍기 (창을 제외한 게임 화면만) @@ -458,7 +471,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 @@ -474,22 +487,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 @@ -582,13 +613,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_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_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_MONEY_TOOLTIP :{BLACK}회사가 소지한 재정입니다. STR_PERFORMANCE_DETAIL_LOAN_TOOLTIP :{BLACK}회사가 대출해간 재정의 양입니다. STR_PERFORMANCE_DETAIL_TOTAL_TOOLTIP :{BLACK}위 항목들의 총 합계 점수입니다. @@ -651,10 +682,10 @@ STR_HIGHSCORE_PERFORMANCE_TITLE_CAPITALIST :{G=f}자본가 STR_HIGHSCORE_PERFORMANCE_TITLE_MAGNATE :{G=f}권력자 STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL :{G=m}거물 STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY :{G=m}금세기의 타이쿤! -STR_HIGHSCORE_NAME :{BIG_FONT}{PRESIDENT_NAME}, {COMPANY} +STR_HIGHSCORE_NAME :{PRESIDENT_NAME}, {COMPANY} STR_HIGHSCORE_STATS :{BIG_FONT}'{STRING}' ({COMMA}) -STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{BLACK}{COMPANY}가 '{STRING}'{G 0 "을" "를"} 달성했습니다! -STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{WHITE}{PRESIDENT_NAME}의 {COMPANY}이(가) 드디어 {STRING}을(를) 달성했습니다! +STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{BLACK}{COMPANY} 회사가 '{STRING}' 등급을 달성했습니다! +STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{WHITE}{1:COMPANY}의 {0:PRESIDENT_NAME}이(가) 드디어 '{2:STRING}' 등급을 달성했습니다! # Smallmap window STR_SMALLMAP_CAPTION :{WHITE}지도 - {STRING} @@ -662,25 +693,28 @@ 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_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}운송 경로 @@ -699,23 +733,26 @@ 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}눈 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}모두 사용 안함 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_SHOW_HEIGHT :{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}모든 회사의 재산을 지도에 표시합니다. +STR_SMALLMAP_TOOLTIP_DISABLE_ALL_CARGOS :{BLACK}화물 흐름을 게임 화면에 표시하지 않습니다. +STR_SMALLMAP_TOOLTIP_ENABLE_ALL_CARGOS :{BLACK}모든 화물의 흐름을 게임 화면에 표시합니다. # Status bar messages STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}마지막 메시지/뉴스 보기 @@ -741,13 +778,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} 근처에 착륙했습니다! @@ -757,7 +794,7 @@ STR_NEWS_DISASTER_FLOOD_VEHICLE :{BIG_FONT}{BLAC STR_NEWS_COMPANY_IN_TROUBLE_TITLE :{BIG_FONT}{BLACK}운송회사에 문제가 생김! STR_NEWS_COMPANY_IN_TROUBLE_DESCRIPTION :{BIG_FONT}{BLACK}성취도를 바로 올리지 못하면 {STRING}{G 0 "은" "는"} 팔리거나 파산할 것입니다! STR_NEWS_COMPANY_MERGER_TITLE :{BIG_FONT}{BLACK}운송 회사 합병! -STR_NEWS_COMPANY_MERGER_DESCRIPTION :{BIG_FONT}{BLACK}{STRING}{G 0 "이" "가"} {STRING}에게 {CURRENCY_LONG}의 가격으로 인수합병되었습니다! +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_LAUNCH_TITLE :{BIG_FONT}{BLACK}새로운 운송회사 등장! @@ -770,39 +807,38 @@ STR_NEWS_NEW_TOWN :{BLACK}{BIG_FON STR_NEWS_INDUSTRY_CONSTRUCTION :{BIG_FONT}{BLACK}{1:TOWN} 근처에 새로운 {0:STRING}{G 0 "이" "가"} 건설되고 있습니다! STR_NEWS_INDUSTRY_PLANTED :{BIG_FONT}{BLACK}새 {STRING}{G 0 "이" "가"} {TOWN} 근처에서 자라나고 있습니다! -STR_NEWS_INDUSTRY_CLOSURE_GENERAL :{BIG_FONT}{BLACK}{STRING}의 긴급 폐쇄를 알립니다! -STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS :{BIG_FONT}{BLACK}{STRING}이 공급량 문제로 긴급 폐쇄됨을 알립니다! -STR_NEWS_INDUSTRY_CLOSURE_LACK_OF_TREES :{BIG_FONT}{BLACK}주변에 나무가 부족하여 {STRING}가 긴급 폐쇄됨을 알립니다! +STR_NEWS_INDUSTRY_CLOSURE_GENERAL :{BIG_FONT}{BLACK}{STRING} : 곧 폐쇄됩니다! +STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS :{BIG_FONT}{BLACK}{STRING} : 공급량이 부족해 곧 폐쇄될 예정입니다! +STR_NEWS_INDUSTRY_CLOSURE_LACK_OF_TREES :{BIG_FONT}{BLACK}{STRING} : 주변에 나무가 부족하여 곧 폐쇄될 예정입니다! STR_NEWS_EURO_INTRODUCTION :{BIG_FONT}{BLACK}유럽 화폐단위 통일!{}{}국가의 단일 유통 화폐로 유로화가 도입되었습니다! STR_NEWS_BEGIN_OF_RECESSION :{BIG_FONT}{BLACK}세계 공황!{}{}경제 전문가들이 경제 슬럼프에 대해 우려를 표망하고 있습니다! -STR_NEWS_END_OF_RECESSION :{BIG_FONT}{BLACK}공황 종료!{}{}무역량의 증대로 경제를 살려낸 결과 산업시설에 대한 신뢰를 가져왔습니다! +STR_NEWS_END_OF_RECESSION :{BIG_FONT}{BLACK}공황 종료!{}{}경제가 살아나면서 무역량이 늘어나 산업시설이 제 기능을 되찾았습니다! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL :{BIG_FONT}{BLACK}{INDUSTRY}{G 0 "이" "가"} 생산량을 늘렸습니다! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_COAL :{BIG_FONT}{BLACK}{INDUSTRY}에서 새 석탄 광맥을 찾았습니다!{}생산량이 2배가 되었습니다! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_OIL :{BIG_FONT}{BLACK}{INDUSTRY}에서 새 유전을 찾았습니다!{}생산량이 2배가 되었습니다! -STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM :{BIG_FONT}{BLACK}{INDUSTRY}에서 향상된 농업 기술을 발견해 생산량이 2배가 되었습니다! +STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM :{BIG_FONT}{BLACK}{INDUSTRY}에서 향상된 농업 기술을 개발하여 생산량이 2배가 되었습니다! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_SMOOTH :{BIG_FONT}{BLACK}{1:INDUSTRY}의 {0:STRING} 생산량이 {2:COMMA}% 증가하였습니다! STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL :{BIG_FONT}{BLACK}{INDUSTRY}의 생산량이 50%로 떨어졌습니다. STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM :{BIG_FONT}{BLACK}{INDUSTRY}{G 0 "이" "가"} 곤충떼의 습격으로 황폐화되었습니다!{}생산량이 50%로 떨어졌습니다. STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_SMOOTH :{BIG_FONT}{BLACK}{1:INDUSTRY}의 {0:STRING} 생산량이 {2:COMMA}% 감소하였습니다! -STR_NEWS_TRAIN_IS_WAITING :{WHITE}{VEHICLE}{P "가" "이"} 차량기지 안에서 대기 중입니다 -STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE}{P "가" "이"} 차고에서 대기 중입니다 -STR_NEWS_SHIP_IS_WAITING :{WHITE}{VEHICLE}{P "가" "이"} 정박소 안에서 대기 중입니다 -STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE}{P "가" "이"} 격납고 안에서 대기 중입니다 +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_PLANE_USES_TOO_SHORT_RUNWAY :{WHITE}{VEHICLE}의 경로 중에 활주로가 너무 짧은 공항이 있습니다. -STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE}{P "가" "이"} 오래되었습니다 -STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE}{P "가" "이"} 매우 오래되었습니다 -STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD_AND :{WHITE}{VEHICLE}{P "가" "이"} 너무 오래되어 교체가 시급합니다 +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} : 아직 다음 목적지에 도착하지 못했습니다. STR_NEWS_VEHICLE_IS_UNPROFITABLE :{WHITE}{VEHICLE}의 작년 수익이 {CURRENCY_LONG} 입니다. @@ -811,24 +847,24 @@ STR_NEWS_AIRCRAFT_DEST_TOO_FAR :{WHITE}거리 STR_NEWS_ORDER_REFIT_FAILED :{WHITE}경로상에 계획된 개조에 실패하여 {VEHICLE}{P "가" "이"} 운행을 멈췄습니다. 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년 간의 수송 독점권 계약을 체결하였습니다! @@ -877,15 +913,12 @@ 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 -STR_GAME_OPTIONS_MEASURING_UNITS_FRAME :{BLACK}길이 단위 -STR_GAME_OPTIONS_MEASURING_UNITS_DROPDOWN_TOOLTIP :{BLACK}길이 단위 선택 ############ start of measuring units region -STR_GAME_OPTIONS_MEASURING_UNITS_IMPERIAL :임페리얼법 -STR_GAME_OPTIONS_MEASURING_UNITS_METRIC :미터법 -STR_GAME_OPTIONS_MEASURING_UNITS_SI :국제단위계 ############ end of measuring units region STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}차량 통행 방식 @@ -923,14 +956,16 @@ 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}사용하실 언어를 선택하세요 +STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}사용하실 언어를 선택하세요. STR_GAME_OPTIONS_FULLSCREEN :{BLACK}전체화면 STR_GAME_OPTIONS_FULLSCREEN_TOOLTIP :{BLACK}OpenTTD를 전체화면으로 플레이하려면 클릭하세요. @@ -939,9 +974,6 @@ 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_BASE_GRF :{BLACK}기본 그래픽 세트 STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}사용하실 기본 그래픽을 선택하세요. STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM}개 파일 손실 @@ -956,6 +988,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 @@ -1039,7 +1072,7 @@ STR_CITY_APPROVAL_PERMISSIVE :신경 안씀 STR_CITY_APPROVAL_TOLERANT :신경 씀 STR_CITY_APPROVAL_HOSTILE :싫어함 -STR_WARNING_NO_SUITABLE_AI :{WHITE}사용하기 적합한 AI가 없습니다...{}'온라인 콘텐츠' 시스템을 통해 AI를 다운받을 수 있습니다. +STR_WARNING_NO_SUITABLE_AI :{WHITE}사용할 수 있는 인공지능이 없습니다...{}'온라인 콘텐츠' 시스템을 통해 인공지능을 다운로드받을 수 있습니다. # Advanced settings window STR_CONFIG_SETTING_CAPTION :{WHITE}고급 설정 @@ -1055,8 +1088,9 @@ 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_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 :전문가 설정 / 모든 설정 @@ -1070,8 +1104,12 @@ 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_OFF :아니요 STR_CONFIG_SETTING_ON :예 STR_CONFIG_SETTING_DISABLED :사용 안 함 @@ -1090,15 +1128,15 @@ 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_RUNNING_COSTS :운행 비용: {STRING} -STR_CONFIG_SETTING_RUNNING_COSTS_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} -STR_CONFIG_SETTING_CONSTRUCTION_SPEED_HELPTEXT :AI의 건설 행동량을 제한하여 건설 속도를 조절할 수 있습니다. +STR_CONFIG_SETTING_CONSTRUCTION_SPEED_HELPTEXT :인공지능의 건설 행동량을 제한하여 건설 속도를 조절할 수 있습니다. 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} @@ -1106,73 +1144,63 @@ 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_DISASTERS_HELPTEXT :블록이나 차량, 기반시설을 가끔씩 파괴하는 재앙을 켜거나 끕니다. -STR_CONFIG_SETTING_CITY_APPROVAL :지역 개발에 대한 도시 의회의 태도: {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_AUTOSLOPE :건물, 트랙 등의 하부 지형 편집 허용: {STRING} STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :건물이나 도로/선로 등을 제거하지 않고도 하부의 지형을 편집할 수 있게 허용합니다. -STR_CONFIG_SETTING_CATCHMENT :더욱 현실적인 역세권 지정 허용: {STRING} -STR_CONFIG_SETTING_CATCHMENT_HELPTEXT :역과 공항의 종류에 따라 서로 다른 크기의 역세권을 지정하도록 합니다. -STR_CONFIG_SETTING_EXTRADYNAMITE :도시 소유의 도로, 다리 등의 제거를 허용: {STRING} +STR_CONFIG_SETTING_CATCHMENT :더 현실적인 역세권 지정: {STRING} +STR_CONFIG_SETTING_CATCHMENT_HELPTEXT :역과 공항의 종류에 따라 다른 크기의 역세권을 가지도록 만듭니다. +STR_CONFIG_SETTING_EXTRADYNAMITE :도시 소유의 도로, 다리 등의 제거 허용: {STRING} STR_CONFIG_SETTING_EXTRADYNAMITE_HELPTEXT :도시 소유의 기반시설이나 건물을 제거할 수 있게 합니다. STR_CONFIG_SETTING_TRAIN_LENGTH :열차의 최대 길이: {STRING} STR_CONFIG_SETTING_TRAIN_LENGTH_HELPTEXT :열차의 최대 길이를 제한할 수 있습니다. STR_CONFIG_SETTING_TILE_LENGTH :{COMMA}칸 -STR_CONFIG_SETTING_SMOKE_AMOUNT :기관차 매연/전기 스파크의 양: {STRING} +STR_CONFIG_SETTING_SMOKE_AMOUNT :차량의 매연 또는 전기 스파크의 양: {STRING} 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_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_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_INFLATION :인플레이션(화폐가치하락) 켜기: {STRING} +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_MAX_BRIDGE_LENGTH :다리의 최대 건설 길이: {STRING} STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_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 :새로 지정하는 역 정차 경로는 기본적으로 역의 {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 :사용 안 함 @@ -1182,18 +1210,18 @@ 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 :도시 도로 보수공사 시행을 허용: {STRING} STR_CONFIG_SETTING_ALLOW_FUND_ROAD_HELPTEXT :도로 기반의 수송 체계를 갖추고 있는 다른 회사를 방해하기 위해 해당 도시가 도로 재건축을 시작하도록 회사가 도시에 돈을 지불하는 행위를 허용합니다. STR_CONFIG_SETTING_ALLOW_GIVE_MONEY :다른 회사에게 돈을 송금하는 것을 허용: {STRING} 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_VALUE :(실제 속도) x {COMMA}분의 1 +STR_CONFIG_SETTING_FREIGHT_TRAINS_HELPTEXT :열차가 싣고 있는 화물이 열차 속력에 미치는 영향에 대해 설정합니다. 값을 높게 설정하면 화물을 수송하는데 더 큰 힘이 필요합니다. (특히 언덕을 오를 때 심해집니다) +STR_CONFIG_SETTING_PLANE_SPEED :항공기 속력 조절: {STRING} +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 :항공기 충돌 사고가 일어날 수 있는지 여부를 설정합니다. STR_CONFIG_SETTING_PLANE_CRASHES_NONE :없음 @@ -1203,15 +1231,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} @@ -1225,7 +1249,7 @@ STR_CONFIG_SETTING_WARN_INCOME_LESS :차량의 수 STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :이 옵션을 켜면 지난 해에 수익이 없는 차량이 있으면 뉴스 메시지로 알려줍니다. STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :옛날 차량을 사라지지 않고 계속 만들 수 있게 함: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :이 옵션을 켜면 오래된 차량 모델을 포함하여 모든 차량 모델을 도입 이후 계속 사용할 수 있게 됩니다. -STR_CONFIG_SETTING_AUTORENEW_VEHICLE :차량이 오래되면 자동 교체: {STRING} +STR_CONFIG_SETTING_AUTORENEW_VEHICLE :차량이 낡으면 차량을 자동으로 교체: {STRING} STR_CONFIG_SETTING_AUTORENEW_VEHICLE_HELPTEXT :이 옵션을 켜면 제한 수명에 다다른 차량이 교체 조건을 만족할 경우 자동으로 차량을 교체할 수 있게 됩니다. STR_CONFIG_SETTING_AUTORENEW_MONTHS :차량이 최대 수명의 {STRING}이면 자동 교체 STR_CONFIG_SETTING_AUTORENEW_MONTHS_HELPTEXT :자동 교체가 필요한 차량의 상대적인 연령을 설정합니다. @@ -1240,37 +1264,51 @@ STR_CONFIG_SETTING_HOVER_DELAY :도움말 보 STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :마우스를 올려놓았을 때 도움말이 뜨는데 걸리는 시간을 설정합니다. 마우스 오른쪽 클릭으로 바로 뜨도록 할 수도 있습니다. 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_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}지도 맨 가장자리에 있는 칸 한 개 이상이 물이 아닙니다. STR_CONFIG_SETTING_STATION_SPREAD :역의 최대 크기: {STRING} -STR_CONFIG_SETTING_STATION_SPREAD_HELPTEXT :역의 최대 크기를 설정합니다. 값이 높으면 게임이 느려짐을 알아두십시오. +STR_CONFIG_SETTING_STATION_SPREAD_HELPTEXT :역의 최대 크기를 설정합니다. 값이 높으면 게임이 느려질 수도 있습니다. STR_CONFIG_SETTING_SERVICEATHELIPAD :헬리콥터를 발착장에서 자동으로 점검: {STRING} STR_CONFIG_SETTING_SERVICEATHELIPAD_HELPTEXT :공항에 격납고가 없어도 헬리콥터가 공항에 착륙할 때마다 점검을 하도록 합니다. STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR :철도/도로/항만/공항 건설창을 띄울 때 지형 편집창도 같이 띄움: {STRING} @@ -1282,7 +1320,7 @@ STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :어두운 녹 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 :게임 화면을 이동시킬 때 부드럽게 이동: {STRING} STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :소형 지도를 클릭하여 특정 지역으로 스크롤되거나 지도 상의 특정 장소로 이동하는 경우에 주 화면이 어떻게 스크롤 되는지를 설정합니다. 이 옵션을 켜면 화면이 목표지점까지 부드럽게 이동하며, 옵션을 끄면 목표 화면으로 곧바로 넘어가게 됩니다. STR_CONFIG_SETTING_MEASURE_TOOLTIP :건설도구 사용시 거리 툴팁 표시: {STRING} STR_CONFIG_SETTING_MEASURE_TOOLTIP_HELPTEXT :철도/도로 등의 기반시설을 건설할 때 거리와 높이 차이 등을 표시합니다. @@ -1292,7 +1330,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 :화면 확대/축소 @@ -1316,18 +1354,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 :게임이 일시 정지된 동안에 할 수 있는 행동을 선택합니다. @@ -1335,27 +1371,27 @@ 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 :열차가 경로기반 폐색으로 진입할 수 없는 문제를 해결하기 위해 열차가 진행할 경로를 별도의 색으로 표시합니다. STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :건설 도구를 사용 후 계속 유지: {STRING} STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :다리, 터널 등의 건설 도구를 사용 후에도 계속 열어둔 채로 놔둡니다. -STR_CONFIG_SETTING_EXPENSES_LAYOUT :재정 창에서 비용 그룹화: {STRING} -STR_CONFIG_SETTING_EXPENSES_LAYOUT_HELPTEXT :재정 창에 나타나는 회사 비용을 어떻게 표시할 지 설정합니다. +STR_CONFIG_SETTING_EXPENSES_LAYOUT :재정 창에서 비용을 종류별로 묶어서 표시: {STRING} +STR_CONFIG_SETTING_EXPENSES_LAYOUT_HELPTEXT :재정 창에 나타나는 회사 비용을 어떻게 표시할지 설정합니다. STR_CONFIG_SETTING_SOUND_TICKER :뉴스 자막: {STRING} STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :요약된 뉴스 메시지가 나타나면 효과음을 재생합니다. @@ -1376,55 +1412,55 @@ 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} STR_CONFIG_SETTING_AI_BUILDS_SHIPS_HELPTEXT :이 옵션을 켜면 컴퓨터 플레이어가 선박을 사용할 수 없게 됩니다. STR_CONFIG_SETTING_AI_PROFILE :기본 설정 난이도: {STRING} -STR_CONFIG_SETTING_AI_PROFILE_HELPTEXT :무작위 인공지능이 사용할 난이도 설정이나 AI나 게임 스크립트를 추가할 때의 난이도 초기값을 고르십시오. +STR_CONFIG_SETTING_AI_PROFILE_HELPTEXT :무작위 인공지능이 사용할 난이도 설정이나, 인공지능 또는 게임 스크립트를 추가할 때의 난이도 초기값을 고르십시오. STR_CONFIG_SETTING_AI_PROFILE_EASY :쉬움 STR_CONFIG_SETTING_AI_PROFILE_MEDIUM :중간 STR_CONFIG_SETTING_AI_PROFILE_HARD :어려움 -STR_CONFIG_SETTING_AI_IN_MULTIPLAYER :멀티플레이에서 컴퓨터 플레이어의 참여를 허용: {STRING} +STR_CONFIG_SETTING_AI_IN_MULTIPLAYER :멀티플레이에서 컴퓨터 플레이어의 참여 허용: {STRING} STR_CONFIG_SETTING_AI_IN_MULTIPLAYER_HELPTEXT :멀티 플레이 게임에서 인공지능 컴퓨터 플레이어가 참여하는 것을 허용합니다. -STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES :스크립트가 일시 중지되기 전의 #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 :신뢰도에 따른 정비 설정: {STRING} STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :차량 점검 방식을 "마지막 점검 이후 지난 시간 (또는) 최대 신뢰도에 대한 차량 신뢰도의 일정 퍼센트 하락 여부" 중에 하나로 선택합니다. -STR_CONFIG_SETTING_SERVINT_TRAINS :열차에 대한 기본 점검 간격: {STRING} +STR_CONFIG_SETTING_SERVINT_TRAINS :열차에 대한 기본 점검 기준: {STRING} STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :열차에 따로 점검 기간이 설정되어있지 않은 경우에 사용할 기본 점검 기간을 설정합니다. STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA} 일/% STR_CONFIG_SETTING_SERVINT_DISABLED :사용 안 함 -STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES :자동차에 대한 기본 점검 간격: {STRING} -STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES_HELPTEXT :자동차에 따로 점검 기간이 설정되어있지 않은 경우에 사용할 기본 점검 기간을 설정합니다. -STR_CONFIG_SETTING_SERVINT_AIRCRAFT :항공기에 대한 기본 점검 간격: {STRING} +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 :선박에 대한 기본 점검 기준: {STRING} STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :선박에 따로 점검 기간이 설정되어있지 않은 경우에 사용할 기본 점검 기간을 설정합니다. -STR_CONFIG_SETTING_NOSERVICE :고장이 나지 않도록 설정되어 있으면 점검을 비활성화: {STRING} -STR_CONFIG_SETTING_NOSERVICE_HELPTEXT :이 옵션을 켜면 차량이 고장이 나지 않도록 설정되어 있는 경우에는 점검을 하지 않게 됩니다. -STR_CONFIG_SETTING_WAGONSPEEDLIMITS :화물차 속도 제한 사용: {STRING} -STR_CONFIG_SETTING_WAGONSPEEDLIMITS_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 :경쟁자의 새 역사에 처음으로 차량이 도착하면 메시지로 알려줍니다. @@ -1432,19 +1468,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_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 :새로운 차량 종류를 사용할 수 있게 되면 메시지로 알려줍니다. @@ -1456,34 +1492,34 @@ 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 :컬러로 된 뉴스가 시작되는 해: {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} +STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE :환승시 벌어들이는 중간 수익의 비율: {STRING} STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE_HELPTEXT :더 많은 수익을 내기 위해, 수송 관계상 중간 구간에게 주어진 수익의 비율을 설정합니다. STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY :신호기를 드래그로 설치하는 경우: {STRING} 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 :모두 @@ -1497,8 +1533,8 @@ STR_CONFIG_SETTING_TOWN_LAYOUT_3X3_GRID :3x3 칸 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 :도시가 회사 소유의 선로에 건널목을 만드는 것을 허용: {STRING} +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} @@ -1507,7 +1543,7 @@ STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :금지 STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :허용 STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :허용, 도시 구조 선택 가능 -STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT :게임도중 나무가 자동적으로 번식: {STRING} +STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT :게임 진행 중에 나무가 자동적으로 번식: {STRING} STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_HELPTEXT :게임 중에 나무가 자동적으로 번식하는지 여부를 조절합니다. 이 옵션은 열대 우림의 벌목소처럼 나무의 성장에 의존하는 산업 시설에 영향을 끼칠 수 있습니다. STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NONE :자라지 않음 {RED}(제재소에 의해 벌목될 수 있음) STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_RAINFOREST :열대 우림 지역에서만 @@ -1517,7 +1553,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 :사용 안 함 @@ -1548,38 +1584,100 @@ 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_GUI :{ORANGE}인터페이스 -STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}건설 +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_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 :값이 높으면 높을수록 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_HELPTEXT :종종 두 역 사이에는 여러 가지 경로가 존재할 수 있습니다. 이 경우, 화물 분배 기능은 먼저 가장 짧은 경로로 화물을 보내고, 그 경로가 포화 상태에 이르면 그 다음으로 짧은 경로를 사용하는 식으로 화물을 분배합니다. 포화도는 경로의 수송 능력과 예정 사용량을 추정하여 계산됩니다. 일단 모든 경로가 포화 상태가 되었는데 아직 수요가 남아있다면, 수송 능력이 높은 경로를 사용하면서 모든 경로를 과부하 상태로 만들게 됩니다. 하지만, 이 알고리즘은 수송량을 대부분 정확히 추정하지는 않습니다. 이 설정을 이용해서, 화물 분배 기능이 짧은 경로의 포화 상태가 몇 퍼센트가 되어야 다음으로 짧은 경로에 화물을 분배할 것인지를 지정할 수 있습니다. 과대평가된 수송량의 경우 너무 붐비는 역이 생기지 않도록 하기 위해서는 이 값을 100%보다 작게 설정하십시오. + +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 :국제표준규격 (m/s) + +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 :국제표준규격 (kW) + +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 :국제표준규격 (kg) + +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 :미터법 (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_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_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_AI_NPC :{ORANGE}컴퓨터 플레이어 STR_CONFIG_SETTING_PATHFINDER_OPF :오리지널 STR_CONFIG_SETTING_PATHFINDER_NPF :NPF STR_CONFIG_SETTING_PATHFINDER_YAPF_RECOMMENDED :YAPF {BLUE}(추천) -STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :열차에 사용할 경로탐색: {STRING} +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_SHIPS :선박에 사용할 경로탐색: {STRING} +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} STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT :열차가 신호기 앞에서 너무 오래 기다리면 뒤로 되돌아갈 수 있도록 허용합니다. @@ -1603,6 +1701,8 @@ STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_ALGORITHM :{WHITE}... '{ST 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}메모리 초과 +STR_CONFIG_ERROR_SPRITECACHE_TOO_BIG :{WHITE}{BYTES}의 스프라이트 캐시 할당에 실패하였습니다. 스프라이트 캐시는 {BYTES} 만큼으로 감소합니다. 이는 OpenTTD의 성능을 저하시킬 것입니다. 메모리 요구사항을 낮추려면 32bpp를 비활성화하거나 화면 확대 옵션을 기본값에 가깝게 조절하십시오. # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} @@ -1619,10 +1719,10 @@ 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 / 게임 스크립트 설정 +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}사용자 시나리오로 새 게임을 시작합니다 @@ -1630,7 +1730,7 @@ 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}장난감나라 선택 @@ -1639,8 +1739,8 @@ 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와 게임 스크립트 설정 표시 -STR_INTRO_TOOLTIP_QUIT :{BLACK}'OpenTTD'를 종료합니다 +STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}인공지능/게임 스크립트 설정창을 엽니다. +STR_INTRO_TOOLTIP_QUIT :{BLACK}'OpenTTD'를 종료합니다. STR_INTRO_TRANSLATION :{BLACK}이 버전의 OpenTTD는 {NUM}개의 문장이 한국어로 번역되지 않았습니다. 한국어 번역자에게 번역을 의뢰하십시오.{}텔크 (telk5093@gmail.com) @@ -1651,7 +1751,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 @@ -1669,32 +1769,32 @@ STR_ABANDON_SCENARIO_QUERY :{YELLOW}정말 # Cheat window STR_CHEATS :{WHITE}치트 -STR_CHEATS_TOOLTIP :{BLACK}체크박스는 이전에 사용한 치트를 나타냅니다. -STR_CHEATS_WARNING :{BLACK}경고! 치트는 경쟁자를 속이는 행위입니다. 치트 기록은 절대로 지워지지 않음을 명심하십시오. +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}대형항공기가 소형 공항에서 (자주) 폭발하지 않게 함: {ORANGE}{STRING} -STR_CHEAT_SWITCH_CLIMATE_TEMPERATE_LANDSCAPE :온대 기후 -STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :냉대 기후 -STR_CHEAT_SWITCH_CLIMATE_SUB_TROPICAL_LANDSCAPE :아열대 기후 -STR_CHEAT_SWITCH_CLIMATE_TOYLAND_LANDSCAPE :장난감 나라 +STR_CHEAT_CHANGE_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_SWITCH_CLIMATE_TEMPERATE_LANDSCAPE :온대 기후 지형 +STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :아한대 지형 +STR_CHEAT_SWITCH_CLIMATE_SUB_TROPICAL_LANDSCAPE :아열대 기후 지형 +STR_CHEAT_SWITCH_CLIMATE_TOYLAND_LANDSCAPE :장난감나라 지형 STR_CHEAT_CHANGE_DATE :{LTBLUE}날짜 변경: {ORANGE}{DATE_SHORT} STR_CHEAT_CHANGE_DATE_QUERY_CAPT :{WHITE}현재의 연도를 변경 -STR_CHEAT_SETUP_PROD :{LTBLUE}산업시설의 생산량 조절 허가: {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}증기 기관차 @@ -1724,17 +1824,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 설정 파일로부터 불러왔습니다. @@ -1779,10 +1880,10 @@ STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}넥타 # Network server list STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}멀티 플레이 -STR_NETWORK_SERVER_LIST_CONNECTION :{BLACK}접속방법: -STR_NETWORK_SERVER_LIST_CONNECTION_TOOLTIP :{BLACK}인터넷과 LAN 게임 중에 하나를 선택하세요. -STR_NETWORK_SERVER_LIST_LAN :LAN -STR_NETWORK_SERVER_LIST_INTERNET :인터넷 +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}다른 사람들에게 보여줄 당신의 이름입니다. @@ -1805,7 +1906,7 @@ STR_NETWORK_SERVER_LIST_LAST_JOINED_SERVER :{BLACK}최근 STR_NETWORK_SERVER_LIST_CLICK_TO_SELECT_LAST :{BLACK}최근에 플레이한 서버를 선택하려면 클릭하세요 STR_NETWORK_SERVER_LIST_GAME_INFO :{SILVER}게임 정보 -STR_NETWORK_SERVER_LIST_CLIENTS :{SILVER}접속현황: 접속자 {WHITE}{COMMA} / {COMMA}명 - 회사 {COMMA} / {COMMA}개 +STR_NETWORK_SERVER_LIST_CLIENTS :{SILVER}접속현황: {WHITE}{COMMA} / {COMMA}명 - 회사 {COMMA} / {COMMA}개 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} @@ -1841,8 +1942,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_LAN_INTERNET :LAN / 인터넷 -STR_NETWORK_START_SERVER_INTERNET_ADVERTISE :인터넷 (광고 허용) +STR_NETWORK_START_SERVER_UNADVERTISED :아니요 +STR_NETWORK_START_SERVER_ADVERTISED :예 STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM}명 STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}최대 접속자 수: STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}최대 접속자수를 선택합니다. 모든 슬롯이 차있을 필요는 없습니다. @@ -1955,7 +2056,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 :서버 @@ -1963,6 +2064,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}입력한 비밀번호는 저장하지 않기 @@ -1989,7 +2091,7 @@ STR_NETWORK_CHAT_TO_COMPANY :[팀] {STRING} 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}네트워크 장치를 찾을수 없거나 게임 자체가 네트워크를 사용할 수 없는 버전으로 컴파일되었습니다. @@ -1997,7 +2099,7 @@ STR_NETWORK_ERROR_NOSERVER :{WHITE}네트 STR_NETWORK_ERROR_NOCONNECTION :{WHITE}서버가 요청을 받지 않습니다. STR_NETWORK_ERROR_NEWGRF_MISMATCH :{WHITE}NewGRF이 맞지 않아서 연결할 수 없습니다 STR_NETWORK_ERROR_DESYNC :{WHITE}네트워크와 게임을 동기화하는 데 실패하였습니다. -STR_NETWORK_ERROR_LOSTCONNECTION :{WHITE}네트워크와 연결이 끊어졌습니다. +STR_NETWORK_ERROR_LOSTCONNECTION :{WHITE}네트워크와의 연결이 끊어졌습니다. STR_NETWORK_ERROR_SAVEGAMEERROR :{WHITE}게임 저장 파일을 불러올 수 없습니다 STR_NETWORK_ERROR_SERVER_START :{WHITE}서버를 시작할 수 없습니다 STR_NETWORK_ERROR_CLIENT_START :{WHITE}접속할 수 없습니다 @@ -2027,7 +2129,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 :DoCommand에서의 잘못된 회사 번호 +STR_NETWORK_ERROR_CLIENT_COMPANY_MISMATCH :DoCommand 구문 내의 잘못된 회사 STR_NETWORK_ERROR_CLIENT_KICKED :강제추방 STR_NETWORK_ERROR_CLIENT_CHEATER :치트 사용 시도 STR_NETWORK_ERROR_CLIENT_SERVER_FULL :서버 꽉참 @@ -2081,6 +2183,10 @@ 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의 온라인 콘텐츠 서비스에서 다운로드할 수 없는 콘텐츠를 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}이 컨텐츠의 웹사이트를 방문합니다. @@ -2088,35 +2194,35 @@ 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}를 대체합니다. +STR_CONTENT_DETAIL_UPDATE :{SILVER}이 콘텐츠는 기존에 존재하던 {STRING}{G 0 "을" "를"} 업데이트합니다. STR_CONTENT_DETAIL_NAME :{SILVER}이름: {WHITE}{STRING} STR_CONTENT_DETAIL_VERSION :{SILVER}버전: {WHITE}{STRING} STR_CONTENT_DETAIL_DESCRIPTION :{SILVER}설명: {WHITE}{STRING} 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 :{WHITE}OpenTTD가 "zlib" 지원 기능을 포함하지 않고 만들어졌습니다... STR_CONTENT_NO_ZLIB_SUB :{WHITE}... 콘텐츠 다운로드가 불가능합니다! # Order of these is important! -STR_CONTENT_TYPE_BASE_GRAPHICS :기본 그래픽 -STR_CONTENT_TYPE_NEWGRF :NewGRF -STR_CONTENT_TYPE_AI :인공지능 -STR_CONTENT_TYPE_AI_LIBRARY :인공지능 라이브러리 -STR_CONTENT_TYPE_SCENARIO :시나리오 -STR_CONTENT_TYPE_HEIGHTMAP :높이맵 -STR_CONTENT_TYPE_BASE_SOUNDS :기본 효과음 -STR_CONTENT_TYPE_BASE_MUSIC :기본 배경 음악 -STR_CONTENT_TYPE_GAME_SCRIPT :게임 스크립트 -STR_CONTENT_TYPE_GS_LIBRARY :GS 라이브러리 +STR_CONTENT_TYPE_BASE_GRAPHICS :{G=m}기본 그래픽 +STR_CONTENT_TYPE_NEWGRF :{G=m}NewGRF +STR_CONTENT_TYPE_AI :{G=m}인공지능 +STR_CONTENT_TYPE_AI_LIBRARY :{G=f}인공지능 라이브러리 +STR_CONTENT_TYPE_SCENARIO :{G=f}시나리오 +STR_CONTENT_TYPE_HEIGHTMAP :{G=m}높이맵 +STR_CONTENT_TYPE_BASE_SOUNDS :{G=m}기본 효과음 +STR_CONTENT_TYPE_BASE_MUSIC :{G=m}기본 배경 음악 +STR_CONTENT_TYPE_GAME_SCRIPT :{G=f}게임 스크립트 +STR_CONTENT_TYPE_GS_LIBRARY :{G=f}GS 라이브러리 # Content downloading progress window STR_CONTENT_DOWNLOAD_TITLE :{WHITE}콘텐츠 다운로드... @@ -2133,7 +2239,7 @@ STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD_FILE_NOT_WRITABLE :{WHITE}... 파 STR_CONTENT_ERROR_COULD_NOT_EXTRACT :{WHITE}다운로드한 파일의 압축을 풀 수 없습니다 STR_MISSING_GRAPHICS_SET_CAPTION :{WHITE}그래픽 없음 -STR_MISSING_GRAPHICS_SET_MESSAGE :{BLACK}OpenTTD가 작동되기 위한 그래픽이 필요합니다. 그러나 당신의 컴퓨터에서 어떤 그래픽도 찾을수 없습니다. OpenTTD의 구동을 위한 그래픽을 다운로드 받아서 설치합니까? +STR_MISSING_GRAPHICS_SET_MESSAGE :{BLACK}OpenTTD를 실행시키기 위해서는 그래픽 파일이 필요하지만 컴퓨터에서 그래픽 파일을 찾을 수 없습니다. OpenTTD를 실행시키기 위해 그래픽을 다운로드 받아서 설치하시겠습니까? STR_MISSING_GRAPHICS_YES_DOWNLOAD :{BLACK}예, 그래픽을 다운로드 받습니다. STR_MISSING_GRAPHICS_NO_QUIT :{BLACK}아니요, OpenTTD를 종료합니다. @@ -2150,12 +2256,23 @@ STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}전차 STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}적재율 투명 전환. 고정하려면 CTRL+클릭하세요. 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}역세권 하이라이트 +STR_STATION_BUILD_COVERAGE_AREA_TITLE :{BLACK}역세권 표시 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_COVERAGE_AREA_OFF_TOOLTIP :{BLACK}역세권을 표시하지 않습니다. +STR_STATION_BUILD_COVERAGE_AREA_ON_TOOLTIP :{BLACK}역세권을 표시합니다. STR_STATION_BUILD_ACCEPTS_CARGO :{BLACK}받음: {GOLD}{CARGO_LIST} STR_STATION_BUILD_SUPPLIES_CARGO :{BLACK}공급: {GOLD}{CARGO_LIST} @@ -2167,21 +2284,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 :전기철도 @@ -2190,7 +2307,7 @@ STR_RAIL_NAME_MAGLEV :자기부상열 # Rail depot construction window STR_BUILD_DEPOT_TRAIN_ORIENTATION_CAPTION :{WHITE}차량기지 방향 선택 -STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}차량기지의 방향을 선택하세요 +STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}차량기지의 방향을 선택하세요. # Rail waypoint construction window STR_WAYPOINT_CAPTION :{G=f}{WHITE}경유지 @@ -2198,12 +2315,12 @@ 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_NUMBER_OF_TRACKS :{BLACK}트랙 수 -STR_STATION_BUILD_NUMBER_OF_TRACKS_TOOLTIP :{BLACK}철도역의 플랫폼 개수를 선택합니다. +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_PLATFORM_LENGTH_TOOLTIP :{BLACK}철도역 길이를 설정합니다. STR_STATION_BUILD_DRAG_DROP :{BLACK}드래그 & 드롭 STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}드래그 & 드롭으로 역 건설 @@ -2216,18 +2333,18 @@ STR_STATION_CLASS_WAYP :{G=f}경유지 # 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_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_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_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}드래그시 신호기 증가 @@ -2251,54 +2368,54 @@ 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}전찻길 건설/제거 툴 켜기/끄기 # 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_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}차량기지의 방향을 선택하세요 # 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_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}수로 건설 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 -STR_DEPOT_BUILD_SHIP_CAPTION :{WHITE}정박소 방향 +STR_DEPOT_BUILD_SHIP_CAPTION :{WHITE}정박소 방향 선택 STR_DEPOT_BUILD_SHIP_ORIENTATION_TOOLTIP :{BLACK}정박소의 방향을 선택합니다. # Dock construction window @@ -2306,7 +2423,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}공항 선택 @@ -2329,14 +2446,14 @@ STR_AIRPORT_CLASS_LARGE :대형 공항 STR_AIRPORT_CLASS_HUB :허브 공항 STR_AIRPORT_CLASS_HELIPORTS :헬리콥터 공항 -STR_STATION_BUILD_NOISE :{BLACK}발생 소음: {GOLD}{COMMA} +STR_STATION_BUILD_NOISE :{BLACK}발생하는 소음 수준: {GOLD}{COMMA} # 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_TOOLBAR :{WHITE}지형 편집 +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}오브젝트 선택 @@ -2352,14 +2469,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}무작위로 지형 만들기 @@ -2413,15 +2530,15 @@ STR_FUND_INDUSTRY_BUILD_NEW_INDUSTRY :{BLACK}건설 STR_FUND_INDUSTRY_FUND_NEW_INDUSTRY :{BLACK}투자 # Industry cargoes window -STR_INDUSTRY_CARGOES_INDUSTRY_CAPTION :{WHITE}{STRING} 산업시설의 산업망 -STR_INDUSTRY_CARGOES_CARGO_CAPTION :{WHITE}{STRING} 화물의 산업망 +STR_INDUSTRY_CARGOES_INDUSTRY_CAPTION :{WHITE}{STRING}{G 0 "과" "와"} 관련된 산업시설 연계도 +STR_INDUSTRY_CARGOES_CARGO_CAPTION :{WHITE}{STRING}{G 0 "과" "와"} 관련된 산업시설 연계망 STR_INDUSTRY_CARGOES_PRODUCERS :{WHITE}생산 산업시설 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_TOOLTIP :{BLACK}이 산업시설에서 생산/소비하는 화물을 보여줍니다. STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP :{BLACK}지도에 표시 STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP_TOOLTIP :{BLACK}위 산업망에 표시된 산업을 소형지도에서 볼 수 있게 합니다. STR_INDUSTRY_CARGOES_SELECT_CARGO :{BLACK}화물 선택 @@ -2438,7 +2555,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}) @@ -2449,9 +2566,10 @@ STR_LAND_AREA_INFORMATION_AIRPORT_CLASS :{BLACK}공항 STR_LAND_AREA_INFORMATION_AIRPORT_NAME :{BLACK}공항 이름: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORTTILE_NAME :{BLACK}공항 칸 이름: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: {LTBLUE}{STRING} -STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}화물 인수: {LTBLUE} +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 :암석 @@ -2464,32 +2582,32 @@ 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_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_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_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_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 :도로 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_VEHICLE_DEPOT :{G=f}차고지 STR_LAI_ROAD_DESCRIPTION_ROAD_RAIL_LEVEL_CROSSING :철도 건널목 STR_LAI_ROAD_DESCRIPTION_TRAMWAY :전찻길 @@ -2541,14 +2659,14 @@ STR_LAI_BRIDGE_DESCRIPTION_AQUEDUCT :수도교 STR_LAI_OBJECT_DESCRIPTION_TRANSMITTER :송신기 STR_LAI_OBJECT_DESCRIPTION_LIGHTHOUSE :등대 -STR_LAI_OBJECT_DESCRIPTION_COMPANY_HEADQUARTERS :회사 HQ +STR_LAI_OBJECT_DESCRIPTION_COMPANY_HEADQUARTERS :회사 본사 STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :회사 소유지 # About OpenTTD window 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-2012 OpenTTD 개발팀 +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2014 OpenTTD 개발팀 # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}게임 저장 @@ -2559,7 +2677,7 @@ STR_SAVELOAD_LOAD_HEIGHTMAP :{WHITE}높이 STR_SAVELOAD_SAVE_HEIGHTMAP :{WHITE}높이맵 저장 STR_SAVELOAD_HOME_BUTTON :{BLACK}기본 저장/불러오기 폴더로 이동하려면 여기를 클릭하세요 STR_SAVELOAD_BYTES_FREE :{BLACK}{BYTES} 남음 -STR_SAVELOAD_LIST_TOOLTIP :{BLACK}드라이프, 폴더, 저장된 게임 파일의 목록입니다 +STR_SAVELOAD_LIST_TOOLTIP :{BLACK}드라이브, 폴더, 저장된 게임 파일의 목록입니다 STR_SAVELOAD_EDITBOX_TOOLTIP :{BLACK}현재 입력된 게임 저장 파일의 이름입니다. STR_SAVELOAD_DELETE_BUTTON :{BLACK}파일 삭제 STR_SAVELOAD_DELETE_TOOLTIP :{BLACK}현재 선택한 게임 저장 파일을 삭제합니다. @@ -2567,6 +2685,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} @@ -2575,19 +2694,16 @@ 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_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}지형 종류: @@ -2614,8 +2730,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_SNOW_LINE_QUERY_CAPT :{WHITE}만년설의 높이를 변경 +STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}설선 고도를 변경 STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}시작 연도를 변경합니다. # SE Map generation @@ -2632,7 +2747,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} @@ -2649,11 +2764,11 @@ STR_GENERATION_PREPARING_GAME :{BLACK}게임 # NewGRF settings STR_NEWGRF_SETTINGS_CAPTION :{WHITE}NewGRF 설정 STR_NEWGRF_SETTINGS_INFO_TITLE :{WHITE}NewGRF 상세 정보 -STR_NEWGRF_SETTINGS_ACTIVE_LIST :{WHITE}사용 중인 NewGRF 파일 -STR_NEWGRF_SETTINGS_INACTIVE_LIST :{WHITE}사용하지 않고 있는 NewGRF 파일 +STR_NEWGRF_SETTINGS_ACTIVE_LIST :{WHITE}적용한 NewGRF 파일 +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}프리셋 이름 입력 @@ -2669,6 +2784,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}매개 변수 설정 @@ -2688,11 +2805,21 @@ STR_NEWGRF_SETTINGS_MD5SUM :{BLACK}MD5합: STR_NEWGRF_SETTINGS_PALETTE :{BLACK}색상표: {SILVER}{STRING} STR_NEWGRF_SETTINGS_PARAMETER :{BLACK}매개 변숫값: {SILVER}{STRING} -STR_NEWGRF_SETTINGS_NO_INFO :{BLACK}사용가능한 정보 없음 +STR_NEWGRF_SETTINGS_NO_INFO :{BLACK}관련 정보 없음 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}닫기 @@ -2762,12 +2889,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 :없음 @@ -2776,10 +2904,11 @@ STR_NEWGRF_LIST_COMPATIBLE :{YELLOW}호환 STR_NEWGRF_LIST_MISSING :{RED}파일 없음 # NewGRF 'it's broken' warnings -STR_NEWGRF_BROKEN :{WHITE}NewGRF '{STRING}'의 행동은 비동기화 혹은 충돌을 일으킬 수 있습니다. -STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}'{1:ENGINE}'{G 1 "이" "가"} 차고 안에 있지 않으면 동력차량의 상태가 바뀝니다. -STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}'{1:ENGINE}'{G 1 "이" "가"} 차고 안에 있지 않으면 차량 길이가 바뀝니다. -STR_BROKEN_VEHICLE_LENGTH :{WHITE}'{1:COMPANY}'의 열차 '{0:VEHICLE}'{P "은" "는"} 잘못된 길이값을 가지고 있습니다. NewGRF에 의한 문제일 것입니다. 게임이 비동기화/충돌을 일으킬 수 있습니다. +STR_NEWGRF_BROKEN :{WHITE}'{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}' (이)가 잘못된 정보를 제공하고 있습니다. STR_NEWGRF_BUGGY_ARTICULATED_CARGO :{WHITE}{1:ENGINE}(을)를 만들기 이전과 이후의 화물/개조 정보가 현재의 구매 목록과 다릅니다. 이 경우 자동 교체시 열차 개조에 실패할 수도 있습니다. @@ -2793,6 +2922,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을 검색하는 중입니다. 파일 개수에 따라 시간이 조금 걸릴 수 있습니다... @@ -2802,7 +2934,7 @@ 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}팻말 내용 고치기 @@ -2815,14 +2947,14 @@ 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_POPULATION :{BLACK}총 인구수: {COMMA} +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 "이" "가"} 필요함 @@ -2830,24 +2962,24 @@ STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :겨울에는 {O 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}일마다 1번씩 성장중입니다. -STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}도시는 {ORANGE}{COMMA}{BLACK}일마다 1번씩 성장중입니다.(도시에 투자중) +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_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_NOISE_IN_TOWN :{BLACK}현재 소음 수준: {ORANGE}{COMMA}{BLACK} 최대 허용 수준: {ORANGE}{COMMA} +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_LOCAL_AUTHORITY_TOOLTIP :{BLACK}지역 당국의 정보를 보여줍니다. +STR_TOWN_VIEW_RENAME_TOOLTIP :{BLACK}이 도시 이름을 변경합니다. -STR_TOWN_VIEW_EXPAND_BUTTON :{BLACK}확장하기 -STR_TOWN_VIEW_EXPAND_TOOLTIP :{BLACK}도시 크기 키우기 +STR_TOWN_VIEW_EXPAND_BUTTON :{BLACK}확장 +STR_TOWN_VIEW_EXPAND_TOOLTIP :{BLACK}도시의 크기를 키웁니다. STR_TOWN_VIEW_DELETE_BUTTON :{BLACK}삭제 STR_TOWN_VIEW_DELETE_TOOLTIP :{BLACK}이 도시를 완전히 삭제 STR_TOWN_VIEW_RENAME_TOWN_BUTTON :도시 이름 변경 # Town local authority window -STR_LOCAL_AUTHORITY_CAPTION :{WHITE}{TOWN} 지역당국 +STR_LOCAL_AUTHORITY_CAPTION :{WHITE}{TOWN} 지역 당국 STR_LOCAL_AUTHORITY_COMPANY_RATINGS :{BLACK}회사 운송 성취도: STR_LOCAL_AUTHORITY_COMPANY_RATING :{YELLOW}{COMPANY} {COMPANY_NUM}: {ORANGE}{STRING} STR_LOCAL_AUTHORITY_ACTIONS_TITLE :{BLACK}가능한 행동: @@ -2855,31 +2987,35 @@ STR_LOCAL_AUTHORITY_ACTIONS_TOOLTIP :{BLACK}이 도 STR_LOCAL_AUTHORITY_DO_IT_BUTTON :{BLACK}실행 STR_LOCAL_AUTHORITY_DO_IT_TOOLTIP :{BLACK}선택된 항목을 실행에 옮깁니다 -STR_LOCAL_AUTHORITY_ACTION_SMALL_ADVERTISING_CAMPAIGN :소규모 광고 캠페인 -STR_LOCAL_AUTHORITY_ACTION_MEDIUM_ADVERTISING_CAMPAIGN :중규모 광고 캠페인 -STR_LOCAL_AUTHORITY_ACTION_LARGE_ADVERTISING_CAMPAIGN :대규모 광고 캠페인 -STR_LOCAL_AUTHORITY_ACTION_ROAD_RECONSTRUCTION :지역 도로 재공사에 투자 +STR_LOCAL_AUTHORITY_ACTION_SMALL_ADVERTISING_CAMPAIGN :소규모의 광고 진행 +STR_LOCAL_AUTHORITY_ACTION_MEDIUM_ADVERTISING_CAMPAIGN :중간 규모의 광고 진행 +STR_LOCAL_AUTHORITY_ACTION_LARGE_ADVERTISING_CAMPAIGN :대규모의 광고 진행 +STR_LOCAL_AUTHORITY_ACTION_ROAD_RECONSTRUCTION :도로 보수공사 시행 STR_LOCAL_AUTHORITY_ACTION_STATUE_OF_COMPANY :회사 소유주의 동상 건설 STR_LOCAL_AUTHORITY_ACTION_NEW_BUILDINGS :새 건물에 투자 STR_LOCAL_AUTHORITY_ACTION_EXCLUSIVE_TRANSPORT :수송 권한 독점권 구입 -STR_LOCAL_AUTHORITY_ACTION_BRIBE :지역 당국에 뇌물 먹이기 +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_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_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} # Goal window -STR_GOALS_CAPTION :{WHITE}목표 +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 :{G=m}질문 @@ -2890,7 +3026,7 @@ STR_GOAL_QUESTION_CAPTION_ERROR :오류 ### Start of Goal Question button list STR_GOAL_QUESTION_BUTTON_CANCEL :취소 STR_GOAL_QUESTION_BUTTON_OK :{G=m}확인 -STR_GOAL_QUESTION_BUTTON_NO :아니오 +STR_GOAL_QUESTION_BUTTON_NO :아니요 STR_GOAL_QUESTION_BUTTON_YES :{G=f}예 STR_GOAL_QUESTION_BUTTON_DECLINE :거절 STR_GOAL_QUESTION_BUTTON_ACCEPT :수락 @@ -2909,41 +3045,76 @@ STR_GOAL_QUESTION_BUTTON_CLOSE :닫기 # Subsidies window STR_SUBSIDIES_CAPTION :{WHITE}보조금 -STR_SUBSIDIES_OFFERED_TITLE :{BLACK}제공되는 보조금: +STR_SUBSIDIES_OFFERED_TITLE :{BLACK}지급 대기 중인 보조금: STR_SUBSIDIES_OFFERED_FROM_TO :{ORANGE}{1:STRING}에서 {2:STRING}까지 {0:STRING} 수송{YELLOW} ({3:DATE_SHORT}까지) STR_SUBSIDIES_NONE :{ORANGE}없음 -STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}이미 지급된 보조금: +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}의 스토리 북 +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_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} STR_STATION_LIST_NONE :{YELLOW}- 없음 - -STR_STATION_LIST_SELECT_ALL_FACILITIES :{BLACK}모든 시설 선택 -STR_STATION_LIST_SELECT_ALL_TYPES :{BLACK}모든 종류의 화물이 있는 역을 목록에 포함시킵니다. (화물이 없는 역도 포함) -STR_STATION_LIST_NO_WAITING_CARGO :{BLACK}화물이 하나도 없는 역을 목록에 포함시킵니다. +STR_STATION_LIST_SELECT_ALL_FACILITIES :{BLACK}모든 시설을 선택합니다. +STR_STATION_LIST_SELECT_ALL_TYPES :{BLACK}화물을 하나라도 취급하는 모든 역을 목록에 표시합니다. (화물이 없는 역도 포함) +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} 적재 예정) STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}받음 STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}받는 화물의 목록 표시 STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}받음: {WHITE}{CARGO_LIST} -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}이 역은 이 도시에서 수송 독점권을 갖고있습니다. +STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}이 역은 도시의 수송권을 독점하고 있는 역입니다. STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} 이(가) 이 도시의 수송 독점권을 구매하였습니다. STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}등급 STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}역의 등급 표시 -STR_STATION_VIEW_CARGO_RATINGS_TITLE :{BLACK}수송 서비스의 지역 등급: -STR_STATION_VIEW_CARGO_RATING :{WHITE}{STRING}: {YELLOW}{STRING} ({COMMA}%) +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}{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_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 :형편없음 @@ -2956,24 +3127,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}경유지 이름 설정 @@ -2984,13 +3155,13 @@ STR_FINANCES_EXPENDITURE_INCOME_TITLE :{WHITE}지출/ 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_AIRCRAFT_RUNNING_COSTS :{GOLD}항공기 운행비용 -STR_FINANCES_SECTION_SHIP_RUNNING_COSTS :{GOLD}선박 운행비용 +STR_FINANCES_SECTION_TRAIN_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}이자 @@ -3003,9 +3174,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 @@ -3016,7 +3187,7 @@ 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}없음 @@ -3030,7 +3201,7 @@ STR_COMPANY_VIEW_INFRASTRUCTURE_STATION :{WHITE}정거 STR_COMPANY_VIEW_INFRASTRUCTURE_AIRPORT :{WHITE}공항 {COMMA}개 STR_COMPANY_VIEW_INFRASTRUCTURE_NONE :{WHITE}없음 -STR_COMPANY_VIEW_BUILD_HQ_BUTTON :{BLACK}본사(HQ) 건설 +STR_COMPANY_VIEW_BUILD_HQ_BUTTON :{BLACK}본사 건설 STR_COMPANY_VIEW_BUILD_HQ_TOOLTIP :{BLACK}회사 본사를 건설합니다. STR_COMPANY_VIEW_VIEW_HQ_BUTTON :{BLACK}본사 보기 STR_COMPANY_VIEW_VIEW_HQ_TOOLTIP :{BLACK}회사 본사 위치로 이동합니다. @@ -3056,7 +3227,7 @@ STR_COMPANY_VIEW_SELL_SHARE_TOOLTIP :{BLACK}이 회 STR_COMPANY_VIEW_COMPANY_NAME_QUERY_CAPTION :회사 이름 STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :사장 이름 -STR_BUY_COMPANY_MESSAGE :{WHITE}저희 회사를 거두어주실 운송회사를 찾고있습니다.{}{}저희 {COMPANY} 회사를 {CURRENCY_LONG}의 가격으로 인수합병하시겠습니까? +STR_BUY_COMPANY_MESSAGE :{WHITE}저희 회사를 거두어주실 운송 회사를 찾고있습니다.{}{}저희 {COMPANY} 회사를 {CURRENCY_LONG}의 가격으로 인수합병하시겠습니까? # Company infrastructure window STR_COMPANY_INFRASTRUCTURE_VIEW_CAPTION :{WHITE}{COMPANY}의 기반시설 @@ -3070,7 +3241,6 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS :{WHITE}운하 STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}정거장 시설: STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}정류장, 역 STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}공항 -STR_COMPANY_INFRASTRUCTURE_VIEW_COST :{WHITE}{1:CURRENCY_LONG}/년 ({0:COMMA}) STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL :{WHITE}{CURRENCY_LONG}/년 # Industry directory @@ -3079,14 +3249,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+Click하면 이 산업시설을 기준으로 새로운 외부 화면을 엽니다. +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} @@ -3095,7 +3266,7 @@ STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}필요 ############ range for requires ends ############ range for produces starts -STR_INDUSTRY_VIEW_WAITING_FOR_PROCESSING :{BLACK}처리될 화물 대기: +STR_INDUSTRY_VIEW_WAITING_FOR_PROCESSING :{BLACK}생산되기 위해 대기 중인 화물량: STR_INDUSTRY_VIEW_WAITING_STOCKPILE_CARGO :{YELLOW}{CARGO_LONG}{STRING}{BLACK} STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}생산: {YELLOW}{STRING}{STRING} STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}생산: {YELLOW}{STRING}{STRING}, {STRING}{STRING} @@ -3106,19 +3277,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_SHIP_TOOLTIP :{BLACK}선박 - 선박의 정보를 보려면 클릭하세요 -STR_VEHICLE_LIST_AIRCRAFT_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}이 차량 타입에 사용할 수 있는 기관차의 목록 보기 @@ -3126,17 +3297,17 @@ 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 :차고로 보내기 +STR_VEHICLE_LIST_SEND_ROAD_VEHICLE_TO_DEPOT :차고지로 보내기 STR_VEHICLE_LIST_SEND_SHIP_TO_DEPOT :정박소로 보내기 STR_VEHICLE_LIST_SEND_AIRCRAFT_TO_HANGAR :격납고로 보내기 STR_VEHICLE_LIST_MASS_STOP_LIST_TOOLTIP :{BLACK}이 목록의 모든 차량의 운행을 중지시킵니다. STR_VEHICLE_LIST_MASS_START_LIST_TOOLTIP :{BLACK}이 목록에 있는 모든 차량의 운행을 시작합니다. -STR_VEHICLE_LIST_SHARED_ORDERS_LIST_CAPTION :{WHITE}경로를 공유하고 있는 차량 {COMMA}대의 목록 +STR_VEHICLE_LIST_SHARED_ORDERS_LIST_CAPTION :{WHITE}경로를 공유 중인 차량 {COMMA}대 # Group window STR_GROUP_ALL_TRAINS :모든 열차 @@ -3149,13 +3320,16 @@ 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_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}그룹 이름 설정 @@ -3167,16 +3341,16 @@ 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 :새 항공기 STR_PURCHASE_INFO_COST_WEIGHT :{BLACK}가격: {GOLD}{CURRENCY_LONG}{BLACK} 중량: {GOLD}{WEIGHT_SHORT} STR_PURCHASE_INFO_SPEED_POWER :{BLACK}속력: {GOLD}{VELOCITY}{BLACK} 힘: {GOLD}{POWER} STR_PURCHASE_INFO_SPEED :{BLACK}속력: {GOLD}{VELOCITY} -STR_PURCHASE_INFO_SPEED_OCEAN :{BLACK}바다에서의 속도: {GOLD}{VELOCITY} -STR_PURCHASE_INFO_SPEED_CANAL :{BLACK}운하/강에서의 속도: {GOLD}{VELOCITY} -STR_PURCHASE_INFO_RUNNINGCOST :{BLACK}운행비용: {GOLD}{CURRENCY_LONG}/년 +STR_PURCHASE_INFO_SPEED_OCEAN :{BLACK}바다에서의 속력: {GOLD}{VELOCITY} +STR_PURCHASE_INFO_SPEED_CANAL :{BLACK}운하/강에서의 속력: {GOLD}{VELOCITY} +STR_PURCHASE_INFO_RUNNINGCOST :{BLACK}유지비: {GOLD}{CURRENCY_LONG}/년 STR_PURCHASE_INFO_CAPACITY :{BLACK}수송량: {GOLD}{CARGO_LONG} {STRING} STR_PURCHASE_INFO_REFITTABLE :(개조 가능) STR_PURCHASE_INFO_DESIGNED_LIFE :{BLACK}개발: {GOLD}{NUM}{BLACK} 수명: {GOLD}{COMMA}년 @@ -3187,13 +3361,13 @@ 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_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_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}차량 목록 - 차량 정보를 보려면 클릭 STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}선박 선택 목록 - 선박의 정보를 보려면 클릭하세요 STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}항공기 선택 목록 - 항공기 정보를 보려면 클릭하세요 @@ -3203,7 +3377,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+클릭으로 예상 구입 비용을 볼 수 있습니다. @@ -3212,15 +3386,15 @@ STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_BUTTON :{BLACK}이름 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_SHIP_RENAME_TOOLTIP :{BLACK}선박 타입의 이름 지정 -STR_BUY_VEHICLE_AIRCRAFT_RENAME_TOOLTIP :{BLACK}항공기의 이름을 변경합니다. +STR_BUY_VEHICLE_TRAIN_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_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}항공기의 이름을 변경합니다. +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}항공기의 차량 이름을 변경합니다. # Depot window STR_DEPOT_CAPTION :{WHITE}{DEPOT} @@ -3230,28 +3404,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}열차 - 열차 정보를 보려면 클릭, 차량을 드래그해서 추가하거나 삭제하세요 -STR_DEPOT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}차량 - 차량 정보를 보려면 클릭 -STR_DEPOT_SHIP_LIST_TOOLTIP :{BLACK}선박 - 선박의 정보를 보려면 클릭하세요 -STR_DEPOT_AIRCRAFT_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_SHIP_SELL_TOOLTIP :{BLACK}선박을 팔려면 여기로 드래그하세요 -STR_DEPOT_AIRCRAFT_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}이 격납고에 있는 모든 항공기를 자동으로 교체합니다. @@ -3260,64 +3434,64 @@ 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+Click하면 이 차량 기지의 위치를 기준으로 새로운 외부 화면을 엽니다. -STR_DEPOT_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}이 차고가 있는 곳으로 시점을 변경합니다. Ctrl+Click하면 이 차고 위치를 기준으로 새로운 외부 화면을 엽니다. -STR_DEPOT_SHIP_LOCATION_TOOLTIP :{BLACK}이 정박소의 위치로 시점을 변경합니다. Ctrl+Click하면 이 정박소의 위치를 기준으로 새로운 외부 화면을 엽니다. -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}모노레일 기관차 STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :{G=f}자기부상열차 -STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}가격: {CURRENCY_LONG} 무게: {WEIGHT_SHORT}{}속도: {VELOCITY} 힘: {POWER}{}운행비용: {CURRENCY_LONG}/년{}수송량: {CARGO_LONG} +STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}가격: {CURRENCY_LONG} 무게: {WEIGHT_SHORT}{}속력: {VELOCITY} 힘: {POWER}{}유지비: {CURRENCY_LONG}/년{}수송량: {CARGO_LONG} STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}비용: {CURRENCY_LONG} 무게: {WEIGHT_SHORT}{}속력: {VELOCITY} 힘: {POWER} 최대 T.E.: {6:FORCE}{}유지비: {4:CURRENCY_LONG}/년{}용량: {5:CARGO_LONG} -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST :{BLACK}가격: {CURRENCY_LONG} 최고속력: {VELOCITY}{}수송량: {CARGO_LONG}, {CARGO_LONG}{}운행비용: {CURRENCY_LONG}/년 -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK}가격: {CURRENCY_LONG} 최고속력: {VELOCITY}{}수송량: {CARGO_LONG}{}운행비용: {CURRENCY_LONG}/년 -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_CAPACITY_RUNCOST:{BLACK}가격: {CURRENCY_LONG} 최고 속력: {VELOCITY} 항속거리: {COMMA} 칸{}수용량: {CARGO_LONG}, {CARGO_LONG}{}운행비용: {CURRENCY_LONG}/년 -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}가격: {CURRENCY_LONG} 최고 속력: {VELOCITY} 항속거리: {COMMA} 칸{}수용량: {CARGO_LONG}{}운행비용: {CURRENCY_LONG}/년 +STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST :{BLACK}가격: {CURRENCY_LONG} 최고속력: {VELOCITY}{}수송량: {CARGO_LONG}, {CARGO_LONG}{}유지비: {CURRENCY_LONG}/년 +STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK}가격: {CURRENCY_LONG} 최고속력: {VELOCITY}{}수송량: {CARGO_LONG}{}유지비: {CURRENCY_LONG}/년 +STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_CAPACITY_RUNCOST:{BLACK}가격: {CURRENCY_LONG} 최고 속력: {VELOCITY} 항속거리: {COMMA} 칸{}수용량: {CARGO_LONG}, {CARGO_LONG}{}유지비: {CURRENCY_LONG}/년 +STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}가격: {CURRENCY_LONG} 최고 속력: {VELOCITY} 항속거리: {COMMA} 칸{}수용량: {CARGO_LONG}{}유지비: {CURRENCY_LONG}/년 # Autoreplace window -STR_REPLACE_VEHICLES_WHITE :{WHITE}{STRING}{G 0 "을" "를"} {STRING}{G 1 "으" ""}로 교체 +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}항공기 @@ -3328,23 +3502,23 @@ 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_REPLACING_WHEN_OLD :낡으면 {ENGINE}(으)로 교체 STR_REPLACE_VEHICLES_STOP :{BLACK}차량 교체 중지 STR_REPLACE_HELP_STOP_BUTTON :{BLACK}왼쪽에서 선택한 기관차 종류의 차량교체를 중지하려면 이 버튼을 누르세요. STR_REPLACE_ENGINE_WAGON_SELECT :{BLACK}교체중: {ORANGE}{STRING} -STR_REPLACE_ENGINE_WAGON_SELECT_HELP :{BLACK}기관차/화물차 교체 창을 번갈아 띄웁니다 +STR_REPLACE_ENGINE_WAGON_SELECT_HELP :{BLACK}기관차/화물차 교체 창으로 전환합니다. STR_REPLACE_ENGINES :기관차 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}자동 교체시 열차의 길이가 교체 전보다 길어지면 앞쪽부터 화물칸를 제거하여 열차의 전체 길이가 달라지지 않도록 합니다. @@ -3352,45 +3526,45 @@ STR_REPLACE_REMOVE_WAGON_HELP :{BLACK}자동 # Vehicle view STR_VEHICLE_VIEW_CAPTION :{WHITE}{VEHICLE} -STR_VEHICLE_VIEW_TRAIN_LOCATION_TOOLTIP :{BLACK}이 열차가 있는 곳으로 이동합니다. Ctrl+Click은 메인 뷰에서 이 열차를 따라갈것입니다. -STR_VEHICLE_VIEW_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}이 차량이 있는 곳으로 이동합니다. Ctrl+Click은 메인 뷰에서 이 차량을 따라갈것입니다. -STR_VEHICLE_VIEW_SHIP_LOCATION_TOOLTIP :{BLACK}이 선박이 있는 곳으로 이동합니다. Ctrl+Click은 메인 뷰에서 이 선박을 따라갈것입니다. -STR_VEHICLE_VIEW_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}이 항공기가 있는 곳으로 이동합니다. Ctrl+Click은 메인 뷰에서 이 항공기를 따라갈것입니다. +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_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_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+Click은 열차의 시간표를 보여줍니다. -STR_VEHICLE_VIEW_ROAD_VEHICLE_ORDERS_TOOLTIP :{BLACK}차량의 경로를 보여줍니다. Ctrl+Click은 차량의 시간표를 보여줍니다. -STR_VEHICLE_VIEW_SHIP_ORDERS_TOOLTIP :{BLACK}선박의 경로를 보여줍니다. Ctrl+Click은 선박의 시간표를 보여줍니다. -STR_VEHICLE_VIEW_AIRCRAFT_ORDERS_TOOLTIP :{BLACK}항공기의 경로를 보여줍니다. Ctrl+Click은 항공기의 시간표를 보여줍니다. +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}싣는 중 / 내리는 중 @@ -3398,7 +3572,7 @@ STR_VEHICLE_STATUS_LEAVING :{LTBLUE}떠남 STR_VEHICLE_STATUS_CRASHED :{RED}충돌!! STR_VEHICLE_STATUS_BROKEN_DOWN :{RED}고장 STR_VEHICLE_STATUS_STOPPED :{RED}정지함 -STR_VEHICLE_STATUS_TRAIN_STOPPING_VEL :{RED}{VELOCITY}의 속도로 정지중 +STR_VEHICLE_STATUS_TRAIN_STOPPING_VEL :{RED}멈추는 중, {VELOCITY} STR_VEHICLE_STATUS_TRAIN_NO_POWER :{RED}기관차 없음 STR_VEHICLE_STATUS_TRAIN_STUCK :{ORANGE}빈 경로 탐색중 STR_VEHICLE_STATUS_AIRCRAFT_TOO_FAR :{ORANGE}다음 목적지가 너무 멀리 있습니다. @@ -3420,11 +3594,11 @@ 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}항공기 이름 지정 -STR_VEHICLE_INFO_AGE_RUNNING_COST_YR :{BLACK}연령: {LTBLUE}{STRING}{BLACK} 운행비용: {LTBLUE}{CURRENCY_LONG}/년 +STR_VEHICLE_INFO_AGE_RUNNING_COST_YR :{BLACK}연령: {LTBLUE}{STRING}{BLACK} 유지비: {LTBLUE}{CURRENCY_LONG}/년 # The next two need to stay in this order STR_VEHICLE_INFO_AGE :{COMMA}년 ({COMMA}) STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA}년 ({COMMA}) @@ -3445,13 +3619,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+Click시 점검 주기를 5씩 증가시킵니다. -STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}점검 주기를 10씩 감소시킵니다. Ctrl+Click 시 점검 주기를 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_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}항공기 이름 지정 @@ -3485,20 +3664,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_TRAIN_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}선택한 화물을 싣도록 항공기를 개조합니다 @@ -3516,14 +3695,14 @@ STR_ORDERS_END_OF_SHARED_ORDERS :- - 공유된 # Order bottom buttons STR_ORDER_NON_STOP :{BLACK}통과 설정 -STR_ORDER_GO_TO :완행 +STR_ORDER_GO_TO :행선지 지정 STR_ORDER_GO_NON_STOP_TO :직행 STR_ORDER_GO_VIA :완행 경유 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 :싣지 않기 @@ -3537,17 +3716,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+Click은 제거입니다. 자동 개조 기능은 이 기능을 지원하는 차량에서만 사용가능합니다. +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}경로를 건너뛰기 위한 비교조건을 선택합니다. @@ -3556,7 +3735,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 :남은 수명 (년) @@ -3571,23 +3750,23 @@ STR_ORDER_CONDITIONAL_COMPARATOR_IS_TRUE :있을 때 STR_ORDER_CONDITIONAL_COMPARATOR_IS_FALSE :없을 때 STR_ORDER_CONDITIONAL_VALUE_TOOLTIP :{BLACK}비교조건에 대한 입력값입니다. -STR_ORDER_CONDITIONAL_VALUE_CAPT :{WHITE}비교할 값을 입력하세요 +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}이 경로를 공유하고 있는 모든 차량을 표시합니다. @@ -3595,8 +3774,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 :가까운 격납고 @@ -3606,7 +3785,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 :(멈춤) @@ -3614,36 +3793,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 :[중간] @@ -3667,16 +3846,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} 늦게 운행하고 있습니다 @@ -3685,7 +3868,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}이 시간표의 시작 날짜를 선택하세요. +STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}이 시간표의 시작 날짜를 선택하세요. CTRL+클릭하면 이 차량과 경로를 공유하는 모든 차량에 대하여, 만약 시간표가 완전히 작성되어 있다면 그 경로의 상대적인 순서에 따라 시간표의 시작점을 설정하고 적절히 분배합니다. STR_TIMETABLE_CHANGE_TIME :{BLACK}시간값 변경 STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}선택한 경로에서 소요되는 시간 값을 변경합니다. @@ -3693,21 +3876,21 @@ STR_TIMETABLE_WAIT_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}속도 제한값 초기화 +STR_TIMETABLE_CLEAR_SPEED :{BLACK}속력 제한값 초기화 STR_TIMETABLE_CLEAR_SPEED_TOOLTIP :{BLACK}선택한 경로의 최대 여행 속력 제한값을 초기화합니다. 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}예정 소요시간 기준 -STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}시간표 준수 기준을 도착 예정일 기준과 도착 예정 소요시간 기준 중에서 선택. +STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}시간표 검사 기준을 도착 예정일과 도착 예정 시간 기준 중에서 선택합니다. STR_TIMETABLE_ARRIVAL_ABBREVIATION :도착: STR_TIMETABLE_DEPARTURE_ABBREVIATION :출발: @@ -3723,48 +3906,48 @@ STR_DATE_YEAR_TOOLTIP :{BLACK}년(年) # AI debug window -STR_AI_DEBUG :{WHITE}AI / 게임 스크립트 디버그 +STR_AI_DEBUG :{WHITE}인공지능/게임 스크립트 디버그 STR_AI_DEBUG_NAME_AND_VERSION :{BLACK}{STRING} (v{NUM}) -STR_AI_DEBUG_NAME_TOOLTIP :{BLACK}AI의 이름 -STR_AI_DEBUG_SETTINGS :{BLACK}AI 설정 -STR_AI_DEBUG_SETTINGS_TOOLTIP :{BLACK}AI의 설정 변경 -STR_AI_DEBUG_RELOAD :{BLACK}AI 재시작 -STR_AI_DEBUG_RELOAD_TOOLTIP :{BLACK}AI를 종료시키고, 스크립트를 다시 불러와, AI를 재시작합니다 -STR_AI_DEBUG_BREAK_STR_ON_OFF_TOOLTIP :{BLACK}AI 로그 메세지가 break 문자열을 만날 때 AI를 중단할지 여부를 켜거나 끕니다. -STR_AI_DEBUG_BREAK_ON_LABEL :{BLACK}중단: -STR_AI_DEBUG_BREAK_STR_OSKTITLE :{BLACK}중단 +STR_AI_DEBUG_NAME_TOOLTIP :{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}인공지능 기록 메시지에서 중단 문구가 나타났을 때 인공지능을 중단할지 여부를 설정합니다. +STR_AI_DEBUG_BREAK_ON_LABEL :{BLACK}중단 문구: +STR_AI_DEBUG_BREAK_STR_OSKTITLE :{BLACK}중단 문구 STR_AI_DEBUG_BREAK_STR_TOOLTIP :{BLACK}인공지능 로그 메시지가 이 문자열과 일치하면 게임을 일시 정지시킵니다. -STR_AI_DEBUG_MATCH_CASE :{BLACK}일치 케이스 -STR_AI_DEBUG_MATCH_CASE_TOOLTIP :{BLACK}AI 로그 메세지를 중단 문자열과 비교할때 일치 케이스 검색으로 전환. +STR_AI_DEBUG_MATCH_CASE :{BLACK}대소문자 구분 +STR_AI_DEBUG_MATCH_CASE_TOOLTIP :{BLACK}인공지능 기록 메시지에서 중단 문구를 검색할 때 대소문자를 구분할지 여부를 선택합니다. STR_AI_DEBUG_CONTINUE :{BLACK}계속 -STR_AI_DEBUG_CONTINUE_TOOLTIP :{BLACK}AI 재개 및 계속됨 -STR_AI_DEBUG_SELECT_AI_TOOLTIP :{BLACK}이 AI의 디버그된 출력물을 봅니다. +STR_AI_DEBUG_CONTINUE_TOOLTIP :{BLACK}중단된 인공지능의 연산을 재개합니다. +STR_AI_DEBUG_SELECT_AI_TOOLTIP :{BLACK}이 인공지능에서 출력된 기록 메시지를 보여줍니다. STR_AI_GAME_SCRIPT :{G=f}{BLACK}게임 스크립트 STR_AI_GAME_SCRIPT_TOOLTIP :{BLACK}게임 스크립트 기록 체크 -STR_ERROR_AI_NO_AI_FOUND :불러올 인공지능이 없습니다.{}이 인공지능은 불용품이며 아무 기능도 하지 않을 것입니다.{}'온라인 컨텐츠 체크' 기능으로 다른 인공지능을 다운받으세요. +STR_ERROR_AI_NO_AI_FOUND :사용할 수 있는 인공지능이 없습니다.{}따라서 이 경쟁사는 아무 것도 하지 못하는 회사입니다.{}'온라인 컨텐츠 다운로드'에서 새로운 인공지능을 다운로드받으세요. STR_ERROR_AI_PLEASE_REPORT_CRASH :{WHITE}작동중인 스크립트 중 하나가 충돌했습니다. 인공지능 / 게임 스크립트 디버그 창에서 스크린샷을 찍어 스크립트 제작자에게 보고하십시오. -STR_ERROR_AI_DEBUG_SERVER_ONLY :{YELLOW}AI / 게임 스크립트 디버그창은 오직 서버만 사용 가능합니다 +STR_ERROR_AI_DEBUG_SERVER_ONLY :{YELLOW}인공지능/게임 스크립트 디버그창은 오직 서버만 사용 가능합니다 # AI configuration window STR_AI_CONFIG_CAPTION :{WHITE}인공지능 / 게임 스크립트 설정 STR_AI_CONFIG_GAMELIST_TOOLTIP :{BLACK}다음에 게임을 시작할 때 이 게임 스크립트를 불러올 것입니다. -STR_AI_CONFIG_AILIST_TOOLTIP :{BLACK}다음에 게임을 시작할 때 이 AI를 불러올 것입니다 +STR_AI_CONFIG_AILIST_TOOLTIP :{BLACK}다음에 게임을 시작할 때 이 인공지능을 불러올 것입니다 STR_AI_CONFIG_HUMAN_PLAYER :사용자 플레이어 STR_AI_CONFIG_RANDOM_AI :무작위 인공지능 STR_AI_CONFIG_NONE :{G=m}(없음) STR_AI_CONFIG_MOVE_UP :{BLACK}위로 이동 -STR_AI_CONFIG_MOVE_UP_TOOLTIP :{BLACK}선택된 AI를 항목의 위로 이동시킴. +STR_AI_CONFIG_MOVE_UP_TOOLTIP :{BLACK}목록에서 선택한 인공지능의 순서를 한 칸 위로 옮깁니다. STR_AI_CONFIG_MOVE_DOWN :{BLACK}아래로 이동 -STR_AI_CONFIG_MOVE_DOWN_TOOLTIP :{BLACK}선택된 AI를 항목의 아래로 이동시킴. +STR_AI_CONFIG_MOVE_DOWN_TOOLTIP :{BLACK}목록에서 선택한 인공지능의 순서를 한 칸 아래로 옮깁니다. STR_AI_CONFIG_GAMESCRIPT :{G=f}{SILVER}게임 스크립트 -STR_AI_CONFIG_AI :{G=f}{SILVER}AI +STR_AI_CONFIG_AI :{G=m}{SILVER}인공지능 STR_AI_CONFIG_CHANGE :{BLACK}{STRING} 선택하기 STR_AI_CONFIG_CHANGE_NONE : -STR_AI_CONFIG_CHANGE_AI :{G=f}AI +STR_AI_CONFIG_CHANGE_AI :{G=m}인공지능 STR_AI_CONFIG_CHANGE_GAMESCRIPT :{G=f}게임 스크립트 STR_AI_CONFIG_CHANGE_TOOLTIP :{BLACK}다른 스크립트 불러오기 STR_AI_CONFIG_CONFIGURE :{BLACK}설정 @@ -3772,33 +3955,35 @@ STR_AI_CONFIG_CONFIGURE_TOOLTIP :{BLACK}인공 # Available AIs window STR_AI_LIST_CAPTION :{WHITE}사용 가능한 {STRING} -STR_AI_LIST_CAPTION_AI :{G=f}AI +STR_AI_LIST_CAPTION_AI :{G=m}인공지능 STR_AI_LIST_CAPTION_GAMESCRIPT :{G=f}게임 스크립트 -STR_AI_LIST_TOOLTIP :{BLACK}클릭하여 AI를 선택하세요 +STR_AI_LIST_TOOLTIP :{BLACK}스크립트를 선택하려면 클릭하세요. STR_AI_LIST_AUTHOR :{LTBLUE}저자: {ORANGE}{STRING} STR_AI_LIST_VERSION :{LTBLUE}버전: {ORANGE}{NUM} STR_AI_LIST_URL :{LTBLUE}주소: {ORANGE}{STRING} STR_AI_LIST_ACCEPT :{BLACK}적용 -STR_AI_LIST_ACCEPT_TOOLTIP :{BLACK}선택한 AI 선택 +STR_AI_LIST_ACCEPT_TOOLTIP :{BLACK}선택한 스크립트를 적용합니다. STR_AI_LIST_CANCEL :{BLACK}취소 STR_AI_LIST_CANCEL_TOOLTIP :{BLACK}인공지능 스크립트를 바꾸지 않습니다 # AI Parameters STR_AI_SETTINGS_CAPTION :{WHITE}{STRING} 매개 변수 -STR_AI_SETTINGS_CAPTION_AI :AI +STR_AI_SETTINGS_CAPTION_AI :{G=m}인공지능 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 :마지막 AI 이후에 새로운 AI를 시작하기 위해 필요한 날짜 수: {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}저작권 @@ -3821,15 +4006,19 @@ 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} # Saveload messages STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}저장중입니다,{}끝날때까지 기다려주세요 STR_ERROR_AUTOSAVE_FAILED :{WHITE}자동 저장 실패 -STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}드라이브를 읽을 수 없음 +STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}드라이브를 읽을 수 없습니다. STR_ERROR_GAME_SAVE_FAILED :{WHITE}게임 저장 실패{}{STRING} -STR_ERROR_UNABLE_TO_DELETE_FILE :{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} @@ -3892,8 +4081,8 @@ 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_AIRPORT :{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}당신의 뇌물 수수 행위가 지역 당국에 의해 발각되었습니다! @@ -3912,7 +4101,7 @@ STR_ERROR_CAN_T_CHANGE_PRESIDENT :{WHITE}사장 STR_ERROR_MAXIMUM_PERMITTED_LOAN :{WHITE}... 허용된 최대 대출금은 {CURRENCY_LONG} 입니다. STR_ERROR_CAN_T_BORROW_ANY_MORE_MONEY :{WHITE}더이상 돈을 빌릴 수 없습니다... -STR_ERROR_LOAN_ALREADY_REPAYED :{WHITE}... 값아야할 대출금이 없습니다. +STR_ERROR_LOAN_ALREADY_REPAYED :{WHITE}... 값아야 할 대출금이 없습니다. STR_ERROR_CURRENCY_REQUIRED :{WHITE}...{CURRENCY_LONG} 필요합니다. STR_ERROR_CAN_T_REPAY_LOAN :{WHITE}대출금을 갚을 수 없습니다... STR_ERROR_INSUFFICIENT_FUNDS :{WHITE}은행에서 빌린 돈은 송금할 수 없습니다... @@ -3933,14 +4122,14 @@ STR_ERROR_TOO_MANY_TOWNS :{WHITE}... 도 STR_ERROR_NO_SPACE_FOR_TOWN :{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_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}... 한 도시에 하나만 건설 가능합니다! @@ -3959,8 +4148,8 @@ STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{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}여기에 승객 전차 정거장을 건설할 수 없습니다... -STR_ERROR_CAN_T_BUILD_CARGO_TRAM_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}여기에 공항을 만들 수 없습니다... @@ -3975,25 +4164,25 @@ 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_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_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_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}화물 전차 정거장을 먼저 제거하십시오. +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}공항을 먼저 제거하십시오! @@ -4012,14 +4201,14 @@ 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_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_TRAIN_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... 차량기지 안에 정지되어 있어야 합니다 -STR_ERROR_ROAD_VEHICLE_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}... 격납고 내에서 정지되어 있어야합 니다 @@ -4032,39 +4221,39 @@ 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_LOCAL_DEPOT :{WHITE}근처에 있는 차고지를 찾을 수 없습니다 STR_ERROR_DEPOT_WRONG_DEPOT_TYPE :잘못된 차량기지 종류 # Autoreplace related errors -STR_ERROR_TRAIN_TOO_LONG_AFTER_REPLACEMENT :{WHITE}{VEHICLE}{P "가" "이"} 교체된지 너무 오래되었습니다 +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_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}... 전찻길이 없습니다. @@ -4109,7 +4298,7 @@ STR_ERROR_TUNNEL_TOO_LONG :{WHITE}... 터 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}... 중간에 회사 HQ가 있습니다. +STR_ERROR_COMPANY_HEADQUARTERS_IN :{WHITE}... 중간에 회사 본사가 있습니다. STR_ERROR_CAN_T_PURCHASE_THIS_LAND :{WHITE}이 지역을 매입할 수 없습니다... STR_ERROR_YOU_ALREADY_OWN_IT :{WHITE}... 이미 소유중입니다! @@ -4117,67 +4306,73 @@ 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}항공기를 운행/중지시킬 수 없습니다... -STR_ERROR_CAN_T_SEND_TRAIN_TO_DEPOT :{WHITE}열차를 기지로 보낼 수 없습니다... -STR_ERROR_CAN_T_SEND_ROAD_VEHICLE_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}항공기를 격납고로 보낼 수 없습니다... 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_RENAME_TRAIN_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_RENAME_TRAIN_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}항공기를 팔 수 없습니다... -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_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_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}너무 위험해서 신호를 무시할 수 없습니다... 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}항공기가 운항중입니다 @@ -4212,7 +4407,17 @@ STR_ERROR_CAN_T_CHANGE_SIGN_NAME :{WHITE}팻말 STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}팻말을 삭제할 수 없습니다... # Translatable comment for OpenTTD's desktop shortcut -STR_DESKTOP_SHORTCUT_COMMENT :트랜스포트 타이쿤 디럭스에 기초한 시뮬레이션 게임 +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_BASESOUNDS_DOS_DESCRIPTION :오리지널 트랜스포트 타이쿤 도스 에디션의 효과음입니다. +STR_BASESOUNDS_WIN_DESCRIPTION :오리지널 트랜스포트 타이쿤 디럭스 윈도 에디션의 효과음입니다. +STR_BASESOUNDS_NONE_DESCRIPTION :아무런 효과음도 없는 효과음 팩입니다. +STR_BASEMUSIC_WIN_DESCRIPTION :오리지널 트랜스포트 타이쿤 디럭스 윈도 에디션의 음악입니다. +STR_BASEMUSIC_NONE_DESCRIPTION :실제 음악이 없는 음악 목록입니다. ##id 0x2000 # Town building names @@ -4255,48 +4460,48 @@ STR_TOWN_BUILDING_NAME_PIGGY_BANK_1 :돼지 저금 STR_INDUSTRY_NAME_COAL_MINE :{G=m}탄광 STR_INDUSTRY_NAME_POWER_STATION :{G=f}발전소 STR_INDUSTRY_NAME_SAWMILL :{G=f}제재소 -STR_INDUSTRY_NAME_FOREST :숲 +STR_INDUSTRY_NAME_FOREST :{G=m}숲 STR_INDUSTRY_NAME_OIL_REFINERY :{G=m}정유 공장 -STR_INDUSTRY_NAME_OIL_RIG :유전 -STR_INDUSTRY_NAME_FACTORY :공장 -STR_INDUSTRY_NAME_PRINTING_WORKS :인쇄소 +STR_INDUSTRY_NAME_OIL_RIG :{G=m}유전 +STR_INDUSTRY_NAME_FACTORY :{G=m}공장 +STR_INDUSTRY_NAME_PRINTING_WORKS :{G=f}인쇄소 STR_INDUSTRY_NAME_STEEL_MILL :{G=f}제철소 -STR_INDUSTRY_NAME_FARM :농장 -STR_INDUSTRY_NAME_COPPER_ORE_MINE :구리 광산 -STR_INDUSTRY_NAME_OIL_WELLS :유정 -STR_INDUSTRY_NAME_BANK :은행 -STR_INDUSTRY_NAME_FOOD_PROCESSING_PLANT :식품 처리 공장 -STR_INDUSTRY_NAME_PAPER_MILL :제지소 +STR_INDUSTRY_NAME_FARM :{G=m}농장 +STR_INDUSTRY_NAME_COPPER_ORE_MINE :{G=m}구리 광산 +STR_INDUSTRY_NAME_OIL_WELLS :{G=m}유정 +STR_INDUSTRY_NAME_BANK :{G=m}은행 +STR_INDUSTRY_NAME_FOOD_PROCESSING_PLANT :{G=m}식품 처리 공장 +STR_INDUSTRY_NAME_PAPER_MILL :{G=f}제지소 STR_INDUSTRY_NAME_GOLD_MINE :{G=m}금광 -STR_INDUSTRY_NAME_BANK_TROPIC_ARCTIC :은행 -STR_INDUSTRY_NAME_DIAMOND_MINE :다이아몬드 광산 -STR_INDUSTRY_NAME_IRON_ORE_MINE :철 광산 -STR_INDUSTRY_NAME_FRUIT_PLANTATION :과일 농장 -STR_INDUSTRY_NAME_RUBBER_PLANTATION :고무 농장 -STR_INDUSTRY_NAME_WATER_SUPPLY :상수도 -STR_INDUSTRY_NAME_WATER_TOWER :급수탑 -STR_INDUSTRY_NAME_FACTORY_2 :공장 -STR_INDUSTRY_NAME_FARM_2 :농장 -STR_INDUSTRY_NAME_LUMBER_MILL :제목소 -STR_INDUSTRY_NAME_COTTON_CANDY_FOREST :솜사탕 숲 -STR_INDUSTRY_NAME_CANDY_FACTORY :사탕 공장 -STR_INDUSTRY_NAME_BATTERY_FARM :배터리 농장 -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_BUBBLE_GENERATOR :거품 제조 공장 -STR_INDUSTRY_NAME_TOFFEE_QUARRY :태피 채취장 -STR_INDUSTRY_NAME_SUGAR_MINE :설탕 광산 +STR_INDUSTRY_NAME_BANK_TROPIC_ARCTIC :{G=m}은행 +STR_INDUSTRY_NAME_DIAMOND_MINE :{G=m}다이아몬드 광산 +STR_INDUSTRY_NAME_IRON_ORE_MINE :{G=m}철 광산 +STR_INDUSTRY_NAME_FRUIT_PLANTATION :{G=m}과일 농장 +STR_INDUSTRY_NAME_RUBBER_PLANTATION :{G=m}고무 농장 +STR_INDUSTRY_NAME_WATER_SUPPLY :{G=f}상수도 +STR_INDUSTRY_NAME_WATER_TOWER :{G=m}급수탑 +STR_INDUSTRY_NAME_FACTORY_2 :{G=m}공장 +STR_INDUSTRY_NAME_FARM_2 :{G=m}농장 +STR_INDUSTRY_NAME_LUMBER_MILL :{G=f}제재소 +STR_INDUSTRY_NAME_COTTON_CANDY_FOREST :{G=m}솜사탕 숲 +STR_INDUSTRY_NAME_CANDY_FACTORY :{G=m}사탕 공장 +STR_INDUSTRY_NAME_BATTERY_FARM :{G=m}건전지 농장 +STR_INDUSTRY_NAME_COLA_WELLS :{G=m}콜라 우물 +STR_INDUSTRY_NAME_TOY_SHOP :{G=f}장난감 가게 +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_SUGAR_MINE :{G=m}설탕 광산 ############ 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 :이름 없음 +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} @@ -4336,7 +4541,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 (증기) @@ -4378,12 +4583,12 @@ 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 :사탕 수송차량 STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_TOY_VAN :장난감 수송차량 -STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_BATTERY_TRUCK :배터리 수송차량 +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_BATTERY_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' (전기) @@ -4407,13 +4612,13 @@ STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_WATER_TANKER :물 수송차 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_COTTON_CANDY_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 :사탕 수송차량 STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_TOY_VAN :장난감 수송차량 -STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_BATTERY_TRUCK :배터리 수송차량 +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' (전기) @@ -4440,18 +4645,18 @@ 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 :사탕 수송차량 STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_TOY_VAN :장난감 수송차량 -STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_BATTERY_TRUCK :배터리 수송차량 +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_BATTERY_TRUCK :건전지 수송차량 STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FIZZY_DRINK_TRUCK :탄산음료 수송차량 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 버스 @@ -4509,33 +4714,33 @@ 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 설탕 수송차 -STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_COLA_TRUCK :MightyMover 콜라 트럭 -STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_COLA_TRUCK :Powernaught 콜라 트럭 -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_COLA_TRUCK :MightyMover 콜라 수송차 +STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_COLA_TRUCK :Powernaught 콜라 수송차 +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_TOY_VAN :MightyMover 장난감 수송차 STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_TOY_VAN :Powernaught 장난감 수송차 STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_TOY_VAN :Wizzowow 장난감 수송차 -STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_CANDY_TRUCK :MightyMover 사탕 트럭 -STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_CANDY_TRUCK :Powernaught 사탕 트럭 -STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_CANDY_TRUCK :Wizzowow 사탕 트럭 -STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_BATTERY_TRUCK :MightyMover 배터리 수송차 -STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_BATTERY_TRUCK :Powernaught 배터리 수송차 -STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_BATTERY_TRUCK :Wizzowow 배터리 수송차 +STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_CANDY_TRUCK :MightyMover 사탕 수송차 +STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_CANDY_TRUCK :Powernaught 사탕 수송차 +STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_CANDY_TRUCK :Wizzowow 사탕 수송차 +STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_BATTERY_TRUCK :MightyMover 건전지 수송차 +STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_BATTERY_TRUCK :Powernaught 건전지 수송차 +STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_BATTERY_TRUCK :Wizzowow 건전지 수송차 STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_FIZZY_DRINK :MightyMover 탄산음료 수송차 STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_FIZZY_DRINK :Powernaught 탄산음료 수송차 STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_FIZZY_DRINK_TRUCK :Wizzowow 탄산음료 수송차 STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_PLASTIC_TRUCK :MightyMover 플라스틱 수송차 STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_PLASTIC_TRUCK :Powernaught 플라스틱 수송차 STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_PLASTIC_TRUCK :Wizzowow 플라스틱 수송차 -STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_BUBBLE_TRUCK :MightyMover 거품 트럭 -STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_BUBBLE_TRUCK :Powernaught 거품 트럭 -STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_BUBBLE_TRUCK :Wizzowow 거품 트럭 +STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_BUBBLE_TRUCK :MightyMover 거품 수송차 +STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_BUBBLE_TRUCK :Powernaught 거품 수송차 +STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_BUBBLE_TRUCK :Wizzowow 거품 수송차 STR_VEHICLE_NAME_SHIP_MPS_OIL_TANKER :MPS 유조선 STR_VEHICLE_NAME_SHIP_CS_INC_OIL_TANKER :㈜CS사 유조선 STR_VEHICLE_NAME_SHIP_MPS_PASSENGER_FERRY :MPS 여객선 @@ -4545,7 +4750,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 @@ -4660,8 +4865,9 @@ 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_SPACE_STRING :{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} @@ -4685,9 +4891,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/latvian.txt b/src/lang/latvian.txt index 09898126c..0bb569f39 100644 --- a/src/lang/latvian.txt +++ b/src/lang/latvian.txt @@ -193,7 +193,7 @@ STR_COLOUR_GREY :Pelēka STR_COLOUR_WHITE :Balta # Units used in OpenTTD -STR_UNITS_VELOCITY_IMPERIAL :{COMMA} jūdzes/h +STR_UNITS_VELOCITY_IMPERIAL :{COMMA} jūdzes stundā STR_UNITS_VELOCITY_METRIC :{COMMA} km/h STR_UNITS_VELOCITY_SI :{COMMA} m/s @@ -201,21 +201,28 @@ STR_UNITS_POWER_IMPERIAL :{COMMA} ZS STR_UNITS_POWER_METRIC :{COMMA} ZS 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} tonn{P a as u} STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} tonn{P a as u} 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 s i u} STR_UNITS_VOLUME_LONG_METRIC :{COMMA} litr{P s i u} 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} pēdas +STR_UNITS_HEIGHT_METRIC :{COMMA} m STR_UNITS_HEIGHT_SI :{COMMA} m # Common window strings @@ -223,6 +230,7 @@ STR_LIST_FILTER_TITLE :{BLACK}Filtra v 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,7 +242,7 @@ 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 @@ -258,7 +266,6 @@ STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}Laukums: # These are used in buttons -STR_SORT_BY_CAPTION_POPULATION :{BLACK}Iedzīvotāju skaits STR_SORT_BY_CAPTION_NAME :{BLACK}Nosaukums STR_SORT_BY_CAPTION_DATE :{BLACK}Datums # These are used in dropdowns @@ -279,7 +286,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 :gaidošās kravas vērtības +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) @@ -291,6 +299,8 @@ STR_SORT_BY_RUNNING_COST :kārtējām izm STR_SORT_BY_POWER_VS_RUNNING_COST :jaudas/kārtējām izmaksām STR_SORT_BY_CARGO_CAPACITY :kravnesības STR_SORT_BY_RANGE :apgabala +STR_SORT_BY_POPULATION :iedzīvotāju skaita +STR_SORT_BY_RATING :vērtējuma # Tooltips for the main toolbar STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Pauzēt spēli @@ -303,6 +313,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 @@ -373,19 +385,18 @@ STR_FILE_MENU_SEPARATOR : STR_FILE_MENU_EXIT :Iziet ############ range ends here -############ range for map menu starts +# map menu STR_MAP_MENU_MAP_OF_WORLD :Pasaules karte STR_MAP_MENU_EXTRA_VIEW_PORT :Papildu skatvieta STR_MAP_MENU_SIGN_LIST :Zīmju saraksts -############ range for town menu starts, yet the town directory is shown in the map menu in the scenario editor + +############ range for town menu starts STR_TOWN_MENU_TOWN_DIRECTORY :Pilsētu saraksts -############ end of the 'Display map' dropdown STR_TOWN_MENU_FOUND_TOWN :Dibināt pilsētu -############ end of the 'Town' dropdown +############ range ends here ############ range for subsidies menu starts STR_SUBSIDIES_MENU_SUBSIDIES :Subsīdijas -STR_SUBSIDIES_MENU_GOAL :Kārtējie mērķi ############ range ends here ############ range for graph menu starts @@ -459,7 +470,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. @@ -475,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 @@ -652,7 +681,7 @@ STR_HIGHSCORE_PERFORMANCE_TITLE_CAPITALIST :Kapitālists STR_HIGHSCORE_PERFORMANCE_TITLE_MAGNATE :Magnāts STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL :Moguls STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY :Gadsimta biržas magnāts -STR_HIGHSCORE_NAME :{BIG_FONT}{PRESIDENT_NAME}, {COMPANY} +STR_HIGHSCORE_NAME :{PRESIDENT_NAME}, {COMPANY} STR_HIGHSCORE_STATS :{BIG_FONT}'{STRING}' ({COMMA}) STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{BLACK}{COMPANY} sasniedzis '{STRING}' stāvokli! STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{WHITE}{PRESIDENT_NAME} no {COMPANY} sasnieguši '{STRING}' stāvokli! @@ -707,6 +736,7 @@ STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLA STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Rādīt/nerādīt pilsētu nosaukumus uz kartes STR_SMALLMAP_CENTER :{BLACK}Centrēt minikarti uz pašreizējo pozīciju 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}Atspējot visu @@ -793,13 +823,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 @@ -878,15 +906,12 @@ STR_GAME_OPTIONS_CURRENCY_LTL :Lietuvas liti ( STR_GAME_OPTIONS_CURRENCY_KRW :Dienvidkorejas vonas (KRW) STR_GAME_OPTIONS_CURRENCY_ZAR :Dienvidāfrikas rendi (ZAR) STR_GAME_OPTIONS_CURRENCY_CUSTOM :Cita... +STR_GAME_OPTIONS_CURRENCY_GEL :Gruzijas lari (GEL) +STR_GAME_OPTIONS_CURRENCY_IRR :Irānas riāli (IRR) ############ end of currency region -STR_GAME_OPTIONS_MEASURING_UNITS_FRAME :{BLACK}Mērvienības -STR_GAME_OPTIONS_MEASURING_UNITS_DROPDOWN_TOOLTIP :{BLACK}Mērvienību izvēle ############ start of measuring units region -STR_GAME_OPTIONS_MEASURING_UNITS_IMPERIAL :Britu -STR_GAME_OPTIONS_MEASURING_UNITS_METRIC :Metriskās -STR_GAME_OPTIONS_MEASURING_UNITS_SI :Starptautiskās (SI) ############ end of measuring units region STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Autotransporta līdzekļi @@ -924,11 +949,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 +############ end of autosave dropdown STR_GAME_OPTIONS_LANGUAGE :{BLACK}Valoda STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Saskarnes valodas izvēle @@ -940,9 +967,6 @@ 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_BASE_GRF :{BLACK}Pamata grafikas kopa STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Atlasīt lietošanai pamata grafikas kopu STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} iztrūkstošs/bojāts fail{P s i ""} @@ -1056,7 +1080,6 @@ 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_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 @@ -1065,7 +1088,7 @@ STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :Iestatījumi ar 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) @@ -1095,13 +1118,12 @@ STR_CONFIG_SETTING_CONSTRUCTION_SPEED :Būvēšanas ā 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} +STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :Iestatīt būvēšanas un pirkumu izmaksas STR_CONFIG_SETTING_RECESSIONS :Lejupslīde: {STRING} STR_CONFIG_SETTING_TRAIN_REVERSING :Neatļaut vilcienu apgriešanos stacijās: {STRING} 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_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} @@ -1126,14 +1148,8 @@ 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_TUNNEL_LENGTH :Maksimālais tuneļu garums: {STRING} @@ -1161,8 +1177,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 @@ -1193,10 +1207,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} @@ -1204,7 +1214,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ē @@ -1253,8 +1263,6 @@ STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Augstumu kartes 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 @@ -1301,17 +1309,13 @@ 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_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} @@ -1342,14 +1346,21 @@ STR_CONFIG_SETTING_EXPENSES_LAYOUT :Grupēt izdevum STR_CONFIG_SETTING_EXPENSES_LAYOUT_HELPTEXT :Noteikt uzņēmuma izdevumu loga izkārtojumu STR_CONFIG_SETTING_SOUND_TICKER :Jaunumu josla: {STRING} +STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :Atskaņot apkopotu jaunumu ziņojumu skaņu 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ņ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ņ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} +STR_CONFIG_SETTING_SOUND_DISASTER_HELPTEXT :Atskaņot negadījumu un katastrofu skaņu efektus 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ē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 @@ -1399,20 +1410,35 @@ STR_CONFIG_SETTING_DISABLE_ELRAILS :Atspējot elekt STR_CONFIG_SETTING_DISABLE_ELRAILS_HELPTEXT :Šī iestatījuma ieslēgšana atcels ceļu elektrifikācijas prasību, lai pa tiem varētu pārvietoties elektrolokomotīves STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN :Spēlētaja stacijā ierodas pirmais transportlīdzeklis: {STRING} +STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN_HELPTEXT :Rādīt avīzi kad spēlētāja jaunajā stacijā ierodas pirmais transportlīdzeklis 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_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_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_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} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY_HELPTEXT :Rādīt avīzi kad mainās uzņēmuma darbināto ražotņu ražošanas līmenis STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER :Ražošanas izmaiņas sāncenšu apkalpotajās ražotnēs: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER_HELPTEXT :Rādīt avīzi kad mainās sāncenšu darbināto ražotņu ražošanas līmenis STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED :Citas ražošanas apjomu izmaiņas: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED_HELPTEXT :Rādīt avīzi kad mainās uzņēmuma vai sāncenšu nedarbināto ražotņu ražošanas līmenis STR_CONFIG_SETTING_NEWS_ADVICE :Padomi / informācija par uzņēmuma transportlīdzekļiem: {STRING} +STR_CONFIG_SETTING_NEWS_ADVICE_HELPTEXT :Rādīt ziņojumus par transportlīdzekļiem, kuriem ir jāpievērš uzmanību STR_CONFIG_SETTING_NEWS_NEW_VEHICLES :Jauni transportlīdzekļi: {STRING} +STR_CONFIG_SETTING_NEWS_NEW_VEHICLES_HELPTEXT :Rādīt avīzi kad transportlīdzekļa veids ir kļuvis pieejams STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE :Izmaiņas kravu pieņemšanā: {STRING} +STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE_HELPTEXT :Rādīt ziņojumus par izmaiņām dažu kravu pieņemšanā stacijās STR_CONFIG_SETTING_NEWS_SUBSIDIES :Subsīdijas: {STRING} +STR_CONFIG_SETTING_NEWS_SUBSIDIES_HELPTEXT :Rādīt avīzi par notikumiem, saistītiem ar subsīdijām STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION :Vispārējā informācija: {STRING} +STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION_HELPTEXT :Rādīt avīzi par vispārējiem pasākumiem, tādiem kā izņēmuma tiesību pirkšana vai ceļu rekonstrukcijas finansēšana STR_CONFIG_SETTING_NEWS_MESSAGES_OFF :izslēgts STR_CONFIG_SETTING_NEWS_MESSAGES_SUMMARY :kopsavilkums @@ -1430,7 +1456,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} @@ -1504,28 +1530,62 @@ 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_GUI :{ORANGE}Saskarne -STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}Būvniecība +STR_CONFIG_SETTING_DISTRIBUTION_MANUAL :manuāli +STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC :asimetriska +STR_CONFIG_SETTING_DISTRIBUTION_SYMMETRIC :simetriska +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 :Vai lietotāja saskarnē rāda svaru, rādīt 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 :Vai lietotāja saskarnē rāda tilpumu, rādīt 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 :Vai lietotāja saskarnē rāda vilcējspēku, rādīt 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 :Vai lietotāja saskarnē rāda augstumu, rādīt 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_SOUND :{ORANGE}Skaņas efekti +STR_CONFIG_SETTING_INTERFACE :{ORANGE}Saskarne +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Būvniecī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_ROUTING :{ORANGE}Pārvietošanās +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 @@ -1554,11 +1614,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} @@ -1680,6 +1741,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 @@ -1735,10 +1797,9 @@ 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_CONNECTION :{BLACK}Savienojums: -STR_NETWORK_SERVER_LIST_CONNECTION_TOOLTIP :{BLACK}Izvēlēties starp spēli internetā vai spēli lokālajā tīklā -STR_NETWORK_SERVER_LIST_LAN :LAN -STR_NETWORK_SERVER_LIST_INTERNET :Internets +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: STR_NETWORK_SERVER_LIST_ENTER_NAME_TOOLTIP :{BLACK}Pēc šā vārda jūs atpazīs citi spēlētāji @@ -1797,8 +1858,8 @@ STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP :{BLACK}Spēles STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}Uzstādīt paroli STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Aizsargā jūsu spēli ar paroli, ja nevēlaties lai tā būtu publiski pieejama -STR_NETWORK_START_SERVER_LAN_INTERNET :LAN / internets -STR_NETWORK_START_SERVER_INTERNET_ADVERTISE :Internets (izsludināt) +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_TOOLTIP :{BLACK}Izvēlēties maksimālo spēlētāju skaitu. Ne visiem slotiem ir jābūt aizpildītiem @@ -1919,6 +1980,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 @@ -1931,7 +1993,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 @@ -2015,7 +2077,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} @@ -2037,6 +2099,9 @@ STR_CONTENT_SELECT_UPDATES_CAPTION :{BLACK}Atlasīt STR_CONTENT_SELECT_UPDATES_CAPTION_TOOLTIP :{BLACK}Atzīmēt visu saturu lejupielādei, lai tas ir jauninājums jau esošajam STR_CONTENT_UNSELECT_ALL_CAPTION :{BLACK}Atcelt visu atlasi STR_CONTENT_UNSELECT_ALL_CAPTION_TOOLTIP :{BLACK}Noņemt visas satura lejupielādes atzīmes +STR_CONTENT_SEARCH_EXTERNAL :{BLACK}Meklēt ārējās vietnēs +STR_CONTENT_SEARCH_EXTERNAL_TOOLTIP :{BLACK}Meklēt OpenTTD pakalpojumos nepieejamu saturu ar OpenTTD nesaistītās vietnēs +STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER_CAPTION :{WHITE}Jūs aizejat no OpenTTD! STR_CONTENT_FILTER_TITLE :{BLACK}Atzīmju/nosaukumu filtrs: STR_CONTENT_OPEN_URL :{BLACK}Apmeklēt tīmekļa vietni STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}Apmeklēt tīmekļa vietni, lai tiktu pie šī satura @@ -2106,6 +2171,11 @@ STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}Pārslē STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Pārslēgt piekraušanas rādītāju caurspīdību. Ctrl+klikšķis, lai slēgtu 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 + # Base for station construction window(s) STR_STATION_BUILD_COVERAGE_AREA_TITLE :{BLACK}Pārklājuma iezīmēšana STR_STATION_BUILD_COVERAGE_OFF :{BLACK}Nav @@ -2310,7 +2380,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 @@ -2409,6 +2479,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 @@ -2505,7 +2576,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-2012 OpenTTD darba grupa +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2014 OpenTTD darba grupa # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Saglabāt spēli @@ -2541,10 +2612,6 @@ STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Ražotņ 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: @@ -2571,7 +2638,6 @@ 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_SNOW_LINE_QUERY_CAPT :{WHITE}Mainīt sniega līnijas augstumu STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Mainīt sākuma gadu @@ -2630,7 +2696,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 @@ -2650,6 +2716,8 @@ 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 + # NewGRF parameters window STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}Mainīt NewGRF parametrus STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Aizvērt @@ -2711,6 +2779,7 @@ STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Satur vairākus Action 8 ierakstus (gariņš {3:NUM}) STR_NEWGRF_ERROR_READ_BOUNDS :Lasīt aiz pseidogariņa beigām (gariņš {3:NUM}) STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}Pašlaik lietotajai pamata grafikas kopai trūkst daļa gariņu.{}Lūdzu atjauniniet pamata grafikas kopu +STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}Pašlaik lietotajai pamata grafikas kopai trūkst daļa gariņu.{}Lūdzu atjauniniet pamata grafikas kopu.{}Tā kā jūs spēlējat {YELLOW}OpenTTD izstrādes momentuzņēmumu{WHITE}, jums varētu būt nepieciešams arī {YELLOW}pamata grafikas izstrādes momentuzņēmums{WHITE} STR_NEWGRF_ERROR_GRM_FAILED :Pieprasītie GRF resursi nav pieejami (gariņš {3:NUM}) STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} ar {2:STRING} tika atspējots STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Nederīgs/nezināms gariņa izkārtojuma formāts (gariņš {3:NUM}) @@ -2751,6 +2820,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... @@ -2810,7 +2882,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 @@ -2833,10 +2905,14 @@ STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT :{YELLOW}Pirkt 1 STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}Piekukuļot vietējo pašvaldību lai paceltu reitingu, riskējot saņemt lielu sodu.{}Izmaksas: {CURRENCY_LONG} # Goal window -STR_GOALS_CAPTION :{WHITE}Mērķi +STR_GOALS_CAPTION :{WHITE}{COMPANY} mērķi +STR_GOALS_SPECTATOR_CAPTION :{WHITE}Globālie mērķi 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: STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Klikšķināt uz mērķa, lai centrētu galveno skatu uz ražotni/pilsētu/lauciņu. Ctrl+klikšķis atver jaunu skatvietu uz ražotni/pilsētu/lauciņu @@ -2877,6 +2953,17 @@ STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}Pašlaik STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING} no {STRING} uz {STRING}{YELLOW} ({COMPANY}{YELLOW}, līdz {DATE_SHORT}) 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 STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}Aizturēt Ctrl, lai izvēlētos vairākus @@ -2890,9 +2977,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 @@ -2903,8 +2989,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_CARGO_RATINGS_TITLE :{BLACK}Transporta pakalpojumu vietējais vērtējums: -STR_STATION_VIEW_CARGO_RATING :{WHITE}{STRING}: {YELLOW}{STRING} ({COMMA}%) +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 @@ -3031,7 +3140,6 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS :{WHITE}Kanāli STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}Stacijas: STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}Staciju lauciņi STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}Lidostas -STR_COMPANY_INFRASTRUCTURE_VIEW_COST :{WHITE}{1:CURRENCY_LONG} gadā ({0:COMMA}) STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL :{WHITE}{CURRENCY_LONG} gadā # Industry directory @@ -3072,10 +3180,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}) @@ -3095,8 +3203,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} @@ -3111,12 +3219,13 @@ 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_GROUP_ADD_SHARED_VEHICLE :Pievienot kopīgos transportlīdzekļus STR_GROUP_REMOVE_ALL_VEHICLES :Novākt visus transportlīdzekļus @@ -3196,9 +3305,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 @@ -3324,19 +3433,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 @@ -3412,6 +3521,11 @@ STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Apkopes 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 + STR_QUERY_RENAME_TRAIN_CAPTION :{WHITE}Nosaukt vilcienu STR_QUERY_RENAME_ROAD_VEHICLE_CAPTION :{WHITE}Nosaukt autotransporta līdzekli STR_QUERY_RENAME_SHIP_CAPTION :{WHITE}Nosaukt kuģi @@ -3647,7 +3761,6 @@ STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}Šis sar STR_TIMETABLE_STATUS_START_AT :{BLACK}Šis saraksts sāksies {STRING} STR_TIMETABLE_STARTING_DATE :{BLACK}Sākuma datums -STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Izvēlēties sākuma datumu šim sarakstam STR_TIMETABLE_CHANGE_TIME :{BLACK}Mainīt laiku STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Mainīt iezīmētajam maršrutam nepieciešamo laiku @@ -3704,7 +3817,7 @@ STR_AI_DEBUG_SELECT_AI_TOOLTIP :{BLACK}Attēlot STR_AI_GAME_SCRIPT :{BLACK}Spēles skripts STR_AI_GAME_SCRIPT_TOOLTIP :{BLACK}Pārbaudīt spēles skriptu žurnālu -STR_ERROR_AI_NO_AI_FOUND :Nav atrasts piemērots MI.{}Šis ir MI makets un spēlē tas neko nedarīs.{}Jūs varat lejupielādēt vairākus MI no globālās satura sistēmas +STR_ERROR_AI_NO_AI_FOUND :Nav atrasts ielādei piemērots MI.{}Šis ir MI makets un spēlē tas neko nedarīs.{}Jūs varat lejupielādēt dažus MI no 'Tiešsaistes satura' sistēmas STR_ERROR_AI_PLEASE_REPORT_CRASH :{WHITE}Viens no strādājošiem skriptiem nobruka. Lūdzu, paziņojiet par šo gadījumu skripta autoram, pievienojot ekrānuzņēmumu ar MI/spēles skriptu atkļūdošanas logu STR_ERROR_AI_DEBUG_SERVER_ONLY :{YELLOW}MI/spēles skriptu atkļūdošanas logs ir pieejams tikai serverim @@ -3736,7 +3849,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} @@ -3761,6 +3874,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 @@ -3823,6 +3938,8 @@ STR_WARNING_HEIGHTMAP_SCALE_MESSAGE :{YELLOW}Nav iet STR_WARNING_FALLBACK_SOUNDSET :{WHITE}Atrasts tikai iestrādātais skaņu komplekts. Ja vēlaties skaņas, instalējiet komplektu no satura lejupielādes sistēmas # Screenshot related messages +STR_WARNING_SCREENSHOT_SIZE_CAPTION :{WHITE}Milzīgs ekrānuzņēmums +STR_WARNING_SCREENSHOT_SIZE_MESSAGE :{YELLOW}Ekrānuzņēmumam būs {COMMA} x {COMMA} pikseļu liela izšķirtspēja. Ekrānuzņēmuma uzņemšana var aizņemt kādu brīdi. Vai jūs vēlaties turpināt? STR_MESSAGE_SCREENSHOT_SUCCESSFULLY :{WHITE}Ekrānuzņēmums veiksmīgi saglabāts kā '{STRING}' STR_ERROR_SCREENSHOT_FAILED :{WHITE}Ekrānuzņēmums neizdevās! @@ -4132,6 +4249,11 @@ 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... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Vilcienu nevar apgriezt... @@ -4174,6 +4296,10 @@ STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}Nevar dz # Translatable comment for OpenTTD's desktop shortcut 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 STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1 :Biroju augstceltne @@ -4296,7 +4422,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) @@ -4505,7 +4631,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 @@ -4577,7 +4703,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}) @@ -4620,8 +4746,9 @@ 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_SPACE_STRING :{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} @@ -4645,9 +4772,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 d95390ffa..2bd1496be 100644 --- a/src/lang/lithuanian.txt +++ b/src/lang/lithuanian.txt @@ -27,7 +27,7 @@ STR_UNDEFINED :(neapibrėžta STR_JUST_NOTHING :Nieko STR_JUST_NOTHING.kas :Niekas STR_JUST_NOTHING.ko :Nieko -STR_JUST_NOTHING.kam :Niekui +STR_JUST_NOTHING.kam :Niekam STR_JUST_NOTHING.ka :Nieką STR_JUST_NOTHING.kuo :Nieku STR_JUST_NOTHING.kur :Niekur @@ -394,21 +394,28 @@ STR_UNITS_POWER_IMPERIAL :{COMMA}AG STR_UNITS_POWER_METRIC :{COMMA}AG 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 os ų} STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} ton{P a os ų} 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 as ai ų} STR_UNITS_VOLUME_LONG_METRIC :{COMMA} litr{P as ai ų} 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 @@ -416,10 +423,11 @@ STR_LIST_FILTER_TITLE :{BLACK}Raktažo STR_LIST_FILTER_OSKTITLE :{BLACK}Įveskite filtro raktažodį STR_LIST_FILTER_TOOLTIP :{BLACK}Įveskite raktažodį sąrašui filtruoti +STR_TOOLTIP_GROUP_ORDER :{BLACK}Pasirinkti grupavimo tvarką 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 @@ -427,6 +435,7 @@ STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Užverti 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_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 STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Pakeisti lango matmenis @@ -451,43 +460,45 @@ STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}Sritis: # These are used in buttons -STR_SORT_BY_CAPTION_POPULATION :{BLACK}Populiaciją -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 :Laukiančio krovinio vertę -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_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šą @@ -496,6 +507,8 @@ STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Rodyti s STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Rodyti stotelių sąrašą STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Rodyti kompanijos finansinę informaciją STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Rodyti bendrąją kompanijos informaciją +STR_TOOLBAR_TOOLTIP_DISPLAY_STORY_BOOK :{BLACK}Rodyti scenarijų knygą +STR_TOOLBAR_TOOLTIP_DISPLAY_GOALS_LIST :{BLACK}Rodyti tikslų sąrašą STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Rodyti diagramas STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Rodyti kompanijų įvertinimus STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Rodyti pramonės įmonių sąrašą arba finansuoti naują įmonę @@ -566,19 +579,19 @@ STR_FILE_MENU_SEPARATOR : STR_FILE_MENU_EXIT :Išeiti ############ range ends here -############ range for map menu starts +# 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ų srautų legenda STR_MAP_MENU_SIGN_LIST :Ženklų sąrašas -############ range for town menu starts, yet the town directory is shown in the map menu in the scenario editor + +############ range for town menu starts STR_TOWN_MENU_TOWN_DIRECTORY :Miestų sąrašas -############ end of the 'Display map' dropdown STR_TOWN_MENU_FOUND_TOWN :Įkurti miestą -############ end of the 'Town' dropdown +############ range ends here ############ range for subsidies menu starts STR_SUBSIDIES_MENU_SUBSIDIES :Subsidijos -STR_SUBSIDIES_MENU_GOAL :Dabartiniai tikslai ############ range ends here ############ range for graph menu starts @@ -593,6 +606,7 @@ STR_GRAPH_MENU_CARGO_PAYMENT_RATES :Krovinių apmok ############ range for company league menu starts STR_GRAPH_MENU_COMPANY_LEAGUE_TABLE :Kompanijos užimama vieta STR_GRAPH_MENU_DETAILED_PERFORMANCE_RATING :Išsamus veiklos įvertinimas +STR_GRAPH_MENU_HIGHSCORE :Nugalėtojų lentelė ############ range ends here ############ range for industry menu starts @@ -651,7 +665,7 @@ STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Rodyti/slėpti 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 @@ -667,22 +681,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 @@ -844,28 +876,41 @@ STR_HIGHSCORE_PERFORMANCE_TITLE_CAPITALIST :Kapitalistas STR_HIGHSCORE_PERFORMANCE_TITLE_MAGNATE :Magnatas STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL :Didžiausias magnatas STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY :Amžiaus magnatas -STR_HIGHSCORE_NAME :{BIG_FONT}{PRESIDENT_NAME}, {COMPANY} +STR_HIGHSCORE_NAME :{PRESIDENT_NAME}, {COMPANY} STR_HIGHSCORE_STATS :{BIG_FONT}'{STRING}' ({COMMA}) STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{BLACK}{COMPANY} pasiekė „{STRING}“ statusą! 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_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_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_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 @@ -877,14 +922,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 @@ -893,22 +938,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_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ą @@ -985,13 +1033,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 @@ -1070,15 +1117,12 @@ STR_GAME_OPTIONS_CURRENCY_LTL :Lietuvos Respub STR_GAME_OPTIONS_CURRENCY_KRW :Pietų Korėjos vonas (KRW) STR_GAME_OPTIONS_CURRENCY_ZAR :Pietų Afrikos Respublikos randas (ZAR) STR_GAME_OPTIONS_CURRENCY_CUSTOM :Kita... +STR_GAME_OPTIONS_CURRENCY_GEL :Gruzijos Laris (GEL) +STR_GAME_OPTIONS_CURRENCY_IRR :Irano Rialas (IRR) ############ end of currency region -STR_GAME_OPTIONS_MEASURING_UNITS_FRAME :{BLACK}Suvienodinti vienetus -STR_GAME_OPTIONS_MEASURING_UNITS_DROPDOWN_TOOLTIP :{BLACK}Suvienodinti pažymėtus vienetus ############ start of measuring units region -STR_GAME_OPTIONS_MEASURING_UNITS_IMPERIAL :Imperinė -STR_GAME_OPTIONS_MEASURING_UNITS_METRIC :Metrinė -STR_GAME_OPTIONS_MEASURING_UNITS_SI :SI ############ end of measuring units region STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Automobiliai @@ -1116,11 +1160,13 @@ 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ą @@ -1132,9 +1178,6 @@ STR_GAME_OPTIONS_RESOLUTION :{BLACK}Ekrano r 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_BASE_GRF :{BLACK}Bazinis grafikos rinkinys STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Pasirinkti naudojimui bazinę grafikos rinkinį STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} trūkstam{P a ų os}/sugadint{P a ų os} byl{P a ų os} @@ -1149,6 +1192,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 @@ -1248,14 +1292,26 @@ 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 nuostatos +STR_CONFIG_SETTING_RESTRICT_BASIC :Pagrindines nuostatas +STR_CONFIG_SETTING_RESTRICT_ADVANCED :Sudėtingesnes nuostatas STR_CONFIG_SETTING_RESTRICT_ALL :visas nuostatas STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :nuostatas, kurių reikšmės skiriasi nuo numatytųjų STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :nuostatas, kurių reikšmės skiriasi nuo naujai pradedamo žaidimo nuostatų +STR_CONFIG_SETTING_TYPE_DROPDOWN_HELPTEXT :{BLACK}Rodyti tik tam tikro tipo nuostatas +STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :Visas nuostatas +STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :Programos (galioja visiems žaidimams) +STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Žaidimo (įrašoma pradedant naują žaidimą) +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 @@ -1273,9 +1329,29 @@ STR_CONFIG_SETTING_HORIZONTAL_POS_LEFT :Kairėje STR_CONFIG_SETTING_HORIZONTAL_POS_CENTER :Centruoti STR_CONFIG_SETTING_HORIZONTAL_POS_RIGHT :Dešinėje +STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN :Didžiausia pradinė paskola: {STRING} +STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Didžiausia paskola, kokią kompanija gali gauti iš banko (neatsižvelgiant į infliaciją) +STR_CONFIG_SETTING_INTEREST_RATE :Palūkanų norma: {STRING} +STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Paskolos palūkanų norma. Taip pat įtakoja infliaciją (jei ji įgalinta) +STR_CONFIG_SETTING_RUNNING_COSTS :Eksploatacijos išlaidų lygmuo: {STRING} +STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT :Nustatyti infrastruktūros bei transporto priemonių ekploatacijos išlaidų lygmenį +STR_CONFIG_SETTING_CONSTRUCTION_SPEED :Statymo greitis: {STRING} +STR_CONFIG_SETTING_CONSTRUCTION_SPEED_HELPTEXT :Kompiuterinio priešininko statymo sparta +STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS :Transporto priemonių gedimo dažnumas: {STRING} +STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS_HELPTEXT :Nurodo, kaip dažnai ges netinkamai prižiūrimos transporto priemonės +STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER :Subsidijų daugiklis: {STRING} +STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT :Nustato, kiek kartų maršruto įplaukos bus padidintos, gavus subsidiją +STR_CONFIG_SETTING_CONSTRUCTION_COSTS :Statybos kaštų lygis: {STRING} +STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :Nustatykite statybos kaštų lygmenį +STR_CONFIG_SETTING_RECESSIONS :Nuosmukiai: {STRING} +STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Įgalinus šią nusotatą, kas keletą metų gali užklupti ekonomikos nuosmukis. Nuosmukio metų smarkiai smunka gamyba (kuri atsistato nuosmukiai pasibaigus) +STR_CONFIG_SETTING_TRAIN_REVERSING :Drausti apsisukimus stotelėse: {STRING} +STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :Įgalinus šią nuostatą, traukiniai galės apsisukti tik galinėse stotelėse su bendru įvažiavimu ir išvažiavimu. +STR_CONFIG_SETTING_DISASTERS :Katastrofos: {STRING} +STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Įgalinti atsitiktines katastrofas, kurių metų gali būti apgadintos ar sunaikintos transporto priemonės bei infrastruktūra +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_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} @@ -1300,14 +1376,8 @@ 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_TUNNEL_LENGTH :Didžiausias tunelio ilgis: {STRING} @@ -1335,8 +1405,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 @@ -1367,10 +1435,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 @@ -1409,27 +1473,41 @@ STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :Rodyti miestų 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 @@ -1464,6 +1542,12 @@ STR_CONFIG_SETTING_SCROLLWHEEL_SCROLL :Žemėlapio sli STR_CONFIG_SETTING_SCROLLWHEEL_OFF :išjungta STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER :Žemėlapio slinties greitis: {STRING} STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER_HELPTEXT :Valdyti pelės ratuko judėjimo jautrumą +STR_CONFIG_SETTING_OSK_ACTIVATION :Ekraninė klaviatūra: {STRING} +STR_CONFIG_SETTING_OSK_ACTIVATION_HELPTEXT :Pasirinkti ekraninės klaviatūros atvėrimo metodą. Ekraninė klaviatūra yra naudinga mažuose, neturinčiuose fizinės klaviatūros, įrenginiuose su lietimui jautriu ekranu. +STR_CONFIG_SETTING_OSK_ACTIVATION_DISABLED :Išjungta +STR_CONFIG_SETTING_OSK_ACTIVATION_DOUBLE_CLICK :Dvikartis spustelėjimas +STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK_FOCUS :Vienkartis spustelėjimas (jei židinyje) +STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK :Vienkartis spustelėjimas (iškart) STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU :Dešiniojo pelės mygtuko emuliacija: {STRING} STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_HELPTEXT :Pasirinkite būdą, kurį atliks dešinio pelės klavišo paspaudimas @@ -1474,17 +1558,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} @@ -1515,6 +1597,22 @@ STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Laikyti statyb STR_CONFIG_SETTING_EXPENSES_LAYOUT :Grupuoti išlaidas finansinės ataskaitos lange: {STRING} STR_CONFIG_SETTING_EXPENSES_LAYOUT_HELPTEXT :Nustatyti kompanijos išlaidų lango planą +STR_CONFIG_SETTING_SOUND_TICKER :Trumpoji žinutė: {STRING} +STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :Skleisti garsus gavus trumpają žinutę +STR_CONFIG_SETTING_SOUND_NEWS :Laikraščio: {STRING} +STR_CONFIG_SETTING_SOUND_NEWS_HELPTEXT :Skleisti garsus, kai parodomas laikraštis +STR_CONFIG_SETTING_SOUND_NEW_YEAR :Metų pabaigos: {STRING} +STR_CONFIG_SETTING_SOUND_NEW_YEAR_HELPTEXT :Skleisti garsą žymintį metų pabaigą +STR_CONFIG_SETTING_SOUND_CONFIRM :Statybos: {STRING} +STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT :Skeisti statybų garsus +STR_CONFIG_SETTING_SOUND_CLICK :Mygtukai: {STRING} +STR_CONFIG_SETTING_SOUND_CLICK_HELPTEXT :Pyptelti paspaudus mygtuką +STR_CONFIG_SETTING_SOUND_DISASTER :Nelaimės ir incidentai: {STRING} +STR_CONFIG_SETTING_SOUND_DISASTER_HELPTEXT :Skleisti nelaimių ir incidentų garsus +STR_CONFIG_SETTING_SOUND_VEHICLE :Transporto priemonės: {STRING} +STR_CONFIG_SETTING_SOUND_VEHICLE_HELPTEXT :Skleisti transporto priemonių garsus +STR_CONFIG_SETTING_SOUND_AMBIENT :Aplinkos: {STRING} +STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :Skleisti aplinkos — kraštovaizdžio, pramonės bei miestų — garsus 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 @@ -1536,6 +1634,11 @@ STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT_HELPTEXT :Įjungus šį n STR_CONFIG_SETTING_AI_BUILDS_SHIPS :Uždrausti kompiuteriui laivus: {STRING} STR_CONFIG_SETTING_AI_BUILDS_SHIPS_HELPTEXT :Įjungus šį nustatymą, statyti laivų kompiuterio žaidėjui bus neįmanoma +STR_CONFIG_SETTING_AI_PROFILE :Numatytasis nuostatų rinkinys: {STRING} +STR_CONFIG_SETTING_AI_PROFILE_HELPTEXT :Pasirinkti pradinį nuostatų profilį naujai pradedančiam veikti DI +STR_CONFIG_SETTING_AI_PROFILE_EASY :Lengvas +STR_CONFIG_SETTING_AI_PROFILE_MEDIUM :Vidutinis +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 @@ -1562,20 +1665,35 @@ STR_CONFIG_SETTING_DISABLE_ELRAILS :Uždrausti elek STR_CONFIG_SETTING_DISABLE_ELRAILS_HELPTEXT :Įjungiant šį nustatymą išjungia elektrifikuotų bėgių reikalavimą padaryti elektrinius variklius veikti ant jų STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN :Pirmosios transporto priemonės atvykimas į žaidėjo stotelę: {STRING} +STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN_HELPTEXT :Rodyti naujienraštį, kai pirma transporto priemonė atvyksta į naują žaidėjo stotelę STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER :Pirmosios transporto priemonės atvykimas į konkurento stotelę: {STRING} +STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER_HELPTEXT :Rodyti naujienraštį, kai pirma transporto priemonė atvyksta į naują konkurento stotelę STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS :Avarijos / nelaimės: {STRING} +STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS_HELPTEXT :Rodyti naujienraštį atsitikus incidentui ar katastrofai STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION :Kompanijos informacija: {STRING} +STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION_HELPTEXT :Rodyti naujienraštį įsikūrus naujai kompanijai (arba esamai susidūrus su sunkumais) STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN :Gamyklų atidarymas: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN_HELPTEXT :Rodyti naujienraštį įsikūrus naujai pramonės įmonei STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE :Gamyklų uždarymas: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE_HELPTEXT :Rodyti naujienraštį, jei uždaroma pramonės įmonė STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES :Ekonomikos pokyčiai: {STRING} +STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES_HELPTEXT :Rodyti naujienraštį įvykus globaliniam ekonomikos pokyčiui STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY :Gamyklų aptarnaujamų kompanijos gamybos pasikeitimas: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY_HELPTEXT :Rodyti naujienraštį, kai pramonės įmonių, aptarnaujamų žaidėjo kompanijos, produkcija pasikeičia STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER :Gamyklų aptarnaujamų kitų kompanijų gamybos pasikeitimas: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER_HELPTEXT :Rodyti naujienraštį, kai pramonės įmonių, aptarnaujamų konkurentų, produkcija pasikeičia STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED :Kitų gamyklų gamybos pasikeitimas: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED_HELPTEXT :Rodyti naujienraštį, kai pramonės įmonių, neaptarnaujamų jokios kompanijos, produkcija pasikeičia STR_CONFIG_SETTING_NEWS_ADVICE :Patarimai / informacija apie kompanijos transporto priemones: {STRING} +STR_CONFIG_SETTING_NEWS_ADVICE_HELPTEXT :Rodyti pranešimus apie transporto priemones, kurioms reikia priežiūros STR_CONFIG_SETTING_NEWS_NEW_VEHICLES :Naujos transporto priemonės: {STRING} +STR_CONFIG_SETTING_NEWS_NEW_VEHICLES_HELPTEXT :Rodyti naujienraštį atsiradus naujo tipo transporto priemonei STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE :Prekių supirkimo pokyčiai: {STRING} +STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE_HELPTEXT :Rodyti pranešimus apie stotelėse priimamų krovinių pokyčius STR_CONFIG_SETTING_NEWS_SUBSIDIES :Subsidijos: {STRING} +STR_CONFIG_SETTING_NEWS_SUBSIDIES_HELPTEXT :Rodyti naujienraštį, susijusį su subsidijomis STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION :Bendroji informacija: {STRING} +STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION_HELPTEXT :Rodyti naujienraštį apie bendro pobūdžio įvykius (pvz., apie išskirtinių teisių nusipirkimą arba kelių rekonstrukcijos finansavimą) STR_CONFIG_SETTING_NEWS_MESSAGES_OFF :Išjungta STR_CONFIG_SETTING_NEWS_MESSAGES_SUMMARY :Santrauka @@ -1623,7 +1741,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 @@ -1670,26 +1788,104 @@ 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_GUI :{ORANGE}Vaizdas -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_AI :{ORANGE}Priešininkai -STR_CONFIG_SETTING_DISPLAY_OPTIONS :{ORANGE}Vaizdo nustatymai -STR_CONFIG_SETTING_INTERACTION :{ORANGE}Sąveika -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_LINKGRAPH_INTERVAL :Pasiskirstymo grafą atnaujinti kas {STRING} 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_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 +STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC.kas :{G=vyr}asimetriškas +STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC.ko :{G=vyr}asimetriško +STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC.kam :{G=vyr}asimetriškam +STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC.ka :{G=vyr}asimetišką +STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC.kuo :{G=vyr}asimetrišku +STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC.kur :{G=vyr}asimetriškame +STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC.kreip :{G=vyr}asimetriškas +STR_CONFIG_SETTING_DISTRIBUTION_SYMMETRIC :simetriškas +STR_CONFIG_SETTING_DISTRIBUTION_SYMMETRIC.kas :{G=vyr}simetriškas +STR_CONFIG_SETTING_DISTRIBUTION_SYMMETRIC.ko :{G=vyr}simetriško +STR_CONFIG_SETTING_DISTRIBUTION_SYMMETRIC.kam :{G=vyr}simetriškam +STR_CONFIG_SETTING_DISTRIBUTION_SYMMETRIC.ka :{G=vyr}simetrišką +STR_CONFIG_SETTING_DISTRIBUTION_SYMMETRIC.kuo :{G=vyr}simetrišku +STR_CONFIG_SETTING_DISTRIBUTION_SYMMETRIC.kur :{G=vyr}simetriškame +STR_CONFIG_SETTING_DISTRIBUTION_SYMMETRIC.kreip :{G=vyr}simetriškas +STR_CONFIG_SETTING_DISTRIBUTION_PAX :Keleivių paskirstymas: {STRING} +STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :„Simetriškas“ reiškia, jog iš stoties A į stotį B keliaus apytiksliai toks pat keleivių 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. +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_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} +STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT :Kuo didesnė ši vertė, tuo tiksliau bus apskaičiuojamas krovinių pasiskirstymo grafas, tačiau žaidimas gali sulėtėti. Pasirinktus didesnę reikšmę, grafas bus netikslus ir kroviniai gali būti paskirstomi neoptimaliai. +STR_CONFIG_SETTING_DEMAND_DISTANCE :Įtakos nuo atstumo tarp stotelių daugiklis: {STRING} +STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT :Šį daugiklį prilyginus nuliui, „Cargodist“ posistemė nekreips dėmesio, kaip toli nuo pradinės stotelės A yra krovinio paskirties stotelė B. Kuo daugiklis bus didesnis, tuo labiau „Cargodist“ pirmenybę teiks artimesnėms stotelėms. +STR_CONFIG_SETTING_DEMAND_SIZE :Grįžtančių krovinių daugiklis simetriškam režimui: {STRING} +STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :Nustačius šį parametrą žemiau nei 100%, simetrinis pasiskirstymas panašėja į asimetrinį pasiskirstymą. Jei krovinio į stotį bus atvežama mažiau, nei tam tikra nustatyta riba, jis bus priverstinai išsiųstas atgal. Jei bus nustatyta 0% riba, simetrinis pasiskirstymas taps asimetriniu. +STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Tolimesni maršrutai nebus planuojami kol trumpesniųjų apkrova nepasieks bent: {STRING} +STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Dažnai tarp dviejų stotelių yra ne vienas galimas maršrutas. „Cargodist“ posistemė pirmiausia stengsis krovinius nukreipti trumpiausiu įmanomu maršrutu, o kai šis bus pilnai apkrautas, imtis tolimesniųjų. Maršruto apkrova yra apytiksliai įvertinama atsižvelgiant į maršruto pajėgumus ir planuojamus krovinių srautus. Kai tik „Cargodist“ posistemė pilnai apkraus visus galimus maršrutus, ji vėl ims didinti apkrovas visiems maršrutams, pradėdama nuo pačių talpiausiųjų, taip faktiškai juos perkraudama. Tačiau, vėlgi, „Cargodist“ algoritmas yra apytikslis, todėl įmanoma, kad trumpesni maršrutai jau bus perkrauti dar pilnai neišnaudojus tolimesniųjų. Šia nuostata nustatomas slenkstis, ties kuriuo trumpesnis maršrutas jau laikomas optimaliai apkrautu ir kroviniai pradedami skirstyti tolimesniais maršrutais. Rekomenduojama nustatyti mažiau, nei 100%, kad būtų išvengta perkrovų dėl netikslaus „Cargodist“ veikimo. + +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Greičio vienetai: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_HELPTEXT :Vienetai, kuriais matuojamas greitis +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_IMPERIAL :imperiniai (mph) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_METRIC :metriniai (km/h) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_SI :SI (m/s) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER :Galios vienetai: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_HELPTEXT :Vienetai, kuriais matuojama galia +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_IMPERIAL :imperiniai (ag) +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_METRIC :metriniai (ag) +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_SI :SI (kW) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT :Svorio vienetai: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_HELPTEXT :Vienetai, kuriais matuojamas svoris +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_IMPERIAL :imperiniai (mažoji tona, ton) +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_METRIC :metriniai (t) +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_SI :SI (kg) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME :Tūrio vienetai: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_HELPTEXT :Vienetai, kuriais matuojamas tūris +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_IMPERIAL :imperiniai (gal) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_METRIC :metriniai (l) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_SI :SI (m³) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE :Traukos jėgos vienetai: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_HELPTEXT :Vienetai, kuriais matuojama traukos jėga +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_IMPERIAL :imperiniai (lbf) +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_METRIC :metriniai (kgf) +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_SI :SI (kN) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT :Aukščio vienetai: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_HELPTEXT :Vienetai, kuriais matuojamas aukštis +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_LOCALISATION :{ORANGE}Lokalizavimas +STR_CONFIG_SETTING_GRAPHICS :{ORANGE}Grafika +STR_CONFIG_SETTING_SOUND :{ORANGE}Garsai +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 @@ -1723,44 +1919,48 @@ STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_ALGORITHM :{WHITE}... nepr STR_CONFIG_ERROR_INVALID_BASE_GRAPHICS_NOT_FOUND :{WHITE}... nerastas grafikos rinkinys „{STRING}“ STR_CONFIG_ERROR_INVALID_BASE_SOUNDS_NOT_FOUND :{WHITE}... nerastas garsų rinkinys „{STRING}“ STR_CONFIG_ERROR_INVALID_BASE_MUSIC_NOT_FOUND :{WHITE}... nerastas muzikos įrašų rinkinys „{STRING}“ +STR_CONFIG_ERROR_OUT_OF_MEMORY :{WHITE}Pritrūko atminties +STR_CONFIG_ERROR_SPRITECACHE_TOO_BIG :{WHITE}Nepavyko rezervuoti sprukliams {BYTES} laikinosios atminties. Spruklių laikinoji atmintis sumažinta iki {BYTES}, o tai pablogins OpenTTD veikimo spartą. Galite pamėginti išjungti 32-ų bitų grafiką ir/arba sumažinti priartinimo lygį — tai turėtų sumažinti atminties poreikį. # 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_GAME_OPTIONS :{BLACK}Žaidimo nustatymai -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_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}Pagrindinės nuostatos +STR_INTRO_HIGHSCORE :{BLACK}Nugalėtojų lentelė +STR_INTRO_ADVANCED_SETTINGS :{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_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_GAME_OPTIONS :{BLACK}Rodyti pagrindines žaidimo nuostatas +STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Rodyti nugalėtojų lentelę +STR_INTRO_TOOLTIP_ADVANCED_SETTINGS :{BLACK}Rodyti sudėtingesnes žaidimo 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ų}. Padėkite OpenTTD užsiregistruodami kaip vertėjas. Daugiau informacijos rasite readme.txt +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 # Quit window STR_QUIT_CAPTION :{WHITE}Baigti @@ -1842,6 +2042,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ą @@ -1897,10 +2098,10 @@ STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}Pakeisti # Network server list STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}Žaidimas tinkle -STR_NETWORK_SERVER_LIST_CONNECTION :{BLACK}Ryšys: -STR_NETWORK_SERVER_LIST_CONNECTION_TOOLTIP :{BLACK}Pasirinkti žaidimą internete ar vietiniame tinkle (LAN) -STR_NETWORK_SERVER_LIST_LAN :Vietinis tinklas -STR_NETWORK_SERVER_LIST_INTERNET :Internetas +STR_NETWORK_SERVER_LIST_ADVERTISED :{BLACK}Reklamuoti +STR_NETWORK_SERVER_LIST_ADVERTISED_TOOLTIP :{BLACK}Pasirinkite tarp reklamuojamo (internetas) ir nereklamuojamo (Vietinis Tinklas, LAN) žaidimo +STR_NETWORK_SERVER_LIST_ADVERTISED_NO :Ne +STR_NETWORK_SERVER_LIST_ADVERTISED_YES :Taip STR_NETWORK_SERVER_LIST_PLAYER_NAME :{BLACK}Žaidėjo vardas: STR_NETWORK_SERVER_LIST_ENTER_NAME_TOOLTIP :{BLACK}Tai vardas, pagal kurį kiti žaidėjai jus atpažins @@ -1959,8 +2160,8 @@ STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP :{BLACK}Žaidimo STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}Nustatyti slaptažodi STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Apsaugokite savo žaidimą slaptažodžiu, jei nenorite, kad jis būtų viešai prieinamas -STR_NETWORK_START_SERVER_LAN_INTERNET :Vietinis tinklas/ Internetas -STR_NETWORK_START_SERVER_INTERNET_ADVERTISE :Internetas (visiems) +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 @@ -2081,6 +2282,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 @@ -2199,6 +2401,10 @@ STR_CONTENT_SELECT_UPDATES_CAPTION :{BLACK}Pažymė STR_CONTENT_SELECT_UPDATES_CAPTION_TOOLTIP :{BLACK}Pažymėti visą turinį, atnaujinimui skirtą turinį atsisiuntimui STR_CONTENT_UNSELECT_ALL_CAPTION :{BLACK}Nieko nežymėti STR_CONTENT_UNSELECT_ALL_CAPTION_TOOLTIP :{BLACK}Pažymėti visą turinį kaip neatsisiųstą +STR_CONTENT_SEARCH_EXTERNAL :{BLACK}Ieškoti išorinėse svetainėse +STR_CONTENT_SEARCH_EXTERNAL_TOOLTIP :{BLACK}Ieškoti turinio neoficialiose OpenTTd svetainėse +STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER_CAPTION :{WHITE}Paliekate OpenTTD programą! +STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER :{WHITE}Turinio parsisiuntimo sąlygos įvairiose išorinėse svetainėse skiriasi.{}Norėdami įdiegti turinį, turėsite sekti nurodymus, pateikiamus tose svetainėse. {}Ar tęsti? STR_CONTENT_FILTER_TITLE :{BLACK}Žymės/pavadinimo filtravimas: STR_CONTENT_OPEN_URL :{BLACK}Aplankyti svetainę STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}Aplankyti šio turinio svetainę @@ -2221,16 +2427,16 @@ STR_CONTENT_DETAIL_FILESIZE :{SILVER}Siuntin STR_CONTENT_DETAIL_SELECTED_BECAUSE_OF :{SILVER}Pasirinktas nes: {WHITE}{STRING} STR_CONTENT_DETAIL_DEPENDENCIES :{SILVER}Priklausomybės: {WHITE}{STRING} STR_CONTENT_DETAIL_TAGS :{SILVER}Žymės: {WHITE}{STRING} -STR_CONTENT_NO_ZLIB :{WHITE}OpenTTD pagaminta be "zlib" pagalbos... +STR_CONTENT_NO_ZLIB :{WHITE}OpenTTD pagaminta be „zlib“ pagalbos... STR_CONTENT_NO_ZLIB_SUB :{WHITE}... atsiųsti turinio neįmanoma! # 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 @@ -2268,6 +2474,17 @@ STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}Perjungt STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Perjungti krovimo indikatorių permatomumą. Ctrl+Click užrakinti STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}Nustatyti objektus nematomais vietoje permatomų +# Linkgraph legend window +STR_LINKGRAPH_LEGEND_CAPTION :{BLACK}Krovinių srautai +STR_LINKGRAPH_LEGEND_ALL :{BLACK}Visi +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}nenaudojamas +STR_LINKGRAPH_LEGEND_SATURATED :{TINY_FONT}{BLACK}optimalus +STR_LINKGRAPH_LEGEND_OVERLOADED :{TINY_FONT}{BLACK}perkrautas + # Base for station construction window(s) STR_STATION_BUILD_COVERAGE_AREA_TITLE :{BLACK}Rodyti aptarnaujamą teritoriją? STR_STATION_BUILD_COVERAGE_OFF :{BLACK}Ne @@ -2436,7 +2653,7 @@ STR_AIRPORT_SMALL :Vietinis STR_AIRPORT_CITY :Miesto STR_AIRPORT_METRO :Didmiesčio STR_AIRPORT_INTERNATIONAL :Tarptautinis -STR_AIRPORT_COMMUTER :Rajono +STR_AIRPORT_COMMUTER :Regioninis STR_AIRPORT_INTERCONTINENTAL :Tarpkontinentinis STR_AIRPORT_HELIPORT :Heliportas STR_AIRPORT_HELIDEPOT :Helidepas @@ -2570,6 +2787,7 @@ STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: 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 @@ -2666,16 +2884,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-2012 OpenTTD komanda +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2014 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 @@ -2683,56 +2901,53 @@ 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 STR_MAPGEN_MAPSIZE :{BLACK}Žemėlapio dydis: +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_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_SNOW_LINE_QUERY_CAPT :{WHITE}Pakeisti sniego linijos aukštį STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Keisti pradžios metus @@ -2769,14 +2984,14 @@ STR_NEWGRF_SETTINGS_CAPTION :{WHITE}Papild. 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_SETTINGS_SELECT_PRESET :{ORANGE}Rinkinys: 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_LIST_TOOLTIP :{BLACK}Įkrauti pasirinktą nuostatų rinkinį +STR_NEWGRF_SETTINGS_PRESET_SAVE :{BLACK}Išsaugoti rinkinį +STR_NEWGRF_SETTINGS_PRESET_SAVE_TOOLTIP :{BLACK}Išsaugoti esamą sąrašą kaip rinkinį 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_PRESET_DELETE :{BLACK}Ištrinti rinkinį +STR_NEWGRF_SETTINGS_PRESET_DELETE_TOOLTIP :{BLACK}Ištrinti pasirinktą nuostatų 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_RESCAN_FILES :{BLACK}Nuskaityti dar kartą failus @@ -2787,6 +3002,8 @@ 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_MOVEDOWN :{BLACK}Žemyn STR_NEWGRF_SETTINGS_MOVEDOWN_TOOLTIP :{BLACK}Perkelti pažymėtus Papild. grafikos failus sąraše žemyn +STR_NEWGRF_SETTINGS_UPGRADE :{BLACK}Atnaujinti +STR_NEWGRF_SETTINGS_UPGRADE_TOOLTIP :{BLACK}Atnaujinti grafikos failus, jei yra įdiegta naujesnė versija STR_NEWGRF_SETTINGS_FILE_TOOLTIP :{BLACK}Įdiegtų papild. grafikos failų sąrašas. STR_NEWGRF_SETTINGS_SET_PARAMETERS :{BLACK}Nustatyti parametrus @@ -2811,6 +3028,16 @@ STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}Atitinkama 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}Sąrašas visų rinkinių +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 @@ -2870,6 +3097,7 @@ STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Susideda iš keleto veiksmo 8 įrašų (spruklys {3:NUM}) STR_NEWGRF_ERROR_READ_BOUNDS :Skaitymas už pseudospruklio pabaigos (spruklys {3:NUM}) 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_INVALID_SPRITE_LAYOUT :Neteisingas/nežinomas spruklio išdėstymo formatas (spruklys {3:NUM}) @@ -2880,6 +3108,7 @@ 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_COMPATIBLE_LOAD_WARNING :{WHITE}Suderinami grafikos failai panaudoti vietoj trūkstamų STR_NEWGRF_DISABLED_WARNING :{WHITE}Trūkstami grafikos failai nenaudojami @@ -2887,15 +3116,16 @@ STR_NEWGRF_UNPAUSE_WARNING_TITLE :{YELLOW}Trūkst STR_NEWGRF_UNPAUSE_WARNING :{WHITE}Paleidimas gali užlaužti OpenTTD. Neraportuokite šios rūšies gedimų!{}Ar norite paleisti toliau? # 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_NEWGRF_BROKEN_CAPACITY :{WHITE}Transporto priemonės '{1:ENGINE}' talpa pasikeitė jai nesant 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ą @@ -2910,6 +3140,9 @@ STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} vnt. 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... @@ -2930,9 +3163,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 @@ -2947,8 +3180,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 didėja kas {ORANGE}{COMMA}{BLACK} dien{P ą as ų} -STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}Miestas didėja kas {ORANGE}{COMMA}{BLACK} dien{P ą as ų} (paremtas) +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_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 @@ -2991,10 +3224,14 @@ STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT :{YELLOW}Pirkti STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}Paperkant vietinę valdžią pakelti Jūsų reitingą, rizikuojant būti sunkiai nubaustam.{}Kaina: {CURRENCY_LONG} # Goal window -STR_GOALS_CAPTION :{WHITE}Tikslai +STR_GOALS_CAPTION :{WHITE}{COMPANY} Tikslai +STR_GOALS_SPECTATOR_CAPTION :{WHITE}Globalūs tikslai STR_GOALS_GLOBAL_TITLE :{BLACK}Visuotiniai tikslai: STR_GOALS_TEXT :{ORANGE}{STRING} STR_GOALS_NONE :{ORANGE}- Nieko - +STR_GOALS_SPECTATOR_NONE :{ORANGE}- Netaikomas - +STR_GOALS_PROGRESS :{ORANGE}{STRING} +STR_GOALS_PROGRESS_COMPLETE :{GREEN}{STRING} STR_GOALS_COMPANY_TITLE :{BLACK}Kompanijos tikslai: STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Paspaudus ant nurodymo bus rodoma gamykla/miestas/vieta. Paspaudus laikant VALD (CTRL) klavišą bus atidarytas naujas langas su gamykla/miestu/vieta @@ -3033,6 +3270,18 @@ STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}Jau subs STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING} iš {STRING} į {STRING}{YELLOW} ({COMPANY}{YELLOW}, iki {DATE_SHORT}) STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Paspauskite ant paslaugos, norėdami pamatyti pramonės vietą/miestą. Ctrl+Paspaudimas atidaro naują langą su pramonės vietos/miesto vaizdu +# Story book window +STR_STORY_BOOK_CAPTION :{WHITE}{COMPANY} Scenarijaus knyga +STR_STORY_BOOK_SPECTATOR_CAPTION :{WHITE}Globali scenarijų knyga +STR_STORY_BOOK_TITLE :{YELLOW}{STRING} +STR_STORY_BOOK_GENERIC_PAGE_ITEM :Puslapis {NUM} +STR_STORY_BOOK_SEL_PAGE_TOOLTIP :{BLACK}Peršokti į konkretų puslapį pasirenkant jį iš sąrašo. +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 STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}Laikant nuspaustą VALD (CTRL) galima pažymėti daugiau nei vieną @@ -3046,9 +3295,9 @@ 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) STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Priima STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Rodyti priimamų krovinių sąrašą @@ -3059,8 +3308,31 @@ STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPAN STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Reitingai STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Rodyti stoties reitingus -STR_STATION_VIEW_CARGO_RATINGS_TITLE :{BLACK}Vietinis transporto sistemos reitingas: -STR_STATION_VIEW_CARGO_RATING :{WHITE}{STRING}: {YELLOW}{STRING} ({COMMA}%) +STR_STATION_VIEW_SUPPLY_RATINGS_TITLE :{BLACK}Mėnesinis tiekimas ir vietinis reitingas: +STR_STATION_VIEW_CARGO_SUPPLY_RATING :{WHITE}{STRING}: {YELLOW}{COMMA} / {STRING} ({COMMA}%) + +STR_STATION_VIEW_GROUP :{BLACK}Grupuoti pagal +STR_STATION_VIEW_WAITING_STATION :Stotis: Laukia +STR_STATION_VIEW_WAITING_AMOUNT :Suma: Laukiama +STR_STATION_VIEW_PLANNED_STATION :Stotis: Planuota +STR_STATION_VIEW_PLANNED_AMOUNT :Suma: Planuota +STR_STATION_VIEW_FROM :{YELLOW}{CARGO_SHORT} iš {STATION} +STR_STATION_VIEW_VIA :{YELLOW}{CARGO_SHORT} per {STATION} +STR_STATION_VIEW_TO :{YELLOW}{CARGO_SHORT} į {STATION} +STR_STATION_VIEW_FROM_ANY :{RED}{CARGO_SHORT} iš nežinomos stoties +STR_STATION_VIEW_TO_ANY :{RED}{CARGO_SHORT} į bet kurią stotį +STR_STATION_VIEW_VIA_ANY :{RED}{CARGO_SHORT} per bet kurią stotį +STR_STATION_VIEW_FROM_HERE :{GREEN}{CARGO_SHORT} iš šios stoties +STR_STATION_VIEW_VIA_HERE :{GREEN}{CARGO_SHORT} stoja šioje stotyje +STR_STATION_VIEW_TO_HERE :{GREEN}{CARGO_SHORT} į šią stotį +STR_STATION_VIEW_NONSTOP :{YELLOW}{CARGO_SHORT} tiesiogiai + +STR_STATION_VIEW_GROUP_S_V_D :iš-per-į +STR_STATION_VIEW_GROUP_S_D_V :iš-į-per +STR_STATION_VIEW_GROUP_V_S_D :per-į-iš +STR_STATION_VIEW_GROUP_V_D_S :per-iš-į +STR_STATION_VIEW_GROUP_D_S_V :į-iš-per +STR_STATION_VIEW_GROUP_D_V_S :į-per-iš ############ range for rating starts STR_CARGO_RATING_APPALLING :Pasibaisėtinas @@ -3119,10 +3391,10 @@ STR_FINANCES_BANK_BALANCE_TITLE :{WHITE}Sąskait STR_FINANCES_LOAN_TITLE :{WHITE}Paskola STR_FINANCES_MAX_LOAN :{WHITE}Maksimali 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 @@ -3187,7 +3459,6 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS :{WHITE}Kanalai STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}Stotys: STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}Stoties langeliai STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}Oro uostai -STR_COMPANY_INFRASTRUCTURE_VIEW_COST :{WHITE}{1:CURRENCY_LONG}/met ({0:COMMA}) STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL :{WHITE}{CURRENCY_LONG}/met # Industry directory @@ -3204,6 +3475,7 @@ STR_INDUSTRY_VIEW_PRODUCTION_LAST_MONTH_TITLE :{BLACK}Praėjus STR_INDUSTRY_VIEW_TRANSPORTED :{YELLOW}{CARGO_LONG}{STRING}{BLACK} ({COMMA}% transportuota) STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Centruoti gamyklą pagrindiniame lange. Spragtelėjus laikant nuspaustą Ctrl klavišą, bus atidarytas naujas peržiūros langas su vaizdu į šią gamyklą STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Gamybos sparta: {YELLOW}{COMMA}% +STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}Pramonės įmonė paskelbė apie jos neišvengiamą uždarymą! ############ range for requires starts STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Reikalauja: {YELLOW}{STRING.ko}{STRING} @@ -3272,6 +3544,9 @@ 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 @@ -3605,6 +3880,11 @@ STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Siųsti 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) +STR_SERVICE_INTERVAL_DROPDOWN_TOOLTIP :{BLACK}Techninės apžiūros intervalo tipas +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ą @@ -3837,6 +4117,10 @@ 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 ų} @@ -3858,7 +4142,7 @@ STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}Tvarkara STR_TIMETABLE_STATUS_START_AT :{BLACK}Tvarkaraštis bus aktyvintas {STRING} STR_TIMETABLE_STARTING_DATE :{BLACK}Aktyvinimo data -STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Nustatykite šio tvarkaraščio aktyvinimo datą +STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Tvarkaraštyje pasirinkite pradžios datą. Ctrl+pelės paspaudimas pažymės datą kaip pradžios tašką ir paskirstys visas transporto priemones su tokiais pačiais maršrutais tolygiai pagal jų santykinę poziciją maršrute (jei kryptys maršrute visiškai apibūdintos) STR_TIMETABLE_CHANGE_TIME :{BLACK}Keisti trukmę STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Keisti pažymėtos užduoties trukmę @@ -3972,6 +4256,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 @@ -3994,6 +4280,10 @@ STR_INCOME_FLOAT_INCOME_SMALL :{TINY_FONT}{GRE STR_INCOME_FLOAT_INCOME :{GREEN}Pajamos: {CURRENCY_LONG} STR_FEEDER_TINY :{TINY_FONT}{YELLOW}Pervesti: {CURRENCY_LONG} STR_FEEDER :{YELLOW}Pervesti: {CURRENCY_LONG} +STR_FEEDER_INCOME_TINY :{TINY_FONT}{YELLOW}Perkelti: {CURRENCY_LONG}{WHITE} / {GREEN}Pajamos: {CURRENCY_LONG} +STR_FEEDER_INCOME :{YELLOW}Perkelti: {CURRENCY_LONG}{WHITE} / {GREEN}Pajamos: {CURRENCY_LONG} +STR_FEEDER_COST_TINY :{TINY_FONT}{YELLOW}Perkelti: {CURRENCY_LONG}{WHITE} / {RED}Kaštai: {CURRENCY_LONG} +STR_FEEDER_COST :{YELLOW}Perkelti: {CURRENCY_LONG}{WHITE} / {RED}Kaštai: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_COST :{WHITE}Numatoma kaina: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Numatomos pajamos: {CURRENCY_LONG} @@ -4027,13 +4317,15 @@ 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}Pradines nuostas keisti pernelyg smarkiai 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ą. # Screenshot related messages +STR_WARNING_SCREENSHOT_SIZE_CAPTION :{WHITE}Didelės apimties ekrano nuotrauka +STR_WARNING_SCREENSHOT_SIZE_MESSAGE :{YELLOW}Ekrano nuotraukos raiška bus {COMMA} x {COMMA} pikselių. Įrašymas gali užtrukti. Ar norite tęsti? STR_MESSAGE_SCREENSHOT_SUCCESSFULLY :{WHITE}Ekrano vaizdas išsaugotas kaip „{STRING}“ STR_ERROR_SCREENSHOT_FAILED :{WHITE}Ekrano vaizdas neišsaugotas! @@ -4084,7 +4376,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... @@ -4153,7 +4445,7 @@ STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}... prav # Station destruction related errors STR_ERROR_CAN_T_REMOVE_PART_OF_STATION :{WHITE}Neįmanoma pašalinti stoties dalies... STR_ERROR_MUST_REMOVE_RAILWAY_STATION_FIRST :{WHITE}Pašalinkite stotelę prieš tęsdami! -STR_ERROR_CAN_T_REMOVE_BUS_STATION :{WHITE}Neįmanoma statyti autobuso stotelės... +STR_ERROR_CAN_T_REMOVE_BUS_STATION :{WHITE}Neįmanoma pašalinti autobuso stotelės... STR_ERROR_CAN_T_REMOVE_TRUCK_STATION :{WHITE}Neįmanoma griauti sunkvežimių stotelės... STR_ERROR_CAN_T_REMOVE_PASSENGER_TRAM_STATION :{WHITE}Neįmanoma griauti keleivinio tramvajaus stotelės... STR_ERROR_CAN_T_REMOVE_CARGO_TRAM_STATION :{WHITE}Neįmanoma griauti krovininio tramvajaus stotelės... @@ -4288,6 +4580,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ę... @@ -4343,6 +4636,11 @@ 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_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 + # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Neįmanoma priversti traukinio važiuoti nesaugiai... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Traukinio vaziavimo krypties pakeisti negalima... @@ -4385,6 +4683,16 @@ STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}Neįmano # Translatable comment for OpenTTD's desktop shortcut STR_DESKTOP_SHORTCUT_COMMENT :Simuliatoriaus žaidimas kurtas pagal Transport Tycoon Deluxe +# Translatable descriptions in media/baseset/*.ob* files +STR_BASEGRAPHICS_DOS_DESCRIPTION :Originali Transport Tycoon Deluxe DOS leidimo grafika. +STR_BASEGRAPHICS_DOS_DE_DESCRIPTION :Originali Transport Tycoon Deluxe DOS (Vokiečių) leidimo grafika. +STR_BASEGRAPHICS_WIN_DESCRIPTION :Originali Transport Tycoon Deluxe Windows leidimo grafika. +STR_BASESOUNDS_DOS_DESCRIPTION :Originalūs Transport Tycoon Deluxe DOS leidimo garsai. +STR_BASESOUNDS_WIN_DESCRIPTION :Originalūs Transport Tycoon Deluxe Windows leidimo garsai. +STR_BASESOUNDS_NONE_DESCRIPTION :Garsų pakas be jokių garsų. +STR_BASEMUSIC_WIN_DESCRIPTION :Originali Transport Tycoon Deluxe Windows leidimo muzika. +STR_BASEMUSIC_NONE_DESCRIPTION :Muzikos pakas be muzikos. + ##id 0x2000 # Town building names STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1 :Administracinis kompleksas @@ -4766,7 +5074,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 (Dyzelis) 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) @@ -4975,7 +5283,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 @@ -5096,8 +5404,9 @@ 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_SPACE_STRING :{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} @@ -5121,9 +5430,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 c39db689f..f7f271b9b 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_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_LIVESTOCK :Véi +STR_CARGO_SINGULAR_GOODS :Wueren STR_CARGO_SINGULAR_GRAIN :Kaar 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,7 +88,7 @@ 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 @@ -99,18 +99,18 @@ STR_QUANTITY_PASSENGERS :{COMMA} Passag STR_QUANTITY_COAL :{WEIGHT_LONG} Kuel STR_QUANTITY_MAIL :{COMMA} Posts{P aak ä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_LIVESTOCK :{COMMA} Eenheet{P "" en} Véi +STR_QUANTITY_GOODS :{COMMA} Wuerekëscht{P "" en} STR_QUANTITY_GRAIN :{WEIGHT_LONG} Kaar 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_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_FOOD :{WEIGHT_LONG} Iesswueren STR_QUANTITY_PAPER :{WEIGHT_LONG} Pabeier STR_QUANTITY_GOLD :{COMMA} S{P aak äck} mat Gold STR_QUANTITY_WATER :{VOLUME_LONG} Waasser @@ -122,7 +122,7 @@ STR_QUANTITY_SWEETS :{COMMA} S{P aak 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 @@ -175,7 +175,7 @@ STR_CRATES :{COMMA} Këscht # 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 @@ -199,21 +199,28 @@ STR_UNITS_POWER_IMPERIAL :{COMMA}bhp STR_UNITS_POWER_METRIC :{COMMA}ps 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} Tonn{P "" en} STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} Tonn{P "" en} 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} Galloun{P "" en} STR_UNITS_VOLUME_LONG_METRIC :{COMMA} Liter{P "" ""} 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}Filter W STR_LIST_FILTER_OSKTITLE :{BLACK}Filter string STR_LIST_FILTER_TOOLTIP :{BLACK}Wuert fir d'Lëscht ze filtern +STR_TOOLTIP_GROUP_ORDER :{BLACK}Wiel Gruppéierreihenfollë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 @@ -230,9 +238,10 @@ 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_STICKY :{BLACK}Markéier dës Fënster fir net zougemeet ze ginn vun dem "All Fënsteren zoumaachen" Knäppchen +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_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 @@ -256,7 +265,6 @@ STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}Areal: { # These are used in buttons -STR_SORT_BY_CAPTION_POPULATION :{BLACK}Bevölkerung STR_SORT_BY_CAPTION_NAME :{BLACK}Numm STR_SORT_BY_CAPTION_DATE :{BLACK}Datum # These are used in dropdowns @@ -269,15 +277,16 @@ 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_FACILITY :Statiounstyp -STR_SORT_BY_WAITING :Luedungswäert +STR_SORT_BY_WAITING_TOTAL :Gesamt waardend Gidder +STR_SORT_BY_WAITING_AVAILABLE :Verfügbar waardend Gidder STR_SORT_BY_RATING_MAX :Héchsten Luedungsbewertung STR_SORT_BY_RATING_MIN :Nidregsten Luedungsbewertung STR_SORT_BY_ENGINE_ID :ID (klassësch Sortéierung) @@ -289,6 +298,8 @@ STR_SORT_BY_RUNNING_COST :Betriebskäscht STR_SORT_BY_POWER_VS_RUNNING_COST :Kraaft/Betriebskäschten STR_SORT_BY_CARGO_CAPACITY :Luedungskapazitéit STR_SORT_BY_RANGE :Längt +STR_SORT_BY_POPULATION :Bevölkerung +STR_SORT_BY_RATING :Rating # Tooltips for the main toolbar STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Spill pausen @@ -301,11 +312,13 @@ STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Subventi 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_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_ROAD_VEHICLES :{BLACK}Lëscht vun den Stroossegefierer vun der Firma. Ctrl+Klick wiesselt tëscht Gruppe/Stroossegefiererlescht 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_ZOOM_THE_VIEW_IN :{BLACK}Vergréisser d'Sicht @@ -315,7 +328,7 @@ STR_TOOLBAR_TOOLTIP_BUILD_ROADS :{BLACK}Stroosse STR_TOOLBAR_TOOLTIP_BUILD_SHIP_DOCKS :{BLACK}Schëffhafen bauen STR_TOOLBAR_TOOLTIP_BUILD_AIRPORTS :{BLACK}Fluchhafen 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/Musék Fënster +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 STR_TOOLBAR_TOOLTIP_LAND_BLOCK_INFORMATION :{BLACK}Informatiounen zum Land, Konsole, Script debug, Screenshots, iwwer OpenTTD STR_TOOLBAR_TOOLTIP_SWITCH_TOOLBAR :{BLACK}Wiessel Toolbars @@ -331,7 +344,7 @@ STR_SCENEDIT_TOOLBAR_TOOLTIP_DISPLAY_MAP_TOWN_DIRECTORY :{BLACK}Weis d'K STR_SCENEDIT_TOOLBAR_LANDSCAPE_GENERATION :{BLACK}Landschaftserstellung STR_SCENEDIT_TOOLBAR_TOWN_GENERATION :{BLACK}Staderstellung 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 @@ -371,19 +384,19 @@ STR_FILE_MENU_SEPARATOR : STR_FILE_MENU_EXIT :Eraus ############ range ends here -############ range for map menu starts +# map menu STR_MAP_MENU_MAP_OF_WORLD :Weltkaart STR_MAP_MENU_EXTRA_VIEW_PORT :Extra Usiicht +STR_MAP_MENU_LINGRAPH_LEGEND :Cargo Flow Legend STR_MAP_MENU_SIGN_LIST :Schëlderlëscht -############ range for town menu starts, yet the town directory is shown in the map menu in the scenario editor + +############ range for town menu starts STR_TOWN_MENU_TOWN_DIRECTORY :Stiedverzeeschniss -############ end of the 'Display map' dropdown STR_TOWN_MENU_FOUND_TOWN :Stad grënnen -############ end of the 'Town' dropdown +############ range ends here ############ range for subsidies menu starts STR_SUBSIDIES_MENU_SUBSIDIES :Subventiounen -STR_SUBSIDIES_MENU_GOAL :Aktuell Zieler ############ range ends here ############ range for graph menu starts @@ -398,6 +411,7 @@ STR_GRAPH_MENU_CARGO_PAYMENT_RATES :Luedungs Bezuel ############ 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 ############ range ends here ############ range for industry menu starts @@ -407,14 +421,14 @@ 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 @@ -433,7 +447,7 @@ STR_LANDSCAPING_MENU_PLACE_SIGN :Schëld opstell ############ range ends here ############ range for music menu starts -STR_TOOLBAR_SOUND_MUSIC :Sound/Musék +STR_TOOLBAR_SOUND_MUSIC :Sound/Musik ############ range ends here ############ range for message menu starts @@ -456,7 +470,7 @@ STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Zeechen-Boxen u 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 @@ -472,22 +486,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 @@ -567,7 +599,7 @@ 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}Detailler fir dës Firma uweisen ############ Those following lines need to be in this order!! STR_PERFORMANCE_DETAIL_VEHICLES :{BLACK}Gefierer: STR_PERFORMANCE_DETAIL_STATIONS :{BLACK}Statiounen: @@ -580,14 +612,14 @@ 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_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 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_PROFIT_TOOLTIP :{BLACK}Profit vum Gefier mam mannsten Akommes (vun allen Gefierer déi méi wéi 2 Joer aal sinn) 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_MONEY_TOOLTIP :{BLACK}Betrag un Suen den dës 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 @@ -599,8 +631,8 @@ STR_MUSIC_PLAYLIST_NEW_STYLE :{TINY_FONT}{BLA 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}Musék Lautstärkt -STR_MUSIC_EFFECTS_VOLUME :{TINY_FONT}{BLACK}Lautstärkt vun den Effekter +STR_MUSIC_MUSIC_VOLUME :{TINY_FONT}{BLACK}Musik Lautstäerkt +STR_MUSIC_EFFECTS_VOLUME :{TINY_FONT}{BLACK}Lautstäerkt 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}' @@ -614,26 +646,26 @@ STR_MUSIC_SHUFFLE :{TINY_FONT}{BLA STR_MUSIC_PROGRAM :{TINY_FONT}{BLACK}Programm STR_MUSIC_TOOLTIP_SKIP_TO_PREVIOUS_TRACK :{BLACK}Sprang op d'Stéck firdrun vun der Selektioun 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'Musék -STR_MUSIC_TOOLTIP_START_PLAYING_MUSIC :{BLACK}Start d'Musék -STR_MUSIC_TOOLTIP_DRAG_SLIDERS_TO_SET_MUSIC :{BLACK}Zéi den Regler fir d'Lautstärkt vun der Musék 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 Musék' 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_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äerkt vun der Musik an den Effekter anzestellen +STR_MUSIC_TOOLTIP_SELECT_ALL_TRACKS_PROGRAM :{BLACK}Wielt 'all Lidder' Programm +STR_MUSIC_TOOLTIP_SELECT_OLD_STYLE_MUSIC :{BLACK}Wielt den 'aalen Style' Musiksprogramm +STR_MUSIC_TOOLTIP_SELECT_NEW_STYLE_MUSIC :{BLACK}Wielt den 'neien Style' 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 Musékselektioneier-Fënster +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 # Playlist window -STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}Musékprogramm 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_CLEAR :{TINY_FONT}{BLACK}Läschen 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_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) @@ -649,7 +681,7 @@ STR_HIGHSCORE_PERFORMANCE_TITLE_CAPITALIST :Kapitalist STR_HIGHSCORE_PERFORMANCE_TITLE_MAGNATE :Magnat STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL :Mogul STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY :Tycoon vum Jorhonnert -STR_HIGHSCORE_NAME :{BIG_FONT}{PRESIDENT_NAME}, {COMPANY} +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}'! @@ -660,25 +692,28 @@ STR_SMALLMAP_CAPTION :{WHITE}Kaart - STR_SMALLMAP_TYPE_CONTOURS :Konturen STR_SMALLMAP_TYPE_VEHICLES :Gefierer STR_SMALLMAP_TYPE_INDUSTRIES :Industrien +STR_SMALLMAP_TYPE_ROUTEMAP :Cargo Flow STR_SMALLMAP_TYPE_ROUTES :Routen STR_SMALLMAP_TYPE_VEGETATION :Vegetatioun STR_SMALLMAP_TYPE_OWNERS :Besëtzer STR_SMALLMAP_TOOLTIP_SHOW_LAND_CONTOURS_ON_MAP :{BLACK}Weis d'Landkonturen op der Kaart STR_SMALLMAP_TOOLTIP_SHOW_VEHICLES_ON_MAP :{BLACK}Weis d'Gefierer op der Kaart STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRIES_ON_MAP :{BLACK}Weis d'Industrien op der Kaart +STR_SMALLMAP_TOOLTIP_SHOW_LINK_STATS_ON_MAP :{BLACK}Weis de Cargo Flow op der Kaart 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_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}Stroosegefierer 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 @@ -704,6 +739,7 @@ STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLA STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Schalt d'Stiednimm op der Kaart un/aus STR_SMALLMAP_CENTER :{BLACK}Zentréiert d'kleng Kaart op déi aktuell Positioun 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}All ausschalten @@ -714,6 +750,8 @@ STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES :{BLACK}All Indu 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_CARGOS :{BLACK}Weis keng Wueren op der Kaart +STR_SMALLMAP_TOOLTIP_ENABLE_ALL_CARGOS :{BLACK}Weis all Wueren op der Kaart # Status bar messages STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Lescht Meldung oder News @@ -738,14 +776,14 @@ STR_NEWS_FIRST_CARGO_TRAM_ARRIVAL :{BIG_FONT}{BLAC 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_TRAIN_CRASH :{BIG_FONT}{BLACK}Zuchaccident!{}{COMMA} Leit stiewen an der Explosioun nom Accident +STR_NEWS_ROAD_VEHICLE_CRASH_DRIVER :{BIG_FONT}{BLACK}Stroossegefier Accident!{}Fuerer stierft an der Explosioun no Accident mat Zuch +STR_NEWS_ROAD_VEHICLE_CRASH :{BIG_FONT}{BLACK}Stroossegefieraccident!{}{COMMA} Leit stiewen an der Explosioun no Accident mam Zuch +STR_NEWS_AIRCRAFT_CRASH :{BIG_FONT}{BLACK}Fligeraccident!{}{COMMA} Leit stiewen an der Explosioun bei {STATION} +STR_NEWS_PLANE_CRASH_OUT_OF_FUEL :{BIG_FONT}{BLACK}Fligeraccident!{}Fliger hat keen Bensin méi, {COMMA} Leit 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_DISASTER_SMALL_UFO :{BIG_FONT}{BLACK}Stroossegefier bei 'UFO'-Zesummenstouss 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! @@ -760,7 +798,7 @@ STR_NEWS_COMPANY_BANKRUPT_TITLE :{BIG_FONT}{BLAC STR_NEWS_COMPANY_BANKRUPT_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} ass zougemaach ginn, an all Reschtposten sinn verkaaf! 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! @@ -774,7 +812,7 @@ STR_NEWS_INDUSTRY_CLOSURE_LACK_OF_TREES :{BIG_FONT}{BLAC STR_NEWS_EURO_INTRODUCTION :{BIG_FONT}{BLACK}Europäesch Währungsunioun!{}{}Den Euro ass als nei Währung am Land angefouert 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! @@ -785,18 +823,17 @@ STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL :{BIG_FONT}{BLAC STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM :{BIG_FONT}{BLACK}Insektenbefall bei {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 +# Order review system / warnings STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}{VEHICLE} huet ze wéinech 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 @@ -875,18 +912,15 @@ STR_GAME_OPTIONS_CURRENCY_LTL :Lithauësch Lit STR_GAME_OPTIONS_CURRENCY_KRW :Südkoreanëschen Won (KRW) STR_GAME_OPTIONS_CURRENCY_ZAR :Südafrikanësche 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) ############ end of currency region -STR_GAME_OPTIONS_MEASURING_UNITS_FRAME :{BLACK}Moosseenheeten -STR_GAME_OPTIONS_MEASURING_UNITS_DROPDOWN_TOOLTIP :{BLACK}Moosseenheetenauswiel ############ start of measuring units region -STR_GAME_OPTIONS_MEASURING_UNITS_IMPERIAL :Britësche System -STR_GAME_OPTIONS_MEASURING_UNITS_METRIC :Métreschen System -STR_GAME_OPTIONS_MEASURING_UNITS_SI :SI ############ end of measuring units region -STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Stroossengefierer +STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Stroossegefierer 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_DROPDOWN_RIGHT :Riets fueren @@ -921,11 +955,13 @@ STR_GAME_OPTIONS_TOWN_NAME_CATALAN :Katalanësch 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 @@ -937,23 +973,21 @@ STR_GAME_OPTIONS_RESOLUTION :{BLACK}Bildopl STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Wielt d'Bildopléisung STR_GAME_OPTIONS_RESOLUTION_OTHER :Aaneres -STR_GAME_OPTIONS_SCREENSHOT_FORMAT :{BLACK}Screenshotformat -STR_GAME_OPTIONS_SCREENSHOT_FORMAT_TOOLTIP :{BLACK}Wielt de Screenshotformat deen benotzt sollt ginn - 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 den 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_SFX :{BLACK}Basis sounds set -STR_GAME_OPTIONS_BASE_SFX_TOOLTIP :{BLACK}Selectéiert Basis Sound Sets +STR_GAME_OPTIONS_BASE_SFX_TOOLTIP :{BLACK}Wiel de Basis Sound Set den soll benotzt ginn STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}Méi Informatiounen iwwer d'Basis Sound Set 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_TOOLTIP :{BLACK}Wiel de Basis Sound Set den 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_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Konnt keng Lësch vun net supportéiren Opléisungen fannen STR_ERROR_FULLSCREEN_FAILED :{WHITE}Fehler beim Vollbild # Custom currency window @@ -1053,14 +1087,26 @@ 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_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 :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_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 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 :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 @@ -1078,10 +1124,30 @@ 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_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_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_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_CONSTRUCTION_SPEED :Baugeschwindegkeet: {STRING} +STR_CONFIG_SETTING_CONSTRUCTION_SPEED_HELPTEXT :Limitéier d'Unzuel vun 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_CONSTRUCTION_COSTS :Konstruktiounskäschten: {STRING} +STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :Bestëmm den Niveau vun Bau- an 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_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_AUTOSLOPE :Erlaabt Landforumung ë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 @@ -1093,9 +1159,9 @@ STR_CONFIG_SETTING_TILE_LENGTH :{COMMA} Feld{P 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_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 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äerkt vum Gefier +STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL :Stroossegefier Beschleunigungsmodell: {STRING} +STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL_HELPTEXT :Wielt de physësche Modell fir d'Stroossegefierbeschleunegung. 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ä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_PERCENTAGE :{COMMA}% @@ -1105,22 +1171,16 @@ STR_CONFIG_SETTING_FORBID_90_DEG :Verbidd Zich an 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_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_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_NONE :keng -STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :wei aaner 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 @@ -1134,20 +1194,18 @@ STR_CONFIG_SETTING_SIGNALSIDE_RIGHT :Riets STR_CONFIG_SETTING_SHOWFINANCES :Weis d'Finanzen um Ënn vum Joër: {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_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_NONSTOP_BY_DEFAULT_HELPTEXT :Normalerweis stoppt en Gefier op all Statioun op sengem Wee. Wann dës 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_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_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_AUTOSCROLL_EVERY_VIEWPORT :All Usiicht STR_CONFIG_SETTING_BRIBE :Erlaabt Bestiechung vun den Gemengen: {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} @@ -1165,17 +1223,13 @@ STR_CONFIG_SETTING_PLANE_SPEED_HELPTEXT :Leet d'relativ 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_NONE :keng -STR_CONFIG_SETTING_PLANE_CRASHES_REDUCED :reduzéiert -STR_CONFIG_SETTING_PLANE_CRASHES_NORMAL :normal +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_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 @@ -1187,14 +1241,14 @@ STR_CONFIG_SETTING_WARN_LOST_VEHICLE :Warnen wann en 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_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_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 Gefier en negativen 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_AUTORENEW_VEHICLE :Gefier automatesch ernéieren wann ët aal gët: {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 @@ -1209,32 +1263,46 @@ STR_CONFIG_SETTING_HOVER_DELAY :Weis Tooltips: 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_DISABLED :Rietsklick -STR_CONFIG_SETTING_POPULATION_IN_LABEL :Weist Bewunnerzuel am Numm vun der Stadt: {STRING} +STR_CONFIG_SETTING_POPULATION_IN_LABEL :Weist Awunner am Numm vun der Stad: {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_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éigt den Schnéi ufenkt an der subarktëscher Landschaft. Schnéi affektéiert och Industriegeneratioun an de Wuesstum vun 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 mescht, 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 den 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 @@ -1242,7 +1310,7 @@ STR_CONFIG_SETTING_STATION_SPREAD :Maximal Ausdehn 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_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 @@ -1255,7 +1323,7 @@ STR_CONFIG_SETTING_SMOOTH_SCROLLING :Feinen Scrollin 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_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 :Weis Farwen je no Gefiertyp: {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_NONE :Keng STR_CONFIG_SETTING_LIVERIES_OWN :Eegen Firma @@ -1269,6 +1337,12 @@ 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_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_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 @@ -1279,26 +1353,24 @@ 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äichern: {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_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_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_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_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 :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 @@ -1313,34 +1385,55 @@ STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_HELPTEXT :Schinnentyp den STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_FIRST :Ëischt 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_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_CONFIRM :Konstruktioun: {STRING} +STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT :Spill Soundeffekter of wann 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_VEHICLE :Gefierer: {STRING} +STR_CONFIG_SETTING_SOUND_VEHICLE_HELPTEXT :Spill Soundeffekter vun 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 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 :Maximum Stroossegefierer 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 :Maximum 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 :Maximum 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 :Stroossegefierer 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_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_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 @@ -1352,7 +1445,7 @@ STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Wiel op eng Rev 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_DISABLED :ausgeschalt +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_AIRCRAFT :Standard Revisiounsintervall fir Fligeren: {STRING} @@ -1361,26 +1454,41 @@ STR_CONFIG_SETTING_SERVINT_SHIPS :Standard Revisi STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Definéiert den 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_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 :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_NEWS_ARRIVAL_FIRST_VEHICLE_OWN :Ukonft vum éischten Gefiert op enger Spillerstatioun: {STRING} -STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER :Ukonft vum éischten Gefiert op enger Géigenspillerstatioun: {STRING} +STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN :Ukonft vum éischten Gefier op enger Spillerstatioun: {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 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_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_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_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 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_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 STR_CONFIG_SETTING_NEWS_MESSAGES_SUMMARY :Resumé @@ -1418,27 +1526,27 @@ STR_CONFIG_SETTING_CYCLE_SIGNAL_ALL :Alleguerten STR_CONFIG_SETTING_TOWN_LAYOUT :Stroossenlayout an neien 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_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_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_ALLOW_TOWN_LEVEL_CROSSINGS_HELPTEXT :Wann dës Astellung ugeschalt ass, kënnen Stied Stroossen 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_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 -STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :erlaabt -STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :erlaabt, custom Stad-Layout +STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :Verbueden +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_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_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 @@ -1447,7 +1555,7 @@ STR_CONFIG_SETTING_STATUSBAR_POS_HELPTEXT :Horizontal Posi 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_SNAP_RADIUS_DISABLED :Ausgeschalt STR_CONFIG_SETTING_SOFT_LIMIT :Maximal Unzuel vun net-gepinnten 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} @@ -1462,7 +1570,7 @@ 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 :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 @@ -1472,29 +1580,93 @@ 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_VALUE :1 zu {COMMA} -STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :keen +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_GUI :{ORANGE}Interface -STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}Konstruktioun +STR_CONFIG_SETTING_LINKGRAPH_INTERVAL :Aktualiséier d'Distributiounsgrafik all {STRING} 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_DISTRIBUTION_MANUAL :manuell +STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC :asymmetrësch +STR_CONFIG_SETTING_DISTRIBUTION_SYMMETRIC :symmetrësch +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_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_ARMOURED :Distributiounsmodus fir d'GEPANZERT Wuereklass: {STRING} +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 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_DEFAULT :Distributiounsmodus fir aner Wuerenklassen: {STRING} +STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :"asymmetrësch" 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 "asymmetrësch" 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_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 siedegt fir d'éischt den 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 vermeiden wann d'Kapazitéit iwwerschad 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_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_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_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_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_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_SI :SI (m) + +STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Lokaliséirung +STR_CONFIG_SETTING_GRAPHICS :{ORANGE}Graphik +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_VEHICLES_PHYSICS :{ORANGE}Physik +STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Routenplangung +STR_CONFIG_SETTING_LIMITATIONS :{ORANGE}Limitatiounen +STR_CONFIG_SETTING_ACCIDENTS :{ORANGE}Katastrophen / Accidenter +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}Wuerenverdeelung STR_CONFIG_SETTING_AI :{ORANGE}Géigner -STR_CONFIG_SETTING_DISPLAY_OPTIONS :{ORANGE}Displayoptiounen -STR_CONFIG_SETTING_INTERACTION :{ORANGE}Interaktioun -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 @@ -1502,7 +1674,7 @@ STR_CONFIG_SETTING_PATHFINDER_YAPF_RECOMMENDED :YAPF {BLUE}(rec 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 :Pfadfinder fir Stroossegefierer: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES_HELPTEXT :Pfadfinder den 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 @@ -1528,6 +1700,8 @@ STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_ALGORITHM :{WHITE}... Spil 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 # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} @@ -1540,6 +1714,7 @@ STR_INTRO_SCENARIO_EDITOR :{BLACK}Szenarie 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_NEWGRF_SETTINGS :{BLACK}NewGRF Astellungen STR_INTRO_ONLINE_CONTENT :{BLACK}Check Online Inhalt @@ -1553,23 +1728,24 @@ STR_INTRO_TOOLTIP_PLAY_SCENARIO :{BLACK}Start en 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-arktësch' +STR_INTRO_TOOLTIP_SUB_TROPICAL_LANDSCAPE :{BLACK}Wielt de Landschaftsstil 'sub-tropësch' +STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Wielt de Landschaftsstil 'Spillsaachenland' 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_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} zréck? STR_QUIT_YES :{BLACK}Jo STR_QUIT_NO :{BLACK}Nee @@ -1599,7 +1775,7 @@ STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Als Fir 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_SWITCH_CLIMATE_TEMPERATE_LANDSCAPE :Temperéiert Landschaft +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 @@ -1612,7 +1788,7 @@ STR_LIVERY_CAPTION :{WHITE}Neien Fa 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 @@ -1627,12 +1803,12 @@ 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 (Elektrësch) +STR_LIVERY_PASSENGER_WAGON_MONORAIL :Passagéierwaggon (Monorail) +STR_LIVERY_PASSENGER_WAGON_MAGLEV :Passagéierwaggon (Magnéitbahn) +STR_LIVERY_FREIGHT_WAGON :Gidderwaggon STR_LIVERY_BUS :Bus STR_LIVERY_TRUCK :Camion STR_LIVERY_PASSENGER_SHIP :Passagéierfähr @@ -1647,6 +1823,7 @@ STR_LIVERY_FREIGHT_TRAM :Wuerentram 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_RANDOM :{BLACK}Duercherneen wierfelen STR_FACE_MALE_BUTTON :{BLACK}Männlech STR_FACE_MALE_TOOLTIP :{BLACK}Wielt männlech Gesiichter @@ -1702,10 +1879,10 @@ STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}Krawatt # Network server list STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}Multiplayer -STR_NETWORK_SERVER_LIST_CONNECTION :{BLACK}Connectioun: -STR_NETWORK_SERVER_LIST_CONNECTION_TOOLTIP :{BLACK}Wielt tëscht enger Internet Partie oder enger LAN Partie -STR_NETWORK_SERVER_LIST_LAN :LAN -STR_NETWORK_SERVER_LIST_INTERNET :Internet +STR_NETWORK_SERVER_LIST_ADVERTISED :{BLACK}Ugekënnegt +STR_NETWORK_SERVER_LIST_ADVERTISED_TOOLTIP :{BLACK}Wiel tëschent engem ugekënnegten (Internet) an net ugekënnegten (LAN) Spill +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 @@ -1764,16 +1941,16 @@ STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP :{BLACK}Den Numm 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_LAN_INTERNET :LAN / Internet -STR_NETWORK_START_SERVER_INTERNET_ADVERTISE :Internet (Werben) +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 den 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 :{BLACK}Maximal Firmen: STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES_TOOLTIP :{BLACK}D'Unzuel vun den Firmen 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 @@ -1886,6 +2063,7 @@ 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_TOOLBAR_LIST_SPECTATOR :{BLACK}Zuschauer # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Späicher d'Passwuert net @@ -1926,7 +2104,7 @@ STR_NETWORK_ERROR_SERVER_START :{WHITE}Konnt de STR_NETWORK_ERROR_CLIENT_START :{WHITE}Konnt sëch 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är 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_BANNED :{WHITE}Du bass vun dësem Server gebannt @@ -1992,7 +2170,7 @@ STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}Den Serv STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}Den Server gëtt nei gestart...{}Weg. waarden... # Content downloading window -STR_CONTENT_TITLE :{WHITE}Downloaden Inhalt +STR_CONTENT_TITLE :{WHITE}Inhalt Download STR_CONTENT_TYPE_CAPTION :{BLACK}Typ STR_CONTENT_TYPE_CAPTION_TOOLTIP :{BLACK}Typ vum Inhalt STR_CONTENT_NAME_CAPTION :{BLACK}Numm @@ -2004,6 +2182,10 @@ STR_CONTENT_SELECT_UPDATES_CAPTION :{BLACK}Wiel Upg 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_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 @@ -2026,7 +2208,7 @@ STR_CONTENT_DETAIL_FILESIZE :{SILVER}Downloa 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 gebuild... +STR_CONTENT_NO_ZLIB :{WHITE}OpenTTD ass ouni "zlib" support compiléiert... STR_CONTENT_NO_ZLIB_SUB :{WHITE}... Inhaltdownload ass net méiglech! # Order of these is important! @@ -2056,7 +2238,7 @@ STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD_FILE_NOT_WRITABLE :{WHITE}... Date STR_CONTENT_ERROR_COULD_NOT_EXTRACT :{WHITE}Konnt den downgeload 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 fond 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 @@ -2069,10 +2251,21 @@ STR_TRANSPARENT_INDUSTRIES_TOOLTIP :{BLACK}Wiesselt STR_TRANSPARENT_BUILDINGS_TOOLTIP :{BLACK}Wiesselt d'Transparenz fir d'Firmengebaier. 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_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 +# Linkgraph legend window +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 + +# Linkgraph legend window and linkgraph legend in smallmap +STR_LINKGRAPH_LEGEND_UNUSED :{TINY_FONT}{BLACK}onbenotzt +STR_LINKGRAPH_LEGEND_SATURATED :{TINY_FONT}{BLACK}gesättegt +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_OFF :{BLACK}Aus @@ -2090,17 +2283,17 @@ STR_JOIN_WAYPOINT_CAPTION :{WHITE}Weepunkt STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Separaten 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 :Elektrësche Schinnebau STR_RAIL_TOOLBAR_MONORAIL_CONSTRUCTION_CAPTION :Monorailbau STR_RAIL_TOOLBAR_MAGLEV_CONSTRUCTION_CAPTION :Magnéitbahnbau 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_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 @@ -2112,21 +2305,21 @@ 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 # 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_PLATFORM_LENGTH :{BLACK}Platformlä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 @@ -2139,7 +2332,7 @@ 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_ENTRY_TOOLTIP :{BLACK}Agangs-Signal (Diks){}Gréng soulaang een oder méi gréng Ausgangs-Signaler op nächsten Streckenabschnitt sinn. Anescht ass et roud. 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 @@ -2156,8 +2349,8 @@ STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_DECREASE_TOOLTIP :{BLACK}Setzt Si STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_INCREASE_TOOLTIP :{BLACK}Setzt Signaldensitéit rop # 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}Wiel d'Schinnebréck +STR_SELECT_ROAD_BRIDGE_CAPTION :{WHITE}Wielt d'Stroossebréck 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} @@ -2172,20 +2365,20 @@ 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_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_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 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_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_TRAMWAY_TUNNEL :{BLACK}Tramtunnel bauen. Shift wiesselt tëscht bauen/ongeféier Käschten uweisen @@ -2195,8 +2388,8 @@ STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS :{BLACK}Wiesselt # 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_TRAM_ORIENTATION_CAPTION :{WHITE}Richtung 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 @@ -2213,16 +2406,16 @@ STR_WATERWAYS_TOOLBAR_CAPTION :{WHITE}Waassers STR_WATERWAYS_TOOLBAR_CAPTION_SE :{WHITE}Waasserstroosen 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_DEPOT_TOOLTIP :{BLACK}Schëffsschapp 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_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}Waasser 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 Richtung +STR_DEPOT_BUILD_SHIP_ORIENTATION_TOOLTIP :{BLACK}Wielt Richtung vum Schëffsschapp # Dock construction window STR_STATION_BUILD_DOCK_CAPTION :{WHITE}Hafen @@ -2232,7 +2425,7 @@ STR_TOOLBAR_AIRCRAFT_CAPTION :{WHITE}Fluchhä 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 # 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_LAYOUT_NAME :{BLACK}Layout {NUM} @@ -2273,7 +2466,7 @@ STR_OBJECT_CLASS_TRNS :Transmitter # 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 den Baamtyp. Wann d'Feld schons en Baam huet, ginn méi Beem vun 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 @@ -2282,7 +2475,7 @@ 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 @@ -2359,9 +2552,9 @@ STR_LAND_AREA_INFORMATION_COST_TO_CLEAR :{BLACK}Käschte 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 :{BLACK}Besëtzer: {LTBLUE}{STRING} -STR_LAND_AREA_INFORMATION_ROAD_OWNER :{BLACK}Stroossenbesëtzer: {LTBLUE}{STRING} +STR_LAND_AREA_INFORMATION_ROAD_OWNER :{BLACK}Stroossebesë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_RAIL_OWNER :{BLACK}Schinnebesëtzer: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Lokal Autoritéit: {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}) @@ -2375,6 +2568,7 @@ STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Akzeptéiert Luedung: {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_ROAD_SPEED_LIMIT :{BLACK}Stroossen Geschw. Limitatioun: {LTBLUE}{VELOCITY} # Description of land area of different tiles STR_LAI_CLEAR_DESCRIPTION_ROCKS :Fielsen @@ -2407,7 +2601,7 @@ STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_NOENTRYSIGNALS :{STRING} Schinn 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 @@ -2437,7 +2631,7 @@ STR_LAI_WATER_DESCRIPTION_CANAL :Kanal STR_LAI_WATER_DESCRIPTION_LOCK :Schlass 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 @@ -2471,7 +2665,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Land am Firmenb STR_ABOUT_OPENTTD :{WHITE}Iwwert OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Original Copyright {COPYRIGHT} 1995 Chris Sawyer, All Rechter virbehalen STR_ABOUT_VERSION :{BLACK}OpenTTD Versioun {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2012 D'OpenTTD team +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2014 D'OpenTTD team # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Spill späicheren @@ -2480,16 +2674,17 @@ STR_SAVELOAD_SAVE_SCENARIO :{WHITE}Szenario STR_SAVELOAD_LOAD_SCENARIO :{WHITE}Szenario lueden STR_SAVELOAD_LOAD_HEIGHTMAP :{WHITE}Lued Héichtenkaart 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_BUTTON :{BLACK}Läschen STR_SAVELOAD_DELETE_TOOLTIP :{BLACK}Lescht den momentan gewielten 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_LOAD_HEIGHTMAP_TOOLTIP :{BLACK}Ugewielten Héichtekaart lueden STR_SAVELOAD_DETAIL_CAPTION :{BLACK}Spill Detailer STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}Keng Informatioun do STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING} @@ -2500,6 +2695,7 @@ STR_SAVELOAD_OSKTITLE :{BLACK}Gëff en # 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_BY :{BLACK}* STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Unz. Dierfer: STR_MAPGEN_DATE :{BLACK}Datum: @@ -2507,10 +2703,6 @@ STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Unz. Ind 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_LAND_GENERATOR :{BLACK}Landgenerator: STR_MAPGEN_TREE_PLACER :{BLACK}Baam Algorithmus: STR_MAPGEN_TERRAIN_TYPE :{BLACK}Terrain Typ: @@ -2521,7 +2713,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 @@ -2530,14 +2722,13 @@ 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_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_SNOW_LINE_QUERY_CAPT :{WHITE}Ännert d'Schnéilinnhéicht STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Änner d'Startjoer @@ -2576,31 +2767,33 @@ STR_NEWGRF_SETTINGS_ACTIVE_LIST :{WHITE}Aktiv Ne 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_PRESET_LIST_TOOLTIP :{BLACK}Gewielten 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_DELETE :{BLACK}Preset läschen +STR_NEWGRF_SETTINGS_PRESET_DELETE_TOOLTIP :{BLACK}Gewielten 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}Ausgewielten 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_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_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_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 Palette vun den ausgewielten NewGRF.{} Maach dat wann d'Grafiken vun dëser NewGRF rosa am Spill ausgesin 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_BUTTON :{BLACK}Feelenden Inhalt online downloaden STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_TOOLTIP :{BLACK}Check op den Inahlt den feelt online kann fonnt gin STR_NEWGRF_SETTINGS_FILENAME :{BLACK}Dateinumm: {SILVER}{STRING} @@ -2616,6 +2809,16 @@ STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}Datei net STR_NEWGRF_SETTINGS_DISABLED :{RED}Ausgeschalt STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}Onkompatibel mat dëser Versioun vun OpenTTD +# NewGRF save preset window +STR_SAVE_PRESET_CAPTION :{WHITE}Preset späichern +STR_SAVE_PRESET_LIST_TOOLTIP :{BLACK}Lëscht vun Presets, wiel een den op den Numm ënnendrënner kopéiert gëtt +STR_SAVE_PRESET_TITLE :{BLACK}Wiel en Numm fir den Preset +STR_SAVE_PRESET_EDITBOX_TOOLTIP :{BLACK}Grad ausgewielten Numm fir den Preset den 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 den Preset op den grad ausgewielten Numm + # NewGRF parameters window STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}NewGRF Parameter änneren STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Zouman @@ -2639,11 +2842,11 @@ 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 emsprangen um Ufank 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_TOOLTIP :{BLACK}Géi weider op déi nächst normal Sprite, iwwersprang all pseudo/recolour/font Sprite an emsprangen um Ufank 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} @@ -2655,7 +2858,7 @@ 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 @@ -2675,6 +2878,7 @@ STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Huet eng Rei Action 8 Einträg (Sprite {3:NUM}) STR_NEWGRF_ERROR_READ_BOUNDS :Lanscht d'Enn vum Pseudo-Sprite gelies (Sprite {3:NUM}) STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}D'momentan benotzten Grafikset huet e puer Sprites ze mann. {}W.e.g d'Basisgrafikset updaten +STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}Am grad benotzten Basis-Grafikset fehlen e puer Sprites.{}W.e.g Basis-Grafikset updaten.{}Wellsde en {YELLOW}Development Snapshot vun OpenTTD spills{WHITE}, brauchsde och en {YELLOW}Development Snapshot vum Basis-Grafikset{WHITE} STR_NEWGRF_ERROR_GRM_FAILED :Ugefroten GRF Ressource net verfügbar (sprite {3:NUM}) STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} gouf ausgeschalt vun {STRING} STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Invalid/onbekannten Sprite Layout Format (Sprite {3:NUM}) @@ -2685,6 +2889,7 @@ STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}Du mës 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_COMPATIBLE_LOAD_WARNING :{WHITE}Kompatibel GRF(s) gelueden fir fehlend Dateien STR_NEWGRF_DISABLED_WARNING :{WHITE}Fehlend GRF Datei(en) sinn ausgeschalt @@ -2699,8 +2904,9 @@ 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}Ännnert 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 @@ -2715,6 +2921,9 @@ STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} vun 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 ... @@ -2743,18 +2952,18 @@ 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_POPULATION_HOUSES :{BLACK}Awunner: {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_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} D{P aag eeg} +STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}Stad wiisst all {ORANGE}{COMMA}{BLACK} D{P aag 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 @@ -2763,8 +2972,8 @@ STR_TOWN_VIEW_RENAME_TOOLTIP :{BLACK}Wiesselt 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}Dës Stad ganz läschen STR_TOWN_VIEW_RENAME_TOWN_BUTTON :Stad ëmbenennen @@ -2780,7 +2989,7 @@ STR_LOCAL_AUTHORITY_DO_IT_TOOLTIP :{BLACK}Féiert 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 @@ -2791,15 +3000,19 @@ STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_MEDIUM_ADVERTISING :{YELLOW}Eng më 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_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_NEW_BUILDINGS :{YELLOW}Den Bau vun neie 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_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}Zieler +STR_GOALS_CAPTION :{WHITE}{COMPANY} Ziler +STR_GOALS_SPECTATOR_CAPTION :{WHITE}Global Ziler STR_GOALS_GLOBAL_TITLE :{BLACK}Global Zieler: 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_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 @@ -2825,7 +3038,7 @@ 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 @@ -2838,6 +3051,18 @@ STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}Servicer 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 +# Story book window +STR_STORY_BOOK_CAPTION :{WHITE}{COMPANY} Storybuch +STR_STORY_BOOK_SPECTATOR_CAPTION :{WHITE}Globalt Storybuch +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_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 @@ -2845,15 +3070,15 @@ STR_STATION_LIST_CAPTION :{WHITE}{COMPANY 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_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}Kéng 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 @@ -2864,8 +3089,31 @@ STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPAN STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Bewertungen STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Weis d'Statiounsbewertungen -STR_STATION_VIEW_CARGO_RATINGS_TITLE :{BLACK}Lokal Bewertungen vun den Transporter: -STR_STATION_VIEW_CARGO_RATING :{WHITE}{STRING}: {YELLOW}{STRING} ({COMMA}%) +STR_STATION_VIEW_SUPPLY_RATINGS_TITLE :{BLACK}Lokal Bewertung 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: 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_TO_HERE :{GREEN}{CARGO_SHORT} op dës Statioun +STR_STATION_VIEW_NONSTOP :{YELLOW}{CARGO_SHORT} non-stop + +STR_STATION_VIEW_GROUP_S_V_D :Quell-Via-Destinatioun +STR_STATION_VIEW_GROUP_S_D_V :Quell-Destinatioun-Via +STR_STATION_VIEW_GROUP_V_S_D :Via-Quell-Destinatioun +STR_STATION_VIEW_GROUP_V_D_S :Via-Destinatioun-Quell +STR_STATION_VIEW_GROUP_D_S_V :Destinatioun-Quell-Via +STR_STATION_VIEW_GROUP_D_V_S :Destinatioun-Via-Quell ############ range for rating starts STR_CARGO_RATING_APPALLING :Schrecklech @@ -2881,10 +3129,10 @@ 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 dës Statioun an hierem Zaitplang hunn +STR_STATION_VIEW_SCHEDULED_ROAD_VEHICLES_TOOLTIP :{BLACK}Weis all Stroossegefierer déi dës Statioun an hierem Zäitplang hunn +STR_STATION_VIEW_SCHEDULED_AIRCRAFT_TOOLTIP :{BLACK}Weis all Fliger den dës Statioun an sengem Zaitplang huet +STR_STATION_VIEW_SCHEDULED_SHIPS_TOOLTIP :{BLACK}Weis all Schëffer déi dës Statioun an hierem Zaitplang hunn STR_STATION_VIEW_RENAME_STATION_CAPTION :D'Gare ëmbenennen @@ -2907,12 +3155,12 @@ 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_ROAD_VEHICLE_RUNNING_COSTS :{GOLD}Stroossegefierer 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_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 @@ -2922,7 +3170,7 @@ 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 @@ -2938,7 +3186,7 @@ STR_COMPANY_VIEW_INAUGURATED_TITLE :{GOLD}Agefouert 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 @@ -2978,13 +3226,13 @@ STR_COMPANY_VIEW_SELL_SHARE_TOOLTIP :{BLACK}Verkaaft 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: @@ -2992,7 +3240,6 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS :{WHITE}Kanäl STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}Statiounen: STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}Statiounsfelder STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}Fluchhäfen -STR_COMPANY_INFRASTRUCTURE_VIEW_COST :{WHITE}{1:CURRENCY_LONG}/Jr ({0:COMMA}) STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL :{WHITE}{CURRENCY_LONG}/Jr # Industry directory @@ -3009,6 +3256,7 @@ STR_INDUSTRY_VIEW_PRODUCTION_LAST_MONTH_TITLE :{BLACK}Produkti 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 ############ range for requires starts STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Brauch: {YELLOW}{STRING}{STRING} @@ -3033,7 +3281,7 @@ STR_VEHICLE_LIST_SHIP_CAPTION :{WHITE}{STRING} 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_ROAD_VEHICLE_TOOLTIP :{BLACK}Stroossegefierer - 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 @@ -3050,9 +3298,9 @@ STR_VEHICLE_LIST_MANAGE_LIST_TOOLTIP :{BLACK}Scheckt 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 den 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 den 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 @@ -3062,21 +3310,24 @@ STR_VEHICLE_LIST_SHARED_ORDERS_LIST_CAPTION :{WHITE}Gedeelte # 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_REPLACE_PROTECTION_TOOLTIP :{BLACK}Klick fir déi Grupp vum globalen "Autoersetzen" auszeschléissen +STR_QUERY_GROUP_DELETE_CAPTION :{WHITE}Grupp läschen +STR_GROUP_DELETE_QUERY_TEXT :{WHITE}Bassde sécher, dass du dës Grupp an all Ennergruppen läschen wëlls? + STR_GROUP_ADD_SHARED_VEHICLE :Gedeelten Gefierer bäisetzen STR_GROUP_REMOVE_ALL_VEHICLES :All Gefierer wechhuelen @@ -3089,7 +3340,7 @@ STR_BUY_VEHICLE_TRAIN_MONORAIL_CAPTION :Nei Monorailgef 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_ROAD_VEHICLE_CAPTION :Nei Stroossegefierer STR_BUY_VEHICLE_SHIP_CAPTION :Nei Schëffer STR_BUY_VEHICLE_AIRCRAFT_CAPTION :Neien Fliger @@ -3107,7 +3358,7 @@ 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_PWAGPOWER_PWAGWEIGHT :{BLACK}Ugedriwwen Waggonen: {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_ALL_BUT :Alles ausser {CARGO_LIST} @@ -3115,17 +3366,17 @@ STR_PURCHASE_INFO_MAX_TE :{BLACK}Max. Zé 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_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Stroossegefierlë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_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_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 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 @@ -3134,47 +3385,47 @@ STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_BUTTON :{BLACK}Ëmbenen 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}Gefiertyp ë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_QUERY_RENAME_TRAIN_TYPE_CAPTION :{WHITE}Zuchgefiertyp ëmbenennen +STR_QUERY_RENAME_ROAD_VEHICLE_TYPE_CAPTION :{WHITE}Gefierertyp ë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_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_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_ROAD_VEHICLE_SELL_TOOLTIP :{BLACK}Zéi d'Stroossegefier 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_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 @@ -3183,63 +3434,63 @@ STR_DEPOT_SHIP_NEW_VEHICLES_BUTTON :{BLACK}Nei Sch STR_DEPOT_AIRCRAFT_NEW_VEHICLES_BUTTON :{BLACK}Neien Fliger STR_DEPOT_TRAIN_NEW_VEHICLES_TOOLTIP :{BLACK}Keeft neien Zuch -STR_DEPOT_ROAD_VEHICLE_NEW_VEHICLES_TOOLTIP :{BLACK}Neit Stroossengefiert kafen +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_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_TRAIN_DEPOT_INFO :{BLACK}Dëst baut eng Kopie vun engem Zuch mat all den Waggonen. Klick op dësen 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 dësen 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}Dëst baut eng Kopie vum Schëff. Klick op dësen 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}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_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 den Schapp. Ctrl+Klick erstellt eng nei Usiicht op den 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 den Schapp. Ctrl+Klick erstellt eng nei Usiicht op den 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 Gefiererkonstrukteur +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} Kraft: {POWER} Max. T.E.: {6:FORCE}{}Betriebskäschten: {4:CURRENCY_LONG}/Jr{}Kapazitéit: {5: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_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 @@ -3257,55 +3508,55 @@ STR_REPLACE_VEHICLES_STOP :{BLACK}Stop Gef 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_ENGINE_WAGON_SELECT_HELP :{BLACK}Wiessel tëscht Maschin- an Waggonaustosch-Fënster STR_REPLACE_ENGINES :Motoren -STR_REPLACE_WAGONS :Wagonen +STR_REPLACE_WAGONS :Waggonen 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_HELP_REPLACE_INFO_TAB :{BLACK}Weist un wellech Maschin vun der lénks ugewielter Maschin 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ëscht dass d'automatescht Austauschen d'Längt vum Zuch behält, an dem en Waggonen (vun lénks un) wechhëllt, wann d'Lok den Zuch ze laang mëscht # 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_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_TRAIN_SEND_TO_DEPOT_TOOLTIP :{BLACK}Schéckt den Zuch an den Schapp. Ctrl+Klick fir nëmmen Revisoun +STR_VEHICLE_VIEW_ROAD_VEHICLE_SEND_TO_DEPOT_TOOLTIP :{BLACK}Schéckt d'Gefier 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 Schapp. 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_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 den 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_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_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}Stroossegefier ë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_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}Forcéiert d'Gefier fir ze dréien 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_ROAD_VEHICLE_SHOW_DETAILS_TOOLTIP :{BLACK}Weist Stroosengefier Detailer STR_VEHICLE_VIEW_SHIP_SHOW_DETAILS_TOOLTIP :{BLACK}Weist Schëffdetailer STR_VEHICLE_VIEW_AIRCRAFT_SHOW_DETAILS_TOOLTIP :{BLACK}Weist d'Fligerdetailer @@ -3342,7 +3593,7 @@ STR_VEHICLE_DETAILS_CAPTION :{WHITE}{VEHICLE 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 @@ -3372,8 +3623,13 @@ STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Revisiou 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_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 @@ -3392,9 +3648,9 @@ STR_VEHICLE_DETAILS_CARGO_FROM_MULT :{LTBLUE}{CARGO_ STR_VEHICLE_DETAIL_TAB_CARGO :{BLACK}Luedung STR_VEHICLE_DETAILS_TRAIN_CARGO_TOOLTIP :{BLACK}Weist 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 den 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éiten vun den 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 @@ -3407,20 +3663,20 @@ STR_REFIT_NEW_CAPACITY_COST_OF_REFIT :{BLACK}Nei Kapa 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 vun 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_TRAIN_LIST_TOOLTIP :{BLACK}Wielt d'Luedung déi transportéiert soll ginn +STR_REFIT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Wielt den Typ vun Wueren fir Stroossegefier +STR_REFIT_SHIP_LIST_TOOLTIP :{BLACK}Wielt den Luedungstyp fir d'Schëff STR_REFIT_AIRCRAFT_LIST_TOOLTIP :{BLACK}Wielt den Luedungstyp aus STR_REFIT_TRAIN_REFIT_BUTTON :{BLACK}Zuch upassen -STR_REFIT_ROAD_VEHICLE_REFIT_BUTTON :{BLACK}Stroossengefiert ë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_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}Stroosengefier 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 @@ -3429,7 +3685,7 @@ STR_ORDERS_CAPTION :{WHITE}{VEHICLE 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} @@ -3459,9 +3715,9 @@ STR_ORDER_DROP_NO_UNLOADING :Net entlueden STR_ORDER_TOOLTIP_UNLOAD :{BLACK}Wiesselt Entlueden 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 @@ -3471,7 +3727,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 @@ -3482,7 +3738,7 @@ 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 sollen 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 @@ -3492,24 +3748,24 @@ STR_ORDER_CONDITIONAL_COMPARATOR_MORE_EQUALS :ass méi oder g STR_ORDER_CONDITIONAL_COMPARATOR_IS_TRUE :ass wouer(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_TOOLTIP :{BLACK}Den Wäert deen mat den Gefierdaten verglach gëtt STR_ORDER_CONDITIONAL_VALUE_CAPT :{WHITE}Wäert anginn 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 den momentanen Optrag. CTRL+Klick iwwerspréngt op den ungewieltenen Optrag -STR_ORDERS_DELETE_BUTTON :{BLACK}Leschen +STR_ORDERS_DELETE_BUTTON :{BLACK}Läschen STR_ORDERS_DELETE_TOOLTIP :{BLACK}Lescht den ungewieltenen Optrag -STR_ORDERS_DELETE_ALL_TOOLTIP :{BLACK}All Opträg leschen +STR_ORDERS_DELETE_ALL_TOOLTIP :{BLACK}All Opträg läschen 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_STOP_SHARING_TOOLTIP :{BLACK}Stop d'Deelen 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_DEPOT :Géi an den noosten Schapp STR_ORDER_GO_TO_NEAREST_HANGAR :Géi bei 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 @@ -3522,9 +3778,9 @@ STR_ORDER_SERVICE_NON_STOP_AT :Revisioun non-s 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 :Stroossegefierer-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} @@ -3548,16 +3804,16 @@ 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 zu {STRING}) +STR_ORDER_FULL_LOAD_REFIT :(Vollueden mat Embauen zu {STRING}) +STR_ORDER_FULL_LOAD_ANY_REFIT :(Vollueden mat all Wueren mat Embauen zu {STRING}) +STR_ORDER_UNLOAD_REFIT :(Entlueden an Wueren lueden mat Embauen zu {STRING}) +STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(Entlueden an op voll Luedung waarden mat Embauen zu {STRING}) +STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(Entlueden an ward op iergendeng Volluedung mat Embauen zu {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}) @@ -3589,9 +3845,13 @@ STR_TIMETABLE_TOOLTIP :{BLACK}Zäitpla STR_TIMETABLE_NO_TRAVEL :Net ënnerwee STR_TIMETABLE_NOT_TIMETABLEABLE :Rees(automatesch; Zaitplang 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_NOT_TIMETABLED_SPEED :Fuer maximal {2:VELOCITY} (ouni Zäitplang) STR_TIMETABLE_TRAVEL_FOR :Ënnerwee fir {STRING} STR_TIMETABLE_TRAVEL_FOR_SPEED :Fiert fir {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} @@ -3600,14 +3860,14 @@ STR_TIMETABLE_TICKS :{COMMA} Interva STR_TIMETABLE_TOTAL_TIME :{BLACK}Dësen Zäitplang brauch {STRING} fir faërdeg ze gin 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 +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 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 @@ -3618,18 +3878,18 @@ STR_TIMETABLE_CLEAR_TIME_TOOLTIP :{BLACK}Lesch Z 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_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 den 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_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: @@ -3664,8 +3924,8 @@ STR_AI_DEBUG_SELECT_AI_TOOLTIP :{BLACK}Debug-ou STR_AI_GAME_SCRIPT :{BLACK}Spill-Script STR_AI_GAME_SCRIPT_TOOLTIP :{BLACK}Check den 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 @@ -3684,7 +3944,7 @@ STR_AI_CONFIG_MOVE_DOWN_TOOLTIP :{BLACK}Gewielte 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 @@ -3703,7 +3963,7 @@ STR_AI_LIST_VERSION :{LTBLUE}Versiou 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_TOOLTIP :{BLACK}Wiel den markéierten Script STR_AI_LIST_CANCEL :{BLACK}Ofbriechen STR_AI_LIST_CANCEL_TOOLTIP :{BLACK}Script net änneren @@ -3721,6 +3981,8 @@ STR_AI_SETTINGS_START_DELAY :Unzuel vun Deeg 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 @@ -3743,6 +4005,10 @@ STR_INCOME_FLOAT_INCOME_SMALL :{TINY_FONT}{GRE 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} @@ -3751,7 +4017,7 @@ STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Nach umg 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_SAVEGAME :Futtissen Spillstand - {STRING} @@ -3783,6 +4049,8 @@ STR_WARNING_HEIGHTMAP_SCALE_MESSAGE :{YELLOW}Quellen 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. # 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_MESSAGE_SCREENSHOT_SUCCESSFULLY :{WHITE}Screenshot gespäichert als '{STRING}' STR_ERROR_SCREENSHOT_FAILED :{WHITE}Screenshotfehler! @@ -3848,12 +4116,12 @@ STR_ERROR_CAN_T_RENAME_TOWN :{WHITE}Kann d'S 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_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 no 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_TOWN_CAN_T_DELETE :{WHITE}Kann dës 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 Statue am Stadzentrum # Industry related errors @@ -3862,7 +4130,7 @@ STR_ERROR_CAN_T_GENERATE_INDUSTRIES :{WHITE}Kann ken 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_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 @@ -3931,30 +4199,30 @@ STR_ERROR_BUOY_IN_THE_WAY :{WHITE}... Boje 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 den 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 :{WHITE}Kann d'Gefier 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_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 den Wee an den Schapp net fannen +STR_ERROR_UNABLE_TO_FIND_LOCAL_DEPOT :{WHITE}Kann den 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 @@ -3965,7 +4233,7 @@ STR_ERROR_AUTOREPLACE_MONEY_LIMIT :(Geldlimit) 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_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_MUST_REMOVE_RAILROAD_TRACK :{WHITE}D'Schinne musse 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_CAN_T_BUILD_SIGNALS_HERE :{WHITE}Kann d'Signaler hei net bauen... @@ -4037,67 +4305,73 @@ STR_ERROR_YOU_ALREADY_OWN_IT :{WHITE}... scho 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_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_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_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_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_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_TRAIN_TO_DEPOT :{WHITE}Kann den Zuch net an den 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 den Schapp schécken... STR_ERROR_CAN_T_SEND_AIRCRAFT_TO_HANGAR :{WHITE}Kann den 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_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_TRAIN_TYPE :{WHITE}Kann den Zuchgefiertyp net ëmbenennen... +STR_ERROR_CAN_T_RENAME_ROAD_VEHICLE_TYPE :{WHITE}Kann den Gefiertyp 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_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_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_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 # 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_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 @@ -4108,11 +4382,11 @@ STR_ERROR_CAN_T_INSERT_NEW_ORDER :{WHITE}Kann kee 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_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... @@ -4121,9 +4395,9 @@ STR_ERROR_TOO_FAR_FROM_PREVIOUS_DESTINATION :{WHITE}... ze w 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 @@ -4134,6 +4408,16 @@ STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}Kann d'S # Translatable comment for OpenTTD's desktop shortcut STR_DESKTOP_SHORTCUT_COMMENT :Eng Simulatioun déi op Transport Tycoon Deluxe baséiert +# Translatable descriptions in media/baseset/*.ob* files +STR_BASEGRAPHICS_DOS_DESCRIPTION :Original Transport Tycoon Deluxe DOS Editioun Grafik. +STR_BASEGRAPHICS_DOS_DE_DESCRIPTION :Original Transport Tycoon Deluxe DOS (Däitsch) Editioun Grafik. +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_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 @@ -4173,7 +4457,7 @@ STR_TOWN_BUILDING_NAME_PIGGY_BANK_1 :Spuerschwäin-B ##id 0x4800 # industry names STR_INDUSTRY_NAME_COAL_MINE :Kuelenstollen -STR_INDUSTRY_NAME_POWER_STATION :Kraftwierk +STR_INDUSTRY_NAME_POWER_STATION :Kraaftwierk STR_INDUSTRY_NAME_SAWMILL :Seeërei STR_INDUSTRY_NAME_FOREST :Bësch STR_INDUSTRY_NAME_OIL_REFINERY :Uelegraffinerie @@ -4182,7 +4466,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 @@ -4190,15 +4474,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 @@ -4207,7 +4491,7 @@ STR_INDUSTRY_NAME_TOY_FACTORY :Spillsaachen Fa 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_TOFFEE_QUARRY :Karamellbroch STR_INDUSTRY_NAME_SUGAR_MINE :Zockerminn ############ WARNING, using range 0x6000 for strings that are stored in the savegame @@ -4216,7 +4500,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} @@ -4256,7 +4540,7 @@ STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Collet Pannier 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) @@ -4279,95 +4563,95 @@ STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_30_ELECTRIC :BR '30' (Elektr 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_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 :Kaarwaggon +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éissegkeetenwaggon +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_TOY_VAN :Spillsaachenwaggon +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_BATTERY_TRUCK :Batterienwaggon +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' (Elektrësch) STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_MILLENNIUM_Z1_ELECTRIC :'Millennium Z1' (Elektrësch) 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_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 :Kaarwaggon +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 :Gepanzerten 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 :Friichtenwaggon +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 :Karamelwaggon +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éissegkeetenwaggon +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_TOY_VAN :Spillsaachenwaggon +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' (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_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 :Kaarwaggon +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 @@ -4387,21 +4671,21 @@ 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_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 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_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 @@ -4414,9 +4698,9 @@ STR_VEHICLE_NAME_ROAD_VEHICLE_CHIPPY_FOOD_VAN :Chippy Iesensca 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 @@ -4435,9 +4719,9 @@ 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_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 Spillsaachencamion STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_TOY_VAN :Powernaught Spillsaachencamion STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_TOY_VAN :Wizzowow Spillsaachencamion @@ -4465,7 +4749,7 @@ STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :Chugger-Chug Pa 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 @@ -4524,12 +4808,12 @@ 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 @@ -4580,8 +4864,9 @@ 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_SPACE_STRING :{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} @@ -4605,9 +4890,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 6d18cc206..1a6ea8092 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 @@ -232,7 +232,7 @@ 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 @@ -256,7 +256,6 @@ STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}Ukuran k # These are used in buttons -STR_SORT_BY_CAPTION_POPULATION :{BLACK}Jumlah Penduduk STR_SORT_BY_CAPTION_NAME :{BLACK}Nama STR_SORT_BY_CAPTION_DATE :{BLACK}Tarikh # These are used in dropdowns @@ -277,7 +276,6 @@ STR_SORT_BY_LENGTH :Panjang STR_SORT_BY_LIFE_TIME :Baki jangka hayat STR_SORT_BY_TIMETABLE_DELAY :Kelewatan jadual waktu STR_SORT_BY_FACILITY :Jenis stesen -STR_SORT_BY_WAITING :Nilai kargo yang sedang menunggu STR_SORT_BY_RATING_MAX :Penarafan kargo tertinggi STR_SORT_BY_RATING_MIN :Penarafan kargo terendah STR_SORT_BY_ENGINE_ID :ID Enjin (susunan klasik) @@ -289,6 +287,7 @@ STR_SORT_BY_RUNNING_COST :Kos Pengendalia STR_SORT_BY_POWER_VS_RUNNING_COST :Kuasa/Kos Pengendalian STR_SORT_BY_CARGO_CAPACITY :Muatan Kargo STR_SORT_BY_RANGE :Jarak +STR_SORT_BY_POPULATION :Jumlah Penduduk # Tooltips for the main toolbar STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Henti Sebentar Permainan @@ -371,19 +370,18 @@ STR_FILE_MENU_SEPARATOR : STR_FILE_MENU_EXIT :Keluar ############ range ends here -############ range for map menu starts +# map menu STR_MAP_MENU_MAP_OF_WORLD :Peta Dunia STR_MAP_MENU_EXTRA_VIEW_PORT :Tetingkap pemandangan tambahan STR_MAP_MENU_SIGN_LIST :Senarai papan tanda -############ range for town menu starts, yet the town directory is shown in the map menu in the scenario editor + +############ range for town menu starts STR_TOWN_MENU_TOWN_DIRECTORY :Senarai Nama Bandar -############ end of the 'Display map' dropdown STR_TOWN_MENU_FOUND_TOWN :Binakan bandar -############ end of the 'Town' dropdown +############ range ends here ############ range for subsidies menu starts STR_SUBSIDIES_MENU_SUBSIDIES :Subsidi -STR_SUBSIDIES_MENU_GOAL :Matlamat semasa ############ range ends here ############ range for graph menu starts @@ -457,7 +455,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 @@ -473,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 @@ -650,7 +666,7 @@ STR_HIGHSCORE_PERFORMANCE_TITLE_CAPITALIST :Kapitalis STR_HIGHSCORE_PERFORMANCE_TITLE_MAGNATE :Hartawan STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL :Mogul STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY :Taikun abad semasa -STR_HIGHSCORE_NAME :{BIG_FONT}{PRESIDENT_NAME}, {COMPANY} +STR_HIGHSCORE_NAME :{PRESIDENT_NAME}, {COMPANY} STR_HIGHSCORE_STATS :{BIG_FONT}'{STRING}' ({COMMA}) STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{BLACK}{COMPANY} mencapai status '{STRING}'! STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{WHITE}{PRESIDENT_NAME} dari {COMPANY} mencapai status '{STRING}'! @@ -791,13 +807,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 @@ -878,13 +892,8 @@ STR_GAME_OPTIONS_CURRENCY_ZAR :South African R STR_GAME_OPTIONS_CURRENCY_CUSTOM :Sesuaikan... ############ end of currency region -STR_GAME_OPTIONS_MEASURING_UNITS_FRAME :{BLACK}Ukuran unit -STR_GAME_OPTIONS_MEASURING_UNITS_DROPDOWN_TOOLTIP :{BLACK}Pilihan unit ukuran ############ start of measuring units region -STR_GAME_OPTIONS_MEASURING_UNITS_IMPERIAL :Lama (Imperial) -STR_GAME_OPTIONS_MEASURING_UNITS_METRIC :Metrik -STR_GAME_OPTIONS_MEASURING_UNITS_SI :SI ############ end of measuring units region STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Kenderaan Jalanraya @@ -922,11 +931,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 @@ -938,9 +949,6 @@ 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_BASE_GRF :{BLACK}Set grafik asas STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Pilih set grafik asas untuk digunakan STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} fail hilang/rosak @@ -955,6 +963,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 @@ -1054,8 +1063,7 @@ 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_DROPDOWN_HELPTEXT :{BLACK}Hadkan senarai di bawah menggunakan penapis yang telah ditetapkan STR_CONFIG_SETTING_RESTRICT_BASIC :Tetapan asas STR_CONFIG_SETTING_RESTRICT_ADVANCED :Tetapan tambahan STR_CONFIG_SETTING_RESTRICT_ALL :Pakar tetapan / semua tetapan @@ -1082,7 +1090,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} @@ -1102,8 +1110,6 @@ 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_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} @@ -1128,14 +1134,8 @@ 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_TUNNEL_LENGTH :Panjang maksimum terowong: {STRING} @@ -1156,7 +1156,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 @@ -1186,10 +1185,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 @@ -1226,8 +1221,6 @@ STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Putaran heightm 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 @@ -1264,15 +1257,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 @@ -1294,10 +1286,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} @@ -1390,25 +1382,22 @@ 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} -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 @@ -1559,6 +1548,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 @@ -1614,10 +1604,6 @@ STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}Tukar ta # Network server list STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}Pemain berbilang -STR_NETWORK_SERVER_LIST_CONNECTION :{BLACK}Sambungan: -STR_NETWORK_SERVER_LIST_CONNECTION_TOOLTIP :{BLACK}Pilih di antara permainan internet atau permainan Local Area Network (LAN) -STR_NETWORK_SERVER_LIST_LAN :LAN -STR_NETWORK_SERVER_LIST_INTERNET :Internet STR_NETWORK_SERVER_LIST_PLAYER_NAME :{BLACK}Nama pemain: STR_NETWORK_SERVER_LIST_ENTER_NAME_TOOLTIP :{BLACK}Pemain lain akan kenal anda dengan nama ini @@ -1676,16 +1662,14 @@ STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP :{BLACK}Nama per STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}Tetapkan kata laluan STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Lindungi permainan anda dengan kata laluan jika anda tidak mahu ianya diakses awam -STR_NETWORK_START_SERVER_LAN_INTERNET :LAN / Internet -STR_NETWORK_START_SERVER_INTERNET_ADVERTISE :Internet (iklankan) 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 @@ -1985,6 +1969,10 @@ STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}Teluskan STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Teluskan penunjuk muatan atau tidak. Ctrl+Klik untuk mengunci STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}Ghaibkan objek dan bukan telus +# Linkgraph legend window + +# Linkgraph legend window and linkgraph legend in smallmap + # Base for station construction window(s) STR_STATION_BUILD_COVERAGE_AREA_TITLE :{BLACK}Serlahan kawasan liputan STR_STATION_BUILD_COVERAGE_OFF :{BLACK}Tiada @@ -2383,7 +2371,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-2012 The OpenTTD team +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2014 The OpenTTD team # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Simpankan Permainan @@ -2412,6 +2400,7 @@ STR_SAVELOAD_OSKTITLE :{BLACK}Masukkan # World generation STR_MAPGEN_WORLD_GENERATION_CAPTION :{WHITE}Penjanaan Dunia STR_MAPGEN_MAPSIZE :{BLACK}Saiz peta: +STR_MAPGEN_MAPSIZE_TOOLTIP :{BLACK}Pilih saiz peta dalam petak. Nombor petak bersesuaian akan lebih kecil sedikit STR_MAPGEN_BY :{BLACK}* STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Jumlah bandar: STR_MAPGEN_DATE :{BLACK}Tarikh: @@ -2419,10 +2408,6 @@ STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Jumlah i 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: @@ -2449,7 +2434,6 @@ 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_SNOW_LINE_QUERY_CAPT :{WHITE}Tukarkan paras garis salji STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Tukar tahun permulaan @@ -2528,6 +2512,8 @@ 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 + # NewGRF parameters window STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}Ubah parameter NewGRF STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Tutup @@ -2597,6 +2583,7 @@ STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}Anda ak STR_NEWGRF_DUPLICATE_GRFID :{WHITE}Tidak boleh menambah fail: GRF ID berduplikat STR_NEWGRF_COMPATIBLE_LOADED :{ORANGE}Fail berpadanan tidak dijumpai (GRF yang secocok telah dimuat) +STR_NEWGRF_TOO_MANY_NEWGRFS :{WHITE}Tidak menambah fail: File GRF baru telah mencapai had STR_NEWGRF_COMPATIBLE_LOAD_WARNING :{WHITE}GRF secocok telah dimuat untuk menggantikan fail yang tidak dijumpai STR_NEWGRF_DISABLED_WARNING :{WHITE}Fail GRF yang tidak dijumpai telah dinyahaktifkan @@ -2627,6 +2614,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... @@ -2708,7 +2697,6 @@ STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT :{YELLOW}Beli ha STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}Rasuah pihak berkuasa bandar untuk meninggikan penarafan anda, dengan risiko hukuman yang sangat berat.{}Kos: {CURRENCY_LONG} # Goal window -STR_GOALS_CAPTION :{WHITE}Hasrat STR_GOALS_GLOBAL_TITLE :{BLACK}Hasrat global: STR_GOALS_TEXT :{ORANGE}{STRING} STR_GOALS_NONE :{ORANGE}- Tiada - @@ -2750,6 +2738,8 @@ STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}Perkhidm STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING} dari {STRING} ke {STRING}{YELLOW} ({COMPANY}{YELLOW}, sehingga {DATE_SHORT}) STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Klik di atas servis untuk memusatkan pemandangan kepada industri/bandar. Ctrl+Klik untuk membuka tetingkap pemandangan di lokasi bandar +# Story book window + # Station list window STR_STATION_LIST_TOOLTIP :{BLACK}Nama stesen - klik pada nama untuk memusatkan pemandangan ke stesen. Ctrl+Klik membuka tetingkap pemandangan di lokasi stesen STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}Tekan Ctrl untuk memilih lebih daripada satu butiran @@ -2763,7 +2753,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}) @@ -2774,8 +2763,8 @@ STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}Menerima STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Penarafan STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Tunjukkan penarafan stesen -STR_STATION_VIEW_CARGO_RATINGS_TITLE :{BLACK}Penarafan tempatan untuk perkhidmatan pengangkutan: -STR_STATION_VIEW_CARGO_RATING :{WHITE}{STRING}: {YELLOW}{STRING} ({COMMA}%) + + ############ range for rating starts STR_CARGO_RATING_APPALLING :Sangat teruk @@ -2830,7 +2819,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 @@ -2900,7 +2889,6 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS :{WHITE}Terusan STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}Stesen: STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}Petak stesen STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}Lapangan Terbang -STR_COMPANY_INFRASTRUCTURE_VIEW_COST :{WHITE}{1:CURRENCY_LONG}/thn ({0:COMMA}) STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL :{WHITE}{CURRENCY_LONG}/thn # Industry directory @@ -2985,6 +2973,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 @@ -3277,6 +3266,7 @@ STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Tempoh P STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Tambah 10 tempoh penyenggelaraan. Ctrl+Klik untuk tambah 5 tempoh penyenggelaraan STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Kurangkan 10 tempoh penyenggelaraan. Ctrl+Klik untuk kurangkan 5 tempoh penyenggelaraan + STR_QUERY_RENAME_TRAIN_CAPTION :{WHITE}Nama keretapi STR_QUERY_RENAME_ROAD_VEHICLE_CAPTION :{WHITE}Nama kenderaan jalanraya STR_QUERY_RENAME_SHIP_CAPTION :{WHITE}Nama kapal @@ -3510,7 +3500,6 @@ STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}Jadual w STR_TIMETABLE_STATUS_START_AT :{BLACK}Jadual waktu ini akan bermula pada {STRING} STR_TIMETABLE_STARTING_DATE :{BLACK}Tarikh mula -STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Pilih satu tarikh sebagai titik permulaan untuk jadual waktu ini STR_TIMETABLE_CHANGE_TIME :{BLACK}Tukar Masa STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Tukar tempoh masa bagi jadual waktu yang terpilih @@ -3996,6 +3985,7 @@ STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}Tidak bo STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... kenderaan sudah musnah + # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Keretapi tidak boleh melanggar isyarat kerana terdapat kemungkinan bahaya... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Keretapi tidak boleh ditukar arah... @@ -4038,6 +4028,8 @@ STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}Papan ta # Translatable comment for OpenTTD's desktop shortcut STR_DESKTOP_SHORTCUT_COMMENT :Sebuah permainan simulasi berasaskan Transport Tycoon Deluxe +# Translatable descriptions in media/baseset/*.ob* files + ##id 0x2000 # Town building names STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1 :Bangunan pejabat tinggi @@ -4160,7 +4152,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) @@ -4369,7 +4361,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 @@ -4484,7 +4476,7 @@ 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_SPACE_STRING :{STRING} {STRING} +STR_JUST_STRING_STRING :{STRING}{STRING} STR_JUST_RAW_STRING :{STRING} # Slightly 'raw' stringcodes with colour or size @@ -4509,9 +4501,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 ec9958d35..3094a7050 100644 --- a/src/lang/norwegian_bokmal.txt +++ b/src/lang/norwegian_bokmal.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} ton{P "" s} 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} gallon{P "" s} 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}Filterst STR_LIST_FILTER_OSKTITLE :{BLACK}Skriv inn søkefilter STR_LIST_FILTER_TOOLTIP :{BLACK}Skriv inn et søkeord for å filtrere listen med +STR_TOOLTIP_GROUP_ORDER :{BLACK}Velg grupperings-rekkefølge STR_TOOLTIP_SORT_ORDER :{BLACK}Velg sorteringsrekkefølge (synkende/stigende) STR_TOOLTIP_SORT_CRITERIA :{BLACK}Velg sorteringskriterier STR_TOOLTIP_FILTER_CRITERIA :{BLACK}Velg filtreringskriterier @@ -234,7 +242,8 @@ STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Lukk vin STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Vindustittel - dra her for å flytte vindu STR_TOOLTIP_SHADE :{BLACK}Skyggevindu - Vis kun tittelfeltet STR_TOOLTIP_DEBUG :{BLACK}Vis NewGRF-debuggingsinformasjon -STR_TOOLTIP_STICKY :{BLACK}Beskytt dette vinduet mot 'Lukk alle vinduer'-knappen +STR_TOOLTIP_DEFSIZE :{BLACK}Gjennopprett vindu til standard størrelse. Ctrl + Klikk for å lagre gjeldende størrelse som standard +STR_TOOLTIP_STICKY :{BLACK}Beskytt dette vinduet mot 'Lukk alle vinduer'-knappen. Ctrl + Klikk for å lagre tilstanden som standard. STR_TOOLTIP_RESIZE :{BLACK}Klikk og dra for å endre størrelsen på vinduet STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Veksle mellom stor/liten vindustørrelse STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Rullefelt - ruller listen opp/ned @@ -258,7 +267,6 @@ STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}Område: # These are used in buttons -STR_SORT_BY_CAPTION_POPULATION :{BLACK}Folketall STR_SORT_BY_CAPTION_NAME :{BLACK}Navn STR_SORT_BY_CAPTION_DATE :{BLACK}Dato # These are used in dropdowns @@ -279,7 +287,8 @@ STR_SORT_BY_LENGTH :Lengde STR_SORT_BY_LIFE_TIME :Gjenværende levetid STR_SORT_BY_TIMETABLE_DELAY :Rutetabellforsinkelse STR_SORT_BY_FACILITY :Stasjonstype -STR_SORT_BY_WAITING :Verdi på ventende varer +STR_SORT_BY_WAITING_TOTAL :Samlet ventende last +STR_SORT_BY_WAITING_AVAILABLE :Tilgjengelig ventende last STR_SORT_BY_RATING_MAX :Høyeste varerating STR_SORT_BY_RATING_MIN :Laveste varerating STR_SORT_BY_ENGINE_ID :MaskinID (klassisk type) @@ -288,9 +297,11 @@ 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 # Tooltips for the main toolbar STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Sett spillet på pause @@ -303,6 +314,8 @@ STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Vis subs STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Vis liste over firmaets stasjoner STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Vis firmaenes økonomiske data STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Vis firmaenes generelle data +STR_TOOLBAR_TOOLTIP_DISPLAY_STORY_BOOK :{BLACK}Vise historiebok +STR_TOOLBAR_TOOLTIP_DISPLAY_GOALS_LIST :{BLACK}Vise målliste STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Vis grafer STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Vis firmarangeringstabell STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Finansier bygging av ny industri eller vis liste over industrier @@ -373,19 +386,19 @@ STR_FILE_MENU_SEPARATOR : STR_FILE_MENU_EXIT :Avslutt OpenTTD ############ range ends here -############ range for map menu starts +# map menu STR_MAP_MENU_MAP_OF_WORLD :Verdenskart STR_MAP_MENU_EXTRA_VIEW_PORT :Ekstra tilleggsvindu +STR_MAP_MENU_LINGRAPH_LEGEND :Symbolforklaring for vareflyt STR_MAP_MENU_SIGN_LIST :Skiltliste -############ range for town menu starts, yet the town directory is shown in the map menu in the scenario editor + +############ range for town menu starts STR_TOWN_MENU_TOWN_DIRECTORY :Byoversikt -############ end of the 'Display map' dropdown STR_TOWN_MENU_FOUND_TOWN :Grunnlegg by -############ end of the 'Town' dropdown +############ range ends here ############ range for subsidies menu starts STR_SUBSIDIES_MENU_SUBSIDIES :Subsidier -STR_SUBSIDIES_MENU_GOAL :Nåværende mål ############ range ends here ############ range for graph menu starts @@ -459,7 +472,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. @@ -475,22 +488,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 @@ -652,7 +683,7 @@ STR_HIGHSCORE_PERFORMANCE_TITLE_CAPITALIST :Kapitalist STR_HIGHSCORE_PERFORMANCE_TITLE_MAGNATE :Magnat STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL :Mogul STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY :Århundrets finansfyrste -STR_HIGHSCORE_NAME :{BIG_FONT}{PRESIDENT_NAME}, {COMPANY} +STR_HIGHSCORE_NAME :{PRESIDENT_NAME}, {COMPANY} STR_HIGHSCORE_STATS :{BIG_FONT}'{STRING}' ({COMMA}) STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{BLACK}{COMPANY} oppnår '{STRING}'-status! STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{WHITE}{PRESIDENT_NAME} fra {COMPANY} oppnår '{STRING}'-status! @@ -663,17 +694,20 @@ STR_SMALLMAP_CAPTION :{WHITE}Kart - { STR_SMALLMAP_TYPE_CONTOURS :Konturer STR_SMALLMAP_TYPE_VEHICLES :Kjøretøy STR_SMALLMAP_TYPE_INDUSTRIES :Industrier +STR_SMALLMAP_TYPE_ROUTEMAP :Vareflyt STR_SMALLMAP_TYPE_ROUTES :Ruter STR_SMALLMAP_TYPE_VEGETATION :Vegetasjon STR_SMALLMAP_TYPE_OWNERS :Eiere STR_SMALLMAP_TOOLTIP_SHOW_LAND_CONTOURS_ON_MAP :{BLACK}Vis landkonturer på kartet STR_SMALLMAP_TOOLTIP_SHOW_VEHICLES_ON_MAP :{BLACK}Vis kjøretøy på kartet STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRIES_ON_MAP :{BLACK}Vis industrier på kartet +STR_SMALLMAP_TOOLTIP_SHOW_LINK_STATS_ON_MAP :{BLACK}Vis flyt av varetyper på kartet STR_SMALLMAP_TOOLTIP_SHOW_TRANSPORT_ROUTES_ON :{BLACK}Vis transportruter på kartet STR_SMALLMAP_TOOLTIP_SHOW_VEGETATION_ON_MAP :{BLACK}Vis vegetasjon på kartet STR_SMALLMAP_TOOLTIP_SHOW_LAND_OWNERS_ON_MAP :{BLACK}Vis landeiere på kartet STR_SMALLMAP_TOOLTIP_INDUSTRY_SELECTION :{BLACK}Klikk på en industritype for å slå på dens visning. Ctrl+klikk deaktiverer alle typer unntatt den valgte. Ctrl+klikk på den igjen for å slå på visning av alle industrier STR_SMALLMAP_TOOLTIP_COMPANY_SELECTION :{BLACK}Klikk på et firma for å slå på visning av firmaets eiendom. Ctrl+klikk deaktiverer visning av alle firmaene unntatt det valgte. Ctrl+klikk på firmaet igjen for å slå på visning av alle firmaene +STR_SMALLMAP_TOOLTIP_CARGO_SELECTION :{BLACK}Klikk på en varetype for å veksle mellom å vise dens egenskap. Ctrl + Klikk deaktiverer alle varetyper utenom den valgte. Ctrl + klikk på den igjen for å aktivere alle varetyper STR_SMALLMAP_LEGENDA_ROADS :{TINY_FONT}{BLACK}Veier STR_SMALLMAP_LEGENDA_RAILROADS :{TINY_FONT}{BLACK}Jernbaner @@ -707,6 +741,7 @@ STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLA STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Skru av/på bynavn på kartet STR_SMALLMAP_CENTER :{BLACK}Midstill oversiktskartet på gjeldende posisjon 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 @@ -717,6 +752,8 @@ STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES :{BLACK}Vis alle STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}Veksle mellom visning av høydekart STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES :{BLACK}Ikke vis firmaeiendommer på kartet STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}Vis alle firmaeiendommer på kartet +STR_SMALLMAP_TOOLTIP_DISABLE_ALL_CARGOS :{BLACK}Ikke vis noen varetyper på kartet +STR_SMALLMAP_TOOLTIP_ENABLE_ALL_CARGOS :{BLACK}Vis alle varetyper på kartet # Status bar messages STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Vis siste melding eller nyhetsrapport @@ -733,7 +770,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}! @@ -768,7 +805,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! @@ -793,13 +830,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 @@ -878,15 +914,12 @@ STR_GAME_OPTIONS_CURRENCY_LTL :Litauiske litas STR_GAME_OPTIONS_CURRENCY_KRW :Sørkoreanske won (KRW) STR_GAME_OPTIONS_CURRENCY_ZAR :Sørafrikanske rand (ZAR) STR_GAME_OPTIONS_CURRENCY_CUSTOM :Egendefinert... +STR_GAME_OPTIONS_CURRENCY_GEL :Georgianske Lari (GEL) +STR_GAME_OPTIONS_CURRENCY_IRR :Iranske Rial (IRR) ############ end of currency region -STR_GAME_OPTIONS_MEASURING_UNITS_FRAME :{BLACK}Måleenhet -STR_GAME_OPTIONS_MEASURING_UNITS_DROPDOWN_TOOLTIP :{BLACK}Velg måleenhet som skal brukes ############ start of measuring units region -STR_GAME_OPTIONS_MEASURING_UNITS_IMPERIAL :Imperisk -STR_GAME_OPTIONS_MEASURING_UNITS_METRIC :Metrisk -STR_GAME_OPTIONS_MEASURING_UNITS_SI :SI ############ end of measuring units region STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Kjøretøy @@ -924,11 +957,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 @@ -940,9 +975,6 @@ 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_BASE_GRF :{BLACK}Grafikksett STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Velg grafikksett som skal brukes STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} manglende/ødelagt{P "" e} fil{P "" er} @@ -957,6 +989,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 @@ -1056,8 +1089,9 @@ 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_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 innstillinger STR_CONFIG_SETTING_RESTRICT_ADVANCED :Avanserte innstillinger STR_CONFIG_SETTING_RESTRICT_ALL :Avanserte innstillinger / alle innstillinger @@ -1065,12 +1099,16 @@ STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :Innstillinger m 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 instillinger +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_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_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å @@ -1091,7 +1129,7 @@ STR_CONFIG_SETTING_HORIZONTAL_POS_RIGHT :Høyre STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN :Maksimalt innledende lån: {STRING} STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Det maksimale beløp et selskap kan låne (uten å ta inflasjon i betraktning) STR_CONFIG_SETTING_INTEREST_RATE :Lånerente: {STRING} -STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Lånerente; kontrollerer også inflasjonen hvis aktivert +STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Lånerente; kontrollerer også inflasjonen, hvis aktivert STR_CONFIG_SETTING_RUNNING_COSTS :Driftskostnader: {STRING} STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT :Still nivå av vedlikehold og driftskostnader for kjøretøy og infrastruktur STR_CONFIG_SETTING_CONSTRUCTION_SPEED :Byggehastighet: {STRING} @@ -1103,16 +1141,14 @@ STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT :Angi hvor mye s STR_CONFIG_SETTING_CONSTRUCTION_COSTS :Byggekostnader: {STRING} STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :Still kostnadsnivå for bygging og kjøp STR_CONFIG_SETTING_RECESSIONS :Resesjoner: {STRING} -STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Hvorvidt aktiverte 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_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 :Hvorvidt aktiverte tok ikke vil snu i gjennomgående stasjoner, hvis det å snu medfører en kortere strekning til deres neste destinasjon +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_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_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} @@ -1136,21 +1172,15 @@ 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_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. 'Prospekter' betyr at finansiering er mulig, men oppbyggingen skjer på et tilfeldig sted på kartet og kan like godt mislykkes. 'Som andre industrier' betyr at råvareindustri kan bygges opp av selskaper som prosessindustri hvor som helst på kartet 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 @@ -1169,11 +1199,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 @@ -1190,7 +1218,7 @@ STR_CONFIG_SETTING_ALLOW_FUND_ROAD :Tillat finansie 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_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 @@ -1204,10 +1232,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å @@ -1230,8 +1254,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} @@ -1246,27 +1270,41 @@ STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :Vis inbyggertal 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_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 distanse fra kant for Olje Raffinerier: {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_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 :Ulendthet på terreng (kun TerraGenesis): {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 @@ -1317,17 +1355,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} @@ -1363,7 +1399,7 @@ STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :Spille av lyd f STR_CONFIG_SETTING_SOUND_NEWS :Avis: {STRING} STR_CONFIG_SETTING_SOUND_NEWS_HELPTEXT :Spille av lyd ved visning av aviser STR_CONFIG_SETTING_SOUND_NEW_YEAR :Utgangen av år: {STRING} -STR_CONFIG_SETTING_SOUND_NEW_YEAR_HELPTEXT :Spille av lydeffekt ved utgangen av et år som oppsummerer selskapets resultater i løpet av året i forhold til forrige år +STR_CONFIG_SETTING_SOUND_NEW_YEAR_HELPTEXT :Spille av lydeffekt ved utgangen av et år som oppsummerer selskapets resultater i løpet av året i forhold til året før STR_CONFIG_SETTING_SOUND_CONFIRM :Konstruksjon: {STRING} STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT :Spille av lydeffekt ved fullførte konstruksjoner eller andre tiltak STR_CONFIG_SETTING_SOUND_CLICK :Tastetrykk: {STRING} @@ -1373,7 +1409,7 @@ STR_CONFIG_SETTING_SOUND_DISASTER_HELPTEXT :Spill av lydeff STR_CONFIG_SETTING_SOUND_VEHICLE :Kjøretøy: {STRING} STR_CONFIG_SETTING_SOUND_VEHICLE_HELPTEXT :Spill lydeffekter til kjøretøy STR_CONFIG_SETTING_SOUND_AMBIENT :Omgivelse: {STRING} -STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :Spill bakgrunns-lydeffekter til landskap, industrier og byer +STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :Spille lyder fra omgivelsene av landskapet, industrier og tettsteder 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 @@ -1450,7 +1486,7 @@ STR_CONFIG_SETTING_NEWS_ADVICE_HELPTEXT :Vise meldinger STR_CONFIG_SETTING_NEWS_NEW_VEHICLES :Nye kjøretøy: {STRING} STR_CONFIG_SETTING_NEWS_NEW_VEHICLES_HELPTEXT :Vise nyhetsoppdatering når nye kjøretøystyper blir tilgjengelig STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE :Endringer i godtatte varer: {STRING} -STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE_HELPTEXT :Vise meldinger om stasjoners skiftende aksept av varetyper +STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE_HELPTEXT :Vise meldinger om stasjoners skiftende aksept av godstyper STR_CONFIG_SETTING_NEWS_SUBSIDIES :Subsidier: {STRING} STR_CONFIG_SETTING_NEWS_SUBSIDIES_HELPTEXT :Vise nyhetsoppdateringer om subsidie-relaterte hendelser STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION :Generell informasjon: {STRING} @@ -1464,7 +1500,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} @@ -1473,7 +1509,7 @@ STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY :Når du drar en STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_HELPTEXT :Angi distansen for når signaler vil bli bygget på et spor frem til neste hinder (signal, kryss), hvis signaler blir dratt STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_VALUE :{COMMA} kartelement{P 0 "" s} STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE :Når du drar en linje, oppretthold fast avstand mellom signaler: {STRING} -STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :Velg opptredenen av signalplassering når ved Ctrl + dragning av signaler. Hvis deaktivert, blir signaler plassert ved tunneler eller broer for å unngå lange strekninger uten signaler. Hvis aktivert, blir signalene plassert for hver N ruter, noe som gjør justering av signaler på parallelle spor enklere +STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :Velg oppførselen til signalplassering ved Ctrl + dragning av signaler. Hvis deaktivert, blir signaler plassert ved tunneler eller broer for å unngå lange strekninger uten signaler. Hvis aktivert, blir signalene plassert for hver N ruter, noe som gjør justering av signaler på parallelle spor enklere 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} @@ -1498,8 +1534,8 @@ 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_TOWN_FOUNDING :Grunnlegging av byer i spillet: {STRING} @@ -1549,28 +1585,90 @@ 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_GUI :{ORANGE}Grensesnitt -STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}Konstruksjon +STR_CONFIG_SETTING_LINKGRAPH_INTERVAL :Oppdater distribusjonsgraf hver {STRING} dag{P 0:2 "" s} +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_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 +STR_CONFIG_SETTING_DISTRIBUTION_SYMMETRIC :symmetrisk +STR_CONFIG_SETTING_DISTRIBUTION_PAX :Distribusjonsmodus for passasjerer: {STRING} +STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :"symmetrisk" betyr at omtrent like mange passasjerer vil reise fra stasjon A til stasjon B som omvendt (fra B til A). "asymmetrisk" betyr at et vilkårlig antall passasjerer vil reise i begge retninger. "manuelt" betyr at det ikke vil forekomme automatisk distribusjon for passasjerene +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_DEFAULT :Distribusjonsmodus for andre godsklasser: {STRING} +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} +STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT :Hvis du setter denne til en verdi større enn 0, vil avstanden mellom opprinnelsesstasjonen (A) og en mulig destinasjon (B) ha en effekt på mengden av last som sendes fra A til B. Jo lengre vekk B er fra A, desto mindre gods vil bli sent. Jo høyere du setter den, desto mindre gods vil bli sendt til stasjoner langt vekk, og en større andel gods vil bli sendt til mer nærliggende stasjoner. +STR_CONFIG_SETTING_DEMAND_SIZE :Mengde retur-last ved symmetrisk modus: {STRING} +STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :Ved å sette denne til mindre enn 100%, vil symmetrisk distribusjon oppføre seg mer som den asymmetriske: Mindre gods vil ved automatikk bli sendt tilbake til den opprinnelige stasjonen. Hvis du setter denne til 0% vil symmetrisk distribusjon oppføre seg akkurat som den asymmetriske. +STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Metning av korte stier før man anvender rommelige stier: {STRING} +STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Ofte er det flere stier mellom to gitte stasjoner. Varedistribusjons-algoritmen vil mette den korteste strekning først. Deretter vil den bruke den neste korteste veien inntil den er mettet, og så videre. Metning bestemmes ut fra en vurdering av kapasitet og planlagt bruk. Når den har mettet alle veier, vil den, hvis det fortsatt er etterspørsel, overbelaste alle veier, og foretrekke de med høy kapasitet. Algoritmen vil imidlertid ikke estimere kapasitet nøyaktig, mesteparten av tiden. Med denne innstillingen kan du angi opptil hvilken prosentandel en kortere sti må være metter før man velger en en lengre (ledig) sti. Sett denne til mindre enn 100% for å unngå overfylte stasjoner i tilfeller hvor kapasiteten overvurderes. + +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Hastighetsenheter: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_HELPTEXT :Når en hastighet vises i brukergrensesnittet, vise det i de valgte enheter +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_IMPERIAL :Det britiske imperiets enhetssystem (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 :Kjøretøys effektenheter: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_HELPTEXT :Når et kjøretøys effekt er vist i brukergrensesnittet, vise det i de valgte enheter +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_IMPERIAL :Det britiske imperiets enhetssystem (hp) +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_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_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_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_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_LOCALISATION :{ORANGE}Lokalisering +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_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 @@ -1604,6 +1702,8 @@ STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_ALGORITHM :{WHITE}... lagr STR_CONFIG_ERROR_INVALID_BASE_GRAPHICS_NOT_FOUND :{WHITE}... ignorerer Grunn Graffik set '{STRING}': ikke funnet STR_CONFIG_ERROR_INVALID_BASE_SOUNDS_NOT_FOUND :{WHITE}... ignorerer Grunn Lyd set '{STRING}': ikke funnet STR_CONFIG_ERROR_INVALID_BASE_MUSIC_NOT_FOUND :{WHITE}... ignorerer Grunn Musikk set '{STRING}': ikke funnet +STR_CONFIG_ERROR_OUT_OF_MEMORY :{WHITE}Tomt for minne +STR_CONFIG_ERROR_SPRITECACHE_TOO_BIG :{WHITE}Tildeling av {BYTES} fra spritecachen feilet. Spritecachen ble redusert til {BYTES}. Dette senke ytelsen av OpenTTD. For å redusere minneforbruken kan du forsøke å slå av 32bpp grafikk og/eller zoomnivå. # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} @@ -1725,6 +1825,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 @@ -1780,10 +1881,10 @@ STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}Endre sl # Network server list STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}Flerspiller -STR_NETWORK_SERVER_LIST_CONNECTION :{BLACK}Forbindelse: -STR_NETWORK_SERVER_LIST_CONNECTION_TOOLTIP :{BLACK}Velg mellom å spille på internett eller i lokalt nettverk (LAN) -STR_NETWORK_SERVER_LIST_LAN :LAN -STR_NETWORK_SERVER_LIST_INTERNET :Internett +STR_NETWORK_SERVER_LIST_ADVERTISED :{BLACK}Annonsert +STR_NETWORK_SERVER_LIST_ADVERTISED_TOOLTIP :{BLACK}Velg mellom et utlyst (internett) og et ikke utlyst (Lokalnettverk, LAN) spill +STR_NETWORK_SERVER_LIST_ADVERTISED_NO :Nei +STR_NETWORK_SERVER_LIST_ADVERTISED_YES :Ja STR_NETWORK_SERVER_LIST_PLAYER_NAME :{BLACK}Spillernavn: STR_NETWORK_SERVER_LIST_ENTER_NAME_TOOLTIP :{BLACK}Dette er navnet andre spillere vil identifisere deg med @@ -1842,8 +1943,8 @@ STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP :{BLACK}Spillnav STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}Sett passord STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Beskytt ditt spill med et passord hvis du ikke vil at hvem som helst skal bli med på det -STR_NETWORK_START_SERVER_LAN_INTERNET :LAN / Internett -STR_NETWORK_START_SERVER_INTERNET_ADVERTISE :Internett (annonsér) +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_TOOLTIP :{BLACK}Velg maks antall klienter. Ikke alle plassene trenger å bli tatt @@ -1957,13 +2058,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 @@ -2082,6 +2184,10 @@ STR_CONTENT_SELECT_UPDATES_CAPTION :{BLACK}Velg opp STR_CONTENT_SELECT_UPDATES_CAPTION_TOOLTIP :{BLACK}Merk alt innhold som er en oppgradering av eksisterende innhold STR_CONTENT_UNSELECT_ALL_CAPTION :{BLACK}Velg bort alle STR_CONTENT_UNSELECT_ALL_CAPTION_TOOLTIP :{BLACK}Merk alt innhold som ikke skal lastes ned +STR_CONTENT_SEARCH_EXTERNAL :{BLACK}Søk eksterne nettsider +STR_CONTENT_SEARCH_EXTERNAL_TOOLTIP :{BLACK} Søk etter innhold som ikke er tilgjengelig på OpenTTD sin innholdstjeneste på nettsteder som ikke er tilknyttet OpenTTD +STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER_CAPTION :{WHITE}Du forlater OpenTTD! +STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER :{WHITE} Vilkårene for nedlasting av innhold fra eksterne nettsider kan variere.{}Du må henvende deg til de eksterne nettstedene for instruksjoner om hvordan du installerer innholdet i OpenTTD.{}Vil du fortsette? STR_CONTENT_FILTER_TITLE :{BLACK}Merke/Navnefilter: STR_CONTENT_OPEN_URL :{BLACK}Besøk hjemmeside STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}Besøk hjemmesiden for dette innholdet @@ -2140,17 +2246,28 @@ 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 +STR_LINKGRAPH_LEGEND_CAPTION :{BLACK}Symbolforklaring for lastflyt +STR_LINKGRAPH_LEGEND_ALL :{BLACK}Alle +STR_LINKGRAPH_LEGEND_NONE :{BLACK}Ingen +STR_LINKGRAPH_LEGEND_SELECT_COMPANIES :{BLACK}Velg selskaper som skal vises + +# Linkgraph legend window and linkgraph legend in smallmap +STR_LINKGRAPH_LEGEND_UNUSED :{TINY_FONT}{BLACK}ubrukt +STR_LINKGRAPH_LEGEND_SATURATED :{TINY_FONT}{BLACK}mettet +STR_LINKGRAPH_LEGEND_OVERLOADED :{TINY_FONT}{BLACK}overbelastet + # Base for station construction window(s) STR_STATION_BUILD_COVERAGE_AREA_TITLE :{BLACK}Markering av dekningsområde STR_STATION_BUILD_COVERAGE_OFF :{BLACK}Av @@ -2327,7 +2444,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} @@ -2453,6 +2570,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 @@ -2549,7 +2667,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-2012 OpenTTD-teamet +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2014 OpenTTD-teamet # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Lagre spill @@ -2568,6 +2686,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} @@ -2578,6 +2697,7 @@ STR_SAVELOAD_OSKTITLE :{BLACK}Skriv in # World generation STR_MAPGEN_WORLD_GENERATION_CAPTION :{WHITE}Generer en verden STR_MAPGEN_MAPSIZE :{BLACK}Kartstørrelse: +STR_MAPGEN_MAPSIZE_TOOLTIP :{BLACK}Velg størrelsen på kartet i ruter. Antall tilgjengelige ruter vil være litt mindre STR_MAPGEN_BY :{BLACK}* STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Antall byer: STR_MAPGEN_DATE :{BLACK}Dato: @@ -2585,10 +2705,6 @@ STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Antall i 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: @@ -2615,7 +2731,6 @@ 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_SNOW_LINE_QUERY_CAPT :{WHITE}Endre høyden på snøgrensen STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Endre startår @@ -2670,6 +2785,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 @@ -2694,6 +2811,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 @@ -2764,6 +2891,7 @@ STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}Du er i STR_NEWGRF_DUPLICATE_GRFID :{WHITE}Kan ikke legge til fil: GRF ID finnes allerede STR_NEWGRF_COMPATIBLE_LOADED :{ORANGE}Matchende fil ble ikke funnet (kompatibel GRF-fil lastet inn) +STR_NEWGRF_TOO_MANY_NEWGRFS :{WHITE}Kan ikke legge til fil: Maksgrense nådd for NewGRF-filer 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 @@ -2780,6 +2908,7 @@ 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_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 NewGRFer. Spillet kan bli usynkronisert eller krasje. STR_NEWGRF_BUGGY :{WHITE}NewGRF '{0:STRING}' gir feilaktig informasjon. @@ -2794,6 +2923,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... @@ -2834,7 +2966,7 @@ STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED :{ORANGE}{CARGO_ 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_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 @@ -2875,10 +3007,14 @@ STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT :{YELLOW}Kjøp e STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}Du kan bestikke bystyret for å forbedre vurderingen av firmaet ditt, men du risikerer å bli bøtelagt hvis du blir oppdaget.{}Kostnad: {CURRENCY_LONG} # Goal window -STR_GOALS_CAPTION :{WHITE}Mål +STR_GOALS_CAPTION :{WHITE}{COMPANY} Målsetninger +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 relevant - +STR_GOALS_PROGRESS :{ORANGE}{STRING} +STR_GOALS_PROGRESS_COMPLETE :{GREEN}{STRING} STR_GOALS_COMPANY_TITLE :{BLACK}Firmaets mål: STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}klikk på mål for å gå til industri/by/rute . Ctrl+klikk åpner et nytt tilleggsvindu over industriens/byens/rutens beliggenhet @@ -2917,6 +3053,18 @@ STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}Tjeneste STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING} fra {STRING} til {STRING}{YELLOW} ({COMPANY}{YELLOW}, inntil {DATE_SHORT}) STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Klikk for å gå til industri/by. Ctrl+klikk åpner et nytt tilleggsvindu over industrien/byen +# 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}Gå til en bestemt side ved å velge den i denne nedtrekkslisten. +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. STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}Hold inne Ctrl for å velge flere @@ -2930,9 +3078,9 @@ 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) STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Godtar STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Vis liste over godtatte varer @@ -2943,8 +3091,31 @@ STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPAN STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Vurderinger STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Vis stasjonsvurdering -STR_STATION_VIEW_CARGO_RATINGS_TITLE :{BLACK}Lokal vurdering av transporttjenester: -STR_STATION_VIEW_CARGO_RATING :{WHITE}{STRING}: {YELLOW}{STRING} ({COMMA}{NBSP}%) +STR_STATION_VIEW_SUPPLY_RATINGS_TITLE :{BLACK}Månedlig forsyning og lokal rangering: +STR_STATION_VIEW_CARGO_SUPPLY_RATING :{WHITE}{STRING}: {YELLOW}{COMMA} / {STRING} ({COMMA}%) + +STR_STATION_VIEW_GROUP :{BLACK}Gruppér etter +STR_STATION_VIEW_WAITING_STATION :Stasjon: Venter på +STR_STATION_VIEW_WAITING_AMOUNT :Beløp: Venter på +STR_STATION_VIEW_PLANNED_STATION :Stasjon: Planlagt +STR_STATION_VIEW_PLANNED_AMOUNT :Beløp: 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 ukjent stasjon +STR_STATION_VIEW_TO_ANY :{RED}{CARGO_SHORT} til hvilken som helst stasjon +STR_STATION_VIEW_VIA_ANY :{RED}{CARGO_SHORT} via hvilken som helst stasjon +STR_STATION_VIEW_FROM_HERE :{GREEN}{CARGO_SHORT} fra denne stasjonen +STR_STATION_VIEW_VIA_HERE :{GREEN}{CARGO_SHORT} stopper på denne stasjonen +STR_STATION_VIEW_TO_HERE :{GREEN}{CARGO_SHORT} til denne stasjonen +STR_STATION_VIEW_NONSTOP :{YELLOW}{CARGO_SHORT} non-stop + +STR_STATION_VIEW_GROUP_S_V_D :Utgangspunkt-Via-Destinasjon +STR_STATION_VIEW_GROUP_S_D_V :Utgangspunkt-Destinasjon-Via +STR_STATION_VIEW_GROUP_V_S_D :Via-Utgangspunkt-Destinasjon +STR_STATION_VIEW_GROUP_V_D_S :Via-Destinasjon-Utgangspunkt +STR_STATION_VIEW_GROUP_D_S_V :Destinasjon-Utgangspunkt-Via +STR_STATION_VIEW_GROUP_D_V_S :Mål via kilde ############ range for rating starts STR_CARGO_RATING_APPALLING :Elendig @@ -3071,7 +3242,6 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS :{WHITE}Kanaler STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}Stasjoner: STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}Stasjonsruter STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}Flyplasser -STR_COMPANY_INFRASTRUCTURE_VIEW_COST :{WHITE}{1:CURRENCY_LONG}/år ({0:COMMA}) STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL :{WHITE}{CURRENCY_LONG}/år # Industry directory @@ -3088,6 +3258,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}Gå til industri. Ctrl+klikk åpner et nytt tilleggsvindu over industrien STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Produksjonsnivå: {YELLOW}{COMMA}% +STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}Næringen har annonsert snarlig nedleggelse! ############ range for requires starts STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Trenger: {YELLOW}{STRING}{STRING} @@ -3156,6 +3327,9 @@ STR_GROUP_DELETE_TOOLTIP :{BLACK}Fjern de 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 @@ -3451,6 +3625,11 @@ STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Vedlikeh STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Øk vedlikeholdsintervall med 10. Ctrl+klikk øker med 5 STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Reduser vedlikeholdsintervall med 10. Ctrl+klikk reduserer med 5 +STR_SERVICE_INTERVAL_DROPDOWN_TOOLTIP :{BLACK}Enhet for vedlikeholdsintervall +STR_VEHICLE_DETAILS_DEFAULT :Standard +STR_VEHICLE_DETAILS_DAYS :Dager +STR_VEHICLE_DETAILS_PERCENT :Prosentandel + STR_QUERY_RENAME_TRAIN_CAPTION :{WHITE}Navngi tog STR_QUERY_RENAME_ROAD_VEHICLE_CAPTION :{WHITE}Navngi kjøretøy STR_QUERY_RENAME_SHIP_CAPTION :{WHITE}Navngi skip @@ -3646,9 +3825,9 @@ STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :(Ingen lossing 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) @@ -3671,6 +3850,10 @@ STR_TIMETABLE_TRAVEL_NOT_TIMETABLED :Reise (uten rut STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :Reis med maks {2:VELOCITY} (uten rutetabell) 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} @@ -3686,7 +3869,7 @@ STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}Denne ru 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 rutetabellen +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_CHANGE_TIME :{BLACK}Endre tid STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Endre varigheten for den merkede ordren @@ -3708,7 +3891,7 @@ STR_TIMETABLE_AUTOFILL_TOOLTIP :{BLACK}Fyll ut STR_TIMETABLE_EXPECTED :{BLACK}Ventet STR_TIMETABLE_SCHEDULED :{BLACK}Planlagt -STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Veksle mellom ventet og planlagt +STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Veksle mellom forventet og planlagt STR_TIMETABLE_ARRIVAL_ABBREVIATION :Ank: STR_TIMETABLE_DEPARTURE_ABBREVIATION :Avg: @@ -3800,6 +3983,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 @@ -3822,6 +4007,10 @@ STR_INCOME_FLOAT_INCOME_SMALL :{TINY_FONT}{GRE STR_INCOME_FLOAT_INCOME :{GREEN}Inntekt: {CURRENCY_LONG} STR_FEEDER_TINY :{TINY_FONT}{YELLOW}Overføring: {CURRENCY_LONG} STR_FEEDER :{YELLOW}Overføring: {CURRENCY_LONG} +STR_FEEDER_INCOME_TINY :{TINY_FONT}{YELLOW}Overføring: {CURRENCY_LONG}{WHITE} / {GREEN}Inntekt: {CURRENCY_LONG} +STR_FEEDER_INCOME :{YELLOW}Overføring: {CURRENCY_LONG}{WHITE} / {GREEN}Inntekt: {CURRENCY_LONG} +STR_FEEDER_COST_TINY :{TINY_FONT}{YELLOW}Overføring: {CURRENCY_LONG}{WHITE} / {RED}Kostnad: {CURRENCY_LONG} +STR_FEEDER_COST :{YELLOW}Overføring: {CURRENCY_LONG}{WHITE} / {RED}Kostnad: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_COST :{WHITE}Anslått kostnad: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Anslått inntekt: {CURRENCY_LONG} @@ -3862,8 +4051,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! @@ -4048,7 +4237,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... @@ -4118,6 +4307,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... @@ -4173,6 +4363,11 @@ STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}Kan ikke STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}...{NBSP}kjøretøy er ødelagt +STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL :{WHITE}Ingen kjøretøyer vil være tilgjengelig i det hele tatt +STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Endre din NewGRF konfigurasjon +STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}Ingen kjøretøyer er tilgjengelig enda +STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Starte et nytt spill etter {DATE_SHORT}, eller bruke en NewGRF som inneholder tidlige kjøretøy + # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Kan ikke tvinge tog til å passere signal ved fare... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Kan ikke snu om toget... @@ -4215,6 +4410,16 @@ STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}Kan ikke # Translatable comment for OpenTTD's desktop shortcut STR_DESKTOP_SHORTCUT_COMMENT :Et simuleringsspill basert på Transport Tycoon Deluxe +# Translatable descriptions in media/baseset/*.ob* files +STR_BASEGRAPHICS_DOS_DESCRIPTION :Original grafikk fra Transport Tycoon Deluxe for DOS. +STR_BASEGRAPHICS_DOS_DE_DESCRIPTION :Original grafikk fra Transport Tycoon Deluxe for DOS (tysk). +STR_BASEGRAPHICS_WIN_DESCRIPTION :Original grafikk fra Transport Tycoon Deluxe for Windows. +STR_BASESOUNDS_DOS_DESCRIPTION :Originale lyder fra Transport Tycoon Deluxe for DOS. +STR_BASESOUNDS_WIN_DESCRIPTION :Originale lyder fra Transport Tycoon Deluxe for Windows. +STR_BASESOUNDS_NONE_DESCRIPTION :En lydpakke uten noen lyder. +STR_BASEMUSIC_WIN_DESCRIPTION :Original musikk fra Transport Tycoon Deluxe for Windows. +STR_BASEMUSIC_NONE_DESCRIPTION :En musikkpakke uten noe musikk. + ##id 0x2000 # Town building names STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1 :Høyhus @@ -4337,7 +4542,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) @@ -4544,10 +4749,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 @@ -4661,8 +4866,9 @@ 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_SPACE_STRING :{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} @@ -4686,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/norwegian_nynorsk.txt b/src/lang/norwegian_nynorsk.txt index b2448da6e..fb19787ce 100644 --- a/src/lang/norwegian_nynorsk.txt +++ b/src/lang/norwegian_nynorsk.txt @@ -125,7 +125,7 @@ STR_QUANTITY_COLA :{VOLUME_LONG} c STR_QUANTITY_CANDYFLOSS :{WEIGHT_LONG} sukkerspinn STR_QUANTITY_BUBBLES :{COMMA} boble{P "" r} STR_QUANTITY_TOFFEE :{WEIGHT_LONG} karamell -STR_QUANTITY_BATTERIES :{COMMA} batteri{P "" er} +STR_QUANTITY_BATTERIES :{COMMA} batteri STR_QUANTITY_PLASTIC :{VOLUME_LONG} plast STR_QUANTITY_FIZZY_DRINKS :{COMMA} brus STR_QUANTITY_N_A :N/A @@ -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 "" s} -STR_BAGS :{COMMA} sekkar{P "" s} -STR_TONS :{COMMA} tonn{P "" s} -STR_LITERS :{COMMA} liter{P "" s} -STR_ITEMS :{COMMA} einingar{P "" s} -STR_CRATES :{COMMA} kassar{P "" s} +STR_PASSENGERS :{COMMA} passasjer{P "" ar} +STR_BAGS :{COMMA} sekk{P "" er} +STR_TONS :{COMMA} tonn +STR_LITERS :{COMMA} liter +STR_ITEMS :{COMMA} eining{P "" ar} +STR_CRATES :{COMMA} kasse{P "" r} # Colours, do not shuffle STR_COLOUR_DARK_BLUE :Mørkeblå @@ -185,7 +185,7 @@ STR_COLOUR_GREEN :Grøn STR_COLOUR_DARK_GREEN :Mørkegrøn STR_COLOUR_BLUE :Blå STR_COLOUR_CREAM :Kremgul -STR_COLOUR_MAUVE :Rødlilla +STR_COLOUR_MAUVE :Raudlilla STR_COLOUR_PURPLE :Lilla STR_COLOUR_ORANGE :Oransje STR_COLOUR_BROWN :Brun @@ -201,27 +201,36 @@ 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 +STR_LIST_FILTER_TITLE :{BLACK}Søkefilter: 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 @@ -233,7 +242,8 @@ 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 @@ -257,7 +267,6 @@ STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}Område: # These are used in buttons -STR_SORT_BY_CAPTION_POPULATION :{BLACK}Innbyggjartal STR_SORT_BY_CAPTION_NAME :{BLACK}Namn STR_SORT_BY_CAPTION_DATE :{BLACK}Dato # These are used in dropdowns @@ -278,7 +287,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 :Verdien av ventande varer +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,10 +300,12 @@ STR_SORT_BY_RUNNING_COST :Driftskostnad STR_SORT_BY_POWER_VS_RUNNING_COST :Kraft/Driftskostnad 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 -STR_TOOLBAR_TOOLTIP_FORWARD :{BLACK}Dobbel hastighet på spelet +STR_TOOLBAR_TOOLTIP_FORWARD :{BLACK}Dobbel fart på spelet STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}Instillingar STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK}Lagre, avbryt spel, avslutt OpenTTD STR_TOOLBAR_TOOLTIP_DISPLAY_MAP :{BLACK}Syne kart, ekstra tilleggsvindauge eller skiltliste @@ -302,6 +314,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 @@ -350,7 +364,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_SCRIPT_SETTINGS :AI- / Spelinnstillingar +STR_SETTINGS_MENU_SCRIPT_SETTINGS :AI- / Spelscript-innstillingar STR_SETTINGS_MENU_NEWGRF_SETTINGS :NewGRF-innstillingar STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :Gjennomsiktigheitsinnstillingar STR_SETTINGS_MENU_TOWN_NAMES_DISPLAYED :Syne bynamn @@ -372,19 +386,19 @@ STR_FILE_MENU_SEPARATOR : STR_FILE_MENU_EXIT :Avslutt OpenTTD ############ range ends here -############ range for map menu starts +# 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, yet the town directory is shown in the map menu in the scenario editor + +############ range for town menu starts STR_TOWN_MENU_TOWN_DIRECTORY :Byoversikt -############ end of the 'Display map' dropdown STR_TOWN_MENU_FOUND_TOWN :Grunnlegg by -############ end of the 'Town' dropdown +############ range ends here ############ range for subsidies menu starts STR_SUBSIDIES_MENU_SUBSIDIES :Subsidiar -STR_SUBSIDIES_MENU_GOAL :Gjeldande mål ############ range ends here ############ range for graph menu starts @@ -399,10 +413,12 @@ STR_GRAPH_MENU_CARGO_PAYMENT_RATES :Varetakster ############ range for company league menu starts STR_GRAPH_MENU_COMPANY_LEAGUE_TABLE :Firmarangeringstabell STR_GRAPH_MENU_DETAILED_PERFORMANCE_RATING :Detaljert prestasjonsnivå +STR_GRAPH_MENU_HIGHSCORE :Poengtavle ############ range ends here ############ range for industry menu starts STR_INDUSTRY_MENU_INDUSTRY_DIRECTORY :Oversikt over industriar +STR_INDUSTRY_MENU_INDUSTRY_CHAIN :Næringskjeder STR_INDUSTRY_MENU_FUND_NEW_INDUSTRY :Finansier ny industri ############ range ends here @@ -445,7 +461,7 @@ STR_NEWS_MENU_MESSAGE_HISTORY_MENU :Tidlegare meldi STR_ABOUT_MENU_LAND_BLOCK_INFO :Informasjon om landområde STR_ABOUT_MENU_SEPARATOR : STR_ABOUT_MENU_TOGGLE_CONSOLE :Syne/gøym konsoll -STR_ABOUT_MENU_AI_DEBUG :AI- / Spelscript-feilsøking +STR_ABOUT_MENU_AI_DEBUG :AI- / Spelscriptfeilsøking STR_ABOUT_MENU_SCREENSHOT :Skjermdump STR_ABOUT_MENU_ZOOMIN_SCREENSHOT :Fullt forstørra skjermbilete STR_ABOUT_MENU_DEFAULTZOOM_SCREENSHOT :Normalt skjermbilete @@ -453,9 +469,10 @@ STR_ABOUT_MENU_GIANT_SCREENSHOT :Stort skjermfot STR_ABOUT_MENU_ABOUT_OPENTTD :Om 'OpenTTD' STR_ABOUT_MENU_SPRITE_ALIGNER :Spriteforskyver STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Syne/gøym markeringsramme +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. @@ -471,22 +488,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 @@ -568,7 +603,7 @@ STR_PERFORMANCE_DETAIL_AMOUNT_INT :{BLACK}({COMMA} STR_PERFORMANCE_DETAIL_PERCENT :{WHITE}{NUM}{NBSP}% STR_PERFORMANCE_DETAIL_SELECT_COMPANY_TOOLTIP :{BLACK}Vis detaljar om dette firmaet ############ Those following lines need to be in this order!! -STR_PERFORMANCE_DETAIL_VEHICLES :{BLACK}Køyretøy: +STR_PERFORMANCE_DETAIL_VEHICLES :{BLACK}Køyrety: STR_PERFORMANCE_DETAIL_STATIONS :{BLACK}Stasjonar: STR_PERFORMANCE_DETAIL_MIN_PROFIT :{BLACK}Min. gevinst: STR_PERFORMANCE_DETAIL_MIN_INCOME :{BLACK}Min. inntekt: @@ -648,7 +683,7 @@ STR_HIGHSCORE_PERFORMANCE_TITLE_CAPITALIST :Kapitalist STR_HIGHSCORE_PERFORMANCE_TITLE_MAGNATE :Magnat STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL :Mogul STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY :Hundreårets finansfyrste -STR_HIGHSCORE_NAME :{BIG_FONT}{PRESIDENT_NAME}, {COMPANY} +STR_HIGHSCORE_NAME :{PRESIDENT_NAME}, {COMPANY} STR_HIGHSCORE_STATS :{BIG_FONT}'{STRING}' ({COMMA}) STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{BLACK}{COMPANY} oppnår status som '{STRING}'! STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{WHITE}{PRESIDENT_NAME} frå {COMPANY} oppnår status som '{STRING}'! @@ -659,17 +694,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 @@ -703,6 +741,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 @@ -713,6 +752,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 @@ -789,13 +830,11 @@ 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_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} er gammal STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} er veldig gammal @@ -826,6 +865,8 @@ STR_NEWS_SERVICE_SUBSIDY_AWARDED_TRIPLE :{BIG_FONT}{BLAC STR_NEWS_SERVICE_SUBSIDY_AWARDED_QUADRUPLE :{BIG_FONT}{BLACK}Subsidie gjeve til {STRING}!{}{}Transport av {STRING} frå {STRING} til {STRING} vil gje firedobbel inntekt i eit år! STR_NEWS_ROAD_REBUILDING :{BIG_FONT}{BLACK}Trafikkaos i {TOWN}!{}{}Ombyggjing av vegen, finansiert av {STRING}, medførar 6 månaders irritasjon for bilistane! +STR_NEWS_EXCLUSIVE_RIGHTS_TITLE :{BIG_FONT}{BLACK}Transportmonopol! +STR_NEWS_EXCLUSIVE_RIGHTS_DESCRIPTION :{BIG_FONT}{BLACK}Bystyret i {TOWN} signerer kontrakt med {STRING} om eitt års eksklusive transportrettar!! # Extra view window STR_EXTRA_VIEW_PORT_TITLE :{WHITE}Tilleggsvindauge {COMMA} @@ -868,19 +909,19 @@ STR_GAME_OPTIONS_CURRENCY_TRY :Tyrkiske lira ( STR_GAME_OPTIONS_CURRENCY_SKK :Slovakisk koruna (SKK) STR_GAME_OPTIONS_CURRENCY_BRL :Brasiliansk real (BRL) STR_GAME_OPTIONS_CURRENCY_EEK :Estiske kroner (EEK) +STR_GAME_OPTIONS_CURRENCY_LTL :Litauiske Litas (LTL) +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 -STR_GAME_OPTIONS_MEASURING_UNITS_FRAME :{BLACK}Einingar for mål -STR_GAME_OPTIONS_MEASURING_UNITS_DROPDOWN_TOOLTIP :{BLACK}Vel einingar for mål ############ start of measuring units region -STR_GAME_OPTIONS_MEASURING_UNITS_IMPERIAL :Imperiell -STR_GAME_OPTIONS_MEASURING_UNITS_METRIC :Metrisk -STR_GAME_OPTIONS_MEASURING_UNITS_SI :SI ############ 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 @@ -915,11 +956,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 @@ -931,9 +974,6 @@ 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_BASE_GRF :{BLACK}Grafikksett STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Vel grafikksett som skal nyttast STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} manglande/øydelagd{P "" e} fil{P "" er} @@ -948,6 +988,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 @@ -981,7 +1022,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 @@ -1035,12 +1076,42 @@ STR_WARNING_NO_SUITABLE_AI :{WHITE}Inga pas # Advanced settings window STR_CONFIG_SETTING_CAPTION :{WHITE}Avanserte 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 +STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT :(inga forklaring tilgjengeleg) +STR_CONFIG_SETTING_DEFAULT_VALUE :{LTBLUE}Standarverdi: {ORANGE}{STRING} +STR_CONFIG_SETTING_TYPE :{LTBLUE}Type innstilling: {ORANGE}{STRING} +STR_CONFIG_SETTING_TYPE_CLIENT :Klientinnstilling (ikkje lagra med enkeltspel; påverkar alle spela) +STR_CONFIG_SETTING_TYPE_GAME_MENU :Spelinnstilling (lagra med enkeltspel; påverkar berre nye spel) +STR_CONFIG_SETTING_TYPE_GAME_INGAME :Spelinnstilling (lagra med enkeltspel; påverkar berre gjeldande spel) +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_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 +STR_CONFIG_SETTING_RESTRICT_ALL :Ekspertinnstillingar / alle innstillingar +STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :Instillingar med ein anna verdi enn standarden +STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :Innstillingar som skil seg frå innstillingar for nye spel + +STR_CONFIG_SETTING_TYPE_DROPDOWN_HELPTEXT :{BLACK}Begrenstar lista til spesifikke instillingstypar +STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :Alle innstillingar +STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :Klientinstillingar (alle spel) +STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Spelinnstillingar (nye spel) +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å -STR_CONFIG_SETTING_DISABLED :deaktivert +STR_CONFIG_SETTING_DISABLED :Deaktivert STR_CONFIG_SETTING_COMPANIES_OFF :Av STR_CONFIG_SETTING_COMPANIES_OWN :Eige firma @@ -1054,48 +1125,100 @@ STR_CONFIG_SETTING_HORIZONTAL_POS_LEFT :Venstre STR_CONFIG_SETTING_HORIZONTAL_POS_CENTER :Midtstilt STR_CONFIG_SETTING_HORIZONTAL_POS_RIGHT :Høgre +STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN :Maksimalt startlån: {STRING} +STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Maksimalt lån eit firma kan ta opp (utan å reikne med inflasjon) +STR_CONFIG_SETTING_INTEREST_RATE :Rente: {STRING} +STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Lånerente; kontrollerar óg mogleg inflasjon +STR_CONFIG_SETTING_RUNNING_COSTS :Køyrekostnadar: {STRING} +STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT :Set vedlikehaldsnivå og driftskostnadar for køyretøy og infrastruktur +STR_CONFIG_SETTING_CONSTRUCTION_SPEED :Fart for bygging: {STRING} +STR_CONFIG_SETTING_CONSTRUCTION_SPEED_HELPTEXT :Avgrensing av farten AIar kan gjere konstruksjonshandlingar i. +STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS :Køyretøy bryt saman: {STRING} +STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS_HELPTEXT :Kontroller kor ofte køyretøy bryt saman når dei ikkje har fått nok vedlikehald +STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER :Multiplikator for subsidiar: {STRING} +STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT :Kor mykje ekstra betaling som blir gitt ved subsidiar +STR_CONFIG_SETTING_CONSTRUCTION_COSTS :Byggjekostnadar: {STRING} +STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :Nivået kostnadene for konstruksjon og kjøp ligg på +STR_CONFIG_SETTING_RECESSIONS :Nedgangstider: {STRING} +STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Skru på at det frå tid til anna kjem nedgangstider. Under nedgangstider fell all produksjon kraftig. (Han går opp att når nedgangstida er over.) +STR_CONFIG_SETTING_TRAIN_REVERSING :Ikkje la tog vende om på stasjonar: {STRING} +STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :Skru på for å hindre at tog snur på andre stasjonar enn endestasjonar. +STR_CONFIG_SETTING_DISASTERS :Ulukker: {STRING} +STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Skru av/på katastrofar og ulukker, som kan stogge eller øydeleggje køyretøy og øydeleggje infrastruktur. +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_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} STR_CONFIG_SETTING_EXTRADYNAMITE :Tillet fjerning av fleire vegar, bruar osb. egd av byane.: {STRING} +STR_CONFIG_SETTING_EXTRADYNAMITE_HELPTEXT :Gjer det greiare å fjerne infrastruktur og bygningar eigd av byar. +STR_CONFIG_SETTING_TRAIN_LENGTH :Maksimal toglengd: {STRING} +STR_CONFIG_SETTING_TRAIN_LENGTH_HELPTEXT :Vel største moglege toglengde +STR_CONFIG_SETTING_TILE_LENGTH :{COMMA} rute{P 0 "" r} STR_CONFIG_SETTING_SMOKE_AMOUNT :Mengde køyretøyrøyk/-gnistar: {STRING} +STR_CONFIG_SETTING_SMOKE_AMOUNT_HELPTEXT :Mengd røyk og gnistar som kjem frå køyretøy. STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL :Togakselerasjonsmodell: {STRING} +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_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 :inga -STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :som andre industriar -STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :prospekterar +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_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_NONE :ingen -STR_CONFIG_SETTING_PLANE_CRASHES_REDUCED :redusert -STR_CONFIG_SETTING_PLANE_CRASHES_NORMAL :normalt +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} @@ -1103,40 +1226,59 @@ STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :Flyplassar utg STR_CONFIG_SETTING_WARN_LOST_VEHICLE :Advarsel om køyretøyet køyrer seg vill: {STRING} STR_CONFIG_SETTING_ORDER_REVIEW :Inspiser ordrane til køyretøya: {STRING} -STR_CONFIG_SETTING_ORDER_REVIEW_OFF :nei -STR_CONFIG_SETTING_ORDER_REVIEW_EXDEPOT :ja, men utelat stoppa køyretøy -STR_CONFIG_SETTING_ORDER_REVIEW_ON :alle køyretøy +STR_CONFIG_SETTING_ORDER_REVIEW_OFF :Nei +STR_CONFIG_SETTING_ORDER_REVIEW_EXDEPOT :Ja, men utelat stoppa køyretøy +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_ORIGINAL :Original STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis +STR_CONFIG_SETTING_INDUSTRY_DENSITY :Industritetthet: {STRING} +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_ROUGHNESS_OF_TERRAIN :Kor ulendt skal terrenget vere (kun TerraGenesis): {STRING} 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_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_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 @@ -1149,31 +1291,40 @@ 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_NO_ACTIONS :ingen handlingar -STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_CONSTRUCTION :alle ikkje-konstruksjons-handlingar +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 STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_ACTIONS :alle handlingar STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Bruk avansert køyretøyliste: {STRING} @@ -1182,49 +1333,98 @@ 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 +STR_CONFIG_SETTING_SOUND_NEWS :Avisartiklar: {STRING} +STR_CONFIG_SETTING_SOUND_NEWS_HELPTEXT :Spel lyd når avisartiklar visest på skjermen +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 :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} +STR_CONFIG_SETTING_MAX_TRAINS_HELPTEXT :Maksimalt antal tog eit firma kan eige. STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :Maks antal bilar per firma: {STRING} +STR_CONFIG_SETTING_MAX_ROAD_VEHICLES_HELPTEXT :Maksimalt antal bilar eit firma kan eige STR_CONFIG_SETTING_MAX_AIRCRAFT :Maks antal luftfartøy per firma: {STRING} +STR_CONFIG_SETTING_MAX_AIRCRAFT_HELPTEXT :Maksimalt antal luftfartøy eit firma kan eige STR_CONFIG_SETTING_MAX_SHIPS :Maks antal skip per firma: {STRING} +STR_CONFIG_SETTING_MAX_SHIPS_HELPTEXT :Maksimalt antal skip eit firma kan eige STR_CONFIG_SETTING_AI_BUILDS_TRAINS :Hindre datamaskina i å byggje tog: {STRING} STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES :Hindre datamaskina i å byggje køyretøy: {STRING} 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} STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN :Første køyretøy kjem fram på stasjonen til spelaren: {STRING} +STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN_HELPTEXT :Vis nyheitsartiklar når første køyretøy kjem til ein stasjon hjå ein ny spelar STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER :Første køyretøy kjem fram på stasjonen til motstandaren: {STRING} +STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER_HELPTEXT :Vis nyheitsartiklar når fyrste køyretøy kjem til ein ny stasjon hjå ein konkurrent STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS :Ulykker/katastrofar: {STRING} +STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS_HELPTEXT :Vis nyheitsartiklar ved ulykker eller katastrofar STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION :Firmainformasjon: {STRING} +STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION_HELPTEXT :Vis nyheitsartiklar når nye firma startar opp, eller når firma risikerer konkurs STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN :Nyopning av industriar: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN_HELPTEXT :Vis nyheitsartiklar når industri opnar STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE :Nedlegging av industriar: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE_HELPTEXT :Vis nyheitsartiklar når industri legg ned STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES :Økonomiske endringar: {STRING} +STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES_HELPTEXT :Vis nyheitsartiklar ved forandringar i den globale økonomien STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY :Produksjonsendringar i industriar betjent av firmaet: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY_HELPTEXT :Vis nyheitsartiklar når industriar forandrar produksjonsmengd, for industriar som betenest av firmaet STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER :Produksjonsendringar for industriar betente av konkurrent(ar): {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER_HELPTEXT :Vis nyheitsartiklar når industriar forandrar produksjonsmengd, for industriar som betenest av konkurrerande firma STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED :Produksonsendringar for andre industriar: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED_HELPTEXT :Vis nyheitsartiklar når industriar forandrar produksjonsmengd, for industriar som ikkje betenest av noko firma STR_CONFIG_SETTING_NEWS_ADVICE :Råd / informasjon om firmaet's køyretøy: {STRING} +STR_CONFIG_SETTING_NEWS_ADVICE_HELPTEXT :Vis meldingar om køyretøy som treng tilsyn STR_CONFIG_SETTING_NEWS_NEW_VEHICLES :Nye køyretøy: {STRING} +STR_CONFIG_SETTING_NEWS_NEW_VEHICLES_HELPTEXT :Vis nyheitsartiklar når nye køyretøy vert tilgjengelege STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE :Endringar i godtekne varer: {STRING} +STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE_HELPTEXT :Vis meldingar når stasjonar skifter godtekne varer STR_CONFIG_SETTING_NEWS_SUBSIDIES :Subsidiar: {STRING} +STR_CONFIG_SETTING_NEWS_SUBSIDIES_HELPTEXT :Vis nyheitsartiklar om hendingar som har å gjere med subsidiar STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION :Generell informasjon: {STRING} +STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION_HELPTEXT :Vis nyheitsartiklar om gjengse hendingar, som kjøp av eksklusive transportrettar eller finansiering av ombyggjing av vegnett STR_CONFIG_SETTING_NEWS_MESSAGES_OFF :Av STR_CONFIG_SETTING_NEWS_MESSAGES_SUMMARY :Samandrag @@ -1233,10 +1433,14 @@ STR_CONFIG_SETTING_NEWS_MESSAGES_FULL :Fullt STR_CONFIG_SETTING_COLOURED_NEWS_YEAR :Avisa vert trykt i fargar i: {STRING} 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 selskap: {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 @@ -1246,15 +1450,19 @@ 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 STR_CONFIG_SETTING_TOWN_LAYOUT_3X3_GRID :3x3 rutenett 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 STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :ikkje tillete STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :tillete STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :tillete, eigendefinert oppsett av by @@ -1265,51 +1473,114 @@ STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_RAINFOREST :kun i regnskoge STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_ALL :over alt STR_CONFIG_SETTING_TOOLBAR_POS :Plassering av hovudverktøylinje: {STRING} +STR_CONFIG_SETTING_TOOLBAR_POS_HELPTEXT :Plassering av verktøylinja øvst på skjermen STR_CONFIG_SETTING_STATUSBAR_POS :Plassering av statuslinje: {STRING} +STR_CONFIG_SETTING_STATUSBAR_POS_HELPTEXT :Plassering av statuslinja nederst på skjermen +STR_CONFIG_SETTING_SNAP_RADIUS :Radius for at vindauge klikker på plass: {STRING} +STR_CONFIG_SETTING_SNAP_RADIUS_HELPTEXT :Når eit vindauge flyttast vil det automatisk verte flytta like til andre vindauge når dei er nærare enn den her lengda +STR_CONFIG_SETTING_SNAP_RADIUS_VALUE :{COMMA} piks{P 0 "el" "lar"} +STR_CONFIG_SETTING_SNAP_RADIUS_DISABLED :Slått av STR_CONFIG_SETTING_SOFT_LIMIT :Maks. antal vindauge (ikkje fest til andre): {STRING} +STR_CONFIG_SETTING_SOFT_LIMIT_HELPTEXT :Antal vindauge som kan vere opne før gamle vindauge automatisk vert lukka når nye opnast +STR_CONFIG_SETTING_SOFT_LIMIT_VALUE :{COMMA} +STR_CONFIG_SETTING_SOFT_LIMIT_DISABLED :slått av STR_CONFIG_SETTING_ZOOM_MIN :Maksimum zoom-inn-nivå: {STRING} +STR_CONFIG_SETTING_ZOOM_MIN_HELPTEXT :Maksimalt zoom-in-nivå for tilleggsvindauge. Høgare zoom-inn-nivå krever meir minne STR_CONFIG_SETTING_ZOOM_MAX :Maksimum zoom-ut-nivå: {STRING} +STR_CONFIG_SETTING_ZOOM_MAX_HELPTEXT :Maksimalt zoom-ut-nivå for tilleggsvindauge. Høge zoom-ut-nivå kan føre til at spelet hakker STR_CONFIG_SETTING_ZOOM_LVL_MIN :4x STR_CONFIG_SETTING_ZOOM_LVL_IN_2X :2x 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 :Hastighet for byars vekst: {STRING} +STR_CONFIG_SETTING_TOWN_GROWTH :Fart for veksten til byar: {STRING} +STR_CONFIG_SETTING_TOWN_GROWTH_HELPTEXT :Kor fort byar skal vekse STR_CONFIG_SETTING_TOWN_GROWTH_NONE :Ingen STR_CONFIG_SETTING_TOWN_GROWTH_SLOW :Sakte STR_CONFIG_SETTING_TOWN_GROWTH_NORMAL :Normal STR_CONFIG_SETTING_TOWN_GROWTH_FAST :Rask STR_CONFIG_SETTING_TOWN_GROWTH_VERY_FAST :Særs rask +STR_CONFIG_SETTING_LARGER_TOWNS :Andel stader som skal vere byar: {STRING} +STR_CONFIG_SETTING_LARGER_TOWNS_HELPTEXT :Andel stader som vert byar i staden for tettstader. Byar veks fortare enn tettstader og er større når spelet startar +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_MODIFIED_ROAD_REBUILD :Fjern absurde vegelement under vegkonstruksjon: {STRING} - -STR_CONFIG_SETTING_GUI :{ORANGE}Grensesnitt -STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}Konstruksjon +STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Storleiken til byar på starten av spelet, jamført med tettstader + +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_SOUND :{ORANGE}Lydar +STR_CONFIG_SETTING_INTERFACE :{ORANGE}Grensesnitt +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Konstruksjon STR_CONFIG_SETTING_VEHICLES :{ORANGE}Køyretøy -STR_CONFIG_SETTING_STATIONS :{ORANGE}Stasjonar -STR_CONFIG_SETTING_ECONOMY :{ORANGE}Økonomi +STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Ruting +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_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 STR_CONFIG_SETTING_PATHFINDER_YAPF_RECOMMENDED :YAPF {BLUE}(Anbefalt) STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Vegfinnar for tog: {STRING} +STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Kva for vegfinnar som skal nyttast for tog STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :Vegfinnar for køyretøy på vegar: {STRING} +STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES_HELPTEXT :Kva for vegfinnar som skal nyttast for bilar og bussar STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS :Vegfinnar for skip: {STRING} +STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT :Kva for vegfinnar som skal nyttast for skip STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :Automatisk reversering ved signal: {STRING} +STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT :La tog snu ved signal, når dei har venta lengje STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}Byt innstillingsverdi @@ -1327,6 +1598,11 @@ STR_CONFIG_ERROR_INVALID_GRF_INCOMPATIBLE :inkompatibel me STR_CONFIG_ERROR_INVALID_GRF_UNKNOWN :ukjend STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_LEVEL :{WHITE}... kompresjonsnivå '{STRING}' er ikkje gyldig STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_ALGORITHM :{WHITE}... lagra spels format '{STRING}' er ikkje tilgjengeleg. Vender attende til '{STRING}' +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} @@ -1339,10 +1615,11 @@ STR_INTRO_SCENARIO_EDITOR :{BLACK}Scenario STR_INTRO_MULTIPLAYER :{BLACK}Fleirspelar STR_INTRO_GAME_OPTIONS :{BLACK}Spelinnstillingar +STR_INTRO_HIGHSCORE :{BLACK}Poengtavle STR_INTRO_ADVANCED_SETTINGS :{BLACK}Avanserte innstillingar STR_INTRO_NEWGRF_SETTINGS :{BLACK}NewGRF-innstillingar STR_INTRO_ONLINE_CONTENT :{BLACK}Sjå etter innhald på nett -STR_INTRO_SCRIPT_SETTINGS :{BLACK}AI- / Spelinnstillingar +STR_INTRO_SCRIPT_SETTINGS :{BLACK}AI- / Spelscriptinnstillingar STR_INTRO_QUIT :{BLACK}Avslutt STR_INTRO_TOOLTIP_NEW_GAME :{BLACK}Start eit nytt spel. CTRL+klikk hoppar over kartkonfigurasjon @@ -1358,13 +1635,14 @@ STR_INTRO_TOOLTIP_SUB_TROPICAL_LANDSCAPE :{BLACK}Vel subt STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Vel leiketøyland-miljø 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_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 spelinnstillingar +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 @@ -1414,8 +1692,8 @@ STR_LIVERY_TRAIN_TOOLTIP :{BLACK}Syne tog STR_LIVERY_ROAD_VEHICLE_TOOLTIP :{BLACK}Syne bilfargetema STR_LIVERY_SHIP_TOOLTIP :{BLACK}Syne skipsfargetema STR_LIVERY_AIRCRAFT_TOOLTIP :{BLACK}Syne luftfartøyfargartema -STR_LIVERY_PRIMARY_TOOLTIP :{BLACK}Vel ein primærfarge for valde tema -STR_LIVERY_SECONDARY_TOOLTIP :{BLACK}Vel sekundærfarge for valde tema +STR_LIVERY_PRIMARY_TOOLTIP :{BLACK}Vel ein primærfarge for valde tema. Ctrl+klikk veljer fargen for alle temaa +STR_LIVERY_SECONDARY_TOOLTIP :{BLACK}Vel sekundærfarge for valde tema. Ctrl+klikk veljer fargen for alle temaa STR_LIVERY_PANEL_TOOLTIP :{BLACK}Vel eit fargetema å endre, eller fleire fargetema med CTRL+klikk. Klikk på boksen for å vise bruken av fargetema STR_LIVERY_DEFAULT :Standardfarger @@ -1446,6 +1724,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 @@ -1501,10 +1780,10 @@ STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}Byt slip # Network server list STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}Fleirspelar -STR_NETWORK_SERVER_LIST_CONNECTION :{BLACK}Samband: -STR_NETWORK_SERVER_LIST_CONNECTION_TOOLTIP :{BLACK}Vel mellom å spele på internett eller i lokalt nettverk (LAN) -STR_NETWORK_SERVER_LIST_LAN :LAN -STR_NETWORK_SERVER_LIST_INTERNET :Internett +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 @@ -1563,8 +1842,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_LAN_INTERNET :LAN / Internett -STR_NETWORK_START_SERVER_INTERNET_ADVERTISE :Internett (annonser) +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 @@ -1572,7 +1851,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 @@ -1685,6 +1964,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 @@ -1803,6 +2083,10 @@ 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 STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}Vitje nettsida for dette innhaldet @@ -1872,6 +2156,17 @@ STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}Byt gjen STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Byt gjennomsyn for lasteindikatorar. Ctrl+klikk for å låsa. 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 STR_STATION_BUILD_COVERAGE_OFF :{BLACK}Av @@ -1938,18 +2233,18 @@ STR_STATION_CLASS_WAYP :Kontrollpunkt # Signal window STR_BUILD_SIGNAL_CAPTION :{WHITE}Signalval STR_BUILD_SIGNAL_SEMAPHORE_NORM_TOOLTIP :{BLACK}Blokksignal (vingesignal){}Dette er den enklaste typen av signaler som tillet kun eit tog å køyre om gangen. -STR_BUILD_SIGNAL_SEMAPHORE_ENTRY_TOOLTIP :{BLACK}Inngangssignal (vingesignal){}Grønt så lenge det er eit eller fleir grøne utgangssignal i den følgande seksjonen. Ellers syner det raudt. -STR_BUILD_SIGNAL_SEMAPHORE_EXIT_TOOLTIP :{BLACK}Utgangssignal (vingesignal){}Verker på samme måte som blokksignal, men er naudsynte for å utløyse rett farge på inngangs- og kombinasjons-forsignaler. -STR_BUILD_SIGNAL_SEMAPHORE_COMBO_TOOLTIP :{BLACK}Kombinasjonssignal (vingesignal){}Verker som både inn- og utgangssignal. Dette gjer det mogleg å lage store "greinar" av forsignal. +STR_BUILD_SIGNAL_SEMAPHORE_ENTRY_TOOLTIP :{BLACK}Inngangssignal (vingesignal){}Grønt så lenge det er eit eller fleir grøne utgangssignal i den følgande seksjonen. Ellers syner det raudt +STR_BUILD_SIGNAL_SEMAPHORE_EXIT_TOOLTIP :{BLACK}Utgangssignal (vingesignal){}Verker på samme måte som blokksignal, men er naudsynte for å utløyse rett farge på inngangs- og kombinasjons-forsignaler +STR_BUILD_SIGNAL_SEMAPHORE_COMBO_TOOLTIP :{BLACK}Kombinasjonssignal (vingesignal){}Verker som både inn- og utgangssignal. Dette gjer det mogleg å lage store "greinar" av forsignal STR_BUILD_SIGNAL_SEMAPHORE_PBS_TOOLTIP :{BLACK}Avansert signal (vingesignal){}Eit avansert signal tillet fleire tog å køyre samstundes på same signalblokk, dersom toga kan reservere ei rute til ein trygg stoppestad. Vanlege avanserte signal kan passerast bakfrå. STR_BUILD_SIGNAL_SEMAPHORE_PBS_OWAY_TOOLTIP :{BLACK}Einvegs avansert signal (vingesignal){}Eit avansert signal tillet fleire tog å køyre samstundes på same signalblokk, dersom toga kan reservere ei rute til ein trygg stoppestad. Einvegs avanserte signal kan ikkje passerast bakfrå. STR_BUILD_SIGNAL_ELECTRIC_NORM_TOOLTIP :{BLACK}Blokksignal (lyssignal){}Dette er den enklaste typen av signal som tillet kun eit tog å køyre om gangen. -STR_BUILD_SIGNAL_ELECTRIC_ENTRY_TOOLTIP :{BLACK}Inngangssignal (lyssignal){}Grønt så lenge det er eit eller fleire grøne utgangssignal i den påfølgjande seksjonen. Elles syner det raudt. -STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}Utgangssignal (lyssignal){}Verker på samme måte som blokksignal, men er naudsynte for å utløyse rett farge på inngangs- og kombinasjons-forsignaler. -STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}Kombinasjonssignal (lyssignal){}Verker som både inn- og utgangssignal. Dette gjer det mogleg å lage store "greinar" av forsignal. +STR_BUILD_SIGNAL_ELECTRIC_ENTRY_TOOLTIP :{BLACK}Inngangssignal (lyssignal){}Grønt så lenge det er eit eller fleire grøne utgangssignal i den påfølgjande seksjonen. Elles syner det raudt +STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}Utgangssignal (lyssignal){}Verker på samme måte som blokksignal, men er naudsynte for å utløyse rett farge på inngangs- og kombinasjons-forsignaler +STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}Kombinasjonssignal (lyssignal){}Verker som både inn- og utgangssignal. Dette gjer det mogleg å lage store "greinar" av forsignal STR_BUILD_SIGNAL_ELECTRIC_PBS_TOOLTIP :{BLACK}Avansert signal (lyssignal){}Eit avansert signal tillet fleire tog å køyre samstundes på same signalblokk, dersom toga kan reservere ei rute til ein trygg stoppestad. Vanlege avanserte signal kan passerast bakfrå. STR_BUILD_SIGNAL_ELECTRIC_PBS_OWAY_TOOLTIP :{BLACK}Einvegs avansert signal (lyssignal){}Eit avansert signal tillet fleire tog å køyre samstundes på same signalblokk, dersom toga kan reservere ei rute til ein trygg stoppestad. Einvegs avanserte signal kan ikkje passerast bakfrå. -STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}Signalkonvertering{}Klikk på eit signal for å endra det til valde type, Ctrl+klikk byter mellom forskjellige variantar. Skift vekslar mellom byggjing/syning av prisoverslag. +STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}Signalkonvertering{}Klikk på eit signal for å endra det til valde type, Ctrl+klikk byter mellom forskjellige variantar. Shift+klikk syner prisoverslag STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_TOOLTIP :{BLACK}Tettleik for dra og slepp signalbygging STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_DECREASE_TOOLTIP :{BLACK}Minsk tettleik for dra og slepp signalbygging STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_INCREASE_TOOLTIP :{BLACK}Auk tettleik for dra og slepp signalbygging @@ -2076,7 +2371,7 @@ STR_PLANT_TREE_TOOLTIP :{BLACK}Vel type STR_TREES_RANDOM_TYPE :{BLACK}Tre av tilfeldig type STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}Plasser tre av tilfeldig type. Skift vekslar mellom byggjing/syning av prisoverslag. STR_TREES_RANDOM_TREES_BUTTON :{BLACK}Tilfeldige tre -STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Plasser tre tilfeldig i landskapet +STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Plant tilfeldige tre rundt omkring i landskapet # Land generation window (SE) STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}Landgenerering @@ -2146,6 +2441,10 @@ STR_INDUSTRY_DISPLAY_CHAIN :{G=masculine}{B STR_INDUSTRY_DISPLAY_CHAIN_TOOLTIP :{BLACK}Syn vareleverande og varemottakande industriar STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP :{BLACK}Kople til oversiktskart STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP_TOOLTIP :{BLACK}Velg dei viste industriane på oversiktskartet også +STR_INDUSTRY_CARGOES_SELECT_CARGO :{BLACK}Vel last +STR_INDUSTRY_CARGOES_SELECT_CARGO_TOOLTIP :{BLACK}Vel kva for last du vil syne +STR_INDUSTRY_CARGOES_SELECT_INDUSTRY :{BLACK}Vel industri +STR_INDUSTRY_CARGOES_SELECT_INDUSTRY_TOOLTIP :{BLACK}Vel kva for industri du vil syne # Land area window STR_LAND_AREA_INFORMATION_CAPTION :{WHITE}Informasjon om landområde @@ -2170,6 +2469,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 @@ -2266,7 +2566,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-2012 OpenTTD-teamet +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2014 OpenTTD-teamet # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Lagre spel @@ -2295,6 +2595,7 @@ STR_SAVELOAD_OSKTITLE :{BLACK}Skriv in # World generation STR_MAPGEN_WORLD_GENERATION_CAPTION :{WHITE}Generer ei verd STR_MAPGEN_MAPSIZE :{BLACK}Kartstorleik: +STR_MAPGEN_MAPSIZE_TOOLTIP :{BLACK}Vel storleik på kartet, i ruter. Talet på tilgjengelege ruter vert smått mindre STR_MAPGEN_BY :{BLACK}* STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Antal byar: STR_MAPGEN_DATE :{BLACK}Dato: @@ -2302,10 +2603,6 @@ STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Antal in 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 @@ -2332,7 +2629,6 @@ 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_SNOW_LINE_QUERY_CAPT :{WHITE}Byt høgda på snøgrensa STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Byt startår @@ -2387,6 +2683,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 @@ -2411,6 +2709,15 @@ 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_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 @@ -2470,6 +2777,7 @@ STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Inneheld fleire tilfelle av handling 8 (sprite {3:NUM}) STR_NEWGRF_ERROR_READ_BOUNDS :Lest forbi slutten av pseudo-sprite (sprite {3:NUM}) STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}Det nåværande grafikksettet manglar ein del bilete.{}Vennligst oppdater grafikksettet. +STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}Det valde grafikksettet manglar nokre bilete.{}Vær venleg og forny grafikksettet.{}I og med at du spelar eit {YELLOW}utviklingsutkast av OpenTTD{WHITE} treng du òg eit {YELLOW}utviklingsutkast av grafikksettet{WHITE} STR_NEWGRF_ERROR_GRM_FAILED :Etterspurde GRF-ressursar ikkje tilgjengeleg (sprite {3:NUM}) STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} vart deaktivert av {STRING} STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Ugyldig/ukjend sprite layout-format (sprite {3:NUM}) @@ -2480,6 +2788,7 @@ STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}Du er i STR_NEWGRF_DUPLICATE_GRFID :{WHITE}Kan ikkje leggje til fil: GRF ID finns allereie STR_NEWGRF_COMPATIBLE_LOADED :{ORANGE}Matchande fil blei ikkje funne (kompatibel GRF-fil lasta inn) +STR_NEWGRF_TOO_MANY_NEWGRFS :{WHITE}Kan ikkje leggje til fil: NyGRF fil grense nådd STR_NEWGRF_COMPATIBLE_LOAD_WARNING :{WHITE}Kompatibel GRF-fil(ar) lasta inn i plassen for manglande filar STR_NEWGRF_DISABLED_WARNING :{WHITE}Manglande GRF-fil(ar) har vorte deaktiverte @@ -2496,6 +2805,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. @@ -2510,6 +2820,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... @@ -2591,10 +2904,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}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}- 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. @@ -2633,6 +2950,18 @@ STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}Tenester STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING} frå {STRING} til {STRING}{YELLOW} ({COMPANY}{YELLOW}, til {DATE_SHORT}) 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 STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}Hald inne CTRL for å velje fleire @@ -2646,19 +2975,44 @@ 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) STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Aksepterer STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Syne liste over godtekne varer STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}Godtek: {WHITE}{CARGO_LIST} +STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Eigaren av stasjonen har eksklusive transportrettar i den her byen. +STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} har kjøp eksklusive transportrettar i byen. STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Vurderingar STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Syne stasjonsvurdering -STR_STATION_VIEW_CARGO_RATINGS_TITLE :{BLACK}Lokal vurdering av transporttenester: -STR_STATION_VIEW_CARGO_RATING :{WHITE}{STRING}: {YELLOW}{STRING} ({COMMA}{NBSP}%) +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 @@ -2681,6 +3035,8 @@ STR_STATION_VIEW_SCHEDULED_SHIPS_TOOLTIP :{BLACK}Syne all STR_STATION_VIEW_RENAME_STATION_CAPTION :Endre namnet på stasjon/lasteterminal +STR_STATION_VIEW_CLOSE_AIRPORT :{BLACK}Steng flyplassen +STR_STATION_VIEW_CLOSE_AIRPORT_TOOLTIP :{BLACK}Hindre at luftfartøy lander på flyplassen # Waypoint/buoy view window STR_WAYPOINT_VIEW_CAPTION :{WHITE}{WAYPOINT} @@ -2748,7 +3104,7 @@ STR_COMPANY_VIEW_BUILD_HQ_TOOLTIP :{BLACK}Bygg fir STR_COMPANY_VIEW_VIEW_HQ_BUTTON :{BLACK}Syne hovudkontor STR_COMPANY_VIEW_VIEW_HQ_TOOLTIP :{BLACK}Syne firmaets hovudkontor STR_COMPANY_VIEW_RELOCATE_HQ :{BLACK}Omplasser hovudkvarter -STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Omplasser selskapet sitt hovudkontor til ein kostnad av 1{NBSP}% av firmaverdien. Shift+klikk viser prisoverslag utan å flytte hovudkontoret. +STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Flytt hovudkontoret til firmaet, til ein kostnad av 1{NBSP}% av firmaverdien. Shift+klikk viser prisoverslag utan å flytte hovudkontoret. STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}Detaljar STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}Vis detaljert infrastrukturteljing @@ -2783,7 +3139,6 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS :{WHITE}Kanalar STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}Stasjonar: STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}Stasjonsruter STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}Flyplassar -STR_COMPANY_INFRASTRUCTURE_VIEW_COST :{WHITE}{1:CURRENCY_LONG}/år ({0:COMMA}) STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL :{WHITE}{CURRENCY_LONG}/år # Industry directory @@ -2800,6 +3155,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} @@ -2868,6 +3224,7 @@ 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_GROUP_ADD_SHARED_VEHICLE :Legg til delte køyretøy STR_GROUP_REMOVE_ALL_VEHICLES :Fjern alle køyretøy @@ -3038,9 +3395,12 @@ STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Vel loko STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Vel den nye typen lokomotiv du vil at skal ta over for den du har vald til venstre STR_REPLACE_VEHICLES_START :{BLACK}Start utskiftinga av køyretøy +STR_REPLACE_VEHICLES_NOW :Forny alle køyretøya no +STR_REPLACE_VEHICLES_WHEN_OLD :Berre forny gamle køyretøy 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 @@ -3160,6 +3520,11 @@ STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Vedlikeh STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Auk vedlikehaldsintervall med 10. CTRL+klikk aukar vedlikehaldsintervallet med 5 STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Minsk vedlikehaldsintervall av tog med 10. CTRL+klikk minskar intervallet med 5 +STR_SERVICE_INTERVAL_DROPDOWN_TOOLTIP :{BLACK}Eining for vedlikehaldsintervall +STR_VEHICLE_DETAILS_DEFAULT :Standard +STR_VEHICLE_DETAILS_DAYS :Dagar +STR_VEHICLE_DETAILS_PERCENT :Prosent + STR_QUERY_RENAME_TRAIN_CAPTION :{WHITE}Namngje tog STR_QUERY_RENAME_ROAD_VEHICLE_CAPTION :{WHITE}Namngje køyretøy STR_QUERY_RENAME_SHIP_CAPTION :{WHITE}Namngje skip @@ -3395,7 +3760,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 ein startdato for denne rutetabellen +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 @@ -3509,6 +3874,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 @@ -3531,6 +3898,10 @@ STR_INCOME_FLOAT_INCOME_SMALL :{TINY_FONT}{GRE STR_INCOME_FLOAT_INCOME :{GREEN}Inntekt: {CURRENCY_LONG} STR_FEEDER_TINY :{TINY_FONT}{YELLOW}Overføring: {CURRENCY_LONG} STR_FEEDER :{YELLOW}Overføring: {CURRENCY_LONG} +STR_FEEDER_INCOME_TINY :{TINY_FONT}{YELLOW}Overføring: {CURRENCY_LONG}{WHITE} / {GREEN}Inntekt: {CURRENCY_LONG} +STR_FEEDER_INCOME :{YELLOW}Overføring: {CURRENCY_LONG}{WHITE} / {GREEN}Inntekt: {CURRENCY_LONG} +STR_FEEDER_COST_TINY :{TINY_FONT}{YELLOW}Overføring: {CURRENCY_LONG}{WHITE} / {RED}Kostnad: {CURRENCY_LONG} +STR_FEEDER_COST :{YELLOW}Overføring: {CURRENCY_LONG}{WHITE} / {RED}Kostnad: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_COST :{WHITE}Berekna kostnad: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Berekna inntekt: {CURRENCY_LONG} @@ -3571,6 +3942,8 @@ STR_WARNING_HEIGHTMAP_SCALE_MESSAGE :{YELLOW}Å endr STR_WARNING_FALLBACK_SOUNDSET :{WHITE}Kun eit reservelydsett ble funne. Hvis du vil ha lyder, installer eit lydsett via innhaldsnedlastinga # Screenshot related messages +STR_WARNING_SCREENSHOT_SIZE_CAPTION :{WHITE}Stort skjermskudd +STR_WARNING_SCREENSHOT_SIZE_MESSAGE :{YELLOW}Skjermskuddet får ei oppløysing på {COMMA} x {COMMA} pikslar. Det kan ta litt tid. Vil du fortsette? STR_MESSAGE_SCREENSHOT_SUCCESSFULLY :{WHITE}Skjermdumpen vart lagra som '{STRING}' STR_ERROR_SCREENSHOT_FAILED :{WHITE}Skjermdump gjekk gale! @@ -3594,6 +3967,7 @@ STR_ERROR_OWNED_BY :{WHITE}... eigd STR_ERROR_AREA_IS_OWNED_BY_ANOTHER :{WHITE}... feltet er eigd av eit anna firma STR_ERROR_TERRAFORM_LIMIT_REACHED :{WHITE}... landskapningsgrense nådd STR_ERROR_CLEARING_LIMIT_REACHED :{WHITE}... rutetømminga si grense er nådd +STR_ERROR_TREE_PLANT_LIMIT_REACHED :{WHITE}... øvre grense for antal tre er nådd STR_ERROR_NAME_MUST_BE_UNIQUE :{WHITE}Namnet må vera unikt STR_ERROR_GENERIC_OBJECT_IN_THE_WAY :{WHITE}{1:STRING} er i vegen STR_ERROR_NOT_ALLOWED_WHILE_PAUSED :{WHITE}Ikkje tillet når spelet er pausa @@ -3627,7 +4001,7 @@ STR_ERROR_CAN_T_BUY_COMPANY :{WHITE}Kan ikkj STR_ERROR_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}Kan ikkje byggje hovudkontor... STR_ERROR_CAN_T_BUY_25_SHARE_IN_THIS :{WHITE}Kan ikkje kjøpa 25{NBSP}% av aksjane... STR_ERROR_CAN_T_SELL_25_SHARE_IN :{WHITE}Kan ikkje selja 25{NBSP}% av aksjane... -STR_ERROR_PROTECTED :{WHITE}Dette selskapet sel ikkje aksjer enno... +STR_ERROR_PROTECTED :{WHITE}Det her firmaet sel ikkje aksjer enno... # Town related errors STR_ERROR_CAN_T_GENERATE_TOWN :{WHITE}Kan ikkje byggje nokon byar @@ -3655,6 +4029,7 @@ STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS_WITH_POPULATION_OF_1200 :{WHITE}... kan STR_ERROR_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}... kan berre byggjast i regnskogområde STR_ERROR_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}... kan berre byggjast i ørkenområde STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}... kan berre byggjast i byar +STR_ERROR_CAN_ONLY_BE_BUILT_NEAR_TOWN_CENTER :{WHITE}... kan berre byggjast i nærleiken av bysentrum STR_ERROR_CAN_ONLY_BE_BUILT_IN_LOW_AREAS :{WHITE}... kan berre byggjast i lavtliggande område STR_ERROR_CAN_ONLY_BE_POSITIONED :{WHITE}... kan berre plasserast nær kanten på kartet STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... skog kan berre plantast over snøgrensa @@ -3878,6 +4253,11 @@ 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... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Kan ikkje snu toget... @@ -3920,6 +4300,16 @@ STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}Kan ikkj # Translatable comment for OpenTTD's desktop shortcut STR_DESKTOP_SHORTCUT_COMMENT :Eit simulatorspel basert på Transport Tycoon Deluxe +# Translatable descriptions in media/baseset/*.ob* files +STR_BASEGRAPHICS_DOS_DESCRIPTION :Original grafikk frå Transport Tycoon Deluxe for DOS. +STR_BASEGRAPHICS_DOS_DE_DESCRIPTION :Original grafikk frå Transport Tycoon Deluxe for DOS (tysk). +STR_BASEGRAPHICS_WIN_DESCRIPTION :Original grafikk frå Transport Tycoon Deluxe for Windows. +STR_BASESOUNDS_DOS_DESCRIPTION :Originale lydar frå Transport Tycoon Deluxe for DOS. +STR_BASESOUNDS_WIN_DESCRIPTION :Originale lydar frå Transport Tycoon Deluxe for Windows. +STR_BASESOUNDS_NONE_DESCRIPTION :Ei lydpakke utan nokon lydar. +STR_BASEMUSIC_WIN_DESCRIPTION :Original musikk frå Transport Tycoon Deluxe for Windows. +STR_BASEMUSIC_NONE_DESCRIPTION :Ei musikkpakke utan noko musikk. + ##id 0x2000 # Town building names STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1 :Høghus @@ -4042,7 +4432,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) @@ -4249,10 +4639,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 @@ -4366,8 +4756,9 @@ 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_SPACE_STRING :{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} @@ -4391,9 +4782,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 e4aafcd77..37e972e1a 100644 --- a/src/lang/polish.txt +++ b/src/lang/polish.txt @@ -485,7 +485,7 @@ STR_QUANTITY_FRUIT :{WEIGHT_LONG} o STR_QUANTITY_DIAMONDS :{COMMA} 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} 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 @@ -498,7 +498,7 @@ STR_QUANTITY_BUBBLES :{COMMA} bąbel{ STR_QUANTITY_TOFFEE :{WEIGHT_LONG} toffi STR_QUANTITY_BATTERIES :{COMMA} bateri{P a e i} STR_QUANTITY_PLASTIC :{VOLUME_LONG} plastiku -STR_QUANTITY_FIZZY_DRINKS :{COMMA} napo{P j je i} gazowan{P y e ych} +STR_QUANTITY_FIZZY_DRINKS :{COMMA} nap{P ój oje ojów} gazowan{P y e ych} STR_QUANTITY_N_A :N/D # Two letter abbreviation of cargo name @@ -546,8 +546,8 @@ 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 "" ów ów} +STR_TONS :{COMMA} ton{P a y ""} +STR_LITERS :{COMMA} litr{P "" y ów} STR_ITEMS :{COMMA} sztuk{P a i ""} STR_CRATES :{COMMA} skrzy{P nia nie ń} @@ -578,29 +578,37 @@ 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 y ""} STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} ton{P a y ""} 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 "" y ów} STR_UNITS_VOLUME_LONG_METRIC :{COMMA} litr{P "" y ów} 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} stopy +STR_UNITS_HEIGHT_IMPERIAL :{COMMA} st{P opa opy óp} +STR_UNITS_HEIGHT_METRIC :{COMMA} m STR_UNITS_HEIGHT_SI :{COMMA} 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 kluczowe dla listy filtru +STR_LIST_FILTER_TOOLTIP :{BLACK}Wpisz słowo, wg którego filtrować listę -STR_TOOLTIP_SORT_ORDER :{BLACK}Wybierz porządek sortowania (malejąco/rosnąco) +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 STR_BUTTON_SORT_BY :{BLACK}Sortuj wg @@ -608,12 +616,13 @@ STR_BUTTON_LOCATION :{BLACK}Położe STR_BUTTON_RENAME :{BLACK}Zmień nazwę STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Zamknij okno -STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Tytuł okna - przeciągnij aby przesunąć okno +STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Tytuł okna - przeciągnij, aby przesunąć okno STR_TOOLTIP_SHADE :{BLACK}Zwiń okno - pokaż tylko nagłówek -STR_TOOLTIP_DEBUG :{BLACK}Pokaż informacje debugerra z NewGRF -STR_TOOLTIP_STICKY :{BLACK}Zaznacza to okno jako niezamykane dla funkcji 'Zamknij wszystkie okna' -STR_TOOLTIP_RESIZE :{BLACK}Kliknij i przeciągnij by zmienić rozmiar okna -STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Przełącz duży/mały rozmiar okna +STR_TOOLTIP_DEBUG :{BLACK}Pokaż informacje debugerra NewGRF +STR_TOOLTIP_DEFSIZE :{BLACK}Zmień rozmiar okna na domyślny. Ctrl+klik zapisze obecne wymiary jako domyślne +STR_TOOLTIP_STICKY :{BLACK}Zaznacz to okno jako niezamykalne przyciskiem 'Zamknij Wszystkie Okna'. Ctrl+klik dodatkowo zapisze to ustawienie jako domyślne +STR_TOOLTIP_RESIZE :{BLACK}Kliknij i przeciągnij, by zmienić rozmiar okna +STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Przełącz na duży/mały rozmiar okna STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Suwak - przesuwa listę w górę/w dół 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 @@ -635,7 +644,6 @@ STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}Obszar: # These are used in buttons -STR_SORT_BY_CAPTION_POPULATION :{BLACK}Populacja STR_SORT_BY_CAPTION_NAME :{BLACK}Nazwa STR_SORT_BY_CAPTION_DATE :{BLACK}Data # These are used in dropdowns @@ -648,7 +656,7 @@ STR_SORT_BY_PROFIT_LAST_YEAR :Zysk w ostatnim STR_SORT_BY_PROFIT_THIS_YEAR :Zysk w tym roku STR_SORT_BY_AGE :Wiek STR_SORT_BY_RELIABILITY :Niezawodność -STR_SORT_BY_TOTAL_CAPACITY_PER_CARGOTYPE :Całkowita ładowność typu ładunku +STR_SORT_BY_TOTAL_CAPACITY_PER_CARGOTYPE :Całkowita ładowność po typie ładunku STR_SORT_BY_MAX_SPEED :Prędkość maksymalna STR_SORT_BY_MODEL :Model STR_SORT_BY_VALUE :Wartość @@ -656,10 +664,11 @@ STR_SORT_BY_LENGTH :Długość STR_SORT_BY_LIFE_TIME :Pozostały czas życia STR_SORT_BY_TIMETABLE_DELAY :Opóźnienie rozkładu jazdy STR_SORT_BY_FACILITY :Typ stacji -STR_SORT_BY_WAITING :Wartość czekającego ładunku -STR_SORT_BY_RATING_MAX :Towar najwyższej wartości -STR_SORT_BY_RATING_MIN :Towar najniższej wartości -STR_SORT_BY_ENGINE_ID :ID pojazdu +STR_SORT_BY_WAITING_TOTAL :Cały czekający ładunek +STR_SORT_BY_WAITING_AVAILABLE :Dostępny czekający ładunek +STR_SORT_BY_RATING_MAX :Towar najwyżej oceniany +STR_SORT_BY_RATING_MIN :Towar najniżej oceniany +STR_SORT_BY_ENGINE_ID :ID pojazdu (klasyczne sortowanie) STR_SORT_BY_COST :Cena STR_SORT_BY_POWER :Moc STR_SORT_BY_TRACTIVE_EFFORT :Siła pociągowa @@ -668,6 +677,8 @@ STR_SORT_BY_RUNNING_COST :Koszt utrzymani STR_SORT_BY_POWER_VS_RUNNING_COST :Moc/Koszt utrzymania STR_SORT_BY_CARGO_CAPACITY :Ładowność STR_SORT_BY_RANGE :Zasięg +STR_SORT_BY_POPULATION :Liczba mieszkańców +STR_SORT_BY_RATING :Ocena # Tooltips for the main toolbar STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Pauza @@ -680,11 +691,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 @@ -750,19 +763,19 @@ STR_FILE_MENU_SEPARATOR : STR_FILE_MENU_EXIT :Wyjście ############ range ends here -############ range for map menu starts +# map menu STR_MAP_MENU_MAP_OF_WORLD :Mapa świata STR_MAP_MENU_EXTRA_VIEW_PORT :Dodatkowy podgląd +STR_MAP_MENU_LINGRAPH_LEGEND :Legenda przepływu towarów STR_MAP_MENU_SIGN_LIST :Lista napisów -############ range for town menu starts, yet the town directory is shown in the map menu in the scenario editor + +############ range for town menu starts STR_TOWN_MENU_TOWN_DIRECTORY :Lista miast -############ end of the 'Display map' dropdown STR_TOWN_MENU_FOUND_TOWN :Załóż miasto -############ end of the 'Town' dropdown +############ range ends here ############ range for subsidies menu starts STR_SUBSIDIES_MENU_SUBSIDIES :Subsydia -STR_SUBSIDIES_MENU_GOAL :Bieżące cele ############ range ends here ############ range for graph menu starts @@ -787,15 +800,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 @@ -827,62 +840,80 @@ STR_ABOUT_MENU_SEPARATOR : STR_ABOUT_MENU_TOGGLE_CONSOLE :Przełącz konsolę STR_ABOUT_MENU_AI_DEBUG :Debugowanie SI / Game Script STR_ABOUT_MENU_SCREENSHOT :Zrzut ekranu -STR_ABOUT_MENU_ZOOMIN_SCREENSHOT :Pełne przybliżenie na screenshocie -STR_ABOUT_MENU_DEFAULTZOOM_SCREENSHOT :Screenshot z przybliżeniem domyślnym +STR_ABOUT_MENU_ZOOMIN_SCREENSHOT :Zrzut ekranu z pełnym przybliżeniem +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 @@ -1029,7 +1060,7 @@ STR_HIGHSCORE_PERFORMANCE_TITLE_CAPITALIST :Kapitalista STR_HIGHSCORE_PERFORMANCE_TITLE_MAGNATE :Magnat STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL :Potentat STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY :Tycoon Stulecia -STR_HIGHSCORE_NAME :{BIG_FONT}{PRESIDENT_NAME}, {COMPANY} +STR_HIGHSCORE_NAME :{PRESIDENT_NAME}, {COMPANY} STR_HIGHSCORE_STATS :{BIG_FONT}'{STRING}' ({COMMA}) STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{BLACK}{COMPANY} osiąga status: '{STRING}'! STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{WHITE}{PRESIDENT_NAME} z {COMPANY} osiągnęło status '{STRING}'! @@ -1040,17 +1071,20 @@ STR_SMALLMAP_CAPTION :{WHITE}Mapa - { STR_SMALLMAP_TYPE_CONTOURS :Ukształtowanie STR_SMALLMAP_TYPE_VEHICLES :Pojazdy STR_SMALLMAP_TYPE_INDUSTRIES :Przedsiębiorstwa +STR_SMALLMAP_TYPE_ROUTEMAP :Przepływ towarów STR_SMALLMAP_TYPE_ROUTES :Trasy STR_SMALLMAP_TYPE_VEGETATION :Roślinność STR_SMALLMAP_TYPE_OWNERS :Właściciele STR_SMALLMAP_TOOLTIP_SHOW_LAND_CONTOURS_ON_MAP :{BLACK}Pokaż zarysy lądu na mapie STR_SMALLMAP_TOOLTIP_SHOW_VEHICLES_ON_MAP :{BLACK}Pokaż pojazdy na mapie STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRIES_ON_MAP :{BLACK}Pokaż przedsiębiorstwa na mapie +STR_SMALLMAP_TOOLTIP_SHOW_LINK_STATS_ON_MAP :{BLACK}Pokaż przepływ towarów na mapie STR_SMALLMAP_TOOLTIP_SHOW_TRANSPORT_ROUTES_ON :{BLACK}Pokaż drogi na mapie STR_SMALLMAP_TOOLTIP_SHOW_VEGETATION_ON_MAP :{BLACK}Pokaż roślinność na mapie STR_SMALLMAP_TOOLTIP_SHOW_LAND_OWNERS_ON_MAP :{BLACK}Pokaż teren mający właściciela STR_SMALLMAP_TOOLTIP_INDUSTRY_SELECTION :{BLACK}Klik na typie przedsiębiorstwa żeby przełączyć jego wyświetlanie. Ctrl+klik wyłącza wszystkie typy prócz wybranego. Ponowne Ctrl+klik włącza wszystkie typy przedsiębiorstw STR_SMALLMAP_TOOLTIP_COMPANY_SELECTION :{BLACK}Klik na firmie żeby wyświetlić jej posiadłości. Ctrl+klik wyłącza wszystkie firmy prócz wybranej. Ponowne Ctrl+klik włącza wszystkie firmy +STR_SMALLMAP_TOOLTIP_CARGO_SELECTION :{BLACK}Kliknij towar by przełączać wyświetlanie jego własności. Ctrl+klik wyłącza wszystkie towary oprócz zaznaczonego. Ponowny Ctrl+klik na nim włącza wszystkie towary STR_SMALLMAP_LEGENDA_ROADS :{TINY_FONT}{BLACK}Drogi STR_SMALLMAP_LEGENDA_RAILROADS :{TINY_FONT}{BLACK}Koleje @@ -1058,7 +1092,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 @@ -1085,6 +1119,7 @@ STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLA STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Pokaż nazwy miast na mapie STR_SMALLMAP_CENTER :{BLACK}Wyśrodkuj mapę na aktualnej lokalizacji 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}Wyłącz wszystko @@ -1095,6 +1130,8 @@ STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES :{BLACK}Pokaż w STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}Przełącz wyświetlanie mapy wysokości STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES :{BLACK}Nie wyświetlaj posiadłości firmy na mapie STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}Wyświetl wszystkie posiadłości firmy na mapie +STR_SMALLMAP_TOOLTIP_DISABLE_ALL_CARGOS :{BLACK}Nie wyświetlaj towarów na mapie +STR_SMALLMAP_TOOLTIP_ENABLE_ALL_CARGOS :{BLACK}Wyświetl wszystkie towary na mapie # Status bar messages STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Pokaż ostatnią wiadomość lub ogłoszenie @@ -1126,7 +1163,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}! @@ -1140,7 +1177,7 @@ STR_NEWS_COMPANY_MERGER_DESCRIPTION :{BIG_FONT}{BLAC STR_NEWS_COMPANY_BANKRUPT_TITLE :{BIG_FONT}{BLACK}Bankrut! STR_NEWS_COMPANY_BANKRUPT_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} zostaje zamknięty przez wierzycieli i wszystkie udziały zostają sprzedane! STR_NEWS_COMPANY_LAUNCH_TITLE :{BIG_FONT}{BLACK}Nowa firma rozpoczęła działalność! -STR_NEWS_COMPANY_LAUNCH_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} rozpoczyna budowę niedaleko {TOWN}! +STR_NEWS_COMPANY_LAUNCH_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} rozpoczyna budowę w pobliżu miasta {TOWN}! STR_NEWS_MERGER_TAKEOVER_TITLE :{BIG_FONT}{BLACK}{STRING} zostało przejęte przez {STRING}! STR_PRESIDENT_NAME_MANAGER :{BLACK}{PRESIDENT_NAME}{}(Prezes) @@ -1166,18 +1203,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 @@ -1256,19 +1292,16 @@ STR_GAME_OPTIONS_CURRENCY_LTL :Lit litewski (L STR_GAME_OPTIONS_CURRENCY_KRW :Won południowokoreański (KRW) STR_GAME_OPTIONS_CURRENCY_ZAR :Rand Południowej Afryki (ZAR) STR_GAME_OPTIONS_CURRENCY_CUSTOM :Własna... +STR_GAME_OPTIONS_CURRENCY_GEL :Lari gruzińskie (GEL) +STR_GAME_OPTIONS_CURRENCY_IRR :Rial irański (IRR) ############ end of currency region -STR_GAME_OPTIONS_MEASURING_UNITS_FRAME :{BLACK}Jednostki miar -STR_GAME_OPTIONS_MEASURING_UNITS_DROPDOWN_TOOLTIP :{BLACK}Wybór jednostek miar ############ start of measuring units region -STR_GAME_OPTIONS_MEASURING_UNITS_IMPERIAL :Anglosaskie -STR_GAME_OPTIONS_MEASURING_UNITS_METRIC :Metryczne -STR_GAME_OPTIONS_MEASURING_UNITS_SI :SI ############ 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 @@ -1300,13 +1333,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 @@ -1318,9 +1353,6 @@ 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_BASE_GRF :{BLACK}Podstawowy zestaw grafik STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Wybierz podstawowy zestaw grafik do użycia STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} brak/uszkodzony plik{P "" i ów} @@ -1335,15 +1367,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 @@ -1353,21 +1386,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 @@ -1395,10 +1428,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 @@ -1412,7 +1445,7 @@ STR_SUBSIDY_X4 :x4 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órski +STR_TERRAIN_TYPE_MOUNTAINOUS :Górzysty STR_CITY_APPROVAL_PERMISSIVE :Przyjazne STR_CITY_APPROVAL_TOLERANT :Tolerancyjne @@ -1434,8 +1467,9 @@ 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_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 :Ustawienia podstawowe STR_CONFIG_SETTING_RESTRICT_ADVANCED :Ustawienia zaawansowane STR_CONFIG_SETTING_RESTRICT_ALL :Ustawienia eksperta / wszystkie ustawienia @@ -1443,12 +1477,16 @@ STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :Ustawienie z in 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ł. @@ -1469,7 +1507,7 @@ STR_CONFIG_SETTING_HORIZONTAL_POS_RIGHT :z prawej strony STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN :Maksymalna wysokość początkowej pożyczki: {STRING} STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Maksymalna wysokość pożyczki jaką firma może zaciągnąć (nie uwzględnia inflacji) STR_CONFIG_SETTING_INTEREST_RATE :Oprocentowanie: {STRING} -STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Oprocentowanie pożyczki; kontroluje też inflację jeśli włączona +STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Oprocentowanie pożyczki; kontroluje też inflację, jeśli jest włączona STR_CONFIG_SETTING_RUNNING_COSTS :Koszty amortyzacji: {STRING} STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT :Ustaw poziom kosztów utrzymania i amortyzacji pojazdów i infrastruktury STR_CONFIG_SETTING_CONSTRUCTION_SPEED :Szybkość budowy: {STRING} @@ -1489,9 +1527,7 @@ 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_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 @@ -1515,14 +1551,8 @@ 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_TUNNEL_LENGTH :Maksymalna długość tunelu: {STRING} @@ -1550,8 +1580,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 @@ -1582,10 +1610,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 @@ -1593,7 +1617,7 @@ STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :Kiedy włączon STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :Pozwól budować stare lotniska: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS_HELPTEXT :Włączona opcja sprawia, że każdy typ lotniska będzie dostępny na zawsze od chwili wprowadzenia -STR_CONFIG_SETTING_WARN_LOST_VEHICLE :Ostrzeż, jeśli pojazd zostanie utracony: {STRING} +STR_CONFIG_SETTING_WARN_LOST_VEHICLE :Ostrzeż, jeśli pojazd się zgubi: {STRING} STR_CONFIG_SETTING_WARN_LOST_VEHICLE_HELPTEXT :Pokazuj wiadomości o pojazdach, które nie są w stanie znaleźć ścieżki do swoich wyznaczonych celów STR_CONFIG_SETTING_ORDER_REVIEW :Kontroluj polecenia pojazdów: {STRING} STR_CONFIG_SETTING_ORDER_REVIEW_HELPTEXT :Kiedy włączone, rozkazy wszystkich pojazdów są sprawdzane co jakiś czas, a wykryte nieprawidłowości są zgłaszane w oknach wiadomości @@ -1624,27 +1648,41 @@ STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :Wyświetlaj pop 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ą @@ -1673,7 +1711,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ł. @@ -1695,17 +1733,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} @@ -1723,8 +1759,8 @@ STR_CONFIG_SETTING_TIMETABLE_IN_TICKS_HELPTEXT :W tabelach czas STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE :Pokazuj przyjazdy i odjazdy w rozkładach: {STRING} 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 :Wybierz opcję 'idź do' automatycznie po otwarciu okna rozkazów -STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE :Domyślny typ torowiska: {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 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 @@ -1741,9 +1777,9 @@ STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :Odtwarzaj dźwi STR_CONFIG_SETTING_SOUND_NEWS :Gazeta: {STRING} STR_CONFIG_SETTING_SOUND_NEWS_HELPTEXT :Odtwarzaj dźwięk po wyświetleniu gazety STR_CONFIG_SETTING_SOUND_NEW_YEAR :Koniec roku: {STRING} -STR_CONFIG_SETTING_SOUND_NEW_YEAR_HELPTEXT :Odtwarzaj dźwięk na koniec roku podsumowując roczne postępy przedsiębiorstwa w porównaniu do roku poprzedniego +STR_CONFIG_SETTING_SOUND_NEW_YEAR_HELPTEXT :Odtwarzaj dźwięk na koniec roku podsumowując roczną sytuację przedsiębiorstwa w porównaniu do roku poprzedniego STR_CONFIG_SETTING_SOUND_CONFIRM :Budowa: {STRING} -STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT :Odtwarzaj efekt dźwiękowy po udanej konstrukcji lub innych czynnościach +STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT :Odtwarzaj dźwięk po udanej budowie lub innych działaniach STR_CONFIG_SETTING_SOUND_CLICK :Kliknięcia: {STRING} STR_CONFIG_SETTING_SOUND_CLICK_HELPTEXT :Dźwięk przy kliknięciach STR_CONFIG_SETTING_SOUND_DISASTER :Wypadki/katastrofy: {STRING} @@ -1759,9 +1795,9 @@ STR_CONFIG_SETTING_MAX_TRAINS :Maks. liczba po 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_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} @@ -1816,7 +1852,7 @@ STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN_HELPTEXT :Wyświetl wiado STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE :Zamknięcie przedsiębiorstw: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE_HELPTEXT :Wyświetl wiadomość w gazecie kiedy przedsiębiorstwa są likwidowane STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES :Zmiany ekonomiczne: {STRING} -STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES_HELPTEXT :Wyświetl wiadomość w gazecie o globalbych zmianach ekonomicznych +STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES_HELPTEXT :Wyświetl wiadomość w gazecie o globalnych zmianach w ekonomii STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY :Zmiany w produkcji przedsiębiorstw obsługiwanych przez firmę: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY_HELPTEXT :Wyświetl wiadomość w gazecie kiedy zmieniają się poziomy produkcji przedsiębiorstw, które są obsługiwane przez firmę STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER :Zmiany w produkcji przedsiębiorstw obsługiwanych przez przeciwników: {STRING} @@ -1828,7 +1864,7 @@ STR_CONFIG_SETTING_NEWS_ADVICE_HELPTEXT :Wyświetl wiado STR_CONFIG_SETTING_NEWS_NEW_VEHICLES :Nowe pojazdy: {STRING} STR_CONFIG_SETTING_NEWS_NEW_VEHICLES_HELPTEXT :Wyświetl wiadomość w gazecie o dostępnym nowym typie pojazdu STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE :Zmiany w akceptowaniu ładunku: {STRING} -STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE_HELPTEXT :Wyświetl wiadomość o zmianach w akceptowaniu towarów przez stacje +STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE_HELPTEXT :Wyświetlaj wiadomości o zmianach w akceptowaniu towarów przez stacje STR_CONFIG_SETTING_NEWS_SUBSIDIES :Subsydia: {STRING} STR_CONFIG_SETTING_NEWS_SUBSIDIES_HELPTEXT :Wyświetl wiadomość w gazecie o wydarzeniach związanych z subsydiami STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION :Ogólne informacje: {STRING} @@ -1879,7 +1915,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 @@ -1927,28 +1963,90 @@ 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_GUI :{ORANGE}Interfejs -STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}Konstrukcje +STR_CONFIG_SETTING_LINKGRAPH_INTERVAL :Aktualizuj wykres dystrybucji co {STRING} {P 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} {P 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 +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_IMPERIAL :Imperialne (mph) +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 :Kiedy ciężar jest pokazywany w interfejsie użytkownika, wyświetl go 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 objętości: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_HELPTEXT :Kiedy objętość pokazywana jest 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 :Pokaż siłę napędową 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) + +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 :Metryczne (m) +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI (m) + +STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Lokalizacja +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_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 @@ -1982,6 +2080,8 @@ STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_ALGORITHM :{WHITE}... form STR_CONFIG_ERROR_INVALID_BASE_GRAPHICS_NOT_FOUND :{WHITE}... ignoruję zestaw Base Graphics '{STRING}': nie odnaleziono STR_CONFIG_ERROR_INVALID_BASE_SOUNDS_NOT_FOUND :{WHITE}... ignoruję zestaw Base Sounds '{STRING}': nie odnaleziono STR_CONFIG_ERROR_INVALID_BASE_MUSIC_NOT_FOUND :{WHITE}... ignoruję zestaw Base Music '{STRING}': nie odnaleziono +STR_CONFIG_ERROR_OUT_OF_MEMORY :{WHITE}Brak pamięci +STR_CONFIG_ERROR_SPRITECACHE_TOO_BIG :{WHITE}Nie powiodła się rezerwacja pamięci cache dla sprite'ów od wielkości {BYTES}. Pamięć cache sprite'ów została zredukowana do {BYTES}. Obniży to wydajność OpenTTD. By zmniejszyć zapotrzebowanie pamięci, możesz spróbować wyłączyć grafikę 32bpp i/lub poziomy zbliżenia # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} @@ -2068,7 +2168,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 @@ -2103,6 +2203,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 @@ -2158,10 +2259,10 @@ STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}Zmień k # Network server list STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}Gra wieloosobowa -STR_NETWORK_SERVER_LIST_CONNECTION :{BLACK}Połączenie: -STR_NETWORK_SERVER_LIST_CONNECTION_TOOLTIP :{BLACK}Wybierz między grą w internecie a grą w sieci lokalnej -STR_NETWORK_SERVER_LIST_LAN :LAN -STR_NETWORK_SERVER_LIST_INTERNET :Internet +STR_NETWORK_SERVER_LIST_ADVERTISED :{BLACK}Reklamowany +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 STR_NETWORK_SERVER_LIST_PLAYER_NAME :{BLACK}Nazwa gracza: STR_NETWORK_SERVER_LIST_ENTER_NAME_TOOLTIP :{BLACK}To jest nazwa pod którą będą Cię widzieć inni gracze @@ -2220,16 +2321,16 @@ STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP :{BLACK}Nazwa gr STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}Ustaw hasło STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Zabezpiecz grę hasłem jeśli nie chcesz, by była publicznie dostępna -STR_NETWORK_START_SERVER_LAN_INTERNET :LAN / Internet -STR_NETWORK_START_SERVER_INTERNET_ADVERTISE :Internet (publiczny) +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 @@ -2277,10 +2378,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} @@ -2296,7 +2397,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ą @@ -2342,6 +2443,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 @@ -2460,6 +2562,10 @@ STR_CONTENT_SELECT_UPDATES_CAPTION :{BLACK}Wybierz STR_CONTENT_SELECT_UPDATES_CAPTION_TOOLTIP :{BLACK}Wybierz całą zawartość do pobrania, która jest ulepszeniem dla istniejącej zawartości STR_CONTENT_UNSELECT_ALL_CAPTION :{BLACK}Odznacz wszystko STR_CONTENT_UNSELECT_ALL_CAPTION_TOOLTIP :{BLACK}Zaznacz całą zawartość, aby nie była pobrana +STR_CONTENT_SEARCH_EXTERNAL :{BLACK}Przeszukaj zewnętrzne strony internetowe +STR_CONTENT_SEARCH_EXTERNAL_TOOLTIP :{BLACK}Przeszukaj dodatki niedostępne w serwisie OpenTTD na stronach nie współpracujących z OpenTTD +STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER_CAPTION :{WHITE}Opuszczasz OpenTTD! +STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER :{WHITE}Warunki pobierania dodatków z zewnętrznych stron internetowych są inne.{}Będziesz musiał(a) odnieść się do zewnętrznych stron w celu uzyskania wskazówek dotyczących instalacji dodatku w OpenTTD.{}Czy chcesz kontynuować? STR_CONTENT_FILTER_TITLE :{BLACK}Filtr etykiety/nazwy: STR_CONTENT_OPEN_URL :{BLACK}Wejdź na stronę STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}Wejdź na stronę, by pobrać tę zawartość @@ -2482,7 +2588,7 @@ STR_CONTENT_DETAIL_FILESIZE :{SILVER}Rozmiar STR_CONTENT_DETAIL_SELECTED_BECAUSE_OF :{SILVER}Zaznaczono z powodu: {WHITE}{STRING} STR_CONTENT_DETAIL_DEPENDENCIES :{SILVER}Zależności: {WHITE}{STRING} STR_CONTENT_DETAIL_TAGS :{SILVER}Tagi: {WHITE}{STRING} -STR_CONTENT_NO_ZLIB :{WHITE}Open TTD nie obsługuje "zlib"... +STR_CONTENT_NO_ZLIB :{WHITE}OpenTTD jest zbudowany bez wsparcia dla "zlib"... STR_CONTENT_NO_ZLIB_SUB :{WHITE}... pobieranie zawartości nie jest możliwe! # Order of these is important! @@ -2529,6 +2635,17 @@ STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}Przełą STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Przełącz przeźroczystość dla wskaźników załadunku. Ctrl+klik, aby zablokować STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}Ustaw obiekty jako niewidoczne zamiast przeźroczyste +# Linkgraph legend window +STR_LINKGRAPH_LEGEND_CAPTION :{BLACK}Legenda przepływu towarów +STR_LINKGRAPH_LEGEND_ALL :{BLACK}Wszystkie +STR_LINKGRAPH_LEGEND_NONE :{BLACK}Żadne +STR_LINKGRAPH_LEGEND_SELECT_COMPANIES :{BLACK}Wybierz firmy, które mają być wyświetlane + +# Linkgraph legend window and linkgraph legend in smallmap +STR_LINKGRAPH_LEGEND_UNUSED :{TINY_FONT}{BLACK}nieużywany +STR_LINKGRAPH_LEGEND_SATURATED :{TINY_FONT}{BLACK}nasycony +STR_LINKGRAPH_LEGEND_OVERLOADED :{TINY_FONT}{BLACK}przeładowany + # Base for station construction window(s) STR_STATION_BUILD_COVERAGE_AREA_TITLE :{BLACK}Podświetlaj zasięg STR_STATION_BUILD_COVERAGE_OFF :{BLACK}Wył. @@ -2546,14 +2663,14 @@ 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 @@ -2568,8 +2685,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 @@ -2594,19 +2711,19 @@ 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_ENTRY_TOOLTIP :{BLACK}Sygnalizator wejściowy (semafor){}Zielony, póki choć jeden sygnalizator wyjściowy dla kolejnego odcinka trasy jest zielony. W przeciwnym przypadku czerwony -STR_BUILD_SIGNAL_SEMAPHORE_EXIT_TOOLTIP :{BLACK}Sygnalizator wyjściowy (semafor){}Zachowuje się jak sygnalizator bloku, 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 jest kombinacją 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_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 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 bloku, 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 jest kombinacją sygnalizatorów wejściowych oraz wyjściowych. 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_CONVERT_TOOLTIP :{BLACK}Zamiana sygnałów{}Jeżeli włączone, kliknięcie na istniejący sygnał spowoduje zamianę jego typu na wybrany obok. CTRL-klik przełącza wygląd semafor/świetlny. Shift przełącza pomiędzy trybem budowania a szacowaniem jego kosztów +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 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 STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_INCREASE_TOOLTIP :{BLACK}Zwiększ gęstość sygnałów przy przeciąganiu @@ -2629,9 +2746,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 @@ -2646,7 +2763,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 @@ -2701,7 +2818,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 @@ -2733,7 +2850,7 @@ STR_PLANT_TREE_TOOLTIP :{BLACK}Wybierz STR_TREES_RANDOM_TYPE :{BLACK}Drzewa różnych rodzajów STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}Sadzenie drzew różnych rodzajów. Shift przełącza pomiędzy trybem sadzenia a szacowaniem jego kosztów STR_TREES_RANDOM_TREES_BUTTON :{BLACK}Losowe drzewa -STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Pokryj krajobraz losowymi drzewami +STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Pokryj losowo krajobraz drzewami # Land generation window (SE) STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}Tworzenie terenu @@ -2752,7 +2869,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 @@ -2830,7 +2947,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 @@ -2863,7 +2981,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 @@ -2898,7 +3016,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 @@ -2927,7 +3045,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-2012 Zespół OpenTTD +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2014 Zespół OpenTTD # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Zapisz grę @@ -2946,6 +3064,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} @@ -2955,23 +3074,20 @@ 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_SNOW_LINE_HEIGHT :{BLACK}Wysokość śniegu: +STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Liczba przedsiębiorstw: +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 @@ -2982,19 +3098,18 @@ STR_MAPGEN_NORTHWEST :{BLACK}Płn.-za STR_MAPGEN_NORTHEAST :{BLACK}Płn.-wsch. STR_MAPGEN_SOUTHEAST :{BLACK}Płd.-wsch. STR_MAPGEN_SOUTHWEST :{BLACK}Płd.-zach. -STR_MAPGEN_BORDER_FREEFORM :{BLACK}Dowolne +STR_MAPGEN_BORDER_FREEFORM :{BLACK}Ląd STR_MAPGEN_BORDER_WATER :{BLACK}Woda STR_MAPGEN_BORDER_RANDOM :{BLACK}Losowe STR_MAPGEN_BORDER_RANDOMIZE :{BLACK}Losowo -STR_MAPGEN_BORDER_MANUAL :{BLACK}"Ręcznie" +STR_MAPGEN_BORDER_MANUAL :{BLACK}Użytkownika STR_MAPGEN_HEIGHTMAP_ROTATION :{BLACK}Obrót mapy wysokości: STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Nazwa mapy wysokosci: 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_SNOW_LINE_QUERY_CAPT :{WHITE}Zmień wysokość śniegu +STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Zmień wysokość linii śniegowej STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Zmień datę rozpoczęcia # SE Map generation @@ -3013,7 +3128,7 @@ STR_GENERATION_WORLD :{WHITE}Tworzeni STR_GENERATION_ABORT :{BLACK}Przerwij STR_GENERATION_ABORT_CAPTION :{WHITE}Przerwij tworzenie świata STR_GENERATION_ABORT_MESSAGE :{YELLOW}Czy na pewno chcesz przerwać tworzenie? -STR_GENERATION_PROGRESS :{WHITE}Ukończono w {NUM} % +STR_GENERATION_PROGRESS :{WHITE}Ukończono w {NUM}% STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / {NUM} STR_GENERATION_WORLD_GENERATION :{BLACK}Tworzenie świata STR_GENERATION_RIVER_GENERATION :{BLACK}Generator rzek @@ -3048,7 +3163,9 @@ 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_FILE_TOOLTIP :{BLACK}Lista zainstalowanych plików NewGRF. +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 STR_NEWGRF_SETTINGS_SHOW_PARAMETERS :{BLACK}Pokaż parametry @@ -3056,7 +3173,7 @@ STR_NEWGRF_SETTINGS_TOGGLE_PALETTE :{BLACK}Zmień p STR_NEWGRF_SETTINGS_TOGGLE_PALETTE_TOOLTIP :{BLACK}Zmień paletę kolorów wybranego NewGRF.{}Zrób to gdy grafika tego NewGRF jest różowa STR_NEWGRF_SETTINGS_APPLY_CHANGES :{BLACK}Zastosuj zmiany -STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_BUTTON :{BLACK}Znajdź zgubiony dodatek online +STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_BUTTON :{BLACK}Znajdź brakujące dodatki online STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_TOOLTIP :{BLACK}Sprawdź czy zagubiony dodatek może być znaleziony online STR_NEWGRF_SETTINGS_FILENAME :{BLACK}Nazwa pliku: {SILVER}{STRING} @@ -3072,6 +3189,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 @@ -3142,6 +3269,7 @@ STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}Zamierz STR_NEWGRF_DUPLICATE_GRFID :{WHITE}Nie można dodać pliku: taki sam GRF ID STR_NEWGRF_COMPATIBLE_LOADED :{ORANGE}Nie znaleziono pasującego pliku (wczytano kompatybilny GRF) +STR_NEWGRF_TOO_MANY_NEWGRFS :{WHITE}Nie można dodać pliku: osiągnięto limit plików NewGRF STR_NEWGRF_COMPATIBLE_LOAD_WARNING :{WHITE}Wczytano kompatybilne GRF dla brakujących plików STR_NEWGRF_DISABLED_WARNING :{WHITE}Brakujące pliki GRF zostały wyłączone @@ -3156,8 +3284,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 @@ -3168,13 +3297,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 @@ -3204,9 +3336,9 @@ STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}Populacj STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}Pasażerów w zeszłym miesiącu: {ORANGE}{COMMA}{BLACK} maks: {ORANGE}{COMMA} STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}Poczta w zeszłym miesiącu: {ORANGE}{COMMA}{BLACK} maks: {ORANGE}{COMMA} STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}Towar potrzebny do rozwoju miasta: -STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{RED}Wymaganych {ORANGE}{STRING} +STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{RED}Wymagana {ORANGE}{STRING} STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} wymagane zimą -STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED_GENERAL :{G=m}{ORANGE}{STRING}{GREEN} dostarczony +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} @@ -3226,7 +3358,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: @@ -3237,7 +3369,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ą @@ -3253,12 +3385,16 @@ STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT :{YELLOW}Kup roc STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}Daj łapówkę lokalnym władzom, powiększ swoją ocenę, ryzykując poważne kary w razie złapania.{}Koszt: {CURRENCY_LONG} # Goal window -STR_GOALS_CAPTION :{WHITE}Cele +STR_GOALS_CAPTION :{WHITE}{COMPANY} Cele +STR_GOALS_SPECTATOR_CAPTION :{WHITE}Cele globalne STR_GOALS_GLOBAL_TITLE :{BLACK}Cele globalne: STR_GOALS_TEXT :{ORANGE}{STRING} STR_GOALS_NONE :{ORANGE}- Brak - +STR_GOALS_SPECTATOR_NONE :{ORANGE}- Nie dotyczy - +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 @@ -3295,6 +3431,18 @@ STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}Usługi STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING} z {STRING} do {STRING}{YELLOW} ({COMPANY}{YELLOW}, do {DATE_SHORT}) 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 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 STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}Przytrzymaj Ctrl, aby zaznaczyć więcej niż jedną opcję @@ -3308,9 +3456,9 @@ 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} skierowany z {STATION}) +STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} z {STATION}) +STR_STATION_VIEW_RESERVED :{YELLOW}({CARGO_SHORT} zarezerwowane do załadunku) STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Akceptuje STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Pokaż listę akceptowanych ładunków @@ -3321,8 +3469,31 @@ STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :Firma {YELLOW}{ STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Oceny STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Pokaż ocenę stacji -STR_STATION_VIEW_CARGO_RATINGS_TITLE :{BLACK}Lokalna ocena usług transportowych: -STR_STATION_VIEW_CARGO_RATING :{WHITE}{STRING}: {YELLOW}{STRING} ({COMMA}%) +STR_STATION_VIEW_SUPPLY_RATINGS_TITLE :{BLACK}Miesięczna dostawa i lokalna ocena: +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} +STR_STATION_VIEW_FROM_ANY :{RED}{CARGO_SHORT} z nieznanej stacji +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 @@ -3339,7 +3510,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 @@ -3364,12 +3535,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 @@ -3379,7 +3550,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 @@ -3429,8 +3600,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 @@ -3449,7 +3620,6 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS :{WHITE}Kanały STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}Stacje: STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}Pola stacji STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}Lotniska -STR_COMPANY_INFRASTRUCTURE_VIEW_COST :{WHITE}{1:CURRENCY_LONG}/rok ({0:COMMA}) STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL :{WHITE}{CURRENCY_LONG}/rok # Industry directory @@ -3466,6 +3636,7 @@ STR_INDUSTRY_VIEW_PRODUCTION_LAST_MONTH_TITLE :{BLACK}Wyproduk STR_INDUSTRY_VIEW_TRANSPORTED :{YELLOW}{CARGO_LONG}{STRING}{BLACK} ({COMMA}% przetransportowano) STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Centruj główny widok na przedsiębiorstwie. Ctrl+klik otwiera nowy podgląd na pozycji przedsiębiorstwa STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Poziom produkcji: {YELLOW}{COMMA}% +STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}Przedsiębiorstwo ogłosiło likwidację! ############ range for requires starts STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Wymaga: {YELLOW}{STRING}{STRING} @@ -3490,7 +3661,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 @@ -3507,7 +3678,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 @@ -3519,21 +3690,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 @@ -3581,10 +3755,10 @@ STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_BUTTON :{BLACK}Kup poja 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ę @@ -3592,20 +3766,20 @@ 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_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} @@ -3618,21 +3792,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 @@ -3649,40 +3823,40 @@ 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 STR_ENGINE_PREVIEW_MESSAGE :{GOLD}Właśnie zaprojektowaliśmy now{G y ą e} {STRING.b} - czy jesteś zainteresowany w rocznej wyłączności na użycie tego pojazdu, żebyśmy mogli zobaczyć przed wypuszczeniem na rynek jak się sprawuje? STR_ENGINE_PREVIEW_RAILROAD_LOCOMOTIVE :{G=f}lokomotywa STR_ENGINE_PREVIEW_RAILROAD_LOCOMOTIVE.b :{G=f}lokomotywę -STR_ENGINE_PREVIEW_ROAD_VEHICLE :{G=m}samochód -STR_ENGINE_PREVIEW_ROAD_VEHICLE.b :{G=m}samochód +STR_ENGINE_PREVIEW_ROAD_VEHICLE :{G=m}pojazd +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 @@ -3702,7 +3876,7 @@ 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 @@ -3742,7 +3916,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 @@ -3755,7 +3929,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 @@ -3768,7 +3942,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 @@ -3805,7 +3979,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 @@ -3835,8 +4009,13 @@ STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Okres mi 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 +STR_SERVICE_INTERVAL_DROPDOWN_TOOLTIP :{BLACK}Zmień typ interwału serwisowania +STR_VEHICLE_DETAILS_DEFAULT :Domyślne +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 @@ -3867,23 +4046,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 @@ -3923,8 +4102,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 @@ -3968,7 +4147,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ń @@ -3983,9 +4162,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} @@ -4052,9 +4231,13 @@ 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} @@ -4070,7 +4253,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 datę początkową tego rozkładu jazdy +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ąć @@ -4092,7 +4275,7 @@ STR_TIMETABLE_AUTOFILL_TOOLTIP :{BLACK}Wypełni STR_TIMETABLE_EXPECTED :{BLACK}Wymagany STR_TIMETABLE_SCHEDULED :{BLACK}Zaplanowany -STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Przełącz między wymaganymi i zaplanowanymi +STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Przełącz między spodziewanymi i zaplanowanymi STR_TIMETABLE_ARRIVAL_ABBREVIATION :P: STR_TIMETABLE_DEPARTURE_ABBREVIATION :O: @@ -4114,7 +4297,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 @@ -4184,6 +4367,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 @@ -4206,6 +4391,10 @@ STR_INCOME_FLOAT_INCOME_SMALL :{TINY_FONT}{GRE STR_INCOME_FLOAT_INCOME :{GREEN}Przychód: {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}Zysk: {CURRENCY_LONG} +STR_FEEDER_INCOME :{YELLOW}Transfer: {CURRENCY_LONG}{WHITE} / {GREEN}Zysk: {CURRENCY_LONG} +STR_FEEDER_COST_TINY :{TINY_FONT}{YELLOW}Transfer: {CURRENCY_LONG}{WHITE} / {RED}Koszt: {CURRENCY_LONG} +STR_FEEDER_COST :{YELLOW}Transfer: {CURRENCY_LONG}{WHITE} / {RED}Koszt: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_COST :{WHITE}Szacowany koszt: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Szacowany przychód: {CURRENCY_LONG} @@ -4279,8 +4468,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... @@ -4377,8 +4566,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 @@ -4396,19 +4585,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 @@ -4416,7 +4605,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 @@ -4502,33 +4691,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... @@ -4538,12 +4728,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... @@ -4557,6 +4747,11 @@ STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}Nie moż STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... pojazd jest zniszczony +STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL :{WHITE}Żadne pojazdy nie będą dostępne +STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Zmień konfigurację swoich NewGRF-ów +STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}Obecnie żaden pojazd nie jest dostępny +STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Zacznij grę po {DATE_SHORT} albo użyj zestawu NewGRF, który zawiera wczesne pojazdy + # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Nie można przepuścić pociągu za sygnał, niebezpieczeństwo... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Nie można odwrócić kierunku jazdy pociągu... @@ -4599,6 +4794,16 @@ STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}Nie moż # Translatable comment for OpenTTD's desktop shortcut STR_DESKTOP_SHORTCUT_COMMENT :Gra symulacyjna oparta na Transport Tycoon Deluxe +# Translatable descriptions in media/baseset/*.ob* files +STR_BASEGRAPHICS_DOS_DESCRIPTION :Oryginalna edycja grafik dla Transport Tycoon Deluxe DOS. +STR_BASEGRAPHICS_DOS_DE_DESCRIPTION :Oryginalna edycja grafik dla Transport Tycoon Deluxe DOS (German). +STR_BASEGRAPHICS_WIN_DESCRIPTION :Oryginalna edycja grafik dla Transport Tycoon Deluxe Windows. +STR_BASESOUNDS_DOS_DESCRIPTION :Oryginalna edycja dźwięków dla Transport Tycoon Deluxe DOS. +STR_BASESOUNDS_WIN_DESCRIPTION :Oryginalna edycja dźwięków dla Transport Tycoon Deluxe Windows. +STR_BASESOUNDS_NONE_DESCRIPTION :Zestaw dźwięków nie zawierający żadnych dźwięków. +STR_BASEMUSIC_WIN_DESCRIPTION :Oryginalna edycja utworów muzycznych w Transport Tycoon Deluxe Windows. +STR_BASEMUSIC_NONE_DESCRIPTION :Zestaw utworów muzycznych nie zawierający żadnej muzyki. + ##id 0x2000 # Town building names STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1 :Wysoki biurowiec @@ -4718,7 +4923,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} @@ -4729,14 +4934,14 @@ STR_SV_STNAME_EAST :{STRING} Wschó STR_SV_STNAME_WEST :{STRING} Zachód STR_SV_STNAME_CENTRAL :{STRING} Główny STR_SV_STNAME_TRANSFER :{STRING} Transfer -STR_SV_STNAME_HALT :{STRING} Przedmieście +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_LAKESIDE :{STRING} Jezioro STR_SV_STNAME_EXCHANGE :{STRING} Wymiana STR_SV_STNAME_AIRPORT :Lotnisko {STRING} -STR_SV_STNAME_OILFIELD :{STRING} Platforma Wiertnicza +STR_SV_STNAME_OILFIELD :Platforma Wiertnicza {STRING} STR_SV_STNAME_MINES :{STRING} Kopalnia STR_SV_STNAME_DOCKS :{STRING} Port STR_SV_STNAME_BUOY :{STRING} @@ -4749,7 +4954,7 @@ STR_SV_STNAME_UPPER :{STRING} Górny STR_SV_STNAME_LOWER :{STRING} Dolny STR_SV_STNAME_HELIPORT :{STRING} Lądowisko STR_SV_STNAME_FOREST :{STRING} Las -STR_SV_STNAME_FALLBACK :{STRING} Stacja #{NUM} +STR_SV_STNAME_FALLBACK :{STRING} Stacja nr {NUM} ############ end of savegame specific region! ##id 0x8000 @@ -4758,7 +4963,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) @@ -5018,20 +5223,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_INDUSTRY_NAME :{1:STRING} {0:TOWN} 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_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 @@ -5082,8 +5287,9 @@ 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_SPACE_STRING :{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} @@ -5107,9 +5313,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 2bbc33210..334f9a430 100644 --- a/src/lang/portuguese.txt +++ b/src/lang/portuguese.txt @@ -200,27 +200,36 @@ STR_UNITS_POWER_IMPERIAL :{COMMA}cv STR_UNITS_POWER_METRIC :{COMMA}cv 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} small ton{P "" s} STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} tonelada{P "" s} STR_UNITS_WEIGHT_LONG_SI :{COMMA} quilogramas +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} gal{P ão ões} STR_UNITS_VOLUME_LONG_METRIC :{COMMA} litro{P "" s} STR_UNITS_VOLUME_LONG_SI :{COMMA} metros³ +STR_UNITS_FORCE_IMPERIAL :{COMMA} lbf +STR_UNITS_FORCE_METRIC :{COMMA} kgf STR_UNITS_FORCE_SI :{COMMA} kN STR_UNITS_HEIGHT_IMPERIAL :{COMMA} pé(s) +STR_UNITS_HEIGHT_METRIC :{COMMA} m STR_UNITS_HEIGHT_SI :{COMMA} m # Common window strings +STR_LIST_FILTER_TITLE :{BLACK}Chave de filtragem: 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 @@ -232,7 +241,8 @@ STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Fechar j STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Título da janela - arraste isto para mover a janela 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_STICKY :{BLACK}Marcar esta janela como não-encerrável pela tecla 'Fechar Todas as Janelas' +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'. 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 @@ -256,7 +266,6 @@ STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}Área: { # These are used in buttons -STR_SORT_BY_CAPTION_POPULATION :{BLACK}População STR_SORT_BY_CAPTION_NAME :{BLACK}Nome STR_SORT_BY_CAPTION_DATE :{BLACK}Data # These are used in dropdowns @@ -277,7 +286,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 :Valor da carga em espera +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) @@ -289,6 +299,8 @@ STR_SORT_BY_RUNNING_COST :Custo de circul STR_SORT_BY_POWER_VS_RUNNING_COST :Potência/Custo de circulação STR_SORT_BY_CARGO_CAPACITY :Capacidade de Carga STR_SORT_BY_RANGE :Alcance +STR_SORT_BY_POPULATION :População +STR_SORT_BY_RATING :Classificação # Tooltips for the main toolbar STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Pausa @@ -301,6 +313,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 @@ -371,19 +385,19 @@ STR_FILE_MENU_SEPARATOR : STR_FILE_MENU_EXIT :Sair ############ range ends here -############ range for map menu starts +# 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, yet the town directory is shown in the map menu in the scenario editor + +############ range for town menu starts STR_TOWN_MENU_TOWN_DIRECTORY :Lista de cidades -############ end of the 'Display map' dropdown STR_TOWN_MENU_FOUND_TOWN :Fundar cidade -############ end of the 'Town' dropdown +############ range ends here ############ range for subsidies menu starts STR_SUBSIDIES_MENU_SUBSIDIES :Subsídios -STR_SUBSIDIES_MENU_GOAL :Objetivos actuais ############ range ends here ############ range for graph menu starts @@ -457,7 +471,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 @@ -473,22 +487,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 @@ -650,7 +682,7 @@ STR_HIGHSCORE_PERFORMANCE_TITLE_CAPITALIST :Capitalista STR_HIGHSCORE_PERFORMANCE_TITLE_MAGNATE :Magnata STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL :Grande magnata STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY :Magnata do século -STR_HIGHSCORE_NAME :{BIG_FONT}{PRESIDENT_NAME}, {COMPANY} +STR_HIGHSCORE_NAME :{PRESIDENT_NAME}, {COMPANY} STR_HIGHSCORE_STATS :{BIG_FONT}'{STRING}' ({COMMA}) STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{BLACK}{COMPANY} conquista o estatuto de '{STRING}'! STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{WHITE}{PRESIDENT_NAME} de {COMPANY} conquista o estatuto de '{STRING}'! @@ -661,17 +693,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 @@ -705,6 +740,7 @@ STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLA STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Mostrar/ocultar nomes das cidades no mapa STR_SMALLMAP_CENTER :{BLACK}Centrar o mapa na posição 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}Desactivar tudo @@ -715,6 +751,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 @@ -791,13 +829,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 @@ -876,15 +912,12 @@ STR_GAME_OPTIONS_CURRENCY_LTL :Litas Lituanias STR_GAME_OPTIONS_CURRENCY_KRW :Won Sul Coreano (KRW) STR_GAME_OPTIONS_CURRENCY_ZAR :Rand Sul Africano (ZAR) STR_GAME_OPTIONS_CURRENCY_CUSTOM :Personalizado... +STR_GAME_OPTIONS_CURRENCY_GEL :Lari Georgiano (GEL) +STR_GAME_OPTIONS_CURRENCY_IRR :Rial Iraniano (IRR) ############ end of currency region -STR_GAME_OPTIONS_MEASURING_UNITS_FRAME :{BLACK}Unidades de medida -STR_GAME_OPTIONS_MEASURING_UNITS_DROPDOWN_TOOLTIP :{BLACK}Selecção de unidades de medida ############ start of measuring units region -STR_GAME_OPTIONS_MEASURING_UNITS_IMPERIAL :Anglo-Saxónico -STR_GAME_OPTIONS_MEASURING_UNITS_METRIC :Métrico -STR_GAME_OPTIONS_MEASURING_UNITS_SI :Sistema Internacional ############ end of measuring units region STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Veículos rodoviários @@ -922,11 +955,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 @@ -938,9 +973,6 @@ 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_BASE_GRF :{BLACK}Conjunto de gráficos base STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Seleccione o conjunto de gráficos base a usar STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} ficheiro{P "" s} que falta{P "" m} / corrupto{P "" s} @@ -1054,20 +1086,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_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 @@ -1085,12 +1123,33 @@ STR_CONFIG_SETTING_HORIZONTAL_POS_LEFT :Esquerda STR_CONFIG_SETTING_HORIZONTAL_POS_CENTER :Centro 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_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} +STR_CONFIG_SETTING_CONSTRUCTION_SPEED_HELPTEXT :Limitar o número de acções de construção para IAs +STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS :Avarias de veículos: {STRING} +STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS_HELPTEXT :Controla quão frequentemente veículos inadequadamento mantidos podem avariar +STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER :Multiplicador de subsídio: {STRING} +STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT :Define quanto é pago para ligações subsidiadas +STR_CONFIG_SETTING_CONSTRUCTION_COSTS :Custos de construção: {STRING} +STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :Configurar o nível de construção e custos de compra +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, 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_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} +STR_CONFIG_SETTING_CATCHMENT_HELPTEXT :Haver diferentes áreas de cobertura para diferentes tipos de estações e aeroportos STR_CONFIG_SETTING_EXTRADYNAMITE :Permitir remover mais mais estradas, pontes e túneis detidos pela cidade: {STRING} STR_CONFIG_SETTING_EXTRADYNAMITE_HELPTEXT :Facilitar a remoçar de edifícios e infraestruturas detidas pela cidade STR_CONFIG_SETTING_TRAIN_LENGTH :Tamanho máximo de comboios: {STRING} @@ -1108,18 +1167,17 @@ STR_CONFIG_SETTING_PERCENTAGE :{COMMA}% STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS :Ângulo de inclínação para veículos rodoviários: {STRING} STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS_HELPTEXT :Declive de um quadrado inclinado para um veiculo de estrada. Valores mais altos tornam mais difícil de subir. STR_CONFIG_SETTING_FORBID_90_DEG :Proibir comboios e barcos fazer curvas de 90º: {STRING} +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_GRADUAL_LOADING :Carregar veículos gradualmente: {STRING} 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_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_TUNNEL_LENGTH :Tamanho máximo de túneis: {STRING} STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH_HELPTEXT :Tamanho máximo para construção de túneis STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :Método de financiamento de indústrias primárias: {STRING} +STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_HELPTEXT :Método de financiar uma indústria pirmária. 'nenhum' significa que não é possível financiar nenhuma, 'prospecção' significa que é possível financiar, mas a construção é feita num local arbitrário no mapa e até pode falhar, 'como outras indústrias' significa que as indústrias de matérias primas podem ser construídas por companhias como indústrias de processamento em qualquer sítio que elas escolham STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :Nenhum STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :Mesmo método STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :Prospecção @@ -1137,12 +1195,13 @@ STR_CONFIG_SETTING_SHOWFINANCES_HELPTEXT :Se ativado, os STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :Novas ordens são 'sem parar' por predefinição: {STRING} STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT_HELPTEXT :Normalmente, um veículo parará em cada estação por que passe. Ao ligar esta configuração, passará sem parar por todas as estações parando apenas no destino final. Nota que isto só tem efeito para novas rotas. No entanto rotas existentes podem ser alteradas explicitamente para funcionarem assim também. STR_CONFIG_SETTING_STOP_LOCATION :Ordens novas do comboio param {STRING} da plataforma +STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :Local onde um combóio parará na plataforma por omissão. A opção 'extremo mais próximo' significa perto do ponto de entrada, 'meio' significa no meio da plataforma e 'extremo mais distante' significa o mais distante possível do ponto de entrada. Esta opção apenas afecta o valor por omissão para novas encomendas. Encomendas individuais podem utilizar qualquer uma das opções independentemente desta 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 STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT_FULLSCREEN :Visualizador principal, só ecrã cheio STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT :Visualizador principal STR_CONFIG_SETTING_AUTOSCROLL_EVERY_VIEWPORT :Todos os visualizadores @@ -1157,7 +1216,9 @@ STR_CONFIG_SETTING_ALLOW_FUND_ROAD_HELPTEXT :Permitir que as STR_CONFIG_SETTING_ALLOW_GIVE_MONEY :Permitir enviar dinheiro para outras empresas: {STRING} STR_CONFIG_SETTING_ALLOW_GIVE_MONEY_HELPTEXT :Permitir transferencias de dinheiro entre empresas em modo multi-jogador STR_CONFIG_SETTING_FREIGHT_TRAINS :Multiplicador de peso para simular comboios pesados: {STRING} +STR_CONFIG_SETTING_FREIGHT_TRAINS_HELPTEXT :Define o impacto de carregar mercadoria nos combóios. Um valor superior torna o carregamento de meradoria mais exigente para os combóios, especialmente em terreno inclinado STR_CONFIG_SETTING_PLANE_SPEED :Fator de velocidade de avião: {STRING} +STR_CONFIG_SETTING_PLANE_SPEED_HELPTEXT :Set the relative speed of planes compared to other vehicle types, to reduce the amount of income of transport by aircraft STR_CONFIG_SETTING_PLANE_SPEED_VALUE :1 / {COMMA} STR_CONFIG_SETTING_PLANE_CRASHES :Número de acidentes de aeronaves: {STRING} STR_CONFIG_SETTING_PLANE_CRASHES_HELPTEXT :Indicar a hipótese da ocorrência de um acidente aéreo @@ -1165,32 +1226,46 @@ STR_CONFIG_SETTING_PLANE_CRASHES_NONE :Nenhum STR_CONFIG_SETTING_PLANE_CRASHES_REDUCED :Reduzido STR_CONFIG_SETTING_PLANE_CRASHES_NORMAL :Normal STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Permitir estações de passagem em estradas das cidades: {STRING} +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_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_STOP_ON_COMPETITOR_ROAD_HELPTEXT :Permite construção de paragens drive-through em ruas que são prorpiedade de outras companhias 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 STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :Aeroportos nunca expiram: {STRING} +STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS_HELPTEXT :Activar esta preferência torna cada tipo de aeroporto disponível para sempre após a sua introdução STR_CONFIG_SETTING_WARN_LOST_VEHICLE :Avisar se o veículo está perdido: {STRING} STR_CONFIG_SETTING_WARN_LOST_VEHICLE_HELPTEXT :Mostrar mensagens sobre veículos que não conseguem encontrar o caminho para o seu próximo destino. STR_CONFIG_SETTING_ORDER_REVIEW :Analisar ordens dos veículos: {STRING} +STR_CONFIG_SETTING_ORDER_REVIEW_HELPTEXT :Quando activo, as encomendas dos veículos são periodicamente revistas e algumas falhas óbvias são anunciadas através de notícias, quando detectadas STR_CONFIG_SETTING_ORDER_REVIEW_OFF :Não STR_CONFIG_SETTING_ORDER_REVIEW_EXDEPOT :Sim, mas excluir veículos parados STR_CONFIG_SETTING_ORDER_REVIEW_ON :De todos os veículos STR_CONFIG_SETTING_WARN_INCOME_LESS :Avisar se o lucro de um veiculo for negativo: {STRING} +STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :Quando activo, uma notícia é enviada quando um veículo não deu lucro durante um ano STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Veículos nunca expiram: {STRING} +STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :Quando activo, todos os modelos de veículos permanecerão disponíveis para sempre após a sua introdução STR_CONFIG_SETTING_AUTORENEW_VEHICLE :Auto-renovação de veículos quando ficam velhos: {STRING} +STR_CONFIG_SETTING_AUTORENEW_VEHICLE_HELPTEXT :Quando activo, um veículo a chegar ao fim de vida é automaticamente substituído quando as condições de renovação estão reunidas STR_CONFIG_SETTING_AUTORENEW_MONTHS :Renovar automaticamente quando um veículo chega a {STRING} de idade STR_CONFIG_SETTING_AUTORENEW_MONTHS_HELPTEXT :Idade relativa a partir da qual um veículo deva ser indicado para auto-renovação STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_BEFORE :{COMMA} mês{P 0 "" es} antes +STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_AFTER :{COMMA} mês{P 0 "" es} após STR_CONFIG_SETTING_AUTORENEW_MONEY :Dinheiro mínimo para fazer auto-renovação: {STRING} +STR_CONFIG_SETTING_AUTORENEW_MONEY_HELPTEXT :Quantidade mínima de dinheiro que tem que estar no banco para auto-renovação de veículos ser considerada STR_CONFIG_SETTING_ERRMSG_DURATION :Duração da mensagem de erro: {STRING} +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_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 STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :Grossura das linhas nos gráficos: {STRING} +STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Largura da linha nos gráficos. Uma linha mais estreita é de leitura mais precisa, enquanto uma linha mais espessa é mais fácil de ver e as cores distinguem-se melhor. STR_CONFIG_SETTING_LAND_GENERATOR :Gerador de terra: {STRING} STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :Original @@ -1211,67 +1286,92 @@ STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Rotação mapa 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 +STR_CONFIG_SETTING_STATION_SPREAD :Espalhamento das estações máximo: {STRING} +STR_CONFIG_SETTING_STATION_SPREAD_HELPTEXT :Área máxima pela qual uma estação pode estar distribuída. Nota que valores elevados irão abrandar o jogo STR_CONFIG_SETTING_SERVICEATHELIPAD :Manutenção automática de helicópteros em heliportos: {STRING} +STR_CONFIG_SETTING_SERVICEATHELIPAD_HELPTEXT :Efectuar manutenção aos helicópteros após cada aterragem, mesmo que não haja hangar no aeroporto STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR :Ligar ferramentas de paisagem com as de construção: {STRING} +STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR_HELPTEXT :Quando se abre a barra de construção para um tipo de transporte, abrir também a barra de terraplanagem STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR :Cor do solo usada no mapa pequeno: {STRING} +STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :Cor do terreno no mapa pequeno STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :Verde STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :Verde Escuro STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Violeta STR_CONFIG_SETTING_REVERSE_SCROLLING :Ao deslizar com o rato, mover a vista na direcção oposta: {STRING} +STR_CONFIG_SETTING_REVERSE_SCROLLING_HELPTEXT :Comportamento ao navegar pelo mapa com o botão direito do rato. Quando desactivado, o rato move a câmara. Quando activo, o rato move o mapa STR_CONFIG_SETTING_SMOOTH_SCROLLING :Suavizar deslocamento da navegação no mapa: {STRING} +STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Controla como a vista principal navega para uma posição específica ao clicar no mapa pequeno ou ao dar um comando para navegar para um objecto específico no mapa. Se activo, a vista principal navega suavemente, se inactivo a vista salta directamente para o destino. STR_CONFIG_SETTING_MEASURE_TOOLTIP :Mostrar medidas nas várias ferramentas de construção: {STRING} +STR_CONFIG_SETTING_MEASURE_TOOLTIP_HELPTEXT :Mostrar distâncias em quadrados e diferenças de altura enquanto arrasta o rato durante tarefas de construção STR_CONFIG_SETTING_LIVERIES :Mostrar estampagens da empresa: {STRING} +STR_CONFIG_SETTING_LIVERIES_HELPTEXT :Controlar a utilização de decorações específicas por tipo de veículo (em vez de decorações por companhia) STR_CONFIG_SETTING_LIVERIES_NONE :Nenhum STR_CONFIG_SETTING_LIVERIES_OWN :Própria empresa STR_CONFIG_SETTING_LIVERIES_ALL :Todas as empresas STR_CONFIG_SETTING_PREFER_TEAMCHAT :Escolher chat de equipa com : {STRING} +STR_CONFIG_SETTING_PREFER_TEAMCHAT_HELPTEXT :Trocar o mapeamento do chat da companhia e do chat público para e respectivamente STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING :Função da roda do rato: {STRING} +STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING_HELPTEXT :Activar navegação com rodas de scroll bidimensional STR_CONFIG_SETTING_SCROLLWHEEL_ZOOM :Ampliar mapa STR_CONFIG_SETTING_SCROLLWHEEL_SCROLL :Percorrer mapa STR_CONFIG_SETTING_SCROLLWHEEL_OFF :Desligado STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER :Velocidade da roda do rato no mapa: {STRING} STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER_HELPTEXT :Controlo de sensibilidade da roda de rolagem do rato +STR_CONFIG_SETTING_OSK_ACTIVATION :Teclado no ecrã: {STRING} +STR_CONFIG_SETTING_OSK_ACTIVATION_HELPTEXT :Seleccione o método de abertura do teclado no ecran para escrita de texto em caixas usando apenas o rato. Esta opção é pensada para equipamentos pequenos sem teclado físico. +STR_CONFIG_SETTING_OSK_ACTIVATION_DISABLED :Desactivado +STR_CONFIG_SETTING_OSK_ACTIVATION_DOUBLE_CLICK :Duplo clique +STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK_FOCUS :Clique simples (quando em foco) +STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK :Clique (imediatamente) STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU :Emulação de clique de botão direito: {STRING} STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_HELPTEXT :Selecione o método de emulação dos cliques do botão direito do rato -STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Clique para comando -STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Clique para controlo +STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND : + Clique +STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL : + clique 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_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_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} +STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_HELPTEXT :Seleccionar que acções podem ser feitas enquanto o jogo está em pausa STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :Nenhuma acção STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_CONSTRUCTION :Todas as acções sem construção STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_LANDSCAPING :Todas expecto acções que modificam o terreno STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_ACTIONS :Todas as acções STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Usar a lista avançada de veículos: {STRING} +STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Activar a utilização de listas avançadas de veículos para o agrupamento de veículos STR_CONFIG_SETTING_LOADING_INDICATORS :Usar indicadores de carga: {STRING} +STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :Seleccionar se os indicadores de carga são mostrados acima de veículos em carga ou descarga STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :Mostrar horário em tics em vez de dias: {STRING} +STR_CONFIG_SETTING_TIMETABLE_IN_TICKS_HELPTEXT :Mostrar tempos de viagem nos horários em ticks de jogo em vez de dias STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE :Mostrar chegada e partida nos horários: {STRING} +STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE_HELPTEXT :Mostrar horários previstos de chegada e partida nas tabelas de horários STR_CONFIG_SETTING_QUICKGOTO :Criação rápida de ordens de veículos: {STRING} +STR_CONFIG_SETTING_QUICKGOTO_HELPTEXT :Pré-seleccionar o 'cursor Ir Para' ao abrir a janela de ordens STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE :Tipo padrão de ferrovia (ao criar ou abrir jogo): {STRING} +STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_HELPTEXT :Tipo de carrir seleccionado após o início ou carregamento de um jogo. 'primeiro disponível' selecciona o tipo mais antigo de carril, 'último disponível' selecciona o tipo mais recente de carril e 'mais utilizado' selecciona o tipo mais utilizado actualmente STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_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 :Mostrar caminho de ferro reservado: {STRING} +STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION_HELPTEXT :Dar cores diferentes aos carris reservados para ajudar a detectar problemas com combóios que recusam entrar em bloqueios baseados em caminhos STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :Deixar ferramentas de construção activas depois de usadas: {STRING} +STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Manter as ferramentas de construção de pontes, túneis, etc. abertas após uso STR_CONFIG_SETTING_EXPENSES_LAYOUT :Agrupar despesas na janela de finanças da empresa: {STRING} +STR_CONFIG_SETTING_EXPENSES_LAYOUT_HELPTEXT :Definir a disposição da janela de despesas da companhia STR_CONFIG_SETTING_SOUND_TICKER :Notícias: {STRING} STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :Reproduzir efeito sonoro para notícias resumidas @@ -1280,7 +1380,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} @@ -1288,30 +1388,57 @@ 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. STR_CONFIG_SETTING_MAX_TRAINS :Máximo de comboios por empresa: {STRING} +STR_CONFIG_SETTING_MAX_TRAINS_HELPTEXT :Número máximo de comboios que uma companhia pode ter STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :Máximo de veículos rodoviários por empresa: {STRING} +STR_CONFIG_SETTING_MAX_ROAD_VEHICLES_HELPTEXT :Número máximo de veículos de estrada que uma companhia pode ter STR_CONFIG_SETTING_MAX_AIRCRAFT :Máximo de aeronaves por empresa: {STRING} +STR_CONFIG_SETTING_MAX_AIRCRAFT_HELPTEXT :Número máximo de aeronaves que uma companhia pode ter STR_CONFIG_SETTING_MAX_SHIPS :Máximo de barcos por empresa: {STRING} +STR_CONFIG_SETTING_MAX_SHIPS_HELPTEXT :Número máximo de navios que uma companhia pode ter STR_CONFIG_SETTING_AI_BUILDS_TRAINS :Desactivar comboios para o computador: {STRING} +STR_CONFIG_SETTING_AI_BUILDS_TRAINS_HELPTEXT :Activar esta preferência impossibilita a criação de comboios por jogadores controlados pelo computador STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES :Desactivar veículos rodoviários para o computador: {STRING} +STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES_HELPTEXT :Activar esta preferência impossibilita a construção de veículos de estrada por um jogador controlado pelo computador STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT :Desactivar aeronaves para o computador: {STRING} +STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT_HELPTEXT :Activar esta preferência impossibilita a construção de aeronaves por um jogador controlado pelo computador STR_CONFIG_SETTING_AI_BUILDS_SHIPS :Desactivar barcos para o computador: {STRING} +STR_CONFIG_SETTING_AI_BUILDS_SHIPS_HELPTEXT :Activar esta preferência impossibilita a construção de navios por um jogador controlado pelo computador +STR_CONFIG_SETTING_AI_PROFILE :Perfil de preferências por omissão: {STRING} +STR_CONFIG_SETTING_AI_PROFILE_HELPTEXT :Escolher o perfil de preferências a usar para AIs aleatórias ou para valores iniciais ao adicionar uma nova AI ou Game Script STR_CONFIG_SETTING_AI_PROFILE_EASY :Fácil STR_CONFIG_SETTING_AI_PROFILE_MEDIUM :Média STR_CONFIG_SETTING_AI_PROFILE_HARD :Difícil STR_CONFIG_SETTING_AI_IN_MULTIPLAYER :Permitir IAs em multi-jogador: {STRING} +STR_CONFIG_SETTING_AI_IN_MULTIPLAYER_HELPTEXT :Permitir a jogadores controlados pelo computador a participação em jogos multijogador STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES :#opcodes antes de os scripts serem suspensos: {STRING} +STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES_HELPTEXT :Número máximo de passos computacionais que um script pode executar num turno STR_CONFIG_SETTING_SERVINT_ISPERCENT :Os intervalos de serviço são em percentagem: {STRING} +STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Escolher se a manutenção de veículos é activada pelo tempo passado deste a última manutenção, ou pela fiabilidade abaixo de uma certa percentagem da fiabilidade máxima +STR_CONFIG_SETTING_SERVINT_TRAINS :Intervalo de serviço para comboios por omissão: {STRING} +STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :Definir o intervalo de manutenção por omissão para novos veículos sobre carris, se não for configurado um intervalo de manutenção explícito para o veículo +STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA} dia{P 0 "" s}/% +STR_CONFIG_SETTING_SERVINT_DISABLED :Desativado +STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES :Intervalo de serviço para veículos de estrada por omissão: {STRING} +STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES_HELPTEXT :Definir o intervalo de manutenção por omissão para novos veículos de estrada, se não for configurado um intervalo de manutenção explícito para o veículo +STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Intervalo de serviço para aeronaves por omissão: {STRING} +STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Definir o intervalo de manutenção por omissão para novas aeronaves, se não for configurado um intervalo de manutenção explícito para o veículo +STR_CONFIG_SETTING_SERVINT_SHIPS :Intervalo de serviço para navios por omissão: {STRING} +STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Definir o intervalo de manutenção por omissão para novos navios, se não for configurado um intervalo de manutenção explícito para o veículo STR_CONFIG_SETTING_NOSERVICE :Não fazer manutenção quando não há avarias: {STRING} +STR_CONFIG_SETTING_NOSERVICE_HELPTEXT :Quando activo, os veículos não farão manutenção se não puderem avariar STR_CONFIG_SETTING_WAGONSPEEDLIMITS :Activar limites de velocidade para vagões: {STRING} +STR_CONFIG_SETTING_WAGONSPEEDLIMITS_HELPTEXT :Quando activo, usar também os limites de velocidade das carruagens para decidir a velocidade máxima de um comboio STR_CONFIG_SETTING_DISABLE_ELRAILS :Desactivar carris electrificados: {STRING} +STR_CONFIG_SETTING_DISABLE_ELRAILS_HELPTEXT :Activar esta preferência desactiva o requisito de electrificar carris para que composições eléctricas os possam utilizar STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN :Chegada do primeiro veículo à estação do jogador: {STRING} STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN_HELPTEXT :Mostrar um jornal na chegada do primeiro veículo a uma estação nova do jogador @@ -1326,7 +1453,7 @@ STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN_HELPTEXT :Mostrar um jorn STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE :Fecho de indústrias: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE_HELPTEXT :Mostrar um jornal quando uma indústria fecha STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES :Alterações económicas: {STRING} -STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES_HELPTEXT :Mostrar um jornal sobre alterações globais na economia +STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES_HELPTEXT :Mostrar um jornal quando ocorrem alterações globais na economia STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY :Alterações de produção nas indústrias servidas pelo jogador: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY_HELPTEXT :Mostrar um jornal na alteração da produção de indústrias servidas pelo jogador STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER :Mudanças na produção das industrias servidas pelo(s) oponentes: {STRING} @@ -1338,7 +1465,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} @@ -1352,46 +1479,72 @@ STR_CONFIG_SETTING_COLOURED_NEWS_YEAR :Noticias a core STR_CONFIG_SETTING_COLOURED_NEWS_YEAR_HELPTEXT :Ano em que os anúncios de jornal começam a ser mostrados a cores. Antes deste ano, serão mostrados a preto e branco. STR_CONFIG_SETTING_STARTING_YEAR :Data de início: {STRING} STR_CONFIG_SETTING_SMOOTH_ECONOMY :Activar economia regular (alterações menores): {STRING} +STR_CONFIG_SETTING_SMOOTH_ECONOMY_HELPTEXT :Quando activa, a produção de indústrias muda frequentemente, em pequenos incrementos. Esta preferência não costuma ter efeito, se os tipos de indústria forem provenientes de um NewGRF STR_CONFIG_SETTING_ALLOW_SHARES :Permite comprar acções de outras empresas: {STRING} +STR_CONFIG_SETTING_ALLOW_SHARES_HELPTEXT :Quando activo, permite a compra e venda de acções de companhias. As acções apenas estarão disponíveis quando a companhia atinge uma determinada idade. +STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE :Percentagem do lucro do serviço a pagar em trajectos de um transporte que alimenta outro transporte: {STRING} +STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE_HELPTEXT :Percentagem da receita dada a trajectos intermédios em sistemas em que um transporte alimenta outro, dando maior controlo sobre a receita +STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY :Ao arrastar, colocar sinais a cada: {STRING} +STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_HELPTEXT :Define a distância a que os sinais serão construídos num carril até ao próximo obstáculo (sinal, junção), se os sinais são arrastados +STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_VALUE :{COMMA} quadrado{P 0 "" s} +STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE :Ao arrastar, manter distância fixa entre sinais: {STRING} +STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :Seleccionar o comportamento da colocação de sinais ao usar Ctrl+arrasto. Se desactivado, sinais são colocados à volta de túneis ou pontes para evitar longos trajectos sem sinais. Se activo, sinais são colocados a cada N mosaicos, facilitando o alinhamento de sinais em linhas paralelas 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_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 STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBS :Sinais de rota STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBSOWAY :Sinais de sentido único STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES :Trocar tipos de faróis: {STRING} +STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES_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_CYCLE_SIGNAL_NORMAL :Apenas sinais de bloqueio STR_CONFIG_SETTING_CYCLE_SIGNAL_PBS :Apenas sinais de rota STR_CONFIG_SETTING_CYCLE_SIGNAL_ALL :Todos STR_CONFIG_SETTING_TOWN_LAYOUT :Disposição de estradas para novas cidades: {STRING} +STR_CONFIG_SETTING_TOWN_LAYOUT_HELPTEXT :Disposição da rede de estradas das cidades STR_CONFIG_SETTING_TOWN_LAYOUT_DEFAULT :Original STR_CONFIG_SETTING_TOWN_LAYOUT_BETTER_ROADS :Estradas melhores STR_CONFIG_SETTING_TOWN_LAYOUT_2X2_GRID :grelha 2x2 STR_CONFIG_SETTING_TOWN_LAYOUT_3X3_GRID :grelha 3x3 STR_CONFIG_SETTING_TOWN_LAYOUT_RANDOM :Aleatório STR_CONFIG_SETTING_ALLOW_TOWN_ROADS :As cidades têm permissão para construir estradas: {STRING} +STR_CONFIG_SETTING_ALLOW_TOWN_ROADS_HELPTEXT :Permitir às cidades a construção de estradas para crescimento. Desactivar para não permitir às autoridades a construção de estradas STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :Cidades podem construir passagens de nível: {STRING} +STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS_HELPTEXT :Activar esta preferência permite às cidades construir cruzamentos nivelados STR_CONFIG_SETTING_NOISE_LEVEL :Permitir que a cidade controle o nível de ruído dos aeroportos: {STRING} +STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :Com esta preferência desactivada, podem haver dois aeroportos em cada cidade. Com esta preferência activa, o número de aeroportos numa cidade é limitado pela aceitação do ruído na cidade, que depende da população, do tamanho do aeroporto e da sua distância STR_CONFIG_SETTING_TOWN_FOUNDING :Fundar cidades no jogo: {STRING} +STR_CONFIG_SETTING_TOWN_FOUNDING_HELPTEXT :Activar esta preferência permite aos jogadores fundar novas povoações no jogo STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :Proibido STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :Permitido STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :Permitido, estrutura personalizada da cidade STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT :Criação de árvores no decorrer do jogo: {STRING} -STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NONE :Nenhuma {RED}(quebra as Serrações) +STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_HELPTEXT :Controlar o aparecimento aleatório de árvores durante o jogo. Isto poderá afectar indústrias que dependem do crescimento de árvores, como as madeireiras +STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NONE :Nenhuma {RED}(Serrações ficam inactivas) STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_RAINFOREST :Apenas em florestas húmidas STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_ALL :Em todo o lado STR_CONFIG_SETTING_TOOLBAR_POS :Posição da barra de ferramentas principal: {STRING} +STR_CONFIG_SETTING_TOOLBAR_POS_HELPTEXT :Posição horizontal da barra de ferramentas principal no topo do ecrã STR_CONFIG_SETTING_STATUSBAR_POS :Posição da barra de estado: {STRING} +STR_CONFIG_SETTING_STATUSBAR_POS_HELPTEXT :Posição horizontal da barra de estado no fundo do ecrã +STR_CONFIG_SETTING_SNAP_RADIUS :Raio de alinhamento automático de janelas: {STRING} +STR_CONFIG_SETTING_SNAP_RADIUS_HELPTEXT :Distância entre janelas até que a janela que está a ser movimentada se alinhe automaticamente pelas janelas mais próximas STR_CONFIG_SETTING_SNAP_RADIUS_VALUE :{COMMA} pixel{P 0 "" s} STR_CONFIG_SETTING_SNAP_RADIUS_DISABLED :Desligado STR_CONFIG_SETTING_SOFT_LIMIT :Número máximo de janelas não-pegajosas: {STRING} +STR_CONFIG_SETTING_SOFT_LIMIT_HELPTEXT :Número de janelas não-pegajosas abertas antes que janelas antigas comecem a ser fechadas para dar lugar a novas janelas STR_CONFIG_SETTING_SOFT_LIMIT_VALUE :{COMMA} STR_CONFIG_SETTING_SOFT_LIMIT_DISABLED :desligado STR_CONFIG_SETTING_ZOOM_MIN :Nível maximo de ampliação: {STRING} +STR_CONFIG_SETTING_ZOOM_MIN_HELPTEXT :O nível máximo de zoom para visualizadores. Níveis máximos de zoom superiores aumenterão os requisitos de memória STR_CONFIG_SETTING_ZOOM_MAX :Nível maximo de redução da câmara: {STRING} +STR_CONFIG_SETTING_ZOOM_MAX_HELPTEXT :O nível mínimo de zoom para visualizadores. Níveis mínimos de zoom superiores poderão causar lag quando utilizados STR_CONFIG_SETTING_ZOOM_LVL_MIN :4x STR_CONFIG_SETTING_ZOOM_LVL_IN_2X :2x STR_CONFIG_SETTING_ZOOM_LVL_NORMAL :Normal @@ -1399,39 +1552,90 @@ 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 :Ritmo de crescimento de cidades: {STRING} -STR_CONFIG_SETTING_TOWN_GROWTH_HELPTEXT :Velocidade de crescimento de vilas +STR_CONFIG_SETTING_TOWN_GROWTH_HELPTEXT :Velocidade de crescimento das cidades STR_CONFIG_SETTING_TOWN_GROWTH_NONE :Nenhum STR_CONFIG_SETTING_TOWN_GROWTH_SLOW :Lento STR_CONFIG_SETTING_TOWN_GROWTH_NORMAL :Normal STR_CONFIG_SETTING_TOWN_GROWTH_FAST :Rápido STR_CONFIG_SETTING_TOWN_GROWTH_VERY_FAST :Muito Rápido -STR_CONFIG_SETTING_LARGER_TOWNS :Proporção de vilas que chegarão a cidades: {STRING} +STR_CONFIG_SETTING_LARGER_TOWNS :Proporção de cidades que chegarão a metrópoles: {STRING} +STR_CONFIG_SETTING_LARGER_TOWNS_HELPTEXT :Quantidade de povoações que se tornarão cidades, logo cidades que começarão maiores e crescerão mais depressa 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_GUI :{ORANGE}Interface -STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}Construçã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 contem 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 o arbitrário dessa carga pode ser enviada 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_LOCALISATION :{ORANGE}Localizaçã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 @@ -1465,6 +1669,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} @@ -1521,7 +1727,7 @@ STR_OSNAME_BEOS :BeOS STR_OSNAME_HAIKU :Haiku STR_OSNAME_MORPHOS :MorphOS STR_OSNAME_AMIGAOS :AmigaOS -STR_OSNAME_OS2 :SO/2 +STR_OSNAME_OS2 :OS/2 STR_OSNAME_SUNOS :SunOS # Abandon game @@ -1586,6 +1792,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 @@ -1641,10 +1848,10 @@ STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}Mudar gr # Network server list STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}Multi-jogador -STR_NETWORK_SERVER_LIST_CONNECTION :{BLACK}Conexão: -STR_NETWORK_SERVER_LIST_CONNECTION_TOOLTIP :{BLACK}Escolha entre um jogo pela Internet ou pela rede local -STR_NETWORK_SERVER_LIST_LAN :Rede Local -STR_NETWORK_SERVER_LIST_INTERNET :Internet +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: STR_NETWORK_SERVER_LIST_ENTER_NAME_TOOLTIP :{BLACK}Este é o nome pelo qual os outros jogadores o irão identificar @@ -1703,8 +1910,8 @@ STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP :{BLACK}O nome d STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}Definir palavra-chave STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Proteja o jogo com uma senha se não desejar que pessoas indesejadas se juntem -STR_NETWORK_START_SERVER_LAN_INTERNET :Rede Local / Internet -STR_NETWORK_START_SERVER_INTERNET_ADVERTISE :Internet (divulgar) +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áximo de clientes: STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}Escolha o número máximo de clientes. Não necessitam estar todos presentes. @@ -1825,6 +2032,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 @@ -1943,6 +2151,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 @@ -2012,6 +2224,17 @@ STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}Comutar STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Alterar transparência para indicadores de carga. Ctrl+Clique para bloquear. 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 STR_STATION_BUILD_COVERAGE_OFF :{BLACK}Não @@ -2078,7 +2301,7 @@ STR_STATION_CLASS_WAYP :Pontos de passa # Signal window STR_BUILD_SIGNAL_CAPTION :{WHITE}Selecção de Sinal STR_BUILD_SIGNAL_SEMAPHORE_NORM_TOOLTIP :{BLACK}Sinal Normal (semáforo){}Este é o tipo mais básico de sinal, que só permite um comboio dentro da mesma linha ferroviária ao mesmo tempo. -STR_BUILD_SIGNAL_SEMAPHORE_ENTRY_TOOLTIP :{BLACK}Sinal de Entrada (semáforo){}Verde enquanto existir um ou mais sinais de saída verdes no seguimento da linha. De outro modo ficará vermelho. +STR_BUILD_SIGNAL_SEMAPHORE_ENTRY_TOOLTIP :{BLACK}Sinal de Entrada (semáforo){}Verde enquanto existir um ou mais sinais de saída verdes no seguimento da linha. Caso contrário, ficará vermelho STR_BUILD_SIGNAL_SEMAPHORE_EXIT_TOOLTIP :{BLACK}Sinal de Saída (semáforo){}Funciona da mesma forma que o sinal normal mas é necessário para conseguir a cor correcta nos pré-sinais de entrada e combinado. STR_BUILD_SIGNAL_SEMAPHORE_COMBO_TOOLTIP :{BLACK}Sinal Combinado (semáforo){}O sinal combinado funciona como um sinal de entrada e de saída. Este permite construir grandes "árvores" de pré-sinais. STR_BUILD_SIGNAL_SEMAPHORE_PBS_TOOLTIP :{BLACK}Sinal (semáforo){}Os sinais permitem que vários comboios utilizem a mesma linha desde que consigam chegar aos seus destinos em segurança. Sinais normais podem ser passados no sentido contrário. @@ -2086,10 +2309,10 @@ STR_BUILD_SIGNAL_SEMAPHORE_PBS_OWAY_TOOLTIP :{BLACK}Sinal de STR_BUILD_SIGNAL_ELECTRIC_NORM_TOOLTIP :{BLACK}Sinal Normal(eléctrico){}Este é o tipo mais básico de sinal, que só permite um comboio dentro da mesma linha ferroviária ao mesmo tempo. STR_BUILD_SIGNAL_ELECTRIC_ENTRY_TOOLTIP :{BLACK}Sinal de Entrada (eléctrico){}Verde enquanto existir um ou mais sinais de saída verdes no seguimento da linha. De outro modo ficará vermelho. STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}Sinal de Saída (eléctrico){}Funciona da mesma forma que o sinal normal mas é necessário para conseguir a cor correcta nos pré-sinais de entrada e combinado. -STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}Sinal Combinado (eléctrico){}O sinal combinado funciona como um sinal de entrada e de saída. Este permite construir grandes "árvores" de pré-sinais. +STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}Sinal Combinado (eléctrico){}O sinal combinado funciona simplesmente como um sinal de entrada e de saída. Este permite construir grandes "árvores" de pré-sinais STR_BUILD_SIGNAL_ELECTRIC_PBS_TOOLTIP :{BLACK}Sinal (eléctrico){}Os sinais permitem que vários comboios entrem na mesma linha ao mesmo tempo, desde que consigam chegar ao seu destino em segurança. Sinais padrão podem ser passados no sentido contrário. STR_BUILD_SIGNAL_ELECTRIC_PBS_OWAY_TOOLTIP :{BLACK}Sinal de sentido único (eléctrico){}Um sinal de trajecto permite que mais de um comboio passe ao mesmo tempo um sinal se, o comboio conseguir reservar um caminho para onde posteriormente possa parar sem prejudicar o seguinte. Sinais de um único sentido não podem ser passados no sentido contrário. -STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}Converter Sinal{}Quando seleccionado, ao fazer clique num sinal existente este será convertido no tipo e variante de sinal seleccionado, Ctrl+clique irá comutar a variante existente. Shift+Clique mostra estimativa do custo de conversão +STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}Conversão de Sinal{}Quando seleccionado, ao fazer clique num sinal existente este será convertido no tipo e variante de sinal seleccionado, Ctrl+clique irá comutar a variante existente. Shift+Clique mostra estimativa do custo de conversão STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_TOOLTIP :{BLACK}Densidade de sinais STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_DECREASE_TOOLTIP :{BLACK}Diminuir densidade de sinais STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_INCREASE_TOOLTIP :{BLACK}Aumentar densidade de sinais @@ -2112,7 +2335,7 @@ STR_BRIDGE_TUBULAR_SILICON :Tubular, Silíc # Road construction toolbar STR_ROAD_TOOLBAR_ROAD_CONSTRUCTION_CAPTION :{WHITE}Construir Estradas -STR_ROAD_TOOLBAR_TRAM_CONSTRUCTION_CAPTION :{WHITE}Construção de eléctricos +STR_ROAD_TOOLBAR_TRAM_CONSTRUCTION_CAPTION :{WHITE}Construção de Eléctricos STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_SECTION :{BLACK}Construir estradas. Ctrl alterna a construção/remoção de estradas STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_SECTION :{BLACK}Construir secção de carris para eléctricos. Ctrl alterna a construção/remoção de carris para eléctricos. Shift alterna contruir/mostrar custo estimado STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOROAD :{BLACK}Construir estradas usando o modo automático. Ctrl alterna a construção/remoção de estradas. Shift alterna contruir/mostrar custo estimado @@ -2314,6 +2537,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 @@ -2410,7 +2634,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-2012 A equipa do OpenTTD +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2014 A equipa do OpenTTD # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Guardar Jogo @@ -2439,6 +2663,7 @@ 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: @@ -2446,10 +2671,6 @@ STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Num. de 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: @@ -2476,7 +2697,6 @@ 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_SNOW_LINE_QUERY_CAPT :{WHITE}Mudar a altura da linha de neve STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Mudar ano de início @@ -2531,12 +2751,12 @@ 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_FILE_TOOLTIP :{BLACK}Uma lista dos ficheiros NewGRF que estão instalados. +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 @@ -2547,7 +2767,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 @@ -2555,6 +2775,8 @@ 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 + # NewGRF parameters window STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}Alterar parâmetros NewGRF STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Fechar @@ -2614,6 +2836,7 @@ STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Contém múltiplas entradas Action 8 - (sprite {3:NUM}) STR_NEWGRF_ERROR_READ_BOUNDS :Leitura além dos limites do pseudo-sprite (sprite {3:NUM}) STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}O conjunto de gráficos base actual tem objectos gráficos em falta.{}Por favor faça a sua actualização. +STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}O conjunto de gráficos base actualmente em uso tem um conjunto de gráficos em falta.{}Por favor actualize o conjunto de gráficos base.{}Visto que está a usar uma {YELLOW}imagem de desenvolvimento do OpenTTD{WHITE}, poderá também precisar de {YELLOW}uma imagem dos gráficos base de desenvolvimento{WHITE} STR_NEWGRF_ERROR_GRM_FAILED :Recursos GRF pedidos não disponíveis (sprite {3:NUM}) STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} foi desactivado por {STRING} STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Formato de Gráfico Inválido ou desconhecido (sprite {3:NUM}) @@ -2624,6 +2847,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 @@ -2640,6 +2864,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 @@ -2654,6 +2879,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... @@ -2735,10 +2963,14 @@ STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT :{YELLOW}Comprar STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}Subornar a autoridade local para aumentar a sua avaliação, correndo o risco de uma penalidade severa se apanhado.{}Custo: {CURRENCY_LONG} # Goal window -STR_GOALS_CAPTION :{WHITE}Objetivos +STR_GOALS_CAPTION :{WHITE}{COMPANY} Objectivos +STR_GOALS_SPECTATOR_CAPTION :{WHITE}Objetivos globais STR_GOALS_GLOBAL_TITLE :{BLACK}Objetivos globais: STR_GOALS_TEXT :{ORANGE}{STRING} STR_GOALS_NONE :{ORANGE}- Nenhum - +STR_GOALS_SPECTATOR_NONE :{ORANGE}- Não aplicável - +STR_GOALS_PROGRESS :{ORANGE}{STRING} +STR_GOALS_PROGRESS_COMPLETE :{GREEN}{STRING} STR_GOALS_COMPANY_TITLE :{BLACK}Objetivos da empresa: STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Clique no objetivo para centrar a vista principal na indústria/cidade/quadrado. Ctrl+clique abre uma nova vista na localização da indústria/cidade/quadrado @@ -2777,6 +3009,18 @@ STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}Serviço STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING} d{G 1 e o a os as} {STRING} para{G 2 "" " o" " a" " os" " as"} {STRING}{YELLOW} ({COMPANY}{YELLOW}, até {DATE_SHORT}) 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 STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}Manter Ctrl premido para seleccionar mais do que um item @@ -2790,9 +3034,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 @@ -2803,8 +3047,31 @@ STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPAN STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Avaliações STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Mostrar avaliações da estação -STR_STATION_VIEW_CARGO_RATINGS_TITLE :{BLACK}Avaliação local do serviço de transporte: -STR_STATION_VIEW_CARGO_RATING :{WHITE}{STRING}: {YELLOW}{STRING} ({COMMA}%) +STR_STATION_VIEW_SUPPLY_RATINGS_TITLE :{BLACK}Abastecimento mensal e classificação local: +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 @@ -2931,7 +3198,6 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS :{WHITE}Canais STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}Estações: STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}Quadrados de estações STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}Aeroportos -STR_COMPANY_INFRASTRUCTURE_VIEW_COST :{WHITE}{1:CURRENCY_LONG}/ano ({0:COMMA}) STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL :{WHITE}{CURRENCY_LONG}/ano # Industry directory @@ -2948,6 +3214,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} @@ -3016,6 +3283,7 @@ 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_GROUP_ADD_SHARED_VEHICLE :Adic. veíc. partilh. STR_GROUP_REMOVE_ALL_VEHICLES :Remover todos os veículos @@ -3311,6 +3579,11 @@ 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 + STR_QUERY_RENAME_TRAIN_CAPTION :{WHITE}Renomear comboio STR_QUERY_RENAME_ROAD_VEHICLE_CAPTION :{WHITE}Renomear veículo rodoviário STR_QUERY_RENAME_SHIP_CAPTION :{WHITE}Renomear barco @@ -3546,7 +3819,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}Seleccione uma data como ponto de partida deste horário +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 @@ -3568,7 +3841,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: @@ -3660,6 +3933,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 @@ -3682,6 +3957,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} @@ -4033,6 +4312,11 @@ 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... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Não é possível inverter a direcção do comboio... @@ -4075,6 +4359,16 @@ STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}Não é # Translatable comment for OpenTTD's desktop shortcut STR_DESKTOP_SHORTCUT_COMMENT :Um jogo de simulação baseado no Transport Tycoon Deluxe +# Translatable descriptions in media/baseset/*.ob* files +STR_BASEGRAPHICS_DOS_DESCRIPTION :Gráficos originais da edição DOS de Transport Tycoon Deluxe. +STR_BASEGRAPHICS_DOS_DE_DESCRIPTION :Gráficos originais da edição DOS (Alemã) de Transport Tycoon Deluxe. +STR_BASEGRAPHICS_WIN_DESCRIPTION :Gráficos originais da edição Windows de Transport Tycoon Deluxe. +STR_BASESOUNDS_DOS_DESCRIPTION :Sons originais da edição DOS de Transport Tycoon Deluxe. +STR_BASESOUNDS_WIN_DESCRIPTION :Sons originais da edição Windows de Transport Tycoon Deluxe. +STR_BASESOUNDS_NONE_DESCRIPTION :Um conjunto de sons vazio. +STR_BASEMUSIC_WIN_DESCRIPTION :Música original da edição Windows de Transport Tycoon Deluxe. +STR_BASEMUSIC_NONE_DESCRIPTION :Um conjunto de música vazio. + ##id 0x2000 # Town building names STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1 :Edifício alto de escritórios @@ -4171,7 +4465,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} @@ -4197,7 +4491,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) @@ -4406,7 +4700,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 @@ -4521,8 +4815,9 @@ 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_SPACE_STRING :{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} @@ -4546,9 +4841,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 ca3fb88aa..f9846eeea 100644 --- a/src/lang/romanian.txt +++ b/src/lang/romanian.txt @@ -199,27 +199,36 @@ 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 +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 @@ -231,7 +240,8 @@ STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Închide STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Titlul ferestrei - trage de aici pentru a muta fereastra STR_TOOLTIP_SHADE :{BLACK}Minimizează fereastra - Afișează doar bara de titlu STR_TOOLTIP_DEBUG :{BLACK}Arată informații depanare NewGRF -STR_TOOLTIP_STICKY :{BLACK}Previne închiderea acestei ferestre de către tasta 'Închide toate ferestrele' +STR_TOOLTIP_DEFSIZE :{BLACK}Redimensionează fereastra la dimensiunea standard. Ctrl+Click pentru a surprascrie dimensiunea standard cu dimensiunea curentă +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 @@ -255,7 +265,6 @@ STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}Suprafa # These are used in buttons -STR_SORT_BY_CAPTION_POPULATION :{BLACK}Populaţia STR_SORT_BY_CAPTION_NAME :{BLACK}Nume STR_SORT_BY_CAPTION_DATE :{BLACK}Dată # These are used in dropdowns @@ -276,7 +285,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 :Valoarea mărfii în aşteptare +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,9 +295,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 @@ -300,6 +312,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 @@ -370,19 +384,19 @@ STR_FILE_MENU_SEPARATOR : STR_FILE_MENU_EXIT :Ieşire din joc ############ range ends here -############ range for map menu starts +# map menu STR_MAP_MENU_MAP_OF_WORLD :Harta lumii STR_MAP_MENU_EXTRA_VIEW_PORT :Ecran suplimentar +STR_MAP_MENU_LINGRAPH_LEGEND :Legenda flux încărcătură STR_MAP_MENU_SIGN_LIST :Lista de semne -############ range for town menu starts, yet the town directory is shown in the map menu in the scenario editor + +############ range for town menu starts STR_TOWN_MENU_TOWN_DIRECTORY :Lista oraşelor -############ end of the 'Display map' dropdown STR_TOWN_MENU_FOUND_TOWN :Fondează oraş -############ end of the 'Town' dropdown +############ range ends here ############ range for subsidies menu starts STR_SUBSIDIES_MENU_SUBSIDIES :Subvenţii -STR_SUBSIDIES_MENU_GOAL :Ţinte curente ############ range ends here ############ range for graph menu starts @@ -397,10 +411,12 @@ STR_GRAPH_MENU_CARGO_PAYMENT_RATES :Valorile plăţ ############ range for company league menu starts STR_GRAPH_MENU_COMPANY_LEAGUE_TABLE :Clasamentul companiilor STR_GRAPH_MENU_DETAILED_PERFORMANCE_RATING :Rating de performanţă detaliat +STR_GRAPH_MENU_HIGHSCORE :Tabela cu scoruri maxime ############ range ends here ############ range for industry menu starts STR_INDUSTRY_MENU_INDUSTRY_DIRECTORY :Lista industriilor +STR_INDUSTRY_MENU_INDUSTRY_CHAIN :Lanțuri industriale STR_INDUSTRY_MENU_FUND_NEW_INDUSTRY :Obiectiv industrial nou ############ range ends here @@ -454,7 +470,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 @@ -470,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 @@ -647,7 +681,7 @@ STR_HIGHSCORE_PERFORMANCE_TITLE_CAPITALIST :Capitalist STR_HIGHSCORE_PERFORMANCE_TITLE_MAGNATE :Magnat STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL :Mogul STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY :Magnatul Secolului -STR_HIGHSCORE_NAME :{BIG_FONT}{PRESIDENT_NAME}, {COMPANY} +STR_HIGHSCORE_NAME :{PRESIDENT_NAME}, {COMPANY} STR_HIGHSCORE_STATS :{BIG_FONT}'{STRING}' ({COMMA}) STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{BLACK}{COMPANY} a dobândit titlul de '{STRING}'! STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{WHITE}{PRESIDENT_NAME} al {COMPANY} dobândeşte titlul de '{STRING}'! @@ -658,17 +692,20 @@ STR_SMALLMAP_CAPTION :{WHITE}Harta - STR_SMALLMAP_TYPE_CONTOURS :Relief STR_SMALLMAP_TYPE_VEHICLES :Vehicule STR_SMALLMAP_TYPE_INDUSTRIES :Industrii +STR_SMALLMAP_TYPE_ROUTEMAP :Fluxul încărcăturilor STR_SMALLMAP_TYPE_ROUTES :Rute STR_SMALLMAP_TYPE_VEGETATION :Vegetaţie STR_SMALLMAP_TYPE_OWNERS :Proprietari STR_SMALLMAP_TOOLTIP_SHOW_LAND_CONTOURS_ON_MAP :{BLACK}Arată relieful pe hartă STR_SMALLMAP_TOOLTIP_SHOW_VEHICLES_ON_MAP :{BLACK}Arată vehiculele pe hartă STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRIES_ON_MAP :{BLACK}Arată industriile pe hartă +STR_SMALLMAP_TOOLTIP_SHOW_LINK_STATS_ON_MAP :{BLACK}Arată fluxul încărcăturilor pe hartă STR_SMALLMAP_TOOLTIP_SHOW_TRANSPORT_ROUTES_ON :{BLACK}Arată rutele de transport pe hartă STR_SMALLMAP_TOOLTIP_SHOW_VEGETATION_ON_MAP :{BLACK}Arată vegetaţia pe hartă STR_SMALLMAP_TOOLTIP_SHOW_LAND_OWNERS_ON_MAP :{BLACK}Arată proprietarii de teren pe hartă STR_SMALLMAP_TOOLTIP_INDUSTRY_SELECTION :{BLACK}Click pe tipul de industrie pentru a comuta afișarea acestuia. Ctrl+Click dezactivează toate tipurile cu excepția celui selectat. Ctrl+Click din nou pentru a reactiva toate tipurile de industrii STR_SMALLMAP_TOOLTIP_COMPANY_SELECTION :{BLACK}Click pe o companie pentru a comuta afișarea proprietăților acesteia. Ctrl-Click dezactivează toate companiile cu excepția celei selectate. Ctrl-Click din nou pentru a activa toate companiile +STR_SMALLMAP_TOOLTIP_CARGO_SELECTION :{BLACK}Click pe un tip de încărcătură pentru a afișa sau nu proprietățile. Ctrl+Click dezactivează toate tipurile de încărcături cu excepția celei curente. Ctrl+Click a doua oară pentru a vedea toate tipurile de încărcătură STR_SMALLMAP_LEGENDA_ROADS :{TINY_FONT}{BLACK}Drumuri STR_SMALLMAP_LEGENDA_RAILROADS :{TINY_FONT}{BLACK}Căi ferate @@ -702,6 +739,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 @@ -712,6 +750,8 @@ STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES :{BLACK}Afişeaz STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}Comută afişarea hărţii de înălţimi STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES :{BLACK}Nu se afisează proprietățile companiilor pe hartă STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}Afișează toate proprietățile companiei pe hartă +STR_SMALLMAP_TOOLTIP_DISABLE_ALL_CARGOS :{BLACK}Nu afișa tipuri de încărcături pe hartă +STR_SMALLMAP_TOOLTIP_ENABLE_ALL_CARGOS :{BLACK}Afișează toate tipurile de încărcătură pe hartă # Status bar messages STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Re-afişează ultimul mesaj @@ -788,13 +828,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 @@ -873,15 +911,12 @@ 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 -STR_GAME_OPTIONS_MEASURING_UNITS_FRAME :{BLACK}Unităţi de măsură -STR_GAME_OPTIONS_MEASURING_UNITS_DROPDOWN_TOOLTIP :{BLACK}Selecţie unităţi de măsură ############ start of measuring units region -STR_GAME_OPTIONS_MEASURING_UNITS_IMPERIAL :Imperiale -STR_GAME_OPTIONS_MEASURING_UNITS_METRIC :Metrice -STR_GAME_OPTIONS_MEASURING_UNITS_SI :SI ############ end of measuring units region STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Autovehiculele circulă... @@ -919,11 +954,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 @@ -935,9 +972,6 @@ 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_BASE_GRF :{BLACK}Set grafic de bază STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Selectează setul grafic de bază utilizat în joc STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} fişier{P "" "e"} lipsă/corupt{P "" e} @@ -1051,7 +1085,6 @@ 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 @@ -1060,7 +1093,7 @@ STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :Setări cu alt 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) @@ -1083,9 +1116,29 @@ STR_CONFIG_SETTING_HORIZONTAL_POS_LEFT :stânga STR_CONFIG_SETTING_HORIZONTAL_POS_CENTER :centru STR_CONFIG_SETTING_HORIZONTAL_POS_RIGHT :dreapta +STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN :Valoarea maximă a împrumutului initial: {STRING} +STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Valoarea maximă pe care o companie o poate împrumuta (fără a ține cont de inflație) +STR_CONFIG_SETTING_INTEREST_RATE :Rata dobânzii: {STRING} +STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Rata dobânzii; de asemenea controlează inflația dacă este activată +STR_CONFIG_SETTING_RUNNING_COSTS :Costuri de funcționare: {STRING} +STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT :Alege nivelul de întreținere și costul de rulare al vehiculelor sau al infrastructurii +STR_CONFIG_SETTING_CONSTRUCTION_SPEED :Viteza de construcție: {STRING} +STR_CONFIG_SETTING_CONSTRUCTION_SPEED_HELPTEXT :Limitează numărul de acțiuni de construcție pentru AI +STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS :Defecțiuni ale vehiculelor: {STRING} +STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS_HELPTEXT :Controlează cât de des se defectează vehiculele prost întreținute +STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER :Multiplicator al subvențiilor: {STRING} +STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT :Alege cât de mult se plătește pentru conexiuni subvenționate +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 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 î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_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} @@ -1110,14 +1163,8 @@ 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_TUNNEL_LENGTH :Lungimea maximă a tunelurilor: {STRING} @@ -1145,8 +1192,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 @@ -1177,10 +1222,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 @@ -1238,8 +1279,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ă @@ -1248,58 +1287,84 @@ STR_CONFIG_SETTING_STATION_SPREAD_HELPTEXT :Zona maximă î STR_CONFIG_SETTING_SERVICEATHELIPAD :Service automat pentru elicoptere la helipaduri: {STRING} STR_CONFIG_SETTING_SERVICEATHELIPAD_HELPTEXT :Efectueaza service pentru elicoptere la fiecare aterizare, chiar dacă nu există hangar acolo STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR :Conectează bara de instrumente pentru peisaj cu cea de construcţii feroviare/auto/navale/aeriene: {STRING} +STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR_HELPTEXT :La deschiderea unei bare de instrumente pentru construcția unor căi de transport, deschide și bara de instrumente pentru modificarea terenului STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR :Culoarea terenului folosită pentru harta mică: {STRING} +STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :Culoarea terenului pe harta mică STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :Verde STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :Verde închis STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Mov STR_CONFIG_SETTING_REVERSE_SCROLLING :Inversează direcţia de scroll: {STRING} +STR_CONFIG_SETTING_REVERSE_SCROLLING_HELPTEXT :Modul de funcționare in momentul folosirii butonului drept al mouse-ului pentru deplasare pe hartă. Când opțiunea este dezactivată, mouse-ul schimbă poziția camerei. La activare, mouse-ul desplasează harta. STR_CONFIG_SETTING_SMOOTH_SCROLLING :Derulare uşoară ecran: {STRING} +STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Controlează modul de deplasare a imaginii din ecranul principal când se face click pe harta mică sau când se execută o comandă de deplasare către un obiect anume de pe hartă. Dacă este activată, imaginea se deplasează în mod fluid, altfel imaginea sare direct la zona dorită STR_CONFIG_SETTING_MEASURE_TOOLTIP :Arată o indicaţie de distanţă la folosirea uneltelor de construcţie: {STRING} +STR_CONFIG_SETTING_MEASURE_TOOLTIP_HELPTEXT :Afișează distanțele în pătrățele și diferențele de înălțime la mișcarea mouse-ului în timpul operațiilor de construcție STR_CONFIG_SETTING_LIVERIES :Arată culorile companiilor: {STRING} +STR_CONFIG_SETTING_LIVERIES_HELPTEXT :Controlează modul de folosire al mărfurilor specifice anumitor vehicule (spre deosebire de cele specifice unor companii) STR_CONFIG_SETTING_LIVERIES_NONE :Niciunul STR_CONFIG_SETTING_LIVERIES_OWN :Propria companie STR_CONFIG_SETTING_LIVERIES_ALL :Toate companiile STR_CONFIG_SETTING_PREFER_TEAMCHAT :Chat între membrii echipei folosind tasta : {STRING} +STR_CONFIG_SETTING_PREFER_TEAMCHAT_HELPTEXT :Schimbă modul de afisare a conversatiei publice și a conversației interne a companiei, folosind tasta sau STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING :Funcţia roţii mouse-ului: {STRING} +STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING_HELPTEXT :Activează deplasarea imaginii folosind mouse cu roată de scroll bi-dimensională STR_CONFIG_SETTING_SCROLLWHEEL_ZOOM :Zoom hartă STR_CONFIG_SETTING_SCROLLWHEEL_SCROLL :Derulează harta STR_CONFIG_SETTING_SCROLLWHEEL_OFF :Inactivă STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER :Viteza de derulare a hărtii pt rotiţa mouse-ului: {STRING} +STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER_HELPTEXT :Controlează senzitivitatea roatei de scroll a mouse-ului +STR_CONFIG_SETTING_OSK_ACTIVATION :Tastatură virtuală: {STRING} +STR_CONFIG_SETTING_OSK_ACTIVATION_HELPTEXT :Alege metoda de deschidere a tastaturii virtuale, pentru a introduce text in câmpul de text folosind doar un mouse sau echipament hardware similar. Această opțiune este menită pentru aparate mici, care nu dețin o tastatură adevarată. +STR_CONFIG_SETTING_OSK_ACTIVATION_DISABLED :Dezactivat +STR_CONFIG_SETTING_OSK_ACTIVATION_DOUBLE_CLICK :Click dublu +STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK_FOCUS :Un singur click (când este în focus) +STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK :Un singur click (instant) STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU :Emulare click-dreapta: {STRING} +STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_HELPTEXT :Alege metoda de emulare a click-urilor provenite de la butonul din dreapta al mouse-ului STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Comandă+Click STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Control+Click 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_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} +STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_HELPTEXT :Alege ce acțiuni se pot efectua cât timp jocul este în pauză STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :nicio acţiune STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_CONSTRUCTION :toate acţiunile non-construcție STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_LANDSCAPING :toate exceptând modificarea peisajului STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_ACTIONS :toate acțiunile STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Foloseşte lista avansată de vehicule: {STRING} +STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Activează folosirea listelor avansate de vehicule pentru a gruparea acestor vehicule STR_CONFIG_SETTING_LOADING_INDICATORS :Foloseşte indicatorii de încărcare: {STRING} -STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :Arată orarul pe programări, nu pe zile: {STRING} +STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :Alege dacă indicatori de încărcare sunt afișați deasupra unor vehicule care sunt în proces de încărcare sau descărcare +STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :Arată orarul pe programări în unități de timp interne în loc de zile: {STRING} +STR_CONFIG_SETTING_TIMETABLE_IN_TICKS_HELPTEXT :Arată timpii de călatorie în tabela cu timpi a jocului folosind unități de timp interne în loc de zile 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ă STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_LAST :Ultima disponibilă STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_MOST_USED :Cea mai folosită STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :Arată liniile rezervate: {STRING} +STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION_HELPTEXT :Acordă căilor feroviare rezervate o culoare diferită pentru a depista mai ușor probleme cum ar fi trenuri refuzând intrarea în secțiuni bazate pe căi stabilite anterior STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :Pastrează active instrumentele de construcţie după utilizare: {STRING} +STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Menține barele de construcție pentru tunele, poduri șamd deschise după folosire STR_CONFIG_SETTING_EXPENSES_LAYOUT :Grupează cheltuielile în raportul financiar al companiei: {STRING} +STR_CONFIG_SETTING_EXPENSES_LAYOUT_HELPTEXT :Definește stilul ferestrei care afișează cheltuielile companiei STR_CONFIG_SETTING_SOUND_TICKER :Afișaj știri: {STRING} STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :Redă sunet la afișarea sumarului știrilor @@ -1319,38 +1384,81 @@ STR_CONFIG_SETTING_SOUND_AMBIENT :Ambient: {STRIN STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :Redă sunetele ambientale ale peisajului, industriei și orașelor STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING :Dezactivează construcția de infrastructuri pentru care nu există vehicule disponibile: {STRING} +STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING_HELPTEXT :Dacă este activată, infrastructura este disponibilă doar când există vehicule sau nave, prevenind astfel pierderea de timp si fonduri pe infrastructură inutilă în acel moment STR_CONFIG_SETTING_MAX_TRAINS :Nr. max. de trenuri per companie: {STRING} +STR_CONFIG_SETTING_MAX_TRAINS_HELPTEXT :Numărul maxim de trenuri pe care o companie le poate deține STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :Nr. max. de autovehicule per companie: {STRING} +STR_CONFIG_SETTING_MAX_ROAD_VEHICLES_HELPTEXT :Numărul maxim de vehicule rutiere pe care o companie le poate deține STR_CONFIG_SETTING_MAX_AIRCRAFT :Nr. max. de aeronave per companie: {STRING} +STR_CONFIG_SETTING_MAX_AIRCRAFT_HELPTEXT :Numărul maxim de aeronave pe care o companie le poate deține STR_CONFIG_SETTING_MAX_SHIPS :Nr. max. de nave per companie: {STRING} +STR_CONFIG_SETTING_MAX_SHIPS_HELPTEXT :Numărul maxim de nave pe care o companie le poate deține STR_CONFIG_SETTING_AI_BUILDS_TRAINS :Dezactivează trenurile pentru jucătorii controlaţi de calculator: {STRING} +STR_CONFIG_SETTING_AI_BUILDS_TRAINS_HELPTEXT :Prin activarea acestei opțiuni, jucatorul controlat de calculator nu poate construi trenuri STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES :Dezactivează autovehiculele pentru jucătorii controlaţi de calculator: {STRING} +STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES_HELPTEXT :Prin activarea acestei opțiuni, jucatorul controlat de calculator nu poate construi vehicule rutiere STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT :Dezactivează aeronavele pentru jucătorii controlaţi de calculator: {STRING} +STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT_HELPTEXT :Prin activarea acestei opțiuni, jucatorul controlat de calculator nu poate construi aeronave STR_CONFIG_SETTING_AI_BUILDS_SHIPS :Dezactivează navele pentru jucătorii controlaţi de calculator: {STRING} +STR_CONFIG_SETTING_AI_BUILDS_SHIPS_HELPTEXT :Prin activarea acestei opțiuni, jucatorul controlat de calculator nu poate construi nave +STR_CONFIG_SETTING_AI_PROFILE :Configurația implicită: {STRING} +STR_CONFIG_SETTING_AI_PROFILE_HELPTEXT :Alege o configurație care va fi folosită pentru AI aleator, sau care va fi furniza valori implicite când se adaugă un nou AI sau script +STR_CONFIG_SETTING_AI_PROFILE_EASY :Ușor +STR_CONFIG_SETTING_AI_PROFILE_MEDIUM :Mediu +STR_CONFIG_SETTING_AI_PROFILE_HARD :Dificil STR_CONFIG_SETTING_AI_IN_MULTIPLAYER :Permite Inteligenţă Artificială în multiplayer: {STRING} +STR_CONFIG_SETTING_AI_IN_MULTIPLAYER_HELPTEXT :Permite ca jucătorii controlați de AI să participe în jocuri multiplayer STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES :Număr opcodes înainte de suspendarea scripturilor: {STRING} +STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES_HELPTEXT :Numărul maxim de instrucțiuni pe care un script le poate executa pe parcursul unei ture STR_CONFIG_SETTING_SERVINT_ISPERCENT :Intervaluri de service în procente: {STRING} +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 +STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Intervalul de întreținere implicit al aeronavelor: {STRING} +STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Alege perioada de întreținere implicită pentru noi aeronave, dacă nu există un interval de întreținere stabilit pentru aeronave +STR_CONFIG_SETTING_SERVINT_SHIPS :Intervalul de întreținere implicit al navelor: {STRING} +STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Alege perioada de întreținere implicită pentru noi nave, dacă nu există un interval de întreținere stabilit pentru nave STR_CONFIG_SETTING_NOSERVICE :Deactivare service când defecţiunile nu sunt active: {STRING} +STR_CONFIG_SETTING_NOSERVICE_HELPTEXT :Dacă este activată, vehiculele nu vor întreținute dacă nu se pot defecta STR_CONFIG_SETTING_WAGONSPEEDLIMITS :Activează limite de viteză pentru vagoane: {STRING} +STR_CONFIG_SETTING_WAGONSPEEDLIMITS_HELPTEXT :Dacă este activată, folosește și limita de viteză a vagoanelor pentru a stabili viteza maximă a trenului STR_CONFIG_SETTING_DISABLE_ELRAILS :Dezactivează şinele electrice: {STRING} +STR_CONFIG_SETTING_DISABLE_ELRAILS_HELPTEXT :Prin activarea acestei opțiuni, se dezactivează cerința de a avea cale feroviară electrificată pentru a putea folosi locomotive electrice pe această cale feroviară STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN :Sosirea primului vehicul la una din staţiile tale: {STRING} +STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN_HELPTEXT :Afișează un ziar când o stație nouă a companiei primește primul vehicul STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER :Sosirea primului vehicul la una din staţiile competitorilor: {STRING} +STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER_HELPTEXT :Afișează un ziar când o stație nouă a unui competitor primește primul vehicul STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS :Accidente / dezastre: {STRING} +STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS_HELPTEXT :Afișează un ziar când există un accident sau un dezastru natural STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION :Informaţii despre companie: {STRING} +STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION_HELPTEXT :Afișează un ziar când o nouă companie este înființată, sau când o companie este pe cale de a intra în faliment STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN :Inaugurare industrii: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN_HELPTEXT :Afișează un ziar când o nouă industrie este înființată STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE :Închidere industrii: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE_HELPTEXT :Afișează un ziar când o industrie este inchisă STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES :Schimbări economice: {STRING} +STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES_HELPTEXT :Afișează un ziar când apar schimbări globale ale economiei STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY :Schimbări de producţie ale industriilor partenere cu compania: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY_HELPTEXT :Afișează un ziar când nivelul de producție al unei industrii, deservită de companie, se schimbă STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER :Schimbări de producţie ale industriilor partenere cu concurenţa: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER_HELPTEXT :Afișează un ziar când nivelul de producție al unei industrii, deservită de competitori, se schimbă STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED :Alte schimbări în producţia industrială: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED_HELPTEXT :Afișează un ziar când nivelul de producție al unei industrii, neservită de companie sau competitori, se schimbă STR_CONFIG_SETTING_NEWS_ADVICE :Sugestii / informaţii despre vehiculele companiei: {STRING} +STR_CONFIG_SETTING_NEWS_ADVICE_HELPTEXT :Afișează mesaje referitoare la vehicule care trebuie inspectate STR_CONFIG_SETTING_NEWS_NEW_VEHICLES :Vehicule noi: {STRING} +STR_CONFIG_SETTING_NEWS_NEW_VEHICLES_HELPTEXT :Afișează un ziar când un nou tip de vehicul devine disponibil STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE :Schimbări ale acceptării mărfurilor: {STRING} +STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE_HELPTEXT :Afișează mesaje referitoare la modificarea tipurilor de cargo acceptate de către stații STR_CONFIG_SETTING_NEWS_SUBSIDIES :Subvenţii: {STRING} STR_CONFIG_SETTING_NEWS_SUBSIDIES_HELPTEXT :Afișează ziarul evenimentelor legate de subvenții STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION :Informaţii generale: {STRING} @@ -1361,43 +1469,68 @@ STR_CONFIG_SETTING_NEWS_MESSAGES_SUMMARY :Pe scurt STR_CONFIG_SETTING_NEWS_MESSAGES_FULL :Pe larg STR_CONFIG_SETTING_COLOURED_NEWS_YEAR :Ştirile color apar în: {STRING} +STR_CONFIG_SETTING_COLOURED_NEWS_YEAR_HELPTEXT :Anul începând cu care anunțurile din ziar sunt tipărite color. Înainte de acest an, anunturile sunt monocrome (alb/negru) STR_CONFIG_SETTING_STARTING_YEAR :Anul de început al jocului: {STRING} STR_CONFIG_SETTING_SMOOTH_ECONOMY :Economie cu schimbări mai reduse, dar mai frecvente: {STRING} +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 contruit, în loc sa se selecteze tipul de semnal prin cliclare folosind 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 STR_CONFIG_SETTING_TOWN_LAYOUT_3X3_GRID :grilă 3x3 STR_CONFIG_SETTING_TOWN_LAYOUT_RANDOM :aleator STR_CONFIG_SETTING_ALLOW_TOWN_ROADS :Oraşele pot construi drumuri: {STRING} +STR_CONFIG_SETTING_ALLOW_TOWN_ROADS_HELPTEXT :Permite ca orașele să construiască șosele pentru a se dezvolta. Dezactivează pentru a nu permite orașelor să construiască independent șosele STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :Oraşele au voie să construiască treceri la nivel cu calea ferată: {STRING} +STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS_HELPTEXT :Dacă este activată, orașele vor putea să construiască treceri la nivel cu calea ferată STR_CONFIG_SETTING_NOISE_LEVEL :Permite controlarea nivelului de zgomot al aeroportului de către oras: {STRING} +STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :Dacă această opțiune este dezactivată, pot exista două aeroporturi în fiecare oraș. Când opțiunea este activată, numărul de aeroporturi este limitat de nivelul de zgomot acceptat de oraș, care depinde de populație, mărimea aeroportului și distanța față de oraș STR_CONFIG_SETTING_TOWN_FOUNDING :Crearea oraşelor în joc: {STRING} +STR_CONFIG_SETTING_TOWN_FOUNDING_HELPTEXT :Dacă este activată, jucătorii pot fonda noi orașe în joc STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :nepermis STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :permis STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :permis, aspect particularizat al oraşului STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT :Poziţionarea copacilor în joc: {STRING} +STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_HELPTEXT :Controlează apariția aleatoare a copacilor în joc. Este posibil ca această opțiune să afecteze industrii care depind de creșterea copacilor, cum ar fi fabricile de cherestea STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NONE :niciunul {RED}(afectează producţia fabricii de cherestea) STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_RAINFOREST :doar în pădurile tropicale 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} STR_CONFIG_SETTING_ZOOM_LVL_MIN :x4 @@ -1419,28 +1552,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 din 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 din 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 @@ -1474,6 +1647,8 @@ STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_ALGORITHM :{WHITE}... form STR_CONFIG_ERROR_INVALID_BASE_GRAPHICS_NOT_FOUND :{WHITE}... setul de bază pentru grafică '{STRING}' este ignorat: nu a fost găsit STR_CONFIG_ERROR_INVALID_BASE_SOUNDS_NOT_FOUND :{WHITE}... setul de bază pentru sunete '{STRING}' este ignorat: nu a fost găsit STR_CONFIG_ERROR_INVALID_BASE_MUSIC_NOT_FOUND :{WHITE}... setul de bază pentru muzică '{STRING}' este ignorat: nu a fost găsit +STR_CONFIG_ERROR_OUT_OF_MEMORY :{WHITE}Fără memorie +STR_CONFIG_ERROR_SPRITECACHE_TOO_BIG :{WHITE}Nu s-au putut rezerva {BYTES} pentru cache al sprite-urilor. Mărimea cache-ului a fost redusă la {BYTES}. Performanța OpenTTD va fi redusă. Pentru a micșora cerințele jocului cu privire la memorie, poți încerca să dezactivezi modul grafic 32bpp și/sau reducerea numărului de nivele zoom # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} @@ -1486,6 +1661,7 @@ STR_INTRO_SCENARIO_EDITOR :{BLACK}Editor h STR_INTRO_MULTIPLAYER :{BLACK}Multiplayer 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_NEWGRF_SETTINGS :{BLACK}Setări NewGRF STR_INTRO_ONLINE_CONTENT :{BLACK}Resurse online @@ -1505,6 +1681,7 @@ STR_INTRO_TOOLTIP_SUB_TROPICAL_LANDSCAPE :{BLACK}Alege pe STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Alege peisajul 'ţara jucăriilor' 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_NEWGRF_SETTINGS :{BLACK}Afişează setările NewGRF STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Verifică dacă există resurse noi sau actualizate pentru descărcare @@ -1593,6 +1770,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ă @@ -1648,10 +1826,10 @@ STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}Schimbă # Network server list STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}Multiplayer -STR_NETWORK_SERVER_LIST_CONNECTION :{BLACK}Conexiune: -STR_NETWORK_SERVER_LIST_CONNECTION_TOOLTIP :{BLACK}Alege între un joc pe internet şi unul în reţea (LAN) -STR_NETWORK_SERVER_LIST_LAN :LAN -STR_NETWORK_SERVER_LIST_INTERNET :Internet +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 STR_NETWORK_SERVER_LIST_PLAYER_NAME :{BLACK}Numele jucătorului: STR_NETWORK_SERVER_LIST_ENTER_NAME_TOOLTIP :{BLACK}Acesta este numele prin care te vor identifica ceilalţi @@ -1710,8 +1888,8 @@ STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP :{BLACK}Numele j STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}Pune parolă STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Protejează-ţi jocul cu o parolă dacă nu vrei să intre jucători neautorizaţi -STR_NETWORK_START_SERVER_LAN_INTERNET :LAN / Internet -STR_NETWORK_START_SERVER_INTERNET_ADVERTISE :Internet (fă reclamă) +STR_NETWORK_START_SERVER_UNADVERTISED :Nu +STR_NETWORK_START_SERVER_ADVERTISED :Da STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} clien{P t ţi} STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Număr maxim de clienţi: STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}Alege un număr maxim de clienţi. Nu trebuie ocupate toate locurile. @@ -1832,6 +2010,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 @@ -1950,6 +2129,10 @@ STR_CONTENT_SELECT_UPDATES_CAPTION :{BLACK}Sel. act STR_CONTENT_SELECT_UPDATES_CAPTION_TOOLTIP :{BLACK}Marchează toate resursele care sunt actualizări ale resurselor existente pentru descărcare STR_CONTENT_UNSELECT_ALL_CAPTION :{BLACK}Deselectează tot STR_CONTENT_UNSELECT_ALL_CAPTION_TOOLTIP :{BLACK}Deselectează toate resursele selectate +STR_CONTENT_SEARCH_EXTERNAL :{BLACK}Caută pe site-uri externe +STR_CONTENT_SEARCH_EXTERNAL_TOOLTIP :{BLACK}Caută conținut care nu este disponibil pe serverele OpenTTD pe site-uri care nu sunt asociate cu OpenTTD +STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER_CAPTION :{WHITE}Ești pe cale de a ieși din OpenTTD! +STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER :{WHITE}Termenii și condițiile impuse la descărcarea de pe site-uri web externe pot varia:{}Va trebui să accesezi site-urile externe pentru informații referitoare la modul de instalare a conținutului în OpenTTD.{}Dorești să continui? STR_CONTENT_FILTER_TITLE :{BLACK}Filtru nume/etichetă: STR_CONTENT_OPEN_URL :{BLACK}Vizitează site-ul web STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}Vizitează site-ul web al acestei resurse @@ -2019,6 +2202,17 @@ STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}Comută STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Comută transparenţa pentru indicatorii de încarcare. Ctrl+Click pentru blocare STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}Setează obiectele ca invizibile în loc de transparente +# Linkgraph legend window +STR_LINKGRAPH_LEGEND_CAPTION :{BLACK}Legenda flux încărcătură +STR_LINKGRAPH_LEGEND_ALL :{BLACK}Toate +STR_LINKGRAPH_LEGEND_NONE :{BLACK}Nici una +STR_LINKGRAPH_LEGEND_SELECT_COMPANIES :{BLACK}Alege companiile care vor fi afișate + +# Linkgraph legend window and linkgraph legend in smallmap +STR_LINKGRAPH_LEGEND_UNUSED :{TINY_FONT}{BLACK}nefolosit +STR_LINKGRAPH_LEGEND_SATURATED :{TINY_FONT}{BLACK}saturat +STR_LINKGRAPH_LEGEND_OVERLOADED :{TINY_FONT}{BLACK}supraîncărcat + # Base for station construction window(s) STR_STATION_BUILD_COVERAGE_AREA_TITLE :{BLACK}Aria de acoperire STR_STATION_BUILD_COVERAGE_OFF :{BLACK}Inactiv @@ -2096,7 +2290,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 @@ -2293,6 +2487,10 @@ STR_INDUSTRY_DISPLAY_CHAIN :{BLACK}Afişeaz STR_INDUSTRY_DISPLAY_CHAIN_TOOLTIP :{BLACK}Afişează industriile care furnizează şi acceptă cargo STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP :{BLACK}Link către harta mică STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP_TOOLTIP :{BLACK}Selectează industriile afişate şi pe harta mică +STR_INDUSTRY_CARGOES_SELECT_CARGO :{BLACK}Alege tipul de marfă +STR_INDUSTRY_CARGOES_SELECT_CARGO_TOOLTIP :{BLACK}Alege tipul de marfă pe care dorești să îl afișezi +STR_INDUSTRY_CARGOES_SELECT_INDUSTRY :{BLACK}Alege industria +STR_INDUSTRY_CARGOES_SELECT_INDUSTRY_TOOLTIP :{BLACK}Alege industria pe care dorești să o afișezi: # Land area window STR_LAND_AREA_INFORMATION_CAPTION :{WHITE}Informaţii teren @@ -2413,7 +2611,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-2012 Echipa OpenTTD +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2014 Echipa OpenTTD # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Salvează joc @@ -2442,6 +2640,7 @@ STR_SAVELOAD_OSKTITLE :{BLACK}Introduc # World generation STR_MAPGEN_WORLD_GENERATION_CAPTION :{WHITE}Generare lume STR_MAPGEN_MAPSIZE :{BLACK}Mărime hartă: +STR_MAPGEN_MAPSIZE_TOOLTIP :{BLACK}Alege mărimea hărții folosind ca unitate de măsură suprafețele. Numărul de suprafețe disponibile va fi puțin mai mic decât această valoare STR_MAPGEN_BY :{BLACK}* STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Nr. de oraşe: STR_MAPGEN_DATE :{BLACK}Data: @@ -2449,10 +2648,6 @@ STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Nr. de i 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: @@ -2479,7 +2674,6 @@ 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_SNOW_LINE_QUERY_CAPT :{WHITE}Modifică înălţimea zăpezii STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Modifică anul de început @@ -2534,7 +2728,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 @@ -2558,6 +2752,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 @@ -2617,6 +2813,7 @@ STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Conține mai multe intrări pentru Acțiunea 8 (sprite {3:NUM}) STR_NEWGRF_ERROR_READ_BOUNDS :Citire după sfârşitul preudo-elementului grafic (sprite {3:NUM}) STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}Unele imagini lipsesc din setul grafic de bază.{}Vă rugăm actualizaţi setul grafic de bază +STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE} Pachetul grafic de bază folosit în acest moment este incomplet, un număr de sprite-uri lipsesc ..{}Trebuie să actualizezi acest pachet grafic de bază.{}Deoarece te joci o {YELLOW}versiune de dezvoltare a OpenTTD{WHITE}, este posibil să ai nevoie de o {YELLOW}versiune de dezvoltare a pachetului grafic de bază{WHITE} STR_NEWGRF_ERROR_GRM_FAILED :Resursele GRF solicitate nu sunt disponibile (sprite {3:NUM}) STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} a fost dezactivat de {STRING} STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Structură necunoscută/invalidă pentru elementul grafic (sprite {3:NUM}) @@ -2627,6 +2824,7 @@ STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}Eşti p STR_NEWGRF_DUPLICATE_GRFID :{WHITE}Nu pot adăuga fişierul: ID GRF duplicat STR_NEWGRF_COMPATIBLE_LOADED :{ORANGE}Nu am găsit niciun fişier corespunzător (am încărcat un GRF compatibil) +STR_NEWGRF_TOO_MANY_NEWGRFS :{WHITE}Nu pot adăuga fișierul: Limita de fișiere NewGRF este atinsă STR_NEWGRF_COMPATIBLE_LOAD_WARNING :{WHITE}GRF-uri compatibile au fost încărcate pentru fişierele lipsă STR_NEWGRF_DISABLED_WARNING :{WHITE}Fişierele GRF lipsă au fost dezactivate @@ -2657,6 +2855,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... @@ -2738,10 +2939,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}Ţinte +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 @@ -2780,6 +2985,18 @@ STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}Subvenţ STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}- {STRING} de la {STRING} la {STRING}{YELLOW} ({COMPANY}{YELLOW}, până în {DATE_SHORT}) 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 STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}Ţine apăsat Ctrl pentru a alege mai multe obiecte @@ -2793,9 +3010,9 @@ 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) STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Acceptă STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Afişează lista de încărcături acceptate @@ -2806,8 +3023,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_RATINGS_TITLE :{BLACK}Evaluarea serviciilor de transport local: -STR_STATION_VIEW_CARGO_RATING :{WHITE}{STRING}: {YELLOW}{STRING} ({COMMA}%) +STR_STATION_VIEW_CARGO_SUPPLY_RATING :{WHITE}{STRING}: {YELLOW}{COMMA} / {STRING} ({COMMA}%) + +STR_STATION_VIEW_GROUP :{BLACK}Grupare 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 @@ -2934,7 +3173,6 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS :{WHITE}Canale STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}Stații: STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}Suprafață stații STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}Aeroporturi -STR_COMPANY_INFRASTRUCTURE_VIEW_COST :{WHITE}{1:CURRENCY_LONG}/an ({0:COMMA}) STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL :{WHITE}{CURRENCY_LONG}/an # Industry directory @@ -2951,6 +3189,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} @@ -3019,6 +3258,7 @@ 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_GROUP_ADD_SHARED_VEHICLE :Adaugă vehicule partajate STR_GROUP_REMOVE_ALL_VEHICLES :Elimină toate vehiculele @@ -3314,6 +3554,11 @@ STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Interval STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Măreşte intervalul de service cu 10. Ctrl+click măreşte intervalul de service cu 5 STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Micşorează intervalul de service cu 10. Ctrl+Click micşorează intervalul de service cu 5 +STR_SERVICE_INTERVAL_DROPDOWN_TOOLTIP :{BLACK}Schimbă tipul intervalului de întreținere +STR_VEHICLE_DETAILS_DEFAULT :Standard +STR_VEHICLE_DETAILS_DAYS :Zile +STR_VEHICLE_DETAILS_PERCENT :Procent + STR_QUERY_RENAME_TRAIN_CAPTION :{WHITE}Numele trenului STR_QUERY_RENAME_ROAD_VEHICLE_CAPTION :{WHITE}Numele autovehiculului STR_QUERY_RENAME_SHIP_CAPTION :{WHITE}Denumeşte această navă @@ -3349,7 +3594,7 @@ STR_REFIT_NEW_CAPACITY_COST_OF_REFIT :{BLACK}Capacita STR_REFIT_NEW_CAPACITY_INCOME_FROM_REFIT :{BLACK}Capacitate nouă: {GOLD}{CARGO_LONG}{}{BLACK}Venituri din schimbare: {GREEN}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_COST_OF_AIRCRAFT_REFIT :{BLACK}Capacitate nouă: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Costul schimbării: {RED}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_INCOME_FROM_AIRCRAFT_REFIT :{BLACK}Capacitate nouă: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Venituri din schimbare: {GREEN}{CURRENCY_LONG} -STR_REFIT_SELECT_VEHICLES_TOOLTIP :{BLACK}Seletează vehiculele pentru modificare. Trage cu mouse-ul pentru a selecta mai multe vehicule. Click pe spațiu gol pentru a selecta intregul vehicul. Ctrl+Click va selecta un vehicul si lanțul atașat +STR_REFIT_SELECT_VEHICLES_TOOLTIP :{BLACK}Selectează vehiculele pentru modificare. Trage cu mouse-ul pentru a selecta mai multe vehicule. Click pe spațiu gol pentru a selecta intregul vehicul. Ctrl+Click va selecta un vehicul si lanțul atașat STR_REFIT_TRAIN_LIST_TOOLTIP :{BLACK}Alege tipul de marfă transportat de tren STR_REFIT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Alege tipul de marfă pe care o transportă autovehiculul @@ -3361,15 +3606,15 @@ STR_REFIT_ROAD_VEHICLE_REFIT_BUTTON :{BLACK}Adaptare STR_REFIT_SHIP_REFIT_BUTTON :{BLACK}Schimbă marfa transportată de navă STR_REFIT_AIRCRAFT_REFIT_BUTTON :{BLACK}Schimbă marfa transportată de aeronavă -STR_REFIT_TRAIN_REFIT_TOOLTIP :{BLACK}Modificã trenul pentru a transporta marfa aleasã -STR_REFIT_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}Adapteaza autovehiculul pentru transportul incarcaturii evidentiate +STR_REFIT_TRAIN_REFIT_TOOLTIP :{BLACK}Modifică trenul pentru a transporta marfa aleasă +STR_REFIT_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}Adaptează vehiculul rutier pentru transportul încărcăturii alese STR_REFIT_SHIP_REFIT_TOOLTIP :{BLACK}Schimbă tipul de încărcătură al navei cu cel selectat -STR_REFIT_AIRCRAFT_REFIT_TOOLTIP :{BLACK}Schimbă tipul de încărcătură al aeronavei cu cel selectat +STR_REFIT_AIRCRAFT_REFIT_TOOLTIP :{BLACK}Modifică aeronava pentru a transporta tipul de încărcătură ales # Order view STR_ORDERS_CAPTION :{WHITE}{VEHICLE} (Comenzi) STR_ORDERS_TIMETABLE_VIEW :{BLACK}Orar -STR_ORDERS_TIMETABLE_VIEW_TOOLTIP :{BLACK}Comuta in modul de vizualizare orar +STR_ORDERS_TIMETABLE_VIEW_TOOLTIP :{BLACK}Comută în modul de vizualizare orar STR_ORDERS_LIST_TOOLTIP :{BLACK}Lista de comenzi - clic pe o comandă pentru a o selecta. Ctrl+Click poziţionează ecranul pe staţia destinație STR_ORDER_INDEX :{COMMA}:{NBSP} @@ -3481,7 +3726,7 @@ STR_ORDER_IMPLICIT :(Implicit) STR_ORDER_FULL_LOAD :(Încărcare maximă) STR_ORDER_FULL_LOAD_ANY :(Încărcare orice produs) STR_ORDER_NO_LOAD :(Fără încărcare) -STR_ORDER_UNLOAD :(Descarcă şi preia marfa) +STR_ORDER_UNLOAD :(Descarcă şi preia încărcătura) STR_ORDER_UNLOAD_FULL_LOAD :(Descarcă şi aşteaptă încărcare maximă) STR_ORDER_UNLOAD_FULL_LOAD_ANY :(Descarcă şi aşteaptă orice încărcătură) STR_ORDER_UNLOAD_NO_LOAD :(Descarcă şi pleacă) @@ -3549,7 +3794,6 @@ STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}Acest or STR_TIMETABLE_STATUS_START_AT :{BLACK}Acest orar va începe la {STRING} STR_TIMETABLE_STARTING_DATE :{BLACK}Dată pornire -STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Alege o dată de pornire pentru acestu orar STR_TIMETABLE_CHANGE_TIME :{BLACK}Modifică timpul STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Modifică durata de timp alocată pentru comanda selectată @@ -3599,7 +3843,7 @@ STR_AI_DEBUG_BREAK_ON_LABEL :{BLACK}Opreşte STR_AI_DEBUG_BREAK_STR_OSKTITLE :{BLACK}Opreşte la STR_AI_DEBUG_BREAK_STR_TOOLTIP :{BLACK}Când un mesaj al modului de IA se potriveşte cu acest string, se suspendă jocul STR_AI_DEBUG_MATCH_CASE :{BLACK}Potrivire majuscule/minuscule -STR_AI_DEBUG_MATCH_CASE_TOOLTIP :{BLACK}Comuntă potrivirea pe majuscule/minuscule când se compară fişierele log de la IA cu string-ul de oprire +STR_AI_DEBUG_MATCH_CASE_TOOLTIP :{BLACK}Comută potrivirea pe majuscule/minuscule când se compară fişierele log ale AI cu string-ul de oprire STR_AI_DEBUG_CONTINUE :{BLACK}Continuă STR_AI_DEBUG_CONTINUE_TOOLTIP :{BLACK}Continuă execuţia modulului de Inteligenţă Artificială STR_AI_DEBUG_SELECT_AI_TOOLTIP :{BLACK}Vizualizează datele de debug ale acestui modul de IA @@ -3685,6 +3929,10 @@ STR_INCOME_FLOAT_INCOME_SMALL :{TINY_FONT}{GRE STR_INCOME_FLOAT_INCOME :{GREEN}Venituri: {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}Venit: {CURRENCY_LONG} +STR_FEEDER_INCOME :{YELLOW}Transfer: {CURRENCY_LONG}{WHITE} / {GREEN}Venit: {CURRENCY_LONG} +STR_FEEDER_COST_TINY :{TINY_FONT}{YELLOW}Transfer: {CURRENCY_LONG}{WHITE} / {RED}Preț: {CURRENCY_LONG} +STR_FEEDER_COST :{YELLOW}Transfer: {CURRENCY_LONG}{WHITE} / {RED}Preț: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_COST :{WHITE}Cost estimat: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Venit estimat: {CURRENCY_LONG} @@ -3725,6 +3973,8 @@ STR_WARNING_HEIGHTMAP_SCALE_MESSAGE :{YELLOW}Redimen STR_WARNING_FALLBACK_SOUNDSET :{WHITE}Doar un set nul de efecte sonore a fost găsit. Dacă doreşti sunete, instalează un set de sunete folosind sistemul de Resurse Online # Screenshot related messages +STR_WARNING_SCREENSHOT_SIZE_CAPTION :{WHITE}Imagine de dimensiune foarte mare +STR_WARNING_SCREENSHOT_SIZE_MESSAGE :{YELLOW}Imaginea capturata va avea o dimensiune de {COMMA} x {COMMA} pixeli. Realizarea unei capturi va dura puțin timp. Dorești să continui? STR_MESSAGE_SCREENSHOT_SUCCESSFULLY :{WHITE}Imagine salvată cu succes pe disc în fişierul '{STRING}' STR_ERROR_SCREENSHOT_FAILED :{WHITE}Imaginea nu a putut fi capturată! @@ -4034,6 +4284,11 @@ 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... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Nu se poate schimba sensul de mers al trenului... @@ -4076,6 +4331,16 @@ STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}Nu pot s # Translatable comment for OpenTTD's desktop shortcut STR_DESKTOP_SHORTCUT_COMMENT :Un joc de simulare bazat pe Transport Tycoon Deluxe +# Translatable descriptions in media/baseset/*.ob* files +STR_BASEGRAPHICS_DOS_DESCRIPTION :Setul grafic original al Transport Tycoon Deluxe pentru DOS. +STR_BASEGRAPHICS_DOS_DE_DESCRIPTION :Setul grafic original al Transport Tycoon Deluxe pentru DOS (ediţia germană). +STR_BASEGRAPHICS_WIN_DESCRIPTION :Setul grafic original al Transport Tycoon Deluxe pentru Windows. +STR_BASESOUNDS_DOS_DESCRIPTION :Setul de sunete original al Transport Tycoon Deluxe pentru DOS. +STR_BASESOUNDS_WIN_DESCRIPTION :Setul de sunete original al Transport Tycoon Deluxe pentru Windows. +STR_BASESOUNDS_NONE_DESCRIPTION :Un set de sunete fără nici un sunet inclus. +STR_BASEMUSIC_WIN_DESCRIPTION :Setul de muzică original al Transport Tycoon Deluxe pentru Windows. +STR_BASEMUSIC_NONE_DESCRIPTION :Un set de muzică fără muzică inclusă. + ##id 0x2000 # Town building names STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1 :Clădire înaltă de birouri @@ -4198,7 +4463,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) @@ -4407,7 +4672,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 @@ -4522,8 +4787,9 @@ 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_SPACE_STRING :{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} @@ -4547,9 +4813,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 f5aa29b17..bc0ab1448 100644 --- a/src/lang/russian.txt +++ b/src/lang/russian.txt @@ -325,21 +325,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 :{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 :{COMMA} литр{P "" а ов} STR_UNITS_VOLUME_LONG_SI :{COMMA} м³ +STR_UNITS_FORCE_IMPERIAL :{COMMA} фунт{P "" а ов}-силы +STR_UNITS_FORCE_METRIC :{COMMA} кгс STR_UNITS_FORCE_SI :{COMMA} кН STR_UNITS_HEIGHT_IMPERIAL :{COMMA} фут{P "" а ов} +STR_UNITS_HEIGHT_METRIC :{COMMA} м STR_UNITS_HEIGHT_SI :{COMMA} м # Common window strings @@ -347,6 +354,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}Выберите фильтр @@ -358,7 +366,8 @@ 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+щелчок установит такое поведение по умолчанию. STR_TOOLTIP_RESIZE :{BLACK}Нажмите и тащите для изменения размера окна STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Большое/маленькое окно STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Прокрутка вверх/вниз @@ -382,7 +391,6 @@ STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}Площ # These are used in buttons -STR_SORT_BY_CAPTION_POPULATION :{BLACK}Население STR_SORT_BY_CAPTION_NAME :{BLACK}Название STR_SORT_BY_CAPTION_DATE :{BLACK}Дата # These are used in dropdowns @@ -403,7 +411,8 @@ STR_SORT_BY_LENGTH :Длина STR_SORT_BY_LIFE_TIME :Оставшийся срок службы STR_SORT_BY_TIMETABLE_DELAY :Отставание от графика STR_SORT_BY_FACILITY :Тип станции -STR_SORT_BY_WAITING :Кол-во товара на станции +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 :Идентификатор (классическая сортировка) @@ -415,6 +424,8 @@ 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}Пауза @@ -427,6 +438,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}Список существующих предприятий; создание новых @@ -497,19 +510,19 @@ STR_FILE_MENU_SEPARATOR : STR_FILE_MENU_EXIT :Выход ############ range ends here -############ range for map menu starts +# 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, yet the town directory is shown in the map menu in the scenario editor + +############ range for town menu starts STR_TOWN_MENU_TOWN_DIRECTORY :Список городов -############ end of the 'Display map' dropdown STR_TOWN_MENU_FOUND_TOWN :Основать город -############ end of the 'Town' dropdown +############ range ends here ############ range for subsidies menu starts STR_SUBSIDIES_MENU_SUBSIDIES :Субсидии -STR_SUBSIDIES_MENU_GOAL :Текущие задачи ############ range ends here ############ range for graph menu starts @@ -583,7 +596,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-е @@ -599,22 +612,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 @@ -795,7 +826,7 @@ STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL :Транспо STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL.abl :транспортным королём STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY :Магнат Века STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY.abl :Магнатом Века -STR_HIGHSCORE_NAME :{BIG_FONT}{PRESIDENT_NAME}, {COMPANY} +STR_HIGHSCORE_NAME :{PRESIDENT_NAME}, {COMPANY} STR_HIGHSCORE_STATS :{BIG_FONT}«{STRING}» ({COMMA}) STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{BLACK}Директора компании «{COMPANY}» называют {STRING.abl}! STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{WHITE}{PRESIDENT_NAME}, президент компании «{COMPANY}», заслужил титул «{STRING}»! @@ -806,17 +837,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+щелчок отключает все типы, кроме выбранного. Повторный 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}Железные дороги @@ -850,6 +884,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}Выключить все @@ -860,6 +895,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}Показать последнее сообщение или новость @@ -936,13 +973,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}» сильно устарело @@ -1021,21 +1057,18 @@ 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 -STR_GAME_OPTIONS_MEASURING_UNITS_FRAME :{BLACK}Единицы измерения -STR_GAME_OPTIONS_MEASURING_UNITS_DROPDOWN_TOOLTIP :{BLACK}Используемая система единиц измерения ############ start of measuring units region -STR_GAME_OPTIONS_MEASURING_UNITS_IMPERIAL :Британские -STR_GAME_OPTIONS_MEASURING_UNITS_METRIC :Метрические -STR_GAME_OPTIONS_MEASURING_UNITS_SI :СИ ############ 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}На каком языке будут названы населённые пункты @@ -1067,11 +1100,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}Язык пользовательского интерфейса @@ -1083,9 +1118,6 @@ 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}Выбрать базовый набор графики STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} отсутствующи{P й х х}/повреждённы{P й х х} файл{P "" а ов} @@ -1101,6 +1133,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 @@ -1170,9 +1203,9 @@ 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 @@ -1182,11 +1215,11 @@ STR_SUBSIDY_X4 :x4 STR_TERRAIN_TYPE_VERY_FLAT :Очень плоский STR_TERRAIN_TYPE_FLAT :Плоский STR_TERRAIN_TYPE_HILLY :Холмистый -STR_TERRAIN_TYPE_MOUNTAINOUS :Гористый +STR_TERRAIN_TYPE_MOUNTAINOUS :Горный -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}Модули ИИ отсутствуют.{}Их можно скачать через систему проверки онлайн-контента. @@ -1204,8 +1237,9 @@ 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_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 :Специальные настройки / все настройки @@ -1219,6 +1253,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 :да @@ -1241,19 +1279,19 @@ 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} 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} 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_DISASTERS :Катастрофы: {STRING} @@ -1261,8 +1299,6 @@ 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_CATCHMENT :Зона покрытия зависит от типа станции: {STRING} @@ -1287,14 +1323,8 @@ 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_TUNNEL_LENGTH :Максимальная длина туннеля: {STRING} @@ -1314,16 +1344,14 @@ 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_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_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 :нет @@ -1354,10 +1382,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 :Включает затраты на содержание инфраструктуры. Стоимость непропорционально увеличивается с ростом транспортной сети, оказывая, таким образом, большее влияние на крупные компании, чем на малые. @@ -1396,27 +1420,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}Одна или несколько клеток в северном углу не пусты STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}Одна или несколько клеток берега без воды @@ -1442,7 +1480,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 :Можно настроить смещение обзора с помощью качающегося колеса прокрутки @@ -1453,10 +1491,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 :Выбор способа эмуляции нажатия правой кнопки мыши @@ -1467,17 +1505,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} @@ -1486,7 +1522,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 :Отображение индикаторов загрузки над загружающимся и разгружающимся транспортом @@ -1497,7 +1533,7 @@ STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE_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_HELPTEXT :Тип рельсов, выбираемый по умолчанию после старта или загрузки игры.{}«Первые доступные» - самый старый тип рельсов.{}«Последние доступные» - самый новый тип.{}«Наиболее используемые» - тип рельсов, наиболее широко используемых в игре. STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_FIRST :первые доступные STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_LAST :последние доступные STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_MOST_USED :наиболее используемые @@ -1512,13 +1548,13 @@ STR_CONFIG_SETTING_SOUND_TICKER :Бегущая 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 :Финансовый отчёт: {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} +STR_CONFIG_SETTING_SOUND_DISASTER :Аварии и катастрофы: {STRING} STR_CONFIG_SETTING_SOUND_DISASTER_HELPTEXT :Воспроизводить звук аварий и катастроф STR_CONFIG_SETTING_SOUND_VEHICLE :Транспорт: {STRING} STR_CONFIG_SETTING_SOUND_VEHICLE_HELPTEXT :Воспроизводить звук, издаваемый транспортом @@ -1595,7 +1631,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 :Показывать новости о новых моделях транспортных средств @@ -1606,9 +1642,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 :Обычно в газетах печатают чёрно-белые изображения, а начиная с указанного года - цветные @@ -1641,11 +1677,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} @@ -1653,7 +1689,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 :разрешено с выбором сети дорог @@ -1699,28 +1735,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} д{P 0:2 ень ня ней} +STR_CONFIG_SETTING_LINKGRAPH_INTERVAL_HELPTEXT :Период перерасчёта графов распределения. В каждом цикле рассчитывается не граф полностью, а только один из его компонентов. Чем меньше это значение, тем больше будет нагрузка на процессор. Чем больше значение, тем больше времени пройдёт перед началом расчёта графов для новых маршрутов. +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 :Ценные грузы - это драгоценности, алмазы и золото. Модули 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}д. При избытке груза маршруты будут перегружаться начиная с самых производительных. Загрузка рассчитывается исходя из оценки пропускной способности (которая может быть неточной) и интенсивности использования. Эта настройка определяет, насколько загружать маршрут перед тем, как начать использовать следующий. Установите значение ниже 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 @@ -1754,6 +1852,8 @@ STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_ALGORITHM :{WHITE}... ал 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}Нехватка оперативной памяти +STR_CONFIG_ERROR_SPRITECACHE_TOO_BIG :{WHITE}Не удалось выделить {BYTES} для кэша спрайтов. Размер кэша снижен до {BYTES}. Это отрицательно скажется на производительности OpenTTD. Чтобы снизить затраты памяти, отключите 32-битную графику и снизьте максимальный уровень приближения. # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} @@ -1875,6 +1975,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}Выбор мужских лиц @@ -1930,10 +2031,10 @@ STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}Изме # Network server list STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}Сетевая игра -STR_NETWORK_SERVER_LIST_CONNECTION :{BLACK}Соединение: -STR_NETWORK_SERVER_LIST_CONNECTION_TOOLTIP :{BLACK}Искать серверы в локальной сети или в Интернете -STR_NETWORK_SERVER_LIST_LAN :Локальная сеть -STR_NETWORK_SERVER_LIST_INTERNET :Интернет +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}Это имя, которое будет видно другим игрокам @@ -1992,16 +2093,16 @@ 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_LAN_INTERNET :Локальная сеть / Интернет -STR_NETWORK_START_SERVER_INTERNET_ADVERTISE :Интернет (поместить в общий список) +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}Другие игроки будут знать, на каком языке общаются на сервере @@ -2114,6 +2215,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}Не сохранять пароль @@ -2232,6 +2334,10 @@ 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}Посетить веб-сайт с информацией об этом модуле @@ -2254,7 +2360,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! @@ -2317,6 +2423,17 @@ STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}Пере STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Переключение прозрачности индикаторов загрузки. Ctrl+щелчок - заблокировать. 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}Подсветка зоны покрытия STR_STATION_BUILD_COVERAGE_OFF :{BLACK}Выкл @@ -2392,13 +2509,13 @@ STR_STATION_CLASS_WAYP :Точки пу 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_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_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}Односторонний маршрутн. светофор{}Позволяет нескольким поездам находиться в одном сигнальном блоке, если каждый из них может зарезервировать безопасный путь. Не допускает следования поездов в обратную сторону. @@ -2533,7 +2650,7 @@ STR_PLANT_TREE_TOOLTIP :{BLACK}Выбе STR_TREES_RANDOM_TYPE :{BLACK}Деревья случайного типа STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}Высадка деревьев случайного типа. При нажатом Shift - оценка стоимости высадки. STR_TREES_RANDOM_TREES_BUTTON :{BLACK}Расставить по карте -STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Разместить по карте деревья случайным образом +STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Разместить деревья на местности случайным образом # Land generation window (SE) STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}Генератор карты @@ -2631,6 +2748,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 :Камни @@ -2727,7 +2845,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-2012 Команда разработчиков OpenTTD +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2014 Команда разработчиков OpenTTD # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Сохранить игру @@ -2736,7 +2854,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}Выбранное название для сохранения игры @@ -2746,6 +2864,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} @@ -2756,6 +2875,7 @@ STR_SAVELOAD_OSKTITLE :{BLACK}Введ # World generation STR_MAPGEN_WORLD_GENERATION_CAPTION :{WHITE}Создание мира STR_MAPGEN_MAPSIZE :{BLACK}Размер карты: +STR_MAPGEN_MAPSIZE_TOOLTIP :{BLACK}Выберите размер карты в клетках. Размер поля, доступного игрокам, будет немного меньше. STR_MAPGEN_BY :{BLACK}× STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Количество городов: STR_MAPGEN_DATE :{BLACK}Дата: @@ -2763,10 +2883,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}Тип ландшафта: @@ -2793,7 +2909,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}Изменить год начала игры @@ -2848,6 +2963,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}Параметры @@ -2872,6 +2989,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}Закрыть @@ -2942,6 +3069,7 @@ STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}Вы м STR_NEWGRF_DUPLICATE_GRFID :{WHITE}Невозможно добавить файл: дублируются GRF ID STR_NEWGRF_COMPATIBLE_LOADED :{ORANGE}Соответствующий файл не найден (загружен совместимый GRF) +STR_NEWGRF_TOO_MANY_NEWGRFS :{WHITE}Не удалось добавить файл: слишком много модулей NewGRF STR_NEWGRF_COMPATIBLE_LOAD_WARNING :{WHITE}Вместо отсутствующих загружены совместимые файлы NewGRF STR_NEWGRF_DISABLED_WARNING :{WHITE}Отсутствующие файлы NewGRF были отключены @@ -2958,6 +3086,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}» предоставляет неверную информацию. @@ -2972,6 +3101,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. Это займёт некоторое время... @@ -3053,10 +3185,14 @@ STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT :{YELLOW}Куп STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}Дать взятку городской администрации для повышения рейтинга. Существует риск санкций, если факт взятки раскроется.{}Цена: {CURRENCY_LONG} # Goal window -STR_GOALS_CAPTION :{WHITE}Задачи +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+щелчок показывает в новом окне. @@ -3095,6 +3231,18 @@ STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}Субс STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING} по маршруту из {STRING} в {STRING}{YELLOW} ({COMPANY}{YELLOW}, до {DATE_SHORT}) 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_USE_CTRL_TO_SELECT_MORE :{BLACK}Нажмите и удерживайте Ctrl для выбора более одного варианта @@ -3108,9 +3256,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}Показать список принимаемых грузов @@ -3121,8 +3269,31 @@ STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPAN STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Рейтинг STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Показать рейтинг станции -STR_STATION_VIEW_CARGO_RATINGS_TITLE :{BLACK}Местный рейтинг транспортной компании: -STR_STATION_VIEW_CARGO_RATING :{WHITE}{STRING}: {YELLOW}{STRING} ({COMMA}%) +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 :Ужасный @@ -3179,7 +3350,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+щелчок - увеличить заём до максимума. @@ -3249,7 +3420,6 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS :{WHITE}Кана STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}Станции: STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}Площадь станций STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}Аэропорты -STR_COMPANY_INFRASTRUCTURE_VIEW_COST :{WHITE}{1:CURRENCY_LONG}/год ({0:COMMA}) STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL :{WHITE}{CURRENCY_LONG}/год # Industry directory @@ -3266,6 +3436,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} @@ -3328,12 +3499,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 :Удалить все @@ -3639,6 +3813,11 @@ STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Осмо 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_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_SHIP_CAPTION :{WHITE}Название корабля @@ -3855,10 +4034,14 @@ 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 ень ня ней} @@ -3874,7 +4057,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}Изменить дату начала расчёта графика движения +STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Выберите начальную дату для этого графика. Ctrl+щелчок установит начальную дату и равномерно распределит все транспортные средства, следующие по этому маршруту, если время движения по нему полностью рассчитано. STR_TIMETABLE_CHANGE_TIME :{BLACK}Изменить время STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Изменить время для выделенного задания @@ -3988,6 +4171,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}Лицензия @@ -4010,6 +4195,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} @@ -4306,6 +4495,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}Не удалось добавить транспорт с общим маршрутом в группу... @@ -4361,6 +4551,11 @@ 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}Невозможно игнорировать светофор. Опасно... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Не удалось развернуть поезд... @@ -4403,6 +4598,16 @@ STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}Не у # Translatable comment for OpenTTD's desktop shortcut 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 :"Пустой" набор музыкального оформления, не содержащий никакой музыки. + ##id 0x2000 # Town building names STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1 :Высотное офисное здание @@ -4562,7 +4767,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 @@ -4771,7 +4976,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 @@ -4886,8 +5091,9 @@ 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_SPACE_STRING :{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} @@ -4911,9 +5117,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 fbb6afbcf..638257b21 100644 --- a/src/lang/serbian.txt +++ b/src/lang/serbian.txt @@ -387,27 +387,36 @@ STR_UNITS_POWER_IMPERIAL :{COMMA}ks STR_UNITS_POWER_METRIC :{COMMA}ks 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 e a} STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} ton{P a e a} 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 a} STR_UNITS_VOLUME_LONG_METRIC :{COMMA} lit{P ar ra ara} 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 -STR_LIST_FILTER_OSKTITLE :{BLACK}Unes filter niske +STR_LIST_FILTER_TITLE :{BLACK}Filtriraj po: +STR_LIST_FILTER_OSKTITLE :{BLACK}Unesite tekst za filter STR_LIST_FILTER_TOOLTIP :{BLACK}Unesite ključnu reč kako bi se filtriralo spisak +STR_TOOLTIP_GROUP_ORDER :{BLACK}Izaberi red sortiranja STR_TOOLTIP_SORT_ORDER :{BLACK}Odaberite način sortiranja (opadajući/rastući) STR_TOOLTIP_SORT_CRITERIA :{BLACK}Odaberite kriterijum za sortiranje STR_TOOLTIP_FILTER_CRITERIA :{BLACK}Izaberite način filtriranja @@ -418,8 +427,9 @@ STR_BUTTON_RENAME :{BLACK}Preimenu STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Zatvori prozor 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}Prokazuje NewGRF podatake o otklanjanju grešaka -STR_TOOLTIP_STICKY :{BLACK}Pridenite kako bi ovaj prozor ostao otvoren prilikom pritiska na dugme za zatvaranje svih prozora +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 STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Skrol - pomera spisak gore/dole @@ -443,7 +453,6 @@ STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}Područj # These are used in buttons -STR_SORT_BY_CAPTION_POPULATION :{BLACK}Naseljenosti STR_SORT_BY_CAPTION_NAME :{BLACK}Imenu STR_SORT_BY_CAPTION_DATE :{BLACK}Datumu # These are used in dropdowns @@ -457,25 +466,28 @@ STR_SORT_BY_PROFIT_THIS_YEAR :Zaradi ove godi STR_SORT_BY_AGE :Starosti STR_SORT_BY_RELIABILITY :Pouzdanosti STR_SORT_BY_TOTAL_CAPACITY_PER_CARGOTYPE :Ukupnoj nosivosti po vrsti tovara -STR_SORT_BY_MAX_SPEED :Nejvećoj brzini +STR_SORT_BY_MAX_SPEED :Najvećoj brzini STR_SORT_BY_MODEL :Modelu STR_SORT_BY_VALUE :Vrednosti 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 :Vrednosti tovara na čekanju +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 # Tooltips for the main toolbar STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Pauziranje partije @@ -488,6 +500,7 @@ STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Prikaži STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Prikaži spisak svih stanica preduzeća STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Prikaži finansijsko stanje preduzeća STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Prikaži opšte podatke preduzeća +STR_TOOLBAR_TOOLTIP_DISPLAY_GOALS_LIST :{BLACK}Pokaži listu ciljeva STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Prikaži grafikone STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Prikaži tabele lige preduzeća STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Finansiranje izgradnje nove fabrike, spisak svih fabrika @@ -508,7 +521,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 @@ -558,19 +571,18 @@ STR_FILE_MENU_SEPARATOR : STR_FILE_MENU_EXIT :Izađi ############ range ends here -############ range for map menu starts +# map menu STR_MAP_MENU_MAP_OF_WORLD :Karta sveta STR_MAP_MENU_EXTRA_VIEW_PORT :Dodatno gledište STR_MAP_MENU_SIGN_LIST :Lista Znakova -############ range for town menu starts, yet the town directory is shown in the map menu in the scenario editor + +############ range for town menu starts STR_TOWN_MENU_TOWN_DIRECTORY :Popis naselja -############ end of the 'Display map' dropdown STR_TOWN_MENU_FOUND_TOWN :Osnivanje naselja -############ end of the 'Town' dropdown +############ range ends here ############ range for subsidies menu starts STR_SUBSIDIES_MENU_SUBSIDIES :Subvencije -STR_SUBSIDIES_MENU_GOAL :Trenutni ciljevi ############ range ends here ############ range for graph menu starts @@ -585,10 +597,12 @@ STR_GRAPH_MENU_CARGO_PAYMENT_RATES :Stope naplate t ############ range for company league menu starts STR_GRAPH_MENU_COMPANY_LEAGUE_TABLE :Tabela lige preduzeća STR_GRAPH_MENU_DETAILED_PERFORMANCE_RATING :Detaljan pregled poslovanja +STR_GRAPH_MENU_HIGHSCORE :Tabela najboljih rezultata ############ range ends here ############ range for industry menu starts STR_INDUSTRY_MENU_INDUSTRY_DIRECTORY :Spisak fabrika +STR_INDUSTRY_MENU_INDUSTRY_CHAIN :Lanci fabrika STR_INDUSTRY_MENU_FUND_NEW_INDUSTRY :Finansiranje nove fabrike ############ range ends here @@ -634,7 +648,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 @@ -642,7 +656,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. @@ -658,22 +672,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 @@ -724,7 +756,7 @@ STR_GRAPH_CARGO_PAYMENT_RATES_TITLE :{TINY_FONT}{BLA STR_GRAPH_CARGO_ENABLE_ALL :{TINY_FONT}{BLACK}Prikaži sve STR_GRAPH_CARGO_DISABLE_ALL :{TINY_FONT}{BLACK}Sakri sve STR_GRAPH_CARGO_TOOLTIP_ENABLE_ALL :{BLACK}Prikazuje sve vrste tovara na grafikonu prihoda -STR_GRAPH_CARGO_TOOLTIP_DISABLE_ALL :{BLACK}Sakriva sve vrste tovara na grafikonu prihoda +STR_GRAPH_CARGO_TOOLTIP_DISABLE_ALL :{BLACK}Sakrij sve vrste tovara na grafikonu prihoda STR_GRAPH_CARGO_PAYMENT_TOGGLE_CARGO :{BLACK}Uključi/Isključi grafikone po vrsti tovara STR_GRAPH_CARGO_PAYMENT_CARGO :{TINY_FONT}{BLACK}{STRING} @@ -767,7 +799,7 @@ STR_PERFORMANCE_DETAIL_LOAN :{BLACK}Zajam: STR_PERFORMANCE_DETAIL_TOTAL :{BLACK}Ukupno: ############ End of order list STR_PERFORMANCE_DETAIL_VEHICLES_TOOLTIP :{BLACK}Broj vozila koja su imala dobit prošle godine. Ovo uključuje drumska, železnička vozila, brodove i letilice -STR_PERFORMANCE_DETAIL_STATIONS_TOOLTIP :{BLACK}Broj nedavno servisiranih delova stanica. Posebno se broji svaki deo (npr. železničko, autobusko stajalište ili aerodrom) stanice +STR_PERFORMANCE_DETAIL_STATIONS_TOOLTIP :{BLACK}Broj nedavno opsluženih stanica. Posebno se broji svaki deo stanice (npr. železničko, autobusko stajalište ili aerodrom) STR_PERFORMANCE_DETAIL_MIN_PROFIT_TOOLTIP :{BLACK}Dobit vozila sa najmanjim prihodom (samo vozila starijih od 2 godine) STR_PERFORMANCE_DETAIL_MIN_INCOME_TOOLTIP :{BLACK}Zarađen novac u tromesečju sa najmanjom dobiti u proteklih 12 tromesečja STR_PERFORMANCE_DETAIL_MAX_INCOME_TOOLTIP :{BLACK}Zarađen novac u tromesečju sa najvećom dobiti u proteklih 12 tromesečja @@ -842,7 +874,7 @@ STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL :Mogul STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL.gen :mogula STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY :Tajkun veka STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY.gen :tajkuna veka -STR_HIGHSCORE_NAME :{BIG_FONT}{PRESIDENT_NAME}, {COMPANY} +STR_HIGHSCORE_NAME :{PRESIDENT_NAME}, {COMPANY} STR_HIGHSCORE_STATS :{BIG_FONT}'{STRING}' ({COMMA}) STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{BLACK}{COMPANY} dostiže status '{STRING}'! STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{WHITE}{PRESIDENT_NAME}, vlasnik preduzeća {COMPANY} je dostigao status '{STRING}'! @@ -859,6 +891,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 @@ -897,6 +930,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 @@ -907,6 +941,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 @@ -939,7 +975,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}! @@ -965,7 +1001,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! @@ -983,13 +1019,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 @@ -1020,6 +1054,8 @@ STR_NEWS_SERVICE_SUBSIDY_AWARDED_TRIPLE :{BIG_FONT}{BLAC STR_NEWS_SERVICE_SUBSIDY_AWARDED_QUADRUPLE :{BIG_FONT}{BLACK}Subvencija odobrena preduzeću {STRING}!{}{}Za prevoz {STRING.gen} između stanica {STRING} i {STRING} zarada će vredeti četvorostruko više u narednih godinu dana! STR_NEWS_ROAD_REBUILDING :{BIG_FONT}{BLACK}{TOWN} - haos na ulicama!{}{}Program rekonstrukcije puteva sponzorisan od strane preduzeća {STRING} donosi vozačima 6 meseci agonije! +STR_NEWS_EXCLUSIVE_RIGHTS_TITLE :{BIG_FONT}{BLACK}Prevoznički monopol! +STR_NEWS_EXCLUSIVE_RIGHTS_DESCRIPTION :{BIG_FONT}{BLACK}Vlasti grada {TOWN} su potpisale ugovor sa preduzećem {STRING} o ekskluzivnom pravu prevoza na godinu dana! # Extra view window STR_EXTRA_VIEW_PORT_TITLE :{WHITE}Pogled{COMMA} @@ -1044,9 +1080,9 @@ STR_GAME_OPTIONS_CURRENCY_CHF :Švajcarski Fra STR_GAME_OPTIONS_CURRENCY_CZK :Češka Kruna (CZK) STR_GAME_OPTIONS_CURRENCY_DEM :Nemačka Marka (DEM) STR_GAME_OPTIONS_CURRENCY_DKK :Danska Kruna (DKK) -STR_GAME_OPTIONS_CURRENCY_ESP :Pezeta (ESP) -STR_GAME_OPTIONS_CURRENCY_FIM :Finski Marka (FIM) -STR_GAME_OPTIONS_CURRENCY_FRF :Franak (FRF) +STR_GAME_OPTIONS_CURRENCY_ESP :Španska Pezeta (ESP) +STR_GAME_OPTIONS_CURRENCY_FIM :Finska Marka (FIM) +STR_GAME_OPTIONS_CURRENCY_FRF :Francuski Franak (FRF) STR_GAME_OPTIONS_CURRENCY_GRD :Grčka Drahma (GRD) STR_GAME_OPTIONS_CURRENCY_HUF :Mađarska Forinta (HUF) STR_GAME_OPTIONS_CURRENCY_ISK :Islandska Kruna (ISK) @@ -1054,7 +1090,7 @@ STR_GAME_OPTIONS_CURRENCY_ITL :Italijanska Lir STR_GAME_OPTIONS_CURRENCY_NLG :Holandski Gulden (NLG) STR_GAME_OPTIONS_CURRENCY_NOK :Norveška Kruna (NOK) STR_GAME_OPTIONS_CURRENCY_PLN :Poljski Zlot (PLN) -STR_GAME_OPTIONS_CURRENCY_RON :Rumunska Lej (RON) +STR_GAME_OPTIONS_CURRENCY_RON :Rumunski Lej (RON) STR_GAME_OPTIONS_CURRENCY_RUR :Ruska Rublja (RUR) STR_GAME_OPTIONS_CURRENCY_SIT :Slovenački Tolar (SIT) STR_GAME_OPTIONS_CURRENCY_SEK :Švedska Kruna (SEK) @@ -1062,16 +1098,16 @@ STR_GAME_OPTIONS_CURRENCY_TRY :Turska Lira (TR STR_GAME_OPTIONS_CURRENCY_SKK :Slovačka Kruna (SKK) STR_GAME_OPTIONS_CURRENCY_BRL :Brazilski Real (BRL) STR_GAME_OPTIONS_CURRENCY_EEK :Estonska Kruna (EEK) +STR_GAME_OPTIONS_CURRENCY_LTL :Litvanski Litas (LTL) +STR_GAME_OPTIONS_CURRENCY_KRW :Južnokorejski Von (KRW) +STR_GAME_OPTIONS_CURRENCY_ZAR :Južnoafrički Rand (ZAR) STR_GAME_OPTIONS_CURRENCY_CUSTOM :Sopstvena... +STR_GAME_OPTIONS_CURRENCY_GEL :Gruzijski Lari (GEL) +STR_GAME_OPTIONS_CURRENCY_IRR :Iranski Rijal (IRR) ############ end of currency region -STR_GAME_OPTIONS_MEASURING_UNITS_FRAME :{BLACK}Merne jedinice -STR_GAME_OPTIONS_MEASURING_UNITS_DROPDOWN_TOOLTIP :{BLACK}Izbor svetskih najzastupljenijih mernih jedinica ############ start of measuring units region -STR_GAME_OPTIONS_MEASURING_UNITS_IMPERIAL :Anglosaksonski -STR_GAME_OPTIONS_MEASURING_UNITS_METRIC :Metrički -STR_GAME_OPTIONS_MEASURING_UNITS_SI :SI ############ end of measuring units region STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Drumska vozila @@ -1099,7 +1135,7 @@ STR_GAME_OPTIONS_TOWN_NAME_HUNGARIAN :Mađarska STR_GAME_OPTIONS_TOWN_NAME_AUSTRIAN :Austrijanska STR_GAME_OPTIONS_TOWN_NAME_ROMANIAN :Rumunska STR_GAME_OPTIONS_TOWN_NAME_CZECH :Češka -STR_GAME_OPTIONS_TOWN_NAME_SWISS :Švajcerska +STR_GAME_OPTIONS_TOWN_NAME_SWISS :Švajcarska STR_GAME_OPTIONS_TOWN_NAME_DANISH :Danska STR_GAME_OPTIONS_TOWN_NAME_TURKISH :Turska STR_GAME_OPTIONS_TOWN_NAME_ITALIAN :Italijanska @@ -1109,25 +1145,24 @@ 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_BASE_GRF :{BLACK}Osnovni skup grafika STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Odaberite željeni skup osnovnih grafika STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} datotek{P a e a} nedostaj{P e u e}/neispravn{P a o o} @@ -1160,7 +1195,7 @@ STR_CURRENCY_SET_CUSTOM_CURRENCY_PREFIX_TOOLTIP :{BLACK}Postavit STR_CURRENCY_SUFFIX :{LTBLUE}Sufiks: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_SUFFIX_TOOLTIP :{BLACK}Postavite sufiks za vašu monetu -STR_CURRENCY_SWITCH_TO_EURO :{LTBLUE}Pelazak na Euro: {ORANGE}{NUM} +STR_CURRENCY_SWITCH_TO_EURO :{LTBLUE}Prelazak na Euro: {ORANGE}{NUM} STR_CURRENCY_SWITCH_TO_EURO_NEVER :{LTBLUE}Prelazak na Euro: {ORANGE}nikada STR_CURRENCY_SET_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Odredite godinu za prelazak na euro STR_CURRENCY_DECREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Raniji prelazak na euro @@ -1195,12 +1230,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 @@ -1218,7 +1253,7 @@ STR_SUBSIDY_X4 :x4 STR_TERRAIN_TYPE_VERY_FLAT :Ravničarski STR_TERRAIN_TYPE_FLAT :Brdski -STR_TERRAIN_TYPE_HILLY :Brdskio-planinski +STR_TERRAIN_TYPE_HILLY :Brdsko-planinski STR_TERRAIN_TYPE_MOUNTAINOUS :Planinski STR_CITY_APPROVAL_PERMISSIVE :Popustljiv @@ -1229,8 +1264,32 @@ STR_WARNING_NO_SUITABLE_AI :{WHITE}Nisu dos # Advanced settings window STR_CONFIG_SETTING_CAPTION :{WHITE}Napredna 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 +STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT :(nema objašnjenja) +STR_CONFIG_SETTING_DEFAULT_VALUE :{LTBLUE}Podrazumevana vrednost: {ORANGE}{STRING} +STR_CONFIG_SETTING_TYPE :{LTBLUE}Vrsta podešavanja: {ORANGE}{STRING} +STR_CONFIG_SETTING_TYPE_CLIENT :Klijentska podešavanja (ne čuvaju se prilikom snimanja; utiču na sve igre) +STR_CONFIG_SETTING_TYPE_GAME_MENU :Podešavanja igre (čuvaju se prilikom snimanja; utiču samo na nove igre) +STR_CONFIG_SETTING_TYPE_GAME_INGAME :Podešavanja igre (čuvaju se prilikom snimanja; utiču samo na tekuću igru) +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_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 +STR_CONFIG_SETTING_RESTRICT_ALL :Ekspertska / sva podešavanja +STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :Podešavanja sa vrednošću različitom od podrazumevane +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 :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) +STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Kompanijska podešavanja (biće uskladištena u sačuvanoj igri; ima efekta samo na nove partije) +STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Podešavanja kompanije (uskladištena u sačuvanoj igri; utiču samo na trenutnu kompaniju) STR_CONFIG_SETTING_OFF :Ne STR_CONFIG_SETTING_ON :Da @@ -1248,88 +1307,174 @@ 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 :Najveći zajam na početku: {STRING} +STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Najveći iznos koji preduzeće može da pozajmi (ne uzimajući u obzir inflaciju) +STR_CONFIG_SETTING_INTEREST_RATE :Kamatna stopa: {STRING} +STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Kamatna stopa na zajam; ako je omogućena, kontroliše inflaciju +STR_CONFIG_SETTING_RUNNING_COSTS :Rashod: {STRING} +STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT :Podesi cene za održavanje i radni proces vozila i infrastrukture +STR_CONFIG_SETTING_CONSTRUCTION_SPEED :Brzina gradnje: {STRING} +STR_CONFIG_SETTING_CONSTRUCTION_SPEED_HELPTEXT :Ograniči količinu akcija gradnje za VI +STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS :Kvarovi vozila: {STRING} +STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS_HELPTEXT :Koliko često mogu da se pokvare neodgovarajuće servisirana vozila +STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER :Množilac subvencije: {STRING} +STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT :Podešava koliko se plaća za subvencionisane konekcije +STR_CONFIG_SETTING_CONSTRUCTION_COSTS :Troškovi gradnje: {STRING} +STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :Podešava nivo troškova gradnje i kupovine +STR_CONFIG_SETTING_RECESSIONS :Recesije: {STRING} +STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Ako je omogućeno, recesije mogu da se jave svakih nekoliko godina. Proizvodnja je značajno smanjena tokom recesije (vraća se na prethodni nivo kada se recesija završi) +STR_CONFIG_SETTING_TRAIN_REVERSING :Onemogući okretanje voza u stanicama: {STRING} +STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :Ako je uključeno i ako postoji kraća putanja do sledećeg odredišta, vozovi se neće okretati u neterminalnim stanicama +STR_CONFIG_SETTING_DISASTERS :Katastrofe: {STRING} +STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Uključuje i isključuje katastrofe koje s vremena na vreme mogu blokirati ili uništiti vozila i infrastrukturu +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_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} +STR_CONFIG_SETTING_CATCHMENT_HELPTEXT :Drugačije veličine podnožja za različite vrste stanica i aerodroma STR_CONFIG_SETTING_EXTRADYNAMITE :Dozvoljeno uklanjanje više gradskih kolovoza, mostova i tunela: {STRING} +STR_CONFIG_SETTING_EXTRADYNAMITE_HELPTEXT :Olakšava uklanjanje infrastrukture i zgrada u gradskom vlasništvu +STR_CONFIG_SETTING_TRAIN_LENGTH :Najveća dužina vozova: {STRING} +STR_CONFIG_SETTING_TRAIN_LENGTH_HELPTEXT :Podešava najveću dužinu vozova +STR_CONFIG_SETTING_TILE_LENGTH :{COMMA} pločic{P a e a} STR_CONFIG_SETTING_SMOKE_AMOUNT :Količina dima/varnica vozila: {STRING} +STR_CONFIG_SETTING_SMOKE_AMOUNT_HELPTEXT :Podešava količinu dima ili varnica koje emituju vozila STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL :Model ubrzavanja vozova: {STRING} +STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL_HELPTEXT :Bira fizički model za ubrzanje vozova. "Originalni" model ima istovetni penal na usponima za sa vozila. "Realistični" model ima različit penal u zavisnosti od osobina kompozicije poput dužine i sile potrebne za pokretanje voza STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL :Model ubrzavanja drumskih vozila: {STRING} +STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL_HELPTEXT :Bira fizički model za ubrzanje drumskih vozila. "Originalni" model ima istovetni penal na usponima za sa vozila. "Realistični" model ima različit penal u zavisnosti od osobina motora i sile potrebne za pokretanje vozila +STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS :Nagib uspona za vozove: {STRING} +STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS_HELPTEXT :Nagib uspona za voz. Veće vrednosti čine težim penjanje uzbrdo +STR_CONFIG_SETTING_PERCENTAGE :{COMMA}% +STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS :Nagib uspona za drumska vozila: {STRING} +STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS_HELPTEXT :Nagib uspona za drumsko vozilo. Veće vrednosti čine težim penjanje uzbrdo STR_CONFIG_SETTING_FORBID_90_DEG :Zabranjeno okretanje brodova i vozova za 90 stepeni: {STRING} -STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :Dozvoljeno sjedninjavanje udaljenih stanica: {STRING} -STR_CONFIG_SETTING_IMPROVEDLOAD :Koristiti poboljšan algoritam utovara: {STRING} -STR_CONFIG_SETTING_GRADUAL_LOADING :Postepeno utovarivanje u vozilo: {STRING} +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_INFLATION :Inflacija: {STRING} -STR_CONFIG_SETTING_SELECTGOODS :Dostavljanje tovara na stanicu samo ako ima potražnje: {STRING} +STR_CONFIG_SETTING_INFLATION_HELPTEXT :Omogućuje inflaciju tako da troškovi rastu malo brže od isplata +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_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} +STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_HELPTEXT :Način izgradnje primarnih industrija. 'nikakav' znači da finansiranje nije moguće, 'istraživački' znači da jeste moguće ali se izgradnja odvija na slučajnom mestu na karti i može da ne uspe, 'uobičajen' znači da preduzeća mogu da postave primarnu industriju na bilo koju poziciju na karti STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :nikakav -STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :uobičajan +STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :uobičajen STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :istraživački +STR_CONFIG_SETTING_INDUSTRY_PLATFORM :Ravna površina oko industrija: {STRING} +STR_CONFIG_SETTING_INDUSTRY_PLATFORM_HELPTEXT :Količina ravne površine u okružini jedne industrije. Ovo osigurava da će u okolini industrije biti dovoljno slobodnog mesta za konstrukciju pruga, i tako dalje. STR_CONFIG_SETTING_MULTIPINDTOWN :Dozvoljeno više industrija iste vrste na teritoriji jednog naselja: {STRING} +STR_CONFIG_SETTING_MULTIPINDTOWN_HELPTEXT :Naselje uobičajeno ne dozvoljava više industrija iste vrste. Sa ovim podešavanjem će biti dozvoljeno više industrija iste vrste na teritoriji jednog naselja +STR_CONFIG_SETTING_SIGNALSIDE :Prikaži signale: {STRING} +STR_CONFIG_SETTING_SIGNALSIDE_HELPTEXT :Odaberi na kojoj strani koloseka se postavlja signalizacija +STR_CONFIG_SETTING_SIGNALSIDE_LEFT :Na levoj +STR_CONFIG_SETTING_SIGNALSIDE_DRIVING_SIDE :Na strani na kojoj se vozi +STR_CONFIG_SETTING_SIGNALSIDE_RIGHT :Na desnoj STR_CONFIG_SETTING_SHOWFINANCES :Prikazivanje finansijskog stanja na kraju godine: {STRING} +STR_CONFIG_SETTING_SHOWFINANCES_HELPTEXT :Ako je omogućeno, na kraju svake godine će se prikazati prozor sa finansijskim stanjem što omogućava lakše praćenje finansija preduzeća STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :Nove naredbe su postavljene sa 'direktno': {STRING} +STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT_HELPTEXT :Vozilo će uobičajeno stati u svakoj stanici kroz koju prolazi. Ako se ovo podešavanje omogući, vozilo će samo proći kroz stanicu bez zaustavljanja sve do krajnje stanice. Ovo podešavanje menja samo podrazumevanu vrednost za nove naredbe. Pojedinačne naredbe mogu da imaju i jedno i drugo ponašanje STR_CONFIG_SETTING_STOP_LOCATION :Nove naredbe zaustavljaju voz na {STRING} stanice -STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :kraj -STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :sredinu -STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :početak -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING :Vozila čekaju u koloni (na zauzetim stanicama): {STRING} +STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :Mesto gde će se voz zaustaviti u stanici. 'početak' znači blizu ulaska, 'sredina' znači na sredini platforme a 'kraj' znači najdalje od ulaska. Ovo podešavanje menja samo podrazumevanu vrednost za nove naredbe. Pojedinačne naredbe za vozove mogu da imaju bilo koje od ova tri ponašanja +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_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} +STR_CONFIG_SETTING_BRIBE_HELPTEXT :Dozvoljava preduzećima da pokušaju da podmite lokalne vlasti. Ako inspektor primeti podmićivanje, preduzeće neće moći da deluje u naselju sledećih šest meseci STR_CONFIG_SETTING_ALLOW_EXCLUSIVE :Dozvoljena kupovina ekskluzivnih prava prevoza: {STRING} +STR_CONFIG_SETTING_ALLOW_EXCLUSIVE_HELPTEXT :Ako preduzeće kupi ekskluzivna prava prevoza u naselju, protivničke stanice neće primati nikakav tovar ni putnike cele godine STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS :Dozvoljeno finansiranje zgrada: {STRING} +STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS_HELPTEXT :Dozvoljava preduzećima da naselju daju novac za gradnju novih kuća STR_CONFIG_SETTING_ALLOW_FUND_ROAD :Dozvoljeno finansiranje rekonstrukcije lokalnih puteva: {STRING} +STR_CONFIG_SETTING_ALLOW_FUND_ROAD_HELPTEXT :Dozvoljava preduzećima da daju novac naseljima za rekonstrukciju puteva kako bi sabotirali drumski saobraćaj 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} STR_CONFIG_SETTING_PLANE_CRASHES :Broj avionskih nesreća: {STRING} +STR_CONFIG_SETTING_PLANE_CRASHES_HELPTEXT :Postavlja šansu da se dogodi avionska nesreća STR_CONFIG_SETTING_PLANE_CRASHES_NONE :nikakav STR_CONFIG_SETTING_PLANE_CRASHES_REDUCED :umanjen STR_CONFIG_SETTING_PLANE_CRASHES_NORMAL :normalan STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Dozvoljene ulične stanice na kolovozima u vlasništvu naselja: {STRING} +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_ADJACENT_STATIONS :Dozvoljena gradnja stanica jedne pored druge: {STRING} -STR_CONFIG_SETTING_DYNAMIC_ENGINES :Dozvoljeno više NewGRF kolekcija mišina: {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_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 :samo aktivna -STR_CONFIG_SETTING_ORDER_REVIEW_ON :sva +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_NEVER_EXPIRE_VEHICLES :Vozila su uvek dostupna: {STRING} -STR_CONFIG_SETTING_AUTORENEW_VEHICLE :Automatksa zamena kada vozilo ostari: {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_POPULATION_IN_LABEL :Prikazivanje broja populacije pored naziva naselja: {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_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 :Ravnomerana -STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :Malo Valovita +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Ravnomerna +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_HEIGHTMAP_ROTATION :Orjentacija elevacione karte: {STRING} +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_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}Jedn ili više sektora na jednoj od ivica nije voda +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 @@ -1342,10 +1487,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 @@ -1354,15 +1506,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 @@ -1378,131 +1528,244 @@ 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} +STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :Reprodukuj zvučne efekte pri prikazu sažetih novinskih poruka +STR_CONFIG_SETTING_SOUND_NEWS :Novinski naslovi: {STRING} +STR_CONFIG_SETTING_SOUND_NEWS_HELPTEXT :Reprodukuj zvučne efekte prilikom prikazivanja novinskih naslova +STR_CONFIG_SETTING_SOUND_NEW_YEAR :Kraj godine: {STRING} +STR_CONFIG_SETTING_SOUND_NEW_YEAR_HELPTEXT :Reprodukuj zvučne efekte prilikom ispisa rezultata poslovanja kompanije na kraju svake godine +STR_CONFIG_SETTING_SOUND_CONFIRM :Izgradnja: {STRING} +STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT :Reprodukuj zvučne efekte pri uspešnoj izgradnji i sličnim akcijama +STR_CONFIG_SETTING_SOUND_CLICK :Klik na tastere: {STRING} +STR_CONFIG_SETTING_SOUND_CLICK_HELPTEXT :Reprodukuj zvuk prilikom klika na tastere +STR_CONFIG_SETTING_SOUND_DISASTER :Nezgode/katastrofe: {STRING} +STR_CONFIG_SETTING_SOUND_DISASTER_HELPTEXT :Reprodukuj zvučne efekte nezgoda i katastrofa +STR_CONFIG_SETTING_SOUND_VEHICLE :Vozila: {STRING} +STR_CONFIG_SETTING_SOUND_VEHICLE_HELPTEXT :Reprodukuj zvučne efekte vozila +STR_CONFIG_SETTING_SOUND_AMBIENT :Okruženje: {STRING} +STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :Reprodukuj ambijentalne zvučne efekte za teren, industrije i gradove STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING :Onemogućena izgradnja infrastrukture kada nema odgovarajućih vozila: {STRING} STR_CONFIG_SETTING_MAX_TRAINS :Najviše vozova po preduzeću: {STRING} +STR_CONFIG_SETTING_MAX_TRAINS_HELPTEXT :Najveći broj vozova koje preduzeće može da ima STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :Najviše drumskih vozila po preduzeću: {STRING} +STR_CONFIG_SETTING_MAX_ROAD_VEHICLES_HELPTEXT :Najveći broj drumskih vozila koje preduzeće može da ima STR_CONFIG_SETTING_MAX_AIRCRAFT :Najviše letilica po preduzeću: {STRING} +STR_CONFIG_SETTING_MAX_AIRCRAFT_HELPTEXT :Najveći broj letilica koje preduzeće može da ima STR_CONFIG_SETTING_MAX_SHIPS :Najviše brodova po preduzeću: {STRING} +STR_CONFIG_SETTING_MAX_SHIPS_HELPTEXT :Najveći broj brodova koje preduzeće može da ima STR_CONFIG_SETTING_AI_BUILDS_TRAINS :Računar ne može da koristi železnički prevoz: {STRING} +STR_CONFIG_SETTING_AI_BUILDS_TRAINS_HELPTEXT :Omogućavanje ovog podešavanja znači da računar ne može da stvara vozove STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES :Računar ne može da koristi drumski prevoz: {STRING} +STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES_HELPTEXT :Omogućavanje ovog podešavanja znači da računar ne može da stvara drumska vozila STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT :Računar ne može da koristi vazdušni prevoz: {STRING} +STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT_HELPTEXT :Omogućavanje ovog podešavanja znači da računar ne može da stvara letilice STR_CONFIG_SETTING_AI_BUILDS_SHIPS :Računar ne može da koristi vodni prevoz: {STRING} +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 STR_CONFIG_SETTING_AI_IN_MULTIPLAYER :Dozvoljena VI u mrežnoj partiji: {STRING} +STR_CONFIG_SETTING_AI_IN_MULTIPLAYER_HELPTEXT :Dozvoljava računarskoj VI da učestvuje u mrežnoj partiji STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES :Suspendovanje #opkodova pre skripti: {STRING} +STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES_HELPTEXT :Najveći broj koraka računanja koje skript može da izvede u jednom krugu STR_CONFIG_SETTING_SERVINT_ISPERCENT :Intervali servisiranja u procentima: {STRING} -STR_CONFIG_SETTING_NOSERVICE :Isključeno servisiranje kada nepostoje kvarovi: {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} +STR_CONFIG_SETTING_NOSERVICE :Isključeno servisiranje kada ne postoje kvarovi: {STRING} STR_CONFIG_SETTING_WAGONSPEEDLIMITS :Uključeno ograničenje brzine kod vagona: {STRING} -STR_CONFIG_SETTING_DISABLE_ELRAILS :Nepostoji posebna električna pruga: {STRING} +STR_CONFIG_SETTING_DISABLE_ELRAILS :Ne postoji posebna električna pruga: {STRING} STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN :Dolazak prvog vozila na igračevu stanicu: {STRING} +STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN_HELPTEXT :Prikazuje novinske naslove kada prvo vozilo pristigne u novu stanicu igrača STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER :Dolazak prvog vozila na suparničku stanicu: {STRING} +STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER_HELPTEXT :Prikazuje novinske naslove kada prvo vozilo pristigne u konkurentsku novu stanicu STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS :Udesi/nepogode: {STRING} +STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS_HELPTEXT :Prikazuje novinske naslove kada se dese nezgode ili katastrofe STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION :Podaci o preduzeću: {STRING} +STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION_HELPTEXT :Prikazuje novinske naslove kada se otvori nova kompanija, ili kada postojeća rizikuje bankrot 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 :Prikazuje novinske naslove o zatvaranju fabrika STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES :Promene u ekonomiji: {STRING} +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 :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 :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 :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 :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 :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 :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 STR_CONFIG_SETTING_ALLOW_SHARES :Dozvoljena kupovina deonica drugih preduzeća: {STRING} +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čajna vrsta signalizacije za izgradnju: {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 -STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES :Ciklični izbor vrste signalizcije: {STRING} +STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES :Ciklični izbor vrste signalizacije: {STRING} STR_CONFIG_SETTING_CYCLE_SIGNAL_NORMAL :Samo blok 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 :napredno +STR_CONFIG_SETTING_TOWN_LAYOUT_BETTER_ROADS :unapređeni putevi STR_CONFIG_SETTING_TOWN_LAYOUT_2X2_GRID :2x2 mreže 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 STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT :Rasejavanje drveća tokom partije: {STRING} -STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NONE :nikakvo {RED}(onesposobljava rad drvnih kombinata) +STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NONE :{G=srednji}nikakvo {RED}(onesposobljava rad drvnih kombinata) STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_RAINFOREST :samo u tropskim šumama STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_ALL :svuda STR_CONFIG_SETTING_TOOLBAR_POS :Lokacija glavne trake sa alatima: {STRING} -STR_CONFIG_SETTING_STATUSBAR_POS :Položaj statusne trake: {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 STR_CONFIG_SETTING_ZOOM_LVL_IN_2X :2x -STR_CONFIG_SETTING_ZOOM_LVL_NORMAL :Uobičajan +STR_CONFIG_SETTING_ZOOM_LVL_NORMAL :Uobičajen 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 :Brzina razvoja naselja: {STRING} +STR_CONFIG_SETTING_TOWN_GROWTH_HELPTEXT :Brzina kojom se naselje razvija STR_CONFIG_SETTING_TOWN_GROWTH_NONE :Nimalo 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_GUI :{ORANGE}Okruženje -STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}Izgradnja +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 :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 :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 :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 :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 :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 :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 :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_LOCALISATION :{ORANGE}Prevod +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_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 @@ -1520,6 +1783,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} @@ -1532,6 +1796,7 @@ STR_INTRO_SCENARIO_EDITOR :{BLACK}Editor S STR_INTRO_MULTIPLAYER :{BLACK}Partija preko Mreže STR_INTRO_GAME_OPTIONS :{BLACK}Opcije +STR_INTRO_HIGHSCORE :{BLACK}Tabela najboljih rezultata STR_INTRO_ADVANCED_SETTINGS :{BLACK}Napredna Podešavanja STR_INTRO_NEWGRF_SETTINGS :{BLACK}NewGRF Podešavanja STR_INTRO_ONLINE_CONTENT :{BLACK}Spisak Dodataka na Mreži @@ -1551,6 +1816,7 @@ STR_INTRO_TOOLTIP_SUB_TROPICAL_LANDSCAPE :{BLACK}Izbor su STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Izbor 'zemlje igračaka' 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_NEWGRF_SETTINGS :{BLACK}Prikazuje NewGRF podešavanja STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Pregled novih i ažureiranih dodatka za preuzimanje @@ -1592,7 +1858,7 @@ STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Magičn 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_SWITCH_CLIMATE_TEMPERATE_LANDSCAPE :Umereni klimatski pojas -STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :Subpolarni klimatki pojas +STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :Subpolarni klimatski pojas STR_CHEAT_SWITCH_CLIMATE_SUB_TROPICAL_LANDSCAPE :Suptropski klimatski pojas STR_CHEAT_SWITCH_CLIMATE_TOYLAND_LANDSCAPE :Zemlja igračaka STR_CHEAT_CHANGE_DATE :{LTBLUE}Promena datuma: {ORANGE} {DATE_SHORT} @@ -1607,11 +1873,11 @@ STR_LIVERY_TRAIN_TOOLTIP :{BLACK}Prikaži STR_LIVERY_ROAD_VEHICLE_TOOLTIP :{BLACK}Prikaži mustre boja drumskih vozila STR_LIVERY_SHIP_TOOLTIP :{BLACK}Prikaži mustre boja brodova STR_LIVERY_AIRCRAFT_TOOLTIP :{BLACK}Prikaži mustre boja letilica -STR_LIVERY_PRIMARY_TOOLTIP :{BLACK}Izaberite osnovnu boju za označenu kategoriju -STR_LIVERY_SECONDARY_TOOLTIP :{BLACK}Izaberite dodatnu boju za označenu kategoriju +STR_LIVERY_PRIMARY_TOOLTIP :{BLACK}Izaberite osnovnu boju za označenu kategoriju. Ctrl+klik će izabrati ovu boju za sve kategorije +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 @@ -1639,6 +1905,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 @@ -1649,7 +1916,7 @@ STR_FACE_NEW_FACE_TOOLTIP :{BLACK}Nasumič STR_FACE_ADVANCED :{BLACK}Napredno STR_FACE_ADVANCED_TOOLTIP :{BLACK}Napredni odabir lica STR_FACE_SIMPLE :{BLACK}Jednostavno -STR_FACE_SIMPLE_TOOLTIP :{BLACK}Jodnostavan odabir lica +STR_FACE_SIMPLE_TOOLTIP :{BLACK}Jednostavan odabir lica STR_FACE_LOAD :{BLACK}Učitaj STR_FACE_LOAD_TOOLTIP :{BLACK}Učitavanje omiljenog lica STR_FACE_LOAD_DONE :{WHITE}Vaše omiljeno lice je učitano iz OpenTTD datoteke podešavanja @@ -1678,26 +1945,24 @@ STR_FACE_GLASSES :Naočare: STR_FACE_GLASSES_TOOLTIP :{BLACK}Dodavanje naočara STR_FACE_GLASSES_TOOLTIP_2 :{BLACK}Promena naočara STR_FACE_NOSE :Nos: -STR_FACE_NOSE_TOOLTIP :{BLACK}Promena nos +STR_FACE_NOSE_TOOLTIP :{BLACK}Promena nosa STR_FACE_LIPS :Usna: STR_FACE_MOUSTACHE :Brkovi: -STR_FACE_LIPS_MOUSTACHE_TOOLTIP :{BLACK}Promena usna ili brkova +STR_FACE_LIPS_MOUSTACHE_TOOLTIP :{BLACK}Promena usana ili brkova STR_FACE_CHIN :Brada: -STR_FACE_CHIN_TOOLTIP :{BLACK}Promena brada +STR_FACE_CHIN_TOOLTIP :{BLACK}Promena brade STR_FACE_JACKET :Sako: -STR_FACE_JACKET_TOOLTIP :{BLACK}Menja dezen sakoa +STR_FACE_JACKET_TOOLTIP :{BLACK}Promena dezena sakoa STR_FACE_COLLAR :Kragna: -STR_FACE_COLLAR_TOOLTIP :{BLACK}Menja dezen kragne +STR_FACE_COLLAR_TOOLTIP :{BLACK}Promena dezena kragne STR_FACE_TIE :Kravata: STR_FACE_EARRING :Minđuše: STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}Promena kravate ili minđuša # Network server list STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}Mrežna partija -STR_NETWORK_SERVER_LIST_CONNECTION :{BLACK}Povezivanje: -STR_NETWORK_SERVER_LIST_CONNECTION_TOOLTIP :{BLACK}Izaberite način poveivanja između interneta ili lokalne mreže (LAN) -STR_NETWORK_SERVER_LIST_LAN :LAN -STR_NETWORK_SERVER_LIST_INTERNET :Internet +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 @@ -1715,9 +1980,9 @@ STR_NETWORK_SERVER_LIST_YEARS_CAPTION :{BLACK}Godina STR_NETWORK_SERVER_LIST_YEARS_CAPTION_TOOLTIP :{BLACK}Ukupan broj godina{}koliko traje partija STR_NETWORK_SERVER_LIST_INFO_ICONS_TOOLTIP :{BLACK}Jezik, verzija servera, itd. -STR_NETWORK_SERVER_LIST_CLICK_GAME_TO_SELECT :{BLACK}Kliknite na partiju sa spiska da bi je obeležili +STR_NETWORK_SERVER_LIST_CLICK_GAME_TO_SELECT :{BLACK}Kliknite na partiju sa spiska da biste je obeležili STR_NETWORK_SERVER_LIST_LAST_JOINED_SERVER :{BLACK}Server na koji ste se priključili prošli put: -STR_NETWORK_SERVER_LIST_CLICK_TO_SELECT_LAST :{BLACK}Kliknite kako bi ste označili server na kome ste igrali prošli put +STR_NETWORK_SERVER_LIST_CLICK_TO_SELECT_LAST :{BLACK}Kliknite kako biste označili server na kome ste igrali prošli put STR_NETWORK_SERVER_LIST_GAME_INFO :{SILVER}PODACI O PARTIJI STR_NETWORK_SERVER_LIST_CLIENTS :{SILVER}Igrača: {WHITE}{COMMA} / {COMMA} - {COMMA} / {COMMA} @@ -1756,8 +2021,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_LAN_INTERNET :LAN / Internet -STR_NETWORK_START_SERVER_INTERNET_ADVERTISE :Internet (sa oglašavanjem) +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 @@ -1787,12 +2052,12 @@ STR_NETWORK_LANG_DUTCH :Holandski STR_NETWORK_LANG_ESPERANTO :Esperanto STR_NETWORK_LANG_FINNISH :Finski STR_NETWORK_LANG_HUNGARIAN :Mađarski -STR_NETWORK_LANG_ICELANDIC :Isladski +STR_NETWORK_LANG_ICELANDIC :Islandski STR_NETWORK_LANG_ITALIAN :Italijanski STR_NETWORK_LANG_JAPANESE :Japanski STR_NETWORK_LANG_KOREAN :Koreanski STR_NETWORK_LANG_LITHUANIAN :Litvanski -STR_NETWORK_LANG_NORWEGIAN :Norvežanski +STR_NETWORK_LANG_NORWEGIAN :Norveški STR_NETWORK_LANG_POLISH :Poljski STR_NETWORK_LANG_PORTUGUESE :Portugalski STR_NETWORK_LANG_ROMANIAN :Rumunski @@ -1803,7 +2068,7 @@ STR_NETWORK_LANG_SPANISH :Španski STR_NETWORK_LANG_SWEDISH :Švedski STR_NETWORK_LANG_TURKISH :Turski STR_NETWORK_LANG_UKRAINIAN :Ukrajinski -STR_NETWORK_LANG_AFRIKAANS :Afrikanski +STR_NETWORK_LANG_AFRIKAANS :Afrikans STR_NETWORK_LANG_CROATIAN :Hrvatski STR_NETWORK_LANG_CATALAN :Katalonski STR_NETWORK_LANG_ESTONIAN :Estonski @@ -1822,7 +2087,7 @@ STR_NETWORK_GAME_LOBBY_COMPANY_INFO :{SILVER}PODACI STR_NETWORK_GAME_LOBBY_COMPANY_NAME :{SILVER}Naziv preduzeća: {WHITE}{STRING} STR_NETWORK_GAME_LOBBY_INAUGURATION_YEAR :{SILVER}Inauguracija: {WHITE}{NUM} STR_NETWORK_GAME_LOBBY_VALUE :{SILVER}Vrednost preduzeća: {WHITE}{CURRENCY_LONG} -STR_NETWORK_GAME_LOBBY_CURRENT_BALANCE :{SILVER}Trenutni odnos: {WHITE}{CURRENCY_LONG} +STR_NETWORK_GAME_LOBBY_CURRENT_BALANCE :{SILVER}Trenutni balans: {WHITE}{CURRENCY_LONG} STR_NETWORK_GAME_LOBBY_LAST_YEARS_INCOME :{SILVER}Prošlogodišnji prihod: {WHITE}{CURRENCY_LONG} STR_NETWORK_GAME_LOBBY_PERFORMANCE :{SILVER}Uspešnost: {WHITE}{NUM} @@ -1883,8 +2148,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 @@ -1925,7 +2190,7 @@ STR_NETWORK_ERROR_SERVER_BANNED :{WHITE}Vi ste z STR_NETWORK_ERROR_KICKED :{WHITE}Vi ste izbačeni iz ove partije STR_NETWORK_ERROR_CHEATER :{WHITE}Varanja nisu dozvoljena na ovom serveru STR_NETWORK_ERROR_TOO_MANY_COMMANDS :{WHITE}Slali ste previše naredbi na server -STR_NETWORK_ERROR_TIMEOUT_PASSWORD :{WHITE}Previše dugo se nije unala lozinka +STR_NETWORK_ERROR_TIMEOUT_PASSWORD :{WHITE}Trebalo vam je previše vremena da unesete lozinku STR_NETWORK_ERROR_TIMEOUT_COMPUTER :{WHITE}Računar je suviše spor da bi ispratio rad servera STR_NETWORK_ERROR_TIMEOUT_MAP :{WHITE}Računaru je suviše dugo trebalo da preuzme mapu STR_NETWORK_ERROR_TIMEOUT_JOIN :{WHITE}Računaru je suviše dugo trebalo da se priključi serveru @@ -1996,6 +2261,8 @@ STR_CONTENT_SELECT_UPDATES_CAPTION :{BLACK}Obeleži STR_CONTENT_SELECT_UPDATES_CAPTION_TOOLTIP :{BLACK}Obeležava sve preuzete dodatke koje imaju novija izdanja za preuzimanje STR_CONTENT_UNSELECT_ALL_CAPTION :{BLACK}Poništi izbor svega STR_CONTENT_UNSELECT_ALL_CAPTION_TOOLTIP :{BLACK}Otkazuje preuzimanje svih dodataka +STR_CONTENT_SEARCH_EXTERNAL :{BLACK}Pretraži eksterne web stranice +STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER_CAPTION :{WHITE}Vi napuštate OpenTTD! STR_CONTENT_FILTER_TITLE :{BLACK}Filter po oznaci/nazivu: STR_CONTENT_OPEN_URL :{BLACK}Idi na Web lokaciju STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}Ovaj sadržaj nalazi se na Web lokaciji @@ -2004,7 +2271,7 @@ STR_CONTENT_DOWNLOAD_CAPTION_TOOLTIP :{BLACK}Započin STR_CONTENT_TOTAL_DOWNLOAD_SIZE :{SILVER}Ukupna količina za preuzimanje: {WHITE}{BYTES} STR_CONTENT_DETAIL_TITLE :{SILVER}PODACI O DODATKU STR_CONTENT_DETAIL_SUBTITLE_UNSELECTED :{SILVER}Dodatak nije označen preuzimanje -STR_CONTENT_DETAIL_SUBTITLE_SELECTED :{SILVER}Dodatak je označena za preuzimanje +STR_CONTENT_DETAIL_SUBTITLE_SELECTED :{SILVER}Dodatak je označen za preuzimanje STR_CONTENT_DETAIL_SUBTITLE_AUTOSELECTED :{SILVER}Ovaj dodatak je označen za preuzimanje zbog zavisnosti STR_CONTENT_DETAIL_SUBTITLE_ALREADY_HERE :{SILVER}Ovo već imate STR_CONTENT_DETAIL_SUBTITLE_DOES_NOT_EXIST :{SILVER}Ovaj dodatak je nepoznat i ne može se preuzeti sa OpenTTD @@ -2018,7 +2285,7 @@ STR_CONTENT_DETAIL_FILESIZE :{SILVER}Veliči STR_CONTENT_DETAIL_SELECTED_BECAUSE_OF :{SILVER}Označeno zbog: {WHITE}{STRING} STR_CONTENT_DETAIL_DEPENDENCIES :{SILVER}Zavisnosti: {WHITE}{STRING} STR_CONTENT_DETAIL_TAGS :{SILVER}Oznake: {WHITE}{STRING} -STR_CONTENT_NO_ZLIB :{WHITE}OpenTTD je napravljen bez podrške za "zlib"... +STR_CONTENT_NO_ZLIB :{WHITE}OpenTTD je kompajliran bez podrške za "zlib"... STR_CONTENT_NO_ZLIB_SUB :{WHITE}... preuzimanje dodataka nije moguće! # Order of these is important! @@ -2065,6 +2332,10 @@ STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}Promena STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Promena prozirnosti pokazatelja utovara. Sa Ctrl+Klik se zaključava STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}Čini objekte nevidljivim umesto prozirnim +# Linkgraph legend window + +# Linkgraph legend window and linkgraph legend in smallmap + # Base for station construction window(s) STR_STATION_BUILD_COVERAGE_AREA_TITLE :{BLACK}Označavanje zahvaćenog područja STR_STATION_BUILD_COVERAGE_OFF :{BLACK}Isključeno @@ -2072,7 +2343,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 @@ -2125,19 +2396,19 @@ 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 STR_BUILD_SIGNAL_CAPTION :{WHITE}Izbor Signalizacije STR_BUILD_SIGNAL_SEMAPHORE_NORM_TOOLTIP :{BLACK}Blok Signalizacija (semafor){}Ovo je najosnovnija vrsta signalizacije, dozvoljava samo jedan voz da bude u istoj deonici -STR_BUILD_SIGNAL_SEMAPHORE_ENTRY_TOOLTIP :{BLACK}Ulazna Signalizacija (semafor){}Otvoren prolaz ukoliko postoji jedan ili više otvorenih izlaznih signalizacija sa nastupajuće deonica. U suprotnom je zatvoren +STR_BUILD_SIGNAL_SEMAPHORE_ENTRY_TOOLTIP :{BLACK}Ulazna Signalizacija (semafor){}Otvoren prolaz ukoliko postoji jedna ili više otvorenih izlaznih signalizacija sa nastupajuće deonice. U suprotnom je zatvoren STR_BUILD_SIGNAL_SEMAPHORE_EXIT_TOOLTIP :{BLACK}Izlazna Signalizacija (semafor){}Ponaša se isto kao i blok signalizacija ali je neophodan za uparivanje sa ulaznom i/ili kombinovanom signalizacijom STR_BUILD_SIGNAL_SEMAPHORE_COMBO_TOOLTIP :{BLACK}Kombinovana Signalizacija (semafor){}Kombinovana signalizacija se ponaša kao ulazna i izlazna signalizacija. Ovim se omogućava gradnja velikih "stabala" predsignalizacije STR_BUILD_SIGNAL_SEMAPHORE_PBS_TOOLTIP :{BLACK}Putna Signalizacija (semafor){}Putna signalizacija omogućava da više vozova istovremeno uđe u istu deonicu, ukoliko mogu da obezbede put do zasebnog zaustavnog koloseka. Standardnu putnu signalizaciju moguće je proći i sa suprotnog smera STR_BUILD_SIGNAL_SEMAPHORE_PBS_OWAY_TOOLTIP :{BLACK}Jednosmerna Putna Signalizacija (semafor){}Putna signalizacija omogućava da više vozova istovremeno uđe u istu deonicu, ukoliko mogu da obezbede put do zasebnog zaustavnog koloseka. Jednosmerna putna signalizacija zabranjuje prolaz sa suprotnog smera STR_BUILD_SIGNAL_ELECTRIC_NORM_TOOLTIP :{BLACK}Blok Signalizacija (svetlosni semafor){}Ovo je najosnovnija vrsta signalizacije, dozvoljava samo jedan voz da bude u istoj deonici -STR_BUILD_SIGNAL_ELECTRIC_ENTRY_TOOLTIP :{BLACK}Ulazna Signalizacija (svetlosni semafor){}Otvoren prolaz ukoliko postoji jedan ili više otvorenih izlaznih signalizacija sa nastupajuće deonica. U suprotnom je zatvoren +STR_BUILD_SIGNAL_ELECTRIC_ENTRY_TOOLTIP :{BLACK}Ulazna Signalizacija (svetlosni semafor){}Otvoren prolaz ukoliko postoji jedna ili više otvorenih izlaznih signalizacija sa nastupajuće deonice. U suprotnom je zatvoren STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}Izlazna Signalizacija (svetlosni semafor){}Ponaša se isto kao i blok signalizacija ali je neophodan za uparivanje sa ulaznom i/ili kombinovanom signalizacijom STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}Kombinovana Signalizacija (svetlosni semafor){}Kombinovana signalizacija se ponaša kao ulazna i izlazna signalizacija. Ovim se omogućava gradnja velikih "stabala" predsignalizacije STR_BUILD_SIGNAL_ELECTRIC_PBS_TOOLTIP :{BLACK}Putna Signalizacija (svetlosni semafor){}Putna signalizacija omogućava da više vozova istovremeno uđe u istu deonicu, ukoliko mogu da obezbede put do zasebnog zaustavnog koloseka. Standardnu putnu signalizaciju moguće je proći i sa suprotnog smera @@ -2167,7 +2438,7 @@ STR_BRIDGE_TUBULAR_SILICON :Cevni, Siliciju STR_ROAD_TOOLBAR_ROAD_CONSTRUCTION_CAPTION :{WHITE}Izgradnja drumskog sistema STR_ROAD_TOOLBAR_TRAM_CONSTRUCTION_CAPTION :{WHITE}Izgradnja tramvajskog sistema STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_SECTION :{BLACK}Izgradnja deonice kolovoza. Ctrl uključuje izgradnju/uklanjanje. Shift prebacuje između izgradnje i prikaza procene troškova -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_SECTION :{BLACK}Izgradnja deonice tamvajske pruge. Ctrl uključuje izgradnju/uklanjanje. Shift prebacuje između izgradnje i prikaza procene troškova +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_SECTION :{BLACK}Izgradnja deonice tramvajske pruge. Ctrl uključuje izgradnju/uklanjanje. Shift prebacuje između izgradnje i prikaza procene troškova STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOROAD :{BLACK}Gradnja kolovoza koristeći automatsko određivanje pravca. Ctrl uključuje izgradnju/uklanjanje. Shift prebacuje između izgradnje i prikaza procene troškova STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOTRAM :{BLACK}Gradnja tramvajske pruge koristeći automatsko određivanje pravca. Ctrl uključuje izgradnju/uklanjanje tramvajske pruge. Shift prebacuje između izgradnje i prikaza procene troškova STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}Izgradnja drumskog depoa (za izgradnju novih i servis starih vozila). Shift prebacuje između izgradnje i prikaza procene troškova @@ -2196,7 +2467,7 @@ STR_STATION_BUILD_BUS_ORIENTATION_TOOLTIP :{BLACK}Izbor or STR_STATION_BUILD_TRUCK_ORIENTATION :{WHITE}Orijentacija stanice za utovar kamiona STR_STATION_BUILD_TRUCK_ORIENTATION_TOOLTIP :{BLACK}Izbor orijentacije stanice za utovar kamiona STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION :{WHITE}Orijentacija tramvajske putničke stanice -STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION_TOOLTIP :{BLACK}Odaberite orijentaciju putničke tamvajske stanice +STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION_TOOLTIP :{BLACK}Odaberite orijentaciju putničke tramvajske stanice STR_STATION_BUILD_CARGO_TRAM_ORIENTATION :{WHITE}Orijentacija tramvajske teretne stanice STR_STATION_BUILD_CARGO_TRAM_ORIENTATION_TOOLTIP :{BLACK}Odaberite orijentaciju teretne tamvajske stanice @@ -2292,7 +2563,7 @@ STR_FOUND_TOWN_NEW_TOWN_TOOLTIP :{BLACK}Osnivanj STR_FOUND_TOWN_RANDOM_TOWN_BUTTON :{BLACK}Nasumično naselje STR_FOUND_TOWN_RANDOM_TOWN_TOOLTIP :{BLACK}Osnuj naselje na nasumičnoj lokaciji STR_FOUND_TOWN_MANY_RANDOM_TOWNS :{BLACK}Mnogo nasumičnih naselja -STR_FOUND_TOWN_RANDOM_TOWNS_TOOLTIP :{BLACK}Popunjava teren sa nasumično rasporđenim naseljima +STR_FOUND_TOWN_RANDOM_TOWNS_TOOLTIP :{BLACK}Popunjava teren sa nasumično raspoređenim naseljima STR_FOUND_TOWN_NAME_TITLE :{YELLOW}Ime grada: STR_FOUND_TOWN_NAME_EDITOR_TITLE :{BLACK}Unos imena grada @@ -2307,11 +2578,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 @@ -2330,15 +2601,18 @@ 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 STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP_TOOLTIP :{BLACK}Obeležava prikazane industrije i na karti +STR_INDUSTRY_CARGOES_SELECT_CARGO :{BLACK}Odaberite tovar +STR_INDUSTRY_CARGOES_SELECT_INDUSTRY :{BLACK}Odaberite fabriku +STR_INDUSTRY_CARGOES_SELECT_INDUSTRY_TOOLTIP :{BLACK}Odaberite fabriku koju želite da prikažete # Land area window STR_LAND_AREA_INFORMATION_CAPTION :{WHITE}Prikaži podatke o zemljištu @@ -2352,7 +2626,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Vlasnik STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Vlasnik železničke pruge: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Lokalna vlast: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Nema -STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Kordinate: {LTBLUE}{NUM} x {NUM} x {NUM} ({STRING}) +STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Koordinate: {LTBLUE}{NUM} x {NUM} x {NUM} ({STRING}) STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}Sagrađeno: {LTBLUE}{DATE_LONG} STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Klasa stanice: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Vrsta stanice: {LTBLUE}{STRING} @@ -2459,7 +2733,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-2012 OpenTTD tim +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2014 OpenTTD tim # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Sačuvaj poziciju @@ -2468,7 +2742,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 bi ste 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 @@ -2479,15 +2753,16 @@ STR_SAVELOAD_SAVE_TOOLTIP :{BLACK}Sačuvaj STR_SAVELOAD_LOAD_BUTTON :{BLACK}Učitaj STR_SAVELOAD_LOAD_TOOLTIP :{BLACK}Učitava označenu partiju STR_SAVELOAD_DETAIL_CAPTION :{BLACK}Detalji partije -STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}Podaci nepostoje +STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}Podaci ne postoje STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING} STR_SAVELOAD_DETAIL_GRFSTATUS :{SILVER}NewGRF: {WHITE}{STRING} -STR_SAVELOAD_OSKTITLE :{BLACK}Unesite naziv sačivane partije +STR_SAVELOAD_OSKTITLE :{BLACK}Unesite naziv sačuvane partije # World generation STR_MAPGEN_WORLD_GENERATION_CAPTION :{WHITE}Stvaranje sveta STR_MAPGEN_MAPSIZE :{BLACK}Veličina terena: +STR_MAPGEN_MAPSIZE_TOOLTIP :{BLACK}Izaberite veličinu mape u pločicama. Broj dostupnih pločica će biti neznatno manji STR_MAPGEN_BY :{BLACK}* STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Broj naselja: STR_MAPGEN_DATE :{BLACK}Datum: @@ -2495,10 +2770,6 @@ STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Broj fab 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: @@ -2520,19 +2791,18 @@ STR_MAPGEN_BORDER_RANDOM :{BLACK}Proizvol STR_MAPGEN_BORDER_RANDOMIZE :{BLACK}Proizvoljno STR_MAPGEN_BORDER_MANUAL :{BLACK}Podešeno -STR_MAPGEN_HEIGHTMAP_ROTATION :{BLACK}Orjentacija elevacione karte: +STR_MAPGEN_HEIGHTMAP_ROTATION :{BLACK}Orijentacija elevacione karte: STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Naziv elevacione karte: 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_SNOW_LINE_QUERY_CAPT :{WHITE}Promena donjeg nivoa snežnog pojasa STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Promena početne godine # SE Map generation STR_SE_MAPGEN_CAPTION :{WHITE}Vrsta scenarija STR_SE_MAPGEN_FLAT_WORLD :{WHITE}Ravan teren -STR_SE_MAPGEN_FLAT_WORLD_TOOLTIP :{BLACK}Postavlja ravano zemljište +STR_SE_MAPGEN_FLAT_WORLD_TOOLTIP :{BLACK}Postavlja ravno zemljište STR_SE_MAPGEN_RANDOM_LAND :{WHITE}Proizvoljan oblik terena STR_SE_MAPGEN_FLAT_WORLD_HEIGHT :{BLACK}Visina ravnog terena: STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_DOWN :{BLACK}Smanjuje visinu ravnog terena za jedan @@ -2599,11 +2869,13 @@ STR_NEWGRF_SETTINGS_MD5SUM :{BLACK}MD5sum: STR_NEWGRF_SETTINGS_PALETTE :{BLACK}Paleta: {SILVER}{STRING} STR_NEWGRF_SETTINGS_PARAMETER :{BLACK}Parametri: {SILVER}{STRING} -STR_NEWGRF_SETTINGS_NO_INFO :{BLACK}Podaci nepostoje +STR_NEWGRF_SETTINGS_NO_INFO :{BLACK}Podaci ne postoje STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}Odabrana datoteka nije nađena 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 @@ -2663,6 +2935,7 @@ STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Sadrži više Akcija 8 ulaza (sprajt {3:NUM}) STR_NEWGRF_ERROR_READ_BOUNDS :Čitanje iza završetka pseudo-sprajta (sprajt {3:NUM}) STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}Odabranom skupu osnovnih grafika nedostaje neki broj sprajtova.{}Molimo Vas da ga ažurirate +STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}Grafičkom setu koji je trenutno u upotrebi nedostaje određen broj sprajtova.{}Osvežite grafički set.{}S obzirom da igrate {YELLOW}razvojnu verziju OpenTTD-a{WHITE}, treba vam i {YELLOW}razvojna verzija grafičkog seta{WHITE} STR_NEWGRF_ERROR_GRM_FAILED :Traženi GRF resursi nisu dostupni (sprajt {3:NUM}) STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} je isključen od strane {STRING} STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Neispravan/nepoznat format prikazivanja sprajta (sprajt {3:NUM}) @@ -2673,6 +2946,7 @@ STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}Upravo STR_NEWGRF_DUPLICATE_GRFID :{WHITE}Nemoguće dodati: duplicirani GRF ID STR_NEWGRF_COMPATIBLE_LOADED :{ORANGE}Odabrana datoteka nije nađena (kompatibilan GRF učitan) +STR_NEWGRF_TOO_MANY_NEWGRFS :{WHITE}Ne mogu da dodam datoteku: dostignuta je granica za NewGRF datoteke STR_NEWGRF_COMPATIBLE_LOAD_WARNING :{WHITE}Kompatibilni GRF(ovi) učitani umesto nepronađenih datoteka STR_NEWGRF_DISABLED_WARNING :{WHITE}Nepronađene GRF datoteke su isključene @@ -2703,6 +2977,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... @@ -2784,10 +3061,13 @@ STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT :{YELLOW}Kupovin STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}Davanje mita lokalnoj vlasti kako bi porastao rejting vašeg preduzeća, uz rizik velike štete ukoliko se otkrije.{} Cena: {CURRENCY_LONG} # Goal window -STR_GOALS_CAPTION :{WHITE}Ciljevi +STR_GOALS_CAPTION :{WHITE}{COMPANY} Ciljevi +STR_GOALS_SPECTATOR_CAPTION :{WHITE}Globalni ciljevi 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 @@ -2826,6 +3106,15 @@ STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}Odobrene STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING} između stanica {STRING} i {STRING}{YELLOW} ({COMPANY}{YELLOW}, do {DATE_SHORT}) 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 + # Station list window STR_STATION_LIST_TOOLTIP :{BLACK}Imena stanica - klikom na ime se centrira glavni pogled na stanicu. Ctrl+Klik otvara novi pogled na lokaciju stanice STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}Držanjem Ctrl moguće je označiti više od jedne stavke @@ -2839,19 +3128,44 @@ 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 STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}Prihvata: {WHITE}{CARGO_LIST} +STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Ova stanica ima ekskluzivna transportna prava u ovom gradu. +STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} je kupio ekskluzivna prava prevoza u ovom gradu. STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Ocene STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Prikaži ocene stanice -STR_STATION_VIEW_CARGO_RATINGS_TITLE :{BLACK}Kotiranje lokalnih prevoznih usluga: -STR_STATION_VIEW_CARGO_RATING :{WHITE}{STRING}: {YELLOW}{STRING} ({COMMA}%) +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 +STR_STATION_VIEW_WAITING_AMOUNT :Količina: Čekajuća +STR_STATION_VIEW_PLANNED_STATION :Stanica: Planirana +STR_STATION_VIEW_PLANNED_AMOUNT :Količina: Planirana +STR_STATION_VIEW_FROM :{YELLOW}{CARGO_SHORT} od {STATION} +STR_STATION_VIEW_VIA :{YELLOW}{CARGO_SHORT} preko {STATION} +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 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 @@ -2874,6 +3188,8 @@ 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} @@ -2976,7 +3292,6 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS :{WHITE}Kanali STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}Stanice: STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}Pločica sa stanicom STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}Aerodromi -STR_COMPANY_INFRASTRUCTURE_VIEW_COST :{WHITE}{1:CURRENCY_LONG}/god ({0:COMMA}) STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL :{WHITE}{CURRENCY_LONG}/god # Industry directory @@ -2993,6 +3308,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} @@ -3055,12 +3371,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 @@ -3069,7 +3386,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 @@ -3093,7 +3410,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 @@ -3247,9 +3564,12 @@ STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Izaberit STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Izaberite novu vrstu lokomotive koju biste želeli da koristite umesto obeležene s leve strane STR_REPLACE_VEHICLES_START :{BLACK}Počni Zamenu Vozila +STR_REPLACE_VEHICLES_NOW :Zameni sva vozila sada +STR_REPLACE_VEHICLES_WHEN_OLD :Zameni samo stara vozila STR_REPLACE_HELP_START_BUTTON :{BLACK}Pritisnite kako bi počela zamena vrste lokomotive označena sa leve strane sa vrstom označenom sa desne STR_REPLACE_NOT_REPLACING :{BLACK}Nezamenjuje se STR_REPLACE_NOT_REPLACING_VEHICLE_SELECTED :{BLACK}Nijedno vozilo nije označeno +STR_REPLACE_REPLACING_WHEN_OLD :{ENGINE} kada prethodni STR_REPLACE_VEHICLES_STOP :{BLACK}Zaustavi Zamenu Vozila STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Pritisnite kako bi se zaustavila zamena vrsta lokomotive označene sa leve strane @@ -3258,7 +3578,7 @@ STR_REPLACE_ENGINE_WAGON_SELECT_HELP :{BLACK}Prebacuj STR_REPLACE_ENGINES :Lokomotive STR_REPLACE_WAGONS :Vagoni -STR_REPLACE_HELP_RAILTYPE :{BLACK}Izaberite vrstu pruge za koju želite da zamenite kompozicije +STR_REPLACE_HELP_RAILTYPE :{BLACK}Izaberite vrstu pruge za koju želite zamenu kompozicije STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Prikazuje koja lokomotiva će se zameniti označenom sa leve strane, ako ih ima STR_REPLACE_RAIL_VEHICLES :Šinska Vozila STR_REPLACE_ELRAIL_VEHICLES :Elektrošinska Vozila @@ -3286,7 +3606,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 @@ -3319,7 +3639,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} @@ -3369,6 +3689,11 @@ STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Period s STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Povećava period servisiranja za 10. Ctrl+Klik povećava period servisiranja za 5 STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Smanjuje period servisiranja za 10. Ctrl+Klik smanjuje period servisiranja za 5 +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 STR_QUERY_RENAME_SHIP_CAPTION :{WHITE}Naziv broda @@ -3378,7 +3703,7 @@ STR_QUERY_RENAME_AIRCRAFT_CAPTION :{WHITE}Naziv le STR_VEHICLE_DETAILS_TRAIN_ENGINE_BUILT_AND_VALUE :{LTBLUE}{ENGINE}{BLACK} Kupljen: {LTBLUE}{NUM}{BLACK} Vrednost: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_DETAILS_TRAIN_WAGON_VALUE :{LTBLUE}{ENGINE}{BLACK} Vrednost: {LTBLUE}{CURRENCY_LONG} -STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY_TEXT :{BLACK}Ukupana nosivost ovog voza: +STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY_TEXT :{BLACK}Ukupna nosivost ovog voza: 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}) @@ -3393,7 +3718,7 @@ STR_VEHICLE_DETAILS_TRAIN_INFORMATION_TOOLTIP :{BLACK}Prikazuj STR_VEHICLE_DETAIL_TAB_CAPACITIES :{BLACK}Kapaciteti STR_VEHICLE_DETAILS_TRAIN_CAPACITIES_TOOLTIP :{BLACK}Prikazuje nosivost svih vozila u kompoziciji STR_VEHICLE_DETAIL_TAB_TOTAL_CARGO :{BLACK}Ukupni tovar -STR_VEHICLE_DETAILS_TRAIN_TOTAL_CARGO_TOOLTIP :{BLACK}Prikazuje ukupnu nosivist voza, podeljenu po vrsti tovara +STR_VEHICLE_DETAILS_TRAIN_TOTAL_CARGO_TOOLTIP :{BLACK}Prikazuje ukupnu nosivost voza, podeljenu po vrsti tovara STR_VEHICLE_DETAILS_TRAIN_ARTICULATED_RV_CAPACITY :{BLACK}Nosivost: {LTBLUE} @@ -3401,7 +3726,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 @@ -3602,7 +3929,7 @@ STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}Ovaj ras STR_TIMETABLE_STATUS_START_AT :{BLACK}Ovaj raspored počinje {STRING} STR_TIMETABLE_STARTING_DATE :{BLACK}Datum početka -STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Izbor datuma kao vreme početaka rasporeda +STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Izaberi datum kao početak ovog rasporeda. Ctrl+Click namešta polaznu tačku ovog rasporeda i deli ovaj raspored sa svim povezanim rasporedima STR_TIMETABLE_CHANGE_TIME :{BLACK}Promena Vremena STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Menjanje količine vremena za koje će obeležena naredba trajati @@ -3659,7 +3986,7 @@ STR_AI_DEBUG_SELECT_AI_TOOLTIP :{BLACK}Prikazuj STR_AI_GAME_SCRIPT :{BLACK}Skripta Partije STR_AI_GAME_SCRIPT_TOOLTIP :{BLACK}Pregled zapisnika Skripte partije -STR_ERROR_AI_NO_AI_FOUND :Nije pronađena nijadna prikladna VI.{}Učitana zamena neće raditi ništa.{}Možete preuzeti nekoliko VI preko sistema za preuzimanje dodataka +STR_ERROR_AI_NO_AI_FOUND :Nije pronađena nijedna prikladna VI.{}Učitana zamena neće raditi ništa.{}Možete preuzeti nekoliko VI preko sistema za preuzimanje dodataka STR_ERROR_AI_PLEASE_REPORT_CRASH :{WHITE}Jedna od pokrenutih skripti je pukla. Molimo vas da prijavite grešku autoru skripte sa slikom prozora za korigovanje VI / Skripte Partije STR_ERROR_AI_DEBUG_SERVER_ONLY :{YELLOW}Prozor za korigovanje VI / Skripte Partije je dostupan samo na serveru @@ -3728,6 +4055,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}Trošak: {CURRENCY_LONG} @@ -3736,6 +4065,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} @@ -3776,6 +4109,8 @@ STR_WARNING_HEIGHTMAP_SCALE_MESSAGE :{YELLOW}Pretera STR_WARNING_FALLBACK_SOUNDSET :{WHITE}Pronađen je samo rezervni skup zvukova. Ukoliko želite zvukove, preuzmite skup zvukova preko sistema za dodatke # Screenshot related messages +STR_WARNING_SCREENSHOT_SIZE_CAPTION :{WHITE}Ogromna slika ekrana +STR_WARNING_SCREENSHOT_SIZE_MESSAGE :{YELLOW}Slika ekrana će imati rezoluciju {COMMA} x {COMMA} tačaka. Snimanje slike će možda malo potrajati. Da li hoćete da nastavite? STR_MESSAGE_SCREENSHOT_SUCCESSFULLY :{WHITE}Slika je snimljena pod imenom '{STRING}' STR_ERROR_SCREENSHOT_FAILED :{WHITE}Slika nije snimljena! @@ -3799,6 +4134,7 @@ STR_ERROR_OWNED_BY :{WHITE}... je u STR_ERROR_AREA_IS_OWNED_BY_ANOTHER :{WHITE}... zemljište je u vlasništvu drugog preduzeća STR_ERROR_TERRAFORM_LIMIT_REACHED :{WHITE}... dostignuto ograničenje u izmeni reljefa STR_ERROR_CLEARING_LIMIT_REACHED :{WHITE}... dostignuto ograničenje u čišćenju pločica +STR_ERROR_TREE_PLANT_LIMIT_REACHED :{WHITE}... dosegnut limit u sadnji stabala STR_ERROR_NAME_MUST_BE_UNIQUE :{WHITE}Naziv mora biti jedinstven STR_ERROR_GENERIC_OBJECT_IN_THE_WAY :{WHITE}{1:STRING} je na putu STR_ERROR_NOT_ALLOWED_WHILE_PAUSED :{WHITE}Nije dozvoljeno tokom pauze @@ -3822,7 +4158,7 @@ STR_ERROR_ALREADY_LEVELLED :{WHITE}... već STR_ERROR_CAN_T_CHANGE_COMPANY_NAME :{WHITE}Preduzeće se ne može preimenovati... STR_ERROR_CAN_T_CHANGE_PRESIDENT :{WHITE}Vlasnik se ne može preimenovati... -STR_ERROR_MAXIMUM_PERMITTED_LOAN :{WHITE}... maskimalan dozvoljen zajam iznosi: {CURRENCY_LONG} +STR_ERROR_MAXIMUM_PERMITTED_LOAN :{WHITE}... maksimalan dozvoljen zajam iznosi: {CURRENCY_LONG} STR_ERROR_CAN_T_BORROW_ANY_MORE_MONEY :{WHITE}Nije moguće pozajmiti još novca... STR_ERROR_LOAN_ALREADY_REPAYED :{WHITE}... nema duga STR_ERROR_CURRENCY_REQUIRED :{WHITE}... potrebno {CURRENCY_LONG} @@ -3915,7 +4251,7 @@ STR_ERROR_TOO_CLOSE_TO_ANOTHER_WAYPOINT :{WHITE}Suviše STR_ERROR_CAN_T_BUILD_TRAIN_WAYPOINT :{WHITE}Ovde se ne može izgraditi putanja za prugu... STR_ERROR_CAN_T_POSITION_BUOY_HERE :{WHITE}Bova se ovde ne može postaviti... -STR_ERROR_CAN_T_CHANGE_WAYPOINT_NAME :{WHITE}Neuspešana promena naziva putanje... +STR_ERROR_CAN_T_CHANGE_WAYPOINT_NAME :{WHITE}Neuspešna promena naziva putanje... STR_ERROR_CAN_T_REMOVE_TRAIN_WAYPOINT :{WHITE}Odavde se ne može ukloniti putanja za prugu... STR_ERROR_MUST_REMOVE_RAILWAYPOINT_FIRST :{WHITE}Prvo se mora ukloniti putanja za prugu @@ -3925,7 +4261,7 @@ STR_ERROR_BUOY_IS_IN_USE :{WHITE}... plov # Depot related errors STR_ERROR_CAN_T_BUILD_TRAIN_DEPOT :{WHITE}Izgradnja železničkog depoa ovde nije moguća... STR_ERROR_CAN_T_BUILD_ROAD_DEPOT :{WHITE}Izgradnja drumskog depoa ovde nije moguća... -STR_ERROR_CAN_T_BUILD_TRAM_DEPOT :{WHITE}Izgradnja tramvajkog depoa ovde nije moguća... +STR_ERROR_CAN_T_BUILD_TRAM_DEPOT :{WHITE}Izgradnja tramvajskog depoa ovde nije moguća... STR_ERROR_CAN_T_BUILD_SHIP_DEPOT :{WHITE}Ovde nije moguće izgraditi brodski hangar STR_ERROR_CAN_T_RENAME_DEPOT :{WHITE}Ovaj depo se ne može preimenovati... @@ -3994,7 +4330,7 @@ STR_ERROR_CAN_T_BUILD_AQUEDUCT_HERE :{WHITE}Akvadukt # Tree related errors STR_ERROR_TREE_ALREADY_HERE :{WHITE}... drvo je već na tom mestu -STR_ERROR_TREE_WRONG_TERRAIN_FOR_TREE_TYPE :{WHITE}... teren neodgovara vrsti drveća +STR_ERROR_TREE_WRONG_TERRAIN_FOR_TREE_TYPE :{WHITE}... teren ne odgovara vrsti drveća STR_ERROR_CAN_T_PLANT_TREE_HERE :{WHITE}Ovde je nemoguće posaditi drvo... # Bridge related errors @@ -4084,6 +4420,11 @@ 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... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}... vozilo je uništeno @@ -4126,6 +4467,16 @@ STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}Nemoguć # Translatable comment for OpenTTD's desktop shortcut STR_DESKTOP_SHORTCUT_COMMENT :Simulacija bazirana na igri Transport Tycoon Deluxe +# Translatable descriptions in media/baseset/*.ob* files +STR_BASEGRAPHICS_DOS_DESCRIPTION :Originalni skup grafika Transport Tycoon Deluxe DOS izdanja. +STR_BASEGRAPHICS_DOS_DE_DESCRIPTION :Originalni skup grafika nemačkog Transport Tycoon Deluxe DOS izdanja. +STR_BASEGRAPHICS_WIN_DESCRIPTION :Originalni skup grafika Transport Tycoon Deluxe Windows izdanja. +STR_BASESOUNDS_DOS_DESCRIPTION :Originalni skup zvukova Transport Tycoon Deluxe DOS izdanja. +STR_BASESOUNDS_WIN_DESCRIPTION :Originalni skup zvukova Transport Tycoon Deluxe Windows izdanja. +STR_BASESOUNDS_NONE_DESCRIPTION :Prazan skup zvukova. +STR_BASEMUSIC_WIN_DESCRIPTION :Originalni skup muzičkih numera Transport Tycoon Deluxe Windows izdanja. +STR_BASEMUSIC_NONE_DESCRIPTION :Prazan skup muzičkih numera. + ##id 0x2000 # Town building names STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1 :Visoka radionica @@ -4133,7 +4484,7 @@ STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_1 :Radionica STR_TOWN_BUILDING_NAME_SMALL_BLOCK_OF_FLATS_1 :Male blagoste STR_TOWN_BUILDING_NAME_CHURCH_1 :Crkva STR_TOWN_BUILDING_NAME_LARGE_OFFICE_BLOCK_1 :Velika radionica -STR_TOWN_BUILDING_NAME_TOWN_HOUSES_1 :Gradna kuća +STR_TOWN_BUILDING_NAME_TOWN_HOUSES_1 :Gradska kuća STR_TOWN_BUILDING_NAME_HOTEL_1 :Hotel STR_TOWN_BUILDING_NAME_STATUE_1 :Statua STR_TOWN_BUILDING_NAME_FOUNTAIN_1 :Fontana @@ -4248,7 +4599,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) @@ -4330,7 +4681,7 @@ STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FIZZY_DRINK_TRUCK :Vagon za Bezalk STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PLASTIC_TRUCK :Vagon za Plastiku STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV1_LEVIATHAN_ELECTRIC :{G=ženski}Lev1 'Leviathan' (Electrična) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV2_CYCLOPS_ELECTRIC :{G=ženski}Lev2 'Cyclops' (Električna) -STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV3_PEGASUS_ELECTRIC :{G=ženski}Lev3 'Pegasus' (Electrična) +STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV3_PEGASUS_ELECTRIC :{G=ženski}Lev3 'Pegasus' (Električna) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV4_CHIMAERA_ELECTRIC :{G=ženski}Lev4 'Chimaera' (Električna) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_WIZZOWOW_ROCKETEER :Wizzowow Rocketeer STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PASSENGER_CAR :Putnička Kola @@ -4457,7 +4808,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 @@ -4572,8 +4923,9 @@ 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_SPACE_STRING :{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} @@ -4597,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/simplified_chinese.txt b/src/lang/simplified_chinese.txt index d6c23c2ef..dfad8e52d 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,7 +91,7 @@ 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 : @@ -125,7 +125,7 @@ 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,7 +160,7 @@ 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}全 @@ -176,7 +176,7 @@ STR_CRATES :{COMMA} 件 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,36 +191,44 @@ STR_COLOUR_GREY :浅灰色 STR_COLOUR_WHITE :白 色 # Units used in OpenTTD -STR_UNITS_VELOCITY_IMPERIAL :{COMMA} 英里/时 +STR_UNITS_VELOCITY_IMPERIAL :{COMMA} 英里/小时 STR_UNITS_VELOCITY_METRIC :{COMMA} 千米/小时 STR_UNITS_VELOCITY_SI :{COMMA} 米/秒 -STR_UNITS_POWER_IMPERIAL :{COMMA} 马力 -STR_UNITS_POWER_METRIC :{COMMA} 马力 -STR_UNITS_POWER_SI :{COMMA} 千瓦 +STR_UNITS_POWER_IMPERIAL :{COMMA}马力 +STR_UNITS_POWER_METRIC :{COMMA}马力 +STR_UNITS_POWER_SI :{COMMA}千瓦 -STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA} 吨 -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_IMPERIAL :{COMMA}英吨 STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} 吨 -STR_UNITS_WEIGHT_LONG_SI :{COMMA} 千克 +STR_UNITS_WEIGHT_LONG_SI :{COMMA}千克 -STR_UNITS_VOLUME_SHORT_METRIC :{COMMA} 升 -STR_UNITS_VOLUME_SHORT_SI :{COMMA} 立方米 +STR_UNITS_VOLUME_SHORT_IMPERIAL :{COMMA}加仑 +STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}升 +STR_UNITS_VOLUME_SHORT_SI :{COMMA}立方米 -STR_UNITS_VOLUME_LONG_METRIC :{COMMA} 升 -STR_UNITS_VOLUME_LONG_SI :{COMMA} 立方米 +STR_UNITS_VOLUME_LONG_IMPERIAL :{COMMA}加仑 +STR_UNITS_VOLUME_LONG_METRIC :{COMMA}升 +STR_UNITS_VOLUME_LONG_SI :{COMMA}立方米 -STR_UNITS_FORCE_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_SI :{COMMA} 公尺 +STR_UNITS_HEIGHT_IMPERIAL :{COMMA}英尺 +STR_UNITS_HEIGHT_METRIC :{COMMA}米 +STR_UNITS_HEIGHT_SI :{COMMA}米 # 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}选择过滤标准 @@ -232,12 +240,13 @@ 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+左击将选项定为预设 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}拆除地块上的建筑物等设施 +STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}拆除地块上的建筑物等设施,按住Ctrl键选择对角线区域,按住Shift键操作只提示预计成本 # Query window STR_BUTTON_DEFAULT :{BLACK}默认 @@ -256,7 +265,6 @@ STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}面积 # These are used in buttons -STR_SORT_BY_CAPTION_POPULATION :{BLACK}人口 STR_SORT_BY_CAPTION_NAME :{BLACK}名称 STR_SORT_BY_CAPTION_DATE :{BLACK}日期 # These are used in dropdowns @@ -277,18 +285,21 @@ STR_SORT_BY_LENGTH :长度 STR_SORT_BY_LIFE_TIME :剩余寿命年限 STR_SORT_BY_TIMETABLE_DELAY :晚点 STR_SORT_BY_FACILITY :车站类型 -STR_SORT_BY_WAITING :等待的货物数量 +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 (默认方式) 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_RANGE :航行距离 +STR_SORT_BY_POPULATION :人口 +STR_SORT_BY_RATING :等级 # Tooltips for the main toolbar STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}暂停游戏 @@ -301,6 +312,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}建设新的工业设施 @@ -317,7 +330,7 @@ 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调试,截图,关于OpenTTD +STR_TOOLBAR_TOOLTIP_LAND_BLOCK_INFORMATION :{BLACK}地块信息查询,控制台,脚本调试,截图,关于OpenTTD STR_TOOLBAR_TOOLTIP_SWITCH_TOOLBAR :{BLACK}切换工具栏 # Extra tooltips for the scenario editor toolbar @@ -334,7 +347,7 @@ STR_SCENEDIT_TOOLBAR_INDUSTRY_GENERATION :{BLACK}生成 STR_SCENEDIT_TOOLBAR_ROAD_CONSTRUCTION :{BLACK}公路建设 STR_SCENEDIT_TOOLBAR_PLANT_TREES :{BLACK}植树。Shift显示预计花费。 STR_SCENEDIT_TOOLBAR_PLACE_SIGN :{BLACK}放置标志 -STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}放置物体 +STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}放置物体,按住Shift键操作显示预计费用 ############ range for SE file menu starts STR_SCENEDIT_FILE_MENU_SAVE_SCENARIO :保存场景 @@ -349,7 +362,7 @@ 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_SCRIPT_SETTINGS :AI / 游戏脚本设定 STR_SETTINGS_MENU_NEWGRF_SETTINGS :NewGRF 设置 STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :透明选项 STR_SETTINGS_MENU_TOWN_NAMES_DISPLAYED :显示城镇名称 @@ -371,19 +384,19 @@ STR_FILE_MENU_SEPARATOR : STR_FILE_MENU_EXIT :退出 ############ range ends here -############ range for map menu starts +# 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, yet the town directory is shown in the map menu in the scenario editor + +############ range for town menu starts STR_TOWN_MENU_TOWN_DIRECTORY :城镇列表 -############ end of the 'Display map' dropdown STR_TOWN_MENU_FOUND_TOWN :建立城镇 -############ end of the 'Town' dropdown +############ range ends here ############ range for subsidies menu starts STR_SUBSIDIES_MENU_SUBSIDIES :财政补贴 -STR_SUBSIDIES_MENU_GOAL :当前目标 ############ range ends here ############ range for graph menu starts @@ -446,7 +459,7 @@ STR_NEWS_MENU_MESSAGE_HISTORY_MENU :消息历史 STR_ABOUT_MENU_LAND_BLOCK_INFO :查询地块信息 STR_ABOUT_MENU_SEPARATOR : STR_ABOUT_MENU_TOGGLE_CONSOLE :切换到控制台模式 -STR_ABOUT_MENU_AI_DEBUG :AI / 脚本 调试 +STR_ABOUT_MENU_AI_DEBUG :AI /游戏脚本调试 STR_ABOUT_MENU_SCREENSHOT :屏幕截图 STR_ABOUT_MENU_ZOOMIN_SCREENSHOT :高清截图 STR_ABOUT_MENU_DEFAULTZOOM_SCREENSHOT :默认缩放模式下的屏幕截图 @@ -454,9 +467,10 @@ STR_ABOUT_MENU_GIANT_SCREENSHOT :全地图截图 STR_ABOUT_MENU_ABOUT_OPENTTD :关于 'OpenTTD' STR_ABOUT_MENU_SPRITE_ALIGNER :Sprite 对齐 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号 @@ -472,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 @@ -537,7 +569,7 @@ STR_GRAPH_CARGO_PAYMENT_RATES_X_LABEL :{TINY_FONT}{BLA 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_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} @@ -649,7 +681,7 @@ STR_HIGHSCORE_PERFORMANCE_TITLE_CAPITALIST :运输资本家 STR_HIGHSCORE_PERFORMANCE_TITLE_MAGNATE :运输行业巨子 STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL :运输行业领袖 STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY :世纪大亨 -STR_HIGHSCORE_NAME :{BIG_FONT}{PRESIDENT_NAME}, {COMPANY} +STR_HIGHSCORE_NAME :{PRESIDENT_NAME}, {COMPANY} STR_HIGHSCORE_STATS :{BIG_FONT}'{STRING}' ({COMMA}) STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{BLACK}{COMPANY} 达到 '{STRING}' 的状态! STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{WHITE}{PRESIDENT_NAME} 在 {COMPANY} 达到 '{STRING}' 状态! @@ -660,17 +692,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+左击 只显示该工业类型. 再度 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}铁路 @@ -704,6 +739,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}全部禁用 @@ -714,6 +750,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}显示最后一条消息或新闻 @@ -790,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} 已经达到报废年限 @@ -875,15 +912,12 @@ 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 -STR_GAME_OPTIONS_MEASURING_UNITS_FRAME :{BLACK}度量单位 -STR_GAME_OPTIONS_MEASURING_UNITS_DROPDOWN_TOOLTIP :{BLACK}度量单位选择 ############ start of measuring units region -STR_GAME_OPTIONS_MEASURING_UNITS_IMPERIAL :英制 -STR_GAME_OPTIONS_MEASURING_UNITS_METRIC :公制 -STR_GAME_OPTIONS_MEASURING_UNITS_SI :国际单位制 ############ end of measuring units region STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}汽车行驶 @@ -921,11 +955,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}选择界面语言 @@ -937,9 +973,6 @@ 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}选择要使用的基础图形组 STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} 文件{}未找到或不正确 @@ -1053,7 +1086,8 @@ 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 :高级设置 @@ -1062,12 +1096,16 @@ 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 :打开 @@ -1108,9 +1146,8 @@ 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_CATCHMENT :允许更真实的客源范围:{STRING} STR_CONFIG_SETTING_CATCHMENT_HELPTEXT :启用时不同类型的车站和机场有不同的客源范围 STR_CONFIG_SETTING_EXTRADYNAMITE :允许拆除更多的由城镇所有的公路、桥梁、隧道等:{STRING} @@ -1125,115 +1162,176 @@ 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_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} 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_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_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_STOP_LOCATION :新列车调度计划中默认命令为停靠车站月台 {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_AUTOSCROLL :当鼠标移动到屏幕边缘时移动屏幕:{STRING} +STR_CONFIG_SETTING_AUTOSCROLL_HELPTEXT :启用后,鼠标移动到视点窗口边缘时,视点窗口自动滚动 STR_CONFIG_SETTING_AUTOSCROLL_DISABLED :禁用 STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT_FULLSCREEN :主视点,仅全屏模式 STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT :主视点 STR_CONFIG_SETTING_AUTOSCROLL_EVERY_VIEWPORT :每个视角 STR_CONFIG_SETTING_BRIBE :允许贿赂地方政府:{STRING} +STR_CONFIG_SETTING_BRIBE_HELPTEXT :“打开”时,允许贿赂地方政府,如果被发现,在该城市将被限制经营活动六个月 STR_CONFIG_SETTING_ALLOW_EXCLUSIVE :允许买断经营权: {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 :“打开”时,允许公司资助地方修整道路 STR_CONFIG_SETTING_ALLOW_GIVE_MONEY :允许向其他公司转移资金: {STRING} +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_VALUE :1 / {COMMA} STR_CONFIG_SETTING_PLANE_CRASHES :空难: {STRING} +STR_CONFIG_SETTING_PLANE_CRASHES_HELPTEXT :设置空难发生的概率 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_HELPTEXT :“打开”时允许在城市所属的道路上建设通过式车站 STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :允许在竞争对手所属的道路上建通过式车站: {STRING} -STR_CONFIG_SETTING_ADJACENT_STATIONS :允许建设临近站台: {STRING} -STR_CONFIG_SETTING_DYNAMIC_ENGINES :允许使用多GRF运输工具: {STRING} +STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT :“打开”时,允许在其它公司所属的道路上建设通过式车站 STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}当有车辆时,不可能更改此设定。 STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :加强版固定资产维护: {STRING} +STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :固定资产会发生维护费用,“打开”本选项时,维护费用的增长会超过交通网络的增长规模,因而,对大公司影响更大。 STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :总允许建设小型机场: {STRING} +STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS_HELPTEXT :“打开”此选项,每种类型机场出现后一直是可用的 STR_CONFIG_SETTING_WARN_LOST_VEHICLE :当列车无法找到路线时提示: {STRING} +STR_CONFIG_SETTING_WARN_LOST_VEHICLE_HELPTEXT :“打开”时,当车辆无法找到路径时给出提示 STR_CONFIG_SETTING_ORDER_REVIEW :检查车辆的调度计划:{STRING} +STR_CONFIG_SETTING_ORDER_REVIEW_HELPTEXT :启用时,相应类型车辆的调度计划会定期检查,发现的问题会以新闻的形式报告 STR_CONFIG_SETTING_ORDER_REVIEW_OFF :不检查 STR_CONFIG_SETTING_ORDER_REVIEW_EXDEPOT :检查 不包括停运的车辆 STR_CONFIG_SETTING_ORDER_REVIEW_ON :检查 所有车辆 STR_CONFIG_SETTING_WARN_INCOME_LESS :若线路亏损时发出提示: {STRING} +STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :“打开”,当一辆车在一年内总体亏损,发出提示 STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :车辆永不报废:{STRING} +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_HELPTEXT :设置车辆自动更新的时间 +STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_BEFORE :{COMMA} 个月前 +STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_AFTER :{COMMA} 个月后 STR_CONFIG_SETTING_AUTORENEW_MONEY :启动自动更新需要的最少现金:{STRING} +STR_CONFIG_SETTING_AUTORENEW_MONEY_HELPTEXT :启动自动更新车辆时需要保留的最少现金 +STR_CONFIG_SETTING_ERRMSG_DURATION :错误信息持续时间{STRING} +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_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 :新算法 +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_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_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_HELPTEXT :设置车站最大占地面积,注意:太大影响游戏速度 STR_CONFIG_SETTING_SERVICEATHELIPAD :直升机在降落平台自动保养:{STRING} +STR_CONFIG_SETTING_SERVICEATHELIPAD_HELPTEXT :直升飞机在降落平台自动保养,即使机场没有机库 STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR :将景观美化工具栏与铁路/公路/船只/机场工具栏连接:{STRING} +STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR_HELPTEXT :“打开”时,在打开交通建设工具栏时同时打开景观美化工具栏 STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR :缩略地图颜色选择: {STRING} +STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :设置缩略地图的颜色 STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :绿色 STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :深绿色 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_MEASURE_TOOLTIP :建设时显示测量数据:{STRING} +STR_CONFIG_SETTING_MEASURE_TOOLTIP_HELPTEXT :建设时显示距离格数和地形高差 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 :使用与团队交谈:{STRING} +STR_CONFIG_SETTING_PREFER_TEAMCHAT_HELPTEXT :切换公司内部谈话和公开谈话为 STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING :鼠标滚轮的作用:{STRING} +STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING_HELPTEXT :可用二维鼠标滚轮进行屏幕滚动 STR_CONFIG_SETTING_SCROLLWHEEL_ZOOM :缩放地图 STR_CONFIG_SETTING_SCROLLWHEEL_SCROLL :滚动地图 STR_CONFIG_SETTING_SCROLLWHEEL_OFF :关闭 STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER :地图滚动速度:{STRING} +STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER_HELPTEXT :本选项控制鼠标滚轮灵敏度 STR_CONFIG_SETTING_OSK_ACTIVATION :开启屏幕键盘: {STRING} STR_CONFIG_SETTING_OSK_ACTIVATION_HELPTEXT :当输入文本或编辑框里是否使用屏幕键盘。适用于没有物理键盘的设备。 STR_CONFIG_SETTING_OSK_ACTIVATION_DISABLED :禁止 @@ -1242,39 +1340,52 @@ 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_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_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} +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_HELPTEXT :允许使用高级车辆列表,方便进行车辆分组操作 STR_CONFIG_SETTING_LOADING_INDICATORS :使用装货进度指示: {STRING} +STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :选择是否在车辆上方显示装卸货物进度 STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :使用时间标记而不是天为单位: {STRING} +STR_CONFIG_SETTING_TIMETABLE_IN_TICKS_HELPTEXT :时间表以ticks而不是天显示。 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_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_MOST_USED :最常用的 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 :“打开”时在桥梁、隧道等建造工具使用后保持选中,方便继续使用 STR_CONFIG_SETTING_EXPENSES_LAYOUT :企业财政窗口中的组群支出:{STRING} +STR_CONFIG_SETTING_EXPENSES_LAYOUT_HELPTEXT :“打开”时公司财务报表将分组显示 STR_CONFIG_SETTING_SOUND_TICKER :产业新闻: {STRING} STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :每月初产业新闻音效 @@ -1283,26 +1394,35 @@ 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} STR_CONFIG_SETTING_SOUND_DISASTER_HELPTEXT :播放灾难和事故音效 -STR_CONFIG_SETTING_SOUND_VEHICLE :交通工具: {STRING} +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_HELPTEXT :每间公司最多能够拥有的汽车数量 STR_CONFIG_SETTING_MAX_AIRCRAFT :每间公司最大飞机数量:{STRING} +STR_CONFIG_SETTING_MAX_AIRCRAFT_HELPTEXT :每间公司最多能够拥有的飞机数量 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_AIRCRAFT :禁止电脑使用飞机:{STRING} +STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT_HELPTEXT :“打开”本选项将禁止电脑使用飞机 STR_CONFIG_SETTING_AI_BUILDS_SHIPS :禁止电脑使用船只:{STRING} +STR_CONFIG_SETTING_AI_BUILDS_SHIPS_HELPTEXT :“打开”本选项将禁止电脑使用船只 STR_CONFIG_SETTING_AI_PROFILE :默认设置属性: {STRING} STR_CONFIG_SETTING_AI_PROFILE_HELPTEXT :设置随机添加AI或脚本时的AI初始属性。 @@ -1311,11 +1431,28 @@ STR_CONFIG_SETTING_AI_PROFILE_MEDIUM :中等 STR_CONFIG_SETTING_AI_PROFILE_HARD :困难 STR_CONFIG_SETTING_AI_IN_MULTIPLAYER :联机游戏时允许电脑玩家(AI): {STRING} +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_HELPTEXT :选择触发车辆保养的条件,距离上一次保养的时间或者与最高可靠性的百分比 +STR_CONFIG_SETTING_SERVINT_TRAINS :火车默认保养周期:{STRING} +STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :如果没有为火车直接指定保养周期,设定默认火车保养周期 +STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}天(%) +STR_CONFIG_SETTING_SERVINT_DISABLED :关闭 +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_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_HELPTEXT :报纸报道运输工具到达新玩家的站台情况 @@ -1344,6 +1481,7 @@ 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 :显示普通事件新闻,例如购买运输专营权或市场道路整修。 @@ -1352,44 +1490,75 @@ 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_ALLOW_SHARES :允许购买其他公司的股份:{STRING} +STR_CONFIG_SETTING_ALLOW_SHARES_HELPTEXT :“打开”时,允许买卖其它公司股份,但必须持有达到一定年限 +STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE :转运系统中支付的利润百分比 {STRING} +STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE_HELPTEXT :设定在转运系统中支付给前一环节的收入百分比, 从而对收入有更多的控制权 +STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY :当拖动时,放置信号灯每隔:{STRING} +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+拖动方法建设信号灯时是否保持固定的间距,如果“关闭”,不考虑隧道和桥梁长度(在隧道和桥梁进出口第一个各放置一个),避免很长一段没有信号灯,如果“打开”,每隔设定的距离(桥梁和隧道长度也计算在内)就放置一个信号灯。 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_DEFAULT_SIGNAL_TYPE :默认建造的信号灯类型: {STRING} -STR_CONFIG_SETTING_DEFAULT_SIGNAL_NORMAL :普通 -STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBS :高级 -STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBSOWAY :高级单向 +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_NORMAL :仅有普通 -STR_CONFIG_SETTING_CYCLE_SIGNAL_PBS :仅有高级 +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_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_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_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_FORBIDDEN :禁止 STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :允许 STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :允许,自定义城镇布局 STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT :树木自动生长: {STRING} +STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_HELPTEXT :控制游戏中数目的随机生长,这将影响依赖树木的工业,比如木材厂 STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NONE :无 {RED}(损坏伐木场) STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_RAINFOREST :仅在雨林中 STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_ALL :任意地点 STR_CONFIG_SETTING_TOOLBAR_POS :主工具栏位置:{STRING} +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_HELPTEXT :移动一个窗口靠近临近的窗口触发自动吸附的距离 +STR_CONFIG_SETTING_SNAP_RADIUS_VALUE :{COMMA} 像素 +STR_CONFIG_SETTING_SNAP_RADIUS_DISABLED :关闭 STR_CONFIG_SETTING_SOFT_LIMIT :窗口软性限制(非粘滞): {STRING} +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_LVL_MIN :4倍 STR_CONFIG_SETTING_ZOOM_LVL_IN_2X :2倍 STR_CONFIG_SETTING_ZOOM_LVL_NORMAL :普通 @@ -1397,42 +1566,115 @@ STR_CONFIG_SETTING_ZOOM_LVL_OUT_2X :2倍 STR_CONFIG_SETTING_ZOOM_LVL_OUT_4X :4倍 STR_CONFIG_SETTING_ZOOM_LVL_OUT_8X :8倍 STR_CONFIG_SETTING_TOWN_GROWTH :城镇发展速度:{STRING} +STR_CONFIG_SETTING_TOWN_GROWTH_HELPTEXT :城市发展速度 STR_CONFIG_SETTING_TOWN_GROWTH_NONE :无 STR_CONFIG_SETTING_TOWN_GROWTH_SLOW :慢 STR_CONFIG_SETTING_TOWN_GROWTH_NORMAL :正常 STR_CONFIG_SETTING_TOWN_GROWTH_FAST :快 STR_CONFIG_SETTING_TOWN_GROWTH_VERY_FAST :非常快 +STR_CONFIG_SETTING_LARGER_TOWNS :随机生成城镇时,生成大都市的比例为: {STRING} +STR_CONFIG_SETTING_LARGER_TOWNS_HELPTEXT :随机生成城镇时,有可能生成大都市的数量,这些大都市起始人口较多、发展也较快。 +STR_CONFIG_SETTING_LARGER_TOWNS_VALUE :1 / {COMMA} +STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :没有 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_CITY_SIZE_MULTIPLIER_HELPTEXT :游戏开局时,城市的平均规模相对于普通城镇的比值 + +STR_CONFIG_SETTING_LINKGRAPH_INTERVAL :每 {STRING} 天更新一次统计图 +STR_CONFIG_SETTING_LINKGRAPH_INTERVAL_HELPTEXT :指定每次计算货物分配图之间的时间。由于每次重新计算只会处理一个货物分配图元件,因此本设定不代表“每若干日重新计算整个货物分配图”。{}如果此设定赋值越小,則系统需要使用更多处理器时间计算货物分配图。相反,如果此设定赋值越大,則货物被派往新路线所需的时间越长。 +STR_CONFIG_SETTING_LINKGRAPH_TIME :每次刷新货物分配图持续 {STRING} 天 +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,则始发站与另一站的距离会影晌该路线获分派货物的数量。目的站距离越远,获分派的货物越少。此设定的赋值越大,越多货物会被派往较接近的站。 +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 :货物分配功能在派送货物时,会优先使用最短路径,当它饱和后改用第二短的路径,如此类推。当所有路径皆饱和但仍未满足需求,系统會由容量较大的路径开始继续加载货物。{}由于路径饱和度难以准确估算,此设定容许您定义一值,使短路径达到该饱和度后,系统便开始加载容量较大的路径。{}如果此设定的值少於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 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_SHIPS :船只寻路: {STRING} +STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT :船只寻路方式 STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :遇到红灯时自动掉头 {STRING} +STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT :当列车在信号灯前长时间等待时,允许掉头 STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}改变设置值 @@ -1440,6 +1682,7 @@ STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}改变 STR_CONFIG_ERROR :{WHITE}配置文件错误... STR_CONFIG_ERROR_ARRAY :{WHITE}... 函数错误 '{STRING}' STR_CONFIG_ERROR_INVALID_VALUE :{WHITE}...对 '{STRING}'设置了错误值'{STRING}' +STR_CONFIG_ERROR_TRAILING_CHARACTERS :{WHITE}... 有多余字符在设定的结尾处'{STRING}' STR_CONFIG_ERROR_DUPLICATE_GRFID :{WHITE}... 忽略 NewGRF '{STRING}': 重复的 GRF ID '{STRING}' STR_CONFIG_ERROR_INVALID_GRF :{WHITE}... 忽略了无效的 NewGRF '{STRING}': {STRING} STR_CONFIG_ERROR_INVALID_GRF_NOT_FOUND :未找到 @@ -1452,6 +1695,8 @@ STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_ALGORITHM :{WHITE}...存 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}内存溢出 +STR_CONFIG_ERROR_SPRITECACHE_TOO_BIG :{WHITE}无法编配{BYTES}作为sprite快取。sprite快取的大小已降至{BYTES}。OpenTTD的效能将受到影晌。请尝试停用32bpp图形及/或减少放大倍数,以减低內存要求 # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} @@ -1573,6 +1818,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}选择男性的头像 @@ -1628,10 +1874,10 @@ STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}选择 # Network server list STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}联机游戏 -STR_NETWORK_SERVER_LIST_CONNECTION :{BLACK}连接: -STR_NETWORK_SERVER_LIST_CONNECTION_TOOLTIP :{BLACK}选择一个 Internet 上的游戏或局域网 (LAN) 中的游戏 -STR_NETWORK_SERVER_LIST_LAN :局域网 -STR_NETWORK_SERVER_LIST_INTERNET :Internet +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}其他玩家将通过该名字来认识您 @@ -1690,8 +1936,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_LAN_INTERNET :局域网 / Internet -STR_NETWORK_START_SERVER_INTERNET_ADVERTISE :Internet (advertise) +STR_NETWORK_START_SERVER_UNADVERTISED :否 +STR_NETWORK_START_SERVER_ADVERTISED :是 STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} 客户端 STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}玩家数目: STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}选择可以参加的玩家上限(达不到此数量仍然可以开始游戏) @@ -1812,6 +2058,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}不保存所输入的密码 @@ -1930,6 +2177,10 @@ 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没有联系的网站搜寻没有纳入OpenTTD內容服务的內容 +STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER_CAPTION :{WHITE}正在离开游戏! +STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER :{WHITE}在外部网站下载內容的规则及条款可能跟OpenTTD引用的规则及条款不同。{}您需要参照有关网站以取得在OpenTTD安装有关內容的资讯。{}您要継续吗? STR_CONTENT_FILTER_TITLE :{BLACK}标签/名称过滤器 STR_CONTENT_OPEN_URL :{BLACK}查看主页 STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}打开该扩展包主页 @@ -1999,6 +2250,17 @@ STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}调整 STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}调整装载进度显示是否为透明{}CTRL+点击 锁定 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}显示覆盖区域 STR_STATION_BUILD_COVERAGE_OFF :{BLACK}关闭 @@ -2021,15 +2283,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 键可以建立到下一个联结点。{}按住 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_TOGGLE_BUILD_REMOVE_FOR :{BLACK}切换建设/拆除轨道、信号灯、路点和车站。按住 Ctrl 键可在移除路点和车站时同时移除轨道。 STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL :{BLACK}转换/升级 铁路类型。按住 Shift 键显示预计费用。 STR_RAIL_NAME_RAILROAD :铁路 @@ -2050,9 +2312,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}使用拖动模式建设车站 @@ -2064,19 +2326,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}增加拖拽布置信号灯的间隔距离 @@ -2301,6 +2563,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 :岩石 @@ -2312,27 +2575,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 :公路 @@ -2397,7 +2660,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-2012 OpenTTD 团队 +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2014 OpenTTD 团队 # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}保存游戏 @@ -2416,6 +2679,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} @@ -2426,6 +2690,7 @@ STR_SAVELOAD_OSKTITLE :{BLACK}为存 # World generation STR_MAPGEN_WORLD_GENERATION_CAPTION :{WHITE}地图生成器 STR_MAPGEN_MAPSIZE :{BLACK}地图规模: +STR_MAPGEN_MAPSIZE_TOOLTIP :{BLACK}选择地图尺寸(单位:格)。可用的数值会略小。 STR_MAPGEN_BY :{BLACK}* STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}城镇数量: STR_MAPGEN_DATE :{BLACK}日期: @@ -2433,10 +2698,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}地形特点: @@ -2463,7 +2724,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}改变游戏开始的日期 @@ -2518,6 +2778,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}设置参数 @@ -2542,6 +2804,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}关闭 @@ -2599,7 +2871,8 @@ STR_NEWGRF_ERROR_UNKNOWN_PROPERTY :未知的Action STR_NEWGRF_ERROR_INVALID_ID :尝试使用非法ID (sprite {3:NUM}) STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} 含有损坏的图形元素{}所有损坏的图形元素{}将显示为红色的问号(?) STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :具有多个Action 8 (sprite {3:NUM}) -STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}当前基础图组缺失参数.{}请进行修正 +STR_NEWGRF_ERROR_READ_BOUNDS :图像读取时发生越界错误 (sprite {3:NUM}) +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} 禁用 @@ -2611,6 +2884,7 @@ STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}此操 STR_NEWGRF_DUPLICATE_GRFID :{WHITE}不能添加文件:重复的 GRF ID 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 文件已经被禁用 @@ -2627,6 +2901,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}' 的信息不正确 @@ -2641,6 +2916,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。 这可能需要一些时间,取决于其数量... @@ -2722,10 +3000,14 @@ STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT :{YELLOW}购买 STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}贿赂地方政府以提高评价,但有被发现后严厉惩罚的风险。{}费用:{CURRENCY_LONG} # Goal window -STR_GOALS_CAPTION :{WHITE}目标 +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+左键 在该处创建一个视点. @@ -2740,6 +3022,7 @@ STR_GOAL_QUESTION_BUTTON_CANCEL :取消 STR_GOAL_QUESTION_BUTTON_OK :确定 STR_GOAL_QUESTION_BUTTON_NO :取消 STR_GOAL_QUESTION_BUTTON_YES :确定 +STR_GOAL_QUESTION_BUTTON_DECLINE :降低 STR_GOAL_QUESTION_BUTTON_ACCEPT :接受 STR_GOAL_QUESTION_BUTTON_IGNORE :忽略 STR_GOAL_QUESTION_BUTTON_RETRY :重试 @@ -2763,6 +3046,18 @@ STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}已经 STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}将 {STRING} 从 {STRING} 运送到 {STRING}{YELLOW} ({COMPANY}{YELLOW},截止日期为 {DATE_SHORT}) 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_USE_CTRL_TO_SELECT_MORE :{BLACK}按住 CTRL 可以同时选择多项 @@ -2776,19 +3071,44 @@ 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}显示接受的货物列表 STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}接受:{WHITE}{CARGO_LIST} +STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}这个车站在这个镇里享有独家经营权 +STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} 购买了本城镇专属经营权 STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}评价 STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}显示车站评价 -STR_STATION_VIEW_CARGO_RATINGS_TITLE :{BLACK}对本站运输货物的评价: -STR_STATION_VIEW_CARGO_RATING :{WHITE}{STRING}: {YELLOW}{STRING} ({COMMA}%) +STR_STATION_VIEW_SUPPLY_RATINGS_TITLE :{BLACK}按月供应量与本地评比: +STR_STATION_VIEW_CARGO_SUPPLY_RATING :{WHITE}{STRING}: {YELLOW}{COMMA} / {STRING} ({COMMA}%) + +STR_STATION_VIEW_GROUP :群组方式 +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 :垃圾(最差评价) @@ -2828,7 +3148,7 @@ STR_FINANCES_CAPTION :{WHITE}{COMPANY STR_FINANCES_EXPENDITURE_INCOME_TITLE :{WHITE}收入/支出 STR_FINANCES_YEAR :{WHITE}{NUM} STR_FINANCES_SECTION_CONSTRUCTION :{GOLD}建设费用 -STR_FINANCES_SECTION_NEW_VEHICLES :{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_AIRCRAFT_RUNNING_COSTS :{GOLD}航空运行费用 @@ -2915,7 +3235,6 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS :{WHITE}运河 STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}站台: STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}车站 STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}机场 -STR_COMPANY_INFRASTRUCTURE_VIEW_COST :{WHITE}每年{1:CURRENCY_LONG} ({0:COMMA}) STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL :{WHITE}每年{CURRENCY_LONG} # Industry directory @@ -2932,6 +3251,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} @@ -2994,16 +3314,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 :购买普通列车 @@ -3170,9 +3493,12 @@ STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}选择 STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}选择用来替换左侧指定车辆的新车辆 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_VEHICLE_SELECTED :{BLACK}请选择要更新的对象 +STR_REPLACE_REPLACING_WHEN_OLD :{ENGINE} 变老旧时 STR_REPLACE_VEHICLES_STOP :{BLACK}停止更新 STR_REPLACE_HELP_STOP_BUTTON :{BLACK}点击这里可以停止继续更新车辆 @@ -3292,6 +3618,11 @@ STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}保养 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_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_SHIP_CAPTION :{WHITE}命名船只 @@ -3487,9 +3818,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} (下一个目的地距离过远) @@ -3512,6 +3843,9 @@ 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_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} 天 @@ -3527,7 +3861,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}选择此时刻表的起始日期 +STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}选择此时刻表开始实施的日期。如果时刻表每一项指令皆已指定持续时间,Ctrl+左击会使系统为每个共用此时刻表的运具赋予一个开始实施时刻表的日期,使它们之间的时间间距一致 STR_TIMETABLE_CHANGE_TIME :{BLACK}改变时间 STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}改变高亮选择的命令执行的时间 @@ -3547,9 +3881,9 @@ STR_TIMETABLE_RESET_LATENESS_TOOLTIP :{BLACK}重置 STR_TIMETABLE_AUTOFILL :{BLACK}自动填充 STR_TIMETABLE_AUTOFILL_TOOLTIP :{BLACK}根据下一次运行的时间自动填充时间表{}(CRTL+单击 可保持等候时间) -STR_TIMETABLE_EXPECTED :{BLACK}预期的 -STR_TIMETABLE_SCHEDULED :{BLACK}计划的 -STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}在预期的与计划的间切换 +STR_TIMETABLE_EXPECTED :{BLACK}预期时间 +STR_TIMETABLE_SCHEDULED :{BLACK}表定时间 +STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}切换显示(根据实际情况计算的)预期时间或表定时间 STR_TIMETABLE_ARRIVAL_ABBREVIATION :A: STR_TIMETABLE_DEPARTURE_ABBREVIATION :D: @@ -3641,6 +3975,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}版权信息 @@ -3663,6 +3999,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} @@ -3790,6 +4130,7 @@ STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS_WITH_POPULATION_OF_1200 :{WHITE}只能 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_NEAR_TOWN_CENTER :{WHITE}... 只能在靠近城市中心建造 STR_ERROR_CAN_ONLY_BE_BUILT_IN_LOW_AREAS :{WHITE}只能在低海拔区域建设…… STR_ERROR_CAN_ONLY_BE_POSITIONED :{WHITE}只能被放置在地图边缘…… STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}林场只能设置在雪线以上的地方…… @@ -3818,7 +4159,7 @@ 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_DRIVE_THROUGH_JUNCTION :{WHITE}... 不能在岔路口修建过路型站台 # Station destruction related errors STR_ERROR_CAN_T_REMOVE_PART_OF_STATION :{WHITE}不能拆除站台的一部分…… @@ -3883,15 +4224,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}... 这里没有铁路 @@ -3958,9 +4299,10 @@ 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_REMOVE_ALL_VEHICLES :{WHITE}无法从该组移除所有交通工具 -STR_ERROR_GROUP_CAN_T_ADD_VEHICLE :{WHITE}无法添加交通工具到该组…… -STR_ERROR_GROUP_CAN_T_ADD_SHARED_VEHICLE :{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}指定位置有列车 @@ -4011,7 +4353,12 @@ 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_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}不能让列车冒险通过信号... @@ -4055,6 +4402,16 @@ STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}无法 # Translatable comment for OpenTTD's desktop shortcut STR_DESKTOP_SHORTCUT_COMMENT :基于Transport Tycoon Deluxe(运输大亨豪华版)的模拟运营游戏 +# Translatable descriptions in media/baseset/*.ob* files +STR_BASEGRAPHICS_DOS_DESCRIPTION :运输大亨DOS豪华版原版图形包. +STR_BASEGRAPHICS_DOS_DE_DESCRIPTION :运输大亨DOS豪华德语版原版图形包. +STR_BASEGRAPHICS_WIN_DESCRIPTION :运输大亨Windows豪华版原版图形包. +STR_BASESOUNDS_DOS_DESCRIPTION :运输大亨DOS豪华版原版音效包. +STR_BASESOUNDS_WIN_DESCRIPTION :Transport Tycoon Deluxe Windows (运输大亨Windows豪华版)的原版音效包. +STR_BASESOUNDS_NONE_DESCRIPTION :一个空的音效包. +STR_BASEMUSIC_WIN_DESCRIPTION :Transport Tycoon Deluxe(运输大亨Windows豪华版)的原版音乐包 +STR_BASEMUSIC_NONE_DESCRIPTION :一个没有实际内容的音乐包. + ##id 0x2000 # Town building names STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1 :高层写字楼 @@ -4095,7 +4452,7 @@ STR_TOWN_BUILDING_NAME_PIGGY_BANK_1 :猪猪银行 # industry names STR_INDUSTRY_NAME_COAL_MINE :煤矿 STR_INDUSTRY_NAME_POWER_STATION :火力发电厂 -STR_INDUSTRY_NAME_SAWMILL :木材厂 +STR_INDUSTRY_NAME_SAWMILL :锯木厂 STR_INDUSTRY_NAME_FOREST :林场 STR_INDUSTRY_NAME_OIL_REFINERY :炼油厂 STR_INDUSTRY_NAME_OIL_RIG :钻井平台 @@ -4126,7 +4483,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 :蔗糖矿 @@ -4177,7 +4534,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 (蒸汽机) @@ -4225,7 +4582,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' (电力) @@ -4386,7 +4743,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 @@ -4501,8 +4858,9 @@ 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_SPACE_STRING :{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} @@ -4526,9 +4884,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 7069d5c22..45b699fe3 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 @@ -263,27 +263,36 @@ STR_UNITS_POWER_IMPERIAL :{COMMA}hp STR_UNITS_POWER_METRIC :{COMMA}hp 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" "y" ""} STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} ton{P a y ""} 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} galón{P "" "y" "ov"} STR_UNITS_VOLUME_LONG_METRIC :{COMMA} lit{P er re rov} 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} st{P opa opy ôp} +STR_UNITS_HEIGHT_METRIC :{COMMA} m STR_UNITS_HEIGHT_SI :{COMMA} m # Common window strings +STR_LIST_FILTER_TITLE :{BLACK}Filtrovací reťazec: STR_LIST_FILTER_OSKTITLE :{BLACK}Vložiť filtrovací reťazec STR_LIST_FILTER_TOOLTIP :{BLACK}Vložiť kľúčové slovo pre filtrovanie zoznamu +STR_TOOLTIP_GROUP_ORDER :{BLACK}Zvoľ druh zoskupenia STR_TOOLTIP_SORT_ORDER :{BLACK}Spôsob triedenia (zostupný/vzostupný) STR_TOOLTIP_SORT_CRITERIA :{BLACK}Zvoľ kritérium triedenia STR_TOOLTIP_FILTER_CRITERIA :{BLACK}Vybrať kritériá filtrovania @@ -295,7 +304,8 @@ STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Zavrieť STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Nadpis okna - potiahni pre posun okna STR_TOOLTIP_SHADE :{BLACK}Zabaliť okno - zobraziť len názov okna STR_TOOLTIP_DEBUG :{BLACK}Zobraziť NewGRF debugové informácie -STR_TOOLTIP_STICKY :{BLACK}Zamknúť toto okno, nebude sa dať zatvoriť klávesou "Zavri všetky okná" +STR_TOOLTIP_DEFSIZE :{BLACK}Zmena veľkosti okna na základnú veľkosť. Ctrl+klik uloží aktuálnu veľkosť ako základnú +STR_TOOLTIP_STICKY :{BLACK}Zamknúť toto okno, nebude sa dať zatvoriť klávesou "Zavri všetky okná". Ctrl+Click uloží stav ako predvolený STR_TOOLTIP_RESIZE :{BLACK}Uchop a ťahaj pre zmenu veľkosti okna STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Prepnúť veľkosť okna STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Navigacná lišta @@ -319,7 +329,6 @@ STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}Plocha: # These are used in buttons -STR_SORT_BY_CAPTION_POPULATION :{BLACK}Populácia STR_SORT_BY_CAPTION_NAME :{BLACK}Názov STR_SORT_BY_CAPTION_DATE :{BLACK}Dátum # These are used in dropdowns @@ -340,7 +349,8 @@ STR_SORT_BY_LENGTH :Dlžka STR_SORT_BY_LIFE_TIME :Zostávajúca životnost STR_SORT_BY_TIMETABLE_DELAY :Oneskorenie cestovného poriadku STR_SORT_BY_FACILITY :Typ stanice -STR_SORT_BY_WAITING :Množstvo čakajúceho nákladu +STR_SORT_BY_WAITING_TOTAL :Celkový čakajúci náklad +STR_SORT_BY_WAITING_AVAILABLE :Dustupný čakajúci náklad STR_SORT_BY_RATING_MAX :Hodnotenie najlepšej prepravy STR_SORT_BY_RATING_MIN :Hodnotenie najhoršej prepravy STR_SORT_BY_ENGINE_ID :EngineID (netriedené) @@ -348,10 +358,12 @@ 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 +STR_SORT_BY_RATING :Hodnotenie # Tooltips for the main toolbar STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Pauza @@ -364,6 +376,8 @@ STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Zobrazi STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Zoznam staníc spoločností STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Finančné informácie o spoločnosti STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Informácie o spoločnosti +STR_TOOLBAR_TOOLTIP_DISPLAY_STORY_BOOK :{BLACK}Zobraziť knihu príbehov +STR_TOOLBAR_TOOLTIP_DISPLAY_GOALS_LIST :{BLACK}Zobraziť zoznam cieľov STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Grafy STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Hodnotenie spoločností STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Financovať výstavbu nového priemyslu @@ -434,19 +448,19 @@ STR_FILE_MENU_SEPARATOR : STR_FILE_MENU_EXIT :Koniec ############ range ends here -############ range for map menu starts +# map menu STR_MAP_MENU_MAP_OF_WORLD :Mapa sveta STR_MAP_MENU_EXTRA_VIEW_PORT :Ďalší pohľad +STR_MAP_MENU_LINGRAPH_LEGEND :Legenka k smerovaniu nákladu STR_MAP_MENU_SIGN_LIST :Zoznam popisov -############ range for town menu starts, yet the town directory is shown in the map menu in the scenario editor + +############ range for town menu starts STR_TOWN_MENU_TOWN_DIRECTORY :Zoznam miest -############ end of the 'Display map' dropdown STR_TOWN_MENU_FOUND_TOWN :Založiť mesto -############ end of the 'Town' dropdown +############ range ends here ############ range for subsidies menu starts STR_SUBSIDIES_MENU_SUBSIDIES :Dotácie -STR_SUBSIDIES_MENU_GOAL :Súčasné ciele ############ range ends here ############ range for graph menu starts @@ -461,10 +475,12 @@ STR_GRAPH_MENU_CARGO_PAYMENT_RATES :Ceny prepravy ############ range for company league menu starts STR_GRAPH_MENU_COMPANY_LEAGUE_TABLE :Hodnotenie spoločností STR_GRAPH_MENU_DETAILED_PERFORMANCE_RATING :Detailné hodnotenie výkonu +STR_GRAPH_MENU_HIGHSCORE :Hodnotenie ############ range ends here ############ range for industry menu starts STR_INDUSTRY_MENU_INDUSTRY_DIRECTORY :Zoznam priemyslu +STR_INDUSTRY_MENU_INDUSTRY_CHAIN :Priemyselné reťaze STR_INDUSTRY_MENU_FUND_NEW_INDUSTRY :Financovať nový priemysel ############ range ends here @@ -518,7 +534,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. @@ -534,22 +550,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 @@ -643,7 +677,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 @@ -712,7 +746,7 @@ STR_HIGHSCORE_PERFORMANCE_TITLE_CAPITALIST :{G=m}Kapitalist STR_HIGHSCORE_PERFORMANCE_TITLE_MAGNATE :{G=m}Magnát STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL :Mogul STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY :Tycoon Storočia -STR_HIGHSCORE_NAME :{BIG_FONT}{PRESIDENT_NAME}, {COMPANY} +STR_HIGHSCORE_NAME :{PRESIDENT_NAME}, {COMPANY} STR_HIGHSCORE_STATS :{BIG_FONT}'{STRING}' ({COMMA}) STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{BLACK}{COMPANY} získal označenie '{STRING}'! STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{WHITE}{PRESIDENT_NAME} z {COMPANY} získal označenie '{STRING}'! @@ -726,17 +760,20 @@ STR_SMALLMAP_TYPE_VEHICLES :Dopravné prost STR_SMALLMAP_TYPE_VEHICLES.g :dopravných prostriedkov STR_SMALLMAP_TYPE_INDUSTRIES :Priemysel STR_SMALLMAP_TYPE_INDUSTRIES.g :priemyslu +STR_SMALLMAP_TYPE_ROUTEMAP :Smerovanie nákladu STR_SMALLMAP_TYPE_ROUTES :Trasy STR_SMALLMAP_TYPE_VEGETATION :Vegetácia STR_SMALLMAP_TYPE_OWNERS :Vlastníci STR_SMALLMAP_TOOLTIP_SHOW_LAND_CONTOURS_ON_MAP :{BLACK}Zobraziť vrstevnice na mape STR_SMALLMAP_TOOLTIP_SHOW_VEHICLES_ON_MAP :{BLACK}Zobraziť dopravné prostriedky na mape STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRIES_ON_MAP :{BLACK}Zobraziť priemysel na mape +STR_SMALLMAP_TOOLTIP_SHOW_LINK_STATS_ON_MAP :{BLACK}Zobraziť smerovanie nákladu na mape STR_SMALLMAP_TOOLTIP_SHOW_TRANSPORT_ROUTES_ON :{BLACK}Zobraziť dopravné trasy na mape STR_SMALLMAP_TOOLTIP_SHOW_VEGETATION_ON_MAP :{BLACK}Zobraziť vegetáciu na mape STR_SMALLMAP_TOOLTIP_SHOW_LAND_OWNERS_ON_MAP :{BLACK}Zobraziť vlastníkov pozemkov na mape STR_SMALLMAP_TOOLTIP_INDUSTRY_SELECTION :{BLACK}Kliknite na typ priemyslu pre zmenu jeho zobrazenia. Ctrl+Klik skryje všetky priemysly okrem vybraného. Ctrl+Klik znova zobrazí všetky priemysly STR_SMALLMAP_TOOLTIP_COMPANY_SELECTION :{BLACK}Klikni na spoločnosť pre prepnutie zobrazenia jej majetku. Ctrl+Klik skryje všetky spoločnosti okrem vybranej. Ctrl+Klik znova zase zobrazí všetky spoložnosti. +STR_SMALLMAP_TOOLTIP_CARGO_SELECTION :{BLACK}Kliknite na náklad pre prepnutie jeho zobrazenia. Ctrl+klik skryje všetky druhy nákladu okrem určeného. Opätovný Ctrl+klik zobrazí všetky druhy nákladu STR_SMALLMAP_LEGENDA_ROADS :{TINY_FONT}{BLACK}Cesty STR_SMALLMAP_LEGENDA_RAILROADS :{TINY_FONT}{BLACK}Železničné trate @@ -770,6 +807,7 @@ STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLA STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Zapnúť/vypnúť názvy miest na mape STR_SMALLMAP_CENTER :{BLACK}Vycentrovať malú mapu na aktuálnu pozíciu 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}zakázať všetky @@ -780,6 +818,8 @@ STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES :{BLACK}Zobrazi STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}Prepnúť zobrazenie výškovej mapy STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES :{BLACK}Nezobrazovať žiadný majetok spoločnosti na mape STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}Zobraziť celý majetok spoločnosti na mape +STR_SMALLMAP_TOOLTIP_DISABLE_ALL_CARGOS :{BLACK}Nezobraziť žiadny náklad na mape +STR_SMALLMAP_TOOLTIP_ENABLE_ALL_CARGOS :{BLACK}Zobraziť všetok náklad na mape # Status bar messages STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Zobraziť poslednú správu alebo novinku @@ -831,8 +871,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! @@ -843,8 +883,8 @@ STR_NEWS_BEGIN_OF_RECESSION :{BIG_FONT}{BLAC STR_NEWS_END_OF_RECESSION :{BIG_FONT}{BLACK}Koniec kíizy!{}{}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% @@ -856,13 +896,12 @@ 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é @@ -875,9 +914,9 @@ STR_NEWS_AIRCRAFT_DEST_TOO_FAR :{WHITE}{VEHICLE 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} @@ -941,15 +980,12 @@ STR_GAME_OPTIONS_CURRENCY_LTL :Litovsky (LTL) STR_GAME_OPTIONS_CURRENCY_KRW :Juzná Korea - WON (KRW) STR_GAME_OPTIONS_CURRENCY_ZAR :Južná Afrika - RAND (ZAR) STR_GAME_OPTIONS_CURRENCY_CUSTOM :Vlastná ... +STR_GAME_OPTIONS_CURRENCY_GEL :Gruzínske Lari (GEL) +STR_GAME_OPTIONS_CURRENCY_IRR :Iránsky rial (IRR) ############ end of currency region -STR_GAME_OPTIONS_MEASURING_UNITS_FRAME :{BLACK}Merné jednotky -STR_GAME_OPTIONS_MEASURING_UNITS_DROPDOWN_TOOLTIP :{BLACK}Výber jednotiek vzdialenosti ############ start of measuring units region -STR_GAME_OPTIONS_MEASURING_UNITS_IMPERIAL :Imperialne -STR_GAME_OPTIONS_MEASURING_UNITS_METRIC :Metrické -STR_GAME_OPTIONS_MEASURING_UNITS_SI :SI ############ end of measuring units region STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Cestné vozidlá @@ -987,11 +1023,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 @@ -1003,9 +1041,6 @@ 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_BASE_GRF :{BLACK}Základná sada grafiky STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Zvoľte sadu grafiky, ktorá má byť použitá STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} chýbajúci/poškodený súbor{P "" "y" "ov"} @@ -1020,6 +1055,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 @@ -1107,17 +1143,38 @@ STR_WARNING_NO_SUITABLE_AI :{WHITE}Nieje do # Advanced settings window STR_CONFIG_SETTING_CAPTION :{WHITE}Rozšírené 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_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 +STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :Nastavenia s odlišnou hodnotou ako je štandard +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 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 @@ -1135,10 +1192,30 @@ STR_CONFIG_SETTING_HORIZONTAL_POS_LEFT :vlavo STR_CONFIG_SETTING_HORIZONTAL_POS_CENTER :v strede STR_CONFIG_SETTING_HORIZONTAL_POS_RIGHT :vpravo - -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_MAXIMUM_INITIAL_LOAN :Maximálny počiatočný úver: {STRING} +STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Maximálna množstvo peňazí ktoré si môže spoločnosť požičať (bez inflácie) +STR_CONFIG_SETTING_INTEREST_RATE :Úroková sadzba: {STRING} +STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Úroková sadzba úveru; kontroluje infláciu ak je povolená +STR_CONFIG_SETTING_RUNNING_COSTS :Prevádzkové náklady: {STRING} +STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT :Zvoľte úroveň cien údržby a prevádzky vozidiel a infraštruktúry +STR_CONFIG_SETTING_CONSTRUCTION_SPEED :Rýchlosť výstavby: {STRING} +STR_CONFIG_SETTING_CONSTRUCTION_SPEED_HELPTEXT :Obmezdenie počtu stavebných akcí pre počítačových hráčov +STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS :Poruchy vozidla: {STRING} +STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS_HELPTEXT :Zvoľte ako často budú mať zle udržiavané vozidlá poruchy +STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER :Násobiteľ dotácii: {STRING} +STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT :Zvoľte ako veľa sa platí za dotované spojenia +STR_CONFIG_SETTING_CONSTRUCTION_COSTS :Cena stavby: {STRING} +STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :Zvoľte úroveň cien výstavby a nákupov +STR_CONFIG_SETTING_RECESSIONS :Recesie: {STRING} +STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Ak je povolené, každých pár rokov sa môže vyskytnúť recesia. Počas recesie je všetká produkcia znatelne nižšia (po skončení recesie sa produkcia vráti na normálnu úroveň) +STR_CONFIG_SETTING_TRAIN_REVERSING :Zakázať otáčanie vlakov v staniciach: {STRING} +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 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_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 @@ -1146,7 +1223,7 @@ STR_CONFIG_SETTING_EXTRADYNAMITE :Odstrániť via STR_CONFIG_SETTING_EXTRADYNAMITE_HELPTEXT :Uľahči odstraňovanie mestom vlastnených budov a infraštruktúry STR_CONFIG_SETTING_TRAIN_LENGTH :Maximálna dĺžka vlakov: {STRING} STR_CONFIG_SETTING_TRAIN_LENGTH_HELPTEXT :Nastav maximálnu dĺžku vlakov -STR_CONFIG_SETTING_TILE_LENGTH :{COMMA} dielec +STR_CONFIG_SETTING_TILE_LENGTH :{COMMA} diel{P "ec" "ce" "cov"} STR_CONFIG_SETTING_SMOKE_AMOUNT :Množstvo dymu/iskier z lokomotív: {STRING} STR_CONFIG_SETTING_SMOKE_AMOUNT_HELPTEXT :Nastav koľko dymu alebo iskier budú vozidlá produkovať STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL :Model akcelerácie vlaku: {STRING} @@ -1161,15 +1238,9 @@ 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_TUNNEL_LENGTH :Maximálna dĺžka tunela: {STRING} @@ -1177,7 +1248,7 @@ STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH_HELPTEXT :Maximálna dĺ STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :Spôsob výstavby priemyslu produkujúceho suroviny: {STRING} STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_HELPTEXT :Spôsob financovania primárneho priemyslu. "Žiadna" znamená, že nie je možné financovať vôbec, "prieskumu" znamená že je možné financovať, ale stavba bude postavená na náhodnom mieste a môže tiež zlyhať, "ako ostatné odvetvia priemyslu" sa rozumie že nový závod môže byť financovaný spoločnosťou, a postavený vedľa spracovateľského priemyslu na mieste kde sa mi páči STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :žiadny -STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :normálny +STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :Ako ostatný priemysel STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :vyhladávací STR_CONFIG_SETTING_INDUSTRY_PLATFORM :Rovné územie v okolí priemyslu: {STRING} STR_CONFIG_SETTING_INDUSTRY_PLATFORM_HELPTEXT :Cena voľného priestoru vedľa priemyslu. Týmto sa zabezpečí voľné miesto pre výstavbu ciest atď. @@ -1189,17 +1260,20 @@ STR_CONFIG_SETTING_SIGNALSIDE_LEFT :Vľavo STR_CONFIG_SETTING_SIGNALSIDE_DRIVING_SIDE :Na strane kde sa jazdí 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_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é +STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT_FULLSCREEN :Hlavný pohľad, iba na celú obrazovku +STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT :Hlavný podľad +STR_CONFIG_SETTING_AUTOSCROLL_EVERY_VIEWPORT :Každý pohľad STR_CONFIG_SETTING_BRIBE :Umožniť podplácanie miestnej správy: {STRING} STR_CONFIG_SETTING_BRIBE_HELPTEXT :Povolí podplácanie miestnej samosprávy. Ak podplácanie zistí inšpektor, spoločnosť nebude môcť podplácať v danom meste počas nasledujúcich 6 mesiacov. STR_CONFIG_SETTING_ALLOW_EXCLUSIVE :Povoliť zakúpenie exkluzívnych dopravných práv: {STRING} @@ -1217,17 +1291,13 @@ STR_CONFIG_SETTING_PLANE_SPEED_HELPTEXT :Nastav relatív STR_CONFIG_SETTING_PLANE_SPEED_VALUE :1 / {COMMA} STR_CONFIG_SETTING_PLANE_CRASHES :Počet havárií lietadiel: {STRING} STR_CONFIG_SETTING_PLANE_CRASHES_HELPTEXT :Nastav pravdepodobnosť pádu lietadiel -STR_CONFIG_SETTING_PLANE_CRASHES_NONE :žiadne -STR_CONFIG_SETTING_PLANE_CRASHES_REDUCED :obmedzené -STR_CONFIG_SETTING_PLANE_CRASHES_NORMAL :normálny +STR_CONFIG_SETTING_PLANE_CRASHES_NONE :Žiadne +STR_CONFIG_SETTING_PLANE_CRASHES_REDUCED :Obmedzené +STR_CONFIG_SETTING_PLANE_CRASHES_NORMAL :Normálny STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Povoliť prejazdné zastávky na mestských cestách: {STRING} 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é. @@ -1239,19 +1309,19 @@ STR_CONFIG_SETTING_WARN_LOST_VEHICLE :Varovať ak je STR_CONFIG_SETTING_WARN_LOST_VEHICLE_HELPTEXT :Prepne správy o "stratení vozidla" ktoré nevie nájsť cestu do cieľovej zastávky. STR_CONFIG_SETTING_ORDER_REVIEW :Obnovenie príkazov vozidla: {STRING} STR_CONFIG_SETTING_ORDER_REVIEW_HELPTEXT :Ak je zapnuté, príkazy vozidiel sú pravidelne kontrolované a ak sa vyskytne nejaká zmena, zobrazí to správu. -STR_CONFIG_SETTING_ORDER_REVIEW_OFF :nie -STR_CONFIG_SETTING_ORDER_REVIEW_EXDEPOT :áno, okrem zastavených vozidiel -STR_CONFIG_SETTING_ORDER_REVIEW_ON :áno, u všetkých vozidiel +STR_CONFIG_SETTING_ORDER_REVIEW_OFF :Nie +STR_CONFIG_SETTING_ORDER_REVIEW_EXDEPOT :Áno, okrem zastavených vozidiel +STR_CONFIG_SETTING_ORDER_REVIEW_ON :U všetkých vozidiel STR_CONFIG_SETTING_WARN_INCOME_LESS :Varovať, ak je vozidlo stratové: {STRING} STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :Ak je zapnuté, zobrazí sa správa ak vozidlo nevykázalo žiaden zisk za predošlý rok. STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Nikdy neprestať s výrobou starých vozidiel: {STRING} 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} @@ -1266,27 +1336,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 @@ -1307,7 +1391,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ť @@ -1320,7 +1404,13 @@ STR_CONFIG_SETTING_SCROLLWHEEL_ZOOM :zvacšit mapu STR_CONFIG_SETTING_SCROLLWHEEL_SCROLL :Posúvať pohľad STR_CONFIG_SETTING_SCROLLWHEEL_OFF :Vypnuté STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER :Rýchlosť posúvania pohľadu: {STRING} -STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER_HELPTEXT :Nastav citlivosť posúvania kolečkom myši. +STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER_HELPTEXT :Nastav citlivosť posúvania koliečkom myši. +STR_CONFIG_SETTING_OSK_ACTIVATION :Klávesnica na obrazovke: {STRING} +STR_CONFIG_SETTING_OSK_ACTIVATION_HELPTEXT :Vyberte spôsob, ktorým chcete otvárať klávesnicu na obrazovke, ktorou môžete vpisovať hodnoty do textových polí ukazovacím zariadením. Mienené pre malé zariadenia bez klávesnice +STR_CONFIG_SETTING_OSK_ACTIVATION_DISABLED :Vypnuté +STR_CONFIG_SETTING_OSK_ACTIVATION_DOUBLE_CLICK :Dvojklik +STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK_FOCUS :Jedno kliknutie (keď je textové pole zvolené) +STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK :Jendo kliknutie (hneď) STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU :Funkcia pravého tlacidla myši: {STRING} STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_HELPTEXT :Zvolte možnosť ako bude emulované PRAVÉ tlačítko myši. @@ -1331,17 +1421,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} @@ -1350,38 +1438,54 @@ 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 alebo pod vozidlom. +STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :Zvoľte či indikátory nakladania/vykladania budú zobrazené nad vozidlom. STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :Zobraziť cestovné poriadky v tikoch namiesto dní: {STRING} STR_CONFIG_SETTING_TIMETABLE_IN_TICKS_HELPTEXT :Zobrazí časy cestovania v časových rozpisoch namiesto dní. STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE :Zobraziť príchody a odchody v cestovných poriadkoch: {STRING} STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE_HELPTEXT :Zobrazí predpokladané časy príchodov a odchodov v časových rozpisoch. STR_CONFIG_SETTING_QUICKGOTO :Rýchla tvorba cestovného poriadku vozidla: {STRING} -STR_CONFIG_SETTING_QUICKGOTO_HELPTEXT :Prednastav "Chod do" kurzor pri otvorení okna s príkazmy +STR_CONFIG_SETTING_QUICKGOTO_HELPTEXT :Prednastav "Choď do" kurzor pri otvorení okna s príkazmi STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE :Predvolený typ koľají (v novej/nahranej hre): {STRING} STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_HELPTEXT :Typ železnice zvolený po štarte alebo nahraní hry. 'prvé dostupné' zvolí najstarší typ koľají, 'posledný dostupný' zvolí najnovší typ koľají, a 'najpoužívanejší' vyberie typ ktorý je v danej dobe najviac používaný. 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í STR_CONFIG_SETTING_EXPENSES_LAYOUT :Zoskupiť výdavky v okne financií spoločnosti: {STRING} STR_CONFIG_SETTING_EXPENSES_LAYOUT_HELPTEXT :Definujte rozloženie okna s financiami. +STR_CONFIG_SETTING_SOUND_TICKER :Oznamovač správ: {STRING} +STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :Prehrať zvuk pre zhrnuté novinové správy +STR_CONFIG_SETTING_SOUND_NEWS :Noviny: {STRING} +STR_CONFIG_SETTING_SOUND_NEWS_HELPTEXT :Prehrať zvuk pri zobrazení novín +STR_CONFIG_SETTING_SOUND_NEW_YEAR :Koniec roka: {STRING} +STR_CONFIG_SETTING_SOUND_NEW_YEAR_HELPTEXT :Prehrávať zvukové efekty na konci roku zhŕňajúce výkon spoločnosti počas roku v porovnaní s minulým rokom +STR_CONFIG_SETTING_SOUND_CONFIRM :Stavba: {STRING} +STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT :Hrať zvukovú správu pri úspešnej stavbe alebo pri iných akciách +STR_CONFIG_SETTING_SOUND_CLICK :Kliknutia na tlačidlá: {STRING} +STR_CONFIG_SETTING_SOUND_CLICK_HELPTEXT :Pípať pri kliknutí na tlačidlá +STR_CONFIG_SETTING_SOUND_DISASTER :Havárie/zrážky: {STRING} +STR_CONFIG_SETTING_SOUND_DISASTER_HELPTEXT :Prehrávať zvukové efekty nehôd a katastrôf +STR_CONFIG_SETTING_SOUND_VEHICLE :Vozidlá: {STRING} +STR_CONFIG_SETTING_SOUND_VEHICLE_HELPTEXT :Prehrávať zvukové efekty vozidiel +STR_CONFIG_SETTING_SOUND_AMBIENT :Prostredie: {STRING} +STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :Prehrávať zukové efekty okolitého prostredia, priemyslu a miest 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} @@ -1393,6 +1497,11 @@ STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT_HELPTEXT :Povolením nast STR_CONFIG_SETTING_AI_BUILDS_SHIPS :Zakázať lode pre počítač: {STRING} STR_CONFIG_SETTING_AI_BUILDS_SHIPS_HELPTEXT :Povolením nastavenia znemožní počítačovým hráčom budovať lode. +STR_CONFIG_SETTING_AI_PROFILE :Štandardné nastavenia profilu: {STRING} +STR_CONFIG_SETTING_AI_PROFILE_HELPTEXT :Vyberte, ktorý profil nastavení sa má použiť pre náhodných počítačových hráčov alebo pre počiatočné hodnoty pri pridávaní nových počítačových hráčov alebo Herného skriptu +STR_CONFIG_SETTING_AI_PROFILE_EASY :Ľahký +STR_CONFIG_SETTING_AI_PROFILE_MEDIUM :Stredný +STR_CONFIG_SETTING_AI_PROFILE_HARD :{G=m}Ťažký STR_CONFIG_SETTING_AI_IN_MULTIPLAYER :Povoliť AI-ov v hre viacerých hráčov: {STRING} STR_CONFIG_SETTING_AI_IN_MULTIPLAYER_HELPTEXT :Povoliť AI počítačovým hráčom hrať "Hru viacerých hráčov". @@ -1419,20 +1528,35 @@ STR_CONFIG_SETTING_DISABLE_ELRAILS :Zakázať elekt STR_CONFIG_SETTING_DISABLE_ELRAILS_HELPTEXT :Povolením nastavenia vypne nutnosť elektrifikovať železnice aby na nich mohli jazdiť elektrické vlaky. STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN :Príchod prvého vozidla do stanice hráča: {STRING} +STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN_HELPTEXT :Zobrazovať správu keď prvé vozidlo príde na novú stanicu patriacu hráčovi STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER :Príchod prvého vozidla do stanice konkurencie: {STRING} +STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER_HELPTEXT :Zobrazovať správu keď prvý voz príde na novú stanicu patriacu konkurencii STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS :Havárie / Katastrofy: {STRING} +STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS_HELPTEXT :Zobrazovať správu keď sa vyskytne dopravná nehoda alebo katastrofa STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION :Informácie o spoločnosti: {STRING} +STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION_HELPTEXT :Zobrazovať správu keď vznikla nová spoločnosť alebo keď je spoločnosť v riziku bankrotu STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN :Vznik priemyslu: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN_HELPTEXT :Zobrazovať novinky ak bol otvorený nový priemysel STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE :Zánik priemyslu: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE_HELPTEXT :Zobrazovať novinku keď sa zrušil nejaký priemysel STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES :Zmeny v ekonomike: {STRING} +STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES_HELPTEXT :Zobrazovať noviny o globálnych zmenách ekonomiky STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY :Zmeny produkcie priemyslu obsluhovaného spoločnosťou: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY_HELPTEXT :Zobraziť správy pri zmene produkcie priemyslu, ktorý je vami obsluhovaný STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER :Zmeny produkcie priemyslu obsluhovaného konkurenciou: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER_HELPTEXT :Zobraziť správy pri zmene produkcie priemyslu, ktorý je obsluhovaný konkurenciou STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED :Ostatné zmeny produkcie priemyslu: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED_HELPTEXT :Zobraziť správy keď sa zmení úroveň produkcie priemyslu, ktorý nieje nikým obsluhovaný STR_CONFIG_SETTING_NEWS_ADVICE :Rady / informácie o vozidlách spoločnosti: {STRING} +STR_CONFIG_SETTING_NEWS_ADVICE_HELPTEXT :Zobrazovať správy o vozidlách, ktoré si vyžadujú pozornosť STR_CONFIG_SETTING_NEWS_NEW_VEHICLES :Nové vozidlá: {STRING} +STR_CONFIG_SETTING_NEWS_NEW_VEHICLES_HELPTEXT :Zobraziť správu, keď je dostupný nový typ vozidla STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE :Zmeny príjmu nákladu: {STRING} +STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE_HELPTEXT :Zobrazovať správy o zmenách v príjme tovarov na staniciach STR_CONFIG_SETTING_NEWS_SUBSIDIES :Dotácie: {STRING} +STR_CONFIG_SETTING_NEWS_SUBSIDIES_HELPTEXT :Zobrazovať správy o udalostiach, ktoré súvisia s dotáciami STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION :Hlavné informácie: {STRING} +STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION_HELPTEXT :Zobrazovať správy o všeobecných udalostiach, ako sú napríklad kúpa exkluzívnych práv alebo zafinacovanie rekonštrukcie ciest STR_CONFIG_SETTING_NEWS_MESSAGES_OFF :Vypnuté STR_CONFIG_SETTING_NEWS_MESSAGES_SUMMARY :Obsah @@ -1451,9 +1575,9 @@ STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY :Pri ťahaní, u STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_HELPTEXT :Nastav vzdialenosť ako ďaleko budú umiestnené semafóry po prekážke na trati (most/tunel/rozcestie) pri ťahaní. 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_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} @@ -1479,7 +1603,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é @@ -1489,7 +1613,7 @@ STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :povolené, vlas STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT :Umiestnenie stromov počas hry: {STRING} STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_HELPTEXT :Riadi náhodný výskyt stromov počas hry. Toto môže ovplyvniť priemysel úzko spojený s rastom stromov ako napríklad Píla. STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NONE :žiadne {RED}(znefunkční pílu) -STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_RAINFOREST :len v dažďových pralesoch +STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_RAINFOREST :Len v dažďových pralesoch STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_ALL :všade STR_CONFIG_SETTING_TOOLBAR_POS :Pozícia hlavného menu: {STRING} @@ -1527,26 +1651,90 @@ 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_GUI :{ORANGE}Rozhranie -STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}Výstavba +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. +STR_CONFIG_SETTING_LINKGRAPH_TIME :Použiť {STRING} {P 0:2 "deň" "dni" "dní"} na prepočítanie distribučného grafu +STR_CONFIG_SETTING_LINKGRAPH_TIME_HELPTEXT :Čas potrebný pre každé prepočítanie grafu spojov. Pri štarte prepočtu je vytvorené vlákno, ktoré môže bežať uvedený počet dní. Čím menej nastavíte, tým je pravdepodobnejšie, že vlákno nestihne skončiť, kým je to možné. Potom sa hra na nejaký čas zasekne. Čím viac nastavíte, tým dlhšie trvá aktualizácia rozdelenia po zmene trasy. +STR_CONFIG_SETTING_DISTRIBUTION_MANUAL :manuálne +STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC :asymetricky +STR_CONFIG_SETTING_DISTRIBUTION_SYMMETRIC :symetricky +STR_CONFIG_SETTING_DISTRIBUTION_PAX :Druh distribúcie pre cestujúcich: {STRING} +STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :"symetricky" znamená, že približne rovnaké množstvo pasažierov bude cestovať zo stanice A do stanice B ako z B do A. "asymetricky"znamená, že v oboch smeroch môže cestovať ľubovoľné množstvo pasažierov. "manuálne" znamená, že sa pre pasažierov nevykoná automatická distribúcia. +STR_CONFIG_SETTING_DISTRIBUTION_MAIL :Druh distribúcie pre poštu: {STRING} +STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :"symetricky" znamená, že približne rovnaké množstvo pošty 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 pošty. "manuálne" znamená, že sa pre poštu nevykoná automatická distribúcia. +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 :"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 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} +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_HELPTEXT :Vždy, keď sú zobrazené rýchlosti v používateľskom rozhraní, zobrazia sa vo vybraných jednotkách +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_IMPERIAL :Imperiálne (mph) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_METRIC :Metrické (km/h) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_SI :SI (m/s) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER :Jednotky výkonu vozidiel: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_HELPTEXT :Vždy, keď sú zobrazené výkony vozidla v používateľskom rozhraní, zobrazia sa vo vybraných jednotkách +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_IMPERIAL :Imperiálne (hp) +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 váhy: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_HELPTEXT :Vždy, keď sú zobrazené váhy v používateľskom rozhraní, zobrazia sa vo vybraných jednotkách +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_IMPERIAL :Imperiálne ("krátka" t/tona) +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_METRIC :Metrické (t/tona) +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_SI :SI (kg) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME :Jednotky objemu: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_HELPTEXT :Vždy, keď sú zobrazené objemy v používateľskom rozhraní, zobrazia sa vo vybraných jednotkách +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_IMPERIAL :Imperiálne (gal) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_METRIC :Metrické (l) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_SI :SI (m³) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE :Jednotky ťažnej sily: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_HELPTEXT :Vždy, keď sa zobrazí ťažná sila v používateľskom rozhraní, zobrazí sa vo vybraných jednotkách +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_IMPERIAL :Imperiálne (lbf) +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_METRIC :Metrické (kgf) +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_SI :SI (kN) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT :Jednotky výšky: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_HELPTEXT :Vždy, keď sú zobrazené výšky v používateľskom rozhraní, zobrazia sa vo vybraných jednotkách +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_LOCALISATION :{ORANGE}Lokalizácia +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_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_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 @@ -1580,6 +1768,8 @@ STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_ALGORITHM :{WHITE}... form STR_CONFIG_ERROR_INVALID_BASE_GRAPHICS_NOT_FOUND :{WHITE}... ignorujem základnú grafickú sadu '{STRING}': nenájdené STR_CONFIG_ERROR_INVALID_BASE_SOUNDS_NOT_FOUND :{WHITE}... ignorujem základnú sadu zvukov '{STRING}': nenájdené STR_CONFIG_ERROR_INVALID_BASE_MUSIC_NOT_FOUND :{WHITE}... ignorujem základnú sadu hudby '{STRING}': nenájdené +STR_CONFIG_ERROR_OUT_OF_MEMORY :{WHITE}Nedostatok pamäte +STR_CONFIG_ERROR_SPRITECACHE_TOO_BIG :{WHITE}Pridelenie {BYTES} z medzipamäte zlyhalo. Medzipamäť bola zredukovaná na {BYTES}. Tým sa zníži výkon OpenTTD. Ak chcete znížiť nároky na pamäť, skúste vypnúť 32bpp grafiku a/alebo približovacie úrovne. # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} @@ -1592,6 +1782,7 @@ STR_INTRO_SCENARIO_EDITOR :{BLACK}Editor s STR_INTRO_MULTIPLAYER :{BLACK}Viacero hráčov STR_INTRO_GAME_OPTIONS :{BLACK}Nastavenia hry +STR_INTRO_HIGHSCORE :{BLACK}Najlepší hráči STR_INTRO_ADVANCED_SETTINGS :{BLACK}Rozšírené nastavenia STR_INTRO_NEWGRF_SETTINGS :{BLACK}Nastavenia NewGRF STR_INTRO_ONLINE_CONTENT :{BLACK}Skontrolovať online obsah @@ -1611,6 +1802,7 @@ STR_INTRO_TOOLTIP_SUB_TROPICAL_LANDSCAPE :{BLACK}Vybrať STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Vybrať krajinu hračiek 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_NEWGRF_SETTINGS :{BLACK}Zobraziť NewGRF nastavenia STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Skontrolovať nový a aktualizovaný obsah pre stiahnutie @@ -1699,6 +1891,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í @@ -1718,46 +1911,46 @@ STR_FACE_FACECODE_TOOLTIP :{BLACK}Zobrazi STR_FACE_FACECODE_CAPTION :{WHITE}Zobraziť a/alebo nastaviť kód tváre STR_FACE_FACECODE_SET :{WHITE}Nové číslo tváre bolo nastavené STR_FACE_FACECODE_ERR :{WHITE}Nie je možné nastaviť kód tváre - povolené je číslo od 0 do 4 294 967 295! -STR_FACE_SAVE :{BLACK}Uložit -STR_FACE_SAVE_TOOLTIP :{BLACK}Uložit oblúbenú tvár +STR_FACE_SAVE :{BLACK}Uložiť +STR_FACE_SAVE_TOOLTIP :{BLACK}Uložiť obľúbenú tvár STR_FACE_SAVE_DONE :{WHITE}Táto tvár bude uložená ako obľúbená do konfiguračného súboru OpenTTD STR_FACE_EUROPEAN :{BLACK}Európan STR_FACE_SELECT_EUROPEAN :{BLACK}Vybrať európske tváre -STR_FACE_AFRICAN :{BLACK}African +STR_FACE_AFRICAN :{BLACK}Afričan STR_FACE_SELECT_AFRICAN :{BLACK}Vybrať africké tváre STR_FACE_YES :áno STR_FACE_NO :nie -STR_FACE_MOUSTACHE_EARRING_TOOLTIP :{BLACK}Povolit fúzy alebo náušnicu +STR_FACE_MOUSTACHE_EARRING_TOOLTIP :{BLACK}Povoliť fúzy alebo náušnicu STR_FACE_HAIR :Vlasy: -STR_FACE_HAIR_TOOLTIP :{BLACK}Zmenit vlasy -STR_FACE_EYEBROWS :Obocie: -STR_FACE_EYEBROWS_TOOLTIP :{BLACK}Zmenit obocie +STR_FACE_HAIR_TOOLTIP :{BLACK}Zmeniť vlasy +STR_FACE_EYEBROWS :Obočie: +STR_FACE_EYEBROWS_TOOLTIP :{BLACK}Zmeniť obočie STR_FACE_EYECOLOUR :Farba očí: STR_FACE_EYECOLOUR_TOOLTIP :{BLACK}Zmeniť farbu očí STR_FACE_GLASSES :Okuliare: STR_FACE_GLASSES_TOOLTIP :{BLACK}Povoliť okuliare -STR_FACE_GLASSES_TOOLTIP_2 :{BLACK}Zmenit okuliare +STR_FACE_GLASSES_TOOLTIP_2 :{BLACK}Zmeniť okuliare STR_FACE_NOSE :Nos: -STR_FACE_NOSE_TOOLTIP :{BLACK}Zmenit nos +STR_FACE_NOSE_TOOLTIP :{BLACK}Zmeniť nos STR_FACE_LIPS :Pery: STR_FACE_MOUSTACHE :Fúzy: STR_FACE_LIPS_MOUSTACHE_TOOLTIP :{BLACK}Zmenit pery alebo fúzy STR_FACE_CHIN :Brada: -STR_FACE_CHIN_TOOLTIP :{BLACK}Zmenit bradu +STR_FACE_CHIN_TOOLTIP :{BLACK}Zmeniť bradu STR_FACE_JACKET :Sako -STR_FACE_JACKET_TOOLTIP :{BLACK}Zmenit sako +STR_FACE_JACKET_TOOLTIP :{BLACK}Zmeniť sako STR_FACE_COLLAR :Golier: -STR_FACE_COLLAR_TOOLTIP :{BLACK}Zmenit golier +STR_FACE_COLLAR_TOOLTIP :{BLACK}Zmeniť golier STR_FACE_TIE :Kravata: STR_FACE_EARRING :Náušnica: -STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}Zmenit kravatu alebo náušnicu +STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}Zmeniť kravatu alebo náušnicu # Network server list STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}Hra pre viac hráčov -STR_NETWORK_SERVER_LIST_CONNECTION :{BLACK}Pripojenie: -STR_NETWORK_SERVER_LIST_CONNECTION_TOOLTIP :{BLACK}Vyber si medzi hrou na internete alebo na lokalnej sieti -STR_NETWORK_SERVER_LIST_LAN :LAN -STR_NETWORK_SERVER_LIST_INTERNET :Internet +STR_NETWORK_SERVER_LIST_ADVERTISED :{BLACK}Zverejnené +STR_NETWORK_SERVER_LIST_ADVERTISED_TOOLTIP :{BLACK}Vyberte medzi zverejnenou (internet) alebo nezverejnenou (lokálna sieť, LAN) hrou +STR_NETWORK_SERVER_LIST_ADVERTISED_NO :Nie +STR_NETWORK_SERVER_LIST_ADVERTISED_YES :Áno STR_NETWORK_SERVER_LIST_PLAYER_NAME :{BLACK}Meno hráča: STR_NETWORK_SERVER_LIST_ENTER_NAME_TOOLTIP :{BLACK}Toto je meno podla ktoreho vas ostatny identifikuju @@ -1813,24 +2006,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_LAN_INTERNET :LAN / Internet -STR_NETWORK_START_SERVER_INTERNET_ADVERTISE :Internet (oznamit) +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!! @@ -1938,6 +2131,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 @@ -2056,6 +2250,10 @@ STR_CONTENT_SELECT_UPDATES_CAPTION :{BLACK}Označi STR_CONTENT_SELECT_UPDATES_CAPTION_TOOLTIP :{BLACK}Označiť všetok obsah obsahujúci aktualizáciu, ktorý sa má stiahnuť STR_CONTENT_UNSELECT_ALL_CAPTION :{BLACK}Odznačiť všetko STR_CONTENT_UNSELECT_ALL_CAPTION_TOOLTIP :{BLACK}Označiť všetok obsah ktorý nemá byť stiahnutý +STR_CONTENT_SEARCH_EXTERNAL :{BLACK}Hľadanie na externých stránkach +STR_CONTENT_SEARCH_EXTERNAL_TOOLTIP :{BLACK} Hľadanie obsahu nie je k dispozícii v obsahovej službe OpenTTD na stránkach, ktoré nie sú spojené s OpenTTD. +STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER_CAPTION :{WHITE}Opúšťate OpenTTD! +STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER :{WHITE}Pravidlá a podmienky pre sťahovanie obsahu z externých webových stránok sa líšia.{}Musíte sa obrátiť na externé webové stránky pre inštrukcie, ako inštalovať obsah do OpenTTD.{}Chcete pokračovať? STR_CONTENT_FILTER_TITLE :{BLACK}Tag/meno filtra: STR_CONTENT_OPEN_URL :{BLACK}Navštív webstránku STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}Choď na webstránku pre ďalší obsah @@ -2125,6 +2323,17 @@ STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}Zmena pr STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Prepnúť zobrazenie ukazateľov nakladania. CTRL+klik uzamkne nastavenie STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}Nastavit objekty neviditelné namiesto priehladných +# Linkgraph legend window +STR_LINKGRAPH_LEGEND_CAPTION :{BLACK}Legenda k smerovaniu nákladu +STR_LINKGRAPH_LEGEND_ALL :{BLACK}Všetko +STR_LINKGRAPH_LEGEND_NONE :{BLACK}Nič +STR_LINKGRAPH_LEGEND_SELECT_COMPANIES :{BLACK}Vyberte spoločnosti pre zobrazenie + +# Linkgraph legend window and linkgraph legend in smallmap +STR_LINKGRAPH_LEGEND_UNUSED :{TINY_FONT}{BLACK}nevyužité +STR_LINKGRAPH_LEGEND_SATURATED :{TINY_FONT}{BLACK}vyťažené +STR_LINKGRAPH_LEGEND_OVERLOADED :{TINY_FONT}{BLACK}preťažené + # Base for station construction window(s) STR_STATION_BUILD_COVERAGE_AREA_TITLE :{BLACK}Ukázať oblasť pokrytia STR_STATION_BUILD_COVERAGE_OFF :{BLACK}Vyp. @@ -2191,18 +2400,18 @@ STR_STATION_CLASS_WAYP :Smerove body # Signal window STR_BUILD_SIGNAL_CAPTION :{WHITE}Výber návestidla STR_BUILD_SIGNAL_SEMAPHORE_NORM_TOOLTIP :{BLACK}Štandardný signál (návestidlo){}Signály sú nutné preto aby nedochádzalo ku zrážke vlakov na trati kde jazdí viac ako 1 vlak -STR_BUILD_SIGNAL_SEMAPHORE_ENTRY_TOOLTIP :{BLACK}Vstupný signál (návestidlo){}Svieti nazeleno dovtedy, kým v nasledujúcom úseku trate je aspoň 1 zelený výstupný signál. Inak je červený. -STR_BUILD_SIGNAL_SEMAPHORE_EXIT_TOOLTIP :{BLACK}Výstupný signál (návestidlo){}Chová sa rovnako ako smerový signál, ale je nevyhnutný pre správne fungovanie vstupných a kombinovaných pre-signálov -STR_BUILD_SIGNAL_SEMAPHORE_COMBO_TOOLTIP :{BLACK}Kombinovaný signál (návestidlo){}Slúži súčasne ako vstupný a výstupný signál zároveň, čím je možné postaviť "reťazové" pre-signály. +STR_BUILD_SIGNAL_SEMAPHORE_ENTRY_TOOLTIP :{BLACK}Vstupný signál (semafór){}Zelená svieti dovtedy, kým v nasledujúcom úseku trate je aspoň 1 zelený výstupný signál. Inak ukazuje červenú. +STR_BUILD_SIGNAL_SEMAPHORE_EXIT_TOOLTIP :{BLACK}Výstupný signál (semafór){}Chová sa rovnako ako štandardný signál, ale je nevyhnutné nastaviť správnu farbu pre vstupné a kombinované pre-signály +STR_BUILD_SIGNAL_SEMAPHORE_COMBO_TOOLTIP :{BLACK}Kombinovaný signál (semafór){}Slúži zároveň ako vstupný aj výstupný signál, Tým umožnuje postaviť "stromovú" hierarchiu signálov. STR_BUILD_SIGNAL_SEMAPHORE_PBS_TOOLTIP :{BLACK}Smerový signál (návestidlo){}Smerový signál umožní vstúpiť viacerým vlakom na trať z oboch strán, iba ak vlak dokáže bezpečne zastaviť pred návestidlom. Smerový signál môže byť na jednej koľaji proti sebe. STR_BUILD_SIGNAL_SEMAPHORE_PBS_OWAY_TOOLTIP :{BLACK}Jednosmerný signál (návestidlo){}Jednosmerný signál umožňuje vstúpiť viacerým vlakom na trať súčasne, iba ak vlak dokáže bezpečne zastaviť pred návestidlom. Jednosmerné signály nemôžu byť na jednej koľaji proti sebe STR_BUILD_SIGNAL_ELECTRIC_NORM_TOOLTIP :{BLACK}Štandardný signál (elektrický){}Základný typ signálu, dovolí len 1 vlak v jednom bloku v rovnakom čase -STR_BUILD_SIGNAL_ELECTRIC_ENTRY_TOOLTIP :{BLACK}Vstupný signál (elektrický){}Zelený, ak je 1 alebo viac zelených výstupných signálov na nasledujúcom úseku, inak svieti červený -STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}Výstupný signál (elektrický){}Funguje rovnako ako štandardný signál, avšak je nevyhnutný pre určenie správnej farby na vstupných a kombinovaných signáloch -STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}Kombinovaný signál (elektrický){}Funguje jednoducho ako vstupný a výstupný signál zároveň, čo umožňuje budovať "stromové" štruktúry. +STR_BUILD_SIGNAL_ELECTRIC_ENTRY_TOOLTIP :{BLACK}Vstupný signál (elektrický){}Zelená tak dlho, kým je aspoň 1 zelený výstupný signál na nasledujúcom úseku trate. Inak ukazuje červenú +STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}Výstupný signál (elektrický){}Funguje rovnako ako štandardný signál, je však nevyhnutné určenie správnej farby na vstupných a kombinovaných signáloch +STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}Kombinovaný signál (elektrický){}Funguje zároveň ako vstupný aj výstupný signál, Tým umožňuje budovať veľké "stromové" hierarchie signálov STR_BUILD_SIGNAL_ELECTRIC_PBS_TOOLTIP :{BLACK}Obojstranné signály (elektrické){}Obojstranné signály umožnujú vstúpiť viacerým vlakom na trať súčasne, iba ak vlak dokáže zastaviť pred brzdiacim bodom. Obojstranné signály môžu byť postavené vedľa seba zadnou stranou STR_BUILD_SIGNAL_ELECTRIC_PBS_OWAY_TOOLTIP :{BLACK}Jednosmerné signály (elektrické){}Jednosmerné signály umožnujú vstúpiť viacerým vlakom na trať súčasne, iba ak vlak dokáže zastaviť pred brzdiacim bodom. Jednosmerné signály nemôžu byť postavené vedľa zadnou stranou -STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}Konverzia signálu{}Po vybratí, kliknutie na existujúci signál zmení na vybraný typ a variant, CTRL+klik prepne existujúci variant. Shift+klik zobrazí odhad nákladov +STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}Zmena signálu{}Po vybratí, kliknutím na existujúci signál dochádza k zmene na vybraný typ signálu a varianty, Ctrl+klik prepne existujúcu variantu. Shift+klik zobrazí odhad nákladov na zmenu STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_TOOLTIP :{BLACK}Hustota signálov pri stavbe ťahaním STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_DECREASE_TOOLTIP :{BLACK}Znižit hustotu signálov STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_INCREASE_TOOLTIP :{BLACK}Zvýšit hustotu signálov @@ -2329,7 +2538,7 @@ STR_PLANT_TREE_TOOLTIP :{BLACK}Vybrať STR_TREES_RANDOM_TYPE :{BLACK}Nahodne stromy STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}Umiestniť náhodné stromy. Shift prepína nakúp a zobrazenie ceny bez nákupu STR_TREES_RANDOM_TREES_BUTTON :{BLACK}Nahodné stromy -STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Zasadit nahodne stromy +STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Zasadiť stromy náhodne po celej krajine # Land generation window (SE) STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}Generovanie uzemia @@ -2366,7 +2575,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: @@ -2399,6 +2608,10 @@ STR_INDUSTRY_DISPLAY_CHAIN :{BLACK}Zobrazi STR_INDUSTRY_DISPLAY_CHAIN_TOOLTIP :{BLACK}Zobraziť náklad dodávaného a prijímaného priemyslu STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP :{BLACK}Odkaz na malú mapu STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP_TOOLTIP :{BLACK}Vybrať zobrazený priemysel taktiež v malej mape +STR_INDUSTRY_CARGOES_SELECT_CARGO :{BLACK}Vyberte tovar +STR_INDUSTRY_CARGOES_SELECT_CARGO_TOOLTIP :{BLACK}Vyberte tovar, ktorý chcete zobraziť +STR_INDUSTRY_CARGOES_SELECT_INDUSTRY :{BLACK} Vyber priemysel +STR_INDUSTRY_CARGOES_SELECT_INDUSTRY_TOOLTIP :{BLACK}Vyber priemysel ktorý chceš zobraziť # Land area window STR_LAND_AREA_INFORMATION_CAPTION :{WHITE}Informácie o pozemku @@ -2423,6 +2636,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 @@ -2519,7 +2733,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-2012 team OpenTTD +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2014 team OpenTTD # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Uložiť hru @@ -2538,6 +2752,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} @@ -2548,6 +2763,7 @@ STR_SAVELOAD_OSKTITLE :{BLACK}Zadajte # World generation STR_MAPGEN_WORLD_GENERATION_CAPTION :{WHITE}Vytvorenie krajiny STR_MAPGEN_MAPSIZE :{BLACK}Veľkosť mapy: +STR_MAPGEN_MAPSIZE_TOOLTIP :{BLACK}Vybranie veľkosti mapy v štvorcoch. Počet dostupných štvorcov bude o trochu nižší. STR_MAPGEN_BY :{BLACK}* STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Počet miest: STR_MAPGEN_DATE :{BLACK}Rok: @@ -2555,10 +2771,6 @@ STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Počet p 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: @@ -2585,7 +2797,6 @@ 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_SNOW_LINE_QUERY_CAPT :{WHITE}Zmeniť výšku línie snehu STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Zmenit rok zaciatku hry @@ -2640,6 +2851,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 @@ -2664,6 +2877,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ť @@ -2723,6 +2946,7 @@ STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Obsahuje viacnásobné záznamy Action 8 (sprite {3:NUM}) STR_NEWGRF_ERROR_READ_BOUNDS :Čítanie za koncom pseudo-sprite (sprite {3:NUM}) STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}V používanej základnej grafickej sade chýbajú niektoré grafické objekty.{}Aktualizujte prosím základnú grafickú sadu. +STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}Aktuálne používanej základnej sade grafiky chýba niekoľko spritov.{}Prosím zaktualizujte základnú sadu grafiky.{}Keďže hráte {YELLOW}vývojovú verziu OpenTTD{WHITE}, môžete tiež potrebovať{YELLOW}vývojovú verziu základnej sady grafiky{WHITE} STR_NEWGRF_ERROR_GRM_FAILED :Požadované GRF prostriedky nie sú dosupné (sprite {3:NUM}) STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} bol vypnutý {STRING} STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Nesprávny/neznámy formát rozloženia sprite(ov) (sprite {3:NUM}) @@ -2733,6 +2957,7 @@ STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}Chystá STR_NEWGRF_DUPLICATE_GRFID :{WHITE}Nie je možné pridať súbor: duplicitné GRF ID STR_NEWGRF_COMPATIBLE_LOADED :{ORANGE}Príslušný súbor nenájdený (použitý kompatibilný GRF) +STR_NEWGRF_TOO_MANY_NEWGRFS :{WHITE}Nie je možné pridať súbor. Bol dosiahnutý limit pre NewGRF súbory. STR_NEWGRF_COMPATIBLE_LOAD_WARNING :{WHITE}Kompatibilné súbory GRF použité namiesto chýbajúcich STR_NEWGRF_DISABLED_WARNING :{WHITE}Chýbajúce súbory GRF boli vypnuté @@ -2749,6 +2974,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. @@ -2763,6 +2989,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... @@ -2844,10 +3073,14 @@ STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT :{YELLOW}Zakúpi STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}Podplatiť miestnu správu pre zvýšenie hodnotenia tvojej spoločnosti, s rizikom ťažkého postihu pri odhalení!{}Cena: {CURRENCY_LONG} # Goal window -STR_GOALS_CAPTION :{WHITE}Ciele +STR_GOALS_CAPTION :{WHITE}{COMPANY} Ciele +STR_GOALS_SPECTATOR_CAPTION :{WHITE}Globálne ciele STR_GOALS_GLOBAL_TITLE :{BLACK}Globálne ciele: STR_GOALS_TEXT :{ORANGE}{STRING} STR_GOALS_NONE :{ORANGE}- Nič - +STR_GOALS_SPECTATOR_NONE :{ORANGE}- Nepoužiteľné - +STR_GOALS_PROGRESS :{ORANGE}{STRING} +STR_GOALS_PROGRESS_COMPLETE :{GREEN}{STRING} STR_GOALS_COMPANY_TITLE :{BLACK}Ciele spoločnosti: STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Klikni pre vycentrovanie na priemysel/mesto/políčko. Ctrl+klik otvorí nové okno s priemyslom/mestom/políčkom @@ -2886,6 +3119,18 @@ STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}V súča STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING} z {STRING} do {STRING}{YELLOW} ({COMPANY}{YELLOW}, do {DATE_SHORT}) STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Kliknúť na trasu pre centrovanie pohľadu na továreň/mesto +# Story book window +STR_STORY_BOOK_CAPTION :{WHITE}{COMPANY} Kniha príbehov +STR_STORY_BOOK_SPECTATOR_CAPTION :{WHITE}Globálna kniha príbehov +STR_STORY_BOOK_TITLE :{YELLOW}{STRING} +STR_STORY_BOOK_GENERIC_PAGE_ITEM :Strana {NUM} +STR_STORY_BOOK_SEL_PAGE_TOOLTIP :{BLACK}Skočiť na určitú stranu výberom zo zoznamu +STR_STORY_BOOK_PREV_PAGE :{BLACK}Predchádzajúca +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 STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}Podržte CTRL pre výber viacerých položiek @@ -2899,9 +3144,9 @@ 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} na ceste z {STATION}) +STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} z {STATION}) +STR_STATION_VIEW_RESERVED :{YELLOW}({CARGO_SHORT} rezervované pre nakladanie) STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Prijíma STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Zobraziť zoznam prijímaného nákladu @@ -2912,8 +3157,31 @@ STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :Spoločnosť {Y STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Hodnotenie STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Zobraziť hodnotenia stanice -STR_STATION_VIEW_CARGO_RATINGS_TITLE :{BLACK}Hodnotenie prepravy: -STR_STATION_VIEW_CARGO_RATING :{WHITE}{STRING}: {YELLOW}{STRING} ({COMMA}%) +STR_STATION_VIEW_SUPPLY_RATINGS_TITLE :{BLACK}Mesačné zásobovanie a lokálne hodnotenie +STR_STATION_VIEW_CARGO_SUPPLY_RATING :{WHITE}{STRING}: {YELLOW}{COMMA} / {STRING} ({COMMA}%) + +STR_STATION_VIEW_GROUP :{BLACK}Zoskupiť podľa +STR_STATION_VIEW_WAITING_STATION :Stanica: Čakajúce +STR_STATION_VIEW_WAITING_AMOUNT :Množstvo: Čakajúce +STR_STATION_VIEW_PLANNED_STATION :Stanica: Plánované +STR_STATION_VIEW_PLANNED_AMOUNT :Množstvo: Plánované +STR_STATION_VIEW_FROM :{YELLOW}{CARGO_SHORT} z {STATION} +STR_STATION_VIEW_VIA :{YELLOW}{CARGO_SHORT} cez {STATION} +STR_STATION_VIEW_TO :{YELLOW}{CARGO_SHORT} do {STATION} +STR_STATION_VIEW_FROM_ANY :{RED}{CARGO_SHORT} z neznámej stanice +STR_STATION_VIEW_TO_ANY :{RED}{CARGO_SHORT} do akejkoľvek stanice +STR_STATION_VIEW_VIA_ANY :{RED}{CARGO_SHORT} cez akúkoľvek stanicu +STR_STATION_VIEW_FROM_HERE :{GREEN}{CARGO_SHORT} z tejto stanice +STR_STATION_VIEW_VIA_HERE :{GREEN}{CARGO_SHORT} zastavuje v tejto stanici +STR_STATION_VIEW_TO_HERE :{GREEN}{CARGO_SHORT} na túto stanicu +STR_STATION_VIEW_NONSTOP :{YELLOW}{CARGO_SHORT} bez zastávky + +STR_STATION_VIEW_GROUP_S_V_D :Odkiaľ-Cez-Kam +STR_STATION_VIEW_GROUP_S_D_V :Odkiaľ-Kam-Cez +STR_STATION_VIEW_GROUP_V_S_D :Cez-Odkiaľ-Kam +STR_STATION_VIEW_GROUP_V_D_S :Cez-Kam-Odkiaľ +STR_STATION_VIEW_GROUP_D_S_V :Kam-Odkiaľ-Cez +STR_STATION_VIEW_GROUP_D_V_S :Kam-Cez-Odkiaľ ############ range for rating starts STR_CARGO_RATING_APPALLING :Hrozné @@ -2970,7 +3238,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á @@ -3040,7 +3308,6 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS :{WHITE}Kanále STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}Stanice: STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}Políčka staníc STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}Letiská -STR_COMPANY_INFRASTRUCTURE_VIEW_COST :{WHITE}{1:CURRENCY_LONG}/rok ({0:COMMA}) STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL :{WHITE}{CURRENCY_LONG}/rok # Industry directory @@ -3057,6 +3324,7 @@ STR_INDUSTRY_VIEW_PRODUCTION_LAST_MONTH_TITLE :{BLACK}Produkci STR_INDUSTRY_VIEW_TRANSPORTED :{YELLOW}{CARGO_LONG}{STRING}{BLACK} ({COMMA}% prepraven{P é é ých}) STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Vycentrovať pohľad na pozíciu továrne. Ctrl+klik otvorí nové okno s pohľadom na továreň STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Úroveň produkcie: {YELLOW}{COMMA}% +STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}Priemysel oznámil blížiace sa uzatvorenie! ############ range for requires starts STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Potrebuje: {YELLOW}{STRING}{STRING} @@ -3119,12 +3387,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á @@ -3134,11 +3405,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} @@ -3269,13 +3540,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} @@ -3420,6 +3691,11 @@ STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Servisn 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 +STR_SERVICE_INTERVAL_DROPDOWN_TOOLTIP :{BLACK}Zmeniť typ servisného intervalu +STR_VEHICLE_DETAILS_DEFAULT :Štandardné +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ď @@ -3452,7 +3728,9 @@ STR_VEHICLE_DETAILS_TRAIN_ARTICULATED_RV_CAPACITY :{BLACK}Kapacita STR_REFIT_CAPTION :{WHITE}{VEHICLE} (Prestavat) STR_REFIT_TITLE :{GOLD}Vyber typ nákladu: STR_REFIT_NEW_CAPACITY_COST_OF_REFIT :{BLACK}Nová kapacita: {GOLD}{CARGO_LONG}{}{BLACK}Cena prestavby: {RED}{CURRENCY_LONG} +STR_REFIT_NEW_CAPACITY_INCOME_FROM_REFIT :{BLACK}Nová kapacita: {GOLD}{CARGO_LONG}{}{BLACK}Príjem z prestavby: {GREEN}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_COST_OF_AIRCRAFT_REFIT :{BLACK}Nová kapacita: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Cena prestavby: {RED}{CURRENCY_LONG} +STR_REFIT_NEW_CAPACITY_INCOME_FROM_AIRCRAFT_REFIT :{BLACK}Nová kapacita: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Príjem z prestavby: {GREEN}{CURRENCY_LONG} STR_REFIT_SELECT_VEHICLES_TOOLTIP :{BLACK}Vyber vozidlo k prestavbe. Ťah myšou umožní vybrať viacej vozidiel. Kliknutie do voľného mista vybere celé vozidlo. Ctrl+Klik vyberie vozidlo a následujúci reťaz STR_REFIT_TRAIN_LIST_TOOLTIP :{BLACK}Vybrat typ prepravovaneho nakladu @@ -3506,7 +3784,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 @@ -3598,18 +3876,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 @@ -3635,9 +3913,13 @@ 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_NOT_TIMETABLED_SPEED :Cestovanie (bez cestovného plánu) s najviac {2:VELOCITY} STR_TIMETABLE_TRAVEL_FOR :Cesta do {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í} @@ -3653,7 +3935,7 @@ STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}Tento ce STR_TIMETABLE_STATUS_START_AT :{BLACK}Tento cestovný poriadok začne {STRING} STR_TIMETABLE_STARTING_DATE :{BLACK}Začiatočný dátum -STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Vyberte dátum ako začiatočný bod tohto cestovného poriadku +STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Vyberte dátum začiatku cestovného poriadku. Ctrl+klik nastaví počiatočný dátum tohto cestovného poriadku pre všetky vozidlá zdieľajúce tieto príkazy na základe ich relatívneho poradia, ak je cestovný poriadok kompletne vyplnený STR_TIMETABLE_CHANGE_TIME :{BLACK}Zmenit cas STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Zmenit dlžku trvania oznaceného príkazu @@ -3675,7 +3957,7 @@ STR_TIMETABLE_AUTOFILL_TOOLTIP :{BLACK}Naplň STR_TIMETABLE_EXPECTED :{BLACK}Čakať STR_TIMETABLE_SCHEDULED :{BLACK}Naplánovaný -STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Prepnúť medzi čakaním a cestovným poriadkom +STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Prepnúť medzi očakávaným a plánovaným STR_TIMETABLE_ARRIVAL_ABBREVIATION :P: STR_TIMETABLE_DEPARTURE_ABBREVIATION :O: @@ -3767,6 +4049,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 @@ -3779,6 +4063,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}Cena: {CURRENCY_LONG} @@ -3787,6 +4073,10 @@ STR_INCOME_FLOAT_INCOME_SMALL :{TINY_FONT}{GRE STR_INCOME_FLOAT_INCOME :{GREEN}Zisk: {CURRENCY_LONG} STR_FEEDER_TINY :{TINY_FONT}{YELLOW}Prekladka: {CURRENCY_LONG} STR_FEEDER :{YELLOW}Prekladka: {CURRENCY_LONG} +STR_FEEDER_INCOME_TINY :{TINY_FONT}{YELLOW}Prevod: {CURRENCY_LONG}{WHITE} / {GREEN}Zisk: {CURRENCY_LONG} +STR_FEEDER_INCOME :{YELLOW}Prevod: {CURRENCY_LONG}{WHITE} / {GREEN}Zisk: {CURRENCY_LONG} +STR_FEEDER_COST_TINY :{TINY_FONT}{YELLOW}Prevod: {CURRENCY_LONG}{WHITE} / {RED}Náklady: {CURRENCY_LONG} +STR_FEEDER_COST :{YELLOW}Prevod: {CURRENCY_LONG}{WHITE} / {RED}Náklady: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_COST :{WHITE}Priblizna cena: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Priblizny zisk: {CURRENCY_LONG} @@ -3827,6 +4117,8 @@ STR_WARNING_HEIGHTMAP_SCALE_MESSAGE :{YELLOW}Príli STR_WARNING_FALLBACK_SOUNDSET :{WHITE}Bola nájdená len núdzová sada zvukov. Pre viac zvukových efektov je potrebné stiahnuť zvukovú sadu cez online. # Screenshot related messages +STR_WARNING_SCREENSHOT_SIZE_CAPTION :{WHITE}Obrovská snímka +STR_WARNING_SCREENSHOT_SIZE_MESSAGE :{YELLOW}Screenshot bude mať rozlíšenie {COMMA} x {COMMA} pixelov. Jeho vytvorenie ale môže chvíľu trvať. Naozaj chcete pokračovať STR_MESSAGE_SCREENSHOT_SUCCESSFULLY :{WHITE}Snímka bola uložená na disk ako '{STRING}' STR_ERROR_SCREENSHOT_FAILED :{WHITE}Uloženie snímky zlyhalo! @@ -4081,6 +4373,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 @@ -4136,6 +4429,11 @@ STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}Nie je m STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... vozidlo je zničené +STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL :{WHITE}Žiadne vozidlá nebudú k dispozícii +STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Zmena vašej konfigurácie NewGRF +STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}Zatiaľ nie sú dostupné žiadne vozidlá +STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Začnite novú hru po {DATE_SHORT} alebo použite NewGRF, ktoré zabezpečí vozidlá v skoršom čase + # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Nemôžeš pustiť vlak na červenú keď hrozí nebezpečenstvo... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Nemožno zmeniť smer vlaku... @@ -4178,81 +4476,91 @@ STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}Nemôže # Translatable comment for OpenTTD's desktop shortcut STR_DESKTOP_SHORTCUT_COMMENT :Simulátor založený na hre Transport Tycoon Deluxe +# Translatable descriptions in media/baseset/*.ob* files +STR_BASEGRAPHICS_DOS_DESCRIPTION :Pôvodná grafika Transport Tycoon Deluxe (DOS). +STR_BASEGRAPHICS_DOS_DE_DESCRIPTION :Pôvodná grafika Transport Tycoon Deluxe (DOS) (v jazyku nemčina). +STR_BASEGRAPHICS_WIN_DESCRIPTION :Pôvodná grafika Transport Tycoon Deluxe (Windows). +STR_BASESOUNDS_DOS_DESCRIPTION :Pôvodné zvuky Transport Tycoon Deluxe (DOS). +STR_BASESOUNDS_WIN_DESCRIPTION :Pôvodné zvuky Transport Tycoon Deluxe (Windows). +STR_BASESOUNDS_NONE_DESCRIPTION :Zvuková sada neobsahujúca zvuky. +STR_BASEMUSIC_WIN_DESCRIPTION :Pôvodná hudba z Transport Tycoon Deluxe (Windows). +STR_BASEMUSIC_NONE_DESCRIPTION :Sada hudby neobsahujúca hudbu. + ##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! @@ -4300,7 +4608,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) @@ -4509,7 +4817,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 @@ -4624,8 +4932,9 @@ 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_SPACE_STRING :{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} @@ -4649,9 +4958,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 85d0d850e..4ad08e421 100644 --- a/src/lang/slovenian.txt +++ b/src/lang/slovenian.txt @@ -352,27 +352,36 @@ 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 +STR_UNITS_HEIGHT_METRIC :{COMMA} m STR_UNITS_HEIGHT_SI :{COMMA} m # Common window strings +STR_LIST_FILTER_TITLE :{BLACK}Filtriraj niz: 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 @@ -384,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 @@ -408,7 +418,6 @@ STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}Površin # These are used in buttons -STR_SORT_BY_CAPTION_POPULATION :{BLACK}Prebivalstvo STR_SORT_BY_CAPTION_NAME :{BLACK}Ime STR_SORT_BY_CAPTION_DATE :{BLACK}Datum # These are used in dropdowns @@ -429,7 +438,8 @@ 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 :Čakanje vrednosti tovora +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 STR_SORT_BY_ENGINE_ID :ID motorja (klasično urejanje) @@ -441,6 +451,8 @@ STR_SORT_BY_RUNNING_COST :Cena delovanja STR_SORT_BY_POWER_VS_RUNNING_COST :Moč/Cena delovanja 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 @@ -453,6 +465,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 @@ -523,19 +537,19 @@ STR_FILE_MENU_SEPARATOR : STR_FILE_MENU_EXIT :Izhod ############ range ends here -############ range for map menu starts +# 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, yet the town directory is shown in the map menu in the scenario editor + +############ range for town menu starts STR_TOWN_MENU_TOWN_DIRECTORY :Imenik mest -############ end of the 'Display map' dropdown STR_TOWN_MENU_FOUND_TOWN :Ustanovi mesto -############ end of the 'Town' dropdown +############ range ends here ############ range for subsidies menu starts STR_SUBSIDIES_MENU_SUBSIDIES :Subvencije -STR_SUBSIDIES_MENU_GOAL :Trenutni cilji ############ range ends here ############ range for graph menu starts @@ -550,10 +564,12 @@ STR_GRAPH_MENU_CARGO_PAYMENT_RATES :Graf plačila z ############ range for company league menu starts STR_GRAPH_MENU_COMPANY_LEAGUE_TABLE :Tabela lige podjetij STR_GRAPH_MENU_DETAILED_PERFORMANCE_RATING :Podrobna ocena uspeha +STR_GRAPH_MENU_HIGHSCORE :Tabela najboljših rezultatov ############ range ends here ############ range for industry menu starts STR_INDUSTRY_MENU_INDUSTRY_DIRECTORY :Imenik industrij +STR_INDUSTRY_MENU_INDUSTRY_CHAIN :Industrijske verige STR_INDUSTRY_MENU_FUND_NEW_INDUSTRY :Financiraj novo industrijo ############ range ends here @@ -607,7 +623,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. @@ -623,22 +639,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 @@ -800,7 +834,7 @@ STR_HIGHSCORE_PERFORMANCE_TITLE_CAPITALIST :Kapitalist STR_HIGHSCORE_PERFORMANCE_TITLE_MAGNATE :Magnat STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL :Glavar STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY :Velekapitalist stoletja -STR_HIGHSCORE_NAME :{BIG_FONT}{PRESIDENT_NAME}, {COMPANY} +STR_HIGHSCORE_NAME :{PRESIDENT_NAME}, {COMPANY} STR_HIGHSCORE_STATS :{BIG_FONT}'{STRING}' ({COMMA}) STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{BLACK}{COMPANY} dosega naslov '{STRING}'! STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{WHITE}{PRESIDENT_NAME} iz podjetja {COMPANY} prejema naslov '{STRING}'! @@ -811,17 +845,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 @@ -855,6 +892,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 @@ -865,6 +903,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 @@ -941,13 +981,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 @@ -978,6 +1016,8 @@ STR_NEWS_SERVICE_SUBSIDY_AWARDED_TRIPLE :{BIG_FONT}{BLAC STR_NEWS_SERVICE_SUBSIDY_AWARDED_QUADRUPLE :{BIG_FONT}{BLACK}Subvencija podeljena podjetju{STRING}!{}{}Prevoz {STRING.r} od {STRING} do {STRING} bo prinesel štirikratni prihodek{}za naslednje leto! STR_NEWS_ROAD_REBUILDING :{BIG_FONT}{BLACK}Prometni kaos v mestu {TOWN}!{}{}Obnovitvena dela, ki jih financira podjetje {STRING},{}bodo prinesla 6 mesecev nevšečnosti{}voznikom motornih vozil! +STR_NEWS_EXCLUSIVE_RIGHTS_TITLE :{BIG_FONT}{BLACK}Transportni monopol! +STR_NEWS_EXCLUSIVE_RIGHTS_DESCRIPTION :{BIG_FONT}{BLACK}Lokalna oblast kraja {TOWN} je podpisala pogodbo s/z {STRING} o eno letni izključni pravici za transport. # Extra view window STR_EXTRA_VIEW_PORT_TITLE :{WHITE}Pogled {COMMA} @@ -1024,15 +1064,12 @@ 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 -STR_GAME_OPTIONS_MEASURING_UNITS_FRAME :{BLACK}Merske enote -STR_GAME_OPTIONS_MEASURING_UNITS_DROPDOWN_TOOLTIP :{BLACK}Izbor merskih enot ############ start of measuring units region -STR_GAME_OPTIONS_MEASURING_UNITS_IMPERIAL :Colski -STR_GAME_OPTIONS_MEASURING_UNITS_METRIC :Metrični -STR_GAME_OPTIONS_MEASURING_UNITS_SI :SI ############ end of measuring units region STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Cestna vozila @@ -1070,11 +1107,13 @@ STR_GAME_OPTIONS_TOWN_NAME_CATALAN :Katalonska STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Samo-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,9 +1125,6 @@ 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_BASE_GRF :{BLACK}Osnovni komplet grafik STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Izberi osnovni komplet grafik za uporabo STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} manjkajoč{P a i e ih}/okvarjen{P a i e ih} datotek{P a i e ""} @@ -1190,11 +1226,27 @@ STR_WARNING_NO_SUITABLE_AI :{WHITE}Ni na vo # Advanced settings window STR_CONFIG_SETTING_CAPTION :{WHITE}Napredne 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_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) @@ -1217,9 +1269,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} @@ -1244,14 +1316,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} @@ -1279,12 +1345,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} @@ -1305,10 +1375,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. @@ -1351,6 +1417,7 @@ STR_CONFIG_SETTING_LAND_GENERATOR :Urejevalnik ter STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :Original STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis 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} STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Valovitost terena (samo TerraGenesis) : {STRING} STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Zelo zglajen @@ -1365,7 +1432,6 @@ STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Zasuk višinske 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 @@ -1400,6 +1466,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 @@ -1410,17 +1482,13 @@ 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_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} @@ -1488,6 +1556,11 @@ 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 STR_CONFIG_SETTING_AI_IN_MULTIPLAYER :Dovoli UI v večigralskem načinu: {STRING} STR_CONFIG_SETTING_AI_IN_MULTIPLAYER_HELPTEXT :Dovoli UI računalniškim tekmecem sodelovanje v večigralskem načinu. @@ -1514,12 +1587,19 @@ STR_CONFIG_SETTING_DISABLE_ELRAILS :Onemogoči elek STR_CONFIG_SETTING_DISABLE_ELRAILS_HELPTEXT :Če je omogočeno, ni potrebna elektrifikacija železnice za električni pogon. 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} @@ -1554,7 +1634,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} @@ -1630,28 +1710,78 @@ 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_GUI :{ORANGE}Vmesnik -STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}Gradnja +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_LOCALISATION :{ORANGE}Lokalno +STR_CONFIG_SETTING_SOUND :{ORANGE}Zvočni učinki +STR_CONFIG_SETTING_INTERFACE :{ORANGE}Vmesnik +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Gradnja 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_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 @@ -1682,6 +1812,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} @@ -1694,6 +1829,7 @@ STR_INTRO_SCENARIO_EDITOR :{BLACK}Urejeval STR_INTRO_MULTIPLAYER :{BLACK}Več igralcev STR_INTRO_GAME_OPTIONS :{BLACK}Možnosti +STR_INTRO_HIGHSCORE :{BLACK}Tabela najboljših rezultatov STR_INTRO_ADVANCED_SETTINGS :{BLACK}Napredne nastavitve STR_INTRO_NEWGRF_SETTINGS :{BLACK}NewGRF nastavitve STR_INTRO_ONLINE_CONTENT :{BLACK}Preveri razpoložljive vsebine @@ -1713,6 +1849,7 @@ STR_INTRO_TOOLTIP_SUB_TROPICAL_LANDSCAPE :{BLACK}Izberi s STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Izberi ozemlje v svetu igrač 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_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 @@ -1801,6 +1938,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 @@ -1856,10 +1994,10 @@ STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}Spremeni # Network server list STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}Več igralcev -STR_NETWORK_SERVER_LIST_CONNECTION :{BLACK}Povezava: -STR_NETWORK_SERVER_LIST_CONNECTION_TOOLTIP :{BLACK}Izberi med internetom ali lokalno mrezo (LAN) -STR_NETWORK_SERVER_LIST_LAN :Lokalno omrežje -STR_NETWORK_SERVER_LIST_INTERNET :Internet +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 @@ -1918,8 +2056,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_LAN_INTERNET :Lokalno omrežje / Internet -STR_NETWORK_START_SERVER_INTERNET_ADVERTISE :Internet (oglašuj) +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 @@ -2040,6 +2178,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 @@ -2158,6 +2297,10 @@ STR_CONTENT_SELECT_UPDATES_CAPTION :{BLACK}Izberi n STR_CONTENT_SELECT_UPDATES_CAPTION_TOOLTIP :{BLACK}Označi vse nadgradne vsebine za obstoječe vsebine prenosa 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 @@ -2227,6 +2370,17 @@ STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}Preklop STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Preklop na prosojnost za prikaz polnenja. Ctrl+Klik za zaklepanje 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 STR_STATION_BUILD_COVERAGE_OFF :{BLACK}Izključeno @@ -2300,7 +2454,7 @@ STR_BUILD_SIGNAL_SEMAPHORE_PBS_TOOLTIP :{BLACK}Napredni STR_BUILD_SIGNAL_SEMAPHORE_PBS_OWAY_TOOLTIP :{BLACK}Napredni enosmerni signal (semafor){}Napredni signal omogoča vstop več kot enemu vlaku v odsek proge, če ima na voljo prostor za varno ustavitev. Napredni signali se lahko prevozijo s hrbtne strani STR_BUILD_SIGNAL_ELECTRIC_NORM_TOOLTIP :{BLACK}Standardni signal (električni){}Signali so potrebni, da preprečijo vlaku trčenje na progi z več vlaki STR_BUILD_SIGNAL_ELECTRIC_ENTRY_TOOLTIP :{BLACK}Vhodni signal (električni){}Zelen v kolikor je vsaj en ali več izhodnih signalov v nadaljevanju proge. Če ne, je rdeč -STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}Izhodni signal (električni){}Deluje kot normalen semafor, le da mora biti povezan z ustreznim vhodnim ali kombiniranim signalom +STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}Izhodni signal (električni){}Deluje kot normalen semafor, le da mora biti povezan z ustreznim vhodnim ali kombiniranim pred-signalom STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}Kombinirani signal (električni){}Kombinirani signal deluje kot vhodni in izhodni. To omogoča gradnjo velikih vej signalizacije STR_BUILD_SIGNAL_ELECTRIC_PBS_TOOLTIP :{BLACK}Napredni signal (električni){}Napredni signal omogoča vstop več kot enemu vlaku v odsek proge, če ima na voljo prostor za varno ustavitev. Napredni signali se lahko prevozijo s hrbtne strani STR_BUILD_SIGNAL_ELECTRIC_PBS_OWAY_TOOLTIP :{BLACK}Napredni enosmerni signal (električni){}Napredni signal omogoča vstop več kot enemu vlaku v odsek proge, če ima na voljo prostor za varno ustavitev. Napredni signali se lahko prevozijo s hrbtne strani @@ -2501,6 +2655,10 @@ STR_INDUSTRY_DISPLAY_CHAIN :{BLACK}Prikaži STR_INDUSTRY_DISPLAY_CHAIN_TOOLTIP :{BLACK}Prikaži oskrbo s tovorom in pripadajoče industrije STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP :{BLACK}Poveži z zemljevidom STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP_TOOLTIP :{BLACK}Izberi prikazane industrije tudi na zemljevidu +STR_INDUSTRY_CARGOES_SELECT_CARGO :{BLACK}Izberi tovor +STR_INDUSTRY_CARGOES_SELECT_CARGO_TOOLTIP :{BLACK}Izberi tovor za prikaz +STR_INDUSTRY_CARGOES_SELECT_INDUSTRY :{BLACK}Izberi industrijo +STR_INDUSTRY_CARGOES_SELECT_INDUSTRY_TOOLTIP :{BLACK}Izberi industrijo za prikaz # Land area window STR_LAND_AREA_INFORMATION_CAPTION :{WHITE}Informacije o zemljišču @@ -2525,6 +2683,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 @@ -2621,7 +2780,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-2012 ekipa OpenTTD +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2014 ekipa OpenTTD # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Shrani igro @@ -2650,6 +2809,7 @@ 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: @@ -2657,10 +2817,6 @@ STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Število 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: @@ -2687,7 +2843,6 @@ 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_SNOW_LINE_QUERY_CAPT :{WHITE}Spremeni višino snežne meje STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Spremeni začetno leto @@ -2766,6 +2921,8 @@ 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 + # NewGRF parameters window STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}Spremeni NewGRF parametre STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Zapri @@ -2825,6 +2982,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}) @@ -2835,6 +2993,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 @@ -2865,6 +3024,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... @@ -2946,10 +3108,14 @@ STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT :{YELLOW}Kupi en STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}Podkupi lokalno oblast za izboljšavo svojih ocen kljub tveganju resnih kazni ob odkritju.{}Cena: {CURRENCY_LONG} # Goal window -STR_GOALS_CAPTION :{WHITE}Cilji +STR_GOALS_CAPTION :{WHITE}{COMPANY} Cilji +STR_GOALS_SPECTATOR_CAPTION :{WHITE}Globalni cilji 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 @@ -2988,6 +3154,18 @@ STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}Že subv STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}Prevoz {STRING.r} od {STRING} do {STRING}{YELLOW} ({COMPANY}{YELLOW}, do {DATE_SHORT}) 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 STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}Drži Ctrl za izbor več stvari @@ -3001,9 +3179,9 @@ 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 STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Sprejema STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Prikaži seznam sprejetega tovora @@ -3014,8 +3192,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_CARGO_RATINGS_TITLE :{BLACK}Lokalne ocene transportnih storitev: -STR_STATION_VIEW_CARGO_RATING :{WHITE}{STRING}: {YELLOW}{STRING} ({COMMA}%) +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 @@ -3142,7 +3343,6 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS :{WHITE}Kanali STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}Postaje: STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}Polja postaj STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}Letališča -STR_COMPANY_INFRASTRUCTURE_VIEW_COST :{WHITE}{1:CURRENCY_LONG}/leto ({0:COMMA}) STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL :{WHITE}{CURRENCY_LONG}/leto # Industry directory @@ -3159,6 +3359,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} @@ -3227,6 +3428,7 @@ 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_GROUP_ADD_SHARED_VEHICLE :Vsa izmenljiva vozila STR_GROUP_REMOVE_ALL_VEHICLES :Odstrani vsa vozila @@ -3522,6 +3724,11 @@ 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 + STR_QUERY_RENAME_TRAIN_CAPTION :{WHITE}Poimenuj vlak STR_QUERY_RENAME_ROAD_VEHICLE_CAPTION :{WHITE}Poimenuj cestno vozilo STR_QUERY_RENAME_SHIP_CAPTION :{WHITE}Poimenuj ladjo @@ -3554,7 +3761,9 @@ STR_VEHICLE_DETAILS_TRAIN_ARTICULATED_RV_CAPACITY :{BLACK}Zmogljiv STR_REFIT_CAPTION :{WHITE}{VEHICLE} (Preuredi) STR_REFIT_TITLE :{GOLD}Izberi tip tovora: STR_REFIT_NEW_CAPACITY_COST_OF_REFIT :{BLACK}Nova zmogljivost: {GOLD}{CARGO_LONG}{}{BLACK}Cena preureditve: {RED}{CURRENCY_LONG} +STR_REFIT_NEW_CAPACITY_INCOME_FROM_REFIT :{BLACK}Nova zmogljivost: {GOLD}{CARGO_LONG}{}{BLACK}Prihodek iz preureditve: {GREEN}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_COST_OF_AIRCRAFT_REFIT :{BLACK}Nova zmogljivost: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Cena preureditve: {RED}{CURRENCY_LONG} +STR_REFIT_NEW_CAPACITY_INCOME_FROM_AIRCRAFT_REFIT :{BLACK}Nova zmoljivost: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Prihodek iz preureditve: {GREEN}{CURRENCY_LONG} STR_REFIT_SELECT_VEHICLES_TOOLTIP :{BLACK}Izberi vozila za preureditev. Povleci z miško, da izbereš več vozil. Klik na prazen prostor bo izbral celotno vozilo. Ctrl+Klik bo izbral vozilo in tista, ki mu sledijo STR_REFIT_TRAIN_LIST_TOOLTIP :{BLACK}Izberi nov tip tovora za prevoz z vlakom @@ -3755,7 +3964,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 kot začetno točko tega urnika +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 @@ -3869,6 +4078,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 @@ -3881,6 +4092,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}Cena: {CURRENCY_LONG} @@ -3889,6 +4102,10 @@ STR_INCOME_FLOAT_INCOME_SMALL :{TINY_FONT}{GRE STR_INCOME_FLOAT_INCOME :{GREEN}Prihodki: {CURRENCY_LONG} STR_FEEDER_TINY :{TINY_FONT}{YELLOW}Prenos: {CURRENCY_LONG} STR_FEEDER :{YELLOW}Prenos: {CURRENCY_LONG} +STR_FEEDER_INCOME_TINY :{TINY_FONT}{YELLOW}Pretovori: {CURRENCY_LONG}{WHITE} / {GREEN}Prihodek: {CURRENCY_LONG} +STR_FEEDER_INCOME :{YELLOW}Pretovori: {CURRENCY_LONG}{WHITE} / {GREEN}Prihodek: {CURRENCY_LONG} +STR_FEEDER_COST_TINY :{TINY_FONT}{YELLOW}Pretovori: {CURRENCY_LONG}{WHITE} / {RED}Cena: {CURRENCY_LONG} +STR_FEEDER_COST :{YELLOW}Pretovori: {CURRENCY_LONG}{WHITE} / {RED}Cena: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_COST :{WHITE}Ocenjeni stroški: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Predvideni prihodki: {CURRENCY_LONG} @@ -3929,6 +4146,8 @@ STR_WARNING_HEIGHTMAP_SCALE_MESSAGE :{YELLOW}Preveli STR_WARNING_FALLBACK_SOUNDSET :{WHITE}Samo rezerven zvočni komplet je bil najden. Če želiš zvok, namesti zvočni komplet preko sistema prenosov # Screenshot related messages +STR_WARNING_SCREENSHOT_SIZE_CAPTION :{WHITE}Ogromna slika zaslona +STR_WARNING_SCREENSHOT_SIZE_MESSAGE :{YELLOW}Slika zaslona bo imela ločljivost {COMMA} x {COMMA} slikovnih točk. Ustvarjanje slike zaslona lahko traja nekaj časa. Ali želite nadaljevati? STR_MESSAGE_SCREENSHOT_SUCCESSFULLY :{WHITE}Slika je uspešno zajeta kot {} '{STRING}' STR_ERROR_SCREENSHOT_FAILED :{WHITE}Zajemanje slike ni uspelo!!! @@ -4238,6 +4457,11 @@ 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... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Ni mogoče spremeniti smeri vlaka... @@ -4280,6 +4504,16 @@ STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}Ni mogo # Translatable comment for OpenTTD's desktop shortcut STR_DESKTOP_SHORTCUT_COMMENT :Simulacija, temelječa na Transport Tycoonu Deluxe +# Translatable descriptions in media/baseset/*.ob* files +STR_BASEGRAPHICS_DOS_DESCRIPTION :Originalna grafika Transport Tycoon Deluxe za različico DOS. +STR_BASEGRAPHICS_DOS_DE_DESCRIPTION :Originalna grafika Transport Tycoon Deluxe za nemško različico DOS. +STR_BASEGRAPHICS_WIN_DESCRIPTION :Originalna grafika Transport Tycoon Deluxe za različico oken(windows). +STR_BASESOUNDS_DOS_DESCRIPTION :Originalni zvoki Transport Tycoon Deluxe različice DOS. +STR_BASESOUNDS_WIN_DESCRIPTION :Originalni zvoki Transport Tycoon Deluxe različice oken(windows). +STR_BASESOUNDS_NONE_DESCRIPTION :Zvočni paket brez zvoka. +STR_BASEMUSIC_WIN_DESCRIPTION :Originalna glasba Transport Tycoon Deluxe različice oken(windows). +STR_BASEMUSIC_NONE_DESCRIPTION :Glasbeni paket z vključeno glasbo. + ##id 0x2000 # Town building names STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1 :Visok pisarniški blok @@ -4447,7 +4681,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) @@ -4656,7 +4890,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 @@ -4771,8 +5005,9 @@ 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_SPACE_STRING :{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} @@ -4796,9 +5031,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 22bb19b1f..b1c548f92 100644 --- a/src/lang/spanish.txt +++ b/src/lang/spanish.txt @@ -200,21 +200,28 @@ STR_UNITS_POWER_IMPERIAL :{COMMA}cv STR_UNITS_POWER_METRIC :{COMMA}cv 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} tonelada{P "" s} STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} tonelada{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} galon{P "" es} STR_UNITS_VOLUME_LONG_METRIC :{COMMA} litro{P "" s} 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} pies +STR_UNITS_HEIGHT_METRIC :{COMMA} m STR_UNITS_HEIGHT_SI :{COMMA} m # Common window strings @@ -222,6 +229,7 @@ STR_LIST_FILTER_TITLE :{BLACK}Patrón STR_LIST_FILTER_OSKTITLE :{BLACK}Escriba un patrón de filtrado STR_LIST_FILTER_TOOLTIP :{BLACK}Introduzca una palabra clave para filtrar la lista +STR_TOOLTIP_GROUP_ORDER :{BLACK}Seleccionar orden de agrupamiento STR_TOOLTIP_SORT_ORDER :{BLACK}Seleccione ordenación (descendiente/ascendiente) STR_TOOLTIP_SORT_CRITERIA :{BLACK}Seleccione criterio de orden STR_TOOLTIP_FILTER_CRITERIA :{BLACK}Seleccione criterio de filtrado @@ -233,7 +241,8 @@ STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Cerrar v STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Título de la ventana - arrastre para moverla STR_TOOLTIP_SHADE :{BLACK}Ocultar ventana - mostrar solo título de la ventana STR_TOOLTIP_DEBUG :{BLACK}Mostrar información de depuración NewGRF -STR_TOOLTIP_STICKY :{BLACK}Esta ventana no se cerrará tras usar el comando 'Cerrar Todas las Ventanas' +STR_TOOLTIP_DEFSIZE :{BLACK}Redimensionar ventana al tamaño por defecto. Ctrl+Click permite almacenar el tamaño actual como tamaño por defecto +STR_TOOLTIP_STICKY :{BLACK}Esta ventana no se cerrará tras usar el comando 'Cerrar Todas las Ventanas'. Ctrl+Click permite guardar el estado como estado por defecto STR_TOOLTIP_RESIZE :{BLACK}Pulse y arrastre para redimensionar la ventana STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Cambiar entre tamaño de ventana grande/pequeño STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Barra de desplazamiento - mueve la lista arriba/abajo @@ -257,7 +266,6 @@ STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}Área: { # These are used in buttons -STR_SORT_BY_CAPTION_POPULATION :{BLACK}Población STR_SORT_BY_CAPTION_NAME :{BLACK}Nombre STR_SORT_BY_CAPTION_DATE :{BLACK}Fecha # These are used in dropdowns @@ -278,18 +286,21 @@ STR_SORT_BY_LENGTH :Longitud STR_SORT_BY_LIFE_TIME :Tiempo de vida restante STR_SORT_BY_TIMETABLE_DELAY :Retraso en horarios STR_SORT_BY_FACILITY :Tipo de estación -STR_SORT_BY_WAITING :Carga en espera -STR_SORT_BY_RATING_MAX :Clasificación de carga más alta -STR_SORT_BY_RATING_MIN :Clasificación de carga más baja +STR_SORT_BY_WAITING_TOTAL :Carga en espera total +STR_SORT_BY_WAITING_AVAILABLE :Carga en espera disponible +STR_SORT_BY_RATING_MAX :Calificación más alta de carga +STR_SORT_BY_RATING_MIN :Calificación más baja de carga STR_SORT_BY_ENGINE_ID :ID Motor (ordenación clásica) 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 +STR_SORT_BY_RATING :Calificación # Tooltips for the main toolbar STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Pausar juego @@ -302,8 +313,10 @@ STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Mostrar 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 STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Mostrar información general de la empresa +STR_TOOLBAR_TOOLTIP_DISPLAY_STORY_BOOK :{BLACK}Mostrar historial +STR_TOOLBAR_TOOLTIP_DISPLAY_GOALS_LIST :{BLACK}Mostrar lista de metas STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Mostrar gráficos -STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Mostrar tabla de ranking de empresas +STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Mostrar tabla de clasificación de empresas STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Aportar fondos para construir una nueva industria STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}Mostrar lista de trenes de la empresa. Ctrl+Click hace que no aparezca la lista de grupos STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}Mostrar lista de vehículos de carretera de la empresa. Ctrl+Click hace que no aparezca la lista de grupos @@ -372,19 +385,19 @@ STR_FILE_MENU_SEPARATOR : STR_FILE_MENU_EXIT :Salir ############ range ends here -############ range for map menu starts +# map menu STR_MAP_MENU_MAP_OF_WORLD :Mapa del mundo STR_MAP_MENU_EXTRA_VIEW_PORT :Punto de vista extra +STR_MAP_MENU_LINGRAPH_LEGEND :Leyenda de Movimientos de Carga STR_MAP_MENU_SIGN_LIST :Lista de carteles -############ range for town menu starts, yet the town directory is shown in the map menu in the scenario editor + +############ range for town menu starts STR_TOWN_MENU_TOWN_DIRECTORY :Directorio de pueblos -############ end of the 'Display map' dropdown STR_TOWN_MENU_FOUND_TOWN :Fundar pueblo -############ end of the 'Town' dropdown +############ range ends here ############ range for subsidies menu starts STR_SUBSIDIES_MENU_SUBSIDIES :Subvenciones -STR_SUBSIDIES_MENU_GOAL :Metas actuales ############ range ends here ############ range for graph menu starts @@ -397,7 +410,7 @@ STR_GRAPH_MENU_CARGO_PAYMENT_RATES :Tarifas de pago ############ range ends here ############ range for company league menu starts -STR_GRAPH_MENU_COMPANY_LEAGUE_TABLE :Tabla de ranking de empresas +STR_GRAPH_MENU_COMPANY_LEAGUE_TABLE :Tabla de clasificación de empresas STR_GRAPH_MENU_DETAILED_PERFORMANCE_RATING :Detalles del rendimiento STR_GRAPH_MENU_HIGHSCORE :Tabla de puntuaciones ############ range ends here @@ -458,7 +471,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º @@ -474,22 +487,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 +582,7 @@ STR_GRAPH_KEY_CAPTION :{WHITE}Leyenda STR_GRAPH_KEY_COMPANY_SELECTION_TOOLTIP :{BLACK}Click aquí para intercambiar la entrada de la empresa # Company league window -STR_COMPANY_LEAGUE_TABLE_CAPTION :{WHITE}Ranking de Empresas +STR_COMPANY_LEAGUE_TABLE_CAPTION :{WHITE}Tabla de Clasificación de Empresas STR_COMPANY_LEAGUE_COMPANY_NAME :{ORANGE}{COMPANY} {BLACK}{COMPANY_NUM} '{STRING}' STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ENGINEER :Ingeniero STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRAFFIC_MANAGER :Gerente de tráfico @@ -651,7 +682,7 @@ STR_HIGHSCORE_PERFORMANCE_TITLE_CAPITALIST :Capitalista STR_HIGHSCORE_PERFORMANCE_TITLE_MAGNATE :Magnate STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL :Potentado STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY :Magnate del siglo -STR_HIGHSCORE_NAME :{BIG_FONT}{PRESIDENT_NAME}, {COMPANY} +STR_HIGHSCORE_NAME :{PRESIDENT_NAME}, {COMPANY} STR_HIGHSCORE_STATS :{BIG_FONT}'{STRING}' ({COMMA}) STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{BLACK}¡{COMPANY} logra el estado '{STRING}'! STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{WHITE}¡{PRESIDENT_NAME} de {COMPANY} logra el estado '{STRING}'! @@ -662,17 +693,20 @@ STR_SMALLMAP_CAPTION :{WHITE}Mapa - { STR_SMALLMAP_TYPE_CONTOURS :Contornos STR_SMALLMAP_TYPE_VEHICLES :Vehículos STR_SMALLMAP_TYPE_INDUSTRIES :Industrias +STR_SMALLMAP_TYPE_ROUTEMAP :Flujo de Carga STR_SMALLMAP_TYPE_ROUTES :Rutas STR_SMALLMAP_TYPE_VEGETATION :Vegetación STR_SMALLMAP_TYPE_OWNERS :Propietarios STR_SMALLMAP_TOOLTIP_SHOW_LAND_CONTOURS_ON_MAP :{BLACK}Mostrar contorno del terreno en el mapa STR_SMALLMAP_TOOLTIP_SHOW_VEHICLES_ON_MAP :{BLACK}Mostrar vehículos en el mapa STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRIES_ON_MAP :{BLACK}Mostrar industrias en el mapa +STR_SMALLMAP_TOOLTIP_SHOW_LINK_STATS_ON_MAP :{BLACK}Mostrar flujo de carga en el mapa STR_SMALLMAP_TOOLTIP_SHOW_TRANSPORT_ROUTES_ON :{BLACK}Mostrar rutas de transporte en el mapa STR_SMALLMAP_TOOLTIP_SHOW_VEGETATION_ON_MAP :{BLACK}Mostrar vegetación en el mapa STR_SMALLMAP_TOOLTIP_SHOW_LAND_OWNERS_ON_MAP :{BLACK}Mostrar propietarios de terrenos en el mapa STR_SMALLMAP_TOOLTIP_INDUSTRY_SELECTION :{BLACK}Click en un tipo de industria para mostrarlo/ocultarlo. Ctrl+Click oculta todos los tipos excepto el seleccionado. Ctrl+Click de nuevo en el mismo tipo muestra todos los tipos de industrias STR_SMALLMAP_TOOLTIP_COMPANY_SELECTION :{BLACK}Click en una empresa para mostrar/ocultar sus propiedades. Ctrl+Click oculta todas las empresas excepto la seleccionada. Ctrl+Click de nuevo en la misma empresa muestra todas las empresas +STR_SMALLMAP_TOOLTIP_CARGO_SELECTION :{BLACK}Un Click en una carga permite activar o desactivar su visualización. Ctrl+Click deshabilita todas las cargas excepto la seleccionada. Un segundo Ctrl+Click habilita la visualización de todos los tipos de carga STR_SMALLMAP_LEGENDA_ROADS :{TINY_FONT}{BLACK}Carreteras STR_SMALLMAP_LEGENDA_RAILROADS :{TINY_FONT}{BLACK}Ferrocarriles @@ -706,6 +740,7 @@ STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLA STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Mostrar/ocultar nombres de pueblos 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} STR_SMALLMAP_COMPANY :{TINY_FONT}{COMPANY} STR_SMALLMAP_TOWN :{TINY_FONT}{WHITE}{TOWN} STR_SMALLMAP_DISABLE_ALL :{BLACK}Desactivar todo @@ -716,6 +751,8 @@ STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES :{BLACK}Mostrar STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}Mostrar / ocultar mapa de alturas STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES :{BLACK}No mostrar propiedades de empresas en el mapa STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}Mostrar todas las propiedades de empresas en el mapa +STR_SMALLMAP_TOOLTIP_DISABLE_ALL_CARGOS :{BLACK}No muestra ninguna carga en el mapa +STR_SMALLMAP_TOOLTIP_ENABLE_ALL_CARGOS :{BLACK}Muestra todas las cargas en el mapa # Status bar messages STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Mostrar último mensaje/noticia @@ -792,13 +829,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 @@ -877,15 +913,12 @@ STR_GAME_OPTIONS_CURRENCY_LTL :Litas Lituana ( STR_GAME_OPTIONS_CURRENCY_KRW :Won Surcoreano (KRW) STR_GAME_OPTIONS_CURRENCY_ZAR :Rand sudafricano (ZAR) STR_GAME_OPTIONS_CURRENCY_CUSTOM :Personalizada... +STR_GAME_OPTIONS_CURRENCY_GEL :Lari Georgiano (GEL) +STR_GAME_OPTIONS_CURRENCY_IRR :Rial Iraní (IRR) ############ end of currency region -STR_GAME_OPTIONS_MEASURING_UNITS_FRAME :{BLACK}Unidades de medida -STR_GAME_OPTIONS_MEASURING_UNITS_DROPDOWN_TOOLTIP :{BLACK}Unidades de medida seleccionadas ############ start of measuring units region -STR_GAME_OPTIONS_MEASURING_UNITS_IMPERIAL :Imperiales -STR_GAME_OPTIONS_MEASURING_UNITS_METRIC :Métricas -STR_GAME_OPTIONS_MEASURING_UNITS_SI :SI ############ end of measuring units region STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Vehículos de carretera @@ -923,11 +956,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 @@ -939,9 +974,6 @@ 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_BASE_GRF :{BLACK}Conjunto de gráficos base STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Selecciona el conjunto de gráficos base a usar STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} fichero{P "" s} perdido{P "" s} o corrupto{P "" s} @@ -956,6 +988,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 @@ -1055,7 +1088,8 @@ 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 @@ -1064,12 +1098,16 @@ STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :Opciones con un STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :Opciones con un valor diferente a las opciones de partida nueva STR_CONFIG_SETTING_TYPE_DROPDOWN_HELPTEXT :{BLACK}Restringe la lista a ciertos tipos de opciones -STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :Todas las opciones +STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :Todos los tipos de opciones STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :Opciones de cliente (no se almacena en partidas guardadas, afecta a todas las partidas) STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Opciones de juego (se almacena en las partidas guardadas, afecta solamente a partidas nuevas) 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í @@ -1102,17 +1140,15 @@ 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 clasificación local en los pueblos +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_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_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 @@ -1128,22 +1164,16 @@ 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_TUNNEL_LENGTH :Longitud máxima de túneles: {STRING} @@ -1171,8 +1201,6 @@ STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :Permite selecci STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :principio 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_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 @@ -1203,10 +1231,6 @@ STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Permite constru 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_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 @@ -1219,7 +1243,7 @@ STR_CONFIG_SETTING_WARN_LOST_VEHICLE_HELPTEXT :Muestra mensaje STR_CONFIG_SETTING_ORDER_REVIEW :Revisar órdenes de vehículos: {STRING} STR_CONFIG_SETTING_ORDER_REVIEW_HELPTEXT :Cuando se activa, se comprueban periódicamente las órdenes de los vehículos, y los problemas que se encuentren se reportan con un mensaje STR_CONFIG_SETTING_ORDER_REVIEW_OFF :No -STR_CONFIG_SETTING_ORDER_REVIEW_EXDEPOT :Si, excluyendo los detenidos +STR_CONFIG_SETTING_ORDER_REVIEW_EXDEPOT :Sí, excluyendo los detenidos STR_CONFIG_SETTING_ORDER_REVIEW_ON :Todos STR_CONFIG_SETTING_WARN_INCOME_LESS :Avisar si las ganancias de un vehículo son negativas: {STRING} STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :Si se activa, se muestra un mensaje cuando un vehículo no haya obtenido ningún beneficio durante un año @@ -1227,7 +1251,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 @@ -1245,27 +1269,41 @@ STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :Muestra el núm 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 pueblos. 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 pueblos +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 @@ -1276,7 +1314,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 @@ -1286,7 +1324,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 @@ -1316,17 +1354,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} @@ -1335,7 +1371,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 @@ -1350,7 +1386,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 @@ -1362,9 +1398,9 @@ STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :Reproducir soni STR_CONFIG_SETTING_SOUND_NEWS :Noticias: {STRING} STR_CONFIG_SETTING_SOUND_NEWS_HELPTEXT :Reproducir sonido al mostrar noticias STR_CONFIG_SETTING_SOUND_NEW_YEAR :Final del año: {STRING} -STR_CONFIG_SETTING_SOUND_NEW_YEAR_HELPTEXT :Reproducir efecto de sonido al mostrar el resumen anual del rendimiento de la compañía al terminar el año +STR_CONFIG_SETTING_SOUND_NEW_YEAR_HELPTEXT :Reproducir sonido al mostrar el resumen anual del rendimiento de la compañía al terminar el año STR_CONFIG_SETTING_SOUND_CONFIRM :Construcción: {STRING} -STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT :Reproducir un efecto de sonido al construir exitosamente o realizar otras acciones +STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT :Reproducir sonido al construir con éxito o realizar otras acciones STR_CONFIG_SETTING_SOUND_CLICK :Click de botones: {STRING} STR_CONFIG_SETTING_SOUND_CLICK_HELPTEXT :Pitido al pulsar botones STR_CONFIG_SETTING_SOUND_DISASTER :Desastres/accidentes: {STRING} @@ -1372,13 +1408,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 efectos de sonido ambientales de terreno, industrias y pueblos +STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :Reproducir sonidos ambientales de terreno, industrias y pueblos 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 @@ -1395,7 +1431,7 @@ STR_CONFIG_SETTING_AI_BUILDS_SHIPS :Desactivar barc STR_CONFIG_SETTING_AI_BUILDS_SHIPS_HELPTEXT :Activar esta opción deshabilita la construcción de barcos para IAs 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 IAs 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 @@ -1465,7 +1501,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} @@ -1542,34 +1578,96 @@ 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 pueblos 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_GUI :{ORANGE}Interfaz -STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}Construcción +STR_CONFIG_SETTING_LINKGRAPH_INTERVAL :Actualizar el grafo de distribución cada {STRING} 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_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 +STR_CONFIG_SETTING_DISTRIBUTION_SYMMETRIC :simétrico +STR_CONFIG_SETTING_DISTRIBUTION_PAX :Modo de distribución para pasajeros: {STRING} +STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :En una distribución simétrica, se envía la misma cantidad de pasajeros 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 pasajeros en ambas direcciones. Manual significa que no se realiza una distribución automática para los pasajeros +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_DEFAULT :Modo de distribución para otras clases de carga: {STRING} +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} +STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT :Si se fija a un valor superior a 0, la distancia entre la estación origen A de cierta carga y un posible destino B afectará a la cantidad de carga que se enviará de A a B. Cuanto más lejos esté B de A, menos carga se enviará. Cuanto mayor sea el valor de esta opción, menos carga se enviará a estaciones distantes en favor de estaciones cercanas +STR_CONFIG_SETTING_DEMAND_SIZE :Cantidad de carga a devolver en modo simétrico: {STRING} +STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :Fijar esta opción a menos de 100% hace que la distribución simétrica de carga se comporte de una forma más asimétrica. Se enviará menos carga de vuelta a la fuerza si una cantidad determinada es enviada a una estación. Si se fija a 0% la distribución simétrica se comporta como una distribución asimétrica +STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Saturación de caminos cortos antes de usar aquellos de mayor capacidad: {STRING} +STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Frecuentemente hay múltiples caminos posibles entre dos estaciones determinadas. En primer lugar se intentará saturar el camino más corto, para posteriormente saturar el segundo más corto y así sucesivamente. La saturación está determinada por una estimación de capacidad y uso planificado. Una vez que se hayan saturado todos los caminos, si todavía hay demanda, se sobrecargarán los caminos empezando por aquellos de mayor capacidad. La mayor parte de las veces, el algoritmo no estimará la capacidad de forma precisa. Esta opción permite especificar el porcentaje de saturación que debe de tener una línea en la primera parte del algoritmo antes de pasar a la siguiente línea. Fijarlo a menos de 100% permite evitar estaciones sobrecargadas en el caso de que se sobreestimen las capacidades + +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Unidades de velocidad: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_HELPTEXT :Cada vez que se muestra una velocidad en la interfaz de usuario, se emplean las unidades seleccionadas +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 potencia de vehículos: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_HELPTEXT :Cada vez que se muestra la potencia de un vehículo en la interfaz de usuario, se emplean las unidades seleccionadas +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_IMPERIAL :Imperial (cv) +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_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_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_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_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_LOCALISATION :{ORANGE}Localización +STR_CONFIG_SETTING_GRAPHICS :{ORANGE}Gráficos +STR_CONFIG_SETTING_SOUND :{ORANGE}Efectos de sonido +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_STATIONS :{ORANGE}Estaciones -STR_CONFIG_SETTING_ECONOMY :{ORANGE}Economía +STR_CONFIG_SETTING_VEHICLES_PHYSICS :{ORANGE}Leyes físicas +STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Encaminamiento +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}Pueblos +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_DISPLAY_OPTIONS :{ORANGE}Opciones de visualización -STR_CONFIG_SETTING_INTERACTION :{ORANGE}Interacción -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_VEHICLES_ROUTING :{ORANGE}Rutas -STR_CONFIG_SETTING_VEHICLES_TRAINS :{ORANGE}Trenes -STR_CONFIG_SETTING_ECONOMY_TOWNS :{ORANGE}Pueblos -STR_CONFIG_SETTING_ECONOMY_INDUSTRIES :{ORANGE}Industrias STR_CONFIG_SETTING_PATHFINDER_OPF :Original STR_CONFIG_SETTING_PATHFINDER_NPF :NPF @@ -1603,6 +1701,8 @@ STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_ALGORITHM :{WHITE}... el f STR_CONFIG_ERROR_INVALID_BASE_GRAPHICS_NOT_FOUND :{WHITE}... ignorando conjunto de gráficos base '{STRING}': no encontrado STR_CONFIG_ERROR_INVALID_BASE_SOUNDS_NOT_FOUND :{WHITE}... ignorando conjunto de sonidos base '{STRING}': no encontrado STR_CONFIG_ERROR_INVALID_BASE_MUSIC_NOT_FOUND :{WHITE}... ignorando conjunto de música base '{STRING}': no encontrado +STR_CONFIG_ERROR_OUT_OF_MEMORY :{WHITE}No hay memoria suficiente +STR_CONFIG_ERROR_SPRITECACHE_TOO_BIG :{WHITE}Hubo un fallo al reservar {BYTES} de caché de sprites. La caché de sprites ha sido reducida a {BYTES}. Esto reducirá el rendimiento de OpenTTD. Para reducir los requisitos de memoria es posible deshabilitar los gráficos 32bpp o los niveles de zoom adicionales # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} @@ -1642,12 +1742,12 @@ STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Comproba 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 STR_QUIT_ARE_YOU_SURE_YOU_WANT_TO_EXIT_OPENTTD :{YELLOW}¿Está seguro de abandonar OpenTTD y regresar a {STRING}? -STR_QUIT_YES :{BLACK}Si +STR_QUIT_YES :{BLACK}Sí STR_QUIT_NO :{BLACK}No # Supported OSes @@ -1670,7 +1770,7 @@ STR_ABANDON_SCENARIO_QUERY :{YELLOW}¿Está # Cheat window STR_CHEATS :{WHITE}Trucos STR_CHEATS_TOOLTIP :{BLACK}Las casillas indican si ha usado este truco antes -STR_CHEATS_WARNING :{BLACK}¡Atención! Usted está a punto de traicionar a sus competidores. Tenga presente que tal deshonra será recordada para toda la eternidad +STR_CHEATS_WARNING :{BLACK}¡Atención! Usted está a punto de traicionar a sus competidores. Tenga presente que tal deshonra será recordada por la eternidad STR_CHEAT_MONEY :{LTBLUE}Incrementar dinero en {CURRENCY_LONG} STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Jugando como la empresa: {ORANGE}{COMMA} STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Bulldózer mágico (elimina industrias, objetos inamovibles): {ORANGE}{STRING} @@ -1724,6 +1824,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 @@ -1779,10 +1880,10 @@ STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}Cambiar # Network server list STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}Multijugador -STR_NETWORK_SERVER_LIST_CONNECTION :{BLACK}Conexión: -STR_NETWORK_SERVER_LIST_CONNECTION_TOOLTIP :{BLACK}Seleccione entre un juego en Internet o en una Red de Área Local -STR_NETWORK_SERVER_LIST_LAN :LAN -STR_NETWORK_SERVER_LIST_INTERNET :Internet +STR_NETWORK_SERVER_LIST_ADVERTISED :{BLACK}Público +STR_NETWORK_SERVER_LIST_ADVERTISED_TOOLTIP :{BLACK}Permite escoger entre una partida pública (internet) y una partida privada (LAN) +STR_NETWORK_SERVER_LIST_ADVERTISED_NO :No +STR_NETWORK_SERVER_LIST_ADVERTISED_YES :Sí STR_NETWORK_SERVER_LIST_PLAYER_NAME :{BLACK}Nombre del jugador: STR_NETWORK_SERVER_LIST_ENTER_NAME_TOOLTIP :{BLACK}Este es el nombre con el que otros jugadores le identificarán @@ -1841,16 +1942,16 @@ STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP :{BLACK}La parti STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}Establecer contraseña STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Protege tu juego con una contraseña si no quieres que otras personas se unan a él -STR_NETWORK_START_SERVER_LAN_INTERNET :LAN / Internet -STR_NETWORK_START_SERVER_INTERNET_ADVERTISE :Internet (anuncio) +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 @@ -1963,6 +2064,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 @@ -2081,6 +2183,10 @@ STR_CONTENT_SELECT_UPDATES_CAPTION :{BLACK}Sel. act STR_CONTENT_SELECT_UPDATES_CAPTION_TOOLTIP :{BLACK}Marca para descargar todo el contenido existente que ha sido actualizado STR_CONTENT_UNSELECT_ALL_CAPTION :{BLACK}Desmarcar todas STR_CONTENT_UNSELECT_ALL_CAPTION_TOOLTIP :{BLACK}Marca todo el contenido para no ser descargado +STR_CONTENT_SEARCH_EXTERNAL :{BLACK}Buscar en páginas externas +STR_CONTENT_SEARCH_EXTERNAL_TOOLTIP :{BLACK}Buscar contenido no disponible en el servicio de contenido de OpenTTD en páginas externas no asociadas con OpenTTD +STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER_CAPTION :{WHITE}¡Estás abandonando OpenTTD! +STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER :{WHITE}Los términos y condiciones para descargar contenido de páginas externas varían.{}Será necesario referirse a dichas páginas par obtener instrucciones de cómo instalar su contenido en OpenTTD.{}¿Desea continuar? STR_CONTENT_FILTER_TITLE :{BLACK}Etiqueta/nombre del filtro STR_CONTENT_OPEN_URL :{BLACK}Visitar web STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}Visitar la página web de este contenido @@ -2103,7 +2209,7 @@ STR_CONTENT_DETAIL_FILESIZE :{SILVER}Tamaño STR_CONTENT_DETAIL_SELECTED_BECAUSE_OF :{SILVER}Seleccionado debido a: {WHITE}{STRING} STR_CONTENT_DETAIL_DEPENDENCIES :{SILVER}Dependencias: {WHITE}{STRING} STR_CONTENT_DETAIL_TAGS :{SILVER}Etiquetas: {WHITE}{STRING} -STR_CONTENT_NO_ZLIB :{WHITE}OpenTTD está compilado sin soporte "zlib"... +STR_CONTENT_NO_ZLIB :{WHITE}OpenTTD ha sido compilado sin soporte "zlib"... STR_CONTENT_NO_ZLIB_SUB :{WHITE}... ¡No es posible descargar contenido! # Order of these is important! @@ -2150,6 +2256,17 @@ STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}Ajustar STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Ajustar transparencia para los indicadores de carga. Ctrl+Click para bloquear STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}Poner objetos invisibles en vez de transparentes +# Linkgraph legend window +STR_LINKGRAPH_LEGEND_CAPTION :{BLACK}Leyenda de Movimientos de Carga +STR_LINKGRAPH_LEGEND_ALL :{BLACK}Todas +STR_LINKGRAPH_LEGEND_NONE :{BLACK}Ninguna +STR_LINKGRAPH_LEGEND_SELECT_COMPANIES :{BLACK}Seleccione las compañías a ser mostradas + +# Linkgraph legend window and linkgraph legend in smallmap +STR_LINKGRAPH_LEGEND_UNUSED :{TINY_FONT}{BLACK}sin uso +STR_LINKGRAPH_LEGEND_SATURATED :{TINY_FONT}{BLACK}saturado +STR_LINKGRAPH_LEGEND_OVERLOADED :{TINY_FONT}{BLACK}sobrecargado + # Base for station construction window(s) STR_STATION_BUILD_COVERAGE_AREA_TITLE :{BLACK}Mostrar área de recogida STR_STATION_BUILD_COVERAGE_OFF :{BLACK}Apagado @@ -2350,7 +2467,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 @@ -2452,6 +2569,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 @@ -2548,7 +2666,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-2012 El equipo OpenTTD +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2014 El equipo OpenTTD # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Guardar Juego @@ -2567,6 +2685,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} @@ -2577,6 +2696,7 @@ 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 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_DATE :{BLACK}Fecha: @@ -2584,10 +2704,6 @@ STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}No. de i 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 @@ -2614,7 +2730,6 @@ 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_START_DATE_QUERY_CAPT :{WHITE}Cambiar año de inicio @@ -2669,7 +2784,9 @@ 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_FILE_TOOLTIP :{BLACK}Una lista de los ficheros NewGRF instalados. +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 STR_NEWGRF_SETTINGS_SHOW_PARAMETERS :{BLACK}Mostrar parámetros @@ -2693,6 +2810,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 @@ -2750,7 +2877,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}) @@ -2763,6 +2890,7 @@ STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}Se van STR_NEWGRF_DUPLICATE_GRFID :{WHITE}No se puede añadir: GRF ID duplicado STR_NEWGRF_COMPATIBLE_LOADED :{ORANGE}Fichero no encontrado (GRF compatible cargado) +STR_NEWGRF_TOO_MANY_NEWGRFS :{WHITE}No se puede añadir fichero: Límite de ficheros NewGRF alcanzado STR_NEWGRF_COMPATIBLE_LOAD_WARNING :{WHITE}GRF(s) compatibles cargados para ficheros que faltan STR_NEWGRF_DISABLED_WARNING :{WHITE}Fichero(s) GRF no encontrados han sido desactivados @@ -2779,6 +2907,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 @@ -2793,6 +2922,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}Comprobando NewGRFs STR_NEWGRF_SCAN_MESSAGE :{BLACK}Comprobando NewGRFs. Dependiendo de la cantidad ésto puede llevar un tiempo... @@ -2848,7 +2980,7 @@ STR_TOWN_VIEW_RENAME_TOWN_BUTTON :Renombrar puebl # Town local authority window STR_LOCAL_AUTHORITY_CAPTION :{WHITE}{TOWN} autoridad local -STR_LOCAL_AUTHORITY_COMPANY_RATINGS :{BLACK}Ranking de empresas de transporte: +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 @@ -2871,13 +3003,17 @@ STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_ROAD_RECONSTRUCTION :{YELLOW}Pagar l 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_BRIBE :{YELLOW}Sobornar a las autoridades locales para aumentar su ranking, con el riesgo de una severa penalización si es descubierto.{}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 -STR_GOALS_CAPTION :{WHITE}Metas +STR_GOALS_CAPTION :{WHITE}Metas de {COMPANY} +STR_GOALS_SPECTATOR_CAPTION :{WHITE}Metas Globales STR_GOALS_GLOBAL_TITLE :{BLACK}Metas globales: STR_GOALS_TEXT :{ORANGE}{STRING} STR_GOALS_NONE :{ORANGE}- Ninguna - +STR_GOALS_SPECTATOR_NONE :{ORANGE}- No aplicable - +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 @@ -2891,7 +3027,7 @@ STR_GOAL_QUESTION_CAPTION_ERROR :Error STR_GOAL_QUESTION_BUTTON_CANCEL :Cancelar STR_GOAL_QUESTION_BUTTON_OK :Ok STR_GOAL_QUESTION_BUTTON_NO :No -STR_GOAL_QUESTION_BUTTON_YES :Si +STR_GOAL_QUESTION_BUTTON_YES :Sí STR_GOAL_QUESTION_BUTTON_DECLINE :Rechazar STR_GOAL_QUESTION_BUTTON_ACCEPT :Aceptar STR_GOAL_QUESTION_BUTTON_IGNORE :Ignorar @@ -2916,6 +3052,18 @@ STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}Líneas 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 +# Story book window +STR_STORY_BOOK_CAPTION :{WHITE}Historial de {COMPANY} +STR_STORY_BOOK_SPECTATOR_CAPTION :{WHITE}Historial Global +STR_STORY_BOOK_TITLE :{YELLOW}{STRING} +STR_STORY_BOOK_GENERIC_PAGE_ITEM :Página {NUM} +STR_STORY_BOOK_SEL_PAGE_TOOLTIP :{BLACK}Permite saltar a una página específica al seleccionarla en esta lista desplegable +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 STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}Mantén pulsado Ctrl para seleccionar más de un elemento @@ -2929,9 +3077,9 @@ 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) STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Acepta STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Mostrar lista de carga aceptada @@ -2940,10 +3088,33 @@ STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}Acepta: 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_STATION_VIEW_RATINGS_BUTTON :{BLACK}Ranking +STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Calificación STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Ver calificación de la estación -STR_STATION_VIEW_CARGO_RATINGS_TITLE :{BLACK}Clasificación local de servicios de transporte: -STR_STATION_VIEW_CARGO_RATING :{WHITE}{STRING}: {YELLOW}{STRING} ({COMMA}%) +STR_STATION_VIEW_SUPPLY_RATINGS_TITLE :{BLACK}Suministro mensual y calificación local: +STR_STATION_VIEW_CARGO_SUPPLY_RATING :{WHITE}{STRING}: {YELLOW}{COMMA} / {STRING} ({COMMA}%) + +STR_STATION_VIEW_GROUP :{BLACK}Agrupar por +STR_STATION_VIEW_WAITING_STATION :Estación: Esperando +STR_STATION_VIEW_WAITING_AMOUNT :Cantidad: Esperando +STR_STATION_VIEW_PLANNED_STATION :Estación: Planeada +STR_STATION_VIEW_PLANNED_AMOUNT :Cantidad: Planeada +STR_STATION_VIEW_FROM :{YELLOW}{CARGO_SHORT} desde {STATION} +STR_STATION_VIEW_VIA :{YELLOW}{CARGO_SHORT} vía {STATION} +STR_STATION_VIEW_TO :{YELLOW}{CARGO_SHORT} a {STATION} +STR_STATION_VIEW_FROM_ANY :{RED}{CARGO_SHORT} desde estación desconocida +STR_STATION_VIEW_TO_ANY :{RED}{CARGO_SHORT} a cualquier estación +STR_STATION_VIEW_VIA_ANY :{RED}{CARGO_SHORT} vía cualquier estación +STR_STATION_VIEW_FROM_HERE :{GREEN}{CARGO_SHORT} con salida desde esta estación +STR_STATION_VIEW_VIA_HERE :{GREEN}{CARGO_SHORT} se detendrá en esta estación +STR_STATION_VIEW_TO_HERE :{GREEN}{CARGO_SHORT} a esta estación +STR_STATION_VIEW_NONSTOP :{YELLOW}{CARGO_SHORT} sin paradas + +STR_STATION_VIEW_GROUP_S_V_D :Origen-Vía-Destino +STR_STATION_VIEW_GROUP_S_D_V :Origen-Destino-Vía +STR_STATION_VIEW_GROUP_V_S_D :Vía-Origen-Destino +STR_STATION_VIEW_GROUP_V_D_S :Vía-Destino-Origen +STR_STATION_VIEW_GROUP_D_S_V :Destino-Origen-Vía +STR_STATION_VIEW_GROUP_D_V_S :Destino-Vía-Origen ############ range for rating starts STR_CARGO_RATING_APPALLING :Espantoso @@ -3000,7 +3171,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 @@ -3070,7 +3241,6 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS :{WHITE}Canales STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}Estaciones: STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}Casillas de estación STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}Aeropuertos -STR_COMPANY_INFRASTRUCTURE_VIEW_COST :{WHITE}{1:CURRENCY_LONG}/año ({0:COMMA}) STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL :{WHITE}{CURRENCY_LONG}/año # Industry directory @@ -3087,6 +3257,7 @@ STR_INDUSTRY_VIEW_PRODUCTION_LAST_MONTH_TITLE :{BLACK}Producci STR_INDUSTRY_VIEW_TRANSPORTED :{YELLOW}{CARGO_LONG}{STRING}{BLACK} ({COMMA}% transportado) STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Centrar la vista sobre la industria. Ctrl+Click abre un punto de vista en dicha posición STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Nivel de producción: {YELLOW}{COMMA}% +STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}La industria ha anunciado su cierre inminente! ############ range for requires starts STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Requiere: {YELLOW}{STRING}{STRING} @@ -3149,12 +3320,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 @@ -3450,6 +3624,11 @@ STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Interval 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 +STR_SERVICE_INTERVAL_DROPDOWN_TOOLTIP :{BLACK}Cambiar tipo de intervalo de mantenimiento +STR_VEHICLE_DETAILS_DEFAULT :Por defecto +STR_VEHICLE_DETAILS_DAYS :Dias +STR_VEHICLE_DETAILS_PERCENT :Porcentaje + STR_QUERY_RENAME_TRAIN_CAPTION :{WHITE}Nombrar tren STR_QUERY_RENAME_ROAD_VEHICLE_CAPTION :{WHITE}Nombrar vehículo STR_QUERY_RENAME_SHIP_CAPTION :{WHITE}Nombrar barco @@ -3538,8 +3717,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 @@ -3630,18 +3809,18 @@ 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 @@ -3667,9 +3846,13 @@ 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} @@ -3685,7 +3868,7 @@ STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}Este hor STR_TIMETABLE_STATUS_START_AT :{BLACK}Este horario empezará en {STRING} STR_TIMETABLE_STARTING_DATE :{BLACK}Fecha de inicio -STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Selecciona una fecha como fecha de inicio de este horario +STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Selecciona una fecha como punto de partida de este horario. Ctrl+Click permite fijar el punto de partida de este horario y distribuye todos los vehículos que lo compartan siempre y cuando el horario esté completo STR_TIMETABLE_CHANGE_TIME :{BLACK}Cambiar Horario STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Cambia la cantidad de tiempo que debe tomar una orden marcada @@ -3730,9 +3913,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 @@ -3799,6 +3982,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 @@ -3821,6 +4006,10 @@ STR_INCOME_FLOAT_INCOME_SMALL :{TINY_FONT}{GRE STR_INCOME_FLOAT_INCOME :{GREEN}Ingreso: {CURRENCY_LONG} STR_FEEDER_TINY :{TINY_FONT}{YELLOW}Transferir: {CURRENCY_LONG} STR_FEEDER :{YELLOW}Transferir: {CURRENCY_LONG} +STR_FEEDER_INCOME_TINY :{TINY_FONT}{YELLOW}Transferencia: {CURRENCY_LONG}{WHITE} / {GREEN}Beneficio: {CURRENCY_LONG} +STR_FEEDER_INCOME :{YELLOW}Transferencia: {CURRENCY_LONG}{WHITE} / {GREEN}Beneficio: {CURRENCY_LONG} +STR_FEEDER_COST_TINY :{TINY_FONT}{YELLOW}Transferencia: {CURRENCY_LONG}{WHITE} / {RED}Coste: {CURRENCY_LONG} +STR_FEEDER_COST :{YELLOW}Transferencia: {CURRENCY_LONG}{WHITE} / {RED}Coste: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_COST :{WHITE}Coste estimado: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Ingreso estimado: {CURRENCY_LONG} @@ -4117,6 +4306,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... @@ -4172,6 +4362,11 @@ STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}Imposibl STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... el vehículo está destruido +STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL :{WHITE}Ningún vehículo estará disponible +STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Es necesario modificar la configuración NewGRF +STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}En esta fecha no hay vehículos disponibles +STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Comienza una nueva partida después de {DATE_SHORT} o usa un NewGRF que provea vehículos más antiguos + # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}No se puede pasar la señal en peligro al tren... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}No se puede cambiar la dirección... @@ -4214,6 +4409,16 @@ STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}No se pu # Translatable comment for OpenTTD's desktop shortcut STR_DESKTOP_SHORTCUT_COMMENT :Un juego de simulación basado en Transport Tycoon Deluxe +# Translatable descriptions in media/baseset/*.ob* files +STR_BASEGRAPHICS_DOS_DESCRIPTION :Gráficos originales de Transport Tycoon Deluxe versión DOS. +STR_BASEGRAPHICS_DOS_DE_DESCRIPTION :Gráficos originales de Transport Tycoon Deluxe versión DOS (Alemán). +STR_BASEGRAPHICS_WIN_DESCRIPTION :Gráficos originales de Transport Tycoon Deluxe versión Windows. +STR_BASESOUNDS_DOS_DESCRIPTION :Sonidos originales de Transport Tycoon Deluxe versión DOS. +STR_BASESOUNDS_WIN_DESCRIPTION :Sonidos originales de Transport Tycoon Deluxe versión Windows. +STR_BASESOUNDS_NONE_DESCRIPTION :Un conjunto de sonidos vacío. +STR_BASEMUSIC_WIN_DESCRIPTION :Música original de Transport Tycoon Deluxe versión Windows. +STR_BASEMUSIC_NONE_DESCRIPTION :Un conjunto de música vacío. + ##id 0x2000 # Town building names STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1 :Bloque alto de oficinas @@ -4336,7 +4541,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) @@ -4545,7 +4750,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 @@ -4660,8 +4865,9 @@ 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_SPACE_STRING :{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} @@ -4685,9 +4891,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 766098941..0a3a2422b 100644 --- a/src/lang/swedish.txt +++ b/src/lang/swedish.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 STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} ton 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{P "" s} 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 @@ -221,6 +228,7 @@ STR_LIST_FILTER_TITLE :{BLACK}Sökfilt STR_LIST_FILTER_OSKTITLE :{BLACK}Skriv in sökfilter STR_LIST_FILTER_TOOLTIP :{BLACK}Skriv in ett sökord att filtrera listan efter +STR_TOOLTIP_GROUP_ORDER :{BLACK}Välj order att gruppera på STR_TOOLTIP_SORT_ORDER :{BLACK}Välj sorteringsordning (fallande/stigande) STR_TOOLTIP_SORT_CRITERIA :{BLACK}Välj sortering STR_TOOLTIP_FILTER_CRITERIA :{BLACK}Angre kriterier för filtrering @@ -232,7 +240,8 @@ STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Stäng f STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Fönstertitel - dra för att flytta fönstret STR_TOOLTIP_SHADE :{BLACK}Dölj fönster - Visa bara namnlisten STR_TOOLTIP_DEBUG :{BLACK}Visa NewGRF felsökningsinformation -STR_TOOLTIP_STICKY :{BLACK}Markera att fönstret ska lämnas öppet när 'Stäng alla fönster'-knappen används +STR_TOOLTIP_DEFSIZE :{BLACK}Återställ fönstret till standardstorlek. Ctrl-klicka för att sätta nuvarande storlek som ny standard +STR_TOOLTIP_STICKY :{BLACK}Markera att fönstret ska lämnas öppet när 'Stäng alla fönster'-knappen används. Ctrl+Click för att spara som default STR_TOOLTIP_RESIZE :{BLACK}Klicka och dra för att förstora fönstret STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Växla stor/liten fönsterstorlek STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Rullningslist - rullar listan upp/ned @@ -256,7 +265,6 @@ STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}Yta: {NU # These are used in buttons -STR_SORT_BY_CAPTION_POPULATION :{BLACK}Folkmängd STR_SORT_BY_CAPTION_NAME :{BLACK}Namn STR_SORT_BY_CAPTION_DATE :{BLACK}Datum # These are used in dropdowns @@ -277,7 +285,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 :Värde på väntande last +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) @@ -289,6 +298,8 @@ STR_SORT_BY_RUNNING_COST :Driftskostnad STR_SORT_BY_POWER_VS_RUNNING_COST :Kraft/Driftskostnad STR_SORT_BY_CARGO_CAPACITY :Lastkapacitet STR_SORT_BY_RANGE :Räckvidd +STR_SORT_BY_POPULATION :Folkmängd +STR_SORT_BY_RATING :Värdering # Tooltips for the main toolbar STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Pausa spelet @@ -301,6 +312,8 @@ STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Visa sub STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Visa lista över företagets stationer STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Visa finansinformation för företaget STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Visa allmän företagsinformation +STR_TOOLBAR_TOOLTIP_DISPLAY_STORY_BOOK :{BLACK}Visa berättelsebok +STR_TOOLBAR_TOOLTIP_DISPLAY_GOALS_LIST :{BLACK}Visa lista över mål STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Visa grafer STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Visa topplista över företag STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Bekosta konstruktion av en ny industri eller lista alla industrier @@ -371,19 +384,19 @@ STR_FILE_MENU_SEPARATOR : STR_FILE_MENU_EXIT :Avsluta ############ range ends here -############ range for map menu starts +# map menu STR_MAP_MENU_MAP_OF_WORLD :Världskarta STR_MAP_MENU_EXTRA_VIEW_PORT :Nytt vyfönster +STR_MAP_MENU_LINGRAPH_LEGEND :Legend för Godsflöden STR_MAP_MENU_SIGN_LIST :Skyltlista -############ range for town menu starts, yet the town directory is shown in the map menu in the scenario editor + +############ range for town menu starts STR_TOWN_MENU_TOWN_DIRECTORY :Lista med städer -############ end of the 'Display map' dropdown STR_TOWN_MENU_FOUND_TOWN :Grunda stad -############ end of the 'Town' dropdown +############ range ends here ############ range for subsidies menu starts STR_SUBSIDIES_MENU_SUBSIDIES :Subventioner -STR_SUBSIDIES_MENU_GOAL :Nuvarande mål ############ range ends here ############ range for graph menu starts @@ -398,10 +411,12 @@ STR_GRAPH_MENU_CARGO_PAYMENT_RATES :Fraktförtjäns ############ range for company league menu starts STR_GRAPH_MENU_COMPANY_LEAGUE_TABLE :Tabell över ledande företag STR_GRAPH_MENU_DETAILED_PERFORMANCE_RATING :Detaljerad prestationsvärdering +STR_GRAPH_MENU_HIGHSCORE :Bästa spelresultat ############ range ends here ############ range for industry menu starts STR_INDUSTRY_MENU_INDUSTRY_DIRECTORY :Industriförteckning +STR_INDUSTRY_MENU_INDUSTRY_CHAIN :Industrikedjor STR_INDUSTRY_MENU_FUND_NEW_INDUSTRY :Bekosta ny industri ############ range ends here @@ -455,7 +470,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 @@ -471,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 @@ -648,7 +681,7 @@ STR_HIGHSCORE_PERFORMANCE_TITLE_CAPITALIST :Kapitalist STR_HIGHSCORE_PERFORMANCE_TITLE_MAGNATE :Magnat STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL :Mogul STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY :Århundradets pamp -STR_HIGHSCORE_NAME :{BIG_FONT}{PRESIDENT_NAME}, {COMPANY} +STR_HIGHSCORE_NAME :{PRESIDENT_NAME}, {COMPANY} STR_HIGHSCORE_STATS :{BIG_FONT}'{STRING}' ({COMMA}) STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{BLACK}{COMPANY} uppnår '{STRING}'status! STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{WHITE}{PRESIDENT_NAME} från {COMPANY} uppnår '{STRING}'status! @@ -659,17 +692,20 @@ STR_SMALLMAP_CAPTION :{WHITE}Karta - STR_SMALLMAP_TYPE_CONTOURS :Konturer STR_SMALLMAP_TYPE_VEHICLES :Fordon STR_SMALLMAP_TYPE_INDUSTRIES :Industrier +STR_SMALLMAP_TYPE_ROUTEMAP :Godsflöde STR_SMALLMAP_TYPE_ROUTES :Rutter STR_SMALLMAP_TYPE_VEGETATION :Vegetation STR_SMALLMAP_TYPE_OWNERS :Ägare STR_SMALLMAP_TOOLTIP_SHOW_LAND_CONTOURS_ON_MAP :{BLACK}Visa markkonturer på kartan STR_SMALLMAP_TOOLTIP_SHOW_VEHICLES_ON_MAP :{BLACK}Visa fordon på kartan STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRIES_ON_MAP :{BLACK}Visa industrier på kartan +STR_SMALLMAP_TOOLTIP_SHOW_LINK_STATS_ON_MAP :{BLACK}Visa godsflöden på kartan STR_SMALLMAP_TOOLTIP_SHOW_TRANSPORT_ROUTES_ON :{BLACK}Visa transportrutter på kartan STR_SMALLMAP_TOOLTIP_SHOW_VEGETATION_ON_MAP :{BLACK}Visa vegetation på kartan STR_SMALLMAP_TOOLTIP_SHOW_LAND_OWNERS_ON_MAP :{BLACK}Visa markägare på kartan STR_SMALLMAP_TOOLTIP_INDUSTRY_SELECTION :{BLACK}Klicka på en typ av industri för att växla om den visas. Ctrl+Klick visar inga andra typer av industrier. Ctrl+Klick igen visar alla typer av industrier. STR_SMALLMAP_TOOLTIP_COMPANY_SELECTION :{BLACK}Klicka på ett företag för att växla om det företagets egendomar visas. Ctrl+Klick visar inga företag utom det valda. Ctrl+Klick igen visar alla företag. +STR_SMALLMAP_TOOLTIP_CARGO_SELECTION :{BLACK}Klicka på en godstyp för att växla visning av dess egenskap. Ctrl+klick stänger av alla godstyper utom den valda. Ctrl+klicka igen för att aktivera alla godstyper STR_SMALLMAP_LEGENDA_ROADS :{TINY_FONT}{BLACK}Vägar STR_SMALLMAP_LEGENDA_RAILROADS :{TINY_FONT}{BLACK}Järnvägar @@ -703,6 +739,7 @@ STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLA STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Växla stadsnamn på/av på kartan STR_SMALLMAP_CENTER :{BLACK}Centrera minikartan på den nuvarande positionen 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}Inaktivera alla @@ -713,6 +750,8 @@ STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES :{BLACK}Visa all STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}Växla visning av höjdkarta STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES :{BLACK}Visa inga företags egendomar på kartan STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}Visa alla företags egendomar på kartan +STR_SMALLMAP_TOOLTIP_DISABLE_ALL_CARGOS :{BLACK}Visa inga godstyper på kartan +STR_SMALLMAP_TOOLTIP_ENABLE_ALL_CARGOS :{BLACK}Visa alla godstyper på kartan # Status bar messages STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Visa senaste meddelande eller nyhet @@ -737,11 +776,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! @@ -789,13 +828,11 @@ 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_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} börjar bli gammal STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} börjar bli mycket gammal @@ -842,47 +879,44 @@ 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_USD :Amerikanska Dollar (USD) +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 :Japanska Yen (¥) -STR_GAME_OPTIONS_CURRENCY_ATS :Österrikiska shilling (ATS) -STR_GAME_OPTIONS_CURRENCY_BEF :Belgiska franc (BEF) -STR_GAME_OPTIONS_CURRENCY_CHF :Schweiziska franc (CHF) -STR_GAME_OPTIONS_CURRENCY_CZK :Tjeckiska kronor (CZK) -STR_GAME_OPTIONS_CURRENCY_DEM :Tyska mark (DEM) -STR_GAME_OPTIONS_CURRENCY_DKK :Danska kronor (DKK) -STR_GAME_OPTIONS_CURRENCY_ESP :Spanska Peseta (ESP) -STR_GAME_OPTIONS_CURRENCY_FIM :Finska mark (FIM) -STR_GAME_OPTIONS_CURRENCY_FRF :Franska Franc (FRF) -STR_GAME_OPTIONS_CURRENCY_GRD :Grekiska drachmer (GRD) -STR_GAME_OPTIONS_CURRENCY_HUF :Ungerska Forint (HUF) -STR_GAME_OPTIONS_CURRENCY_ISK :Isländska kronor (ISK) -STR_GAME_OPTIONS_CURRENCY_ITL :Italienska lire (ITL) -STR_GAME_OPTIONS_CURRENCY_NLG :Holländska guilder (NLG) -STR_GAME_OPTIONS_CURRENCY_NOK :Norska kronor (NOK) -STR_GAME_OPTIONS_CURRENCY_PLN :Polska Zloty (PLN) -STR_GAME_OPTIONS_CURRENCY_RON :Rumänsk Leu (RON) -STR_GAME_OPTIONS_CURRENCY_RUR :Ryska rubel (RUR) -STR_GAME_OPTIONS_CURRENCY_SIT :Slovenska Tolar (SIT) -STR_GAME_OPTIONS_CURRENCY_SEK :Svenska kronor (SEK) -STR_GAME_OPTIONS_CURRENCY_TRY :Turkisk Lire (TRY) -STR_GAME_OPTIONS_CURRENCY_SKK :Slovakisk Koruna (SKK) -STR_GAME_OPTIONS_CURRENCY_BRL :Brasiliansk Real (BRL) -STR_GAME_OPTIONS_CURRENCY_EEK :Estniska Kroon (EEK) +STR_GAME_OPTIONS_CURRENCY_JPY :Japansk yen (¥) +STR_GAME_OPTIONS_CURRENCY_ATS :Österrikisk shilling (ATS) +STR_GAME_OPTIONS_CURRENCY_BEF :Belgisk franc (BEF) +STR_GAME_OPTIONS_CURRENCY_CHF :Schweizisk franc (CHF) +STR_GAME_OPTIONS_CURRENCY_CZK :Tjeckisk krona (CZK) +STR_GAME_OPTIONS_CURRENCY_DEM :D-mark (DEM) +STR_GAME_OPTIONS_CURRENCY_DKK :Dansk krona (DKK) +STR_GAME_OPTIONS_CURRENCY_ESP :Spansk peseta (ESP) +STR_GAME_OPTIONS_CURRENCY_FIM :Finsk mark (FIM) +STR_GAME_OPTIONS_CURRENCY_FRF :Fransk franc (FRF) +STR_GAME_OPTIONS_CURRENCY_GRD :Grekisk drachme (GRD) +STR_GAME_OPTIONS_CURRENCY_HUF :Ungersk forint (HUF) +STR_GAME_OPTIONS_CURRENCY_ISK :Isländsk krona (ISK) +STR_GAME_OPTIONS_CURRENCY_ITL :Italiensk lira (ITL) +STR_GAME_OPTIONS_CURRENCY_NLG :Nederländsk gulden (NLG) +STR_GAME_OPTIONS_CURRENCY_NOK :Norsk krona (NOK) +STR_GAME_OPTIONS_CURRENCY_PLN :Polsk złoty (PLN) +STR_GAME_OPTIONS_CURRENCY_RON :Rumänsk leu (RON) +STR_GAME_OPTIONS_CURRENCY_RUR :Rysk rubel (RUR) +STR_GAME_OPTIONS_CURRENCY_SIT :Slovensk tolar (SIT) +STR_GAME_OPTIONS_CURRENCY_SEK :Svensk krona (SEK) +STR_GAME_OPTIONS_CURRENCY_TRY :Turkisk lira (TRY) +STR_GAME_OPTIONS_CURRENCY_SKK :Slovakisk krona (SKK) +STR_GAME_OPTIONS_CURRENCY_BRL :Brasiliansk real (BRL) +STR_GAME_OPTIONS_CURRENCY_EEK :Estnisk krona (EEK) STR_GAME_OPTIONS_CURRENCY_LTL :Litauisk litas (LTL) STR_GAME_OPTIONS_CURRENCY_KRW :Sydkoreansk won (KRW) STR_GAME_OPTIONS_CURRENCY_ZAR :Sydafrikansk rand (ZAR) STR_GAME_OPTIONS_CURRENCY_CUSTOM :Egen... +STR_GAME_OPTIONS_CURRENCY_GEL :Georgisk lari (GEL) +STR_GAME_OPTIONS_CURRENCY_IRR :Iransk rial (IRR) ############ end of currency region -STR_GAME_OPTIONS_MEASURING_UNITS_FRAME :{BLACK}Mätenheter -STR_GAME_OPTIONS_MEASURING_UNITS_DROPDOWN_TOOLTIP :{BLACK}Val av mätenheter ############ start of measuring units region -STR_GAME_OPTIONS_MEASURING_UNITS_IMPERIAL :Imperialistisk -STR_GAME_OPTIONS_MEASURING_UNITS_METRIC :Metrisk -STR_GAME_OPTIONS_MEASURING_UNITS_SI :SI ############ end of measuring units region STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Vägfordon @@ -920,11 +954,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 @@ -936,9 +972,6 @@ 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_BASE_GRF :{BLACK}Grafikpaket som standard STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Välj vilket grafikpaket som ska användas som standard STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} saknad{P "" e}/trasig{P "" a} fil{P "" er} @@ -971,11 +1004,11 @@ STR_CURRENCY_SET_CUSTOM_CURRENCY_PREFIX_TOOLTIP :{BLACK}Sätt pr STR_CURRENCY_SUFFIX :{LTBLUE}Ändelse: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_SUFFIX_TOOLTIP :{BLACK}Sätt suffix-sträng för din valuta -STR_CURRENCY_SWITCH_TO_EURO :{LTBLUE}Går över till Euro: {ORANGE}{NUM} -STR_CURRENCY_SWITCH_TO_EURO_NEVER :{LTBLUE}Går över till Euro: {ORANGE}aldrig -STR_CURRENCY_SET_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Sätt år för byte till Euro -STR_CURRENCY_DECREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Byt till Euro tidigare -STR_CURRENCY_INCREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Byt till Euro senare +STR_CURRENCY_SWITCH_TO_EURO :{LTBLUE}Går över till euron: {ORANGE}{NUM} +STR_CURRENCY_SWITCH_TO_EURO_NEVER :{LTBLUE}Går över till euron: {ORANGE}aldrig +STR_CURRENCY_SET_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Sätt år för byte till euron +STR_CURRENCY_DECREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Byt till euron tidigare +STR_CURRENCY_INCREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Byt till euron senare STR_CURRENCY_PREVIEW :{LTBLUE}Förhandsgranska: {ORANGE}{CURRENCY_LONG} STR_CURRENCY_CUSTOM_CURRENCY_PREVIEW_TOOLTIP :{BLACK}10000 Pund (£) i din valuta @@ -1042,6 +1075,7 @@ STR_WARNING_NO_SUITABLE_AI :{WHITE}Ingen pa STR_CONFIG_SETTING_CAPTION :{WHITE}Avancerade 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 STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT :(ingen förklaring tillgänglig) STR_CONFIG_SETTING_DEFAULT_VALUE :{LTBLUE}Standardvärde: {ORANGE}{STRING} STR_CONFIG_SETTING_TYPE :{LTBLUE}Typ av inställning: {ORANGE}{STRING} @@ -1051,17 +1085,30 @@ 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_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 inställningar STR_CONFIG_SETTING_RESTRICT_ADVANCED :Avancerade inställningar STR_CONFIG_SETTING_RESTRICT_ALL :Expertinställningar / alla inställningar 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 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å -STR_CONFIG_SETTING_DISABLED :Inaktiverat +STR_CONFIG_SETTING_DISABLED :Avstängd STR_CONFIG_SETTING_COMPANIES_OFF :Av STR_CONFIG_SETTING_COMPANIES_OWN :Eget företag @@ -1075,17 +1122,30 @@ STR_CONFIG_SETTING_HORIZONTAL_POS_LEFT :Vänster STR_CONFIG_SETTING_HORIZONTAL_POS_CENTER :Centrerad STR_CONFIG_SETTING_HORIZONTAL_POS_RIGHT :Höger +STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN :Maximalt startlån: {STRING} +STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Maximalt belopp ett företag kan låna (där inflationen inte tas med i beräkningen) STR_CONFIG_SETTING_INTEREST_RATE :Räntenivå: {STRING} +STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Räntenivå för lån; styr även inflationen om sådan är aktiverad STR_CONFIG_SETTING_RUNNING_COSTS :Driftkostnader: {STRING} +STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT :Sätt nivån för underhålls- och driftkostnader för fordon och infrastruktur +STR_CONFIG_SETTING_CONSTRUCTION_SPEED :Konstruktionshastighet: {STRING} +STR_CONFIG_SETTING_CONSTRUCTION_SPEED_HELPTEXT :Begränsar antalet konstruktionshandlingar för AI-spelare +STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS :Fordonshaverier: {STRING} STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS_HELPTEXT :Styr hur ofta otillräckligt servade fordon kan få motorstopp +STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER :Subvention (multiplikativ): {STRING} +STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT :Ange hur mycket betalt som subventionerade anslutningar ger +STR_CONFIG_SETTING_CONSTRUCTION_COSTS :Konstruktionskostnader: {STRING} +STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :Sätt nivån för konstruktions- och inköpskostnader STR_CONFIG_SETTING_RECESSIONS :Lågkonjunkturer: {STRING} STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Om det är aktiverat så kan lågkonjunkturer uppstå med ett antal års mellanrum. Under en lågkonjunktur är all produktion avsevärt lägre (men återgår till det normala när lågkonjunkturen är över) +STR_CONFIG_SETTING_TRAIN_REVERSING :Förbjud tåg att vända vid stationer: {STRING} +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 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_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 @@ -1109,22 +1169,16 @@ 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_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 :Manuell prioritering för industrins konstruktionsmetod: {STRING} -STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_HELPTEXT :Metod för att finansiera en primär industri. 'Inget' betyder att det inte är tillåtet att finansiera några primära industrier. 'Prospekterande' betyder att finansiering är möjligt men industrin byggs på en slumpvis plats och kan även misslyckas. 'Som andra industrier' betyder att industrier som genererar råmaterial kan byggas av företag på samma sätt som industrier som processar material, dvs på valfri plats. -STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :Inget -STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :Som andra industrier +STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :Metod för manuell konstruktion av primära industrier: {STRING} +STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_HELPTEXT :Metod för att finansiera en primär industri. 'Ingen' betyder att det inte är tillåtet att finansiera några primära industrier. 'Prospekterande' betyder att finansiering är möjlig men industrin byggs på en slumpvis plats och kan även misslyckas. 'Som andra industrier' betyder att industrier som genererar råmaterial kan byggas av företag på samma sätt som industrier som processar material, dvs på valfri plats. +STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :Ingen +STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :Samma som för andra industrier STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :Prospekterande STR_CONFIG_SETTING_INDUSTRY_PLATFORM :Platt yta runt industrier: {STRING} STR_CONFIG_SETTING_INDUSTRY_PLATFORM_HELPTEXT :Hur mycket platt yta som finns runt en industri. Detta säkerställer att tom yta finns tillgängligt runt en industri för byggnation av spår mm. @@ -1144,8 +1198,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 @@ -1176,10 +1228,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. @@ -1224,7 +1272,7 @@ STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis 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_ROUGHNESS_OF_TERRAIN :Terrängens svårhetsgrad: {STRING} 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 @@ -1237,8 +1285,6 @@ STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Höjkartans rot 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 @@ -1259,7 +1305,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 @@ -1273,7 +1319,11 @@ STR_CONFIG_SETTING_SCROLLWHEEL_SCROLL :Scrolla kartan STR_CONFIG_SETTING_SCROLLWHEEL_OFF :Avstängd STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER :Mushjulshastighet: {STRING} STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER_HELPTEXT :Kontrollera känsligheten hos skrollning med mushjulet +STR_CONFIG_SETTING_OSK_ACTIVATION :Skärmtangentbord: {STRING} +STR_CONFIG_SETTING_OSK_ACTIVATION_HELPTEXT :Ange metod för hur skärmtangentbordet öppnas för inmatning av text i textrutor. Skärmtangentbordet används med hjälp mus, touch, eller andra pek-indata-enheter och är till för små enheter utan fysiskt tangentbord +STR_CONFIG_SETTING_OSK_ACTIVATION_DISABLED :Avstängd STR_CONFIG_SETTING_OSK_ACTIVATION_DOUBLE_CLICK :Dubbelklick +STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK_FOCUS :Enkelklick (om redan fokuserad) STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK :Enkelklick (omedelbart) STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU :Högerklicksemulering: {STRING} @@ -1285,17 +1335,13 @@ 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_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} @@ -1304,7 +1350,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 @@ -1326,6 +1372,22 @@ STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Håll verktygen STR_CONFIG_SETTING_EXPENSES_LAYOUT :Gruppera utgifter i företagens finansfönster: {STRING} STR_CONFIG_SETTING_EXPENSES_LAYOUT_HELPTEXT :Välj layout för företagens utgiftsfönster +STR_CONFIG_SETTING_SOUND_TICKER :Summerade nyheter: {STRING} +STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :Spela ljudeffekt för sammanfattade nyhetsmeddelanden +STR_CONFIG_SETTING_SOUND_NEWS :Tidningsnyheter: {STRING} +STR_CONFIG_SETTING_SOUND_NEWS_HELPTEXT :Spela upp ljud när tidningsnyheter visas +STR_CONFIG_SETTING_SOUND_NEW_YEAR :Slut på året: {STRING} +STR_CONFIG_SETTING_SOUND_NEW_YEAR_HELPTEXT :Spela en ljudeffekt vid årets slut som beskriver företagets resultat från det gångna året jämfört med året innan +STR_CONFIG_SETTING_SOUND_CONFIRM :Konstruktion: {STRING} +STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT :Spela ljudeffekter när konstruktioner lyckas och vid andra händelser +STR_CONFIG_SETTING_SOUND_CLICK :Knapptryckningar: {STRING} +STR_CONFIG_SETTING_SOUND_CLICK_HELPTEXT :Pip vid knapptryckningar +STR_CONFIG_SETTING_SOUND_DISASTER :Katastrofer/olyckor: {STRING} +STR_CONFIG_SETTING_SOUND_DISASTER_HELPTEXT :Spela ljudeffekter för olyckor och katastrofer +STR_CONFIG_SETTING_SOUND_VEHICLE :Fordon: {STRING} +STR_CONFIG_SETTING_SOUND_VEHICLE_HELPTEXT :Spela ljudeffekter för fordon +STR_CONFIG_SETTING_SOUND_AMBIENT :Bakgrund: {STRING} +STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :Spela bakgrundsljudeffekter för landskap, industrier och städer STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING :Inaktivera byggande av infrastruktur när inga passande fordon är tillgängliga: {STRING} STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING_HELPTEXT :När det är aktiverat blir infrastruktur bara tillgänglig om det också finns därtill avsedda fordon tillgängliga, vilket förhindrar slöseri med tid och pengar på oanvändbar infrastruktur @@ -1347,6 +1409,8 @@ STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT_HELPTEXT :När denna inst STR_CONFIG_SETTING_AI_BUILDS_SHIPS :Förbjud skepp för datorn: {STRING} STR_CONFIG_SETTING_AI_BUILDS_SHIPS_HELPTEXT :När denna inställning aktiveras blir det omöjligt för datorspelare att bygga skepp +STR_CONFIG_SETTING_AI_PROFILE :Inställningsprofil som standard: {STRING} +STR_CONFIG_SETTING_AI_PROFILE_HELPTEXT :Välj vilken inställningsprofil som ska användas för slumpvis valda datorspelare, eller för startvärden när en ny datorspelare (AI) eller ett spelskript läggs till STR_CONFIG_SETTING_AI_PROFILE_EASY :Lätt STR_CONFIG_SETTING_AI_PROFILE_MEDIUM :Mellan STR_CONFIG_SETTING_AI_PROFILE_HARD :Svår @@ -1376,23 +1440,38 @@ STR_CONFIG_SETTING_DISABLE_ELRAILS :Använd inte el STR_CONFIG_SETTING_DISABLE_ELRAILS_HELPTEXT :Om denna inställning aktiveras så tas kravet på att elektrifiera spår för att elektriska lok ska kunna köra på dem bort STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN :Första fordonets ankomst till spelarens stn.: {STRING} +STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN_HELPTEXT :Visa nyhetstidning när det första fordonet ankommer till egna nya stationer STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER :Första fordonets ankomst till konkurrents stn.: {STRING} +STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER_HELPTEXT :Visa nyhetstidning när det första fordonet ankommer till motståndarnas nya stationer STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS :Olyckor / katastrofer: {STRING} +STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS_HELPTEXT :Visa nyhetstidning när olyckor eller katastrofer inträffar STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION :Företagsinformation: {STRING} +STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION_HELPTEXT :Visa nyhetstidning när nya företag startar upp eller när ett befintligt företag riskerar att gå bankrupt STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN :Invigning av industrier: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN_HELPTEXT :Visa nyhetstidning när nya industrier öppnas STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE :Nedläggning av Industrier: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE_HELPTEXT :Visa nyhetstidning när industrier stängs ner STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES :Ekonomiska förändringar: {STRING} +STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES_HELPTEXT :Visa nyhetstidning om förändringar i den globala ekonomin STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY :Produktionsförändring vid industri som företaget betjänar: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY_HELPTEXT :Visa nyhetstidning vid förändring av industriers produktionsnivåer för industrier som används av det egna företaget STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER :Produktionsförändring vid industri som motståndare betjänar: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER_HELPTEXT :Visa nyhetstidning vid förändring av industriers produktionsnivåer för industrier som används av motståndare STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED :Andra produktionsförändringar vid industrier.: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED_HELPTEXT :Visa nyhetstidning vid förändring av industriers produktionsnivåer för industrier som inte används av motståndare eller det egna företaget STR_CONFIG_SETTING_NEWS_ADVICE :Råd / information om företagets fordon: {STRING} +STR_CONFIG_SETTING_NEWS_ADVICE_HELPTEXT :Visa meddelande ifall att ett fordon behöver uppmärksamhet STR_CONFIG_SETTING_NEWS_NEW_VEHICLES :Nya fordon: {STRING} +STR_CONFIG_SETTING_NEWS_NEW_VEHICLES_HELPTEXT :Visa nyhetstidning när en ny typ av fordon blir tillgängligt STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE :Ändringar i godsacceptans: {STRING} +STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE_HELPTEXT :Visa meddelande vid förändring av stationers varuacceptans STR_CONFIG_SETTING_NEWS_SUBSIDIES :Subventioner: {STRING} +STR_CONFIG_SETTING_NEWS_SUBSIDIES_HELPTEXT :Visa nyhetstidning om händelser relaterade till subventioner STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION :Övergripande information: {STRING} +STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION_HELPTEXT :Visa nyhetstidning om generella händelser så som köp av exklusiva rättigheter eller finansiering av vägbyggen STR_CONFIG_SETTING_NEWS_MESSAGES_OFF :Av -STR_CONFIG_SETTING_NEWS_MESSAGES_SUMMARY :Summarisk +STR_CONFIG_SETTING_NEWS_MESSAGES_SUMMARY :Summerad STR_CONFIG_SETTING_NEWS_MESSAGES_FULL :På STR_CONFIG_SETTING_COLOURED_NEWS_YEAR :Nyheter i färg visas efter: {STRING} @@ -1408,7 +1487,7 @@ STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY :Vid dragning me STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_HELPTEXT :Ställ in med vilket avstånd signaler ska byggas utmed ett spår, fram till nästa hinder (signal, korsning), om signalverktyget dras STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_VALUE :{COMMA} rut{P 0 a or} STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE :Vid dragning med verktyget, håll ett fast avstånd mellan signalerna: {STRING} -STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :Välj beteende för signalplacering när signalverktyget dras med Ctrl nedtryckt. Om det är avstängt placeras signaler runt tunnlar och broar för att undvika långa sträckor utan signaler. Om det är påslaget placeras signaler ut varje N rutor, vilket gör det lättare att få dem jämsides vid parallella spår +STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :Välj beteende för signalplacering när signalverktyget dras med Ctrl nedtryckt. Om det är avstängt placeras signaler runt tunnlar och broar för att undvika långa sträckor utan signaler. Om det är påslaget placeras signaler ut varje n rutor, vilket gör det lättare att få dem jämsides vid parallella spår 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} @@ -1426,7 +1505,7 @@ STR_CONFIG_SETTING_CYCLE_SIGNAL_ALL :Alla STR_CONFIG_SETTING_TOWN_LAYOUT :Vägnätslayout för nya städer: {STRING} STR_CONFIG_SETTING_TOWN_LAYOUT_HELPTEXT :Layout för städernas vägnät -STR_CONFIG_SETTING_TOWN_LAYOUT_DEFAULT :standard +STR_CONFIG_SETTING_TOWN_LAYOUT_DEFAULT :Original STR_CONFIG_SETTING_TOWN_LAYOUT_BETTER_ROADS :Bättre vägar STR_CONFIG_SETTING_TOWN_LAYOUT_2X2_GRID :2x2 rutnät STR_CONFIG_SETTING_TOWN_LAYOUT_3X3_GRID :3x3 rutnät @@ -1456,7 +1535,7 @@ STR_CONFIG_SETTING_STATUSBAR_POS_HELPTEXT :Statusradens ho STR_CONFIG_SETTING_SNAP_RADIUS :Fäst-radie för fönster: {STRING} STR_CONFIG_SETTING_SNAP_RADIUS_HELPTEXT :Det avstånd mellan fönstren då det fönster som flyttas automatiskt fästs mot närliggande fönster STR_CONFIG_SETTING_SNAP_RADIUS_VALUE :{COMMA} pix{P 0 el lar} -STR_CONFIG_SETTING_SNAP_RADIUS_DISABLED :avstängd +STR_CONFIG_SETTING_SNAP_RADIUS_DISABLED :Avstängd STR_CONFIG_SETTING_SOFT_LIMIT :Maximalt antal icke-klistrade fönster: {STRING} STR_CONFIG_SETTING_SOFT_LIMIT_HELPTEXT :Antal icke-klistrade fönster som kan vara öppna innan gamla fönster börjar stängas automatiskt för att ge plats åt nya STR_CONFIG_SETTING_SOFT_LIMIT_VALUE :{COMMA} @@ -1481,29 +1560,81 @@ STR_CONFIG_SETTING_TOWN_GROWTH_VERY_FAST :Väldigt snabbt STR_CONFIG_SETTING_LARGER_TOWNS :Andel av städerna som ska växa till storstäder: {STRING} STR_CONFIG_SETTING_LARGER_TOWNS_HELPTEXT :Andel av alla städer som med tiden ska bli storstäder; alltså städer som är större från början och växer snabbare än andra STR_CONFIG_SETTING_LARGER_TOWNS_VALUE :1 av {COMMA} -STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :inga +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_GUI :{ORANGE}Gränssnitt -STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}Konstruktion +STR_CONFIG_SETTING_LINKGRAPH_INTERVAL :Uppdatera distributionsgrafen var {STRING}:e 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} 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_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 :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 :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 :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 höjder visas i användargränssnittet, visa dem i den valda enheten +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_LOCALISATION :{ORANGE}Lokalisering +STR_CONFIG_SETTING_SOUND :{ORANGE}Ljud +STR_CONFIG_SETTING_INTERFACE :{ORANGE}Gränssnitt +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Konstruktion STR_CONFIG_SETTING_VEHICLES :{ORANGE}Fordon -STR_CONFIG_SETTING_STATIONS :{ORANGE}Stationer -STR_CONFIG_SETTING_ECONOMY :{ORANGE}Ekonomi +STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Planering av resrutt +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_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}Servicing -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 @@ -1515,8 +1646,8 @@ STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :Vägfinnare fö STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES_HELPTEXT :Vägfinnare som vägfordon ska använda STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS :Vägfinnare för skepp: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT :Vägfinnare som skepp ska använda -STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :Backa automatiskt vid signaler: {STRING} -STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT :Tillåt att tåg backar vid en signal om de har väntat där länge +STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :Vänd automatiskt vid signaler: {STRING} +STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT :Tillåt att tåg vänder vid en signal om de har väntat där länge STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}Ändra inställningsvärde @@ -1537,6 +1668,8 @@ STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_ALGORITHM :{WHITE}... filf STR_CONFIG_ERROR_INVALID_BASE_GRAPHICS_NOT_FOUND :{WHITE}... ignorerar grafikpaketet '{STRING}': hittades ej STR_CONFIG_ERROR_INVALID_BASE_SOUNDS_NOT_FOUND :{WHITE}... ignorerar grundljudpaketet '{STRING}': hittades ej STR_CONFIG_ERROR_INVALID_BASE_MUSIC_NOT_FOUND :{WHITE}... ignorerar musikpaket '{STRING}': hittades ej +STR_CONFIG_ERROR_OUT_OF_MEMORY :{WHITE}Slut på minne +STR_CONFIG_ERROR_SPRITECACHE_TOO_BIG :{WHITE}Allokerandet av {BYTES} till spritecachen misslyckades. Spritecachen begränsades till {BYTES}. Detta kommer att begränsa OpenTTD:s prestanda. För att minska minneskraven kan du försöka att inaktivera 32bpp-grafik och/eller antalet inzoomningsnivåer # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} @@ -1549,6 +1682,7 @@ STR_INTRO_SCENARIO_EDITOR :{BLACK}Scenario STR_INTRO_MULTIPLAYER :{BLACK}Flera spelare STR_INTRO_GAME_OPTIONS :{BLACK}Spelinställningar +STR_INTRO_HIGHSCORE :{BLACK}Bästa spelresultat STR_INTRO_ADVANCED_SETTINGS :{BLACK}Avancerade inställningar STR_INTRO_NEWGRF_SETTINGS :{BLACK}NewGRF-inställningar STR_INTRO_ONLINE_CONTENT :{BLACK}Kontrollera online-innehåll @@ -1568,6 +1702,7 @@ STR_INTRO_TOOLTIP_SUB_TROPICAL_LANDSCAPE :{BLACK}Välj 's STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Välj 'leksaksland' som typ av landskap 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_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 @@ -1656,6 +1791,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 @@ -1701,8 +1837,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: @@ -1711,10 +1847,10 @@ STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}Ändra s # Network server list STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}Flera spelare -STR_NETWORK_SERVER_LIST_CONNECTION :{BLACK}Anslutning: -STR_NETWORK_SERVER_LIST_CONNECTION_TOOLTIP :{BLACK}Välj mellan att spela över internet eller det lokala nätverket -STR_NETWORK_SERVER_LIST_LAN :LAN -STR_NETWORK_SERVER_LIST_INTERNET :Internet +STR_NETWORK_SERVER_LIST_ADVERTISED :{BLACK}Publikt +STR_NETWORK_SERVER_LIST_ADVERTISED_TOOLTIP :{BLACK}Välj mellan ett publikt (internet) eller icke publikt (Local Area Network. LAN) spel +STR_NETWORK_SERVER_LIST_ADVERTISED_NO :Nej +STR_NETWORK_SERVER_LIST_ADVERTISED_YES :Ja STR_NETWORK_SERVER_LIST_PLAYER_NAME :{BLACK}Spelarnamn: STR_NETWORK_SERVER_LIST_ENTER_NAME_TOOLTIP :{BLACK}Namnet som andra spelare kommer se dej som @@ -1756,7 +1892,7 @@ STR_NETWORK_SERVER_LIST_REFRESH :{BLACK}Uppdater STR_NETWORK_SERVER_LIST_REFRESH_TOOLTIP :{BLACK}Uppdatera server info STR_NETWORK_SERVER_LIST_FIND_SERVER :{BLACK}Leta server -STR_NETWORK_SERVER_LIST_FIND_SERVER_TOOLTIP :{BLACK}Leta på nätverket efter en server +STR_NETWORK_SERVER_LIST_FIND_SERVER_TOOLTIP :{BLACK}Sök i nätverket efter en server STR_NETWORK_SERVER_LIST_ADD_SERVER :{BLACK}Lägg till server STR_NETWORK_SERVER_LIST_ADD_SERVER_TOOLTIP :{BLACK}Lägg till en server till listan som alltid kommer kontrolleras för aktiva spel STR_NETWORK_SERVER_LIST_START_SERVER :{BLACK}Starta server @@ -1773,16 +1909,16 @@ STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP :{BLACK}Namnet p STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}Bestäm lösenord STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Skydda spelet med ett lösenord så att inte andra än dem som har lösenordet kan gå med i spelet -STR_NETWORK_START_SERVER_LAN_INTERNET :LAN / Internet -STR_NETWORK_START_SERVER_INTERNET_ADVERTISE :Internet (publik) +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}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. @@ -1892,9 +2028,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 @@ -2013,6 +2150,10 @@ STR_CONTENT_SELECT_UPDATES_CAPTION :{BLACK}Välj up STR_CONTENT_SELECT_UPDATES_CAPTION_TOOLTIP :{BLACK}Markera allt innehåll som är en uppgradering på befintligt innehåll för nedladdning STR_CONTENT_UNSELECT_ALL_CAPTION :{BLACK}Avmarkera allt STR_CONTENT_UNSELECT_ALL_CAPTION_TOOLTIP :{BLACK}Markera att inte ladda hem någonting +STR_CONTENT_SEARCH_EXTERNAL :{BLACK}Sök på externa webbplatser +STR_CONTENT_SEARCH_EXTERNAL_TOOLTIP :{BLACK}Sök på webbplatser som är fristående från OpenTTD efter material som ej är tillgängligt på OpenTTD:s innehållstjänst +STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER_CAPTION :{WHITE}Du lämnar nu OpenTTD! +STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER :{WHITE}Villkoren för nedladdning av material från externa webbplatser varierar.{}Du hänvisas till de externa sidorna när det gäller instruktioner för hur materialet ska installeras i OpenTTD.{}Vill du fortsätta? STR_CONTENT_FILTER_TITLE :{BLACK}Filter för Tagg/namn: STR_CONTENT_OPEN_URL :{BLACK}Besök hemsida STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}Besök hemsidan för det här innehållet @@ -2035,7 +2176,7 @@ STR_CONTENT_DETAIL_FILESIZE :{SILVER}Nedladd STR_CONTENT_DETAIL_SELECTED_BECAUSE_OF :{SILVER}Vald på grund av: {WHITE}{STRING} STR_CONTENT_DETAIL_DEPENDENCIES :{SILVER}Filer som behövs: {WHITE}{STRING} STR_CONTENT_DETAIL_TAGS :{SILVER}Taggar: {WHITE}{STRING} -STR_CONTENT_NO_ZLIB :{WHITE}OpenTTD har byggts utan stöd för "zlib"... +STR_CONTENT_NO_ZLIB :{WHITE}OpenTTD saknar stöd för "zlib"... STR_CONTENT_NO_ZLIB_SUB :{WHITE}... nerladdning av innehåll är inte möjligt! # Order of these is important! @@ -2082,6 +2223,17 @@ STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}Växla g STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Växla genomskinlighet för lastningsindikatörer. CTRL+klick för att låsa STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}Gör object osynliga istället för genomskinliga +# Linkgraph legend window +STR_LINKGRAPH_LEGEND_CAPTION :{BLACK}Legend för Godsflöden +STR_LINKGRAPH_LEGEND_ALL :{BLACK}Alla +STR_LINKGRAPH_LEGEND_NONE :{BLACK}Inga +STR_LINKGRAPH_LEGEND_SELECT_COMPANIES :{BLACK}Välj företag att visa + +# Linkgraph legend window and linkgraph legend in smallmap +STR_LINKGRAPH_LEGEND_UNUSED :{TINY_FONT}{BLACK}oanvänd +STR_LINKGRAPH_LEGEND_SATURATED :{TINY_FONT}{BLACK}mättad +STR_LINKGRAPH_LEGEND_OVERLOADED :{TINY_FONT}{BLACK}överbelastad + # Base for station construction window(s) STR_STATION_BUILD_COVERAGE_AREA_TITLE :{BLACK}Markera upptagningsområde STR_STATION_BUILD_COVERAGE_OFF :{BLACK}Av @@ -2147,16 +2299,16 @@ STR_STATION_CLASS_WAYP :Riktmärken # Signal window STR_BUILD_SIGNAL_CAPTION :{WHITE}Signalval -STR_BUILD_SIGNAL_SEMAPHORE_NORM_TOOLTIP :{BLACK}Standardsignal (semafor){}Detta är den enklaste typen av signal, som tillåter endast ett tåg per block vid samma tidpunkt -STR_BUILD_SIGNAL_SEMAPHORE_ENTRY_TOOLTIP :{BLACK}Infartssignal (semafor){}Grön så länge det finns en eller flera gröna utfarts-signaler på efterföljande bit av spår, annars visas rött -STR_BUILD_SIGNAL_SEMAPHORE_EXIT_TOOLTIP :{BLACK}Utfartssignal (semafor){}Fungerar på samma sätt som en vanlig signal men behövs för att utlösa korrekt färg på In- eller kombinations-signaler -STR_BUILD_SIGNAL_SEMAPHORE_COMBO_TOOLTIP :{BLACK}Kombinationssignal (semafor){}Kombinationssignalen fungerar som både en För- och Utfarts-signal. Denna tillåter dig att bygga stora "träd" av För-signaler -STR_BUILD_SIGNAL_SEMAPHORE_PBS_TOOLTIP :{BLACK}Avancerad signal (semafor){}En avancerad signal tillåter flera fordon att befinna sig i ett signalblock samtidigt, om fordonet kan reservera en väg till en säker stopp-plats. Avancerade signaler kan passeras bakifrån (gäller inte avancerade envägs-signaler) -STR_BUILD_SIGNAL_SEMAPHORE_PBS_OWAY_TOOLTIP :{BLACK}Avancerad envägssignal (semafor){}En avancerad signal tillåter flera fordon att befinna sig i ett signalblock samtidigt, om fordonet kan reservera en väg till en säker stopp-plats. Avancerade envägs-signaler kan inte passeras bakifrån -STR_BUILD_SIGNAL_ELECTRIC_NORM_TOOLTIP :{BLACK}Normal signal (elektrisk){}Detta är den enklaste typen av signal, som tillåter endast ett tåg per block vid samma tidpunkt -STR_BUILD_SIGNAL_ELECTRIC_ENTRY_TOOLTIP :{BLACK}Infartssignal (elektrisk){}Grön så länge det finns en eller flera gröna utfarts-signaler på efterföljande bit av spår, annars visas rött -STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}Utfartssignal (elektrisk){}Fungerar på samma sätt som en vanlig signal men behövs för att utlösa korrekt färg på In- eller kombinations-signaler -STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}Kombinationssignal (elektrisk){}Kombinationssignalen fungerar som både en För- och Utfarts-signal. Denna tillåter dig att bygga stora "träd" av För-signaler +STR_BUILD_SIGNAL_SEMAPHORE_NORM_TOOLTIP :{BLACK}Standardsignal (semafor){}Detta är den enklaste typen av signal, som endast tillåter ett tåg per block vid samma tidpunkt +STR_BUILD_SIGNAL_SEMAPHORE_ENTRY_TOOLTIP :{BLACK}Infartssignal (semafor){}Grön så länge det finns en eller flera gröna utfartssignaler på efterföljande bit av spår, annars visas rött +STR_BUILD_SIGNAL_SEMAPHORE_EXIT_TOOLTIP :{BLACK}Utfartssignal (semafor){}Fungerar på samma sätt som en vanlig signal, men behövs för att utlösa korrekt färg på in- eller kombinationssignaler +STR_BUILD_SIGNAL_SEMAPHORE_COMBO_TOOLTIP :{BLACK}Kombinationssignal (semafor){}Kombinationssignalen fungerar som både en infarts- och utfartssignal. Detta gör det möjligt att bygga stora "träd" av för-signaler +STR_BUILD_SIGNAL_SEMAPHORE_PBS_TOOLTIP :{BLACK}Avancerad signal (semafor){}En avancerad signal tillåter flera fordon att befinna sig i ett signalblock samtidigt, om fordonet kan reservera en väg till en säker stopp-plats. Avancerade signaler kan passeras bakifrån (gäller inte avancerade envägssignaler) +STR_BUILD_SIGNAL_SEMAPHORE_PBS_OWAY_TOOLTIP :{BLACK}Avancerad envägssignal (semafor){}En avancerad signal tillåter flera fordon att befinna sig i ett signalblock samtidigt, om fordonet kan reservera en väg till en säker stopp-plats. Avancerade envägssignaler kan inte passeras bakifrån +STR_BUILD_SIGNAL_ELECTRIC_NORM_TOOLTIP :{BLACK}Normal signal (elektrisk){}Detta är den enklaste typen av signal, som endast tillåter ett tåg per block vid samma tidpunkt +STR_BUILD_SIGNAL_ELECTRIC_ENTRY_TOOLTIP :{BLACK}Infartssignal (elektrisk){}Grön så länge det finns en eller flera gröna utfartssignaler på efterföljande bit av spår, annars visas rött +STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}Utfartssignal (elektrisk){}Fungerar på samma sätt som en vanlig signal men behövs för att utlösa korrekt färg på infarts- och kombinationssignaler +STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}Kombinationssignal (elektrisk){}Kombinationssignalen fungerar som både en infarts- och utfartssignal. Detta gör det möjligt att bygga stora "träd" av för-signaler STR_BUILD_SIGNAL_ELECTRIC_PBS_TOOLTIP :{BLACK}Avancerad signal (elektrisk){}En avancerad signal tillåter flera fordon att befinna sig i ett signalblock samtidigt, om fordonet kan reservera en väg till en säker stopp-plats. Avancerade signaler kan passeras bakifrån STR_BUILD_SIGNAL_ELECTRIC_PBS_OWAY_TOOLTIP :{BLACK}Avancerad envägssignal (elektrisk){}En avancerad signal tillåter flera fordon att befinna sig i ett signalblock samtidigt, om fordonet kan reservera en väg till en säker stopp-plats. Avancerade envägs-signaler kan inte passeras bakifrån STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}Konvertera signal{}När den är markerad, klicka på en existerande signal för att konvertera den till vald signaltyp och -variant. Ctrl-klick ändrar den existerande varianten. Shift-klick visar beräknad konverteringskostnad @@ -2356,7 +2508,10 @@ STR_INDUSTRY_DISPLAY_CHAIN :{BLACK}Visa ked STR_INDUSTRY_DISPLAY_CHAIN_TOOLTIP :{BLACK}Visa industrier som levererar och tar emot gods STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP :{BLACK}Koppla till minikartan STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP_TOOLTIP :{BLACK}Markera visade industrier även på minikartan +STR_INDUSTRY_CARGOES_SELECT_CARGO :{BLACK}Välj last +STR_INDUSTRY_CARGOES_SELECT_CARGO_TOOLTIP :{BLACK}Välj den typ av last du vill visa STR_INDUSTRY_CARGOES_SELECT_INDUSTRY :{BLACK}Välj industri +STR_INDUSTRY_CARGOES_SELECT_INDUSTRY_TOOLTIP :{BLACK}Välj den typ av industri du vill visa # Land area window STR_LAND_AREA_INFORMATION_CAPTION :{WHITE}Markområdesinformation @@ -2381,6 +2536,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 @@ -2477,7 +2633,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-2012 OpenTTD-teamet +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2014 OpenTTD-teamet # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Spara spel @@ -2496,6 +2652,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} @@ -2506,6 +2663,7 @@ STR_SAVELOAD_OSKTITLE :{BLACK}Mata in # World generation STR_MAPGEN_WORLD_GENERATION_CAPTION :{WHITE}Generera Värld STR_MAPGEN_MAPSIZE :{BLACK}Kartstorlek: +STR_MAPGEN_MAPSIZE_TOOLTIP :{BLACK}Ange kartans storlek i rutor. Antalet tillgängliga rutor kommer att bli något lägre STR_MAPGEN_BY :{BLACK}* STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Antal städer: STR_MAPGEN_DATE :{BLACK}Datum: @@ -2513,10 +2671,6 @@ STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Antal in 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: @@ -2543,7 +2697,6 @@ 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_SNOW_LINE_QUERY_CAPT :{WHITE}Ändra snögränsens höjd STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Ändra Startår @@ -2598,7 +2751,7 @@ 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_FILE_TOOLTIP :{BLACK}En lista med installerade NewGRF-filer. +STR_NEWGRF_SETTINGS_FILE_TOOLTIP :{BLACK}En lista med installerade NewGRF-filer STR_NEWGRF_SETTINGS_SET_PARAMETERS :{BLACK}Parametrar STR_NEWGRF_SETTINGS_SHOW_PARAMETERS :{BLACK}Visa parametrar @@ -2622,6 +2775,8 @@ 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 + # NewGRF parameters window STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}Ändra NewGRF parametrar STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Stäng @@ -2681,8 +2836,9 @@ STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Innehåller flera Action 8 (spriteobjekt {3:NUM}) STR_NEWGRF_ERROR_READ_BOUNDS :Läste förbi slutet av pseudo-spriteobjekt (spriteobjekt {3:NUM}) STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}Det aktiva grafikpaketet saknar ett antal bilder.{}Var vänlig och uppdatera grafikpaketet +STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}Det aktiva grafikpaketet saknar ett antal bilder.{}Var vänlig och uppdatera grafikpaketet.{}Eftersom du spelar en {YELLOW}utvecklings-version av OpenTTD{WHITE}, så kan du även behöva en {YELLOW}utvecklings-version av basgrafikpaketet{WHITE} STR_NEWGRF_ERROR_GRM_FAILED :Efterfrågade GRF-resurser är inte tillgängliga (spriteobjekt {3:NUM}) -STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} har inaktiverats av {STRING} +STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} har inaktiverats av {2:STRING} STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Felaktig/okänd layout-format av spriteobjekt (spriteobjekt {3:NUM}) # NewGRF related 'general' warnings @@ -2691,6 +2847,7 @@ STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}Du hål STR_NEWGRF_DUPLICATE_GRFID :{WHITE}Kan inte lägga till filen: redan existerande GRF ID STR_NEWGRF_COMPATIBLE_LOADED :{ORANGE}Matchande fil saknas (kompatibel GRF laddad) +STR_NEWGRF_TOO_MANY_NEWGRFS :{WHITE}Kan inte lägga till fil: Gränsen för NewGRF-filer uppnådd STR_NEWGRF_COMPATIBLE_LOAD_WARNING :{WHITE}Kompatibel GRF laddad för saknade filer STR_NEWGRF_DISABLED_WARNING :{WHITE}Saknad GRF-fil har stängts av @@ -2707,7 +2864,8 @@ 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_BROKEN_VEHICLE_LENGTH :{WHITE}Tåg '{VEHICLE}' som tillhör '{COMPANY}' har ogiltig länd. Detta orsakas förmodligen av problem med en NewGRF. Spelet kan desynkroniseras eller krascha +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 STR_NEWGRF_BUGGY_ARTICULATED_CARGO :{WHITE}Last/återställnings information för '{1:ENGINE}' är skilld ifrån köp lista efter konstruktion. Detta kan leda till att utomatisk förnyelse/uppgradering misslyckas med att anpassa fordonen/vagnarna korrekt @@ -2721,6 +2879,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... @@ -2802,10 +2963,14 @@ STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT :{YELLOW} Köp 1 STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW} Muta de lokala myndigheterna för att öka din värdering, med risk för att få höga böter om du blir upptäckt.{} Kostnad: {CURRENCY_LONG} # Goal window -STR_GOALS_CAPTION :{WHITE}Mål +STR_GOALS_CAPTION :{WHITE}{COMPANY} Mål +STR_GOALS_SPECTATOR_CAPTION :{WHITE}Globala mål STR_GOALS_GLOBAL_TITLE :{BLACK}Globala mål: STR_GOALS_TEXT :{ORANGE}{STRING} STR_GOALS_NONE :{ORANGE}- Inga - +STR_GOALS_SPECTATOR_NONE :{ORANGE}- Inte tillämpligt - +STR_GOALS_PROGRESS :{ORANGE}{STRING} +STR_GOALS_PROGRESS_COMPLETE :{GREEN}{STRING} STR_GOALS_COMPANY_TITLE :{BLACK}Företagsmål: STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Klicka på målet för att centrera huvudvyn på industrin/byn/rutan. Ctrl+klick gör så att ett nytt vyfönster öppnas över platsen för industrin/byn/rutan @@ -2844,6 +3009,18 @@ STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}Redan su STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING} från {STRING} till {STRING}{YELLOW} ({COMPANY}{YELLOW}, tills {DATE_SHORT}) STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Klicka för att centrera huvudvyn ovanför industrin/staden. Ctrl+klick öppnar en ny vy över industrin/stadens läge +# Story book window +STR_STORY_BOOK_CAPTION :{WHITE}{COMPANY} berättelsebok +STR_STORY_BOOK_SPECTATOR_CAPTION :{WHITE}Global berättelsebok +STR_STORY_BOOK_TITLE :{YELLOW}{STRING} +STR_STORY_BOOK_GENERIC_PAGE_ITEM :Sida {NUM} +STR_STORY_BOOK_SEL_PAGE_TOOLTIP :{BLACK}Hoppa till valfri sida genom att välja sidan i denna lista +STR_STORY_BOOK_PREV_PAGE :{BLACK}Föregående +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 STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}Håll nere Ctrl för att markera mer än en sak @@ -2857,9 +3034,9 @@ 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} på väg från {STATION}) +STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} från {STATION}) +STR_STATION_VIEW_RESERVED :{YELLOW}({CARGO_SHORT} reserverat för lastning) STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Accepterar STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Visa lista över accepterat gods @@ -2870,8 +3047,31 @@ STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPAN STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Värderingar STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Visa stationens klassificering -STR_STATION_VIEW_CARGO_RATINGS_TITLE :{BLACK}Lokal värdering av transporttjänster: -STR_STATION_VIEW_CARGO_RATING :{WHITE}{STRING}: {YELLOW}{STRING} ({COMMA}%) +STR_STATION_VIEW_SUPPLY_RATINGS_TITLE :{BLACK}Månadsvis tillförsel av gods och lokal värdering: +STR_STATION_VIEW_CARGO_SUPPLY_RATING :{WHITE}{STRING}: {YELLOW}{COMMA} / {STRING} ({COMMA}%) + +STR_STATION_VIEW_GROUP :{BLACK}Gruppera med hänsyn till +STR_STATION_VIEW_WAITING_STATION :Station: väntar +STR_STATION_VIEW_WAITING_AMOUNT :Mängd: väntar +STR_STATION_VIEW_PLANNED_STATION :Station: planerad +STR_STATION_VIEW_PLANNED_AMOUNT :Mängd: planerad +STR_STATION_VIEW_FROM :{YELLOW}{CARGO_SHORT} från {STATION} +STR_STATION_VIEW_VIA :{YELLOW}{CARGO_SHORT} via {STATION} +STR_STATION_VIEW_TO :{YELLOW}{CARGO_SHORT} till {STATION} +STR_STATION_VIEW_FROM_ANY :{RED}{CARGO_SHORT} från okänd station +STR_STATION_VIEW_TO_ANY :{RED}{CARGO_SHORT} till vilken station som helst +STR_STATION_VIEW_VIA_ANY :{RED}{CARGO_SHORT} via vilken station som helst +STR_STATION_VIEW_FROM_HERE :{GREEN}{CARGO_SHORT} från denna station +STR_STATION_VIEW_VIA_HERE :{GREEN}{CARGO_SHORT} stannar vid denna station +STR_STATION_VIEW_TO_HERE :{GREEN}{CARGO_SHORT} till denna station +STR_STATION_VIEW_NONSTOP :{YELLOW}{CARGO_SHORT} utan uppehåll + +STR_STATION_VIEW_GROUP_S_V_D :Källa-Via-Mål +STR_STATION_VIEW_GROUP_S_D_V :Källa-Mål-Via +STR_STATION_VIEW_GROUP_V_S_D :Via-Källa-Mål +STR_STATION_VIEW_GROUP_V_D_S :Via-Mål-Källa +STR_STATION_VIEW_GROUP_D_S_V :Mål-Källa-Via +STR_STATION_VIEW_GROUP_D_V_S :Mål-Via-Källa ############ range for rating starts STR_CARGO_RATING_APPALLING :Hemskt dålig @@ -2974,7 +3174,7 @@ STR_COMPANY_VIEW_COLOUR_SCHEME_TOOLTIP :{BLACK}Byt fär STR_COMPANY_VIEW_COMPANY_NAME_BUTTON :{BLACK}Företagsnamn STR_COMPANY_VIEW_COMPANY_NAME_TOOLTIP :{BLACK}Byt företagets namn STR_COMPANY_VIEW_PRESIDENT_NAME_BUTTON :{BLACK}Namn på VD -STR_COMPANY_VIEW_PRESIDENT_NAME_TOOLTIP :{BLACK}Byt VD:ns namn +STR_COMPANY_VIEW_PRESIDENT_NAME_TOOLTIP :{BLACK}Byt namn på VD:n STR_COMPANY_VIEW_BUY_SHARE_BUTTON :{BLACK}Köp 25% andelar i företaget STR_COMPANY_VIEW_SELL_SHARE_BUTTON :{BLACK}Sälj 25% andelar i företaget @@ -2998,7 +3198,6 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS :{WHITE}Kanaler STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}Stationer: STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}Stationsrutor STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}Flygplatser -STR_COMPANY_INFRASTRUCTURE_VIEW_COST :{WHITE}{1:CURRENCY_LONG}/år ({0:COMMA}) STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL :{WHITE}{CURRENCY_LONG}/år # Industry directory @@ -3015,6 +3214,7 @@ STR_INDUSTRY_VIEW_PRODUCTION_LAST_MONTH_TITLE :{BLACK}Produkti STR_INDUSTRY_VIEW_TRANSPORTED :{YELLOW}{CARGO_LONG}{STRING}{BLACK} ({COMMA}% transporterat) STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Centrera huvudvyn ovanför industrin. Ctrl+klick öppnar en ny vy över industrins läge STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Produktionsnivå: {YELLOW}{COMMA}% +STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}Industrin har annonserat att den snart kommer att stänga! ############ range for requires starts STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Kräver: {YELLOW}{STRING}{STRING} @@ -3077,12 +3277,14 @@ 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_ADD_SHARED_VEHICLE :Lägg till delade fordon STR_GROUP_REMOVE_ALL_VEHICLES :Ta bort alla fordon @@ -3236,7 +3438,7 @@ STR_ENGINE_PREVIEW_MONORAIL_LOCOMOTIVE :monorail-lok STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :maglev-lok STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Kostnad: {CURRENCY_LONG} Vikt: {WEIGHT_SHORT}{}Hastighet: {VELOCITY} Kraft {POWER}{}Löpande kostnad: {CURRENCY_LONG}/år{}Kapacitet: {CARGO_LONG} -STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}Kostnad: {CURRENCY_LONG} Vikt: {WEIGHT_SHORT}{}Hastighet: {VELOCITY} Effekt: {POWER} Max. T.E.: {6:FORCE}{}Löpande kostnad: {4:CURRENCY_LONG}/yr{}Kapacitet: {5:CARGO_LONG} +STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}Kostnad: {CURRENCY_LONG} Vikt: {WEIGHT_SHORT}{}Hastighet: {VELOCITY} Effekt: {POWER} Max. T.E.: {6:FORCE}{}Löpande kostnad: {4:CURRENCY_LONG}/år{}Kapacitet: {5:CARGO_LONG} STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST :{BLACK}Kostnad: {CURRENCY_LONG} Maxhastiget: {VELOCITY}{}Kapacitet: {CARGO_LONG}, {CARGO_LONG}{}Körkostnad: {CURRENCY_LONG}/år STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK}Kostnad: {CURRENCY_LONG} Maxhastiget: {VELOCITY}{}Kapacitet: {CARGO_LONG}{}Körkostnad: {CURRENCY_LONG}/år STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_CAPACITY_RUNCOST:{BLACK}Kostnad: {CURRENCY_LONG} Maxhastighet: {VELOCITY} Räckvidd: {COMMA} rutor{}Kapacitet: {CARGO_LONG}, {CARGO_LONG}{}Driftkostnad: {CURRENCY_LONG}/år @@ -3297,10 +3499,10 @@ STR_VEHICLE_VIEW_CLONE_AIRCRAFT_INFO :{BLACK}Köper e STR_VEHICLE_VIEW_TRAIN_IGNORE_SIGNAL_TOOLTIP :{BLACK}Tvinga tåg att fortsätta utan att vänta på signal -STR_VEHICLE_VIEW_TRAIN_REFIT_TOOLTIP :{BLACK}Anpassa tåg för att bära annan godstyp -STR_VEHICLE_VIEW_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}Anpassa vägfordon till att bära en annan sorts last -STR_VEHICLE_VIEW_SHIP_REFIT_TOOLTIP :{BLACK}Anpassa skepp för att frakta en annan godstyp -STR_VEHICLE_VIEW_AIRCRAFT_REFIT_TOOLTIP :{BLACK}Anpassa flygplan för att frakta en annan godstyp +STR_VEHICLE_VIEW_TRAIN_REFIT_TOOLTIP :{BLACK}Anpassa tåg till att frakta en annan sorts last +STR_VEHICLE_VIEW_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}Anpassa vägfordon till att frakta en annan sorts last +STR_VEHICLE_VIEW_SHIP_REFIT_TOOLTIP :{BLACK}Anpassa skepp till att frakta en annan sorts last +STR_VEHICLE_VIEW_AIRCRAFT_REFIT_TOOLTIP :{BLACK}Anpassa flygplan till att frakta en annan sorts last STR_VEHICLE_VIEW_TRAIN_REVERSE_TOOLTIP :{BLACK}Byt tågets riktning STR_VEHICLE_VIEW_ROAD_VEHICLE_REVERSE_TOOLTIP :{BLACK}Tvinga fordonet att vända om @@ -3378,6 +3580,11 @@ STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Servicei 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 +STR_SERVICE_INTERVAL_DROPDOWN_TOOLTIP :{BLACK}Ändra typ av service-intervall +STR_VEHICLE_DETAILS_DEFAULT :Standard +STR_VEHICLE_DETAILS_DAYS :Dagar +STR_VEHICLE_DETAILS_PERCENT :Procent + STR_QUERY_RENAME_TRAIN_CAPTION :{WHITE}Byt namn på tåg STR_QUERY_RENAME_ROAD_VEHICLE_CAPTION :{WHITE}Byt namn på vägfordon STR_QUERY_RENAME_SHIP_CAPTION :{WHITE}Byt namn på skepp @@ -3426,7 +3633,7 @@ STR_REFIT_SHIP_REFIT_BUTTON :{BLACK}Anpassa STR_REFIT_AIRCRAFT_REFIT_BUTTON :{BLACK}Anpassa flygplan STR_REFIT_TRAIN_REFIT_TOOLTIP :{BLACK}Anpassa tåg för att bära vald godstyp -STR_REFIT_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}Anpassa vägfordon till att bära markerad last +STR_REFIT_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}Anpassa vägfordon till att frakta markerad last STR_REFIT_SHIP_REFIT_TOOLTIP :{BLACK}Anpassa skepp för att frakta markerad godstyp STR_REFIT_AIRCRAFT_REFIT_TOOLTIP :{BLACK}Anpassa flygplan för att frakta markerad godstyp @@ -3466,8 +3673,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 @@ -3595,7 +3802,7 @@ 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_STAY_FOR :och stanna i {STRING} @@ -3613,7 +3820,7 @@ STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}Den här STR_TIMETABLE_STATUS_START_AT :{BLACK}Den här tidtabellen kommer starta {STRING} STR_TIMETABLE_STARTING_DATE :{BLACK}Startdatum -STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Välj ett datum som startpunkt för den här tidtabellen +STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Välj ett datum som startpunkt för den här tidtabellen. Om tidtabellen är fullt tidssatt så innebär Ctrl+klick att startpunkten sätts för denna tidtabell och att startpunkten för övriga fordon som delar dessa order fördelas ut jämt baserat på deras relativa ordning STR_TIMETABLE_CHANGE_TIME :{BLACK}Ändra Tid STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Ändra hur lång tid den markerade ordern bör ta @@ -3727,6 +3934,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 @@ -3747,8 +3956,12 @@ STR_INCOME_FLOAT_COST_SMALL :{TINY_FONT}{RED STR_INCOME_FLOAT_COST :{RED}Kostnad: {CURRENCY_LONG} STR_INCOME_FLOAT_INCOME_SMALL :{TINY_FONT}{GREEN}Inkomst: {CURRENCY_LONG} STR_INCOME_FLOAT_INCOME :{GREEN}Inkomst: {CURRENCY_LONG} -STR_FEEDER_TINY :{TINY_FONT}{YELLOW}Överförning: {CURRENCY_LONG} -STR_FEEDER :{YELLOW}Överförning: {CURRENCY_LONG} +STR_FEEDER_TINY :{TINY_FONT}{YELLOW}Överföring: {CURRENCY_LONG} +STR_FEEDER :{YELLOW}Överföring: {CURRENCY_LONG} +STR_FEEDER_INCOME_TINY :{TINY_FONT}{YELLOW}Överföring: {CURRENCY_LONG}{WHITE} / {GREEN}Inkomst: {CURRENCY_LONG} +STR_FEEDER_INCOME :{YELLOW}Överföring: {CURRENCY_LONG}{WHITE} / {GREEN}Inkomst: {CURRENCY_LONG} +STR_FEEDER_COST_TINY :{TINY_FONT}{YELLOW}Överföring: {CURRENCY_LONG}{WHITE} / {RED}Kostnad: {CURRENCY_LONG} +STR_FEEDER_COST :{YELLOW}Överföring: {CURRENCY_LONG}{WHITE} / {RED}Kostnad: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_COST :{WHITE}Uppskattad kostnad: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Uppskattad inkomst: {CURRENCY_LONG} @@ -3975,7 +4188,7 @@ STR_ERROR_MUST_REMOVE_SIGNALS_FIRST :{WHITE}Måste t STR_ERROR_NO_SUITABLE_RAILROAD_TRACK :{WHITE}Inget passande järnvägsspår STR_ERROR_MUST_REMOVE_RAILROAD_TRACK :{WHITE}Måste ta bort järnväg först STR_ERROR_CROSSING_ON_ONEWAY_ROAD :{WHITE}Vägen är enkelriktad eller blockerad -STR_ERROR_CROSSING_DISALLOWED :{WHITE}Planskilda korsningar är inte tillåtet för denna typ av spår +STR_ERROR_CROSSING_DISALLOWED :{WHITE}Plankorsningar är inte tillåtna för denna typ av spår STR_ERROR_CAN_T_BUILD_SIGNALS_HERE :{WHITE}Kan inte bygga signaler här... STR_ERROR_CAN_T_BUILD_RAILROAD_TRACK :{WHITE}Kan inte bygga järnvägsspår här... STR_ERROR_CAN_T_REMOVE_RAILROAD_TRACK :{WHITE}Kan inte ta bort järnvägspår här... @@ -4100,6 +4313,11 @@ STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}Kan inte STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... fordonet är förstört +STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL :{WHITE}Inga fordon alls kommer att vara tillgängliga +STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Ändra din konfiguration av NewGRF:er +STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}Inga fordon är tillgängliga än +STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Starta ett nytt spel efter {DATE_SHORT} eller använd en NewGRF som erbjuder tidiga fordon + # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Kan inte tillåta tåg att passera signal under fara... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Kan inte byta tågets riktning... @@ -4142,6 +4360,16 @@ STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}Kan inte # Translatable comment for OpenTTD's desktop shortcut STR_DESKTOP_SHORTCUT_COMMENT :Ett simuleringsspel baserat på Transport Tycoon Deluxe +# Translatable descriptions in media/baseset/*.ob* files +STR_BASEGRAPHICS_DOS_DESCRIPTION :Originalgrafiken från Transport Tycoon Deluxe, DOS-utgåvan. +STR_BASEGRAPHICS_DOS_DE_DESCRIPTION :Originalgrafiken från Transport Tycoon Deluxe, DOS-utgåvan (tyska). +STR_BASEGRAPHICS_WIN_DESCRIPTION :Originalgrafiken från Transport Tycoon Deluxe, Windows-utgåvan. +STR_BASESOUNDS_DOS_DESCRIPTION :Originalljuden från Transport Tycoon Deluxe, DOS-utgåvan. +STR_BASESOUNDS_WIN_DESCRIPTION :Originalljuden från Transport Tycoon Deluxe, Windows-utgåvan. +STR_BASESOUNDS_NONE_DESCRIPTION :Ett ljudpaket utan några ljud. +STR_BASEMUSIC_WIN_DESCRIPTION :Originalmusiken från Transport Tycoon Deluxe, Windows-utgåvan. +STR_BASEMUSIC_NONE_DESCRIPTION :Ett musikpaket utan någon musik. + ##id 0x2000 # Town building names STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1 :Högt kontor @@ -4264,7 +4492,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) @@ -4471,10 +4699,10 @@ STR_VEHICLE_NAME_SHIP_FFP_PASSENGER_FERRY :FFP Passagerarf STR_VEHICLE_NAME_SHIP_BAKEWELL_300_HOVERCRAFT :Bakewell 300 svävare STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :Chugger-Chug Passagerarfärja STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :Shivershake Passagerarfärja -STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :Yate Godsskepp -STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :Bakewell Godsskepp -STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :Mightymover Godsskepp -STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :Powernaut Godsskepp +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_POWERNAUT_CARGO_SHIP :Powernaut lastfartyg STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :Sampson U52 STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :Coleman Count STR_VEHICLE_NAME_AIRCRAFT_FFP_DART :FFP Dart @@ -4588,8 +4816,9 @@ 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_SPACE_STRING :{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} @@ -4613,9 +4842,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/tamil.txt b/src/lang/tamil.txt similarity index 69% rename from src/lang/unfinished/tamil.txt rename to src/lang/tamil.txt index d8a6bc529..14917f6a5 100644 --- a/src/lang/unfinished/tamil.txt +++ b/src/lang/tamil.txt @@ -21,7 +21,7 @@ ##id 0x0000 STR_NULL : STR_EMPTY : -STR_UNDEFINED :(undefined string) +STR_UNDEFINED :(விளக்கமளிக்கப்படாத தொடர்) STR_JUST_NOTHING :ஏதுமில்லை # Cargo related strings @@ -34,7 +34,7 @@ STR_CARGO_PLURAL_OIL :எண்ணெ STR_CARGO_PLURAL_LIVESTOCK :கால்நடைகள் STR_CARGO_PLURAL_GOODS :சரக்குகள் STR_CARGO_PLURAL_GRAIN :தானியம் -STR_CARGO_PLURAL_WOOD :மரங்கள் +STR_CARGO_PLURAL_WOOD :மரம் STR_CARGO_PLURAL_IRON_ORE :இரும்புத் தாது STR_CARGO_PLURAL_STEEL :எஃகு STR_CARGO_PLURAL_VALUABLES :மதிப்புள்ளவை @@ -45,14 +45,14 @@ STR_CARGO_PLURAL_DIAMONDS :வைரங் STR_CARGO_PLURAL_FOOD :உணவு STR_CARGO_PLURAL_PAPER :காகிதம் STR_CARGO_PLURAL_GOLD :தங்கம் -STR_CARGO_PLURAL_WATER :தண்ணீர் +STR_CARGO_PLURAL_WATER :நீர் STR_CARGO_PLURAL_WHEAT :கோதுமை -STR_CARGO_PLURAL_RUBBER :ரப்பர் +STR_CARGO_PLURAL_RUBBER :இறப்பர் STR_CARGO_PLURAL_SUGAR :சர்க்கரை 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 :பாட்டரிகள் @@ -66,7 +66,7 @@ STR_CARGO_SINGULAR_COAL :நிலக் STR_CARGO_SINGULAR_MAIL :அஞ்சல் STR_CARGO_SINGULAR_OIL :எண்ணெய் STR_CARGO_SINGULAR_LIVESTOCK :கால்நடை -STR_CARGO_SINGULAR_GOODS :சரக்குகள் +STR_CARGO_SINGULAR_GOODS :சரக்கு STR_CARGO_SINGULAR_GRAIN :தானியம் STR_CARGO_SINGULAR_WOOD :மரம் STR_CARGO_SINGULAR_IRON_ORE :இரும்புத் தாது @@ -81,12 +81,12 @@ STR_CARGO_SINGULAR_PAPER :காகித STR_CARGO_SINGULAR_GOLD :தங்கம் STR_CARGO_SINGULAR_WATER :தண்ணீர் STR_CARGO_SINGULAR_WHEAT :கோதுமை -STR_CARGO_SINGULAR_RUBBER :ரப்பர் +STR_CARGO_SINGULAR_RUBBER :இறப்பர் STR_CARGO_SINGULAR_SUGAR :சர்க்கரை 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 :மின்கலம் @@ -115,7 +115,7 @@ STR_QUANTITY_PAPER :{WEIGHT_LONG} STR_QUANTITY_GOLD :{COMMA} தங்க பை{P "" கள்} STR_QUANTITY_WATER :{VOLUME_LONG} தண்ணீர் STR_QUANTITY_WHEAT :{WEIGHT_LONG} கோதுமை -STR_QUANTITY_RUBBER :{VOLUME_LONG} ரப்பர் +STR_QUANTITY_RUBBER :{VOLUME_LONG} இறப்பர் STR_QUANTITY_SUGAR :{WEIGHT_LONG} சர்க்கரை STR_QUANTITY_TOYS :{COMMA} பொம்மை{P "" கள்} STR_QUANTITY_SWEETS :{COMMA} இனிப்பு பெட்டி{P "" கள்} @@ -199,27 +199,36 @@ STR_UNITS_POWER_IMPERIAL :{COMMA}hp STR_UNITS_POWER_METRIC :{COMMA}hp STR_UNITS_POWER_SI :{COMMA}kW +STR_UNITS_WEIGHT_SHORT_IMPERIAL :{COMMA}டன் STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}t STR_UNITS_WEIGHT_SHORT_SI :{COMMA}kg +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}l STR_UNITS_VOLUME_SHORT_SI :{COMMA}m³ +STR_UNITS_VOLUME_LONG_IMPERIAL :{COMMA} கேலன்{P "" கள்} STR_UNITS_VOLUME_LONG_METRIC :{COMMA} லிட்டர்{P "" கள்} 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} அடி +STR_UNITS_HEIGHT_METRIC :{COMMA} மீ STR_UNITS_HEIGHT_SI :{COMMA} m # 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 @@ -231,7 +240,7 @@ 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 @@ -255,7 +264,6 @@ STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}நீ # These are used in buttons -STR_SORT_BY_CAPTION_POPULATION :{BLACK}மக்கள் தொகை STR_SORT_BY_CAPTION_NAME :{BLACK}பெயர் STR_SORT_BY_CAPTION_DATE :{BLACK}தேதி # These are used in dropdowns @@ -276,7 +284,8 @@ STR_SORT_BY_LENGTH :நீளம் STR_SORT_BY_LIFE_TIME :மீதமிருக்கும் வாழ்நாள் STR_SORT_BY_TIMETABLE_DELAY :கால தாமதம் STR_SORT_BY_FACILITY :நிலைய வகை -STR_SORT_BY_WAITING :காத்திருக்கும் சரக்கின் அளவு +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 :இயந்திரம் அடையாளம் (வரிசை செய்) @@ -284,10 +293,12 @@ 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 :மக்கள் தொகை +STR_SORT_BY_RATING :மதிப்பீடு # Tooltips for the main toolbar STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}இடை நிறுத்து @@ -300,6 +311,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}ஓர் தொழிற்சாலையை கட்டு அல்லது தொழிற்சாலைகளின் பட்டியலை காட்டு @@ -313,12 +326,14 @@ 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}நிலப்பரப்பு கருவிப்பட்டையினைத் திறந்து, நிலத்தை உயர்த்த/தாழ்த்த, மரங்களை நட, மற்றவை etc. STR_TOOLBAR_TOOLTIP_SHOW_SOUND_MUSIC_WINDOW :{BLACK}இசை மையம் காண்பி STR_TOOLBAR_TOOLTIP_SHOW_LAST_MESSAGE_NEWS :{BLACK}கடைசி செய்தி அறிக்கை/தகவல்களை காட்டு, தகவல் விருப்பங்களை காட்டு STR_TOOLBAR_TOOLTIP_LAND_BLOCK_INFORMATION :{BLACK}நிலப்பகுதி விவரங்கள், console, வரிவடிவம் சர்பார்த்தல், திரைபிடிப்புகள்,OpenTTD பற்றி STR_TOOLBAR_TOOLTIP_SWITCH_TOOLBAR :{BLACK}கருவிப் பட்டை மாற்று # Extra tooltips for the scenario editor toolbar +STR_SCENEDIT_TOOLBAR_TOOLTIP_SAVE_SCENARIO_LOAD_SCENARIO :{BLACK}சித்திரக்காட்சியினை பதிவுசெய், பதிவேற்றவும், திருத்தியைவிட்டு வெளியேறவும், வெளியேறவும் STR_SCENEDIT_TOOLBAR_OPENTTD :{YELLOW}OpenTTD STR_SCENEDIT_TOOLBAR_SCENARIO_EDITOR :{YELLOW}சித்திரக்காட்சி திருத்தி STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_BACKWARD :{BLACK}ஆட்டத்தின் ஆரம்ப தேதியினை ஒரு வருடம் பின் நகர்த்து @@ -331,11 +346,13 @@ STR_SCENEDIT_TOOLBAR_INDUSTRY_GENERATION :{BLACK}தொ STR_SCENEDIT_TOOLBAR_ROAD_CONSTRUCTION :{BLACK}சாலை திருத்த வேலை STR_SCENEDIT_TOOLBAR_PLANT_TREES :{BLACK}மரங்களை நடு. Shift toggles கட்டடம்/மொத்த செலவுகள் STR_SCENEDIT_TOOLBAR_PLACE_SIGN :{BLACK}தகவல் பலகை வை +STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}பொருளினை இடவும். Shift அழுத்தினால் கட்டுமான/செலவு மதிப்பீடுகள் ############ range for SE file menu starts STR_SCENEDIT_FILE_MENU_SAVE_SCENARIO :சித்திரக்காட்சியை பதி STR_SCENEDIT_FILE_MENU_LOAD_SCENARIO :சித்திரக்காட்சியை ஏற்று STR_SCENEDIT_FILE_MENU_SAVE_HEIGHTMAP :வரைபடத்தினை சேமி +STR_SCENEDIT_FILE_MENU_LOAD_HEIGHTMAP :உயர்படத்தினை பதிவேற்றவும் STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :சித்திரக்காட்சி திருத்தியை விட்டுச் செல் STR_SCENEDIT_FILE_MENU_SEPARATOR : STR_SCENEDIT_FILE_MENU_QUIT :வெளியேறு @@ -355,6 +372,7 @@ 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 @@ -365,19 +383,18 @@ STR_FILE_MENU_SEPARATOR : STR_FILE_MENU_EXIT :வெளியேறு ############ range ends here -############ range for map menu starts +# map menu STR_MAP_MENU_MAP_OF_WORLD :உலகப் படம் STR_MAP_MENU_EXTRA_VIEW_PORT :கூடுதல் பார்வைபடம் STR_MAP_MENU_SIGN_LIST :குறிகளின் பட்டியல் -############ range for town menu starts, yet the town directory is shown in the map menu in the scenario editor + +############ range for town menu starts STR_TOWN_MENU_TOWN_DIRECTORY :நகர புத்தகம் -############ end of the 'Display map' dropdown STR_TOWN_MENU_FOUND_TOWN :நகரம் உருவாக்கு -############ end of the 'Town' dropdown +############ range ends here ############ range for subsidies menu starts STR_SUBSIDIES_MENU_SUBSIDIES :மானியங்கள் -STR_SUBSIDIES_MENU_GOAL :தற்போதைய குறிக்கோள்கள் ############ range ends here ############ range for graph menu starts @@ -392,10 +409,12 @@ STR_GRAPH_MENU_CARGO_PAYMENT_RATES :சரக்க ############ 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 @@ -440,12 +459,16 @@ STR_ABOUT_MENU_SEPARATOR : STR_ABOUT_MENU_TOGGLE_CONSOLE :முனையத்தை மாற்று STR_ABOUT_MENU_AI_DEBUG :AI/வரிவடிவம் சரிபார் STR_ABOUT_MENU_SCREENSHOT :திரைபிடிப்பு +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 :ஸ்ரைட்டு அலைனர் +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 @@ -461,22 +484,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 @@ -528,11 +569,13 @@ STR_GRAPH_CARGO_ENABLE_ALL :{TINY_FONT}{BLA 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}சரக்கு வகையினை graph இல் காட்டவும்/மறைக்கவும் STR_GRAPH_CARGO_PAYMENT_CARGO :{TINY_FONT}{BLACK}{STRING} STR_GRAPH_PERFORMANCE_DETAIL_TOOLTIP :{BLACK}விவரமான செயல்திறன் விவரங்களை காண்பி # Graph key window +STR_GRAPH_KEY_CAPTION :{WHITE}நிறுவன graph-களுக்கு பட்டியல் # Company league window STR_COMPANY_LEAGUE_TABLE_CAPTION :{WHITE}நிருவனங்களின் பட்டியல் @@ -542,6 +585,7 @@ 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 :ஜனாதிபதி STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TYCOON :டைகூன் @@ -566,10 +610,12 @@ 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_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_JAZZ_JUKEBOX_CAPTION :{WHITE}ஜாஸ் இசைக்கருவி @@ -580,6 +626,7 @@ STR_MUSIC_PLAYLIST_EZY_STREET :{TINY_FONT}{BLA STR_MUSIC_PLAYLIST_CUSTOM_1 :{TINY_FONT}{BLACK}பாடல்பட்டியல் 1 STR_MUSIC_PLAYLIST_CUSTOM_2 :{TINY_FONT}{BLACK}பாடல்பட்டியல் 2 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}' @@ -591,21 +638,44 @@ STR_MUSIC_TRACK :{TINY_FONT}{BLA 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}slider களை இழுத்தால் இசை மற்றும் ஒலி அளவுகளை அமைக்கலாம் +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_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}அழி +STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}தற்போதைய பிரோகிராமிலிருந்து இசைத்தடத்தினை நீக்க சொடுக்கவும் (பயனரால் மாற்றப்பட்ட1 அல்லது 2 மட்டும்) # Highscore window +STR_HIGHSCORE_TOP_COMPANIES_WHO_REACHED :{BIG_FONT}{BLACK}{NUM} அடைந்த சிறந்த நிறுவனங்கள் STR_HIGHSCORE_TOP_COMPANIES_NETWORK_GAME :{BIG_FONT}{BLACK}நிறுவனங்களின் பட்டியல் {NUM} STR_HIGHSCORE_POSITION :{BIG_FONT}{BLACK}{COMMA}. +STR_HIGHSCORE_PERFORMANCE_TITLE_BUSINESSMAN :வியாபாரி +STR_HIGHSCORE_PERFORMANCE_TITLE_ENTREPRENEUR :தொழில்முனைவோர் STR_HIGHSCORE_PERFORMANCE_TITLE_INDUSTRIALIST :தொழிலதிபர் -STR_HIGHSCORE_NAME :{BIG_FONT}{PRESIDENT_NAME}, {COMPANY} +STR_HIGHSCORE_PERFORMANCE_TITLE_CAPITALIST :முதலாளி +STR_HIGHSCORE_PERFORMANCE_TITLE_MAGNATE :மேன்மையர் +STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL :மொகல் +STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY :நூற்றாண்டின் டைக்கூன் +STR_HIGHSCORE_NAME :{PRESIDENT_NAME}, {COMPANY} STR_HIGHSCORE_STATS :{BIG_FONT}'{STRING}' ({COMMA}) +STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{BLACK}{COMPANY} '{STRING}' நிலையை அடைந்தது! +STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{WHITE}{PRESIDENT_NAME} {COMPANY} '{STRING}' நிலையை அடைந்தார்! # Smallmap window STR_SMALLMAP_CAPTION :{WHITE}வரைபடம் - {STRING} @@ -613,6 +683,7 @@ 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 :சொந்தக்காரர்கள் @@ -652,7 +723,10 @@ STR_SMALLMAP_LEGENDA_INDUSTRIES :{TINY_FONT}{BLA STR_SMALLMAP_LEGENDA_DESERT :{TINY_FONT}{BLACK}பாலைவனம் STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLACK}பனி +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}அனைத்தையும் செயலிழக்க செய் @@ -660,8 +734,11 @@ 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_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}கடைசி தகவல் அல்லது செய்தி அறிக்கையினை காட்டு @@ -695,15 +772,19 @@ STR_NEWS_PLANE_CRASH_OUT_OF_FUEL :{BIG_FONT}{BLAC 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}{TOWN} அருகில் 'UFO' தரையிறங்கியது! STR_NEWS_DISASTER_FLOOD_VEHICLE :{BIG_FONT}{BLACK}வெள்ளம்!{}குறைந்தபட்சம் {COMMA} பேர் காணவில்லை, வெள்ளத்தால் இறந்திருப்பார்கள் என்று அஞ்சப்படுகின்றது! STR_NEWS_COMPANY_IN_TROUBLE_TITLE :{BIG_FONT}{BLACK}போக்குவரத்து நிறுவனம் பிரச்சனையில் உள்ளது! +STR_NEWS_COMPANY_IN_TROUBLE_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} விரைவில் விற்கப்படும் அல்லது கடனில் மூழ்கியது என்று அறிவிக்கப்படும் இயக்கம் சிறப்படையவில்லை எனில்! 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_LAUNCH_TITLE :{BIG_FONT}{BLACK}புதிய நிறுவனம் தொடங்கப்பட்டது! STR_NEWS_COMPANY_LAUNCH_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} கட்டுமானங்களை தொடங்கியது {TOWN} அருகில்! +STR_NEWS_MERGER_TAKEOVER_TITLE :{BIG_FONT}{BLACK}{STRING} {STRING} இனால் வாங்கப்பட்டது! STR_PRESIDENT_NAME_MANAGER :{BLACK}{PRESIDENT_NAME}{}(மேலாளர்) STR_NEWS_NEW_TOWN :{BLACK}{BIG_FONT}{STRING} நிதியுதவி செய்தது புதிய நகரம் {TOWN} கட்டுவதற்கு! @@ -712,22 +793,27 @@ STR_NEWS_INDUSTRY_CONSTRUCTION :{BIG_FONT}{BLAC STR_NEWS_INDUSTRY_PLANTED :{BIG_FONT}{BLACK}ப்திய {STRING} தொடங்கப்படுகிறது {TOWN}அருகில்! STR_NEWS_INDUSTRY_CLOSURE_GENERAL :{BIG_FONT}{BLACK}{STRING} மூடப்படுவதாக அறிவித்துள்ளது! +STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS :{BIG_FONT}{BLACK}கொள்முதல் பிரச்சனைகளால் {STRING} உடனடியாக மூடப்படுகின்றது! +STR_NEWS_INDUSTRY_CLOSURE_LACK_OF_TREES :{BIG_FONT}{BLACK}அருகாமையில் மரங்கள் இல்லாதமையால் {STRING} உடனடியாக மூடப்படுகின்றது! +STR_NEWS_BEGIN_OF_RECESSION :{BIG_FONT}{BLACK}பொருளாதார மந்த நிலை!{}{}பொருளாதார நிபுணர்கள் மந்த நிலையை பார்த்து அஞ்சுகின்றனர்! +STR_NEWS_END_OF_RECESSION :{BIG_FONT}{BLACK}பொருளாதார மந்த நிலை முடிந்தது!{}{}பொருளாதாரம் வளர்ச்சியினைப் பார்த்து தொழிற்சாலைகள் மகிழ்ச்சியடைகின்றன! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL :{BIG_FONT}{BLACK}{INDUSTRY} உற்பத்தியை அதிகரித்தது! +STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_SMOOTH :{BIG_FONT}{BLACK}{STRING} தயாரிப்பு {INDUSTRY} இல் அதிகரித்தது {COMMA}%! STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL :{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_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} பழையதாகிறது @@ -735,7 +821,10 @@ STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD_AND :{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} மாற்றியமைப்பு கட்டளை நிறைவேற்றப்படாததால் நிறுத்தப்பட்டது +STR_NEWS_VEHICLE_AUTORENEW_FAILED :{WHITE}தானியங்கி புதுப்பித்தல் தோல்வியடைந்தது {VEHICLE} இன்{}{STRING} STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE :{BIG_FONT}{BLACK}புதிய {STRING} இப்போது கிடைக்கும்! STR_NEWS_NEW_VEHICLE_TYPE :{BIG_FONT}{BLACK}{ENGINE} @@ -746,12 +835,15 @@ STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO_OR_CARGO :{WHITE}{STATION STR_NEWS_STATION_NOW_ACCEPTS_CARGO :{WHITE}{STATION} இப்போது {STRING} ஏற்றுக்கொள்கிறது STR_NEWS_STATION_NOW_ACCEPTS_CARGO_AND_CARGO :{WHITE}{STATION} இப்போது {STRING} {STRING} ஆகியவற்றை ஏற்றுக்கொள்கிறது +STR_NEWS_OFFER_OF_SUBSIDY_EXPIRED :{BIG_FONT}{BLACK}மானியம் இனிமேல் தரப்படாது:{}{}{STRING} இருந்து {STRING} {STRING} வரை போக்குவரத்திற்கு மானியம் வழங்கப்படாது +STR_NEWS_ROAD_REBUILDING :{BIG_FONT}{BLACK}{TOWN}இல் சாலை போக்குவரத்து பாதிப்பு!{}{}Road rebuilding programme funded by {STRING} brings 6 months of misery to motorists! STR_NEWS_EXCLUSIVE_RIGHTS_TITLE :{BIG_FONT}{BLACK}போக்குவரத்து தனியுரிமை! STR_NEWS_EXCLUSIVE_RIGHTS_DESCRIPTION :{BIG_FONT}{BLACK}{TOWN} நகராட்சியின் முழு போக்குவரத்து உரிமைகளையும் ஒரு வருடத்திற்கு {STRING} வாங்கியுள்ளது! # Extra view window STR_EXTRA_VIEW_PORT_TITLE :{WHITE}பார்வைப் படம் {COMMA} +STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}பார்படத்திற்கு மாற்றவும் # Game options window STR_GAME_OPTIONS_CAPTION :{WHITE}ஆட்டத்தின் அமைப்புகள் @@ -767,6 +859,7 @@ STR_GAME_OPTIONS_CURRENCY_ATS :ஆஸ்தி STR_GAME_OPTIONS_CURRENCY_BEF :பெல்கிய ப்ரேங்க் (BEF) STR_GAME_OPTIONS_CURRENCY_CHF :சுவிஸ் ப்ரேங்க் (CHF) STR_GAME_OPTIONS_CURRENCY_CZK :செக் கொருணா (CZK) +STR_GAME_OPTIONS_CURRENCY_DEM :டச்மார்க் (DEM) STR_GAME_OPTIONS_CURRENCY_DKK :டேனிஷ் க்ரோன் (DKK) STR_GAME_OPTIONS_CURRENCY_ESP :ஸ்பானிஷ் பெசெடா (ESP) STR_GAME_OPTIONS_CURRENCY_FIM :பின்னிஷ் மார்க்கா (FIM) @@ -789,14 +882,11 @@ STR_GAME_OPTIONS_CURRENCY_EEK :எஸ்டோ STR_GAME_OPTIONS_CURRENCY_LTL :லிதுவேனிய லிடாஸ் (LTL) STR_GAME_OPTIONS_CURRENCY_KRW :தென்கொரிய வொன் (KRW) STR_GAME_OPTIONS_CURRENCY_ZAR :தென் ஆப்பிரிக்க ரான்ட் (ZAR) +STR_GAME_OPTIONS_CURRENCY_CUSTOM :புதிதாக... ############ end of currency region -STR_GAME_OPTIONS_MEASURING_UNITS_FRAME :{BLACK}அளவிடும் பிரிவுகள் -STR_GAME_OPTIONS_MEASURING_UNITS_DROPDOWN_TOOLTIP :{BLACK}அளவிடும் பிரிவு தேர்ந்தெடுத்தல் ############ start of measuring units region -STR_GAME_OPTIONS_MEASURING_UNITS_METRIC :மெட்ரிக் -STR_GAME_OPTIONS_MEASURING_UNITS_SI :SI ############ end of measuring units region STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}சாலை வாகனங்கள் @@ -805,6 +895,7 @@ 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}நகர பெயர்கள் பாணியினைத் தேர்ந்தெடுக்கவும் ############ start of townname region STR_GAME_OPTIONS_TOWN_NAME_ORIGINAL_ENGLISH :ஆங்கிலம் (இயற்கையான) @@ -832,11 +923,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}பயன்படுத்தப்போகும் மொழியினை தேர்ந்தெடு @@ -844,10 +937,9 @@ STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}பய STR_GAME_OPTIONS_FULLSCREEN :{BLACK}முழு படம் 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_BASE_GRF :{BLACK}அடிப்படை அசைவூட்டம் STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}பயன்படுத்தப்போகும் அடிப்படை அசைவூட்டத்தினை தேர்ந்தெடுக்கவும் STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} இல்லாத/பிழையான கோப்பு{P "" கள்} @@ -868,7 +960,11 @@ STR_ERROR_FULLSCREEN_FAILED :{WHITE}மு STR_CURRENCY_WINDOW :{WHITE}புது நாணயம் STR_CURRENCY_EXCHANGE_RATE :{LTBLUE}நாணயமாற்று விகிதம்: {ORANGE}{CURRENCY_LONG} = £ {COMMA} +STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}உங்கள் நாணய மதிப்பினை ஒரு பவுண்டு (£) அளவு குறைக்கவும் +STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}உங்கள் நாணய மதிப்பினை ஒரு பவுண்டு (£) அளவு அதிகரிக்கவும் +STR_CURRENCY_SET_EXCHANGE_RATE_TOOLTIP :{BLACK}உங்களது நாணயத்தின் நாணயமாற்று விகிதத்தை ஒரு பவுண்டாக (£) அமைக்கவும் +STR_CURRENCY_SEPARATOR :{LTBLUE}பிரிப்பான்: {ORANGE}{STRING} STR_CURRENCY_PREFIX :{LTBLUE}முன் ஒட்டு: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_PREFIX_TOOLTIP :{BLACK}உங்கள் நாணயத்தின் முன் ஒட்டத்தினை அமையுங்கள் @@ -882,6 +978,8 @@ STR_CURRENCY_DECREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}யூ STR_CURRENCY_INCREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}யூரோவிற்கு தாமதமாக மாறுங்கள் STR_CURRENCY_PREVIEW :{LTBLUE}முன்னோட்டம்: {ORANGE}{CURRENCY_LONG} +STR_CURRENCY_CUSTOM_CURRENCY_PREVIEW_TOOLTIP :{BLACK}10000 பவுண்டு (£) உங்க்ள் நாணயத்தில் +STR_CURRENCY_CHANGE_PARAMETER :{BLACK}பயனரால் மாற்றப்பட்ட பண குணாதிசயங்களை மாற்று STR_DIFFICULTY_LEVEL_SETTING_MAXIMUM_NO_COMPETITORS :{LTBLUE}அதிகபட்ச போட்டியாளர்கள்: {ORANGE}{COMMA} @@ -893,6 +991,7 @@ STR_NUM_LOW :குறைவ STR_NUM_NORMAL :இயல்பான STR_NUM_HIGH :அதிகம் STR_NUM_CUSTOM :மாற்றியமைத்த +STR_NUM_CUSTOM_NUMBER :மாற்றியமைத்த ({NUM}) STR_VARIETY_NONE :ஒன்றுமில்லை STR_VARIETY_VERY_LOW :மிகவும் குறைவு @@ -911,6 +1010,7 @@ STR_SEA_LEVEL_VERY_LOW :மிகவு STR_SEA_LEVEL_LOW :குறைந்த STR_SEA_LEVEL_MEDIUM :நடுத்தரம் STR_SEA_LEVEL_HIGH :உயர்ந்த +STR_SEA_LEVEL_CUSTOM :மாற்றியமைத்த STR_SEA_LEVEL_CUSTOM_PERCENTAGE :Custom ({NUM}%) STR_RIVERS_NONE :ஒன்றுமில்லை @@ -932,6 +1032,9 @@ STR_TERRAIN_TYPE_FLAT :சமமான STR_TERRAIN_TYPE_HILLY :உயர்ந்து STR_TERRAIN_TYPE_MOUNTAINOUS :மலைகளாக +STR_CITY_APPROVAL_PERMISSIVE :அனுமதிதரும் +STR_CITY_APPROVAL_TOLERANT :பொறுத்துக்கொள்ளும் +STR_CITY_APPROVAL_HOSTILE :அனுமதிக்காது # Advanced settings window @@ -942,21 +1045,27 @@ STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}அன 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 :Client அமைப்புகள் (பதிவு செய்யப்படாது; அனைத்து ஆட்டங்களையும் மாற்றும்) 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_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_ALL :அனைத்து அமைப்புகள் +STR_CONFIG_SETTING_TYPE_DROPDOWN_HELPTEXT :{BLACK}கீழுள்ள பட்டியலினை குறிப்பிட்ட அமைப்பு வகைகளுக்கு குறைக்கும் +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 @@ -975,43 +1084,81 @@ 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_INTEREST_RATE :வட்டி: {STRING} +STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :கடன் வட்டி;செயற்படுத்தினால் பணவீக்கத்தினையும் கட்டுப்படுத்தும் STR_CONFIG_SETTING_RUNNING_COSTS :இயங்குவதற்கான செலவுகள்: {STRING} +STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT :வாகன மற்றும் சொத்து பழுதுபார்த்தல் அளவினையும் ஓட்டும் செலவுகளையும் அமை STR_CONFIG_SETTING_CONSTRUCTION_SPEED :கட்டுமானங்களின் வேகம்: {STRING} +STR_CONFIG_SETTING_CONSTRUCTION_SPEED_HELPTEXT :AI களின் கட்டுமானங்களின் எண்ணிக்கையினை கட்டுப்படுத்தவும் 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} +STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :கட்டுமான அளவு மற்றும் வாங்கும் செலவுகள் ஆகியவற்றை அமை STR_CONFIG_SETTING_RECESSIONS :பொருளதாரத் தேக்கங்கள்: {STRING} +STR_CONFIG_SETTING_TRAIN_REVERSING :நிலையங்களில் இரயில்களை திருப்புவதை அனுமதிக்காதே: {STRING} STR_CONFIG_SETTING_DISASTERS :பேரழிவுகள்: {STRING} +STR_CONFIG_SETTING_CITY_APPROVAL :நகர மறு அமைப்பின் மீது நகராட்சியின் நிலை: {STRING} -STR_CONFIG_SETTING_BUILDONSLOPES :கரைகளிலும் சரிவுகளிலும் கட்ட அனுமதி: {STRING} +STR_CONFIG_SETTING_EXTRADYNAMITE :நகரத்தின் சாலைகள், பாலங்கள் மற்றும் சுரங்கங்களை நீக்க அனுமதிக்கவும்: {STRING} +STR_CONFIG_SETTING_EXTRADYNAMITE_HELPTEXT :நகராட்சியின் கட்டடங்கள் நீக்குவதை எளிதாக்கவும் STR_CONFIG_SETTING_TRAIN_LENGTH :இரயில்களின் அதிகபட்ச நீளம்: {STRING} STR_CONFIG_SETTING_TRAIN_LENGTH_HELPTEXT :இரயில்களின் அதிகபட்ச நீளத்தினை அமை STR_CONFIG_SETTING_TILE_LENGTH :{COMMA} கட்டம்{P 0 "கட்டம்" "கட்டங்கள்"} +STR_CONFIG_SETTING_SMOKE_AMOUNT :வாகனங்களின் புகை/பொறிகள் எண்ணிக்கை: {STRING} +STR_CONFIG_SETTING_SMOKE_AMOUNT_HELPTEXT :வாகனங்கள் வெளியிடும் தீப்பொறி அல்லது புகையின் அளவினை அமை +STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL :இரயிலின் வேக அமைப்பு: {STRING} +STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL :சாலை வாகன வேக அமைப்பு: {STRING} +STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS :இரயில்களின் மலை ஏறுதல் வேகத்தடை: {STRING} +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_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_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_NONE :ஒன்றுமில்லை STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :மற்ற தொழிற்சாலைகளைப் போல +STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :எங்கேயாவது +STR_CONFIG_SETTING_INDUSTRY_PLATFORM :தொழிற்சாலைகள் அருகே உள்ள சம நிலங்கள்: {STRING} STR_CONFIG_SETTING_MULTIPINDTOWN :ஒரே மாதிரியான தொழிற்சாலைகளை அதே நகரத்தில் நிறுவ அனுமதி: {STRING} +STR_CONFIG_SETTING_SIGNALSIDE :சிக்னல்களைக் காட்டவும்: {STRING} +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_NONSTOP_BY_DEFAULT :புதிய கட்டளைகள் 'எங்கும்-நிற்காதே' என்று குறிக்கப்படும்: {STRING} +STR_CONFIG_SETTING_STOP_LOCATION :பிளாட்பாரத்தின் {STRING} இல் நிற்கும், புதிய கட்டளைகள்படி +STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :அருகே உள்ள முடிவில் STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :நடு +STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :தொலைவில் உள்ள முடிவில் +STR_CONFIG_SETTING_AUTOSCROLL :ஒட்டில் எலி இருக்கும்பொழுது திரையினை நகர்த்தவும் : {STRING} STR_CONFIG_SETTING_AUTOSCROLL_DISABLED :செயலிழக்க செய்யப்பட்டது STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT_FULLSCREEN :முக்கிய திரைபார்வை, முழுத்திரையில் மட்டும் STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT :முக்கிய திரைபார்வை STR_CONFIG_SETTING_AUTOSCROLL_EVERY_VIEWPORT :ஒவ்வொரு திரைபார்வையும் STR_CONFIG_SETTING_BRIBE :நகராட்சிக்கு கையூட்டுத் தர அனுமதி: {STRING} +STR_CONFIG_SETTING_ALLOW_EXCLUSIVE :போக்குவரத்து உரிமைகளை விற்க அனுமதிக்கவும்: {STRING} 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_GIVE_MONEY :மற்ற நிறுவனங்களுக்கு பணம் அனுப்ப அனுமதி: {STRING} +STR_CONFIG_SETTING_FREIGHT_TRAINS :பெரிய இரயில்களின் சரக்குகளுக்கு எடை பெருக்கி: {STRING} +STR_CONFIG_SETTING_PLANE_SPEED :விமான வேக பெருக்கி: {STRING} +STR_CONFIG_SETTING_PLANE_SPEED_VALUE :1 / {COMMA} STR_CONFIG_SETTING_PLANE_CRASHES :விமான விபத்துகளின் எண்ணிக்கை: {STRING} +STR_CONFIG_SETTING_PLANE_CRASHES_HELPTEXT :விமான விபத்து நிகழ்வதற்கான வாய்ப்புகளை அமை STR_CONFIG_SETTING_PLANE_CRASHES_NONE :ஒன்றுமில்லை STR_CONFIG_SETTING_PLANE_CRASHES_REDUCED :குறைக்கப்பட்ட STR_CONFIG_SETTING_PLANE_CRASHES_NORMAL :இயல்பான -STR_CONFIG_SETTING_ADJACENT_STATIONS :நிலையங்களை ஒட்டி கட்ட அனுமதி: {STRING} +STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :வழிசெல்லக்கூடிய சாலை நிறுத்தங்களை நகராட்சியின் சாலைகளில் அமைக்க அனுமதி: {STRING} STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}வாகனங்கள் இருக்கும் பொது இந்த அமைப்பினை மாற்ற இயலாது STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :கட்டட பராமரிப்பு: {STRING} @@ -1026,35 +1173,94 @@ STR_CONFIG_SETTING_WARN_INCOME_LESS :வாகனம STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :வாகனங்கள் என்றும் காலாவதியாகாது: {STRING} STR_CONFIG_SETTING_AUTORENEW_VEHICLE :வாகனங்கள் காலாவதியானால் தானாக மாற்றியமை: {STRING} STR_CONFIG_SETTING_AUTORENEW_VEHICLE_HELPTEXT :செயலாக்க செய்யப்பட்டால், வாகனங்கள் காலாவதியாவதற்கு முன்னால் தானாக மாற்றியமைக்கப்படும் +STR_CONFIG_SETTING_AUTORENEW_MONTHS :தானாக புதுப்பிக்கவும் வாகனத்தின் {STRING} அதிக. வயது +STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_BEFORE :{COMMA} மாத{P 0 "ம்" ங்கள்} முன்னர் +STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_AFTER :{COMMA} மாத{P 0 "ம்" ங்கள்} பின்னர் STR_CONFIG_SETTING_AUTORENEW_MONEY :காலாவதியான வாகனங்களை மாற்றியமைக்கத் தேவையான பணம்: {STRING} +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_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_LAND_GENERATOR :நில உருவாக்கி: {STRING} STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :உண்மையான STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis +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_TREE_PLACER :மரங்கள் நடும் வகை: {STRING} STR_CONFIG_SETTING_TREE_PLACER_NONE :ஒன்றுமில்லை STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :உண்மையான -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES_HELPTEXT :முடக்கப்பட்டால், வரைபடத்தின் எல்லைகள் கடலாகவே இருக்கும் - +STR_CONFIG_SETTING_TREE_PLACER_IMPROVED :சீரமைக்கப்பட்ட +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_EDGES_NOT_EMPTY :{WHITE}வடதுருவத்தில் ஒன்று அல்லது அதற்கு மேற்பட்ட கட்டங்கள் காலியாக இல்லை + +STR_CONFIG_SETTING_STATION_SPREAD :அதிக. நிலைய விரிப்பு: {STRING} +STR_CONFIG_SETTING_SERVICEATHELIPAD :ஹெலிகாப்ப்டர்களை தானாக சரிபார்ர்க்கவும்: {STRING} +STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR :சிறுபடத்தில் பயன்படுத்திய நில நிறம்: {STRING} +STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :சிறுபடத்தில் நிலப்பகுதியின் நிறம் STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :பச்சை +STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :கரும் பச்சை +STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :ஊதா +STR_CONFIG_SETTING_REVERSE_SCROLLING :திருப்பப்பட்ட பக்கமுருட்டி திசை : {STRING} +STR_CONFIG_SETTING_SMOOTH_SCROLLING :பார்படத்தின் இலகுவான பக்கமுருட்டல்: {STRING} +STR_CONFIG_SETTING_LIVERIES :நிறுவன livery களைக் காட்டு: {STRING} STR_CONFIG_SETTING_LIVERIES_NONE :ஒன்றுமில்லை +STR_CONFIG_SETTING_LIVERIES_OWN :சொந்த நிறுவனம் STR_CONFIG_SETTING_LIVERIES_ALL :அனைத்து நிறுவனங்களும் +STR_CONFIG_SETTING_PREFER_TEAMCHAT :குழு அரட்டையின் விரும்பு : {STRING} +STR_CONFIG_SETTING_SCROLLWHEEL_ZOOM :படத்தினை உள்நோக்கு +STR_CONFIG_SETTING_SCROLLWHEEL_SCROLL :வரைபடத்தினை உருட்டு +STR_CONFIG_SETTING_SCROLLWHEEL_OFF :அணை +STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER :வரைபட உருட்டல் வேகம்: {STRING} +STR_CONFIG_SETTING_OSK_ACTIVATION :திரை தட்டச்சுப்பலகை: {STRING} 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_NEWGRF_DEFAULT_PALETTE_DOS :டாஸ் வண்ணத்தட்டு -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_WIN :விண்டோஸ் வண்ணத்தட்டு - +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 :அணை + + + +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_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_TIMETABLE_SHOW_ARRIVAL_DEPARTURE :கால அட்டவணைகளில் காலங்களைக் காட்டவும்: {STRING} +STR_CONFIG_SETTING_QUICKGOTO :வாகன கட்டளைகளை விரிவாக உருவாக்கவும்: {STRING} +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_PERSISTENT_BUILDINGTOOLS :பயன்படுத்திய கட்டுமான செயல்களை செயற்பாட்டிலேயே வைத்திருக்கவும்: {STRING} STR_CONFIG_SETTING_SOUND_TICKER :செய்தி கடிகாரம்: {STRING} +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} @@ -1065,22 +1271,47 @@ STR_CONFIG_SETTING_SOUND_DISASTER :பேரழி STR_CONFIG_SETTING_SOUND_DISASTER_HELPTEXT :விபத்துகள் மற்றும் பேரழிவுகளின் ஒலிகளைச் செயலாக்கு STR_CONFIG_SETTING_SOUND_VEHICLE :வாகனங்கள்: {STRING} STR_CONFIG_SETTING_SOUND_VEHICLE_HELPTEXT :வாகனங்களின் இசைகளை செயலாக்கு +STR_CONFIG_SETTING_SOUND_AMBIENT :Ambient: {STRING} STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING :தகுந்த வாகனம் இல்லாதபோது Disable infrastructure building: {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_AIRCRAFT_HELPTEXT :ஒரு நிறுவனத்தால் வைத்திருக்கக்கூடிய அதிகபட்ச விமானங்கள் எண்ணிக்கை +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_AIRCRAFT :கணினியிற்கு விமானங்களை அனுமதிக்காதே: {STRING} +STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT_HELPTEXT :கணினியால் விமானங்களை பயன்படுத்த இயலாது +STR_CONFIG_SETTING_AI_BUILDS_SHIPS :கணினியிற்கு கப்பல்களை அனுமதிக்காதே: {STRING} +STR_CONFIG_SETTING_AI_BUILDS_SHIPS_HELPTEXT :கணினியால் கப்பல்களை பயன்படுத்த இயலாது STR_CONFIG_SETTING_AI_PROFILE_EASY :எளிதான STR_CONFIG_SETTING_AI_PROFILE_MEDIUM :நடுத்தரமான 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_DISABLED :செயலிழக்க செய்யப்பட்டது +STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES :சாலை வாகனங்களின் பழுதுபார்த்தல் இடைவேளி: {STRING} +STR_CONFIG_SETTING_SERVINT_AIRCRAFT :விமாங்களின் பழுதுபார்த்தல் இடைவேளி: {STRING} +STR_CONFIG_SETTING_SERVINT_SHIPS :கப்பல்களின் பழுதுபார்த்தல் இடைவேளி: {STRING} +STR_CONFIG_SETTING_NOSERVICE :பழுதுகள் இல்லையெனில் பழுதுபார்த்தலினை செயலிழக்கவும்: {STRING} +STR_CONFIG_SETTING_WAGONSPEEDLIMITS :பெட்டி வேக கட்டுப்பாட்டினை செயல்படுத்தவும்: {STRING} +STR_CONFIG_SETTING_DISABLE_ELRAILS :மின்சார இரயில்களை அனுமதிக்காதே: {STRING} STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN :விளையாடுபவரின் நிலையத்திற்கு முதல் வாகனம் வருகை புரிந்தது: {STRING} STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER :போட்டியாளரின் நிலையத்திற்கு முதல் வாகனம் வருகை புரிந்தது: {STRING} 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_INDUSTRY_OPEN :தொழிற்சாலைகளின் திறப்பு: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN_HELPTEXT :தொழிற்சாலைகள் திறக்கப்படும்போது செய்தித்தாளினைக் காட்டு @@ -1089,96 +1320,184 @@ 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_UNSERVED :மற்ற தொழிற்சாலைகளின் உற்பத்தி மாற்றங்கள்: {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 :புதிய வாகன வகைகள் வெளிவரும்போது செய்தித்தாளினை காட்டு +STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE :சரக்கு ஏற்றுக்கொள்தலின் மாற்றங்கள்: {STRING} STR_CONFIG_SETTING_NEWS_SUBSIDIES :மானியங்கள்: {STRING} +STR_CONFIG_SETTING_NEWS_SUBSIDIES_HELPTEXT :மானியம் தொடர்பான நிகழ்வுகள் பற்றி செய்தித்தாளினைக் காட்டவும் STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION :பொதுவான விவரம்: {STRING} 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_STARTING_YEAR :தொடங்கும் வருடம்: {STRING} +STR_CONFIG_SETTING_SMOOTH_ECONOMY :இயல்பான பொருளாதாரத்தினைச் செயல்படுத்தவும் (அதிகமான, சிறிய மாற்றங்கள்): {STRING} +STR_CONFIG_SETTING_ALLOW_SHARES :மற்ற நிறுவனங்களின் பங்குகளை வாங்குவதை அனுமதிக்கவும்: {STRING} +STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY :இழுத்தால், சிக்னல்களை இடவும், ஒவ்வொறு: {STRING} +STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_VALUE :{COMMA} கட்ட{P 0 "ம்" ங்கள்} +STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE :இழுக்கும்போது, சிக்னல்களுக்கு இடையே சீரான இடைவேளியினை விடவும்: {STRING} +STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :தானாக semaphore-களைக் கட்டவும், முன்னர்: {STRING} +STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI :சிக்னள் GUI இனை செயல்படுத்தவும்: {STRING} +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_NORMAL :கட்ட சிக்னல்கள் மட்டும் +STR_CONFIG_SETTING_CYCLE_SIGNAL_PBS :பாதை சிக்னல்கள் மட்டும் STR_CONFIG_SETTING_CYCLE_SIGNAL_ALL :அனைத்தும் +STR_CONFIG_SETTING_TOWN_LAYOUT :புதிய நகரங்களுக்கான சாலை கட்டங்கள்: {STRING} +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_ALLOW_TOWN_ROADS :நகரங்கள் சாலைகளை கட்ட அனுமதி: {STRING} 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_TOWN_FOUNDING :ஆட்டத்தில் நகரங்களை நிறுவ அனுமதி: {STRING} +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 :அனுமதிக்கப்படுகிறது, ஆனால் மாற்றியமைக்கப்பட்ட நகர அமைப்பு +STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT :ஆட்டத்தின் போது மரங்களை நடுதல்: {STRING} +STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NONE :ஒன்றுமில்லை {RED}(மர மில்லை உடைக்கும்) +STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_RAINFOREST :மழைக் காடுகளில் மட்டும் STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_ALL :எங்கும் +STR_CONFIG_SETTING_TOOLBAR_POS :முக்கிய toolbarஇன் அமைப்பு இடம்: {STRING} +STR_CONFIG_SETTING_STATUSBAR_POS :status barஇன் அமைப்பு இடம்: {STRING} STR_CONFIG_SETTING_SNAP_RADIUS_VALUE :{COMMA} பிக்சல்{P 0 "" கள்} STR_CONFIG_SETTING_SNAP_RADIUS_DISABLED :செயலிழக்க செய்யப்பட்டது STR_CONFIG_SETTING_SOFT_LIMIT_VALUE :{COMMA} STR_CONFIG_SETTING_SOFT_LIMIT_DISABLED :செயலிழக்க செய்யப்பட்டது +STR_CONFIG_SETTING_ZOOM_MIN :அதிகபட்ச உள்நோக்கு அளவு: {STRING} +STR_CONFIG_SETTING_ZOOM_MAX :அதிகபட்ச வெளிநோக்கு அளவு: {STRING} STR_CONFIG_SETTING_ZOOM_LVL_MIN :4x STR_CONFIG_SETTING_ZOOM_LVL_IN_2X :2x STR_CONFIG_SETTING_ZOOM_LVL_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 :நகர வளர்ச்சி வேகம்: {STRING} +STR_CONFIG_SETTING_TOWN_GROWTH_HELPTEXT :நகர வளர்ச்சி வேகம் STR_CONFIG_SETTING_TOWN_GROWTH_NONE :ஒன்றுமில்லை STR_CONFIG_SETTING_TOWN_GROWTH_SLOW :மெதுவாக STR_CONFIG_SETTING_TOWN_GROWTH_NORMAL :சாதாரணமாக STR_CONFIG_SETTING_TOWN_GROWTH_FAST :வேகமாக STR_CONFIG_SETTING_TOWN_GROWTH_VERY_FAST :அதிவேகமாக +STR_CONFIG_SETTING_LARGER_TOWNS :நகரங்கள் மாநகரங்கள் ஆகும் வாய்ப்பு: {STRING} +STR_CONFIG_SETTING_LARGER_TOWNS_VALUE :1 in {COMMA} STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :ஒன்றுமில்லை +STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :தொடக்க நகர அளவு பெருக்கம்: {STRING} +STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :ஆட்டத்தின் தொடக்கத்தில் மாநகரங்களின் அளவு நகரங்களை ஒப்பிடுகையில் + +STR_CONFIG_SETTING_DISTRIBUTION_PAX :பயணிகள் பரிமாற்றம் வகை: {STRING} +STR_CONFIG_SETTING_DISTRIBUTION_MAIL :அஞ்சல் பரிமாற்றம் வகை: {STRING} + +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :வேக அலகுகள்: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_IMPERIAL :இம்பீரியல் (mph) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_METRIC :மெட்ரிக் (கி.மீ/மணிநேரம்) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_SI :SI (மீ/நொடி) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER :வாகன திறன் பிரிவுகள்: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_IMPERIAL :இம்பீரியல் (கு.ஆ) +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_METRIC :மெட்ரிக் (கு.ஆ) +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_SI :SI (கி.வாட்) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT :எடை பிரிவுகள்: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_IMPERIAL :இம்பீரியல் (சுருக்கம் ட/டன்) +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_METRIC :மெட்ரிக் (ட/டன்) +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_SI :SI (கி.கி) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME :கன அளவு பிரிவுகள்: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_IMPERIAL :இம்பீரியல் (gal) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_METRIC :மெட்ரிக் (I) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_SI :SI (மீ³) -STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}கட்டுமானம் +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 :இம்பீரியல் (அடி) +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :மெட்ரிக் (மீ) +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI (மீ) + +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_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_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_SERVICING :{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 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_SHIPS :கப்பல்களுக்கான வழிகண்டுபிடிப்பான்: {STRING} +STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT :கப்பல்கள் பயன்படுத்தப்போகும் வழிகண்டுபிடிப்பான் STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :சிக்னல்களில் தானியங்கி மீட்சி: {STRING} STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}அமைப்பின் மதிப்பினை மாற்று # Config errors +STR_CONFIG_ERROR :{WHITE}அமைப்புவடிவாக்கம் கோப்பில் பிழை... +STR_CONFIG_ERROR_ARRAY :{WHITE}... '{STRING}' இல் பிழை +STR_CONFIG_ERROR_INVALID_VALUE :{WHITE}... செல்லாத மதிப்பு '{STRING}' '{STRING}' இற்கு +STR_CONFIG_ERROR_INVALID_GRF :{WHITE}... பயன்படுத்த இயலாத NewGRF இனை பயன்படுத்தவில்லை '{STRING}': {STRING} STR_CONFIG_ERROR_INVALID_GRF_NOT_FOUND :கிடைக்கவில்லை STR_CONFIG_ERROR_INVALID_GRF_SYSTEM :கணினி NewGRF +STR_CONFIG_ERROR_INVALID_GRF_INCOMPATIBLE :இந்த OpenTTD பதிப்புடன் பயன்படுத்த இயலாது STR_CONFIG_ERROR_INVALID_GRF_UNKNOWN :தெரியவில்லை 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} STR_INTRO_NEW_GAME :{BLACK}புது விளையாட்டு STR_INTRO_LOAD_GAME :{BLACK}ஆட்டத்தை ஏற்று +STR_INTRO_PLAY_SCENARIO :{BLACK}சித்திரக்காட்சியில் விளையாடு +STR_INTRO_PLAY_HEIGHTMAP :{BLACK}உயர்படத்தில் விளையாடு +STR_INTRO_SCENARIO_EDITOR :{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 / ஆட்டம் அமைப்புகள் STR_INTRO_QUIT :{BLACK}வெளியேறு +STR_INTRO_TOOLTIP_NEW_GAME :{BLACK}புதிய ஆட்டத்தினைத் தொடங்கும். Ctrl+Click அழுத்தினால் வரைபட அமைப்புவடிவாக்கம் தவிர்க்கப்படும் STR_INTRO_TOOLTIP_LOAD_GAME :{BLACK}பதிவு செய்யப்பட்ட விளையாட்டை ஏற்று +STR_INTRO_TOOLTIP_PLAY_HEIGHTMAP :{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_SCRIPT_SETTINGS :{BLACK}AI/வரிவடிவங்கள் அமைப்புகளைக் காட்டு @@ -1205,6 +1524,8 @@ STR_OSNAME_SUNOS :SunOS # Abandon game STR_ABANDON_GAME_CAPTION :{WHITE}ஆட்டத்தை கைவிடு +STR_ABANDON_GAME_QUERY :{YELLOW}நீங்கள் இந்த ஆட்டத்தினை விட்டு வெளியேறுவதில் உறுதியா? +STR_ABANDON_SCENARIO_QUERY :{YELLOW}நீங்கள் இந்த சித்திரக்காட்சியினை விட்டு வெளியேறுவதில் உறுதியா? # Cheat window STR_CHEATS :{WHITE}ஏமாற்றுகள் @@ -1215,12 +1536,22 @@ STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}சு 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 :மிதவெப்பமண்டல நிலவெளி +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} # Livery window +STR_LIVERY_CAPTION :{WHITE}புதிய நிற கோட்பாடு +STR_LIVERY_GENERAL_TOOLTIP :{BLACK}பொதுவான நிற கோட்பாடுகளைக் காட்டவும் +STR_LIVERY_TRAIN_TOOLTIP :{BLACK}இரயில் நிற கோட்பாடுகளைக் காட்டவும் +STR_LIVERY_ROAD_VEHICLE_TOOLTIP :{BLACK}சாலை வாகன நிற கோட்பாடுகளைக் காட்டவும் +STR_LIVERY_SHIP_TOOLTIP :{BLACK}கப்பல் நிறக் கோட்பாடுகளைக் காட்டவும் +STR_LIVERY_AIRCRAFT_TOOLTIP :{BLACK}விமான நிறக் கோட்பாடுகளைக் காட்டவும் +STR_LIVERY_DEFAULT :Standard Livery STR_LIVERY_STEAM :புகை பொறி STR_LIVERY_DIESEL :டீசல் பொறி STR_LIVERY_ELECTRIC :மின்சார பொறி @@ -1248,6 +1579,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}ஆண் முகங்களை தேர்ந்தெடு @@ -1261,8 +1593,15 @@ STR_FACE_SIMPLE :{BLACK}எள STR_FACE_SIMPLE_TOOLTIP :{BLACK}எளிதான முகம் தேர்ந்தெடுத்தல் STR_FACE_LOAD :{BLACK}ஏற்று STR_FACE_LOAD_TOOLTIP :{BLACK}பிடித்த முகத்தினை பதிவேற்று +STR_FACE_FACECODE :{BLACK}விளையாடுபவர் முக எண் +STR_FACE_FACECODE_CAPTION :{WHITE}நிறுவனரின் முக எண்னை பார் அல்லது அமை +STR_FACE_FACECODE_SET :{WHITE}புதிய முக எண் குறி அமைக்கப்பட்டது STR_FACE_SAVE :{BLACK}சேமி\ +STR_FACE_SAVE_TOOLTIP :{BLACK}பிடித்த முகத்தினைப் பதிவுசெய் +STR_FACE_EUROPEAN :{BLACK}ஐரோப்பிய +STR_FACE_SELECT_EUROPEAN :{BLACK}ஐரோப்பிய முகங்களினைத் தேர்ந்தெடுக்கவும் STR_FACE_AFRICAN :{BLACK}ஆப்ரிக்கன் +STR_FACE_SELECT_AFRICAN :{BLACK}ஆப்பிரிக்க முகங்களினைத் தேர்ந்தெடுக்கவும் STR_FACE_YES :ஆம் STR_FACE_NO :இல்லை STR_FACE_MOUSTACHE_EARRING_TOOLTIP :{BLACK}மீசை அல்லது கம்மலை செயலாக்கு @@ -1286,29 +1625,36 @@ STR_FACE_JACKET :மேல் STR_FACE_JACKET_TOOLTIP :{BLACK}மேல் சட்டையினை மாற்று STR_FACE_COLLAR :கழுத்துப் பட்டை: STR_FACE_COLLAR_TOOLTIP :{BLACK}கழுத்துப் பட்டையினை மாற்று +STR_FACE_TIE :Tie: STR_FACE_EARRING :கம்மல்: +STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}Tie அல்லது காதணியை மாற்றவும் # Network server list -STR_NETWORK_SERVER_LIST_CONNECTION :{BLACK}இணைப்பு: -STR_NETWORK_SERVER_LIST_LAN :LAN -STR_NETWORK_SERVER_LIST_INTERNET :இணையம் +STR_NETWORK_SERVER_LIST_ADVERTISED :{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}இந்தப் பெயரில் பிறர் உன்னை அறிவர் STR_NETWORK_SERVER_LIST_GAME_NAME :{BLACK}பெயர் STR_NETWORK_SERVER_LIST_GAME_NAME_TOOLTIP :{BLACK}ஆட்டத்தின் பெயர் STR_NETWORK_SERVER_LIST_GENERAL_ONLINE :{BLACK}{COMMA}/{COMMA} - {COMMA}/{COMMA} +STR_NETWORK_SERVER_LIST_CLIENTS_CAPTION :{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_DATE_CAPTION :{BLACK}தேதி STR_NETWORK_SERVER_LIST_DATE_CAPTION_TOOLTIP :{BLACK}இன்றைய தேதி STR_NETWORK_SERVER_LIST_YEARS_CAPTION :{BLACK}ஆண்டுகள் +STR_NETWORK_SERVER_LIST_YEARS_CAPTION_TOOLTIP :{BLACK}ஆண்டுகளாக{}ஆட்டம் ஆடப்படுகின்றது STR_NETWORK_SERVER_LIST_INFO_ICONS_TOOLTIP :{BLACK}மொழி, சர்வர் பதிப்பு, மற்றவை. STR_NETWORK_SERVER_LIST_CLICK_GAME_TO_SELECT :{BLACK}பட்டியலிலிருந்து ஒரு ஆட்டத்தினை தேர்ந்தெடுக்க சொடுக்கவும் STR_NETWORK_SERVER_LIST_LAST_JOINED_SERVER :{BLACK}கடைசியாக நீங்கள் விளையாடிய சர்வர்: +STR_NETWORK_SERVER_LIST_CLICK_TO_SELECT_LAST :{BLACK}நீங்கள் கடைசியாக விளையாடிய சர்வரினைத் தேர்ந்தெடுக்க சொடுக்கவும் STR_NETWORK_SERVER_LIST_GAME_INFO :{SILVER}ஆட்டத்தின் தகவல்கள் +STR_NETWORK_SERVER_LIST_CLIENTS :{SILVER}விளையாடுவோர்: {WHITE}{COMMA} / {COMMA} - {COMMA} / {COMMA} 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} @@ -1317,11 +1663,14 @@ STR_NETWORK_SERVER_LIST_SERVER_ADDRESS :{SILVER}சர STR_NETWORK_SERVER_LIST_START_DATE :{SILVER}தொடக்கத் தேதி: {WHITE}{DATE_SHORT} STR_NETWORK_SERVER_LIST_CURRENT_DATE :{SILVER}இன்றையத் தேதி: {WHITE}{DATE_SHORT} STR_NETWORK_SERVER_LIST_PASSWORD :{SILVER}கடவுச்சொலினால் தடுக்கப்பட்டுள்ளது! +STR_NETWORK_SERVER_LIST_SERVER_OFFLINE :{SILVER}சர்வர் இணைப்பில் இல்லை 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_REFRESH :{BLACK}சர்வரினை புதுப்பிக்கவும் +STR_NETWORK_SERVER_LIST_REFRESH_TOOLTIP :{BLACK}சர்வரின் விவரத்தினை புதுப்பிக்கவும் STR_NETWORK_SERVER_LIST_FIND_SERVER :{BLACK}சர்வரினைத் தேடு STR_NETWORK_SERVER_LIST_FIND_SERVER_TOOLTIP :{BLACK}சர்வரினை இணையத்தில் தேடு @@ -1332,16 +1681,21 @@ STR_NETWORK_SERVER_LIST_START_SERVER_TOOLTIP :{BLACK}தங STR_NETWORK_SERVER_LIST_PLAYER_NAME_OSKTITLE :{BLACK}தங்களின் பெயரினை இடவும் # Start new multiplayer server +STR_NETWORK_START_SERVER_CAPTION :{WHITE}புதிய இணைய ஆட்டத்தினைத் தொடங்கவும் STR_NETWORK_START_SERVER_NEW_GAME_NAME :{BLACK}விளையாட்டு பெயர்: STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}கடவுச்சொல்லினை அமைக்கவும் -STR_NETWORK_START_SERVER_LAN_INTERNET :LAN / இணையம் -STR_NETWORK_START_SERVER_INTERNET_ADVERTISE :இணையம் (விளம்பரம் செய்) +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_COMPANIES_SELECT :{BLACK}{NUM} நிறுவன{P ம் ங்கள்} 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_TOOLTIP :{BLACK}சர்வரிற்கு குறிப்பிட்ட அளவு பார்வையாளர்களை மட்டுமே அனுமதி STR_NETWORK_START_SERVER_LANGUAGE_SPOKEN :{BLACK}பேசப்படும் மொழிகள்: STR_NETWORK_START_SERVER_NEW_GAME_NAME_OSKTITLE :{BLACK}இணைய ஆட்டத்திற்கு ஒரு பெயரினை இடு @@ -1388,9 +1742,11 @@ STR_NETWORK_LANG_LATVIAN :லாத்வ # Network game lobby +STR_NETWORK_GAME_LOBBY_PREPARE_TO_JOIN :{BLACK}சேர தொடங்கப்படுகிறது: {ORANGE}{STRING} STR_NETWORK_GAME_LOBBY_COMPANY_INFO :{SILVER}நிறுவனங்களின் விவரம் STR_NETWORK_GAME_LOBBY_COMPANY_NAME :{SILVER}நிறுவனத்தின் பெயர்: {WHITE}{STRING} +STR_NETWORK_GAME_LOBBY_INAUGURATION_YEAR :{SILVER}தொடக்கம்: {WHITE}{NUM} STR_NETWORK_GAME_LOBBY_VALUE :{SILVER}நிறுவனத்தின் மதிப்பு: {WHITE}{CURRENCY_LONG} STR_NETWORK_GAME_LOBBY_CURRENT_BALANCE :{SILVER}தற்போதைய கையிருப்பு: {WHITE}{CURRENCY_LONG} STR_NETWORK_GAME_LOBBY_LAST_YEARS_INCOME :{SILVER}சென்ற வருட வருமானம்: {WHITE}{CURRENCY_LONG} @@ -1412,6 +1768,7 @@ STR_NETWORK_CONNECTING_CAPTION :{WHITE}இண ############ Leave those lines in this order!! STR_NETWORK_CONNECTING_1 :{BLACK}(1/6) இணைக்கப்படுகிறது... +STR_NETWORK_CONNECTING_2 :{BLACK}(2/6) அனுமதிக்கப்படுகிறது... STR_NETWORK_CONNECTING_3 :{BLACK}(3/6) காத்திருக்கிறது... STR_NETWORK_CONNECTING_4 :{BLACK}(4/6) வரைபடம் பதிவிறக்கமாகிறது... STR_NETWORK_CONNECTING_5 :{BLACK}(5/6) தகவல் பரிசீலிக்கப்படுகின்றது... @@ -1420,6 +1777,7 @@ STR_NETWORK_CONNECTING_6 :{BLACK}(6/6) STR_NETWORK_CONNECTING_SPECIAL_1 :{BLACK}ஆட்டத்தின் விவரங்கள் பெறப்படுகின்றது... STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}நிறுவனத்தின் விவரம் சேகரிக்கப்படுகிறது... ############ End of leave-in-this-order +STR_NETWORK_CONNECTING_WAITING :{BLACK}{NUM} client{P "" கள்} உங்களுக்கு முன்னால் உள்ளனர் STR_NETWORK_CONNECTING_DOWNLOADING_1 :{BLACK}{BYTES} இதுவரை பதிவிறக்கியது STR_NETWORK_CONNECTING_DOWNLOADING_2 :{BLACK}{BYTES} / {BYTES} இதுவரை பதிவிறக்கியது @@ -1429,6 +1787,7 @@ 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}விளையாடுவோர் பட்டியல் STR_NETWORK_COMPANY_LIST_SPECTATE :{WHITE}கவனி STR_NETWORK_COMPANY_LIST_NEW_COMPANY :{WHITE}புதிய நிறுவனம் @@ -1438,17 +1797,21 @@ 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_CLIENT :இரகசிய தகவல் STR_NETWORK_SERVER :சர்வர் +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}கடவுச்சொல்லினை நினைவில் வைத்திருக்காதே STR_COMPANY_PASSWORD_OK :{BLACK}நிற்வனத்திற்கு புதிய கடவுச்சொல்லினை கொடுக்கவும் STR_COMPANY_PASSWORD_CAPTION :{WHITE}நிறுவனத்தின் கடவுச்சொல் STR_COMPANY_PASSWORD_MAKE_DEFAULT :{BLACK}முதன்மையான நிறுவனத்தின் கடவுச்சொல் +STR_COMPANY_PASSWORD_MAKE_DEFAULT_TOOLTIP :{BLACK}இந்த நிறுவனத்தின் கடவுச்சொல்லையே புதிய நிறுவனங்களுக்கு பயன்படுத்து # Network company info join/password STR_COMPANY_VIEW_JOIN :{BLACK}சேர் @@ -1467,32 +1830,51 @@ STR_NETWORK_CHAT_TO_COMPANY :[Team] பெ STR_NETWORK_CHAT_CLIENT :[Private] {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_TO_CLIENT :[Private] பெறுநர் {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_ALL :[All] {STRING}: {WHITE}{STRING} +STR_NETWORK_CHAT_OSKTITLE :{BLACK}இணைய அரட்டையிற்கு வார்தைகளை இடவும் # Network messages STR_NETWORK_ERROR_NOSERVER :{WHITE}இணைய ஆட்டங்கள் எதுவும் கிடைக்கவில்லை +STR_NETWORK_ERROR_NOCONNECTION :{WHITE}அழைப்பிற்கு சர்வர் பதிலளிக்கவில்லை +STR_NETWORK_ERROR_NEWGRF_MISMATCH :{WHITE}NewGRF கோப்பு பிழையினால் ணைக்க இயலவில்லை +STR_NETWORK_ERROR_DESYNC :{WHITE}இணயம்-ஆட்டம் சமமாதல் தோல்வியடைந்தது STR_NETWORK_ERROR_LOSTCONNECTION :{WHITE}இணைய ஆட்டத்தின் தொடர்பு துண்டிக்கப்பட்டது STR_NETWORK_ERROR_SAVEGAMEERROR :{WHITE}சேமிக்கப்பட்ட விளையாட்டை ஏற்ற முடியவில்லை STR_NETWORK_ERROR_SERVER_START :{WHITE}சர்வரினை தொடங்க முடியவில்லை STR_NETWORK_ERROR_CLIENT_START :{WHITE}இணைக்கப்படவில்லை +STR_NETWORK_ERROR_TIMEOUT :{WHITE}இணைப்பு #{NUM} காலமாகியது +STR_NETWORK_ERROR_WRONG_REVISION :{WHITE}இந்த பதிப்பு சர்வரின் பதிப்புடன் ஒத்துவரவில்லை 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}இந்த சர்வரில் ஏமாற்ற இயலாது +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_JOIN :{WHITE}சர்வருடன் இணைய உங்கள் கணினி அதிக நேரம் எடுத்துக்கொண்டது ############ Leave those lines in this order!! STR_NETWORK_ERROR_CLIENT_GENERAL :பொதுவான பிழை STR_NETWORK_ERROR_CLIENT_DESYNC :இணைப்பு பிழை STR_NETWORK_ERROR_CLIENT_SAVEGAME :வரைபடத்தை ஏற்ற முடியவில்லை STR_NETWORK_ERROR_CLIENT_CONNECTION_LOST :தொடர்பு துண்டிக்கப்பட்டது +STR_NETWORK_ERROR_CLIENT_PROTOCOL_ERROR :இணைப்புமுறைப் பிழை STR_NETWORK_ERROR_CLIENT_NEWGRF_MISMATCH :NEWGRF ஒத்துவரவில்லை STR_NETWORK_ERROR_CLIENT_NOT_AUTHORIZED :உங்களுக்கு அனுமதி இல்லை +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 :DoCommand இல் தவறான கட்டளை STR_NETWORK_ERROR_CLIENT_KICKED :செர்வெரால் வெளியேற்றப்பட்டீர்கள் 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_MAP :வரைபடம் பதிவிறக்கமாக அதிக நேரம் ஆகியது +STR_NETWORK_ERROR_CLIENT_TIMEOUT_JOIN :படத்தினைத் திறக்க அதிக நேரம் ஆகியது ############ End of leave-in-this-order STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION_CAPTION :{WHITE}தொடர்பு துண்டிக்கப்பட வாய்ப்பு உள்ளது @@ -1508,6 +1890,8 @@ STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_3 :ஆட்டம STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_4 :ஆட்டம் இடை நிறுத்தப்பட்டுள்ளது ({STRING}, {STRING}, {STRING}, {STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_UNPAUSED :ஆட்டம் மீண்டும் தொடங்கப்பட்டுள்ளது ({STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_REASON_NOT_ENOUGH_PLAYERS :விளையாடுபவர்களின் எண்ணிக்கை +STR_NETWORK_SERVER_MESSAGE_GAME_REASON_CONNECTING_CLIENTS :வீரர்கள் இணைக்கப்படுகின்றனர் +STR_NETWORK_SERVER_MESSAGE_GAME_REASON_MANUAL :எனது STR_NETWORK_SERVER_MESSAGE_GAME_REASON_GAME_SCRIPT :விளையாட்டின் ஸ்கிரிப்ட் ############ End of leave-in-this-order STR_NETWORK_MESSAGE_CLIENT_LEAVING :விட்டுச்செல்கிறார் @@ -1517,8 +1901,11 @@ STR_NETWORK_MESSAGE_CLIENT_COMPANY_JOIN :*** {STRING} STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} பார்வையாளராக சேர்ந்துள்ளார் STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} புதிய நிறுவனம் (#{2:NUM})வை துவக்கி உள்ளார் STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} ஆட்டத்தை விட்டு வெளியேரினார் ({2:STRING}) +STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} அவரது/அவளது பெயரினை {STRING} என்று மாற்றினார் STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} தங்கள் நிறுவனத்திற்கு {2:CURRENCY_LONG} கொடுத்தார் STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** நீங்கள் கொடுத்தீற்கள் {1:STRING} {2:CURRENCY_LONG} +STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}சர்வர் ஆட்டத்தினை முடித்தது +STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}சர்வர் மீண்டும் தொடங்குகிறது...{}சற்று பொறுக்கவும்... # Content downloading window STR_CONTENT_TITLE :{WHITE}கோப்புகள் பதிவிறக்கம் செய்யப்படுகின்றன @@ -1527,14 +1914,24 @@ STR_CONTENT_TYPE_CAPTION_TOOLTIP :{BLACK}உள STR_CONTENT_NAME_CAPTION :{BLACK}பெயர் STR_CONTENT_NAME_CAPTION_TOOLTIP :{BLACK}உள்ளடக்கத்தின் பெயர் STR_CONTENT_SELECT_ALL_CAPTION :{BLACK}அனைத்தையும் தேர்ந்தெடு +STR_CONTENT_SELECT_ALL_CAPTION_TOOLTIP :{BLACK}அனைத்தையும் பதிவிறக்கக் குறிக்கவும் +STR_CONTENT_SELECT_UPDATES_CAPTION :{BLACK}தரவேற்றங்களினைத் தேர்ந்தெடு +STR_CONTENT_UNSELECT_ALL_CAPTION :{BLACK}தேர்ந்தெடுத்தவற்றின் குறியினை நீக்கு +STR_CONTENT_UNSELECT_ALL_CAPTION_TOOLTIP :{BLACK}அனைத்தையும் பதிவிறக்க வேண்டாம் என்று குறிக்கவும் +STR_CONTENT_SEARCH_EXTERNAL :{BLACK}வெளி இணையதளங்களில் தேடு +STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER_CAPTION :{WHITE}நீங்கள் OpenTTD ஐ விட்டு வெளியேறுகிறீர்கள்! +STR_CONTENT_FILTER_TITLE :{BLACK}குறியீடு/பெயர் வடிகட்டி: STR_CONTENT_OPEN_URL :{BLACK}இணையதளத்தினை பார்வையிடு +STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}இந்த கோப்பின் விவரங்களினை அதன் இணையதளத்தில் பார்க்க 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_ALREADY_HERE :{SILVER}இது ஏற்கனவே உங்களிடம் உள்ளது +STR_CONTENT_DETAIL_UPDATE :{SILVER} ஏற்கனவே இருக்கும் {STRING} இற்கு இது மாற்றாகும் STR_CONTENT_DETAIL_NAME :{SILVER}பெயர்: {WHITE}{STRING} STR_CONTENT_DETAIL_VERSION :{SILVER}பதிப்பு: {WHITE}{STRING} STR_CONTENT_DETAIL_DESCRIPTION :{SILVER}விவரம்: {WHITE}{STRING} @@ -1544,13 +1941,16 @@ 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_SUB :{WHITE}... கோப்புகளை பதிவிறக்கம் செய்ய முடியாது! # Order of these is important! STR_CONTENT_TYPE_BASE_GRAPHICS :அடிப்படை அசையூட்டம் STR_CONTENT_TYPE_NEWGRF :NewGRF STR_CONTENT_TYPE_AI :AI +STR_CONTENT_TYPE_AI_LIBRARY :AI நூலகம் STR_CONTENT_TYPE_SCENARIO :திரைக்காட்சி +STR_CONTENT_TYPE_HEIGHTMAP :உயர்படம் STR_CONTENT_TYPE_BASE_SOUNDS :அடிப்படை ஒலிகள் STR_CONTENT_TYPE_BASE_MUSIC :அடிப்படை இசை STR_CONTENT_TYPE_GAME_SCRIPT :விளையாட்டின் ஸ்கிரிப்ட் @@ -1564,17 +1964,31 @@ STR_CONTENT_DOWNLOAD_COMPLETE :{WHITE}பத STR_CONTENT_DOWNLOAD_PROGRESS_SIZE :{WHITE}{BYTES} இல் {BYTES} பதிவிறக்கமாகியுள்ளது ({NUM} %) # 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_EXTRACT :{WHITE}பதிவிறக்கம் செய்யப்பட்ட கோப்பினை விரிவாக்க முடியவில்லை +STR_MISSING_GRAPHICS_SET_CAPTION :{WHITE}அசைவூட்டங்கள் இல்லை STR_MISSING_GRAPHICS_YES_DOWNLOAD :{BLACK}ஆம், அசையூட்டங்களை பதிவிறக்கம் செய் STR_MISSING_GRAPHICS_NO_QUIT :{BLACK}இல்லை, OpenTTD-ஐ விட்டு வெளியேறு # Transparency settings window +STR_TRANSPARENCY_CAPTION :{WHITE}ஒளி அமைப்புகள் + +# 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}செயல்படும் பகுதியினை குறிக்கவும் STR_STATION_BUILD_COVERAGE_OFF :{BLACK}நிறுத்து STR_STATION_BUILD_COVERAGE_ON :{BLACK}இயக்கு STR_STATION_BUILD_ACCEPTS_CARGO :{BLACK}ஏற்றுக்கொள்பவை: {GOLD}{CARGO_LIST} @@ -1593,6 +2007,13 @@ 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}இரயில்வே இருப்புப் பாதையினை கட்டவும். Shift அழுத்தினால் கட்டுமான/செலவு மதிப்பீடு காட்டப்படும் +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}இரயில் பணிமனையினைக் (இரயில்களை வாங்க மற்றும் பழுதுபார்க்க) கட்டவும். Shift அழுத்தினால் கட்டுமான/செலவு மதிப்பீடு காட்டப்படும் +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_STATION :{BLACK}இரயில் நிலையத்தினை கட்டவும். Ctrl அழுத்தினால் நிலையங்களினை இணைக்கலாம். Shift அழுத்தினால் கட்டுமான/செலவு மதிப்பீடு காட்டப்படும் +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}இரயில்வே சிக்னல்களைக் கட்டவும். Ctrl அழுத்தினால் சிக்னல் வகைகளை மாற்றலாம்{}இரயில் தடத்தின்மேல் இழுத்தினால் சிக்னல்களை அமைக்கலாம். Ctrl அழுத்தினால் அடுத்த எணைப்பு வரை சிக்னல்கள் அமைக்கப்படும்{}Ctrl+Click அழுத்தினால் சிக்னல் தேர்ந்தெடுக்கும் திரை தெரியும்/மரையும். Shift அழுத்தினால் கட்டுமான/செலவு மதிப்பீடு காட்டப்படும் +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_BRIDGE :{BLACK}இரயில்வே பாலத்தினை கட்டவும். Shift அழுத்தினால் கட்டுமான/செலவு மதிப்பீடு காட்டப்படும் +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TUNNEL :{BLACK}இரயில்வே சுரங்கப் பாதையினை கட்டவும். Shift அழுத்தினால் கட்டுமான/செலவு மதிப்பீடு காட்டவும் +STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL :{BLACK}இரயில் வகையினை தரவேற்றவும்/மாற்றவும். Shift அழுத்தினால் கட்டுமான/செலவு மதிப்பீடு காட்டப்படும் STR_RAIL_NAME_RAILROAD :இரயில்வே STR_RAIL_NAME_ELRAIL :மின்மயமாக்கப்பட்ட இரயில்வே @@ -1600,23 +2021,37 @@ STR_RAIL_NAME_MONORAIL :மோனோ STR_RAIL_NAME_MAGLEV :மேக்லெவ் # Rail depot construction window +STR_BUILD_DEPOT_TRAIN_ORIENTATION_CAPTION :{WHITE}இரயில்வே பணிமனையின் திசையமைப்பு +STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}இரயில்வே பணிமனையின் திசையமைப்பினைத் தேர்ந்தெடுக்கவும் # Rail waypoint construction window STR_WAYPOINT_CAPTION :{WHITE}பாதைப்புள்ளி +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_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_DRAG_DROP :{BLACK}இழுத்து விடவும் +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 :முதன்மை நிலையம் STR_STATION_CLASS_WAYP :பாதைப்புள்ளிகள் # Signal window +STR_BUILD_SIGNAL_CAPTION :{WHITE}சிக்னல் தேர்ந்தெடுத்தல் # Bridge selection window STR_SELECT_RAIL_BRIDGE_CAPTION :{WHITE}இரயில்வே பாலத்தினை தேர்ந்தெடு STR_SELECT_ROAD_BRIDGE_CAPTION :{WHITE}சாலைப் பாலத்தினை தேர்ந்தெடு +STR_SELECT_BRIDGE_SELECTION_TOOLTIP :{BLACK}பாலம் தேர்ந்தெடுத்தல் - தேவையான பாலத்தினைக் கட்ட அதனினை சொடுக்கவும் STR_SELECT_BRIDGE_INFO :{GOLD}{STRING},{} {VELOCITY} {WHITE}{CURRENCY_LONG} STR_SELECT_BRIDGE_SCENEDIT_INFO :{GOLD}{STRING},{} {VELOCITY} STR_BRIDGE_NAME_SUSPENSION_STEEL :தொங்குபாலம், எஃகு @@ -1632,25 +2067,61 @@ 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_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_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}ட்ராம் வாகன பணிமனையின் திசையமைப்பினைத் தேர்ந்தெடுக்கவும் # 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}ட்ராம் சரக்கு நிலையத்தின் திசையமைப்பினைத் தேர்ந்தெடு # 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_CREATE_RIVER_TOOLTIP :{BLACK}ஆறுகளை அமைக்கவும் # Ship depot construction window +STR_DEPOT_BUILD_SHIP_CAPTION :{WHITE}கப்பல் பணிமனை திசையமைப்பு +STR_DEPOT_BUILD_SHIP_ORIENTATION_TOOLTIP :{BLACK}கப்பல் பணிமனையின் பக்க அமைப்பினைத் தேர்ந்தெடு # Dock construction window STR_STATION_BUILD_DOCK_CAPTION :{WHITE}துறைமுகம் # Airport toolbar STR_TOOLBAR_AIRCRAFT_CAPTION :{WHITE}விமான நிலையங்கள் +STR_TOOLBAR_AIRCRAFT_BUILD_AIRPORT_TOOLTIP :{BLACK}விமான நிலையத்தினைக் கட்டவும். Ctrl அழுத்தினால் நிலையங்களினை இணைக்கலாம். Shift அழுத்தினால் கட்டுமான/செலவு மதிப்பீடு காட்டப்படும் # Airport construction window +STR_STATION_BUILD_AIRPORT_CAPTION :{WHITE}விமான நிலையத்தை தேர்ந்தெடுத்தல் +STR_STATION_BUILD_AIRPORT_TOOLTIP :{BLACK}விமானநிலையத்தின் அளவு/வகையினை தேர்ந்தெடு STR_STATION_BUILD_AIRPORT_CLASS_LABEL :{BLACK}விமான நிலைய வகை STR_STATION_BUILD_AIRPORT_LAYOUT_NAME :{BLACK}அமைப்பு {NUM} @@ -1670,21 +2141,45 @@ STR_AIRPORT_CLASS_HELIPORTS :ஹெலிக STR_STATION_BUILD_NOISE :{BLACK}ஒலி இரைச்சல்: {GOLD}{COMMA} # Landscaping toolbar +STR_LANDSCAPING_TOOLBAR :{WHITE}நிலத்தோற்றம் # Object construction window +STR_OBJECT_BUILD_CAPTION :{WHITE}பொருள் தேர்ந்தெடுத்தல் +STR_OBJECT_BUILD_CLASS_TOOLTIP :{BLACK}கட்டப்போகும் பொருளின் வகையினைத் தேர்ந்தெடு +STR_OBJECT_BUILD_PREVIEW_TOOLTIP :{BLACK}பொருளின் முன்பார்வை STR_OBJECT_BUILD_SIZE :{BLACK}அளவு: {GOLD}{NUM} x {NUM} கட்டங்கள் STR_OBJECT_CLASS_LTHS :கலங்கரைவிளக்கு +STR_OBJECT_CLASS_TRNS :Transmitters # Tree planting window (last two for SE only) STR_PLANT_TREE_CAPTION :{WHITE}மரங்கள் +STR_TREES_RANDOM_TYPE :{BLACK}ஏதொவொறு வகையிலான மரங்கள் +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_INCREASE_SIZE_OF_LAND_AREA :{BLACK}ஏற்ற/இறக்கப் போகும் நிலப்பரப்பினைக் அதிகப்படுத்தவும் +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_QUERY_RESET_LANDSCAPE_CAPTION :{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}புதிய நகரமொன்றினை நிறுவு. Shift+Click அழுத்தினால் மதிப்பிடப்பட்ட செலவு காட்டப்படும் +STR_FOUND_TOWN_RANDOM_TOWN_BUTTON :{BLACK}ஏதோவொறு நகரம் +STR_FOUND_TOWN_RANDOM_TOWN_TOOLTIP :{BLACK}ஏதொவொறு இடத்தில் நகரத்தினை நிறுவு +STR_FOUND_TOWN_MANY_RANDOM_TOWNS :{BLACK}பல வெவ்வேறு நகரங்கள் +STR_FOUND_TOWN_RANDOM_TOWNS_TOOLTIP :{BLACK}வரைபடத்தினை நகரங்களினால் நிறப்பு STR_FOUND_TOWN_NAME_TITLE :{YELLOW}நகரத்தின் பெயர்: STR_FOUND_TOWN_NAME_EDITOR_TITLE :{BLACK}நகரத்தின் பெயரினை இடு @@ -1696,8 +2191,10 @@ STR_FOUND_TOWN_INITIAL_SIZE_TITLE :{YELLOW}நக 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_CITY :{BLACK}மாநகரம் +STR_FOUND_TOWN_CITY_TOOLTIP :{BLACK}மாநகரங்கள் சாதாரண நகரங்களைவிட வேகமாக வளரும்{}அமைப்புகளைப் பொருத்து அவை பெரியதாக அமையும் STR_FOUND_TOWN_ROAD_LAYOUT :{YELLOW}நகரத்தின் சாலை அமைப்பு: STR_FOUND_TOWN_SELECT_TOWN_ROAD_LAYOUT :{BLACK}இந்த நகரத்திற்கான சாலை அமைப்பினை தேர்ந்தெடு @@ -1705,17 +2202,28 @@ STR_FOUND_TOWN_SELECT_LAYOUT_ORIGINAL :{BLACK}அச STR_FOUND_TOWN_SELECT_LAYOUT_BETTER_ROADS :{BLACK}நல்ல சாலைகள் STR_FOUND_TOWN_SELECT_LAYOUT_2X2_GRID :{BLACK}2x2 கட்டங்கள் STR_FOUND_TOWN_SELECT_LAYOUT_3X3_GRID :{BLACK}3x3 கட்டங்கள் +STR_FOUND_TOWN_SELECT_LAYOUT_RANDOM :{BLACK}ஏதொவொறு # Fund new industry window STR_FUND_INDUSTRY_CAPTION :{WHITE}புதிய தொழிற்சாலையினை நிறுவு STR_FUND_INDUSTRY_SELECTION_TOOLTIP :{BLACK}இந்தப் பட்டியலிருந்து பொருத்தமான தொழிற்சாலை ஒன்றினை தேர்ந்தெடு +STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES :பல மாறுபட்ட தொழிற்சாலைகள் STR_FUND_INDUSTRY_INDUSTRY_BUILD_COST :{BLACK}விலை: {YELLOW}{CURRENCY_LONG} +STR_FUND_INDUSTRY_PROSPECT_NEW_INDUSTRY :{BLACK}எங்கேயோ நிறுவு STR_FUND_INDUSTRY_BUILD_NEW_INDUSTRY :{BLACK}கட்டு STR_FUND_INDUSTRY_FUND_NEW_INDUSTRY :{BLACK}நிறுவு # Industry cargoes window +STR_INDUSTRY_CARGOES_INDUSTRY_CAPTION :{WHITE}{STRING} தொழிற்சாலையிற்கான தொழிற்சாலைத் தொடர் +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_CARGO_TOOLTIP :{BLACK}{STRING}{}சரக்கினைச் சொடுக்கினால் அதனது விற்பனையாளர்கள் மற்றும் வாங்குவோர் விவரங்கள் காட்டப்படும் +STR_INDUSTRY_DISPLAY_CHAIN :{BLACK}இணைப்புகளைக் காட்டு +STR_INDUSTRY_DISPLAY_CHAIN_TOOLTIP :{BLACK}சரக்குகளை தரும் மற்றும் வாங்கும் நிறுவனங்களைக் காட்டு +STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP :{BLACK}சிறுபடத்திற்கான இணைப்பு STR_INDUSTRY_CARGOES_SELECT_CARGO :{BLACK}சரக்கினைத் தேர்ந்தெடு STR_INDUSTRY_CARGOES_SELECT_CARGO_TOOLTIP :{BLACK}காட்டப்பட வேண்டிய சரக்கினைத் தேர்ந்தெடு STR_INDUSTRY_CARGOES_SELECT_INDUSTRY :{BLACK}தொழிற்சாலையினைத் தேர்ந்தெடு @@ -1723,9 +2231,13 @@ STR_INDUSTRY_CARGOES_SELECT_INDUSTRY_TOOLTIP :{BLACK}கா # Land area window STR_LAND_AREA_INFORMATION_CAPTION :{WHITE}நிலப் பகுதி விவரம் +STR_LAND_AREA_INFORMATION_COST_TO_CLEAR_N_A :{BLACK}நீக்குவதற்கான செலவு: {LTBLUE}N/A +STR_LAND_AREA_INFORMATION_COST_TO_CLEAR :{BLACK}நீக்குவதற்கான செலவு: {RED}{CURRENCY_LONG} +STR_LAND_AREA_INFORMATION_REVENUE_WHEN_CLEARED :{BLACK}நீக்கினால் கிடைக்கும் வருமானம்: {LTBLUE}{CURRENCY_LONG} STR_LAND_AREA_INFORMATION_OWNER_N_A :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_LOCAL_AUTHORITY :{BLACK}நகராட்சி: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :ஒன்றுமில்லை @@ -1740,6 +2252,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 :கற்கள் @@ -1751,11 +2264,34 @@ 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_TRAIN_DEPOT :{STRING} இரயில் பணிமனை STR_LAI_ROAD_DESCRIPTION_ROAD :சாலை 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 :ட்ரேம்வே # Houses come directly from their building names @@ -1776,6 +2312,7 @@ STR_LAI_STATION_DESCRIPTION_WAYPOINT :பாதைப STR_LAI_WATER_DESCRIPTION_WATER :தண்ணீர் STR_LAI_WATER_DESCRIPTION_CANAL :கால்வாய் +STR_LAI_WATER_DESCRIPTION_LOCK :நீர்ப்பூட்டு STR_LAI_WATER_DESCRIPTION_RIVER :ஆறு STR_LAI_WATER_DESCRIPTION_COAST_OR_RIVERBANK :கடற்கரை அல்லது ஆற்றுப்படுகை STR_LAI_WATER_DESCRIPTION_SHIP_DEPOT :கப்பல் பணிமனை @@ -1810,17 +2347,23 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :நிறுவ # About OpenTTD window 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-2012 OpenTTD குழுமம் +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2014 OpenTTD குழுமம் # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}ஆட்டத்தை பதிவு செய் STR_SAVELOAD_LOAD_CAPTION :{WHITE}பதிவு செய்த ஆட்டத்தை தொடரு +STR_SAVELOAD_SAVE_SCENARIO :{WHITE}சித்திரக்காட்சியினைப் பதிவுசெய் +STR_SAVELOAD_LOAD_SCENARIO :{WHITE}சித்திரக்காட்சியினைப் பதிவேற்று +STR_SAVELOAD_LOAD_HEIGHTMAP :{WHITE}உயர்படத்தினை பதிவேற்று STR_SAVELOAD_SAVE_HEIGHTMAP :{WHITE}வரைபடத்தினை சேமி STR_SAVELOAD_BYTES_FREE :{BLACK}{BYTES} காலி +STR_SAVELOAD_EDITBOX_TOOLTIP :{BLACK}பதிவு-ஆட்டத்திற்கு தற்போது தேர்ந்தெடுக்கப்பட்டுள்ள பெயர் STR_SAVELOAD_DELETE_BUTTON :{BLACK}அழி STR_SAVELOAD_DELETE_TOOLTIP :{BLACK}தற்போது தேர்ந்தெடுக்கப்பட்ட பதிவு-ஆட்டத்தினை நீக்கு STR_SAVELOAD_SAVE_BUTTON :{BLACK}சேமி +STR_SAVELOAD_SAVE_TOOLTIP :{BLACK}தற்போதைய ஆட்டத்தினை பதிவு செய், தேர்ந்தெடுக்கப்பட்டப் பெயரில் STR_SAVELOAD_LOAD_BUTTON :{BLACK}ஏற்று STR_SAVELOAD_LOAD_TOOLTIP :{BLACK}தேர்ந்தெடுக்கப்பட்ட ஆட்டத்தினை ஏற்று STR_SAVELOAD_DETAIL_CAPTION :{BLACK}ஆட்டத்தின் விவரங்கள் @@ -1840,9 +2383,12 @@ 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_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_GENERATE :{WHITE}உருவாக்கு # Strings for map borders at game generation @@ -1851,10 +2397,14 @@ STR_MAPGEN_NORTHWEST :{BLACK}வட STR_MAPGEN_NORTHEAST :{BLACK}வடகிழக்கு STR_MAPGEN_SOUTHEAST :{BLACK}தென்கிழக்கு STR_MAPGEN_SOUTHWEST :{BLACK}தென்மேற்கு +STR_MAPGEN_BORDER_FREEFORM :{BLACK}இலவசமாக STR_MAPGEN_BORDER_WATER :{BLACK}தண்ணீர் STR_MAPGEN_BORDER_RANDOM :{BLACK}ஏதொவொன்று STR_MAPGEN_BORDER_RANDOMIZE :{BLACK}ஏதோவொன்று +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} @@ -1862,6 +2412,7 @@ STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}பன STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}தொடங்கும் வருடத்தினை மாற்று # SE Map generation +STR_SE_MAPGEN_CAPTION :{WHITE}சித்திரக்காட்சி வகை STR_SE_MAPGEN_FLAT_WORLD :{WHITE}சம் நிலம் STR_SE_MAPGEN_FLAT_WORLD_TOOLTIP :{BLACK}சமமமான நிலத்தை உருவாக்கு STR_SE_MAPGEN_RANDOM_LAND :{WHITE}ஏதோவொரு நிலம் @@ -1881,6 +2432,8 @@ STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / STR_GENERATION_WORLD_GENERATION :{BLACK}உலகம் உருவாக்குதல் STR_GENERATION_RIVER_GENERATION :{BLACK}ஆறு உருவாக்குதல் STR_GENERATION_TREE_GENERATION :{BLACK}மரங்கள் உருவாக்குதல் +STR_GENERATION_OBJECT_GENERATION :{BLACK}பொருள் உருவாக்குதல் +STR_GENERATION_CLEARING_TILES :{BLACK}சமமில்லாத மற்றும் கல்லான பகுதி உருவாக்குதல் STR_GENERATION_SETTINGUP_GAME :{BLACK}ஆட்டம் அமைக்கப்படுகின்றது STR_GENERATION_PREPARING_SCRIPT :{BLACK}வரிவடிவம் செயல்படுத்தப்படுகின்றது STR_GENERATION_PREPARING_GAME :{BLACK}ஆட்டம் தயாராகிறது @@ -1890,8 +2443,18 @@ STR_NEWGRF_SETTINGS_CAPTION :{WHITE}NewGRF STR_NEWGRF_SETTINGS_INFO_TITLE :{WHITE}விவரமான NewGRF தகவல் STR_NEWGRF_SETTINGS_ACTIVE_LIST :{WHITE}பயன்பாட்டில் உள்ள NewGRF கோப்புகள் STR_NEWGRF_SETTINGS_INACTIVE_LIST :{WHITE}பயன்பாட்டில் இல்லாத NewGRF கோப்புகள் +STR_NEWGRF_SETTINGS_SELECT_PRESET :{ORANGE}Preset ஐ தேர்ந்தெடு: +STR_NEWGRF_FILTER_TITLE :{ORANGE}வடிகட்டித் தொடர்: +STR_NEWGRF_SETTINGS_PRESET_LIST_TOOLTIP :{BLACK}தேர்ந்தெடுக்கப்பட்டுள்ள preset ஐ ஏற்று +STR_NEWGRF_SETTINGS_PRESET_SAVE :{BLACK}Preset ஐ பதிவுசெய் +STR_NEWGRF_SETTINGS_PRESET_SAVE_TOOLTIP :{BLACK}தற்போதைய பட்டியலை preset ஆக பதிவு செய் +STR_NEWGRF_SETTINGS_PRESET_SAVE_QUERY :{BLACK}Preset இற்கு ஒரு பெயரினை இடு +STR_NEWGRF_SETTINGS_PRESET_DELETE :{BLACK}Preset ஐ நீக்கு +STR_NEWGRF_SETTINGS_PRESET_DELETE_TOOLTIP :{BLACK}தற்போது தேர்ந்தெடுக்கப்பட்டுள்ள preset ஐ நீக்கு STR_NEWGRF_SETTINGS_ADD :{BLACK}சேர் +STR_NEWGRF_SETTINGS_ADD_FILE_TOOLTIP :{BLACK}உங்களது வடிவமைப்பானிற்கு தேர்ந்தெடுக்கப்பட்ட NewGRF கோப்பினை இணைக்கவும் STR_NEWGRF_SETTINGS_RESCAN_FILES :{BLACK}கோப்புகளை மறுபடியும் ஆராய் +STR_NEWGRF_SETTINGS_RESCAN_FILES_TOOLTIP :{BLACK}கிடைக்கும் NewGRF கோப்புகள் பட்டியலினை புதுப்பிக்கவும் STR_NEWGRF_SETTINGS_REMOVE :{BLACK}நீக்கு STR_NEWGRF_SETTINGS_REMOVE_TOOLTIP :{BLACK}தேர்ந்தெடுக்கப்பட்ட NewGRF கோப்பினை பட்டியலிலிருந்து நீக்கு STR_NEWGRF_SETTINGS_MOVEUP :{BLACK}மேல் நகர்த்து @@ -1902,31 +2465,39 @@ STR_NEWGRF_SETTINGS_FILE_TOOLTIP :{BLACK}நி STR_NEWGRF_SETTINGS_SET_PARAMETERS :{BLACK}குணாதிசயங்களை அமை STR_NEWGRF_SETTINGS_SHOW_PARAMETERS :{BLACK}குணாதிசயங்களைக் காட்டு +STR_NEWGRF_SETTINGS_TOGGLE_PALETTE :{BLACK}palette மாற்றவும் STR_NEWGRF_SETTINGS_APPLY_CHANGES :{BLACK}மாற்றங்களை செயலாக்கு STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_BUTTON :{BLACK}இல்லாதவற்றை இணையத்தில் தேடு +STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_TOOLTIP :{BLACK}கிடைக்காதவற்றினை இணையத்தில் தேடவும் STR_NEWGRF_SETTINGS_FILENAME :{BLACK}கோப்புப்பெயர்: {SILVER}{STRING} STR_NEWGRF_SETTINGS_GRF_ID :{BLACK}GRF ID: {SILVER}{STRING} STR_NEWGRF_SETTINGS_VERSION :{BLACK}பதிப்பு: {SILVER}{NUM} STR_NEWGRF_SETTINGS_MIN_VERSION :{BLACK}குறைந்த். பயன்படுத்தக்கூடிய பதிப்பு: {SILVER}{NUM} STR_NEWGRF_SETTINGS_MD5SUM :{BLACK}MD5sum: {SILVER}{STRING} +STR_NEWGRF_SETTINGS_PALETTE :{BLACK}Palette: {SILVER}{STRING} STR_NEWGRF_SETTINGS_PARAMETER :{BLACK}குணாதிசயங்கள்: {SILVER}{STRING} STR_NEWGRF_SETTINGS_NO_INFO :{BLACK}எந்தத் தகவலும் இல்லை 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}மூடு STR_NEWGRF_PARAMETERS_RESET :{BLACK}முன்னிருந்தமை மாற்று +STR_NEWGRF_PARAMETERS_RESET_TOOLTIP :{BLACK}எல்லா குணாதிசயங்களையும் அதன் முதன்நிலையாக்கு STR_NEWGRF_PARAMETERS_DEFAULT_NAME :குணாதிசயம் {NUM} STR_NEWGRF_PARAMETERS_SETTING :{STRING}: {ORANGE}{STRING} STR_NEWGRF_PARAMETERS_NUM_PARAM :{LTBLUE}குணாதிசயங்களின் எண்ணிக்கை: {ORANGE}{NUM} # NewGRF inspect window STR_NEWGRF_INSPECT_CAPTION :{WHITE}சோதனையிடு - {STRING} +STR_NEWGRF_INSPECT_PARENT_BUTTON :{BLACK}பெற்றோர் STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT :{STRING} {HEX} இல் STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_OBJECT :பொருள் @@ -1934,43 +2505,92 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :இரயில # Sprite aligner window +STR_SPRITE_ALIGNER_CAPTION :{WHITE}ஸ்பிரிட் ஒழுங்காக்கப்படுகிறது {COMMA} ({STRING}) +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}ஸ்பிரைட்டிற்கு செல்லவும் # NewGRF (self) generated warnings/errors STR_NEWGRF_ERROR_MSG_INFO :{SILVER}{STRING} STR_NEWGRF_ERROR_MSG_WARNING :{RED}எச்சரிக்கை: {SILVER}{STRING} STR_NEWGRF_ERROR_MSG_ERROR :{RED}பிழை: {SILVER}{STRING} +STR_NEWGRF_ERROR_MSG_FATAL :{RED}மரணம்: {SILVER}{STRING} +STR_NEWGRF_ERROR_FATAL_POPUP :{WHITE}மரணமான NewGRF பிழை ஏற்பட்டுள்ளது: {}{STRING} +STR_NEWGRF_ERROR_DOS_OR_WINDOWS :{1:STRING} ஆனது {STRING} TTD பதிப்பிற்காகவே +STR_NEWGRF_ERROR_UNSET_SWITCH :{1:STRING} ஆனது {STRING} உடன் இணைந்து பயன்படுத்த வடிவமைக்கப்பட்டுள்ளது +STR_NEWGRF_ERROR_INVALID_PARAMETER :செல்லாத குணாதிசயம் {1:STRING} இன்: குணாதிசயம் {STRING} ({NUM}) +STR_NEWGRF_ERROR_LOAD_BEFORE :{1:STRING} ஆனது {STRING} இற்கு முன்னால் ஏற்றப்பட வேண்டும் +STR_NEWGRF_ERROR_LOAD_AFTER :{1:STRING} ஆனது {STRING} இற்கு பின்னால் ஏற்றப்பட வேண்டும் +STR_NEWGRF_ERROR_OTTD_VERSION_NUMBER :{1:STRING} இற்கு OpenTTD பதிப்பு {STRING} இற்கு அதிகமான பதிப்பு தேவைப்படுகிறது +STR_NEWGRF_ERROR_AFTER_TRANSLATED_FILE :GRF கோப்பு மொழிபெயர்க்க வடிமைக்கப்பட்டது +STR_NEWGRF_ERROR_TOO_MANY_NEWGRFS_LOADED :அளவிற்கு அதிகமான NewGRF கள் ஏற்றப்பட்டுள்ளன +STR_NEWGRF_ERROR_UNEXPECTED_SPRITE :எதிர்பார்க்கப்படாத ஸ்பிரைட்டு(ஸ்பிரைட்டு {3:NUM}) +STR_NEWGRF_ERROR_GRM_FAILED :கேட்கப்பட்ட GRF கள் கிடைக்கவில்லை (ஸ்பிரைட்டு {3:NUM}) STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING}, {STRING}ஆல் செயலிழக்க செய்யப்பட்டது # NewGRF related 'general' warnings +STR_NEWGRF_POPUP_CAUTION_CAPTION :{WHITE}எச்சரிக்கை! +STR_NEWGRF_DUPLICATE_GRFID :{WHITE}கோப்பினை சேர்க்க இயலாது: இரட்டடிப்பு GRF ID +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_UNPAUSE_WARNING_TITLE :{YELLOW}இல்லாத GRF கோப்பு(கள்) # NewGRF status +STR_NEWGRF_LIST_NONE :ஒன்றுமில்லை +STR_NEWGRF_LIST_ALL_FOUND :அனைத்து கோப்புகளும் உள்ளன +STR_NEWGRF_LIST_COMPATIBLE :{YELLOW}பயன்படுத்தக்க கோப்புகள் கண்டுபிடிக்கப்பட்டன +STR_NEWGRF_LIST_MISSING :{RED}கோப்புகள் இல்லை # NewGRF 'it's broken' warnings +STR_NEWGRF_BUGGY :{WHITE}NewGRF '{0:STRING}' தவரான தகவல்களினைத் தருகின்றது +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 +STR_NEWGRF_INVALID_CARGO :<செல்லுபடியாகாத சரக்கு> +STR_NEWGRF_INVALID_CARGO_ABBREV :?? +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 பதிவுகள் ஆராயப்படுகின்றன. அவற்றின் எண்ணிக்கையை பொறுத்து காலதாமதம் ஆகலாம்... +STR_NEWGRF_SCAN_STATUS :{BLACK}{NUM} NewGRF{P "" கள்} பார்க்க பட்டன. மொத்தம் {NUM} NewGRF{P "" கள்} STR_NEWGRF_SCAN_ARCHIVES :சுவடிகள் தேடப்படுகின்றன # Sign list window +STR_SIGN_LIST_CAPTION :{WHITE}குறிகளின் பட்டியல் - {COMMA} குறி{P "" கள்} +STR_SIGN_LIST_MATCH_CASE :{BLACK}case இனை சரிபார்க்கவும் # Sign window +STR_EDIT_SIGN_CAPTION :{WHITE}குறியீட்டினை திருத்தவும் +STR_EDIT_SIGN_NEXT_SIGN_TOOLTIP :{BLACK}அடுத்த குறியிற்கு செல்லவும் +STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK}முந்தைய குறியிற்கு செல்லவும் +STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}குறியிற்கு பெயரிடவும் # Town directory window +STR_TOWN_DIRECTORY_CAPTION :{WHITE}நகரங்கள் +STR_TOWN_DIRECTORY_NONE :{ORANGE}- ஒன்றுமில்லை - STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA}) +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_MAIL_LAST_MONTH_MAX :{BLACK}சென்ற மாத அஞ்சல்கள்: {ORANGE}{COMMA}{BLACK} அதிகம்: {ORANGE}{COMMA} @@ -1997,8 +2617,12 @@ STR_TOWN_VIEW_RENAME_TOWN_BUTTON :நகரத் # Town local authority window STR_LOCAL_AUTHORITY_CAPTION :{WHITE}{TOWN} நகராட்சி +STR_LOCAL_AUTHORITY_COMPANY_RATINGS :{BLACK}போக்குவரத்து நிறுவன தரங்கள்: STR_LOCAL_AUTHORITY_COMPANY_RATING :{YELLOW}{COMPANY} {COMPANY_NUM}: {ORANGE}{STRING} +STR_LOCAL_AUTHORITY_ACTIONS_TITLE :{BLACK}செயற்பாடுகள்: +STR_LOCAL_AUTHORITY_ACTIONS_TOOLTIP :{BLACK}இந்த நகரத்தில் செய்யப்போகும் செயல்களின் பட்டியல் - ஒரு பொருளினை பற்றி அறிய சொடுக்குக STR_LOCAL_AUTHORITY_DO_IT_BUTTON :{BLACK}செய் +STR_LOCAL_AUTHORITY_DO_IT_TOOLTIP :{BLACK}மேலுள்ள பட்டியலில் குறிப்பிடப்பட்ட செயலினை மேற்கொள்ளவும் STR_LOCAL_AUTHORITY_ACTION_SMALL_ADVERTISING_CAMPAIGN :சிறிய விளம்பர சேவை STR_LOCAL_AUTHORITY_ACTION_MEDIUM_ADVERTISING_CAMPAIGN :சராசரி விளம்பர சேவை @@ -2009,12 +2633,20 @@ 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_STATUE_OF_COMPANY :{YELLOW}தங்கள் நிறுவனத்தின் பெருமைக்காக ஓர் சிலையினைக் கட்டவும்.{}செலவு: {CURRENCY_LONG} # Goal window -STR_GOALS_CAPTION :{WHITE}குறிக்கோள்கள் +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}நிறுவனத்தின் குறிக்கோள்கள்: # Goal question window @@ -2045,28 +2677,71 @@ STR_GOAL_QUESTION_BUTTON_CLOSE :மூடு # Subsidies window STR_SUBSIDIES_CAPTION :{WHITE}மானியங்கள் +STR_SUBSIDIES_OFFERED_TITLE :{BLACK}மானியம் வழங்கப்படப்போகும் பணிகள்: +STR_SUBSIDIES_OFFERED_FROM_TO :{ORANGE}{STRING} {STRING} இருந்து {STRING}வரை {YELLOW} ({DATE_SHORT} முன்னர்) STR_SUBSIDIES_NONE :{ORANGE}- ஒன்றுமில்லை - STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}மானியம் ஏற்கனவே வழங்கப்பட்ட பணிகள்: +STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING} {STRING} இருந்து {STRING} வரை {YELLOW} ({COMPANY}{YELLOW}, {DATE_SHORT} வரை) + +# 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_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 அழுத்தி ஒன்றிற்கும் மேற்ப்பட்ட பொருட்களைத் தேர்ந்தெடுக்கவும் STR_STATION_LIST_CAPTION :{WHITE}{COMPANY} - {COMMA} நிலையம்{P "நிலையம்" நிலையங்கள்} STR_STATION_LIST_STATION :{YELLOW}{STATION} {STATION_FEATURES} STR_STATION_LIST_WAYPOINT :{YELLOW}{WAYPOINT} STR_STATION_LIST_NONE :{YELLOW}- ஒன்றுமில்லை - STR_STATION_LIST_SELECT_ALL_FACILITIES :{BLACK}அனைத்து வசதிகளையும் தேர்ந்தெடு +STR_STATION_LIST_SELECT_ALL_TYPES :{BLACK}அனைத்து சரக்கு வகைகளையும் தேர்ந்தெடுக்கவும் (காத்திருக்கா சரக்குகளையும் சேர்த்து) +STR_STATION_LIST_NO_WAITING_CARGO :{BLACK}எந்த வகையான சரக்குகளும் காத்திருக்கவில்லை # 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} {STATION} இலிருந்து வந்துக்கொண்டிருக்கிறது) +STR_STATION_VIEW_RESERVED :{YELLOW}({CARGO_SHORT} ஏற்றுவதற்காக ஒதுக்கப்பட்டுள்ளது) STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}ஏற்றுக்கொள்பவை STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}ஏற்றுக்கொள்ளப்படும் சரக்குகளின் பட்டியலினைக் காட்டு STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}ஏற்றுக்கொள்பவை: {WHITE}{CARGO_LIST} - -STR_STATION_VIEW_CARGO_RATING :{WHITE}{STRING}: {YELLOW}{STRING} ({COMMA}%) +STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}இந்த நிலையம் இந்த நகரின் முழு போக்குவரத்து உரிமைகளையும் பெற்றுள்ளது. +STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} இந்த நகரின் மொத்த போக்குவரத்து உரிமைகளையும் வாங்கியது. + +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 :மூலம்-வழியாக-சேருமிடம் ############ range for rating starts +STR_CARGO_RATING_APPALLING :மட்டம் STR_CARGO_RATING_VERY_POOR :மிகவும் மட்டம் STR_CARGO_RATING_POOR :மட்டம் STR_CARGO_RATING_MEDIOCRE :சராசரி @@ -2078,9 +2753,15 @@ STR_CARGO_RATING_OUTSTANDING :மிகச் 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_AIRCRAFT_TOOLTIP :{BLACK}இந்த நிலையத்தினை அட்டவணையில் வைத்துள்ள அனைத்து விமானங்களையும் காட்டு +STR_STATION_VIEW_SCHEDULED_SHIPS_TOOLTIP :{BLACK}இந்த நிலையத்தினை அட்டவணையில் வைத்துள்ள அனைத்து கப்பல்களையும் காட்டு +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} @@ -2109,11 +2790,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_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+Click செய்தால் அதிகபட்ச கடன்தொகை வாங்கப்படும் STR_FINANCES_REPAY_BUTTON :{BLACK}கடனை அடை{CURRENCY_LONG} +STR_FINANCES_REPAY_TOOLTIP :{BLACK}பகுதி கடனினை அடைக்கவும். Ctrl+Click செய்தால் முடிந்த அளவு கடன் திரும்பித் தரப்படும் STR_FINANCES_INFRASTRUCTURE_BUTTON :{BLACK}கட்டுமானங்கள் # Company view @@ -2121,6 +2805,7 @@ STR_COMPANY_VIEW_CAPTION :{WHITE}{COMPANY STR_COMPANY_VIEW_PRESIDENT_MANAGER_TITLE :{WHITE}{PRESIDENT_NAME}{}{GOLD}(மேலாளர்) STR_COMPANY_VIEW_INAUGURATED_TITLE :{GOLD}திற்க்கப்பட்டது: {WHITE}{NUM} +STR_COMPANY_VIEW_COLOUR_SCHEME_TITLE :{GOLD}நிற கோட்பாடு: STR_COMPANY_VIEW_VEHICLES_TITLE :{GOLD}வாகனங்கள்: STR_COMPANY_VIEW_TRAINS :{WHITE}{COMMA} இரயில்{P "" கள்} STR_COMPANY_VIEW_ROAD_VEHICLES :{WHITE}{COMMA} சாலை வாகனம்{P "" கள்} @@ -2128,6 +2813,7 @@ STR_COMPANY_VIEW_AIRCRAFT :{WHITE}{COMMA} STR_COMPANY_VIEW_SHIPS :{WHITE}{COMMA} கப்பல்{P "" கள்} 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} இரயில் பாகம்{P "" கள்} STR_COMPANY_VIEW_INFRASTRUCTURE_ROAD :{WHITE}{COMMA} சாலை பாகம்{P "" கள்} @@ -2140,16 +2826,20 @@ STR_COMPANY_VIEW_BUILD_HQ_BUTTON :{BLACK}தல 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}HQ வினை நகர்த்தவும் STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}விவரங்கள் STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}விவரமான கட்டட எண்ணிக்கைகளை காட்டு STR_COMPANY_VIEW_NEW_FACE_BUTTON :{BLACK}புதிய முகம் STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}மேலாளருக்கு புதிய முகத்தினைத் தேர்ந்தெடு +STR_COMPANY_VIEW_COLOUR_SCHEME_BUTTON :{BLACK}நிறக் கோட்பாடு STR_COMPANY_VIEW_COMPANY_NAME_BUTTON :{BLACK}நிறுவனத்தின் பெயர் STR_COMPANY_VIEW_COMPANY_NAME_TOOLTIP :{BLACK}நிறுவனத்தின் பெயரை மாற்று STR_COMPANY_VIEW_PRESIDENT_NAME_BUTTON :{BLACK}மேலாளரின் பெயர் 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_COMPANY_NAME_QUERY_CAPTION :நிறுவனத்தின் பெயர் STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :மேலாளரின் பெயர் @@ -2167,7 +2857,6 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS :{WHITE}கா STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}நிலையங்கள்: STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}நிலைய வட்டங்கள் STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}விமான நிலையங்கள் -STR_COMPANY_INFRASTRUCTURE_VIEW_COST :{WHITE}{1:CURRENCY_LONG}/வருடத்திற்கு ({0:COMMA}) STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL :{WHITE}{CURRENCY_LONG}/வருடத்திற்கு # Industry directory @@ -2181,20 +2870,46 @@ STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUST 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_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} +STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}தேவைப்படுகிறது: {YELLOW}{STRING}{STRING}, {STRING}{STRING} +STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}தேவைப்படுகிறது: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING} ############ range for requires ends ############ range for produces starts +STR_INDUSTRY_VIEW_WAITING_FOR_PROCESSING :{BLACK}பதனிப்பட காத்திருக்கும் சரக்கு: +STR_INDUSTRY_VIEW_WAITING_STOCKPILE_CARGO :{YELLOW}{CARGO_LONG}{STRING}{BLACK} +STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}தயாரிப்பு: {YELLOW}{STRING}{STRING} +STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}தயாரிக்கிறது: {YELLOW}{STRING}{STRING}, {STRING}{STRING} ############ range for produces ends +STR_CONFIG_GAME_PRODUCTION :{WHITE}தயாரிப்பினை மாற்றவும் (8 இன் பெருக்கங்கள், 2040 வரை) +STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}தயாரிப்பு அளவினை மாற்றவும் (சதவிகிதம், 800% வரை) # Vehicle lists +STR_VEHICLE_LIST_TRAIN_CAPTION :{WHITE}{STRING} - {COMMA} இரயில்{P "" கள்} +STR_VEHICLE_LIST_ROAD_VEHICLE_CAPTION :{WHITE}{STRING} - {COMMA} சாலை வாகன{P "ம்" ங்கள்} +STR_VEHICLE_LIST_SHIP_CAPTION :{WHITE}{STRING} - {COMMA} கப்பல்{P "" கள்} +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_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_SHIPS :கிடைக்கும் கப்பல்கள் +STR_VEHICLE_LIST_AVAILABLE_AIRCRAFT :கிடைக்கும் விமானங்கள் +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_TRAIN_TO_DEPOT :பணிமனைக்கு அனுப்பு @@ -2205,6 +2920,7 @@ STR_VEHICLE_LIST_SEND_AIRCRAFT_TO_HANGAR :பணிமன STR_VEHICLE_LIST_MASS_STOP_LIST_TOOLTIP :{BLACK}பட்டியலில் உள்ள அனைத்து வாகனங்களையும் நிறுத்த இங்கே சொடுக்கவும் STR_VEHICLE_LIST_MASS_START_LIST_TOOLTIP :{BLACK}பட்டியலில் உள்ள அனைத்து வாகனங்களையும் இயக்க இங்கே சொடுக்கவும் +STR_VEHICLE_LIST_SHARED_ORDERS_LIST_CAPTION :{WHITE}{COMMA} வாகன{P "த்தின்" ங்களின்} பகிர்ந்த கட்டளைகள் # Group window STR_GROUP_ALL_TRAINS :அனைத்து இரயில்கள் @@ -2212,10 +2928,21 @@ STR_GROUP_ALL_ROAD_VEHICLES :அனைத் STR_GROUP_ALL_SHIPS :அனைத்து கப்பல்கள் STR_GROUP_ALL_AIRCRAFTS :அனைத்து விமானங்கள் +STR_GROUP_DEFAULT_TRAINS :குழுவில் இல்லாத இரயில்கள் +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_GROUP_DELETE_TOOLTIP :{BLACK}தேர்ந்தெடுக்கப்பட்ட குழுவின் பெயரினை நீக்கவும் +STR_GROUP_RENAME_TOOLTIP :{BLACK}தேர்ந்தெடுக்கப்பட்ட குழுவின் பெயரினை மாற்றவும் +STR_GROUP_ADD_SHARED_VEHICLE :பகிர்ந்த வாகனங்களை சேர்க்கவும் STR_GROUP_REMOVE_ALL_VEHICLES :அனைத்து வாகனங்களையும் நீக்கு +STR_GROUP_RENAME_CAPTION :{BLACK}குழுவின் பெயரினை மாற்றவும் # Build vehicle window STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :புது இரயில் வாகனங்கள் @@ -2242,8 +2969,11 @@ STR_PURCHASE_INFO_COST :{BLACK}வி STR_PURCHASE_INFO_WEIGHT_CWEIGHT :{BLACK}எடை: {GOLD}{WEIGHT_SHORT} ({WEIGHT_SHORT}) STR_PURCHASE_INFO_COST_SPEED :{BLACK}செலவு: {GOLD}{CURRENCY_LONG}{BLACK} வேகம்: {GOLD}{VELOCITY} 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_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}இரயில் வாகனங்கள் பட்டியல் - மேலும் விவரங்களுக்கு வாகனத்தை சொடுக்கவும் @@ -2256,13 +2986,25 @@ 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}காட்டப்படும் இரயில் வாகனத்தை வாங்கவும். Shift+Click செய்தால் வாங்கும்போது ஆகும் மதிப்பிடப்பட்டச் செலவுகளைக் காட்டு +STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_TOOLTIP :{BLACK}காட்டப்படும் சாலை வாகனத்தை வாங்கவும். Shift+Click செய்தால் வாங்கும்போது ஆகும் மதிப்பிடப்பட்டச் செலவுகளைக் காட்டும் +STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_TOOLTIP :{BLACK}காட்டப்படும் கப்பலை வாங்கவும். Shift+Click செய்தால் வாங்கும்போது ஆகும் மதிப்பிடப்பட்டச் செலவுகளைக் காட்டும் +STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_TOOLTIP :{BLACK}காட்டப்படும் விமானத்தை வாங்கவும். Shift+Click செய்தால் வாங்கும்போது ஆகும் மதிப்பிடப்பட்டச் செலவுகளைக் காட்டும் STR_BUY_VEHICLE_TRAIN_RENAME_BUTTON :{BLACK}பெயரிடு STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_BUTTON :{BLACK}பெயரிடு 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_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}கப்பல் வகையின் பெயரினை மாற்றவும் +STR_QUERY_RENAME_AIRCRAFT_TYPE_CAPTION :{WHITE}விமான வகையின் பெயரினை மாற்றவும் # Depot window STR_DEPOT_CAPTION :{WHITE}{DEPOT} @@ -2284,6 +3026,7 @@ 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}பணிமனையில் உள்ள சாலை வாகனங்களை விற்று விடு @@ -2291,6 +3034,9 @@ 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_SHIP_TOOLTIP :{BLACK}பணிமனையில் உள்ள அனைத்து கப்பல்களையும் தானாக மாற்றிவிடு +STR_DEPOT_AUTOREPLACE_AIRCRAFT_TOOLTIP :{BLACK}பணிமனையிலுள்ள அனைத்து விமானங்களையும் தானாக மாற்று STR_DEPOT_TRAIN_NEW_VEHICLES_BUTTON :{BLACK}புதிய வாகனங்கள் STR_DEPOT_ROAD_VEHICLE_NEW_VEHICLES_BUTTON :{BLACK}புதிய வாகனங்கள் @@ -2309,14 +3055,22 @@ STR_DEPOT_CLONE_AIRCRAFT :{BLACK}வி +STR_DEPOT_VEHICLE_ORDER_LIST_TRAIN_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_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_SHIP_TOOLTIP :{BLACK}பணிமனையிலுள்ள அனைத்து கப்பல்களையும் இயக்கவும் STR_DEPOT_MASS_START_HANGAR_TOOLTIP :{BLACK}பணிமனையின் உள்ளே உள்ள அனைத்து விமானங்களையும் கிளப்ப இங்கே சொடுக்கவும் +STR_DEPOT_SELL_CONFIRMATION_TEXT :{YELLOW}நீங்கள் இந்தப் பணிமனையிலுள்ள அனைத்து வாகங்களையும் விற்க தயாராக உள்ளீர்கள். இந்த முடிவில் நீங்கள் உறுதியா? # Engine preview window STR_ENGINE_PREVIEW_CAPTION :{WHITE}வாகன உற்பத்தியாலரிடமிருந்து ஓர் தகவல் @@ -2329,6 +3083,9 @@ STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :மேக்ல STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}செலவு: {CURRENCY_LONG} எடை: {WEIGHT_SHORT}{}வேகம்: {VELOCITY} திறன்: {POWER}{}ஓட்டுவதற்கான செலவு: {CURRENCY_LONG}/வரு{}கொள்ளளவு: {CARGO_LONG} STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}செலவு: {CURRENCY_LONG} எடை: {WEIGHT_SHORT}{}வேகம்: {VELOCITY} திறன்: {POWER} அதி. T.E.: {6:FORCE}{}ஓட்டுவதற்கான செலவு: {4:CURRENCY_LONG}/வரு{}கொள்ளளவு: {5:CARGO_LONG} +STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST :{BLACK}செலவு: {CURRENCY_LONG} அதி. வேகம்: {VELOCITY}{}கொள்ளளவு: {CARGO_LONG}, {CARGO_LONG}{}ஓட்டும் செலவு: {CURRENCY_LONG}/ஆண்டிற்கு +STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK}செலவு: {CURRENCY_LONG} அதி. வேகம்: {VELOCITY}{}கொள்ளளவு: {CARGO_LONG}{}ஓட்டும் செலவு: {CURRENCY_LONG}/ஆண்டிற்கு +STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_CAPACITY_RUNCOST:{BLACK}செலவு: {CURRENCY_LONG} அதி. வேகம்: {VELOCITY} எல்லை: {COMMA} கட்டங்கள்{}கொள்ளளவு: {CARGO_LONG}, {CARGO_LONG}{}ஓட்டும் செலவு: {CURRENCY_LONG}/ஆண்டிற்கு STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}செலவு: {CURRENCY_LONG} அதி. வேகம்: {VELOCITY} வரையறை: {COMMA} கட்டங்கள்{}கொள்ளளவு: {CARGO_LONG}{}இயக்குவதற்கான செலவு: {CURRENCY_LONG}/வரு # Autoreplace window @@ -2338,14 +3095,18 @@ STR_REPLACE_VEHICLE_ROAD_VEHICLE :சாலை STR_REPLACE_VEHICLE_SHIP :கப்பல் STR_REPLACE_VEHICLE_AIRCRAFT :விமானம் +STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}மாற்றியமைக்க பொறி வகையினை தேர்ந்தெடுக்க STR_REPLACE_VEHICLES_START :{BLACK}வாகனங்களை மாற்றுவதை ஆரம்பி +STR_REPLACE_VEHICLES_NOW :அனைத்து வாகனங்களையும் மாற்று +STR_REPLACE_VEHICLES_WHEN_OLD :பழைய வாகனங்களை மட்டும் மாற்று STR_REPLACE_NOT_REPLACING :{BLACK}மாற்றல் நடைபெறவில்லை STR_REPLACE_NOT_REPLACING_VEHICLE_SELECTED :{BLACK}எந்த வாகனமும் தேர்ந்தெடுக்கப்படவில்லை STR_REPLACE_REPLACING_WHEN_OLD :{ENGINE} காலாவதியான பிறகு STR_REPLACE_VEHICLES_STOP :{BLACK}வாகனங்களை மாற்றுவதை நிறுத்தவும் STR_REPLACE_ENGINE_WAGON_SELECT :{BLACK}மாற்றல்: {ORANGE}{STRING} +STR_REPLACE_ENGINES :பொறிகள் STR_REPLACE_WAGONS :வாகனங்கள் STR_REPLACE_RAIL_VEHICLES :இரயில் வாகனங்கள் @@ -2353,17 +3114,35 @@ STR_REPLACE_ELRAIL_VEHICLES :மின்ச STR_REPLACE_MONORAIL_VEHICLES :மோனோ இரயில் வாகனங்கள் STR_REPLACE_MAGLEV_VEHICLES :மேக்லெவ் வாகனங்கள் +STR_REPLACE_REMOVE_WAGON :{BLACK}பெட்டி நீக்கம்: {ORANGE}{STRING} # Vehicle view STR_VEHICLE_VIEW_CAPTION :{WHITE}{VEHICLE} +STR_VEHICLE_VIEW_TRAIN_SEND_TO_DEPOT_TOOLTIP :{BLACK}இரயிலினை பணிமனைக்கு அனுப்பவும். Ctrl+Click அழுத்தினால் பழுதுபார்த்தல் மட்டுமே நடக்கும் +STR_VEHICLE_VIEW_ROAD_VEHICLE_SEND_TO_DEPOT_TOOLTIP :{BLACK}வாகனத்தினை பணிமனைக்கு அனுப்பவும். Ctrl+Click அழுத்தினால் பழுதுபார்த்தல் மட்டுமே நடக்கும் +STR_VEHICLE_VIEW_SHIP_SEND_TO_DEPOT_TOOLTIP :{BLACK}கப்பலினை பணிமனைக்கு அனுப்பவும். Ctrl+Click அழுத்தினால் பழுதுபார்த்தல் மட்டுமே நடக்கும் +STR_VEHICLE_VIEW_AIRCRAFT_SEND_TO_DEPOT_TOOLTIP :{BLACK}விமானத்தினை பணிமனைக்கு அனுப்பவும். Ctrl+Click அழுத்தினால் பழுதுபார்த்தல் மட்டுமே நடக்கவும் +STR_VEHICLE_VIEW_CLONE_TRAIN_INFO :{BLACK}இது இரயிலின் பிரதியை உருவாக்கும். Ctrl+Click அழுத்தினால் கட்டளைகள் பகிரப்படும். Shift+Click அழுத்தினால் மதிப்பிடப்பட்ட செலவுகள் காட்டப்படும் +STR_VEHICLE_VIEW_CLONE_ROAD_VEHICLE_INFO :{BLACK}இது சாலை வாகனத்தின் பிரதியை உருவாக்கும். Ctrl+Click அழுத்தினால் கட்டளைகள் பகிரப்படும். Shift+Click அழுத்தினால் மதிப்பிடப்பட்ட செலவுகள் காட்டப்படும் +STR_VEHICLE_VIEW_CLONE_SHIP_INFO :{BLACK}இது கப்பலின் பிரதியை உருவாக்கும். Ctrl+Click அழுத்தினால் கட்டளைகள் பகிரப்படும். Shift+Click அழுத்தினால் மதிப்பிடப்பட்ட செலவுகள் காட்டப்படும் +STR_VEHICLE_VIEW_CLONE_AIRCRAFT_INFO :{BLACK}இது விமானத்தின் பிரதியை உருவாக்கும். Ctrl+Click அழுத்தினால் கட்டளைகள் பகிரப்படும். Shift+Click அழுத்தினால் மதிப்பிடப்பட்ட செலவுகள் காட்டப்படும் +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_TRAIN_REVERSE_TOOLTIP :{BLACK}இரயிலினை திருப்பவும் +STR_VEHICLE_VIEW_ROAD_VEHICLE_REVERSE_TOOLTIP :{BLACK}வாகனத்தினை திருப்பவும் STR_VEHICLE_VIEW_TRAIN_ORDERS_TOOLTIP :{BLACK}இரயிலின் கட்டளைகளை பார்வையிடு. Ctrl+Click இரயிலின் நேர அட்டவனையினை காட்டும் +STR_VEHICLE_VIEW_ROAD_VEHICLE_ORDERS_TOOLTIP :{BLACK}வாகனத்தின் கட்டளைகளைக் காட்டு. Ctrl+Click அழுத்தினால் வாகனத்தின் கால அட்டவணையினைக் காட்டப்படும் +STR_VEHICLE_VIEW_SHIP_ORDERS_TOOLTIP :{BLACK}கப்பலின் கட்டளைகளைக் காட்டு. Ctrl+Click அழுத்தினால் கப்பலின் கால அட்டவணையினைக் காட்டப்படும் STR_VEHICLE_VIEW_AIRCRAFT_ORDERS_TOOLTIP :{BLACK}விமானத்தின் கட்டளைகளைக் காட்டு. Ctrl+Click விமானத்தின் கால அட்டவணையினைக் காட்டும் STR_VEHICLE_VIEW_TRAIN_SHOW_DETAILS_TOOLTIP :{BLACK}இரயிலின் விவரங்களைக் காட்டு @@ -2371,6 +3150,10 @@ 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+Click அழுத்தினால் செல்லவேண்டிய இடத்தினைக் காட்டும் +STR_VEHICLE_VIEW_ROAD_VEHICLE_STATE_START_STOP_TOOLTIP :{BLACK}தற்போதைய வாகனங்கள் செயல் - வாகனத்தினை நிறுத்த/கிளப்ப சொடுக்கவும். Ctrl+Click அழுத்தினால் செல்லவேண்டிய இடத்தினைக் காட்டும் +STR_VEHICLE_VIEW_SHIP_STATE_START_STOP_TOOLTIP :{BLACK}தற்போதைய கப்பல் செயல் - கப்பலினை நிறுத்த/கிளப்ப சொடுக்கவும். Ctrl+Click அழுத்தினால் செல்லவேண்டிய இடத்தினைக் காட்டும் +STR_VEHICLE_VIEW_AIRCRAFT_STATE_START_STOP_TOOLTIP :{BLACK}தற்போதைய விமான செயல் - விமானத்தினை நிறுத்த/கிளப்ப சொடுக்கவும். Ctrl+Click அழுத்தினால் செல்லவேண்டிய இடத்தினைக் காட்டும் # Messages in the start stop button in the vehicle view STR_VEHICLE_STATUS_LOADING_UNLOADING :{LTBLUE}சரக்கு ஏற்றம் / இறக்கம் @@ -2428,6 +3211,11 @@ STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}இட 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_SERVICE_INTERVAL_DROPDOWN_TOOLTIP :{BLACK}பழுதுபார்த்தல் இடைவேளி வகையினை மாற்றவும் +STR_VEHICLE_DETAILS_DEFAULT :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_SHIP_CAPTION :{WHITE}கப்பலுக்கு பெயரிடு @@ -2518,6 +3306,7 @@ STR_ORDER_SERVICE :{BLACK}பர STR_ORDER_DROP_GO_ALWAYS_DEPOT :எப்போதும் செல் STR_ORDER_DROP_SERVICE_DEPOT :தேவைப்பட்டால் பராமரிப்பிற்கு செல் STR_ORDER_DROP_HALT_DEPOT :நிறுத்து +STR_ORDER_SERVICE_TOOLTIP :{BLACK}பழுது சரிபார்த்தல் இல்லையெனில் இந்தக் கட்டளையினை தவிற்கவும் # Conditional order variables, must follow order of OrderConditionVariable enum @@ -2532,6 +3321,10 @@ STR_ORDER_CONDITIONAL_REMAINING_LIFETIME :மீதமி STR_ORDER_CONDITIONAL_COMPARATOR_TOOLTIP :{BLACK}கொடுக்கப்பட்ட மதிப்புடன் எப்படி வாகன தகவல்களை ஒப்பிடுவது STR_ORDER_CONDITIONAL_COMPARATOR_EQUALS :இதற்கு சமம் STR_ORDER_CONDITIONAL_COMPARATOR_NOT_EQUALS :இதற்கு சமம் இல்லை +STR_ORDER_CONDITIONAL_COMPARATOR_LESS_THAN :இது குறைவு. இதற்கு +STR_ORDER_CONDITIONAL_COMPARATOR_LESS_EQUALS :இது சமம் அல்லது குறைவு. இதற்கு +STR_ORDER_CONDITIONAL_COMPARATOR_MORE_THAN :இது அதிகம். இதற்கு +STR_ORDER_CONDITIONAL_COMPARATOR_MORE_EQUALS :இது சமம் அல்லது அதிகம். இதற்கு STR_ORDER_CONDITIONAL_COMPARATOR_IS_TRUE :உண்மை STR_ORDER_CONDITIONAL_COMPARATOR_IS_FALSE :பொய் @@ -2544,17 +3337,22 @@ 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+Click அழுத்தினால் வாகனத்தினது கட்டளைகள் அனைத்தும் நீக்கப்படும் 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_VEH_WITH_SHARED_ORDERS_LIST_TOOLTIP :{BLACK}இந்த கால அட்டவணையினை பகிரும் அனைத்து வாகனங்களையும் காட்டு # String parts to build the order string 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_NEAREST_DEPOT :அருகாமையில் உள்ள STR_ORDER_NEAREST_HANGAR :அருகாமையில் உள்ள பணிமனை @@ -2579,6 +3377,10 @@ STR_ORDER_UNLOAD :(இறக் 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_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 :(எதையும் இறக்காமல் எந்த சரக்கையும் முழுமையாக ஏற்றிக்கொண்டுச் செல்) @@ -2590,6 +3392,9 @@ STR_ORDER_FULL_LOAD_ANY_REFIT :(எந்த 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} இற்கு மாற்றியமை) @@ -2603,19 +3408,26 @@ STR_ORDER_STOP_LOCATION_FAR_END :[தூரம STR_ORDER_OUT_OF_RANGE :{RED} (அடுத்த இடம் எல்லைக்கு அப்பால் உள்ளது) STR_ORDER_CONDITIONAL_UNCONDITIONAL :{COMMA} கட்டளைக்கு தாண்டி செல்லவும் +STR_ORDER_CONDITIONAL_NUM :கட்டளையிற்கு தாவவும் {COMMA} {STRING} {STRING} நடந்தால் {COMMA} +STR_ORDER_CONDITIONAL_TRUE_FALSE :பிறகு கட்டளையிற்கு தாவவும் {COMMA} {STRING} {STRING} நடந்தால் STR_INVALID_ORDER :{RED} (செல்லாத கட்டளை) # Time table window STR_TIMETABLE_TITLE :{WHITE}{VEHICLE} (பயண நேர அட்டவணை) STR_TIMETABLE_ORDER_VIEW :{BLACK}கட்டளைகள் +STR_TIMETABLE_ORDER_VIEW_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_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 "" கள்} @@ -2629,19 +3441,27 @@ STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}கா STR_TIMETABLE_STATUS_START_AT :{BLACK}இந்த கால அட்டவணை {STRING} அன்று தொடங்கும் STR_TIMETABLE_STARTING_DATE :{BLACK}ஆரம்ப தேதி -STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}கால அட்டவணையின் தொடக்க தேதியினை தேர்ந்தெடுக்கவும் STR_TIMETABLE_CHANGE_TIME :{BLACK}நேரத்தை மாற்று +STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}இந்தக் கட்டளையின் கால அளவினை மாற்றவும் STR_TIMETABLE_CLEAR_TIME :{BLACK}நேரத்தை நீக்கு +STR_TIMETABLE_CLEAR_TIME_TOOLTIP :{BLACK}இந்தக் கட்டளையின் கால அளவினை நீக்கவும் STR_TIMETABLE_CHANGE_SPEED :{BLACK}வேக எல்லையை மாற்று +STR_TIMETABLE_CHANGE_SPEED_TOOLTIP :{BLACK}இந்தக் கட்டளையின் பயண வேகத்தினை மாற்றவும் STR_TIMETABLE_CLEAR_SPEED :{BLACK}வேகத்தடையை நீக்கு +STR_TIMETABLE_CLEAR_SPEED_TOOLTIP :{BLACK}இந்தக் கட்டளையின் பயண வேகத்தினை நீக்கவும் +STR_TIMETABLE_RESET_LATENESS :{BLACK}தாமதம் எண்ணியை முன்நிலையாக்கவும் +STR_TIMETABLE_RESET_LATENESS_TOOLTIP :{BLACK}தாமத நேர எண்ணியை மாற்றியமைக்கவும், சரியான நேரத்திற்கு வாகனம் வருவதற்கு +STR_TIMETABLE_AUTOFILL :{BLACK}தானியங்கிநிறப்பான் STR_TIMETABLE_EXPECTED :{BLACK}எதிர்ப்பார்க்கப்படுவது +STR_TIMETABLE_SCHEDULED :{BLACK}அட்டவணையிடப்பட்ட +STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}எதிர்பார்க்கப்பட்ட மற்றும் அட்டவணையிடப்பட்ட ஆகிவற்றிற்குள் இடைமாற்றவும் STR_TIMETABLE_ARRIVAL_ABBREVIATION :A: STR_TIMETABLE_DEPARTURE_ABBREVIATION :D: @@ -2650,22 +3470,30 @@ STR_TIMETABLE_DEPARTURE_ABBREVIATION :D: # Date window (for timetable) STR_DATE_CAPTION :{WHITE}தேதியை அமை STR_DATE_SET_DATE :{BLACK}தேதியை அமை +STR_DATE_SET_DATE_TOOLTIP :{BLACK}நேர அட்டவணையின் தொடக்கத் தேதியாக தேர்ந்தெடுக்கப்பட்டத் தேதியினை பயன்படுத்தவும் STR_DATE_DAY_TOOLTIP :{BLACK}நாளினைத் தேர்ந்தெடு STR_DATE_MONTH_TOOLTIP :{BLACK}மாதத்தினை தேர்ந்திடு STR_DATE_YEAR_TOOLTIP :{BLACK}வருடத்தை தேர்ந்தெடுr # AI debug window +STR_AI_DEBUG :{WHITE}AI/ஆட்டத்தின் வரிவடிவம் சரிபார்த்தல் 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_TOOLTIP :{BLACK}வரிவடிவத்தின் அமைப்புகளை மாற்று STR_AI_DEBUG_RELOAD :{BLACK}AI-ஐ மறுபடியும் ஏற்று +STR_AI_DEBUG_RELOAD_TOOLTIP :{BLACK}AI இனை நிறுத்தவும், வரிவடிவத்தினை திருப்பி ஏற்றவும், மேலும் AI இனை மீண்டும் தொடங்கவும் +STR_AI_DEBUG_BREAK_ON_LABEL :{BLACK}உடைத்து ஆம்: +STR_AI_DEBUG_BREAK_STR_OSKTITLE :{BLACK}உடைத்து ஆம் +STR_AI_DEBUG_MATCH_CASE :{BLACK}case இனை சரிபடுத்தவும் STR_AI_DEBUG_CONTINUE :{BLACK}தொடரு STR_AI_DEBUG_CONTINUE_TOOLTIP :{BLACK}AI இனை தொடரு +STR_AI_DEBUG_SELECT_AI_TOOLTIP :{BLACK}இந்த AI இன் சரிபார்த்தலினை காட்டவும் STR_AI_GAME_SCRIPT :{BLACK}விளையாட்டின் ஸ்கிரிப்ட் STR_AI_GAME_SCRIPT_TOOLTIP :{BLACK}வரிவடிவத்தின் பதிவேட்டினை பார் +STR_ERROR_AI_DEBUG_SERVER_ONLY :{YELLOW}AI/ஆட்ட வரிவடிவம் சரிபார்த்தல் கட்டம் சர்வர்களுக்கு மட்டுமே உள்ளது # AI configuration window STR_AI_CONFIG_CAPTION :{WHITE}AI/வரிவடிவம் ஏற்றபடி அமை @@ -2717,6 +3545,8 @@ STR_AI_SETTINGS_START_DELAY :இந்த AI # Textfile window +STR_TEXTFILE_README_CAPTION :{WHITE}{STRING} {STRING} இன் படிப்பு அறி +STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}{STRING} {STRING} இன் மாற்றங்கள் பதிவேடு STR_TEXTFILE_LICENCE_CAPTION :{WHITE}{STRING} {STRING} இன் அனுமதி STR_TEXTFILE_VIEW_README :{BLACK}படிக்க வேண்டியதை பார்வையிடு STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}மாற்றங்கள் பதிவேடு @@ -2740,6 +3570,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} @@ -2777,9 +3611,11 @@ STR_WARNING_HEIGHTMAP_SCALE_CAPTION :{WHITE}ஒப STR_WARNING_HEIGHTMAP_SCALE_MESSAGE :{YELLOW}மூல வரைபடத்தின் அளவினை மாற்றுவது விருப்பத்தக்கது இல்லை. தொடரட்டுமா? # Soundset messages +STR_WARNING_FALLBACK_SOUNDSET :{WHITE}ஒரு பின்தங்கு ஒலி கட்டு மட்டுமே கிடைத்தது. ஒலிகள் கேட்க வேண்டுமென்றால் கோப்பு பதிவிறக்க அமைப்பின் மூலம் நிறுவவும் # Screenshot related messages STR_WARNING_SCREENSHOT_SIZE_CAPTION :{WHITE}பெரிய திரைப்பிடிப்பு +STR_WARNING_SCREENSHOT_SIZE_MESSAGE :{YELLOW}திரைப்பிடிப்பின் அளவு {COMMA} x {COMMA} பிக்சல்கள். திரைப்பிடிப்பு எடுக்க சிறிது நேரமாகும். தொடர விருப்பமா? STR_MESSAGE_SCREENSHOT_SUCCESSFULLY :{WHITE}திரைபிடிப்பு வெற்றிகரமாக '{STRING}' என பதிவு செய்யப்பட்டது STR_ERROR_SCREENSHOT_FAILED :{WHITE}திரைபிடிப்பு தோல்வியடைந்தது! @@ -2893,6 +3729,8 @@ 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}நிறுத்தத்தின் பகுதியை நீக்க இயலாது... @@ -3087,6 +3925,11 @@ 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}இரயில் சிக்னலைத் தாண்டிச் செல்ல முடியாது... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}இரயில் செல்லும் திசையினை திருப்ப முடியாது... @@ -3129,6 +3972,16 @@ STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}கு # Translatable comment for OpenTTD's desktop shortcut STR_DESKTOP_SHORTCUT_COMMENT :A simulation game based on Transport Tycoon Deluxe +# Translatable descriptions in media/baseset/*.ob* files +STR_BASEGRAPHICS_DOS_DESCRIPTION :அசல் டிரான்ஸ்ஃபோர்ட் டைகூன் டீலக்ஸ் DOS பதிப்பு அசைவூட்டங்கள். +STR_BASEGRAPHICS_DOS_DE_DESCRIPTION :அசல் டிரான்ஸ்ஃபோர்ட் டைகூன் டீலக்ஸ் DOS (செருமன்) பதிப்பு அசைவூட்டங்கள். +STR_BASEGRAPHICS_WIN_DESCRIPTION :அசல் டிரான்ஸ்ஃபோர்ட் டைகூன் டீலக்ஸ் விண்டோஸ் பதிப்பு அசைவூட்டங்கள். +STR_BASESOUNDS_DOS_DESCRIPTION :அசல் டிரான்ஸ்ஃபோர்ட் டைகூன் டீலக்ஸ் DOS பதிப்பு ஒலிகள். +STR_BASESOUNDS_WIN_DESCRIPTION :அசல் டிரான்ஸ்ஃபோர்ட் டைகூன் டீலக்ஸ் விண்டோஸ் பதிப்பு ஒலிகள். +STR_BASESOUNDS_NONE_DESCRIPTION :ஒலிகள் இல்லாத ஒலி தொகுப்பு. +STR_BASEMUSIC_WIN_DESCRIPTION :அசல் டிரான்ஸ்ஃபோர்ட் டைகூன் டீலக்ஸ் விண்டோஸ் பதிப்பு இசை. +STR_BASEMUSIC_NONE_DESCRIPTION :இசை இல்லாத இசைத்தொகுப்பு. + ##id 0x2000 # Town building names STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1 :உயரமான அலுவலுக கட்டம் @@ -3290,7 +4143,7 @@ STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PAPER_TRUCK :காகித STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COPPER_ORE_HOPPER :செப்பு தாது பெட்டி 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_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 :மிட்டாய் பெட்டி @@ -3458,12 +4311,12 @@ STR_VEHICLE_NAME_SHIP_FFP_PASSENGER_FERRY :FFP பயண 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_AIRCRAFT_SAMPSON_U52 :ஸம்ப்ஸன் U52 -STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :கொல்மன் கவுன்ட் +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 :FFP டார்ட் STR_VEHICLE_NAME_AIRCRAFT_YATE_HAUGAN :ஈஏட் ஹவ்கன் STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_COTSWALD_LB_3 :பேக்வெல் கோட்ஸ்வால்டு LB-3 @@ -3492,7 +4345,7 @@ STR_VEHICLE_NAME_AIRCRAFT_KELLING_K1 :கெல்ல STR_VEHICLE_NAME_AIRCRAFT_KELLING_K6 :கெல்லிங்க் கெ6 STR_VEHICLE_NAME_AIRCRAFT_KELLING_K7 :கெல்லிங்க் கெ7 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_700 :டார்வின் 700 -STR_VEHICLE_NAME_AIRCRAFT_FFP_HYPERDART_2 :FFP ஹைபர்டிராபட் 2 +STR_VEHICLE_NAME_AIRCRAFT_FFP_HYPERDART_2 :FFP ஹைபர்டார்ட் 2 STR_VEHICLE_NAME_AIRCRAFT_DINGER_200 :டிங்௧ர் 200 STR_VEHICLE_NAME_AIRCRAFT_DINGER_1000 :டிங்௧ர் 1000 STR_VEHICLE_NAME_AIRCRAFT_PLODDYPHUT_100 :பிலோடிபுட் 100 @@ -3575,8 +4428,9 @@ 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_SPACE_STRING :{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} @@ -3600,9 +4454,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 new file mode 100644 index 000000000..e5bf24820 --- /dev/null +++ b/src/lang/thai.txt @@ -0,0 +1,4858 @@ +##name Thai +##ownname Thai +##isocode th_TH +##plural 1 +##textdir ltr +##digitsep , +##digitsepcur , +##decimalsep . +##winlangid 0x041e +##grflangid 0x42 + + +# $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 :(undefined string) +STR_JUST_NOTHING :ไม่มีอะไร + +# Cargo related strings +# Plural cargo name +STR_CARGO_PLURAL_NOTHING : +STR_CARGO_PLURAL_PASSENGERS :ผู้โดยสาร +STR_CARGO_PLURAL_COAL :ถ่านหิน +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_IRON_ORE :แร่เหล็ก +STR_CARGO_PLURAL_STEEL :เหล็กกล้า +STR_CARGO_PLURAL_VALUABLES :สินค้ามูลค่าสูง +STR_CARGO_PLURAL_COPPER_ORE :แร่ทองแดง +STR_CARGO_PLURAL_MAIZE :ข้าวโพด +STR_CARGO_PLURAL_FRUIT :ผลไม้ +STR_CARGO_PLURAL_DIAMONDS :เพชร +STR_CARGO_PLURAL_FOOD :อาหาร +STR_CARGO_PLURAL_PAPER :กระดาษ +STR_CARGO_PLURAL_GOLD :ทองคำ +STR_CARGO_PLURAL_WATER :น้ำ +STR_CARGO_PLURAL_WHEAT :ข้าวสาลี +STR_CARGO_PLURAL_RUBBER :ยางพารา +STR_CARGO_PLURAL_SUGAR :น้ำตาล +STR_CARGO_PLURAL_TOYS :ของเล่น +STR_CARGO_PLURAL_CANDY :ขนมสายไหม +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 :น้ำอัดลม + +# Singular cargo name +STR_CARGO_SINGULAR_NOTHING : +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_GRAIN :ข้าวสาลี +STR_CARGO_SINGULAR_WOOD :ท่อนซุง +STR_CARGO_SINGULAR_IRON_ORE :แร่เหล็ก +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_GOLD :ทองคำ +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_COTTON_CANDY :ขนมสายไหม +STR_CARGO_SINGULAR_BUBBLE :ฟอง +STR_CARGO_SINGULAR_TOFFEE :ลูกอม +STR_CARGO_SINGULAR_BATTERY :ถ่านไฟฉาย +STR_CARGO_SINGULAR_PLASTIC :พลาสติก +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_OIL :น้ำมันดิบ {VOLUME_LONG} +STR_QUANTITY_LIVESTOCK :ปศุสัตว์ {COMMA} ตัว +STR_QUANTITY_GOODS :สินค้าแปรรูป {COMMA} ลัง +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_COPPER_ORE :แร่ทองแดง {WEIGHT_LONG} +STR_QUANTITY_MAIZE :ข้าวโพด {WEIGHT_LONG} +STR_QUANTITY_FRUIT :ผลไม้ {WEIGHT_LONG} +STR_QUANTITY_DIAMONDS :เพชร {COMMA} ถุง +STR_QUANTITY_FOOD :อาหาร {WEIGHT_LONG} +STR_QUANTITY_PAPER :กระดาษ {WEIGHT_LONG} +STR_QUANTITY_GOLD :ทองคำ {COMMA} ถุง +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_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_N_A :N/A + +# Two letter abbreviation of cargo name +STR_ABBREV_NOTHING : +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_WOOD :{TINY_FONT}ไม้ +STR_ABBREV_IRON_ORE :{TINY_FONT}เหล็ก +STR_ABBREV_STEEL :{TINY_FONT}เหล็กกล้า +STR_ABBREV_VALUABLES :{TINY_FONT}มีค่า +STR_ABBREV_COPPER_ORE :{TINY_FONT}ทองแดง +STR_ABBREV_MAIZE :{TINY_FONT}ข้าวโพด +STR_ABBREV_FRUIT :{TINY_FONT}ผลไม้ +STR_ABBREV_DIAMONDS :{TINY_FONT}เพชร +STR_ABBREV_FOOD :{TINY_FONT}อาหาร +STR_ABBREV_PAPER :{TINY_FONT}กระดาษ +STR_ABBREV_GOLD :{TINY_FONT}ทอง +STR_ABBREV_WATER :{TINY_FONT}น้ำ +STR_ABBREV_WHEAT :{TINY_FONT}ข้าวสาลี +STR_ABBREV_RUBBER :{TINY_FONT}ยาง +STR_ABBREV_SUGAR :{TINY_FONT}น้ำตาล +STR_ABBREV_TOYS :{TINY_FONT}ของเล่น +STR_ABBREV_SWEETS :{TINY_FONT}ขนม +STR_ABBREV_COLA :{TINY_FONT}โคล่า +STR_ABBREV_CANDYFLOSS :{TINY_FONT}สายไหม +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_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} ลัง + +# Colours, do not shuffle +STR_COLOUR_DARK_BLUE :น้ำเงินเข้ม +STR_COLOUR_PALE_GREEN :เขียวอ่อน +STR_COLOUR_PINK :ชมพู +STR_COLOUR_YELLOW :เหลือง +STR_COLOUR_RED :แดง +STR_COLOUR_LIGHT_BLUE :ฟ้า +STR_COLOUR_GREEN :เขียว +STR_COLOUR_DARK_GREEN :เขียวเข้ม +STR_COLOUR_BLUE :น้ำเงิน +STR_COLOUR_CREAM :ครีม +STR_COLOUR_MAUVE :ม่วงอ่อน +STR_COLOUR_PURPLE :ม่วง +STR_COLOUR_ORANGE :ส้ม +STR_COLOUR_BROWN :น้ำตาล +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_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} ตัน +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} ลบ.ม. + +STR_UNITS_VOLUME_LONG_IMPERIAL :{COMMA} แกลลอน +STR_UNITS_VOLUME_LONG_METRIC :{COMMA} ลิตร +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 +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}Shade window - แสดงเฉพาะแถบด้านบน +STR_TOOLTIP_DEBUG :{BLACK}แสดงข้อมูล debug NewGRF +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 เพื่อสลับระหว่างสิ่งปลูกสร้างและแสดงมูลค่า + +# Query window +STR_BUTTON_DEFAULT :{BLACK}ค่าปกติ +STR_BUTTON_CANCEL :{BLACK}ยกเลิก +STR_BUTTON_OK :{BLACK}ตกลง + +# 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}ความยาว: {NUM} +STR_MEASURE_AREA :{BLACK}ขนาดพื้นที่: {NUM} x {NUM} +STR_MEASURE_LENGTH_HEIGHTDIFF :{BLACK}ความยาว: {NUM}{}ความแตกต่างของความสูง: {HEIGHT} +STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}ขนาดพื้นที่: {NUM} x {NUM}{}ความแตกต่างของคสามสูง: {HEIGHT} + + +# These are used in buttons +STR_SORT_BY_CAPTION_NAME :{BLACK}ชื่อ +STR_SORT_BY_CAPTION_DATE :{BLACK}วันที่ +# These are used in dropdowns +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 :กำไรปีนี้ +STR_SORT_BY_AGE :อายุการใช้งาน +STR_SORT_BY_RELIABILITY :ประสิทธิภาพ +STR_SORT_BY_TOTAL_CAPACITY_PER_CARGOTYPE :ความจุรวมในแต่ละชนิดบรรทุก +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_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_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 :แสดงรายการเป้าหมายที่ต้องทำ +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_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_SHOW_SOUND_MUSIC_WINDOW :{BLACK}แสดงหน้าต่างเสียงและดนตรี +STR_TOOLBAR_TOOLTIP_SHOW_LAST_MESSAGE_NEWS :{BLACK}แสดงข้อความล่าสุด/รายงานข่าว, แสดงตัวเลือกข้อความ +STR_TOOLBAR_TOOLTIP_LAND_BLOCK_INFORMATION :{BLACK}ข้อมูลที่ดิน, คอนโซล, ดีบัก AI, จับภาพหน้าจอ, เกี่ยวกับ OpenTTD +STR_TOOLBAR_TOOLTIP_SWITCH_TOOLBAR :{BLACK}เปลี่ยนกล่องเครื่องมือ + +# Extra tooltips for the scenario editor toolbar +STR_SCENEDIT_TOOLBAR_TOOLTIP_SAVE_SCENARIO_LOAD_SCENARIO :{BLACK}บันทึกฉาก, โหลดฉาก, ยกเลิกการแก้ไขฉาก, ออก +STR_SCENEDIT_TOOLBAR_OPENTTD :{YELLOW}OpenTTD +STR_SCENEDIT_TOOLBAR_SCENARIO_EDITOR :{YELLOW}โปรแกรมแก้ไขแผนที่ +STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_BACKWARD :{BLACK}เลื่อนวันที่เริ่มต้นย้อนไป 1 ปี +STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_FORWARD :{BLACK}เลือนวันที่เริ่มต้นไปอีก 1 ปี +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_PLANT_TREES :{BLACK}ปลูกต้นไม้. กด Shift เพื่อเปิด-ปิดสิ่งปลูกสร้าง/แสดงการประเมินค่าใช้จ่าย +STR_SCENEDIT_TOOLBAR_PLACE_SIGN :{BLACK}ปักป้าย +STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}วางวัตถุ. กด Shift เพื่อปิด-เปิดสิ่งปลูกสร้าง/แสดงการประเมินค่าใช้จ่าย + +############ range for SE file menu starts +STR_SCENEDIT_FILE_MENU_SAVE_SCENARIO :บันทึกแผนที่ +STR_SCENEDIT_FILE_MENU_LOAD_SCENARIO :โหลดแผนที่ +STR_SCENEDIT_FILE_MENU_SAVE_HEIGHTMAP :บันทึกแผนที่ความสูง +STR_SCENEDIT_FILE_MENU_LOAD_HEIGHTMAP :โหลดแผนที่ความสูง +STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :ออกจากโปรแกรมแก้ไขแผนที่ +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_CONFIG_SETTINGS :กำหนดค่าขั้นสูง +STR_SETTINGS_MENU_SCRIPT_SETTINGS :กำหนดค่าสคริปต์ AI/Game +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 :ออกจากเกม +############ range ends here + +# 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 +STR_TOWN_MENU_TOWN_DIRECTORY :ทำเนียบชื่อเมือง +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 +STR_RAIL_MENU_RAILROAD_CONSTRUCTION :การก่อสร้างทางรถไฟ +STR_RAIL_MENU_ELRAIL_CONSTRUCTION :การก่อสร้างทางรถไฟพลังไฟฟ้า +STR_RAIL_MENU_MONORAIL_CONSTRUCTION :การก่อสร้างทางรถไฟรางเดี่ยว +STR_RAIL_MENU_MAGLEV_CONSTRUCTION :การก่อสร้างทางรถไฟพลังแม่เหล็ก +############ range ends here + +############ range for road construction menu starts +STR_ROAD_MENU_ROAD_CONSTRUCTION :การก่อสร้างถนน +STR_ROAD_MENU_TRAM_CONSTRUCTION :การก่อสร้างทางรถราง +############ range ends here + +############ range for waterways construction menu starts +STR_WATERWAYS_MENU_WATERWAYS_CONSTRUCTION :การก่อสร้างคลอง +############ range ends here + +############ range for airport construction menu starts +STR_AIRCRAFT_MENU_AIRPORT_CONSTRUCTION :การก่อสร้างท่าอากาศยาน +############ range ends here + +############ range for landscaping menu starts +STR_LANDSCAPING_MENU_LANDSCAPING :การปรับพื้นที่ +STR_LANDSCAPING_MENU_PLANT_TREES :ปลูกต้นไม้ +STR_LANDSCAPING_MENU_PLACE_SIGN :ปักป้าย +############ range ends here + +############ range for music menu starts +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_TOGGLE_CONSOLE :เปิด/ปิด คอนโซล +STR_ABOUT_MENU_AI_DEBUG :ดีบัก สคริปต์ AI/Game +STR_ABOUT_MENU_SCREENSHOT :จับภาพหน้าจอ (Ctrl+S) +STR_ABOUT_MENU_ZOOMIN_SCREENSHOT :จับภาพหน้าจอในแบบขยายใหญ่สุด +STR_ABOUT_MENU_DEFAULTZOOM_SCREENSHOT :ค่าเริ่มต้นของการขยายภาพในการจับหน้าจอ +STR_ABOUT_MENU_GIANT_SCREENSHOT :จับภาพหน้าจอทั้งแผนที่ (Ctrl+G) +STR_ABOUT_MENU_ABOUT_OPENTTD :เกี่ยวกับ 'OpenTTD' +STR_ABOUT_MENU_SPRITE_ALIGNER :ตัวจัดแนว Sprite +STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :เปิด/ปิด bounding boxes +STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :เปิด/เปิด สีของ dirty blocks +############ range ends here + +############ 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 :มกราคม +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 :กุมภาพันธ์ +STR_MONTH_MAR :มีนาคม +STR_MONTH_APR :เมษายน +STR_MONTH_MAY :พฤษภาคม +STR_MONTH_JUN :มิถุนายน +STR_MONTH_JUL :กรกฎาคม +STR_MONTH_AUG :สิงหาคม +STR_MONTH_SEP :กันยายน +STR_MONTH_OCT :ตุลาคม +STR_MONTH_NOV :พฤศจิกายน +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}ปิดทั้งหมด all +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}ตัวเลือกกราฟของบริษัท +STR_GRAPH_KEY_COMPANY_SELECTION_TOOLTIP :{BLACK}คลิก เพื่อเปิด/ปิดการแสดงบันทึกของบริษัทในกราฟ + +# 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 :ประธานบริษัท +STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TYCOON :เจ้าของบริษัท + +# 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_STATIONS_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_JAZZ_JUKEBOX_CAPTION :{WHITE}ตู้เพลงแจ๊ส +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}อีซี่สตรีท +STR_MUSIC_PLAYLIST_CUSTOM_1 :{TINY_FONT}{BLACK}กำหนดเอง 1 +STR_MUSIC_PLAYLIST_CUSTOM_2 :{TINY_FONT}{BLACK}กำหนดเอง 2 +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}เลือกเพลงฟังรายการเพลง Ezy Street +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}เปิด/ปิด Toggle programme shuffle on/off +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}ลบทั้งหมด +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}คลิกที่ชื่อเพลงเพื่อลบออกจากโปรแกรม (Custom1 or Custom2 เท่านั้น) + +# Highscore window +STR_HIGHSCORE_TOP_COMPANIES_WHO_REACHED :{BIG_FONT}{BLACK}บริษัทชั้นนำที่ก้าวไปสู่ {NUM} +STR_HIGHSCORE_TOP_COMPANIES_NETWORK_GAME :{BIG_FONT}{BLACK}ตารางแสดงการแข่งขันของบริษัทใน {NUM} +STR_HIGHSCORE_POSITION :{BIG_FONT}{BLACK}{COMMA}. +STR_HIGHSCORE_PERFORMANCE_TITLE_BUSINESSMAN :นักธุรกิจ +STR_HIGHSCORE_PERFORMANCE_TITLE_ENTREPRENEUR :ผู้ประกอบการ +STR_HIGHSCORE_PERFORMANCE_TITLE_INDUSTRIALIST :นักอุตสาหกรรม +STR_HIGHSCORE_PERFORMANCE_TITLE_CAPITALIST :นักลงทุน +STR_HIGHSCORE_PERFORMANCE_TITLE_MAGNATE :เจ้าสัว +STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL :ผู้มีอำนาจ +STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY :นักธุรกิจผู้ร่ำรวยและมีอิทธิพลมากแห่งศตวรรษ +STR_HIGHSCORE_NAME :{PRESIDENT_NAME}, {COMPANY} +STR_HIGHSCORE_STATS :{BIG_FONT}'{STRING}' ({COMMA}) +STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{BLACK}{COMPANY} ได้ก้าวไปสู่ขั้น '{STRING}'! +STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{WHITE}{PRESIDENT_NAME} จาก {COMPANY} ได้ก้าวไปสู่ขั้น '{STRING}'! + +# Smallmap window +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+Click เพื่อปิดทุกประเภทยกเว้นประเภทที่เลือก. Ctrl+Click อีกครั้งเพื่อแสดงทุกอุตสาหกรรม +STR_SMALLMAP_TOOLTIP_COMPANY_SELECTION :{BLACK}กดเลือกที่บริษัทเพื่อปิด/เปิดการแสดงข้อมูลของบริษัท. Ctrl+กดเลือก เพื่อปิดแสดงผลทุกบริษัทยกเว้นอันที่เลือก. Ctrl+กดเลือกอีกครั้งเพื่อเปิดแสดงผลบริษัททั้งหมด +STR_SMALLMAP_TOOLTIP_CARGO_SELECTION :{BLACK}Click on a cargo to toggle displaying its property. Ctrl+Click disables all cargoes except the selected one. Ctrl+Click on it again to enable all cargoes + +STR_SMALLMAP_LEGENDA_ROADS :{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_SHIPS :{TINY_FONT}{BLACK}เรือ +STR_SMALLMAP_LEGENDA_AIRCRAFT :{TINY_FONT}{BLACK}อากาศยาน +STR_SMALLMAP_LEGENDA_TRANSPORT_ROUTES :{TINY_FONT}{BLACK}เส้นทางการขนส่ง +STR_SMALLMAP_LEGENDA_FOREST :{TINY_FONT}{BLACK}ป่าไม้ +STR_SMALLMAP_LEGENDA_RAILROAD_STATION :{TINY_FONT}{BLACK}สถานีรถไฟ +STR_SMALLMAP_LEGENDA_TRUCK_LOADING_BAY :{TINY_FONT}{BLACK}สถานีถ่ายของรถบรรทุก +STR_SMALLMAP_LEGENDA_BUS_STATION :{TINY_FONT}{BLACK}ป้ายรถเมล์ +STR_SMALLMAP_LEGENDA_AIRPORT_HELIPORT :{TINY_FONT}{BLACK}ท่าอากาศยาน/ลานจอดเฮลิคอปเตอร์ +STR_SMALLMAP_LEGENDA_DOCK :{TINY_FONT}{BLACK}ท่าเรือ +STR_SMALLMAP_LEGENDA_ROUGH_LAND :{TINY_FONT}{BLACK}พื้นลูกรัง +STR_SMALLMAP_LEGENDA_GRASS_LAND :{TINY_FONT}{BLACK}พื้นหญ้า +STR_SMALLMAP_LEGENDA_BARE_LAND :{TINY_FONT}{BLACK}ที่ดินเปล่า +STR_SMALLMAP_LEGENDA_FIELDS :{TINY_FONT}{BLACK}ทุ้งหญ้า +STR_SMALLMAP_LEGENDA_TREES :{TINY_FONT}{BLACK}ต้นไม้ +STR_SMALLMAP_LEGENDA_ROCKS :{TINY_FONT}{BLACK}หิน +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_DESERT :{TINY_FONT}{BLACK}ทะเลทราย +STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLACK}หิมะ + +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}ไม่เรียกใช้งานทั้งหมด +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_SHOW_HEIGHT :{BLACK}เปลี่ยนการแสดง heightmap +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}แสดงข้อความล่าสุด +STR_STATUSBAR_COMPANY_NAME :{SILVER}- - {COMPANY} - - +STR_STATUSBAR_PAUSED :{YELLOW}* * หยุดเกม * * +STR_STATUSBAR_AUTOSAVE :{RED}กำลังทำการเซฟอัตโนมัติ +STR_STATUSBAR_SAVING_GAME :{RED}* * กำลังบันทึกเกม * * + +# News message history +STR_MESSAGE_HISTORY :{WHITE}ข้อความย้อนหลัง +STR_MESSAGE_HISTORY_TOOLTIP :{BLACK}รายการแสดงข้อความข่าวเมื่อเร็วๆนี้ +STR_MESSAGE_NEWS_FORMAT :{STRING} - {STRING} + +STR_NEWS_MESSAGE_CAPTION :{WHITE}ข้อความ +STR_NEWS_CUSTOM_ITEM :{BIG_FONT}{BLACK}{STRING} + +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_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}! + +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} +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_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}! +STR_NEWS_DISASTER_COAL_MINE_SUBSIDENCE :{BIG_FONT}{BLACK}เกิดเหตุเหมืองถ่านหินถล่มใกล้กับเมืองเมือง {TOWN}! +STR_NEWS_DISASTER_FLOOD_VEHICLE :{BIG_FONT}{BLACK}น้ำท่วม!{}ประชาชนอย่างน้อย {COMMA} สูญหาย ด้วยกระแสน้ำที่แรงมาก คาดว่าจะเสียชีวิตแล้วจากการจมน้ำ! + +STR_NEWS_COMPANY_IN_TROUBLE_TITLE :{BIG_FONT}{BLACK}วิกฤติการการเงินบริษัท!!! +STR_NEWS_COMPANY_IN_TROUBLE_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} ด้วยสภาวะขาดทุนสะสมต่อเนื่อง บริษัทจะถูกขายหรือประกาศล้มละลาย ยกเว้นเสียแต่จะฟื้นตัวได้ในเวลาอันสั้น +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_LAUNCH_TITLE :{BIG_FONT}{BLACK}บริษัทขนส่งใหม่เริ่มกิจการแล้ว! +STR_NEWS_COMPANY_LAUNCH_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} เริ่มการก่อสร้างใกล้ {TOWN}! +STR_NEWS_MERGER_TAKEOVER_TITLE :{BIG_FONT}{BLACK}{STRING} ถูกเซ้งโดย {STRING}! +STR_PRESIDENT_NAME_MANAGER :{BLACK}{PRESIDENT_NAME}{}(ประธานบริษัท) + +STR_NEWS_NEW_TOWN :{BLACK}{BIG_FONT}{STRING} ผู้สนับสนุนก่อสร้างเมืองใหม่ในชื่อ {TOWN}! + +STR_NEWS_INDUSTRY_CONSTRUCTION :{BIG_FONT}{BLACK}{STRING}ใหม่ กำลังถูกสร้างใกล้ ๆ เมือง {TOWN}! +STR_NEWS_INDUSTRY_PLANTED :{BIG_FONT}{BLACK} {STRING}กำลังปลูกใหม่ใกล้ {TOWN}! + +STR_NEWS_INDUSTRY_CLOSURE_GENERAL :{BIG_FONT}{BLACK}{STRING} ประกาศเลิกกิจการ! +STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS :{BIG_FONT}{BLACK}เกิดปัญหาเกี่ยวกับวัตถุดิบทำให้ {STRING} ต้องประกาศเลิกกิจการ! +STR_NEWS_INDUSTRY_CLOSURE_LACK_OF_TREES :{BIG_FONT}{BLACK}ต้นไม้บริเวณใกล้เคียงขาดแคลนทำให้ {STRING} ต้องประกาศเลิกกิจการ! + +STR_NEWS_EURO_INTRODUCTION :{BIG_FONT}{BLACK}เงินสกุลยูโรเริ่มใช้แล้ว!{}{}สหภาพยุโรปได้เริ่มใช้เงินสกุลเดียวกันแล้ว นั่นคือเงินสกุลยูโร รวมถึงในประเทศนี้ตั้งแต่วันนี้เป็นต้นไป! +STR_NEWS_BEGIN_OF_RECESSION :{BIG_FONT}{BLACK}เกิดภาวะเศรฐกิจถดถอยทั่วโลก!{}{}ผู้เชี่ยวชาญทางการเงินต่างหวาดกลัวเนื่องจากเศรฐกิจตกต่ำ! +STR_NEWS_END_OF_RECESSION :{BIG_FONT}{BLACK}สิ้นสุดภาวะเศรฐกิจถดถอย!{}{}การค้าขายเริ่มเป็นบวกเกิดความเชื่อมั่นในอุตสาหกรรมต่างๆ จากการที่เศรฐกิจเข้มแข็งขึ้น! + +STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL :{BIG_FONT}{BLACK}{INDUSTRY} เพิ่มกำลังการผลิต! +STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_COAL :{BIG_FONT}{BLACK}พบสายแร่ถ่านหินใหม่ที่ {INDUSTRY}!คาดว่าผลผลิต{}จะเพิ่มขึ้นเท่าตัว! +STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_OIL :{BIG_FONT}{BLACK}พบแหล่งน้ำมันใหม่ที่ {INDUSTRY}!คาดว่าผลผลิต{}จะเพิ่มขึ้นเท่าตัว! +STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM :{BIG_FONT}{BLACK}เกษตรกรรมที่ได้รับการปรับปรุงแล้วที่ {INDUSTRY} คาดว่าจะทำให้ผลผลิตเพิ่มขึ้นเท่าตัว! +STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_SMOOTH :{BIG_FONT}{BLACK}{STRING} ผลผลิต {INDUSTRY} เพิ่มขึ้น {COMMA}%! +STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL :{BIG_FONT}{BLACK}ผลผลิต {INDUSTRY} ลดลง 50% +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_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE} กำลังรออยู่ในโรงซ่อม +STR_NEWS_SHIP_IS_WAITING :{WHITE}{VEHICLE} กำลังรออยู่ในอู่ +STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE} กำลังรออยู่ในโรงจอด + +# 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} มีสถานีที่ใช้ไม่ได้ในคำสั่ง + +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} กำลังหลงทาง. +STR_NEWS_VEHICLE_IS_UNPROFITABLE :{WHITE}กำไรของ {VEHICLE} เมื่อปีที่ผ่านมา {CURRENCY_LONG} +STR_NEWS_AIRCRAFT_DEST_TOO_FAR :{WHITE}{VEHICLE} ไม่สามารถไปยังจุดหมายถัดไปได้เนื่องจากไม่อยู่ในระยะ + +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}รุ่นใหม่ขณะนี้มีให้สั่งผลิตแล้ว! +STR_NEWS_NEW_VEHICLE_TYPE :{BIG_FONT}{BLACK}{ENGINE} +STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}ใหม่ {STRING} มีจำหน่ายแล้ว - {ENGINE} + +STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO :{WHITE}{STATION} ไม่ต้องการรับ {STRING} อีกต่อไป +STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO_OR_CARGO :{WHITE}{STATION} ไม่รับ {STRING} หรือ {STRING} แล้ว +STR_NEWS_STATION_NOW_ACCEPTS_CARGO :{WHITE}{STATION} ขณะนี้ยอมรับ {STRING} +STR_NEWS_STATION_NOW_ACCEPTS_CARGO_AND_CARGO :{WHITE}{STATION} ขณะนี้ยอมรับ {STRING} และ {STRING} + +STR_NEWS_OFFER_OF_SUBSIDY_EXPIRED :{BIG_FONT}{BLACK}ข้อเสนอสำหรับการอุดหนุนสิ้นสุด:{}{}{STRING} จาก {STRING} ถึง {STRING} จะไม่ได้รับการอุดหนุนอีกต่อไป. +STR_NEWS_SUBSIDY_WITHDRAWN_SERVICE :{BIG_FONT}{BLACK}การอุดหนุนถูกถอดถอน:{}{}บริการ {STRING} จาก {STRING} ถึง {STRING} จะไม่ได้รับการสนับสนุนอีกต่อไป. +STR_NEWS_SERVICE_SUBSIDY_OFFERED :{BIG_FONT}{BLACK}มีการสนับสนุนในการทำโครงการ:{}{} ขนส่ง {STRING} เที่ยวปฐมฤกษ์ จาก {STRING} ถึง {STRING} หากดำเนินการจะได้รับเงินอุดหนุนพิเศษรายปีจากเจ้าหน้าที่ในท้องถิ่น! +STR_NEWS_SERVICE_SUBSIDY_AWARDED_HALF :{BIG_FONT}{BLACK}เงินสนับสนุนโครงการถูกมอบให้กับ {STRING}!{}{} โดยการขนส่ง {STRING} จาก {STRING} ถึง {STRING} จะได้รับเงินอุดหนุนเพิ่มขึ้น 50% สำหรับปีหน้า! +STR_NEWS_SERVICE_SUBSIDY_AWARDED_DOUBLE :{BIG_FONT}{BLACK}การอุดหนุนบริการถูกมอบแก่ {STRING}!{}{}บริการ {STRING} จาก {STRING} ถึง {STRING} จะได้รับเงินสองเท่าในปีหน้า! +STR_NEWS_SERVICE_SUBSIDY_AWARDED_TRIPLE :{BIG_FONT}{BLACK}การอุดหนุนบริการถูกมอบแก่ {STRING}!{}{}บริการ {STRING} จาก {STRING} ถึง {STRING} จะได้รับเงินสามเท่าในปีหน้า! +STR_NEWS_SERVICE_SUBSIDY_AWARDED_QUADRUPLE :{BIG_FONT}{BLACK}การอุดหนุนบริการถูกมอบแก่ {STRING}!{}{} บริการ {STRING} จาก {STRING} ถึง {STRING} จะได้รับเงินสี่เท่าในปีหน้า! + +STR_NEWS_ROAD_REBUILDING :{BIG_FONT}{BLACK}การจราจรยุ่งเหยิงใน {TOWN}!{}{}การสร้างถนนใหม่ที่ได้รับการสนับสนุนโดย {STRING} นำมาซึ่งหกเดือนแห่งความสงสัยแก่ผู้ใช้ถนน! +STR_NEWS_EXCLUSIVE_RIGHTS_TITLE :{BIG_FONT}{BLACK}เจ้าพ่อวงการขนส่ง! +STR_NEWS_EXCLUSIVE_RIGHTS_DESCRIPTION :{BIG_FONT}{BLACK}ฝ่ายบริหารของเมือง {TOWN} ลงนามสัญญากับ {STRING} เป็นะระยเวลา 1 ปีสำหรับสัมปทานขนส่งพิเศษ + +# 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_TT :{BLACK}คัดลอกตำแหน่งของมุมมองหลังมายังมุมมองนี้ +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_CURRENCY_UNITS_FRAME :{BLACK}หน่วยสกุลเงิน +STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}การเลือกสกุลเงิน + +############ start of currency region +STR_GAME_OPTIONS_CURRENCY_GBP :ปอนด์สเตอร์ลิง (£) +STR_GAME_OPTIONS_CURRENCY_USD :ดอลลาร์สหรัฐ ($) +STR_GAME_OPTIONS_CURRENCY_EUR :ยูโร +STR_GAME_OPTIONS_CURRENCY_JPY :เยน (¥) +STR_GAME_OPTIONS_CURRENCY_ATS :ชิลลิ่งออสเตรีย (ATS) +STR_GAME_OPTIONS_CURRENCY_BEF :ฟรังก์เบลเยี่ยม (BEF) +STR_GAME_OPTIONS_CURRENCY_CHF :ฟรังก์สวิส (CHF) +STR_GAME_OPTIONS_CURRENCY_CZK :โครูนาเช็ค (CZK) +STR_GAME_OPTIONS_CURRENCY_DEM :ดอยช์มาร์ค (DEM) +STR_GAME_OPTIONS_CURRENCY_DKK :โครนเดนมาร์ค (DKK) +STR_GAME_OPTIONS_CURRENCY_ESP :เพเซต้า (ESP) +STR_GAME_OPTIONS_CURRENCY_FIM :มาร์คคา ฟินแลนด์ (FIM) +STR_GAME_OPTIONS_CURRENCY_FRF :ฟรังก์ฝรั่งเศส(FRF) +STR_GAME_OPTIONS_CURRENCY_GRD :ดรากช์มา กรีซ (GRD) +STR_GAME_OPTIONS_CURRENCY_HUF :ฟอรินท์ ฮังการี (HUF) +STR_GAME_OPTIONS_CURRENCY_ISK :โครนา ไอซแลนด์ (ISK) +STR_GAME_OPTIONS_CURRENCY_ITL :ลิรา อิตาลี (ITL) +STR_GAME_OPTIONS_CURRENCY_NLG :กิลเดอร์ ดัชต์ (NLG) +STR_GAME_OPTIONS_CURRENCY_NOK :โครน นอร์เวย์ (NOK) +STR_GAME_OPTIONS_CURRENCY_PLN :ซโลตี โปแลนด์ (PLN) +STR_GAME_OPTIONS_CURRENCY_RON :ลิว โรมาเนีย (RON) +STR_GAME_OPTIONS_CURRENCY_RUR :รูเบิ้ลส์ รัสเซีย (RUR) +STR_GAME_OPTIONS_CURRENCY_SIT :โทลาร์ สโลวีเนีย (SIT) +STR_GAME_OPTIONS_CURRENCY_SEK :โครนา สวีเดน (SEK) +STR_GAME_OPTIONS_CURRENCY_TRY :ลิรา ตุรกี (TRY) +STR_GAME_OPTIONS_CURRENCY_SKK :โครูนา สโลวาเกีย (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 :วอน เกาหลีใต้ (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 :ขับชิดซ้าย +STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_RIGHT :ขับชิดขวา + +STR_GAME_OPTIONS_TOWN_NAMES_FRAME :{BLACK}ชื่อเมือง +STR_GAME_OPTIONS_TOWN_NAMES_DROPDOWN_TOOLTIP :{BLACK}เลือกรูปแบบของชื่อเมือง + +############ start of townname region +STR_GAME_OPTIONS_TOWN_NAME_ORIGINAL_ENGLISH :อังกฤษ (ดั้งเดิม) +STR_GAME_OPTIONS_TOWN_NAME_FRENCH :ฝรั่งเศส +STR_GAME_OPTIONS_TOWN_NAME_GERMAN :เยอรมัน +STR_GAME_OPTIONS_TOWN_NAME_ADDITIONAL_ENGLISH :อังกฤษ (ตัวเสริม) +STR_GAME_OPTIONS_TOWN_NAME_LATIN_AMERICAN :ลาติน-อเมริกัน +STR_GAME_OPTIONS_TOWN_NAME_SILLY :อังกฤษอย่างง่าย +STR_GAME_OPTIONS_TOWN_NAME_SWEDISH :สวีดิช +STR_GAME_OPTIONS_TOWN_NAME_DUTCH :ดัชต์ +STR_GAME_OPTIONS_TOWN_NAME_FINNISH :ฟินน์ +STR_GAME_OPTIONS_TOWN_NAME_POLISH :โปลิช +STR_GAME_OPTIONS_TOWN_NAME_SLOVAK :สโลวากิช +STR_GAME_OPTIONS_TOWN_NAME_NORWEGIAN :นอร์วิเจียน +STR_GAME_OPTIONS_TOWN_NAME_HUNGARIAN :ฮังกาเรียน +STR_GAME_OPTIONS_TOWN_NAME_AUSTRIAN :ออสเตรียน +STR_GAME_OPTIONS_TOWN_NAME_ROMANIAN :โรมาเนียน +STR_GAME_OPTIONS_TOWN_NAME_CZECH :เช็ค +STR_GAME_OPTIONS_TOWN_NAME_SWISS :สวิส +STR_GAME_OPTIONS_TOWN_NAME_DANISH :เดนมาร์ค +STR_GAME_OPTIONS_TOWN_NAME_TURKISH :ตุรกี +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_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}เลือกภาษาที่จะใช้ + +STR_GAME_OPTIONS_FULLSCREEN :{BLACK}เต็มหน้าจอ +STR_GAME_OPTIONS_FULLSCREEN_TOOLTIP :{BLACK}ทำเครื่องหมายที่ช่องนี้เพื่อเล่น OpenTTD fullscreen โหมด + +STR_GAME_OPTIONS_RESOLUTION :{BLACK}ความละเอียดของหน้าจอ +STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}เลือกความละเอียดของหน้าจอที่จะใช้ +STR_GAME_OPTIONS_RESOLUTION_OTHER :อื่นๆ + +STR_GAME_OPTIONS_BASE_GRF :{BLACK}ตั้งค่า Graphic พื้นฐาน +STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}เลือกและตั้งค่าฐานกราฟิกที่จะใช้ +STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} ไฟล์สูญหายหรือไม่สมบูรณ์ +STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}ข้อมูลเพิ่มเติมเกี่ยวกับชุดกราฟฟิคพื้นฐาน + +STR_GAME_OPTIONS_BASE_SFX :{BLACK}เลือกชุด Effect เสียงประกอบ +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_TOOLTIP :{BLACK}เลือกเพลงประกอบพื้นฐานเพื่อใช้งาน +STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} ไฟล์ไม่สมบูรณ์ +STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}ข้อมูลเพิ่มเติมเกี่ยวกับชุดเพลงประกอบพื้นฐาน + +STR_ERROR_FULLSCREEN_FAILED :{WHITE}Fullscreen โหมดล้มเหลว + +# Custom currency window + +STR_CURRENCY_WINDOW :{WHITE}สกุลเงิน +STR_CURRENCY_EXCHANGE_RATE :{LTBLUE}อัตราแลกเปลี่ยน: {ORANGE}{CURRENCY_LONG} = £ {COMMA} +STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}ลดจํานวนสกุลเงินของคุณสำหรับหนึ่งปอนด์ (£) +STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}เพิ่มจำนวนสกุลเงินของคุณสำหรับหนึ่งปอนด์ (£) +STR_CURRENCY_SET_EXCHANGE_RATE_TOOLTIP :{BLACK}กำหนดอัตราแลกเปลี่ยนของสกุลเงินหนึ่งปอนด์ (£) + +STR_CURRENCY_SEPARATOR :{LTBLUE}ตัวแบ่ง: {ORANGE}{STRING} +STR_CURRENCY_SET_CUSTOM_CURRENCY_SEPARATOR_TOOLTIP :{BLACK}สัญลักษณ์แบ่งหลักสกุลเงินของท่าน + +STR_CURRENCY_PREFIX :{LTBLUE}คำนำหน้า: {ORANGE}{STRING} +STR_CURRENCY_SET_CUSTOM_CURRENCY_PREFIX_TOOLTIP :{BLACK}สัญลักษณ์หน้าสกุลเงินของท่าน +STR_CURRENCY_SUFFIX :{LTBLUE}คำเสริมท้าย: {ORANGE}{STRING} +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_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}เปลี่ยนสกุลเงินเป็นยูโรทีหลัง + +STR_CURRENCY_PREVIEW :{LTBLUE}แสดงตัวอย่าง: {ORANGE}{CURRENCY_LONG} +STR_CURRENCY_CUSTOM_CURRENCY_PREVIEW_TOOLTIP :{BLACK}10000 ปอนด์สเตอร์ลิง (£) ในสกุลเงินของคุณ +STR_CURRENCY_CHANGE_PARAMETER :{BLACK}เปลี่ยนการกำหนดค่าตัวแปรสกุลเงิน + +STR_DIFFICULTY_LEVEL_SETTING_MAXIMUM_NO_COMPETITORS :{LTBLUE}จำนวนผู้ร่วมแข่งขันสูงสุด: {ORANGE}{COMMA} + +STR_NONE :ไม่มี +STR_FUNDING_ONLY :ระดมทุนเท่านั้น +STR_MINIMAL :ขั้นต่ำ +STR_NUM_VERY_LOW :ต่ำมาก +STR_NUM_LOW :ต่ำ +STR_NUM_NORMAL :ปกติ +STR_NUM_HIGH :สูง +STR_NUM_CUSTOM :กำหนดเอง +STR_NUM_CUSTOM_NUMBER :กำหนดเอง ({NUM}) + +STR_VARIETY_NONE :ไม่มี +STR_VARIETY_VERY_LOW :ต่ำมาก +STR_VARIETY_LOW :ต่ำ +STR_VARIETY_MEDIUM :ปานกลาง +STR_VARIETY_HIGH :สูง +STR_VARIETY_VERY_HIGH :สูงมาก + +STR_AI_SPEED_VERY_SLOW :ช้ามาก +STR_AI_SPEED_SLOW :ช้า +STR_AI_SPEED_MEDIUM :ปานกลาง +STR_AI_SPEED_FAST :เร็ว +STR_AI_SPEED_VERY_FAST :เร็วมาก + +STR_SEA_LEVEL_VERY_LOW :ต่ำมาก +STR_SEA_LEVEL_LOW :ต่ำ +STR_SEA_LEVEL_MEDIUM :ปานกลาง +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_DISASTER_NONE :ไม่มี +STR_DISASTER_REDUCED :ภาวะลดลง +STR_DISASTER_NORMAL :ภาวะปกติ + +STR_SUBSIDY_X1_5 :1.5 เท่า +STR_SUBSIDY_X2 :2 เท่า +STR_SUBSIDY_X3 :3 เท่า +STR_SUBSIDY_X4 :4 เท่า + +STR_TERRAIN_TYPE_VERY_FLAT :แบนราบมาก +STR_TERRAIN_TYPE_FLAT :แบนราบ +STR_TERRAIN_TYPE_HILLY :เนินเขา +STR_TERRAIN_TYPE_MOUNTAINOUS :ภูเขาสูง + +STR_CITY_APPROVAL_PERMISSIVE :อนุญาต +STR_CITY_APPROVAL_TOLERANT :พอผ่อนผันให้ได้ +STR_CITY_APPROVAL_HOSTILE :ไม่เป็นมิตร + +STR_WARNING_NO_SUITABLE_AI :{WHITE}ไม่มี AI ที่เหมาะสมปรากฎ...{}คุณสามารถดาวน์โหลด AI จากระบบ 'Online Content' + +# Advanced settings window +STR_CONFIG_SETTING_CAPTION :{WHITE}การตั้งค่าขั้นสูง +STR_CONFIG_SETTING_FILTER_TITLE :{BLACK}เติม string: +STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}ขยายทั้งหมด +STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}ยุบลงทั้งหมด +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_COMPANY_INGAME :ตั้งค่าองค์กร (ถูกเก็บไว้ในการบันทึกเกม; มีผลเฉพาะเกมปัจจุบัน) + +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_OFF :ปิด +STR_CONFIG_SETTING_ON :เปิด +STR_CONFIG_SETTING_DISABLED :ไม่ให้เรียกใช้งาน + +STR_CONFIG_SETTING_COMPANIES_OFF :ปิด +STR_CONFIG_SETTING_COMPANIES_OWN :บริษัทในเครือ +STR_CONFIG_SETTING_COMPANIES_ALL :บริษัททั้งหมด + +STR_CONFIG_SETTING_NONE :ไม่มี +STR_CONFIG_SETTING_ORIGINAL :ดั้งเดิม +STR_CONFIG_SETTING_REALISTIC :เสมือนจริง + +STR_CONFIG_SETTING_HORIZONTAL_POS_LEFT :ซ้าย +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_INTEREST_RATE :ดอกเบี้ย: {STRING} +STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :อัตราดอกเบี้ยเงินกู้; มีผลกับอัตราเงินเฟ้อถ้าเปิดใช้งาน +STR_CONFIG_SETTING_RUNNING_COSTS :ระดับของค่าปฎิบัติการของยานพาหนะต่างๆ: {STRING} +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_SUBSIDY_MULTIPLIER :อัตราของการให้เงินสนับสนุนโครงการ: {STRING} +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 :หากเปิดใช้งาน การถดถอย อาจเกิดขึ้นทุก 2 - 3 ปี ในช่วงเศรษฐกิจตกต่ำในการผลิตทั้งหมด อย่างมีนัยสำคัญต่ำกว่า (มันจะกลับไปที่ระดับก่อนหน้านี้เมื่อภาวะถดถอยจบลง) +STR_CONFIG_SETTING_TRAIN_REVERSING :ไม่อนุญาตให้รถไฟกลับขบวนในสถานี: {STRING} +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_AUTOSLOPE :อนุญาตให้เปลี่ยนสภาพพื้นผิวใต้สิ่งก่อสร้าง, ราง, ฯลฯ (ปรับความชันอัตโนมัติ): {STRING} +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_TRAIN_LENGTH :ความยาวสูงสุดของขบวนรถไฟ: {STRING} +STR_CONFIG_SETTING_TRAIN_LENGTH_HELPTEXT :เลือกตั้งค่าความยาวสูงสุดของขบวนรถไฟ +STR_CONFIG_SETTING_TILE_LENGTH :{COMMA} ช่อง +STR_CONFIG_SETTING_SMOKE_AMOUNT :ปริมาณของ Effect ไอเสีย/การSpark: {STRING} +STR_CONFIG_SETTING_SMOKE_AMOUNT_HELPTEXT :ตั้งค่าปริมาณของไอเสีย หรือการ spark ที่สร้างโดยยานพาหนะ +STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL :รูปแบบของการเร่งความเร็วของรถไฟ: {STRING} +STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL_HELPTEXT :เลือกตั้งค่าอัตราเร่งเสมือนจริง สำหรับการทำให้การเคลื่อนที่ของขบวนรถไฟสมจริงมากยิ่งขึ้น ในการขึ้นเนิน หรือจากการที่ขบวนรถมีความยาวมากๆ ซึ่งกำลังขับ(Tractive Effort) ของรถจักรมีผลโดยตรง +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_FORBID_90_DEG :ห้ามรถไฟและเรือเลี้ยวในมุม 90 องศา: {STRING} +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_INFLATION :ภาวะเงินเฟ้อ: {STRING} +STR_CONFIG_SETTING_INFLATION_HELPTEXT :เมื่อเปิดการใช้งานอัตราเงินเฟ้อ ค่าเงินจะถูกลงและต้องใช้เงินมากขึ้นในการซื้อหรือสร้าง แต่ผลตอบแทนจากการขนส่งก็จะเพิ่มขึ้นด้วยเช่นกัน +STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH :ความยาวสูงสุดของสะพาน: {STRING} +STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_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_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_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_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_AUTOSCROLL :เลื่อนหน้าต่างเมื่อเม้าส์อยู่ใกล้ขอบหน้าจอ: {STRING} +STR_CONFIG_SETTING_AUTOSCROLL_HELPTEXT :เมื่อเปิดใช้งานจะสามารถเลื่อนหน้าจอโดยการใช้เมาส์ไปแตะที่ขอบจอได้ +STR_CONFIG_SETTING_AUTOSCROLL_DISABLED :ไม่ใช้งาน +STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT_FULLSCREEN :มุมมองหลัก เฉพาะในโหมด Full-Screen +STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT :มุมมองหลัก +STR_CONFIG_SETTING_AUTOSCROLL_EVERY_VIEWPORT :ทุกๆมุมมอง +STR_CONFIG_SETTING_BRIBE :อนุญาตให้ติดสินบนเจ้าหน้าที่ในท้องถิ่น: {STRING} +STR_CONFIG_SETTING_BRIBE_HELPTEXT :อนุญาตให้สามารถใส่เงินใต้โต๊ะกับเจ้าหน้าที่ท้องถิ่นได้ เพื่อเพิ่มระดับความถึงพอใจ +STR_CONFIG_SETTING_ALLOW_EXCLUSIVE :อนุญาตให้ซื้อสัมปทานการขนส่งแต่เพียงผู้เดียว: {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 :ให้เงินกับเมืองเพื่อทำถนนใหม่ สำหรับขีดขวางการจราจรในเมืองที่บริษัทคู่แข่งให้บริการอยู่ +STR_CONFIG_SETTING_ALLOW_GIVE_MONEY :อนุญาตให้ส่งเงินแก่บริษัทอื่นๆ: {STRING} +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_VALUE :1 / {COMMA} +STR_CONFIG_SETTING_PLANE_CRASHES :จำนวนเครื่องบินที่ตก: {STRING} +STR_CONFIG_SETTING_PLANE_CRASHES_HELPTEXT :ตั้งค่าการสุ่มอัตราเครื่่องบินตก +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_HELPTEXT :สามารถสร้างป้ายหยุดรถบนถนนของเมืองได้ +STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :อนุญาตให้มีที่หยุดรถแบบขับผ่านบนถนนของบริษัทอื่นๆ: {STRING} +STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT :สามารถสร้างป้ายหยุดรถบนถนนที่สร้างโดยบริษัทอื่นได้ +STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}ไม่สามารถเปลี่ยนการตั้งค่านี้ได้เมื่อมียานพาหนะ +STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :ค่าบำรุงรักษาโครงสร้างพื้นฐาน: {STRING} +STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :เมื่อเปิดใช้งาน สาธารณูประโภคที่สร้างโดยบริษัทจะมีค่าบำรุงรักษา ยิ่งเครือข่ายยิ่งมากจะยิ่งเสียค่าใช้จ่ายมากขึ้น + +STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :ท่าอากาศยานไม่มีวันหมดอายุ: {STRING} +STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS_HELPTEXT :เปิดใช้งานสิ่งนี้ จะทำให้สามารถสร้างท่าอากาศยานแบบเก่าๆได้แม้เวลาจะผ่านไปนานแล้วก็ตาม + +STR_CONFIG_SETTING_WARN_LOST_VEHICLE :เตือนหากยานพาหนะหลงทาง: {STRING} +STR_CONFIG_SETTING_WARN_LOST_VEHICLE_HELPTEXT :แสดงข้อความเตือน เมื่อพาหนะไม่สามารถค้นหาเส้นทางไปยังที่หมายตามที่กำหนดไว้ได้ +STR_CONFIG_SETTING_ORDER_REVIEW :การแจ้งเตือนความผิดปกติของยานพาหนะ: {STRING} +STR_CONFIG_SETTING_ORDER_REVIEW_HELPTEXT :เมื่อเปิดใช้งาน คำสั่งที่ใช้สำหรับยานพาหนะจะถูกตรวจสอบเป็นช่สงๆ และจะมีรายงานมาเป็นระยะๆ +STR_CONFIG_SETTING_ORDER_REVIEW_OFF :ไม่ต้องเตือน +STR_CONFIG_SETTING_ORDER_REVIEW_EXDEPOT :ให้เตือน แต่ยกเว้นยานพาหนะที่หยุดวิ่ง +STR_CONFIG_SETTING_ORDER_REVIEW_ON :แจ้งเตือนทั้งหมด +STR_CONFIG_SETTING_WARN_INCOME_LESS :เตือนเมื่อรายได้ของยานพาหนะติดลบ: {STRING} +STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :เมื่อเปิดใช้งาน จะแสดงข้อความแจ้งเตือนเมื่อพาหนะไม่สามารถทำกำไรได้เมื่อครบกำหนดสิ้นปี +STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :ยานพาหนะไม่หมดอายุ: {STRING} +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_HELPTEXT :อายุการใช้งานเมื่อยานพาหนะต้องทำการซื้อใหม่ +STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_BEFORE :{COMMA} เดือน ก่อน +STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_AFTER :{COMMA} เดือน หลังจากที่ +STR_CONFIG_SETTING_AUTORENEW_MONEY :จำนวนเงินขั้นต่ำที่ให้เปลี่ยนยานพาหนะโดยอัตโนมัติ: {STRING} +STR_CONFIG_SETTING_AUTORENEW_MONEY_HELPTEXT :จำนวนเงินสำรองต่ำสุดที่ต้องมีสำหรับการซื้อยานพาหนะใหม่โดยอัตโนมัติ +STR_CONFIG_SETTING_ERRMSG_DURATION :ระยะเวลาแสดงของข้อความแจ้งความผิดพลาด: {STRING} +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} วินาที{P 0 s} +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_ORIGINAL :ดั้งเดิม +STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis +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_TREE_PLACER :อัลกอริธึมสำหรับการวางต้นไม้: {STRING} +STR_CONFIG_SETTING_TREE_PLACER_NONE :ไม่มี +STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :ดั้งเดิม +STR_CONFIG_SETTING_TREE_PLACER_IMPROVED :ปรังปรุงแล้ว +STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :ทิศการหมุน Heightmap: {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_EDGES_NOT_EMPTY :{WHITE}ขอบทางเหนือมีอย่างน้อยหนึ่งช่องหรือมากกว่านั้นที่ไม่ว่าง +STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}หนึ่งช่องหรือมากกว่านั้นที่ขอบด้านในด้านหนึ่งไม่ใช่น้ำ + +STR_CONFIG_SETTING_STATION_SPREAD :ความกว้างสูงสุดของสถานี: {STRING} +STR_CONFIG_SETTING_STATION_SPREAD_HELPTEXT :ความกว้างและความยาวสูงสุดของสถานีที่สามารถขยายออก +STR_CONFIG_SETTING_SERVICEATHELIPAD :ซ่อมบำรุง เฮลิคอปเตอร์ ที่ลานจอด ฮ. โดยอัตโนมัติ: {STRING} +STR_CONFIG_SETTING_SERVICEATHELIPAD_HELPTEXT :ซ่อมบำรุงเฮลิคอปเตอร์ทุกครั้งที่ลงจอด +STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR :โยงแถบเครื่องมือปรับภูมิประเทศกับแถบเครื่องมือสร้างต่างๆ: {STRING} +STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR_HELPTEXT :เมื่อเปิดเครื่องมือสร้างที่เกี่ยวข้องกับการขนส่งต่างๆ จะเป็นการเปิดกล่องเครื่องมือปรับสภาพภูมิประเทศมาด้วยทุกครั้ง +STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR :สีของพื้นดินที่ใช้ในแผนที่ย่อ: {STRING} +STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :สีของพื้นดินในแผนที่ย่อ +STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :สีเขียว +STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :สีเขียวแก่ +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_MEASURE_TOOLTIP :แสดงบอลลูนข้อความแสดงระยะทางหรือข้อมูลอื่นๆ เมื่อใช่เครื่องมือสร้าง: {STRING} +STR_CONFIG_SETTING_MEASURE_TOOLTIP_HELPTEXT :เปิดบอลลูนข้อความแสดงระยะทางหรือความสูง ขณะใช้เครื่องมือในการสร้างต่างๆ เพื่อให้ได้เห็นรายละเอียดที่เรากระทำการ ว่าเราวางรางรถไฟมาไกลแค่ไหน หรือปรับพื้นดินขึ้นไปสูงเท่าใดแล้ว +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 :ใช้การคุยระหว่างทีมด้วย : {STRING} +STR_CONFIG_SETTING_PREFER_TEAMCHAT_HELPTEXT :สลับการพูดคุยระหว่างภายใน และภายนอก และ +STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING :รูปแบบการใช้ลูกกลิ้งเมาส์ในแผนที่ย่อ: {STRING} +STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING_HELPTEXT :ปรับเปลี่ยนลักษณะการใช้งานลูกกลิ้งเมาส์บนแผนที่ย่อ +STR_CONFIG_SETTING_SCROLLWHEEL_ZOOM :ขยายแผนที่ +STR_CONFIG_SETTING_SCROLLWHEEL_SCROLL :เลื่อนแผนที่ +STR_CONFIG_SETTING_SCROLLWHEEL_OFF :ปิด +STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER :ความเร็วการเลื่อนของแผนที่: {STRING} +STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER_HELPTEXT :ควบคุมความเสถียรของลูกกลิ้งเม้าส์ +STR_CONFIG_SETTING_OSK_ACTIVATION :เปิดใช้งาน On-Screen Keyboard: {STRING} +STR_CONFIG_SETTING_OSK_ACTIVATION_HELPTEXT :เลือกวิธีการที่จะเปิดแป้นพิมพ์หน้าจอสำหรับการป้อนเมื่อข้อความใน editboxes เพียงแค่ใช้อุปกรณ์ชี้ตำแหน่ง นี่หมายความว่าสำหรับอุปกรณ์ขนาดเล็กโดยไม่ต้องใช้แป้นพิมพ์ที่เกิดขึ้นจริง +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+Click +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_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 :เลือกเปิดใช้งานคำสั่งบางคำสั่งต่อไปนี้ขณะหยุดเกม +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_HELPTEXT :เปิดใช้งานรายการยานพาหนะขั้นสูงสำหรับจัดกลุ่มของยานพาหนะต่างๆ +STR_CONFIG_SETTING_LOADING_INDICATORS :แสดงสถานะการขนถ่ายเมื่อกำลังขนถ่ายที่สถานี: {STRING} +STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :เลือกเพื่อแสดงตัวเลขปริมาณการบรรทุกขณะขนถ่ายที่สถานีของพาหนะ +STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :แสดงตารางเวลาในแบบติ๊กแทนแบบวัน: {STRING} +STR_CONFIG_SETTING_TIMETABLE_IN_TICKS_HELPTEXT :แสดงเวลาในการเดินทางในตารางเวลาเป็น ticks แทนที่ days +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_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_MOST_USED :ใช้มากที่สุด +STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :แสดงทางรถไฟที่ขบวนรถขอทางไว้: {STRING} +STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION_HELPTEXT :แสดงการขอทางของขบวนรถไฟ โดยแสดงสีที่แตกต่างจากสีทางปกติเพื่อช่วยตรวจหาจุดบกพร่อง เมื่อขบวนรถไฟเข้าสู่ทางตอนที่ใช้สัญญาณระบบ Path-Based +STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :ให้คงการแสดงเครื่องมือการสร้างหลังการใช้: {STRING} +STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :ไม่ปิดเครื่องมือสร้างสะพาน หรืออุโมง หลังจากใช้งาน +STR_CONFIG_SETTING_EXPENSES_LAYOUT :จัดกลุ่มแยกประเภท รายรับ/รายจ่าย ในหน้าต่างแสดงข้อมูลการเงินของบริษัท: {STRING} +STR_CONFIG_SETTING_EXPENSES_LAYOUT_HELPTEXT :จัดการแยกประเภท รายรับ/รายจ่าย เพื่อให้ง่ายต่อการตรวจทาน ในหน้าต่างแสดงสถานะการเงินบริษัท + +STR_CONFIG_SETTING_SOUND_TICKER :ข่าวสาร: {STRING} +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_CONFIRM :การก่อสร้าง: {STRING} +STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT :เล่นเสียงเมื่อการก่อสร้างเสร็จหรือการกระทำอื่นๆ +STR_CONFIG_SETTING_SOUND_CLICK :เมื่อคลิ๊กเมาส์: {STRING} +STR_CONFIG_SETTING_SOUND_CLICK_HELPTEXT :มีเสียง Effect เมื่อคลิกเมาส์ในหน้าต่างเกม +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_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_HELPTEXT :จำนวนยานพาหนะบนทางราบสูงสุดที่บริษัทสามารถมีได้ +STR_CONFIG_SETTING_MAX_AIRCRAFT :อากาศยานมากที่สุดต่อผู้เล่น: {STRING} +STR_CONFIG_SETTING_MAX_AIRCRAFT_HELPTEXT :จำนวนอากาศยานสูงสุดที่บริษัทสามารถมีได้ +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 :เมื่อเปิดใช้งาน จะทำให้ AI สามารถสร้างขบวนรถไฟได้ +STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES :ไม่ยอมให้มียานพาหนะทางบกสำหรับคอมพิวเตอร์: {STRING} +STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES_HELPTEXT :เมื่อเปิดใช้งาน จะทำให้ AI สามารถสร้างยานพาหนะทางบกได้ +STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT :ไม่ยอมให้มีอากาศยานสำหรับคอมพิวเตอร์: {STRING} +STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT_HELPTEXT :เมื่อเปิดใช้งาน จะทำให้ AI สามารถสร้างอากาศยานได้ +STR_CONFIG_SETTING_AI_BUILDS_SHIPS :ไม่ยอมให้มีเรือสำหรับคอมพิวเตอร์: {STRING} +STR_CONFIG_SETTING_AI_BUILDS_SHIPS_HELPTEXT :เมื่อเปิดใช้งาน จะทำให้ AI สามารถสร้างยานพาหนะทางน้ำได้ + +STR_CONFIG_SETTING_AI_PROFILE :รูปแบบการตั้งค่าพื้นฐาน: {STRING} +STR_CONFIG_SETTING_AI_PROFILE_HELPTEXT :เลือกที่ตั้งค่าโปรไฟล์ที่จะใช้สำหรับเอไอเอสแบบสุ่มหรือค่าเริ่มต้นสำหรับการเพิ่มสคริปต์ AI หรือเกมใหม่ +STR_CONFIG_SETTING_AI_PROFILE_EASY :ง่าย +STR_CONFIG_SETTING_AI_PROFILE_MEDIUM :ปานกลาง +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 :จำนวน opcodes ก่อนที่สคริปต์ถูกหยุด: {STRING} +STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES_HELPTEXT :ตัวเลขสูงสุดของการคำนวณลำดับขั้น script สามารถใช้งานได้แค่ครั้งเดียว + +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_DISABLED :ไม่ตั้ง +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_WAGONSPEEDLIMITS :จำกัดความเร็วของรถจักร/รถพ่วง: {STRING} +STR_CONFIG_SETTING_WAGONSPEEDLIMITS_HELPTEXT :เมื่อเปิดใช้งาน จะทำให้มีจำกัดความเร็วสูงสุดของยานพาหนะและรถพ่วงต่างๆ +STR_CONFIG_SETTING_DISABLE_ELRAILS :ปิดระบบสายส่งไฟฟ้า(Electricfield): {STRING} +STR_CONFIG_SETTING_DISABLE_ELRAILS_HELPTEXT :เมื่อเปิดการใช้งาน จะทำการปิดความต้องการการใช้งานระบบ Electrifield ของรถจักรหรือรถไฟฟ้า + +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 :แสดงข่าวเมื่อมีพาหนะถึงที่สถานีของศัตรู +STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS :ภัยพิบัติ / อุบัติเหตุ: {STRING} +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 :แสดงข้อความในแถบเลื่อน +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 :เมื่อเปิดใช้งาน อุดสาหกรรมจะมีการเปลี่ยนแปลงผลผลผลิต +STR_CONFIG_SETTING_ALLOW_SHARES :อนุญาตให้ซื้อหุ้นจากบริษัทอื่นได้: {STRING} +STR_CONFIG_SETTING_ALLOW_SHARES_HELPTEXT :เมื่อเปิดการใช้งาน จะสามารถซื้่อชขายหุ้นระหว่างบริษัท จะสามารถซื้อขายหุ้นได้ต่อเมื่อบริษัทเปิดตัวมานานแล้วเท่านั้น +STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE :เปอเซนต์ของผลกำไรที่จะส่งเข้าสู่ระบบกระจายรายได้: {STRING} +STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE_HELPTEXT :เปอร์เซนต์ของรายได้ที่ส่งให้ฐานของระบบกระจายรายได้ ส่งผลต่อการควบคุมรายได้ทั้งหมด +STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY :เมื่อลากเมาส์จะทำการวางเสาอาณัติสัญญาณโดยอัตโนมัติทุกๆ: {STRING} +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 :เลือกระยะห่างระหว่างเสาอาณัติสัญญาณแต่ละต้นหากมีการลากเมาส์ต่อเนื่อง โดยหลีกเลี่ยงสะพานและอุโมงค์ ตามที่กำหนดค่าไว้ +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_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 :เลือกประเภทเสาอาณัติสัญญาณที่จะเปลี่ยนไปในวงรอบ +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_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_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_NOISE_LEVEL :เปิดใช้งานให้เมืองมีการควบคุมมลภาวะทางเสียงของท่าอากาศยาน: {STRING} +STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :เมื่อปิดการใช้งานนี้ จะสามารถสร้างท่าอากาศยานได้มากกว่า 1 +STR_CONFIG_SETTING_TOWN_FOUNDING :ก่อตั้งเมืองใหม่ในเกม: {STRING} +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 :ยอม, รูปแบบเมืองกำหนดเอง + +STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT :การปลูกป่า: {STRING} +STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_HELPTEXT :ควบคุมการสุ่มการเจริญเติบโตของต้นไม้ระหว่างเล่นเกม +STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NONE :ไม่มี {RED}(ไม่มีโรงเลื่อยไม้) +STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_RAINFOREST :เฉพาะในป่าฝนเท่านั้น +STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_ALL :ทุกหนทุกแห่ง + +STR_CONFIG_SETTING_TOOLBAR_POS :ตำแหน่งแถบเครื่องมือหลัก: {STRING} +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_HELPTEXT :ปรับความกว้างหรือความยาวของหน้าต่างต่างๆ หากถูกนำมาเรียงติดกันและขยายขนาดให้ใกล้เคียงกัน +STR_CONFIG_SETTING_SNAP_RADIUS_VALUE :{COMMA} pixel{P 0 s} +STR_CONFIG_SETTING_SNAP_RADIUS_DISABLED :ไม่ใช้งาน +STR_CONFIG_SETTING_SOFT_LIMIT :จำนวนมากสุดของหน้าต่างที่ไม่ปักหมุด: {STRING} +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_LVL_MIN :4 เท่า +STR_CONFIG_SETTING_ZOOM_LVL_IN_2X :2 เท่า +STR_CONFIG_SETTING_ZOOM_LVL_NORMAL :ปกติ +STR_CONFIG_SETTING_ZOOM_LVL_OUT_2X :2 เท่า +STR_CONFIG_SETTING_ZOOM_LVL_OUT_4X :4 เท่า +STR_CONFIG_SETTING_ZOOM_LVL_OUT_8X :8 เท่า +STR_CONFIG_SETTING_TOWN_GROWTH :ความเร็วการขยายตัวของเมือง: {STRING} +STR_CONFIG_SETTING_TOWN_GROWTH_HELPTEXT :ความเร็วในการขยายตัวของเมือง +STR_CONFIG_SETTING_TOWN_GROWTH_NONE :ไม่มี +STR_CONFIG_SETTING_TOWN_GROWTH_SLOW :ช้า +STR_CONFIG_SETTING_TOWN_GROWTH_NORMAL :ปกติ +STR_CONFIG_SETTING_TOWN_GROWTH_FAST :เร็ว +STR_CONFIG_SETTING_TOWN_GROWTH_VERY_FAST :เร็วมาก +STR_CONFIG_SETTING_LARGER_TOWNS :สัดส่วนระหว่างจำนวนเมืองเล็กกับเมืองใหญ่: {STRING} +STR_CONFIG_SETTING_LARGER_TOWNS_HELPTEXT :สัดส่วนระหว่างจำนวนเมืองเล็กกับเมืองใหญ่ +STR_CONFIG_SETTING_LARGER_TOWNS_VALUE :1 ใน {COMMA} +STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :ไม่มี +STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :ตัวคูณขนาดเมืองเริ่มต้น: {STRING} +STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :ขนาดโดยเฉลี่ยของเมืองใหญ่ที่สัมพันธ์กับเมืองปกติ + +STR_CONFIG_SETTING_LINKGRAPH_INTERVAL :อัพเดทกราฟการกระจายสินค้าทุกๆ {STRING} วัน +STR_CONFIG_SETTING_LINKGRAPH_INTERVAL_HELPTEXT :เวลาระหว่างการคำนวณหาเส้นทางการเชื่อมต่อของกราฟ. ทุกครั้งที่มีำการคำนวณใหม่ มีการวางแผนสำหรับหนึ่งชิ้นส่วนในกราฟ ค่าที่ตั้งไว้นี้ คือค่าที่จะให้มีการอัพเดททุกๆเวลากี่วัน การตั้งให้คำนวณถี่มากๆจะกินทรัพยากรเครื่องของท่าน +STR_CONFIG_SETTING_LINKGRAPH_TIME :ใช้เวลา {STRING} วัน{P 0:2 s} ในการคำนวนกราฟการกระจายสินค้า +STR_CONFIG_SETTING_LINKGRAPH_TIME_HELPTEXT :เวลาในการคำนวณการกระจายสินค้าสู่จุดหมายต่างๆที่แสดงเป็นเส้นกราฟบนแผนที่ การตั้งค่าถี่เกินไปอาจก่อให้เกิดอาการ lag ได้ +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_LINKGRAPH_ACCURACY_HELPTEXT :การตั้งค่าความแม่นยำในการคำนวณของระบบการกระจายสินค้า ยิ่งตั้งค่าสูงมากจะยิ่งใช้ทรัพยากรของเครื่องคอมพิวเตอร์มากขึ้น แต่จะเพิ่มความแม่นยำในการคำนวณหาเส้นทางสินค้าที่จะไปมากขึ้น +STR_CONFIG_SETTING_DEMAND_DISTANCE :ผลของสัดส่วนระยะทางต่อปริมาณ: {STRING} +STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT :โดยปกติสินค้ามักจะเลือกไปยังที่หมายที่อยู่ใกล้มากกว่า แต่หากตั้งค่าส่วนนี้เข้าใกล้ 0 สินค้าจะยิ่งกระจายออกไปในพื้นที่ห่างไกลมากยิ่งขึ้น +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 :ความถี่ของเส้นทางสองเส้นทางระหว่างสถานีสองสถานี สินค้าและผู้โดยสารจะให้ความถี่กับเส้นทางที่สุั้นที่สุดก่อนเป็นอันดับแรก + +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_SOUND :{ORANGE}เสียงเอฟเฟกต์ +STR_CONFIG_SETTING_INTERFACE :{ORANGE}ส่วนเชื่อมต่อผู้ใช้ +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}การก่อสร้าง +STR_CONFIG_SETTING_VEHICLES :{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_AI_NPC :{ORANGE}ผู้เล่นคอมพิวเตอร์ + +STR_CONFIG_SETTING_PATHFINDER_OPF :ดั้งเดิม +STR_CONFIG_SETTING_PATHFINDER_NPF :NPF +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_SHIPS :ตัวค้นหาเส้นทางสำหรับเรือ: {STRING} +STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT :การค้นหาเส้นทางของยานพาหนะทางน้ำ +STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :หมุนกลับขบวนอัตโนมัติที่เสาอาณัติสัญญาณ: {STRING} +STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT :อนุญาตให้ขบวนรถไฟกลับขบวนที่เสาอาณัติสัญญาณเมื่อมีการรอสัญญาณอนุญาตเป็นเวลานาน + +STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}เปลี่ยนค่าการตั้งค่า + +# Config errors +STR_CONFIG_ERROR :{WHITE}เกิดข้อผิดพลาดกับไฟล์ที่เก็บข้อมูลการตั้งค่า +STR_CONFIG_ERROR_ARRAY :{WHITE}... เกิดข้อผิดพลาดในอาร์เรย์ '{STRING}' +STR_CONFIG_ERROR_INVALID_VALUE :{WHITE}...ค่านี้ไม่ถูกต้อง '{STRING}' สำหรับ '{STRING}' +STR_CONFIG_ERROR_TRAILING_CHARACTERS :{WHITE}... ติดตามตัวอักษรที่จุดสิ้นสุดของการตั้งค่า '{STRING}' +STR_CONFIG_ERROR_DUPLICATE_GRFID :{WHITE}... กำลังเพิกเฉย NewGRF '{STRING}': GRF ID ซ้ำกับ '{STRING}' +STR_CONFIG_ERROR_INVALID_GRF :{WHITE}... กำลังเพิกเฉย NewGRF ที่ไม่ถูกต้อง '{STRING}': {STRING} +STR_CONFIG_ERROR_INVALID_GRF_NOT_FOUND :ไม่พบ +STR_CONFIG_ERROR_INVALID_GRF_UNSAFE :ไม่ปลอดภัยสำหรับการใช้แบบคงที่ +STR_CONFIG_ERROR_INVALID_GRF_SYSTEM :NewGRF ของระบบ +STR_CONFIG_ERROR_INVALID_GRF_INCOMPATIBLE :ไม่รองรับกับ OpenTTD เวอร์ชันนี้ +STR_CONFIG_ERROR_INVALID_GRF_UNKNOWN :ไม่ทราบ +STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_LEVEL :{WHITE}... ระดับการบับอัด '{STRING}' ไม่ถูกต้อง +STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_ALGORITHM :{WHITE}... รูปแบบการเซฟเกม '{STRING}' ใช้ไม่ได้... กำลังปรับค่ากลับเป็น '{STRING}' +STR_CONFIG_ERROR_INVALID_BASE_GRAPHICS_NOT_FOUND :{WHITE}... ไม่สนใน Base Graphics set '{STRING}': หาไม่พบ +STR_CONFIG_ERROR_INVALID_BASE_SOUNDS_NOT_FOUND :{WHITE}... ไม่สนใน Base Sounds set '{STRING}': หาไม่พบ +STR_CONFIG_ERROR_INVALID_BASE_MUSIC_NOT_FOUND :{WHITE}... ไม่สนใจ Base Music set '{STRING}': หาไม่พบ +STR_CONFIG_ERROR_OUT_OF_MEMORY :{WHITE}หน่วยความจำไม่เพียงพอ +STR_CONFIG_ERROR_SPRITECACHE_TOO_BIG :{WHITE}การกำหนดพื้นที่ {BYTES} ของ Spritecache ล้มเหลว Spritecache ได้ลดลง {BYTES}. นี่คือการทำให้ประสิทธิภาพของเกม OpenTTD ลดลง. เพื่อลดความต้องการของหน่วยความจำ ให้ทำการปิดการใช้งานระบบ 32bpp graphics + +# Intro window +STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} + +STR_INTRO_NEW_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_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 +STR_INTRO_QUIT :{BLACK}ออก + +STR_INTRO_TOOLTIP_NEW_GAME :{BLACK}เริ่มเกมใหม่, Ctrl+Click เพื่อข้ามการตั้งค่าแผนที่ +STR_INTRO_TOOLTIP_LOAD_GAME :{BLACK}เปิดเกมที่บันทึกไว้ +STR_INTRO_TOOLTIP_PLAY_HEIGHTMAP :{BLACK}เริ่มเกมใหม่โดยใช้ heightmap เป็นภูมิประเทศ +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_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 +STR_INTRO_TOOLTIP_QUIT :{BLACK}ออกจากเกม OpenTTD + +STR_INTRO_TRANSLATION :{BLACK} การแปลภาษาส่วนนี้หายไป {NUM} string{P ""}. โปรดช่วยทำให้ OpenTTD ดีขึ้นโดยการสมัครเป็นผู้แปล. ดูใน readme.txt สำหรับรายละเอียด. + +# Quit window +STR_QUIT_CAPTION :{WHITE}ออกจากเกม +STR_QUIT_ARE_YOU_SURE_YOU_WANT_TO_EXIT_OPENTTD :{YELLOW}คุณแน่ใจว่าจะออกจากเกม OpenTTD แล้วกลับสู่ {STRING}? +STR_QUIT_YES :{BLACK}ใช่ +STR_QUIT_NO :{BLACK}ไม่ + +# 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}ออกไปสู่เมนูหลัก +STR_ABANDON_GAME_QUERY :{YELLOW}เกมยังดำเนินอยู่แน่ใจหรือไม่ว่าจะกลับไปสู่เมนูหลัก? +STR_ABANDON_SCENARIO_QUERY :{YELLOW}คุณแน่ใจหรือที่จะยกเลิกแผนที่นี้? + +# Cheat window +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}เครื่องบินไอพ่นจะไม่ตกบ่อยๆ ในท่าอากาศยานขนาดขนาดเล็ก: {ORANGE}{STRING} +STR_CHEAT_SWITCH_CLIMATE_TEMPERATE_LANDSCAPE :ภูมิประเทศเขตอบอุ่น +STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :ภูมิประเทศเขตกึ่งขั้วโลก +STR_CHEAT_SWITCH_CLIMATE_SUB_TROPICAL_LANDSCAPE :ภูมิประเทศเขตกึ่งมรสุม +STR_CHEAT_SWITCH_CLIMATE_TOYLAND_LANDSCAPE :ภูมิประเทศเมืองของเล่น +STR_CHEAT_CHANGE_DATE :{LTBLUE}เปลี่ยนวันที่: {ORANGE}{DATE_SHORT} +STR_CHEAT_CHANGE_DATE_QUERY_CAPT :{WHITE}เปลี่ยนปีปัจจุบัน +STR_CHEAT_SETUP_PROD :{LTBLUE}เปิดใช้งานการแก้ไขปริมาณผลผลิต: {ORANGE}{STRING} + +# Livery window +STR_LIVERY_CAPTION :{WHITE}สร้างแบบสีใหม่ + +STR_LIVERY_GENERAL_TOOLTIP :{BLACK}แสดงแบบสีทั่วไป +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+Click จะปรับสีในทุกๆแบบ +STR_LIVERY_SECONDARY_TOOLTIP :{BLACK}เลือกสีรองของแบบสีที่เลือก Ctrl+Click จะปรับสีในทุกๆแบบ +STR_LIVERY_PANEL_TOOLTIP :{BLACK}เลือกแบบสีที่จะเปลี่ยน หรือหลายแบบโดย Ctrl+คลิก คลิกบนกล่องเพิ่อปิดเปิดการใช้งานแบบสีนั้น + +STR_LIVERY_DEFAULT :ชุดสีมาตรฐาน +STR_LIVERY_STEAM :รถจักรไอน้ำ +STR_LIVERY_DIESEL :รถจักรดีเซล +STR_LIVERY_ELECTRIC :รถจักรไฟฟ้า +STR_LIVERY_MONORAIL :รถไฟรางเดี่ยว +STR_LIVERY_MAGLEV :รถไฟแมคเลฟ +STR_LIVERY_DMU :รถดีเซลราง +STR_LIVERY_EMU :รถไฟฟ้า +STR_LIVERY_PASSENGER_WAGON_STEAM :รถโดยสารของรถจักรไอน้ำ +STR_LIVERY_PASSENGER_WAGON_DIESEL :รถโดยสารของรถจักรดีเซล +STR_LIVERY_PASSENGER_WAGON_ELECTRIC :รถโดยสารของรถจักรไฟฟ้า +STR_LIVERY_PASSENGER_WAGON_MONORAIL :รถไฟรางเดี่ยว +STR_LIVERY_PASSENGER_WAGON_MAGLEV :รถไฟแมคเลฟ +STR_LIVERY_FREIGHT_WAGON :รถสินค้า +STR_LIVERY_BUS :รถโดยสาร +STR_LIVERY_TRUCK :รถบรรทุก +STR_LIVERY_PASSENGER_SHIP :เรือเฟอรี่/เรือโดยสาร +STR_LIVERY_FREIGHT_SHIP :เรือสินค้า +STR_LIVERY_HELICOPTER :เฮลิคอปเตอร์ +STR_LIVERY_SMALL_PLANE :อากาศยานขนาดเล็ก +STR_LIVERY_LARGE_PLANE :อากาศยานขนาดใหญ่ +STR_LIVERY_PASSENGER_TRAM :รถรางโดยสาร +STR_LIVERY_FREIGHT_TRAM :รถรางขนส่งสินค้า + +# Face selection window +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_FEMALE_BUTTON :{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_SIMPLE :{BLACK}อย่างง่าย +STR_FACE_SIMPLE_TOOLTIP :{BLACK}เลือกใบหน้าอย่างง่าย +STR_FACE_LOAD :{BLACK}โหลด +STR_FACE_LOAD_TOOLTIP :{BLACK}โหลดใบหน้าที่ชอบ +STR_FACE_LOAD_DONE :{WHITE}ใบหน้าที่ชอบถูกโหลดจากไฟล์กำหนดค่าของ OpenTTD แล้ว +STR_FACE_FACECODE :{BLACK}ใบหน้าผู้เล่นเบอร์ +STR_FACE_FACECODE_TOOLTIP :{BLACK}ดู และ/หรือ ตั้งหมายเลขใบหน้าผู้เล่น +STR_FACE_FACECODE_CAPTION :{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}บันทึกใบหน้าโปรด +STR_FACE_SAVE_DONE :{WHITE}ใบหน้านี้จะถูกบันทึกเป็นใบหน้าโปรดในไฟล์การตั้งค่าของ OpenTTD +STR_FACE_EUROPEAN :{BLACK}ยุโรป +STR_FACE_SELECT_EUROPEAN :{BLACK}เลือกใบหน้ายุโรป +STR_FACE_AFRICAN :{BLACK}แอฟริกัน +STR_FACE_SELECT_AFRICAN :{BLACK}เลือกใบหน้าแอฟริกัน +STR_FACE_YES :ใช่ +STR_FACE_NO :ไม่ +STR_FACE_MOUSTACHE_EARRING_TOOLTIP :{BLACK}เปิดใช้งานหนวด +STR_FACE_HAIR :ผม: +STR_FACE_HAIR_TOOLTIP :{BLACK}เปลี่ยนผม +STR_FACE_EYEBROWS :คิ้ว: +STR_FACE_EYEBROWS_TOOLTIP :{BLACK}เปลี่ยนคิ้ว +STR_FACE_EYECOLOUR :สีตา: +STR_FACE_EYECOLOUR_TOOLTIP :{BLACK}เปลี่ยนสีตา +STR_FACE_GLASSES :แว่น: +STR_FACE_GLASSES_TOOLTIP :{BLACK}เปิดใช้งานแว่นตา +STR_FACE_GLASSES_TOOLTIP_2 :{BLACK}เปลี่ยนแว่นตา +STR_FACE_NOSE :จมูก: +STR_FACE_NOSE_TOOLTIP :{BLACK}เปลี่ยนจมูก +STR_FACE_LIPS :ปาก: +STR_FACE_MOUSTACHE :หนวด: +STR_FACE_LIPS_MOUSTACHE_TOOLTIP :{BLACK}เปลี่ยนปากหรือหนวด +STR_FACE_CHIN :คาง: +STR_FACE_CHIN_TOOLTIP :{BLACK}เปลี่ยนคาง +STR_FACE_JACKET :เสื้อ: +STR_FACE_JACKET_TOOLTIP :{BLACK}เปลี่ยนเสื้อ +STR_FACE_COLLAR :คอเสื้อ: +STR_FACE_COLLAR_TOOLTIP :{BLACK}เปลี่ยนคอเสื้อ +STR_FACE_TIE :เนคไท: +STR_FACE_EARRING :ต่างหู: +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}เลือกระหว่างการโฆษณา (internet) หรือไม่โฆษณา (Local Area Network, 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}เป็นชื่อที่ผู้เล่นคนอื่นจะมองเห็น + +STR_NETWORK_SERVER_LIST_GAME_NAME :{BLACK}ชื่อ +STR_NETWORK_SERVER_LIST_GAME_NAME_TOOLTIP :{BLACK}ชื่อของเกม +STR_NETWORK_SERVER_LIST_GENERAL_ONLINE :{BLACK}{COMMA}/{COMMA} - {COMMA}/{COMMA} +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_DATE_CAPTION :{BLACK}วันที่ +STR_NETWORK_SERVER_LIST_DATE_CAPTION_TOOLTIP :{BLACK}วันที่ปัจจุบัน +STR_NETWORK_SERVER_LIST_YEARS_CAPTION :{BLACK}ปี +STR_NETWORK_SERVER_LIST_YEARS_CAPTION_TOOLTIP :{BLACK}จำนวนปีที่ผ่านไปในเกม{}ตั้งแต่เริ่มเล่น +STR_NETWORK_SERVER_LIST_INFO_ICONS_TOOLTIP :{BLACK}ภาษา, เวอร์ชันของเซิร์ฟเวอร์, และอื่นๆ + +STR_NETWORK_SERVER_LIST_CLICK_GAME_TO_SELECT :{BLACK}คลิกที่เกมจากรายการเพื่อเลือก +STR_NETWORK_SERVER_LIST_LAST_JOINED_SERVER :{BLACK}เซิร์ฟเวอร์ที่เข้าร่วมล่าสุด: +STR_NETWORK_SERVER_LIST_CLICK_TO_SELECT_LAST :{BLACK}คลิกเพื่อเลือกเซิร์ฟเวอร์ที่เล่นล่าสุด + +STR_NETWORK_SERVER_LIST_GAME_INFO :{SILVER}ข้อมูลเกม +STR_NETWORK_SERVER_LIST_CLIENTS :{SILVER}ลูกข่าย: {WHITE}{COMMA} / {COMMA} - {COMMA} / {COMMA} +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_ADDRESS :{SILVER}ที่อยู่เซิร์ฟเวอร์: {WHITE}{STRING} +STR_NETWORK_SERVER_LIST_START_DATE :{SILVER}วันที่เริ่ม: {WHITE}{DATE_SHORT} +STR_NETWORK_SERVER_LIST_CURRENT_DATE :{SILVER}วันที่ปัจจุบัน: {WHITE}{DATE_SHORT} +STR_NETWORK_SERVER_LIST_PASSWORD :{SILVER}ป้องกันด้วยรหัสผ่าน! +STR_NETWORK_SERVER_LIST_SERVER_OFFLINE :{SILVER}เซิร์ฟเวอร์ออฟไลน์ +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_REFRESH :{BLACK}เรียกดูเซิร์ฟเวอร์ใหม่ +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_START_SERVER :{BLACK}เริ่มเซิร์ฟเวอร์ใหม่ +STR_NETWORK_SERVER_LIST_START_SERVER_TOOLTIP :{BLACK}เริ่มเซิร์ฟเวอร์ใหม่ของคุณ + +STR_NETWORK_SERVER_LIST_PLAYER_NAME_OSKTITLE :{BLACK}ป้อนชื่อของคุณ +STR_NETWORK_SERVER_LIST_ENTER_IP :{BLACK}ป้อนที่อยู่ของโฮสต์ + +# Start new multiplayer server +STR_NETWORK_START_SERVER_CAPTION :{WHITE}เริ่มเกมผู้เล่นหลายคนใหม่ + +STR_NETWORK_START_SERVER_NEW_GAME_NAME :{BLACK}ชื่อเกม: +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} ลูกข่าย +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}จำนวนบริษัทสูงสุด: +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_TOOLTIP :{BLACK}จำกัดจำนวนผู้ชมที่อยู่ในเซิร์ฟเวอร์ +STR_NETWORK_START_SERVER_LANGUAGE_SPOKEN :{BLACK}ภาษาที่ใช้พูดคุย: +STR_NETWORK_START_SERVER_LANGUAGE_TOOLTIP :{BLACK}ผู้เล่นทุกคนจะสามารถทราบถึงภาษาที่ใช้พูดคุยในเซิร์ฟเวอร์นี้ + +STR_NETWORK_START_SERVER_NEW_GAME_NAME_OSKTITLE :{BLACK}พิมพ์ชื่อสำหรับเล่นในเครือข่าย + +# Network game languages +############ Leave those lines in this order!! +STR_NETWORK_LANG_ANY :อะไรก็ได้ +STR_NETWORK_LANG_ENGLISH :ภาษาอังกฤษ +STR_NETWORK_LANG_GERMAN :ภาษาเยอรมัน +STR_NETWORK_LANG_FRENCH :ภาษาฝรั่งเศส +STR_NETWORK_LANG_BRAZILIAN :ภาษาบราซิล +STR_NETWORK_LANG_BULGARIAN :ภาษาบัลกาเรีย +STR_NETWORK_LANG_CHINESE :จีน +STR_NETWORK_LANG_CZECH :เช็ก +STR_NETWORK_LANG_DANISH :เดนมาร์ก +STR_NETWORK_LANG_DUTCH :เนเธอร์แลนด์ +STR_NETWORK_LANG_ESPERANTO :ภาษาโลก(Esperanto) +STR_NETWORK_LANG_FINNISH :ฟินแลนด์ +STR_NETWORK_LANG_HUNGARIAN :ฮังการี +STR_NETWORK_LANG_ICELANDIC :ไอร์แลนด์ +STR_NETWORK_LANG_ITALIAN :อิตาลี +STR_NETWORK_LANG_JAPANESE :ญี่ปุ่น +STR_NETWORK_LANG_KOREAN :เกาหลี +STR_NETWORK_LANG_LITHUANIAN :ลิทัวเนีย +STR_NETWORK_LANG_NORWEGIAN :นอร์เวย์ +STR_NETWORK_LANG_POLISH :โปแลนด์ +STR_NETWORK_LANG_PORTUGUESE :โปรตุเกส +STR_NETWORK_LANG_ROMANIAN :โรมาเนีย +STR_NETWORK_LANG_RUSSIAN :รัสเซีย +STR_NETWORK_LANG_SLOVAK :สโลวัก +STR_NETWORK_LANG_SLOVENIAN :สโลวาเนีย +STR_NETWORK_LANG_SPANISH :สเปน +STR_NETWORK_LANG_SWEDISH :สวีเดน +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 :ลัทเวีย +############ End of leave-in-this-order + +# Network game lobby +STR_NETWORK_GAME_LOBBY_CAPTION :{WHITE}ห้องรับรองโหมดผู้เล่นหลายคน + +STR_NETWORK_GAME_LOBBY_PREPARE_TO_JOIN :{BLACK}กำลังเตรียมการเข้าร่วม: {ORANGE}{STRING} +STR_NETWORK_GAME_LOBBY_COMPANY_LIST_TOOLTIP :{BLACK}รายการของบริษัททั้งหมดที่อยู่ในเกมนี้ คุณสามารถที่จะเข้าร่วมหนึ่งในรายชื่อบริษัทเหล่านี้ได้หรือสามารถที่จะสร้างบริษัทใหม่ได้หากมีช่องว่างให้คุณ + +STR_NETWORK_GAME_LOBBY_COMPANY_INFO :{SILVER}ข้อมูลบริษัท +STR_NETWORK_GAME_LOBBY_COMPANY_NAME :{SILVER}ชื่อบริษัท: {WHITE}{STRING} +STR_NETWORK_GAME_LOBBY_INAUGURATION_YEAR :{SILVER}วันที่เริ่มเปิด: {WHITE}{NUM} +STR_NETWORK_GAME_LOBBY_VALUE :{SILVER}มูลค่าของบริษัท: {WHITE}{CURRENCY_LONG} +STR_NETWORK_GAME_LOBBY_CURRENT_BALANCE :{SILVER}งบดุลปัจจุบัน: {WHITE}{CURRENCY_LONG} +STR_NETWORK_GAME_LOBBY_LAST_YEARS_INCOME :{SILVER}รายได้ของปีที่แล้ว: {WHITE}{CURRENCY_LONG} +STR_NETWORK_GAME_LOBBY_PERFORMANCE :{SILVER}สมรรถภาพ: {WHITE}{NUM} + +STR_NETWORK_GAME_LOBBY_VEHICLES :{SILVER}ภาหนะ: {WHITE}{NUM} {TRAIN}, {NUM} {LORRY}, {NUM} {BUS}, {NUM} {SHIP}, {NUM} {PLANE} +STR_NETWORK_GAME_LOBBY_STATIONS :{SILVER}สถานี: {WHITE}{NUM} {TRAIN}, {NUM} {LORRY}, {NUM} {BUS}, {NUM} {SHIP}, {NUM} {PLANE} +STR_NETWORK_GAME_LOBBY_PLAYERS :{SILVER}ผู้เล่น: {WHITE}{STRING} + +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_TOOLTIP :{BLACK}ดูเกมในฐานะผู้ชม +STR_NETWORK_GAME_LOBBY_JOIN_COMPANY :{BLACK}เข้าร่วมบริษัท +STR_NETWORK_GAME_LOBBY_JOIN_COMPANY_TOOLTIP :{BLACK}ช่วยบริหารจัดการบริษัทนี้ + +# Network connecting window +STR_NETWORK_CONNECTING_CAPTION :{WHITE}กำลังเชื่อมต่อ... + +############ Leave those lines in this order!! +STR_NETWORK_CONNECTING_1 :{BLACK}(1/6) กำลังเชื่อมต่อ... +STR_NETWORK_CONNECTING_2 :{BLACK}(2/6) กำลังตรวจสอบการเข้าร่วม... +STR_NETWORK_CONNECTING_3 :{BLACK}(3/6) กรุณารอ... +STR_NETWORK_CONNECTING_4 :{BLACK}(4/6) ดาวโหลดแผนที่... +STR_NETWORK_CONNECTING_5 :{BLACK}(5/6) ประมวลข้อมูล... +STR_NETWORK_CONNECTING_6 :{BLACK}(6/6) ลงทะเบียน... + +STR_NETWORK_CONNECTING_SPECIAL_1 :{BLACK}รวบรวมข้อมูลเกม... +STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}รวบรวมข้อมูลบริษัท... +############ End of leave-in-this-order +STR_NETWORK_CONNECTING_WAITING :{BLACK}{NUM} client{P ""} อยู่ข้างหน้าคุณ +STR_NETWORK_CONNECTING_DOWNLOADING_1 :ดาวน์โหลดไปแล้ว {BLACK}{BYTES} +STR_NETWORK_CONNECTING_DOWNLOADING_2 :{BLACK}{BYTES} / {BYTES} ดาวโหลดไปแล้วทั้งสิ้น + +STR_NETWORK_CONNECTION_DISCONNECT :{BLACK}ตัดการเชื่อมต่อ + +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}รายการลูกข่าย +STR_NETWORK_COMPANY_LIST_SPECTATE :{WHITE}ผู้ชม +STR_NETWORK_COMPANY_LIST_NEW_COMPANY :{WHITE}บริษัทใหม่ + +# Network client list +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_CLIENT :ข้อความส่วนตัว + +STR_NETWORK_SERVER :เซิฟเวอร์ +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}ไม่ทำการเก็บพาสเวิร์ดที่กรอกไว้แล้ว +STR_COMPANY_PASSWORD_OK :{BLACK}ตั้งพาสเวิร์ดของบริษัทใหม่ +STR_COMPANY_PASSWORD_CAPTION :{WHITE}พาสเวิร์ดของบริษัท +STR_COMPANY_PASSWORD_MAKE_DEFAULT :{BLACK}พาสเวิร์ดตั้งต้นของบริษัท +STR_COMPANY_PASSWORD_MAKE_DEFAULT_TOOLTIP :{BLACK}ใช้พาสเวิร์ดของบริษัทนี้เป็นพาสเวิร์ดตั้งต้นของบริษัทใหม่ + +# Network company info join/password +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_SET_PASSWORD :{BLACK}ตั้งพาสเวิร์ดของบริษัท + +# Network chat +STR_NETWORK_CHAT_SEND :{BLACK}ส่ง +STR_NETWORK_CHAT_COMPANY_CAPTION :[ทีม]: +STR_NETWORK_CHAT_CLIENT_CAPTION :[ส่วนตัว] {STRING}: +STR_NETWORK_CHAT_ALL_CAPTION :[ทั้งหมด]: + +STR_NETWORK_CHAT_COMPANY :[ทีม] {STRING}: {WHITE}{STRING} +STR_NETWORK_CHAT_TO_COMPANY :[ทีม] ถึง {STRING}: {WHITE}{STRING} +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}พิมพ์ข้อความสำหรับการคุยในเครือข่าย + +# Network messages +STR_NETWORK_ERROR_NOTAVAILABLE :{WHITE}ไม่พบอุปกรณ์เน็ทเวิร์กหรือได้ผ่านการคอมไพล์โดยไม่ได้ตัวเลือกนี้ ENABLE_NETWORK +STR_NETWORK_ERROR_NOSERVER :{WHITE}ไม่พบเกมในระบบเน็ทเวิร์ก +STR_NETWORK_ERROR_NOCONNECTION :{WHITE}เซิฟเวอร์ไม่ตอบรับคำขอ +STR_NETWORK_ERROR_NEWGRF_MISMATCH :{WHITE}ไม่สามารถติดต่อได้เนื่องจาก NewGRF ไม่ตรงกัน +STR_NETWORK_ERROR_DESYNC :{WHITE}การประสานเวลากับเกม ไม่สำเร็จ(synchronisation failed) +STR_NETWORK_ERROR_LOSTCONNECTION :{WHITE}การเชื่อมต่อกับเกมสูญหาย +STR_NETWORK_ERROR_SAVEGAMEERROR :{WHITE}ไม่สามารถโหลดเซฟเกมได้ +STR_NETWORK_ERROR_SERVER_START :{WHITE}ไม่สามารถเริ่มเซิฟเวอร์ได้ +STR_NETWORK_ERROR_CLIENT_START :{WHITE}ไม่สามารถเชื่อมต่อ +STR_NETWORK_ERROR_TIMEOUT :{WHITE}เชื่อมต่อครั้งที่ #{NUM} เกินเวลาที่กำหนด +STR_NETWORK_ERROR_SERVER_ERROR :{WHITE}ตรวจเจอการขัดข้องของโพรโทคอลและการเชื่อต่อถูกปิดลง +STR_NETWORK_ERROR_WRONG_REVISION :{WHITE}revision ของลูกข่ายไม่ตรงกับของเซิฟเวอร์ +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}ไม่อนุญาตให้โกงในเซิฟเวอร์นี้ +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_JOIN :{WHITE}คอมพิวเตอร์ของคุณใช้เวลามากเกินไปสำหรับการเข้าร่วมกับเซิร์ฟเวอร์ + +############ Leave those lines in this order!! +STR_NETWORK_ERROR_CLIENT_GENERAL :การผิดพลาดทั่วไป +STR_NETWORK_ERROR_CLIENT_DESYNC :desync ผิดพลาด +STR_NETWORK_ERROR_CLIENT_SAVEGAME :ไม่สามารถโหลดแผนที่ได้ +STR_NETWORK_ERROR_CLIENT_CONNECTION_LOST :การเชื่อมต่อสูญหาย +STR_NETWORK_ERROR_CLIENT_PROTOCOL_ERROR :โปรโทคอลผิดพลาด +STR_NETWORK_ERROR_CLIENT_NEWGRF_MISMATCH :NewGRF ไม่ตรง +STR_NETWORK_ERROR_CLIENT_NOT_AUTHORIZED :ไม่ผ่านการตรวจสอบ +STR_NETWORK_ERROR_CLIENT_NOT_EXPECTED :ได้รับแพกเก็ตที่ผิดพลาดหรือไม่คาดหวัง +STR_NETWORK_ERROR_CLIENT_WRONG_REVISION :revistion ผิด +STR_NETWORK_ERROR_CLIENT_NAME_IN_USE :ชื่อนี้ถูกใช้แล้ว +STR_NETWORK_ERROR_CLIENT_WRONG_PASSWORD :พาสเวิร์ดผิด +STR_NETWORK_ERROR_CLIENT_COMPANY_MISMATCH :บริษัทผิดใน DoCommand +STR_NETWORK_ERROR_CLIENT_KICKED :ถูกเตะโดยเซิฟเวอร์ +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_MAP :ใช้เวลามากไปในการดาวน์โหลดแผนที่ +STR_NETWORK_ERROR_CLIENT_TIMEOUT_JOIN :ใช้เวลามากไปในการประมวลผลแผนที่ +############ End of leave-in-this-order + +STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION_CAPTION :{WHITE}การเชื่อมต่อล้มเหลว +STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION :{WHITE}{NUM} วินาทีสุดท้ายไม่มีข้อมูลส่งถึงเครื่องแม่ข่าย + +# Network related errors +STR_NETWORK_SERVER_MESSAGE :*** {1:STRING} +############ Leave those lines in this order!! +STR_NETWORK_SERVER_MESSAGE_GAME_PAUSED :เกมหยุด ({STRING}) +STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_1 :เกมยังหยุดอยู่ ({STRING}) +STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_2 :เกมยังหยุดอยู่ ({STRING}, {STRING}) +STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_3 :เกมยังหยุดอยู่ ({STRING}, {STRING}, {STRING}) +STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_4 :เกมยังถูกหยุดอยู่ ({STRING}, {STRING}, {STRING}, {STRING}) +STR_NETWORK_SERVER_MESSAGE_GAME_UNPAUSED :เกมเริ่มต่อแล้ว ({STRING}) +STR_NETWORK_SERVER_MESSAGE_GAME_REASON_NOT_ENOUGH_PLAYERS :จำนวนผู้เล่น +STR_NETWORK_SERVER_MESSAGE_GAME_REASON_CONNECTING_CLIENTS :ลูกข่ายกำลังเชื่อมต่อ +STR_NETWORK_SERVER_MESSAGE_GAME_REASON_MANUAL :กำหนดเอง +STR_NETWORK_SERVER_MESSAGE_GAME_REASON_GAME_SCRIPT :เกมสคริปต์ +############ End of leave-in-this-order +STR_NETWORK_MESSAGE_CLIENT_LEAVING :กำลังออก +STR_NETWORK_MESSAGE_CLIENT_JOINED :*** {STRING} ได้เข้าร่วมเกม +STR_NETWORK_MESSAGE_CLIENT_JOINED_ID :*** {STRING} ได้เข้าร่วมเกม (Client #{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_LEFT :*** {STRING} ได้ออกจากเกม ({2: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}เซิฟเวอร์ปืดเซสซั่นนี้ +STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}เซิฟเวอร์กำลังทำการเริ่มต้นใหม่...{}กรุณารอซักครู่... + +# Content downloading window +STR_CONTENT_TITLE :{WHITE}กำลังโหลดเนื้อหา +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_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's content service +STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER_CAPTION :{WHITE}คุณต้องการออกจากเกมหรือไม่ ? +STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER :{WHITE}ข้อกำหนดและข้อความระวังสำหรับการดาวโหลดข้อมูลจากเว็บไซต์ภายนอก.{}คุณต้องหาข้อมูลสำหรับการติดตั้งข้อมูลส่วนนั้นเข้าสู่ OpenTTD.{}ต้องการทำต่อหรือไม่? +STR_CONTENT_FILTER_TITLE :{BLACK}Tag/name ตัวกรอง: +STR_CONTENT_OPEN_URL :{BLACK}เยี่ยมชมเว็บไซต์ +STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}เยี่ยมชมเว็บไซต์ของเนื้อหานี้ +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}dependency ตัวนี้ได้ทำการถูกเลือกไว้สำหรับดาวโหลด +STR_CONTENT_DETAIL_SUBTITLE_ALREADY_HERE :{SILVER}คุณมีเนื้อหาตัวนี้แล้ว +STR_CONTENT_DETAIL_SUBTITLE_DOES_NOT_EXIST :{SILVER}ไม่รู้จักเนื้อหานี้และไม่สามารถดาวโหลดได้ทาง OpenTTD +STR_CONTENT_DETAIL_UPDATE :{SILVER}เนื้อหานี้จะทำการติดตั้งทับกับเนื้อหาก่อนหน้านี้ {STRING} +STR_CONTENT_DETAIL_NAME :{SILVER}ชื่อ: {WHITE}{STRING} +STR_CONTENT_DETAIL_VERSION :{SILVER}เวอร์ชัน: {WHITE}{STRING} +STR_CONTENT_DETAIL_DESCRIPTION :{SILVER}คำบรรยาย: {WHITE}{STRING} +STR_CONTENT_DETAIL_URL :{SILVER}URL: {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}Dependencies: {WHITE}{STRING} +STR_CONTENT_DETAIL_TAGS :{SILVER}Tags: {WHITE}{STRING} +STR_CONTENT_NO_ZLIB :{WHITE}OpenTTD สร้างขึ้นโดยไม่ได้รองรับ "zlib" ... +STR_CONTENT_NO_ZLIB_SUB :{WHITE}... ไม่สามารถดาวโหลดเนื้อหาได้ + +# Order of these is important! +STR_CONTENT_TYPE_BASE_GRAPHICS :กราฟฟิคพื้นฐาน +STR_CONTENT_TYPE_NEWGRF :NewGRF +STR_CONTENT_TYPE_AI :AI +STR_CONTENT_TYPE_AI_LIBRARY :AI library +STR_CONTENT_TYPE_SCENARIO :การจำลอง +STR_CONTENT_TYPE_HEIGHTMAP :Heightmap +STR_CONTENT_TYPE_BASE_SOUNDS :เสียง +STR_CONTENT_TYPE_BASE_MUSIC :เพลงประกอบพื้นฐาน +STR_CONTENT_TYPE_GAME_SCRIPT :เกมสคริปต์ +STR_CONTENT_TYPE_GS_LIBRARY :GS library + +# Content downloading progress window +STR_CONTENT_DOWNLOAD_TITLE :{WHITE}กำลังดาวโหลดเนื้อหา +STR_CONTENT_DOWNLOAD_INITIALISE :{WHITE}ทำการร้องขอไฟล์... +STR_CONTENT_DOWNLOAD_FILE :{WHITE}ตอนนี้กำลังดาวโหลด {STRING} ({NUM} จากทั้งหมด {NUM}) +STR_CONTENT_DOWNLOAD_COMPLETE :{WHITE}ดาวโหลดเสร็จสิ้น +STR_CONTENT_DOWNLOAD_PROGRESS_SIZE :{WHITE}{BYTES} จากทั้งหมด {BYTES} ดาวโหลดไปแล้ว ({NUM} %) + +# 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_EXTRACT :{WHITE}ไม่สามารถทำการแตกไฟล์ที่ดาวโหลดมาแล้วได้ + +STR_MISSING_GRAPHICS_SET_CAPTION :{WHITE}กราฟฟิกขาดหาย +STR_MISSING_GRAPHICS_SET_MESSAGE :{BLACK}OpenTTD ไม่พบกราฟฟิกที่ใช้ในการทำงาน. คุณต้องการให้ OpenTTD ดาวน์โหลดและติดตั้งกราฟฟิกหรือไม่? +STR_MISSING_GRAPHICS_YES_DOWNLOAD :{BLACK}ดาวน์โหลดกราฟฟิก +STR_MISSING_GRAPHICS_NO_QUIT :{BLACK}ออกจาก OpenTTD + +# Transparency settings window +STR_TRANSPARENCY_CAPTION :{WHITE}ตัวเลือกค่าโปร่งใส +STR_TRANSPARENT_SIGNS_TOOLTIP :{BLACK}เปิด/ปิด การโปร่งใสของป้าย. กด Ctrl+Click สำหรับการล็อก +STR_TRANSPARENT_TREES_TOOLTIP :{BLACK}เปิด/ปิด การโปร่งใสของต้นไม้. กด Ctrl+Click สำหรับการล็อก +STR_TRANSPARENT_HOUSES_TOOLTIP :{BLACK}เปิด/ปิด การโปร่งใสของบ้าน. กด Ctrl+Click สำหรับการล็อก +STR_TRANSPARENT_INDUSTRIES_TOOLTIP :{BLACK}เปิด/ปิด การโปร่งใสของอุตสาหกรรม. กด Ctrl+Click สำหรับการล็อก +STR_TRANSPARENT_BUILDINGS_TOOLTIP :{BLACK}เปิด/ปิด การโปร่งใสของสิ่งปลูกสร้างที่สามารถสร้างได้เช่น สถานี, โรงซ่อมบำรุง และที่หมาย เป็นต้น. กด Ctrl+Click สำหรับการล็อก +STR_TRANSPARENT_BRIDGES_TOOLTIP :{BLACK}เปิด/ปิด การโปร่งใสของสะพาน. กด Ctrl+Click สำหรับการล็อก +STR_TRANSPARENT_STRUCTURES_TOOLTIP :{BLACK}เปิด/ปิด การโปร่งใสของสิ่งปลูกสร้างอย่างเช่น ประภาคารและเสาส่งสัญญาณวิทยุ. กด Ctrl+Click สำหรับการล็อก +STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}เปิด/ปิด การโปร่งใสของสายจ่ายไฟรถไฟฟ้า. กด Ctrl+Click สำหรับการล็อก +STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}เปิด/ปิด การโปร่งใสของตัวบอกการบรรทุกของ. กด Ctrl+Click สำหรับการล็อก +STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}ตั้งให้วัตถุมองไม่เห็นแทนการโปร่งใส + +# Linkgraph legend window +STR_LINKGRAPH_LEGEND_CAPTION :{WHITE}แสดงเส้นทางและความหนาแน่น +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}แสดงพื้นที่ให้บริการ +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 :{BLACK}สินค้าที่ต้องการ: {GOLD}{CARGO_LIST} +STR_STATION_BUILD_SUPPLIES_CARGO :{BLACK}สินค้าที่่จะส่งออกไป: {GOLD}{CARGO_LIST} + +# Join station window +STR_JOIN_STATION_CAPTION :{WHITE}รวมสถานี +STR_JOIN_STATION_CREATE_SPLITTED_STATION :{YELLOW}สร้างสถานีแยกต่างหาก + +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_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 เพื่อสลับการสร้าง/รื้อถอน รางรถไฟ +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+Click เพื่อ เปิด/ปิด หน้าต่างเลือกเสาสัญญาณ. กด 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 :รางรถไฟฟ้า +STR_RAIL_NAME_MONORAIL :รถไฟรางเดียว +STR_RAIL_NAME_MAGLEV :รถไฟพลังแม่เหล็ก + +# Rail depot construction window +STR_BUILD_DEPOT_TRAIN_ORIENTATION_CAPTION :{WHITE}ทิศทางของโรงซ่อมบำรุง +STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}เลือกทิศทางของโรงซ่อมบำรุงรถไฟ + +# Rail waypoint construction window +STR_WAYPOINT_CAPTION :{WHITE}จุดตรวจ +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_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_DRAG_DROP :{BLACK}ลากและวาง +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 :สถานีมาตรฐาน +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}เสาอาณัติสัญญาณตอนอัตโนมัติ (แบบหางปลา){}เสาอาณัติสัญญาณตอนอัตโนมัติ อนุญาตให้รถไฟมากกว่าหนึ่งขบวนเข้าในบล็อกสัญญาณในเวลาเดียวกัน, ถ้ารถไฟสามารถรักษาเส้นทางไว้สำหรับจุดจอดที่ปลอดภัย. Patch Signal ธรรมดาสามารถผ่านจากด้านหลังได้ +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}เสาอาณัติสัญญาณตอนอัตโนมัติ (แบบไฟสี){}อนุญาตให้รถไฟหลายขบวนสามารถเข้าไปใน Block เดียวกันได้ โดยใช้ระบบ reserve track เพื่อป้องกันไม่ให้ขบวนรถชนกัน +STR_BUILD_SIGNAL_ELECTRIC_PBS_OWAY_TOOLTIP :{BLACK}เสาอาณัติสัญญาณตอนอัตโนมัติ แบบเดินรถทางเดียว (แบบไฟสี){}คือ Path Signal ประเภทเดินรถผ่านได้ทางเดียว +STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}เปลี่ยนประเภทเสาอาณัติสัญญาณ{}เมื่อเลือกเมนูนี้ คลิ๊กเลือกที่เสาอาณัติสัญญาณที่ตั้งไว้อยู่แล้ว จะเป็นการเปลี่ยนเสาอาณัติสัญญาณเป็นแบบที่เลือกในกล่องเครื่องมือสร้าง +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}เพิ่มปริมาณของเสาสัญญาณที่ลากมา + +# Bridge selection window +STR_SELECT_RAIL_BRIDGE_CAPTION :{WHITE}เลือกสะพานรถไฟ +STR_SELECT_ROAD_BRIDGE_CAPTION :{WHITE}เลือกสะพานสำหรับรถยนต์ +STR_SELECT_BRIDGE_SELECTION_TOOLTIP :{BLACK}เลือกสะพาน - คลิกสะพานที่ท่านชื่นชอบเพื่อก่อสร้าง +STR_SELECT_BRIDGE_INFO :{GOLD}{STRING},{} {VELOCITY} {WHITE}{CURRENCY_LONG} +STR_SELECT_BRIDGE_SCENEDIT_INFO :{GOLD}{STRING},{} {VELOCITY} +STR_BRIDGE_NAME_SUSPENSION_STEEL :สะพานแขวนแบบคอนกรีต +STR_BRIDGE_NAME_GIRDER_STEEL :สะพานนั่งร้านแบบเหล็กกล้า +STR_BRIDGE_NAME_CANTILEVER_STEEL :สะพานคานแบบเหล็กกล้า +STR_BRIDGE_NAME_SUSPENSION_CONCRETE :สะพานแขวนแบบคอนกรีต +STR_BRIDGE_NAME_WOODEN :สะพานไม้ +STR_BRIDGE_NAME_CONCRETE :สะพานคอนกรีต +STR_BRIDGE_NAME_TUBULAR_STEEL :สะพานท่อแบบเหล็กกล้า +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}สร้างสถานีรถบรรทุกสินค้า +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_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}เลือกทิศทา + +# 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}เลือกทิศทางของสถานีรถรางขนส่งสินค้า + +# 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}สร้างประตูกั้นน้ำ. แสดง building/showing ราคาประมาณการ +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 +STR_DEPOT_BUILD_SHIP_CAPTION :{WHITE}ทิศทางของอู่เรือ +STR_DEPOT_BUILD_SHIP_ORIENTATION_TOOLTIP :{BLACK}เลือกทิศทางของอู่เรือ + +# Dock construction window +STR_STATION_BUILD_DOCK_CAPTION :{WHITE}ท่าเรือ + +# Airport toolbar +STR_TOOLBAR_AIRCRAFT_CAPTION :{WHITE}ท่าอากาศยาน +STR_TOOLBAR_AIRCRAFT_BUILD_AIRPORT_TOOLTIP :{BLACK}สร้างท่าอากาศยาน. กด Ctrl เพื่อใช้สถานีร่วมกับที่อื่น. กด Shift เพื่อแสดงการประเมินค่าใช้จ่าย + +# Airport construction window +STR_STATION_BUILD_AIRPORT_CAPTION :{WHITE}การเลือกประเภทท่าอากาศยาน +STR_STATION_BUILD_AIRPORT_TOOLTIP :{BLACK}เลือกขนาด/ชนิดของท่าอากาศยาน +STR_STATION_BUILD_AIRPORT_CLASS_LABEL :{BLACK}ประเภทของท่าอากาศยาน +STR_STATION_BUILD_AIRPORT_LAYOUT_NAME :{BLACK}โครงสร้าง {NUM} + +STR_AIRPORT_SMALL :ลานบินขนาดเล็ก +STR_AIRPORT_CITY :เมืองใหญ่ +STR_AIRPORT_METRO :ระดับภาคท้องถิ่น +STR_AIRPORT_INTERNATIONAL :นานาชาติ +STR_AIRPORT_COMMUTER :สนามบินเทศบาล +STR_AIRPORT_INTERCONTINENTAL :ระดับภูมิภาค +STR_AIRPORT_HELIPORT :จุดจอดเฮลิคอปเตอร์ +STR_AIRPORT_HELIDEPOT :โรงซ่อมเฮลิคอปเตอร์ +STR_AIRPORT_HELISTATION :สถานีจอดเฮลิคอปเตอร์ + +STR_AIRPORT_CLASS_SMALL :ท่าอากาศยานขนาดเล็ก +STR_AIRPORT_CLASS_LARGE :ท่าอากาศยานขนาดใหญ่ +STR_AIRPORT_CLASS_HUB :ท่าอากาศยานนานาชาติ +STR_AIRPORT_CLASS_HELIPORTS :ลานจอดเฮลิคอปเตอร์ + +STR_STATION_BUILD_NOISE :{BLACK}สร้างเสียงรบกวน: {GOLD}{COMMA} + +# Landscaping toolbar +STR_LANDSCAPING_TOOLBAR :{WHITE}การปรับภูมิประเทศ +STR_LANDSCAPING_TOOLTIP_LOWER_A_CORNER_OF_LAND :{BLACK}ลดระดับมุมของที่ดิน. ลากเพื่อลดระดับมุมที่เลือกและปรับระดับบริเวณที่เลือกใหม่. กด Ctrl เพื่อเลือกบริเวณเป็นแนวทแยง. กด Shift เพื่อสลับระหว่างสิ่งปลูกสร้าง/แสดงการประเมินค่าใช้จ่าย +STR_LANDSCAPING_TOOLTIP_RAISE_A_CORNER_OF_LAND :{BLACK}ถมส่วนมุมของที่ดินให้สูงขึ้น +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}เลือกวัตถุเพื่อสร้าง กด Shift เพื่อสลับระหว่างสิ่งปลูกสร้างและการแสดงมูลค่าโดยประมาณ +STR_OBJECT_BUILD_CLASS_TOOLTIP :{BLACK}เลือกชนิดของวัตถุที่จะสร้าง +STR_OBJECT_BUILD_PREVIEW_TOOLTIP :{BLACK}ตัวอย่างวัตถุ +STR_OBJECT_BUILD_SIZE :{BLACK}ขนาด: {GOLD}{NUM} x {NUM} ช่อง + +STR_OBJECT_CLASS_LTHS :ประภาคาร +STR_OBJECT_CLASS_TRNS :เครื่องส่งสัญญาณ + +# Tree planting window (last two for SE only) +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_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_INCREASE_SIZE_OF_LAND_AREA :{BLACK}เพิ่มพื้นที่ในการปรับระดับแผ่นดิน +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_QUERY_RESET_LANDSCAPE_CAPTION :{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}ก่อสร้างเมืองใหม่ เมื่อกด Shift+คลิกเมาส์ จะแสดงมูลค่าโดยประมาณ +STR_FOUND_TOWN_RANDOM_TOWN_BUTTON :{BLACK}สุ่มเมือง +STR_FOUND_TOWN_RANDOM_TOWN_TOOLTIP :{BLACK}สร้างเมืองโดยการสุ่มที่ตั้ง +STR_FOUND_TOWN_MANY_RANDOM_TOWNS :{BLACK}สุ่มหลายๆ เมือง +STR_FOUND_TOWN_RANDOM_TOWNS_TOOLTIP :{BLACK}สุ่มสร้างเมืองครอบคลุมแผนที่ทั้งหมด + +STR_FOUND_TOWN_NAME_TITLE :{YELLOW}ชื่อเมือง: +STR_FOUND_TOWN_NAME_EDITOR_TITLE :{BLACK}ใส่ชื่อเมือง +STR_FOUND_TOWN_NAME_EDITOR_HELP :{BLACK}คลิกเพื่อใส่ชื่อเมือง +STR_FOUND_TOWN_NAME_RANDOM_BUTTON :{BLACK}สุ่มชื่อ +STR_FOUND_TOWN_NAME_RANDOM_TOOLTIP :{BLACK}สุ่มสร้างชื่อใหม่ + +STR_FOUND_TOWN_INITIAL_SIZE_TITLE :{YELLOW}ขนาดเมือง: +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_CITY :{BLACK}เมืองใหญ่ +STR_FOUND_TOWN_CITY_TOOLTIP :{BLACK}เมืองใหญ่ขยายตัวเร็วกว่าเมืองเล็ก{}เลือกค่านี้ เมืองที่สร้างจะใหญ่ขึ้นเมื่อสร้างใหม่ + +STR_FOUND_TOWN_ROAD_LAYOUT :{YELLOW}รูปแบบถนนของเมือง: +STR_FOUND_TOWN_SELECT_TOWN_ROAD_LAYOUT :{BLACK}เลือกรูปแบบถนนสำหรับเมืองนี้ +STR_FOUND_TOWN_SELECT_LAYOUT_ORIGINAL :{BLACK}ดั้งเดิม +STR_FOUND_TOWN_SELECT_LAYOUT_BETTER_ROADS :{BLACK}ถนนดีขึ้น +STR_FOUND_TOWN_SELECT_LAYOUT_2X2_GRID :{BLACK}ตาราง 2x2 +STR_FOUND_TOWN_SELECT_LAYOUT_3X3_GRID :{BLACK}ตาราง 3x3 +STR_FOUND_TOWN_SELECT_LAYOUT_RANDOM :{BLACK}สุ่ม + +# Fund new industry window +STR_FUND_INDUSTRY_CAPTION :{WHITE}ก่อตั้งอุตสาหกรรมใหม่ +STR_FUND_INDUSTRY_SELECTION_TOOLTIP :{BLACK}เลือกอุตสาหกรรมที่เหมาะสมจากรายการนี้ +STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES :สุ่มหลากหลายอุตสาหกรรม +STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES_TOOLTIP :{BLACK}วางโรงงานอุตสาหกรรมแบบสุ่มทั่วแผนที่ +STR_FUND_INDUSTRY_INDUSTRY_BUILD_COST :{BLACK}ราคา: {YELLOW}{CURRENCY_LONG} +STR_FUND_INDUSTRY_PROSPECT_NEW_INDUSTRY :{BLACK}สำรวจ +STR_FUND_INDUSTRY_BUILD_NEW_INDUSTRY :{BLACK}สร้าง +STR_FUND_INDUSTRY_FUND_NEW_INDUSTRY :{BLACK}ก่อตั้ง + +# Industry cargoes window +STR_INDUSTRY_CARGOES_INDUSTRY_CAPTION :{WHITE}สายการผลิตสำหรับอุตสาหกรรม{STRING} +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_CARGO_TOOLTIP :{BLACK}{STRING}{}คลิกที่สินค้าเพื่อแสดงผู้ผลิตสินค้าและลูกค้า +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}เลือกประเภทสินค้า +STR_INDUSTRY_CARGOES_SELECT_CARGO_TOOLTIP :{BLACK}เลือกสินค้าที่ต้องการแสดง +STR_INDUSTRY_CARGOES_SELECT_INDUSTRY :{BLACK}เลือกอุตสาหกรรม +STR_INDUSTRY_CARGOES_SELECT_INDUSTRY_TOOLTIP :{BLACK}เลือกอุตสาหกรรมที่คุณต้องการแสดง + +# Land area window +STR_LAND_AREA_INFORMATION_CAPTION :{WHITE}ข้อมูลพื้นที่ +STR_LAND_AREA_INFORMATION_COST_TO_CLEAR_N_A :{BLACK}มูลค่าของการรื้อถอน: {LTBLUE}ไม่สามารถทำได้ +STR_LAND_AREA_INFORMATION_COST_TO_CLEAR :{BLACK}มูลค่าของการรื้อถอน: {RED}{CURRENCY_LONG} +STR_LAND_AREA_INFORMATION_REVENUE_WHEN_CLEARED :{BLACK}รายได้จากการเคลียร์: {LTBLUE}{CURRENCY_LONG} +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_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}) +STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}สร้างเมื่อ: {LTBLUE}{DATE_LONG} +STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}ประเภทของสถานี: {LTBLUE}{STRING} +STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}รูปแบบของสถานี: {LTBLUE}{STRING} +STR_LAND_AREA_INFORMATION_AIRPORT_CLASS :{BLACK}ระดับท่าอากาศยาน: {LTBLUE}{STRING} +STR_LAND_AREA_INFORMATION_AIRPORT_NAME :{BLACK}ชื่อท่าอากาศยาน: {LTBLUE}{STRING} +STR_LAND_AREA_INFORMATION_AIRPORTTILE_NAME :{BLACK}ชื่อท่าอากาศยาน: {LTBLUE}{STRING} +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} + +# 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_SNOW_COVERED_LAND :พื้นที่หิมะปกคลุม +STR_LAI_CLEAR_DESCRIPTION_DESERT :ทะเลทราย + +STR_LAI_RAIL_DESCRIPTION_TRACK :{STRING} ราง +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_SIGNALS :{STRING}ทางรถไฟกับ Block Signal +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRESIGNALS :{STRING}ทางรถไฟกับ Pre-Signal +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXITSIGNALS :{STRING}ทางรถไฟกับ Exit-Signal +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBOSIGNALS :{STRING}ทางรถไฟกับ Combo-Signal +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBSSIGNALS :{STRING}ทางรถไฟกับ Path Signal +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NOENTRYSIGNALS :{STRING}ทางรถไฟกับ Path Signal แบบเดินทางเดียว +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PRESIGNALS :{STRING}ทางรถไฟกับ Block และ Pre-Signals +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_EXITSIGNALS :{STRING}ทางรถไฟกับ Block และ Exit-Signal +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_COMBOSIGNALS :{STRING}ทางรถไฟกับ Block และ Combo-Signals +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PBSSIGNALS :{STRING}ทางรถไฟกับ Block และ Path Signals +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_NOENTRYSIGNALS :{STRING}ทางรถไฟกับ Block และ Path Signals แบบเดินรถทางเดียว +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_EXITSIGNALS :{STRING}ทางรถไฟกับ Pre- และ Exit-Signals +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_COMBOSIGNALS :{STRING}ทางรถไฟกับ Pre- และ Combo-Signals +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_PBSSIGNALS :{STRING}ทางรถไฟกับ Pre- และ Path Signals +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_NOENTRYSIGNALS :{STRING}ทางรถไฟและ Pre- และ Path Signals แบบเดินรถทางเดียว +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_COMBOSIGNALS :{STRING}ทางรถไฟกับ Exit- และ Combo-Signals +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_PBSSIGNALS :{STRING}ทางรถไฟกับ Exit- และ Path Signals +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_NOENTRYSIGNALS :{STRING}ทางรถไฟและ Exit- และ Path Signals แบบเดินรถทางเดียว +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_PBSSIGNALS :{STRING}ทางรถไฟและ Combo- และ Path Signals +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_NOENTRYSIGNALS :{STRING}ทางรถไฟและ Combo- และ Path Signals แบบเดินรถทางเดียว +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBS_NOENTRYSIGNALS :{STRING}ทางรถไฟกับ Path และ Path Signals แบบเดินรถทางเดียว +STR_LAI_RAIL_DESCRIPTION_TRAIN_DEPOT :{STRING} โรงซ่อมบำรุงรถไฟ + +STR_LAI_ROAD_DESCRIPTION_ROAD :ถนน +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 :ทางรถราง + +# Houses come directly from their building names +STR_LAI_TOWN_INDUSTRY_DESCRIPTION_UNDER_CONSTRUCTION :{STRING} (กำลังก่อสร้าง) + +STR_LAI_TREE_NAME_TREES :ต้นไม้ +STR_LAI_TREE_NAME_RAINFOREST :ป่าดิบชื้น +STR_LAI_TREE_NAME_CACTUS_PLANTS :ตะบองเพชร + +STR_LAI_STATION_DESCRIPTION_RAILROAD_STATION :สถานีรถไฟ +STR_LAI_STATION_DESCRIPTION_AIRCRAFT_HANGAR :โรงเก็บเครื่องบิน +STR_LAI_STATION_DESCRIPTION_AIRPORT :ท่าอากาศยาน +STR_LAI_STATION_DESCRIPTION_TRUCK_LOADING_AREA :จุดโหลดสำหรับรถบรรทุก +STR_LAI_STATION_DESCRIPTION_BUS_STATION :สถานีขนส่ง +STR_LAI_STATION_DESCRIPTION_SHIP_DOCK :ท่าเรือ +STR_LAI_STATION_DESCRIPTION_BUOY :ทุ่น +STR_LAI_STATION_DESCRIPTION_WAYPOINT :จุดตรวจ + +STR_LAI_WATER_DESCRIPTION_WATER :น้ำ +STR_LAI_WATER_DESCRIPTION_CANAL :คลอง +STR_LAI_WATER_DESCRIPTION_LOCK :ล็อค +STR_LAI_WATER_DESCRIPTION_RIVER :แม่น้ำ +STR_LAI_WATER_DESCRIPTION_COAST_OR_RIVERBANK :ชายฝั่ง +STR_LAI_WATER_DESCRIPTION_SHIP_DEPOT :อู่เรือ + +# Industries come directly from their industry names + +STR_LAI_TUNNEL_DESCRIPTION_RAILROAD :อุโมงค์รถไฟ +STR_LAI_TUNNEL_DESCRIPTION_ROAD :อุโมงค์รถยนต์ + +STR_LAI_BRIDGE_DESCRIPTION_RAIL_SUSPENSION_STEEL :สะพานแขวนแบบเหล็กสำหรับรถไฟ +STR_LAI_BRIDGE_DESCRIPTION_RAIL_GIRDER_STEEL :สะพานนั่งร้านแบบเหล็กสำหรับรถไฟ +STR_LAI_BRIDGE_DESCRIPTION_RAIL_CANTILEVER_STEEL :สะพานคานแบบเหล็กกล้าสำหรับรถไฟ +STR_LAI_BRIDGE_DESCRIPTION_RAIL_SUSPENSION_CONCRETE :สะพานแขวนแบบคอนกรีตเสริมเหล็กสำหรับรถไฟ +STR_LAI_BRIDGE_DESCRIPTION_RAIL_WOODEN :สะพานแบบไม้สำหรับรถไฟ +STR_LAI_BRIDGE_DESCRIPTION_RAIL_CONCRETE :สะพานแบบคอนกรีตสำหรับรถไฟ +STR_LAI_BRIDGE_DESCRIPTION_RAIL_TUBULAR_STEEL :สะพานแบบท่อสำหรับรถไฟ + +STR_LAI_BRIDGE_DESCRIPTION_ROAD_SUSPENSION_STEEL :สะพานแขวนแบบเหล็กสำหรับรถยนต์ +STR_LAI_BRIDGE_DESCRIPTION_ROAD_GIRDER_STEEL :สะพานนั่งร้านแบบเหล็กสำหรับรถยนต์ +STR_LAI_BRIDGE_DESCRIPTION_ROAD_CANTILEVER_STEEL :สะพานคานแบบเหล็กกล้าสำหรับรถยนต์ +STR_LAI_BRIDGE_DESCRIPTION_ROAD_SUSPENSION_CONCRETE :สะพานแขวนแบบคอนกรีตเสริมเหล็กสำหรับรถยนต์ +STR_LAI_BRIDGE_DESCRIPTION_ROAD_WOODEN :สะพานเแบบไม้สำหรับรถยนต์ +STR_LAI_BRIDGE_DESCRIPTION_ROAD_CONCRETE :สะพานแบบคอนกรีตสำหรับรถยนต์ +STR_LAI_BRIDGE_DESCRIPTION_ROAD_TUBULAR_STEEL :สะพานแบบท่อสำหรับรถยนต์ + +STR_LAI_BRIDGE_DESCRIPTION_AQUEDUCT :ทางระบายน้ำ + +STR_LAI_OBJECT_DESCRIPTION_TRANSMITTER :เครื่องส่งสัญญาณ +STR_LAI_OBJECT_DESCRIPTION_LIGHTHOUSE :ประภาคาร +STR_LAI_OBJECT_DESCRIPTION_COMPANY_HEADQUARTERS :สำนักงานใหญ่บริษัท +STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :บริษัทเจ้าของพื้นที่ + +# About OpenTTD window +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-2014 ของ The OpenTTD team + +# Save/load game/scenario +STR_SAVELOAD_SAVE_CAPTION :{WHITE}บันทึกเกม +STR_SAVELOAD_LOAD_CAPTION :{WHITE}โหลดเกม +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_BYTES_FREE :{BLACK}{BYTES} ฟรี +STR_SAVELOAD_LIST_TOOLTIP :{BLACK}แสดงไดรฟ์, โฟลเดอร์, และไฟล์เซฟ +STR_SAVELOAD_EDITBOX_TOOLTIP :{BLACK}ชื่อที่กำลังถูกเลือกสำหรับเซฟเกม +STR_SAVELOAD_DELETE_BUTTON :{BLACK}ลบ +STR_SAVELOAD_DELETE_TOOLTIP :{BLACK}ลบเซฟเกมสำหรับชื่อที่เลือก +STR_SAVELOAD_SAVE_BUTTON :{BLACK}บันทึก +STR_SAVELOAD_SAVE_TOOLTIP :{BLACK}บันทึกเกมปัจจุบัน กรุณาเลือกชื่อที่ต้องการ +STR_SAVELOAD_LOAD_BUTTON :{BLACK}โหลด +STR_SAVELOAD_LOAD_TOOLTIP :{BLACK}โหลดเกมที่เลือก +STR_SAVELOAD_DETAIL_CAPTION :{BLACK}รายละเอียดเกม +STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}ไม่พบข้อมูล +STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING} +STR_SAVELOAD_DETAIL_GRFSTATUS :{SILVER}NewGRF: {WHITE}{STRING} + +STR_SAVELOAD_OSKTITLE :{BLACK}ป้อนชื่อเพื่อบันทึกเกม + +# World generation +STR_MAPGEN_WORLD_GENERATION_CAPTION :{WHITE}สร้างโลก +STR_MAPGEN_MAPSIZE :{BLACK}ขนาดแผนที่: +STR_MAPGEN_MAPSIZE_TOOLTIP :{BLACK}เลือกขนาดของแผนที่(ตาราง) จำนวนของตารางที่สามารถมองเห็นจะมีจำนวนน้อยกว่าเล็กน้อย +STR_MAPGEN_BY :{BLACK}* +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_LAND_GENERATOR :{BLACK}เครื่องมือสร้างสภาพพื้นดิน: +STR_MAPGEN_TREE_PLACER :{BLACK}Tอัลกอริธึมต้นไม้: +STR_MAPGEN_TERRAIN_TYPE :{BLACK}ประเภทภูมิประเทศ: +STR_MAPGEN_QUANTITY_OF_SEA_LAKES :{BLACK}ระดับทะเล: +STR_MAPGEN_QUANTITY_OF_RIVERS :{BLACK}แม่น้ำ: +STR_MAPGEN_SMOOTHNESS :{BLACK}ความเรียบ: +STR_MAPGEN_VARIETY :{BLACK}การกระจายความแตกต่าง: +STR_MAPGEN_GENERATE :{WHITE}สร้างสภาพภูมิประเทศ + +# Strings for map borders at game generation +STR_MAPGEN_BORDER_TYPE :{BLACK}ขอบแผนที่: +STR_MAPGEN_NORTHWEST :{BLACK}ตะวันตกเฉียงเหนือ +STR_MAPGEN_NORTHEAST :{BLACK}ตะวันออกเฉียงเหนือ +STR_MAPGEN_SOUTHEAST :{BLACK}ตะวันออกเฉียงใต้ +STR_MAPGEN_SOUTHWEST :{BLACK}ตะวันตกเฉียงใต้ +STR_MAPGEN_BORDER_FREEFORM :{BLACK}ไม่ยึดติดรูปแบบ +STR_MAPGEN_BORDER_WATER :{BLACK}น้ำ +STR_MAPGEN_BORDER_RANDOM :{BLACK}สุ่ม +STR_MAPGEN_BORDER_RANDOMIZE :{BLACK}สุ่ม +STR_MAPGEN_BORDER_MANUAL :{BLACK}ปรับแต่งเอง + +STR_MAPGEN_HEIGHTMAP_ROTATION :{BLACK}การหมุุนของแผนที่แบบ Heightmap: +STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}ชื่อของแผนที่ Heightmap: +STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}ขนาด: +STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM} + +STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}ปรับเปลี่ยนความสูงของระดับหิมะ +STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}เปลี่ยนปีที่เริ่มต้นเกม + +# SE Map generation +STR_SE_MAPGEN_CAPTION :{WHITE}ประเภทของแผ่นที่เรื่องราว +STR_SE_MAPGEN_FLAT_WORLD :{WHITE}ที่ราบ +STR_SE_MAPGEN_FLAT_WORLD_TOOLTIP :{BLACK}สร้างที่ราบ +STR_SE_MAPGEN_RANDOM_LAND :{WHITE}สุ่มพื้นดิน +STR_SE_MAPGEN_FLAT_WORLD_HEIGHT :{BLACK}ระดับความสูงของพื้นราบ: +STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_DOWN :{BLACK}ปรับเปลี่ยนความสูงพื้นราบลงมา 1 ระดับ +STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_UP :{BLACK}ปรับเปลี่ยนความสูงพื้นราบขึ้นไป 1 ระดับ + +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_MESSAGE :{YELLOW}คุณแน่ใจหรือไม่ที่จะยกเลิกการสร้าง? +STR_GENERATION_PROGRESS :{WHITE}{NUM}% เสร็จสิ้น +STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / {NUM} +STR_GENERATION_WORLD_GENERATION :{BLACK}เครื่องมือสร้างแผนที่ +STR_GENERATION_RIVER_GENERATION :{BLACK}สร้างแม่น้ำ +STR_GENERATION_TREE_GENERATION :{BLACK}สร้างต้นไม่ +STR_GENERATION_OBJECT_GENERATION :{BLACK}สร้างวัตถุ +STR_GENERATION_CLEARING_TILES :{BLACK}สร้างพื้นหิน +STR_GENERATION_SETTINGUP_GAME :{BLACK}ตั้งค่าให้กับเกม +STR_GENERATION_PREPARING_TILELOOP :{BLACK}Running tile-loop +STR_GENERATION_PREPARING_SCRIPT :{BLACK}Running script +STR_GENERATION_PREPARING_GAME :{BLACK}กำลังเตรียมพร้อมสำหรับเกม + +# NewGRF settings +STR_NEWGRF_SETTINGS_CAPTION :{WHITE}กำหนดค่า NewGRF +STR_NEWGRF_SETTINGS_INFO_TITLE :{WHITE}รายบะเอียดเกี่ยวกับข้อมูลของ NewGRF +STR_NEWGRF_SETTINGS_ACTIVE_LIST :{WHITE}ใช้งาน NewGRF +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_SAVE_QUERY :{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}สแกนไฟล์ใหม่อีกครั้ง +STR_NEWGRF_SETTINGS_RESCAN_FILES_TOOLTIP :{BLACK}อัพเดตรายการของ NewGRF ที่มีอยู่ +STR_NEWGRF_SETTINGS_REMOVE :{BLACK}ลบทิ้ง +STR_NEWGRF_SETTINGS_REMOVE_TOOLTIP :{BLACK}ลบ NewGRF ที่เลือกไว้ในรายการ +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_FILE_TOOLTIP :{BLACK}รายการของ NewGRF ที่มีการติดตั้งในปัจจุบัน + +STR_NEWGRF_SETTINGS_SET_PARAMETERS :{BLACK}ตั้งค่า parameters +STR_NEWGRF_SETTINGS_SHOW_PARAMETERS :{BLACK}แสดง parameters +STR_NEWGRF_SETTINGS_TOGGLE_PALETTE :{BLACK}สลับ palette +STR_NEWGRF_SETTINGS_TOGGLE_PALETTE_TOOLTIP :{BLACK}สลับ palette ของ NewGRF ที่เลือก{} ปรับเปลี่ยนหาก NewGRF แสดงผลเป็นสีชมพูในเกม +STR_NEWGRF_SETTINGS_APPLY_CHANGES :{BLACK}ยืนยันการเปลี่ยนแปลง + +STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_BUTTON :{BLACK}ค้นหาข้อมูลที่สูญหาย +STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_TOOLTIP :{BLACK}ตรวจสอบเมื่อมีข้อมูลบางส่วนสูญหายผ่าน internet + +STR_NEWGRF_SETTINGS_FILENAME :{BLACK}ชื่อไฟล์: {SILVER}{STRING} +STR_NEWGRF_SETTINGS_GRF_ID :{BLACK}GRF ID: {SILVER}{STRING} +STR_NEWGRF_SETTINGS_VERSION :{BLACK}Version: {SILVER}{NUM} +STR_NEWGRF_SETTINGS_MIN_VERSION :{BLACK}เวอร์ชันต่ำสุดที่รองรับ: {SILVER}{NUM} +STR_NEWGRF_SETTINGS_MD5SUM :{BLACK}MD5sum: {SILVER}{STRING} +STR_NEWGRF_SETTINGS_PALETTE :{BLACK}Palette: {SILVER}{STRING} +STR_NEWGRF_SETTINGS_PARAMETER :{BLACK}Parameters: {SILVER}{STRING} + +STR_NEWGRF_SETTINGS_NO_INFO :{BLACK}ไม่มีข้อมูลรายละเอียดที่จะแสดง +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}ปิด +STR_NEWGRF_PARAMETERS_RESET :{BLACK}ตั้งค่าใหม่ +STR_NEWGRF_PARAMETERS_RESET_TOOLTIP :{BLACK}ตั้งค่าพารามิเตอร์ทุกตัวให้เป็นแบบค่าดั้งเดิม +STR_NEWGRF_PARAMETERS_DEFAULT_NAME :Parameter {NUM} +STR_NEWGRF_PARAMETERS_SETTING :{STRING}: {ORANGE}{STRING} +STR_NEWGRF_PARAMETERS_NUM_PARAM :{LTBLUE}จำนวนพารามิเตอร์: {ORANGE}{NUM} + +# NewGRF inspect window +STR_NEWGRF_INSPECT_CAPTION :{WHITE}Inspect - {STRING} +STR_NEWGRF_INSPECT_PARENT_BUTTON :{BLACK}Parent +STR_NEWGRF_INSPECT_PARENT_TOOLTIP :{BLACK}ตรวจสอบชิ้นส่วนของ parent scope + +STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT :{STRING} ที่ตำแหน่ง {HEX} +STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_OBJECT :วัตถุ +STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :ประเภทของทางรถไฟ + +STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGRF ตัวแปร 60+x parameter (hexadecimal) + +# Sprite aligner window +STR_SPRITE_ALIGNER_CAPTION :{WHITE}Aligning sprite {COMMA} ({STRING}) +STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}sprite ถัดไป +STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}เคลื่อนไปยัง sprite ปกติอันถัดไป โดยข้าม pseudo/recolour/font และวกกลับเมื่อถึงจุดสิ้นสุด +STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}ไปยัง sprite +STR_SPRITE_ALIGNER_GOTO_TOOLTIP :{BLACK}ไปยัง sprite ที่เลือก ถ้าไม่ใช่ sprite ปกติ จะทำการข้ามไปยัง sprite ถัดไป +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 จากที่ใดก็ตามในหน้าจอ + +STR_SPRITE_ALIGNER_GOTO_CAPTION :{WHITE}ไปยัง sprite + +# NewGRF (self) generated warnings/errors +STR_NEWGRF_ERROR_MSG_INFO :{SILVER}{STRING} +STR_NEWGRF_ERROR_MSG_WARNING :{RED}อันตราย: {SILVER}{STRING} +STR_NEWGRF_ERROR_MSG_ERROR :{RED}Error: {SILVER}{STRING} +STR_NEWGRF_ERROR_MSG_FATAL :{RED}ร้ายแรง: {SILVER}{STRING} +STR_NEWGRF_ERROR_FATAL_POPUP :{WHITE}เกิดความผิดพลาดร้ายแรงเกี่ยวกับ NewGRF: {}{STRING} +STR_NEWGRF_ERROR_VERSION_NUMBER :{1:STRING}ไม่สามารถทำงานได้บน TTDPatchเวอร์ชั่นนี่ รายงานโดย OpenTTD +STR_NEWGRF_ERROR_DOS_OR_WINDOWS :{1:STRING} สำหรับ {STRING} version of TTD +STR_NEWGRF_ERROR_UNSET_SWITCH :{1:STRING} ออกแบบมาสำหรับใช้งานกับ {STRING} +STR_NEWGRF_ERROR_INVALID_PARAMETER :parameter ไม่ถูกต้องสำหรับ {1:STRING}: parameter {STRING} ({NUM}) +STR_NEWGRF_ERROR_LOAD_BEFORE :{1:STRING} ต้องโหลดก่อน {STRING} +STR_NEWGRF_ERROR_LOAD_AFTER :{1:STRING} ต้องโหลดหลัง {STRING} +STR_NEWGRF_ERROR_OTTD_VERSION_NUMBER :{1:STRING} ต้องการ OpenTTD version {STRING} หรือสูงกว่า +STR_NEWGRF_ERROR_AFTER_TRANSLATED_FILE :GRF ไฟล์ถูกออกแบบมาเพื่อการแปล +STR_NEWGRF_ERROR_TOO_MANY_NEWGRFS_LOADED :มีการเปิดใช้งาน NewGRFs มากเกินไป +STR_NEWGRF_ERROR_STATIC_GRF_CAUSES_DESYNC :กำลังทำการโหลด {1:STRING} สำหรับเป็น NewGRF โดย {STRING} could cause desyncs +STR_NEWGRF_ERROR_UNEXPECTED_SPRITE :ไม่สามารถคาดการณ์ sprite (sprite {3:NUM}) +STR_NEWGRF_ERROR_UNKNOWN_PROPERTY :Unknown Action 0 property {4:HEX} (sprite {3:NUM}) +STR_NEWGRF_ERROR_INVALID_ID :Attempt to use invalid ID (sprite {3:NUM}) +STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} บรรจุ sprites ที่สูญหาย. สิ่งที่สูญหายจะแสดงเป็นเครื่องหมายตกใจสีแดง (?) +STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Contains multiple Action 8 entries (sprite {3:NUM}) +STR_NEWGRF_ERROR_READ_BOUNDS :Read past end of pseudo-sprite (sprite {3:NUM}) +STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}กราฟิกพื้นฐานที่ใช้อยู่มี Sprite ไม่สมบูรณ์{}กรุณาปรับรุ่นของ Base Graphic +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} +STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :ไม่ถูกต้อง/ไม่ทราบ รูปแบบ sprite (sprite {3:NUM}) + +# NewGRF related 'general' warnings +STR_NEWGRF_POPUP_CAUTION_CAPTION :{WHITE}คำเตือน! +STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}คุณต้องการที่จะปรับเปลี่ยนในเกมที่กำลังทำงานอยู่. การกระทำนี้สามารถทำให้เกมเสียหาย หรือหยุดการทำงานของเกม หากพบปัญหา ไม่ต้องทำการแจ้งบั๊กเข้ามาเกี่ยวกับประเด็นนี้ {} คุณยังต้องการดำเนินการต่อหรือไม่? + +STR_NEWGRF_DUPLICATE_GRFID :{WHITE}ไม่สามารถเพิ่มเข้าไปได้: GRF ID ซ้ำกัน +STR_NEWGRF_COMPATIBLE_LOADED :{ORANGE}หาไฟล์ที่เข้ากันได้ไม่ครบ (compatible GRF loaded) +STR_NEWGRF_TOO_MANY_NEWGRFS :{WHITE}ไม่สามารถเพิ่ม NewGRF เนื่องจากมี NewGRF มากเกินไป + +STR_NEWGRF_COMPATIBLE_LOAD_WARNING :{WHITE}GRF(s) ที่ทำงานร่วมกันได้ ถูกโหลดมาสำหรับไฟล์ที่สูญหาย +STR_NEWGRF_DISABLED_WARNING :{WHITE}GRF file(s)ที่สูญหาย ถูกปิดการใช้งาน +STR_NEWGRF_UNPAUSE_WARNING_TITLE :{YELLOW} GRF file(s) สูญหาย +STR_NEWGRF_UNPAUSE_WARNING :{WHITE}การยกเลิกการหยุดเกมอาจจะทำให้เกมเสีย. ไม่ต้องทำการแจ้งปัญหานี้มา.{}คุณยังต้องการกระทำการต่อหรือไม่? + +# NewGRF status +STR_NEWGRF_LIST_NONE :ไม่มี +STR_NEWGRF_LIST_ALL_FOUND :แสดงครบทุกไฟล์ +STR_NEWGRF_LIST_COMPATIBLE :{YELLOW}ค้นพบ compatible files +STR_NEWGRF_LIST_MISSING :{RED}ไฟล์สูญหาย + +# NewGRF 'it's broken' warnings +STR_NEWGRF_BROKEN :{WHITE}พฤติกรรม NewGRF '{0:STRING}' มีลักษะเหมือนจะมีปัญหา +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}เปลี่ยนความยาวของยานพาหนะ '{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}' caused an endless loop in the production callback +STR_NEWGRF_BUGGY_UNKNOWN_CALLBACK_RESULT :{WHITE}Callback {1:HEX} returned unknown/invalid result {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}ตรวจสอบ NewGRFs +STR_NEWGRF_SCAN_MESSAGE :{BLACK}ตรวจสอบ NewGRFs. ขึ้นอยู่กับจำนวนที่มี อาจใช้เวลาสักครู่... +STR_NEWGRF_SCAN_STATUS :{BLACK}{NUM} NewGRF ค้นหาเสร็จสิ้น อยู่นอกเหนือการประเมิน {NUM} NewGRF +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}แสดงข้อมูลที่ตรงกันเมื่อเปรียบเทียบกับชื่อที่กรองไว้ + +# Sign window +STR_EDIT_SIGN_CAPTION :{WHITE}แก้ไขข้อความของป้าย +STR_EDIT_SIGN_NEXT_SIGN_TOOLTIP :{BLACK}ไปยังป้ายถัดไป +STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK}ไปยังป้ายก่อนหน้า + +STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}กรอกชื่อสำหรับป้าย + +# Town directory window +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_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_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} required +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} (still required) +STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{GREEN} (delivered) +STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}เมืองขยายตัวทุกๆ {ORANGE}{COMMA}{BLACK} วัน +STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}เมืองเติบโตทุกๆ {ORANGE}{COMMA}{BLACK} วัน (funded) +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}กดเมื่อไปยังมุมมองใจกลางเมือง +STR_TOWN_VIEW_LOCAL_AUTHORITY_BUTTON :{BLACK}เจ้าหน้าที่ท้องถิ่น +STR_TOWN_VIEW_LOCAL_AUTHORITY_TOOLTIP :{BLACK}ดูข้อมูลเกี่ยวกับเจ้าหน้าที่ในท้องถิ่น +STR_TOWN_VIEW_RENAME_TOOLTIP :{BLACK}เปลี่ยนชื่อเมือง + +STR_TOWN_VIEW_EXPAND_BUTTON :{BLACK}ขยาย +STR_TOWN_VIEW_EXPAND_TOOLTIP :{BLACK}ขยายขนาดของเมือง +STR_TOWN_VIEW_DELETE_BUTTON :{BLACK}ลบ +STR_TOWN_VIEW_DELETE_TOOLTIP :{BLACK}ลบเมืองเรียบร้อยแล้ว + +STR_TOWN_VIEW_RENAME_TOWN_BUTTON :เปลี่ยนชื่อเมือง + +# Town local authority window +STR_LOCAL_AUTHORITY_CAPTION :{WHITE}เจ้าหน้าที่ท้องถิ่นของ {TOWN} +STR_LOCAL_AUTHORITY_COMPANY_RATINGS :{BLACK}ความพึงพอใจต่อบริษัท: +STR_LOCAL_AUTHORITY_COMPANY_RATING :{YELLOW}{COMPANY} {COMPANY_NUM}: {ORANGE}{STRING} +STR_LOCAL_AUTHORITY_ACTIONS_TITLE :{BLACK}การกระทำที่สามารถทำได้: +STR_LOCAL_AUTHORITY_ACTIONS_TOOLTIP :{BLACK}รายการสิ่งที่สามารถทำได้กับเมืองนี้ - กดเพื่อดูรายละเอียดเพิ่มเติม +STR_LOCAL_AUTHORITY_DO_IT_BUTTON :{BLACK}ดำเนินการ +STR_LOCAL_AUTHORITY_DO_IT_TOOLTIP :{BLACK}กระทำตามที่เลือกไว้ในรายการด้านบน + +STR_LOCAL_AUTHORITY_ACTION_SMALL_ADVERTISING_CAMPAIGN :โฆษณาโดยใช้สื่อสิ่งพิมพ์ +STR_LOCAL_AUTHORITY_ACTION_MEDIUM_ADVERTISING_CAMPAIGN :โฆษณาโดยใช้สื่อกระจายเสียง +STR_LOCAL_AUTHORITY_ACTION_LARGE_ADVERTISING_CAMPAIGN :โฆษณาโดยใช้สื่อโทรทัศน์และอินเตอร์เนต +STR_LOCAL_AUTHORITY_ACTION_ROAD_RECONSTRUCTION :ให้เงินสนับสนุนแก่เมืองเพื่อปรับปรุงถนนใหม่ +STR_LOCAL_AUTHORITY_ACTION_STATUE_OF_COMPANY :จ่ายเงินเพื่อสร้างอนุเสาวรีย์ของบริษัท +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_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} + +# 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}คลิ๊กเลือกที่เป้าหมายเพื่อพาไปยังจุดเริ่มต้นที่จะทำตามเป้าหมาย + +# Goal question window +STR_GOAL_QUESTION_CAPTION_QUESTION :คำถาม +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 :ยกเลิก +STR_GOAL_QUESTION_BUTTON_OK :OK +STR_GOAL_QUESTION_BUTTON_NO :ไม่ +STR_GOAL_QUESTION_BUTTON_YES :ใช่ +STR_GOAL_QUESTION_BUTTON_DECLINE :ไม่ต้องการ +STR_GOAL_QUESTION_BUTTON_ACCEPT :ต้องการ +STR_GOAL_QUESTION_BUTTON_IGNORE :ไม่สนใจ +STR_GOAL_QUESTION_BUTTON_RETRY :ลองใหม่ +STR_GOAL_QUESTION_BUTTON_PREVIOUS :ก่อนหน้านี้ +STR_GOAL_QUESTION_BUTTON_NEXT :ถัดไป +STR_GOAL_QUESTION_BUTTON_STOP :หยุด +STR_GOAL_QUESTION_BUTTON_START :เริ่ม +STR_GOAL_QUESTION_BUTTON_GO :ไป +STR_GOAL_QUESTION_BUTTON_CONTINUE :ทำต่อ +STR_GOAL_QUESTION_BUTTON_RESTART :เริ่มใหม่ +STR_GOAL_QUESTION_BUTTON_POSTPONE :เลื่อนออกไป +STR_GOAL_QUESTION_BUTTON_SURRENDER :ยอมจำนน +STR_GOAL_QUESTION_BUTTON_CLOSE :ปิด + +# Subsidies window +STR_SUBSIDIES_CAPTION :{WHITE}เงินอุดหนุน +STR_SUBSIDIES_OFFERED_TITLE :{BLACK}โครงการที่จะได้รับเงินทุนสนับสนุน: +STR_SUBSIDIES_OFFERED_FROM_TO :{ORANGE}{STRING} จาก {STRING} ถึง {STRING}{YELLOW} (ก่อน {DATE_SHORT}) +STR_SUBSIDIES_NONE :{ORANGE}- ไม่มี - +STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}โครงการที่ได้เงินสนับสนุนเรียบร้อยแล้ว: +STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING} จาก {STRING} ถึง {STRING}{YELLOW} ({COMPANY}{YELLOW}, จนกว่าจะถึง {DATE_SHORT}) +STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}กดที่บริการเพื่อไปยังจุดกึ่งกลางของจุดเริ่มต้น + +# 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}เลือกข้ามไปยังหน้าที่เลือกโดยการเลือกที่กล่องข้อความ drop down +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_USE_CTRL_TO_SELECT_MORE :{BLACK}กด Crtl เพื่อเลือกมากกว่า 1 รายการ +STR_STATION_LIST_CAPTION :{WHITE}{COMPANY} - {COMMA} สถานี +STR_STATION_LIST_STATION :{YELLOW}{STATION} {STATION_FEATURES} +STR_STATION_LIST_WAYPOINT :{YELLOW}{WAYPOINT} +STR_STATION_LIST_NONE :{YELLOW}- ไม่มี - +STR_STATION_LIST_SELECT_ALL_FACILITIES :{BLACK}เลือกทั้งหมด +STR_STATION_LIST_SELECT_ALL_TYPES :{BLACK}เลือกประเภทสินค้าทั้งหมด (รวมถึงสินค้าที่ไม่ได้รอการส่ง) +STR_STATION_LIST_NO_WAITING_CARGO :{BLACK}ไม่มีสินค้ารออยู่เลย + +# 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} จาก {STATION}) +STR_STATION_VIEW_RESERVED :{YELLOW}({CARGO_SHORT} สำรองไว้สำหรับการขนถ่าย) + +STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}ปิดหน้าต่างความนิยม +STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}ปิดหน้าต่างความนิยมลงและแสดงเฉพาะรายการสินค้าที่สถานีรองรับและรอการขนส่ง +STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}กำลังต้องการ: {WHITE}{CARGO_LIST} + +STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}สถานนีนี้มีสัมปทานขนส่งจากเมืองนี้ +STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} ซื้อสัมปทานขนส่งที่เมืองนี้ + +STR_STATION_VIEW_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 :แย่ที่สุด +STR_CARGO_RATING_VERY_POOR :แย่มาก +STR_CARGO_RATING_POOR :แย่ +STR_CARGO_RATING_MEDIOCRE :ปานกลาง +STR_CARGO_RATING_GOOD :ดี +STR_CARGO_RATING_VERY_GOOD :ดีมาก +STR_CARGO_RATING_EXCELLENT :ยอดเยี่ยม +STR_CARGO_RATING_OUTSTANDING :เกินความคาดหมาย +############ range for rating ends + +STR_STATION_VIEW_CENTER_TOOLTIP :{BLACK}จุดศูนย์กลางมุมมองสถานี +STR_STATION_VIEW_RENAME_TOOLTIP :{BLACK}เปลี่ยนชื่อสถานี + +STR_STATION_VIEW_SCHEDULED_TRAINS_TOOLTIP :{BLACK}แสดงขบวนรถไฟที่มีรายการเข้าจอดที่สถานีนี้ +STR_STATION_VIEW_SCHEDULED_ROAD_VEHICLES_TOOLTIP :แสดงยานพาหนะทางบกที่มีรายการเข้าจอดที่สถานีนี้ +STR_STATION_VIEW_SCHEDULED_AIRCRAFT_TOOLTIP :แสดงอากาศยานที่มีรายการลงจอดจอดที่สถานีนี้ +STR_STATION_VIEW_SCHEDULED_SHIPS_TOOLTIP :แสดงเรือที่มีรายการเข้าเทียบท่าที่ท่านี้ + +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}จุดศูนย์กลางมุมมองสถานี +STR_WAYPOINT_VIEW_CHANGE_WAYPOINT_NAME :{BLACK}เปลี่ยนชื่อ Waypoint +STR_BUOY_VIEW_CENTER_TOOLTIP :{BLACK}จุดศูนย์กลางมุมมองสถานี +STR_BUOY_VIEW_CHANGE_BUOY_NAME :{BLACK}เปลี่ยนชื่อทุ่มลอยน้ำ + +STR_EDIT_WAYPOINT_NAME :{WHITE}เปลี่ยนชื่อ Waypoint + +# Finances window +STR_FINANCES_CAPTION :{WHITE} สภาวะการเงินของ {COMPANY}{BLACK}{COMPANY_NUM} +STR_FINANCES_EXPENDITURE_INCOME_TITLE :{WHITE}รายจ่าย/รายรับ +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_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_AIRCRAFT_INCOME :{GOLD}รายได้จากการให้บริการขนส่งทางอากาศ +STR_FINANCES_SECTION_SHIP_INCOME :{GOLD}รายได้จากการให้บริการขนส่งทางน้ำ +STR_FINANCES_SECTION_LOAN_INTEREST :{GOLD}ดอกเบี้ยเงินกู้ +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_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}เพิ่มปริมาณเงินกู้ +STR_FINANCES_REPAY_BUTTON :{BLACK}ใช้คืน {CURRENCY_LONG} +STR_FINANCES_REPAY_TOOLTIP :{BLACK}ใช้คืนเงินกู้ที่กู้มา +STR_FINANCES_INFRASTRUCTURE_BUTTON :{BLACK}โครงสร้างพื้นฐาน + +# Company view +STR_COMPANY_VIEW_CAPTION :{WHITE}{COMPANY} {BLACK}{COMPANY_NUM} +STR_COMPANY_VIEW_PRESIDENT_MANAGER_TITLE :{WHITE}{PRESIDENT_NAME}{}{GOLD}(ประธานบริษัท) + +STR_COMPANY_VIEW_INAUGURATED_TITLE :{GOLD}ก่อตั้งอย่างเป็นทางการเมื่อ: {WHITE}{NUM} +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_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_ROAD :{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}ไม่มี + +STR_COMPANY_VIEW_BUILD_HQ_BUTTON :{BLACK}สร้างที่ทำการบริษัท +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}ย้ายที่ตั้งที่ทำการบริษัท +STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}รายละเอียด +STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}ดูรายละเอียดเกี่ยวกับโครงสร้างพื้นฐาน + +STR_COMPANY_VIEW_NEW_FACE_BUTTON :{BLACK}เลือกใบหน้าใหม่ +STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}เลือกใบหน้าใหม่ของผู้ประธานบริษัท +STR_COMPANY_VIEW_COLOUR_SCHEME_BUTTON :{BLACK}เลือกสี +STR_COMPANY_VIEW_COLOUR_SCHEME_TOOLTIP :{BLACK}เปลี่ยนสีของยานพาหนะบริษัท +STR_COMPANY_VIEW_COMPANY_NAME_BUTTON :{BLACK}ชื่อบริษัท +STR_COMPANY_VIEW_COMPANY_NAME_TOOLTIP :{BLACK}เปลี่ยนชื่อบริษัท +STR_COMPANY_VIEW_PRESIDENT_NAME_BUTTON :{BLACK}ชื่อประธานบริษัท +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_COMPANY_NAME_QUERY_CAPTION :ชื่อบริษัท +STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :ชื่อประธานบริษัท + +STR_BUY_COMPANY_MESSAGE :{WHITE}เรากำลังมองหาบริษัทขนส่งอื่นๆที่จะเข้ามากู้วิกฤตบริษัทเรา และซื้อกิจการเราไป.{}{}คุณต้องการจะซื้อกิจการของเราหรือไม่ ? {COMPANY} for {CURRENCY_LONG}? + +# Company infrastructure window +STR_COMPANY_INFRASTRUCTURE_VIEW_CAPTION :{WHITE}โครงสร้างพื้นฐานของ {COMPANY} +STR_COMPANY_INFRASTRUCTURE_VIEW_RAIL_SECT :{GOLD}ชิ้นส่วนทางรถไฟ: +STR_COMPANY_INFRASTRUCTURE_VIEW_SIGNALS :{WHITE}เสาอาณัติสัญญาณ +STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD_SECT :{GOLD}ชิ้นส่วนถนน: +STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD :{WHITE}ถนน +STR_COMPANY_INFRASTRUCTURE_VIEW_TRAMWAY :{WHITE}ทางรถราง +STR_COMPANY_INFRASTRUCTURE_VIEW_WATER_SECT :{GOLD}คลอง: +STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS :{WHITE}คลอง +STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}สถานี: +STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}ชิ้นส่วนสถานี +STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}ท่าอากาศยาน +STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL :{WHITE}{CURRENCY_LONG}/ปี + +# Industry directory +STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}อุตสาหกรรม +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}ชื่อของอุตสาหกรรม - คลิ๊กที่ชื่อเพื่อไปยังจุดศูนย์กลาง + +# 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}กดเมื่อไปยังมุมมองจุดศูนย์กลางของอุตสาหกรรม +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} +STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}มีความต้องการ: {YELLOW}{STRING}{STRING}, {STRING}{STRING} +STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}มีความต้องการ: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING} +############ range for requires ends + +############ range for produces starts +STR_INDUSTRY_VIEW_WAITING_FOR_PROCESSING :{BLACK}พัสดุและสิ่งของที่รอการผลิต: +STR_INDUSTRY_VIEW_WAITING_STOCKPILE_CARGO :{YELLOW}{CARGO_LONG}{STRING}{BLACK} +STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}ผลผลิต: {YELLOW}{STRING}{STRING} +STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}ผลผลิต: {YELLOW}{STRING}{STRING}, {STRING}{STRING} +############ range for produces ends + +STR_CONFIG_GAME_PRODUCTION :{WHITE}ปรับเปลี่ยนปริมาณผลผลิต (ระหว่าง 8 ถึง 2040) +STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}เปลี่ยนระดับการผลิต (เปอร์เซ็นต์เพิ่มมากสุดถึง 800%) + +# Vehicle lists +STR_VEHICLE_LIST_TRAIN_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_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_SHIPS :ยานพาหานะทางน้ำที่สามารถซื้อได้ +STR_VEHICLE_LIST_AVAILABLE_AIRCRAFT :อากาศยานที่สามารถซื้อได้ +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_TRAIN_TO_DEPOT :ส่งไปจอดในโรงซ่อมบำรุง +STR_VEHICLE_LIST_SEND_ROAD_VEHICLE_TO_DEPOT :ส่งเข้าโรงซ่อมบำรุงรถ +STR_VEHICLE_LIST_SEND_SHIP_TO_DEPOT :ส่งเข้าอู่ต่อเรือ +STR_VEHICLE_LIST_SEND_AIRCRAFT_TO_HANGAR :ส่งเข้าโรงเก็บเครื่องบิน + +STR_VEHICLE_LIST_MASS_STOP_LIST_TOOLTIP :{BLACK}กดเพื่อหยุดยานพาหนะทั้งหมดในรายการ +STR_VEHICLE_LIST_MASS_START_LIST_TOOLTIP :{BLACK}กดเพื่อเริมต้นให้ยานพาหนะทั้งหมดในรายการทำงานตามปกติ + +STR_VEHICLE_LIST_SHARED_ORDERS_LIST_CAPTION :{WHITE}ยานพาหนะที่ใช้งานคำสั่งร่วมกัน{COMMA} + +# Group window +STR_GROUP_ALL_TRAINS :รถไฟทั้งหมด +STR_GROUP_ALL_ROAD_VEHICLES :ยานพาหนะทางบกทั้งหมด +STR_GROUP_ALL_SHIPS :ยานพาหนะทางน้ำทั้งหมด +STR_GROUP_ALL_AIRCRAFTS :อากาศยานทั้งหมด + +STR_GROUP_DEFAULT_TRAINS :พาหนะที่ไม่ได้จัดกลุ่ม +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_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 :ลบยานพาหนะทั้งหมด + +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_MAGLEV_CAPTION :Maglev (รถไฟพลังแม่เหล็ก) ใหม่ + +STR_BUY_VEHICLE_TRAIN_ALL_CAPTION :ประเถทไฟที่สามารถซื้อได้ +STR_BUY_VEHICLE_ROAD_VEHICLE_CAPTION :ประเถทรถที่สามารถซื้อได้ +STR_BUY_VEHICLE_SHIP_CAPTION :ประเถทเรือที่สามารถซื้อได้ +STR_BUY_VEHICLE_AIRCRAFT_CAPTION :ประเถทอากาศยานที่สามารถซื้อได้ + +STR_PURCHASE_INFO_COST_WEIGHT :{BLACK}มูลค่า: {GOLD}{CURRENCY_LONG}{BLACK} น้ำหนัก: {GOLD}{WEIGHT_SHORT} +STR_PURCHASE_INFO_SPEED_POWER :{BLACK}ความเร็ว: {GOLD}{VELOCITY}{BLACK} พลังขับเคลื่อน: {GOLD}{POWER} +STR_PURCHASE_INFO_SPEED :{BLACK}ความเร็ว: {GOLD}{VELOCITY} +STR_PURCHASE_INFO_SPEED_OCEAN :{BLACK}ความเร็วบนทะเล: {GOLD}{VELOCITY} +STR_PURCHASE_INFO_SPEED_CANAL :{BLACK}ความเร็วบนคลอง/แม่น้ำ: {GOLD}{VELOCITY} +STR_PURCHASE_INFO_RUNNINGCOST :{BLACK}ค่าปฏิบัติการ: {GOLD}{CURRENCY_LONG}/ปี +STR_PURCHASE_INFO_CAPACITY :{BLACK}ความจุ: {GOLD}{CARGO_LONG} {STRING} +STR_PURCHASE_INFO_REFITTABLE :(ดัดแปลงได้) +STR_PURCHASE_INFO_DESIGNED_LIFE :{BLACK}สร้างครั้งแรก: {GOLD}{NUM}{BLACK} อายุการใช้งาน: {GOLD}{COMMA} ปี +STR_PURCHASE_INFO_RELIABILITY :{BLACK}ประสิทธิภาพสูงสุด: {GOLD}{COMMA}% +STR_PURCHASE_INFO_COST :{BLACK}มูลค่า: {GOLD}{CURRENCY_LONG} +STR_PURCHASE_INFO_WEIGHT_CWEIGHT :{BLACK}น้ำหนัก: {GOLD}{WEIGHT_SHORT} ({WEIGHT_SHORT}) +STR_PURCHASE_INFO_COST_SPEED :{BLACK}มูลค่า: {GOLD}{CURRENCY_LONG}{BLACK} ความเร็ว: {GOLD}{VELOCITY} +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_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_BUY_VEHICLE_BUTTON :{BLACK}ซื้อเรือรถ +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}ซื้อรถไฟที่เลือกไว้ เมื่อกด 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}เปลี่ยนชื่อ +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_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}เปลี่ยนชื่อชนิดของเรือ +STR_QUERY_RENAME_AIRCRAFT_TYPE_CAPTION :{WHITE}เปลี่ยนชื่อชนิดของเครื่องบิน + +# Depot window +STR_DEPOT_CAPTION :{WHITE}{DEPOT} + +STR_DEPOT_RENAME_TOOLTIP :{BLACK}เปลี่ยนชื่อของโรงซ่อมบำรุง +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_CARGO :{}{CARGO_LONG} ({CARGO_SHORT}) + +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_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_AUTOREPLACE_TRAIN_TOOLTIP :{BLACK}แทนที่อัตโนมัติสำหรับรถไฟทั้งหมดในโรงซ่อมบำรุง +STR_DEPOT_AUTOREPLACE_ROAD_VEHICLE_TOOLTIP :แทนที่อัตโนมัติสำหรับยานพาหนะทางบกทั้งหมดในโรงซ่อมบำรุง +STR_DEPOT_AUTOREPLACE_SHIP_TOOLTIP :{BLACK}แทนที่อัตโนมัติสำหรับยานพาหนะทางน้ำทั้งหมดในอู่ +STR_DEPOT_AUTOREPLACE_AIRCRAFT_TOOLTIP :{BLACK}แทนที่อัตโนมัติสำหรับอากาศยานทั้งหมดในโรงซ่อมบำรุง + +STR_DEPOT_TRAIN_NEW_VEHICLES_BUTTON :{BLACK}ดูเพื่อซื้อรถไฟใหม่ +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_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}กดเพื่อซื้อแบบคัดลอกขบวนรถไฟทั้งขบวน +STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}กดเพื่อซื้อแบบคัดลอกยานพาหนะ +STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}กดเพื่อซื้อแบบคัดลอกยานพาหนะทางน้ำ +STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}กดเพื่อซื้อแบบคัดลอกอากาศยาน + +STR_DEPOT_TRAIN_LOCATION_TOOLTIP :{BLACK}กดเพื่อไปยังจุดศูนย์กลางของโรงซ่อมบำรุง +STR_DEPOT_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}กดเพื่อไปยังจุดศูนย์กลางของโรงซ่อมบำรุง +STR_DEPOT_SHIP_LOCATION_TOOLTIP :{BLACK}กดเพื่อไปยังจุดศูนย์กลางของโรงซ่อมบำรุง +STR_DEPOT_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}กดเพื่อไปยังจุดศูนย์กลางของโรงซ่อมบำรุง + +STR_DEPOT_VEHICLE_ORDER_LIST_TRAIN_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_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_SHIP_TOOLTIP :{BLACK}คลิ๊กให้เรือทุกลำที่อยู่ในโรงซ่อมบำรุงเริ่มต้นทำงาน +STR_DEPOT_MASS_START_HANGAR_TOOLTIP :{BLACK}คลิ๊กให้อากาศยานทุกลำที่อยู่ในโรงซ่อมบำรุงเริ่มต้นทำงาน + +STR_DEPOT_SELL_CONFIRMATION_TEXT :{YELLOW}คุณต้องการขายยานพาหนะทั้งหมด{}ที่อยู่ในโรงซ่อมบำรุง{}{}คุณแน่ใจหรือไม่? + +# Engine preview window +STR_ENGINE_PREVIEW_CAPTION :{WHITE}ข้อความจากผู้ผลิตยานพาหนะ +STR_ENGINE_PREVIEW_MESSAGE :{GOLD}เราได้ออกแบบ {STRING} ใหม่ - หากคุณต้องการที่จะนำไปทดลองใช้ เราจะให้คุณนำไปใช้งานก่อนที่จะนำออกไปจำหน่ายในตลาดปกติ {}คุณต้องการนำไปทดลองใช้หรือไม่ ? +STR_ENGINE_PREVIEW_RAILROAD_LOCOMOTIVE :หัวรถจักร +STR_ENGINE_PREVIEW_ROAD_VEHICLE :ยานพาหนะทางบก +STR_ENGINE_PREVIEW_AIRCRAFT :อากาศยาน +STR_ENGINE_PREVIEW_SHIP :ยานพาหนะทางน้ำ +STR_ENGINE_PREVIEW_MONORAIL_LOCOMOTIVE :รถไฟรางเดี่ยว +STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :รถไฟรางแม่เหล็กไฟฟ้า + +STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}มูลค่า: {CURRENCY_LONG} น้ำหนัก: {WEIGHT_SHORT}{}ความเร็ว: {VELOCITY}พลังขับเคลื่อน: {POWER}{}ค่าปฏิบัติการ: {CURRENCY_LONG}/ปี{}ความจุ: {CARGO_LONG} +STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}มูลค่า: {CURRENCY_LONG} น้ำหนัก: {WEIGHT_SHORT}{}ความเร็ว: {VELOCITY}พลังขับเคลื่อน: {POWER} กำัลังลากจูงสูงสุด: {6:FORCE}{}ค่าปฎิบัติการ: {4:CURRENCY_LONG}/ปี{}ความจุ: {5:CARGO_LONG} +STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST :{BLACK}มูลค่า: {CURRENCY_LONG} ความเร็วสูงสุด: {VELOCITY}{}ความจุ: {CARGO_LONG}, {CARGO_LONG}{}ค่าปฎิบัติการ: {CURRENCY_LONG}/ปี +STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK}มูลค่า: {CURRENCY_LONG} ความเร็วสูงสุด: {VELOCITY}{}ความจุ: {CARGO_LONG}{}ค่าปฏิบัติการ: {CURRENCY_LONG}/ปี +STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_CAPACITY_RUNCOST:{BLACK}มูลค่า: {CURRENCY_LONG} ความเร็วสูงสุด: {VELOCITY} พิสัย: {COMMA} ช่อง{}ความจุ: {CARGO_LONG}, {CARGO_LONG}{}ค่าปฏิบัติการ: {CURRENCY_LONG}/ปี +STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}มูลค่า: {CURRENCY_LONG} ความเร็วสูงสุด: {VELOCITY} พิสัย: {COMMA} tiles{}ความจุ: {CARGO_LONG}{}ค่าปฏิบัติการ: {CURRENCY_LONG}/ปี + +# Autoreplace window +STR_REPLACE_VEHICLES_WHITE :{WHITE}เปลี่ยน {STRING} - {STRING} +STR_REPLACE_VEHICLE_TRAIN :รถไฟ +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}เลือกประเภทของพาหนะที่จะแทนที่ทางซ้ายมือ + +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_VEHICLE_SELECTED :{BLACK}ไม่มียานพาหนะที่เลือกไว้ +STR_REPLACE_REPLACING_WHEN_OLD :{ENGINE} เมื่อเก่า +STR_REPLACE_VEHICLES_STOP :{BLACK}หยุดการแทนที่ยานพาหนะ +STR_REPLACE_HELP_STOP_BUTTON :{BLACK}กดเพื่อเริ่มหยุดการแทนที่ยานพาหนะตามที่เลือกไว้ในรายการ + +STR_REPLACE_ENGINE_WAGON_SELECT :{BLACK}กำลังแทนที่: {ORANGE}{STRING} +STR_REPLACE_ENGINE_WAGON_SELECT_HELP :{BLACK}สลับระหว่างหน้าต่างการแทนที่ของรถจักรและรถพ่วง +STR_REPLACE_ENGINES :รถจักร +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_MONORAIL_VEHICLES :ยานพาหนะประเภทรถไฟรางเดี่ยว +STR_REPLACE_MAGLEV_VEHICLES :รถไฟพลังงานแม่แหล็ก + +STR_REPLACE_REMOVE_WAGON :{BLACK}ขายรถพ่วง: {ORANGE}{STRING} +STR_REPLACE_REMOVE_WAGON_HELP :{BLACK}ทำให้การแทนที่ขบวนรถไฟทำให้ความยาวของขบวนยังเท่าเดิม + +# Vehicle view +STR_VEHICLE_VIEW_CAPTION :{WHITE}{VEHICLE} + +STR_VEHICLE_VIEW_TRAIN_LOCATION_TOOLTIP :{BLACK}กดเพื่อไปยังจุดศูนย์กลางของขบวนรถ +STR_VEHICLE_VIEW_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}กดเพื่อไปยังจุดศูนย์กลางของพาหนะ +STR_VEHICLE_VIEW_SHIP_LOCATION_TOOLTIP :{BLACK}กดเพื่อไปยังจุดศูนย์กลางของเรือ +STR_VEHICLE_VIEW_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}กดเพื่อไปยังจุดศูนย์กลางของอากาศยาน + +STR_VEHICLE_VIEW_TRAIN_SEND_TO_DEPOT_TOOLTIP :{BLACK}ส่งขบวนรถไปยังโรงซ่อมบำรุง +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}ส่งอากาศยานไปยังโรงซ่อมบำรุง + +STR_VEHICLE_VIEW_CLONE_TRAIN_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_TRAIN_IGNORE_SIGNAL_TOOLTIP :{BLACK}ให้อำนาจขบวนรถไม่ต้องรอเสาอาณัติสัญญาณต้นนี้ (ไม่สามารถใช้กับ Path Signal ได้) + +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_TRAIN_REVERSE_TOOLTIP :{BLACK}กลับขบวนรถไฟ +STR_VEHICLE_VIEW_ROAD_VEHICLE_REVERSE_TOOLTIP :{BLACK}กลับรถ + +STR_VEHICLE_VIEW_TRAIN_ORDERS_TOOLTIP :{BLACK}แสดงตารางเดินรถ +STR_VEHICLE_VIEW_ROAD_VEHICLE_ORDERS_TOOLTIP :{BLACK}แสดงตารางรายการคำสั่งของยานพาหนะ +STR_VEHICLE_VIEW_SHIP_ORDERS_TOOLTIP :{BLACK}แสดงตารางรายการคำสั่งของยานพาหนะ +STR_VEHICLE_VIEW_AIRCRAFT_ORDERS_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}{BLACK}แสดงรายละเอียดของเรือลำนี้ +STR_VEHICLE_VIEW_AIRCRAFT_SHOW_DETAILS_TOOLTIP :{BLACK}{BLACK}แสดงรายละเอียดของอากาศยานลำนี้ + +STR_VEHICLE_VIEW_TRAIN_STATE_START_STOP_TOOLTIP :{BLACK}สภาพการปัจจุบันของขบวนรถนี้ +STR_VEHICLE_VIEW_ROAD_VEHICLE_STATE_START_STOP_TOOLTIP :{BLACK}สภาพการปัจจุบันของรถคันนี้ +STR_VEHICLE_VIEW_SHIP_STATE_START_STOP_TOOLTIP :{BLACK}สภาพการปัจจุบันของเรือลำนี้ +STR_VEHICLE_VIEW_AIRCRAFT_STATE_START_STOP_TOOLTIP :{BLACK}สภาพการปัจจุบันของเครื่องบินลำนี้ + +# Messages in the start stop button in the vehicle view +STR_VEHICLE_STATUS_LOADING_UNLOADING :{LTBLUE}อยู่ระหว่างการขนถ่าย +STR_VEHICLE_STATUS_LEAVING :{LTBLUE}เริ่มออกเดินทาง +STR_VEHICLE_STATUS_CRASHED :{RED}เสีย! +STR_VEHICLE_STATUS_BROKEN_DOWN :{RED}เสีย! +STR_VEHICLE_STATUS_STOPPED :{RED}หยุด +STR_VEHICLE_STATUS_TRAIN_STOPPING_VEL :{RED}กำหลังหยุด, {VELOCITY} +STR_VEHICLE_STATUS_TRAIN_NO_POWER :{RED}ไม่มีกำลัง +STR_VEHICLE_STATUS_TRAIN_STUCK :{ORANGE}รอทาง +STR_VEHICLE_STATUS_AIRCRAFT_TOO_FAR :{ORANGE}เกินพิสัยการบิน + +STR_VEHICLE_STATUS_HEADING_FOR_STATION_VEL :{LTBLUE}มุ่งหน้าสู่ {STATION} ด้วยความเร็ว {VELOCITY} +STR_VEHICLE_STATUS_NO_ORDERS_VEL :{LTBLUE}ไม่มีสถานที่ที่ต้องไป, {VELOCITY} +STR_VEHICLE_STATUS_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}มุ่งหน้าสู่ {WAYPOINT} ด้วยความเร็ว {VELOCITY} +STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_VEL :{ORANGE}มุ่งหน้าสู่ {DEPOT} ด้วยความเร็ว {VELOCITY} +STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_SERVICE_VEL :{LTBLUE}ซ่อมบำรุงที่ {DEPOT}, {VELOCITY} + +# Vehicle stopped/started animations +STR_VEHICLE_COMMAND_STOPPED_SMALL :{TINY_FONT}{RED}หยุด +STR_VEHICLE_COMMAND_STOPPED :{RED}หยุด +STR_VEHICLE_COMMAND_STARTED_SMALL :{TINY_FONT}{GREEN}เริ่ม +STR_VEHICLE_COMMAND_STARTED :{GREEN}เริ่ม + +# Vehicle details +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_SHIP_RENAME :{BLACK}ชื่อ +STR_VEHICLE_DETAILS_AIRCRAFT_RENAME :{BLACK}ชื่อ + +STR_VEHICLE_INFO_AGE_RUNNING_COST_YR :{BLACK}ใช้งานมาแล้ว: {LTBLUE}{STRING}{BLACK} ค่าปฏิบัติการ: {LTBLUE}{CURRENCY_LONG}/ปี +# The next two need to stay in this order +STR_VEHICLE_INFO_AGE :{COMMA} ปี ({COMMA}) +STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} ปี ({COMMA}) + +STR_VEHICLE_INFO_MAX_SPEED :{BLACK}ความเร็วสูงสุด: {LTBLUE}{VELOCITY} +STR_VEHICLE_INFO_MAX_SPEED_RANGE :{BLACK}ความเร็วสูงสุด: {LTBLUE}{VELOCITY} {BLACK}พิสัย: {LTBLUE}{COMMA} ช่อง +STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}น้ำหนัก: {LTBLUE}{WEIGHT_SHORT} {BLACK}พลังขับเคลื่อน: {LTBLUE}{POWER}{BLACK} ความเร็วสูงสุด: {LTBLUE}{VELOCITY} +STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}น้ำหนัก: {LTBLUE}{WEIGHT_SHORT} {BLACK}พลังขับเคลื่อน: {LTBLUE}{POWER}{BLACK} ความเร็วสูงสุด: {LTBLUE}{VELOCITY} {BLACK}กำลังลากจูงสูงสุด: {LTBLUE}{FORCE} + +STR_VEHICLE_INFO_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}ผลประกอบการปีนี้: {LTBLUE}{CURRENCY_LONG} (ปีที่แล้ว: {CURRENCY_LONG}) +STR_VEHICLE_INFO_RELIABILITY_BREAKDOWNS :{BLACK}ประสิทธิภาพ: {LTBLUE}{COMMA}% {BLACK}เกิดการชำรุดหลังจากเข้าซ่อมบำรุงครั้งที่แล้ว: {LTBLUE}{COMMA} {BLACK}ครั้ง + +STR_VEHICLE_INFO_BUILT_VALUE :{LTBLUE}{ENGINE} {BLACK}สร้างเมื่อ: {LTBLUE}{NUM}{BLACK} มูลค่า: {LTBLUE}{CURRENCY_LONG} +STR_VEHICLE_INFO_NO_CAPACITY :{BLACK}บรรทุก: {LTBLUE}ไม่มี{STRING} +STR_VEHICLE_INFO_CAPACITY :{BLACK}บรรทุก: {LTBLUE}{CARGO_LONG}{3:STRING} +STR_VEHICLE_INFO_CAPACITY_MULT :{BLACK}บรรทุก: {LTBLUE}{CARGO_LONG}{3:STRING} (x{4:NUM}) +STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}บรรทุก: {LTBLUE}{CARGO_LONG}, {CARGO_LONG}{STRING} + +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+Click เพิ่มทีละ5 +STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}ลดระยะการซ่อมบำรุงครั้งละ 10 . Ctrl+Click ลดทีละ5 + +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_SHIP_CAPTION :{WHITE}ชื่อเรือ +STR_QUERY_RENAME_AIRCRAFT_CAPTION :{WHITE}ชื่ออากาศยาน + +# Extra buttons for train details windows +STR_VEHICLE_DETAILS_TRAIN_ENGINE_BUILT_AND_VALUE :{LTBLUE}{ENGINE}{BLACK} สร้างเมื่อ: {LTBLUE}{NUM}{BLACK} มูลค่า: {LTBLUE}{CURRENCY_LONG} +STR_VEHICLE_DETAILS_TRAIN_WAGON_VALUE :{LTBLUE}{ENGINE}{BLACK} มูลค่า: {LTBLUE}{CURRENCY_LONG} + +STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY_TEXT :{BLACK}ความจุสินค้าทั้งหมดของรถไฟขบวนนี้: +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}ว่างเปล่า +STR_VEHICLE_DETAILS_CARGO_FROM :{LTBLUE}{CARGO_LONG} จาก {STATION} +STR_VEHICLE_DETAILS_CARGO_FROM_MULT :{LTBLUE}{CARGO_LONG} จาก {STATION} (x{NUM}) + +STR_VEHICLE_DETAIL_TAB_CARGO :{BLACK}สินค้า +STR_VEHICLE_DETAILS_TRAIN_CARGO_TOOLTIP :{BLACK}แสดงรายละเอียดสิ่งของที่บรรทุกมา +STR_VEHICLE_DETAIL_TAB_INFORMATION :{BLACK}ข้อมูล +STR_VEHICLE_DETAILS_TRAIN_INFORMATION_TOOLTIP :{BLACK}แสดงรายละเอียดของรถไฟ +STR_VEHICLE_DETAIL_TAB_CAPACITIES :{BLACK}ปริมาณที่รับได้ +STR_VEHICLE_DETAILS_TRAIN_CAPACITIES_TOOLTIP :{BLACK}แสดงความจุของขบวนรถ +STR_VEHICLE_DETAIL_TAB_TOTAL_CARGO :{BLACK}แสดงความจุรวมทั้งหมดของขบวนรถ +STR_VEHICLE_DETAILS_TRAIN_TOTAL_CARGO_TOOLTIP :{BLACK}แสดงความจุรวมทั้งหมดของขบวนรถ แยกตามประเภทสินค้า + +STR_VEHICLE_DETAILS_TRAIN_ARTICULATED_RV_CAPACITY :{BLACK}ความจุ: {LTBLUE} + +# Vehicle refit +STR_REFIT_CAPTION :{WHITE}{VEHICLE} (ดัดแปลง) +STR_REFIT_TITLE :{GOLD}เลือกประเภทสินค้าที่จะบรรทุก: +STR_REFIT_NEW_CAPACITY_COST_OF_REFIT :{BLACK}ความจุใหม่: {GOLD}{CARGO_LONG}{}{BLACK}มูลค่าในการดัดแปลง: {RED}{CURRENCY_LONG} +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}เลือกส่วนที่จะดัดแปลง กดเม้าส์แล้วลากเพื่อเลือกหลายๆคัน + +STR_REFIT_TRAIN_LIST_TOOLTIP :{BLACK}เลือกประเภทของสินค้าสำหรับรถไฟที่จะบรรทุก +STR_REFIT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}เลือกประเภทของสินค้าสำหรับรถจะบรรทุก +STR_REFIT_SHIP_LIST_TOOLTIP :{BLACK}{BLACK}เลือกประเภทของสินค้าสำหรับเรือจะบรรทุก +STR_REFIT_AIRCRAFT_LIST_TOOLTIP :{BLACK}{BLACK}เลือกประเภทของสินค้าสำหรับอากาศยานที่จะบรรทุก + +STR_REFIT_TRAIN_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_SHIP_REFIT_TOOLTIP :{BLACK}ดัดแปลงตามที่เลือกประเภทสินค้าไว้ +STR_REFIT_AIRCRAFT_REFIT_TOOLTIP :{BLACK}ดัดแปลงตามที่เลือกประเภทสินค้าไว้ + +# Order view +STR_ORDERS_CAPTION :{WHITE}รายการคำสั่งของ {VEHICLE} +STR_ORDERS_TIMETABLE_VIEW :{BLACK}ตารางเวลา +STR_ORDERS_TIMETABLE_VIEW_TOOLTIP :{BLACK}สลับไปยังตารางเวลา + +STR_ORDERS_LIST_TOOLTIP :{BLACK}รายการต้นทางปลายทาง +STR_ORDER_INDEX :{COMMA}:{NBSP} +STR_ORDER_TEXT :{STRING} {STRING} {STRING} + +STR_ORDERS_END_OF_ORDERS :- - สิ้นสุดรายการ - - +STR_ORDERS_END_OF_SHARED_ORDERS :- - สิ้นสุดคำสั่งที่ใช้ร่วมกัน - - + +# Order bottom buttons +STR_ORDER_NON_STOP :{BLACK}ไม่หยุด +STR_ORDER_GO_TO :ไปยัง +STR_ORDER_GO_NON_STOP_TO :ไม่หยุดจนถึง +STR_ORDER_GO_VIA :ผ่าน +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_FULL_LOAD_ALL :รอจนเต็ม +STR_ORDER_DROP_FULL_LOAD_ANY :รอจนสินค้าบางประเภทเต็ม +STR_ORDER_DROP_NO_LOADING :ไม่มีการขนถ่าย +STR_ORDER_TOOLTIP_FULL_LOAD :{BLACK}เลือกรูปแบบการรับส่งสินค้าตามที่เลือกในรายการ + +STR_ORDER_TOGGLE_UNLOAD :{BLACK}ถ่ายสินค้าลงทั้งหมด +STR_ORDER_DROP_UNLOAD_IF_ACCEPTED :ถ่ายสินค้าลงถ้าสถานีรับ +STR_ORDER_DROP_UNLOAD :ถ่ายสินค้าออกทั้งหมด +STR_ORDER_DROP_TRANSFER :ส่งต่อ +STR_ORDER_DROP_NO_UNLOADING :ไม่ถ่ายสินค้าลง +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}ดัดแปลงเพื่อปรับเปลี่ยนการบรรทุกสินค้าประเภทอื่นอัตโนมัติ +STR_ORDER_DROP_REFIT_AUTO :เลือกประเภทตามกำหนด +STR_ORDER_DROP_REFIT_AUTO_ANY :ตามสินค้าที่ต้องการการขนส่ง + +STR_ORDER_SERVICE :{BLACK}ซ่อมบำรุง +STR_ORDER_DROP_GO_ALWAYS_DEPOT :ไปทุกครั้ง +STR_ORDER_DROP_SERVICE_DEPOT :เข้าซ่อมบำรุงหากต้องการ +STR_ORDER_DROP_HALT_DEPOT :หยุด +STR_ORDER_SERVICE_TOOLTIP :{BLACK}จะข้ามรายการนี้ไปเมื่อยังไม่มีความต้องการซ่อมบำรุง + +STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}ข้อมูลยานพาหนะที่จะข้ามไป + +# Conditional order variables, must follow order of OrderConditionVariable enum +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_UNCONDITIONALLY :ตลอดเวลา +STR_ORDER_CONDITIONAL_REMAINING_LIFETIME :เหลืออายุการใช้งาน(ปี) + +STR_ORDER_CONDITIONAL_COMPARATOR_TOOLTIP :{BLACK}วิธีการเปรียบเทียบข้อมูลยานพาหนะเพื่อใส่ค่า +STR_ORDER_CONDITIONAL_COMPARATOR_EQUALS :เท่ากับ +STR_ORDER_CONDITIONAL_COMPARATOR_NOT_EQUALS :ไม่เท่ากับ +STR_ORDER_CONDITIONAL_COMPARATOR_LESS_THAN :น้อยกว่า +STR_ORDER_CONDITIONAL_COMPARATOR_LESS_EQUALS :น้อยกว่าหรือเท่ากับ +STR_ORDER_CONDITIONAL_COMPARATOR_MORE_THAN :มากกว่า +STR_ORDER_CONDITIONAL_COMPARATOR_MORE_EQUALS :มากกว่าหรือเท่ากับ +STR_ORDER_CONDITIONAL_COMPARATOR_IS_TRUE :คือใช่ +STR_ORDER_CONDITIONAL_COMPARATOR_IS_FALSE :คือไม่ใช่ + +STR_ORDER_CONDITIONAL_VALUE_TOOLTIP :{BLACK}ค่าที่จะเปรียบเทียบกับระหว่างยานพาหนะทั้งสอง +STR_ORDER_CONDITIONAL_VALUE_CAPT :{WHITE}ใส่ค่า่ที่จะเปรียบเีทียบ + +STR_ORDERS_SKIP_BUTTON :{BLACK}ข้าม +STR_ORDERS_SKIP_TOOLTIP :{BLACK}ข้ามรายการที่กำลังทำไปยังรายการถัดไป + +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}หยุดการ Share รายการที่ต้องทำ + +STR_ORDERS_GO_TO_BUTTON :{BLACK}ไปยัง +STR_ORDER_GO_TO_NEAREST_DEPOT :ไปยังโรงซ่อมบำรุงที่ใกล้ที่สุด +STR_ORDER_GO_TO_NEAREST_HANGAR :ไปยังโรงซ่อมบำรุงที่ใกล้ที่สุด +STR_ORDER_CONDITIONAL :สั่งให้ข้ามรายการในคำสั่ง +STR_ORDER_SHARE :Share รายการที่ต้องทำ +STR_ORDERS_GO_TO_TOOLTIP :{BLACK}เพิ่มรายการที่ต้องทำก่อนหน้ารายการที่เลือก หรือเพิ่มในท้ายรายการที่มีอยู่แล้ว + +STR_ORDERS_VEH_WITH_SHARED_ORDERS_LIST_TOOLTIP :{BLACK}แสดงยานพาหนะทั้งหมดที่ใช้คำสั่งนี้ + +# String parts to build the order string +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_NEAREST_DEPOT :ใกล้ที่สุด +STR_ORDER_NEAREST_HANGAR :โรงซ่อมที่ใกล้ที่สุด +STR_ORDER_TRAIN_DEPOT :โรงซ่อมบำรุง +STR_ORDER_ROAD_VEHICLE_DEPOT :โรงซ่อมบำรุงรถ +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_STOP_ORDER :(ดัดแปลงเป็น {STRING} และหยุด) +STR_ORDER_STOP_ORDER :(หยุด) + +STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING} + +STR_ORDER_IMPLICIT :(อัตโนมัติ) + +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_ANY :(ถ่ายสินค้าทั้งหมดออกแล้วรอสินค้าใหม่บางอย่างเต็ม) +STR_ORDER_UNLOAD_NO_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_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_NO_UNLOAD_FULL_LOAD_ANY_REFIT :(ไม่ถ่ายสินค้าลง แต่ดัดแปลงเป็น {STRING} และรับสินค้าบางอย่างจนเต็ม) + +STR_ORDER_AUTO_REFIT_ANY :สินค้าที่มี + +STR_ORDER_STOP_LOCATION_NEAR_END :[จอดที่ปลายสุด] +STR_ORDER_STOP_LOCATION_MIDDLE :[จอดกึ่งกลาง] +STR_ORDER_STOP_LOCATION_FAR_END :[จอดพอดีท้ายขบวน] + +STR_ORDER_OUT_OF_RANGE :{RED} (ที่หมายถัดไปไกลเกินพิสัย) + +STR_ORDER_CONDITIONAL_UNCONDITIONAL :ข้ามไปยังคำสั่งที่ {COMMA} +STR_ORDER_CONDITIONAL_NUM :ข้ามไปยังคำสั่งที่ {COMMA} เมื่อ {STRING} {STRING} {COMMA} +STR_ORDER_CONDITIONAL_TRUE_FALSE :ข้ามไปยังคำสั่งที่ {COMMA} เมื่อ {STRING} {STRING} + +STR_INVALID_ORDER :{RED} (คำสั่งไม่ถูกต้อง) + +# Time table window +STR_TIMETABLE_TITLE :{WHITE}ตารางเวลาของ {VEHICLE} +STR_TIMETABLE_ORDER_VIEW :{BLACK}คำสั่ง +STR_TIMETABLE_ORDER_VIEW_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_FOR :เวลาในการเดินทางคือ {STRING} +STR_TIMETABLE_TRAVEL_FOR_SPEED :เวลาในการเดินทางคือ {STRING} ความเร็วสูงสุดไม่เกิน {VELOCITY} +STR_TIMETABLE_STAY_FOR :หยุดเป็นเวลา {STRING} +STR_TIMETABLE_AND_TRAVEL_FOR :และเดินทาง {STRING} +STR_TIMETABLE_DAYS :{COMMA} วัน +STR_TIMETABLE_TICKS :{COMMA} tick + +STR_TIMETABLE_TOTAL_TIME :{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_NOT_STARTED :{BLACK}ตารางเวลายังไม่เริ่มต้น +STR_TIMETABLE_STATUS_START_AT :{BLACK}ตารางเวลานี้จะเริ่มใน {STRING} + +STR_TIMETABLE_STARTING_DATE :{BLACK}วันที่เริ่มต้น +STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}เลือกวันที่ที่จะให้เริ่มต้นตารางเวลา. Ctrl+Click เพื่อให้ยานพาหนะที่ใช้ตารางเวลานี้เริ่มต้นที่จุดเดียวกัน, ถ้าตารางเวลาสมบูรณ์แล้ว + +STR_TIMETABLE_CHANGE_TIME :{BLACK}ปรับเปลี่ยนเวลา +STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}เปลี่ยนเวลาที่ตำแหน่งไฮไลท์ในรายการ + +STR_TIMETABLE_CLEAR_TIME :{BLACK}ลบเวลา +STR_TIMETABLE_CLEAR_TIME_TOOLTIP :{BLACK}ลบเวลาในรายการที่ไฮไลท์ + +STR_TIMETABLE_CHANGE_SPEED :{BLACK}ตั้งจำกัดความเร็ว +STR_TIMETABLE_CHANGE_SPEED_TOOLTIP :{BLACK}เปลี่ยนความเร็วการเดินทางสูงสุดของลำดับที่ถูกไฮไลท์ + +STR_TIMETABLE_CLEAR_SPEED :{BLACK}ยกเลิกการจำกัดความเร็ว +STR_TIMETABLE_CLEAR_SPEED_TOOLTIP :{BLACK}ยกเลิกความเร็วการเดินทางสูงสุดของลำดับที่ถูกไฮไลท์ + +STR_TIMETABLE_RESET_LATENESS :{BLACK}รีเซตเวลาที่ช้า +STR_TIMETABLE_RESET_LATENESS_TOOLTIP :{BLACK}รีเซตเวลาที่ล่าช้าเพื่อให้ยานพาหนะเริ่มต้นตามเวลาใหม่ + +STR_TIMETABLE_AUTOFILL :{BLACK}เติมอัตโนมัติ +STR_TIMETABLE_AUTOFILL_TOOLTIP :{BLACK}เติมตารางเวลาอัตโนมัติ (Ctrl+Click เพื่อปรับระยะเวลารอ) + +STR_TIMETABLE_EXPECTED :{BLACK}การคาดการณ์ +STR_TIMETABLE_SCHEDULED :{BLACK}ตารางเวลา +STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}สลับระหว่างการดูรายการตารางเวลาและการคาดการณ์ + +STR_TIMETABLE_ARRIVAL_ABBREVIATION :ถึง: +STR_TIMETABLE_DEPARTURE_ABBREVIATION :ออก: + + +# Date window (for timetable) +STR_DATE_CAPTION :{WHITE}กำหนดวัน +STR_DATE_SET_DATE :{BLACK}กำหนดวัน +STR_DATE_SET_DATE_TOOLTIP :{BLACK}เลือกวันที่จะเริ่มต้นใช้งานตารางเวลา +STR_DATE_DAY_TOOLTIP :{BLACK}เลือกวัน +STR_DATE_MONTH_TOOLTIP :{BLACK}เลือกเดือน +STR_DATE_YEAR_TOOLTIP :{BLACK}เลือกปี + + +# AI debug window +STR_AI_DEBUG :{WHITE}AI/Game Script Debug +STR_AI_DEBUG_NAME_AND_VERSION :{BLACK}{STRING} (v{NUM}) +STR_AI_DEBUG_NAME_TOOLTIP :{BLACK}ชื่อ script +STR_AI_DEBUG_SETTINGS :{BLACK}ตั้งค่า AI +STR_AI_DEBUG_SETTINGS_TOOLTIP :{BLACK}เปลี่ยนการตั้งค่า AI +STR_AI_DEBUG_RELOAD :{BLACK}โหลด AI อีกครั้งหนึ่ง +STR_AI_DEBUG_RELOAD_TOOLTIP :{BLACK}ปิด AI ทั้งหมด,ทำการ Reload Script, และทำการเริ่มต้น AI ใหม่อีกครั้ง +STR_AI_DEBUG_BREAK_STR_ON_OFF_TOOLTIP :{BLACK}เปิด/ปิด การหยุด เมื่อ Log แสดงข้อมูล AI ตรงกับข้อมูลใน Break String +STR_AI_DEBUG_BREAK_ON_LABEL :{BLACK}Break on: +STR_AI_DEBUG_BREAK_STR_OSKTITLE :{BLACK}Break on +STR_AI_DEBUG_BREAK_STR_TOOLTIP :{BLACK}เมื่อข้อความใน AI Log ตรงกับ string นี้ ให้ทำการหยุดเกม +STR_AI_DEBUG_MATCH_CASE :{BLACK}ตรงกัน +STR_AI_DEBUG_MATCH_CASE_TOOLTIP :{BLACK}แสดงกรณีที่ตรงเมื่อมีการเปรียบเทียบข้อความใน AI log ที่ตรงกับ Braek string +STR_AI_DEBUG_CONTINUE :{BLACK}ต่อเนื่อง +STR_AI_DEBUG_CONTINUE_TOOLTIP :{BLACK}ยกเลิกการหยุดเกม และเปิดทำงาน AI ต่อไป +STR_AI_DEBUG_SELECT_AI_TOOLTIP :{BLACK}ดูการผลลัพธ์การดีบักของ AI นี้ +STR_AI_GAME_SCRIPT :{BLACK}Game Script +STR_AI_GAME_SCRIPT_TOOLTIP :{BLACK}ตรวจสอบ Script log ของเกม + +STR_ERROR_AI_NO_AI_FOUND :ไม่มี AI ที่เหมาะสมที่จะโหลดขึ้นมา.{}AI นี้เป็นเพียงตัวแทนไม่สามารถทำอะไรได้.{} คุณสามารถดาวโหลดเพิ่มเติมจากระบบ Online Content +STR_ERROR_AI_PLEASE_REPORT_CRASH :{WHITE}ถ้ามีกรณี Script เสีย กรุณารายงานไปยังผู้เขียน Script พร้อม Screenshot ของหน้าต่าง AI และ Game script debug +STR_ERROR_AI_DEBUG_SERVER_ONLY :{YELLOW}AI/Game Script Debug window จะใช้งานได้เฉพาะที่เป็น Server + +# AI configuration window +STR_AI_CONFIG_CAPTION :{WHITE}ปรับแต่ง AI/Game Script +STR_AI_CONFIG_GAMELIST_TOOLTIP :{BLACK}Game Script จะเปิดใช้งานในเกมถัดไป +STR_AI_CONFIG_AILIST_TOOLTIP :{BLACK}AI จะทำการเปิดใช้งานในเกมถัดไป +STR_AI_CONFIG_HUMAN_PLAYER :ผู้เล่น +STR_AI_CONFIG_RANDOM_AI :คอมพิวเตอร์ +STR_AI_CONFIG_NONE :(ไม่มี) + +STR_AI_CONFIG_MOVE_UP :{BLACK}เลื่อนขึ้น +STR_AI_CONFIG_MOVE_UP_TOOLTIP :{BLACK}ย้าย AI ที่เลือกขึ้นด้านบนของรายชื่อ +STR_AI_CONFIG_MOVE_DOWN :{BLACK}เลื่อนลง +STR_AI_CONFIG_MOVE_DOWN_TOOLTIP :{BLACK}ย้าย AI ที่เลือกลงด้านล่างของรายชื่อ + +STR_AI_CONFIG_GAMESCRIPT :{SILVER}Game Script +STR_AI_CONFIG_AI :{SILVER}AI + +STR_AI_CONFIG_CHANGE :{BLACK}เลือก {STRING} +STR_AI_CONFIG_CHANGE_NONE : +STR_AI_CONFIG_CHANGE_AI :AI +STR_AI_CONFIG_CHANGE_GAMESCRIPT :Game Script +STR_AI_CONFIG_CHANGE_TOOLTIP :{BLACK}โหลดscriptอื่น +STR_AI_CONFIG_CONFIGURE :{BLACK}Configure +STR_AI_CONFIG_CONFIGURE_TOOLTIP :{BLACK}ปรับแต่ง parameters ของ Script + +# Available AIs window +STR_AI_LIST_CAPTION :{WHITE}ที่เปิดใช้งาน {STRING} +STR_AI_LIST_CAPTION_AI :AI +STR_AI_LIST_CAPTION_GAMESCRIPT :Game Scripts +STR_AI_LIST_TOOLTIP :{BLACK}คลิ๊กเพื่อเลือก script + +STR_AI_LIST_AUTHOR :{LTBLUE}ผู้เขียน: {ORANGE}{STRING} +STR_AI_LIST_VERSION :{LTBLUE}เวอร์ชั่น: {ORANGE}{NUM} +STR_AI_LIST_URL :{LTBLUE}URL: {ORANGE}{STRING} + +STR_AI_LIST_ACCEPT :{BLACK}ยืนยัน +STR_AI_LIST_ACCEPT_TOOLTIP :{BLACK}เลือก script ที่ไฮไลท์ไว้ +STR_AI_LIST_CANCEL :{BLACK}ยกเลิก +STR_AI_LIST_CANCEL_TOOLTIP :{BLACK}ไม่สามารถเปลี่ยน script + +# AI Parameters +STR_AI_SETTINGS_CAPTION :{WHITE}{STRING} Parameters +STR_AI_SETTINGS_CAPTION_AI :AI +STR_AI_SETTINGS_CAPTION_GAMESCRIPT :Game Script +STR_AI_SETTINGS_CLOSE :{BLACK}ปิด +STR_AI_SETTINGS_RESET :{BLACK}เริ่มใหม่ +STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING} +STR_AI_SETTINGS_START_DELAY :จำนวนที่จะให้เริ่มต้น AI นี้หลังจากที่มีการเริ่มต้น AI ก่อนหน้านี้ไป: {ORANGE}{STRING} + + +# Textfile window +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}การอนุญาต + + +# 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}รายจ่าย: {CURRENCY_LONG} +STR_INCOME_FLOAT_COST :{RED}รายจ่าย: {CURRENCY_LONG} +STR_INCOME_FLOAT_INCOME_SMALL :{TINY_FONT}{GREEN}รายได้: {CURRENCY_LONG} +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} + +# Saveload messages +STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}ขณะนี้กำลังบันทึก,{}โปรดรอจนกว่าจะเสร็จ! +STR_ERROR_AUTOSAVE_FAILED :{WHITE}บันทึกอัตโนมัติล้มเหลว!!! +STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}ไม่สามารถอ่านข้อมูลได้ +STR_ERROR_GAME_SAVE_FAILED :{WHITE}บันทึกเกมล้มเหลว!!!{}{STRING} +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_TOO_NEW_SAVEGAME :เกมที่บันทึกไว้ สำหรับเวอร์ชันใหม่ +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}บันทึกนี้บันทึกเป็นเวอร์ชั่นที่ยังไม่สนับสนุนระบบรถราง. ทั้งหมดจะถูกลบออก + +# Map generation messages +STR_ERROR_COULD_NOT_CREATE_TOWN :{WHITE}การสร้างแผนที่ถูกยกเลิก...{}... ไม่มีสถานที่เมืองที่เหมาะสม +STR_ERROR_NO_TOWN_IN_SCENARIO :{WHITE}... ไม่มีเมืองในแผนที่จำลอง + +STR_ERROR_PNGMAP :{WHITE}ไม่สามารถโหลดสภาพภูมิประเทศจากไฟล์ PNG... +STR_ERROR_PNGMAP_FILE_NOT_FOUND :{WHITE}... หาไฟล์ไม่พบ +STR_ERROR_PNGMAP_IMAGE_TYPE :{WHITE}... ไม่สามารถแปลงประเภทของภาพได้. ต้องการภาพ 8-bit หรือ 24-bit PNG +STR_ERROR_PNGMAP_MISC :{WHITE}... มีบางอย่างไม่ถูกต้อง (เป็นไปได้ว่าไฟล์เสียหาย) + +STR_ERROR_BMPMAP :{WHITE}ไม่สามารถโหลดสภาพภูมิประเทศจากไฟล์ BMP... +STR_ERROR_BMPMAP_IMAGE_TYPE :{WHITE}... ไม่สามารถแปลงประเภทของภาพได้ + +STR_ERROR_HEIGHTMAP_TOO_LARGE :{WHITE}... ภาพมีขนาดใหญ่เกินไป + +STR_WARNING_HEIGHTMAP_SCALE_CAPTION :{WHITE}สเกลภาพไม่ตรงกับการตั้งค่าแผนที่ +STR_WARNING_HEIGHTMAP_SCALE_MESSAGE :{YELLOW}ไม่แนะนำให้ทำการลดขนาดภาพต้นฉบับ. แน่ใจหรือไม่ว่าต้องการทำต่อ? + +# Soundset messages +STR_WARNING_FALLBACK_SOUNDSET :{WHITE}พบเฉพาะไฟล์เสียงสำรอง. หากต้องการฟังเสียงอื่นๆ โปรดดาวน์โหลดและติดตั้งจาก Content Download System + +# Screenshot related messages +STR_WARNING_SCREENSHOT_SIZE_CAPTION :{WHITE}ภาพถ่ายขนาดใหญ่ +STR_WARNING_SCREENSHOT_SIZE_MESSAGE :{YELLOW}ความละเอียดของภาพ:{COMMA} x {COMMA} พิกเซล. การถ่ายภาพอาจใช้เวลาซักพัก. คุณต้องการดำเนินการต่อหรือไม่? + +STR_MESSAGE_SCREENSHOT_SUCCESSFULLY :{WHITE}Screenshot บันทึกเรียบร้อยแล้ว ที่ '{STRING}' +STR_ERROR_SCREENSHOT_FAILED :{WHITE}การบันทึก Screenshot ล้มเหลว! + +# Error message titles +STR_ERROR_MESSAGE_CAPTION :{YELLOW}ข้อความ +STR_ERROR_MESSAGE_CAPTION_OTHER_COMPANY :{YELLOW}ข้อความจาก {STRING} + +# Generic construction errors +STR_ERROR_OFF_EDGE_OF_MAP :{WHITE}อยู่นอกขอบแผนที่ +STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP :{WHITE}ใกล้กับขอบแผนที่เกินไป +STR_ERROR_NOT_ENOUGH_CASH_REQUIRES_CURRENCY :{WHITE}มีเงินไม่พอ - ต้องการอีก {CURRENCY_LONG} +STR_ERROR_FLAT_LAND_REQUIRED :{WHITE}ต้องใช้พื้นที่ราบ +STR_ERROR_LAND_SLOPED_IN_WRONG_DIRECTION :{WHITE}เนินดินในทิศทางที่ผิด +STR_ERROR_CAN_T_DO_THIS :{WHITE}ไม่สามารถทำได้... +STR_ERROR_BUILDING_MUST_BE_DEMOLISHED :{WHITE}มีสิ่งปลูกสร้างที่ต้องทำลายก่อน +STR_ERROR_CAN_T_CLEAR_THIS_AREA :{WHITE}ไม่สามารถรื้อถอนได้... +STR_ERROR_SITE_UNSUITABLE :{WHITE}... พื้นที่นั้นไม่เหมาะสม +STR_ERROR_ALREADY_BUILT :{WHITE}... พร้อมที่จะทำการสร้าง +STR_ERROR_OWNED_BY :{WHITE}... เป็นของ {STRING} +STR_ERROR_AREA_IS_OWNED_BY_ANOTHER :{WHITE}... พื้นที่นี้ถูกจับจองโดยบริษัทอื่น +STR_ERROR_TERRAFORM_LIMIT_REACHED :{WHITE}... การจัดการภูมิประเทศถึงขีดจำกัด +STR_ERROR_CLEARING_LIMIT_REACHED :{WHITE}... การเคลียพื้่นที่ถึงขีดจำักัด +STR_ERROR_TREE_PLANT_LIMIT_REACHED :{WHITE}... การปลูกต้นไม้ถึงขีดจำกัด +STR_ERROR_NAME_MUST_BE_UNIQUE :{WHITE}ชื่อนี้มีอยู่แล้ว!! +STR_ERROR_GENERIC_OBJECT_IN_THE_WAY :{WHITE}{1:STRING} ในเส้นทาง +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_AIRPORT :{WHITE}{TOWN}เจ้าหน้าที่ท้องถิ่นปฏิเสธที่จะอนุญาตให้สร้างท่าอากาศยานเพิ่มในท้องถิ่น +STR_ERROR_LOCAL_AUTHORITY_REFUSES_NOISE :{WHITE}{TOWN}เจ้าหน้าที่ท้องถิ่นปฏิเสธที่จะอนุญาตให้สร้างท่าอากาศยานเนื่องจากมลภาวะทางเีสียงเกินปริมาณ +STR_ERROR_BRIBE_FAILED :{WHITE}สินบนของคุณถูกตรวจพบโดย{}ผู้รักษากฎหมายในท้องที่ + +# Levelling errors +STR_ERROR_CAN_T_RAISE_LAND_HERE :{WHITE}ตรงนี้ไม่สามารถยกระดับพื้นดินได้ +STR_ERROR_CAN_T_LOWER_LAND_HERE :{WHITE}ตรงนี้ไม่สามารถลดระดับพื้นดินได้... +STR_ERROR_CAN_T_LEVEL_LAND_HERE :{WHITE}ตรงนี้ไม่สามารถปรับระดับพื้นดินให้เท่ากันได้... +STR_ERROR_EXCAVATION_WOULD_DAMAGE :{WHITE}การขุดลงไปจะทำให้อุโมงค์เสียหาย +STR_ERROR_ALREADY_AT_SEA_LEVEL :{WHITE}... ตอนนี้อยู่ที่ระดับน้ำทะเลแล้ว +STR_ERROR_TOO_HIGH :{WHITE}... สูงเกินไป +STR_ERROR_ALREADY_LEVELLED :{WHITE}... อยู่ในสภาพที่ต่ำที่สุดแล้ว + +# Company related errors +STR_ERROR_CAN_T_CHANGE_COMPANY_NAME :{WHITE}ไม่สามารถเปลี่ยนชื่อบริษัทได้ +STR_ERROR_CAN_T_CHANGE_PRESIDENT :{WHITE}ไม่สามารถเปลี่ยนชื่อประธานบริษัทได้... + +STR_ERROR_MAXIMUM_PERMITTED_LOAN :{WHITE}... ปริมาณเงินสูงสุดที่สามารถกู้ได้ {CURRENCY_LONG} +STR_ERROR_CAN_T_BORROW_ANY_MORE_MONEY :{WHITE}ไม่สามารถกู้เงินเพิ่มได้จากนี้แล้ว... +STR_ERROR_LOAN_ALREADY_REPAYED :{WHITE}... ไม่มีหนี้ที่ค้างชำระแล้ว +STR_ERROR_CURRENCY_REQUIRED :{WHITE}... {CURRENCY_LONG} ต้องการ +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_PROTECTED :{WHITE}บริษัทนี้ยังไม่เก่าแก่พอที่จะซื้อหุ้นหรือซื้อกิจการได้... + +# Town related errors +STR_ERROR_CAN_T_GENERATE_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}... ติดกับขอบแผนที่มากเกินไป +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}เมืองจะไม่สามารถสร้างถนนได้ในอนาคต. คุณสามารถเปิดใช้งานสร้างถนนของเมือง ใน Advanced Settings->Economy->Towns +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_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_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_NEAR_TOWN_CENTER :{WHITE}... สามารถสร้างได้บริเวณใกล้จุดศูนย์กลางของเมืองเท่านั้น +STR_ERROR_CAN_ONLY_BE_BUILT_IN_LOW_AREAS :{WHITE}สามารถสร้างได้เฉพาะพื้นที่ต่ำกว่าเท่านั้น +STR_ERROR_CAN_ONLY_BE_POSITIONED :{WHITE}... สามารถวางตำแหน่งบริเวณขอบของแผนที่เท่านั้น +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_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}มากเกิน 1 สำหรับสถานที่ขนส่งสินค้า +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}ต้องทำลายท่าอากาศยานก่อน + +# Waypoint related errors +STR_ERROR_WAYPOINT_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}มากเกิน 1 สำหรับ Waypoint +STR_ERROR_TOO_CLOSE_TO_ANOTHER_WAYPOINT :{WHITE}ใกล้กับ Waypoint อื่นมากเกินไป + +STR_ERROR_CAN_T_BUILD_TRAIN_WAYPOINT :{WHITE}ไม่สามารถสร้าง Waypoint ที่นี่ได้... +STR_ERROR_CAN_T_POSITION_BUOY_HERE :{WHITE}ไม่สามารถวางทุ่นลอยน้ำที่นี่ได้... +STR_ERROR_CAN_T_CHANGE_WAYPOINT_NAME :{WHITE}ไม่สามารถเปลี่ยนชื่อ Waypoint... + +STR_ERROR_CAN_T_REMOVE_TRAIN_WAYPOINT :{WHITE}ไม่สามารถลบ Waypoint ได้... +STR_ERROR_MUST_REMOVE_RAILWAYPOINT_FIRST :{WHITE}ต้องลบ Waypoint ก่อน +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_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_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_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 :อู่ผิดประเภท + +# 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_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_SIGNAL_CAN_T_CONVERT_SIGNALS_HERE :{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}... ไม่มีทางรถราง + +# 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_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}ต้องทำการถมคลองเป็นอันดับแรก +STR_ERROR_CAN_T_BUILD_AQUEDUCT_HERE :{WHITE}ไม่สามารถสร้างทางน้ำได้... + +# Tree related errors +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_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_UNABLE_TO_EXCAVATE_LAND :{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}มีขบวนรถอยู่ในทาง +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}ไม่สามารถซื้อรถไฟได้... +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_RENAME_TRAIN_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_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}ยังไม่มียานพาหานะให้เลือก +STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}เริ่มเกมหลังจาก {DATE_SHORT} หรือเลือกใช้งาน NewGRF ของยานพาหนะที่จัดเตรียมไว้ก่อนหน้านี้ + +# 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}อากาศยานอยู่ระหว่างทำการบิน + +# Order related errors +STR_ERROR_NO_MORE_SPACE_FOR_ORDERS :{WHITE}ไม่มีพื้นที่ว่างสำหรับเพิ่มคำสั่ง +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}ไม่สามารถหยุดการ Share คำสั่งในรายการ +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}พาหนะนี้ไม่สามารถหยุดที่่่่สถานีนี้ได้ + +# Sign related errors +STR_ERROR_TOO_MANY_SIGNS :{WHITE}... มีป้ายมากเกินไป +STR_ERROR_CAN_T_PLACE_SIGN_HERE :{WHITE}ไม่สามารถวางป้่ายที่นี่ได้... +STR_ERROR_CAN_T_CHANGE_SIGN_NAME :{WHITE}ไม่สามารถเปลี่ยนชื่อป้ายได้... +STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}ไม่สามารถลบป้ายได้... + +# Translatable comment for OpenTTD's desktop shortcut +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 (German) 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 +STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1 :ตึกสูง +STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_1 :อาคารสำนักงาน +STR_TOWN_BUILDING_NAME_SMALL_BLOCK_OF_FLATS_1 :แฟลต +STR_TOWN_BUILDING_NAME_CHURCH_1 :โบส์ถ +STR_TOWN_BUILDING_NAME_LARGE_OFFICE_BLOCK_1 :อาคารสำนักงานขนาดใหญ่ +STR_TOWN_BUILDING_NAME_TOWN_HOUSES_1 :ทาวน์เฮ้าส์ +STR_TOWN_BUILDING_NAME_HOTEL_1 :โรงแรม +STR_TOWN_BUILDING_NAME_STATUE_1 :อนุสาวรีย์ +STR_TOWN_BUILDING_NAME_FOUNTAIN_1 :น้ำพุ +STR_TOWN_BUILDING_NAME_PARK_1 :สวนสาธารณะ +STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_2 :อาคารสำนักงาน +STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_1 :ร้านค้าและสำนักงาน +STR_TOWN_BUILDING_NAME_MODERN_OFFICE_BUILDING_1 :อาคารสำนักงานสมัยใหม่ +STR_TOWN_BUILDING_NAME_WAREHOUSE_1 :โกดัง +STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_3 :อาคารสำนักงาน +STR_TOWN_BUILDING_NAME_STADIUM_1 :สนามกีฬา +STR_TOWN_BUILDING_NAME_OLD_HOUSES_1 :บ้านโบราณ +STR_TOWN_BUILDING_NAME_COTTAGES_1 :กระท่อม +STR_TOWN_BUILDING_NAME_HOUSES_1 :บ้าน +STR_TOWN_BUILDING_NAME_FLATS_1 :แฟลต +STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_2 :อาคารสูง +STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_2 :ร้านค้าและสำนักงาน +STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_3 :ร้านค้าและสำนักงาน +STR_TOWN_BUILDING_NAME_THEATER_1 :โรงภาพยนตร์ +STR_TOWN_BUILDING_NAME_STADIUM_2 :สนามกีฬา +STR_TOWN_BUILDING_NAME_OFFICES_1 :สำนักงาน +STR_TOWN_BUILDING_NAME_HOUSES_2 :บ้าน +STR_TOWN_BUILDING_NAME_CINEMA_1 :โรงภาพยนตร์ +STR_TOWN_BUILDING_NAME_SHOPPING_MALL_1 :ห้างสรรพสินค้า +STR_TOWN_BUILDING_NAME_IGLOO_1 :อิกลู +STR_TOWN_BUILDING_NAME_TEPEES_1 :กระโจม +STR_TOWN_BUILDING_NAME_TEAPOT_HOUSE_1 :บ้านพักตากอากาศ +STR_TOWN_BUILDING_NAME_PIGGY_BANK_1 :ธนาคารเล็กๆ + +##id 0x4800 +# industry names +STR_INDUSTRY_NAME_COAL_MINE :เหมือนถ่านหิน +STR_INDUSTRY_NAME_POWER_STATION :โรงผลิตไฟฟ้า +STR_INDUSTRY_NAME_SAWMILL :โรงเลื่อย +STR_INDUSTRY_NAME_FOREST :ป่าไม้ +STR_INDUSTRY_NAME_OIL_REFINERY :โรงกลั่นน้ำมัน +STR_INDUSTRY_NAME_OIL_RIG :แท่นขุดเจาะน้ำมันกลางทะเล +STR_INDUSTRY_NAME_FACTORY :โรงงานแปรรูป +STR_INDUSTRY_NAME_PRINTING_WORKS :โรงผลิตกระดาษ +STR_INDUSTRY_NAME_STEEL_MILL :โรงงานเหล็กกล้า +STR_INDUSTRY_NAME_FARM :ฟาร์ม +STR_INDUSTRY_NAME_COPPER_ORE_MINE :เหมืองแร่ทองแดง +STR_INDUSTRY_NAME_OIL_WELLS :แท่นขุดเจาะน้ำมัน +STR_INDUSTRY_NAME_BANK :ธนาคาร +STR_INDUSTRY_NAME_FOOD_PROCESSING_PLANT :โรงงานแปรรูปอาหาร +STR_INDUSTRY_NAME_PAPER_MILL :โรงงานกระดาษ +STR_INDUSTRY_NAME_GOLD_MINE :เหมืองทองคำ +STR_INDUSTRY_NAME_BANK_TROPIC_ARCTIC :ธนาคาร +STR_INDUSTRY_NAME_DIAMOND_MINE :เหมืองเพชร +STR_INDUSTRY_NAME_IRON_ORE_MINE :เหมืองแร่เหล็ก +STR_INDUSTRY_NAME_FRUIT_PLANTATION :สวนอินทผาลัม +STR_INDUSTRY_NAME_RUBBER_PLANTATION :สวนยาง +STR_INDUSTRY_NAME_WATER_SUPPLY :โรงทำน้ำสะอาด +STR_INDUSTRY_NAME_WATER_TOWER :หอประปา +STR_INDUSTRY_NAME_FACTORY_2 :โรงงาน +STR_INDUSTRY_NAME_FARM_2 :ฟาร์ม +STR_INDUSTRY_NAME_LUMBER_MILL :โรงแปรรูปไม้ +STR_INDUSTRY_NAME_COTTON_CANDY_FOREST :ป่าสายไหม +STR_INDUSTRY_NAME_CANDY_FACTORY :โรงงานขนมหวาน +STR_INDUSTRY_NAME_BATTERY_FARM :ฟาร์มพลังงาน +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_BUBBLE_GENERATOR :เครื่องกำเนิดฟองลูกโป่ง +STR_INDUSTRY_NAME_TOFFEE_QUARRY :บ่อทอฟฟี่ +STR_INDUSTRY_NAME_SUGAR_MINE :เหมืองน้ำตาล + +############ 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 :ไม่มีชื่อ +STR_SV_TRAIN_NAME :รถไฟ {COMMA} +STR_SV_ROAD_VEHICLE_NAME :พาหนะทางบก {COMMA} +STR_SV_SHIP_NAME :พาหนะทางน้ำ {COMMA} +STR_SV_AIRCRAFT_NAME :อากาศยาน {COMMA} + +STR_SV_STNAME :{STRING} +STR_SV_STNAME_NORTH :{STRING} เหนือ +STR_SV_STNAME_SOUTH :{STRING} ใต้ +STR_SV_STNAME_EAST :{STRING} ตะวันออก +STR_SV_STNAME_WEST :{STRING} ตะวันตก +STR_SV_STNAME_CENTRAL :{STRING} กลาง +STR_SV_STNAME_TRANSFER :จุดขนถ่าย {STRING} +STR_SV_STNAME_HALT :ป้ายหยุด {STRING} +STR_SV_STNAME_VALLEY :หมู่บ้าน {STRING} +STR_SV_STNAME_HEIGHTS :เนิน {STRING} +STR_SV_STNAME_WOODS :ป่า {STRING} +STR_SV_STNAME_LAKESIDE :ชายหาด {STRING} +STR_SV_STNAME_EXCHANGE :จุดแลกเปลี่ยน {STRING} +STR_SV_STNAME_AIRPORT :ท่าอากาศยาน {STRING} +STR_SV_STNAME_OILFIELD :แท่นขุดเจาะ {STRING} +STR_SV_STNAME_MINES :เหมือง {STRING} +STR_SV_STNAME_DOCKS :ท่าเทียบเรือ {STRING} +STR_SV_STNAME_BUOY :{STRING} +STR_SV_STNAME_WAYPOINT :{STRING} +##id 0x6020 +STR_SV_STNAME_ANNEXE :ชานเมือง {STRING} +STR_SV_STNAME_SIDINGS :ในเมือง {STRING} +STR_SV_STNAME_BRANCH :ขนส่งสาขา {STRING} +STR_SV_STNAME_UPPER :{STRING} ตอนบน +STR_SV_STNAME_LOWER :{STRING} ตอนล่าง +STR_SV_STNAME_HELIPORT :ลานจอด ฮ {STRING} +STR_SV_STNAME_FOREST :ป่าไม้ {STRING} +STR_SV_STNAME_FALLBACK :จุดขนส่งเมือง {STRING} #{NUM} +############ end of savegame specific region! + +##id 0x8000 +# Vehicle names +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank (Steam) +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_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) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CHANEY_JUBILEE_STEAM :Chaney 'Jubilee' (Steam) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_GINZU_A4_STEAM :Ginzu 'A4' (Steam) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_8P_STEAM :SH '8P' (Steam) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MANLEY_MOREL_DMU_DIESEL :Manley-Morel DMU (Diesel) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_DASH_DIESEL :'Dash' (Diesel) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_HENDRY_25_DIESEL :SH/Hendry '25' (Diesel) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_UU_37_DIESEL :UU '37' (Diesel) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_FLOSS_47_DIESEL :Floss '47' (Diesel) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CS_4000_DIESEL :CS 4000 (Diesel) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CS_2400_DIESEL :CS 2400 (Diesel) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CENTENNIAL_DIESEL :Centennial (Diesel) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KELLING_3100_DIESEL :Kelling 3100 (Diesel) +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 :SH '125' (Diesel) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_30_ELECTRIC :SH '30' (Electric) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_40_ELECTRIC :SH '40' (Electric) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_T_I_M_ELECTRIC :'T.I.M.' (Electric) +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 :รถบรรทุกถ่านหิน +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 :รถบรรทุกซุง +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 :รถบรรทุกกระดาษ +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COPPER_ORE_HOPPER :Copper Ore Hopper +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 :ถังเก็บโคล่า +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 +STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_X2001_ELECTRIC :'X2001' (Electric) +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 :รถขนส่งไปรษณีย์ +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 +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_GOODS_VAN :Goods Van +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 :รถขนส่งหุ้มเกราะ +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 +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FRUIT_TRUCK :Fruit Truck +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 :รถขนส่งฟอง +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 +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_BATTERY_TRUCK :Battery Truck +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FIZZY_DRINK_TRUCK :Fizzy Drink Truck +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PLASTIC_TRUCK :Plastic Truck +STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV1_LEVIATHAN_ELECTRIC :Lev1 'Leviathan' (Electric) +STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV2_CYCLOPS_ELECTRIC :Lev2 'Cyclops' (Electric) +STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV3_PEGASUS_ELECTRIC :Lev3 'Pegasus' (Electric) +STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV4_CHIMAERA_ELECTRIC :Lev4 'Chimaera' (Electric) +STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_WIZZOWOW_ROCKETEER :Wizzowow Rocketeer +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PASSENGER_CAR :Passenger Carriage +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_MAIL_VAN :Mail Van +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COAL_CAR :Coal Truck +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_OIL_TANKER :Oil Tanker +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_LIVESTOCK_VAN :Livestock Van +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_GOODS_VAN :Goods Van +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_GRAIN_HOPPER :Grain Hopper +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_WOOD_TRUCK :Wood Truck +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_IRON_ORE_HOPPER :Iron Ore Hopper +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_STEEL_TRUCK :รถบรรทุกเหล็กกล้า +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_ARMORED_VAN :Armoured Van +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FOOD_VAN :Food Van +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PAPER_TRUCK :Paper Truck +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COPPER_ORE_HOPPER :Copper Ore Hopper +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_WATER_TANKER :Water Tanker +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FRUIT_TRUCK :Fruit Truck +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_RUBBER_TRUCK :Rubber Truck +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_SUGAR_TRUCK :Sugar Truck +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COTTON_CANDY_HOPPER :Candyfloss Hopper +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_TOFFEE_HOPPER :Toffee Hopper +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_BUBBLE_VAN :Bubble Van +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COLA_TANKER :Cola Tanker +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_CANDY_VAN :Sweet Van +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_TOY_VAN :Toy Van +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_BATTERY_TRUCK :Battery Truck +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FIZZY_DRINK_TRUCK :Fizzy Drink Truck +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PLASTIC_TRUCK :Plastic Truck +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 +STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_MKII_SUPERBUS :Foster MkII Superbus +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 Coal Truck +STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_COAL_TRUCK :Uhl Coal Truck +STR_VEHICLE_NAME_ROAD_VEHICLE_DW_COAL_TRUCK :DW Coal Truck +STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_MAIL_TRUCK :MPS Mail Truck +STR_VEHICLE_NAME_ROAD_VEHICLE_REYNARD_MAIL_TRUCK :Reynard Mail Truck +STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_MAIL_TRUCK :Perry Mail Truck +STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_MAIL_TRUCK :MightyMover Mail Truck +STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_MAIL_TRUCK :Powernaught Mail Truck +STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_MAIL_TRUCK :Wizzowow Mail Truck +STR_VEHICLE_NAME_ROAD_VEHICLE_WITCOMBE_OIL_TANKER :Witcombe Oil Tanker +STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_OIL_TANKER :Foster Oil Tanker +STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_OIL_TANKER :Perry Oil Tanker +STR_VEHICLE_NAME_ROAD_VEHICLE_TALBOTT_LIVESTOCK_VAN :Talbott Livestock Van +STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_LIVESTOCK_VAN :Uhl Livestock Van +STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_LIVESTOCK_VAN :Foster Livestock Van +STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_GOODS_TRUCK :Balogh Goods Truck +STR_VEHICLE_NAME_ROAD_VEHICLE_CRAIGHEAD_GOODS_TRUCK :Craighead Goods Truck +STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_GOODS_TRUCK :Goss Goods Truck +STR_VEHICLE_NAME_ROAD_VEHICLE_HEREFORD_GRAIN_TRUCK :Hereford Grain Truck +STR_VEHICLE_NAME_ROAD_VEHICLE_THOMAS_GRAIN_TRUCK :Thomas Grain Truck +STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_GRAIN_TRUCK :Goss Grain Truck +STR_VEHICLE_NAME_ROAD_VEHICLE_WITCOMBE_WOOD_TRUCK :Witcombe Wood Truck +STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_WOOD_TRUCK :รถบรรทุกไม้รุ่นฟอสเตอร์ +STR_VEHICLE_NAME_ROAD_VEHICLE_MORELAND_WOOD_TRUCK :รถบรรทุกไม้รุ่นมัวร์แลนด์ +STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_IRON_ORE_TRUCK :รถบรรทุกแร่เหล็กรุ่นเอ็มพีเอส +STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_IRON_ORE_TRUCK :รถบรรทุกแร่เหล็กรุ่นยูเอชแอล +STR_VEHICLE_NAME_ROAD_VEHICLE_CHIPPY_IRON_ORE_TRUCK :รถบรรทุกแร่เหล็กรุ่นชิปปี้ +STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_STEEL_TRUCK :รถบรรทุกเหล็กกล้ารุ่นบัลล๊อก +STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_STEEL_TRUCK :รถบรรทุกเหล็กกล้ารุ่นยูเอชแอล +STR_VEHICLE_NAME_ROAD_VEHICLE_KELLING_STEEL_TRUCK :รถบรรทุกเหล็กกล้ารุ่นเคลลิ่ง +STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_ARMORED_TRUCK :รถหุ้มเกราะรุ่นบัลล๊อก +STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_ARMORED_TRUCK :รถหุ้มเกราะรุ่นยูเอชแอล +STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_ARMORED_TRUCK :Foster Armoured Truck +STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_FOOD_VAN :Foster Food Van +STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_FOOD_VAN :Perry Food Van +STR_VEHICLE_NAME_ROAD_VEHICLE_CHIPPY_FOOD_VAN :Chippy Food Van +STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_PAPER_TRUCK :Uhl Paper Truck +STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_PAPER_TRUCK :Balogh Paper Truck +STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_PAPER_TRUCK :MPS Paper Truck +STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_COPPER_ORE_TRUCK :MPS Copper Ore Truck +STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_COPPER_ORE_TRUCK :Uhl Copper Ore Truck +STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_COPPER_ORE_TRUCK :Goss Copper Ore Truck +STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_WATER_TANKER :Uhl Water Tanker +STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_WATER_TANKER :Balogh Water Tanker +STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_WATER_TANKER :MPS Water Tanker +STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_FRUIT_TRUCK :Balogh Fruit Truck +STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_FRUIT_TRUCK :Uhl Fruit Truck +STR_VEHICLE_NAME_ROAD_VEHICLE_KELLING_FRUIT_TRUCK :Kelling Fruit Truck +STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_RUBBER_TRUCK :Balogh Rubber Truck +STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_RUBBER_TRUCK :Uhl Rubber Truck +STR_VEHICLE_NAME_ROAD_VEHICLE_RMT_RUBBER_TRUCK :RMT Rubber Truck +STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_SUGAR_TRUCK :MightyMover Sugar Truck +STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_SUGAR_TRUCK :Powernaught Sugar Truck +STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_SUGAR_TRUCK :Wizzowow Sugar Truck +STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_COLA_TRUCK :MightyMover Cola Truck +STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_COLA_TRUCK :Powernaught Cola Truck +STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_COLA_TRUCK :Wizzowow Cola Truck +STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_COTTON_CANDY :MightyMover Candyfloss Truck +STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_COTTON_CANDY :Powernaught Candyfloss Truck +STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_COTTON_CANDY_TRUCK :Wizzowow Candyfloss Truck +STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_TOFFEE_TRUCK :MightyMover Toffee Truck +STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_TOFFEE_TRUCK :Powernaught Toffee Truck +STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_TOFFEE_TRUCK :Wizzowow Toffee Truck +STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_TOY_VAN :MightyMover Toy Van +STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_TOY_VAN :Powernaught Toy Van +STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_TOY_VAN :Wizzowow Toy Van +STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_CANDY_TRUCK :MightyMover Sweet Truck +STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_CANDY_TRUCK :Powernaught Sweet Truck +STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_CANDY_TRUCK :Wizzowow Sweet Truck +STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_BATTERY_TRUCK :MightyMover Battery Truck +STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_BATTERY_TRUCK :Powernaught Battery Truck +STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_BATTERY_TRUCK :Wizzowow Battery Truck +STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_FIZZY_DRINK :MightyMover Fizzy Drink Truck +STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_FIZZY_DRINK :Powernaught Fizzy Drink Truck +STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_FIZZY_DRINK_TRUCK :Wizzowow Fizzy Drink Truck +STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_PLASTIC_TRUCK :MightyMover Plastic Truck +STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_PLASTIC_TRUCK :Powernaught Plastic Truck +STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_PLASTIC_TRUCK :Wizzowow Plastic Truck +STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_BUBBLE_TRUCK :MightyMover Bubble Truck +STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_BUBBLE_TRUCK :Powernaught Bubble Truck +STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_BUBBLE_TRUCK :Wizzowow Bubble Truck +STR_VEHICLE_NAME_SHIP_MPS_OIL_TANKER :MPS Oil Tanker +STR_VEHICLE_NAME_SHIP_CS_INC_OIL_TANKER :CS-Inc. Oil Tanker +STR_VEHICLE_NAME_SHIP_MPS_PASSENGER_FERRY :MPS Passenger Ferry +STR_VEHICLE_NAME_SHIP_FFP_PASSENGER_FERRY :FFP Passenger Ferry +STR_VEHICLE_NAME_SHIP_BAKEWELL_300_HOVERCRAFT :Bakewell 300 Hovercraft +STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :Chugger-Chug Passenger Ferry +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_POWERNAUT_CARGO_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 +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 :Tricario Helicopter +STR_VEHICLE_NAME_AIRCRAFT_GURU_X2_HELICOPTER :Guru X2 Helicopter +STR_VEHICLE_NAME_AIRCRAFT_POWERNAUT_HELICOPTER :Powernaut Helicopter + +##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} +STR_FORMAT_BUOY_NAME_SERIAL :ทุ่น {TOWN} #{COMMA} +STR_FORMAT_COMPANY_NUM :(บริษัท {COMMA}) +STR_FORMAT_GROUP_NAME :กลุ่ม {COMMA} +STR_FORMAT_INDUSTRY_NAME :{TOWN} {STRING} +STR_FORMAT_WAYPOINT_NAME :จุดตรวจ {TOWN} +STR_FORMAT_WAYPOINT_NAME_SERIAL :จุดตรวจ {TOWN} #{COMMA} + +STR_FORMAT_DEPOT_NAME_TRAIN :โรงซ่อมบำรุงรถไฟ {TOWN} +STR_FORMAT_DEPOT_NAME_TRAIN_SERIAL :โรงซ่อมบำรุงรถไฟ {TOWN} #{COMMA} +STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE :โรงซ่อมบำรุงรถ {TOWN} +STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE_SERIAL :โรงซ่อมบำรุงรถ {TOWN} #{COMMA} +STR_FORMAT_DEPOT_NAME_SHIP :อู่เรือ {TOWN} +STR_FORMAT_DEPOT_NAME_SHIP_SERIAL :อู่เรือ {TOWN} #{COMMA} +STR_FORMAT_DEPOT_NAME_AIRCRAFT :โรงเก็บเครื่องบิน {STATION} + +STR_UNKNOWN_STATION :ไม่ทราบสถานี +STR_DEFAULT_SIGN_NAME :ป้าย +STR_COMPANY_SOMEONE :บางคน + +STR_SAVEGAME_NAME_DEFAULT :{COMPANY}, {STRING} +STR_SAVEGAME_NAME_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_GROUP_NAME :{GROUP} +STR_INDUSTRY_NAME :{INDUSTRY} +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} +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_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} +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/traditional_chinese.txt b/src/lang/traditional_chinese.txt index 146b92944..046bbbcd9 100644 --- a/src/lang/traditional_chinese.txt +++ b/src/lang/traditional_chinese.txt @@ -191,35 +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} 英里/小時 +STR_UNITS_VELOCITY_METRIC :{COMMA} 公里/小時 +STR_UNITS_VELOCITY_SI :{COMMA} 米/秒 -STR_UNITS_POWER_IMPERIAL :{COMMA}hp -STR_UNITS_POWER_METRIC :{COMMA}hp -STR_UNITS_POWER_SI :{COMMA}kW +STR_UNITS_POWER_IMPERIAL :{COMMA}匹 +STR_UNITS_POWER_METRIC :{COMMA}匹 +STR_UNITS_POWER_SI :{COMMA}千瓦 -STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}t +STR_UNITS_WEIGHT_SHORT_IMPERIAL :{COMMA} 短噸 +STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}噸 STR_UNITS_WEIGHT_SHORT_SI :{COMMA}kg +STR_UNITS_WEIGHT_LONG_IMPERIAL :{COMMA} 短噸 STR_UNITS_WEIGHT_LONG_METRIC :{COMMA}公噸 -STR_UNITS_WEIGHT_LONG_SI :{COMMA} kg +STR_UNITS_WEIGHT_LONG_SI :{COMMA} 千克 -STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}l -STR_UNITS_VOLUME_SHORT_SI :{COMMA}m³ +STR_UNITS_VOLUME_SHORT_IMPERIAL :{COMMA} 加侖 +STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}升 +STR_UNITS_VOLUME_SHORT_SI :{COMMA}米³ +STR_UNITS_VOLUME_LONG_IMPERIAL :{COMMA} 加侖 STR_UNITS_VOLUME_LONG_METRIC :{COMMA} 公升 -STR_UNITS_VOLUME_LONG_SI :{COMMA} m³ +STR_UNITS_VOLUME_LONG_SI :{COMMA} 立方米 +STR_UNITS_FORCE_IMPERIAL :{COMMA} 磅力 +STR_UNITS_FORCE_METRIC :{COMMA} 公斤力 STR_UNITS_FORCE_SI :{COMMA} kN STR_UNITS_HEIGHT_IMPERIAL :{COMMA} 英呎 +STR_UNITS_HEIGHT_METRIC :{COMMA} 米 STR_UNITS_HEIGHT_SI :{COMMA} 公尺 # 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}選擇過濾條件 @@ -231,7 +240,8 @@ 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 鍵點選此掣以將選項定為常態 STR_TOOLTIP_RESIZE :{BLACK}點選並拖曳可縮放視窗大小 STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}切換大/小視窗 STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}捲軸 - 上下捲動清單 @@ -255,7 +265,6 @@ STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}區域 # These are used in buttons -STR_SORT_BY_CAPTION_POPULATION :{BLACK}人口 STR_SORT_BY_CAPTION_NAME :{BLACK}名稱 STR_SORT_BY_CAPTION_DATE :{BLACK}日期 # These are used in dropdowns @@ -276,17 +285,21 @@ STR_SORT_BY_LENGTH :長度 STR_SORT_BY_LIFE_TIME :剩餘年限 STR_SORT_BY_TIMETABLE_DELAY :時刻表誤點 STR_SORT_BY_FACILITY :車站種類 -STR_SORT_BY_WAITING :等候客貨總值 +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_CARGO_CAPACITY :載貨量 +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}暫停遊戲 @@ -299,13 +312,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}鋪設鐵軌 @@ -315,7 +330,7 @@ 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 除錯、擷取畫面、關於 OpenTTD +STR_TOOLBAR_TOOLTIP_LAND_BLOCK_INFORMATION :{BLACK}土地資訊、主控台、腳本調試、截圖、關於 OpenTTD STR_TOOLBAR_TOOLTIP_SWITCH_TOOLBAR :{BLACK}切換工具列 # Extra tooltips for the scenario editor toolbar @@ -337,6 +352,7 @@ STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}放置 ############ range for SE file menu starts STR_SCENEDIT_FILE_MENU_SAVE_SCENARIO :儲存場景 STR_SCENEDIT_FILE_MENU_LOAD_SCENARIO :載入場景 +STR_SCENEDIT_FILE_MENU_SAVE_HEIGHTMAP :儲存高度圖 STR_SCENEDIT_FILE_MENU_LOAD_HEIGHTMAP :載入高度圖 STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :離開編輯器 STR_SCENEDIT_FILE_MENU_SEPARATOR : @@ -353,10 +369,11 @@ 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 :半透明車站標籤 +STR_SETTINGS_MENU_TRANSPARENT_SIGNS :半透明標籤 ############ range ends here ############ range for file menu starts @@ -367,19 +384,19 @@ STR_FILE_MENU_SEPARATOR : STR_FILE_MENU_EXIT :離開 ############ range ends here -############ range for map menu starts +# 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, yet the town directory is shown in the map menu in the scenario editor + +############ range for town menu starts STR_TOWN_MENU_TOWN_DIRECTORY :市鎮目錄 -############ end of the 'Display map' dropdown STR_TOWN_MENU_FOUND_TOWN :興建市鎮 -############ end of the 'Town' dropdown +############ range ends here ############ range for subsidies menu starts STR_SUBSIDIES_MENU_SUBSIDIES :補助資訊 -STR_SUBSIDIES_MENU_GOAL :當前目標 ############ range ends here ############ range for graph menu starts @@ -394,10 +411,12 @@ STR_GRAPH_MENU_CARGO_PAYMENT_RATES :貨物運費表 ############ 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 @@ -442,13 +461,16 @@ STR_ABOUT_MENU_SEPARATOR : STR_ABOUT_MENU_TOGGLE_CONSOLE :切換主控台 STR_ABOUT_MENU_AI_DEBUG :AI/遊戲腳本除錯 STR_ABOUT_MENU_SCREENSHOT :擷取畫面 -STR_ABOUT_MENU_ZOOMIN_SCREENSHOT :放大截圖 +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_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 @@ -464,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 @@ -561,7 +601,7 @@ STR_PERFORMANCE_DETAIL_AMOUNT_INT :{BLACK}({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_VEHICLES :{BLACK}運輸工具: STR_PERFORMANCE_DETAIL_STATIONS :{BLACK}車站: STR_PERFORMANCE_DETAIL_MIN_PROFIT :{BLACK}最低損益: STR_PERFORMANCE_DETAIL_MIN_INCOME :{BLACK}最低收入: @@ -572,9 +612,9 @@ 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}最低收入交通工具的損益 (只計算出廠兩年以上的交通工具) +STR_PERFORMANCE_DETAIL_MIN_PROFIT_TOOLTIP :{BLACK}最低收入的運輸工具的損益(只計算出廠兩年以上的運輸工具) STR_PERFORMANCE_DETAIL_MIN_INCOME_TOOLTIP :{BLACK}最近三年的單季最低收入 STR_PERFORMANCE_DETAIL_MAX_INCOME_TOOLTIP :{BLACK}最近三年的單季最高收入 STR_PERFORMANCE_DETAIL_DELIVERED_TOOLTIP :{BLACK}前四季運送的貨物量 @@ -641,7 +681,7 @@ STR_HIGHSCORE_PERFORMANCE_TITLE_CAPITALIST :資本家 STR_HIGHSCORE_PERFORMANCE_TITLE_MAGNATE :企業鉅子 STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL :商業龍頭 STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY :世紀大亨 -STR_HIGHSCORE_NAME :{BIG_FONT}{PRESIDENT_NAME},{COMPANY} +STR_HIGHSCORE_NAME :{PRESIDENT_NAME},{COMPANY} STR_HIGHSCORE_STATS :{BIG_FONT}'{STRING}' ({COMMA}) STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{BLACK}{COMPANY} 達成「{STRING}」的地位! STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{WHITE}{PRESIDENT_NAME} 的 {COMPANY} 達成「{STRING}」 的地位! @@ -650,25 +690,28 @@ STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{WHIT STR_SMALLMAP_CAPTION :{WHITE}地圖 - {STRING} STR_SMALLMAP_TYPE_CONTOURS :地形 -STR_SMALLMAP_TYPE_VEHICLES :交通工具 +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_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_CARGO_SELECTION :{BLACK}點選一種貨物以切換是否顯示其屬性。{}按住Ctrl鍵點選貨物以顯示該貨物的屬性而隱藏其他貨物;再次按住Ctrl鍵點選則顯示所有貨物 STR_SMALLMAP_LEGENDA_ROADS :{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_VEHICLES :{TINY_FONT}{BLACK}運輸工具 STR_SMALLMAP_LEGENDA_TRAINS :{TINY_FONT}{BLACK}列車 STR_SMALLMAP_LEGENDA_ROAD_VEHICLES :{TINY_FONT}{BLACK}公車/貨車 STR_SMALLMAP_LEGENDA_SHIPS :{TINY_FONT}{BLACK}船舶 @@ -696,9 +739,10 @@ 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}全部關閉 +STR_SMALLMAP_DISABLE_ALL :{BLACK}全部停用 STR_SMALLMAP_ENABLE_ALL :{BLACK}全部打開 STR_SMALLMAP_SHOW_HEIGHT :{BLACK}顯示高度 STR_SMALLMAP_TOOLTIP_DISABLE_ALL_INDUSTRIES :{BLACK}地圖不顯示任何工業 @@ -706,6 +750,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}顯示上次訊息/新聞報告 @@ -782,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} 應當馬上退役 @@ -796,6 +841,7 @@ STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD_AND :{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} 因改裝失敗而停止 STR_NEWS_VEHICLE_AUTORENEW_FAILED :{WHITE}無法自動更新 {VEHICLE}{}{STRING} @@ -819,13 +865,14 @@ STR_NEWS_SERVICE_SUBSIDY_AWARDED_QUADRUPLE :{BIG_FONT}{BLAC STR_NEWS_ROAD_REBUILDING :{BIG_FONT}{BLACK}{TOWN} 交通大亂!{}{}{STRING} 出資的道路重建計劃為用路人帶來六個月的惡夢! STR_NEWS_EXCLUSIVE_RIGHTS_TITLE :{BIG_FONT}{BLACK}運輸大亨! +STR_NEWS_EXCLUSIVE_RIGHTS_DESCRIPTION :{BIG_FONT}{BLACK}{TOWN} 的地方政府與 {STRING} 簽訂了一年的專屬運輸權合約! # 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_TT :{BLACK}將主視野的視野位置複製到此視窗視野 -STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}將主視野移到視窗視野 -STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{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}將主視野位置移到此視窗的中央位置 # Game options window STR_GAME_OPTIONS_CAPTION :{WHITE}遊戲選項 @@ -865,15 +912,12 @@ 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 -STR_GAME_OPTIONS_MEASURING_UNITS_FRAME :{BLACK}度量單位 -STR_GAME_OPTIONS_MEASURING_UNITS_DROPDOWN_TOOLTIP :{BLACK}度量單位 ############ start of measuring units region -STR_GAME_OPTIONS_MEASURING_UNITS_IMPERIAL :英制 -STR_GAME_OPTIONS_MEASURING_UNITS_METRIC :公制 -STR_GAME_OPTIONS_MEASURING_UNITS_SI :國際單位制 ############ end of measuring units region STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}車輛 @@ -911,11 +955,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}選擇要用的介面語言 @@ -927,9 +973,6 @@ 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}選擇要使用的基本圖形集 STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} 檔案遺失/損毀 @@ -1031,12 +1074,42 @@ STR_WARNING_NO_SUITABLE_AI :{WHITE}無適 # Advanced settings window STR_CONFIG_SETTING_CAPTION :{WHITE}進階設定 - - +STR_CONFIG_SETTING_FILTER_TITLE :{BLACK}篩選字串: +STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}展開所有選項 +STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}折疊所有選項 +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_COMPANY_INGAME :公司設定 (存檔時保存;僅影響您正在控制的公司) + +STR_CONFIG_SETTING_RESTRICT_CATEGORY :{BLACK}篩選設定: +STR_CONFIG_SETTING_RESTRICT_TYPE :{BLACK}適用範圍: +STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}限制以下列表僅顯示曾被更改的設定 +STR_CONFIG_SETTING_RESTRICT_BASIC :基本設定 +STR_CONFIG_SETTING_RESTRICT_ADVANCED :進階設定 +STR_CONFIG_SETTING_RESTRICT_ALL :專業設定 / 所有設定 +STR_CONFIG_SETTING_RESTRICT_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_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 :開 -STR_CONFIG_SETTING_DISABLED :關閉 +STR_CONFIG_SETTING_DISABLED :停用 STR_CONFIG_SETTING_COMPANIES_OFF :無 STR_CONFIG_SETTING_COMPANIES_OWN :自家公司 @@ -1050,213 +1123,435 @@ STR_CONFIG_SETTING_HORIZONTAL_POS_LEFT :靠左 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_INTEREST_RATE :息率: {STRING} +STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :設定貸款息率。如果啟用了通貨膨脹的設定,則此設定同時決定通脹率 +STR_CONFIG_SETTING_RUNNING_COSTS :營運成本: {STRING} +STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT :設定運輸工具和基礎建設的營運與維護成本水平 +STR_CONFIG_SETTING_CONSTRUCTION_SPEED :建造速度: {STRING} +STR_CONFIG_SETTING_CONSTRUCTION_SPEED_HELPTEXT :限制電腦 AI 的建造速度 +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} +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_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_AUTOSLOPE :允許在建築物或軌道底下改變地形斜度 (autoslope):{STRING} -STR_CONFIG_SETTING_CATCHMENT :依車站種類不同改變收集範圍:{STRING} +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_TRAIN_LENGTH :列車長度上限: {STRING} +STR_CONFIG_SETTING_TRAIN_LENGTH_HELPTEXT :設定列車長度的上限 +STR_CONFIG_SETTING_TILE_LENGTH :{COMMA} 方格 STR_CONFIG_SETTING_SMOKE_AMOUNT :列車產生的蒸氣/火花數量:{STRING} +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_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_FORBID_90_DEG :禁止列車及船舶直角轉向:{STRING} +STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :列車於縱向路軌與橫向路軌交接之處轉向稱為「直角轉向」;列車於其他的路軌配置上轉向稱為「45度轉向」。如啟用此設定,所有列車皆不會進行直角轉向。除列車外,此設定同樣適用於船舶 STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :允許將不相鄰的車站與附近的車站結合:{STRING} -STR_CONFIG_SETTING_IMPROVEDLOAD :使用改善後的裝載演算法:{STRING} -STR_CONFIG_SETTING_GRADUAL_LOADING :交通工具逐步裝載:{STRING} +STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :容許以「CTRL 鍵 + 點選」的方式,加入與現有部份不相連接的車站部件。 STR_CONFIG_SETTING_INFLATION :通貨膨脹:{STRING} -STR_CONFIG_SETTING_SELECTGOODS :有需求才向車站供貨:{STRING} +STR_CONFIG_SETTING_INFLATION_HELPTEXT :啟用通貨膨脹,而且成本的增長會稍為比收入的增長快 +STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH :橋樑長度上限: {STRING} +STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_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} +STR_CONFIG_SETTING_MULTIPINDTOWN_HELPTEXT :在正常情況下,一座市鎮只會有一座同類型的工業。如啟用此選項,一座市鎮可建造多座同類型的工業 +STR_CONFIG_SETTING_SIGNALSIDE :顯示號誌: {STRING} +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_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_AUTOSCROLL :滑鼠在視窗邊緣時移動視窗:{STRING} +STR_CONFIG_SETTING_AUTOSCROLL_HELPTEXT :如啟用此選項,額外視野的畫面會在游標接近其視窗邊緣時捲動 +STR_CONFIG_SETTING_AUTOSCROLL_DISABLED :停用 +STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT_FULLSCREEN :主視野,僅限全螢幕模式 +STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT :主視野 +STR_CONFIG_SETTING_AUTOSCROLL_EVERY_VIEWPORT :所有視野 STR_CONFIG_SETTING_BRIBE :可向地方政府行賄:{STRING} +STR_CONFIG_SETTING_BRIBE_HELPTEXT :容許公司嘗試賄賂地方政府。如果賄賂行為被調查員揭發,公司在往後六個月內無法接觸有關地方政府 STR_CONFIG_SETTING_ALLOW_EXCLUSIVE :允許購買市鎮的專屬運輸權:{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 :容許公司出資供市鎮重建市內道路,以干擾市內的路面交通服務 STR_CONFIG_SETTING_ALLOW_GIVE_MONEY :允許流通資金給其他公司:{STRING} +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_VALUE :1 / {COMMA} STR_CONFIG_SETTING_PLANE_CRASHES :飛機墜機機率:{STRING} +STR_CONFIG_SETTING_PLANE_CRASHES_HELPTEXT :設定發生空難的機率 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_HELPTEXT :容許在市鎮擁有的道路上建造直通型車站 STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :可在競爭對手所有的道路上建設路邊車站:{STRING} -STR_CONFIG_SETTING_ADJACENT_STATIONS :允許按 Ctrl 鍵興建相鄰車站: {STRING} -STR_CONFIG_SETTING_DYNAMIC_ENGINES :允許載入多個 NewGRF 車輛組:{STRING} -STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}當此項目為交通工具時不能修改此設定 +STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT :容許在其他公司擁有的道路上建造直通型車站 +STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}當有運輸工具運轉時不能修改此設定 +STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :基礎建設維護: {STRING} +STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :如啟用此選項,基礎建設會產生維護成本。該成本的增長會根據公司基礎建設的規模而加倍增大,因此該設定對大公司的影響比對小公司更大 STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :機場永不過期:{STRING} +STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS_HELPTEXT :如啟用此選項,所有機場一經面世,就永遠可以選擇建設 -STR_CONFIG_SETTING_WARN_LOST_VEHICLE :當交通工具消失時發出警告:{STRING} -STR_CONFIG_SETTING_ORDER_REVIEW :檢查交通工具指令:{STRING} +STR_CONFIG_SETTING_WARN_LOST_VEHICLE :當運輸工具走失時發出警告:{STRING} +STR_CONFIG_SETTING_WARN_LOST_VEHICLE_HELPTEXT :切換是否顯示「運輸工具無法到達指定目的地」的訊息 +STR_CONFIG_SETTING_ORDER_REVIEW :檢查運輸工具指令:{STRING} +STR_CONFIG_SETTING_ORDER_REVIEW_HELPTEXT :如啟用此選項,系統會定時檢查運輸工具獲指派的指令,並在檢測到明顯異常的時候顯示訊息 STR_CONFIG_SETTING_ORDER_REVIEW_OFF :否 -STR_CONFIG_SETTING_ORDER_REVIEW_EXDEPOT :是,不過停止的交通工具除外 -STR_CONFIG_SETTING_ORDER_REVIEW_ON :所有交通工具 -STR_CONFIG_SETTING_WARN_INCOME_LESS :當交通工具收入為負時警告:{STRING} +STR_CONFIG_SETTING_ORDER_REVIEW_EXDEPOT :是(停止的運輸工具除外) +STR_CONFIG_SETTING_ORDER_REVIEW_ON :所有運輸工具 +STR_CONFIG_SETTING_WARN_INCOME_LESS :當運輸工具收入為負時發放警告:{STRING} +STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :如啟用此選項,系統會為上一年度賺不到錢的運輸工具顯示訊息 STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :運輸工具永不過期:{STRING} -STR_CONFIG_SETTING_AUTORENEW_VEHICLE :交通工具自動翻新: {STRING} +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_HELPTEXT :如運輸工具距離使用期限的時間小於或等於指定值,當它進入了維修設施便會被自動更換 +STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_BEFORE :前 {COMMA} 個月 +STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_AFTER :後 {COMMA} 個月 STR_CONFIG_SETTING_AUTORENEW_MONEY :自動翻新所需最低餘額:{STRING} +STR_CONFIG_SETTING_AUTORENEW_MONEY_HELPTEXT :如果公司銀行賬戶內的存款低於該設定的值,系統不會自動更換運輸工具 +STR_CONFIG_SETTING_ERRMSG_DURATION :錯誤訊息持續時間: {STRING} +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_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_ORIGINAL :原版 STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis +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} 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_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_EDGES_NOT_EMPTY :{WHITE}北邊的地圖邊緣有一格以上的區塊非空地 STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}邊緣有一格以上的區塊非水域 +STR_CONFIG_SETTING_STATION_SPREAD :車站最大直徑: {STRING} +STR_CONFIG_SETTING_STATION_SPREAD_HELPTEXT :車站單一方向可伸展的最大長度 (單位為方格)。請注意設定值過高會令遊戲變慢 STR_CONFIG_SETTING_SERVICEATHELIPAD :直升機於直升機坪自動維修:{STRING} +STR_CONFIG_SETTING_SERVICEATHELIPAD_HELPTEXT :使直升機在著地時自動維修,即使該直升機場或機場沒有維修設施亦然 STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR :地形工具列與鐵軌/道路/水道/機場建設合併:{STRING} +STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR_HELPTEXT :設定是否在開啟建設交通設施的工具列時,同時開啟地形工具列 STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR :小地圖要顯示的地形顏色:{STRING} +STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :設定在小地圖上顯示不同地形所用的顏色 STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :綠 STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :暗綠 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_MEASURE_TOOLTIP :使用某些建設工具時顯示度量提示:{STRING} +STR_CONFIG_SETTING_MEASURE_TOOLTIP_HELPTEXT :當點選建造工具後拖曳滑鼠時,是否顯示兩端的方格距離及高度差異 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 :按 鍵與小隊交談:{STRING} +STR_CONFIG_SETTING_PREFER_TEAMCHAT :傾向以 鍵開啟小隊交談功能: {STRING} +STR_CONFIG_SETTING_PREFER_TEAMCHAT_HELPTEXT :選擇是否以 鍵取代 鍵作切換公眾交談窗與公司內部交談窗之用 STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING :滑鼠滾輪作用: {STRING} +STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING_HELPTEXT :啟用以二維滑鼠滾輪捲動的支援功能 STR_CONFIG_SETTING_SCROLLWHEEL_ZOOM :放大地圖 STR_CONFIG_SETTING_SCROLLWHEEL_SCROLL :捲動地圖 STR_CONFIG_SETTING_SCROLLWHEEL_OFF :關閉 STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER :滾輪地圖捲動速度: {STRING} +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 :Control 鍵 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_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} +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_ADVANCED_VEHICLE_LISTS_HELPTEXT :啟用可以為運輸工具分組的進階運輸工具清單 STR_CONFIG_SETTING_LOADING_INDICATORS :使用裝載進度指示:{STRING} -STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :顯示時刻表時以 Tick 取代日為單位:{STRING} +STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :選擇是否在運輸工具裝卸的時候顯示裝載狀況 +STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :顯示時刻表時以刻度數目取代日為單位:{STRING} +STR_CONFIG_SETTING_TIMETABLE_IN_TICKS_HELPTEXT :在時刻表上以刻度數目取代日數顯示運行時間 STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE :顯示時刻表排定的到離時間:{STRING} -STR_CONFIG_SETTING_QUICKGOTO :快速建立交通工具調度命令:{STRING} +STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE_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_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 :設定是否在完成建造橋樑、隧道或其他基礎建設後保持點選有關的工具按鈕 STR_CONFIG_SETTING_EXPENSES_LAYOUT :將公司財務視窗的收支分組顯示:{STRING} - - -STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING :當沒有適合的可用交通工具時,禁止建造基礎建設: {STRING} +STR_CONFIG_SETTING_EXPENSES_LAYOUT_HELPTEXT :決定是否將公司財務視窗內的收支項目分組顯示 + +STR_CONFIG_SETTING_SOUND_TICKER :新聞提示: {STRING} +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_CONFIRM :建造: {STRING} +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_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_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_HELPTEXT :每所公司擁有的面車輛 (包括電車) 數量上限 STR_CONFIG_SETTING_MAX_AIRCRAFT :公司可擁有最大飛機數量:{STRING} +STR_CONFIG_SETTING_MAX_AIRCRAFT_HELPTEXT :每所公司擁有的飛機數量上限 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_AIRCRAFT :不允許電腦使用飛機:{STRING} +STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT_HELPTEXT :如啟用此選項,電腦玩家將無法建造飛機 STR_CONFIG_SETTING_AI_BUILDS_SHIPS :不允許電腦使用船舶:{STRING} +STR_CONFIG_SETTING_AI_BUILDS_SHIPS_HELPTEXT :如啟用此選項,電腦玩家將無法建造船舶 +STR_CONFIG_SETTING_AI_PROFILE :預設設定檔: {STRING} +STR_CONFIG_SETTING_AI_PROFILE_HELPTEXT :選擇隨機 AI 與新 AI 或遊戲腳本使用的預設設定檔 +STR_CONFIG_SETTING_AI_PROFILE_EASY :容易 +STR_CONFIG_SETTING_AI_PROFILE_MEDIUM :中等 +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_HELPTEXT :設定每個計算循環之中,每一句代碼最多可進行多少個計算步驟 STR_CONFIG_SETTING_SERVINT_ISPERCENT :維護間隔以百分比 (%) 計算:{STRING} -STR_CONFIG_SETTING_NOSERVICE :關閉運具故障後也不自動維護:{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_DISABLED :停用 +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_WAGONSPEEDLIMITS :開啟列車車廂速限:{STRING} +STR_CONFIG_SETTING_WAGONSPEEDLIMITS_HELPTEXT :如啟用此選項,無動力車廂的限速會影響列車的極速 STR_CONFIG_SETTING_DISABLE_ELRAILS :停用電氣化鐵路:{STRING} - -STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN :首輛交通工具抵達玩家的車站: {STRING} -STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER :首輛交通工具抵達競爭對手的車站: {STRING} -STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS :意外/災難: {STRING} +STR_CONFIG_SETTING_DISABLE_ELRAILS_HELPTEXT :如啟用此選項,電動列車可於普通軌道上行走,毋需鋪設電氣化軌道 + +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 :當對手設立的站點首次有運輸工具停靠時顯示報紙訊息 +STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS :事故/災難: {STRING} +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_ADVICE :自家公司交通工具的建議或資訊: {STRING} -STR_CONFIG_SETTING_NEWS_NEW_VEHICLES :新交通工具: {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 :摘要 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_ALLOW_SHARES :允許購買其它公司的股票:{STRING} +STR_CONFIG_SETTING_ALLOW_SHARES_HELPTEXT :啟用此選項以容許公司買賣股票。一所公司必須達到一定的年齡方能買賣股票 +STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE :轉運服務所得的收入百分比: {STRING} +STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE_HELPTEXT :設定進行轉運的運輸工具在卸載被轉運的貨物時,獲得的收入佔貨物總收入的百分比。此選項讓玩家更有效地控制收入分配方式 +STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY :拖曳滑鼠時,每隔 {STRING}設置一個號誌 +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+拖曳 的動作建造號誌時,系統產生的反應。如停用此選項,系統會在橋樑或隧道的出入口設置號誌,避免出現過長的無號誌路段;如啟用此選項,系統會每隔若干格 (可在「號誌工具列」中設定有關數量) 設置一個號誌,方便玩家對齊平行軌道上的號誌位置。 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_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_NORMAL :僅限閉塞號誌 STR_CONFIG_SETTING_CYCLE_SIGNAL_PBS :僅限路徑號誌 STR_CONFIG_SETTING_CYCLE_SIGNAL_ALL :所有號誌 STR_CONFIG_SETTING_TOWN_LAYOUT :新市鎮的道路配置:{STRING} -STR_CONFIG_SETTING_TOWN_LAYOUT_DEFAULT :預設 -STR_CONFIG_SETTING_TOWN_LAYOUT_BETTER_ROADS :較佳規劃 +STR_CONFIG_SETTING_TOWN_LAYOUT_HELPTEXT :設定市鎮的道路規劃配置 +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_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_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_FORBIDDEN :禁止 STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :允許 STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :允許,可自訂市鎮道路配置 STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT :遊戲中產生樹木的地點:{STRING} +STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_HELPTEXT :控制遊戲內是否隨意種植樹木。此選項可能會影響一些依賴樹木的工業 (例如熱帶氣候的伐木場) STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NONE :不產生 {RED}(伐木場會停止運作) STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_RAINFOREST :只在雨林區產生 STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_ALL :到處產生 STR_CONFIG_SETTING_TOOLBAR_POS :主工具列位置:{STRING} +STR_CONFIG_SETTING_TOOLBAR_POS_HELPTEXT :設定主工具列在螢幕頂部的位置 STR_CONFIG_SETTING_STATUSBAR_POS :狀態列顯示位置:{STRING} -STR_CONFIG_SETTING_SOFT_LIMIT :不貼齊視窗的最大數量:{STRING} +STR_CONFIG_SETTING_STATUSBAR_POS_HELPTEXT :設定狀態列在螢幕底部的位置 +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 :停用 +STR_CONFIG_SETTING_SOFT_LIMIT :一般視窗的數量上限:{STRING} +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_LVL_MIN :4x STR_CONFIG_SETTING_ZOOM_LVL_IN_2X :2x STR_CONFIG_SETTING_ZOOM_LVL_NORMAL :正常 @@ -1264,60 +1559,138 @@ 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 :市鎮成長速度:{STRING} +STR_CONFIG_SETTING_TOWN_GROWTH_HELPTEXT :市鎮成長速度 STR_CONFIG_SETTING_TOWN_GROWTH_NONE :停滯 STR_CONFIG_SETTING_TOWN_GROWTH_SLOW :慢 STR_CONFIG_SETTING_TOWN_GROWTH_NORMAL :正常 STR_CONFIG_SETTING_TOWN_GROWTH_FAST :快 STR_CONFIG_SETTING_TOWN_GROWTH_VERY_FAST :非常快 +STR_CONFIG_SETTING_LARGER_TOWNS :城市佔全部市鎮之比例: {STRING} +STR_CONFIG_SETTING_LARGER_TOWNS_HELPTEXT :設定可以成為城市的市鎮數量。城市的起始人口和增長速度皆比一般市鎮高 +STR_CONFIG_SETTING_LARGER_TOWNS_VALUE :每 {COMMA} 座市鎮有 1 座城市 +STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :無 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_VEHICLES :{ORANGE}交通工具 -STR_CONFIG_SETTING_STATIONS :{ORANGE}車站 -STR_CONFIG_SETTING_ECONOMY :{ORANGE}經濟 +STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :設定遊戲開始時城市的大小 (相對於一般市鎮而言) + +STR_CONFIG_SETTING_LINKGRAPH_INTERVAL :每{STRING}日更新貨物分配圖 +STR_CONFIG_SETTING_LINKGRAPH_INTERVAL_HELPTEXT :指定每次計算貨物分配圖之間的時間。由於每次重新計算只會處理一個貨物分配圖元件,因此本設定不代表「每若干日重新計算整個貨物分配圖」。{}如果此設定賦值越小,則系統需要使用更多處理器時間計算貨物分配圖。相反,如果此設定賦值越大,則貨物被派往新路線所需的時間越長。 +STR_CONFIG_SETTING_LINKGRAPH_TIME :每次更新貨物分配圖持續 {STRING} 天 +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的值,則出發站與另一站的距離會影響該路線獲分派貨物的數量。目的站距離越遠,獲分派的貨物越少。此設定的賦值越大,越多貨物會被派往較接近的站。 +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 :貨物分配功能在派送貨物時,會優先使用最短路徑,至其飽和後改用第二短的路徑,如此類推。當所有路徑皆飽和但仍未滿足需求,系統會由容量較大的路徑開始繼續加載貨物。{}由於路徑飽和度難以準確估算,此設定容許您定義一值,使短路徑達至該飽和度後,系統便開始加載容量較大的路徑。{}如果此設定的值少於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_SOUND :{ORANGE}音效 +STR_CONFIG_SETTING_INTERFACE :{ORANGE}介面 +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}建造 +STR_CONFIG_SETTING_VEHICLES :{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_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 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_SHIPS :船隻的路徑搜尋方式:{STRING} +STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT :設定船舶使用的路徑搜尋方式 STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :在號誌自動倒轉: {STRING} +STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT :設定是否容許列車在號誌前等候超過一段時間後調頭 STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}修改設定值 # Config errors +STR_CONFIG_ERROR :{WHITE}讀取或更新設定檔時出錯 +STR_CONFIG_ERROR_ARRAY :{WHITE}... 處理陣列 '{STRING}' 時出錯 +STR_CONFIG_ERROR_INVALID_VALUE :{WHITE}... '{STRING}' 不是 '{STRING}' 的有效值 +STR_CONFIG_ERROR_TRAILING_CHARACTERS :{WHITE}... 在設定 '{STRING}' 的末尾有殘餘字句 +STR_CONFIG_ERROR_DUPLICATE_GRFID :{WHITE}... 正在忽略 NewGRF 套件 '{STRING}': 此套件的 GRF 識別碼與 '{STRING}' 的 GRF 識別碼相同 +STR_CONFIG_ERROR_INVALID_GRF :{WHITE}... 正在忽略無效的 NewGRF 套件 '{STRING}': {STRING} STR_CONFIG_ERROR_INVALID_GRF_NOT_FOUND :找不到 +STR_CONFIG_ERROR_INVALID_GRF_UNSAFE :此套件被標記為「不安全」,不能載入為靜態 NewGRF STR_CONFIG_ERROR_INVALID_GRF_SYSTEM :系統 NewGRF STR_CONFIG_ERROR_INVALID_GRF_INCOMPATIBLE :與此版本的OpenTTD不相容 STR_CONFIG_ERROR_INVALID_GRF_UNKNOWN :不明 +STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_LEVEL :{WHITE}... 無效的壓縮層級值 '{STRING}' +STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_ALGORITHM :{WHITE}... 本版本不支援存檔格式 '{STRING}',現改用 '{STRING}' 格式 +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}記憶體不足 +STR_CONFIG_ERROR_SPRITECACHE_TOO_BIG :{WHITE}無法編配{BYTES}作為子畫面快取。子畫面快取的大小已降至{BYTES}。OpenTTD的效能會受到影響。請嘗試停用32bpp圖形及/或減少放大倍數,以減低記憶體要求 # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} STR_INTRO_NEW_GAME :{BLACK}開新遊戲 STR_INTRO_LOAD_GAME :{BLACK}載入遊戲 -STR_INTRO_PLAY_SCENARIO :{BLACK}以此場景開始 -STR_INTRO_PLAY_HEIGHTMAP :{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_HIGHSCORE :{BLACK}積分排行榜 STR_INTRO_ADVANCED_SETTINGS :{BLACK}進階設定 STR_INTRO_NEWGRF_SETTINGS :{BLACK}NewGRF 設定 STR_INTRO_ONLINE_CONTENT :{BLACK}檢查線上內容 @@ -1337,6 +1710,7 @@ 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_ONLINE_CONTENT :{BLACK}檢查有無最新或可更新的內容可下載 @@ -1393,21 +1767,21 @@ 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}選擇所選配色的主色調 -STR_LIVERY_SECONDARY_TOOLTIP :{BLACK}選擇所選配色的副色調 +STR_LIVERY_PRIMARY_TOOLTIP :{BLACK}選擇所選配色的主色調。如按住 Ctrl 鍵點選色調,則所有配色皆採用此顏色為主色調 +STR_LIVERY_SECONDARY_TOOLTIP :{BLACK}選擇所選配色的副色調。如按住 Ctrl 掣點選色調,則所有配色皆採用此顏色為副色調 STR_LIVERY_PANEL_TOOLTIP :{BLACK}選擇要修改的配色,按住 CTRL 可同時選擇多種配色,勾選方框可切換是否使用配色 STR_LIVERY_DEFAULT :標準配色 STR_LIVERY_STEAM :蒸汽機車 STR_LIVERY_DIESEL :柴油車頭 STR_LIVERY_ELECTRIC :電力車頭 -STR_LIVERY_MONORAIL :單軌車頭 -STR_LIVERY_MAGLEV :磁浮車頭 +STR_LIVERY_MONORAIL :單軌鐵路機車 +STR_LIVERY_MAGLEV :磁浮機車 STR_LIVERY_DMU :柴聯車組 STR_LIVERY_EMU :電聯車組 -STR_LIVERY_PASSENGER_WAGON_STEAM :載客車廂 (蒸氣) -STR_LIVERY_PASSENGER_WAGON_DIESEL :載客車廂 (柴油) -STR_LIVERY_PASSENGER_WAGON_ELECTRIC :載客車廂 (電力) +STR_LIVERY_PASSENGER_WAGON_STEAM :載客車廂 (蒸汽列車) +STR_LIVERY_PASSENGER_WAGON_DIESEL :載客車廂 (柴油列車) +STR_LIVERY_PASSENGER_WAGON_ELECTRIC :載客車廂 (電動列車) STR_LIVERY_PASSENGER_WAGON_MONORAIL :載客車廂 (單軌) STR_LIVERY_PASSENGER_WAGON_MAGLEV :載客車廂 (磁浮) STR_LIVERY_FREIGHT_WAGON :載貨車廂 @@ -1425,6 +1799,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}選擇男性臉孔 @@ -1480,10 +1855,10 @@ STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}改變 # Network server list STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}多人遊戲 -STR_NETWORK_SERVER_LIST_CONNECTION :{BLACK}連線: -STR_NETWORK_SERVER_LIST_CONNECTION_TOOLTIP :{BLACK}選擇網際網路 (Internet) 或區域網路 (LAN) 遊戲 -STR_NETWORK_SERVER_LIST_LAN :區域網路 (LAN) -STR_NETWORK_SERVER_LIST_INTERNET :網際網路 (Internet) +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}這是其他玩家辨認您的名稱 @@ -1542,8 +1917,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_LAN_INTERNET :區域網路/網際網路 -STR_NETWORK_START_SERVER_INTERNET_ADVERTISE :網際網路 (廣告) +STR_NETWORK_START_SERVER_UNADVERTISED :否 +STR_NETWORK_START_SERVER_ADVERTISED :是 STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} 玩家 STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}用戶端上限: STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}選擇連線人數上限,但不是每個名額都要有人連線 @@ -1612,7 +1987,7 @@ STR_NETWORK_GAME_LOBBY_CURRENT_BALANCE :{SILVER}目前 STR_NETWORK_GAME_LOBBY_LAST_YEARS_INCOME :{SILVER}去年收入:{WHITE}{CURRENCY_LONG} STR_NETWORK_GAME_LOBBY_PERFORMANCE :{SILVER}效率:{WHITE}{NUM} -STR_NETWORK_GAME_LOBBY_VEHICLES :{SILVER}交通工具:{WHITE}{NUM} {TRAIN}, {NUM} {LORRY}, {NUM} {BUS}, {NUM} {SHIP}, {NUM} {PLANE} +STR_NETWORK_GAME_LOBBY_VEHICLES :{SILVER}運輸工具總數:{WHITE}{NUM} {TRAIN}, {NUM} {LORRY}, {NUM} {BUS}, {NUM} {SHIP}, {NUM} {PLANE} STR_NETWORK_GAME_LOBBY_STATIONS :{SILVER}車站:{WHITE}{NUM} {TRAIN}, {NUM} {LORRY}, {NUM} {BUS}, {NUM} {SHIP}, {NUM} {PLANE} STR_NETWORK_GAME_LOBBY_PLAYERS :{SILVER}玩家:{WHITE}{STRING} @@ -1664,6 +2039,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}不要儲存所輸入的密碼 @@ -1712,6 +2088,9 @@ STR_NETWORK_ERROR_KICKED :{WHITE}您被 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_JOIN :{WHITE}您的電腦花了太多時間嘗試加入這個伺服器 ############ Leave those lines in this order!! STR_NETWORK_ERROR_CLIENT_GENERAL :一般錯誤 @@ -1730,6 +2109,8 @@ STR_NETWORK_ERROR_CLIENT_KICKED :被伺服器踢 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_MAP :下載地圖需時太長 STR_NETWORK_ERROR_CLIENT_TIMEOUT_JOIN :處理地圖需時太長 ############ End of leave-in-this-order @@ -1777,8 +2158,13 @@ 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無聯繫的網站搜尋沒有納入OpenTTD內容服務的內容 +STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER_CAPTION :{WHITE}您正在離開 OpenTTD! +STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER :{WHITE}在外部網站下載內容的規則及條款可能跟OpenTTD引用的規則及條款不同。{}您需要參照有關網站以取得在OpenTTD安裝有關內容的資訊。{}您要繼續嗎? STR_CONTENT_FILTER_TITLE :{BLACK}過濾條件 (標籤/名稱): STR_CONTENT_OPEN_URL :{BLACK}訪問網站 +STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}請造訪有關網站以取得此內容 STR_CONTENT_DOWNLOAD_CAPTION :{BLACK}下載 STR_CONTENT_DOWNLOAD_CAPTION_TOOLTIP :{BLACK}開始下載選擇的內容 STR_CONTENT_TOTAL_DOWNLOAD_SIZE :{SILVER}總下載大小:{WHITE}{BYTES} @@ -1828,12 +2214,13 @@ STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD_FILE_NOT_WRITABLE :{WHITE}... 檔 STR_CONTENT_ERROR_COULD_NOT_EXTRACT :{WHITE}無法解壓縮已下載的檔案 STR_MISSING_GRAPHICS_SET_CAPTION :{WHITE}缺少圖形 +STR_MISSING_GRAPHICS_SET_MESSAGE :{BLACK}OpenTTD 需要圖形包運作,但找不到任何圖形包。您容許 OpenTTD 自動下載及安裝圖形包嗎? STR_MISSING_GRAPHICS_YES_DOWNLOAD :{BLACK}是,下載圖形 STR_MISSING_GRAPHICS_NO_QUIT :{BLACK}否,離開 OpenTTD # Transparency settings window STR_TRANSPARENCY_CAPTION :{WHITE}透明度選項 -STR_TRANSPARENT_SIGNS_TOOLTIP :{BLACK}切換車站標籤是否透明。按住 CTRL 點選可鎖定 +STR_TRANSPARENT_SIGNS_TOOLTIP :{BLACK}切換車站標籤是否透明。按住 Ctrl 鍵點選此掣以鎖定狀態 STR_TRANSPARENT_TREES_TOOLTIP :{BLACK}切換樹木是否透明。按住 CTRL 點選可鎖定 STR_TRANSPARENT_HOUSES_TOOLTIP :{BLACK}切換房屋是否透明。按住 CTRL 點選可鎖定 STR_TRANSPARENT_INDUSTRIES_TOOLTIP :{BLACK}切換工業是否透明。按住 CTRL 點選可鎖定 @@ -1844,6 +2231,17 @@ STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}切換 STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}切換裝載進度指示是否透明。按住 CTRL 點選可鎖定 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}顯示運輸涵蓋範圍 STR_STATION_BUILD_COVERAGE_OFF :{BLACK}關 @@ -1880,7 +2278,7 @@ STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL :{BLACK}轉換 STR_RAIL_NAME_RAILROAD :鐵路 STR_RAIL_NAME_ELRAIL :電氣化鐵路 STR_RAIL_NAME_MONORAIL :單軌鐵路 -STR_RAIL_NAME_MAGLEV :磁浮列車 +STR_RAIL_NAME_MAGLEV :磁浮鐵路 # Rail depot construction window STR_BUILD_DEPOT_TRAIN_ORIENTATION_CAPTION :{WHITE}鐵路機廠方向 @@ -1974,9 +2372,9 @@ 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) @@ -2044,7 +2442,7 @@ 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}種植隨機種類樹木。按 Shift 可切換種植/顯示預估的種植費用 STR_TREES_RANDOM_TREES_BUTTON :{BLACK}隨機樹種 @@ -2118,6 +2516,10 @@ 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}選擇貨物種類 +STR_INDUSTRY_CARGOES_SELECT_CARGO_TOOLTIP :{BLACK}選擇您希望顯示的貨物種類 +STR_INDUSTRY_CARGOES_SELECT_INDUSTRY :{BLACK}選擇工業種類 +STR_INDUSTRY_CARGOES_SELECT_INDUSTRY_TOOLTIP :{BLACK}選擇您希望顯示的工業種類 # Land area window STR_LAND_AREA_INFORMATION_CAPTION :{WHITE}土地資訊 @@ -2142,6 +2544,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 :石頭 @@ -2153,6 +2556,28 @@ 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_TRAIN_DEPOT :{STRING}機廠 STR_LAI_ROAD_DESCRIPTION_ROAD :公路 STR_LAI_ROAD_DESCRIPTION_ROAD_WITH_STREETLIGHTS :有路燈的公路 @@ -2216,7 +2641,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-2012 OpenTTD 開發小組 +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2014 OpenTTD 開發小組 # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}儲存遊戲 @@ -2224,6 +2649,7 @@ STR_SAVELOAD_LOAD_CAPTION :{WHITE}載入 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_BYTES_FREE :{BLACK}空間尚有 {BYTES} STR_SAVELOAD_LIST_TOOLTIP :{BLACK}列出磁碟、目錄與遊戲存檔 @@ -2234,6 +2660,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} @@ -2244,6 +2671,7 @@ STR_SAVELOAD_OSKTITLE :{BLACK}為存 # World generation STR_MAPGEN_WORLD_GENERATION_CAPTION :{WHITE}產生世界 STR_MAPGEN_MAPSIZE :{BLACK}地圖大小: +STR_MAPGEN_MAPSIZE_TOOLTIP :{BLACK}選擇地圖大小(單位為方格)。實際可供使用的方格數量會比所設定的值略低 STR_MAPGEN_BY :{BLACK}* STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}市鎮數量: STR_MAPGEN_DATE :{BLACK}日期: @@ -2251,14 +2679,11 @@ 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}地形種類: STR_MAPGEN_QUANTITY_OF_SEA_LAKES :{BLACK}海平面: +STR_MAPGEN_QUANTITY_OF_RIVERS :{BLACK}河流: STR_MAPGEN_SMOOTHNESS :{BLACK}平滑度: STR_MAPGEN_VARIETY :{BLACK}地形起伏分佈: STR_MAPGEN_GENERATE :{WHITE}產生 @@ -2280,7 +2705,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}修改開始年份 @@ -2303,11 +2727,13 @@ STR_GENERATION_ABORT_MESSAGE :{YELLOW}您確 STR_GENERATION_PROGRESS :{WHITE}完成 {NUM}% STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / {NUM} STR_GENERATION_WORLD_GENERATION :{BLACK}產生世界 +STR_GENERATION_RIVER_GENERATION :{BLACK}產生河流 STR_GENERATION_TREE_GENERATION :{BLACK}產生樹木 STR_GENERATION_OBJECT_GENERATION :{BLACK}無法移動 STR_GENERATION_CLEARING_TILES :{BLACK}產生粗地與岩石區域 STR_GENERATION_SETTINGUP_GAME :{BLACK}設定遊戲 STR_GENERATION_PREPARING_TILELOOP :{BLACK}執行單格迴圈中 +STR_GENERATION_PREPARING_SCRIPT :{BLACK}正在運行腳本 STR_GENERATION_PREPARING_GAME :{BLACK}準備遊戲中 # NewGRF settings @@ -2333,9 +2759,12 @@ 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}設定參數 +STR_NEWGRF_SETTINGS_SHOW_PARAMETERS :{BLACK}顯示參數 STR_NEWGRF_SETTINGS_TOGGLE_PALETTE :{BLACK}切換色盤 STR_NEWGRF_SETTINGS_TOGGLE_PALETTE_TOOLTIP :{BLACK}切換所選 NewGRF 的色盤。{}若是該 NewGRF 檔在遊戲中看起來是一片橘色,您可以試試這麼做以解決問題 STR_NEWGRF_SETTINGS_APPLY_CHANGES :{BLACK}儲存變動 @@ -2353,9 +2782,17 @@ STR_NEWGRF_SETTINGS_PARAMETER :{BLACK}參數 STR_NEWGRF_SETTINGS_NO_INFO :{BLACK}沒有相關資訊 STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}找不到符合的檔案 -STR_NEWGRF_SETTINGS_DISABLED :{RED}關閉 +STR_NEWGRF_SETTINGS_DISABLED :{RED}停用 STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}與此版本的OpenTTD不相容 +# NewGRF save preset window +STR_SAVE_PRESET_CAPTION :{WHITE}儲存設定值 +STR_SAVE_PRESET_TITLE :{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}關閉 @@ -2397,18 +2834,28 @@ STR_NEWGRF_ERROR_MSG_INFO :{SILVER}{STRING STR_NEWGRF_ERROR_MSG_WARNING :{RED}警告:{SILVER}{STRING} STR_NEWGRF_ERROR_MSG_ERROR :{RED}錯誤:{SILVER}{STRING} STR_NEWGRF_ERROR_MSG_FATAL :{RED}嚴重錯誤:{SILVER}{STRING} -STR_NEWGRF_ERROR_FATAL_POPUP :{WHITE}NewGRF 發生嚴重錯誤的處理方式:{}{STRING} +STR_NEWGRF_ERROR_FATAL_POPUP :{WHITE}發生嚴重 NewGRF 錯誤的處理方式:{}{STRING} STR_NEWGRF_ERROR_VERSION_NUMBER :{1:STRING} 跟由 OpenTTD 回報的 TTDPatch 版本不合 STR_NEWGRF_ERROR_DOS_OR_WINDOWS :{1:STRING} 只適合用於 TTD 版本 {STRING} STR_NEWGRF_ERROR_UNSET_SWITCH :{1:STRING} 必須跟 {STRING} 一起使用 STR_NEWGRF_ERROR_INVALID_PARAMETER :{1:STRING} 的參數無效:參數 {STRING} ({NUM}) +STR_NEWGRF_ERROR_LOAD_BEFORE :{1:STRING} 必須在 {STRING} 之前載入 STR_NEWGRF_ERROR_LOAD_AFTER :{1:STRING} 必須要在 {STRING} 之後載入 STR_NEWGRF_ERROR_OTTD_VERSION_NUMBER :{1:STRING} 需要 OpenTTD 版本 {STRING} 或更新的版本 STR_NEWGRF_ERROR_AFTER_TRANSLATED_FILE :GRF 檔案翻譯後出現錯誤 STR_NEWGRF_ERROR_TOO_MANY_NEWGRFS_LOADED :已載入太多 NewGRF -STR_NEWGRF_ERROR_STATIC_GRF_CAUSES_DESYNC :與{2:STRING} 將 {1:STRING} 載入為靜態 NewGRF 可能會讓遊戲失去同步 +STR_NEWGRF_ERROR_STATIC_GRF_CAUSES_DESYNC :在已載入 {2:STRING} 的情況下將 {1:STRING} 載入為靜態 NewGRF,可能會造成同步失敗 +STR_NEWGRF_ERROR_UNEXPECTED_SPRITE :第 {3:NUM} 個子畫面與預期的畫面不符 +STR_NEWGRF_ERROR_UNKNOWN_PROPERTY :未知的 Action 0 屬性 {4:HEX} (發生於第 {3:NUM} 個子畫面) +STR_NEWGRF_ERROR_INVALID_ID :子畫面企圖使用無效的識別碼 (發生於第 {3:NUM} 個子畫面) STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} 包含了毀損的 sprite。所有毀損的 sprite 會以紅色問號 (?) 顯示。 +STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :過多的 Action 8 資料 (發生於第 {3:NUM} 個子畫面) +STR_NEWGRF_ERROR_READ_BOUNDS :子畫面資料不足 (發生於第 {3:NUM} 個子畫面) STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}目前使用的基本圖形集少了某些 sprite。{}請更新基本圖形集。 +STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}你正在使用的圖形集缺少了一些圖形.{}請更新圖形集. {}因為你正在使用一個{YELLOW}開發中的OpenTTD{WHITE},你可能需要一個{YELLOW}開發中的圖形集{WHITE} +STR_NEWGRF_ERROR_GRM_FAILED :要求的 GRF 資料不存在或無法讀取 (發生於第 {3:NUM} 個子畫面) +STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{2:STRING} 使 {1:STRING} 被停用 +STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :無效或無法識別的子畫面配置格式 (發生於第 {3:NUM} 個子畫面) # NewGRF related 'general' warnings STR_NEWGRF_POPUP_CAUTION_CAPTION :{WHITE}注意! @@ -2416,15 +2863,16 @@ STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}您將 STR_NEWGRF_DUPLICATE_GRFID :{WHITE}無法新增檔案:GRF ID 重複 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_DISABLED_WARNING :{WHITE}找不到的 GRF 檔案已被停用 STR_NEWGRF_UNPAUSE_WARNING_TITLE :{YELLOW}缺少某些 GRF 檔案 STR_NEWGRF_UNPAUSE_WARNING :{WHITE}取消暫停可能會讓 OpenTTD 當掉,請不要回報之後的當機情形。{}您真的要取消暫停嗎? # NewGRF status STR_NEWGRF_LIST_NONE :無 -STR_NEWGRF_LIST_ALL_FOUND :目前所有檔案 +STR_NEWGRF_LIST_ALL_FOUND :所有檔案齊備 STR_NEWGRF_LIST_COMPATIBLE :{YELLOW}發現相容檔案 STR_NEWGRF_LIST_MISSING :{RED}缺少檔案 @@ -2432,20 +2880,28 @@ 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}' 提供了錯誤的資訊。 -STR_NEWGRF_BUGGY_ARTICULATED_CARGO :{WHITE}購買清單中 '{1:ENGINE}' 的貨物/改裝資訊和購買後的資訊不同。 這可能會導致自動更新/取代時無法正確的改裝交通工具。 +STR_NEWGRF_BUGGY_ARTICULATED_CARGO :{WHITE}購買清單中 '{1:ENGINE}' 的貨物/改裝資訊和購買後的資訊不同。 這可能會導致自動更新/取代時無法正確的改裝該運輸工具。 STR_NEWGRF_BUGGY_ENDLESS_PRODUCTION_CALLBACK :{WHITE}{1:STRING}會導致產量 Callback 時發生無窮迴圈的錯誤。 +STR_NEWGRF_BUGGY_UNKNOWN_CALLBACK_RESULT :{WHITE}回調程序 {1:HEX} 返回預料之外或無效的結果: {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_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 套件較多,可能需要較長時間完成... +STR_NEWGRF_SCAN_STATUS :{BLACK}估計共有 {1:NUM} 個 NewGRF 套件,現已掃描 {0:NUM} 個... STR_NEWGRF_SCAN_ARCHIVES :審視檔案中 # Sign list window @@ -2471,13 +2927,16 @@ STR_TOWN_POPULATION :{BLACK}世界 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_MAIL_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 :{RED}還需要 {ORANGE}{STRING} +STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{RED}需要 {ORANGE}{STRING} 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}(已運送) +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_GROW_STOPPED :{BLACK}市鎮{RED}不在{BLACK}成長 STR_TOWN_VIEW_NOISE_IN_TOWN :{BLACK}市鎮噪音限制:{ORANGE}{COMMA}{BLACK} 最大:{ORANGE}{COMMA} STR_TOWN_VIEW_CENTER_TOOLTIP :{BLACK}將市鎮置於畫面中央。按住 Ctrl 點選可於市鎮位置開啟新視窗視野 @@ -2506,7 +2965,7 @@ STR_LOCAL_AUTHORITY_ACTION_MEDIUM_ADVERTISING_CAMPAIGN :中型廣告活 STR_LOCAL_AUTHORITY_ACTION_LARGE_ADVERTISING_CAMPAIGN :大型廣告活動 STR_LOCAL_AUTHORITY_ACTION_ROAD_RECONSTRUCTION :出資重建當地道路 STR_LOCAL_AUTHORITY_ACTION_STATUE_OF_COMPANY :建造公司所有人的雕像 -STR_LOCAL_AUTHORITY_ACTION_NEW_BUILDINGS :出資建造新建築物 +STR_LOCAL_AUTHORITY_ACTION_NEW_BUILDINGS :資助市鎮建設 STR_LOCAL_AUTHORITY_ACTION_EXCLUSIVE_TRANSPORT :購買專屬運輸權 STR_LOCAL_AUTHORITY_ACTION_BRIBE :向地方政府行賄 @@ -2515,20 +2974,47 @@ STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_MEDIUM_ADVERTISING :{YELLOW}開始 STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_LARGE_ADVERTISING :{YELLOW}開始進行大型地方廣告活動,為您的運輸服務吸引更多乘客與貨物。{}費用:{CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_ROAD_RECONSTRUCTION :{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_NEW_BUILDINGS :{YELLOW}出資協助市鎮建造新的商業建築。{}費用:{CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT :{YELLOW}購買此市鎮一年的專屬運輸權。地方政府將只讓乘客與貨物使用您的運輸服務。{}費用:{CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}冒著被抓到嚴懲的風險,向地方政府行賄以提高評價{}費用:{CURRENCY_LONG} # Goal window -STR_GOALS_CAPTION :{WHITE}目標 +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 鍵並點選目標以開啟一個以有關工業 / 市鎮或方格為中心的新視野 # Goal question window +STR_GOAL_QUESTION_CAPTION_QUESTION :問題 +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 :取消 +STR_GOAL_QUESTION_BUTTON_OK :確定 +STR_GOAL_QUESTION_BUTTON_NO :否 +STR_GOAL_QUESTION_BUTTON_YES :是 +STR_GOAL_QUESTION_BUTTON_DECLINE :拒絕 +STR_GOAL_QUESTION_BUTTON_ACCEPT :接受 +STR_GOAL_QUESTION_BUTTON_IGNORE :忽略 +STR_GOAL_QUESTION_BUTTON_RETRY :重試 +STR_GOAL_QUESTION_BUTTON_PREVIOUS :上一個 +STR_GOAL_QUESTION_BUTTON_NEXT :下一個 +STR_GOAL_QUESTION_BUTTON_STOP :停止 +STR_GOAL_QUESTION_BUTTON_START :開始 +STR_GOAL_QUESTION_BUTTON_GO :去 +STR_GOAL_QUESTION_BUTTON_CONTINUE :繼續 +STR_GOAL_QUESTION_BUTTON_RESTART :重新啟動 +STR_GOAL_QUESTION_BUTTON_POSTPONE :延遲 +STR_GOAL_QUESTION_BUTTON_SURRENDER :投降 +STR_GOAL_QUESTION_BUTTON_CLOSE :關閉 # Subsidies window STR_SUBSIDIES_CAPTION :{WHITE}補助資訊 @@ -2539,6 +3025,18 @@ STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}已獲 STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}將 {STRING} 從 {STRING} 運到 {STRING}{YELLOW} ({COMPANY}{YELLOW},補助到 {DATE_SHORT}) 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_USE_CTRL_TO_SELECT_MORE :{BLACK}按住 CTRL 選擇多個項目 @@ -2552,19 +3050,44 @@ 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_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}顯示接受的貨物種類 STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}接受:{WHITE}{CARGO_LIST} +STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}此車站享有所屬市鎮的專屬運輸權 +STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK}已購買此市鎮的專屬運輸權 STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}評價 STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}顯示車站評價 -STR_STATION_VIEW_CARGO_RATINGS_TITLE :{BLACK}本地對運輸服務的評價: -STR_STATION_VIEW_CARGO_RATING :{WHITE}{STRING}:{YELLOW}{STRING} ({COMMA}%) +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 :慘不忍睹 @@ -2604,7 +3127,7 @@ STR_FINANCES_CAPTION :{WHITE}{COMPANY STR_FINANCES_EXPENDITURE_INCOME_TITLE :{WHITE}收入/支出 STR_FINANCES_YEAR :{WHITE}{NUM} STR_FINANCES_SECTION_CONSTRUCTION :{GOLD}建造 -STR_FINANCES_SECTION_NEW_VEHICLES :{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_AIRCRAFT_RUNNING_COSTS :{GOLD}飛機營運成本 @@ -2627,6 +3150,7 @@ STR_FINANCES_BORROW_BUTTON :{BLACK}貸款 { STR_FINANCES_BORROW_TOOLTIP :{BLACK}增加貸款。 按住 Ctrl 點選可貸款最大額度 STR_FINANCES_REPAY_BUTTON :{BLACK}償還 {CURRENCY_LONG} STR_FINANCES_REPAY_TOOLTIP :{BLACK}償還貸款。 按住 Ctrl 點選可償還最大額度 +STR_FINANCES_INFRASTRUCTURE_BUTTON :{BLACK}基礎建設 # Company view STR_COMPANY_VIEW_CAPTION :{WHITE}{COMPANY} {BLACK}{COMPANY_NUM} @@ -2634,7 +3158,7 @@ STR_COMPANY_VIEW_PRESIDENT_MANAGER_TITLE :{WHITE}{PRESIDE STR_COMPANY_VIEW_INAUGURATED_TITLE :{GOLD}成立於:{WHITE}{NUM} STR_COMPANY_VIEW_COLOUR_SCHEME_TITLE :{GOLD}配色: -STR_COMPANY_VIEW_VEHICLES_TITLE :{GOLD}交通工具: +STR_COMPANY_VIEW_VEHICLES_TITLE :{GOLD}運輸工具總數: STR_COMPANY_VIEW_TRAINS :{WHITE}列車 {COMMA} 列 STR_COMPANY_VIEW_ROAD_VEHICLES :{WHITE}車輛 {COMMA} 部 STR_COMPANY_VIEW_AIRCRAFT :{WHITE}飛機 {COMMA} 架 @@ -2642,6 +3166,13 @@ STR_COMPANY_VIEW_SHIPS :{WHITE}船舶 { 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_ROAD :{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}無 STR_COMPANY_VIEW_BUILD_HQ_BUTTON :{BLACK}建造總部 STR_COMPANY_VIEW_BUILD_HQ_TOOLTIP :{BLACK}建造公司總部 @@ -2649,11 +3180,13 @@ 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% 在其它地方建造新公司總部。按住 Shift 點選則只會顯示預估的建造費用 +STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}詳情 +STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}顯示基礎建設數目的詳細資料 STR_COMPANY_VIEW_NEW_FACE_BUTTON :{BLACK}新臉孔 STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}選擇總經理的新臉孔 STR_COMPANY_VIEW_COLOUR_SCHEME_BUTTON :{BLACK}配色 -STR_COMPANY_VIEW_COLOUR_SCHEME_TOOLTIP :{BLACK}修改公司交通工具配色 +STR_COMPANY_VIEW_COLOUR_SCHEME_TOOLTIP :{BLACK}修改公司運輸工具的配色 STR_COMPANY_VIEW_COMPANY_NAME_BUTTON :{BLACK}公司名稱 STR_COMPANY_VIEW_COMPANY_NAME_TOOLTIP :{BLACK}修改公司名稱 STR_COMPANY_VIEW_PRESIDENT_NAME_BUTTON :{BLACK}總經理姓名 @@ -2661,8 +3194,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% 股份。按住 Shift 點選則只會顯示預估的購買費用 -STR_COMPANY_VIEW_SELL_SHARE_TOOLTIP :{BLACK}出售這間公司的 25% 股份。按住 Shift 點選則只會顯示預估的售價 +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 :總經理姓名 @@ -2670,12 +3203,17 @@ STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :總經理姓名 STR_BUY_COMPANY_MESSAGE :{WHITE}我們正在找一間運輸公司收購我們的公司。{}{}您想購買 {COMPANY} 付出 {CURRENCY_LONG} 嗎? # Company infrastructure window +STR_COMPANY_INFRASTRUCTURE_VIEW_CAPTION :{WHITE}{COMPANY} 的基礎建設 +STR_COMPANY_INFRASTRUCTURE_VIEW_RAIL_SECT :{GOLD}鐵路區塊: +STR_COMPANY_INFRASTRUCTURE_VIEW_SIGNALS :{WHITE}號誌 +STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD_SECT :{GOLD}道路區塊: STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD :{WHITE}道路 STR_COMPANY_INFRASTRUCTURE_VIEW_TRAMWAY :{WHITE}路面電車 +STR_COMPANY_INFRASTRUCTURE_VIEW_WATER_SECT :{GOLD}水道或海運設施: STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS :{WHITE}運河 STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}車站: +STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}車站設施 STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}機場 -STR_COMPANY_INFRASTRUCTURE_VIEW_COST :{WHITE}每年{1:CURRENCY_LONG} ({0:COMMA}) STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL :{WHITE}每年{CURRENCY_LONG} # Industry directory @@ -2692,6 +3230,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} @@ -2726,11 +3265,11 @@ STR_VEHICLE_LIST_AVAILABLE_TRAINS :可用列車 STR_VEHICLE_LIST_AVAILABLE_ROAD_VEHICLES :可用車輛 STR_VEHICLE_LIST_AVAILABLE_SHIPS :可用船舶 STR_VEHICLE_LIST_AVAILABLE_AIRCRAFT :可用飛機 -STR_VEHICLE_LIST_AVAILABLE_ENGINES_TOOLTIP :{BLACK}顯示此交通工具的所有可用的引擎設計 +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_REPLACE_VEHICLES :替換運輸工具 STR_VEHICLE_LIST_SEND_FOR_SERVICING :送去維護 STR_VEHICLE_LIST_SEND_TRAIN_TO_DEPOT :送到機廠 @@ -2738,10 +3277,10 @@ STR_VEHICLE_LIST_SEND_ROAD_VEHICLE_TO_DEPOT :送到車廠 STR_VEHICLE_LIST_SEND_SHIP_TO_DEPOT :送到船塢 STR_VEHICLE_LIST_SEND_AIRCRAFT_TO_HANGAR :送到機棚 -STR_VEHICLE_LIST_MASS_STOP_LIST_TOOLTIP :{BLACK}點選可停止清單中所有交通工具 -STR_VEHICLE_LIST_MASS_START_LIST_TOOLTIP :{BLACK}點選可起動清單内所有交通工具 +STR_VEHICLE_LIST_MASS_STOP_LIST_TOOLTIP :{BLACK}點選此掣以停止清單上的所有運輸工具 +STR_VEHICLE_LIST_MASS_START_LIST_TOOLTIP :{BLACK}點選此掣以起動清單内的所有運輸工具 -STR_VEHICLE_LIST_SHARED_ORDERS_LIST_CAPTION :{WHITE}{COMMA} 組交通工具的共用指令 +STR_VEHICLE_LIST_SHARED_ORDERS_LIST_CAPTION :{WHITE}由 {COMMA} 部運輸工具共用的指令清單 # Group window STR_GROUP_ALL_TRAINS :所有列車 @@ -2754,14 +3293,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_GROUP_ADD_SHARED_VEHICLE :加入共享交通工具 -STR_GROUP_REMOVE_ALL_VEHICLES :移除所有交通工具 + +STR_GROUP_ADD_SHARED_VEHICLE :加入共享指令的運具 +STR_GROUP_REMOVE_ALL_VEHICLES :移去所有運具 STR_GROUP_RENAME_CAPTION :{BLACK}重新命名群組 @@ -2793,15 +3333,16 @@ 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_BUY_VEHICLE_BUTTON :{BLACK}購買交通工具 +STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_BUTTON :{BLACK}購買運具 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}購買飛機 @@ -2859,7 +3400,7 @@ STR_DEPOT_AUTOREPLACE_ROAD_VEHICLE_TOOLTIP :{BLACK}自動 STR_DEPOT_AUTOREPLACE_SHIP_TOOLTIP :{BLACK}自動替換所有船塢内船舶 STR_DEPOT_AUTOREPLACE_AIRCRAFT_TOOLTIP :{BLACK}自動替換所有機棚内飛機 -STR_DEPOT_TRAIN_NEW_VEHICLES_BUTTON :{BLACK}購買新交通工具 +STR_DEPOT_TRAIN_NEW_VEHICLES_BUTTON :{BLACK}購買新運具 STR_DEPOT_ROAD_VEHICLE_NEW_VEHICLES_BUTTON :{BLACK}購買新車輛 STR_DEPOT_SHIP_NEW_VEHICLES_BUTTON :{BLACK}購買船舶 STR_DEPOT_AIRCRAFT_NEW_VEHICLES_BUTTON :{BLACK}購買飛機 @@ -2875,7 +3416,7 @@ STR_DEPOT_CLONE_SHIP :{BLACK}複製 STR_DEPOT_CLONE_AIRCRAFT :{BLACK}複製飛機 STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}這會購買一列相同的列車,包含所有車廂。按下按鈕之後再點選機廠内外的其他列車,按住 CTRL 點選還可共享指令,按住 Shift 點選則只會顯示預估的購買費用 -STR_DEPOT_CLONE_ROAD_VEHICLE_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 點選則只會顯示預估的購買費用 @@ -2902,7 +3443,7 @@ STR_DEPOT_MASS_START_HANGAR_TOOLTIP :{BLACK}點選 STR_DEPOT_SELL_CONFIRMATION_TEXT :{YELLOW}您正準備出售車廠内所有車輛。確定嗎? # Engine preview window -STR_ENGINE_PREVIEW_CAPTION :{WHITE}交通工具製造商的訊息 +STR_ENGINE_PREVIEW_CAPTION :{WHITE}運輸工具製造商的訊息 STR_ENGINE_PREVIEW_MESSAGE :{GOLD}我們剛設計了一種新{STRING} - 您有興趣獨家使用它一年,讓我們在正式上市之前先 觀察它的表現嗎? STR_ENGINE_PREVIEW_RAILROAD_LOCOMOTIVE :鐵路機車頭 STR_ENGINE_PREVIEW_ROAD_VEHICLE :車輛 @@ -2915,6 +3456,8 @@ STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}費用 STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}費用:{CURRENCY_LONG} 載重:{WEIGHT_SHORT}{}速度:{VELOCITY} 功率:{POWER} 最大牽引力:{6:FORCE}{}營運成本:{4:CURRENCY_LONG}/年{}容量:{5:CARGO_LONG} STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST :{BLACK}費用:{CURRENCY_LONG} 最高速度:{VELOCITY}{}容量:{CARGO_LONG}, {CARGO_LONG}{}營運成本:{CURRENCY_LONG}/年 STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK}費用:{CURRENCY_LONG} 最高速度:{VELOCITY}{}容量:{CARGO_LONG}{}營運成本:{CURRENCY_LONG}/年 +STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_CAPACITY_RUNCOST:{BLACK}成本: {CURRENCY_LONG} 最高速度: {VELOCITY} 範圍: {COMMA} 格{}容量: {CARGO_LONG}, {CARGO_LONG}{}營運成本: {CURRENCY_LONG}/年 +STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}成本: {CURRENCY_LONG} 最高速度: {VELOCITY} 範圍: {COMMA} 格{}容量: {CARGO_LONG}{}營運成本: {CURRENCY_LONG}/年 # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}替換 {STRING} - {STRING} @@ -2926,11 +3469,14 @@ STR_REPLACE_VEHICLE_AIRCRAFT :飛機 STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}選擇要替換的車頭種類 STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}選擇您想替換左方選定車頭的新車頭種類 -STR_REPLACE_VEHICLES_START :{BLACK}開始替換交通工具 +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_VEHICLE_SELECTED :{BLACK}未選擇交通工具 -STR_REPLACE_VEHICLES_STOP :{BLACK}停止替換交通工具 +STR_REPLACE_NOT_REPLACING_VEHICLE_SELECTED :{BLACK}未選擇任何運輸工具 +STR_REPLACE_REPLACING_WHEN_OLD :更換舊運具為 {ENGINE} +STR_REPLACE_VEHICLES_STOP :{BLACK}停止替換運輸工具 STR_REPLACE_HELP_STOP_BUTTON :{BLACK}按下之後會停止替換左方指定的車頭 STR_REPLACE_ENGINE_WAGON_SELECT :{BLACK}替換:{ORANGE}{STRING} @@ -2994,7 +3540,7 @@ STR_VEHICLE_VIEW_AIRCRAFT_STATE_START_STOP_TOOLTIP :{BLACK}目前 # Messages in the start stop button in the vehicle view STR_VEHICLE_STATUS_LOADING_UNLOADING :{LTBLUE}正在裝卸貨物 STR_VEHICLE_STATUS_LEAVING :{LTBLUE}正在離開 -STR_VEHICLE_STATUS_CRASHED :{RED}撞毀! +STR_VEHICLE_STATUS_CRASHED :{RED}已撞毀! STR_VEHICLE_STATUS_BROKEN_DOWN :{RED}故障 STR_VEHICLE_STATUS_STOPPED :{RED}停止 STR_VEHICLE_STATUS_TRAIN_STOPPING_VEL :{RED}正在停止,{VELOCITY} @@ -3029,25 +3575,31 @@ STR_VEHICLE_INFO_AGE :{COMMA} 年 ({C STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} 年 ({COMMA}) STR_VEHICLE_INFO_MAX_SPEED :{BLACK}最高速度:{LTBLUE}{VELOCITY} +STR_VEHICLE_INFO_MAX_SPEED_RANGE :{BLACK}最高速度: {LTBLUE}{VELOCITY} {BLACK}範圍: {LTBLUE}{COMMA} 格 STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}載重:{LTBLUE}{WEIGHT_SHORT} {BLACK}功率:{LTBLUE}{POWER}{BLACK} 最高速度:{LTBLUE}{VELOCITY} STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}載重:{LTBLUE}{WEIGHT_SHORT} {BLACK}功率:{LTBLUE}{POWER}{BLACK} 最高速度:{LTBLUE}{VELOCITY} {BLACK}最大牽引力:{LTBLUE}{FORCE} STR_VEHICLE_INFO_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}今年盈利:{LTBLUE}{CURRENCY_LONG} (去年盈利:{CURRENCY_LONG}) -STR_VEHICLE_INFO_RELIABILITY_BREAKDOWNS :{BLACK}可靠度:{LTBLUE}{COMMA}% {BLACK}上次維護後的故障率:{LTBLUE}{COMMA} +STR_VEHICLE_INFO_RELIABILITY_BREAKDOWNS :{BLACK}可靠度:{LTBLUE}{COMMA}% {BLACK}上次維護後的故障次數:{LTBLUE}{COMMA} -STR_VEHICLE_INFO_BUILT_VALUE :{LTBLUE}{ENGINE} {BLACK}興建:{LTBLUE}{NUM}{BLACK} 價值:{LTBLUE}{CURRENCY_LONG} +STR_VEHICLE_INFO_BUILT_VALUE :{LTBLUE}{ENGINE} {BLACK}興建於:{LTBLUE}{NUM}{BLACK} 價值:{LTBLUE}{CURRENCY_LONG} STR_VEHICLE_INFO_NO_CAPACITY :{BLACK}容量:{LTBLUE}無{STRING} STR_VEHICLE_INFO_CAPACITY :{BLACK}容量:{LTBLUE}{CARGO_LONG}{3:STRING} STR_VEHICLE_INFO_CAPACITY_MULT :{BLACK}容量:{LTBLUE}{CARGO_LONG}{3:STRING} (x{4:NUM}) STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}容量:{LTBLUE}{CARGO_LONG},{CARGO_LONG}{STRING} -STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}轉運進帳:{LTBLUE}{CURRENCY_LONG} +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_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_SHIP_CAPTION :{WHITE}命名船舶 @@ -3080,8 +3632,10 @@ STR_VEHICLE_DETAILS_TRAIN_ARTICULATED_RV_CAPACITY :{BLACK}容量 STR_REFIT_CAPTION :{WHITE}{VEHICLE} (改裝) STR_REFIT_TITLE :{GOLD}選擇要運送的貨物種類: STR_REFIT_NEW_CAPACITY_COST_OF_REFIT :{BLACK}新容量:{GOLD}{CARGO_LONG}{}{BLACK}改裝費用:{RED}{CURRENCY_LONG} +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_SELECT_VEHICLES_TOOLTIP :{BLACK}選擇交通工具以進行整修。以滑鼠拖曳可以選擇多個交通工具。選空白的區域將選擇整個交通工具。按住Ctrl再點選將選擇交通工具以及與其後串接的車廂 +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_TRAIN_LIST_TOOLTIP :{BLACK}選擇要運輸的貨物種類 STR_REFIT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}選擇車輛要運送的貨物種類 @@ -3134,6 +3688,9 @@ 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_DROP_REFIT_AUTO :固定貨物種類 STR_ORDER_DROP_REFIT_AUTO_ANY :可用貨物 STR_ORDER_SERVICE :{BLACK}維護 @@ -3153,7 +3710,7 @@ STR_ORDER_CONDITIONAL_REQUIRES_SERVICE :需要維護 STR_ORDER_CONDITIONAL_UNCONDITIONALLY :總是 STR_ORDER_CONDITIONAL_REMAINING_LIFETIME :剩餘年限 (年) -STR_ORDER_CONDITIONAL_COMPARATOR_TOOLTIP :{BLACK}如何與指定數值比對交通工具資料 +STR_ORDER_CONDITIONAL_COMPARATOR_TOOLTIP :{BLACK}運輸工具相關數字與指定數值比對的條件 STR_ORDER_CONDITIONAL_COMPARATOR_EQUALS :等於 STR_ORDER_CONDITIONAL_COMPARATOR_NOT_EQUALS :不等於 STR_ORDER_CONDITIONAL_COMPARATOR_LESS_THAN :小於 @@ -3163,7 +3720,7 @@ STR_ORDER_CONDITIONAL_COMPARATOR_MORE_EQUALS :大於或等於 STR_ORDER_CONDITIONAL_COMPARATOR_IS_TRUE :為是 STR_ORDER_CONDITIONAL_COMPARATOR_IS_FALSE :為否 -STR_ORDER_CONDITIONAL_VALUE_TOOLTIP :{BLACK}與交通工具資料比對的數值 +STR_ORDER_CONDITIONAL_VALUE_TOOLTIP :{BLACK}此欄指定的數值將與運輸工具上的指定數據比對 STR_ORDER_CONDITIONAL_VALUE_CAPT :{WHITE}輸入想比對的數值 STR_ORDERS_SKIP_BUTTON :{BLACK}跳過 @@ -3179,10 +3736,10 @@ 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 於車站時可直接設為「滿載任一種類客貨」,於號誌站時則為「直達」,於機廠時則為「維護」 +STR_ORDER_SHARE :分享指令清單 +STR_ORDERS_GO_TO_TOOLTIP :{BLACK}在選定的指令前插入新指令,或在指令表的末尾新增指令。如按住 Ctrl 鍵再加入指令,點選車站會新增「滿載任一種類客貨」指令、點選號誌站會新增「直達」指令,而點選機廠則會新增「維護」指令。點選其他車輛以複製其指令清單,按住 Ctrl 鍵或在選取「分享指令清單」後點選其他車輛以分享指令清單。如指令清單上有任何指令涉及機廠,則該車輛不受自動維護功能影響 -STR_ORDERS_VEH_WITH_SHARED_ORDERS_LIST_TOOLTIP :{BLACK}顯示所有共用這份指令的交通工具 +STR_ORDERS_VEH_WITH_SHARED_ORDERS_LIST_TOOLTIP :{BLACK}顯示所有共享此指令清單的運輸工具 # String parts to build the order string STR_ORDER_GO_TO_WAYPOINT :經過 {WAYPOINT} @@ -3223,6 +3780,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 :(轉運後改裝為運載 {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 :可用貨物 @@ -3230,6 +3799,7 @@ STR_ORDER_STOP_LOCATION_NEAR_END :[近端] STR_ORDER_STOP_LOCATION_MIDDLE :[中間] STR_ORDER_STOP_LOCATION_FAR_END :[遠端] +STR_ORDER_OUT_OF_RANGE :{RED} (下一目的地超出該運輸工具的單次行駛範圍) STR_ORDER_CONDITIONAL_UNCONDITIONAL :跳到指令 {COMMA} STR_ORDER_CONDITIONAL_NUM :跳到指令 {COMMA} 當符合 {STRING} {STRING} {COMMA} @@ -3246,8 +3816,10 @@ STR_TIMETABLE_TOOLTIP :{BLACK}時刻 STR_TIMETABLE_NO_TRAVEL :原地待命 STR_TIMETABLE_NOT_TIMETABLEABLE :運行 (自動; 由下個手動命令排程) -STR_TIMETABLE_TRAVEL_NOT_TIMETABLED :運行中 (未訂時刻表) +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_STAY_FOR :並等待 {STRING} STR_TIMETABLE_AND_TRAVEL_FOR :並運行 {STRING} STR_TIMETABLE_DAYS :{COMMA} 日 @@ -3256,14 +3828,14 @@ STR_TIMETABLE_TICKS :{COMMA} tick STR_TIMETABLE_TOTAL_TIME :{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_STARTING_DATE :{BLACK}實施日期 -STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}選擇此時刻表開始實施日期 +STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}選擇此時刻表開始實施的日期。如按住Ctrl鍵點選此掣,而時刻表每一項指令皆已指定持續時間,則系統會為每個共用此時刻表的運輸工具賦予一個開始實施時間表的日期,使它們之間的間隔一致。 STR_TIMETABLE_CHANGE_TIME :{BLACK}修改時刻 STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}改變目前選定命令所需的時間 @@ -3278,14 +3850,14 @@ STR_TIMETABLE_CLEAR_SPEED :{BLACK}清除 STR_TIMETABLE_CLEAR_SPEED_TOOLTIP :{BLACK}清除目前選定命令所設定的最高速度 STR_TIMETABLE_RESET_LATENESS :{BLACK}歸零誤點/慢分 -STR_TIMETABLE_RESET_LATENESS_TOOLTIP :{BLACK}將誤點/慢分歸零,如此交通工具將會準時抵達 +STR_TIMETABLE_RESET_LATENESS_TOOLTIP :{BLACK}將記錄上的誤點值歸零,使該運輸工具被視為準點 STR_TIMETABLE_AUTOFILL :{BLACK}自動製表 STR_TIMETABLE_AUTOFILL_TOOLTIP :{BLACK}自動以下次運轉的時間排定時刻表 (按住 CTRL 可保持等待時間) 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 :開: @@ -3318,13 +3890,15 @@ STR_AI_DEBUG_CONTINUE :{BLACK}繼續 STR_AI_DEBUG_CONTINUE_TOOLTIP :{BLACK}取消暫停並繼續 AI STR_AI_DEBUG_SELECT_AI_TOOLTIP :{BLACK}檢視此 AI 的除錯輸出資訊 STR_AI_GAME_SCRIPT :{BLACK}遊戲腳本 +STR_AI_GAME_SCRIPT_TOOLTIP :{BLACK}檢查腳本日誌 STR_ERROR_AI_NO_AI_FOUND :找不到適合的 AI 可以載入。{}此 AI 是虛擬 AI,沒有任何效果。{}您可以透過「線上內容」系統下載更多 AI。 STR_ERROR_AI_PLEASE_REPORT_CRASH :{WHITE}正在運行中的其中一個 AI 發生錯誤。請打開「AI 除錯」視窗後擷取螢幕圖片,將此問題回報給 AI 作者。 -STR_ERROR_AI_DEBUG_SERVER_ONLY :{YELLOW}AI/遊戲腳本除錯視窗只可於伺服器使用 +STR_ERROR_AI_DEBUG_SERVER_ONLY :{YELLOW}AI/只可於伺服器打開遊戲腳本除錯視窗 # AI configuration window STR_AI_CONFIG_CAPTION :{WHITE}AI /遊戲腳本的組態 +STR_AI_CONFIG_GAMELIST_TOOLTIP :{BLACK}將於下一次遊戲中載入的腳本 STR_AI_CONFIG_AILIST_TOOLTIP :{BLACK}下局開始時將啟用AI STR_AI_CONFIG_HUMAN_PLAYER :人類玩家 STR_AI_CONFIG_RANDOM_AI :隨機 AI @@ -3368,10 +3942,17 @@ 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 :此 AI 與上一個 AI 的啟動時間相隔天數 (近似值): {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}授權條款 @@ -3382,6 +3963,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}花費:{CURRENCY_LONG} @@ -3390,6 +3973,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} @@ -3430,6 +4017,8 @@ STR_WARNING_HEIGHTMAP_SCALE_MESSAGE :{YELLOW}不建 STR_WARNING_FALLBACK_SOUNDSET :{WHITE}只找到一個後備音效集;如果您需要音效,請透過內容下載系統安裝音效集。 # Screenshot related messages +STR_WARNING_SCREENSHOT_SIZE_CAPTION :{WHITE}巨大截圖 +STR_WARNING_SCREENSHOT_SIZE_MESSAGE :{YELLOW}這幀截圖的解像度將是 {COMMA} x {COMMA} 像素。要繪製這幀截圖需要一點時間,您要繼續嗎? STR_MESSAGE_SCREENSHOT_SUCCESSFULLY :{WHITE}畫面擷取成功並存為「{STRING}」 STR_ERROR_SCREENSHOT_FAILED :{WHITE}畫面擷取失敗! @@ -3519,6 +4108,8 @@ 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}... 只能位於地圖邊緣 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}無法在此興建火車站... @@ -3621,7 +4212,7 @@ STR_ERROR_SIGNAL_CAN_T_CONVERT_SIGNALS_HERE :{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}必須先移除道路 @@ -3640,6 +4231,8 @@ 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}必須先移除運河 STR_ERROR_CAN_T_BUILD_AQUEDUCT_HERE :{WHITE}無法興建水道橋... @@ -3680,9 +4273,9 @@ 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_REMOVE_ALL_VEHICLES :{WHITE}無法移除此群組的所有交通工具... -STR_ERROR_GROUP_CAN_T_ADD_VEHICLE :{WHITE}無法加入交通工具到此群組... -STR_ERROR_GROUP_CAN_T_ADD_SHARED_VEHICLE :{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}前方有列車 @@ -3725,19 +4318,25 @@ 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_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_TOO_MANY_VEHICLES_IN_GAME :{WHITE}遊戲中已有太多運輸工具 STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}不能更改檢修週期... -STR_ERROR_VEHICLE_IS_DESTROYED :{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}無法讓列車通過險阻號誌... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}無法倒轉列車方向... +STR_ERROR_TRAIN_START_NO_POWER :列車沒有動力 STR_ERROR_CAN_T_MAKE_ROAD_VEHICLE_TURN :{WHITE}無法讓車輛轉向... @@ -3752,19 +4351,20 @@ 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_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_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}此交通工具將不停靠此車站 +STR_ERROR_CAN_T_TIMETABLE_VEHICLE :{WHITE}無法為運輸工具加入時刻表... +STR_ERROR_TIMETABLE_ONLY_WAIT_AT_STATIONS :{WHITE}運輸工具只能在車站停靠等候 +STR_ERROR_TIMETABLE_NOT_STOPPING_HERE :{WHITE}此運輸工具不會停靠此車站 # Sign related errors STR_ERROR_TOO_MANY_SIGNS :{WHITE}... 已有太多標誌 @@ -3775,6 +4375,16 @@ STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}無法 # Translatable comment for OpenTTD's desktop shortcut STR_DESKTOP_SHORTCUT_COMMENT :基於《運輸大亨豪華版》的運輸模擬遊戲 +# 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 :不含任何音樂的音樂集。 + ##id 0x2000 # Town building names STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1 :摩天辦公大樓 @@ -3893,17 +4503,17 @@ STR_SV_STNAME_FALLBACK :{STRING} 車站 ##id 0x8000 # Vehicle names -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank (蒸氣) +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 (蒸氣) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CHANEY_JUBILEE_STEAM :Chaney 'Jubilee' (蒸氣) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_GINZU_A4_STEAM :Ginzu 'A4' (蒸氣) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_8P_STEAM :SH '8P' (蒸氣) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_WILLS_2_8_0_STEAM :Wills 2-8-0 (蒸汽) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CHANEY_JUBILEE_STEAM :Chaney 'Jubilee' (蒸汽) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_GINZU_A4_STEAM :Ginzu 'A4' (蒸汽) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_8P_STEAM :SH '8P' (蒸汽) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MANLEY_MOREL_DMU_DIESEL :Manley-Morel 柴聯車組 (柴油) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_DASH_DIESEL :'Dash' (柴油) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_HENDRY_25_DIESEL :SH/Hendry '25' (柴油) @@ -3926,7 +4536,7 @@ 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_GRAIN_HOPPER :穀斗車 +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 :鐵礦斗車 STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_STEEL_TRUCK :運鋼車 @@ -4221,8 +4831,9 @@ 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_SPACE_STRING :{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} @@ -4246,9 +4857,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 27419f064..f31cbb2f5 100644 --- a/src/lang/turkish.txt +++ b/src/lang/turkish.txt @@ -43,7 +43,7 @@ STR_CARGO_PLURAL_COPPER_ORE :Bakır STR_CARGO_PLURAL_MAIZE :Mısır STR_CARGO_PLURAL_FRUIT :Meyve STR_CARGO_PLURAL_DIAMONDS :Elmas -STR_CARGO_PLURAL_FOOD :Yiyecek +STR_CARGO_PLURAL_FOOD :Gıda STR_CARGO_PLURAL_PAPER :Kağıt STR_CARGO_PLURAL_GOLD :Altın STR_CARGO_PLURAL_WATER :Su @@ -77,7 +77,7 @@ STR_CARGO_SINGULAR_COPPER_ORE :Bakır STR_CARGO_SINGULAR_MAIZE :Mısır STR_CARGO_SINGULAR_FRUIT :Meyve STR_CARGO_SINGULAR_DIAMOND :Elmas -STR_CARGO_SINGULAR_FOOD :Yiyecek +STR_CARGO_SINGULAR_FOOD :Gıda STR_CARGO_SINGULAR_PAPER :Kağıt STR_CARGO_SINGULAR_GOLD :Altın STR_CARGO_SINGULAR_WATER :Su @@ -200,21 +200,28 @@ STR_UNITS_POWER_IMPERIAL :{COMMA}bg STR_UNITS_POWER_METRIC :{COMMA}bg 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 STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} ton 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 STR_UNITS_VOLUME_LONG_METRIC :{COMMA} litre 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 @@ -222,6 +229,7 @@ STR_LIST_FILTER_TITLE :{BLACK}Süzgeç STR_LIST_FILTER_OSKTITLE :{BLACK}Süzgeç metnini girin STR_LIST_FILTER_TOOLTIP :{BLACK}Listeyi filtrelemek için bir anahtar sözcük girin +STR_TOOLTIP_GROUP_ORDER :{BLACK}Gruplama sırasını seç STR_TOOLTIP_SORT_ORDER :{BLACK}Sıralama türünü seçin (azalan/artan) STR_TOOLTIP_SORT_CRITERIA :{BLACK}Sıralama kriterini seçin STR_TOOLTIP_FILTER_CRITERIA :{BLACK}Süzme kriterini seçin @@ -233,7 +241,8 @@ STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Pencerey STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Pencere başlığı - pencereyi hareket ettirmek için sürükle 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_STICKY :{BLACK}'Tüm pencereleri kapat' tuşuyla kapanmasın +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_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 @@ -257,7 +266,6 @@ STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}Alan: {N # These are used in buttons -STR_SORT_BY_CAPTION_POPULATION :{BLACK}Nüfus STR_SORT_BY_CAPTION_NAME :{BLACK}İsim STR_SORT_BY_CAPTION_DATE :{BLACK}Tarih # These are used in dropdowns @@ -266,8 +274,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 @@ -278,37 +286,42 @@ STR_SORT_BY_LENGTH :Uzunluk STR_SORT_BY_LIFE_TIME :Kalan ömür STR_SORT_BY_TIMETABLE_DELAY :Zaman çizelgesi gecikmesi STR_SORT_BY_FACILITY :İstasyon türü -STR_SORT_BY_WAITING :Bekleyen kargo değeri -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_WAITING_TOTAL :Toplam bekleyen kargo +STR_SORT_BY_WAITING_AVAILABLE :Kullanılabilir bekleyen kargo +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 # Tooltips for the main toolbar STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Oyunu durdur STR_TOOLBAR_TOOLTIP_FORWARD :{BLACK}Oyunu hızlandır STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}Seçenekler -STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK}Kaydet, ana menüye dön, çık +STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK}Kaydet, oyunu terk et, çık STR_TOOLBAR_TOOLTIP_DISPLAY_MAP :{BLACK}Haritayı göster STR_TOOLBAR_TOOLTIP_DISPLAY_TOWN_DIRECTORY :{BLACK}Şehir listesini göster STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Teşvikleri göster STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Şirkete ait istasyonları listele STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Şirketin mâli durumunu göster STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Şirketin genel durumunu göster +STR_TOOLBAR_TOOLTIP_DISPLAY_STORY_BOOK :{BLACK}Hikaye kitabını görüntüle +STR_TOOLBAR_TOOLTIP_DISPLAY_GOALS_LIST :{BLACK}Amaç listesini görüntüle STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Grafikleri göster STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Şirketler ligini göster STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Yeni fabrika kur veya tüm fabrikaları listele -STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}Şirkete ait trenleri listele. Ctrl+Sol tık ile grup yada araç listesini açar veya kapatır -STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}Şirkete ait karayolu taşıtlarını listele. Ctrl+Sol tık ile grup yada araç listesini açıp kapatır -STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_SHIPS :{BLACK}Şirkete ait gemileri listele. Ctrl+Sol tık ile grup yada araç listesini açar veya kapatır -STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_AIRCRAFT :{BLACK}Şirkete ait uçakları listele. Ctrl+Sol tık ile grup yada araç listesini açar veya kapatır +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}Şirkete ait trenleri listele. Ctrl+Sol tıklama ile grup/araç listesini açar veya kapatır +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}Şirkete ait karayolu taşıtlarını listele. Ctrl+Sol tıklama ile grup/araç listesini açıp kapatır +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_SHIPS :{BLACK}Şirkete ait gemileri listele. Ctrl+Sol tık ile grup/araç listesini açar veya kapatır +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_AIRCRAFT :{BLACK}Şirkete ait uçakları listele. Ctrl+Sol tıklama grup/araç listesini açar veya kapatır STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_IN :{BLACK}Yakınlaş STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_OUT :{BLACK}Uzaklaş STR_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Demiryolu yapımı @@ -318,7 +331,7 @@ STR_TOOLBAR_TOOLTIP_BUILD_AIRPORTS :{BLACK}Havalima STR_TOOLBAR_TOOLTIP_LANDSCAPING :{BLACK}Arazi düzenleme araç çubuğunu aç (ağaç dikme, alçaltma/yükseltme vb. için). STR_TOOLBAR_TOOLTIP_SHOW_SOUND_MUSIC_WINDOW :{BLACK}Ses/müzik penceresini göster STR_TOOLBAR_TOOLTIP_SHOW_LAST_MESSAGE_NEWS :{BLACK}Son mesajı/haberi göster, mesaj ayarlarını göster -STR_TOOLBAR_TOOLTIP_LAND_BLOCK_INFORMATION :{BLACK}Arazi bilgisi, konsol, YZ hata ayıklama, ekran görüntüsü yakalama, OpenTTD hakkında +STR_TOOLBAR_TOOLTIP_LAND_BLOCK_INFORMATION :{BLACK}Arazi bilgisi, konsol, betik hata ayıklama, ekran görüntüleri, OpenTTD hakkında STR_TOOLBAR_TOOLTIP_SWITCH_TOOLBAR :{BLACK}Araç çubuklarını değiştir # Extra tooltips for the scenario editor toolbar @@ -350,18 +363,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 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 @@ -372,23 +385,23 @@ STR_FILE_MENU_SEPARATOR : STR_FILE_MENU_EXIT :Çıkış ############ range ends here -############ range for map menu starts +# 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_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, yet the town directory is shown in the map menu in the scenario editor + +############ range for town menu starts STR_TOWN_MENU_TOWN_DIRECTORY :Şehir listesi -############ end of the 'Display map' dropdown STR_TOWN_MENU_FOUND_TOWN :Şehir başlat -############ end of the 'Town' dropdown +############ range ends here ############ range for subsidies menu starts STR_SUBSIDIES_MENU_SUBSIDIES :Teşvikler -STR_SUBSIDIES_MENU_GOAL :Mevcut hedefler ############ 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 @@ -398,7 +411,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 @@ -439,57 +452,75 @@ 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 STR_ABOUT_MENU_LAND_BLOCK_INFO :Arazi bilgisi STR_ABOUT_MENU_SEPARATOR : -STR_ABOUT_MENU_TOGGLE_CONSOLE :Konsolü aç/kapa -STR_ABOUT_MENU_AI_DEBUG :YZ hata ayıklama -STR_ABOUT_MENU_SCREENSHOT :Ekran Görüntüsü -STR_ABOUT_MENU_ZOOMIN_SCREENSHOT :Ekran fotoğrafında yaklaşıldı +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 :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) -STR_ORDINAL_NUMBER_1ST :1inci -STR_ORDINAL_NUMBER_2ND :2nci -STR_ORDINAL_NUMBER_3RD :3üncü -STR_ORDINAL_NUMBER_4TH :4üncü -STR_ORDINAL_NUMBER_5TH :5inci -STR_ORDINAL_NUMBER_6TH :6ncı -STR_ORDINAL_NUMBER_7TH :7nci -STR_ORDINAL_NUMBER_8TH :8inci -STR_ORDINAL_NUMBER_9TH :9uncu -STR_ORDINAL_NUMBER_10TH :10uncu -STR_ORDINAL_NUMBER_11TH :11inci -STR_ORDINAL_NUMBER_12TH :12nci -STR_ORDINAL_NUMBER_13TH :13üncü -STR_ORDINAL_NUMBER_14TH :14üncü -STR_ORDINAL_NUMBER_15TH :15inci -STR_ORDINAL_NUMBER_16TH :16ncı -STR_ORDINAL_NUMBER_17TH :17nci -STR_ORDINAL_NUMBER_18TH :18inci -STR_ORDINAL_NUMBER_19TH :19uncu -STR_ORDINAL_NUMBER_20TH :20nci -STR_ORDINAL_NUMBER_21ST :21inci -STR_ORDINAL_NUMBER_22ND :22nci -STR_ORDINAL_NUMBER_23RD :23üncü -STR_ORDINAL_NUMBER_24TH :24üncü -STR_ORDINAL_NUMBER_25TH :25inci -STR_ORDINAL_NUMBER_26TH :26ncı -STR_ORDINAL_NUMBER_27TH :27nci -STR_ORDINAL_NUMBER_28TH :28inci -STR_ORDINAL_NUMBER_29TH :29uncu -STR_ORDINAL_NUMBER_30TH :30uncu -STR_ORDINAL_NUMBER_31ST :31inci +############ 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 @@ -528,10 +559,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 @@ -539,8 +570,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} @@ -564,7 +595,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}) @@ -573,7 +604,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: @@ -582,11 +613,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ı @@ -596,8 +627,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 @@ -620,9 +651,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 @@ -651,7 +682,7 @@ STR_HIGHSCORE_PERFORMANCE_TITLE_CAPITALIST :Sermayedar STR_HIGHSCORE_PERFORMANCE_TITLE_MAGNATE :Patron STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL :Önemli adam STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY :Yüzyılın Kodamanı -STR_HIGHSCORE_NAME :{BIG_FONT}{PRESIDENT_NAME}, {COMPANY} +STR_HIGHSCORE_NAME :{PRESIDENT_NAME}, {COMPANY} STR_HIGHSCORE_STATS :{BIG_FONT}'{STRING}' ({COMMA}) STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{BLACK}{COMPANY} '{STRING}' ünvanını kazandı! STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{WHITE}{PRESIDENT_NAME} - {COMPANY} '{STRING}' ünvanını kazandı! @@ -662,17 +693,20 @@ STR_SMALLMAP_CAPTION :{WHITE}Harita - STR_SMALLMAP_TYPE_CONTOURS :Dış Hatlar 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 STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRIES_ON_MAP :{BLACK}Harita üzerinde fabrikaları göster +STR_SMALLMAP_TOOLTIP_SHOW_LINK_STATS_ON_MAP :{BLACK}Haritada kargo akışını gösterin STR_SMALLMAP_TOOLTIP_SHOW_TRANSPORT_ROUTES_ON :{BLACK}Harita üzerinde güzergahları göster STR_SMALLMAP_TOOLTIP_SHOW_VEGETATION_ON_MAP :{BLACK}Harita üzerinde bitki örtüsünü göster 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 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ı @@ -706,6 +740,7 @@ STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLA STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Harita üzerinde şehir isimlerini göster/gizle STR_SMALLMAP_CENTER :{BLACK}Küçük haritayı mevcut konumda ortala 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}Hepsini kapa @@ -716,6 +751,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 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 @@ -747,7 +784,7 @@ STR_NEWS_AIRCRAFT_CRASH :{BIG_FONT}{BLAC STR_NEWS_PLANE_CRASH_OUT_OF_FUEL :{BIG_FONT}{BLACK}Uçak Kazası!{}Uçağın havada yakıtı bitti, {COMMA} kişi hayatını kaybetti STR_NEWS_DISASTER_ZEPPELIN :{BIG_FONT}{BLACK}{STATION} yakınlarına bir zeplin düştü ! -STR_NEWS_DISASTER_SMALL_UFO :{BIG_FONT}{BLACK}UFO'yla çarpışan araba parçalandı! +STR_NEWS_DISASTER_SMALL_UFO :{BIG_FONT}{BLACK}UFO ile çarpışan araç parçalandı! STR_NEWS_DISASTER_AIRPLANE_OIL_REFINERY :{BIG_FONT}{BLACK}{TOWN} yakınlarındaki petrol rafinerisi patladı! STR_NEWS_DISASTER_HELICOPTER_FACTORY :{BIG_FONT}{BLACK}{TOWN} yakınlarındaki fabrika kundaklandı! STR_NEWS_DISASTER_BIG_UFO :{BIG_FONT}{BLACK}{TOWN} yakınlarına UFO indi! @@ -779,46 +816,44 @@ 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 hangarında bekliyor +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 -STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}{VEHICLE} aracının programında çok az emir var +# 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} emirleri arasında tekrarlanmış olanlar var -STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}{VEHICLE} aracının geçersiz emirleri var -# end of order system +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 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} aracının geçen yıl karı {CURRENCY_LONG} idi +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} istemiyor -STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO_OR_CARGO :{WHITE}{STATION} artık {STRING} veya {STRING} istemiyor -STR_NEWS_STATION_NOW_ACCEPTS_CARGO :{WHITE}{STATION} artık {STRING} istiyor -STR_NEWS_STATION_NOW_ACCEPTS_CARGO_AND_CARGO :{WHITE}{STATION} artık {STRING} ve {STRING} istiyor +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 +STR_NEWS_STATION_NOW_ACCEPTS_CARGO :{WHITE}{STATION} artık {STRING} kabul ediyor +STR_NEWS_STATION_NOW_ACCEPTS_CARGO_AND_CARGO :{WHITE}{STATION} artık {STRING} ve {STRING} kabul ediyor STR_NEWS_OFFER_OF_SUBSIDY_EXPIRED :{BIG_FONT}{BLACK}Teşvik önerisinin süresi doldu: {}{}{1:STRING} ile {2:STRING} arasındaki {0:STRING} taşıma hizmeti artık teşvik almayacak STR_NEWS_SUBSIDY_WITHDRAWN_SERVICE :{BIG_FONT}{BLACK}Teşvik geri çekildi:{}{}{1:STRING} ile {2:STRING} arasındaki {0:STRING} taşıma hizmeti artık teşvik almayacak @@ -846,9 +881,9 @@ STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Para bir ############ start of currency region STR_GAME_OPTIONS_CURRENCY_GBP :Sterlin (£) -STR_GAME_OPTIONS_CURRENCY_USD :Dolar ($) +STR_GAME_OPTIONS_CURRENCY_USD :Amerikan Doları ($) STR_GAME_OPTIONS_CURRENCY_EUR :Avro (€) -STR_GAME_OPTIONS_CURRENCY_JPY :Yen (¥) +STR_GAME_OPTIONS_CURRENCY_JPY :Japon Yeni (¥) STR_GAME_OPTIONS_CURRENCY_ATS :Avusturya Şilini (ATS) STR_GAME_OPTIONS_CURRENCY_BEF :Belcika Frangı (BEF) STR_GAME_OPTIONS_CURRENCY_CHF :İsviçre Frangı (CHF) @@ -877,15 +912,12 @@ STR_GAME_OPTIONS_CURRENCY_LTL :Litvanya Litas STR_GAME_OPTIONS_CURRENCY_KRW :Güney Kore Vonu (KRW) STR_GAME_OPTIONS_CURRENCY_ZAR :Güney Afrika Randı (ZAR) STR_GAME_OPTIONS_CURRENCY_CUSTOM :Özel... +STR_GAME_OPTIONS_CURRENCY_GEL :Gürcistan Larisi (GEL) +STR_GAME_OPTIONS_CURRENCY_IRR :İran Riyali (IRR) ############ end of currency region -STR_GAME_OPTIONS_MEASURING_UNITS_FRAME :{BLACK}Ölçü birimleri -STR_GAME_OPTIONS_MEASURING_UNITS_DROPDOWN_TOOLTIP :{BLACK}Ölçü birimi seçimi ############ start of measuring units region -STR_GAME_OPTIONS_MEASURING_UNITS_IMPERIAL :İngiliz -STR_GAME_OPTIONS_MEASURING_UNITS_METRIC :Metrik -STR_GAME_OPTIONS_MEASURING_UNITS_SI :SI ############ end of measuring units region STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Karayolu taşıtları @@ -897,7 +929,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) @@ -920,14 +952,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 @@ -939,11 +973,8 @@ 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 @@ -956,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 @@ -1037,7 +1068,7 @@ 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 @@ -1048,29 +1079,44 @@ STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}Tümün 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_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 ayarlar STR_CONFIG_SETTING_RESTRICT_ADVANCED :Gelişmiş ayarlar STR_CONFIG_SETTING_RESTRICT_ALL :Uzman ayarları / tüm ayarlar - +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 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 -STR_CONFIG_SETTING_DISABLED :engellenmiş +STR_CONFIG_SETTING_DISABLED :Engellenmiş STR_CONFIG_SETTING_COMPANIES_OFF :Kapalı 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 @@ -1080,11 +1126,11 @@ STR_CONFIG_SETTING_HORIZONTAL_POS_RIGHT :Sağ STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN :En yüsek açılış borcu: {STRING} STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Bir şirketin alabileceği en fazla borç (enflasyon hesaba katılmadan) STR_CONFIG_SETTING_INTEREST_RATE :Faiz oranı: {STRING} -STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Borç faiz oranı; aynı zamanda eğer aktifse enflasyonu da belirler +STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Borç faiz oranı; eğer aktifse aynı zamanda enflasyonu da belirler 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} @@ -1092,82 +1138,147 @@ STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT :Sübvanse edile STR_CONFIG_SETTING_CONSTRUCTION_COSTS :İnşaat maliyetleri: {STRING} STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :İnşaat ve satın alma maliyet seviyesini belirleyin STR_CONFIG_SETTING_RECESSIONS :Ekonomik krizler: {STRING} +STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Etkinleştirilirse, her bir kaç yılda bir ekonomik durgunluk yaşanır. Durgunluk süresince tüm üretim seviyeleri belirgin oranda düşer (durgunluk sona erdiğinde önceki seviyesine tekrar yükselir) STR_CONFIG_SETTING_TRAIN_REVERSING :Trenlerin istasyonda yön değiştirmesini yasakla: {STRING} +STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :Etkinleştirildiğinde, trenler dönüş yaparak bir sonraki varış yerlerine daha kısa yoldan ulaşabilecek olsalar dahi, son-durak-olmayan istasyonlarda geri dönüş yapmalarına izin verilmez STR_CONFIG_SETTING_DISASTERS :Felaketler: {STRING} STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Araçları ya da altyapıyı yok edebilecek felaketleri açın ya da kapatın 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 reytinlerini ve ilerideki inşaatlarını nasıl etkileyeceğini seçin +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_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_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_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_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ı 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. "Ö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 :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}% +STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS :Kara taşıtları için eğim dikliği: {STRING} +STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS_HELPTEXT :Bir kara taşıtı için eğimli bir karenin dikliği. Yüksek değerler tepeye tırmanmayı güçleştirir 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_IMPROVEDLOAD :Geliştirilmiş yükleme algoritması kullan: {STRING} -STR_CONFIG_SETTING_GRADUAL_LOADING :Araçlar yavaş yavaş dolsun: {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+Tıklama gerekir STR_CONFIG_SETTING_INFLATION :Enflasyon: {STRING} -STR_CONFIG_SETTING_SELECTGOODS :Sadece istek varsa kargo kabul edilsin: {STRING} +STR_CONFIG_SETTING_INFLATION_HELPTEXT :Maliyetlerin ödemelerden biraz daha hızlı arttığı ekonomide enflasyonu etkinleştir +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_NONE :hiçbiri -STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :diğer fabrikalar gibi -STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :tetkik aramayla +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 +STR_CONFIG_SETTING_INDUSTRY_PLATFORM :Endüstriler etrafında düz arazi: {STRING} +STR_CONFIG_SETTING_INDUSTRY_PLATFORM_HELPTEXT :Bir endüstrinin etrafındaki diz arazi miktarı. Bu endüstri etrafında yol v.b. şeylerin yapılmasını sağlar STR_CONFIG_SETTING_MULTIPINDTOWN :Bir şehirde birden fazla aynı fabrika olması izinli: {STRING} +STR_CONFIG_SETTING_MULTIPINDTOWN_HELPTEXT :Normalde bir şehir her türde birden fazla endüstri istemez. Bu ayarlama ile aynı kasabada aynı türden birçok endüstriye izin verilir +STR_CONFIG_SETTING_SIGNALSIDE :Sinyalleri göster: {STRING} +STR_CONFIG_SETTING_SIGNALSIDE_HELPTEXT :Yolun hangi tarafına sinyallerin yerleştirileceğini seçin +STR_CONFIG_SETTING_SIGNALSIDE_LEFT :Solda +STR_CONFIG_SETTING_SIGNALSIDE_DRIVING_SIDE :Sürücü tarafında +STR_CONFIG_SETTING_SIGNALSIDE_RIGHT :Sağda STR_CONFIG_SETTING_SHOWFINANCES :Sene sonunda ekonomik durumu göster: {STRING} -STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :Yeni emirler için 'durmaksızın' varsayılır: {STRING} -STR_CONFIG_SETTING_STOP_LOCATION :Yeni tren emirleri için varsayılan durma yeri platformun {STRING} kısmıdır +STR_CONFIG_SETTING_SHOWFINANCES_HELPTEXT :Etkinleştirilirse her yılın sonunda şirketin mali durumunu gözlemlemek için mali tablo kendiliğinden belirir +STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :Yeni talimatlar öntanımlı olarak 'durmaksızın' yapılır: {STRING} +STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT_HELPTEXT :Normalde bir araç geçtiği tüm istasyonlarda durur. Bu ayarın etkinleştirilmesi ile araçlar son duraklarına kadarki istasyonlardan durmaksızın geçerler. Not: bu ayarlama yalnızca yeni talimatlar için önceden belirlenmiş bir değeri tarif eder. Tek başına verilen talimatlar yine ayrıca belirlenebilir +STR_CONFIG_SETTING_STOP_LOCATION :Yeni tren talimatları için varsayılan durma yeri platformun {STRING} kısmıdır +STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :Bir trenin platformun neresinde duracağını ayarlayın. ‘Yakın uç’ giriş noktasına yakın demektir, ‘orta’ platformun ortasını ifade eder, ‘uzak uç’ giriş noktasından uzak olan ucu ifade eder. Not: bu ayarlama yalnızca yeni talimatlar için önceden belirlenmiş bir değeri tarif eder. Tek başına verilen talimatlar yine ayrıca belirlenebilir 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_AUTOSCROLL :Fare kenardayken pencere etkin: {STRING} +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ı +STR_CONFIG_SETTING_AUTOSCROLL_EVERY_VIEWPORT :Tüm görünümler STR_CONFIG_SETTING_BRIBE :Belediye rüşveti izinli: {STRING} +STR_CONFIG_SETTING_BRIBE_HELPTEXT :Şirketlerin yerel yönetime rüşvet vermeyi denemelerine izin ver. Şayet rüşvet girişimi bir gözlemci tarafından fark edilirse şirket o bölgede altı ay eylemde bulunamaz STR_CONFIG_SETTING_ALLOW_EXCLUSIVE :Şehrin ulaşım haklarını satın alma izinli: {STRING} +STR_CONFIG_SETTING_ALLOW_EXCLUSIVE_HELPTEXT :Şayet bir şirket bir kasaba için ayrıcalıklı ulaştırma haklarını satın alırsa rakiplerinin istasyonları bir yıl boyunca kargo (yolcu ve yük) almayacaktır 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 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ç 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_NONE :hiç -STR_CONFIG_SETTING_PLANE_CRASHES_REDUCED :azaltılmış -STR_CONFIG_SETTING_PLANE_CRASHES_NORMAL :normal +STR_CONFIG_SETTING_PLANE_CRASHES_HELPTEXT :Uçak kazası olasılığını belirleyin +STR_CONFIG_SETTING_PLANE_CRASHES_NONE :Hiç +STR_CONFIG_SETTING_PLANE_CRASHES_REDUCED :Azaltılmış +STR_CONFIG_SETTING_PLANE_CRASHES_NORMAL :Normal STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Şehiriçi yollara durak yapmak izinli: {STRING} +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_ADJACENT_STATIONS :Bitişik istasyonlar izinli: {STRING} -STR_CONFIG_SETTING_DYNAMIC_ENGINES :Birden çok NewGRF lokomotif setini aktifleştir: {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_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ı 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. STR_CONFIG_SETTING_ORDER_REVIEW :Arac talimatlarını önizle: {STRING} -STR_CONFIG_SETTING_ORDER_REVIEW_OFF :hayır -STR_CONFIG_SETTING_ORDER_REVIEW_EXDEPOT :evet, ama durmuş araçlar hariç -STR_CONFIG_SETTING_ORDER_REVIEW_ON :tüm araçlar için +STR_CONFIG_SETTING_ORDER_REVIEW_HELPTEXT :Etkinleştirildiğinde, araçların komutları düzenli olarak kontrol edilir ve ciddi sorunlar farkedildiğinde bir haber mesajıyla bilgi verilir. +STR_CONFIG_SETTING_ORDER_REVIEW_OFF :Hayır +STR_CONFIG_SETTING_ORDER_REVIEW_EXDEPOT :Evet, ama durmuş araçlar hariç +STR_CONFIG_SETTING_ORDER_REVIEW_ON :Bütün araçlardan STR_CONFIG_SETTING_WARN_INCOME_LESS :Bir aracın geliri eksi olunca uyar: {STRING} +STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :Etkinleştirildiğinde, eğer bir araç bir takvim yılı içerisinde hiç kar etmezse bir haber mesajı gönderilir. STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Eski araçlar sürekli üretilsin: {STRING} +STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :Etkinleştirildiğinde, tüm araç modelleri piyasaya çıkışlarından itibaren sonsuza dek satın alınabilir. STR_CONFIG_SETTING_AUTORENEW_VEHICLE :Araç eskiyince otomatik olarak yenile: {STRING} +STR_CONFIG_SETTING_AUTORENEW_VEHICLE_HELPTEXT :Etkinleştirildiğinde, yenileme koşulları sağlandığı takdirde ömrünün sonuna yaklaşan bir araç otomatik olarak yenilenir. +STR_CONFIG_SETTING_AUTORENEW_MONTHS :Aracın azami yaşı {STRING} olduğunda otomatik yenile +STR_CONFIG_SETTING_AUTORENEW_MONTHS_HELPTEXT :Bir aracın otomatik-yenileme için göz önünde bulundurulması gereken göreceli yaş +STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_BEFORE :{COMMA} ay önce +STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_AFTER :{COMMA} ay sonra STR_CONFIG_SETTING_AUTORENEW_MONEY :Yenileme icin gerekli en az parayı otomatik yenile: {STRING} +STR_CONFIG_SETTING_AUTORENEW_MONEY_HELPTEXT :Araçları otomatik-yenileme için göz önünde bulundurmadan önce bankada bulunması gereken minimum para miktarı +STR_CONFIG_SETTING_ERRMSG_DURATION :Hata mesajının süresi: {STRING} +STR_CONFIG_SETTING_ERRMSG_DURATION_HELPTEXT :Kırmızı penceredeki hata mesajlarının görüntüleneceği süre. Fakat bazı (kritik) hata mesajları bu süre dolduğunda otomatik kapanmaz, el ile kapatılması gerekir. +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_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 STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :Grafiklerdeki çizgi kalınlığı: {STRING} +STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Grafiklerdeki çizginin genişliği. İnce çizgiler daha hassas şekilde okunabilir, koyu çizgileri ise görmek ve renklerini ayırt etmek daha kolay olur. STR_CONFIG_SETTING_LAND_GENERATOR :Arazi üretici: {STRING} STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :Özgün 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_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ş @@ -1175,154 +1286,265 @@ 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_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 +STR_CONFIG_SETTING_STATION_SPREAD :Azami durak yayılma alanı: {STRING} +STR_CONFIG_SETTING_STATION_SPREAD_HELPTEXT :Tek bir durağın parçalarının yayılabileceği azami alan. Yüksek değerler oyunu yavaşlatır STR_CONFIG_SETTING_SERVICEATHELIPAD :Helikopterler helipadlerde otomatik servise girsin: {STRING} +STR_CONFIG_SETTING_SERVICEATHELIPAD_HELPTEXT :Havaalanında depo bulunmasa bile her inişin ardından helikopterlere bakım uygula. STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR :Arazi araç çubuğunu diğer araç çubuklarına bağla: {STRING} +STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR_HELPTEXT :Bir ulaşım türü için inşaat araç çubuğumu açarken, aynı zamanda yer şekillendirme araç çubuğunu da aç. STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR :Küçük haritada kullanılan toprak rengi: {STRING} +STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :Küçük haritadaki arazi rengi STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :Yeşil STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :Koyu yeşil STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Mor STR_CONFIG_SETTING_REVERSE_SCROLLING :Fareyle kaydırma hareketini ters çevir: {STRING} +STR_CONFIG_SETTING_REVERSE_SCROLLING_HELPTEXT :Haritayı sağ fare tuşuyla kaydırırken davranış biçimi. Etkisiz kılındığında, fare kamerayı hareket ettirir. Etkinleştirildiğinde ise fare haritayı hareket ettirir. STR_CONFIG_SETTING_SMOOTH_SCROLLING :Düzgün viewport kaydırması: {STRING} +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ç 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 yanıtla STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING :Fare tekerleğinin fonksiyonu: {STRING} -STR_CONFIG_SETTING_SCROLLWHEEL_ZOOM :Haritayı yakınaştır +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ı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} +STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER_HELPTEXT :Fare-tekeri ile ekran kaydırmanın hassaslığını ayarla STR_CONFIG_SETTING_OSK_ACTIVATION :Görsel klavye: {STRING} +STR_CONFIG_SETTING_OSK_ACTIVATION_HELPTEXT :Sadece işaretleme aygıtı kullanırken düzenleme kutularına yazı yazabilmek için ekranda görüntülenen klavyenin hangi yöntemle açılacağını belirleyin. STR_CONFIG_SETTING_OSK_ACTIVATION_DISABLED :Kapalı STR_CONFIG_SETTING_OSK_ACTIVATION_DOUBLE_CLICK :Çift tık STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK_FOCUS :Tek tık (odaklanmışken) STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK :Tek tık (anında) STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU :Sağ tıklama öykünümü: {STRING} +STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_HELPTEXT :Sağ fare-tıklamalarının hangi yöntemle taklit edileceğini seçin. STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Komut-tıklama STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Kontrol-tıklama 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_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 duraklatılır. STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :Oyun durakladığında izin verilenler: {STRING} -STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :hiçbir hareket -STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_CONSTRUCTION :inş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_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_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 STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :Zaman tablosunda gün yerine işlemci zamanı kullan: {STRING} +STR_CONFIG_SETTING_TIMETABLE_IN_TICKS_HELPTEXT :Zaman çizelgelerinde yolculuk sürelerini gün yerine oyun zamanı cinsinden göster STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE :Çıkış ve varışları çizelgelerde göster: {STRING} -STR_CONFIG_SETTING_QUICKGOTO :Araç emirlerinin hızlı oluşturulması: {STRING} +STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE_HELPTEXT :Zaman çizelgelerinde tahmini varış ve ayrılış zamanlarını göster +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. "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 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} - +STR_CONFIG_SETTING_EXPENSES_LAYOUT_HELPTEXT :Şirket harcamaları penceresinin nasıl düzenleneceğini belirle + +STR_CONFIG_SETTING_SOUND_TICKER :Kayan haber bandı: {STRING} +STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :Özet haber mesajları için ses çal +STR_CONFIG_SETTING_SOUND_NEWS :Gazete: {STRING} +STR_CONFIG_SETTING_SOUND_NEWS_HELPTEXT :Gazete gösterimlerinde ses oynat +STR_CONFIG_SETTING_SOUND_NEW_YEAR :Yıl sonu: {STRING} +STR_CONFIG_SETTING_SOUND_NEW_YEAR_HELPTEXT :Yıl sonunda şirketin o yılki performansını bir önceki yılın performansıyla karşılaştıran özet eşliğinde ses çal +STR_CONFIG_SETTING_SOUND_CONFIRM :İnşaat: {STRING} +STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT :Başarılı inşaatlarda ya da diğer eylemlerde ses oynat +STR_CONFIG_SETTING_SOUND_CLICK :Düğme klikleri: {STRING} +STR_CONFIG_SETTING_SOUND_CLICK_HELPTEXT :Düğmelere basıldığında bip'le +STR_CONFIG_SETTING_SOUND_DISASTER :Kaza/felaketler: {STRING} +STR_CONFIG_SETTING_SOUND_DISASTER_HELPTEXT :Kaza ve felaketlerin ses efektlerini oynat +STR_CONFIG_SETTING_SOUND_VEHICLE :Araçlar: {STRING} +STR_CONFIG_SETTING_SOUND_VEHICLE_HELPTEXT :Araçların seslerini oynat +STR_CONFIG_SETTING_SOUND_AMBIENT :Ortam: {STRING} +STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :Yeryüzü, fabrikalar ve kasabaların ortam seslerini oynat STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING :Uygun araç bulunmadığında ilgili altyapıların yapılmasını engelle: {STRING} +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_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ı STR_CONFIG_SETTING_MAX_SHIPS :Şirket başına azami gemi sayısı: {STRING} +STR_CONFIG_SETTING_MAX_SHIPS_HELPTEXT :Bir şirketin sahip olabileceği azami gemi sayısı STR_CONFIG_SETTING_AI_BUILDS_TRAINS :Bilgisayar tren kullanmasın: {STRING} -STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES :Bilgisayar araba kullanmasın: {STRING} -STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT :Bilgisayar uçak kullanmasın: {STRING} +STR_CONFIG_SETTING_AI_BUILDS_TRAINS_HELPTEXT :Etkinleştirildiğinde bilgisayarın kontrol ettiği şirket tren yapamaz +STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES :Bilgisayar karayolu araçları kullanmasın: {STRING} +STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES_HELPTEXT :Etkinleştirildiğinde bilgisayarın kontrol ettiği şirket karayolu aracı yapamaz +STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT :Bilgisayar hava taşıtları kullanmasın: {STRING} +STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT_HELPTEXT :Etkinleştirildiğinde bilgisayarın kontrol ettiği şirket havayolu aracı yapamaz STR_CONFIG_SETTING_AI_BUILDS_SHIPS :Bilgisayar gemi kullanmasın: {STRING} +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 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 :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 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_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 +STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Hava araçları için varsayılan bakım aralığı: {STRING} +STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Yeni hava 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_SHIPS :Gemiler için varsayılan bakım aralığı: {STRING} +STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Yeni gemiler 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_NOSERVICE :Bozulmalar kapalıysa sevisler kapalı olsun: {STRING} +STR_CONFIG_SETTING_NOSERVICE_HELPTEXT :Etkinleştirildiğinde, araçlar bozulmuyorlarsa bakıma gönderilmezler STR_CONFIG_SETTING_WAGONSPEEDLIMITS :Vagonların treni yavaşlatması izinli: {STRING} +STR_CONFIG_SETTING_WAGONSPEEDLIMITS_HELPTEXT :Etkinleştirildiğinde, bir trenin azami hızına karar verirken vagonların hız limitleri de göz önünde bulundurulur STR_CONFIG_SETTING_DISABLE_ELRAILS :Elektrikli rayları iptal et: {STRING} +STR_CONFIG_SETTING_DISABLE_ELRAILS_HELPTEXT :Etkinleştirildiğinde, elektrikli araçları kullanabilmek için rayların elektrikli olması gerekmez STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN :Oyuncunun istasyonuna ilk aracın gelişi: {STRING} +STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN_HELPTEXT :Oyuncuya ait yeni yapılan bir durağa ilk kez araç ulaştığında gazete haberi olarak göster STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER :Rakibin istasyonuna ilk aracın gelişi: {STRING} +STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER_HELPTEXT :Rakibe ait yeni yapılan bir durağa ilk kez araç ulaştığında gazete haberi olarak göster STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS :Kazalar / felaketler: {STRING} +STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS_HELPTEXT :Kazalar veya felaketler meydana geldiğinde gazete haberi olarak göster STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION :Şirket bilgisi: {STRING} +STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION_HELPTEXT :Yeni bir şirket oyuna başladığında veya şirketler iflas etme riski taşıdığında gazete haberi olarak göster STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN :Fabrikaların açılışı: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN_HELPTEXT :Yeni endüstriler kurulduğunda gazete haberi olarak göster STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE :Fabrikaların kapanışı: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE_HELPTEXT :Endüstriler kapandığında gazete haberi olarak göster STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES :Ekonomideki değişimler: {STRING} +STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES_HELPTEXT :Ekonomideki küresel değişiklikleri gazete haberi olarak göster STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY :Şirket tarafından hizmet verilen fabrikaların üretim değişiklikleri: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY_HELPTEXT :Oyuncuya ait şirketin hizmet ettiği endüstrilerin üretim miktarları değiştiğinde gazete haberi olarak göster STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER :Rakiplerin hizmet ettiği fabrikalardaki üretim değişiklikleri: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER_HELPTEXT :Rakiplere ait şirketlerin hizmet ettiği endüstrilerin üretim miktarları değiştiğinde gazete haberi olarak göster STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED :Diğer fabrikalardaki üretim değişiklikleri: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED_HELPTEXT :Ne oyuncu ne de rakipler tarafından hizmet edilen endüstrilerin üretim miktarları değiştiğinde gazete haberi olarak göster 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ç 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} +STR_CONFIG_SETTING_NEWS_SUBSIDIES_HELPTEXT :Teşvikle ilgili olaylarda gazete göster STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION :Genel bilgi: {STRING} +STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION_HELPTEXT :Ayrıcalıklı hakların satın alınması veya yolların yeniden yapılmasının finanse edilmesi gibi genel olayları gazetede göster STR_CONFIG_SETTING_NEWS_MESSAGES_OFF :Kapalı STR_CONFIG_SETTING_NEWS_MESSAGES_SUMMARY :Özet STR_CONFIG_SETTING_NEWS_MESSAGES_FULL :Tam STR_CONFIG_SETTING_COLOURED_NEWS_YEAR :Renkli gazete şu senede çıksın: {STRING} +STR_CONFIG_SETTING_COLOURED_NEWS_YEAR_HELPTEXT :Gazete haberlerinin renkli olarak basılmaya başlandığı yıl. Bu tarihe kadar gazete siyah/beyaz olarak basılır STR_CONFIG_SETTING_STARTING_YEAR :Başlangıç tarihi: {STRING} STR_CONFIG_SETTING_SMOOTH_ECONOMY :Yüzeysel ekonomi (daha çok ve küçük çapta değişiklikler): {STRING} +STR_CONFIG_SETTING_SMOOTH_ECONOMY_HELPTEXT :Etkinleştirildiğinde, endüstri üretim miktarı daha sık ve daha küçük adımlarla değişir. Eğer endüstriler bir NewGRF dosyası tarafından sağlanıyorsa bu özellik genellikle etkisiz kalır 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 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 +STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE :Fare sürüklendiğinde, sinyaller arasında sabit mesafe bırakılsın: {STRING} +STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :Ctrl+fare sürüklemesi ile sinyal inşa ederken sinyallerin nasıl yerleştirileceğini belirler. Etkinleştirildiğinde her "n" karede bir sinyal yerleştirilir, böylece birbirine paralel raylardaki sinyallerin aynı hizada olmasını sağlamak kolaylaşı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_DEFAULT_SIGNAL_TYPE :Varsayılan sinyal tipi: {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 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 :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_DEFAULT :varsayılan -STR_CONFIG_SETTING_TOWN_LAYOUT_BETTER_ROADS :daha iyi yollar +STR_CONFIG_SETTING_TOWN_LAYOUT_HELPTEXT :Şehirlerin karayolu ağlarını gösteren şema +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 -STR_CONFIG_SETTING_TOWN_LAYOUT_RANDOM :rastgele +STR_CONFIG_SETTING_TOWN_LAYOUT_RANDOM :Rastgele STR_CONFIG_SETTING_ALLOW_TOWN_ROADS :Kasabalara yol yapma izni verilsin: {STRING} +STR_CONFIG_SETTING_ALLOW_TOWN_ROADS_HELPTEXT :Şehirlerin büyüme için yollar yapmasına izin ver. Şehirlerin kendi kendine yol yapmasını engellemek için bu özelliği kapatın STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :Şehirlerde hemzemin geçit yapmaya izin ver: {STRING} +STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS_HELPTEXT :Etkinleştirildiğinde şehirlerin demiryolu ile karayolunun kesiştiği kavşaklar yapmasına izin verilir STR_CONFIG_SETTING_NOISE_LEVEL :Kasabalar tarafından kontrol edilen havaalanı gürültü seviyesine izin ver: {STRING} +STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :Etkisiz hale getirildiğinde, her şehirde iki havaalanı olabilir. Etkinleştirildiğinde ise, bir şehirdeki havaalanı sayısı o şehrin ne kadar gürültüye tahammül edebildiğiyle sınırlıdır; bu da nüfus miktarına, havaalanının büyüklüğüne ve uzaklığına bağlıdır STR_CONFIG_SETTING_TOWN_FOUNDING :Oyunda yeni şehirler kurma: {STRING} -STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :yasak -STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :izin verildi -STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :izin verildi, özel kasaba yerleşimi +STR_CONFIG_SETTING_TOWN_FOUNDING_HELPTEXT :Bu seçeneği etkinleştirmek, oyuncuların yeni şehirler kurmasına izin verir +STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :Yasak +STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :İzin verildi +STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :İzin verildi, özel kasaba yerleşimi STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT :Oyunda ağaç dikme: {STRING} -STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NONE :hiçbiri {RED}(kauçuk fabrikasını yok eder) -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_EXTRA_TREE_PLACEMENT_HELPTEXT :Oyundaki rastgele ağaçların görünümünü kontrol eder. Bu, ağaçların büyümesine bağımlı olan endüstrileri etkileyebilir, örneğin keresteciler gibi +STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NONE :Hiçbiri {RED}(kauçuk fabrikasını yok eder) +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 :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 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 +STR_CONFIG_SETTING_SNAP_RADIUS_DISABLED :Etkisiz STR_CONFIG_SETTING_SOFT_LIMIT :Azami sabitlenmemiş pencere sayısı: {STRING} +STR_CONFIG_SETTING_SOFT_LIMIT_HELPTEXT :Yeni pencerelere yer açmak üzere eski pencerelerin otomatik olarak kapanmaya başlaması için ekranda bulunması gereken "sabitlenmemiş" pencere sayısı +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 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 STR_CONFIG_SETTING_ZOOM_LVL_IN_2X :2x STR_CONFIG_SETTING_ZOOM_LVL_NORMAL :Normal @@ -1330,40 +1552,103 @@ 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 :Şehirlerin genişleme hızı: {STRING} +STR_CONFIG_SETTING_TOWN_GROWTH_HELPTEXT :Şehir büyüme hızı STR_CONFIG_SETTING_TOWN_GROWTH_NONE :Hiçbiri STR_CONFIG_SETTING_TOWN_GROWTH_SLOW :Yavaş STR_CONFIG_SETTING_TOWN_GROWTH_NORMAL :Normal STR_CONFIG_SETTING_TOWN_GROWTH_FAST :Hızlı STR_CONFIG_SETTING_TOWN_GROWTH_VERY_FAST :Çok Hızlı +STR_CONFIG_SETTING_LARGER_TOWNS :Şehirlere dönüşecek kasabaların oranı: {STRING} +STR_CONFIG_SETTING_LARGER_TOWNS_HELPTEXT :Şehirlere dönüşecek kasabaların miktarı, yani nispeten büyük başlayıp daha hızlı büyüyen kasabalar +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_MODIFIED_ROAD_REBUILD :Yol yapımı sırasında gerçekçi olmayan yerleri kaldır: {STRING} - -STR_CONFIG_SETTING_GUI :{ORANGE}Arayüz -STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}İnşaat +STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Oyun başlangıcında şehirlerin normal kasabalara kıyasla ortalama büyüklüğü + +STR_CONFIG_SETTING_LINKGRAPH_INTERVAL :Dağıtım grafiğini her {STRING} 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_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 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 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 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 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 :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 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) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER :Araç gücü ölçü birimi: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_HELPTEXT :Kullanıcı arayüzünde bir aracın gücü görüntülendiğinde, bunu seçili ölçü biriminde göster. +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_IMPERIAL :Imperial (Ingiliz ölçü birimleri) (hp/beygir gücü) +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_METRIC :Metrik (hp/beygir gücü) +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_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_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_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_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_LOCALISATION :{ORANGE}Yerelleştirme +STR_CONFIG_SETTING_SOUND :{ORANGE}Ses efektleri +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_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_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) STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Trenler için yol bulucu: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :Arabalar için yol bulucu: {STRING} +STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Trenler için kullanılacak "yol bulucu" algoritma +STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :Karayolu taşıtları için yol bulucu: {STRING} +STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES_HELPTEXT :Karayolu araçları için kullanılacak "yol bulucu" algoritma STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS :Gemiler için yol bulucu: {STRING} +STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT :Gemiler için kullanılacak "yol bulucu" algoritma STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :İşaretlerde otomatik geri çevirme: {STRING} +STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT :Tren sinyalde uzun süre beklediği takdirde ters yöne gitmesine izin ver STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}Ayar değerini değiştir @@ -1381,6 +1666,11 @@ 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 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 # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} @@ -1397,27 +1687,27 @@ STR_INTRO_HIGHSCORE :{BLACK}Puan Tab 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 Ayarları +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 ayarlarını göster +STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}YZ ve Oyun betik ayarlarını göster STR_INTRO_TOOLTIP_QUIT :{BLACK}'OpenTTD' den çık STR_INTRO_TRANSLATION :{BLACK}Bu çeviride {NUM} eksik metin var. Çevirmen olarak kaydolarak OpenTTD'nin iyileştirilmesine yardım edin. Ayrıntılar için readme.txt'ye bakın. @@ -1467,12 +1757,12 @@ STR_LIVERY_CAPTION :{WHITE}Yeni Ren STR_LIVERY_GENERAL_TOOLTIP :{BLACK}Genel renk şemalarını göster STR_LIVERY_TRAIN_TOOLTIP :{BLACK}Tren renk düzenlerini göster -STR_LIVERY_ROAD_VEHICLE_TOOLTIP :{BLACK}Araba renk düzenlerini göster +STR_LIVERY_ROAD_VEHICLE_TOOLTIP :{BLACK}Araç renk düzenlerini göster STR_LIVERY_SHIP_TOOLTIP :{BLACK}Gemi renk düzenlerini göster 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ç -STR_LIVERY_SECONDARY_TOOLTIP :{BLACK}Seçili düzen için ikincil rengi seç -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_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_DEFAULT :Şirket Rengi STR_LIVERY_STEAM :Buharlı Lokomotif @@ -1502,11 +1792,12 @@ 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ç STR_FACE_FEMALE_BUTTON :{BLACK}Bayan -STR_FACE_FEMALE_TOOLTIP :{BLACK}Bayan suratlarıni seç +STR_FACE_FEMALE_TOOLTIP :{BLACK}Bayan suratlarını seç STR_FACE_NEW_FACE_BUTTON :{BLACK}Yeni Surat STR_FACE_NEW_FACE_TOOLTIP :{BLACK}Rastgele surat yap STR_FACE_ADVANCED :{BLACK}Gelişmiş @@ -1557,10 +1848,10 @@ STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}Kravatı # Network server list STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}Çok Oyunculu -STR_NETWORK_SERVER_LIST_CONNECTION :{BLACK}Bağlantı: -STR_NETWORK_SERVER_LIST_CONNECTION_TOOLTIP :{BLACK}İnternet ya da yerel ağ bağlantısı (LAN) oyunundan birini seçin -STR_NETWORK_SERVER_LIST_LAN :LAN -STR_NETWORK_SERVER_LIST_INTERNET :İnternet +STR_NETWORK_SERVER_LIST_ADVERTISED :{BLACK}Duyurulan +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ı: STR_NETWORK_SERVER_LIST_ENTER_NAME_TOOLTIP :{BLACK}Oyuncuların görecegi adınızı seçin @@ -1570,8 +1861,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 @@ -1579,7 +1870,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İ @@ -1609,7 +1900,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 @@ -1619,8 +1910,8 @@ STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP :{BLACK}Bu oyun STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}Parola koy STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Erişimi kısıtlamak için oyuna parola koy -STR_NETWORK_START_SERVER_LAN_INTERNET :LAN / internet -STR_NETWORK_START_SERVER_INTERNET_ADVERTISE :İnternet (reklam vererek) +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_TOOLTIP :{BLACK}İzin verilen en fazla oyuncu sayısını seç. Her yerin dolması gerekmez @@ -1741,6 +2032,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 @@ -1770,7 +2062,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ı @@ -1789,7 +2081,7 @@ STR_NETWORK_ERROR_KICKED :{WHITE}Oyundan STR_NETWORK_ERROR_CHEATER :{WHITE}Bu sunucuda hileler kapalı STR_NETWORK_ERROR_TOO_MANY_COMMANDS :{WHITE}Sunucuya çok fazla komut gönderiyordunuz STR_NETWORK_ERROR_TIMEOUT_PASSWORD :{WHITE}Şifre girmeniz çok uzun sürdü -STR_NETWORK_ERROR_TIMEOUT_COMPUTER :{WHITE}Bilgisayarınızın katılması çok uzun sürdü +STR_NETWORK_ERROR_TIMEOUT_COMPUTER :{WHITE}Bilgisayarınız sunucuyla haberleşmeyi sürdürmek için çok yavaş. STR_NETWORK_ERROR_TIMEOUT_MAP :{WHITE}Bilgisayarınızın haritayı indirmesi çok uzun sürdü STR_NETWORK_ERROR_TIMEOUT_JOIN :{WHITE}Bilgisayarınızın sunucuya katılması çok uzun sürdü @@ -1859,6 +2151,10 @@ STR_CONTENT_SELECT_UPDATES_CAPTION :{BLACK}Güncell STR_CONTENT_SELECT_UPDATES_CAPTION_TOOLTIP :{BLACK}Mevcut içeriğin güncellemesi olan tüm içeriği indirilmek üzere işaretle STR_CONTENT_UNSELECT_ALL_CAPTION :{BLACK}Tümünden seçimi kaldır STR_CONTENT_UNSELECT_ALL_CAPTION_TOOLTIP :{BLACK}Tüm içeriği indirilmemek üzere işaretle +STR_CONTENT_SEARCH_EXTERNAL :{BLACK}Dış sitelerde ara +STR_CONTENT_SEARCH_EXTERNAL_TOOLTIP :{BLACK}OpenTTD'nin kendi servisinde bulunmayan içeriği OpenTTD ile ilişkisi bulunmayan diğer sitelerde ara +STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER_CAPTION :{WHITE}OpenTTD'den çıkıyorsunuz! +STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER :{WHITE}Harici sitelerden içerik indirmenin şart ve koşulları değişiklik gösterir.{}İndirdiğiniz içeriği OpenTTD'ye nasıl kuracağınıza dair talimatlar için harici sitelere bakmalısınız.{}Devam etmek istiyor musunuz? STR_CONTENT_FILTER_TITLE :{BLACK}Etiket/isim süzgeci: STR_CONTENT_OPEN_URL :{BLACK}İnternet sitesine git STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}Bu içeriğin internet sitesi @@ -1901,7 +2197,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ı... @@ -1917,7 +2213,7 @@ STR_MISSING_GRAPHICS_NO_QUIT :{BLACK}Hayır, # Transparency settings window STR_TRANSPARENCY_CAPTION :{WHITE}Şeffaflık Seçenekleri -STR_TRANSPARENT_SIGNS_TOOLTIP :{BLACK}Durak tabelaları için şeffaflık. Kilitlemek için Ctrl ile tıklayın +STR_TRANSPARENT_SIGNS_TOOLTIP :{BLACK}Durak tabelaları için şeffaflığı aç. Kilitlemek için Ctrl ile tıklayın STR_TRANSPARENT_TREES_TOOLTIP :{BLACK}Ağaçlar için şeffaflık. Kilitlemek için Ctrl ile tıklayın STR_TRANSPARENT_HOUSES_TOOLTIP :{BLACK}Evler için şeffaflık. Kilitlemek için Ctrl ile tıklayın STR_TRANSPARENT_INDUSTRIES_TOOLTIP :{BLACK}Fabrikalar için şeffaflık. Kilitlemek için Ctrl ile tıklayın @@ -1928,6 +2224,17 @@ STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}Tren ele STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Transparan yükleme göstergesi. Kilitlemek için Ctrl ile tıklayın STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}Nesneleri şeffaf değil görünmez yap +# Linkgraph legend window +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}doygun +STR_LINKGRAPH_LEGEND_OVERLOADED :{TINY_FONT}{BLACK}aşırı dolu + # Base for station construction window(s) STR_STATION_BUILD_COVERAGE_AREA_TITLE :{BLACK}Kapsama alanı STR_STATION_BUILD_COVERAGE_OFF :{BLACK}Kapalı @@ -1951,11 +2258,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 @@ -1967,8 +2274,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 @@ -1993,13 +2300,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 @@ -2031,14 +2338,14 @@ 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 -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}Garaj yap (araç alımı ve bakımı için) -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}Tramvay garı yap (araç alımı ve tamiri için) -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_BUS_STATION :{BLACK}Otobüs durağı yap -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_PASSENGER_TRAM_STATION :{BLACK}Yolcu tramvayı istasyonu yap -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRUCK_LOADING_BAY :{BLACK}Kamyon yükleme bölgesi yap -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_CARGO_TRAM_STATION :{BLACK}Yük tramvayı istasyonu yap +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. +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_PASSENGER_TRAM_STATION :{BLACK}Yolcu tramvayı istasyonu inşa et. Ctrl istasyonları birleştirmeyi mümkün kılar. Shift ile tıklama maliyet tahminini gösterir +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRUCK_LOADING_BAY :{BLACK}Kamyon yükleme bölgesi inşa et. Ctrl istasyonları birleştirmeyi mümkün kılar. Shift ile tıklama maliyet tahminini gösterir +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_CARGO_TRAM_STATION :{BLACK}Yük tramvayı istasyonu inşa et. Ctrl istasyonları birleştirmeyi mümkün kılar. Shift ile tıklama maliyet tahminini gösterir STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_ONE_WAY_ROAD :{BLACK}Tek yönlü yolları etkinleştir/kapat STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_BRIDGE :{BLACK}Köprü yap. Shift ile tıklama maliyet tahminini gösterir STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_BRIDGE :{BLACK}Tramvay köprüsü yap. Shift ile tıklama maliyet tahminini gösterir @@ -2058,18 +2365,18 @@ STR_STATION_BUILD_BUS_ORIENTATION :{WHITE}Otobüs STR_STATION_BUILD_BUS_ORIENTATION_TOOLTIP :{BLACK}Otobüs durağı yönünü seç STR_STATION_BUILD_TRUCK_ORIENTATION :{WHITE}Kamyon Durağı Yönü STR_STATION_BUILD_TRUCK_ORIENTATION_TOOLTIP :{BLACK}Kamyon durağı yönünü seç -STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION :{WHITE}Yolcu Tramvayı Yönü +STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION :{WHITE}Yolcu Tramvay İstasyonu Yönü STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION_TOOLTIP :{BLACK}Yolcu tramvayı istasyonu yönünü seçin -STR_STATION_BUILD_CARGO_TRAM_ORIENTATION :{WHITE}Yük Tramvayı Yönü +STR_STATION_BUILD_CARGO_TRAM_ORIENTATION :{WHITE}Yük Tramvay İstasyonu Yönü STR_STATION_BUILD_CARGO_TRAM_ORIENTATION_TOOLTIP :{BLACK}Yük tramvayı istasyonu yönünü seçin # Waterways toolbar (last two for SE only) STR_WATERWAYS_TOOLBAR_CAPTION :{WHITE}Suyolu inşaatı STR_WATERWAYS_TOOLBAR_CAPTION_SE :{WHITE}Suyolu STR_WATERWAYS_TOOLBAR_BUILD_CANALS_TOOLTIP :{BLACK}Kanal yap. Shift ile tıklama maliyet tahminini gösterir -STR_WATERWAYS_TOOLBAR_BUILD_LOCKS_TOOLTIP :{BLACK}Kilit yap. Shift ile tıklama maliyet tahminini gösterir -STR_WATERWAYS_TOOLBAR_BUILD_DEPOT_TOOLTIP :{BLACK}Tersane yap (gemi yapmak ve bakımları için) -STR_WATERWAYS_TOOLBAR_BUILD_DOCK_TOOLTIP :{BLACK}İskele yap +STR_WATERWAYS_TOOLBAR_BUILD_LOCKS_TOOLTIP :{BLACK}Yükseltme havuzu yap. Shift tuşu inşaat/maliyet tahminini gösterir +STR_WATERWAYS_TOOLBAR_BUILD_DEPOT_TOOLTIP :{BLACK}Tersane yap (gemi satın alımı ve bakımları için). Shift ile tıklama maliyet tahminini gösterir +STR_WATERWAYS_TOOLBAR_BUILD_DOCK_TOOLTIP :{BLACK}İskele inşa et. Ctrl istasyonları birleştirmeyi mümkün kılar. Shift ile tıklama maliyet tahminini gösterir STR_WATERWAYS_TOOLBAR_BUOY_TOOLTIP :{BLACK}Yerimi olarak kullanilabilecek bir şamandıra yerlestir. Shift ile tıklama maliyet tahminini gösterir STR_WATERWAYS_TOOLBAR_BUILD_AQUEDUCT_TOOLTIP :{BLACK}Su kemeri yap. Shift ile tıklama maliyet tahminini gösterir STR_WATERWAYS_TOOLBAR_CREATE_LAKE_TOOLTIP :{BLACK}Su alanını belirle.{}Deniz seviyesinde CTRL tuşu basılı olmadığı sürece kanal yapar, basılıysa etraftakileri su altında bırakır @@ -2084,7 +2391,7 @@ STR_STATION_BUILD_DOCK_CAPTION :{WHITE}İskele # Airport toolbar STR_TOOLBAR_AIRCRAFT_CAPTION :{WHITE}Havalimanları -STR_TOOLBAR_AIRCRAFT_BUILD_AIRPORT_TOOLTIP :{BLACK}Havalimanı yap +STR_TOOLBAR_AIRCRAFT_BUILD_AIRPORT_TOOLTIP :{BLACK}Havalimanı inşa et. Ctrl istasyonları birleştirmeyi mümkün kılar. Shift ile tıklama maliyet tahminini gösterir # Airport construction window STR_STATION_BUILD_AIRPORT_CAPTION :{WHITE}Havalimanı seçimi @@ -2128,7 +2435,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 +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ç @@ -2143,15 +2450,15 @@ 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 oyuncuya 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}Oyuncuya ait olan herşeyi silmek istediğinize emin misiniz? +STR_RESET_LANDSCAPE_CONFIRMATION_TEXT :{WHITE}Şirkete ait olan her şeyi silmek istediğinize emin misiniz? # Town generation window (SE) STR_FOUND_TOWN_CAPTION :{WHITE}Şehir Yapımı STR_FOUND_TOWN_NEW_TOWN_BUTTON :{BLACK}Yeni Şehir -STR_FOUND_TOWN_NEW_TOWN_TOOLTIP :{BLACK}Yeni şehir kur. Shift+tıklama sadece tahmini maliyeti gösterir +STR_FOUND_TOWN_NEW_TOWN_TOOLTIP :{BLACK}Yeni şehir kur. Shift+Tıklama sadece tahmini maliyeti gösterir STR_FOUND_TOWN_RANDOM_TOWN_BUTTON :{BLACK}Rastgele Şehir STR_FOUND_TOWN_RANDOM_TOWN_TOOLTIP :{BLACK}Rastgele bir yerde şehir kur STR_FOUND_TOWN_MANY_RANDOM_TOWNS :{BLACK}Birçok rastgele şehir @@ -2174,7 +2481,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 @@ -2192,7 +2499,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 @@ -2230,6 +2537,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 @@ -2262,12 +2570,12 @@ 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 STR_LAI_ROAD_DESCRIPTION_TREE_LINED_ROAD :Ağaçli yol -STR_LAI_ROAD_DESCRIPTION_ROAD_VEHICLE_DEPOT :Araba garı +STR_LAI_ROAD_DESCRIPTION_ROAD_VEHICLE_DEPOT :Karayolu garajı STR_LAI_ROAD_DESCRIPTION_ROAD_RAIL_LEVEL_CROSSING :Hemzemin geçit STR_LAI_ROAD_DESCRIPTION_TRAMWAY :Tramvay @@ -2325,8 +2633,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-2012 OpenTTD ekibi +STR_ABOUT_VERSION :{BLACK}OpenTTD sürüm {REV} +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2014 OpenTTD ekibi # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Oyunu Kaydet @@ -2345,6 +2653,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} @@ -2355,6 +2664,7 @@ STR_SAVELOAD_OSKTITLE :{BLACK}Kayıtl # World generation STR_MAPGEN_WORLD_GENERATION_CAPTION :{WHITE}Harita üretimi STR_MAPGEN_MAPSIZE :{BLACK}Harita boyutu: +STR_MAPGEN_MAPSIZE_TOOLTIP :{BLACK}Haritanın büyüklüğünü kare sayısına göre seçin. Kullanılabilir karelerin sayısı bir miktar az olacaktır. STR_MAPGEN_BY :{BLACK}* STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Şehir sayısı: STR_MAPGEN_DATE :{BLACK}Tarih: @@ -2362,12 +2672,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: @@ -2392,7 +2698,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 @@ -2408,7 +2713,7 @@ STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_UP :{BLACK}Düzlü STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_QUERY_CAPT :{WHITE}Düzlüğün yüksekliğini değiştir # Map generation progress -STR_GENERATION_WORLD :{WHITE}Harita oluşturuluyor... +STR_GENERATION_WORLD :{WHITE}Harita Oluşturuluyor... STR_GENERATION_ABORT :{BLACK}İptal STR_GENERATION_ABORT_CAPTION :{WHITE}Harita Yapmayı iptal Et STR_GENERATION_ABORT_MESSAGE :{YELLOW}Oluşturmayı iptal etmek istediğinizden emin misiniz? @@ -2425,18 +2730,18 @@ STR_GENERATION_PREPARING_SCRIPT :{BLACK}Betik ç STR_GENERATION_PREPARING_GAME :{BLACK}Oyun hazırlanıyor # NewGRF settings -STR_NEWGRF_SETTINGS_CAPTION :{WHITE}NewGRF ayarları +STR_NEWGRF_SETTINGS_CAPTION :{WHITE}NewGRF Ayarları STR_NEWGRF_SETTINGS_INFO_TITLE :{WHITE}Ayrıntılı NewGRF bilgileri STR_NEWGRF_SETTINGS_ACTIVE_LIST :{WHITE}Aktif NewGRF dosyaları 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 @@ -2447,7 +2752,7 @@ STR_NEWGRF_SETTINGS_MOVEUP :{BLACK}Yukarı STR_NEWGRF_SETTINGS_MOVEUP_TOOLTIP :{BLACK}Seçili NewGRF dosyasını listenin yukarısına taşı STR_NEWGRF_SETTINGS_MOVEDOWN :{BLACK}Aşağı Taşı STR_NEWGRF_SETTINGS_MOVEDOWN_TOOLTIP :{BLACK}Seçili NewGRF dosyasını listenin aşağısına taşı -STR_NEWGRF_SETTINGS_FILE_TOOLTIP :{BLACK}Yüklü NewGRF dosyalarının listesidir. Seçeneklerini değiştirmek için bir dosyayı tıklayın +STR_NEWGRF_SETTINGS_FILE_TOOLTIP :{BLACK}Yüklü NewGRF dosyalarının listesidir. STR_NEWGRF_SETTINGS_SET_PARAMETERS :{BLACK}Parametreler STR_NEWGRF_SETTINGS_SHOW_PARAMETERS :{BLACK}Parametreleri göster @@ -2471,6 +2776,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 @@ -2487,25 +2794,25 @@ 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_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 sargıyı 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_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_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}Sprayta git +STR_SPRITE_ALIGNER_GOTO_CAPTION :{WHITE}Nesneye git # NewGRF (self) generated warnings/errors STR_NEWGRF_ERROR_MSG_INFO :{SILVER}{STRING} @@ -2523,24 +2830,25 @@ 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ı! -STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}Çalışan bir oyunu değiştirmek üzeresiniz. Bu OpenTTD'yi çökertebilir.{}Bundan kesinlikle emin misiniz? +STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}Çalışan bir oyunu değiştirmek üzeresiniz. Bu OpenTTD'yi çökertebilir veya oyunun durumunu bozabilir. Bu konular hakkında sorun bildirmeyiniz.{}Bundan kesinlikle emin misiniz? STR_NEWGRF_DUPLICATE_GRFID :{WHITE}Dosya eklenemiyor: GRF ID çakışması STR_NEWGRF_COMPATIBLE_LOADED :{ORANGE}Eşleşen dosya bulunamadı (uyumlu GRF yüklendi) +STR_NEWGRF_TOO_MANY_NEWGRFS :{WHITE}Dosya eklenemiyor: NewGRF dosya limitine ulaşıldı STR_NEWGRF_COMPATIBLE_LOAD_WARNING :{WHITE}Eksik dosyalar için uyumlu GRF(ler) yüklendi STR_NEWGRF_DISABLED_WARNING :{WHITE}Eksik GRF dosyaları etkisizleştirildi @@ -2557,6 +2865,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 @@ -2571,6 +2880,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... @@ -2593,15 +2905,15 @@ STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}Tabela i STR_TOWN_DIRECTORY_CAPTION :{WHITE}Şehirler STR_TOWN_DIRECTORY_NONE :{ORANGE}- Hiçbiri - STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA}) -STR_TOWN_DIRECTORY_LIST_TOOLTIP :{BLACK}Şehir isimleri - şehre bakmak için ismine tıkla +STR_TOWN_DIRECTORY_LIST_TOOLTIP :{BLACK}Şehir isimleri - şehre bakmak için ismine tıkla. Ctrl ile tıklama şehrin konumunu gösteren yeni bir pencere açar STR_TOWN_POPULATION :{BLACK}Dünya nüfusu: {COMMA} # Town view window STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN} STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} (Şehir) STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}Nüfus: {ORANGE}{COMMA}{BLACK} Ev: {ORANGE}{COMMA} -STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}Geçen ayki yolcular: {ORANGE}{COMMA}{BLACK} mak: {ORANGE}{COMMA} -STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}Geçen ayki posta: {ORANGE}{COMMA}{BLACK} mak: {ORANGE}{COMMA} +STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}Geçen ayki yolcu: {ORANGE}{COMMA}{BLACK} azami: {ORANGE}{COMMA} +STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}Geçen ayki posta: {ORANGE}{COMMA}{BLACK} azami: {ORANGE}{COMMA} STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}Kasaba büyümesi için gerekli kargo: STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{ORANGE}{STRING}{RED} gerekli STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} kışın gerekir @@ -2612,7 +2924,7 @@ STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}Kasaba { 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_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 +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 STR_TOWN_VIEW_LOCAL_AUTHORITY_BUTTON :{BLACK}Belediye STR_TOWN_VIEW_LOCAL_AUTHORITY_TOOLTIP :{BLACK}Belediye hakkında bilgi göster STR_TOWN_VIEW_RENAME_TOOLTIP :{BLACK}Şehrin ismini değiştir @@ -2649,13 +2961,17 @@ 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}Hedefler +STR_GOALS_CAPTION :{WHITE}{COMPANY} Hedefler +STR_GOALS_SPECTATOR_CAPTION :{WHITE}Evrensel Amaçlar STR_GOALS_GLOBAL_TITLE :{BLACK}Genel hedefler: STR_GOALS_TEXT :{ORANGE}{STRING} STR_GOALS_NONE :{ORANGE}- Hiçbiri - +STR_GOALS_SPECTATOR_NONE :{ORANGE}- Kullanılamaz - +STR_GOALS_PROGRESS :{ORANGE}{STRING} +STR_GOALS_PROGRESS_COMPLETE :{GREEN}{STRING} STR_GOALS_COMPANY_TITLE :{BLACK}Şirket hedefleri: STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Ana görünümü istenen fabrika/kasaba/kareye getirmek için hedefe tıklayın. Ctrl+Tıklama fabrika/kasaba/kare konumunda yeni bir pencerede görünüm açar @@ -2689,15 +3005,27 @@ STR_GOAL_QUESTION_BUTTON_CLOSE :Kapat STR_SUBSIDIES_CAPTION :{WHITE}Teşvikler STR_SUBSIDIES_OFFERED_TITLE :{BLACK}Teklif edilmiş teşvikler: STR_SUBSIDIES_OFFERED_FROM_TO :{ORANGE}{STRING} {STRING} -> {STRING}{YELLOW} ({DATE_SHORT} tarihinden itibaren) -STR_SUBSIDIES_NONE :{ORANGE}Yok +STR_SUBSIDIES_NONE :{ORANGE}- Yok - STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}Teşvik almakta olan hizmetler: STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING} {STRING} -> {STRING}{YELLOW} ({COMPANY}{YELLOW}, {DATE_SHORT} tarihine kadar) -STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Görüntüyü ortalamak için servisi tıklayın +STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Görüntüyü ortalamak için endüstriye/şehre tıklayın. Ctrl ile tıklama endüstrinin/şehrin konumunu gösteren yeni bir pencere açar + +# Story book window +STR_STORY_BOOK_CAPTION :{WHITE}{COMPANY} Hikaye Kitabı +STR_STORY_BOOK_SPECTATOR_CAPTION :{WHITE}Evrensel Hikaye Kitabı +STR_STORY_BOOK_TITLE :{YELLOW}{STRING} +STR_STORY_BOOK_GENERIC_PAGE_ITEM :Sayfa {NUM} +STR_STORY_BOOK_SEL_PAGE_TOOLTIP :{BLACK}Bu listeden seçerek istenilen sayfaya git. +STR_STORY_BOOK_PREV_PAGE :{BLACK}Bir önceki +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 +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 - @@ -2707,19 +3035,44 @@ 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} çıkış noktası {STATION}) +STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} {STATION}'dan) +STR_STATION_VIEW_RESERVED :{YELLOW}({CARGO_SHORT} yükleme için rezerve edilmiş) STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}İstenen STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}İstenen kargoların listesini göster STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}İstenen: {WHITE}{CARGO_LIST} - -STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Reyting -STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}İstasyonun reytinglerini göster -STR_STATION_VIEW_CARGO_RATINGS_TITLE :{BLACK}Yerel nakliyat reyitngleri: -STR_STATION_VIEW_CARGO_RATING :{WHITE}{STRING}: {YELLOW}{STRING} ({COMMA}%) +STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Bu istasyon şehrin ulaşım haklarına sahip. +STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} bu şehirdeki ulaşım haklarını satın aldı. + +STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Değerlendirmeler +STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}İstasyon değerlendirmelerini göster +STR_STATION_VIEW_SUPPLY_RATINGS_TITLE :{BLACK}Aylık üretim ve yerel değerlendirme: +STR_STATION_VIEW_CARGO_SUPPLY_RATING :{WHITE}{STRING}: {YELLOW}{COMMA} / {STRING} (%{COMMA}) + +STR_STATION_VIEW_GROUP :{BLACK}Grupla +STR_STATION_VIEW_WAITING_STATION :Durak: Bekleyen +STR_STATION_VIEW_WAITING_AMOUNT :Miktar: Bekleyen +STR_STATION_VIEW_PLANNED_STATION :Durak: Planlanan +STR_STATION_VIEW_PLANNED_AMOUNT :Miktar: Planlanan +STR_STATION_VIEW_FROM :{YELLOW}{CARGO_SHORT}{STATION}'dan +STR_STATION_VIEW_VIA :{YELLOW}{CARGO_SHORT}{STATION} üzerinden +STR_STATION_VIEW_TO :{YELLOW}{CARGO_SHORT}{STATION}'a +STR_STATION_VIEW_FROM_ANY :{RED}{CARGO_SHORT} bilinmeyen duraktan +STR_STATION_VIEW_TO_ANY :{RED}{CARGO_SHORT} herhangi bir durağa +STR_STATION_VIEW_VIA_ANY :{RED}{CARGO_SHORT} herhangi bir durak üzerinden +STR_STATION_VIEW_FROM_HERE :{GREEN}{CARGO_SHORT} bu duraktan +STR_STATION_VIEW_VIA_HERE :{GREEN}{CARGO_SHORT} bu durakta duruyor +STR_STATION_VIEW_TO_HERE :{GREEN}{CARGO_SHORT} bu durağa +STR_STATION_VIEW_NONSTOP :{YELLOW}{CARGO_SHORT} durmaksızın + +STR_STATION_VIEW_GROUP_S_V_D :Kaynak-Üzerinden-Hedef +STR_STATION_VIEW_GROUP_S_D_V :Kaynak-Hedef-Üzerinden +STR_STATION_VIEW_GROUP_V_S_D :Üzerinden-Kaynak-Hedef +STR_STATION_VIEW_GROUP_V_D_S :Üzerinden-Hedef-Kaynak +STR_STATION_VIEW_GROUP_D_S_V :Hedef-Kaynak-Üzerinden +STR_STATION_VIEW_GROUP_D_V_S :Hedef-Üzerinden-Kaynak ############ range for rating starts STR_CARGO_RATING_APPALLING :Berbat @@ -2732,22 +3085,24 @@ STR_CARGO_RATING_EXCELLENT :Harika STR_CARGO_RATING_OUTSTANDING :Mükemmel ############ range for rating ends -STR_STATION_VIEW_CENTER_TOOLTIP :{BLACK}Durağın oldugu yere git +STR_STATION_VIEW_CENTER_TOOLTIP :{BLACK}Durağın oldugu yere git. Ctrl ile tıklama durağın konumunu gösteren yeni bir pencere açar STR_STATION_VIEW_RENAME_TOOLTIP :{BLACK}İstasyonun ismini değiştir STR_STATION_VIEW_SCHEDULED_TRAINS_TOOLTIP :{BLACK}Talimat listesinde bu durak olan trenleri listele -STR_STATION_VIEW_SCHEDULED_ROAD_VEHICLES_TOOLTIP :{BLACK}Talimat listesinde bu durak olan arabaları listele +STR_STATION_VIEW_SCHEDULED_ROAD_VEHICLES_TOOLTIP :{BLACK}Talimat listesinde bu durak olan tüm karayolu araçlarını listele STR_STATION_VIEW_SCHEDULED_AIRCRAFT_TOOLTIP :{BLACK}Talimat listesinde bu durak olan uçakları listele STR_STATION_VIEW_SCHEDULED_SHIPS_TOOLTIP :{BLACK}Talimat listesinde bu durak olan gemileri listele STR_STATION_VIEW_RENAME_STATION_CAPTION :İstasyonu yeniden adlandır +STR_STATION_VIEW_CLOSE_AIRPORT :{BLACK}Havalimanını kapat +STR_STATION_VIEW_CLOSE_AIRPORT_TOOLTIP :{BLACK}Uçağın bu havalimanına iniş yapmasını engelle # Waypoint/buoy view window STR_WAYPOINT_VIEW_CAPTION :{WHITE}{WAYPOINT} -STR_WAYPOINT_VIEW_CENTER_TOOLTIP :{BLACK}Ana görünümü yerimi konumuna ortala -STR_WAYPOINT_VIEW_CHANGE_WAYPOINT_NAME :{BLACK}Yolimi adını değiştir -STR_BUOY_VIEW_CENTER_TOOLTIP :{BLACK}Ana görünümü şamandıra konumuna ortala +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}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 STR_EDIT_WAYPOINT_NAME :{WHITE}Yerimi adını değiştir @@ -2757,15 +3112,15 @@ STR_FINANCES_CAPTION :{WHITE}{COMPANY STR_FINANCES_EXPENDITURE_INCOME_TITLE :{WHITE}Gider/Gelir STR_FINANCES_YEAR :{WHITE}{NUM} STR_FINANCES_SECTION_CONSTRUCTION :{GOLD}İnşaat -STR_FINANCES_SECTION_NEW_VEHICLES :{GOLD}Yeni araçlar +STR_FINANCES_SECTION_NEW_VEHICLES :{GOLD}Yeni Araçlar STR_FINANCES_SECTION_TRAIN_RUNNING_COSTS :{GOLD}Tren Bakımları -STR_FINANCES_SECTION_ROAD_VEHICLE_RUNNING_COSTS :{GOLD}Araba Bakımları -STR_FINANCES_SECTION_AIRCRAFT_RUNNING_COSTS :{GOLD}Uçak Bakımları +STR_FINANCES_SECTION_ROAD_VEHICLE_RUNNING_COSTS :{GOLD}Kara Taşıtı Bakımları +STR_FINANCES_SECTION_AIRCRAFT_RUNNING_COSTS :{GOLD}Hava Taşıtı Bakımları STR_FINANCES_SECTION_SHIP_RUNNING_COSTS :{GOLD}Gemi Bakımları STR_FINANCES_SECTION_PROPERTY_MAINTENANCE :{GOLD}İnşaat bakımları STR_FINANCES_SECTION_TRAIN_INCOME :{GOLD}Tren Geliri -STR_FINANCES_SECTION_ROAD_VEHICLE_INCOME :{GOLD}Araba Geliri -STR_FINANCES_SECTION_AIRCRAFT_INCOME :{GOLD}Uçak Geliri +STR_FINANCES_SECTION_ROAD_VEHICLE_INCOME :{GOLD}Kara Taşıtı Geliri +STR_FINANCES_SECTION_AIRCRAFT_INCOME :{GOLD}Hava Taşıtı Geliri STR_FINANCES_SECTION_SHIP_INCOME :{GOLD}Gemi Geliri STR_FINANCES_SECTION_LOAN_INTEREST :{GOLD}Kredi Faizi STR_FINANCES_SECTION_OTHER :{GOLD}Diğer @@ -2776,10 +3131,10 @@ STR_FINANCES_BANK_BALANCE_TITLE :{WHITE}Banka He 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}Ödünç al {CURRENCY_LONG} -STR_FINANCES_BORROW_TOOLTIP :{BLACK}Borcu arttır. Ctrl+Tık alınabilen en yüksek borcu alır. -STR_FINANCES_REPAY_BUTTON :{BLACK}Öde {CURRENCY_LONG} -STR_FINANCES_REPAY_TOOLTIP :{BLACK}Krediyi kısmen öde. Ctrl+Tık ödenebildiği kadar öder. +STR_FINANCES_BORROW_BUTTON :{BLACK}{CURRENCY_LONG} Kredi Al +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ıklama ödenebildiği kadar öder. STR_FINANCES_INFRASTRUCTURE_BUTTON :{BLACK}Altyapı # Company view @@ -2790,7 +3145,7 @@ STR_COMPANY_VIEW_INAUGURATED_TITLE :{GOLD}Kuruluş: STR_COMPANY_VIEW_COLOUR_SCHEME_TITLE :{GOLD}Renk: STR_COMPANY_VIEW_VEHICLES_TITLE :{GOLD}Araçlar: STR_COMPANY_VIEW_TRAINS :{WHITE}{COMMA} tren -STR_COMPANY_VIEW_ROAD_VEHICLES :{WHITE}{COMMA} araba +STR_COMPANY_VIEW_ROAD_VEHICLES :{WHITE}{COMMA} karayolu aracı STR_COMPANY_VIEW_AIRCRAFT :{WHITE}{COMMA} uçak STR_COMPANY_VIEW_SHIPS :{WHITE}{COMMA} gemi STR_COMPANY_VIEW_VEHICLES_NONE :{WHITE}Yok @@ -2825,7 +3180,7 @@ STR_COMPANY_VIEW_PRESIDENT_NAME_TOOLTIP :{BLACK}Müdür STR_COMPANY_VIEW_BUY_SHARE_BUTTON :{BLACK}%25'ini satın al STR_COMPANY_VIEW_SELL_SHARE_BUTTON :{BLACK}%25'ini geri ver STR_COMPANY_VIEW_BUY_SHARE_TOOLTIP :{BLACK}Şirketin %25 hissesini al. Shift+tıklama hisse satın almadan tahmini maliyeti gösterir -STR_COMPANY_VIEW_SELL_SHARE_TOOLTIP :{BLACK}Şirketin %25 hissesini satar. Shift+tıklama hisse satmadan tahmini maliyeti gösterir +STR_COMPANY_VIEW_SELL_SHARE_TOOLTIP :{BLACK}Şirketin %25 hissesini sat. Shift+tıklama hisse satmadan tahmini maliyeti gösterir STR_COMPANY_VIEW_COMPANY_NAME_QUERY_CAPTION :Şirketin ismi STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :Yöneticinin ismi @@ -2844,7 +3199,6 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS :{WHITE}Kanallar STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}İstasyonlar: STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}İstasyon kareleri STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}Havalimanları -STR_COMPANY_INFRASTRUCTURE_VIEW_COST :{WHITE}{1:CURRENCY_LONG}/yıl ({0:COMMA}) STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL :{WHITE}{CURRENCY_LONG}/yıl # Industry directory @@ -2853,14 +3207,15 @@ STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}- Hiçb STR_INDUSTRY_DIRECTORY_ITEM :{ORANGE}{INDUSTRY}{BLACK} ({CARGO_LONG}{STRING}){YELLOW} (%{COMMA} taşındı) STR_INDUSTRY_DIRECTORY_ITEM_TWO :{ORANGE}{INDUSTRY}{BLACK} ({CARGO_LONG}{STRING}/{CARGO_LONG}{STRING}){YELLOW} (%{COMMA}/%{COMMA} taşındı) STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUSTRY} -STR_INDUSTRY_DIRECTORY_LIST_CAPTION :{BLACK}Fabrika adları - görüntüyü fabrikada merkezlemek için adına tıklayın +STR_INDUSTRY_DIRECTORY_LIST_CAPTION :{BLACK}Fabrika adları - görüntüyü fabrikada merkezlemek için adına tıklayın. Ctrl ile tıklama fabrikanın konumunu gösteren yeni bir pencere açar # Industry view STR_INDUSTRY_VIEW_CAPTION :{WHITE}{INDUSTRY} STR_INDUSTRY_VIEW_PRODUCTION_LAST_MONTH_TITLE :{BLACK}Geçen ayki üretim: STR_INDUSTRY_VIEW_TRANSPORTED :{YELLOW}{CARGO_LONG}{STRING}{BLACK} (%{COMMA} taşındı) -STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Fabrikaya git +STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Görüntüyü fabrikada ortala. Ctrl ile tıklama fabrikanın konumunu gösteren yeni bir pencere açar STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Üretim seviyesi: %{YELLOW}{COMMA} +STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}Fabrika çok yakında kapanacağını duyurdu! ############ range for requires starts STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}İstenen: {YELLOW}{STRING}{STRING} @@ -2875,24 +3230,24 @@ STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Üretir: STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}Üretir: {YELLOW}{STRING}{STRING}, {STRING}{STRING} ############ range for produces ends -STR_CONFIG_GAME_PRODUCTION :{WHITE}Üretimi değiştir +STR_CONFIG_GAME_PRODUCTION :{WHITE}Üretimi değiştir (8'in katı, 2040'a kadar) STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}Üretim seviyesini değiştir (yüzde olarak, %800'e kadar) # Vehicle lists STR_VEHICLE_LIST_TRAIN_CAPTION :{WHITE}{STRING} - {COMMA} Tren -STR_VEHICLE_LIST_ROAD_VEHICLE_CAPTION :{WHITE}{STRING} - {COMMA} Arabalar +STR_VEHICLE_LIST_ROAD_VEHICLE_CAPTION :{WHITE}{STRING} - {COMMA} Karayolu Aracı STR_VEHICLE_LIST_SHIP_CAPTION :{WHITE}{STRING} - {COMMA} Gemi STR_VEHICLE_LIST_AIRCRAFT_CAPTION :{WHITE}{STRING} - {COMMA} Uçak STR_VEHICLE_LIST_TRAIN_LIST_TOOLTIP :{BLACK}Trenlar - daha fazla bilgi için trene tıklayın -STR_VEHICLE_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}Arabalar - bilgi için arabaya tıklayın +STR_VEHICLE_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}Karayolu araçları - bilgi için araca tıklayın 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 Arabalar +STR_VEHICLE_LIST_AVAILABLE_ROAD_VEHICLES :Kullanılabilir Araçlar STR_VEHICLE_LIST_AVAILABLE_SHIPS :Kullanılabilir Gemiler STR_VEHICLE_LIST_AVAILABLE_AIRCRAFT :Kullanılabilir Uçaklar STR_VEHICLE_LIST_AVAILABLE_ENGINES_TOOLTIP :{BLACK}Bu araç türü için mümkün olan lokomotif tasarımlarını göster @@ -2914,21 +3269,24 @@ STR_VEHICLE_LIST_SHARED_ORDERS_LIST_CAPTION :{WHITE}{COMMA} # Group window STR_GROUP_ALL_TRAINS :Bütün trenler -STR_GROUP_ALL_ROAD_VEHICLES :Bütün arabalar +STR_GROUP_ALL_ROAD_VEHICLES :Tüm karayolu araçları STR_GROUP_ALL_SHIPS :Bütün Gemiler STR_GROUP_ALL_AIRCRAFTS :Bütün uçaklar STR_GROUP_DEFAULT_TRAINS :Gruplanmamış trenler -STR_GROUP_DEFAULT_ROAD_VEHICLES :Gruplanmamış arabalar +STR_GROUP_DEFAULT_ROAD_VEHICLES :Gruplanmamış karayolu taşıtları 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 @@ -2941,9 +3299,9 @@ STR_BUY_VEHICLE_TRAIN_MONORAIL_CAPTION :Yeni Monoray STR_BUY_VEHICLE_TRAIN_MAGLEV_CAPTION :Yeni Maglev STR_BUY_VEHICLE_TRAIN_ALL_CAPTION :Trenler -STR_BUY_VEHICLE_ROAD_VEHICLE_CAPTION :Yeni Araba +STR_BUY_VEHICLE_ROAD_VEHICLE_CAPTION :Yeni Karayolu Araçları STR_BUY_VEHICLE_SHIP_CAPTION :Yeni gemi -STR_BUY_VEHICLE_AIRCRAFT_CAPTION :Yeni Uçak +STR_BUY_VEHICLE_AIRCRAFT_CAPTION :Yeni Hava Aracı STR_PURCHASE_INFO_COST_WEIGHT :{BLACK}Fiyat: {GOLD}{CURRENCY_LONG}{BLACK} Ağırlık: {GOLD}{WEIGHT_SHORT} STR_PURCHASE_INFO_SPEED_POWER :{BLACK}Hız: {GOLD}{VELOCITY}{BLACK} Güç: {GOLD}{POWER} @@ -2954,7 +3312,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} @@ -2963,23 +3321,23 @@ 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}Araba listesi - bilgi için arabayı 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_BUY_VEHICLE_BUTTON :{BLACK}Satın Al -STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_BUTTON :{BLACK}Araba Al -STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_BUTTON :{BLACK}Gemi yap -STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_BUTTON :{BLACK}Uçak Yap +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 +STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_BUTTON :{BLACK}Gemi Satın Al +STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_BUTTON :{BLACK}Uçak Satın Al -STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_TOOLTIP :{BLACK}Seçili treni satın al -STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_TOOLTIP :{BLACK}Seçili arabayı al -STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_TOOLTIP :{BLACK}Seçili gemiyi yap -STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_TOOLTIP :{BLACK}Seçili uçaktan al +STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_TOOLTIP :{BLACK}Seçili treni satın al. Shift ile tıklama satın almadan tahmini maliyeti gösterir. +STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_TOOLTIP :{BLACK}İşaretli aracı al. Shift ile tıklama satın almadan tahmini maliyeti gösterir +STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_TOOLTIP :{BLACK}Seçili gemiyi satın al. Shift ile tıklama satın almadan tahmini maliyeti gösterir +STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_TOOLTIP :{BLACK}Seçili uçağı satın al. Shift ile tıklama satın almadan tahmini maliyeti gösterir STR_BUY_VEHICLE_TRAIN_RENAME_BUTTON :{BLACK}Yeni isim STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_BUTTON :{BLACK}İsim @@ -3007,75 +3365,75 @@ STR_DEPOT_VEHICLE_TOOLTIP :{BLACK}{ENGINE} STR_DEPOT_VEHICLE_TOOLTIP_CHAIN :{BLACK}{NUM} araç{STRING} STR_DEPOT_VEHICLE_TOOLTIP_CARGO :{}{CARGO_LONG} ({CARGO_SHORT}) -STR_DEPOT_TRAIN_LIST_TOOLTIP :{BLACK}Trenlar - bilgi için trene tıklayın., trene vagon eklemek/kaldırmak için sürükleyin -STR_DEPOT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Arabalar - ayrıntılı bilgi için araca sağ tıkla +STR_DEPOT_TRAIN_LIST_TOOLTIP :{BLACK}Trenler - trene vagon eklemek/kaldırmak için aracı sol tıkla sürükleyin, daha fazla bilgi için sağ tıklayın, iki fonkisyonu da takip eden vagon zincirine uygulamak için ctrl'e de basılı tutun. +STR_DEPOT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Araçlar - ayrıntılı bilgi için araca sağ tıkla STR_DEPOT_SHIP_LIST_TOOLTIP :{BLACK}Gemiler - bilgi için gemiye sağ tıkla STR_DEPOT_AIRCRAFT_LIST_TOOLTIP :{BLACK}Uçak - bilgi için uçağa sağ tıkla STR_DEPOT_TRAIN_SELL_TOOLTIP :{BLACK}Satmak için aracı buraya sürükleyin -STR_DEPOT_ROAD_VEHICLE_SELL_TOOLTIP :{BLACK}Satmak için arabayı buraya sürükle +STR_DEPOT_ROAD_VEHICLE_SELL_TOOLTIP :{BLACK}Satmak için aracı buraya sürükleyin STR_DEPOT_SHIP_SELL_TOOLTIP :{BLACK}Satmak için gemiyi buraya sürükle STR_DEPOT_AIRCRAFT_SELL_TOOLTIP :{BLACK}Satmak için uçağı buraya sürükleyin STR_DEPOT_DRAG_WHOLE_TRAIN_TO_SELL_TOOLTIP :{BLACK}Trenin hepsini satmak için lokomotifi buraya sürükle STR_DEPOT_SELL_ALL_BUTTON_TRAIN_TOOLTIP :{BLACK}Gardaki tüm trenleri sat -STR_DEPOT_SELL_ALL_BUTTON_ROAD_VEHICLE_TOOLTIP :{BLACK}Garajdaki tüm arabaları sat +STR_DEPOT_SELL_ALL_BUTTON_ROAD_VEHICLE_TOOLTIP :{BLACK}Garajdaki tüm araçları sat STR_DEPOT_SELL_ALL_BUTTON_SHIP_TOOLTIP :{BLACK}Tersanedeki tüm gemileri sat STR_DEPOT_SELL_ALL_BUTTON_AIRCRAFT_TOOLTIP :{BLACK}Hangardaki tüm hava araçlarıni sat STR_DEPOT_AUTOREPLACE_TRAIN_TOOLTIP :{BLACK}Gardaki tüm trenleri otomatik yenile -STR_DEPOT_AUTOREPLACE_ROAD_VEHICLE_TOOLTIP :{BLACK}Garajdaki tüm arabaları otomatik yenile +STR_DEPOT_AUTOREPLACE_ROAD_VEHICLE_TOOLTIP :{BLACK}Garajdaki tüm araçları otomatik yenile STR_DEPOT_AUTOREPLACE_SHIP_TOOLTIP :{BLACK}Tersanedeki tüm gemileri otomatik yenile STR_DEPOT_AUTOREPLACE_AIRCRAFT_TOOLTIP :{BLACK}Hangardaki tüm uçakları otomatik yenile STR_DEPOT_TRAIN_NEW_VEHICLES_BUTTON :{BLACK}Yeni Araç -STR_DEPOT_ROAD_VEHICLE_NEW_VEHICLES_BUTTON :{BLACK}Yeni Araba +STR_DEPOT_ROAD_VEHICLE_NEW_VEHICLES_BUTTON :{BLACK}Yeni Araçlar STR_DEPOT_SHIP_NEW_VEHICLES_BUTTON :{BLACK}Yeni gemi -STR_DEPOT_AIRCRAFT_NEW_VEHICLES_BUTTON :{BLACK}Yeni Uçak +STR_DEPOT_AIRCRAFT_NEW_VEHICLES_BUTTON :{BLACK}Yeni Hava Aracı STR_DEPOT_TRAIN_NEW_VEHICLES_TOOLTIP :{BLACK}Yeni tren satın al -STR_DEPOT_ROAD_VEHICLE_NEW_VEHICLES_TOOLTIP :{BLACK}Yeni araba al -STR_DEPOT_SHIP_NEW_VEHICLES_TOOLTIP :{BLACK}Yeni gemi yap -STR_DEPOT_AIRCRAFT_NEW_VEHICLES_TOOLTIP :{BLACK}Yeni uçak al +STR_DEPOT_ROAD_VEHICLE_NEW_VEHICLES_TOOLTIP :{BLACK}Yeni yol aracı satın al +STR_DEPOT_SHIP_NEW_VEHICLES_TOOLTIP :{BLACK}Yeni gemi satın al +STR_DEPOT_AIRCRAFT_NEW_VEHICLES_TOOLTIP :{BLACK}Yeni hava aracı satın al STR_DEPOT_CLONE_TRAIN :{BLACK}Treni kopyala -STR_DEPOT_CLONE_ROAD_VEHICLE :{BLACK}Arabayı kopyala +STR_DEPOT_CLONE_ROAD_VEHICLE :{BLACK}Aracı Kopyala 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 -STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Arabanı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 -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 -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 +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_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 garini göster -STR_DEPOT_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Araba garajını göster -STR_DEPOT_SHIP_LOCATION_TOOLTIP :{BLACK}Tersaneyi göster -STR_DEPOT_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Hangarı göster +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_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 STR_DEPOT_VEHICLE_ORDER_LIST_TRAIN_TOOLTIP :{BLACK}Bu garı talimat listesinde içeren trenleri listele -STR_DEPOT_VEHICLE_ORDER_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}Bu garajı talimat listesinde içeren arabaları listele +STR_DEPOT_VEHICLE_ORDER_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}Bu garajı talimat listesinde içeren tüm karayolu araçlarını listele STR_DEPOT_VEHICLE_ORDER_LIST_SHIP_TOOLTIP :{BLACK}Bu tersaneyi talimat listesinde içeren gemileri listele STR_DEPOT_VEHICLE_ORDER_LIST_AIRCRAFT_TOOLTIP :{BLACK}Bu havalimanındaki hangarlardan birini talimat listesinde içeren uçakları listele STR_DEPOT_MASS_STOP_DEPOT_TRAIN_TOOLTIP :{BLACK}Gardaki tüm trenleri durdurmak için tıkla -STR_DEPOT_MASS_STOP_DEPOT_ROAD_VEHICLE_TOOLTIP :{BLACK}Garajdaki tüm arabaları durdurmak için tıkla +STR_DEPOT_MASS_STOP_DEPOT_ROAD_VEHICLE_TOOLTIP :{BLACK}Garajdaki tüm araçları durdurmak için tıklayın STR_DEPOT_MASS_STOP_DEPOT_SHIP_TOOLTIP :{BLACK}Tersanedeki tüm gemileri durdurmak için tıkla STR_DEPOT_MASS_STOP_HANGAR_TOOLTIP :{BLACK}Hangardaki tüm uçakları durdurmak için tıkla STR_DEPOT_MASS_START_DEPOT_TRAIN_TOOLTIP :{BLACK}Gardaki tüm trenleri başlatmak için tıkla -STR_DEPOT_MASS_START_DEPOT_ROAD_VEHICLE_TOOLTIP :{BLACK}Garajdaki tüm arabaları başlatmak için tıkla +STR_DEPOT_MASS_START_DEPOT_ROAD_VEHICLE_TOOLTIP :{BLACK}Garajdaki tüm araçları başlatmak için tıklayın STR_DEPOT_MASS_START_DEPOT_SHIP_TOOLTIP :{BLACK}Tersanedeki tüm gemileri başlatmak için tıkla STR_DEPOT_MASS_START_HANGAR_TOOLTIP :{BLACK}Hangardaki tüm uçakları başlatmak için tıkla 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 :araba +STR_ENGINE_PREVIEW_ROAD_VEHICLE :karayolu aracı STR_ENGINE_PREVIEW_AIRCRAFT :uçak STR_ENGINE_PREVIEW_SHIP :gemi STR_ENGINE_PREVIEW_MONORAIL_LOCOMOTIVE :monoray lokomotifi @@ -3089,6 +3447,7 @@ STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_CAPACITY_RUNCOST:{BLACK}Maliyet STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}Maliyet: {CURRENCY_LONG} Azami Hız: {VELOCITY} Menzil: {COMMA} kare{}Kapasite: {CARGO_LONG}{}Çalışma gideri: {CURRENCY_LONG}/yıl # Autoreplace window +STR_REPLACE_VEHICLES_WHITE :{WHITE}Değiştir {STRING} - {STRING} STR_REPLACE_VEHICLE_TRAIN :Tren STR_REPLACE_VEHICLE_ROAD_VEHICLE :Karayolu taşıtı STR_REPLACE_VEHICLE_SHIP :Gemi @@ -3098,9 +3457,12 @@ STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Değişt STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Değiştirilecek türün yerine geçecek türü seçin STR_REPLACE_VEHICLES_START :{BLACK}Araçları Değiştirmeye Başla +STR_REPLACE_VEHICLES_NOW :Tüm araçları hemen değiştir +STR_REPLACE_VEHICLES_WHEN_OLD :Yalnız eski araçları değiştir STR_REPLACE_HELP_START_BUTTON :{BLACK}Değiştirme işlemini başlatmak için basın STR_REPLACE_NOT_REPLACING :{BLACK}Değiştirilmiyor STR_REPLACE_NOT_REPLACING_VEHICLE_SELECTED :{BLACK}Hiç Araç Seçilmedi +STR_REPLACE_REPLACING_WHEN_OLD :{ENGINE} eskidiğinde STR_REPLACE_VEHICLES_STOP :{BLACK}Araçları değiştirmeyi durdur STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Değiştirme işlemini durdurmak için basın @@ -3122,9 +3484,9 @@ STR_REPLACE_REMOVE_WAGON_HELP :{BLACK}Otomatik # Vehicle view STR_VEHICLE_VIEW_CAPTION :{WHITE}{VEHICLE} -STR_VEHICLE_VIEW_TRAIN_LOCATION_TOOLTIP :{BLACK}Treni göster -STR_VEHICLE_VIEW_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Arabayı göster -STR_VEHICLE_VIEW_SHIP_LOCATION_TOOLTIP :{BLACK}Gemiyi göster +STR_VEHICLE_VIEW_TRAIN_LOCATION_TOOLTIP :{BLACK}Treni göster. Ctrl ile tıklama trenin konumunu gösteren yeni bir pencere açar +STR_VEHICLE_VIEW_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Aracı göster. Ctrl ile tıklama aracın konumunu gösteren yeni bir pencere açar +STR_VEHICLE_VIEW_SHIP_LOCATION_TOOLTIP :{BLACK}Gemiyi göster. Ctrl ile tıklama geminin konumunu gösteren yeni bir pencere açar STR_VEHICLE_VIEW_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Ana görüntüyü uçağın olduğu yere alır. Ctrl-tık ana görüntüde uçağı takip eder STR_VEHICLE_VIEW_TRAIN_SEND_TO_DEPOT_TOOLTIP :{BLACK}Treni garaja gönder @@ -3132,35 +3494,35 @@ STR_VEHICLE_VIEW_ROAD_VEHICLE_SEND_TO_DEPOT_TOOLTIP :{BLACK}Aracı g STR_VEHICLE_VIEW_SHIP_SEND_TO_DEPOT_TOOLTIP :{BLACK}Tersaneye gönder STR_VEHICLE_VIEW_AIRCRAFT_SEND_TO_DEPOT_TOOLTIP :{BLACK}Uçağı hangara gönder -STR_VEHICLE_VIEW_CLONE_TRAIN_INFO :{BLACK}Tüm vagonlarla birlikte treni kopyalar. Ctrl-tıklama emirleri paylaştırır. Shift+tıklama satın almadan tahmini maliyeti gösterir -STR_VEHICLE_VIEW_CLONE_ROAD_VEHICLE_INFO :{BLACK}Arabanın bir kopyasını satın alır. Ctrl-tıklama emirleri paylaştırır. Shift+tıklama satın almadan tahmini maliyeti gösterir -STR_VEHICLE_VIEW_CLONE_SHIP_INFO :{BLACK}Geminin bir kopyasını satın alır. Ctrl-tıklama emirleri paylaştırır. Shift+tıklama satın almadan tahmini maliyeti gösterir -STR_VEHICLE_VIEW_CLONE_AIRCRAFT_INFO :{BLACK}Uçağın bir kopyasını satın alır. Ctrl-tıklama emirleri paylaştırır. Shift-tıklama satın almadan tahmini maliyetigösterir +STR_VEHICLE_VIEW_CLONE_TRAIN_INFO :{BLACK}Tüm vagonlarla birlikte treni kopyalar. Ctrl-Tıklama talimatları paylaştırır. Shift+Tıklama satın almadan tahmini maliyeti gösterir +STR_VEHICLE_VIEW_CLONE_ROAD_VEHICLE_INFO :{BLACK}Karayolu aracının bir kopyasını satın alır. Ctrl+Tıklama talimatları paylaştırır. Shift+Tıklama satın almadan tahmini maliyeti gösterir +STR_VEHICLE_VIEW_CLONE_SHIP_INFO :{BLACK}Geminin bir kopyasını satın alır. Ctrl-Tıklama talimatları paylaştırır. Shift+Tıklama satın almadan tahmini maliyeti gösterir +STR_VEHICLE_VIEW_CLONE_AIRCRAFT_INFO :{BLACK}Uçağın bir kopyasını satın alır. Ctrl-Tıklama talimatları paylaştırır. Shift-Tıklama satın almadan tahmini maliyeti gösterir STR_VEHICLE_VIEW_TRAIN_IGNORE_SIGNAL_TOOLTIP :{BLACK}Treni sinyale uymadan ilerlemeye zorla 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 STR_VEHICLE_VIEW_ROAD_VEHICLE_REVERSE_TOOLTIP :{BLACK}Aracı etrafta dolaşmaya zorla -STR_VEHICLE_VIEW_TRAIN_ORDERS_TOOLTIP :{BLACK}Trenin emirlerini göster. Ctrl-tık trenin çizelgesini gösterir -STR_VEHICLE_VIEW_ROAD_VEHICLE_ORDERS_TOOLTIP :{BLACK}Aracın talimatlarını göster. Ctrl-tık aracın çizelgesini gösterir -STR_VEHICLE_VIEW_SHIP_ORDERS_TOOLTIP :{BLACK}Geminin emirlerini göster. Ctrl-tık geminin çizelgesini gösterir. -STR_VEHICLE_VIEW_AIRCRAFT_ORDERS_TOOLTIP :{BLACK}Uçağın emirlerini göster. Ctrl-tık uçağın çizelgesini gösterir +STR_VEHICLE_VIEW_TRAIN_ORDERS_TOOLTIP :{BLACK}Trenin talimatlarını göster. Ctrl-Tık trenin çizelgesini gösterir +STR_VEHICLE_VIEW_ROAD_VEHICLE_ORDERS_TOOLTIP :{BLACK}Aracın talimatlarını göster. Ctrl-Tık aracın çizelgesini gösterir +STR_VEHICLE_VIEW_SHIP_ORDERS_TOOLTIP :{BLACK}Geminin talimatlarını göster. Ctrl-Tık geminin çizelgesini gösterir. +STR_VEHICLE_VIEW_AIRCRAFT_ORDERS_TOOLTIP :{BLACK}Uçağın talimatlarını göster. Ctrl-Tık uçağın çizelgesini gösterir STR_VEHICLE_VIEW_TRAIN_SHOW_DETAILS_TOOLTIP :{BLACK}Tren ayrıntılarını göster -STR_VEHICLE_VIEW_ROAD_VEHICLE_SHOW_DETAILS_TOOLTIP :{BLACK}Araba ayrıntılarını göster +STR_VEHICLE_VIEW_ROAD_VEHICLE_SHOW_DETAILS_TOOLTIP :{BLACK}Karayolu aracı ayrıntılarını göster STR_VEHICLE_VIEW_SHIP_SHOW_DETAILS_TOOLTIP :{BLACK}Gemi ayrıntılarını göster 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 @@ -3173,10 +3535,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}Gidiyor {STATION}, {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}Gidiyor -> {WAYPOINT}, {VELOCITY} -STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_VEL :{ORANGE}{DEPOT}'na doğru hareket ediyor, {VELOCITY} +STR_VEHICLE_STATUS_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}Gidilen -> {WAYPOINT}, {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 @@ -3190,7 +3552,7 @@ STR_VEHICLE_DETAILS_CAPTION :{WHITE}{VEHICLE STR_VEHICLE_NAME_BUTTON :{BLACK}İsim STR_VEHICLE_DETAILS_TRAIN_RENAME :{BLACK}Treni adlandır -STR_VEHICLE_DETAILS_ROAD_VEHICLE_RENAME :{BLACK}Arabayı adlandır +STR_VEHICLE_DETAILS_ROAD_VEHICLE_RENAME :{BLACK}Karayolu aracını adlandır STR_VEHICLE_DETAILS_SHIP_RENAME :{BLACK}Gemiyi adlandır STR_VEHICLE_DETAILS_AIRCRAFT_RENAME :{BLACK}Uçağı adlandır @@ -3217,11 +3579,16 @@ STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}Aktarma 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_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ığı türünü değiştir +STR_VEHICLE_DETAILS_DEFAULT :Varsayılan +STR_VEHICLE_DETAILS_DAYS :Gün +STR_VEHICLE_DETAILS_PERCENT :Yüzde STR_QUERY_RENAME_TRAIN_CAPTION :{WHITE}Treni adlandır -STR_QUERY_RENAME_ROAD_VEHICLE_CAPTION :{WHITE}Arabayı adlandır +STR_QUERY_RENAME_ROAD_VEHICLE_CAPTION :{WHITE}Karayolu aracını adlandır STR_QUERY_RENAME_SHIP_CAPTION :{WHITE}Gemiyi adlandır STR_QUERY_RENAME_AIRCRAFT_CAPTION :{WHITE}Uçağı adlandır @@ -3244,38 +3611,40 @@ 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_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_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ı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}Kamyonu modifiye et +STR_REFIT_ROAD_VEHICLE_REFIT_BUTTON :{BLACK}Aracı modifiye et STR_REFIT_SHIP_REFIT_BUTTON :{BLACK}modifiye 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) STR_ORDERS_TIMETABLE_VIEW :{BLACK}Zaman çizelgesi STR_ORDERS_TIMETABLE_VIEW_TOOLTIP :{BLACK}Zaman tablosu görünümüne geç -STR_ORDERS_LIST_TOOLTIP :{BLACK}Talimat listesi - seçmek için komutu tıklayın. CTRL + tıklama istasyona kaydırir +STR_ORDERS_LIST_TOOLTIP :{BLACK}Talimat listesi - seçmek için komutu tıklayın. CTRL + tıklama istasyona kaydırır STR_ORDER_INDEX :{COMMA}:{NBSP} STR_ORDER_TEXT :{STRING} {STRING} {STRING} @@ -3307,9 +3676,9 @@ 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 emirde hangi cargo tipine otomatik modify edileceğini seçin. Ctrl+Tık ile modifye emrini kaldırın. Otomatik modifiye 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_TOOLTIP :{BLACK}Bu talimatta hangi kargo türünün otomatik onarılacağını seçin. Ctrl+Tıklama 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 +STR_ORDER_DROP_REFIT_AUTO_ANY :Kullanılabilir kargo STR_ORDER_SERVICE :{BLACK}Bakım STR_ORDER_DROP_GO_ALWAYS_DEPOT :Her zaman git @@ -3346,16 +3715,16 @@ STR_ORDERS_SKIP_TOOLTIP :{BLACK}Şimdiki STR_ORDERS_DELETE_BUTTON :{BLACK}Sil STR_ORDERS_DELETE_TOOLTIP :{BLACK}Seçili talimatı sil -STR_ORDERS_DELETE_ALL_TOOLTIP :{BLACK}Tüm emirleri 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}Emir listesini paylaşmaktan vazgeç. Ctrl+Tık ayrıca tüm emir 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 emrin önüne ya da listenin sonuna yeni emir ekle. Ctrl; istasyon emirlerini 'bir kargo tipini tam yükle', yol imi emirlerini 'durmaksızın', garaj emirlerini 'bakıma gir' olarak değiştirir +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 @@ -3368,14 +3737,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_ROAD_VEHICLE_DEPOT :Araba Garajı -STR_ORDER_SHIP_DEPOT :Tershane +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} @@ -3411,7 +3780,7 @@ STR_ORDER_NO_UNLOAD_REFIT :({STRING} taş 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_ANY :kullanılabilir kargo STR_ORDER_STOP_LOCATION_NEAR_END :[yakın uç] STR_ORDER_STOP_LOCATION_MIDDLE :[orta] @@ -3433,7 +3802,7 @@ STR_TIMETABLE_ORDER_VIEW_TOOLTIP :{BLACK}Emir gö STR_TIMETABLE_TOOLTIP :{BLACK}Zaman çizelgesi - işaretlemek için bir talimata tıklayın STR_TIMETABLE_NO_TRAVEL :Sefer yok -STR_TIMETABLE_NOT_TIMETABLEABLE :Yolculuk (otomatik; bir sonraki manuel emir tarafından zamanlanır) +STR_TIMETABLE_NOT_TIMETABLEABLE :Yolculuk (otomatik; bir sonraki elle verilmiş talimat tarafından zamanlanır) STR_TIMETABLE_TRAVEL_NOT_TIMETABLED :Gezi (zamanlı değil) STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :En çok {2:VELOCITY} hız ile git (zaman tablosu yok) STR_TIMETABLE_TRAVEL_FOR :{STRING} boyunca yol al @@ -3453,7 +3822,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 çizelgenin başlangıç tarihi olacak tarihi seçin +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 @@ -3493,9 +3862,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}YZ adı +STR_AI_DEBUG_NAME_TOOLTIP :{BLACK}Betik adı STR_AI_DEBUG_SETTINGS :{BLACK}YZ Ayarları -STR_AI_DEBUG_SETTINGS_TOOLTIP :{BLACK}YZ 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 @@ -3503,7 +3872,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 @@ -3511,12 +3880,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 YZ'lerden biri çakıldı. Lütfen bu durumu AI Hata Ayıklama Penceresi görüntüsüyle birlikte YZ'nin 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 OyunBetiği +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 @@ -3527,36 +3896,36 @@ STR_AI_CONFIG_MOVE_UP_TOOLTIP :{BLACK}Seçilen STR_AI_CONFIG_MOVE_DOWN :{BLACK}Aşağı taşı STR_AI_CONFIG_MOVE_DOWN_TOOLTIP :{BLACK}Seçilen YZ'yi listede aşağı taşı -STR_AI_CONFIG_GAMESCRIPT :{SILVER}OyunBetiği -STR_AI_CONFIG_AI :{SILVER}YZler +STR_AI_CONFIG_GAMESCRIPT :{SILVER}Oyun Betiği +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 :OyunBetiği +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}YZ 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 :OyunBetikleri -STR_AI_LIST_TOOLTIP :{BLACK}YZ 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 YZ'yi seç +STR_AI_LIST_ACCEPT_TOOLTIP :{BLACK}Vurgulanan betiği seç STR_AI_LIST_CANCEL :{BLACK}İptal -STR_AI_LIST_CANCEL_TOOLTIP :{BLACK}YZ'yi değiştirme +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 :OyunBetiği +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} @@ -3567,6 +3936,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 @@ -3589,12 +3960,16 @@ STR_INCOME_FLOAT_INCOME_SMALL :{TINY_FONT}{GRE STR_INCOME_FLOAT_INCOME :{GREEN}Gelir: {CURRENCY_LONG} STR_FEEDER_TINY :{TINY_FONT}{YELLOW}Gönder: {CURRENCY_LONG} STR_FEEDER :{YELLOW}Gönder: {CURRENCY_LONG} +STR_FEEDER_INCOME_TINY :{TINY_FONT}{YELLOW}Aktarım: {CURRENCY_LONG}{WHITE} / {GREEN}Gelir: {CURRENCY_LONG} +STR_FEEDER_INCOME :{YELLOW}Aktarım: {CURRENCY_LONG}{WHITE} / {GREEN}Gelir: {CURRENCY_LONG} +STR_FEEDER_COST_TINY :{TINY_FONT}{YELLOW}Aktarım: {CURRENCY_LONG}{WHITE} / {RED}Ücret: {CURRENCY_LONG} +STR_FEEDER_COST :{YELLOW}Aktarım: {CURRENCY_LONG}{WHITE} / {RED}Ücret: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_COST :{WHITE}Tahmini Gider: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Tahmini Gelir: {CURRENCY_LONG} # 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 @@ -3643,7 +4018,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ı @@ -3654,6 +4029,7 @@ STR_ERROR_OWNED_BY :{WHITE}... sahi STR_ERROR_AREA_IS_OWNED_BY_ANOTHER :{WHITE}... alan başka bir şirkete ait STR_ERROR_TERRAFORM_LIMIT_REACHED :{WHITE}... yeryüzü şekillendirme sınırına ulaştınız STR_ERROR_CLEARING_LIMIT_REACHED :{WHITE}... kare temizleme sınırına ulaştınız +STR_ERROR_TREE_PLANT_LIMIT_REACHED :{WHITE}... ağaç dikme sınırına ulaştınız STR_ERROR_NAME_MUST_BE_UNIQUE :{WHITE}İsim daha önce kullanılmamış olmalı STR_ERROR_GENERIC_OBJECT_IN_THE_WAY :{WHITE}yolda {1:STRING} var STR_ERROR_NOT_ALLOWED_WHILE_PAUSED :{WHITE}Oyun duraklatılmışken izin verilmiyor @@ -3682,7 +4058,7 @@ STR_ERROR_CAN_T_BORROW_ANY_MORE_MONEY :{WHITE}Daha faz STR_ERROR_LOAN_ALREADY_REPAYED :{WHITE}... ödenecek borç yok STR_ERROR_CURRENCY_REQUIRED :{WHITE}... {CURRENCY_LONG} gerekli STR_ERROR_CAN_T_REPAY_LOAN :{WHITE}Kredi ödenemiyor... -STR_ERROR_INSUFFICIENT_FUNDS :{WHITE}Bankadan ödünç alınan para verilemez... +STR_ERROR_INSUFFICIENT_FUNDS :{WHITE}Bankadan borç alınan para verilemez... STR_ERROR_CAN_T_BUY_COMPANY :{WHITE}Şirket satın alınamaz... STR_ERROR_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}Şirket binasi yapılamaz... STR_ERROR_CAN_T_BUY_25_SHARE_IN_THIS :{WHITE}Şirketin %25'i alınamıyor... @@ -3700,7 +4076,7 @@ STR_ERROR_TOO_MANY_TOWNS :{WHITE}... çok 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_ROAD_WORKS_IN_PROGRESS :{WHITE}Yol çalışmaları -STR_ERROR_TOWN_CAN_T_DELETE :{WHITE}Bu kasaba silinemiyor...{}Bir istasyon ya da garaj kasabaya atıfta bulunuyor ya da bir kasaba karesi kaldırılamıyor +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 # Industry related errors @@ -3714,7 +4090,8 @@ STR_ERROR_ONLY_ONE_ALLOWED_PER_TOWN :{WHITE}... her STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS_WITH_POPULATION_OF_1200 :{WHITE}... yalnızca nüfusu en az 1200 olan şehirlere yapılabilir STR_ERROR_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}... yalnızca yağmur ormanlarında yapılabilir STR_ERROR_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}... yalnızca çöllerde yapılabilir -STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}... yalnızca şehirlerde yapılabilir +STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}... yalnızca şehirlerde yapılabilir (evlerin yerine) +STR_ERROR_CAN_ONLY_BE_BUILT_NEAR_TOWN_CENTER :{WHITE}... yalnızca şehir merkezlerinin yakınına yapılabilir STR_ERROR_CAN_ONLY_BE_BUILT_IN_LOW_AREAS :{WHITE}... yalnız alçak bölgelere yapılabilir STR_ERROR_CAN_ONLY_BE_POSITIONED :{WHITE}... sadece haritanın kenarlarına yerleştirilebilir STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... orman sadece kar sınırı üzerinde olabilir @@ -3742,8 +4119,8 @@ STR_ERROR_TOO_CLOSE_TO_ANOTHER_AIRPORT :{WHITE}Başka b STR_ERROR_CAN_T_RENAME_STATION :{WHITE}İsim değiştirilemiyor... STR_ERROR_DRIVE_THROUGH_ON_TOWN_ROAD :{WHITE}... bu yol belediyeye ait STR_ERROR_DRIVE_THROUGH_DIRECTION :{WHITE}... yol yanlış yönde -STR_ERROR_DRIVE_THROUGH_CORNER :{WHITE}... yol üstü durakların köşeleri olamaz -STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}... yol üstü durakların kavşağı olamaz +STR_ERROR_DRIVE_THROUGH_CORNER :{WHITE}... yol üstü duraklar köşe üzerine inşa edilemez +STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}... yol üstü duraklar kavşak üzerine inşa edilemez # Station destruction related errors STR_ERROR_CAN_T_REMOVE_PART_OF_STATION :{WHITE}İstasyonun parçasi kaldırılamaz... @@ -3792,7 +4169,7 @@ STR_ERROR_AIRCRAFT_MUST_BE_STOPPED_INSIDE_HANGAR :{WHITE}... hang STR_ERROR_TRAINS_CAN_ONLY_BE_ALTERED_INSIDE_A_DEPOT :{WHITE}Sadece garda durdurulmuş trenler üzerinde işlem yapılabilir STR_ERROR_TRAIN_TOO_LONG :{WHITE}Tren çok uzun STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE :{WHITE}Aracın yönü çevrilemiyor... -STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE_MULTIPLE_UNITS :{WHITE}Birden fazla birimden oluşan araçlar çevrilemez +STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE_MULTIPLE_UNITS :{WHITE}... birden fazla birimden oluşuyor STR_ERROR_INCOMPATIBLE_RAIL_TYPES :Uyumsuz ray türleri STR_ERROR_CAN_T_MOVE_VEHICLE :{WHITE}Araç hareket edemiyor... @@ -3813,7 +4190,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... @@ -3822,7 +4199,7 @@ STR_ERROR_SIGNAL_CAN_T_CONVERT_SIGNALS_HERE :{WHITE}Buradaki STR_ERROR_THERE_IS_NO_RAILROAD_TRACK :{WHITE}... ray yok STR_ERROR_THERE_ARE_NO_SIGNALS :{WHITE}... sinyal yok -STR_ERROR_CAN_T_CONVERT_RAIL :{WHITE}Ray türü değiştirilemiyor... +STR_ERROR_CAN_T_CONVERT_RAIL :{WHITE}Ray türü burada değiştirilemiyor... # Road construction errors STR_ERROR_MUST_REMOVE_ROAD_FIRST :{WHITE}Önce yol silinmeli @@ -3836,7 +4213,7 @@ STR_ERROR_THERE_IS_NO_TRAMWAY :{WHITE}... tram # Waterway construction errors STR_ERROR_CAN_T_BUILD_CANALS :{WHITE}Buraya kanal yapılamaz... -STR_ERROR_CAN_T_BUILD_LOCKS :{WHITE}Buraya kilit yapılamaz... +STR_ERROR_CAN_T_BUILD_LOCKS :{WHITE}Buraya yükseltme havuzu yapılamaz... STR_ERROR_CAN_T_PLACE_RIVERS :{WHITE}Burada nehirler yapamazsınız... STR_ERROR_MUST_BE_BUILT_ON_WATER :{WHITE}... suya yapılmali STR_ERROR_CAN_T_BUILD_ON_WATER :{WHITE}... suya yapılamaz @@ -3874,7 +4251,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! @@ -3883,35 +4260,36 @@ 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... # Generic vehicle errors STR_ERROR_TRAIN_IN_THE_WAY :{WHITE}Yolda tren var -STR_ERROR_ROAD_VEHICLE_IN_THE_WAY :{WHITE}Yolda araba var +STR_ERROR_ROAD_VEHICLE_IN_THE_WAY :{WHITE}Yolda araç var STR_ERROR_SHIP_IN_THE_WAY :{WHITE}Yolda gemi var STR_ERROR_AIRCRAFT_IN_THE_WAY :{WHITE}Yolda uçak var STR_ERROR_CAN_T_REFIT_TRAIN :{WHITE}Modifiye edilemiyor... -STR_ERROR_CAN_T_REFIT_ROAD_VEHICLE :{WHITE}Kamyon modifiye edilemiyor... +STR_ERROR_CAN_T_REFIT_ROAD_VEHICLE :{WHITE}Araç modifiye edilemiyor... STR_ERROR_CAN_T_REFIT_SHIP :{WHITE}Modifiye edilemez... STR_ERROR_CAN_T_REFIT_AIRCRAFT :{WHITE}Modifiye edilemez... STR_ERROR_CAN_T_RENAME_TRAIN :{WHITE}Tren adlandırılamıyor... -STR_ERROR_CAN_T_RENAME_ROAD_VEHICLE :{WHITE}Araba adlandırılamıyor... +STR_ERROR_CAN_T_RENAME_ROAD_VEHICLE :{WHITE}Araç adlandırılamıyor... STR_ERROR_CAN_T_RENAME_SHIP :{WHITE}Gemi adlandırılamaz... STR_ERROR_CAN_T_RENAME_AIRCRAFT :{WHITE}Uçak adlandırılamaz... STR_ERROR_CAN_T_STOP_START_TRAIN :{WHITE}Tren durdurulamaz/başlatılamaz... -STR_ERROR_CAN_T_STOP_START_ROAD_VEHICLE :{WHITE}Araba başlayamıyor/duramıyor... +STR_ERROR_CAN_T_STOP_START_ROAD_VEHICLE :{WHITE}Araç başlatılamıyor/durdurulamıyor... STR_ERROR_CAN_T_STOP_START_SHIP :{WHITE}Gemi durdurulamaz/başlatılamaz... STR_ERROR_CAN_T_STOP_START_AIRCRAFT :{WHITE}Uçak durdurulamaz/başlatılamaz... STR_ERROR_CAN_T_SEND_TRAIN_TO_DEPOT :{WHITE}Tren garaja gönderilemiyor... STR_ERROR_CAN_T_SEND_ROAD_VEHICLE_TO_DEPOT :{WHITE}Araç garaja gidemiyor... STR_ERROR_CAN_T_SEND_SHIP_TO_DEPOT :{WHITE}Gemi tersaneye gönderilemez... -STR_ERROR_CAN_T_SEND_AIRCRAFT_TO_HANGAR :{WHITE}Hangara gönderilemiyor... +STR_ERROR_CAN_T_SEND_AIRCRAFT_TO_HANGAR :{WHITE}Hava taşıtı hangara gönderilemiyor... STR_ERROR_CAN_T_BUY_TRAIN :{WHITE}Tren alınamıyor... STR_ERROR_CAN_T_BUY_ROAD_VEHICLE :{WHITE}Kara taşıtı alınamıyor... @@ -3924,12 +4302,12 @@ STR_ERROR_CAN_T_RENAME_SHIP_TYPE :{WHITE}Gemi tü STR_ERROR_CAN_T_RENAME_AIRCRAFT_TYPE :{WHITE}Uçak türü adlandırılamaz... STR_ERROR_CAN_T_SELL_TRAIN :{WHITE}Tren satılamaz... -STR_ERROR_CAN_T_SELL_ROAD_VEHICLE :{WHITE}Araba satılamıyor... +STR_ERROR_CAN_T_SELL_ROAD_VEHICLE :{WHITE}Karayolu aracı satılamıyor... STR_ERROR_CAN_T_SELL_SHIP :{WHITE}Gemi satılamaz... STR_ERROR_CAN_T_SELL_AIRCRAFT :{WHITE}Uçak satılamıyor... STR_ERROR_RAIL_VEHICLE_NOT_AVAILABLE :{WHITE}Tren kullanılamaz -STR_ERROR_ROAD_VEHICLE_NOT_AVAILABLE :{WHITE}Araba kullanılamaz +STR_ERROR_ROAD_VEHICLE_NOT_AVAILABLE :{WHITE}Araç kullanılamaz STR_ERROR_SHIP_NOT_AVAILABLE :{WHITE}Gemi kullanılamaz STR_ERROR_AIRCRAFT_NOT_AVAILABLE :{WHITE}Uçak kullanılamaz @@ -3938,6 +4316,11 @@ STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}Servis a STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... araç imha edilmiş +STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL :{WHITE}Hiçbir araç kullanılabilir olmayacak +STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Yeni NewGRF yapılandırmanızı değiştirin +STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}Henüz hiçbir araç kullanılabilir değil +STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}{DATE_SHORT} sonra yeni bir oyun başlat veya erken araç sağlayan NewGRF kullan + # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Tehlikedeki tren sinyali geçemez... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Tren çevrilemez... @@ -3945,7 +4328,7 @@ STR_ERROR_TRAIN_START_NO_POWER :Trenin gücü y STR_ERROR_CAN_T_MAKE_ROAD_VEHICLE_TURN :{WHITE}Kara taşıtı U dönüşü yapamıyor... -STR_ERROR_AIRCRAFT_IS_IN_FLIGHT :{WHITE}Şu an uçusta +STR_ERROR_AIRCRAFT_IS_IN_FLIGHT :{WHITE}Şu an uçuşta # Order related errors STR_ERROR_NO_MORE_SPACE_FOR_ORDERS :{WHITE}Çok fazla talimat var @@ -3961,7 +4344,7 @@ STR_ERROR_CAN_T_ADD_ORDER :{WHITE}... ara STR_ERROR_CAN_T_ADD_ORDER_SHARED :{WHITE}... bu emri paylaşan bir araç bu istasyona gidemiyor STR_ERROR_CAN_T_SHARE_ORDER_LIST :{WHITE}Talimat listesi paylasilamiyor... -STR_ERROR_CAN_T_STOP_SHARING_ORDER_LIST :{WHITE}Paylaşılan emir listesini durduramazsınız... +STR_ERROR_CAN_T_STOP_SHARING_ORDER_LIST :{WHITE}Paylaşılan talimat listesini durduramazsınız... STR_ERROR_CAN_T_COPY_ORDER_LIST :{WHITE}Talimat listesi kopyalanamiyor... STR_ERROR_TOO_FAR_FROM_PREVIOUS_DESTINATION :{WHITE}... önceki hedeften çok uzak STR_ERROR_AIRCRAFT_NOT_ENOUGH_RANGE :{WHITE}... uçağın menzili yeterli değil @@ -3980,6 +4363,16 @@ STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}Tabelay # Translatable comment for OpenTTD's desktop shortcut STR_DESKTOP_SHORTCUT_COMMENT :Transport Tycoon Deluxe'ü temel alan bir simülasyon oyunu +# Translatable descriptions in media/baseset/*.ob* files +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 :Ö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 # Town building names STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1 :Yüksek ofis binasi @@ -4072,7 +4465,7 @@ STR_INDUSTRY_NAME_SUGAR_MINE :Şeker Madeni STR_SV_EMPTY : STR_SV_UNNAMED :İsimsiz STR_SV_TRAIN_NAME :Tren {COMMA} -STR_SV_ROAD_VEHICLE_NAME :Araba {COMMA} +STR_SV_ROAD_VEHICLE_NAME :Karayolu Aracı {COMMA} STR_SV_SHIP_NAME :Gemi {COMMA} STR_SV_AIRCRAFT_NAME :Uçak {COMMA} @@ -4112,7 +4505,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) @@ -4176,7 +4569,7 @@ STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_WOOD_TRUCK :Odun Vagonu STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_IRON_ORE_HOPPER :Demir Vagonu STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_STEEL_TRUCK :Çelik Vagonu STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_ARMORED_VAN :Zırhlı Vagon -STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FOOD_VAN :Yiyecek Vagonu +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FOOD_VAN :Gıda Vagonu STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PAPER_TRUCK :Kağıt Vagonu STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COPPER_ORE_HOPPER :Bakır Vagonu STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_WATER_TANKER :Su Tankeri @@ -4208,7 +4601,7 @@ STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_WOOD_TRUCK :Odun Vagonu STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_IRON_ORE_HOPPER :Demir Vagonu STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_STEEL_TRUCK :Çelik Vagonu STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_ARMORED_VAN :Zırhlı Vagon -STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FOOD_VAN :Yiyecek Vagonu +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FOOD_VAN :Gıda Vagonu STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PAPER_TRUCK :Kağıt Vagonu STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COPPER_ORE_HOPPER :Bakır Vagonu STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_WATER_TANKER :Su Tankeri @@ -4234,12 +4627,12 @@ STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKIII_BUS :Ploddyphut MkII STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_COAL_TRUCK :Balogh Kömür Kamyonu STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_COAL_TRUCK :Uhl Kömür Kamyonu STR_VEHICLE_NAME_ROAD_VEHICLE_DW_COAL_TRUCK :DW Kömür Kamyonu -STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_MAIL_TRUCK :MPS Posta Arabası -STR_VEHICLE_NAME_ROAD_VEHICLE_REYNARD_MAIL_TRUCK :Reynard Posta Arabası -STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_MAIL_TRUCK :Perry Posta Arabası -STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_MAIL_TRUCK :MightyMover Posta Arabası -STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_MAIL_TRUCK :Powernaught Posta Arabası -STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_MAIL_TRUCK :Wizzowow Posta Arabası +STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_MAIL_TRUCK :MPS Posta Kamyonu +STR_VEHICLE_NAME_ROAD_VEHICLE_REYNARD_MAIL_TRUCK :Reynard Posta Kamyonu +STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_MAIL_TRUCK :Perry Posta Kamyonu +STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_MAIL_TRUCK :MightyMover Posta Kamyonu +STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_MAIL_TRUCK :Powernaught Posta Kamyonu +STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_MAIL_TRUCK :Wizzowow Posta Kamyonu STR_VEHICLE_NAME_ROAD_VEHICLE_WITCOMBE_OIL_TANKER :Witcombe Petrol Tankeri STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_OIL_TANKER :Foster Petrol Tankeri STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_OIL_TANKER :Perry Petrol Tankeri @@ -4264,9 +4657,9 @@ STR_VEHICLE_NAME_ROAD_VEHICLE_KELLING_STEEL_TRUCK :Kelling Çelik STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_ARMORED_TRUCK :Balogh Zırhlı Araç STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_ARMORED_TRUCK :Uhl Zırhlı Araç STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_ARMORED_TRUCK :Foster Zırhlı Araç -STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_FOOD_VAN :Foster Yiyecek Arabası -STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_FOOD_VAN :Perry Yiyecek Arabası -STR_VEHICLE_NAME_ROAD_VEHICLE_CHIPPY_FOOD_VAN :Chippy Yiyecek Arabası +STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_FOOD_VAN :Foster Gıda Arabası +STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_FOOD_VAN :Perry Gıda Arabası +STR_VEHICLE_NAME_ROAD_VEHICLE_CHIPPY_FOOD_VAN :Chippy Gıda Arabası STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_PAPER_TRUCK :Uhl Kağıt Kamyonu STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_PAPER_TRUCK :Balogh Kağıt Kamyonu STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_PAPER_TRUCK :MPS Kağıt Kamyonu @@ -4321,7 +4714,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 @@ -4380,8 +4773,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 @@ -4436,8 +4829,9 @@ 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_SPACE_STRING :{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} @@ -4461,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 7a840e93d..97d281f91 100644 --- a/src/lang/ukrainian.txt +++ b/src/lang/ukrainian.txt @@ -324,21 +324,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 :{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 :{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 @@ -346,6 +353,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}Оберіть критерій фільтру @@ -357,7 +365,8 @@ 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}Смуга прокрутки - прокручує список вверх/вниз @@ -381,7 +390,6 @@ STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}Площ # These are used in buttons -STR_SORT_BY_CAPTION_POPULATION :{BLACK}за населенням STR_SORT_BY_CAPTION_NAME :{BLACK}за назвою STR_SORT_BY_CAPTION_DATE :{BLACK}за датою # These are used in dropdowns @@ -402,7 +410,8 @@ STR_SORT_BY_LENGTH :за довжи STR_SORT_BY_LIFE_TIME :за залишком строку служби STR_SORT_BY_TIMETABLE_DELAY :за відхиленням від розкладу STR_SORT_BY_FACILITY :за типом станції -STR_SORT_BY_WAITING :за кількістю вантажу +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 (класичний порядок) @@ -414,6 +423,8 @@ 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}Пауза @@ -426,6 +437,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}Фінансувати будівництво нової промисловості @@ -496,19 +509,19 @@ STR_FILE_MENU_SEPARATOR : STR_FILE_MENU_EXIT :Вихід ############ range ends here -############ range for map menu starts +# 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, yet the town directory is shown in the map menu in the scenario editor + +############ range for town menu starts STR_TOWN_MENU_TOWN_DIRECTORY :Список міст -############ end of the 'Display map' dropdown STR_TOWN_MENU_FOUND_TOWN :Заснувати місто -############ end of the 'Town' dropdown +############ range ends here ############ range for subsidies menu starts STR_SUBSIDIES_MENU_SUBSIDIES :Субсидії -STR_SUBSIDIES_MENU_GOAL :Поточні цілі ############ range ends here ############ range for graph menu starts @@ -535,7 +548,7 @@ 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 :Будівництво магнітної залізниці ############ range ends here @@ -582,7 +595,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 +611,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 +661,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 :Квітень @@ -775,7 +809,7 @@ STR_HIGHSCORE_PERFORMANCE_TITLE_CAPITALIST :Капітал STR_HIGHSCORE_PERFORMANCE_TITLE_MAGNATE :Магнат STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL :Магнат року STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY :Магнат сторіччя -STR_HIGHSCORE_NAME :{BIG_FONT}{PRESIDENT_NAME}, {COMPANY} +STR_HIGHSCORE_NAME :{PRESIDENT_NAME}, {COMPANY} STR_HIGHSCORE_STATS :{BIG_FONT}'{STRING}' ({COMMA}) STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{BLACK}{COMPANY} досягла статусу '{STRING}'! STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{WHITE}Гравець {PRESIDENT_NAME} з {COMPANY} досяг статусу '{STRING}' @@ -786,17 +820,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_CARGO_SELECTION :{BLACK}Натискання на вантаж покаже його власника. Ctrl+клік відключить усі вантажі, крім одного обраного. Повторний Ctrl+клік підключить усі вантажі STR_SMALLMAP_LEGENDA_ROADS :{TINY_FONT}{BLACK}Дороги STR_SMALLMAP_LEGENDA_RAILROADS :{TINY_FONT}{BLACK}Залізниці @@ -830,6 +867,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 +878,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 +956,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} дуже застарів @@ -978,7 +1016,7 @@ STR_GAME_OPTIONS_CURRENCY_BEF :Бельгій STR_GAME_OPTIONS_CURRENCY_CHF :Швейцарський франк (CHF) STR_GAME_OPTIONS_CURRENCY_CZK :Чеська крона (CZK) STR_GAME_OPTIONS_CURRENCY_DEM :Німецька марка (DEM) -STR_GAME_OPTIONS_CURRENCY_DKK :Датська крона (DKK) +STR_GAME_OPTIONS_CURRENCY_DKK :Данська крона (DKK) STR_GAME_OPTIONS_CURRENCY_ESP :Іспанська песета (ESP) STR_GAME_OPTIONS_CURRENCY_FIM :Фінська марка (FIM) STR_GAME_OPTIONS_CURRENCY_FRF :Французький франк (FRF) @@ -986,7 +1024,7 @@ STR_GAME_OPTIONS_CURRENCY_GRD :Грецька STR_GAME_OPTIONS_CURRENCY_HUF :Угорський форинт (HUF) STR_GAME_OPTIONS_CURRENCY_ISK :Ісландська крона (ISK) STR_GAME_OPTIONS_CURRENCY_ITL :Італійська ліра (ITL) -STR_GAME_OPTIONS_CURRENCY_NLG :Голландський гульден (NLG) +STR_GAME_OPTIONS_CURRENCY_NLG :Нідерландський гульден (NLG) STR_GAME_OPTIONS_CURRENCY_NOK :Норвезька крона (NOK) STR_GAME_OPTIONS_CURRENCY_PLN :Польський злотий (PLN) STR_GAME_OPTIONS_CURRENCY_RON :Румунський лей (RON) @@ -1001,15 +1039,12 @@ 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 -STR_GAME_OPTIONS_MEASURING_UNITS_FRAME :{BLACK}Система одиниць виміру -STR_GAME_OPTIONS_MEASURING_UNITS_DROPDOWN_TOOLTIP :{BLACK}Виберіть систему одиниць виміру ############ start of measuring units region -STR_GAME_OPTIONS_MEASURING_UNITS_IMPERIAL :Імперська -STR_GAME_OPTIONS_MEASURING_UNITS_METRIC :Метрична -STR_GAME_OPTIONS_MEASURING_UNITS_SI :Міжнародна ############ end of measuring units region STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Сторона руху транспорту @@ -1028,7 +1063,7 @@ STR_GAME_OPTIONS_TOWN_NAME_ADDITIONAL_ENGLISH :Англійс STR_GAME_OPTIONS_TOWN_NAME_LATIN_AMERICAN :Латиноамериканські STR_GAME_OPTIONS_TOWN_NAME_SILLY :Кумедні STR_GAME_OPTIONS_TOWN_NAME_SWEDISH :Шведські -STR_GAME_OPTIONS_TOWN_NAME_DUTCH :Голландські +STR_GAME_OPTIONS_TOWN_NAME_DUTCH :Нідерландські STR_GAME_OPTIONS_TOWN_NAME_FINNISH :Фінські STR_GAME_OPTIONS_TOWN_NAME_POLISH :Польські STR_GAME_OPTIONS_TOWN_NAME_SLOVAK :Словацькі @@ -1038,7 +1073,7 @@ STR_GAME_OPTIONS_TOWN_NAME_AUSTRIAN :Австрій STR_GAME_OPTIONS_TOWN_NAME_ROMANIAN :Румунські STR_GAME_OPTIONS_TOWN_NAME_CZECH :Чеські STR_GAME_OPTIONS_TOWN_NAME_SWISS :Швейцарські -STR_GAME_OPTIONS_TOWN_NAME_DANISH :Датські +STR_GAME_OPTIONS_TOWN_NAME_DANISH :Данські STR_GAME_OPTIONS_TOWN_NAME_TURKISH :Турецькі STR_GAME_OPTIONS_TOWN_NAME_ITALIAN :Італійські STR_GAME_OPTIONS_TOWN_NAME_CATALAN :Каталонські @@ -1047,11 +1082,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}Виберіть мову інтерфейса користувача @@ -1063,9 +1100,6 @@ 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}Оберіть, яку основну графіку використовувати STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} відсутн{P ій іх іх}/пошкоджен{P ий их их} файл{P "" а ів} @@ -1179,7 +1213,8 @@ 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 :Розширені налаштування @@ -1187,6 +1222,14 @@ 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_SETTINGS_NONE :{WHITE}- немає - STR_CONFIG_SETTING_OFF :ні STR_CONFIG_SETTING_ON :так @@ -1207,7 +1250,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} @@ -1219,16 +1262,14 @@ 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_AUTOSLOPE_HELPTEXT :Можливість змінювати ландшафт під будівлями та дорогами без необхідності їх зносу STR_CONFIG_SETTING_CATCHMENT :Більш реалістічні зони покриття станцій: {STRING} @@ -1253,14 +1294,8 @@ 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_TUNNEL_LENGTH :Максимальна довжина тунелів: {STRING} @@ -1288,8 +1323,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 :Вимкнено @@ -1320,10 +1353,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 :При включенні інфраструктура потребує коштів для утримання. Витрати збільшуються не пропорційно з ростом розміру мережі, більше впливаючи на великі компанії ніж на малі. @@ -1381,8 +1410,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}Одна або більше клітинок на одному з країв не є водними @@ -1433,17 +1460,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 Гру 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} @@ -1474,6 +1497,22 @@ STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Залишат STR_CONFIG_SETTING_EXPENSES_LAYOUT :Групувати витрати у вікні фінансів: {STRING} STR_CONFIG_SETTING_EXPENSES_LAYOUT_HELPTEXT :Налаштування відображення інформації про вітрати у вікні фінансів +STR_CONFIG_SETTING_SOUND_TICKER :Новинний рухомий рядок: {STRING} +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_CONFIRM :Будівництво: {STRING} +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_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_DISABLE_UNSUITABLE_BUILDING :Заборонити будівництво інфраструктури, для якої немає відповідного транспорту: {STRING} STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING_HELPTEXT :При включенні будівництво тої чи іншої інфраструктури можливе тільки при доступності відповідних транспортних засобів. Це запобігає марним витратам часу та коштів на інфраструктуру, що не використовується. @@ -1526,20 +1565,35 @@ STR_CONFIG_SETTING_DISABLE_ELRAILS :Скасува STR_CONFIG_SETTING_DISABLE_ELRAILS_HELPTEXT :При включенні відпадає необхідність побудови електрифікованої колії для потягів на електричній тязі - вони будуть працювати на звичайній залізниці. 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 :Показати газету коли перший транспортний засіб прибуває на нову станцію конкурента STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS :Нещасні випадки / стихійні лиха: {STRING} +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 :Скорочено @@ -1558,7 +1612,7 @@ 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. Якщо опція відключена, то сигнали встановлюються на кінцях мостів та тунелів. При включенні опції заданий інтервал встановлювання сигналів витримується більш строго (з метою вирівнювання сигналів на паралельних коліях). STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :Автоматично будувати семафори до {STRING} року STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE_HELPTEXT :Налаштування року впровадження світлофорів замість семафорів. До цього року будуть встановлюватись лише семафори. STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI :Використовувати меню сигналів: {STRING} @@ -1634,26 +1688,75 @@ 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 :Час між послідовними обрахунками зв'язків на графіку. Кожен обрахунок здійснюється для одного параметра графіку. Тобто значення Х у налаштуваннях не означає, що графік оновлюється кожні Х днів. Лише деякі складові. При виборі параметру "часто" ЦП потрібно більше часу для обрахунку. При виборі параметру "рідко" наступний обрахунок почнеться після запуску доставки за новим маршрутом. +STR_CONFIG_SETTING_LINKGRAPH_TIME :Обраховувати графік доставки раз на {STRING} д{P 0:2 "ень" "ні" "нів"} +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 :В "симетричному" режимі від станції A до станції B надсилатиметься приблизно стільки ж вантажів, як від B до A. В "асиметричному" режимі дозволяється надсилати довільну кількість вантажів в обох напрямках. Ручний режим означає, що розподіл цих вантажів не здійснюватиметься автоматично. Рекомендується встановити "асиметричний" або ручний режим. +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_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_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_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 @@ -1687,6 +1790,7 @@ STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_ALGORITHM :{WHITE}... фо 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} @@ -1784,15 +1888,15 @@ STR_LIVERY_DEFAULT :Стандар STR_LIVERY_STEAM :Паровоз STR_LIVERY_DIESEL :Тепловоз STR_LIVERY_ELECTRIC :Електровоз -STR_LIVERY_MONORAIL :Монорельсовий локомотив +STR_LIVERY_MONORAIL :Монорейковий локомотив STR_LIVERY_MAGLEV :Магнітний локомотив STR_LIVERY_DMU :Багатосекційний тепловоз STR_LIVERY_EMU :Багатосекційний електровоз STR_LIVERY_PASSENGER_WAGON_STEAM :Пасажирський вагон (паровоз) STR_LIVERY_PASSENGER_WAGON_DIESEL :Пасажирський вагон (тепловоз) STR_LIVERY_PASSENGER_WAGON_ELECTRIC :Пасажирський вагон (електровоз) -STR_LIVERY_PASSENGER_WAGON_MONORAIL :Пасажирський вагон (монорельс) -STR_LIVERY_PASSENGER_WAGON_MAGLEV :Пасажирський вагон (магніторельс) +STR_LIVERY_PASSENGER_WAGON_MONORAIL :Пасажирський вагон (монорейка) +STR_LIVERY_PASSENGER_WAGON_MAGLEV :Пасажирський вагон (маглев) STR_LIVERY_FREIGHT_WAGON :Вантажний вагон STR_LIVERY_BUS :Автобус STR_LIVERY_TRUCK :Вантажівка @@ -1808,6 +1912,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}Вибрати чоловіче обличчя @@ -1863,10 +1968,10 @@ STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}Змін # Network server list STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}Мережева гра -STR_NETWORK_SERVER_LIST_CONNECTION :{BLACK}З'єднання: -STR_NETWORK_SERVER_LIST_CONNECTION_TOOLTIP :{BLACK}Виберіть гру через інтернет або через локальну мережу(ЛОМ) -STR_NETWORK_SERVER_LIST_LAN :Локальна -STR_NETWORK_SERVER_LIST_INTERNET :Інтернет +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}Ім'я, за яким тебе розпізнаватимуть інші гравці @@ -1925,8 +2030,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_LAN_INTERNET :Локальна/Інтернет -STR_NETWORK_START_SERVER_INTERNET_ADVERTISE :Internet (advertise) +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}Виберіть максимальну кількість клієнтів. Не всі слоти мають бути зайняті @@ -1951,8 +2056,8 @@ STR_NETWORK_LANG_BRAZILIAN :Бразиль STR_NETWORK_LANG_BULGARIAN :Болгарська STR_NETWORK_LANG_CHINESE :Китайська STR_NETWORK_LANG_CZECH :Чеська -STR_NETWORK_LANG_DANISH :Датська -STR_NETWORK_LANG_DUTCH :Голландська +STR_NETWORK_LANG_DANISH :Данська +STR_NETWORK_LANG_DUTCH :Нідерландська STR_NETWORK_LANG_ESPERANTO :Есперанто STR_NETWORK_LANG_FINNISH :Фінська STR_NETWORK_LANG_HUNGARIAN :Угорська @@ -2047,6 +2152,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}Не запам'ятовувати введений пароль @@ -2165,6 +2271,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_SEARCH_EXTERNAL_DISCLAIMER_CAPTION :{WHITE}Ви виходите з OpenTTD! STR_CONTENT_FILTER_TITLE :{BLACK}Фільтр за назвою: STR_CONTENT_OPEN_URL :{BLACK}Відвідати вебсайт STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}Відвітати вебсайт цього контенту @@ -2187,7 +2294,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! @@ -2234,6 +2341,16 @@ STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}Пере STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Змінити прозорість індикаторів завантаження. Утримуйте Ctrl, щоб заблокувати STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}Зробити об'єкти невидимими, а не прозорими +# Linkgraph legend window +STR_LINKGRAPH_LEGEND_NONE :{BLACK}Немає +STR_LINKGRAPH_LEGEND_SELECT_COMPANIES :{BLACK}Виберіть компанії для відображення + +# Linkgraph legend window and linkgraph legend in smallmap +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}Підсвічення зони покриття STR_STATION_BUILD_COVERAGE_OFF :{BLACK}Ні @@ -2253,7 +2370,7 @@ 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 :Будівництво монорельсової залізниці +STR_RAIL_TOOLBAR_MONORAIL_CONSTRUCTION_CAPTION :Будівництво монорейкової залізниці STR_RAIL_TOOLBAR_MAGLEV_CONSTRUCTION_CAPTION :Будівництво магнітної залізниці STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Будувати колію. Ctrl переключає побудову/знесення для будівництва колії. Утримуйте Shift для показу витрат на будівництво @@ -2269,7 +2386,7 @@ STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL :{BLACK}Моде STR_RAIL_NAME_RAILROAD :Звичайна колія STR_RAIL_NAME_ELRAIL :Електрифікована колія -STR_RAIL_NAME_MONORAIL :Монорельсова колія +STR_RAIL_NAME_MONORAIL :Монорейкова колія STR_RAIL_NAME_MAGLEV :Магнітна колія # Rail depot construction window @@ -2300,18 +2417,18 @@ 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_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_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_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}Збільшити частоту сигналів @@ -2355,7 +2472,7 @@ 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_ROAD_ORIENTATION_SELECT_TOOLTIP :{BLACK}Виберіть орієнтацію депо STR_BUILD_DEPOT_TRAM_ORIENTATION_CAPTION :{WHITE}Орієнтація трамвайного депо STR_BUILD_DEPOT_TRAM_ORIENTATION_SELECT_TOOLTIP :{BLACK}Виберіть орієнтацію трамвайного депо @@ -2411,7 +2528,7 @@ STR_AIRPORT_HELISTATION :Гелікоп STR_AIRPORT_CLASS_SMALL :Малі аеропорти STR_AIRPORT_CLASS_LARGE :Великі аеропорти STR_AIRPORT_CLASS_HUB :Вузлові аеропорти -STR_AIRPORT_CLASS_HELIPORTS :Геліко-аеропорт +STR_AIRPORT_CLASS_HELIPORTS :Геліпорт STR_STATION_BUILD_NOISE :{BLACK}Рівень шуму: {GOLD}{COMMA} @@ -2438,7 +2555,7 @@ STR_PLANT_TREE_TOOLTIP :{BLACK}Обер STR_TREES_RANDOM_TYPE :{BLACK}Дерева випадкового типу STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}Садити дерева випадкового типу. Утримуйте Shift для показу витрат на висаджування STR_TREES_RANDOM_TREES_BUTTON :{BLACK}Випадкові дерева -STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Насадження дерев випадково +STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Випадкове насадження дерев по всьому ландшафту # Land generation window (SE) STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}Створити ландшафт @@ -2465,7 +2582,7 @@ STR_FOUND_TOWN_RANDOM_TOWNS_TOOLTIP :{BLACK}Випа STR_FOUND_TOWN_NAME_TITLE :{YELLOW}Назва міста: STR_FOUND_TOWN_NAME_EDITOR_TITLE :{BLACK}Введіть назву міста -STR_FOUND_TOWN_NAME_EDITOR_HELP :{BLACK}Клікніть для вводу назви міста +STR_FOUND_TOWN_NAME_EDITOR_HELP :{BLACK}Натисніть для введення назви міста STR_FOUND_TOWN_NAME_RANDOM_BUTTON :{BLACK}Випадкова назва STR_FOUND_TOWN_NAME_RANDOM_TOOLTIP :{BLACK}Створити нову випадкову назву @@ -2473,7 +2590,7 @@ STR_FOUND_TOWN_INITIAL_SIZE_TITLE :{YELLOW}Роз 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_SIZE_RANDOM :{BLACK}Довільне STR_FOUND_TOWN_INITIAL_SIZE_TOOLTIP :{BLACK}Вибір розміру міста STR_FOUND_TOWN_CITY :{BLACK}Мегаполіс STR_FOUND_TOWN_CITY_TOOLTIP :{BLACK}Мегаполіси ростуть швидше за звичайні міста{}Вони більші при заснуванні, якщо вказано у настройках @@ -2507,7 +2624,7 @@ STR_INDUSTRY_CARGOES_CARGO_TOOLTIP :{BLACK}{STRING} 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_NOTIFY_SMALLMAP_TOOLTIP :{BLACK}Ви також можете вибирати виробництво на мінікарті STR_INDUSTRY_CARGOES_SELECT_CARGO :{BLACK}Вибір типу вантажів STR_INDUSTRY_CARGOES_SELECT_CARGO_TOOLTIP :{BLACK}Оберіть тип вантажу для відображення STR_INDUSTRY_CARGOES_SELECT_INDUSTRY :{BLACK}Вибір виробництва @@ -2536,6 +2653,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 :Каміння @@ -2632,7 +2750,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-2012 команда OpenTTD +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2014 команда OpenTTD # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Зберегти гру @@ -2661,17 +2779,14 @@ STR_SAVELOAD_OSKTITLE :{BLACK}Введ # World generation STR_MAPGEN_WORLD_GENERATION_CAPTION :{WHITE}Створення світу STR_MAPGEN_MAPSIZE :{BLACK}Розмір карти: +STR_MAPGEN_MAPSIZE_TOOLTIP :{BLACK}Оберіть розмір карти в клітинках. Кількість доступних клітинок буде трохи меншою STR_MAPGEN_BY :{BLACK}* STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Міста: STR_MAPGEN_DATE :{BLACK}Дата: -STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Промисловість: +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}Тип ландшафту: @@ -2698,7 +2813,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}Змінити рік початку гри @@ -2753,7 +2867,7 @@ 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_FILE_TOOLTIP :{BLACK}Список встановлених NewGRF файлів. +STR_NEWGRF_SETTINGS_FILE_TOOLTIP :{BLACK}Список встановлених файлів NewGRF STR_NEWGRF_SETTINGS_SET_PARAMETERS :{BLACK}Встановлення параметрів STR_NEWGRF_SETTINGS_SHOW_PARAMETERS :{BLACK}Показати параметри @@ -2777,6 +2891,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}Закрити @@ -2836,6 +2952,7 @@ 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}У базовому наборі графіки, що зараз використовується не вистачає спрайтів.{}Будь-ласка оновіть базовий набір графіки +STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}В наборі графіки, який використовується на даний момент відсутній ряд спрайтів.{}Будь ласка, поновіть базовий набір графіки.{}Оскільки ви граєте у {YELLOW} тестову версію OpenTTD{WHITE}, вам також може знадобитися {YELLOW}тестовий набір базової графіки{WHITE} STR_NEWGRF_ERROR_GRM_FAILED :Недоступні необхідні ресурси GRF (спрайт {3:NUM}) STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} був вимкнений {STRING} STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Некоректний або невідомий формат розміщення спрайтів (спрайт {3:NUM}) @@ -2846,6 +2963,7 @@ STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}Ви х STR_NEWGRF_DUPLICATE_GRFID :{WHITE}Не можу додати файл: однакові GRF ID 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-файли деактивовані @@ -2874,7 +2992,10 @@ STR_NEWGRF_INVALID_CARGO :<невідом STR_NEWGRF_INVALID_CARGO_ABBREV :?? STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} <невідомого вантажу> STR_NEWGRF_INVALID_ENGINE :<невірна модель транспорту> -STR_NEWGRF_INVALID_INDUSTRYTYPE :<невірна промисловість> +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'и @@ -2884,7 +3005,7 @@ STR_NEWGRF_SCAN_ARCHIVES :Шукаю ар # Sign list window STR_SIGN_LIST_CAPTION :{WHITE}Список позначень - {COMMA} Позначен{P ня ня ь} -STR_SIGN_LIST_MATCH_CASE :{BLACK}Регістр +STR_SIGN_LIST_MATCH_CASE :{BLACK}Враховуючи регістр STR_SIGN_LIST_MATCH_CASE_TOOLTIP :{BLACK}Перемкнути регістр при порівнянні назви позначок з фільтром # Sign window @@ -2957,12 +3078,16 @@ STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT :{YELLOW}Куп STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}Підкупити місцеву владу для збільшення вашого рейтингу, при викритті загрожує суворим покаранням.{}Вартість: {CURRENCY_LONG} # Goal window -STR_GOALS_CAPTION :{WHITE}Цілі +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 :Питання @@ -2999,6 +3124,15 @@ 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 відкриває нове вікно з видом на підприємство/місто +# Story book window +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}Наступна сторінка + # Station list window STR_STATION_LIST_TOOLTIP :{BLACK}Назви станцій - натисніть на назву, щоб показати станцію в центрі екрану. Утримання Ctrl відкриває нове вікно з видом на станцію STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}Утримуйте Ctrl для вибору декількох пунктів @@ -3012,7 +3146,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}) @@ -3025,8 +3158,19 @@ STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPAN STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Рейтинг STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Показати рейтинг станції -STR_STATION_VIEW_CARGO_RATINGS_TITLE :{BLACK}Місцевий рейтинг транспортної компанії: -STR_STATION_VIEW_CARGO_RATING :{WHITE}{STRING}: {YELLOW}{STRING} ({COMMA}%) +STR_STATION_VIEW_CARGO_SUPPLY_RATING :{WHITE}{STRING}: {YELLOW}{COMMA} / {STRING} ({COMMA}%) + +STR_STATION_VIEW_GROUP :{BLACK}Групувати по +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_TO_HERE :{GREEN}{CARGO_SHORT} до цієї станції +STR_STATION_VIEW_NONSTOP :{YELLOW}{CARGO_SHORT} без зупинки + ############ range for rating starts STR_CARGO_RATING_APPALLING :жахливо @@ -3153,7 +3297,6 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS :{WHITE}Кана STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}Станції: STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}Ділянки зі станціями STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}Аеропорти -STR_COMPANY_INFRASTRUCTURE_VIEW_COST :{WHITE}{1:CURRENCY_LONG}/рік ({0:COMMA}) STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL :{WHITE}{CURRENCY_LONG}/рік # Industry directory @@ -3170,6 +3313,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.z}{STRING.z} @@ -3238,6 +3382,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 :Позбутися всього транспорту @@ -3246,7 +3391,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 :Новий монорельсовий поїзд +STR_BUY_VEHICLE_TRAIN_MONORAIL_CAPTION :Новий монорейковий поїзд STR_BUY_VEHICLE_TRAIN_MAGLEV_CAPTION :Новий магнітний поїзд STR_BUY_VEHICLE_TRAIN_ALL_CAPTION :Нові потяги @@ -3271,14 +3416,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}Список поїздів - клацніть на поїзді для інформації +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_BUY_VEHICLE_BUTTON :{BLACK}Купити STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_BUTTON :{BLACK}Купити @@ -3300,7 +3445,7 @@ 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_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}Перейменувати тип літака @@ -3387,7 +3532,7 @@ STR_ENGINE_PREVIEW_RAILROAD_LOCOMOTIVE :локомот STR_ENGINE_PREVIEW_ROAD_VEHICLE :автомобіль STR_ENGINE_PREVIEW_AIRCRAFT :літак STR_ENGINE_PREVIEW_SHIP :корабель -STR_ENGINE_PREVIEW_MONORAIL_LOCOMOTIVE :монорельсовий локомотив +STR_ENGINE_PREVIEW_MONORAIL_LOCOMOTIVE :монорейковий локомотив STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :магнітний локомотив STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Ціна: {CURRENCY_LONG} Вага: {WEIGHT_SHORT}{}Швидкість: {VELOCITY}{}Потужність: {POWER}{}Вартість експлуатації: {CURRENCY_LONG}/рік{}Місткість: {CARGO_LONG} @@ -3426,7 +3571,7 @@ STR_REPLACE_HELP_RAILTYPE :{BLACK}Вибе STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Показує, яким потягом буде замінено потяг, вибраний ліворуч STR_REPLACE_RAIL_VEHICLES :Неелектрифіковані поїзди STR_REPLACE_ELRAIL_VEHICLES :Електрифіковані поїзди -STR_REPLACE_MONORAIL_VEHICLES :Монорельсові поїзди +STR_REPLACE_MONORAIL_VEHICLES :Монорейкові поїзди STR_REPLACE_MAGLEV_VEHICLES :Магнітні поїзди STR_REPLACE_REMOVE_WAGON :{BLACK}Ліквідація зайвих вагонів: {ORANGE}{STRING} @@ -3533,6 +3678,11 @@ STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Інте 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}Назвати авто STR_QUERY_RENAME_SHIP_CAPTION :{WHITE}Назвати корабель @@ -3606,9 +3756,9 @@ 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_FULL_LOAD_ANY :Повністю завантажити будь-який вантаж STR_ORDER_DROP_NO_LOADING :Не завантажуватись STR_ORDER_TOOLTIP_FULL_LOAD :{BLACK}Змінити поведінку завантаження виділеного пункту @@ -3768,7 +3918,6 @@ STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}Цей STR_TIMETABLE_STATUS_START_AT :{BLACK}Цей розклад почнеться о {STRING} STR_TIMETABLE_STARTING_DATE :{BLACK}Дата початку -STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Оберіть дату для початку цього розкладу STR_TIMETABLE_CHANGE_TIME :{BLACK}Змінити час STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Змінити час, впродовж якого має виконуватись наказ @@ -3790,7 +3939,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 :В: @@ -3882,6 +4031,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}Ліцензія @@ -3944,6 +4095,8 @@ STR_WARNING_HEIGHTMAP_SCALE_MESSAGE :{YELLOW}Роз STR_WARNING_FALLBACK_SOUNDSET :{WHITE}Був знайдений тільки запасний набір звуків. Якщо вам потрібні звуки, встановіть набір звуків через систему завантаження вмісту # Screenshot related messages +STR_WARNING_SCREENSHOT_SIZE_CAPTION :{WHITE}Великий знімок екрану +STR_WARNING_SCREENSHOT_SIZE_MESSAGE :{YELLOW}Знімок екрану буде мати роздільну здатність {COMMA} x {COMMA} пікселів. Створення знімка екрану може зайняти деякий час. Ви хочете продовжити? STR_MESSAGE_SCREENSHOT_SUCCESSFULLY :{WHITE}Екран збережено в '{STRING}' STR_ERROR_SCREENSHOT_FAILED :{WHITE}Помилка збереження екрану! @@ -4019,7 +4172,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_GENERATE_INDUSTRIES :{WHITE}Неможливо створити виробництво... STR_ERROR_CAN_T_BUILD_HERE :{WHITE}Неможливо будувати {STRING.z} тут... STR_ERROR_CAN_T_CONSTRUCT_THIS_INDUSTRY :{WHITE}Неможливо будувати тут... STR_ERROR_INDUSTRY_TOO_CLOSE :{WHITE}... дуже близько до іншої промисловості @@ -4175,7 +4328,7 @@ 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}Мост закінчиться поза картою +STR_ERROR_BRIDGE_THROUGH_MAP_BORDER :{WHITE}Міст закінчиться поза картою # Tunnel related errors STR_ERROR_CAN_T_BUILD_TUNNEL_HERE :{WHITE}Неможливо збудувати тунель... @@ -4253,6 +4406,11 @@ 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}Неможливо проїхати сигнал - небезпечно... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Неможливо розвернути поїзд... @@ -4278,8 +4436,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}Не можна встановити розклад для транспорту... @@ -4295,6 +4453,16 @@ STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}Не м # Translatable comment for OpenTTD's desktop shortcut 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 STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1 :Великий офіс @@ -4428,7 +4596,7 @@ STR_SV_STNAME_TRANSFER :{STRING} Тра STR_SV_STNAME_HALT :{STRING} Привальна STR_SV_STNAME_VALLEY :{STRING} Низинна STR_SV_STNAME_HEIGHTS :{STRING} Висотна -STR_SV_STNAME_WOODS :{STRING} Лісна +STR_SV_STNAME_WOODS :{STRING} Лісова STR_SV_STNAME_LAKESIDE :{STRING} Озерна STR_SV_STNAME_EXCHANGE :{STRING} Сортувальна STR_SV_STNAME_AIRPORT :Аеропорт {STRING} @@ -4450,33 +4618,33 @@ STR_SV_STNAME_FALLBACK :{STRING}, ст ##id 0x8000 # Vehicle names -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_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_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 (паровий) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CHANEY_JUBILEE_STEAM :Chaney 'Jubilee' (паровий) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_GINZU_A4_STEAM :Ginzu 'A4' (паровий) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_8P_STEAM :SH '8P' (паровий) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MANLEY_MOREL_DMU_DIESEL :Manley-Morel DMU (дизельний) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_DASH_DIESEL :'Dash' (дизельний) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_HENDRY_25_DIESEL :SH/Hendry '25' (дизельний) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_UU_37_DIESEL :UU '37' (дизельний) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_FLOSS_47_DIESEL :Floss '47' (дизельний) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CS_4000_DIESEL :CS 4000 (дизельний) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CS_2400_DIESEL :CS 2400 (дизельний) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CENTENNIAL_DIESEL :Centennial (дизельний) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KELLING_3100_DIESEL :Kelling 3100 (дизельний) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_TURNER_TURBO_DIESEL :Turner Turbo (дизельний) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_1000_DIESEL :MJS 1000 (дизельний) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_125_DIESEL :SH '125' (дизельний) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_30_ELECTRIC :SH '30' (електричний) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_40_ELECTRIC :SH '40' (електричний) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_T_I_M_ELECTRIC :'T.I.M.' (електричний) -STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_ASIASTAR_ELECTRIC :'AsiaStar' (електричний) +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 (паровоз) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CHANEY_JUBILEE_STEAM :Chaney 'Jubilee' (паровоз) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_GINZU_A4_STEAM :Ginzu 'A4' (паровоз) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_8P_STEAM :SH '8P' (паровоз) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MANLEY_MOREL_DMU_DIESEL :Manley-Morel DMU (тепловоз) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_DASH_DIESEL :'Dash' (тепловоз) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_HENDRY_25_DIESEL :SH/Hendry '25' (тепловоз) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_UU_37_DIESEL :UU '37' (тепловоз) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_FLOSS_47_DIESEL :Floss '47' (тепловоз) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CS_4000_DIESEL :CS 4000 (тепловоз) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CS_2400_DIESEL :CS 2400 (тепловоз) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CENTENNIAL_DIESEL :Centennial (тепловоз) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KELLING_3100_DIESEL :Kelling 3100 (тепловоз) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_TURNER_TURBO_DIESEL :Turner Turbo (тепловоз) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_1000_DIESEL :MJS 1000 (тепловоз) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_125_DIESEL :SH '125' (тепловоз) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_30_ELECTRIC :SH '30' (електровоз) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_40_ELECTRIC :SH '40' (електровоз) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_T_I_M_ELECTRIC :'T.I.M.' (електровоз) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_ASIASTAR_ELECTRIC :'AsiaStar' (електровоз) STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PASSENGER_CAR :Пасажирський вагон STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_MAIL_VAN :Поштовий вагон STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COAL_CAR :Вагон для вугілля @@ -4504,8 +4672,8 @@ 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_PLASTIC_TRUCK :Вагон для пластиліну -STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_X2001_ELECTRIC :'X2001' (електричний) -STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_MILLENNIUM_Z1_ELECTRIC :'Millennium Z1' (електричний) +STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_X2001_ELECTRIC :'X2001' (електровоз) +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 :Пасажирський вагон STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_MAIL_VAN :Поштовий вагон @@ -4534,10 +4702,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 :Поштовий вагон @@ -4661,10 +4829,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 @@ -4778,8 +4946,9 @@ 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_SPACE_STRING :{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} @@ -4803,9 +4972,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 cd4db0202..99b21df0e 100644 --- a/src/lang/unfinished/chuvash.txt +++ b/src/lang/unfinished/chuvash.txt @@ -186,7 +186,6 @@ STR_MEASURE_AREA :{BLACK}Лапт # These are used in buttons -STR_SORT_BY_CAPTION_POPULATION :{BLACK}Ҫынисем STR_SORT_BY_CAPTION_NAME :{BLACK}Ячӗ STR_SORT_BY_CAPTION_DATE :{BLACK}Кун # These are used in dropdowns @@ -201,6 +200,7 @@ STR_SORT_BY_VALUE :Хак STR_SORT_BY_LENGTH :Тӑршшӗ STR_SORT_BY_COST :Хак STR_SORT_BY_POWER :Хӑватлӑх +STR_SORT_BY_POPULATION :Ҫынисем # Tooltips for the main toolbar STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Вӑййи тӑхтав @@ -227,10 +227,10 @@ STR_FILE_MENU_SEPARATOR : STR_FILE_MENU_EXIT :Тух ############ range ends here -############ range for map menu starts -############ range for town menu starts, yet the town directory is shown in the map menu in the scenario editor -############ end of the 'Display map' dropdown -############ end of the 'Town' dropdown +# map menu + +############ range for town menu starts +############ range ends here ############ range for subsidies menu starts STR_SUBSIDIES_MENU_SUBSIDIES :Грантсем @@ -275,7 +275,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 +291,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 @@ -389,7 +407,7 @@ STR_PLAYLIST_CLEAR :{TINY_FONT}{BLA # Highscore window STR_HIGHSCORE_POSITION :{BIG_FONT}{BLACK}{COMMA}. -STR_HIGHSCORE_NAME :{BIG_FONT}{PRESIDENT_NAME}, {COMPANY} +STR_HIGHSCORE_NAME :{PRESIDENT_NAME}, {COMPANY} STR_HIGHSCORE_STATS :{BIG_FONT}'{STRING}' ({COMMA}) # Smallmap window @@ -440,9 +458,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 @@ -488,7 +504,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,8 +515,6 @@ STR_GAME_OPTIONS_FULLSCREEN :{BLACK}Тулл STR_GAME_OPTIONS_RESOLUTION :{BLACK}Экрана сӑнарлама пултарни STR_GAME_OPTIONS_RESOLUTION_OTHER :расна -STR_GAME_OPTIONS_SCREENSHOT_FORMAT :{BLACK}Формат экран сӑнӗ - @@ -572,6 +588,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 +600,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 :Сӳнтер @@ -604,14 +620,18 @@ STR_CONFIG_SETTING_TOWN_GROWTH_NORMAL :Виҫеллӗ STR_CONFIG_SETTING_TOWN_GROWTH_FAST :Хӑвӑрт 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 @@ -716,9 +736,6 @@ STR_FACE_TIE :Галстук: STR_FACE_EARRING :Алка: # Network server list -STR_NETWORK_SERVER_LIST_CONNECTION :{BLACK}Ҫыхӑну: -STR_NETWORK_SERVER_LIST_LAN :LAN -STR_NETWORK_SERVER_LIST_INTERNET :Тетел STR_NETWORK_SERVER_LIST_PLAYER_NAME :{BLACK}Вӑйӑҫӑ ят: STR_NETWORK_SERVER_LIST_GAME_NAME :{BLACK}Ят @@ -760,7 +777,6 @@ STR_NETWORK_SERVER_LIST_START_SERVER :{BLACK}Серв STR_NETWORK_START_SERVER_NEW_GAME_NAME :{BLACK}Вӑййи ят: STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}Вырнаҫтар вӑрттӑн сӑмахӗ -STR_NETWORK_START_SERVER_LAN_INTERNET :Вырӑнти Тӗвӗлӗх/Тетел # Network game languages @@ -817,6 +833,10 @@ STR_CONTENT_DETAIL_VERSION :{SILVER}Вер # Transparency settings window +# Linkgraph legend window + +# Linkgraph legend window and linkgraph legend in smallmap + # Base for station construction window(s) # Join station window @@ -974,6 +994,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}Сикӗ @@ -1004,6 +1026,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 @@ -1035,6 +1059,8 @@ STR_GOALS_TEXT :{ORANGE}{STRING # Subsidies window STR_SUBSIDIES_NONE :{ORANGE}- Ҫук - +# Story book window + # Station list window STR_STATION_LIST_STATION :{YELLOW}{STATION} {STATION_FEATURES} STR_STATION_LIST_WAYPOINT :{YELLOW}{WAYPOINT} @@ -1046,7 +1072,8 @@ STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_L -STR_STATION_VIEW_CARGO_RATING :{WHITE}{STRING}: {YELLOW}{STRING} ({COMMA}%) + + ############ range for rating starts ############ range for rating ends @@ -1102,6 +1129,7 @@ STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}- Ҫу + # Build vehicle window @@ -1173,6 +1201,7 @@ STR_VEHICLE_INFO_NO_CAPACITY :{BLACK}Савӑ + # Extra buttons for train details windows @@ -1350,6 +1379,7 @@ STR_ERROR_OBJECT_IN_THE_WAY :{WHITE}Ҫул + # Specific vehicle errors @@ -1363,6 +1393,8 @@ STR_ERROR_OBJECT_IN_THE_WAY :{WHITE}Ҫул # Translatable comment for OpenTTD's desktop shortcut +# Translatable descriptions in media/baseset/*.ob* files + ##id 0x2000 # Town building names STR_TOWN_BUILDING_NAME_CHURCH_1 :Чиркӳ @@ -1440,7 +1472,7 @@ 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_SPACE_STRING :{STRING} {STRING} +STR_JUST_STRING_STRING :{STRING}{STRING} STR_JUST_RAW_STRING :{STRING} # Slightly 'raw' stringcodes with colour or size @@ -1465,9 +1497,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/faroese.txt b/src/lang/unfinished/faroese.txt deleted file mode 100644 index 5436b055d..000000000 --- a/src/lang/unfinished/faroese.txt +++ /dev/null @@ -1,1453 +0,0 @@ -##name Faroese -##ownname Føroyskt -##isocode fo_FO -##plural 0 -##textdir ltr -##digitsep . -##digitsepcur . -##decimalsep , -##winlangid 0x0438 -##grflangid 0x12 -##gender m f n - - -# $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 :(undefined string) -STR_JUST_NOTHING :Einki - -# Cargo related strings -# Plural cargo name -STR_CARGO_PLURAL_NOTHING : -STR_CARGO_PLURAL_PASSENGERS :Ferðafólk -STR_CARGO_PLURAL_COAL :Kol -STR_CARGO_PLURAL_MAIL :Postur -STR_CARGO_PLURAL_OIL :Olja -STR_CARGO_PLURAL_LIVESTOCK :Kríatúr -STR_CARGO_PLURAL_GOODS :Góðs -STR_CARGO_PLURAL_GRAIN :Korn -STR_CARGO_PLURAL_WOOD :Viður -STR_CARGO_PLURAL_IRON_ORE :Jarn Málmur -STR_CARGO_PLURAL_STEEL :Stál -STR_CARGO_PLURAL_VALUABLES :Virðislutir -STR_CARGO_PLURAL_COPPER_ORE :Kopar Málmur -STR_CARGO_PLURAL_MAIZE :Meis -STR_CARGO_PLURAL_FRUIT :Fruktir -STR_CARGO_PLURAL_DIAMONDS :Diamantar -STR_CARGO_PLURAL_FOOD :Matur -STR_CARGO_PLURAL_PAPER :Pappír -STR_CARGO_PLURAL_GOLD :Gull -STR_CARGO_PLURAL_WATER :Vatn -STR_CARGO_PLURAL_WHEAT :Hveiti -STR_CARGO_PLURAL_RUBBER :Gummi -STR_CARGO_PLURAL_SUGAR :Sukur -STR_CARGO_PLURAL_TOYS :Leikur -STR_CARGO_PLURAL_CANDY :Góðgæti -STR_CARGO_PLURAL_COLA :Kola -STR_CARGO_PLURAL_COTTON_CANDY :Kandifloss -STR_CARGO_PLURAL_BUBBLES :Bobblur -STR_CARGO_PLURAL_TOFFEE :errin -STR_CARGO_PLURAL_BATTERIES :Battarí -STR_CARGO_PLURAL_PLASTIC :Plastik -STR_CARGO_PLURAL_FIZZY_DRINKS :Sodavatn - -# Singular cargo name -STR_CARGO_SINGULAR_NOTHING : -STR_CARGO_SINGULAR_PASSENGER :Ferðafólk -STR_CARGO_SINGULAR_COAL :Kol -STR_CARGO_SINGULAR_MAIL :Postur -STR_CARGO_SINGULAR_OIL :Olja -STR_CARGO_SINGULAR_LIVESTOCK :Kríatúr -STR_CARGO_SINGULAR_GOODS :Góðs -STR_CARGO_SINGULAR_GRAIN :Korn -STR_CARGO_SINGULAR_WOOD :Viður -STR_CARGO_SINGULAR_IRON_ORE :Jarn Málm -STR_CARGO_SINGULAR_STEEL :Stál -STR_CARGO_SINGULAR_VALUABLES :Viðrislutur -STR_CARGO_SINGULAR_COPPER_ORE :Kopar Málm -STR_CARGO_SINGULAR_MAIZE :Meis -STR_CARGO_SINGULAR_FRUIT :Frukt -STR_CARGO_SINGULAR_DIAMOND :Diamantur -STR_CARGO_SINGULAR_FOOD :Matur -STR_CARGO_SINGULAR_PAPER :Pappír -STR_CARGO_SINGULAR_GOLD :Gull -STR_CARGO_SINGULAR_WATER :Vatn -STR_CARGO_SINGULAR_WHEAT :Hveiti -STR_CARGO_SINGULAR_RUBBER :Gummi -STR_CARGO_SINGULAR_SUGAR :Sukur -STR_CARGO_SINGULAR_TOY :Leika -STR_CARGO_SINGULAR_CANDY :Góðgæti -STR_CARGO_SINGULAR_COLA :Kola -STR_CARGO_SINGULAR_COTTON_CANDY :Kandifloss -STR_CARGO_SINGULAR_BUBBLE :Bobbla -STR_CARGO_SINGULAR_TOFFEE :Errin -STR_CARGO_SINGULAR_BATTERY :Battarí -STR_CARGO_SINGULAR_PLASTIC :Plastik -STR_CARGO_SINGULAR_FIZZY_DRINK :Sodavatn - -# Quantity of cargo -STR_QUANTITY_NOTHING : -STR_QUANTITY_PASSENGERS :{COMMA} ferðafólk -STR_QUANTITY_COAL :{WEIGHT_LONG} av kol -STR_QUANTITY_MAIL :{COMMA} sekk{P "" ir} av posti -STR_QUANTITY_OIL :{VOLUME_LONG} av olju -STR_QUANTITY_LIVESTOCK :{COMMA} lutur{P "" s} av fenaði -STR_QUANTITY_GOODS :{COMMA} kassa{P "" r} av góðsi -STR_QUANTITY_GRAIN :{WEIGHT_LONG} av korni -STR_QUANTITY_WOOD :{WEIGHT_LONG} av viði -STR_QUANTITY_IRON_ORE :{WEIGHT_LONG} av jarn málmi -STR_QUANTITY_STEEL :{WEIGHT_LONG} av stáli -STR_QUANTITY_VALUABLES :{COMMA} sekk{P "" ir} av virðislutum -STR_QUANTITY_COPPER_ORE :{WEIGHT_LONG} av kopar málmi -STR_QUANTITY_MAIZE :{WEIGHT_LONG} av meis -STR_QUANTITY_FRUIT :{WEIGHT_LONG} av frukt -STR_QUANTITY_DIAMONDS :{COMMA} sekk{P "" ir} av diamantum -STR_QUANTITY_FOOD :{WEIGHT_LONG} av mati -STR_QUANTITY_PAPER :{WEIGHT_LONG} av pappíri -STR_QUANTITY_GOLD :{COMMA} sekk{P "" ir} av gull -STR_QUANTITY_WATER :{VOLUME_LONG} av vatni -STR_QUANTITY_WHEAT :{WEIGHT_LONG} av hveiti -STR_QUANTITY_RUBBER :{VOLUME_LONG} av gummi -STR_QUANTITY_SUGAR :{WEIGHT_LONG} av sukri -STR_QUANTITY_TOYS :{COMMA} leik{P a ur} -STR_QUANTITY_SWEETS :{COMMA} sekk{P "" ir} av góðgæti -STR_QUANTITY_COLA :{VOLUME_LONG} av kola -STR_QUANTITY_CANDYFLOSS :{WEIGHT_LONG} av kandifloss -STR_QUANTITY_BUBBLES :{COMMA} sápiblør{P a ir} -STR_QUANTITY_TOFFEE :{WEIGHT_LONG} av róma -STR_QUANTITY_BATTERIES :{COMMA} battarí{P y ies} -STR_QUANTITY_PLASTIC :{VOLUME_LONG} av plastikk -STR_QUANTITY_FIZZY_DRINKS :{COMMA} sodavatn -STR_QUANTITY_N_A :N/A - -# Two letter abbreviation of cargo name -STR_ABBREV_NOTHING : -STR_ABBREV_PASSENGERS :{TINY_FONT}FF -STR_ABBREV_COAL :{TINY_FONT}KL -STR_ABBREV_MAIL :{TINY_FONT}PS -STR_ABBREV_OIL :{TINY_FONT}OL -STR_ABBREV_LIVESTOCK :{TINY_FONT}KÚ -STR_ABBREV_GOODS :{TINY_FONT}GS -STR_ABBREV_GRAIN :{TINY_FONT}KN -STR_ABBREV_WOOD :{TINY_FONT}VI -STR_ABBREV_IRON_ORE :{TINY_FONT}ML -STR_ABBREV_STEEL :{TINY_FONT}ST -STR_ABBREV_VALUABLES :{TINY_FONT}VL -STR_ABBREV_COPPER_ORE :{TINY_FONT}KM -STR_ABBREV_MAIZE :{TINY_FONT}MS -STR_ABBREV_FRUIT :{TINY_FONT}FT -STR_ABBREV_DIAMONDS :{TINY_FONT}DM -STR_ABBREV_FOOD :{TINY_FONT}MT -STR_ABBREV_PAPER :{TINY_FONT}PR -STR_ABBREV_GOLD :{TINY_FONT}GL -STR_ABBREV_WATER :{TINY_FONT}VN -STR_ABBREV_WHEAT :{TINY_FONT}HV -STR_ABBREV_RUBBER :{TINY_FONT}GM -STR_ABBREV_SUGAR :{TINY_FONT}SK -STR_ABBREV_TOYS :{TINY_FONT}LK -STR_ABBREV_SWEETS :{TINY_FONT}SL -STR_ABBREV_COLA :{TINY_FONT}KL -STR_ABBREV_CANDYFLOSS :{TINY_FONT}KF -STR_ABBREV_BUBBLES :{TINY_FONT}BL -STR_ABBREV_TOFFEE :{TINY_FONT}TF -STR_ABBREV_PLASTIC :{TINY_FONT}PL -STR_ABBREV_FIZZY_DRINKS :{TINY_FONT}SV -STR_ABBREV_NONE :{TINY_FONT}EI -STR_ABBREV_ALL :{TINY_FONT}ALT - -# 'Mode' of transport for cargoes -STR_PASSENGERS :{COMMA} ferðafólk -STR_BAGS :{COMMA} sekk{P "" ir} -STR_TONS :{COMMA} ton{P "" s} -STR_LITERS :{COMMA} lit{P ur rar} -STR_ITEMS :{COMMA} lutur{P "" s} -STR_CRATES :{COMMA} kassa{P "" r} - -# Colours, do not shuffle -STR_COLOUR_DARK_BLUE :Myrka Blátt -STR_COLOUR_PALE_GREEN :Bleikt Grønt -STR_COLOUR_PINK :Ljósareytt -STR_COLOUR_YELLOW :Gult -STR_COLOUR_RED :Reytt -STR_COLOUR_LIGHT_BLUE :Ljósa Blátt -STR_COLOUR_GREEN :Grønt -STR_COLOUR_DARK_GREEN :Myrka Grønt -STR_COLOUR_BLUE :Blátt -STR_COLOUR_CREAM :Krem -STR_COLOUR_MAUVE :Mauve -STR_COLOUR_PURPLE :Lilla -STR_COLOUR_ORANGE :Appelsingult -STR_COLOUR_BROWN :Brúnt -STR_COLOUR_GREY :Grátt -STR_COLOUR_WHITE :Hvítt - -# Units used in OpenTTD -STR_UNITS_VELOCITY_IMPERIAL :{COMMA} mph -STR_UNITS_VELOCITY_METRIC :{COMMA} km/t -STR_UNITS_VELOCITY_SI :{COMMA} m/s - -STR_UNITS_POWER_IMPERIAL :{COMMA}hp -STR_UNITS_POWER_METRIC :{COMMA}hp -STR_UNITS_POWER_SI :{COMMA}kW - -STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}t -STR_UNITS_WEIGHT_SHORT_SI :{COMMA}kg - -STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} tons -STR_UNITS_WEIGHT_LONG_SI :{COMMA} kg - -STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}l -STR_UNITS_VOLUME_SHORT_SI :{COMMA}m³ - -STR_UNITS_VOLUME_LONG_METRIC :{COMMA} lit{P ur rar} -STR_UNITS_VOLUME_LONG_SI :{COMMA} m³ - -STR_UNITS_FORCE_SI :{COMMA} kN - -STR_UNITS_HEIGHT_IMPERIAL :{COMMA} ft -STR_UNITS_HEIGHT_SI :{COMMA} m - -# Common window strings -STR_LIST_FILTER_OSKTITLE :{BLACK}Skriva inn filtur strong -STR_LIST_FILTER_TOOLTIP :{BLACK}Skriva inn lyklaorð til at filtreða listan eftur - -STR_TOOLTIP_SORT_ORDER :{BLACK}Vel raðfesting (lækkandi/hækkandi) -STR_TOOLTIP_SORT_CRITERIA :{BLACK}Set raðfestingar treytir -STR_TOOLTIP_FILTER_CRITERIA :{BLACK}Set filtrerings treytir -STR_BUTTON_SORT_BY :{BLACK}Sortera eftur -STR_BUTTON_LOCATION :{BLACK}Stað -STR_BUTTON_RENAME :{BLACK}Endurdoyp - -STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Lat glugga aftur -STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Glugga heiti - drag her fyri at fyta glugga -STR_TOOLTIP_SHADE :{BLACK}Skugga gluggi - vís einans heitis bjálkan -STR_TOOLTIP_DEBUG :{BLACK}Vís NewGRF debug kunning -STR_TOOLTIP_RESIZE :{BLACK}Týst og drag fyri at broyta støddina á hesum glugganum -STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Skift millum stóran/lítlan glugga -STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Skriðu bjálki - drag listan upp/niður -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. - -# Query window -STR_BUTTON_DEFAULT :{BLACK}Vanligt -STR_BUTTON_CANCEL :{BLACK}Angra -STR_BUTTON_OK :{BLACK}OK - -# On screen keyboard window -STR_OSK_KEYBOARD_LAYOUT :½1234567890+´qwertyuiopåðasdfghjklæø'ZXCVBNM;:_ - -# Measurement tooltip -STR_MEASURE_LENGTH :{BLACK}Longd: {NUM} -STR_MEASURE_AREA :{BLACK}Øki: {NUM} x {NUM} -STR_MEASURE_LENGTH_HEIGHTDIFF :{BLACK}Longd: {NUM}{}Hæddar munur: {HEIGHT} -STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}Øki: {NUM} x {NUM}{}Hæddar munur: {HEIGHT} - - -# These are used in buttons -STR_SORT_BY_CAPTION_POPULATION :{BLACK}Fólkatal -STR_SORT_BY_CAPTION_NAME :{BLACK}Navn -STR_SORT_BY_CAPTION_DATE :{BLACK}Dato -# These are used in dropdowns -STR_SORT_BY_NAME :Navni -STR_SORT_BY_PRODUCTION :Framleiðslu -STR_SORT_BY_TYPE :Slagi -STR_SORT_BY_TRANSPORTED :Flutt -STR_SORT_BY_NUMBER :Tali -STR_SORT_BY_PROFIT_LAST_YEAR :Vinningi síðsta ár -STR_SORT_BY_PROFIT_THIS_YEAR :Vinningi hetta ári -STR_SORT_BY_AGE :Aldur -STR_SORT_BY_RELIABILITY :Álítandi -STR_SORT_BY_TOTAL_CAPACITY_PER_CARGOTYPE :Fullfíggja rúmd per lasta typa -STR_SORT_BY_MAX_SPEED :Hægstu fer -STR_SORT_BY_MODEL :Modell -STR_SORT_BY_VALUE :Virði -STR_SORT_BY_LENGTH :Longd -STR_SORT_BY_LIFE_TIME :Eftirverandi lív tíð -STR_SORT_BY_TIMETABLE_DELAY :Tíðarætlan seinka -STR_SORT_BY_FACILITY :Støð slagi -STR_SORT_BY_WAITING :Bíðar farmur virði -STR_SORT_BY_RATING_MAX :Hægsta farm virði -STR_SORT_BY_RATING_MIN :Lægsta farm virði -STR_SORT_BY_ENGINE_ID :MaskinID (klassiskt svart) -STR_SORT_BY_COST :Kostnaði -STR_SORT_BY_POWER :Megi -STR_SORT_BY_TRACTIVE_EFFORT :Dregur stríð -STR_SORT_BY_INTRO_DATE :Innleiðslu Dagur -STR_SORT_BY_RUNNING_COST :Raktstrar kostnaði -STR_SORT_BY_POWER_VS_RUNNING_COST :Megi/Rakstrar kostnaði -STR_SORT_BY_CARGO_CAPACITY :Farm Pláss - -# Tooltips for the main toolbar -STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Steðga spælinum -STR_TOOLBAR_TOOLTIP_FORWARD :{BLACK}Skunda undir spæli -STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}Møguleikar -STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK}Goym spælið, far frá spælið, gevst -STR_TOOLBAR_TOOLTIP_DISPLAY_MAP :{BLACK}Vís kort, eyka glugga ella lista yvir skelti -STR_TOOLBAR_TOOLTIP_DISPLAY_TOWN_DIRECTORY :{BLACK}Vís bygdar lista -STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Vís undirsíðir -STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Vís lista yvir støðir hjá felagnum -STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Vís felagsins fíggjarligu støðu -STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Vís felagsins støðu -STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Vís grafar -STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Vís støðuna millum feløgini -STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Fíggja bygging av nýggjum ídnaði ella vís lista yvir allan ídnað -STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}Vís lista yvir tok hjá felagnum. Ctrl+Klikk skiftur ímillum bólkur/akfar listan -STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}Vis lista yvir akfør hjá felagnum. Ctrl+Klikk skiftur ímillum bólkur/akfar listan -STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_SHIPS :{BLACK}Vís lista yvir skip hjá felagnum. Ctrl+Klikk skiftur ímillum bólk/akfar listan -STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_IN :{BLACK}Forstørra mynduna in -STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_OUT :{BLACK}Minka vindeyga út -STR_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Bygg ein tog bana -STR_TOOLBAR_TOOLTIP_BUILD_ROADS :{BLACK}Bygg vegir -STR_TOOLBAR_TOOLTIP_BUILD_SHIP_DOCKS :{BLACK}Bygg báta havn -STR_TOOLBAR_TOOLTIP_BUILD_AIRPORTS :{BLACK}Bygg lufthavn -STR_TOOLBAR_TOOLTIP_SHOW_SOUND_MUSIC_WINDOW :{BLACK}Vís ljóð/musik vindeyga -STR_TOOLBAR_TOOLTIP_SHOW_LAST_MESSAGE_NEWS :{BLACK}Vís sísta boð/nýggjheit frágreiðing, vís boð møguleikarnar -STR_TOOLBAR_TOOLTIP_SWITCH_TOOLBAR :{BLACK}Skift amboðslinju - -# Extra tooltips for the scenario editor toolbar -STR_SCENEDIT_TOOLBAR_TOOLTIP_SAVE_SCENARIO_LOAD_SCENARIO :{BLACK}Goym mannagongd, heinta mannagongd, slepp mannagongd editor, gevst -STR_SCENEDIT_TOOLBAR_OPENTTD :{YELLOW}OpenTTD -STR_SCENEDIT_TOOLBAR_SCENARIO_EDITOR :{YELLOW}Mannagongd Editor -STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_BACKWARD :{BLACK}Flyt byrjunar dato 1 ár aftur -STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_FORWARD :{BLACK}Flyt byrjunar dato 1 ár fram -STR_SCENEDIT_TOOLBAR_TOOLTIP_SET_DATE :{BLACK}Trýst her fyri at seta inn byrjunar dato -STR_SCENEDIT_TOOLBAR_TOOLTIP_DISPLAY_MAP_TOWN_DIRECTORY :{BLACK}Vís kort, bygdar lista -STR_SCENEDIT_TOOLBAR_LANDSCAPE_GENERATION :{BLACK}landslags generatión -STR_SCENEDIT_TOOLBAR_TOWN_GENERATION :{BLACK}Bygda generatión -STR_SCENEDIT_TOOLBAR_INDUSTRY_GENERATION :{BLACK}Vinnu generatión -STR_SCENEDIT_TOOLBAR_ROAD_CONSTRUCTION :{BLACK}Vegagerð -STR_SCENEDIT_TOOLBAR_PLACE_SIGN :{BLACK}Set tekin - -############ range for SE file menu starts -STR_SCENEDIT_FILE_MENU_SAVE_SCENARIO :Goym mannagongd -STR_SCENEDIT_FILE_MENU_LOAD_SCENARIO :Heinta mannagongd -STR_SCENEDIT_FILE_MENU_LOAD_HEIGHTMAP :Heinta hæddarkort -STR_SCENEDIT_FILE_MENU_SEPARATOR : -STR_SCENEDIT_FILE_MENU_QUIT :Gevst -############ range for SE file menu starts - -############ range for settings menu starts -STR_SETTINGS_MENU_GAME_OPTIONS :Spæl møguleikar -STR_SETTINGS_MENU_CONFIG_SETTINGS :Víðka innstilling -STR_SETTINGS_MENU_NEWGRF_SETTINGS :NýggjGRF innstilling -STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :Gjøgnumskygnis møguleikar -STR_SETTINGS_MENU_TOWN_NAMES_DISPLAYED :Bygdarnøvn víst -STR_SETTINGS_MENU_STATION_NAMES_DISPLAYED :Statión navn víst -STR_SETTINGS_MENU_WAYPOINTS_DISPLAYED :Positión navn víst -STR_SETTINGS_MENU_SIGNS_DISPLAYED :Tekin víst -STR_SETTINGS_MENU_FULL_ANIMATION :Full animatión -STR_SETTINGS_MENU_FULL_DETAIL :Allar smálutir -STR_SETTINGS_MENU_TRANSPARENT_BUILDINGS :Gjøgnumskygdir bygningar -STR_SETTINGS_MENU_TRANSPARENT_SIGNS :Gjøgnumskygd statións tekin -############ range ends here - -############ range for file menu starts -STR_FILE_MENU_SAVE_GAME :Goym spæl -STR_FILE_MENU_LOAD_GAME :Heinta spæl -STR_FILE_MENU_QUIT_GAME :Far frá spæli -STR_FILE_MENU_SEPARATOR : -STR_FILE_MENU_EXIT :Útgongd -############ range ends here - -############ range for map menu starts -STR_MAP_MENU_MAP_OF_WORLD :Kort av verð -STR_MAP_MENU_SIGN_LIST :Listi yvur tekin -############ range for town menu starts, yet the town directory is shown in the map menu in the scenario editor -STR_TOWN_MENU_TOWN_DIRECTORY :Bygdar yvirlit -############ end of the 'Display map' dropdown -STR_TOWN_MENU_FOUND_TOWN :Funnar bygdir -############ end of the 'Town' dropdown - -############ range for subsidies menu starts -############ range ends here - -############ range for graph menu starts -STR_GRAPH_MENU_OPERATING_PROFIT_GRAPH :Rakstrar avkast grafur -STR_GRAPH_MENU_INCOME_GRAPH :Inntøku grafur -STR_GRAPH_MENU_DELIVERED_CARGO_GRAPH :Avlevera farm grafur -STR_GRAPH_MENU_PERFORMANCE_HISTORY_GRAPH :Avrik søgu grafur -STR_GRAPH_MENU_COMPANY_VALUE_GRAPH :Virkis virði grafur -STR_GRAPH_MENU_CARGO_PAYMENT_RATES :Farma gjald takstur -############ range ends here - -############ range for company league menu starts -STR_GRAPH_MENU_COMPANY_LEAGUE_TABLE :Virkis felagsskapur yvirlit -STR_GRAPH_MENU_DETAILED_PERFORMANCE_RATING :Detaliera avriks meting -############ range ends here - -############ range for industry menu starts -STR_INDUSTRY_MENU_INDUSTRY_DIRECTORY :Virkis yvurlit -STR_INDUSTRY_MENU_FUND_NEW_INDUSTRY :Fíggja nýggj virki -############ range ends here - -############ range for railway construction menu starts -STR_RAIL_MENU_RAILROAD_CONSTRUCTION :Jarnbreyta bygging -STR_RAIL_MENU_ELRAIL_CONSTRUCTION :El jarnbreyta bygging -STR_RAIL_MENU_MONORAIL_CONSTRUCTION :einsporað jarnbreyta bygging -############ range ends here - -############ range for road construction menu starts -STR_ROAD_MENU_ROAD_CONSTRUCTION :Vegagerð -STR_ROAD_MENU_TRAM_CONSTRUCTION :Sporvega bygging -############ range ends here - -############ range for waterways construction menu starts -STR_WATERWAYS_MENU_WATERWAYS_CONSTRUCTION :Siglingarrennu bygging -############ range ends here - -############ range for airport construction menu starts -STR_AIRCRAFT_MENU_AIRPORT_CONSTRUCTION :Flogvalla bygging -############ range ends here - -############ range for landscaping menu starts -STR_LANDSCAPING_MENU_PLANT_TREES :Planta trø -STR_LANDSCAPING_MENU_PLACE_SIGN :Set tekin -############ range ends here - -############ range for music menu starts -STR_TOOLBAR_SOUND_MUSIC :Ljóð/ tónleik -############ range ends here - -############ range for message menu starts -STR_NEWS_MENU_LAST_MESSAGE_NEWS_REPORT :Seinastu boð/tíðinda frásøgn -############ range ends here - -############ range for about menu starts -STR_ABOUT_MENU_LAND_BLOCK_INFO :Landa økis kunning -STR_ABOUT_MENU_SEPARATOR : -STR_ABOUT_MENU_SCREENSHOT :Skermmynd -STR_ABOUT_MENU_ZOOMIN_SCREENSHOT :Suma in skermmynd -STR_ABOUT_MENU_ABOUT_OPENTTD :Um 'OpenTTD' -############ 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 days ends - -############ range for months starts -STR_MONTH_ABBREV_JAN :Jan -STR_MONTH_ABBREV_FEB :Feb -STR_MONTH_ABBREV_MAR :Mar -STR_MONTH_ABBREV_APR :Apr -STR_MONTH_ABBREV_MAY :Mai -STR_MONTH_ABBREV_JUN :Jun -STR_MONTH_ABBREV_JUL :Jul -STR_MONTH_ABBREV_AUG :Aug -STR_MONTH_ABBREV_SEP :Sep -STR_MONTH_ABBREV_OCT :Okt -STR_MONTH_ABBREV_NOV :Nov -STR_MONTH_ABBREV_DEC :Des - -STR_MONTH_JAN :Januar -STR_MONTH_FEB :Februar -STR_MONTH_MAR :Mars -STR_MONTH_APR :Apríl -STR_MONTH_MAY :Mai -STR_MONTH_JUN :Juni -STR_MONTH_JUL :Juli -STR_MONTH_AUG :August -STR_MONTH_SEP :Septembur -STR_MONTH_OCT :Oktobur -STR_MONTH_NOV :Novembur -STR_MONTH_DEC :Desembur -############ range for months ends - -# Graph window -STR_GRAPH_KEY_BUTTON :{BLACK}Knøttur -STR_GRAPH_KEY_TOOLTIP :{BLACK}Vís knøttar til graf -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}Rakstrar avkast grafur -STR_GRAPH_INCOME_CAPTION :{WHITE}Inntøku grafur -STR_GRAPH_COMPANY_VALUES_CAPTION :{WHITE}Virkis virði - -STR_GRAPH_CARGO_PAYMENT_RATES_CAPTION :{WHITE}Farma gjald takstur -STR_GRAPH_CARGO_PAYMENT_RATES_X_LABEL :{TINY_FONT}{BLACK}Dagar á ferð -STR_GRAPH_CARGO_ENABLE_ALL :{TINY_FONT}{BLACK}Gilda alt -STR_GRAPH_CARGO_DISABLE_ALL :{TINY_FONT}{BLACK}Ógilda alt -STR_GRAPH_CARGO_TOOLTIP_ENABLE_ALL :{BLACK}Vís allan farm á farmagjalds takst grafi -STR_GRAPH_CARGO_TOOLTIP_DISABLE_ALL :{BLACK}Vís ongan farm á farmagjalds takst grafi -STR_GRAPH_CARGO_PAYMENT_CARGO :{TINY_FONT}{BLACK}{STRING} - - -# Graph key window -STR_GRAPH_KEY_CAPTION :{WHITE}Knøttur til virkis graf - -# Company league window -STR_COMPANY_LEAGUE_TABLE_CAPTION :{WHITE}Virkis samtaks tabel -STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ENGINEER :Teknikari -STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRAFFIC_MANAGER :Ferðslu Leiðari -STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRANSPORT_COORDINATOR :Flutnings Samskipari -STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ROUTE_SUPERVISOR :Rutu Vegleiðari -STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_DIRECTOR :Leiðari -STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHIEF_EXECUTIVE :Ovasti Stjóri -STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHAIRMAN :Leiðari -STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_PRESIDENT :President - -# Performance detail window -STR_PERFORMANCE_DETAIL_KEY :{BLACK}Detaljur -STR_PERFORMANCE_DETAIL_AMOUNT_CURRENCY :{BLACK}({CURRENCY_SHORT}/{CURRENCY_SHORT}) -STR_PERFORMANCE_DETAIL_AMOUNT_INT :{BLACK}({COMMA}/{COMMA}) -STR_PERFORMANCE_DETAIL_PERCENT :{WHITE}{NUM}% -############ Those following lines need to be in this order!! -STR_PERFORMANCE_DETAIL_VEHICLES :{BLACK}Akfar : -STR_PERFORMANCE_DETAIL_STATIONS :{BLACK}Støðir: -STR_PERFORMANCE_DETAIL_MIN_PROFIT :{BLACK}Min. vinning: -STR_PERFORMANCE_DETAIL_MIN_INCOME :{BLACK}Min. inntøka: -STR_PERFORMANCE_DETAIL_MAX_INCOME :{BLACK}Maks. iinntøka: -STR_PERFORMANCE_DETAIL_DELIVERED :{BLACK}Avlevera: -STR_PERFORMANCE_DETAIL_CARGO :{BLACK}Last: -STR_PERFORMANCE_DETAIL_MONEY :{BLACK}Pengar: -STR_PERFORMANCE_DETAIL_LOAN :{BLACK}Lán: -STR_PERFORMANCE_DETAIL_TOTAL :{BLACK}Total: -############ End of order list - -# Music window -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}" - - -# Playlist window -STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} "{STRING}" - -# Highscore window -STR_HIGHSCORE_POSITION :{BIG_FONT}{BLACK}{COMMA}. -STR_HIGHSCORE_NAME :{BIG_FONT}{PRESIDENT_NAME}, {COMPANY} -STR_HIGHSCORE_STATS :{BIG_FONT}'{STRING}' ({COMMA}) - -# Smallmap window - - - -STR_SMALLMAP_INDUSTRY :{TINY_FONT}{STRING} ({NUM}) -STR_SMALLMAP_TOWN :{TINY_FONT}{WHITE}{TOWN} - -# Status bar messages -STR_STATUSBAR_COMPANY_NAME :{SILVER}- - {COMPANY} - - - -# News message history -STR_MESSAGE_NEWS_FORMAT :{STRING} - {STRING} - - - - - - - - - - - - -# Start of order review system -# DON'T ADD OR REMOVE LINES HERE -# end of order system - - - -STR_NEWS_NEW_VEHICLE_TYPE :{BIG_FONT}{BLACK}{ENGINE} - - - - -# Extra view window -STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}Set staðið í hesum glugganum inn í høvuðsgluggan - -# Game options window -STR_GAME_OPTIONS_CAPTION :{WHITE}Spælið Møguleikar -STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Gjaldsoyra eindir -STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Úrval av gjaldsoyra eindum - -############ start of currency region -STR_GAME_OPTIONS_CURRENCY_GBP :Pund (£) -STR_GAME_OPTIONS_CURRENCY_USD :Dollarar ($) -STR_GAME_OPTIONS_CURRENCY_EUR :Evrir (€) -STR_GAME_OPTIONS_CURRENCY_JPY :Yen (¥) -STR_GAME_OPTIONS_CURRENCY_ATS :Eysturríkskan Shilling (ATS) -STR_GAME_OPTIONS_CURRENCY_BEF :Belgiskan Frank (BEF) -STR_GAME_OPTIONS_CURRENCY_CHF :Sveisiskan Frank (CHF) -STR_GAME_OPTIONS_CURRENCY_CZK :Tjekkisk Koruna (CZK) -STR_GAME_OPTIONS_CURRENCY_DEM :Deutschmark (DEM) -STR_GAME_OPTIONS_CURRENCY_DKK :Danskar Krónir (DKK) -STR_GAME_OPTIONS_CURRENCY_ESP :Peseta (ESP) -STR_GAME_OPTIONS_CURRENCY_FIM :Finskan Mark (FIM) -STR_GAME_OPTIONS_CURRENCY_FRF :Frankar (FRF) -STR_GAME_OPTIONS_CURRENCY_GRD :Grikkskan Drachma (GRD) -STR_GAME_OPTIONS_CURRENCY_HUF :Ungarskan Forint (HUF) -STR_GAME_OPTIONS_CURRENCY_ISK :Íslenska Krónu (ISK) -STR_GAME_OPTIONS_CURRENCY_ITL :Italskan Lira (ITL) -STR_GAME_OPTIONS_CURRENCY_NLG :Niðurlendskan Gillin (NLG) -STR_GAME_OPTIONS_CURRENCY_NOK :Norskar Krónur (NOK) -STR_GAME_OPTIONS_CURRENCY_PLN :Polskan Zloty (PLN) -STR_GAME_OPTIONS_CURRENCY_RON :Rumeniskan Leu (RON) -STR_GAME_OPTIONS_CURRENCY_RUR :Russiskar Rublar (RUR) -STR_GAME_OPTIONS_CURRENCY_SIT :Slovenskar Tolar (SIT) -STR_GAME_OPTIONS_CURRENCY_SEK :Svenskar Krónur (SEK) -STR_GAME_OPTIONS_CURRENCY_TRY :Turkiskan Lira (TRY) -STR_GAME_OPTIONS_CURRENCY_SKK :Slovakiska Koruna (SKK) -STR_GAME_OPTIONS_CURRENCY_BRL :Brasilskan Real (BRL) -STR_GAME_OPTIONS_CURRENCY_EEK :Estoniska Krooni (EEK) -############ end of currency region - -STR_GAME_OPTIONS_MEASURING_UNITS_FRAME :{BLACK}Máti eindir -STR_GAME_OPTIONS_MEASURING_UNITS_DROPDOWN_TOOLTIP :{BLACK}Úrval av máti eindum - -############ start of measuring units region -STR_GAME_OPTIONS_MEASURING_UNITS_IMPERIAL :Imperial -STR_GAME_OPTIONS_MEASURING_UNITS_METRIC :Metric -STR_GAME_OPTIONS_MEASURING_UNITS_SI :SI -############ 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 -STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_RIGHT :Høgrakoyring - -STR_GAME_OPTIONS_TOWN_NAMES_FRAME :{BLACK}Bygdar nøvn -STR_GAME_OPTIONS_TOWN_NAMES_DROPDOWN_TOOLTIP :{BLACK}Áset slag av bygdar nøvnum - -############ start of townname region -STR_GAME_OPTIONS_TOWN_NAME_ORIGINAL_ENGLISH :Ensk (Original) -STR_GAME_OPTIONS_TOWN_NAME_FRENCH :Fronsk -STR_GAME_OPTIONS_TOWN_NAME_GERMAN :Týsk -STR_GAME_OPTIONS_TOWN_NAME_ADDITIONAL_ENGLISH :Ensk (Additional) -STR_GAME_OPTIONS_TOWN_NAME_LATIN_AMERICAN :Latin-Amerikonsk -STR_GAME_OPTIONS_TOWN_NAME_SILLY :Fjákut -STR_GAME_OPTIONS_TOWN_NAME_SWEDISH :Svensk -STR_GAME_OPTIONS_TOWN_NAME_DUTCH :Niðurlendsk -STR_GAME_OPTIONS_TOWN_NAME_FINNISH :Finsk -STR_GAME_OPTIONS_TOWN_NAME_POLISH :Polsk -STR_GAME_OPTIONS_TOWN_NAME_SLOVAK :Slovakisk -STR_GAME_OPTIONS_TOWN_NAME_NORWEGIAN :Norsk -STR_GAME_OPTIONS_TOWN_NAME_HUNGARIAN :Ungarsk -############ end of townname region - - - - - - - - - - - -# Custom currency window - - - - - - - - - - - - - - - - - -# Advanced settings window - - - - - - - - - - - - - - - -STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31) - - - - - - - - - - - - - - - - -STR_CONFIG_SETTING_PATHFINDER_NPF :NPF - - - -# Config errors - -# Intro window -STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} - - - - - - - -# Quit window - -# 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 - -# Cheat window - -# Livery window - - - -# Face selection window - -STR_FACE_YES :Já - -# Network server list - -STR_NETWORK_SERVER_LIST_GENERAL_ONLINE :{BLACK}{COMMA}/{COMMA} - {COMMA}/{COMMA} -STR_NETWORK_SERVER_LIST_MAP_SIZE_SHORT :{BLACK}{COMMA}x{COMMA} - - - - - - -# Start new multiplayer server - - - - -# Network game languages -############ Leave those lines in this order!! -############ End of leave-in-this-order - -# Network game lobby - - - - - -# Network connecting window - -############ Leave those lines in this order!! - -############ End of leave-in-this-order - - - -# Network company list added strings - -# Network client list - - - -# Network set password - -# Network company info join/password - -# Network chat - - -# Network messages - -############ Leave those lines in this order!! -############ End of leave-in-this-order - - -# Network related errors -STR_NETWORK_SERVER_MESSAGE :*** {1:STRING} -############ Leave those lines in this order!! -############ End of leave-in-this-order - -# Content downloading window -STR_CONTENT_DETAIL_URL :{SILVER}URL: {WHITE}{STRING} - -# Order of these is important! - -# Content downloading progress window - -# Content downloading error messages - - -# Transparency settings window - -# Base for station construction window(s) - -# Join station window - - -# Rail construction toolbar - - - -# Rail depot construction window - -# Rail waypoint construction window - -# Rail station construction window - - - -# Signal window - -# Bridge selection window -STR_SELECT_BRIDGE_INFO :{GOLD}{STRING},{} {VELOCITY} {WHITE}{CURRENCY_LONG} - - -# Road construction toolbar - -# Road depot construction window - -# Road vehicle station construction window - -# Waterways toolbar (last two for SE only) - -# Ship depot construction window - -# Dock construction window - -# Airport toolbar - -# Airport construction window - - - - -# Landscaping toolbar - -# Object construction window - - -# Tree planting window (last two for SE only) - -# Land generation window (SE) - - -# Town generation window (SE) - - - - -# Fund new industry window - -# Industry cargoes window - -# Land area window -STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) - -# Description of land area of different tiles - - - -# Houses come directly from their building names - - - - -# Industries come directly from their industry names - - - - - - -# About OpenTTD window - -# Save/load game/scenario -STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING} - - -# World generation -STR_MAPGEN_BY :{BLACK}* - -# Strings for map borders at game generation - -STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} * {NUM} - - -# SE Map generation - - -# Map generation progress -STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / {NUM} - -# NewGRF settings - - - - - -# NewGRF parameters window -STR_NEWGRF_PARAMETERS_SETTING :{STRING}: {ORANGE}{STRING} - -# NewGRF inspect window - - - -# Sprite aligner window - - -# NewGRF (self) generated warnings/errors -STR_NEWGRF_ERROR_MSG_INFO :{SILVER}{STRING} - -# NewGRF related 'general' warnings - - - -# NewGRF status - -# NewGRF 'it's broken' warnings - - -# 'User removed essential NewGRFs'-placeholders for stuff without specs -STR_NEWGRF_INVALID_CARGO_ABBREV :?? - -# NewGRF scanning window - -# Sign list window - -# Sign window - - -# Town directory window -STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA}) - -# Town view window -STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN} - - - -# Town local authority window -STR_LOCAL_AUTHORITY_COMPANY_RATING :{YELLOW}{COMPANY} {COMPANY_NUM}: {ORANGE}{STRING} - - - -# Goal window -STR_GOALS_TEXT :{ORANGE}{STRING} - -# Goal question window - -### Start of Goal Question button list - -# Subsidies window - -# Station list window -STR_STATION_LIST_STATION :{YELLOW}{STATION} {STATION_FEATURES} -STR_STATION_LIST_WAYPOINT :{YELLOW}{WAYPOINT} - -# Station view window -STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} -STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_LONG} - - - -STR_STATION_VIEW_CARGO_RATING :{WHITE}{STRING}: {YELLOW}{STRING} ({COMMA}%) - -############ range for rating starts -############ range for rating ends - - - - - -# Waypoint/buoy view window -STR_WAYPOINT_VIEW_CAPTION :{WHITE}{WAYPOINT} - - -# Finances window -STR_FINANCES_YEAR :{WHITE}{NUM} -STR_FINANCES_NEGATIVE_INCOME :{BLACK}-{CURRENCY_LONG} -STR_FINANCES_POSITIVE_INCOME :{BLACK}+{CURRENCY_LONG} -STR_FINANCES_TOTAL_CURRENCY :{BLACK}{CURRENCY_LONG} - -# Company view -STR_COMPANY_VIEW_CAPTION :{WHITE}{COMPANY} {BLACK}{COMPANY_NUM} - - - - - - - -# Company infrastructure window - -# Industry directory -STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUSTRY} - -# Industry view -STR_INDUSTRY_VIEW_CAPTION :{WHITE}{INDUSTRY} - -############ range for requires starts -############ range for requires ends - -############ range for produces starts -STR_INDUSTRY_VIEW_WAITING_STOCKPILE_CARGO :{YELLOW}{CARGO_LONG}{STRING}{BLACK} -############ range for produces ends - - -# Vehicle lists - - - - - - - - -# Group window - - - - - -# Build vehicle window - - - - - - - - - -# Depot window -STR_DEPOT_CAPTION :{WHITE}{DEPOT} - - -STR_DEPOT_NO_ENGINE :{BLACK}- -STR_DEPOT_VEHICLE_TOOLTIP :{BLACK}{ENGINE}{STRING} -STR_DEPOT_VEHICLE_TOOLTIP_CARGO :{}{CARGO_LONG} ({CARGO_SHORT}) - - - - - - - - - - - - - - - -# Engine preview window - - -# Autoreplace window - - - - - - -# Vehicle view -STR_VEHICLE_VIEW_CAPTION :{WHITE}{VEHICLE} - - - - - - - - - - -# Messages in the start stop button in the vehicle view - - -# Vehicle stopped/started animations - -# Vehicle details - - -# The next two need to stay in this order - - - - - - - -# Extra buttons for train details windows - -STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY :{LTBLUE}- {CARGO_LONG} ({CARGO_SHORT}) - - - - -# Vehicle refit - - - - -# Order view - -STR_ORDER_INDEX :{COMMA}:{NBSP} -STR_ORDER_TEXT :{STRING} {STRING} {STRING} - - -# Order bottom buttons - - - - - - -# Conditional order variables, must follow order of OrderConditionVariable enum - - - - - - - -# String parts to build the order string - - -STR_ORDER_GO_TO_NEAREST_DEPOT_FORMAT :{STRING} {STRING} {STRING} -STR_ORDER_GO_TO_DEPOT_FORMAT :{STRING} {DEPOT} - - -STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING} - - - - - - - - - -# Time table window - - - - - - - - - - - - - - - -# Date window (for timetable) - - -# AI debug window - - -# AI configuration window - - - -STR_AI_CONFIG_CHANGE_NONE : - -# Available AIs window - - - -# AI Parameters -STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING} - - -# Textfile window - - -# 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} - -# Income 'floats' - -# Saveload messages - -# Map generation messages - - - - - -# Soundset messages - -# Screenshot related messages - - -# Error message titles - -# Generic construction errors - -# Local authority errors - -# Levelling errors - -# Company related errors - - -# Town related errors - -# Industry related errors - -# Station construction related errors - - -# Station destruction related errors - - -# Waypoint related errors - - - -# Depot related errors - - - - - - -# Autoreplace related errors - -# Rail construction errors - - -# Road construction errors - -# Waterway construction errors - -# Tree related errors - -# Bridge related errors - -# Tunnel related errors - -# Object related errors - -# Group related errors - -# Generic vehicle errors - - - - - - - - - - - -# Specific vehicle errors - - - -# Order related errors - - -# Timetable related errors - -# Sign related errors - -# Translatable comment for OpenTTD's desktop shortcut - -##id 0x2000 -# Town building names - -##id 0x4800 -# industry names - -############ 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_STNAME :{STRING} -STR_SV_STNAME_BUOY :{STRING} -STR_SV_STNAME_WAYPOINT :{STRING} -##id 0x6020 -############ end of savegame specific region! - -##id 0x8000 -# Vehicle names - -##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_INDUSTRY_NAME :{TOWN} {STRING} - - - -STR_SAVEGAME_NAME_DEFAULT :{COMPANY}, {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_GROUP_NAME :{GROUP} -STR_INDUSTRY_NAME :{INDUSTRY} -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} -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_SPACE_STRING :{STRING} {STRING} -STR_JUST_RAW_STRING :{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_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} -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_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} -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/unfinished/frisian.txt b/src/lang/unfinished/frisian.txt index 4cab9fd3a..75503fae4 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 @@ -107,7 +107,7 @@ STR_QUANTITY_IRON_ORE :{WEIGHT_LONG} f STR_QUANTITY_STEEL :{WEIGHT_LONG} fan stiel STR_QUANTITY_VALUABLES :{COMMA} 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_FOOD :{WEIGHT_LONG} fan iten @@ -199,27 +199,36 @@ 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 STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} ton{P "" nen} 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{P "" s} 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 +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,7 +240,8 @@ 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 @@ -255,7 +265,6 @@ STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}Gebied: # These are used in buttons -STR_SORT_BY_CAPTION_POPULATION :{BLACK}Ynwenners STR_SORT_BY_CAPTION_NAME :{BLACK}Namme STR_SORT_BY_CAPTION_DATE :{BLACK}Datum # These are used in dropdowns @@ -266,7 +275,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 @@ -276,30 +285,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_WAITING :Wearde fan wachtsjende fracht -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 @@ -309,55 +323,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 :Wiidweidiche 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 @@ -365,18 +381,19 @@ 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 -############ range for map menu starts -STR_MAP_MENU_MAP_OF_WORLD :Kaart fan 'e wrâld -STR_MAP_MENU_EXTRA_VIEW_PORT :Ekstra sichtber diel +# map menu +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, yet the town directory is shown in the map menu in the scenario editor -STR_TOWN_MENU_TOWN_DIRECTORY :Stêden list -############ end of the 'Display map' dropdown -STR_TOWN_MENU_FOUND_TOWN :Sticht in stêd -############ end of the 'Town' dropdown + +############ range for town menu starts +STR_TOWN_MENU_TOWN_DIRECTORY :Stêdlist +STR_TOWN_MENU_FOUND_TOWN :In stêd stichte +############ range ends here ############ range for subsidies menu starts STR_SUBSIDIES_MENU_SUBSIDIES :Subsydzjes @@ -384,26 +401,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 @@ -422,9 +441,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 @@ -432,23 +451,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 @@ -464,22 +486,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 @@ -534,7 +574,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 @@ -545,8 +585,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 @@ -554,14 +594,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: @@ -572,16 +612,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 @@ -591,8 +631,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}' @@ -603,7 +643,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 @@ -613,25 +653,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 @@ -639,9 +679,9 @@ 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 :{BIG_FONT}{PRESIDENT_NAME}, {COMPANY} +STR_HIGHSCORE_NAME :{PRESIDENT_NAME}, {COMPANY} STR_HIGHSCORE_STATS :{BIG_FONT}'{STRING}' ({COMMA}) STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{BLACK}{COMPANY} berikt'{STRING}' status! STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{WHITE}{PRESIDENT_NAME} fan {COMPANY} berikt '{STRING}' status! @@ -650,29 +690,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 @@ -689,13 +732,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 @@ -704,19 +748,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 @@ -730,75 +776,74 @@ 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_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} @@ -817,158 +862,159 @@ 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 -STR_GAME_OPTIONS_MEASURING_UNITS_FRAME :{BLACK}Mjitienhied -STR_GAME_OPTIONS_MEASURING_UNITS_DROPDOWN_TOOLTIP :{BLACK}Mjitienhied seleksje ############ start of measuring units region -STR_GAME_OPTIONS_MEASURING_UNITS_IMPERIAL :Imperiaal -STR_GAME_OPTIONS_MEASURING_UNITS_METRIC :Metriesk -STR_GAME_OPTIONS_MEASURING_UNITS_SI :SI ############ 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_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_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 @@ -987,7 +1033,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 @@ -1000,20 +1046,24 @@ 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_CITY_APPROVAL_PERMISSIVE :Tajouwend STR_CITY_APPROVAL_TOLERANT :Tolerant @@ -1023,194 +1073,397 @@ STR_WARNING_NO_SUITABLE_AI :{WHITE}Gjin br # Advanced settings window STR_CONFIG_SETTING_CAPTION :{WHITE}Avansearre ynstellings - - - -STR_CONFIG_SETTING_OFF :út -STR_CONFIG_SETTING_ON :oan -STR_CONFIG_SETTING_DISABLED :utskeakele - -STR_CONFIG_SETTING_COMPANIES_OFF :Ût +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 +STR_CONFIG_SETTING_RESTRICT_ADVANCED :Wiidweidige ynstellings +STR_CONFIG_SETTING_RESTRICT_ALL :Ekspêrynstelltings / alle ynstellings +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_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_BUILDONSLOPES :It boue op in helling tastean: {STRING} STR_CONFIG_SETTING_AUTOSLOPE :Omkriten oanpasse under gebouen, spoaren, ensafuorthinne tastean (autoslope): {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_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_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_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_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 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 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 at dizze {STRING} +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 +STR_CONFIG_SETTING_HOVER_DELAY_VALUE :Sweve foar {COMMA} seconde {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_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_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 (allinnich TerraGenesis) : {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_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_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_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 de avansearre 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 auto's 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_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} @@ -1226,8 +1479,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 @@ -1235,17 +1488,17 @@ 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_STATUSBAR_POS :Posysje fan statusbalke: {STRING} STR_CONFIG_SETTING_SOFT_LIMIT :Maximum oantal non-sticky finsters: {STRING} STR_CONFIG_SETTING_ZOOM_LVL_MIN :4x STR_CONFIG_SETTING_ZOOM_LVL_IN_2X :2x @@ -1260,25 +1513,62 @@ 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_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_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_INTERFACE :{ORANGE}Interface +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}konstruksje STR_CONFIG_SETTING_VEHICLES :{ORANGE}Auto's -STR_CONFIG_SETTING_STATIONS :{ORANGE}Stasjons -STR_CONFIG_SETTING_ECONOMY :{ORANGE}Ekonomy +STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Route +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 @@ -1375,8 +1665,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 @@ -1431,10 +1721,10 @@ STR_FACE_GLASSES :Bril: # Network server list STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}Multiplayer -STR_NETWORK_SERVER_LIST_CONNECTION :{BLACK}Ferbining: -STR_NETWORK_SERVER_LIST_CONNECTION_TOOLTIP :{BLACK}Kies tusken internetspul of yn Lokaal netwurk spul (LAN) -STR_NETWORK_SERVER_LIST_LAN :LAN -STR_NETWORK_SERVER_LIST_INTERNET :Ynternet +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 @@ -1469,7 +1759,8 @@ STR_NETWORK_START_SERVER_CAPTION :{WHITE}Start in STR_NETWORK_START_SERVER_NEW_GAME_NAME :{BLACK}Spulnamme: -STR_NETWORK_START_SERVER_LAN_INTERNET :LAN / Ynternet +STR_NETWORK_START_SERVER_UNADVERTISED :Nee +STR_NETWORK_START_SERVER_ADVERTISED :Ja STR_NETWORK_START_SERVER_SPECTATORS_SELECT :{BLACK}{NUM} taskôger{P "" s} STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK}Maksimaal tal taskôgers: @@ -1547,6 +1838,7 @@ STR_NETWORK_CLIENTLIST_GIVE_MONEY :Jouw jild STR_NETWORK_SERVER :Tsjinner +STR_NETWORK_TOOLBAR_LIST_SPECTATOR :{BLACK}Taskôger # Network set password @@ -1619,6 +1911,17 @@ STR_CONTENT_ERROR_COULD_NOT_EXTRACT :{WHITE}Kin it d # Transparency settings window +# 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 STR_STATION_BUILD_COVERAGE_ON :{BLACK}Oan @@ -1746,7 +2049,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 @@ -1819,6 +2122,8 @@ STR_LAND_AREA_INFORMATION_AIRPORT_NAME :{BLACK}Fleanfji STR_LAND_AREA_INFORMATION_AIRPORTTILE_NAME :{BLACK}Fleanfjild tile namme: {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 +2134,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 +2173,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 +2209,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 +2220,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-2012 It OpenTTD team +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2014 It OpenTTD team # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Spul Opslaan @@ -1893,9 +2230,13 @@ 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_DETAIL_CAPTION :{BLACK}Spul Details @@ -1903,30 +2244,86 @@ STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}Gjin ynf 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_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_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 @@ -1935,58 +2332,122 @@ STR_NEWGRF_SETTINGS_ADD_FILE_TOOLTIP :{BLACK}Foeg de 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_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_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 + # 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 :{BLACK}Utslach X: {NUM}, Utslach Y: {NUM} +STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Kies ôfbylding +STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Pak in ôfbylding fan alle lokaasjes op it skerm ôf 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 +2456,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} {P dei dagen} +STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}Stêd groeit eltse {ORANGE}{COMMA}{BLACK} {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,14 +2523,22 @@ 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_SPECTATOR_NONE :{ORANGE}- Net fan tapassing - +STR_GOALS_PROGRESS :{ORANGE}{STRING} +STR_GOALS_PROGRESS_COMPLETE :{GREEN}{STRING} # Goal question window @@ -2062,6 +2553,17 @@ STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}Tsjinste STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING} fan {STRING} nei {STRING}{YELLOW} ({COMPANY}{YELLOW}, oant {DATE_SHORT}) 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_STATION :{YELLOW}{STATION} {STATION_FEATURES} STR_STATION_LIST_WAYPOINT :{YELLOW}{WAYPOINT} @@ -2069,7 +2571,6 @@ 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) @@ -2077,7 +2578,29 @@ STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK} STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}Aksepteart: {WHITE}{CARGO_LIST} -STR_STATION_VIEW_CARGO_RATING :{WHITE}{STRING}: {YELLOW}{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 @@ -2174,6 +2697,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} @@ -2210,6 +2734,7 @@ STR_VEHICLE_LIST_SEND_AIRCRAFT_TO_HANGAR :Stjoer nei hang + # Build vehicle window @@ -2308,6 +2833,7 @@ STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} ji + # Extra buttons for train details windows STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY_TEXT :{BLACK}Totale kapasiteit fan dizze trein: @@ -2543,7 +3069,7 @@ STR_ERROR_ONLY_ONE_ALLOWED_PER_TOWN :{WHITE}.. mei m 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 @@ -2599,12 +3125,19 @@ STR_ERROR_SHIP_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... moat STR_ERROR_AIRCRAFT_MUST_BE_STOPPED_INSIDE_HANGAR :{WHITE}... moat stopt wêze yn hangar STR_ERROR_TRAIN_TOO_LONG :{WHITE}Trein te lang +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 @@ -2612,6 +3145,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 @@ -2621,9 +3155,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... @@ -2637,6 +3173,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... @@ -2650,6 +3189,7 @@ 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_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 @@ -2660,6 +3200,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 @@ -2672,7 +3213,11 @@ 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_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 @@ -2681,6 +3226,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 @@ -2725,7 +3271,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 @@ -2750,6 +3302,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 @@ -2765,6 +3318,13 @@ STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}Kin stop # Translatable comment for OpenTTD's desktop shortcut STR_DESKTOP_SHORTCUT_COMMENT :Spul basjeare op Transport Tycoon Deluxe +# Translatable descriptions in media/baseset/*.ob* files +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 STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1 :Heech kantoargebou @@ -2887,7 +3447,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) @@ -3094,10 +3654,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 @@ -3211,8 +3771,9 @@ 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_SPACE_STRING :{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} @@ -3236,9 +3797,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 45ab7187e..e9230fb41 100644 --- a/src/lang/unfinished/ido.txt +++ b/src/lang/unfinished/ido.txt @@ -240,7 +240,6 @@ STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}Areo: {N # These are used in buttons -STR_SORT_BY_CAPTION_POPULATION :{BLACK}Populo STR_SORT_BY_CAPTION_NAME :{BLACK}Nomo STR_SORT_BY_CAPTION_DATE :{BLACK}Dato # These are used in dropdowns @@ -253,6 +252,7 @@ STR_SORT_BY_MAX_SPEED :Maximo rapideso STR_SORT_BY_LENGTH :Longeso STR_SORT_BY_FACILITY :Stacion-tipo STR_SORT_BY_POWER :Povo +STR_SORT_BY_POPULATION :Populo # Tooltips for the main toolbar STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Pauzas ludo @@ -292,12 +292,12 @@ STR_FILE_MENU_SEPARATOR : STR_FILE_MENU_EXIT :Ekiras ############ range ends here -############ range for map menu starts +# map menu STR_MAP_MENU_MAP_OF_WORLD :Mapo di mondo STR_MAP_MENU_SIGN_LIST :Listo di signi -############ range for town menu starts, yet the town directory is shown in the map menu in the scenario editor -############ end of the 'Display map' dropdown -############ end of the 'Town' dropdown + +############ range for town menu starts +############ range ends here ############ range for subsidies menu starts ############ range ends here @@ -337,7 +337,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 @@ -376,7 +379,7 @@ STR_MUSIC_TITLE_NAME :{TINY_FONT}{DKG # Highscore window STR_HIGHSCORE_POSITION :{BIG_FONT}{BLACK}{COMMA}. -STR_HIGHSCORE_NAME :{BIG_FONT}{PRESIDENT_NAME}, {COMPANY} +STR_HIGHSCORE_NAME :{PRESIDENT_NAME}, {COMPANY} STR_HIGHSCORE_STATS :{BIG_FONT}'{STRING}' ({COMMA}) # Smallmap window @@ -441,9 +444,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 @@ -469,6 +470,8 @@ STR_GAME_OPTIONS_CAPTION :{WHITE}Ludo Sel ############ end of townname region +############ start of autosave dropdown +############ end of autosave dropdown @@ -478,7 +481,6 @@ STR_GAME_OPTIONS_RESOLUTION_OTHER :altra - # Custom currency window @@ -557,6 +559,13 @@ STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_ALL :omnube + + + + + + + # Config errors # Intro window @@ -660,6 +669,10 @@ STR_NETWORK_SERVER_MESSAGE :*** {1:STRING} # Transparency settings window +# Linkgraph legend window + +# Linkgraph legend window and linkgraph legend in smallmap + # Base for station construction window(s) STR_STATION_BUILD_ACCEPTS_CARGO :{BLACK}Aceptas: {GOLD}{CARGO_LIST} @@ -762,7 +775,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-2012 La kruo OpenTTD +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2014 La kruo OpenTTD # Save/load game/scenario STR_SAVELOAD_DETAIL_CAPTION :{BLACK}Ludo Detali @@ -789,6 +802,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} @@ -822,6 +837,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 @@ -851,19 +868,21 @@ STR_GOALS_TEXT :{ORANGE}{STRING # Subsidies window +# Story book window + # Station list window STR_STATION_LIST_STATION :{YELLOW}{STATION} {STATION_FEATURES} STR_STATION_LIST_WAYPOINT :{YELLOW}{WAYPOINT} # 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} -STR_STATION_VIEW_CARGO_RATING :{WHITE}{STRING}: {YELLOW}{STRING} ({COMMA}%) + + ############ range for rating starts ############ range for rating ends @@ -944,6 +963,7 @@ STR_GROUP_DEFAULT_AIRCRAFTS :Negrupigita aer + # Build vehicle window @@ -1025,6 +1045,7 @@ STR_VEHICLE_COMMAND_STARTED :{GREEN}Komencin + # Extra buttons for train details windows @@ -1218,6 +1239,7 @@ STR_ERROR_CAN_T_BUILD_OBJECT :{WHITE}Ne povas STR_ERROR_TOO_MANY_VEHICLES_IN_GAME :{WHITE}Tro multa vehili en la ludo + # Specific vehicle errors @@ -1231,6 +1253,8 @@ STR_ERROR_TOO_MANY_VEHICLES_IN_GAME :{WHITE}Tro mult # Translatable comment for OpenTTD's desktop shortcut +# Translatable descriptions in media/baseset/*.ob* files + ##id 0x2000 # Town building names @@ -1309,7 +1333,7 @@ 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_SPACE_STRING :{STRING} {STRING} +STR_JUST_STRING_STRING :{STRING}{STRING} STR_JUST_RAW_STRING :{STRING} # Slightly 'raw' stringcodes with colour or size @@ -1334,9 +1358,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 ac14f1826..2e89b7a8f 100644 --- a/src/lang/unfinished/macedonian.txt +++ b/src/lang/unfinished/macedonian.txt @@ -166,7 +166,7 @@ STR_ABBREV_ALL :{TINY_FONT}Се # 'Mode' of transport for cargoes STR_PASSENGERS :{COMMA} патници{P "" s} -STR_BAGS :{COMMA} вреќи +STR_BAGS :{COMMA} вреќи{P "" s} STR_TONS :{COMMA} тон{P "" s} STR_LITERS :{COMMA} литар{P "" s} STR_ITEMS :{COMMA} точка{P "" s} @@ -255,7 +255,6 @@ STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}Долж # These are used in buttons -STR_SORT_BY_CAPTION_POPULATION :{BLACK}Населеност STR_SORT_BY_CAPTION_NAME :{BLACK}Име STR_SORT_BY_CAPTION_DATE :{BLACK}Датум # These are used in dropdowns @@ -265,7 +264,7 @@ STR_SORT_BY_TYPE :Тип STR_SORT_BY_TRANSPORTED :Транспортирано STR_SORT_BY_NUMBER :Број STR_SORT_BY_PROFIT_LAST_YEAR :Минатогодишен профит -STR_SORT_BY_PROFIT_THIS_YEAR :Годинашен профит +STR_SORT_BY_PROFIT_THIS_YEAR :Профит оваа година STR_SORT_BY_AGE :Старост STR_SORT_BY_RELIABILITY :Веродостојност STR_SORT_BY_TOTAL_CAPACITY_PER_CARGOTYPE :Вкупен капацитет според типот на товарот @@ -276,9 +275,8 @@ STR_SORT_BY_LENGTH :Должина STR_SORT_BY_LIFE_TIME :Преостанат животен век STR_SORT_BY_TIMETABLE_DELAY :распоред задоцнување STR_SORT_BY_FACILITY :Вид на станица -STR_SORT_BY_WAITING :Вредност на товарот кој чека -STR_SORT_BY_RATING_MAX :Највисока товар рејтинг -STR_SORT_BY_RATING_MIN :Најниска товар рејтинг +STR_SORT_BY_RATING_MAX :Највисок рејтинг за товар +STR_SORT_BY_RATING_MIN :Најнизок рејтинг за товар STR_SORT_BY_ENGINE_ID :Идентификација на моторот (класично сортирање) STR_SORT_BY_COST :Цена STR_SORT_BY_POWER :Моќност @@ -288,6 +286,8 @@ 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}Паузирај ја играта @@ -349,7 +349,7 @@ STR_SCENEDIT_FILE_MENU_QUIT :Напушти STR_SETTINGS_MENU_GAME_OPTIONS :игра опции STR_SETTINGS_MENU_CONFIG_SETTINGS :напредни поставувања STR_SETTINGS_MENU_SCRIPT_SETTINGS :АИ / игри поставувања -STR_SETTINGS_MENU_NEWGRF_SETTINGS :НовGRF подесувања +STR_SETTINGS_MENU_NEWGRF_SETTINGS :NewGRF подесувања STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :транспарентност опции STR_SETTINGS_MENU_TOWN_NAMES_DISPLAYED :Место имиња прикажани STR_SETTINGS_MENU_STATION_NAMES_DISPLAYED :Станица имиња прикажани @@ -370,19 +370,18 @@ STR_FILE_MENU_SEPARATOR : STR_FILE_MENU_EXIT :Излез ############ range ends here -############ range for map menu starts +# map menu STR_MAP_MENU_MAP_OF_WORLD :Мапа на светот STR_MAP_MENU_EXTRA_VIEW_PORT :екстра прозорец STR_MAP_MENU_SIGN_LIST :Си листа -############ range for town menu starts, yet the town directory is shown in the map menu in the scenario editor + +############ range for town menu starts STR_TOWN_MENU_TOWN_DIRECTORY :Место -############ end of the 'Display map' dropdown STR_TOWN_MENU_FOUND_TOWN :Резултати градот -############ end of the 'Town' dropdown +############ range ends here ############ range for subsidies menu starts STR_SUBSIDIES_MENU_SUBSIDIES :субвенции -STR_SUBSIDIES_MENU_GOAL :Сега цели ############ range ends here ############ range for graph menu starts @@ -452,7 +451,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-ет @@ -468,22 +467,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 @@ -645,7 +662,7 @@ STR_HIGHSCORE_PERFORMANCE_TITLE_CAPITALIST :Капитал STR_HIGHSCORE_PERFORMANCE_TITLE_MAGNATE :Магнат STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL :Могул STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY :Тајкун на векот -STR_HIGHSCORE_NAME :{BIG_FONT}{PRESIDENT_NAME}, {COMPANY} +STR_HIGHSCORE_NAME :{PRESIDENT_NAME}, {COMPANY} STR_HIGHSCORE_STATS :{BIG_FONT}'{STRING}' ({COMMA}) STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{BLACK}{COMPANY} постигна статус на '{STRING}'! STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{WHITE}{PRESIDENT_NAME} од {COMPANY} постигна статус на'{STRING}'! @@ -697,7 +714,7 @@ STR_SMALLMAP_LEGENDA_INDUSTRIES :{TINY_FONT}{BLA STR_SMALLMAP_LEGENDA_DESERT :{TINY_FONT}{BLACK}Пустина STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLACK}Снег -STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Вклучи/исклучи имиња на градови на мапа +STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Вклучи/исклучи ги имињата на градовите на мапата STR_SMALLMAP_CENTER :{BLACK}Центар мали мапата на тековната позиција STR_SMALLMAP_INDUSTRY :{TINY_FONT}{STRING} ({NUM}) STR_SMALLMAP_COMPANY :{TINY_FONT}{COMPANY} @@ -753,9 +770,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} не може да се стигне до следната дестинација, бидејќи тоа е надвор од опсегот @@ -774,9 +789,6 @@ STR_GAME_OPTIONS_CAPTION :{WHITE}Опци ############ start of measuring units region -STR_GAME_OPTIONS_MEASURING_UNITS_IMPERIAL :Империјален -STR_GAME_OPTIONS_MEASURING_UNITS_METRIC :Метрички -STR_GAME_OPTIONS_MEASURING_UNITS_SI :SI ############ end of measuring units region @@ -785,8 +797,9 @@ STR_GAME_OPTIONS_MEASURING_UNITS_SI :SI ############ end of townname region +############ start of autosave dropdown STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Секој месец - +############ end of autosave dropdown @@ -819,6 +832,7 @@ STR_SEA_LEVEL_CUSTOM_PERCENTAGE :Прилаго # Advanced settings window +STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :Сите подесувања @@ -841,6 +855,9 @@ STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :Дебелин +STR_CONFIG_SETTING_SOUND_NEW_YEAR :Крај на година: {STRING} +STR_CONFIG_SETTING_SOUND_CONFIRM :Изградба: {STRING} +STR_CONFIG_SETTING_SOUND_VEHICLE :Возила: {STRING} @@ -886,6 +903,13 @@ STR_CONFIG_SETTING_ZOOM_LVL_OUT_8X :8x + + + + + + + # Config errors STR_CONFIG_ERROR :{WHITE}Грешка со конфигурациската датотека... STR_CONFIG_ERROR_ARRAY :{WHITE}... грешка во низа '{STRING}' @@ -900,6 +924,7 @@ STR_CONFIG_ERROR_INVALID_GRF_INCOMPATIBLE :некомпа STR_CONFIG_ERROR_INVALID_GRF_UNKNOWN :непознат STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_LEVEL :{WHITE}... ниво на компресија '{STRING}' не е валидна STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_ALGORITHM :{WHITE}... спаси играта формат '{STRING}' не е достапен. се врати на '{STRING}' +STR_CONFIG_ERROR_OUT_OF_MEMORY :{WHITE}Нема доволно меморија # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} @@ -1008,6 +1033,8 @@ STR_NETWORK_SERVER_MESSAGE_GAME_REASON_GAME_SCRIPT :игра скр ############ End of leave-in-this-order # Content downloading window +STR_CONTENT_SEARCH_EXTERNAL :{BLACK}Пребарај надворешни веб-страни +STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER_CAPTION :{WHITE}Вие заминувате од OpenTTD! STR_CONTENT_OPEN_URL :{BLACK}Посетете го веб- STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}Посетете го веб-сајт за оваа содржина @@ -1022,6 +1049,10 @@ STR_CONTENT_TYPE_GS_LIBRARY :ГШ библи # Transparency settings window +# Linkgraph legend window + +# Linkgraph legend window and linkgraph legend in smallmap + # Base for station construction window(s) STR_STATION_BUILD_ACCEPTS_CARGO :{BLACK}Прифаќа: {GOLD}{CARGO_LIST} STR_STATION_BUILD_SUPPLIES_CARGO :{BLACK}Залихи: {GOLD}{CARGO_LIST} @@ -1171,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-2012 OpenTTD тимот +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2014 OpenTTD тимот # Save/load game/scenario STR_SAVELOAD_LOAD_BUTTON :{BLACK}Оптоварување @@ -1205,14 +1236,21 @@ STR_NEWGRF_SETTINGS_SELECT_PRESET :{ORANGE}Изб STR_NEWGRF_FILTER_TITLE :{ORANGE}Филтер стринг: STR_NEWGRF_SETTINGS_ADD_FILE_TOOLTIP :{BLACK}Додај го избраниот НовGRF датотека за вашата конфигурација STR_NEWGRF_SETTINGS_RESCAN_FILES :{BLACK}повторно да го скенира додадени фајлови -STR_NEWGRF_SETTINGS_RESCAN_FILES_TOOLTIP :{BLACK}Ажурирање на листата на НоваGRF датотеки +STR_NEWGRF_SETTINGS_RESCAN_FILES_TOOLTIP :{BLACK}Ажурирање на листата на NewGRF датотеки +STR_NEWGRF_SETTINGS_REMOVE :{BLACK}Отстрани +STR_NEWGRF_SETTINGS_REMOVE_TOOLTIP :{BLACK}Отстрани го слектиранијот NewGRF фајл од листата +STR_NEWGRF_SETTINGS_FILE_TOOLTIP :{BLACK}Листа на NewGRF фајлови кој се инсталирани +STR_NEWGRF_SETTINGS_SET_PARAMETERS :{BLACK}Внеси параметри +STR_NEWGRF_SETTINGS_SHOW_PARAMETERS :{BLACK}Прикажи параметри STR_NEWGRF_SETTINGS_VERSION :{BLACK}Верзија за: {SILVER}{NUM} 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}Затвори @@ -1257,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 @@ -1282,7 +1322,6 @@ STR_LOCAL_AUTHORITY_COMPANY_RATING :{YELLOW}{COMPAN # Goal window -STR_GOALS_CAPTION :{WHITE}цели STR_GOALS_GLOBAL_TITLE :{BLACK}Глобал цели: STR_GOALS_TEXT :{ORANGE}{STRING} STR_GOALS_NONE :{ORANGE}- Никој - @@ -1296,6 +1335,8 @@ STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Клик # Subsidies window STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Кликни на сервис за да се центрира погледот на индустријата/градот +# Story book window + # Station list window STR_STATION_LIST_STATION :{YELLOW}{STATION} {STATION_FEATURES} STR_STATION_LIST_WAYPOINT :{YELLOW}{WAYPOINT} @@ -1305,14 +1346,14 @@ 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_ACCEPTS_CARGO :{BLACK}Прифаќа: {WHITE}{CARGO_LIST} -STR_STATION_VIEW_CARGO_RATING :{WHITE}{STRING}: {YELLOW}{STRING} ({COMMA}%) + + ############ range for rating starts ############ range for rating ends @@ -1361,7 +1402,6 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS :{WHITE}кана STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}станици: STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}станица плочки STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}аеродроми -STR_COMPANY_INFRASTRUCTURE_VIEW_COST :{WHITE}{1:CURRENCY_LONG}/годишно ({0:COMMA}) STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL :{WHITE}{CURRENCY_LONG}/годишно # Industry directory @@ -1406,6 +1446,7 @@ STR_VEHICLE_LIST_SEND_SHIP_TO_DEPOT :Испрати + # Build vehicle window STR_BUY_VEHICLE_TRAIN_ALL_CAPTION :Шински возила @@ -1509,6 +1550,10 @@ STR_VEHICLE_INFO_MAX_SPEED_RANGE :{BLACK}Макс +STR_SERVICE_INTERVAL_DROPDOWN_TOOLTIP :{BLACK}Смени тип на интервалот за сервисирање +STR_VEHICLE_DETAILS_DAYS :Дена +STR_VEHICLE_DETAILS_PERCENT :Процент + STR_QUERY_RENAME_AIRCRAFT_CAPTION :{WHITE}Име на авионот # Extra buttons for train details windows @@ -1768,6 +1813,7 @@ STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}Не м STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... возилото е уништено + # Specific vehicle errors @@ -1785,6 +1831,8 @@ STR_ERROR_AIRCRAFT_NOT_ENOUGH_RANGE :{WHITE}... во # Translatable comment for OpenTTD's desktop shortcut STR_DESKTOP_SHORTCUT_COMMENT :А симулација игра базирана на транспорт Тајкун Делукс +# Translatable descriptions in media/baseset/*.ob* files + ##id 0x2000 # Town building names @@ -1860,7 +1908,7 @@ 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_SPACE_STRING :{STRING} {STRING} +STR_JUST_STRING_STRING :{STRING}{STRING} STR_JUST_RAW_STRING :{STRING} # Slightly 'raw' stringcodes with colour or size @@ -1885,9 +1933,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 daf246af9..7f5a6d6a0 100644 --- a/src/lang/unfinished/maltese.txt +++ b/src/lang/unfinished/maltese.txt @@ -207,7 +207,6 @@ STR_MEASURE_LENGTH_HEIGHTDIFF :{BLACK}Tul: {NU # These are used in buttons -STR_SORT_BY_CAPTION_POPULATION :{BLACK}Popolazzjoni STR_SORT_BY_CAPTION_NAME :{BLACK}Isem STR_SORT_BY_CAPTION_DATE :{BLACK}Data # These are used in dropdowns @@ -228,7 +227,6 @@ STR_SORT_BY_LENGTH :Tul STR_SORT_BY_LIFE_TIME :Isservi sa STR_SORT_BY_TIMETABLE_DELAY :Dewmien fl-iskeda STR_SORT_BY_FACILITY :Tip ta' stazzjon -STR_SORT_BY_WAITING :Valur tal-Kargo STR_SORT_BY_RATING_MAX :L-Ogħla livell tal-Kargo STR_SORT_BY_RATING_MIN :L-Inqas livell tal-Kargo STR_SORT_BY_ENGINE_ID :ID tal-magna (issortjar klassiku) @@ -240,6 +238,7 @@ STR_SORT_BY_RUNNING_COST :Kemm Taħli STR_SORT_BY_POWER_VS_RUNNING_COST :Saħħa/Kemm Taħli STR_SORT_BY_CARGO_CAPACITY :Kapaċita ta' merkanzija STR_SORT_BY_RANGE :Kemm Twassal +STR_SORT_BY_POPULATION :Popolazzjoni # Tooltips for the main toolbar STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Waqfa temporanja mil-logħba @@ -266,10 +265,10 @@ STR_SCENEDIT_FILE_MENU_SEPARATOR : STR_FILE_MENU_SEPARATOR : ############ range ends here -############ range for map menu starts -############ range for town menu starts, yet the town directory is shown in the map menu in the scenario editor -############ end of the 'Display map' dropdown -############ end of the 'Town' dropdown +# map menu + +############ range for town menu starts +############ range ends here ############ range for subsidies menu starts ############ range ends here @@ -307,7 +306,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 @@ -346,7 +348,7 @@ STR_MUSIC_TITLE_NAME :{TINY_FONT}{DKG # Highscore window STR_HIGHSCORE_POSITION :{BIG_FONT}{BLACK}{COMMA}. -STR_HIGHSCORE_NAME :{BIG_FONT}{PRESIDENT_NAME}, {COMPANY} +STR_HIGHSCORE_NAME :{PRESIDENT_NAME}, {COMPANY} STR_HIGHSCORE_STATS :{BIG_FONT}'{STRING}' ({COMMA}) # Smallmap window @@ -375,9 +377,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 @@ -403,6 +403,8 @@ STR_NEWS_VEHICLE_IS_LOST :{WHITE}{VEHICLE ############ end of townname region +############ start of autosave dropdown +############ end of autosave dropdown @@ -412,7 +414,6 @@ STR_GAME_OPTIONS_RESOLUTION_OTHER :oħrajn - # Custom currency window @@ -484,6 +485,13 @@ STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Ippermetti l-uz + + + + + + + @@ -588,6 +596,10 @@ STR_NETWORK_SERVER_MESSAGE :*** {1:STRING} # Transparency settings window +# Linkgraph legend window + +# Linkgraph legend window and linkgraph legend in smallmap + # Base for station construction window(s) # Join station window @@ -698,6 +710,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 @@ -723,6 +737,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 @@ -752,6 +768,8 @@ STR_GOALS_TEXT :{ORANGE}{STRING # Subsidies window +# Story book window + # Station list window STR_STATION_LIST_STATION :{YELLOW}{STATION} {STATION_FEATURES} STR_STATION_LIST_WAYPOINT :{YELLOW}{WAYPOINT} @@ -762,7 +780,8 @@ STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_L -STR_STATION_VIEW_CARGO_RATING :{WHITE}{STRING}: {YELLOW}{STRING} ({COMMA}%) + + ############ range for rating starts ############ range for rating ends @@ -816,6 +835,7 @@ STR_FINANCES_POSITIVE_INCOME :{BLACK}+{CURREN + # Build vehicle window @@ -888,6 +908,7 @@ STR_VEHICLE_VIEW_CAPTION :{WHITE}{VEHICLE + # Extra buttons for train details windows @@ -1084,6 +1105,7 @@ STR_ERROR_AIRCRAFT_NOT_AVAILABLE :{WHITE}Dan l-aj STR_ERROR_TOO_MANY_VEHICLES_IN_GAME :{WHITE}Hemm wisq vetturi fil-logħba + # Specific vehicle errors STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Ma tistax tbiddel id-direzzjoni tal-ferrovija... @@ -1107,6 +1129,8 @@ STR_ERROR_CAN_T_SKIP_ORDER :{WHITE}Ma tista # Translatable comment for OpenTTD's desktop shortcut STR_DESKTOP_SHORTCUT_COMMENT :Logħba simulazzjoni bbażata fuq Transport Tycoon Deluxe +# Translatable descriptions in media/baseset/*.ob* files + ##id 0x2000 # Town building names STR_TOWN_BUILDING_NAME_FOUNTAIN_1 :Funtana @@ -1193,7 +1217,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) @@ -1250,7 +1274,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 @@ -1351,7 +1375,7 @@ 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_SPACE_STRING :{STRING} {STRING} +STR_JUST_STRING_STRING :{STRING}{STRING} STR_JUST_RAW_STRING :{STRING} # Slightly 'raw' stringcodes with colour or size @@ -1376,9 +1400,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 cadec27e2..a25f8a3e3 100644 --- a/src/lang/unfinished/marathi.txt +++ b/src/lang/unfinished/marathi.txt @@ -192,31 +192,54 @@ 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 नं इमारती किंवा किंमतीचा अंदाज दिसणं चालू/बंद होतं. # Query window +STR_BUTTON_DEFAULT :{BLACK}स्थिर STR_BUTTON_CANCEL :{BLACK}रद्द करा STR_BUTTON_OK :{BLACK}ठीक आहे @@ -232,13 +255,13 @@ STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}क् # These are used in buttons -STR_SORT_BY_CAPTION_POPULATION :{BLACK}लोकसंख्या STR_SORT_BY_CAPTION_NAME :{BLACK}नाव STR_SORT_BY_CAPTION_DATE :{BLACK}दिनांक # These are used in dropdowns 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 :चालू वर्षीचा नफा @@ -249,23 +272,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 +317,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,52 +326,76 @@ 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_CONFIG_SETTINGS :प्रगत सेटिंग +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 :बाहेर पडा ############ range ends here -############ range for map menu starts +# map menu STR_MAP_MENU_MAP_OF_WORLD :वैश्विक नकाशा STR_MAP_MENU_SIGN_LIST :चिन्हांची यादी -############ range for town menu starts, yet the town directory is shown in the map menu in the scenario editor + +############ range for town menu starts STR_TOWN_MENU_TOWN_DIRECTORY :शहरांची यादी -############ end of the 'Display map' dropdown STR_TOWN_MENU_FOUND_TOWN :सापडलेलं शहर -############ end of the 'Town' dropdown +############ 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 +428,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,41 +523,122 @@ 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 :{BIG_FONT}{PRESIDENT_NAME}, {COMPANY} +STR_HIGHSCORE_NAME :{PRESIDENT_NAME}, {COMPANY} STR_HIGHSCORE_STATS :{BIG_FONT}'{STRING}' ({COMMA}) # Smallmap window @@ -463,9 +676,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} खूप जुनी होत आहे @@ -535,10 +746,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}भाषा @@ -549,7 +762,6 @@ STR_GAME_OPTIONS_RESOLUTION_OTHER :अन्य - # Custom currency window @@ -615,6 +827,13 @@ STR_CONFIG_SETTING_STATUSBAR_POS :स्टेट + + + + + + + # Config errors # Intro window @@ -781,6 +1000,10 @@ STR_NETWORK_SERVER_MESSAGE :*** {1:STRING} # Transparency settings window +# Linkgraph legend window + +# Linkgraph legend window and linkgraph legend in smallmap + # Base for station construction window(s) # Join station window @@ -915,6 +1138,8 @@ STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / +# NewGRF save preset window + # NewGRF parameters window STR_NEWGRF_PARAMETERS_SETTING :{STRING}: {ORANGE}{STRING} @@ -941,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 @@ -973,6 +1200,8 @@ STR_GOALS_TEXT :{ORANGE}{STRING # Subsidies window +# Story book window + # Station list window STR_STATION_LIST_STATION :{YELLOW}{STATION} {STATION_FEATURES} STR_STATION_LIST_WAYPOINT :{YELLOW}{WAYPOINT} @@ -983,7 +1212,8 @@ STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_L -STR_STATION_VIEW_CARGO_RATING :{WHITE}{STRING}: {YELLOW}{STRING} ({COMMA}%) + + ############ range for rating starts STR_CARGO_RATING_APPALLING :धक्कादायक @@ -1075,6 +1305,7 @@ STR_GROUP_ALL_AIRCRAFTS :सर्व + STR_GROUP_REMOVE_ALL_VEHICLES :सगळे वाहने काढा @@ -1161,6 +1392,7 @@ STR_VEHICLE_VIEW_CAPTION :{WHITE}{VEHICLE + # Extra buttons for train details windows @@ -1347,6 +1579,7 @@ STR_ERROR_BRIDGE_THROUGH_MAP_BORDER :{WHITE}पू + # Specific vehicle errors @@ -1360,6 +1593,8 @@ STR_ERROR_BRIDGE_THROUGH_MAP_BORDER :{WHITE}पू # Translatable comment for OpenTTD's desktop shortcut +# Translatable descriptions in media/baseset/*.ob* files + ##id 0x2000 # Town building names STR_TOWN_BUILDING_NAME_HOTEL_1 :हॉटेल @@ -1563,7 +1798,7 @@ 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_SPACE_STRING :{STRING} {STRING} +STR_JUST_STRING_STRING :{STRING}{STRING} STR_JUST_RAW_STRING :{STRING} # Slightly 'raw' stringcodes with colour or size @@ -1588,9 +1823,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 c5ee1eca2..56e37cfae 100644 --- a/src/lang/unfinished/persian.txt +++ b/src/lang/unfinished/persian.txt @@ -217,6 +217,7 @@ STR_UNITS_HEIGHT_IMPERIAL :{COMMA} پا STR_UNITS_HEIGHT_SI :{COMMA} متر # Common window strings +STR_LIST_FILTER_TITLE :{BLACK}متن فیلتر: STR_LIST_FILTER_OSKTITLE :{BLACK}وارد کردن رشته پایش STR_LIST_FILTER_TOOLTIP :{BLACK}وارد کردن واژه کلیدی برای پایش لیست @@ -231,7 +232,8 @@ 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}این پنجره را قفل کن که هنگامی که دکمه "همه پنجره ها را ببند" فشرده شد،این پنجره باز بماند. با فشردن دکمه های ctl+click این حالت بعنوان پیشفرض ذخیره میشود. STR_TOOLTIP_RESIZE :{BLACK}کلیک کنید و بکشید تا اندازه پنجره تغییر کند STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}تغییر دادن اندازه ی صفحه STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}نوار اسکرول - لیست را بالا و پایین می کند @@ -255,7 +257,6 @@ STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}مساح # These are used in buttons -STR_SORT_BY_CAPTION_POPULATION :{BLACK}جمعیت STR_SORT_BY_CAPTION_NAME :{BLACK}نام STR_SORT_BY_CAPTION_DATE :{BLACK}تاریخ # These are used in dropdowns @@ -276,7 +277,6 @@ STR_SORT_BY_LENGTH :طول STR_SORT_BY_LIFE_TIME :عمر مفید باقی مانده STR_SORT_BY_TIMETABLE_DELAY :تاخیر جدول زمانی STR_SORT_BY_FACILITY :نوع ایستگاه -STR_SORT_BY_WAITING :ارزش محموله ی درانتظار STR_SORT_BY_RATING_MAX :حداکثر نرخ محموله STR_SORT_BY_RATING_MIN :کمترین نرخ محموله STR_SORT_BY_ENGINE_ID :شناسه موتور @@ -285,9 +285,11 @@ 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}متوقف کردن بازی @@ -300,6 +302,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}ساخت صنایع جدید یا لیست همه صنایع موجود @@ -370,19 +374,19 @@ STR_FILE_MENU_SEPARATOR : STR_FILE_MENU_EXIT :خروج ############ range ends here -############ range for map menu starts +# 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, yet the town directory is shown in the map menu in the scenario editor + +############ range for town menu starts STR_TOWN_MENU_TOWN_DIRECTORY :لیست شهر ها -############ end of the 'Display map' dropdown STR_TOWN_MENU_FOUND_TOWN :ساخت شهر -############ end of the 'Town' dropdown +############ range ends here ############ range for subsidies menu starts STR_SUBSIDIES_MENU_SUBSIDIES :یارانه ها -STR_SUBSIDIES_MENU_GOAL :اهداف فعلی ############ range ends here ############ range for graph menu starts @@ -397,10 +401,12 @@ STR_GRAPH_MENU_CARGO_PAYMENT_RATES :نمودار ق ############ 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 @@ -451,9 +457,10 @@ STR_ABOUT_MENU_GIANT_SCREENSHOT :تصویر از STR_ABOUT_MENU_ABOUT_OPENTTD :'OpenTTD' درباره 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 @@ -469,22 +476,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 @@ -646,7 +671,7 @@ STR_HIGHSCORE_PERFORMANCE_TITLE_CAPITALIST :سرمایه د STR_HIGHSCORE_PERFORMANCE_TITLE_MAGNATE :نجیب زاده STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL :بزرگ و با نفوذ STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY :سرمایه دار مهم قرن -STR_HIGHSCORE_NAME :{BIG_FONT}{PRESIDENT_NAME}, {COMPANY} +STR_HIGHSCORE_NAME :{PRESIDENT_NAME}, {COMPANY} STR_HIGHSCORE_STATS :{BIG_FONT}'{STRING}' ({COMMA}) STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{BLACK}{COMPANY} به وضعیت'{STRING}' دست یافت! STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{WHITE}{PRESIDENT_NAME} از {COMPANY} به وضعیت '{STRING}' دست یافت! @@ -657,17 +682,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+Click همه صنایع را پنهان می کند به غیر از کارخانه انتخاب شده. برای فعال کردن بقیه دوباره .Ctrl+Click کنید STR_SMALLMAP_TOOLTIP_COMPANY_SELECTION :{BLACK}Click برای مشاهده ویژگی های یک شرکت روی آن کلیک کنید.Ctrl+Click همه شرکت ها را مخفی می کند به جر شرکت انتخاب شد.با Ctrl+Click.دوباره همه شرکت ها فعال می شوند +STR_SMALLMAP_TOOLTIP_CARGO_SELECTION :{BLACK}برروی یک بار کلیک کنید تا مشخصات آن نمایش داده شود. Ctrl+Click برای غیرفعال کردن تمام بارها بجز بار انتخابی. Ctrl+Click دوباره برروی آن بار برای فعال کردن تمام بارها STR_SMALLMAP_LEGENDA_ROADS :{TINY_FONT}{BLACK}جاده ها STR_SMALLMAP_LEGENDA_RAILROADS :{TINY_FONT}{BLACK}راه آهن @@ -701,6 +729,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}غیر فعال سازی همه @@ -711,6 +740,8 @@ STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES :{BLACK}همه STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}نمایش/عدم نمایش heightmap 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} اخرین پیغام یا گزارش را نشان بده @@ -787,13 +818,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,18 +897,16 @@ STR_GAME_OPTIONS_CURRENCY_TRY :لیره ترک STR_GAME_OPTIONS_CURRENCY_SKK :کرونای اسلواکی (SKK) STR_GAME_OPTIONS_CURRENCY_BRL :رئال برزیل (BRL) STR_GAME_OPTIONS_CURRENCY_EEK :کرونی استونی (EEK) +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 -STR_GAME_OPTIONS_MEASURING_UNITS_FRAME :{BLACK}واحد های اندازه گیری -STR_GAME_OPTIONS_MEASURING_UNITS_DROPDOWN_TOOLTIP :{BLACK}انتخاب واحدهای اندازه گیری ############ start of measuring units region -STR_GAME_OPTIONS_MEASURING_UNITS_IMPERIAL :شاهنشاهی -STR_GAME_OPTIONS_MEASURING_UNITS_METRIC :متری -STR_GAME_OPTIONS_MEASURING_UNITS_SI :SI ############ end of measuring units region STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK} خودروی جاده ای @@ -917,11 +944,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}زبان واسط کاربری را برای استفاده انتخاب کنید @@ -933,9 +962,6 @@ 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}بسته گرافیک پایه را انتخاب کنید STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} فایل وجود ندارد یا خراب است @@ -1037,10 +1063,30 @@ STR_WARNING_NO_SUITABLE_AI :{WHITE}هیچ # Advanced settings window STR_CONFIG_SETTING_CAPTION :{WHITE}تنظیمات پیشرفته +STR_CONFIG_SETTING_FILTER_TITLE :{BLACK}متن فیلتر: +STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}نمایش همه +STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}جمع کردن همه 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_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_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 :روشن @@ -1058,33 +1104,45 @@ STR_CONFIG_SETTING_HORIZONTAL_POS_LEFT :چپ STR_CONFIG_SETTING_HORIZONTAL_POS_CENTER :مرکز STR_CONFIG_SETTING_HORIZONTAL_POS_RIGHT :راست +STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN :حداکثر اعتبار اولیه: {STRING} +STR_CONFIG_SETTING_INTEREST_RATE :نرخ سود: {STRING} +STR_CONFIG_SETTING_RUNNING_COSTS :هزینه نگهداری: {STRING} +STR_CONFIG_SETTING_CONSTRUCTION_SPEED :سرعت ساخت و ساز: {STRING} +STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS :خرابی وسیله نقلیه: {STRING} +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} STR_CONFIG_SETTING_EXTRADYNAMITE :اجازه برای داشتن قابلیت بیشتر ازبین بردن راه ها،پلها و تونل های شهر: {STRING} +STR_CONFIG_SETTING_TRAIN_LENGTH :حداکثر طول قطارها: {STRING} +STR_CONFIG_SETTING_TILE_LENGTH :{COMMA} قطعه{P 0 "" s} STR_CONFIG_SETTING_SMOKE_AMOUNT :مقدار دود/جرقه های خودرو : {STRING} STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL :روش سرعت گرفتن قطار: {STRING} STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL :روش سرعت گرفتن خودرو: {STRING} +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} 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_INDUSTRY_PLATFORM :زمین صاف اطراف کارخانه ها: {STRING} STR_CONFIG_SETTING_MULTIPINDTOWN :قابلیت به وجود آمدین جندین صنایع شبیه به هم به ازای هر شهر: {STRING} +STR_CONFIG_SETTING_SIGNALSIDE :نمایش نشانگرها: {STRING} +STR_CONFIG_SETTING_SIGNALSIDE_LEFT :به سمت چپ +STR_CONFIG_SETTING_SIGNALSIDE_DRIVING_SIDE :به سمت جهت رانندگی +STR_CONFIG_SETTING_SIGNALSIDE_RIGHT :به سمت راست STR_CONFIG_SETTING_SHOWFINANCES :نمایش پنجره مالی در پایان سال: {STRING} STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :برنامه های حرکت به طور پیش فرض «بدون توقف» باشند: {STRING} STR_CONFIG_SETTING_STOP_LOCATION :توقف قطار ها به طور پیش فرض در: {STRING} ایستگاه 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,12 +1153,10 @@ STR_CONFIG_SETTING_ALLOW_GIVE_MONEY :قابلیت ف STR_CONFIG_SETTING_FREIGHT_TRAINS :مضرب برای بار قطار تا حس قطار سنگین به وجود آید: {STRING} STR_CONFIG_SETTING_PLANE_CRASHES :تعداد سوانح هوایی: {STRING} STR_CONFIG_SETTING_PLANE_CRASHES_NONE :هیچکدام -STR_CONFIG_SETTING_PLANE_CRASHES_REDUCED :کم +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} @@ -1123,21 +1179,23 @@ STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :اصلی STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :پیدایش زمین STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :تمام پالایشگاه ها در لبه های تقشه ساخته می شوند که ساحل جزیره است STR_CONFIG_SETTING_SNOWLINE_HEIGHT :ارتفاع خط برف: {STRING} -STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :پستی و بلندی های شدید (فقط در حالت «پیدایش زمین») : {STRING} +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :پستی و بلندی های زمین: {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_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}یک یا چند قطعه در لبه شمالی که آب نیست @@ -1150,11 +1208,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 :جابجا کردن نقشه @@ -1168,22 +1227,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} @@ -1254,7 +1313,7 @@ STR_CONFIG_SETTING_CYCLE_SIGNAL_ALL :همه STR_CONFIG_SETTING_TOWN_LAYOUT :نمایه خیابان‌های شهر جدید: {STRING} STR_CONFIG_SETTING_TOWN_LAYOUT_DEFAULT :اصلی -STR_CONFIG_SETTING_TOWN_LAYOUT_BETTER_ROADS :راه‌های بهتر +STR_CONFIG_SETTING_TOWN_LAYOUT_BETTER_ROADS :مسیرهای بهتر STR_CONFIG_SETTING_TOWN_LAYOUT_2X2_GRID :قطعه ۲x۲ STR_CONFIG_SETTING_TOWN_LAYOUT_3X3_GRID :قطعه ۳x۳ STR_CONFIG_SETTING_TOWN_LAYOUT_RANDOM :اتفاقی @@ -1263,7 +1322,7 @@ STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :امکان سا STR_CONFIG_SETTING_NOISE_LEVEL :قابلیت کنترل سطح صدای فرودگاه‌ها توسط شهر: {STRING} STR_CONFIG_SETTING_TOWN_FOUNDING :ساخت شهر در بازی: {STRING} STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :ممنوع -STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :آزاد +STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :مجاز STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :آزاد و با نمایه دلخواه STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT :محل قرارگرفتن درخت‌ها: {STRING} @@ -1289,25 +1348,49 @@ 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_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_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 @@ -1508,10 +1591,9 @@ STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}تغیی # Network server list STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}چندنفره -STR_NETWORK_SERVER_LIST_CONNECTION :{BLACK}اتصال: -STR_NETWORK_SERVER_LIST_CONNECTION_TOOLTIP :{BLACK}بین اینترنت و شبکه محلی داخلی یکی را انتخاب نمایید -STR_NETWORK_SERVER_LIST_LAN :شبکه محلی -STR_NETWORK_SERVER_LIST_INTERNET :اینترنت +STR_NETWORK_SERVER_LIST_ADVERTISED :{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}این نامی است که بقیه بازیگران شما را به آن نام می شناسند @@ -1570,8 +1652,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_LAN_INTERNET :شبکه محلی / اینترنت -STR_NETWORK_START_SERVER_INTERNET_ADVERTISE :اینترنت (آگهی) +STR_NETWORK_START_SERVER_UNADVERTISED :خیر +STR_NETWORK_START_SERVER_ADVERTISED :بله STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} سرویس گیرنده STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}بیشترین تعداد سرویس گیرنده: STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}بیشترین تعداد سرویس گیرنده را مشخص کنید.لازم نیست دقیقا به تعداد نفرات باشد @@ -1692,6 +1774,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}رمز وارد شده را به خاطر نسپار @@ -1878,6 +1961,17 @@ STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}فعال 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}نور ناحیه ی اطراف ایستگاه STR_STATION_BUILD_COVERAGE_OFF :{BLACK}خاموش @@ -1944,9 +2038,9 @@ 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_ENTRY_TOOLTIP :{BLACK}نشانگر ورود (semaphore){}سبز است تا زمانی که یک یا چند خروجی سبز از آن بخش از ریل موجود باشد.در غیر اینصورت قرمز نشان می دهد +STR_BUILD_SIGNAL_SEMAPHORE_EXIT_TOOLTIP :{BLACK}نشانگر خروج (semaphore){}مانند نشانگر توقف عمل می کند ولی برای درست کار کردن پیش نشانگرهای ورودی و چندگانه لازم است +STR_BUILD_SIGNAL_SEMAPHORE_COMBO_TOOLTIP :{BLACK}نشانگر چندگانه (semaphore){}مانند هر دو نشانگر ورودی و نشانگر خروجی عمل می کند. با آن می توانید درختی از پیش نشانگر ها بسازید STR_BUILD_SIGNAL_SEMAPHORE_PBS_TOOLTIP :{BLACK}نشانگر مسیر (پرچم){}یک نشانگر مسیر اجازه می دهد که بیش از یک قطار به یک قطعه ریل در یک زمان وارد گردد، البته اگر قطار مسیری برای رسیدن به محل توقف امن داشته باشد. نشانگر های مسیر قابل رد شدن از پشت هستند STR_BUILD_SIGNAL_SEMAPHORE_PBS_OWAY_TOOLTIP :{BLACK}نشانگر مسیر یکطرفه (پرچم){}یک نشانگر مسیر یکطرفه اجازه می دهد که بیش از یک قطار به یک قطعه نشانگر در یک زمان وارد گردد،البته اگر قطار مسیری برای رسیدن به محل توقف امن داشته باشد. نشانگر های مسیر قابل رد شدن از پشت هستند STR_BUILD_SIGNAL_ELECTRIC_NORM_TOOLTIP :{BLACK}سیگنال توقف (برقی){}این ساده ترین نوع سیگنال است، سبب می شود تنها یک قطار در یک قطعه در یک زمان اجازه عبور داشته باشد. @@ -1979,15 +2073,15 @@ 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}بخش ساخت جاده +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_SECTION :{BLACK}بخش ساخت جاده. دکمه ctrlعمل ساخت جاده را به حذف تغییر میدهد.دکمه shift به هزینه تقریبی ساخت تغییر میدهد STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_SECTION :{BLACK}بخش ساخت ریل تراموا.گرفتن دکمه کنترل برای حذف ریل تراموا. گرفتن دکمه شیفت برآورد هزینه را نمایش می دهد STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOROAD :{BLACK}بخش ساخت جاده با روش جاده خودکار. گرفتن دکمه کنترل برای حذف جاده. گرفتن دکمه شیفت برآورد هزینه را نمایش می دهد STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOTRAM :{BLACK}بخش ساخت ریل تراموا با روش ریل خودکار.گرفتن دکمه کنترل برای حذف ریل. گرفتن دکمه شیفت برآورد هزینه را نمایش می دهد 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}ساخت ایستگاه اتوبوس +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_BUS_STATION :{BLACK}ساخت ایستگاه اتوبوس. دکمه ctrl اجازه ساخت ایستگاه پراکنده را میدهد و دکمه shift هزینه تقریبی ساخت را نمایش میدهد STR_ROAD_TOOLBAR_TOOLTIP_BUILD_PASSENGER_TRAM_STATION :{BLACK}ساخت ایستگاه تراموای مسافربری.گرفتن دکمه کنترل ایستگاه ها را به هم می پیوندد. گرفتن دکمه شیفت برآورد هزینه را نمایش می دهد -STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRUCK_LOADING_BAY :{BLACK}ساخت ایستگاه بارگیری/تخلیه بار کامیون +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRUCK_LOADING_BAY :{BLACK}ساخت ایستگاه بارگیری/تخلیه بار کامیون. دکمه ctrl اجازه ساخت ایستگاه پراکنده را میدهد و دکمه shift هزینه تقریبی ساخت را نمایش میدهد. STR_ROAD_TOOLBAR_TOOLTIP_BUILD_CARGO_TRAM_STATION :{BLACK}ساخت ایستگاه تراموای باری.گرفتن دکمه کنترل ایستگاه ها را به هم می پیوندد. گرفتن دکمه شیفت برآورد هزینه را نمایش می دهد STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_ONE_WAY_ROAD :{BLACK}فعال/غیر فعال کردن مسیر یکطرفه STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_BRIDGE :{BLACK}ساخت پل ماشین رو.دکمه Shift برآورد قیمت را نشان می دهد. @@ -2019,7 +2113,7 @@ 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}ساخت بندر +STR_WATERWAYS_TOOLBAR_BUILD_DOCK_TOOLTIP :{BLACK}ساخت بندر. دکمه ctrl اجازه ساخت ایستگاه پراکنده را میدهد و دکمه shift هزینه تقریبی ساخت را نمایش میدهد. STR_WATERWAYS_TOOLBAR_BUOY_TOOLTIP :{BLACK}یک شناور به عنوان نمایانگر راه قرار بده.دکمه Shift برآورد قیمت را نشان می دهد STR_WATERWAYS_TOOLBAR_BUILD_AQUEDUCT_TOOLTIP :{BLACK}ساخت مجرای آب.دکمه شیفت برآورد قیمت را نشان می دهد STR_WATERWAYS_TOOLBAR_CREATE_LAKE_TOOLTIP :{BLACK}محدوده آبی تعریف کنید.{}ساخت آبراه، تا زمانی که دکمه کنترل گرفته شده در سطح دریا، به جای آن محیط اطراف را پر می کند. @@ -2034,7 +2128,7 @@ STR_STATION_BUILD_DOCK_CAPTION :{WHITE}اسکل # Airport toolbar STR_TOOLBAR_AIRCRAFT_CAPTION :{WHITE}فرودگاه ها -STR_TOOLBAR_AIRCRAFT_BUILD_AIRPORT_TOOLTIP :{BLACK}ساخت فرودگاه +STR_TOOLBAR_AIRCRAFT_BUILD_AIRPORT_TOOLTIP :{BLACK}ساخت فرودگاه دکمه ctrl اجازه ساخت ایستگاه پراکنده را میدهد و دکمه shift هزینه تقریبی ساخت را نمایش میدهد # Airport construction window STR_STATION_BUILD_AIRPORT_CAPTION :{WHITE}انتخاب فرودگاه @@ -2078,11 +2172,11 @@ 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_TREES_BUTTON :{BLACK} درخت های تصادفی -STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK} به شکل تصافی در تمام نقشه درخت بکار +STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK} به شکل تصافی در تمام محل درخت بکار # Land generation window (SE) STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}طراحی اتوماتیک سرزمین @@ -2101,7 +2195,7 @@ 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+click تنها هزینه تقریبی ساخت را نمایش میدهد STR_FOUND_TOWN_RANDOM_TOWN_BUTTON :{BLACK}شهر تصادفی STR_FOUND_TOWN_RANDOM_TOWN_TOOLTIP :{BLACK}شهری در مکانی تصادفی بساز STR_FOUND_TOWN_MANY_RANDOM_TOWNS :{BLACK}تعدادی شهر با محل و جمعیت تصادفی @@ -2176,6 +2270,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 :صخره @@ -2272,7 +2367,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-2012 The OpenTTD team +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2014 The OpenTTD team # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}ذخیره ی بازی @@ -2308,10 +2403,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}نوع پستی/بلندی: @@ -2338,7 +2429,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}تغییر سال آغاز @@ -2393,7 +2483,9 @@ 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_FILE_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}ثبت پارامترها STR_NEWGRF_SETTINGS_SHOW_PARAMETERS :{BLACK}نمایش پارامترها @@ -2417,6 +2509,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}بسته @@ -2509,6 +2611,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. زمان انجام، به تعداد فایلها بسته است... @@ -2590,10 +2695,14 @@ STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT :{YELLOW}خری STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}رشوه به فرماندار محلی برای افزایش رده، با احتمال جریمه زیاد در صورت گیر افتادن.{}قیمت: {CURRENCY_LONG} # Goal window -STR_GOALS_CAPTION :{WHITE}هدف ها +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+Click یک نمای جدید از محل صنایع/شهر قطعه باز می کند @@ -2629,8 +2738,12 @@ STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}سروی STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING} از {STRING} به {STRING}{YELLOW} ({COMPANY}{YELLOW}, تا {DATE_SHORT}) 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}نام ایستگاه ها- بر روی نام کلیک کنید تا مرکز صفحه را بر روی ایستگاه قرار دهد +STR_STATION_LIST_TOOLTIP :{BLACK}نام ایستگاه ها- بر روی نام کلیک کنید تا مرکز صفحه را بر روی ایستگاه قرار دهد. Ctrl+Click برای گشودن یک پنجره نمای جدا از ایستگاه STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}برای انتخاب بیش از یک آیتم، کنترل را بگیرید STR_STATION_LIST_CAPTION :{WHITE}{COMPANY} - {COMMA} ایستگاه{P "" ها} STR_STATION_LIST_STATION :{YELLOW}{STATION} {STATION_FEATURES} @@ -2642,7 +2755,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}) @@ -2653,8 +2765,21 @@ STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}قبول STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}رده بندی STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}نشان دادن رتبه بندی ایستگاه -STR_STATION_VIEW_CARGO_RATINGS_TITLE :{BLACK}رده بندی محلی درباره ی وضعیت حمل و نقل -STR_STATION_VIEW_CARGO_RATING :{WHITE}{STRING}: {YELLOW}{STRING} ({COMMA}%) +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_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} بدون توقف + ############ range for rating starts STR_CARGO_RATING_APPALLING :ترسناک @@ -2667,7 +2792,7 @@ STR_CARGO_RATING_EXCELLENT :عالی STR_CARGO_RATING_OUTSTANDING :بسیار عالی ############ range for rating ends -STR_STATION_VIEW_CENTER_TOOLTIP :{BLACK}مرکز تصویر اصلی را روی محل ایستگاه قرار بده +STR_STATION_VIEW_CENTER_TOOLTIP :{BLACK}مرکز تصویر اصلی را روی محل ایستگاه قرار بده. Ctrl+Click برای گشودن یک پنجره نما از ایستگاه STR_STATION_VIEW_RENAME_TOOLTIP :{BLACK}تغییر نام ایستگاه STR_STATION_VIEW_SCHEDULED_TRAINS_TOOLTIP :{BLACK}همه قطار هایی که در ایستگاه هایشان دارای زمانبندی می باشند را نشان می دهد. @@ -2725,6 +2850,7 @@ STR_COMPANY_VIEW_BUY_SHARE_TOOLTIP :{BLACK}25% سه STR_COMPANY_VIEW_SELL_SHARE_TOOLTIP :{BLACK}25% سهام این شرکت را بفروش.دکمه Shift+Clickبرآورد قیمت را بدون فروش سهام نمایش می دهد +STR_BUY_COMPANY_MESSAGE :{WHITE}ما به دنبال یک شرکت حمل و نقل هستیم که مایل باشد مالکیت شرکت ما را بصورت یکجا در اختیار بگیرد.{}{}آیا شما مایل به خرید شرکت {COMPANY} به مبلغ {CURRENCY_LONG} هستید؟ # Company infrastructure window STR_COMPANY_INFRASTRUCTURE_VIEW_CAPTION :{WHITE}زیرساخت {COMPANY} @@ -2738,16 +2864,20 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS :{WHITE}کانا STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}ایستگاه ها: STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}قطعه های ایستگاه STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}فرودگاه ها -STR_COMPANY_INFRASTRUCTURE_VIEW_COST :{WHITE}{1:CURRENCY_LONG}/سال ({0:COMMA}) STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL :{WHITE}{CURRENCY_LONG}/سال # Industry directory +STR_INDUSTRY_DIRECTORY_CAPTION :کارخانه ها +STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}- هیچ - +STR_INDUSTRY_DIRECTORY_ITEM_TWO :{ORANGE}{INDUSTRY}{BLACK} ({CARGO_LONG}{STRING}/{CARGO_LONG}{STRING}){YELLOW} ({COMMA}%/{COMMA}% انتقال داده شده) +STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUSTRY} # 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}مرکز تصویر را روی کارخانه قرار بده +STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}مرکز تصویر را روی کارخانه قرار بده.Ctrl+Click کنید تا پنجره نمایی از کارخانه نمایش داده شود +STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}این کارخانه اعلام کرده است که به زودی بسته خواهد شد! ############ range for requires starts STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}مواد اولیه: {YELLOW}{STRING}{STRING} @@ -2796,6 +2926,7 @@ STR_VEHICLE_LIST_SEND_AIRCRAFT_TO_HANGAR :فرستادن + # Build vehicle window STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :قطار جدید STR_BUY_VEHICLE_TRAIN_MONORAIL_CAPTION :قطار جدید مونوریل @@ -2815,12 +2946,12 @@ STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}لیست STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}لیست انتخاب هواپیما - برای اطلاعات بیشتر روی هواپیما کلیک کنید STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_BUTTON :{BLACK}ساخت وسیله نقلیه -STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_BUTTON :{BLACK}ساخت وسیله نقلیه -STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_BUTTON :{BLACK}ساخت هواپیما +STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_BUTTON :{BLACK}خرید وسیله نقلیه +STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_BUTTON :{BLACK}خرید هواپیما -STR_BUY_VEHICLE_TRAIN_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+Click کنید تا قبل از خرید، مبلغ تقریبی آنرا نمایش دهد +STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_TOOLTIP :{BLACK}خرید کشتی مشخص شده . Shift+Click کنید تا هزینه تقریبی نمایش داده شود +STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_TOOLTIP :{BLACK}خرید هواپیمای مشخص شده. برای مشاهده هزینه تقریبی Shift+Click کنید STR_BUY_VEHICLE_TRAIN_RENAME_BUTTON :{BLACK}تغییر نام STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_BUTTON :{BLACK}تغییر نام @@ -2867,8 +2998,8 @@ STR_DEPOT_AIRCRAFT_NEW_VEHICLES_TOOLTIP :{BLACK}خرید STR_DEPOT_TRAIN_LOCATION_TOOLTIP :{BLACK}انتقال نمای اصلی را به جایگاه ایستگاه قطار.Ctrl+Click یک نمای جدید از جایگاه ایستگاه می سازد. -STR_DEPOT_SHIP_LOCATION_TOOLTIP :{BLACK}نمای اصلی از جایگاه لنگرگاه کشتی -STR_DEPOT_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}نمای اصلی از جایگاه آشیانه +STR_DEPOT_SHIP_LOCATION_TOOLTIP :{BLACK}نمای اصلی از جایگاه لنگرگاه کشتی. برای ایجاد یک پنجره نما از لنگرگاه Ctrl+Click کنید +STR_DEPOT_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}نمای اصلی از جایگاه آشیانه.برای یک پنجره نما از آشیانه Ctrl+Click کنید @@ -2901,13 +3032,13 @@ STR_REPLACE_VEHICLE_AIRCRAFT :هواپیما # Vehicle view STR_VEHICLE_VIEW_CAPTION :{WHITE}{VEHICLE} -STR_VEHICLE_VIEW_TRAIN_LOCATION_TOOLTIP :{BLACK}نمای اصلی جایگاه قطار -STR_VEHICLE_VIEW_SHIP_LOCATION_TOOLTIP :{BLACK}نمای اصلی از جایگاه کشتی -STR_VEHICLE_VIEW_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}نمای اصلی از جایگاه هواپیما +STR_VEHICLE_VIEW_TRAIN_LOCATION_TOOLTIP :{BLACK}نمای اصلی جایگاه قطار. برای دنبال کردن قطار Ctrl+Click کنید +STR_VEHICLE_VIEW_SHIP_LOCATION_TOOLTIP :{BLACK}نمای اصلی از جایگاه کشتی. برای دنبال کردن کشتی Ctrl+Click کنید +STR_VEHICLE_VIEW_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}نمای اصلی از جایگاه هواپیما. برای دنبال کردن هواپیما Ctrl+click کنید STR_VEHICLE_VIEW_TRAIN_SEND_TO_DEPOT_TOOLTIP :{BLACK}این قطار را به ایستگاه راه آهن بفرست. Ctrl+Click فقط قطار را سرویس میکند STR_VEHICLE_VIEW_SHIP_SEND_TO_DEPOT_TOOLTIP :{BLACK}فرستادن کشتی به لنگرگاه. ctrl+click فقط سرویس میکند -STR_VEHICLE_VIEW_AIRCRAFT_SEND_TO_DEPOT_TOOLTIP :{BLACK}ارسال هواپیما به آشیانه. Ctrl+Click فقط سرویس می کند +STR_VEHICLE_VIEW_AIRCRAFT_SEND_TO_DEPOT_TOOLTIP :{BLACK}ارسال هواپیما به آشیانه. Ctrl+Click فقط سرویس می کند STR_VEHICLE_VIEW_TRAIN_IGNORE_SIGNAL_TOOLTIP :{BLACK}قطار را مجبور کن بدون صبر برای علامت ترخیص شروع به حرکت کند @@ -2954,11 +3085,13 @@ STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} س STR_VEHICLE_INFO_MAX_SPEED_RANGE :{BLACK}بیشینه سرعت: {LTBLUE}{VELOCITY} {BLACK}برد: {LTBLUE}{COMMA} قطعه +STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}ظرفیت: {LTBLUE}{CARGO_LONG}, {CARGO_LONG}{STRING} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}فاصله ی زمانی بین تعمیرات دوره ای: {LTBLUE}{COMMA}روز {BLACK} آخیرین تعمسرات: {LTBLUE}{DATE_LONG} -STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}افزایش مدت سرویس -STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}کاهش مدت سرویس +STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}افزایش مدت سرویس به مقدار 10. برای افزایش به مقدار 5 باید Ctrl+Click کنید +STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}کاهش مدت سرویس به مقدار 10، برای کاهش به مقدار 5 باید Ctrl+Click کنید + STR_QUERY_RENAME_TRAIN_CAPTION :{WHITE}نام گذاری قطار STR_QUERY_RENAME_SHIP_CAPTION :{WHITE}نام گذاری کشتی @@ -3026,7 +3159,7 @@ STR_ORDERS_DELETE_BUTTON :{BLACK}پاک STR_ORDERS_DELETE_TOOLTIP :{BLACK}پاک کردن دستور مشخص شده STR_ORDERS_GO_TO_BUTTON :{BLACK}برو به -STR_ORDERS_GO_TO_TOOLTIP :{BLACK}وارد کردن دستور جدید قبل از دستور مشخص شده. یا اضافه کردن آن به آخر لیست +STR_ORDERS_GO_TO_TOOLTIP :{BLACK}وارد کردن دستور جدید قبل از دستور مشخص شده. یا اضافه کردن آن به آخر لیست. فرستادن به مرکز تعمیر، دستور سرویس خودکار را غیرفعال می کند # String parts to build the order string @@ -3071,14 +3204,14 @@ STR_TIMETABLE_CLEAR_TIME :{BLACK}پاک # AI debug window -STR_AI_DEBUG :{WHITE}رفع اشکالات هوش مصنوعی +STR_AI_DEBUG :{WHITE}رفع اشکالات کد هوش مصنوعی STR_AI_DEBUG_NAME_TOOLTIP :{BLACK}نام کد STR_AI_DEBUG_RELOAD :{BLACK}بازگشایی مجدد هوش مصنوعی STR_AI_DEBUG_RELOAD_TOOLTIP :{BLACK}از بین بردن هوش مصنوعی. بازگشایی اسکریپت. و شروع مجدد هوش مصنوعی STR_AI_GAME_SCRIPT :{BLACK}کدبازی STR_AI_GAME_SCRIPT_TOOLTIP :{BLACK}دیدن گزارش های کد بازی -STR_ERROR_AI_DEBUG_SERVER_ONLY :{YELLOW}صفحه رفع اشکال کد فقط برای سرور قابل دسترس است +STR_ERROR_AI_DEBUG_SERVER_ONLY :{YELLOW}پنجره رفع اشکال کد فقط برای سرور قابل دسترس است # AI configuration window STR_AI_CONFIG_CAPTION :{WHITE}تنظیمات هوش مصنوعی / بازی @@ -3127,6 +3260,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}گواهی @@ -3171,7 +3306,7 @@ STR_ERROR_OFF_EDGE_OF_MAP :{WHITE}خارج STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP :{WHITE}بسیار نزدیک به حاشیه ی نقشه STR_ERROR_NOT_ENOUGH_CASH_REQUIRES_CURRENCY :{WHITE}پول به اندازه ی کافی موجود نیست- به {CURRENCY_LONG} نیاز است STR_ERROR_FLAT_LAND_REQUIRED :{WHITE}زمین باید مسطح باشد -STR_ERROR_CAN_T_DO_THIS :{WHITE}نمی‌توانم انجام دهم +STR_ERROR_CAN_T_DO_THIS :{WHITE}نمی‌توان انجام داد STR_ERROR_BUILDING_MUST_BE_DEMOLISHED :{WHITE}اول باید ساختمان تخریب شود STR_ERROR_CAN_T_CLEAR_THIS_AREA :{WHITE}این منطقه پاک نمی‌شود STR_ERROR_SITE_UNSUITABLE :{WHITE}مکان مناسب نیست @@ -3221,7 +3356,7 @@ STR_ERROR_CAN_T_BUILD_BUS_STATION :{WHITE}اینج STR_ERROR_CAN_T_BUILD_TRUCK_STATION :{WHITE}اینجا ایستگاه کامیون نمیشود ساخت STR_ERROR_CAN_T_BUILD_AIRPORT_HERE :{WHITE}نمی توان اینجا فرودگاه ساخت. . . -STR_ERROR_STATION_TOO_SPREAD_OUT :{WHITE}ایستگاه زیادی پخش شده است +STR_ERROR_STATION_TOO_SPREAD_OUT :{WHITE}ایستگاه زیادی پراکنده شده است STR_ERROR_TOO_MANY_STATIONS_LOADING :{WHITE}تعداد محوطه های بارگیری/ایستگاه بسیار زیاد شده STR_ERROR_TOO_CLOSE_TO_ANOTHER_STATION :{WHITE}به محوطه ی بارگیری/ایستگاه دیگری بسیار نزدیک است STR_ERROR_TOO_CLOSE_TO_ANOTHER_DOCK :{WHITE}به بندر دیگری بسییار نزدیک است @@ -3251,30 +3386,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}قبلا اینجا درخت کشته شده است @@ -3284,22 +3432,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}قطار در راه است @@ -3307,20 +3469,27 @@ 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}نمیشود قطار ساخت ... +STR_ERROR_CAN_T_BUY_TRAIN :{WHITE}نمیشود قطار خرید ... STR_ERROR_CAN_T_BUY_ROAD_VEHICLE :{WHITE}نمی شود ماشین ساخت... STR_ERROR_CAN_T_BUY_SHIP :{WHITE}نمی شود کشتی ساخت... STR_ERROR_CAN_T_BUY_AIRCRAFT :{WHITE}نمی توان هواپیما را ساخت @@ -3335,17 +3504,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}هواپاما در حال پرواز است @@ -3355,12 +3533,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}این وسیله نقلیه در این ایستگاه توقف نمی کند @@ -3373,6 +3560,16 @@ STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}نشان # Translatable comment for OpenTTD's desktop shortcut STR_DESKTOP_SHORTCUT_COMMENT :یک بازی شبیه سازی بر اساس Transport Tycoon Deluxe +# Translatable descriptions in media/baseset/*.ob* files +STR_BASEGRAPHICS_DOS_DESCRIPTION :گرافیک اصلی بازی ترانسپورت تایکون نسخه داس +STR_BASEGRAPHICS_DOS_DE_DESCRIPTION :گرافیک اصلی بازی ترانسپورت تایکون نسخه داس آلمانی +STR_BASEGRAPHICS_WIN_DESCRIPTION :گرافیک اصلی بازی ترانسپورت تایکون نسخه ویندوز +STR_BASESOUNDS_DOS_DESCRIPTION :صوت زمینه اصلی بازی ترانسپورت تایکون نسخه داس +STR_BASESOUNDS_WIN_DESCRIPTION :صوت زمینه اصلی بازی ترانسپورت تایکون نسخه ویندوز +STR_BASESOUNDS_NONE_DESCRIPTION :یک بسته صوت زمینه که حاوی هیچ صوتی نیست +STR_BASEMUSIC_WIN_DESCRIPTION :موزیک اصلی بازی ترانسپورت تایکون نسخه ویندوز +STR_BASEMUSIC_NONE_DESCRIPTION :یک بسته موسیقی که حاوی هیچ موزیکی نیست + ##id 0x2000 # Town building names STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1 :ساختمان اداری بلند @@ -3495,7 +3692,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 (بخار) @@ -3638,9 +3835,9 @@ STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_GRAIN_TRUCK :کامیون ح 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_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 @@ -3704,7 +3901,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 @@ -3819,8 +4016,9 @@ 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_SPACE_STRING :{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} @@ -3844,9 +4042,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/thai.txt b/src/lang/unfinished/thai.txt deleted file mode 100644 index 506ac05e3..000000000 --- a/src/lang/unfinished/thai.txt +++ /dev/null @@ -1,3120 +0,0 @@ -##name Thai -##ownname Thai -##isocode th_TH -##plural 1 -##textdir ltr -##digitsep , -##digitsepcur , -##decimalsep . -##winlangid 0x041e -##grflangid 0x42 - - -# $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 :(undefined string) -STR_JUST_NOTHING :ไม่มีอะไร - -# Cargo related strings -# Plural cargo name -STR_CARGO_PLURAL_NOTHING : -STR_CARGO_PLURAL_PASSENGERS :ผู้โดยสาร -STR_CARGO_PLURAL_COAL :ถ่านหิน -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_IRON_ORE :แร่เหล็ก -STR_CARGO_PLURAL_STEEL :เหล็กกล้า -STR_CARGO_PLURAL_VALUABLES :ของมีค่า -STR_CARGO_PLURAL_COPPER_ORE :แร่ทองแดง -STR_CARGO_PLURAL_MAIZE :ข้าวโพด -STR_CARGO_PLURAL_FRUIT :ผลไม้ -STR_CARGO_PLURAL_DIAMONDS :เพชร -STR_CARGO_PLURAL_FOOD :อาหาร -STR_CARGO_PLURAL_PAPER :กระดาษ -STR_CARGO_PLURAL_GOLD :ทองคำ -STR_CARGO_PLURAL_WATER :น้ำ -STR_CARGO_PLURAL_WHEAT :ข้าวสาลี -STR_CARGO_PLURAL_RUBBER :ยางพารา -STR_CARGO_PLURAL_SUGAR :น้ำตาล -STR_CARGO_PLURAL_TOYS :ของเล่น -STR_CARGO_PLURAL_CANDY :ขนมหวาน -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 :น้ำอัดลมหรรษา - -# Singular cargo name -STR_CARGO_SINGULAR_NOTHING : -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_GRAIN :ข้าว -STR_CARGO_SINGULAR_WOOD :ไม้ -STR_CARGO_SINGULAR_IRON_ORE :แร่เหล็ก -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_GOLD :ทองคำ -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_COTTON_CANDY :ขนมสายไหม -STR_CARGO_SINGULAR_BUBBLE :ฟอง -STR_CARGO_SINGULAR_TOFFEE :ลูกอม -STR_CARGO_SINGULAR_BATTERY :ถ่านไฟฉาย -STR_CARGO_SINGULAR_PLASTIC :พลาสติก -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_OIL :น้ำมัน {VOLUME_LONG} -STR_QUANTITY_LIVESTOCK :ปศุสัตว์ {COMMA} ตัว -STR_QUANTITY_GOODS :สินค้า {COMMA} ลัง -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_COPPER_ORE :แร่ทองแดง {WEIGHT_LONG} -STR_QUANTITY_MAIZE :ข้าวโพด {WEIGHT_LONG} -STR_QUANTITY_FRUIT :ผลไม้ {WEIGHT_LONG} -STR_QUANTITY_DIAMONDS :เพชร {COMMA} ถุง -STR_QUANTITY_FOOD :อาหาร {WEIGHT_LONG} -STR_QUANTITY_PAPER :กระดาษ {WEIGHT_LONG} -STR_QUANTITY_GOLD :ทองคำ {COMMA} ถุง -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_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_N_A :N/A - -# Two letter abbreviation of cargo name -STR_ABBREV_NOTHING : -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_WOOD :{TINY_FONT}ไม้ -STR_ABBREV_IRON_ORE :{TINY_FONT}แร่ -STR_ABBREV_STEEL :{TINY_FONT}เหล็กกล้า -STR_ABBREV_VALUABLES :{TINY_FONT}เงิน -STR_ABBREV_COPPER_ORE :{TINY_FONT}ทองแดง -STR_ABBREV_MAIZE :{TINY_FONT}ข้าวโพด -STR_ABBREV_FRUIT :{TINY_FONT}ผลไม้ -STR_ABBREV_DIAMONDS :{TINY_FONT}เพชร -STR_ABBREV_FOOD :{TINY_FONT}อาหาร -STR_ABBREV_PAPER :{TINY_FONT}กระดาษ -STR_ABBREV_GOLD :{TINY_FONT}ทอง -STR_ABBREV_WATER :{TINY_FONT}น้ำ -STR_ABBREV_WHEAT :{TINY_FONT}ข้าว -STR_ABBREV_RUBBER :{TINY_FONT}ยาง -STR_ABBREV_SUGAR :{TINY_FONT}น้ำตาล -STR_ABBREV_TOYS :{TINY_FONT}ของเล่น -STR_ABBREV_SWEETS :{TINY_FONT}ขนม -STR_ABBREV_COLA :{TINY_FONT}โคล่า -STR_ABBREV_CANDYFLOSS :{TINY_FONT}สายไหม -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_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} ลัง - -# Colours, do not shuffle -STR_COLOUR_DARK_BLUE :น้ำเงินเข้ม -STR_COLOUR_PALE_GREEN :เขียวอ่อน -STR_COLOUR_PINK :ชมพู -STR_COLOUR_YELLOW :เหลือง -STR_COLOUR_RED :แดง -STR_COLOUR_LIGHT_BLUE :ฟ้า -STR_COLOUR_GREEN :เขียว -STR_COLOUR_DARK_GREEN :เขียวเข้ม -STR_COLOUR_BLUE :น้ำเงิน -STR_COLOUR_CREAM :ครีม -STR_COLOUR_MAUVE :ม่วงอ่อน -STR_COLOUR_PURPLE :ม่วง -STR_COLOUR_ORANGE :ส้ม -STR_COLOUR_BROWN :น้ำตาล -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_POWER_IMPERIAL :{COMMA} แรงม้า -STR_UNITS_POWER_METRIC :{COMMA} แรงม้า -STR_UNITS_POWER_SI :{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_METRIC :{COMMA} ลิตร -STR_UNITS_VOLUME_SHORT_SI :{COMMA} ลบ.ม. - -STR_UNITS_VOLUME_LONG_METRIC :{COMMA} ลิตร -STR_UNITS_VOLUME_LONG_SI :{COMMA} ลบ.ม. - -STR_UNITS_FORCE_SI :{COMMA} กิโลนิวตัน - -STR_UNITS_HEIGHT_IMPERIAL :{COMMA} ฟุต -STR_UNITS_HEIGHT_SI :{COMMA} ม. - -# Common window strings -STR_LIST_FILTER_OSKTITLE :{BLACK}ใส่คำกรอง -STR_LIST_FILTER_TOOLTIP :{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}Shade window - แสดงเฉพาะแถบด้านบน -STR_TOOLTIP_DEBUG :{BLACK}แสดงข้อมูล debug NewGRF -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 เพื่อสลับระหว่างสิ่งปลูกสร้างและแสดงมูลค่า - -# Query window -STR_BUTTON_DEFAULT :{BLACK}ค่าปกติ -STR_BUTTON_CANCEL :{BLACK}ยกเลิก -STR_BUTTON_OK :{BLACK}ตกลง - -# 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}ความยาว: {NUM} -STR_MEASURE_AREA :{BLACK}ขนาดพื้นที่: {NUM} x {NUM} -STR_MEASURE_LENGTH_HEIGHTDIFF :{BLACK}ความยาว: {NUM}{}ความแตกต่างของความสูง: {HEIGHT} -STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}ขนาดพื้นที่: {NUM} x {NUM}{}ความแตกต่างของคสามสูง: {HEIGHT} - - -# These are used in buttons -STR_SORT_BY_CAPTION_POPULATION :{BLACK}ประชากร -STR_SORT_BY_CAPTION_NAME :{BLACK}ชื่อ -STR_SORT_BY_CAPTION_DATE :{BLACK}วันที่ -# These are used in dropdowns -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 :กำไรปีนี้ -STR_SORT_BY_AGE :อายุ -STR_SORT_BY_RELIABILITY :เสถียรภาพ -STR_SORT_BY_TOTAL_CAPACITY_PER_CARGOTYPE :ความจุรวมในแต่ละชนิดบรรทุก -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_TIMETABLE_DELAY :ความล่าช้าจากตารางเวลา -STR_SORT_BY_FACILITY :ประเภทสถานี -STR_SORT_BY_WAITING :มูลค่าสินค้าที่ค้างอยู่ -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_RANGE :ช่วง - -# 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_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_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_SHOW_SOUND_MUSIC_WINDOW :{BLACK}แสดงหน้าต่างเสียงและดนตรี -STR_TOOLBAR_TOOLTIP_SHOW_LAST_MESSAGE_NEWS :{BLACK}แสดงข้อความล่าสุด/รายงานข่าว, แสดงตัวเลือกข้อความ -STR_TOOLBAR_TOOLTIP_LAND_BLOCK_INFORMATION :{BLACK}ข้อมูลที่ดิน, คอนโซล, ดีบัก AI, จับภาพหน้าจอ, เกี่ยวกับ OpenTTD -STR_TOOLBAR_TOOLTIP_SWITCH_TOOLBAR :{BLACK}เปลี่ยนกล่องเครื่องมือ - -# Extra tooltips for the scenario editor toolbar -STR_SCENEDIT_TOOLBAR_TOOLTIP_SAVE_SCENARIO_LOAD_SCENARIO :{BLACK}บันทึกฉาก, โหลดฉาก, ยกเลิกการแก้ไขฉาก, ออก -STR_SCENEDIT_TOOLBAR_OPENTTD :{YELLOW}OpenTTD -STR_SCENEDIT_TOOLBAR_SCENARIO_EDITOR :{YELLOW}โปรแกรมสร้างฉาก -STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_BACKWARD :{BLACK}เลื่อนวันที่เริ่มต้นย้อนไป 1 ปี -STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_FORWARD :{BLACK}เลือนวันที่เริ่มต้นไปอีก 1 ปี -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_PLANT_TREES :{BLACK}ปลูกต้นไม้. กด Shift เพื่อเปิด-ปิดสิ่งปลูกสร้าง/แสดงการประเมินค่าใช้จ่าย -STR_SCENEDIT_TOOLBAR_PLACE_SIGN :{BLACK}ปักป้าย -STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}วางวัตถุ. กด Shift เพื่อปิด-เปิดสิ่งปลูกสร้าง/แสดงการประเมินค่าใช้จ่าย - -############ range for SE file menu starts -STR_SCENEDIT_FILE_MENU_SAVE_SCENARIO :บันทึกฉาก -STR_SCENEDIT_FILE_MENU_LOAD_SCENARIO :โหลดฉาก -STR_SCENEDIT_FILE_MENU_SAVE_HEIGHTMAP :บันทึกแผนที่ความสูง -STR_SCENEDIT_FILE_MENU_LOAD_HEIGHTMAP :โหลดแผนที่ความสูง -STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :ออกจากตัวแก้ไขฉาก -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_CONFIG_SETTINGS :กำหนดค่าขั้นสูง -STR_SETTINGS_MENU_SCRIPT_SETTINGS :ตั้งค่าสคริปต์ AI/Game -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 :ออกจากเกม -############ range ends here - -############ range for map menu starts -STR_MAP_MENU_MAP_OF_WORLD :แผนที่โลก -STR_MAP_MENU_EXTRA_VIEW_PORT :มุมมองเพิ่มเติม -STR_MAP_MENU_SIGN_LIST :รายการป้าย -############ range for town menu starts, yet the town directory is shown in the map menu in the scenario editor -STR_TOWN_MENU_TOWN_DIRECTORY :ทำเนียบชื่อเมือง -############ end of the 'Display map' dropdown -STR_TOWN_MENU_FOUND_TOWN :ตั้งเมือง -############ end of the 'Town' dropdown - -############ range for subsidies menu starts -STR_SUBSIDIES_MENU_SUBSIDIES :การสนับสนุน -STR_SUBSIDIES_MENU_GOAL :เป้าหมายปัจจุบัน -############ 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 :การวัดผลประสิทธิภาพอย่างละเอียด -############ range ends here - -############ range for industry menu starts -STR_INDUSTRY_MENU_INDUSTRY_DIRECTORY :ทำเนียบอุตสาหกรรม -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_MONORAIL_CONSTRUCTION :การก่อสร้างทางรถไฟรางเดี่ยว -STR_RAIL_MENU_MAGLEV_CONSTRUCTION :การก่อสร้างทางรถไฟพลังแม่เหล็ก -############ range ends here - -############ range for road construction menu starts -STR_ROAD_MENU_ROAD_CONSTRUCTION :การก่อสร้างถนน -STR_ROAD_MENU_TRAM_CONSTRUCTION :การก่อสร้างทางรถราง -############ range ends here - -############ range for waterways construction menu starts -STR_WATERWAYS_MENU_WATERWAYS_CONSTRUCTION :การก่อสร้างคลอง -############ range ends here - -############ range for airport construction menu starts -STR_AIRCRAFT_MENU_AIRPORT_CONSTRUCTION :การก่อสร้างสนามบิน -############ range ends here - -############ range for landscaping menu starts -STR_LANDSCAPING_MENU_LANDSCAPING :การปรับพื้นที่ -STR_LANDSCAPING_MENU_PLANT_TREES :ปลูกต้นไม้ -STR_LANDSCAPING_MENU_PLACE_SIGN :ปักป้าย -############ range ends here - -############ range for music menu starts -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_TOGGLE_CONSOLE :เปิด/ปิด คอนโซล -STR_ABOUT_MENU_AI_DEBUG :ดีบัก สคริปต์ AI/Game -STR_ABOUT_MENU_SCREENSHOT :จับภาพหน้าจอ (Ctrl+S) -STR_ABOUT_MENU_ZOOMIN_SCREENSHOT :จับภาพหน้าจอในแบบขยายใหญ่สุด -STR_ABOUT_MENU_DEFAULTZOOM_SCREENSHOT :ค่าเริ่มต้นของการขยายภาพในการจับหน้าจอ -STR_ABOUT_MENU_GIANT_SCREENSHOT :จับภาพหน้าจอทั้งแผนที่ (Ctrl+G) -STR_ABOUT_MENU_ABOUT_OPENTTD :เกี่ยวกับ 'OpenTTD' -STR_ABOUT_MENU_SPRITE_ALIGNER :ตัวจัดแนว Sprite -STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :เปิด/ปิด 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) -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 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 :กุมภาพันธ์ -STR_MONTH_MAR :มีนาคม -STR_MONTH_APR :เมษายน -STR_MONTH_MAY :พฤษภาคม -STR_MONTH_JUN :มิถุนายน -STR_MONTH_JUL :กรกฎาคม -STR_MONTH_AUG :สิงหาคม -STR_MONTH_SEP :กันยายน -STR_MONTH_OCT :ตุลาคม -STR_MONTH_NOV :พฤศจิกายน -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}ปิดทั้งหมด all -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}ตัวเลือกกราฟของบริษัท -STR_GRAPH_KEY_COMPANY_SELECTION_TOOLTIP :{BLACK}คลิก เพื่อเปิด/ปิดการแสดงบันทึกของบริษัทในกราฟ - -# 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 :ประธานบริษัท -STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TYCOON :เจ้าของบริษัท - -# 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_STATIONS_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_JAZZ_JUKEBOX_CAPTION :{WHITE}ตู้เพลงแจ๊ส -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}อีซี่สตรีท -STR_MUSIC_PLAYLIST_CUSTOM_1 :{TINY_FONT}{BLACK}กำหนดเอง 1 -STR_MUSIC_PLAYLIST_CUSTOM_2 :{TINY_FONT}{BLACK}กำหนดเอง 2 -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}เลือกเพลงฟังรายการเพลง Ezy Street -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}เปิด/ปิด Toggle programme shuffle on/off -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}ลบทั้งหมด -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}คลิกที่ชื่อเพลงเพื่อลบออกจากโปรแกรม (Custom1 or Custom2 เท่านั้น) - -# Highscore window -STR_HIGHSCORE_TOP_COMPANIES_WHO_REACHED :{BIG_FONT}{BLACK}บริษัทชั้นนำที่ก้าวไปสู่ {NUM} -STR_HIGHSCORE_TOP_COMPANIES_NETWORK_GAME :{BIG_FONT}{BLACK}ตารางแสดงการแข่งขันของบริษัทใน {NUM} -STR_HIGHSCORE_POSITION :{BIG_FONT}{BLACK}{COMMA}. -STR_HIGHSCORE_PERFORMANCE_TITLE_BUSINESSMAN :นักธุรกิจ -STR_HIGHSCORE_PERFORMANCE_TITLE_ENTREPRENEUR :ผู้ประกอบการ -STR_HIGHSCORE_PERFORMANCE_TITLE_INDUSTRIALIST :นักอุตสาหกรรม -STR_HIGHSCORE_PERFORMANCE_TITLE_CAPITALIST :นักลงทุน -STR_HIGHSCORE_PERFORMANCE_TITLE_MAGNATE :เจ้าสัว -STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL :ผู้มีอำนาจ -STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY :นักธุรกิจผู้ร่ำรวยและมีอิทธิพลมากแห่งศตวรรษ -STR_HIGHSCORE_NAME :{BIG_FONT}{PRESIDENT_NAME}, {COMPANY} -STR_HIGHSCORE_STATS :{BIG_FONT}'{STRING}' ({COMMA}) -STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{BLACK}{COMPANY} ได้ก้าวไปสู่ขั้น '{STRING}'! -STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{WHITE}{PRESIDENT_NAME} จาก {COMPANY} ได้ก้าวไปสู่ขั้น '{STRING}'! - -# Smallmap window -STR_SMALLMAP_CAPTION :{WHITE}แผนที่ - {STRING} - -STR_SMALLMAP_TYPE_CONTOURS :โครงร่าง -STR_SMALLMAP_TYPE_VEHICLES :ยานยนต์ -STR_SMALLMAP_TYPE_INDUSTRIES :อุตสาหกรรม -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_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+Click เพื่อปิดทุกประเภทยกเว้นประเภทที่เลือก. Ctrl+Click อีกครั้งเพื่อแสดงทุกอุตสาหกรรม -STR_SMALLMAP_TOOLTIP_COMPANY_SELECTION :{BLACK}กดเลือกที่บริษัทเพื่อปิด/เปิดการแสดงข้อมูลของบริษัท. Ctrl+กดเลือก เพื่อปิดแสดงผลทุกบริษัทยกเว้นอันที่เลือก. Ctrl+กดเลือกอีกครั้งเพื่อเปิดแสดงผลบริษัททั้งหมด - -STR_SMALLMAP_LEGENDA_ROADS :{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_SHIPS :{TINY_FONT}{BLACK}เรือ -STR_SMALLMAP_LEGENDA_AIRCRAFT :{TINY_FONT}{BLACK}อากาศยาน -STR_SMALLMAP_LEGENDA_TRANSPORT_ROUTES :{TINY_FONT}{BLACK}เส้นทางการขนส่ง -STR_SMALLMAP_LEGENDA_FOREST :{TINY_FONT}{BLACK}ป่าไม้ -STR_SMALLMAP_LEGENDA_RAILROAD_STATION :{TINY_FONT}{BLACK}สถานีรถไฟ -STR_SMALLMAP_LEGENDA_TRUCK_LOADING_BAY :{TINY_FONT}{BLACK}สถานีถ่ายของรถบรรทุก -STR_SMALLMAP_LEGENDA_BUS_STATION :{TINY_FONT}{BLACK}ป้ายรถเมล์ -STR_SMALLMAP_LEGENDA_AIRPORT_HELIPORT :{TINY_FONT}{BLACK}สนามบิน/จุดจอดเฮลิคอปเตอร์ -STR_SMALLMAP_LEGENDA_DOCK :{TINY_FONT}{BLACK}ท่าเรือ -STR_SMALLMAP_LEGENDA_ROUGH_LAND :{TINY_FONT}{BLACK}พื้นลูกรัง -STR_SMALLMAP_LEGENDA_GRASS_LAND :{TINY_FONT}{BLACK}พื้นหญ้า -STR_SMALLMAP_LEGENDA_BARE_LAND :{TINY_FONT}{BLACK}ที่ดินเปล่า -STR_SMALLMAP_LEGENDA_FIELDS :{TINY_FONT}{BLACK}ทุ้งหญ้า -STR_SMALLMAP_LEGENDA_TREES :{TINY_FONT}{BLACK}ต้นไม้ -STR_SMALLMAP_LEGENDA_ROCKS :{TINY_FONT}{BLACK}หิน -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_DESERT :{TINY_FONT}{BLACK}ทะเลทราย -STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLACK}หิมะ - -STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}เปิด/ปิด ชื่อเมืองบนแผนที่ -STR_SMALLMAP_CENTER :{BLACK}ให้จุดปัจจุบันเป็นจุดศูนย์กลางในแผนที่ -STR_SMALLMAP_INDUSTRY :{TINY_FONT}{STRING} ({NUM}) -STR_SMALLMAP_COMPANY :{TINY_FONT}{COMPANY} -STR_SMALLMAP_TOWN :{TINY_FONT}{WHITE}{TOWN} -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_SHOW_HEIGHT :{BLACK}เปลี่ยนการแสดง heightmap -STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES :{BLACK}ไม่แสดงทรัพย์สินของบริษัทใดๆบนแผนที่ -STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}แสดงทรัพย์สินของทุกบริษัทบนแผนที่ - -# Status bar messages -STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}แสดงข้อความล่าสุด -STR_STATUSBAR_COMPANY_NAME :{SILVER}- - {COMPANY} - - -STR_STATUSBAR_PAUSED :{YELLOW}* * หยุดเกม * * -STR_STATUSBAR_AUTOSAVE :{RED}กำลังทำการเซฟอัตโนมัติ -STR_STATUSBAR_SAVING_GAME :{RED}* * กำลังบันทึกเกม * * - -# News message history -STR_MESSAGE_HISTORY :{WHITE}ข้อความย้อนหลัง -STR_MESSAGE_HISTORY_TOOLTIP :{BLACK}รายการแสดงข้อความข่าวเมื่อเร็วๆนี้ -STR_MESSAGE_NEWS_FORMAT :{STRING} - {STRING} - -STR_NEWS_MESSAGE_CAPTION :{WHITE}ข้อความ -STR_NEWS_CUSTOM_ITEM :{BIG_FONT}{BLACK}{STRING} - -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_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}! - -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} -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_AIRPLANE_OIL_REFINERY :{BIG_FONT}{BLACK}โรงกลั่นน้ำมันระเบิดใกล้เมือง {TOWN}! -STR_NEWS_DISASTER_HELICOPTER_FACTORY :{BIG_FONT}{BLACK}โรงงานอุตสาหกรรมถูกทำลายอย่างไม่ทราบสาเหตุใกล้ {TOWN}! -STR_NEWS_DISASTER_BIG_UFO :{BIG_FONT}{BLACK}'ยูเอฟโอ' มาลงใกล้ๆ{TOWN}! -STR_NEWS_DISASTER_COAL_MINE_SUBSIDENCE :{BIG_FONT}{BLACK}เหมืองถ่านหินถล่มเสียหายใกล้เมือง {TOWN}! -STR_NEWS_DISASTER_FLOOD_VEHICLE :{BIG_FONT}{BLACK}น้ำท่วม!{}อย่างน้อย {COMMA} สูญหาย คาดว่าจะเสียชีวิตจากน้ำท่วมอย่างหนัก! - -STR_NEWS_COMPANY_IN_TROUBLE_TITLE :{BIG_FONT}{BLACK}บริษัทขนส่งมีปัญหา -STR_NEWS_COMPANY_IN_TROUBLE_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} จะถูกขายหรือประกาศล้มละลาย ยกเว้นเสียแต่จะฟื้นตัวได้ในเวลาอันสั้น -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_LAUNCH_TITLE :{BIG_FONT}{BLACK}บริษัทขนส่งใหม่เริ่มกิจการแล้ว! -STR_NEWS_COMPANY_LAUNCH_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} เริ่มการก่อสร้างใกล้ {TOWN}! -STR_NEWS_MERGER_TAKEOVER_TITLE :{BIG_FONT}{BLACK}{STRING} ถูกเซ้งโดย {STRING}! -STR_PRESIDENT_NAME_MANAGER :{BLACK}{PRESIDENT_NAME}{}(ผู้จัดการ) - -STR_NEWS_NEW_TOWN :{BLACK}{BIG_FONT}{STRING} ผู้สนับสนุนก่อสร้างเมืองใหม่ในชื่อ {TOWN}! - -STR_NEWS_INDUSTRY_CONSTRUCTION :{BIG_FONT}{BLACK}{STRING}ใหม่ กำลังถูกสร้างใกล้ ๆ เมือง {TOWN}! -STR_NEWS_INDUSTRY_PLANTED :{BIG_FONT}{BLACK} {STRING}กำลังปลูกใหม่ใกล้ {TOWN}! - -STR_NEWS_INDUSTRY_CLOSURE_GENERAL :{BIG_FONT}{BLACK}{STRING} ประกาศเลิกกิจการ! -STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS :{BIG_FONT}{BLACK}เกิดปัญหาเกี่ยวกับวัตถุดิบทำให้ {STRING} ต้องประกาศเลิกกิจการ! -STR_NEWS_INDUSTRY_CLOSURE_LACK_OF_TREES :{BIG_FONT}{BLACK}ต้นไม้บริเวณใกล้เคียงขาดแคลนทำให้ {STRING} ต้องประกาศเลิกกิจการ! - -STR_NEWS_EURO_INTRODUCTION :{BIG_FONT}{BLACK}เงินสกุลยูโรเริ่มใช้แล้ว!{}{}สหภาพยุโรปได้เริ่มใช้เงินสกุลเดียวกันแล้ว นั่นคือเงินสกุลยูโร รวมถึงในประเทศนี้ตั้งแต่วันนี้เป็นต้นไป! -STR_NEWS_BEGIN_OF_RECESSION :{BIG_FONT}{BLACK}เกิดภาวะเศรฐกิจถดถอยทั่วโลก!{}{}ผู้เชี่ยวชาญทางการเงินต่างหวาดกลัวเนื่องจากเศรฐกิจตกต่ำ! -STR_NEWS_END_OF_RECESSION :{BIG_FONT}{BLACK}สิ้นสุดภาวะเศรฐกิจถดถอย!{}{}การค้าขายเริ่มเป็นบวกเกิดความเชื่อมั่นในอุตสาหกรรมต่างๆ จากการที่เศรฐกิจเข้มแข็งขึ้น! - -STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL :{BIG_FONT}{BLACK}{INDUSTRY} เพิ่มกำลังการผลิต! -STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_COAL :{BIG_FONT}{BLACK}พบสายแร่ถ่านหินใหม่ที่ {INDUSTRY}!คาดว่าผลผลิต{}จะเพิ่มขึ้นเท่าตัว! -STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_OIL :{BIG_FONT}{BLACK}พบแหล่งน้ำมันใหม่ที่ {INDUSTRY}!คาดว่าผลผลิต{}จะเพิ่มขึ้นเท่าตัว! -STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM :{BIG_FONT}{BLACK}เกษตรกรรมที่ได้รับการปรับปรุงแล้วที่ {INDUSTRY} คาดว่าจะทำให้ผลผลิตเพิ่มขึ้นเท่าตัว! -STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_SMOOTH :{BIG_FONT}{BLACK}{STRING} ผลผลิต {INDUSTRY} เพิ่มขึ้น {COMMA}%! -STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL :{BIG_FONT}{BLACK}ผลผลิต {INDUSTRY} ลดลง 50% -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_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 -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} กำลังหลงทาง. -STR_NEWS_VEHICLE_IS_UNPROFITABLE :{WHITE}กำไรของ {VEHICLE} เมื่อปีที่ผ่านมา {CURRENCY_LONG} -STR_NEWS_AIRCRAFT_DEST_TOO_FAR :{WHITE}{VEHICLE} ไม่สามารถไปยังจุดหมายถัดไปได้เนื่องจากไม่อยู่ในระยะ - -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} ใหม่ขณะนี้มีให้ใช้งานแล้ว! -STR_NEWS_NEW_VEHICLE_TYPE :{BIG_FONT}{BLACK}{ENGINE} -STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}ใหม่ {STRING} มีจำหน่ายแล้ว - {ENGINE} - -STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO :{WHITE}{STATION} ไม่ต้องการรับ {STRING} อีกต่อไป -STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO_OR_CARGO :{WHITE}{STATION} ไม่รับ {STRING} หรือ {STRING} แล้ว -STR_NEWS_STATION_NOW_ACCEPTS_CARGO :{WHITE}{STATION} ขณะนี้ยอมรับ {STRING} -STR_NEWS_STATION_NOW_ACCEPTS_CARGO_AND_CARGO :{WHITE}{STATION} ขณะนี้ยอมรับ {STRING} และ {STRING} - -STR_NEWS_OFFER_OF_SUBSIDY_EXPIRED :{BIG_FONT}{BLACK}ข้อเสนอสำหรับการอุดหนุนสิ้นสุด:{}{}{STRING} จาก {STRING} ถึง {STRING} จะไม่ได้รับการอุดหนุนอีกต่อไป. -STR_NEWS_SUBSIDY_WITHDRAWN_SERVICE :{BIG_FONT}{BLACK}การอุดหนุนถูกถอดถอน:{}{}บริการ {STRING} จาก {STRING} ถึง {STRING} จะไม่ได้รับการสนับสนุนอีกต่อไป. -STR_NEWS_SERVICE_SUBSIDY_OFFERED :{BIG_FONT}{BLACK}ข้อเสนอการอุดหนุนบริการ:{}{}บริการ {STRING} แรกจาก {STRING} ถึง {STRING} จะได้รับเงินอุดหนุนรายปีจากองค์กรท้องถิ่น! -STR_NEWS_SERVICE_SUBSIDY_AWARDED_HALF :{BIG_FONT}{BLACK}การอุดหนุนบริการถูกมอบแก่ {STRING}!{}{}บริการ {STRING} จาก {STRING} ถึง {STRING} จะได้รับเงินอุดหนุนเพิ่มขึ้น 50% สำหรับปีหน้า! -STR_NEWS_SERVICE_SUBSIDY_AWARDED_DOUBLE :{BIG_FONT}{BLACK}การอุดหนุนบริการถูกมอบแก่ {STRING}!{}{}บริการ {STRING} จาก {STRING} ถึง {STRING} จะได้รับเงินสองเท่าในปีหน้า! -STR_NEWS_SERVICE_SUBSIDY_AWARDED_TRIPLE :{BIG_FONT}{BLACK}การอุดหนุนบริการถูกมอบแก่ {STRING}!{}{}บริการ {STRING} จาก {STRING} ถึง {STRING} จะได้รับเงินสามเท่าในปีหน้า! -STR_NEWS_SERVICE_SUBSIDY_AWARDED_QUADRUPLE :{BIG_FONT}{BLACK}การอุดหนุนบริการถูกมอบแก่ {STRING}!{}{} บริการ {STRING} จาก {STRING} ถึง {STRING} จะได้รับเงินสี่เท่าในปีหน้า! - -STR_NEWS_ROAD_REBUILDING :{BIG_FONT}{BLACK}การจราจรยุ่งเหยิงใน {TOWN}!{}{}การสร้างถนนใหม่ที่ได้รับการสนับสนุนโดย {STRING} นำมาซึ่งหกเดือนแห่งความสงสัยแก่ผู้ใช้ถนน! - -# 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_TT :{BLACK}คัดลอกตำแหน่งของมุมมองหลังมายังมุมมองนี้ -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_CURRENCY_UNITS_FRAME :{BLACK}หน่วยสกุลเงิน -STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}การเลือกสกุลเงิน - -############ start of currency region -STR_GAME_OPTIONS_CURRENCY_GBP :ปอนด์สเตอร์ลิง (£) -STR_GAME_OPTIONS_CURRENCY_USD :ดอลลาร์สหรัฐ ($) -STR_GAME_OPTIONS_CURRENCY_EUR :ยูโร -STR_GAME_OPTIONS_CURRENCY_JPY :เยน (¥) -STR_GAME_OPTIONS_CURRENCY_ATS :ชิลลิ่งออสเตรีย (ATS) -STR_GAME_OPTIONS_CURRENCY_BEF :ฟรังก์เบลเยี่ยม (BEF) -STR_GAME_OPTIONS_CURRENCY_CHF :ฟรังก์สวิส (CHF) -STR_GAME_OPTIONS_CURRENCY_CZK :โครูนาเช็ค (CZK) -STR_GAME_OPTIONS_CURRENCY_DEM :ดอยช์มาร์ค (DEM) -STR_GAME_OPTIONS_CURRENCY_DKK :โครนเดนมาร์ค (DKK) -STR_GAME_OPTIONS_CURRENCY_ESP :เพเซต้า (ESP) -STR_GAME_OPTIONS_CURRENCY_FIM :มาร์คคา ฟินแลนด์ (FIM) -STR_GAME_OPTIONS_CURRENCY_FRF :ฟรังก์ฝรั่งเศส(FRF) -STR_GAME_OPTIONS_CURRENCY_GRD :ดรากช์มา กรีซ (GRD) -STR_GAME_OPTIONS_CURRENCY_HUF :ฟอรินท์ ฮังการี (HUF) -STR_GAME_OPTIONS_CURRENCY_ISK :โครนา ไอซแลนด์ (ISK) -STR_GAME_OPTIONS_CURRENCY_ITL :ลิรา อิตาลี (ITL) -STR_GAME_OPTIONS_CURRENCY_NLG :กิลเดอร์ ดัชต์ (NLG) -STR_GAME_OPTIONS_CURRENCY_NOK :โครน นอร์เวย์ (NOK) -STR_GAME_OPTIONS_CURRENCY_PLN :ซโลตี โปแลนด์ (PLN) -STR_GAME_OPTIONS_CURRENCY_RON :ลิว โรมาเนีย (RON) -STR_GAME_OPTIONS_CURRENCY_RUR :รูเบิ้ลส์ รัสเซีย (RUR) -STR_GAME_OPTIONS_CURRENCY_SIT :โทลาร์ สโลวีเนีย (SIT) -STR_GAME_OPTIONS_CURRENCY_SEK :โครนา สวีเดน (SEK) -STR_GAME_OPTIONS_CURRENCY_TRY :ลิรา ตุรกี (TRY) -STR_GAME_OPTIONS_CURRENCY_SKK :โครูนา สโลวาเกีย (SKK) -STR_GAME_OPTIONS_CURRENCY_BRL :เรียล บราซิล (BRL) -STR_GAME_OPTIONS_CURRENCY_EEK :ครูนิ เอสโทเนีย (EEK) -STR_GAME_OPTIONS_CURRENCY_CUSTOM :ระบุเอง... -############ end of currency region - -STR_GAME_OPTIONS_MEASURING_UNITS_FRAME :{BLACK}หน่วยการวัด -STR_GAME_OPTIONS_MEASURING_UNITS_DROPDOWN_TOOLTIP :{BLACK}การเลือกหน่วยการวัด - -############ start of measuring units region -STR_GAME_OPTIONS_MEASURING_UNITS_IMPERIAL :ระบบอังกฤษ -STR_GAME_OPTIONS_MEASURING_UNITS_METRIC :ระบบเมตริก -STR_GAME_OPTIONS_MEASURING_UNITS_SI :ระบบมาตรฐานสากล (SI) -############ 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_TOWN_NAMES_FRAME :{BLACK}ชื่อเมือง -STR_GAME_OPTIONS_TOWN_NAMES_DROPDOWN_TOOLTIP :{BLACK}เลือกรูปแบบของชื่อเมือง - -############ start of townname region -STR_GAME_OPTIONS_TOWN_NAME_ORIGINAL_ENGLISH :อังกฤษ (ดั้งเดิม) -STR_GAME_OPTIONS_TOWN_NAME_FRENCH :ฝรั่งเศส -STR_GAME_OPTIONS_TOWN_NAME_GERMAN :เยอรมัน -STR_GAME_OPTIONS_TOWN_NAME_ADDITIONAL_ENGLISH :อังกฤษ (ตัวเสริม) -STR_GAME_OPTIONS_TOWN_NAME_LATIN_AMERICAN :ลาติน-อเมริกัน -STR_GAME_OPTIONS_TOWN_NAME_SILLY :อังกฤษอย่างง่าย -STR_GAME_OPTIONS_TOWN_NAME_SWEDISH :สวีดิช -STR_GAME_OPTIONS_TOWN_NAME_DUTCH :ดัชต์ -STR_GAME_OPTIONS_TOWN_NAME_FINNISH :ฟินน์ -STR_GAME_OPTIONS_TOWN_NAME_POLISH :โปลิช -STR_GAME_OPTIONS_TOWN_NAME_SLOVAK :สโลวากิช -STR_GAME_OPTIONS_TOWN_NAME_NORWEGIAN :นอร์วิเจียน -STR_GAME_OPTIONS_TOWN_NAME_HUNGARIAN :ฮังกาเรียน -STR_GAME_OPTIONS_TOWN_NAME_AUSTRIAN :ออสเตรียน -STR_GAME_OPTIONS_TOWN_NAME_ROMANIAN :โรมาเนียน -STR_GAME_OPTIONS_TOWN_NAME_CZECH :เช็ค -STR_GAME_OPTIONS_TOWN_NAME_SWISS :สวิส -STR_GAME_OPTIONS_TOWN_NAME_DANISH :เดนมาร์ค -STR_GAME_OPTIONS_TOWN_NAME_TURKISH :ตุรกี -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_DROPDOWN_TOOLTIP :{BLACK}เลือกระยะห่างระหว่างการบันทึกเกมอัตโนมัติแต่ละครั้ง - -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 เดือน - -STR_GAME_OPTIONS_LANGUAGE :{BLACK}ภาษา -STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}เลือกภาษาที่จะใช้ - -STR_GAME_OPTIONS_FULLSCREEN :{BLACK}เต็มหน้าจอ -STR_GAME_OPTIONS_FULLSCREEN_TOOLTIP :{BLACK}ทำเครื่องหมายที่ช่องนี้เพื่อเล่น OpenTTD fullscreen โหมด - -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}เลือกและตั้งค่าฐานกราฟิกที่จะใช้ -STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} ไฟล์สูญหายหรือไม่สมบูรณ์ -STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}ข้อมูลเพิ่มเติมเกี่ยวกับชุดกราฟฟิคพื้นฐาน - -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_TOOLTIP :{BLACK}เลือกเพลงประกอบพื้นฐานเพื่อใช้งาน -STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} ไฟล์ไม่สมบูรณ์ -STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}ข้อมูลเพิ่มเติมเกี่ยวกับชุดเพลงประกอบพื้นฐาน - -STR_ERROR_FULLSCREEN_FAILED :{WHITE}Fullscreen โหมดล้มเหลว - -# Custom currency window - -STR_CURRENCY_WINDOW :{WHITE}สกุลเงิน -STR_CURRENCY_EXCHANGE_RATE :{LTBLUE}อัตราแลกเปลี่ยน: {ORANGE}{CURRENCY_LONG} = £ {COMMA} -STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}ลดจํานวนสกุลเงินของคุณสำหรับหนึ่งปอนด์ (£) -STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}เพิ่มจำนวนสกุลเงินของคุณสำหรับหนึ่งปอนด์ (£) -STR_CURRENCY_SET_EXCHANGE_RATE_TOOLTIP :{BLACK}กำหนดอัตราแลกเปลี่ยนของสกุลเงินหนึ่งปอนด์ (£) - -STR_CURRENCY_SEPARATOR :{LTBLUE}เครื่องแยกแร่: {ORANGE}{STRING} -STR_CURRENCY_SET_CUSTOM_CURRENCY_SEPARATOR_TOOLTIP :{BLACK}สัญลักษณ์แบ่งหลักสกุลเงินของท่าน - -STR_CURRENCY_PREFIX :{LTBLUE}คำนำหน้า: {ORANGE}{STRING} -STR_CURRENCY_SET_CUSTOM_CURRENCY_PREFIX_TOOLTIP :{BLACK}สัญลักษณ์หน้าสกุลเงินของท่าน -STR_CURRENCY_SUFFIX :{LTBLUE}คำเสริมท้าย: {ORANGE}{STRING} -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_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}เปลี่ยนสกุลเงินเป็นยูโรทีหลัง - -STR_CURRENCY_PREVIEW :{LTBLUE}แสดงตัวอย่าง: {ORANGE}{CURRENCY_LONG} -STR_CURRENCY_CUSTOM_CURRENCY_PREVIEW_TOOLTIP :{BLACK}10000 ปอนด์สเตอร์ลิง (£) ในสกุลเงินของคุณ -STR_CURRENCY_CHANGE_PARAMETER :{BLACK}เปลี่ยนการกำหนดค่าตัวแปรสกุลเงิน - -STR_DIFFICULTY_LEVEL_SETTING_MAXIMUM_NO_COMPETITORS :{LTBLUE}จำนวนผู้ร่วมแข่งขันสูงสุด: {ORANGE}{COMMA} - -STR_NONE :ไม่มี -STR_FUNDING_ONLY :ระดมทุนเท่านั้น -STR_MINIMAL :ต่ำสุด -STR_NUM_VERY_LOW :ต่ำมาก -STR_NUM_LOW :ต่ำ -STR_NUM_NORMAL :ปกติ -STR_NUM_HIGH :สูง -STR_NUM_CUSTOM :กำหนดเอง -STR_NUM_CUSTOM_NUMBER :กำหนดเอง ({NUM}) - -STR_VARIETY_NONE :ไม่มี -STR_VARIETY_VERY_LOW :ต่ำมาก -STR_VARIETY_LOW :ต่ำ -STR_VARIETY_MEDIUM :ปานกลาง -STR_VARIETY_HIGH :สูง -STR_VARIETY_VERY_HIGH :สูงมาก - -STR_AI_SPEED_VERY_SLOW :ช้ามาก -STR_AI_SPEED_SLOW :ช้า -STR_AI_SPEED_MEDIUM :ปานกลาง -STR_AI_SPEED_FAST :เร็ว -STR_AI_SPEED_VERY_FAST :เร็วมาก - -STR_SEA_LEVEL_VERY_LOW :ต่ำมาก -STR_SEA_LEVEL_LOW :ต่ำ -STR_SEA_LEVEL_MEDIUM :ปานกลาง -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_DISASTER_NONE :ไม่มี -STR_DISASTER_REDUCED :ภาวะลดลง -STR_DISASTER_NORMAL :ภาวะปกติ - -STR_SUBSIDY_X1_5 :1.5 เท่า -STR_SUBSIDY_X2 :2 เท่า -STR_SUBSIDY_X3 :3 เท่า -STR_SUBSIDY_X4 :4 เท่า - -STR_TERRAIN_TYPE_VERY_FLAT :แบนราบมาก -STR_TERRAIN_TYPE_FLAT :แบนราบ -STR_TERRAIN_TYPE_HILLY :เป็นเนิน -STR_TERRAIN_TYPE_MOUNTAINOUS :แบบภูเขา - -STR_CITY_APPROVAL_PERMISSIVE :อนุญาต -STR_CITY_APPROVAL_TOLERANT :พอผ่อนผันให้ได้ -STR_CITY_APPROVAL_HOSTILE :ไม่เป็นมิตร - -STR_WARNING_NO_SUITABLE_AI :{WHITE}ไม่มี AI ที่เหมาะสมปรากฎ...{}คุณสามารถดาวน์โหลด AI จากระบบ 'Online Content' - -# Advanced settings window -STR_CONFIG_SETTING_CAPTION :{WHITE}ปรับแต่งเพิ่มเติม - - - -STR_CONFIG_SETTING_OFF :ปิด -STR_CONFIG_SETTING_ON :เปิด -STR_CONFIG_SETTING_DISABLED :ไม่ให้เรียกใช้งาน - -STR_CONFIG_SETTING_COMPANIES_OFF :ปิด -STR_CONFIG_SETTING_COMPANIES_OWN :บริษัทที่เป็นเจ้าของ -STR_CONFIG_SETTING_COMPANIES_ALL :บริษัททั้งหมด - -STR_CONFIG_SETTING_NONE :ไม่มี -STR_CONFIG_SETTING_ORIGINAL :ดั้งเดิม -STR_CONFIG_SETTING_REALISTIC :สมจริง - -STR_CONFIG_SETTING_HORIZONTAL_POS_LEFT :ซ้าย -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} -STR_CONFIG_SETTING_SMOKE_AMOUNT :จำนวนของหัวจักร ควัน/ประกาย: {STRING} -STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL :ต้นแบบการเร่งความเร็วของรถไฟ: {STRING} -STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL :รูปแบบการเร่งของรถยนต์: {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_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 :ตามอุตสาหกรรมอื่นๆ -STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :สำรวจ -STR_CONFIG_SETTING_MULTIPINDTOWN :อนุญาตให้มีหลายอุตสาหกรรมที่เหมือนกันต่อหนึ่งเมือง: {STRING} -STR_CONFIG_SETTING_SHOWFINANCES :แสดงหน้าต่างการเงินเมื่อสิ้นสุดแต่ละปี: {STRING} -STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :ตั้งให้คำสั่งที่เพิ่มใหม่เป็น 'ไม่หยุด' โดยปริยาย: {STRING} -STR_CONFIG_SETTING_STOP_LOCATION :คำสั่งใหม่ หยุดโดยปริยายที่ {STRING} ของชานชาลา -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_AUTOSCROLL :เลื่อนหน้าต่างเมื่อเม้าส์อยู่ใกล้ขอบหน้าจอ: {STRING} -STR_CONFIG_SETTING_BRIBE :อนุญาตให้ติดสินบนเจ้าหน้าที่ท้องถิ่น: {STRING} -STR_CONFIG_SETTING_ALLOW_EXCLUSIVE :อนุญาตให้ซื้อสิทธิ์การขนส่งแต่เพียงผู้เดียว: {STRING} -STR_CONFIG_SETTING_ALLOW_FUND_ROAD :อนุญาตให้ใช้เงินทุนในการก่อสร้างถนนใหม่: {STRING} -STR_CONFIG_SETTING_ALLOW_GIVE_MONEY :อนุญาตให้ส่งเงินแก่บริษัทอื่นๆ: {STRING} -STR_CONFIG_SETTING_FREIGHT_TRAINS :ตัวคุณสำหรับการขนส่งสินค้า เพื่อจำลองรถไฟหนัก: {STRING} -STR_CONFIG_SETTING_PLANE_CRASHES :จำนวนเครื่องบินที่ตก: {STRING} -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_COMPETITOR_ROAD :อนุญาตให้มีที่หยุดรถแบบขับผ่านบนถนนของบริษัทอื่นๆ: {STRING} -STR_CONFIG_SETTING_ADJACENT_STATIONS :อนุญาติให้สร้างสถานีติดกัน: {STRING} -STR_CONFIG_SETTING_DYNAMIC_ENGINES :เปิดใช้การ NewGRF engine หลายชุดพร้อมกัน: {STRING} -STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}ไม่สามารถเปลี่ยนการตั้งค่านี้ได้เมื่อมียานพาหนะ -STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :ค่าบำรุงรักษาโครงสร้างพื้นฐาน: {STRING} - -STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :สนามบินไม่มีวันหมดอายุ: {STRING} - -STR_CONFIG_SETTING_WARN_LOST_VEHICLE :เตือนหากพาหนะขาดทุน: {STRING} -STR_CONFIG_SETTING_ORDER_REVIEW :ทบทวนดูคำสั่งของยานพาหนะ: {STRING} -STR_CONFIG_SETTING_ORDER_REVIEW_OFF :ไม่ -STR_CONFIG_SETTING_ORDER_REVIEW_EXDEPOT :ใช่ แต่ยกเว้นยานพาหนะที่หยุดวิ่ง -STR_CONFIG_SETTING_ORDER_REVIEW_ON :ของทุกยานพาหนะ -STR_CONFIG_SETTING_WARN_INCOME_LESS :เตือนเมือรายได้ของยานพาหนะเป็นลบ: {STRING} -STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :ยานพาหนะไม่หมดอายุ: {STRING} -STR_CONFIG_SETTING_AUTORENEW_VEHICLE :เปลี่ยนยานพาหนะใหม่โดยอัตโนมัติเมื่อเก่าเกินไป: {STRING} -STR_CONFIG_SETTING_AUTORENEW_MONEY :จำนวนเงินขั้นต่ำที่ให้เปลี่ยนยานพาหนะโดยอัตโนมัติ: {STRING} -STR_CONFIG_SETTING_POPULATION_IN_LABEL :แสดงจำนวนประชากรของเมืองในป้ายชื่อเมือง: {STRING} -STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :ความหนาของเส้นกราฟ: {STRING} - -STR_CONFIG_SETTING_LAND_GENERATOR :ตัวสังเคราะห์ภูมิประเทศ: {STRING} -STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :ดั้งเดิม -STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis -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_TREE_PLACER :อัลกอริธึมสำหรับการวางต้นไม้: {STRING} -STR_CONFIG_SETTING_TREE_PLACER_NONE :ไม่มี -STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :ดั้งเดิม -STR_CONFIG_SETTING_TREE_PLACER_IMPROVED :ปรังปรุงแล้ว -STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :ทิศการหมุน Heightmap: {STRING} -STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :ทวนเข็มนาฬิกา -STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :ตามเข็มนาฬิกา -STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :ระดับความสูงที่ แผนที่ flat scenario ได้: {STRING} -STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES :ยอมให้เปลี่ยนสภาพพื้นผิวบริเวณช่องริมขอบแผนที่: {STRING} -STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}ขอบทางเหนือมีอย่างน้อยหนึ่งช่องหรือมากกว่านั้นที่ไม่ว่าง -STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}หนึ่งช่องหรือมากกว่านั้นที่ขอบด้านในด้านหนึ่งไม่ใช่น้ำ - -STR_CONFIG_SETTING_SERVICEATHELIPAD :ซ่อมบำรุง เฮลิคอปเตอร์ ที่ลานจอด ฮ. โดยอัตโนมัติ: {STRING} -STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR :โยงแถบเครื่องมือภูมิทัศน์กับแถบเครื่องมือรถไฟ/ถนน/น้ำ/สนามบิน: {STRING} -STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR :สีของพื้นดินที่ใช้ในแผนที่ย่อ: {STRING} -STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :สีเขียว -STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :สีเขียวแก่ -STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :สีม่วง -STR_CONFIG_SETTING_REVERSE_SCROLLING :กลับทิศการเลื่อน: {STRING} -STR_CONFIG_SETTING_SMOOTH_SCROLLING :เลื่อนอย่างนิ่มนวลบนจอภาพ: {STRING} -STR_CONFIG_SETTING_MEASURE_TOOLTIP :แสดง tooltip วัดขนาดเมื่อใช่เครื่องมีสร้างต่าง ๆ: {STRING} -STR_CONFIG_SETTING_LIVERIES :แสดงเครื่องแบบบริษัท: {STRING} -STR_CONFIG_SETTING_LIVERIES_NONE :ไม่เลย -STR_CONFIG_SETTING_LIVERIES_OWN :บริษัทของท่าน -STR_CONFIG_SETTING_LIVERIES_ALL :ทุกบริษัท -STR_CONFIG_SETTING_PREFER_TEAMCHAT :ใช้การคุยระหว่างทีมด้วย : {STRING} -STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING :ความสามารถของปุ่มเลื่อน: {STRING} -STR_CONFIG_SETTING_SCROLLWHEEL_ZOOM :ขยายแผนที่ -STR_CONFIG_SETTING_SCROLLWHEEL_SCROLL :เลื่อนแผนที่ -STR_CONFIG_SETTING_SCROLLWHEEL_OFF :ปิด -STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER :ความเร็วการเลื่อนของแผนที่: {STRING} - -STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU :จำลองคลิกขวา: {STRING} -STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Command+คลิก -STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Ctrl+Click -STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :ปิด - -STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :เลื่อนด้วยคลิกซ้าย: {STRING} - -STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :ใช้รูปแบบวันที่ {STRING} เป็นชื่อเซฟของเกม -STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :ยาว (31 ธ.ค. 2551) -STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :สั้น (31-12-2551) -STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :มาตรฐาน (2551-12-31) - -STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE :เลือกใช้แบบเดิมสำหรับ NewGRFs ที่ไม่สามารถระบุแหล่งได้: {STRING} -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 :ไม่กระทำ -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_LOADING_INDICATORS :ใช้ตัวบ่งบอกการบรรจุ: {STRING} -STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :แสดงตารางเวลาในแบบติ๊กแทนแบบวัน: {STRING} -STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE :แสดงเวลามาถึงและออกไปในตารางเวลา: {STRING} -STR_CONFIG_SETTING_QUICKGOTO :การสร้างคำสั่งยานพาหนะอย่างรวดเร็ว: {STRING} -STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE :ค่าเริ่มต้นชนิดรางรถไฟ(หลังเริ่มเกมใหม่/โหลดเกมเก่า): {STRING} -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_PERSISTENT_BUILDINGTOOLS :ให้คงการแสดงเครื่องมือการสร้างหลังการใช้: {STRING} -STR_CONFIG_SETTING_EXPENSES_LAYOUT :จัดกลุ่มรายจ่ายในหน้าต่างการเงินของบริษัท: {STRING} - - -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_AI_BUILDS_TRAINS :ไม่ยอมให้มีรถไฟสำหรับคอมพิวเตอร์: {STRING} -STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES :ไม่ยอมให้มียานพาหนะสำหรับคอมพิวเตอร์: {STRING} -STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT :ไม่ยอมให้มีเครื่องบินสำหรับคอมพิวเตอร์: {STRING} -STR_CONFIG_SETTING_AI_BUILDS_SHIPS :ไม่ยอมให้มีเรือสำหรับคอมพิวเตอร์: {STRING} - - -STR_CONFIG_SETTING_AI_IN_MULTIPLAYER :อนุญาตให้ใช้ปัญญาประดิษฐ์ (AI) สำหรับหลายผู้เล่น: {STRING} -STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES :จำนวน opcodes ก่อนที่สคริปต์ถูกหยุด: {STRING} - -STR_CONFIG_SETTING_SERVINT_ISPERCENT :ระยะเวลาซ่อมบำรุงเป็นเปอร์เซนต์: {STRING} -STR_CONFIG_SETTING_NOSERVICE :ไม่ใช้งานการซ่อมบำรุงเมื่อตั้งเป็นไม่มีการขัดข้อง: {STRING} -STR_CONFIG_SETTING_WAGONSPEEDLIMITS :เปิดใช้งานการจำกัดความเร็วของคันบรรทุก: {STRING} -STR_CONFIG_SETTING_DISABLE_ELRAILS :ไม่ยอมให้มีรางไฟฟ้า: {STRING} - -STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN :เมื่อมียานยนต์แรกมาถึงสถานีของผู้เล่น: {STRING} -STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER :เมื่อมียานยนต์แรกมาถึงสถานีของคู่แข่ง: {STRING} -STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS :อุบัติเหตุ / อุบัติภัย: {STRING} -STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION :ข้อมูลข่าวสารของบริษัท: {STRING} -STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN :การเปิดตัวของอุตสาหกรรม: {STRING} -STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE :การปิดตัวของอุตสาหกรรม: {STRING} -STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES :การเปลี่ยนแปลงทางเศรษฐกิจ: {STRING} -STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY :ผลผลิตที่ส่งออกให้บริษัทของเรา: {STRING} -STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER :ผลผลิตที่ส่งออกให้บริษัทคู่แข่ง: {STRING} -STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED :อุตสาหกรรมอื่นๆต้องการแลกเปลี่ยนสินค้า: {STRING} -STR_CONFIG_SETTING_NEWS_ADVICE :คำแนะนำ / ข้อมูลเกี่ยวกับยานยนต์ของบริษัท: {STRING} -STR_CONFIG_SETTING_NEWS_NEW_VEHICLES :ยานยนต์ใหม่ๆ: {STRING} -STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE :การเปลี่ยนแปลงการรับสินค้า: {STRING} -STR_CONFIG_SETTING_NEWS_SUBSIDIES :โครงการที่มีงบประมาณสนับสนุน: {STRING} -STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION :ข้อมูลทั่วไป: {STRING} - -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_STARTING_YEAR :ปีที่เริ่มต้น: {STRING} -STR_CONFIG_SETTING_SMOOTH_ECONOMY :ยอมให้มีเศรษฐกิจที่ราบรื่น (มากขึ้น, เปลี่ยนแปลงเล็กน้อย): {STRING} -STR_CONFIG_SETTING_ALLOW_SHARES :อนุญาตให้ซื้อหุ้นจากบริษัทอื่นได้: {STRING} -STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :สร้างสัญญาณธงโดยอัตโนมัติก่อน: {STRING} -STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI :เปิดใช้งาน GUI สำหรับอานัติสัญญาณ: {STRING} -STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE :ชนิดอานัติสัญญาณปริยายที่จะใช้: {STRING} -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_NORMAL :สัญญาณอย่างง่ายเท่านั้น -STR_CONFIG_SETTING_CYCLE_SIGNAL_PBS :สัญญาณเส้นทางเท่านั้น -STR_CONFIG_SETTING_CYCLE_SIGNAL_ALL :ทั้งหมด - -STR_CONFIG_SETTING_TOWN_LAYOUT :รูปแบบถนนสำหรับเมืองใหม่: {STRING} -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_ALLOW_TOWN_ROADS :ยอมให้เมืองสร้างถนนได้: {STRING} -STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :ยอมให้เมืองสร้างทางข้ามระดับดินได้: {STRING} -STR_CONFIG_SETTING_NOISE_LEVEL :ยอมให้เมืองควบคุมมลพิษทางเสียงของสนามบิน: {STRING} -STR_CONFIG_SETTING_TOWN_FOUNDING :ตั้งเมืองในเกม: {STRING} -STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :ห้าม -STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :ยอม -STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :ยอม, รูปแบบเมืองสุ่ม - -STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT :เปลี่ยนต้นไม้ในเกม: {STRING} -STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NONE :ไม่มี {RED}(breaks lumber mill) -STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_RAINFOREST :เฉพาะในป่าฝน -STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_ALL :ทุกหนทุกแห่ง - -STR_CONFIG_SETTING_TOOLBAR_POS :ตำแหน่งแถบเครื่องมือหลัก: {STRING} -STR_CONFIG_SETTING_STATUSBAR_POS :ตำแหน่งของแถบแสดงสถานะ: {STRING} -STR_CONFIG_SETTING_SOFT_LIMIT :จำนวนมากสุดของหน้าต่างที่ไม่ปักหมุด: {STRING} -STR_CONFIG_SETTING_ZOOM_MIN :ระดับการซูมสูงสุด: {STRING} -STR_CONFIG_SETTING_ZOOM_MAX :ระดับสูงสุดของการซูมออก: {STRING} -STR_CONFIG_SETTING_ZOOM_LVL_MIN :4 เท่า -STR_CONFIG_SETTING_ZOOM_LVL_IN_2X :2 เท่า -STR_CONFIG_SETTING_ZOOM_LVL_NORMAL :ปกติ -STR_CONFIG_SETTING_ZOOM_LVL_OUT_2X :2 เท่า -STR_CONFIG_SETTING_ZOOM_LVL_OUT_4X :4 เท่า -STR_CONFIG_SETTING_ZOOM_LVL_OUT_8X :8 เท่า -STR_CONFIG_SETTING_TOWN_GROWTH :ความเร็วการเจริญเติบโตของเมือง: {STRING} -STR_CONFIG_SETTING_TOWN_GROWTH_NONE :ไม่มี -STR_CONFIG_SETTING_TOWN_GROWTH_SLOW :ช้า -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_VEHICLES :{ORANGE}ยานพาหนะ -STR_CONFIG_SETTING_STATIONS :{ORANGE}สถานี -STR_CONFIG_SETTING_ECONOMY :{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 -STR_CONFIG_SETTING_PATHFINDER_YAPF_RECOMMENDED :YAPF {BLUE}(แนะนำ) - -STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :ตัวค้นหาเส้นทางสำหรับรถไฟ: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :ตัวค้นหาเส้นทางสำหรับรถยนต์: {STRING} -STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS :ตัวค้นหาเส้นทางสำหรับเรือ: {STRING} -STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :หมุนกลับอัตโนมัติที่เสาสัญญาณ: {STRING} - -STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}เปลี่ยนค่าการตั้งค่า - -# Config errors -STR_CONFIG_ERROR :{WHITE}เกิดข้อผิดพลาดกับไฟล์ที่เก็บข้อมูลการตั้งค่า -STR_CONFIG_ERROR_ARRAY :{WHITE}... เกิดข้อผิดพลาดในอาร์เรย์ '{STRING}' -STR_CONFIG_ERROR_INVALID_VALUE :{WHITE}...ค่านี้ไม่ถูกต้อง '{STRING}' สำหรับ '{STRING}' -STR_CONFIG_ERROR_DUPLICATE_GRFID :{WHITE}... กำลังเพิกเฉย NewGRF '{STRING}': GRF ID ซ้ำกับ '{STRING}' -STR_CONFIG_ERROR_INVALID_GRF :{WHITE}... กำลังเพิกเฉย NewGRF ที่ไม่ถูกต้อง '{STRING}': {STRING} -STR_CONFIG_ERROR_INVALID_GRF_NOT_FOUND :ไม่พบ -STR_CONFIG_ERROR_INVALID_GRF_UNSAFE :ไม่ปลอดภัยสำหรับการใช้แบบคงที่ -STR_CONFIG_ERROR_INVALID_GRF_SYSTEM :NewGRF ของระบบ -STR_CONFIG_ERROR_INVALID_GRF_INCOMPATIBLE :ไม่รองรับกับ OpenTTD เวอร์ชันนี้ -STR_CONFIG_ERROR_INVALID_GRF_UNKNOWN :ไม่ทราบ -STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_LEVEL :{WHITE}... ระดับการบับอัด '{STRING}' ไม่ถูกต้อง -STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_ALGORITHM :{WHITE}... รูปแบบการเซฟเกม '{STRING}' ใช้ไม่ได้... กำลังปรับค่ากลับเป็น '{STRING}' - -# Intro window -STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} - -STR_INTRO_NEW_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}ตั้งค่า AI/Game Script -STR_INTRO_QUIT :{BLACK}ออก - -STR_INTRO_TOOLTIP_NEW_GAME :{BLACK}เริ่มเกมใหม่, Ctrl+Click เพื่อข้ามการตั้งค่าแผนที่ -STR_INTRO_TOOLTIP_LOAD_GAME :{BLACK}เปิดเกมที่บันทึกไว้ -STR_INTRO_TOOLTIP_PLAY_HEIGHTMAP :{BLACK}เริ่มเกมใหม่โดยใช้ heightmap เป็นภูมิประเทศ -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_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/Game script -STR_INTRO_TOOLTIP_QUIT :{BLACK}ออกจากเกม OpenTTD - -STR_INTRO_TRANSLATION :{BLACK} การแปลภาษาส่วนนี้หายไป {NUM} string{P ""}. โปรดช่วยทำให้ OpenTTD ดีขึ้นโดยการสมัครเป็นผู้แปล. ดูใน readme.txt สำหรับรายละเอียด. - -# Quit window -STR_QUIT_CAPTION :{WHITE}ออกจากเกม -STR_QUIT_ARE_YOU_SURE_YOU_WANT_TO_EXIT_OPENTTD :{YELLOW}คุณแน่ใจว่าจะออกจากเกม OpenTTD แล้วกลับสู่ {STRING}? -STR_QUIT_YES :{BLACK}ใช่ -STR_QUIT_NO :{BLACK}ไม่ - -# 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}เลิกเล่น -STR_ABANDON_GAME_QUERY :{YELLOW}แน่ใจนะว่าจะเลิกเล่นเกมนี้? -STR_ABANDON_SCENARIO_QUERY :{YELLOW}คุณแน่ใจหรือที่จะยกเลิกแผนที่นี้? - -# Cheat window -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}เครื่องบินไอพ่นจะไม่ตกบ่อยๆ ในสนามบินขนาดเล็ก: {ORANGE}{STRING} -STR_CHEAT_SWITCH_CLIMATE_TEMPERATE_LANDSCAPE :ภูมิประเทศเขตอบอุ่น -STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :ภูมิประเทศเขตกึ่งขั้วโลก -STR_CHEAT_SWITCH_CLIMATE_SUB_TROPICAL_LANDSCAPE :ภูมิประเทศเขตกึ่งมรสุม -STR_CHEAT_SWITCH_CLIMATE_TOYLAND_LANDSCAPE :ภูมิประเทศเมืองของเล่น -STR_CHEAT_CHANGE_DATE :{LTBLUE}เปลี่ยนวันที่: {ORANGE}{DATE_SHORT} -STR_CHEAT_CHANGE_DATE_QUERY_CAPT :{WHITE}เปลี่ยนปีปัจจุบัน -STR_CHEAT_SETUP_PROD :{LTBLUE}เปิดใช้งานการแก้ไขราคาผลผลิต: {ORANGE}{STRING} - -# Livery window -STR_LIVERY_CAPTION :{WHITE}สร้างแบบสีใหม่ - -STR_LIVERY_GENERAL_TOOLTIP :{BLACK}แสดงแบบสีทั่วไป -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}เลือกสีหลักของแบบสีที่เลือก -STR_LIVERY_SECONDARY_TOOLTIP :{BLACK}เลือกสีรองของแบบสีที่เลือก -STR_LIVERY_PANEL_TOOLTIP :{BLACK}เลือกแบบสีที่จะเปลี่ยน หรือหลายแบบโดย Ctrl+คลิก คลิกบนกล่องเพิ่อปิดเปิดการใช้งานแบบสีนั้น - -STR_LIVERY_DEFAULT :ชุดสีมาตรฐาน -STR_LIVERY_STEAM :รถไฟไอน้ำ -STR_LIVERY_DIESEL :รถไฟดีเซล -STR_LIVERY_ELECTRIC :รถไฟฟ้า -STR_LIVERY_MONORAIL :รถไฟรางเดี่ยว -STR_LIVERY_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 :ตู้โดยสาร (รางเดี่ยว -STR_LIVERY_PASSENGER_WAGON_MAGLEV :ตู้โดยสาร (แมคเลฟ) -STR_LIVERY_FREIGHT_WAGON :ตู้สินค้า -STR_LIVERY_BUS :รถบัส -STR_LIVERY_TRUCK :รถบรรทุก -STR_LIVERY_PASSENGER_SHIP :เรือเฟอรี่โดยสาร -STR_LIVERY_FREIGHT_SHIP :การขนส่งด้วยเรือ -STR_LIVERY_HELICOPTER :เฮลิคอปเตอร์ -STR_LIVERY_SMALL_PLANE :เครื่องบินขนาดเล็ก -STR_LIVERY_LARGE_PLANE :เครื่องบินขนาดใหญ่ -STR_LIVERY_PASSENGER_TRAM :ผู้โดยสารรถราง -STR_LIVERY_FREIGHT_TRAM :การขนส่งด้วยรถราง - -# Face selection window -STR_FACE_CAPTION :{WHITE}เลือกใบหน้า -STR_FACE_CANCEL_TOOLTIP :{BLACK}ยกเลิการเลือกใบหน้าใหม่ -STR_FACE_OK_TOOLTIP :{BLACK}ยอมรับการเลือกใบหน้าใหม่ - -STR_FACE_MALE_BUTTON :{BLACK}ผู้ชาย -STR_FACE_MALE_TOOLTIP :{BLACK}เลือกใบหน้าผู้ชาย -STR_FACE_FEMALE_BUTTON :{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_SIMPLE :{BLACK}อย่างง่าย -STR_FACE_SIMPLE_TOOLTIP :{BLACK}เลือกใบหน้าอย่างง่าย -STR_FACE_LOAD :{BLACK}โหลด -STR_FACE_LOAD_TOOLTIP :{BLACK}โหลดใบหน้าที่ชอบ -STR_FACE_LOAD_DONE :{WHITE}ใบหน้าที่ชอบถูกโหลดจากไฟล์กำหนดค่าของ OpenTTD แล้ว -STR_FACE_FACECODE :{BLACK}ใบหน้าผู้เล่นเบอร์ -STR_FACE_FACECODE_TOOLTIP :{BLACK}ดู และ/หรือ ตั้งหมายเลขใบหน้าผู้เล่น -STR_FACE_FACECODE_CAPTION :{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}บันทึกใบหน้าโปรด -STR_FACE_SAVE_DONE :{WHITE}ใบหน้านี้จะถูกบันทึกเป็นใบหน้าโปรดในไฟล์การตั้งค่าของ OpenTTD -STR_FACE_EUROPEAN :{BLACK}ยุโรป -STR_FACE_SELECT_EUROPEAN :{BLACK}เลือกใบหน้ายุโรป -STR_FACE_AFRICAN :{BLACK}แอฟริกัน -STR_FACE_SELECT_AFRICAN :{BLACK}เลือกใบหน้าแอฟริกัน -STR_FACE_YES :ใช่ -STR_FACE_NO :ไม่ -STR_FACE_MOUSTACHE_EARRING_TOOLTIP :{BLACK}เปิดใช้งานหนวด -STR_FACE_HAIR :ผม: -STR_FACE_HAIR_TOOLTIP :{BLACK}เปลี่ยนผม -STR_FACE_EYEBROWS :คิ้ว: -STR_FACE_EYEBROWS_TOOLTIP :{BLACK}เปลี่ยนคิ้ว -STR_FACE_EYECOLOUR :สีตา: -STR_FACE_EYECOLOUR_TOOLTIP :{BLACK}เปลี่ยนสีตา -STR_FACE_GLASSES :แว่น: -STR_FACE_GLASSES_TOOLTIP :{BLACK}เปิดใช้งานแว่นตา -STR_FACE_GLASSES_TOOLTIP_2 :{BLACK}เปลี่ยนแว่นตา -STR_FACE_NOSE :จมูก: -STR_FACE_NOSE_TOOLTIP :{BLACK}เปลี่ยนจมูก -STR_FACE_LIPS :ปาก: -STR_FACE_MOUSTACHE :หนวด: -STR_FACE_LIPS_MOUSTACHE_TOOLTIP :{BLACK}เปลี่ยนปากหรือหนวด -STR_FACE_CHIN :คาง: -STR_FACE_CHIN_TOOLTIP :{BLACK}เปลี่ยนคาง -STR_FACE_JACKET :เสื้อ: -STR_FACE_JACKET_TOOLTIP :{BLACK}เปลี่ยนเสื้อ -STR_FACE_COLLAR :คอเสื้อ: -STR_FACE_COLLAR_TOOLTIP :{BLACK}เปลี่ยนคอเสื้อ -STR_FACE_TIE :เนคไท: -STR_FACE_EARRING :ต่างหู: -STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}เปลี่ยนเนคไทหรือต่างหู - -# Network server list -STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}เล่นหลายคน -STR_NETWORK_SERVER_LIST_CONNECTION :{BLACK}การเชื่อมต่อ: -STR_NETWORK_SERVER_LIST_CONNECTION_TOOLTIP :{BLACK}เลือกเล่นระหว่างอินเตอร์เน็ตหรือ LAN -STR_NETWORK_SERVER_LIST_LAN :LAN -STR_NETWORK_SERVER_LIST_INTERNET :Internet -STR_NETWORK_SERVER_LIST_PLAYER_NAME :{BLACK}ชื่อผู้เล่น: -STR_NETWORK_SERVER_LIST_ENTER_NAME_TOOLTIP :{BLACK}เป็นชื่อที่ผู้เล่นคนอื่นจะมองเห็น - -STR_NETWORK_SERVER_LIST_GAME_NAME :{BLACK}ชื่อ -STR_NETWORK_SERVER_LIST_GAME_NAME_TOOLTIP :{BLACK}ชื่อของเกม -STR_NETWORK_SERVER_LIST_GENERAL_ONLINE :{BLACK}{COMMA}/{COMMA} - {COMMA}/{COMMA} -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_DATE_CAPTION :{BLACK}วันที่ -STR_NETWORK_SERVER_LIST_DATE_CAPTION_TOOLTIP :{BLACK}วันที่ปัจจุบัน -STR_NETWORK_SERVER_LIST_YEARS_CAPTION :{BLACK}ปี -STR_NETWORK_SERVER_LIST_YEARS_CAPTION_TOOLTIP :{BLACK}จำนวนปีที่ผ่านไปในเกม{}ตั้งแต่เริ่มเล่น -STR_NETWORK_SERVER_LIST_INFO_ICONS_TOOLTIP :{BLACK}ภาษา, เวอร์ชันของเซิร์ฟเวอร์, และอื่นๆ - -STR_NETWORK_SERVER_LIST_CLICK_GAME_TO_SELECT :{BLACK}คลิกที่เกมจากรายการเพื่อเลือก -STR_NETWORK_SERVER_LIST_LAST_JOINED_SERVER :{BLACK}เซิร์ฟเวอร์ที่เข้าร่วมล่าสุด: -STR_NETWORK_SERVER_LIST_CLICK_TO_SELECT_LAST :{BLACK}คลิกเพื่อเลือกเซิร์ฟเวอร์ที่เล่นล่าสุด - -STR_NETWORK_SERVER_LIST_GAME_INFO :{SILVER}ข้อมูลเกม -STR_NETWORK_SERVER_LIST_CLIENTS :{SILVER}ลูกข่าย: {WHITE}{COMMA} / {COMMA} - {COMMA} / {COMMA} -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_ADDRESS :{SILVER}ที่อยู่เซิร์ฟเวอร์: {WHITE}{STRING} -STR_NETWORK_SERVER_LIST_START_DATE :{SILVER}วันที่เริ่ม: {WHITE}{DATE_SHORT} -STR_NETWORK_SERVER_LIST_CURRENT_DATE :{SILVER}วันที่ปัจจุบัน: {WHITE}{DATE_SHORT} -STR_NETWORK_SERVER_LIST_PASSWORD :{SILVER}ป้องกันด้วยรหัสผ่าน! -STR_NETWORK_SERVER_LIST_SERVER_OFFLINE :{SILVER}เซิร์ฟเวอร์ออฟไลน์ -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_REFRESH :{BLACK}เรียกดูเซิร์ฟเวอร์ใหม่ -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_START_SERVER :{BLACK}เริ่มเซิร์ฟเวอร์ใหม่ -STR_NETWORK_SERVER_LIST_START_SERVER_TOOLTIP :{BLACK}เริ่มเซิร์ฟเวอร์ใหม่ของคุณ - -STR_NETWORK_SERVER_LIST_PLAYER_NAME_OSKTITLE :{BLACK}ป้อนชื่อของคุณ -STR_NETWORK_SERVER_LIST_ENTER_IP :{BLACK}ป้อนที่อยู่ของโฮสต์ - -# Start new multiplayer server -STR_NETWORK_START_SERVER_CAPTION :{WHITE}เริ่มเกมผู้เล่นหลายคนใหม่ - -STR_NETWORK_START_SERVER_NEW_GAME_NAME :{BLACK}ชื่อเกม: -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_LAN_INTERNET :แลน / อินเตอร์เน็ต -STR_NETWORK_START_SERVER_INTERNET_ADVERTISE :อินเตอร์เน็ต (มีการประกาศ) -STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} ลูกข่าย -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}จำนวนบริษัทสูงสุด: -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_TOOLTIP :{BLACK}จำกัดจำนวนผู้ชมที่อยู่ในเซิร์ฟเวอร์ -STR_NETWORK_START_SERVER_LANGUAGE_SPOKEN :{BLACK}ภาษาที่ใช้พูดคุย: -STR_NETWORK_START_SERVER_LANGUAGE_TOOLTIP :{BLACK}ผู้เล่นทุกคนจะสามารถทราบถึงภาษาที่ใช้พูดคุยในเซิร์ฟเวอร์นี้ - -STR_NETWORK_START_SERVER_NEW_GAME_NAME_OSKTITLE :{BLACK}พิมพ์ชื่อสำหรับเล่นในเครือข่าย - -# Network game languages -############ Leave those lines in this order!! -STR_NETWORK_LANG_ANY :อะไรก็ได้ -STR_NETWORK_LANG_ENGLISH :ภาษาอังกฤษ -STR_NETWORK_LANG_GERMAN :ภาษาเยอรมัน -STR_NETWORK_LANG_FRENCH :ภาษาฝรั่งเศส -STR_NETWORK_LANG_BRAZILIAN :ภาษาบราซิล -STR_NETWORK_LANG_BULGARIAN :ภาษาบัลกาเรีย -STR_NETWORK_LANG_CHINESE :จีน -STR_NETWORK_LANG_CZECH :เช็ก -STR_NETWORK_LANG_DANISH :เดนมาร์ก -STR_NETWORK_LANG_DUTCH :เนเธอร์แลนด์ -STR_NETWORK_LANG_ESPERANTO :ภาษาโลก(Esperanto) -STR_NETWORK_LANG_FINNISH :ฟินแลนด์ -STR_NETWORK_LANG_HUNGARIAN :ฮังการี -STR_NETWORK_LANG_ICELANDIC :ไอร์แลนด์ -STR_NETWORK_LANG_ITALIAN :อิตาลี -STR_NETWORK_LANG_JAPANESE :ญี่ปุ่น -STR_NETWORK_LANG_KOREAN :เกาหลี -STR_NETWORK_LANG_LITHUANIAN :ลิทัวเนีย -STR_NETWORK_LANG_NORWEGIAN :นอร์เวย์ -STR_NETWORK_LANG_POLISH :โปแลนด์ -STR_NETWORK_LANG_PORTUGUESE :โปรตุเกส -STR_NETWORK_LANG_ROMANIAN :โรมาเนีย -STR_NETWORK_LANG_RUSSIAN :รัสเซีย -STR_NETWORK_LANG_SLOVAK :สโลวัก -STR_NETWORK_LANG_SLOVENIAN :สโลวาเนีย -STR_NETWORK_LANG_SPANISH :สเปน -STR_NETWORK_LANG_SWEDISH :สวีเดน -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 :ลัทเวีย -############ End of leave-in-this-order - -# Network game lobby -STR_NETWORK_GAME_LOBBY_CAPTION :{WHITE}ห้องรับรองโหมดผู้เล่นหลายคน - -STR_NETWORK_GAME_LOBBY_PREPARE_TO_JOIN :{BLACK}กำลังเตรียมการเข้าร่วม: {ORANGE}{STRING} -STR_NETWORK_GAME_LOBBY_COMPANY_LIST_TOOLTIP :{BLACK}รายการของบริษัททั้งหมดที่อยู่ในเกมนี้ คุณสามารถที่จะเข้าร่วมหนึ่งในรายชื่อบริษัทเหล่านี้ได้หรือสามารถที่จะสร้างบริษัทใหม่ได้หากมีช่องว่างให้คุณ - -STR_NETWORK_GAME_LOBBY_COMPANY_INFO :{SILVER}ข้อมูลบริษัท -STR_NETWORK_GAME_LOBBY_COMPANY_NAME :{SILVER}ชื่อบริษัท: {WHITE}{STRING} -STR_NETWORK_GAME_LOBBY_INAUGURATION_YEAR :{SILVER}วันที่เริ่มเปิด: {WHITE}{NUM} -STR_NETWORK_GAME_LOBBY_VALUE :{SILVER}มูลค่าของบริษัท: {WHITE}{CURRENCY_LONG} -STR_NETWORK_GAME_LOBBY_CURRENT_BALANCE :{SILVER}งบดุลปัจจุบัน: {WHITE}{CURRENCY_LONG} -STR_NETWORK_GAME_LOBBY_LAST_YEARS_INCOME :{SILVER}รายได้ของปีที่แล้ว: {WHITE}{CURRENCY_LONG} -STR_NETWORK_GAME_LOBBY_PERFORMANCE :{SILVER}สมรรถภาพ: {WHITE}{NUM} - -STR_NETWORK_GAME_LOBBY_VEHICLES :{SILVER}ภาหนะ: {WHITE}{NUM} {TRAIN}, {NUM} {LORRY}, {NUM} {BUS}, {NUM} {SHIP}, {NUM} {PLANE} -STR_NETWORK_GAME_LOBBY_STATIONS :{SILVER}สถานี: {WHITE}{NUM} {TRAIN}, {NUM} {LORRY}, {NUM} {BUS}, {NUM} {SHIP}, {NUM} {PLANE} -STR_NETWORK_GAME_LOBBY_PLAYERS :{SILVER}ผู้เล่น: {WHITE}{STRING} - -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_TOOLTIP :{BLACK}ดูเกมในฐานะผู้ชม -STR_NETWORK_GAME_LOBBY_JOIN_COMPANY :{BLACK}เข้าร่วมบริษัท -STR_NETWORK_GAME_LOBBY_JOIN_COMPANY_TOOLTIP :{BLACK}ช่วยบริหารจัดการบริษัทนี้ - -# Network connecting window -STR_NETWORK_CONNECTING_CAPTION :{WHITE}กำลังเชื่อมต่อ... - -############ Leave those lines in this order!! -STR_NETWORK_CONNECTING_1 :{BLACK}(1/6) กำลังเชื่อมต่อ... -STR_NETWORK_CONNECTING_2 :{BLACK}(2/6) กำลังตรวจสอบการเข้าร่วม... -STR_NETWORK_CONNECTING_3 :{BLACK}(3/6) กรุณารอ... -STR_NETWORK_CONNECTING_4 :{BLACK}(4/6) ดาวโหลดแผนที่... -STR_NETWORK_CONNECTING_5 :{BLACK}(5/6) ประมวลข้อมูล... -STR_NETWORK_CONNECTING_6 :{BLACK}(6/6) ลงทะเบียน... - -STR_NETWORK_CONNECTING_SPECIAL_1 :{BLACK}รวบรวมข้อมูลเกม... -STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}รวบรวมข้อมูลบริษัท... -############ End of leave-in-this-order -STR_NETWORK_CONNECTING_WAITING :{BLACK}{NUM} client{P ""} อยู่ข้างหน้าคุณ -STR_NETWORK_CONNECTING_DOWNLOADING_1 :ดาวน์โหลดไปแล้ว {BLACK}{BYTES} -STR_NETWORK_CONNECTING_DOWNLOADING_2 :{BLACK}{BYTES} / {BYTES} ดาวโหลดไปแล้วทั้งสิ้น - -STR_NETWORK_CONNECTION_DISCONNECT :{BLACK}ตัดการเชื่อมต่อ - -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}รายการลูกข่าย -STR_NETWORK_COMPANY_LIST_SPECTATE :{WHITE}ผู้ชม -STR_NETWORK_COMPANY_LIST_NEW_COMPANY :{WHITE}บริษัทใหม่ - -# Network client list -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_CLIENT :ข้อความส่วนตัว - -STR_NETWORK_SERVER :เซิฟเวอร์ -STR_NETWORK_CLIENT :ลูกข่าย -STR_NETWORK_SPECTATORS :ผู้ชม - -STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}กรอกจำนวนเงินที่ต้องการจะให้ - -# Network set password -STR_COMPANY_PASSWORD_CANCEL :{BLACK}ไม่ทำการเก็บพาสเวิร์ดที่กรอกไว้แล้ว -STR_COMPANY_PASSWORD_OK :{BLACK}ตั้งพาสเวิร์ดของบริษัทใหม่ -STR_COMPANY_PASSWORD_CAPTION :{WHITE}พาสเวิร์ดของบริษัท -STR_COMPANY_PASSWORD_MAKE_DEFAULT :{BLACK}พาสเวิร์ดตั้งต้นของบริษัท -STR_COMPANY_PASSWORD_MAKE_DEFAULT_TOOLTIP :{BLACK}ใช้พาสเวิร์ดของบริษัทนี้เป็นพาสเวิร์ดตั้งต้นของบริษัทใหม่ - -# Network company info join/password -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_SET_PASSWORD :{BLACK}ตั้งพาสเวิร์ดของบริษัท - -# Network chat -STR_NETWORK_CHAT_SEND :{BLACK}ส่ง -STR_NETWORK_CHAT_COMPANY_CAPTION :[ทีม] : -STR_NETWORK_CHAT_CLIENT_CAPTION :[ส่วนตัว] {STRING}: -STR_NETWORK_CHAT_ALL_CAPTION :[ทั้งหมด] : - -STR_NETWORK_CHAT_COMPANY :[ทีม] {STRING}: {WHITE}{STRING} -STR_NETWORK_CHAT_TO_COMPANY :[ทีม] ถึง {STRING}: {WHITE}{STRING} -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}พิมพ์ข้อความสำหรับการพูดคุณในเน็ทเวิร์ก - -# Network messages -STR_NETWORK_ERROR_NOTAVAILABLE :{WHITE}ไม่พบอุปกรณ์เน็ทเวิร์กหรือได้ผ่านการคอมไพล์โดยไม่ได้ตัวเลือกนี้ ENABLE_NETWORK -STR_NETWORK_ERROR_NOSERVER :{WHITE}ไม่พบเกมในระบบเน็ทเวิร์ก -STR_NETWORK_ERROR_NOCONNECTION :{WHITE}เซิฟเวอร์ไม่ตอบรับคำขอ -STR_NETWORK_ERROR_NEWGRF_MISMATCH :{WHITE}ไม่สามารถติดต่อได้เนื่องจาก NewGRF ไม่ตรงกัน -STR_NETWORK_ERROR_DESYNC :{WHITE}การประสานเวลากับเกม ไม่สำเร็จ(synchronisation failed) -STR_NETWORK_ERROR_LOSTCONNECTION :{WHITE}การเชื่อมต่อกับเกมสูญหาย -STR_NETWORK_ERROR_SAVEGAMEERROR :{WHITE}ไม่สามารถโหลดเซฟเกมได้ -STR_NETWORK_ERROR_SERVER_START :{WHITE}ไม่สามารถเริ่มเซิฟเวอร์ได้ -STR_NETWORK_ERROR_CLIENT_START :{WHITE}ไม่สามารถเชื่อมต่อ -STR_NETWORK_ERROR_TIMEOUT :{WHITE}เชื่อมต่อครั้งที่ #{NUM} เกินเวลาที่กำหนด -STR_NETWORK_ERROR_SERVER_ERROR :{WHITE}ตรวจเจอการขัดข้องของโพรโทคอลและการเชื่อต่อถูกปิดลง -STR_NETWORK_ERROR_WRONG_REVISION :{WHITE}revision ของลูกข่ายไม่ตรงกับของเซิฟเวอร์ -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}ไม่อนุญาติให้โกงในเซิฟเวอร์นี้ -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_JOIN :{WHITE}คอมพิวเตอร์ของคุณใช้เวลามากเกินไปสำหรับการเข้าร่วมกับเซิร์ฟเวอร์ - -############ Leave those lines in this order!! -STR_NETWORK_ERROR_CLIENT_GENERAL :การผิดพลาดทั่วไป -STR_NETWORK_ERROR_CLIENT_DESYNC :desync ผิดพลาด -STR_NETWORK_ERROR_CLIENT_SAVEGAME :ไม่สามารถโหลดแผนที่ได้ -STR_NETWORK_ERROR_CLIENT_CONNECTION_LOST :การเชื่อมต่อสูญหาย -STR_NETWORK_ERROR_CLIENT_PROTOCOL_ERROR :โปรโทคอลผิดพลาด -STR_NETWORK_ERROR_CLIENT_NEWGRF_MISMATCH :NewGRF ไม่ตรง -STR_NETWORK_ERROR_CLIENT_NOT_AUTHORIZED :ไม่ผ่านการตรวจสอบ -STR_NETWORK_ERROR_CLIENT_NOT_EXPECTED :ได้รับแพกเก็ตที่ผิดพลาดหรือไม่คาดหวัง -STR_NETWORK_ERROR_CLIENT_WRONG_REVISION :revistion ผิด -STR_NETWORK_ERROR_CLIENT_NAME_IN_USE :ชื่อนี้ถูกใช้แล้ว -STR_NETWORK_ERROR_CLIENT_WRONG_PASSWORD :พาสเวิร์ดผิด -STR_NETWORK_ERROR_CLIENT_COMPANY_MISMATCH :บริษัทผิดใน DoCommand -STR_NETWORK_ERROR_CLIENT_KICKED :ถูกเตะโดยเซิฟเวอร์ -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_MAP :ใช้เวลามากไปในการดาวน์โหลดแผนที่ -STR_NETWORK_ERROR_CLIENT_TIMEOUT_JOIN :ใช้เวลามากไปในการประมวลผลแผนที่ -############ End of leave-in-this-order - -STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION_CAPTION :{WHITE}การเชื่อมต่อล้มเหลว -STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION :{WHITE}{NUM} วินาทีสุดท้ายไม่มีข้อมูลส่งถึงเครื่องแม่ข่าย - -# Network related errors -STR_NETWORK_SERVER_MESSAGE :*** {1:STRING} -############ Leave those lines in this order!! -STR_NETWORK_SERVER_MESSAGE_GAME_PAUSED :เกมหยุด ({STRING}) -STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_1 :เกมยังหยุดอยู่ ({STRING}) -STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_2 :เกมยังหยุดอยู่ ({STRING}, {STRING}) -STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_3 :เกมยังหยุดอยู่ ({STRING}, {STRING}, {STRING}) -STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_4 :เกมยังถูกหยุดอยู่ ({STRING}, {STRING}, {STRING}, {STRING}) -STR_NETWORK_SERVER_MESSAGE_GAME_UNPAUSED :เกมเริ่มต่อแล้ว ({STRING}) -STR_NETWORK_SERVER_MESSAGE_GAME_REASON_NOT_ENOUGH_PLAYERS :จำนวนผู้เล่น -STR_NETWORK_SERVER_MESSAGE_GAME_REASON_CONNECTING_CLIENTS :ลูกข่ายกำลังเชื่อมต่อ -STR_NETWORK_SERVER_MESSAGE_GAME_REASON_MANUAL :กำหนดเอง -STR_NETWORK_SERVER_MESSAGE_GAME_REASON_GAME_SCRIPT :เกมสคริปต์ -############ End of leave-in-this-order -STR_NETWORK_MESSAGE_CLIENT_LEAVING :กำลังออก -STR_NETWORK_MESSAGE_CLIENT_JOINED :*** {STRING} ได้เข้าร่วมเกม -STR_NETWORK_MESSAGE_CLIENT_JOINED_ID :*** {STRING} ได้เข้าร่วมเกม (Client #{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_LEFT :*** {STRING} ได้ออกจากเกม ({2: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}เซิฟเวอร์ปืดเซสซั่นนี้ -STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}เซิฟเวอร์กำลังทำการเริ่มต้นใหม่...{}กรุณารอซักครู่... - -# Content downloading window -STR_CONTENT_TITLE :{WHITE}กำลังโหลดเนื้อหา -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_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_FILTER_TITLE :{BLACK}Tag/name ตัวกรอง: -STR_CONTENT_OPEN_URL :{BLACK}เยี่ยมชมเว็บไซต์ -STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}เยี่ยมชมเว็บไซต์ของเนื้อหานี้ -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}dependency ตัวนี้ได้ทำการถูกเลือกไว้สำหรับดาวโหลด -STR_CONTENT_DETAIL_SUBTITLE_ALREADY_HERE :{SILVER}คุณมีเนื้อหาตัวนี้แล้ว -STR_CONTENT_DETAIL_SUBTITLE_DOES_NOT_EXIST :{SILVER}ไม่รู้จักเนื้อหานี้และไม่สามารถดาวโหลดได้ทาง OpenTTD -STR_CONTENT_DETAIL_UPDATE :{SILVER}เนื้อหานี้จะทำการติดตั้งทับกับเนื้อหาก่อนหน้านี้ {STRING} -STR_CONTENT_DETAIL_NAME :{SILVER}ชื่อ: {WHITE}{STRING} -STR_CONTENT_DETAIL_VERSION :{SILVER}เวอร์ชัน: {WHITE}{STRING} -STR_CONTENT_DETAIL_DESCRIPTION :{SILVER}คำบรรยาย: {WHITE}{STRING} -STR_CONTENT_DETAIL_URL :{SILVER}URL: {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}Dependencies: {WHITE}{STRING} -STR_CONTENT_DETAIL_TAGS :{SILVER}Tags: {WHITE}{STRING} -STR_CONTENT_NO_ZLIB :{WHITE}OpenTTD สร้างขึ้นโดยไม่ได้รองรับ "zlib" ... -STR_CONTENT_NO_ZLIB_SUB :{WHITE}... ไม่สามารถดาวโหลดเนื้อหาได้ - -# Order of these is important! -STR_CONTENT_TYPE_BASE_GRAPHICS :กราฟฟิคพื้นฐาน -STR_CONTENT_TYPE_NEWGRF :NewGRF -STR_CONTENT_TYPE_AI :AI -STR_CONTENT_TYPE_AI_LIBRARY :AI library -STR_CONTENT_TYPE_SCENARIO :Scenario -STR_CONTENT_TYPE_HEIGHTMAP :Heightmap -STR_CONTENT_TYPE_BASE_SOUNDS :เสียง -STR_CONTENT_TYPE_BASE_MUSIC :เพลงประกอบพื้นฐาน -STR_CONTENT_TYPE_GAME_SCRIPT :เกมสคริปต์ -STR_CONTENT_TYPE_GS_LIBRARY :GS library - -# Content downloading progress window -STR_CONTENT_DOWNLOAD_TITLE :{WHITE}กำลังดาวโหลดเนื้อหา -STR_CONTENT_DOWNLOAD_INITIALISE :{WHITE}ทำการร้องขอไฟล์... -STR_CONTENT_DOWNLOAD_FILE :{WHITE}ตอนนี้กำลังดาวโหลด {STRING} ({NUM} จากทั้งหมด {NUM}) -STR_CONTENT_DOWNLOAD_COMPLETE :{WHITE}ดาวโหลดเสร็จสิ้น -STR_CONTENT_DOWNLOAD_PROGRESS_SIZE :{WHITE}{BYTES} จากทั้งหมด {BYTES} ดาวโหลดไปแล้ว ({NUM} %) - -# 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_EXTRACT :{WHITE}ไม่สามารถทำการแตกไฟล์ที่ดาวโหลดมาแล้วได้ - -STR_MISSING_GRAPHICS_SET_CAPTION :{WHITE}กราฟฟิกขาดหาย -STR_MISSING_GRAPHICS_SET_MESSAGE :{BLACK}OpenTTD ไม่พบกราฟฟิกที่ใช้ในการทำงาน. คุณต้องการให้ OpenTTD ดาวน์โหลดและติดตั้งกราฟฟิกหรือไม่? -STR_MISSING_GRAPHICS_YES_DOWNLOAD :{BLACK}ดาวน์โหลดกราฟฟิก -STR_MISSING_GRAPHICS_NO_QUIT :{BLACK}ออกจาก OpenTTD - -# Transparency settings window -STR_TRANSPARENCY_CAPTION :{WHITE}ตัวเลือกค่าโปร่งใส -STR_TRANSPARENT_SIGNS_TOOLTIP :{BLACK}เปิด/ปิด การโปร่งใสของป้าย. กด Ctrl+Click สำหรับการล็อก -STR_TRANSPARENT_TREES_TOOLTIP :{BLACK}เปิด/ปิด การโปร่งใสของต้นไม้. กด Ctrl+Click สำหรับการล็อก -STR_TRANSPARENT_HOUSES_TOOLTIP :{BLACK}เปิด/ปิด การโปร่งใสของบ้าน. กด Ctrl+Click สำหรับการล็อก -STR_TRANSPARENT_INDUSTRIES_TOOLTIP :{BLACK}เปิด/ปิด การโปร่งใสของอุตสาหกรรม. กด Ctrl+Click สำหรับการล็อก -STR_TRANSPARENT_BUILDINGS_TOOLTIP :{BLACK}เปิด/ปิด การโปร่งใสของสิ่งปลูกสร้างที่สามารถสร้างได้เช่น สถานี, อู่ และที่หมาย เป็นต้น. กด Ctrl+Click สำหรับการล็อก -STR_TRANSPARENT_BRIDGES_TOOLTIP :{BLACK}เปิด/ปิด การโปร่งใสของสะพาน. กด Ctrl+Click สำหรับการล็อก -STR_TRANSPARENT_STRUCTURES_TOOLTIP :{BLACK}เปิด/ปิด การโปร่งใสของสิ่งปลูกสร้างอย่างเช่น ประภาคารและเสาส่งสัญญาณวิทยุ. กด Ctrl+Click สำหรับการล็อก -STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}เปิด/ปิด การโปร่งใสของสายจ่ายไฟรถไฟฟ้า. กด Ctrl+Click สำหรับการล็อก -STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}เปิด/ปิด การโปร่งใสของตัวบอกการบรรทุกของ. กด Ctrl+Click สำหรับการล็อก -STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}ตั้งให้วัตถุมองไม่เห็นแทนการโปร่งใส - -# Base for station construction window(s) -STR_STATION_BUILD_COVERAGE_AREA_TITLE :{BLACK}แสดงพื้นที่ให้บริการ -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 :{BLACK}กำลังต้องการ: {GOLD}{CARGO_LIST} -STR_STATION_BUILD_SUPPLIES_CARGO :{BLACK}ผลิต: {GOLD}{CARGO_LIST} - -# Join station window -STR_JOIN_STATION_CAPTION :{WHITE}รวมสถานี -STR_JOIN_STATION_CREATE_SPLITTED_STATION :{YELLOW}สร้างสถานีแยกต่างหาก - -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_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 เพื่อสลับการสร้าง/รื้อถอน รางรถไฟ -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+Click เพื่อ เปิด/ปิด หน้าต่างเลือกเสาสัญญาณ. กด 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 :รางรถไฟฟ้า -STR_RAIL_NAME_MONORAIL :รถไฟรางเดียว -STR_RAIL_NAME_MAGLEV :รถไฟพลังแม่เหล็ก - -# Rail depot construction window -STR_BUILD_DEPOT_TRAIN_ORIENTATION_CAPTION :{WHITE}ทิศทางของอู่รถไฟ -STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}เลือกทิศทางของอู่รถไฟ - -# Rail waypoint construction window -STR_WAYPOINT_CAPTION :{WHITE}ที่หมาย -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_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_DRAG_DROP :{BLACK}ลากและวาง -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_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}สัญญาณขาออก (แบบไฟฟ้า){}มีผลแบบเดียวกับสัญญาณกั้นแต่จำเป็นที่จะต้องเปิดสีที่ถูกต้องตรงขาเข้าและสัญญาณต่อเนื่องที่อยู่ก่อนหน้านั้น - -# Bridge selection window -STR_SELECT_RAIL_BRIDGE_CAPTION :{WHITE}เลือกสะพานรถไฟ -STR_SELECT_ROAD_BRIDGE_CAPTION :{WHITE}เลือกสะพานสำหรับรถยนต์ -STR_SELECT_BRIDGE_SELECTION_TOOLTIP :{BLACK}เลือกสะพาน - คลิกสะพานที่ท่านชื่นชอบเพื่อก่อสร้าง -STR_SELECT_BRIDGE_INFO :{GOLD}{STRING},{} {VELOCITY} {WHITE}{CURRENCY_LONG} -STR_SELECT_BRIDGE_SCENEDIT_INFO :{GOLD}{STRING},{} {VELOCITY} -STR_BRIDGE_NAME_SUSPENSION_STEEL :สะพานแขวนแบบคอนกรีต -STR_BRIDGE_NAME_GIRDER_STEEL :สะพานนั่งร้านแบบเหล็กกล้า -STR_BRIDGE_NAME_CANTILEVER_STEEL :สะพานคานแบบเหล็กกล้า -STR_BRIDGE_NAME_SUSPENSION_CONCRETE :สะพานแขวนแบบคอนกรีต -STR_BRIDGE_NAME_WOODEN :สะพานไม้ -STR_BRIDGE_NAME_CONCRETE :สะพานคอนกรีต -STR_BRIDGE_NAME_TUBULAR_STEEL :สะพานท่อแบบเหล็กกล้า -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_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_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}เลือกทิศทา - -# 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}เลือกทิศทางของสถานีรถรางขนส่งสินค้า - -# 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_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 -STR_DEPOT_BUILD_SHIP_CAPTION :{WHITE}ทิศทางของอู่เรือ -STR_DEPOT_BUILD_SHIP_ORIENTATION_TOOLTIP :{BLACK}เลือกทิศทางของอู่เรือ - -# Dock construction window -STR_STATION_BUILD_DOCK_CAPTION :{WHITE}ท่าเรือ - -# Airport toolbar -STR_TOOLBAR_AIRCRAFT_CAPTION :{WHITE}สนามบิน -STR_TOOLBAR_AIRCRAFT_BUILD_AIRPORT_TOOLTIP :{BLACK}สร้างสนามบิน. กด Ctrl เพื่อใช้สถานีร่วมกับที่อื่น. กด Shift เพื่อแสดงการประเมินค่าใช้จ่าย - -# Airport construction window -STR_STATION_BUILD_AIRPORT_CAPTION :{WHITE}การเลือกสนามบิน -STR_STATION_BUILD_AIRPORT_TOOLTIP :{BLACK}เลือกขนาด/ชนิดของสนามบิน -STR_STATION_BUILD_AIRPORT_CLASS_LABEL :{BLACK}ระดับชั้นสนามบิน -STR_STATION_BUILD_AIRPORT_LAYOUT_NAME :{BLACK}โครงสร้าง {NUM} - -STR_AIRPORT_SMALL :เล็ก -STR_AIRPORT_CITY :เมือง -STR_AIRPORT_METRO :ภูมิภาค -STR_AIRPORT_INTERNATIONAL :นานาชาติ -STR_AIRPORT_COMMUTER :ชานเมือง -STR_AIRPORT_INTERCONTINENTAL :ระหว่างทวีป -STR_AIRPORT_HELIPORT :จุดจอดเฮลิคอปเตอร์ -STR_AIRPORT_HELIDEPOT :โรงซ่อมเฮลิคอปเตอร์ -STR_AIRPORT_HELISTATION :สถานีจอดเฮลิคอปเตอร์ - -STR_AIRPORT_CLASS_SMALL :สนามบินขนาดเล็ก -STR_AIRPORT_CLASS_LARGE :สนามบินขนาดใหญ่ -STR_AIRPORT_CLASS_HUB :ศูนย์กลางสนามบิน -STR_AIRPORT_CLASS_HELIPORTS :สนามบินเฮลิคอปเตอร์ - -STR_STATION_BUILD_NOISE :{BLACK}สร้างเสียงรบกวน: {GOLD}{COMMA} - -# Landscaping toolbar -STR_LANDSCAPING_TOOLBAR :{WHITE}การจัดภูมิประเทศ -STR_LANDSCAPING_TOOLTIP_LOWER_A_CORNER_OF_LAND :{BLACK}ลดระดับมุมของที่ดิน. ลากเพื่อลดระดับมุมที่เลือกและปรับระดับบริเวณที่เลือกใหม่. กด Ctrl เพื่อเลือกบริเวณเป็นแนวทแยง. กด Shift เพื่อสลับระหว่างสิ่งปลูกสร้าง/แสดงการประเมินค่าใช้จ่าย -STR_LANDSCAPING_TOOLTIP_RAISE_A_CORNER_OF_LAND :{BLACK}ถมส่วนมุมของที่ดินให้สูงขึ้น -STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}ซื้อพื้นที่สำหรับใช้ในอนาคต. กด Shift เพื่อแสดงการประเมินค่าใช้จ่าย - -# Object construction window -STR_OBJECT_BUILD_CAPTION :{WHITE}การเลือกวัตถุ -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} ช่อง - -STR_OBJECT_CLASS_LTHS :ประภาคาร -STR_OBJECT_CLASS_TRNS :เครื่องส่งสัญญาณ - -# Tree planting window (last two for SE only) -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_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_INCREASE_SIZE_OF_LAND_AREA :{BLACK}เพิ่มพื้นที่ในการปรับระดับแผ่นดิน -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_QUERY_RESET_LANDSCAPE_CAPTION :{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}ก่อสร้างเมืองใหม่ เมื่อกด Shift+คลิกเมาส์ จะแสดงมูลค่าโดยประมาณ -STR_FOUND_TOWN_RANDOM_TOWN_BUTTON :{BLACK}สุ่มเมือง -STR_FOUND_TOWN_RANDOM_TOWN_TOOLTIP :{BLACK}สร้างเมืองโดยการสุ่มที่ตั้ง -STR_FOUND_TOWN_MANY_RANDOM_TOWNS :{BLACK}สุ่มหลายๆ เมือง -STR_FOUND_TOWN_RANDOM_TOWNS_TOOLTIP :{BLACK}สุ่มสร้างเมืองครอบคลุมแผนที่ทั้งหมด - -STR_FOUND_TOWN_NAME_TITLE :{YELLOW}ชื่อเมือง: -STR_FOUND_TOWN_NAME_EDITOR_TITLE :{BLACK}ใส่ชื่อเมือง -STR_FOUND_TOWN_NAME_EDITOR_HELP :{BLACK}คลิกเพื่อใส่ชื่อเมือง -STR_FOUND_TOWN_NAME_RANDOM_BUTTON :{BLACK}สุ่มชื่อ -STR_FOUND_TOWN_NAME_RANDOM_TOOLTIP :{BLACK}สุ่มสร้างชื่อใหม่ - -STR_FOUND_TOWN_INITIAL_SIZE_TITLE :{YELLOW}ขนาดเมือง: -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_CITY :{BLACK}เมืองใหญ่ - -STR_FOUND_TOWN_ROAD_LAYOUT :{YELLOW}รูปแบบถนนของเมือง: -STR_FOUND_TOWN_SELECT_TOWN_ROAD_LAYOUT :{BLACK}เลือกรูปแบบถนนสำหรับเมืองนี้ -STR_FOUND_TOWN_SELECT_LAYOUT_ORIGINAL :{BLACK}ดั้งเดิม -STR_FOUND_TOWN_SELECT_LAYOUT_BETTER_ROADS :{BLACK}ถนนดีขึ้น -STR_FOUND_TOWN_SELECT_LAYOUT_2X2_GRID :{BLACK}ตาราง 2x2 -STR_FOUND_TOWN_SELECT_LAYOUT_3X3_GRID :{BLACK}ตาราง 3x3 -STR_FOUND_TOWN_SELECT_LAYOUT_RANDOM :{BLACK}สุ่ม - -# Fund new industry window -STR_FUND_INDUSTRY_CAPTION :{WHITE}ก่อตั้งอุตสาหกรรมใหม่ -STR_FUND_INDUSTRY_SELECTION_TOOLTIP :{BLACK}เลือกอุตสาหกรรมที่เหมาะสมจากรายการนี้ -STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES :สุ่มหลากหลายอุตสาหกรรม -STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES_TOOLTIP :{BLACK}วางโรงงานอุตสาหกรรมแบบสุ่มทั่วแผนที่ -STR_FUND_INDUSTRY_INDUSTRY_BUILD_COST :{BLACK}ราคา: {YELLOW}{CURRENCY_LONG} -STR_FUND_INDUSTRY_PROSPECT_NEW_INDUSTRY :{BLACK}สำรวจ -STR_FUND_INDUSTRY_BUILD_NEW_INDUSTRY :{BLACK}สร้าง -STR_FUND_INDUSTRY_FUND_NEW_INDUSTRY :{BLACK}ก่อตั้ง - -# Industry cargoes window -STR_INDUSTRY_CARGOES_INDUSTRY_CAPTION :{WHITE}สายการผลิตสำหรับอุตสาหกรรม{STRING} -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_CARGO_TOOLTIP :{BLACK}{STRING}{}คลิกที่สินค้าเพื่อแสดงผู้ผลิตสินค้าและลูกค้า -STR_INDUSTRY_DISPLAY_CHAIN :{BLACK}แสดงห่วงโซ่ -STR_INDUSTRY_DISPLAY_CHAIN_TOOLTIP :{BLACK}แสดงอุปทานและการรับเข้าของอุตสาหกรรม -STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP :{BLACK}ไปยังแผนที่เล็ก - -# Land area window -STR_LAND_AREA_INFORMATION_CAPTION :{WHITE}ข้อมูลพื้นที่ -STR_LAND_AREA_INFORMATION_COST_TO_CLEAR_N_A :{BLACK}ราคาค่าทำพื้นที่ให้โล่ง: {LTBLUE}ไม่สามารถทำได้ -STR_LAND_AREA_INFORMATION_COST_TO_CLEAR :{BLACK}ราคาค่าทำพื้นที่ให้โล่ง: {RED}{CURRENCY_LONG} -STR_LAND_AREA_INFORMATION_REVENUE_WHEN_CLEARED :{BLACK}รายได้จากการเคลียร์: {LTBLUE}{CURRENCY_LONG} -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_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}) -STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}สร้างเมื่อ: {LTBLUE}{DATE_LONG} -STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}ระดับชั้นสถานี: {LTBLUE}{STRING} -STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}ชนิดสถานี: {LTBLUE}{STRING} -STR_LAND_AREA_INFORMATION_AIRPORT_CLASS :{BLACK}ระดับสนามบิน: {LTBLUE}{STRING} -STR_LAND_AREA_INFORMATION_AIRPORT_NAME :{BLACK}ชื่อสนามบิน: {LTBLUE}{STRING} -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} - -# 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_SNOW_COVERED_LAND :พื้นที่หิมะปกคลุม -STR_LAI_CLEAR_DESCRIPTION_DESERT :ทะเลทราย - -STR_LAI_RAIL_DESCRIPTION_TRACK :{STRING} ราง -STR_LAI_RAIL_DESCRIPTION_TRAIN_DEPOT :{STRING} อู่รถไฟ - -STR_LAI_ROAD_DESCRIPTION_ROAD :ถนน -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 :ทางรถราง - -# Houses come directly from their building names -STR_LAI_TOWN_INDUSTRY_DESCRIPTION_UNDER_CONSTRUCTION :{STRING} (กำลังก่อสร้าง) - -STR_LAI_TREE_NAME_TREES :ต้นไม้ -STR_LAI_TREE_NAME_RAINFOREST :ป่าดิบชื้น -STR_LAI_TREE_NAME_CACTUS_PLANTS :ตะบองเพชร - -STR_LAI_STATION_DESCRIPTION_RAILROAD_STATION :สถานีรถไฟ -STR_LAI_STATION_DESCRIPTION_AIRCRAFT_HANGAR :โรงเก็บเครื่องบิน -STR_LAI_STATION_DESCRIPTION_AIRPORT :สนามบิน -STR_LAI_STATION_DESCRIPTION_TRUCK_LOADING_AREA :จุดโหลดสำหรับรถบรรทุก -STR_LAI_STATION_DESCRIPTION_BUS_STATION :สถานีขนส่ง -STR_LAI_STATION_DESCRIPTION_SHIP_DOCK :ท่าเรือ -STR_LAI_STATION_DESCRIPTION_BUOY :ทุ่น -STR_LAI_STATION_DESCRIPTION_WAYPOINT :ที่หมาย - -STR_LAI_WATER_DESCRIPTION_WATER :น้ำ -STR_LAI_WATER_DESCRIPTION_CANAL :คลอง -STR_LAI_WATER_DESCRIPTION_LOCK :ล็อค -STR_LAI_WATER_DESCRIPTION_RIVER :แม่น้ำ -STR_LAI_WATER_DESCRIPTION_COAST_OR_RIVERBANK :ชายฝั่ง -STR_LAI_WATER_DESCRIPTION_SHIP_DEPOT :อู่เรือ - -# Industries come directly from their industry names - -STR_LAI_TUNNEL_DESCRIPTION_RAILROAD :อุโมงค์รถไฟ -STR_LAI_TUNNEL_DESCRIPTION_ROAD :อุโมงค์รถยนต์ - -STR_LAI_BRIDGE_DESCRIPTION_RAIL_SUSPENSION_STEEL :สะพานแขวนแบบเหล็กสำหรับรถไฟ -STR_LAI_BRIDGE_DESCRIPTION_RAIL_GIRDER_STEEL :สะพานนั่งร้านแบบเหล็กสำหรับรถไฟ -STR_LAI_BRIDGE_DESCRIPTION_RAIL_CANTILEVER_STEEL :สะพานคานแบบเหล็กกล้าสำหรับรถไฟ -STR_LAI_BRIDGE_DESCRIPTION_RAIL_SUSPENSION_CONCRETE :สะพานแขวนแบบคอนกรีตเสริมเหล็กสำหรับรถไฟ -STR_LAI_BRIDGE_DESCRIPTION_RAIL_WOODEN :สะพานแบบไม้สำหรับรถไฟ -STR_LAI_BRIDGE_DESCRIPTION_RAIL_CONCRETE :สะพานแบบคอนกรีตสำหรับรถไฟ -STR_LAI_BRIDGE_DESCRIPTION_RAIL_TUBULAR_STEEL :สะพานแบบท่อสำหรับรถไฟ - -STR_LAI_BRIDGE_DESCRIPTION_ROAD_SUSPENSION_STEEL :สะพานแขวนแบบเหล็กสำหรับรถยนต์ -STR_LAI_BRIDGE_DESCRIPTION_ROAD_GIRDER_STEEL :สะพานนั่งร้านแบบเหล็กสำหรับรถยนต์ -STR_LAI_BRIDGE_DESCRIPTION_ROAD_CANTILEVER_STEEL :สะพานคานแบบเหล็กกล้าสำหรับรถยนต์ -STR_LAI_BRIDGE_DESCRIPTION_ROAD_SUSPENSION_CONCRETE :สะพานแขวนแบบคอนกรีตเสริมเหล็กสำหรับรถยนต์ -STR_LAI_BRIDGE_DESCRIPTION_ROAD_WOODEN :สะพานเแบบไม้สำหรับรถยนต์ -STR_LAI_BRIDGE_DESCRIPTION_ROAD_CONCRETE :สะพานแบบคอนกรีตสำหรับรถยนต์ -STR_LAI_BRIDGE_DESCRIPTION_ROAD_TUBULAR_STEEL :สะพานแบบท่อสำหรับรถยนต์ - -STR_LAI_BRIDGE_DESCRIPTION_AQUEDUCT :ทางระบายน้ำ - -STR_LAI_OBJECT_DESCRIPTION_TRANSMITTER :เครื่องส่งสัญญาณ -STR_LAI_OBJECT_DESCRIPTION_LIGHTHOUSE :ประภาคาร -STR_LAI_OBJECT_DESCRIPTION_COMPANY_HEADQUARTERS :สำนักงานใหญ่บริษัท -STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :บริษัทเจ้าของพื้นที่ - -# About OpenTTD window -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-2012 ของ The OpenTTD team - -# Save/load game/scenario -STR_SAVELOAD_SAVE_CAPTION :{WHITE}บันทึกเกม -STR_SAVELOAD_LOAD_CAPTION :{WHITE}โหลดเกม -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_BYTES_FREE :{BLACK}{BYTES} ฟรี -STR_SAVELOAD_LIST_TOOLTIP :{BLACK}แสดงไดรฟ์, โฟลเดอร์, และไฟล์เซฟ -STR_SAVELOAD_EDITBOX_TOOLTIP :{BLACK}ชื่อที่กำลังถูกเลือกสำหรับเซฟเกม -STR_SAVELOAD_DELETE_BUTTON :{BLACK}ลบ -STR_SAVELOAD_DELETE_TOOLTIP :{BLACK}ลบเซฟเกมสำหรับชื่อที่เลือก -STR_SAVELOAD_SAVE_BUTTON :{BLACK}บันทึก -STR_SAVELOAD_LOAD_BUTTON :{BLACK}โหลด -STR_SAVELOAD_DETAIL_CAPTION :{BLACK}รายละเอียดเกม -STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}ไม่พบข้อมูล -STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING} -STR_SAVELOAD_DETAIL_GRFSTATUS :{SILVER}NewGRF: {WHITE}{STRING} - -STR_SAVELOAD_OSKTITLE :{BLACK}ป้อนชื่อเพื่อบันทึกเกม - -# World generation -STR_MAPGEN_WORLD_GENERATION_CAPTION :{WHITE}สร้างโลก -STR_MAPGEN_MAPSIZE :{BLACK}ขนาดแผนที่: -STR_MAPGEN_BY :{BLACK}* -STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}จำนวนเมือง -STR_MAPGEN_DATE :{BLACK}วันที่: -STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}จำนวนอุตสาหกรรม: -STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}เส้นความสูงเขตหิมะ: -STR_MAPGEN_RANDOM :{BLACK}สุ่ม -STR_MAPGEN_TREE_PLACER :{BLACK}Tอัลกอริธึมต้นไม้: -STR_MAPGEN_QUANTITY_OF_SEA_LAKES :{BLACK}ระดับทะเล: -STR_MAPGEN_QUANTITY_OF_RIVERS :{BLACK}แม่น้ำ: -STR_MAPGEN_SMOOTHNESS :{BLACK}ความเรียบ: - -# Strings for map borders at game generation -STR_MAPGEN_BORDER_TYPE :{BLACK}ขอบแผนที่: -STR_MAPGEN_NORTHWEST :{BLACK}ตะวันตกเฉียงเหนือ -STR_MAPGEN_NORTHEAST :{BLACK}ตะวันออกเฉียงเหนือ -STR_MAPGEN_SOUTHEAST :{BLACK}ตะวันออกเฉียงใต้ -STR_MAPGEN_SOUTHWEST :{BLACK}ตะวันตกเฉียงใต้ -STR_MAPGEN_BORDER_WATER :{BLACK}น้ำ -STR_MAPGEN_BORDER_RANDOM :{BLACK}สุ่ม -STR_MAPGEN_BORDER_RANDOMIZE :{BLACK}สุ่ม - -STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}ขนาด: -STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM} - - -# SE Map generation - - -# Map generation progress -STR_GENERATION_RIVER_GENERATION :{BLACK}สร้างแม่น้ำ -STR_GENERATION_OBJECT_GENERATION :{BLACK}สร้างวัตถุ - -# NewGRF settings -STR_NEWGRF_FILTER_TITLE :{ORANGE}กรองจากชื่อ: - - - -STR_NEWGRF_SETTINGS_MIN_VERSION :{BLACK}เวอร์ชันต่ำสุดที่รองรับ: {SILVER}{NUM} - -STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}ไม่รองรับกับ OpenTTD เวอร์ชั่นนี้ - -# NewGRF parameters window -STR_NEWGRF_PARAMETERS_RESET :{BLACK}ตั้งค่าใหม่ -STR_NEWGRF_PARAMETERS_RESET_TOOLTIP :{BLACK}ตั้งค่าพารามิเตอร์ทุกตัวให้เป็นแบบค่าดั้งเดิม -STR_NEWGRF_PARAMETERS_SETTING :{STRING}: {ORANGE}{STRING} -STR_NEWGRF_PARAMETERS_NUM_PARAM :{LTBLUE}จำนวนพารามิเตอร์: {ORANGE}{NUM} - -# NewGRF inspect window - -STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_OBJECT :วัตถุ - - -# Sprite aligner window - - -# NewGRF (self) generated warnings/errors -STR_NEWGRF_ERROR_MSG_INFO :{SILVER}{STRING} -STR_NEWGRF_ERROR_FATAL_POPUP :{WHITE}เกิดความผิดพลาดร้ายแรงเกี่ยวกับ NewGRF: {}{STRING} -STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}กราฟิกพื้นฐานที่ใช้อยู่มีสไปรท์ไม่สมบูรณ์{}กรุณาปรับรุ่นกราฟฟิกพื้นฐาน -STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} ถูกยกเลิกโดย {STRING} - -# NewGRF related 'general' warnings -STR_NEWGRF_POPUP_CAUTION_CAPTION :{WHITE}คำเตือน! - - - -# NewGRF status - -# NewGRF 'it's broken' warnings -STR_BROKEN_VEHICLE_LENGTH :{WHITE} รถไฟ '{VEHICLE}' ที่เป็นของ '{COMPANY}' มีความยาวไม่ถูกต้องซึ่งอาจทำให้เกิดปัญหากับ NewGRF และอาจะทำให้เกิดปัญหากับเกมได้ - -STR_NEWGRF_BUGGY :{WHITE}NewGRF '{0:STRING}' ให้รายละเอียดไม่ถูกต้อง. - -# 'User removed essential NewGRFs'-placeholders for stuff without specs - -# NewGRF scanning window -STR_NEWGRF_SCAN_CAPTION :{WHITE}ตรวจสอบ NewGRFs -STR_NEWGRF_SCAN_MESSAGE :{BLACK}ตรวจสอบ NewGRFs. ขึ้นอยู่กับจำนวนที่มี อาจใช้เวลาสักครู่... -STR_NEWGRF_SCAN_ARCHIVES :ตรวจหาแฟ้มข้อมูล - -# Sign list window - -# Sign window - - -# Town directory window -STR_TOWN_DIRECTORY_NONE :{ORANGE}- ไม่มี - -STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA}) - -# Town view window -STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN} -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_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} ต้องการหิมะ -STR_TOWN_VIEW_LOCAL_AUTHORITY_BUTTON :{BLACK}เจ้าหน้าที่ท้องถิ่น -STR_TOWN_VIEW_RENAME_TOOLTIP :{BLACK}เปลี่ยนชื่อเมือง - - - -# Town local authority window -STR_LOCAL_AUTHORITY_CAPTION :{WHITE}{TOWN} เจ้าหน้าที่ท้องถิ่น -STR_LOCAL_AUTHORITY_COMPANY_RATING :{YELLOW}{COMPANY} {COMPANY_NUM}: {ORANGE}{STRING} - - - -# Goal window -STR_GOALS_TEXT :{ORANGE}{STRING} - -# Goal question window -STR_GOAL_QUESTION_CAPTION_QUESTION :คำถาม -STR_GOAL_QUESTION_CAPTION_INFORMATION :ข้อมูล -STR_GOAL_QUESTION_CAPTION_WARNING :คำเตือน -STR_GOAL_QUESTION_CAPTION_ERROR :ข้อผิดพลาด - -### Start of Goal Question button list - -# Subsidies window -STR_SUBSIDIES_CAPTION :{WHITE}เงินอุดหนุน -STR_SUBSIDIES_OFFERED_TITLE :{BLACK}ให้เงินอุดหนุนสำหรับการบริการ: -STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}การบริการได้เงินอุดหนุนเรียบร้อยแล้ว: - -# Station list window -STR_STATION_LIST_STATION :{YELLOW}{STATION} {STATION_FEATURES} -STR_STATION_LIST_WAYPOINT :{YELLOW}{WAYPOINT} - -# 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_ACCEPTS_CARGO :{BLACK}กำลังต้องการ: {WHITE}{CARGO_LIST} - - -STR_STATION_VIEW_CARGO_RATING :{WHITE}{STRING}: {YELLOW}{STRING} ({COMMA}%) - -############ range for rating starts -############ range for rating ends - - - - - -# Waypoint/buoy view window -STR_WAYPOINT_VIEW_CAPTION :{WHITE}{WAYPOINT} - - -# Finances window -STR_FINANCES_YEAR :{WHITE}{NUM} -STR_FINANCES_NEGATIVE_INCOME :{BLACK}-{CURRENCY_LONG} -STR_FINANCES_POSITIVE_INCOME :{BLACK}+{CURRENCY_LONG} - -# Company view - - - - - - - -# Company infrastructure window - -# Industry directory -STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}- ไม่มี - - -# Industry view -STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}ระดับการผลิต: {YELLOW}{COMMA}% - -############ range for requires starts -############ range for requires ends - -############ range for produces starts -############ range for produces ends - -STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}เปลี่ยนระดับการผลิต (เปอร์เซ็นต์เพิ่มมากสุดถึง 800%) - -# Vehicle lists - - -STR_VEHICLE_LIST_PROFIT_THIS_YEAR_LAST_YEAR :{TINY_FONT}{BLACK}กำไรของปีนี้: {CURRENCY_LONG} (ปีที่ผ่านมา: {CURRENCY_LONG}) - - - -STR_VEHICLE_LIST_SEND_TRAIN_TO_DEPOT :ส่งเข้าอู่ซ่อมบำรุง -STR_VEHICLE_LIST_SEND_ROAD_VEHICLE_TO_DEPOT :ส่งเข้าอู่ซ่อมรถ -STR_VEHICLE_LIST_SEND_SHIP_TO_DEPOT :ส่งเข้าอู่ต่อเรือ -STR_VEHICLE_LIST_SEND_AIRCRAFT_TO_HANGAR :ส่งเข้าโรงเก็บเครื่องบิน - - - -# Group window - - - - - -# 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_MAGLEV_CAPTION :Maglev (รถไฟพลังแม่เหล็ก) ใหม่ - -STR_BUY_VEHICLE_TRAIN_ALL_CAPTION :รถไฟใหม่ -STR_BUY_VEHICLE_ROAD_VEHICLE_CAPTION :รถใหม่ -STR_BUY_VEHICLE_SHIP_CAPTION :เรือใหม่ -STR_BUY_VEHICLE_AIRCRAFT_CAPTION :เครื่องบินใหม่ - -STR_PURCHASE_INFO_SPEED_OCEAN :{BLACK}ความเร็วบนทะเล: {GOLD}{VELOCITY} -STR_PURCHASE_INFO_SPEED_CANAL :{BLACK}ความเร็วบนคลอง/แม่น้ำ: {GOLD}{VELOCITY} - -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_BUY_VEHICLE_BUTTON :{BLACK}ซื้อเรือรถ -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}ซื้อรถไฟที่เลือกไว้ เมื่อกด 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}เปลี่ยนชื่อ -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_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}เปลี่ยนชื่อชนิดของเรือ -STR_QUERY_RENAME_AIRCRAFT_TYPE_CAPTION :{WHITE}เปลี่ยนชื่อชนิดของเครื่องบิน - -# Depot window -STR_DEPOT_CAPTION :{WHITE}{DEPOT} - - -STR_DEPOT_NO_ENGINE :{BLACK}- -STR_DEPOT_VEHICLE_TOOLTIP :{BLACK}{ENGINE}{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_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_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}ขายรถไฟทั้งหมดที่อยู่ในโรงนี้ - - - - - - - - - - - -# Engine preview window - - -# Autoreplace window -STR_REPLACE_VEHICLE_TRAIN :รถไฟ -STR_REPLACE_VEHICLE_ROAD_VEHICLE :รถยนต์ -STR_REPLACE_VEHICLE_SHIP :เรือ -STR_REPLACE_VEHICLE_AIRCRAFT :อากาศยาน - - - - - - -# Vehicle view -STR_VEHICLE_VIEW_CAPTION :{WHITE}{VEHICLE} - - - - - - - - - - -# Messages in the start stop button in the vehicle view - -STR_VEHICLE_STATUS_HEADING_FOR_STATION_VEL :{LTBLUE}มุ่งหน้าสู่ {STATION}, {VELOCITY} -STR_VEHICLE_STATUS_NO_ORDERS_VEL :{LTBLUE}ไม่มีสถานที่ที่ต้องไป, {VELOCITY} - -# Vehicle stopped/started animations - -# Vehicle details -STR_VEHICLE_NAME_BUTTON :{BLACK}ชื่อ - - -# The next two need to stay in this order -STR_VEHICLE_INFO_AGE :{COMMA} ปี ({COMMA}) -STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} ปี ({COMMA}) - - - - - - - -# Extra buttons for train details windows - -STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY_TEXT :{BLACK}ความจุสินค้าทั้งหมดของรถไฟขบวนนี้: -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_DETAIL_TAB_CARGO :{BLACK}สินค้า -STR_VEHICLE_DETAIL_TAB_INFORMATION :{BLACK}ข้อมูล -STR_VEHICLE_DETAIL_TAB_CAPACITIES :{BLACK}ปริมาณที่รับได้ - - -# Vehicle refit -STR_REFIT_NEW_CAPACITY_COST_OF_AIRCRAFT_REFIT :{BLACK}ความจุใหม่: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}มูลค่าการเปลี่ยน: {RED}{CURRENCY_LONG} - - - - -# Order view - -STR_ORDER_INDEX :{COMMA}:{NBSP} -STR_ORDER_TEXT :{STRING} {STRING} {STRING} - -STR_ORDERS_END_OF_SHARED_ORDERS :- - สิ้นสุดรายการที่ใช้ร่วมกัน - - - -# Order bottom buttons - - - - - - -# Conditional order variables, must follow order of OrderConditionVariable enum -STR_ORDER_CONDITIONAL_REMAINING_LIFETIME :อายุการ (ปี) - - - - -STR_ORDERS_DELETE_ALL_TOOLTIP :{BLACK}ลบคำสั่งทั้งหมด - - - -# String parts to build the order string - - -STR_ORDER_GO_TO_NEAREST_DEPOT_FORMAT :{STRING} {STRING} {STRING} -STR_ORDER_GO_TO_DEPOT_FORMAT :{STRING} {DEPOT} - - -STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING} - -STR_ORDER_IMPLICIT :(อัตโนมัติ) - -STR_ORDER_NO_UNLOAD_NO_LOAD :(ไม่มีการขนถ่ายสินค้า) - - - - - - -STR_INVALID_ORDER :{RED} (คำสั่งไม่ถูกต้อง) - -# Time table window - - -STR_TIMETABLE_NOT_TIMETABLEABLE :เดินทาง (อัตโนมัติ; ตามตารางเวลาต่อไปที่ตั้งไว้) -STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :ความเร็วการเดินทางไม่เกิน {2:VELOCITY} (ไม่ได้กำหนดตารางเวลา) -STR_TIMETABLE_TRAVEL_FOR_SPEED :ความเร็วการเดินทางสำหรับ {STRING} สูงสุดไม่เกิน {VELOCITY} - - - - - - -STR_TIMETABLE_CHANGE_SPEED :{BLACK}เปลี่ยนความเร็วที่จำกัด -STR_TIMETABLE_CHANGE_SPEED_TOOLTIP :{BLACK}เปลี่ยนความเร็วการเดินทางสูงสุดของลำดับที่ถูกไฮไลท์ - -STR_TIMETABLE_CLEAR_SPEED :{BLACK}ยกเลิกการจำกัดความเร็ว -STR_TIMETABLE_CLEAR_SPEED_TOOLTIP :{BLACK}ยกเลิกความเร็วการเดินทางสูงสุดของลำดับที่ถูกไฮไลท์ - - - - - - -# Date window (for timetable) - - -# AI debug window -STR_AI_DEBUG_NAME_AND_VERSION :{BLACK}{STRING} (v{NUM}) -STR_AI_DEBUG_SETTINGS :{BLACK}ตั้งค่า AI -STR_AI_DEBUG_SETTINGS_TOOLTIP :{BLACK}เปลี่ยนการตั้งค่า AI -STR_AI_DEBUG_RELOAD :{BLACK}โหลด AI อีกครั้งหนึ่ง -STR_AI_DEBUG_SELECT_AI_TOOLTIP :{BLACK}ดูการผลลัพธ์การดีบักของ AI นี้ - - -# AI configuration window - -STR_AI_CONFIG_MOVE_UP :{BLACK}เลื่อนขึ้น -STR_AI_CONFIG_MOVE_UP_TOOLTIP :{BLACK}ย้าย AI ที่เลือกขึ้นด้านบนของรายชื่อ -STR_AI_CONFIG_MOVE_DOWN :{BLACK}เลื่อนลง -STR_AI_CONFIG_MOVE_DOWN_TOOLTIP :{BLACK}ย้าย AI ที่เลือกลงด้านล่างของรายชื่อ - - -STR_AI_CONFIG_CHANGE_NONE : - -# Available AIs window - - - -# AI Parameters -STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING} - - -# Textfile window -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_VIEW_README :{BLACK}แสดง readme -STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}Changelog -STR_TEXTFILE_VIEW_LICENCE :{BLACK}การอนุญาต - - -# Vehicle loading indicators - -# Income 'floats' - -# Saveload messages -STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}ขณะนี้กำลังบันทึก,{}โปรดรอจนกว่าจะเสร็จ! -STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :ข้อผิดพลาดจากภายใน: {STRING} -STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :เกมที่บันทึกไว้ เสีย - {STRING} -STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :เกมที่บันทึกไว้ สำหรับเวอร์ชันใหม่ - -# Map generation messages - - - -STR_ERROR_HEIGHTMAP_TOO_LARGE :{WHITE}... ภาพมีขนาดใหญ่เกินไป - - -# Soundset messages - -# Screenshot related messages - - -# Error message titles -STR_ERROR_MESSAGE_CAPTION :{YELLOW}ข้อความ -STR_ERROR_MESSAGE_CAPTION_OTHER_COMPANY :{YELLOW}ข้อความจาก {STRING} - -# Generic construction errors -STR_ERROR_OFF_EDGE_OF_MAP :{WHITE}อยู่นอกขอบแผนที่ -STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP :{WHITE}ใกล้กับขอบแผนที่เกินไป -STR_ERROR_NOT_ENOUGH_CASH_REQUIRES_CURRENCY :{WHITE}มีเงินไม่พอ - ต้องการอีก {CURRENCY_LONG} -STR_ERROR_FLAT_LAND_REQUIRED :{WHITE}ต้องใช้พื้นที่ราบ -STR_ERROR_CAN_T_DO_THIS :{WHITE}ไม่สามารถทำได้... -STR_ERROR_CAN_T_CLEAR_THIS_AREA :{WHITE}ไม่สามารถทำให้พื้นที่นี้โล่งได้... -STR_ERROR_SITE_UNSUITABLE :{WHITE}... พื้นที่นั้นไม่เหมาะสม -STR_ERROR_OWNED_BY :{WHITE}... เป็นของ {STRING} -STR_ERROR_GENERIC_OBJECT_IN_THE_WAY :{WHITE}{1:STRING} ในเส้นทาง -STR_ERROR_NOT_ALLOWED_WHILE_PAUSED :{WHITE}ไม่อนุญาตขณะหยุดเกม - -# Local authority errors - -# Levelling errors - -# Company related errors - - -# Town related errors -STR_ERROR_CAN_T_GENERATE_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}... ติดกับขอบแผนที่มากเกินไป -STR_ERROR_TOO_CLOSE_TO_ANOTHER_TOWN :{WHITE}... ใกล้กับเมืองอื่นมากเกินไป -STR_ERROR_TOO_MANY_TOWNS :{WHITE}... มีเมืองมากเกินไป -STR_ERROR_NO_SPACE_FOR_TOWN :{WHITE}... มีพื้นที่บนแผนที่ไม่มากพอ -STR_ERROR_TOWN_CAN_T_DELETE :{WHITE}ไม่สามารถทำลายเมืองได้{}สถานีหรือโรงเก็บนี้เป็นทรัพย์สินของเมืองไม่สามารถทำลายหรือเคลื่อนย้ายได้ - -# Industry related errors -STR_ERROR_TOO_MANY_INDUSTRIES :{WHITE}... มีอุตสาหกรรมมากเกินไป -STR_ERROR_MUST_FOUND_TOWN_FIRST :{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}... สามารถวางตำแหน่งบริเวณขอบของแผนที่เท่านั้น -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_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_STATION_TOO_SPREAD_OUT :{WHITE}... ขอบเขตของสถานีกว้างเกินไป -STR_ERROR_TOO_MANY_STATIONS_LOADING :{WHITE}มีสถานีหรือจุดโหลด มากเกินไปแล้วในเกม - -# Station destruction related errors -STR_ERROR_MUST_REMOVE_ROAD_STOP_FIRST :{WHITE}ต้องลบถนนออกก่อน - - -# Waypoint related errors - - - -# Depot related errors -STR_ERROR_CAN_T_BUILD_ROAD_DEPOT :{WHITE}ตรงนี้ไม่สามารถสร้างอู่รถได้ - - -STR_ERROR_TRAIN_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... ต้องหยุดในโรงซ่อมบำรุง -STR_ERROR_SHIP_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... ต้องหยุดในโรงซ่อมบำรุง -STR_ERROR_AIRCRAFT_MUST_BE_STOPPED_INSIDE_HANGAR :{WHITE}... ต้องหยุดในโรงเก็บ - - - - -# Autoreplace related errors - -# Rail construction errors -STR_ERROR_MUST_REMOVE_SIGNALS_FIRST :{WHITE}ต้องถอดสัญญาณออกก่อน -STR_ERROR_NO_SUITABLE_RAILROAD_TRACK :{WHITE}ไม่มีรางรถไฟที่เหมาะสม -STR_ERROR_MUST_REMOVE_RAILROAD_TRACK :{WHITE}ต้องทำลายทางรถไฟทิ้งเสียก่อน -STR_ERROR_CAN_T_BUILD_RAILROAD_TRACK :{WHITE}ตรงนี้ไม่สามารถสร้างรางรถไฟได้... -STR_ERROR_CAN_T_REMOVE_RAILROAD_TRACK :{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}... ไม่มีทางรถราง - -# 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_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}... สร้างบนแม่น้ำไม่ได้นะจ๊ะ - -# Tree related errors - -# Bridge related errors -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_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... จุดเริ่มต้นและจุดสิ้นสุดของสะพานต้องอยู่บนพื้นดิน -STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... สะพานมีความยาวมากเกินไป - -# Tunnel related errors -STR_ERROR_TUNNEL_TOO_LONG :{WHITE}... อุโมงค์มีความยาวมากเกินไป - -# Object related errors -STR_ERROR_TOO_MANY_OBJECTS :{WHITE}... มีวัตถุมากเกินไป -STR_ERROR_CAN_T_BUILD_OBJECT :{WHITE}ไม่สามารถสร้างวัตถุได้ - -# Group related errors - -# Generic vehicle errors - - - - - -STR_ERROR_CAN_T_BUY_TRAIN :{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_TOO_MANY_VEHICLES_IN_GAME :{WHITE}ขณะนี้มียานยนต์มากเกินไปแล้วในเกม -STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}ไม่สามารถเปลี่ยนระยะเวลาการซ่อมบำรุงได้... - - -# Specific vehicle errors -STR_ERROR_TRAIN_START_NO_POWER :ขบวนรถไม่ได้รับการจ่ายพลังงานไฟฟ้า - - - -# Order related errors - -STR_ERROR_CAN_T_SHARE_ORDER_LIST :{WHITE}ไม่สามารถใช้รายการสถานที่ร่วมกันได้ -STR_ERROR_CAN_T_COPY_ORDER_LIST :{WHITE}ไม่สามารถคัดลอกรายการสถานที่ได้ -STR_ERROR_TOO_FAR_FROM_PREVIOUS_DESTINATION :{WHITE}... ไกลจากจุดก่อนหน้านี้มากเกินไป - -# Timetable related errors - -# Sign related errors - -# Translatable comment for OpenTTD's desktop shortcut - -##id 0x2000 -# Town building names -STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1 :ตึกสูง -STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_1 :อาคารสำนักงาน -STR_TOWN_BUILDING_NAME_SMALL_BLOCK_OF_FLATS_1 :แฟลต -STR_TOWN_BUILDING_NAME_CHURCH_1 :โบส์ถ -STR_TOWN_BUILDING_NAME_LARGE_OFFICE_BLOCK_1 :อาคารสำนักงานขนาดใหญ่ -STR_TOWN_BUILDING_NAME_TOWN_HOUSES_1 :ทาวน์เฮ้าส์ -STR_TOWN_BUILDING_NAME_HOTEL_1 :โรงแรม -STR_TOWN_BUILDING_NAME_STATUE_1 :อนุสาวรีย์ -STR_TOWN_BUILDING_NAME_FOUNTAIN_1 :น้ำพุ -STR_TOWN_BUILDING_NAME_PARK_1 :สวนสาธารณะ -STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_2 :อาคารสำนักงาน -STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_1 :ร้านค้าและสำนักงาน -STR_TOWN_BUILDING_NAME_MODERN_OFFICE_BUILDING_1 :อาคารสำนักงานสมัยใหม่ -STR_TOWN_BUILDING_NAME_WAREHOUSE_1 :โกดัง -STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_3 :อาคารสำนักงาน -STR_TOWN_BUILDING_NAME_STADIUM_1 :สนามกีฬา -STR_TOWN_BUILDING_NAME_OLD_HOUSES_1 :บ้านโบราณ - -##id 0x4800 -# industry names -STR_INDUSTRY_NAME_STEEL_MILL :โรงงานเหล็กกล้า - -############ 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_STNAME :{STRING} -STR_SV_STNAME_BUOY :{STRING} -STR_SV_STNAME_WAYPOINT :{STRING} -##id 0x6020 -############ end of savegame specific region! - -##id 0x8000 -# Vehicle names -STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_STEEL_TRUCK :รถบรรทุกเหล็กกล้า -STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_STEEL_TRUCK :รถบรรทุกเหล็กกล้า -STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_STEEL_TRUCK :รถบรรทุกเหล็กกล้า -STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_WOOD_TRUCK :รถบรรทุกไม้รุ่นฟอสเตอร์ -STR_VEHICLE_NAME_ROAD_VEHICLE_MORELAND_WOOD_TRUCK :รถบรรทุกไม้รุ่นมัวร์แลนด์ -STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_IRON_ORE_TRUCK :รถบรรทุกแร่เหล็กรุ่นเอ็มพีเอส -STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_IRON_ORE_TRUCK :รถบรรทุกแร่เหล็กรุ่นยูเอชแอล -STR_VEHICLE_NAME_ROAD_VEHICLE_CHIPPY_IRON_ORE_TRUCK :รถบรรทุกแร่เหล็กรุ่นชิปปี้ -STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_STEEL_TRUCK :รถบรรทุกเหล็กกล้ารุ่นบัลล๊อก -STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_STEEL_TRUCK :รถบรรทุกเหล็กกล้ารุ่นยูเอชแอล -STR_VEHICLE_NAME_ROAD_VEHICLE_KELLING_STEEL_TRUCK :รถบรรทุกเหล็กกล้ารุ่นเคลลิ่ง -STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_ARMORED_TRUCK :รถหุ้มเกราะรุ่นบัลล๊อก -STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_ARMORED_TRUCK :รถหุ้มเกราะรุ่นยูเอชแอล -STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_CANDY_TRUCK :MightyMover Sweet Truck -STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_CANDY_TRUCK :Powernaught Sweet Truck -STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_CANDY_TRUCK :Wizzowow Sweet Truck -STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_BATTERY_TRUCK :MightyMover Battery Truck -STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_BATTERY_TRUCK :Powernaught Battery Truck -STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_BATTERY_TRUCK :Wizzowow Battery Truck -STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_FIZZY_DRINK :MightyMover Fizzy Drink Truck -STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_FIZZY_DRINK :Powernaught Fizzy Drink Truck -STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_FIZZY_DRINK_TRUCK :Wizzowow Fizzy Drink Truck -STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_PLASTIC_TRUCK :MightyMover Plastic Truck -STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_PLASTIC_TRUCK :Powernaught Plastic Truck -STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_PLASTIC_TRUCK :Wizzowow Plastic Truck -STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_BUBBLE_TRUCK :MightyMover Bubble Truck -STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_BUBBLE_TRUCK :Powernaught Bubble Truck -STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_BUBBLE_TRUCK :Wizzowow Bubble Truck -STR_VEHICLE_NAME_SHIP_MPS_OIL_TANKER :MPS Oil Tanker -STR_VEHICLE_NAME_SHIP_CS_INC_OIL_TANKER :CS-Inc. Oil Tanker -STR_VEHICLE_NAME_SHIP_MPS_PASSENGER_FERRY :MPS Passenger Ferry -STR_VEHICLE_NAME_SHIP_FFP_PASSENGER_FERRY :FFP Passenger Ferry -STR_VEHICLE_NAME_SHIP_BAKEWELL_300_HOVERCRAFT :Bakewell 300 Hovercraft -STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :Chugger-Chug Passenger Ferry -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_POWERNAUT_CARGO_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 -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 :Tricario Helicopter -STR_VEHICLE_NAME_AIRCRAFT_GURU_X2_HELICOPTER :Guru X2 Helicopter -STR_VEHICLE_NAME_AIRCRAFT_POWERNAUT_HELICOPTER :Powernaut Helicopter - -##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} -STR_FORMAT_BUOY_NAME_SERIAL :ทุ่น {TOWN} #{COMMA} -STR_FORMAT_COMPANY_NUM :(บริษัท {COMMA}) -STR_FORMAT_GROUP_NAME :กลุ่ม {COMMA} -STR_FORMAT_INDUSTRY_NAME :{TOWN} {STRING} -STR_FORMAT_WAYPOINT_NAME :{TOWN} ที่หมาย -STR_FORMAT_WAYPOINT_NAME_SERIAL :{TOWN} ที่หมาย #{COMMA} - -STR_FORMAT_DEPOT_NAME_TRAIN :{TOWN} โรงซ่อมบำรุงรถไฟ -STR_FORMAT_DEPOT_NAME_TRAIN_SERIAL :{TOWN} โรงซ่อมบำรุงรถไฟ #{COMMA} -STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE :{TOWN} โรงซ่อมบำรุงรถ -STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE_SERIAL :{TOWN} โรงซ่อมบำรุงรถ #{COMMA} -STR_FORMAT_DEPOT_NAME_SHIP :{TOWN} อู่เรือ -STR_FORMAT_DEPOT_NAME_SHIP_SERIAL :{TOWN} อู่เรือ #{COMMA} -STR_FORMAT_DEPOT_NAME_AIRCRAFT :{STATION} โรงเก็บเครื่องบิน - -STR_UNKNOWN_STATION :ไม่ทราบสถานี -STR_DEFAULT_SIGN_NAME :ป้าย -STR_COMPANY_SOMEONE :บางคน - -STR_SAVEGAME_NAME_DEFAULT :{COMPANY}, {STRING} -STR_SAVEGAME_NAME_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_GROUP_NAME :{GROUP} -STR_INDUSTRY_NAME :{INDUSTRY} -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} -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_SPACE_STRING :{STRING} {STRING} -STR_JUST_RAW_STRING :{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_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} -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_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} -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/unfinished/urdu.txt b/src/lang/unfinished/urdu.txt index d46a0784f..5043cb06d 100644 --- a/src/lang/unfinished/urdu.txt +++ b/src/lang/unfinished/urdu.txt @@ -256,7 +256,6 @@ STR_MEASURE_AREA_HEIGHTDIFF :{BLACK} پھی # These are used in buttons -STR_SORT_BY_CAPTION_POPULATION :{BLACK}آبادی STR_SORT_BY_CAPTION_NAME :{BLACK}نام STR_SORT_BY_CAPTION_DATE :{BLACK}تاریخ # These are used in dropdowns @@ -277,7 +276,6 @@ STR_SORT_BY_LENGTH :لمبائی STR_SORT_BY_LIFE_TIME :بقیھ زندگی STR_SORT_BY_TIMETABLE_DELAY :ٹایم ٹیبل تاخیر STR_SORT_BY_FACILITY :طرزِ اسٹیشن -STR_SORT_BY_WAITING :قیمتِ منتظر سامان STR_SORT_BY_RATING_MAX :سامانی سرِ فھرست درجھ بندی STR_SORT_BY_RATING_MIN :سامانی پیشِ فھرست درجھ بندی STR_SORT_BY_ENGINE_ID :انجن کی شناخت (کلاسیکی چھانٹ) @@ -289,6 +287,7 @@ 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 :آبادی # Tooltips for the main toolbar STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK} کھیل میں وقفھ لیجیئے @@ -371,19 +370,18 @@ STR_FILE_MENU_SEPARATOR : STR_FILE_MENU_EXIT :باہر نکلو ############ range ends here -############ range for map menu starts +# map menu STR_MAP_MENU_MAP_OF_WORLD :دنیا کا نقشھ STR_MAP_MENU_EXTRA_VIEW_PORT :اضافی منظر STR_MAP_MENU_SIGN_LIST :اشاروں کی فھرست -############ range for town menu starts, yet the town directory is shown in the map menu in the scenario editor + +############ range for town menu starts STR_TOWN_MENU_TOWN_DIRECTORY :کتبِ قصبھ جات -############ end of the 'Display map' dropdown STR_TOWN_MENU_FOUND_TOWN :قصبھ قائم کیجیئے -############ end of the 'Town' dropdown +############ range ends here ############ range for subsidies menu starts STR_SUBSIDIES_MENU_SUBSIDIES :امداد -STR_SUBSIDIES_MENU_GOAL :موجودہ اہداف ############ range ends here ############ range for graph menu starts @@ -455,7 +453,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 :تیسر @@ -471,22 +469,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 @@ -646,7 +662,7 @@ STR_HIGHSCORE_PERFORMANCE_TITLE_CAPITALIST :سرمایہ د STR_HIGHSCORE_PERFORMANCE_TITLE_MAGNATE :امیر و اثر پزیر STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL :مُغل STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY :صدی کا ٹائیکون -STR_HIGHSCORE_NAME :{BIG_FONT}{PRESIDENT_NAME}, {COMPANY} +STR_HIGHSCORE_NAME :{PRESIDENT_NAME}, {COMPANY} STR_HIGHSCORE_STATS :{BIG_FONT}'{STRING}' ({COMMA}) STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{BLACK}{COMPANY} '{STRING}' کا درجہ حاصل کرتا ہے STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{WHITE}{PRESIDENT_NAME} جو {COMPANY} سے تعلق رکھتا ہے۔ '{STRING}' کا درجہ حاصل کرتا ہے @@ -785,13 +801,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} بہت پرانا ہو رہا ہے @@ -870,13 +884,8 @@ STR_GAME_OPTIONS_CURRENCY_ZAR :جنوبی اف STR_GAME_OPTIONS_CURRENCY_CUSTOM :اپنی مرضی کی ۔۔۔ ############ end of currency region -STR_GAME_OPTIONS_MEASURING_UNITS_FRAME :{BLACK}پیمائشی اکائیاں -STR_GAME_OPTIONS_MEASURING_UNITS_DROPDOWN_TOOLTIP :{BLACK}پیمائشی اکائیاں اختیار کریں ############ start of measuring units region -STR_GAME_OPTIONS_MEASURING_UNITS_IMPERIAL :اِمپیریل -STR_GAME_OPTIONS_MEASURING_UNITS_METRIC :میٹرک -STR_GAME_OPTIONS_MEASURING_UNITS_SI :اکائیوں کا بین الاقوامی نظام ############ end of measuring units region STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}گاڑیاں @@ -914,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 :ہر سہ ماہی 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}استعمال کرنے کےلئے زبان اختیار کئیجیے @@ -930,9 +941,6 @@ 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}بُنیادی گرافک سیٹ اختیار کریں STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} missing/corrupted file{P "" s} @@ -1054,7 +1062,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} @@ -1067,10 +1074,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} @@ -1088,12 +1092,11 @@ 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} -STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS :فنڈنگ ​​عمارتوں کی اجازت: {STRING} -STR_CONFIG_SETTING_ALLOW_FUND_ROAD :مقامی سڑکوں کی تعمیر نو فنڈنگ ​​کی اجازت: {STRING} +STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS :فنڈنگ عمارتوں کی اجازت: {STRING} +STR_CONFIG_SETTING_ALLOW_FUND_ROAD :مقامی سڑکوں کی تعمیر نو فنڈنگ کی اجازت: {STRING} STR_CONFIG_SETTING_ALLOW_GIVE_MONEY :دوسری کمپنیوں کو پیسے بھیجنے کی اجازت: {STRING} STR_CONFIG_SETTING_FREIGHT_TRAINS :مال گاڑیوں کو وزنی دکھانے کے لئے وزن کا ضارب: {STRING} STR_CONFIG_SETTING_PLANE_CRASHES :ہوائی جہازوں کے حادثوں کی تعداد: {STRING} @@ -1102,8 +1105,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} @@ -1139,8 +1140,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}کسی کنارے پر ایک یا ایک سے زیادہ ٹائلیں پانی کی نہیں ہیں @@ -1167,14 +1166,12 @@ 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_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 :کوئی فعل نہیں @@ -1286,25 +1283,22 @@ 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_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 @@ -1504,10 +1498,6 @@ STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}ٹائی # Network server list STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}زیادہ کھلاڑی -STR_NETWORK_SERVER_LIST_CONNECTION :{BLACK}کنکشن: -STR_NETWORK_SERVER_LIST_CONNECTION_TOOLTIP :{BLACK}انٹرنیٹ یا LAN کھیل میں سے کوئی ایک اختیار کریں -STR_NETWORK_SERVER_LIST_LAN :LAN -STR_NETWORK_SERVER_LIST_INTERNET :انٹرنیٹ STR_NETWORK_SERVER_LIST_PLAYER_NAME :{BLACK}کھلاڑی کا نام: STR_NETWORK_SERVER_LIST_ENTER_NAME_TOOLTIP :{BLACK}دوسرے کھلاڑی آپ کو اس نام سے جانیں گے @@ -1566,8 +1556,6 @@ 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_LAN_INTERNET :LAN / انٹرنیٹ -STR_NETWORK_START_SERVER_INTERNET_ADVERTISE :Internet (advertise) 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}زیادہ سے زیادہ کلائینٹس کی تعداد کا انتخاب کریں @@ -1875,6 +1863,10 @@ STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}catenary STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}لوڈ کرنے کے نشانوں کی شفافیت کی تدویم کریں۔ محدوظ کرنے کے لئے Ctrl+Click دبائیں STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}چیزوں کو شفاف کی بجائے غائب کر دیں +# Linkgraph legend window + +# Linkgraph legend window and linkgraph legend in smallmap + # Base for station construction window(s) STR_STATION_BUILD_COVERAGE_AREA_TITLE :{BLACK}کوریج والے علاقے کو واضح کریں STR_STATION_BUILD_COVERAGE_OFF :{BLACK}بند @@ -2154,6 +2146,8 @@ STR_NEWGRF_SETTINGS_RESCAN_FILES_TOOLTIP :{BLACK} نئی +# NewGRF save preset window + # NewGRF parameters window # NewGRF inspect window @@ -2194,6 +2188,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 @@ -2235,6 +2231,8 @@ STR_GOAL_QUESTION_CAPTION_ERROR :خرابی # Subsidies window +# Story book window + # Station list window STR_STATION_LIST_STATION :{YELLOW}{STATION} {STATION_FEATURES} STR_STATION_LIST_WAYPOINT :{YELLOW}{WAYPOINT} @@ -2244,14 +2242,14 @@ 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_ACCEPTS_CARGO :{BLACK}منظور کرتا ہے: {WHITE}{CARGO_LIST} -STR_STATION_VIEW_CARGO_RATING :{WHITE}{STRING}: {YELLOW}{STRING} ({COMMA}%) + + ############ range for rating starts ############ range for rating ends @@ -2295,7 +2293,6 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS :{WHITE}نہری STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD} اسٹیشن: STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}اسٹیشن کی ٹائل STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}ہوائی اڈے -STR_COMPANY_INFRASTRUCTURE_VIEW_COST :{WHITE}{1:CURRENCY_LONG}سالانہ ({0:COMMA}) STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL :{WHITE}{CURRENCY_LONG}سالانہ # Industry directory @@ -2330,6 +2327,7 @@ STR_VEHICLE_LIST_MANAGE_LIST :{BLACK}فہرس + # Build vehicle window @@ -2413,6 +2411,7 @@ STR_VEHICLE_INFO_MAX_SPEED_RANGE :{BLACK}حد ر + # Extra buttons for train details windows @@ -2660,6 +2659,7 @@ STR_ERROR_TOO_MANY_VEHICLES_IN_GAME :{WHITE}کھیل STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}مرمت کا دورانیہ تبدیل نہین کرسکتے + # Specific vehicle errors @@ -2675,6 +2675,8 @@ STR_ERROR_AIRCRAFT_NOT_ENOUGH_RANGE :{WHITE} ۔ ۔ # Translatable comment for OpenTTD's desktop shortcut STR_DESKTOP_SHORTCUT_COMMENT :Transport Tycoon Deluxe کا ھم جنس +# Translatable descriptions in media/baseset/*.ob* files + ##id 0x2000 # Town building names @@ -2696,7 +2698,7 @@ 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_UHL_IRON_ORE_TRUCK :Uhl لوہے کی دھات کا ٹرک @@ -2749,7 +2751,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 گنتی @@ -2862,7 +2864,7 @@ 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_SPACE_STRING :{STRING} {STRING} +STR_JUST_STRING_STRING :{STRING}{STRING} STR_JUST_RAW_STRING :{STRING} # Slightly 'raw' stringcodes with colour or size @@ -2887,9 +2889,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/vietnamese.txt b/src/lang/vietnamese.txt index 38698411b..a13a8a21a 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 @@ -96,9 +96,9 @@ 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_COAL :{WEIGHT_LONG} than đá STR_QUANTITY_MAIL :{COMMA} túi bưu kiện -STR_QUANTITY_OIL :{VOLUME_LONG} dầu +STR_QUANTITY_OIL :{VOLUME_LONG} dầu thô STR_QUANTITY_LIVESTOCK :{COMMA} đầu gia súc STR_QUANTITY_GOODS :{COMMA} thùng hàng tiêu dùng STR_QUANTITY_GRAIN :{WEIGHT_LONG} ngũ cốc @@ -123,7 +123,7 @@ STR_QUANTITY_COLA :{VOLUME_LONG} n 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 @@ -199,21 +199,28 @@ STR_UNITS_POWER_IMPERIAL :{COMMA}hp STR_UNITS_POWER_METRIC :{COMMA}hp 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 STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} tấn 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} lít 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}Lọc ch STR_LIST_FILTER_OSKTITLE :{BLACK}Nhập chuỗi lọc STR_LIST_FILTER_TOOLTIP :{BLACK}Nhập từ khóa vào để lọc danh sách +STR_TOOLTIP_GROUP_ORDER :{BLACK}Chọn cách gom nhóm STR_TOOLTIP_SORT_ORDER :{BLACK}Chọn thứ tự sắp xếp (giảm dần/tăng dần) STR_TOOLTIP_SORT_CRITERIA :{BLACK}Chọn tiêu chí sắp xếp STR_TOOLTIP_FILTER_CRITERIA :{BLACK}Chọn tiêu chí lọc bỏ @@ -232,7 +240,8 @@ STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Đóng c STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Tiêu đề cửa sổ - kéo nó để di chuyển cửa số STR_TOOLTIP_SHADE :{BLACK}Thu gọn cửa sổ - Chỉ hiển thị thanh tiêu đề STR_TOOLTIP_DEBUG :{BLACK}Hiện thông tin debug của NewGRF -STR_TOOLTIP_STICKY :{BLACK}Đánh dấu không-thể-đóng khi bấm nút "Đóng Tất Cả Cửa Sổ" +STR_TOOLTIP_DEFSIZE :{BLACK}Chuyển cửa sổ về kích thước mặc định. Ctrl+Click để lưu kích thước hiện tại làm mặc định +STR_TOOLTIP_STICKY :{BLACK}Đánh dấu không-thể-đóng khi bấm nút "Đóng Tất Cả Cửa Sổ". Ctrl+Click để lưu thành trạng thái mặc định STR_TOOLTIP_RESIZE :{BLACK}Click và kéo để thay đổi kích thước cửa sổ STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Bật kích cỡ cửa sổ lớn/nhỏ STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Thanh cuộn lên/xuống @@ -256,7 +265,6 @@ STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}Diện t # These are used in buttons -STR_SORT_BY_CAPTION_POPULATION :{BLACK}Dân số STR_SORT_BY_CAPTION_NAME :{BLACK}Tên STR_SORT_BY_CAPTION_DATE :{BLACK}Ngày tháng # These are used in dropdowns @@ -277,23 +285,26 @@ STR_SORT_BY_LENGTH :Chiều dài STR_SORT_BY_LIFE_TIME :Thời gian sử dụng còn lại STR_SORT_BY_TIMETABLE_DELAY :Độ trễ lịch trình STR_SORT_BY_FACILITY :Kiểu nhà ga -STR_SORT_BY_WAITING :Giá trị hàng hoá đang đợi +STR_SORT_BY_WAITING_TOTAL :Tổng số hàng hóa đang đợi +STR_SORT_BY_WAITING_AVAILABLE :Hàng hóa hiện đang đợi STR_SORT_BY_RATING_MAX :Đánh giá mức hàng hoá cao nhất STR_SORT_BY_RATING_MIN :Đánh giá mức hàng hoá thấp nhất STR_SORT_BY_ENGINE_ID :ID Máy (sắp xếp thông thường) 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á # Tooltips for the main toolbar STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Tạm dừng trò chơi -STR_TOOLBAR_TOOLTIP_FORWARD :{BLACK}Game tua nhanh -STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}Tuỳ chọn +STR_TOOLBAR_TOOLTIP_FORWARD :{BLACK}Tua nhanh trò chơi +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ị @@ -301,13 +312,15 @@ STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Hiện t STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Hiển thị danh sách công ty STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Hiện thông tin tài chính của công ty STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Hiện thông tin tổng quát của công ty +STR_TOOLBAR_TOOLTIP_DISPLAY_STORY_BOOK :{BLACK}Hiển thị tình tiết +STR_TOOLBAR_TOOLTIP_DISPLAY_GOALS_LIST :{BLACK}Hiển thị danh sách mục tiêu 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 @@ -332,16 +345,16 @@ STR_SCENEDIT_TOOLBAR_LANDSCAPE_GENERATION :{BLACK}Tạo đ STR_SCENEDIT_TOOLBAR_TOWN_GENERATION :{BLACK}Tạo thị trấn STR_SCENEDIT_TOOLBAR_INDUSTRY_GENERATION :{BLACK}Tạo nhà máy STR_SCENEDIT_TOOLBAR_ROAD_CONSTRUCTION :{BLACK}Xây dựng đường -STR_SCENEDIT_TOOLBAR_PLANT_TREES :{BLACK}Trồng cây. Shift để xem chi phí dự tính +STR_SCENEDIT_TOOLBAR_PLANT_TREES :{BLACK}Trồng cây. Nhấn Shift để xem chi phí dự tính STR_SCENEDIT_TOOLBAR_PLACE_SIGN :{BLACK}Tạo bảng ký hiệu -STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}Đặt đối tượng. Shift để xem chi phí dự tính +STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}Đặt đối tượng. Nhấn Shift để xem chi phí dự tính ############ range for SE file menu starts STR_SCENEDIT_FILE_MENU_SAVE_SCENARIO :Lưu màn chơi kịch bản STR_SCENEDIT_FILE_MENU_LOAD_SCENARIO :Nạp màn chơi kịch bản STR_SCENEDIT_FILE_MENU_SAVE_HEIGHTMAP :Lưu bản đồ địa hình STR_SCENEDIT_FILE_MENU_LOAD_HEIGHTMAP :Tải bản đồ địa hình -STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :Thoat khỏi trình biên tập +STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :Thoát khỏi trình biên tập STR_SCENEDIT_FILE_MENU_SEPARATOR : STR_SCENEDIT_FILE_MENU_QUIT :Thoát ############ range for SE file menu starts @@ -371,19 +384,19 @@ STR_FILE_MENU_SEPARATOR : STR_FILE_MENU_EXIT :Thoát ############ range ends here -############ range for map menu starts +# map menu STR_MAP_MENU_MAP_OF_WORLD :Bản đồ thế giới STR_MAP_MENU_EXTRA_VIEW_PORT :Cửa sổ bổ sung +STR_MAP_MENU_LINGRAPH_LEGEND :Ghi chú luồng hàng hóa STR_MAP_MENU_SIGN_LIST :Danh sách biển hiệu -############ range for town menu starts, yet the town directory is shown in the map menu in the scenario editor + +############ range for town menu starts STR_TOWN_MENU_TOWN_DIRECTORY :Thư mục thị trấn -############ end of the 'Display map' dropdown STR_TOWN_MENU_FOUND_TOWN :Thị Xã -############ end of the 'Town' dropdown +############ range ends here ############ range for subsidies menu starts STR_SUBSIDIES_MENU_SUBSIDIES :Tiền trợ cấp -STR_SUBSIDIES_MENU_GOAL :Các mục tiêu hiện tại ############ range ends here ############ range for graph menu starts @@ -451,13 +464,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 @@ -473,22 +486,20 @@ 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_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 @@ -650,7 +661,7 @@ STR_HIGHSCORE_PERFORMANCE_TITLE_CAPITALIST :Nhà Tư Bản STR_HIGHSCORE_PERFORMANCE_TITLE_MAGNATE :Kiệt Xuất STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL :Thế Lực STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY :Ông Trùm của Thế Kỷ -STR_HIGHSCORE_NAME :{BIG_FONT}{PRESIDENT_NAME}, {COMPANY} +STR_HIGHSCORE_NAME :{PRESIDENT_NAME}, {COMPANY} STR_HIGHSCORE_STATS :{BIG_FONT}'{STRING}' ({COMMA}) STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{BLACK}{COMPANY} đã nhận được giải '{STRING}'! STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{WHITE}{PRESIDENT_NAME} từ {COMPANY} đã nhận được giải '{STRING}'! @@ -661,17 +672,20 @@ STR_SMALLMAP_CAPTION :{WHITE}Bản Đ STR_SMALLMAP_TYPE_CONTOURS :Địa hình STR_SMALLMAP_TYPE_VEHICLES :Phương tiện STR_SMALLMAP_TYPE_INDUSTRIES :Nhà máy +STR_SMALLMAP_TYPE_ROUTEMAP :Luồng hàng hóa STR_SMALLMAP_TYPE_ROUTES :Tuyến STR_SMALLMAP_TYPE_VEGETATION :Cây cối STR_SMALLMAP_TYPE_OWNERS :Chủ sở hữu STR_SMALLMAP_TOOLTIP_SHOW_LAND_CONTOURS_ON_MAP :{BLACK}Hiện viền đất trên bản đồ STR_SMALLMAP_TOOLTIP_SHOW_VEHICLES_ON_MAP :{BLACK}Hiện phương tiện trên bản đồ STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRIES_ON_MAP :{BLACK}Hiện cụm nhà máy trên b/đồ +STR_SMALLMAP_TOOLTIP_SHOW_LINK_STATS_ON_MAP :{BLACK}Hiển thị luồng hàng hóa trên bản đồ STR_SMALLMAP_TOOLTIP_SHOW_TRANSPORT_ROUTES_ON :{BLACK}Hiện tuyến vận tải trên bản đồ STR_SMALLMAP_TOOLTIP_SHOW_VEGETATION_ON_MAP :{BLACK}Hiện cụm nông nghiệp trên b/đồ STR_SMALLMAP_TOOLTIP_SHOW_LAND_OWNERS_ON_MAP :{BLACK}Hiện chủ sở hữu đất trên bản đồ STR_SMALLMAP_TOOLTIP_INDUSTRY_SELECTION :{BLACK}Click lên nhà máy để tắt/bật hiển thị loại nhà máy đó. Ctrl+Click tắt hết các loại nhà máy trừ cái đang chọn. Ctrl+Click lần nữa để hiển thị cho tất cả các nhà máy STR_SMALLMAP_TOOLTIP_COMPANY_SELECTION :{BLACK}Click lên công ty để tắt/bật hiển thị tài sản công ty đó. Ctrl+Click tắt hết các công ty trừ cái đang chọn. Ctrl+Click lần nữa để hiển thị cho tất cả các công ty +STR_SMALLMAP_TOOLTIP_CARGO_SELECTION :{BLACK}Click vào hàng hóa để bật/tắt hiển thị tính chất. Ctrl+Click tắt tất cả trừ cái đang chọn. Ctrl+Click lần nữa để hiển thị tất cả. STR_SMALLMAP_LEGENDA_ROADS :{TINY_FONT}{BLACK}Đường bộ STR_SMALLMAP_LEGENDA_RAILROADS :{TINY_FONT}{BLACK}Đường ray @@ -705,6 +719,7 @@ STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLA STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Bật/tắt tên thị trấn trên bản đồ STR_SMALLMAP_CENTER :{BLACK}Xem bản đồ nhỏ này ở cửa sổ lớn 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}Tắt tất cả @@ -715,6 +730,8 @@ STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES :{BLACK}Hiện t STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}Hiển thị bản đồ địa hình STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES :{BLACK}Không hiện thị tài sản công ty trên bản đồ STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}Hiển thị tất cả tài sản các công ty trên bản đồ +STR_SMALLMAP_TOOLTIP_DISABLE_ALL_CARGOS :{BLACK}Không hiển thị hàng hóa trên bản đồ +STR_SMALLMAP_TOOLTIP_ENABLE_ALL_CARGOS :{BLACK}Hiển thị thất cả hàng hóa trên bản đồ # Status bar messages STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Hiện thông điệp hoặc tin tức cuối cùng @@ -739,7 +756,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} @@ -791,13 +808,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 @@ -876,15 +891,12 @@ STR_GAME_OPTIONS_CURRENCY_LTL :Đồng Litas L STR_GAME_OPTIONS_CURRENCY_KRW :Won Hàn Quốc (KRW) STR_GAME_OPTIONS_CURRENCY_ZAR :Rand Nam Phi (ZAR) STR_GAME_OPTIONS_CURRENCY_CUSTOM :Tùy chọn... +STR_GAME_OPTIONS_CURRENCY_GEL :Lari Georgia (GEL) +STR_GAME_OPTIONS_CURRENCY_IRR :Rial Iran (IRR) ############ end of currency region -STR_GAME_OPTIONS_MEASURING_UNITS_FRAME :{BLACK}Đơn vị đo lường -STR_GAME_OPTIONS_MEASURING_UNITS_DROPDOWN_TOOLTIP :{BLACK}Lựa chọn đơn vị đo lường ############ start of measuring units region -STR_GAME_OPTIONS_MEASURING_UNITS_IMPERIAL :Hệ Anh-Mỹ -STR_GAME_OPTIONS_MEASURING_UNITS_METRIC :Hệ Mét -STR_GAME_OPTIONS_MEASURING_UNITS_SI :Hệ SI ############ end of measuring units region STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Xe cộ @@ -922,11 +934,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 @@ -938,9 +952,6 @@ 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_BASE_GRF :{BLACK}Gói đồ họa STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Chọn gói đồ họa để sử dụng STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} thiếu/hỏng file @@ -955,6 +966,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 @@ -1054,14 +1066,26 @@ 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 STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :Thiết lập khác với giá trị mặc định 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ả 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 @@ -1082,7 +1106,7 @@ STR_CONFIG_SETTING_HORIZONTAL_POS_RIGHT :Phải STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN :Khoảng vay khởi nghiệp tối đa: {STRING} STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Hạn mức tối đa một công ty có thể vay (không tính lạm phát) STR_CONFIG_SETTING_INTEREST_RATE :Lãi suất vay: {STRING} -STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Lãi xuất vay; ảnh hưởng tới cả lạm pháp nếu bật tùy chọn đó +STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Lãi xuất vay; ảnh hưởng tới cả lạm phát nếu bật tùy chọn đó STR_CONFIG_SETTING_RUNNING_COSTS :Chi phí hoạt động: {STRING} STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT :Thiết lập mức độ tính chi phí bảo trì và vận hành đối với phương tiện và hạ tầng giao thông STR_CONFIG_SETTING_CONSTRUCTION_SPEED :Tốc độ xây dựng: {STRING} @@ -1093,14 +1117,15 @@ STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER :Tỉ lệ chi t STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT :Thiết lập mức chi trả cho tuyến vận chuyển phụ trợ STR_CONFIG_SETTING_CONSTRUCTION_COSTS :Chi phí xây dựng: {STRING} STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :Thiết lập mức độ xây dựng và chi phí mua sắm +STR_CONFIG_SETTING_RECESSIONS :Suy thoái: {STRING} +STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Nếu bật, thì các đợt suy thoái sẽ xảy ra vài năm một lần. Trong suy thoái tất cả sản xuất sẽ giảm mạnh (và sẽ trở lại như cũ sau khi suy thoái kết thúc) STR_CONFIG_SETTING_TRAIN_REVERSING :Không cho phép tàu hỏa quay đầu ở ga: {STRING} -STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :Nếu bật thì tàu hỏa sẽ không quay đẩu đối với ga không phải đầu cuối, quay đầu nếu có một đường ngắn hơn tới đích +STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :Nếu bật thì tàu hỏa sẽ không quay đẩu đối với ga không phải đầu cuối, kể cả khi đó là đường ngắn nhất đến nơi tiếp theo khi quay đầu STR_CONFIG_SETTING_DISASTERS :Thảm họa: {STRING} STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Thay đổi tùy chọn để thảm họa đôi lúc ngăn chặn hoặc phá hủy phương tiện và công trình hạ tầng +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_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} @@ -1125,14 +1150,8 @@ 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_TUNNEL_LENGTH :Độ dài tối đa của hầm: {STRING} @@ -1145,7 +1164,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 @@ -1160,8 +1179,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 @@ -1184,7 +1201,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 @@ -1192,10 +1209,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ỏ @@ -1214,7 +1227,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 @@ -1240,7 +1253,7 @@ 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ề @@ -1253,8 +1266,6 @@ STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Xoay bản đ 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 @@ -1262,7 +1273,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ỏ @@ -1270,7 +1281,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} @@ -1281,7 +1292,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 đồ @@ -1305,17 +1316,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} @@ -1324,7 +1333,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 @@ -1335,12 +1344,16 @@ STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE_HELPTEXT :Hiển thị th STR_CONFIG_SETTING_QUICKGOTO :Tạo nhanh lộ trình cho phương tiện: {STRING} STR_CONFIG_SETTING_QUICKGOTO_HELPTEXT :Lựa chọn trước 'đi tới con trỏ' khi mở cửa số lập lộ trình STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE :Loại đường ray mặc định (sau game mới/nạp game): {STRING} +STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_HELPTEXT :Kiểu đường ray được chọn khi bắt đầu hoặc tải một ván chơi. 'sẵn có đầu tiên' chọn loại ray cũ nhất, 'sẵn có cuối cùng' chọn loại ray mới nhất, và 'dùng nhiều nhất' chọn loại ray đang được sử dụng nhiều nhất trong ván chơi STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_FIRST :Có trước tiên STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_LAST :Có sau cùng STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_MOST_USED :Dùng nhiều STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :Hiện đường ray dành trước: {STRING} +STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION_HELPTEXT :Lựa chọn đường dành riêng với màu khác để thấy rõ vấn đề với việc tài không vào khu vực tìm đường path-based STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :Vẫn giữ công cụ xây dựng sau khi dùng: {STRING} +STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Giữ cho công cụ xây dựng đối với cầu, hầm... vẫn mở sau khi dùng. STR_CONFIG_SETTING_EXPENSES_LAYOUT :Phân nhóm thu nhập/chi phí trong bảng tài chính: {STRING} +STR_CONFIG_SETTING_EXPENSES_LAYOUT_HELPTEXT :Lựa chọn cách sắp xếp trong cửa sổ chi phí của công ty STR_CONFIG_SETTING_SOUND_TICKER :Tin tức tóm tắt: {STRING} STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :Phát âm thanh khi hiển thị các tin tức tóm tắt. @@ -1360,19 +1373,24 @@ STR_CONFIG_SETTING_SOUND_AMBIENT :Âm thanh nền STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :Phát các âm thanh hiệu ứng nền đối với đất, khu công nghiệp và đô thị 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_MAX_TRAINS :Số tàu hỏa tối đa mỗi người chơi: {STRING} -STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :Số xe ôtô tối đa mỗi người chơi: {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 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 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} STR_CONFIG_SETTING_AI_BUILDS_TRAINS_HELPTEXT :Bật thiết lập này làm máy không thể xây dựng tàu hỏa STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES :Nhân vật máy không được mua xe ôtô: {STRING} +STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES_HELPTEXT :Bật tùy chọn này thì người chơi là AI sẽ không xây đường ôtô STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT :Nhân vật máy không được mua máy bay: {STRING} +STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT_HELPTEXT :Bật tùy chọn này thì người chơi là AI sẽ không xây đường hàng không STR_CONFIG_SETTING_AI_BUILDS_SHIPS :Nhân vật máy không được mua tàu thủy: {STRING} +STR_CONFIG_SETTING_AI_BUILDS_SHIPS_HELPTEXT :Bật tùy chọn này thì người chơi là AI sẽ không xây đường thủy STR_CONFIG_SETTING_AI_PROFILE :Giá trị thiết lập mặc định: {STRING} STR_CONFIG_SETTING_AI_PROFILE_HELPTEXT :Lực chọn mức độ khó đối với AI ngẫu nhiên hoặc giá trị mặc định khi thêm AI mới hay kịch bản trò trơi @@ -1381,18 +1399,28 @@ STR_CONFIG_SETTING_AI_PROFILE_MEDIUM :Trung bình STR_CONFIG_SETTING_AI_PROFILE_HARD :Khó STR_CONFIG_SETTING_AI_IN_MULTIPLAYER :Cho phép AI ở chế độ nhiều người chơi: {STRING} +STR_CONFIG_SETTING_AI_IN_MULTIPLAYER_HELPTEXT :Cho phép người chơi AI (máy tính) được tham gia trong ván chơi nhiều người STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES :#mã lệnh trước kịch bản tạm ngưng: {STRING} +STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES_HELPTEXT :Số lượng tối đa các tính toán mà một kịch bản AI được phép chạy mỗi lần STR_CONFIG_SETTING_SERVINT_ISPERCENT :Tần suất bảo trì theo đơn vị phần trăm: {STRING} +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_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 STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Tần suất bảo trì mặc định đối với máy bay: {STRING} +STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Thiết lập khoảng thời gian bảo trì tùy chọn đối với các máy bay, nếu phương tiện không có riêng thời gian bảo trì này STR_CONFIG_SETTING_SERVINT_SHIPS :Tần suất bảo trì mặc định đối với tàu thủy: {STRING} +STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Thiết lập khoảng thời gian bảo trì tùy chọn đối với các tàu thủy, nếu phương tiện không có riêng thời gian bảo trì này STR_CONFIG_SETTING_NOSERVICE :Tắt bảo trì khi đặt tắt tuỳ chọn hỏng hóc: {STRING} +STR_CONFIG_SETTING_NOSERVICE_HELPTEXT :Nếu bật, phương tiện sẽ không cần bảo trì nếu chúng không thể bị hỏng STR_CONFIG_SETTING_WAGONSPEEDLIMITS :Bật giới hạn tốc độ toa tàu: {STRING} +STR_CONFIG_SETTING_WAGONSPEEDLIMITS_HELPTEXT :Nếu bật, sử dụng giới hạn tốc độ của toa xe để hạn chế tốc độ của cả đoàn tàu STR_CONFIG_SETTING_DISABLE_ELRAILS :Không dùng tàu điện: {STRING} +STR_CONFIG_SETTING_DISABLE_ELRAILS_HELPTEXT :Bật tùy chọn này sẽ ngăn việc bắt buộc có ray tàu điện mới tạo được đầu máy chạy điện STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN :Phương tiện đầu tiên đỗ trạm chúng ta: {STRING} STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN_HELPTEXT :Hiển thị tin tức khi phương tiện khai trương ga/bến của bạn @@ -1430,17 +1458,24 @@ STR_CONFIG_SETTING_NEWS_MESSAGES_SUMMARY :Giản Lược STR_CONFIG_SETTING_NEWS_MESSAGES_FULL :Đủ STR_CONFIG_SETTING_COLOURED_NEWS_YEAR :Tin tức có màu xuất hiện vào năm: {STRING} +STR_CONFIG_SETTING_COLOURED_NEWS_YEAR_HELPTEXT :Năm mà các báo chí sẽ được in màu. Trước năm này, tất cả chúng là in đen/trắng STR_CONFIG_SETTING_STARTING_YEAR :Năm bắt đầu: {STRING} STR_CONFIG_SETTING_SMOOTH_ECONOMY :Nền kinh tế ít biến động: {STRING} +STR_CONFIG_SETTING_SMOOTH_ECONOMY_HELPTEXT :Nếu bật, sản lượng của nhà máy sẽ thay đổi thường xuyên hơn, và thay đổi với mức độ nhỏ hơn. Thiết lập này sẽ không có tác dụng nếu kiểu nhà máy định nghĩa bởi NewGRF 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ệ 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 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_DEFAULT_SIGNAL_TYPE :Kiểu đèn tín hiệu đc xây mặc định: {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 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 @@ -1506,33 +1541,83 @@ 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_GUI :{ORANGE}Giao Diện -STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}Xây Dự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_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_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 +STR_CONFIG_SETTING_DISTRIBUTION_SYMMETRIC :đối xứng +STR_CONFIG_SETTING_DISTRIBUTION_PAX :Chế độ phân phối đối với hành khách: {STRING} +STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :Hành khách có thể di chuyển đối xứng (số lượng A đến B bằng B đến A) hoặc bất đối xứng, hoặc bằng tay. +STR_CONFIG_SETTING_DISTRIBUTION_MAIL :Chế độ phân phối đối với thư tín: {STRING} +STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :Thư tín có thể gửi đối xứng (khối lượng từ A đến B bằng B đến A) hoặc bất đối xứng, hoặc bằng tay. +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 :"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) 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} +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_HELPTEXT :Khi thể hiện tốc độ trên giao diện, thể hiện nó bằng đơn vị đã chọn. +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 :Đơn vị công suất phương tiện: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_HELPTEXT :Khi thể hiện công suất phương tiện, thể hiện nó bằng đơn vị đã chọn. +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 :Đơ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_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_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_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_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_LOCALISATION :{ORANGE}Tiêu Chuẩn Đo Lườ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_VEHICLES_ROUTING :{ORANGE}Tìm đường +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 @@ -1558,7 +1643,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ệ @@ -1566,6 +1651,8 @@ STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_ALGORITHM :{WHITE}... khô STR_CONFIG_ERROR_INVALID_BASE_GRAPHICS_NOT_FOUND :{WHITE}... từ chối gói đồ họa chuẩn '{STRING}': không tìm thấy STR_CONFIG_ERROR_INVALID_BASE_SOUNDS_NOT_FOUND :{WHITE}... từ chối gói âm thanh chuẩn '{STRING}': không tìm thấy STR_CONFIG_ERROR_INVALID_BASE_MUSIC_NOT_FOUND :{WHITE}... từ chối gói nhạc chuẩn '{STRING}': không tìm thấy +STR_CONFIG_ERROR_OUT_OF_MEMORY :{WHITE}Hết bộ nhớ +STR_CONFIG_ERROR_SPRITECACHE_TOO_BIG :{WHITE}Phân bổ {BYTES} cho spritecache thất bại. Spritecache đã được giảm còn {BYTES}. Điều này có thể làm giảm hiệu năng của OpenTTD. Để giảm yêu cầu bộ nhớ, bạn có thể thử tắt gói đồ họa 32bpp và/hoặc mức độ phóng to # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} @@ -1644,7 +1731,7 @@ STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :Địa hình gi 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 @@ -1684,14 +1771,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 @@ -1701,7 +1789,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. @@ -1710,9 +1798,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 @@ -1742,10 +1830,10 @@ STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}Thay đ # Network server list STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}Ván Chơi Mạng -STR_NETWORK_SERVER_LIST_CONNECTION :{BLACK}Kết nối: -STR_NETWORK_SERVER_LIST_CONNECTION_TOOLTIP :{BLACK}Lựa chọn chơi game nối mạng internet hặc nối mạng nội bộ (LAN) -STR_NETWORK_SERVER_LIST_LAN :Mạng nội bộ -STR_NETWORK_SERVER_LIST_INTERNET :Mạng internet +STR_NETWORK_SERVER_LIST_ADVERTISED :{BLACK}Đã quảng bá +STR_NETWORK_SERVER_LIST_ADVERTISED_TOOLTIP :{BLACK}Lựa chọn ván chơi quảng bá (ra ngoài internet) và không quảng bá (Local Area Network, LAN) +STR_NETWORK_SERVER_LIST_ADVERTISED_NO :Không +STR_NETWORK_SERVER_LIST_ADVERTISED_YES :Có STR_NETWORK_SERVER_LIST_PLAYER_NAME :{BLACK}Tên người chơi: STR_NETWORK_SERVER_LIST_ENTER_NAME_TOOLTIP :{BLACK}Đây là tên khác mà người chơi sẽ nhận ra bạn @@ -1804,8 +1892,8 @@ STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP :{BLACK}Tên c STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}Đặt mật khẩu STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Bảo vệ game của bạn bằng mật khẩu nếu bạn không muốn người khác vào tùy tiện -STR_NETWORK_START_SERVER_LAN_INTERNET :LAN / Internet -STR_NETWORK_START_SERVER_INTERNET_ADVERTISE :Internet (lên list) +STR_NETWORK_START_SERVER_UNADVERTISED :Không +STR_NETWORK_START_SERVER_ADVERTISED :Có STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} máy trạm STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Số máy trạm tối đa: STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}Chọn số lượng máy trạm tối đa. Không nhất thiết phải chọn đầy các dòng @@ -1926,6 +2014,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 @@ -2044,6 +2133,10 @@ STR_CONTENT_SELECT_UPDATES_CAPTION :{BLACK}Chọn c STR_CONTENT_SELECT_UPDATES_CAPTION_TOOLTIP :{BLACK}Đánh dấu tất cả các nội dung có bản cập nhật để tải về STR_CONTENT_UNSELECT_ALL_CAPTION :{BLACK}Bỏ chọn tất cả STR_CONTENT_UNSELECT_ALL_CAPTION_TOOLTIP :{BLACK}Chọn tất cả các nội dung không tải về +STR_CONTENT_SEARCH_EXTERNAL :{BLACK}Tìm kiếm những trang ngoài +STR_CONTENT_SEARCH_EXTERNAL_TOOLTIP :{BLACK}Tìm những nội dung không có sẵn trên cổng dịch vụ OpenTTD tại những trang không trực thuộc OpenTTD +STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER_CAPTION :{WHITE}Bạn đang thoát khỏi OpenTTD! +STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER :{WHITE}Có nhiều điều kiện và điều khoản để tải nội dung từ những trang ngoài.{}Bạn sẽ phải tham khảo trang ngoài để đọc những hướng dẫn cài nội dung vào OpenTTD.{}Bạn có muốn tiếp tục? STR_CONTENT_FILTER_TITLE :{BLACK}Lọc theo tên: STR_CONTENT_OPEN_URL :{BLACK}Đến trang web STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}Đến trang web của nội dung này @@ -2113,6 +2206,17 @@ STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}Bật hi STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Bật hiệu ứng trong suốt cho bảng báo hiệu nạp. Ctrl+Click để khoá. STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}Đặt các đối ẩn đi thay vì trong suốt +# Linkgraph legend window +STR_LINKGRAPH_LEGEND_CAPTION :{BLACK}Ghi chú luồng hàng hóa +STR_LINKGRAPH_LEGEND_ALL :{BLACK}Tất cả +STR_LINKGRAPH_LEGEND_NONE :{BLACK}Không +STR_LINKGRAPH_LEGEND_SELECT_COMPANIES :{BLACK}Lựa chọn công ty nào sẽ được hiển thị + +# Linkgraph legend window and linkgraph legend in smallmap +STR_LINKGRAPH_LEGEND_UNUSED :{TINY_FONT}{BLACK}không sử dụng +STR_LINKGRAPH_LEGEND_SATURATED :{TINY_FONT}{BLACK}bão hòa +STR_LINKGRAPH_LEGEND_OVERLOADED :{TINY_FONT}{BLACK}quá tải + # Base for station construction window(s) STR_STATION_BUILD_COVERAGE_AREA_TITLE :{BLACK}Hiện rõ vùng phủ ảnh hưởng STR_STATION_BUILD_COVERAGE_OFF :{BLACK}Tắt @@ -2415,6 +2519,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 :Đá @@ -2508,10 +2613,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-2012 Nhóm OpenTTD +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2014 Nhóm OpenTTD # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Lưu Ván Chơi @@ -2540,6 +2645,7 @@ STR_SAVELOAD_OSKTITLE :{BLACK}Nhập t # World generation STR_MAPGEN_WORLD_GENERATION_CAPTION :{WHITE}Khởi Tạo Bản Đồ STR_MAPGEN_MAPSIZE :{BLACK}Kích thước bản đồ: +STR_MAPGEN_MAPSIZE_TOOLTIP :{BLACK}Lựa chọn kích thước bản đồ theo đơn vị ô. Số lượng ô thực sự có thể nhỏ hơn 1 chút. STR_MAPGEN_BY :{BLACK}* STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Số lượng đô thị: STR_MAPGEN_DATE :{BLACK}Thời điểm: @@ -2547,10 +2653,6 @@ STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Số lư 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: @@ -2577,9 +2679,8 @@ 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_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 @@ -2595,8 +2696,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 @@ -2632,6 +2733,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ố @@ -2656,6 +2759,8 @@ 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 + # NewGRF parameters window STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}Thay Đổi Tham Số NewGRF STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Đóng @@ -2726,6 +2831,7 @@ STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}Bạn STR_NEWGRF_DUPLICATE_GRFID :{WHITE}Không thể thêm file: trùng lặp GRF ID STR_NEWGRF_COMPATIBLE_LOADED :{ORANGE}File hợp lệ không tìm thấy (GRF tương thích được nạp thay) +STR_NEWGRF_TOO_MANY_NEWGRFS :{WHITE}Không thể thêm: đã chạm số lượng NewGRF giới hạn STR_NEWGRF_COMPATIBLE_LOAD_WARNING :{WHITE}GRF tương thích được nạp thay cho các file thiếu. STR_NEWGRF_DISABLED_WARNING :{WHITE}Các GRF file thiếu bị bỏ qua @@ -2742,6 +2848,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ệ. @@ -2752,10 +2859,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ó... @@ -2822,7 +2932,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 @@ -2830,17 +2940,21 @@ 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} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}Đút lót quan chức địa phương để nâng cao quyền lợi, có một tỉ lệ rủi ro nếu bại lộ và sẽ mất hết quyền lợi lẫn tiền hối lộ.{}Chi phí: {CURRENCY_LONG} # Goal window -STR_GOALS_CAPTION :{WHITE}Các Mục Tiêu +STR_GOALS_CAPTION :{WHITE}Mục Tiêu Của {COMPANY} +STR_GOALS_SPECTATOR_CAPTION :{WHITE}Mục Tiêu Chung STR_GOALS_GLOBAL_TITLE :{BLACK}Các mục tiêu chung: STR_GOALS_TEXT :{ORANGE}{STRING} STR_GOALS_NONE :{ORANGE}- Không - +STR_GOALS_SPECTATOR_NONE :{ORANGE}- Không khả dụng - +STR_GOALS_PROGRESS :{ORANGE}{STRING} +STR_GOALS_PROGRESS_COMPLETE :{GREEN}{STRING} STR_GOALS_COMPANY_TITLE :{BLACK}Các mục tiêu của công ty: STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Click vào mục tiêu để canh giữa cửa sổ lớn chính vào ô/đô thị/nhà máy tương ứng. Ctrl+Click để mở bằng các cửa sổ bổ sung tương ứng @@ -2879,6 +2993,18 @@ STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}Chính q STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING} từ {STRING} đến {STRING}{YELLOW} ({COMPANY}{YELLOW}, hết hạn {DATE_SHORT}) STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Nháy vào tên dịch vụ để xem nhà máy/đô thị liên quan. Ctrl+Click mở cửa sổ mới để xem +# Story book window +STR_STORY_BOOK_CAPTION :{WHITE}{COMPANY} Tình Tiết +STR_STORY_BOOK_SPECTATOR_CAPTION :{WHITE}Bảng Tình Tiết Chung +STR_STORY_BOOK_TITLE :{YELLOW}{STRING} +STR_STORY_BOOK_GENERIC_PAGE_ITEM :Trang {NUM} +STR_STORY_BOOK_SEL_PAGE_TOOLTIP :{BLACK}Chuyển tới trang cụ thể bằng cách chọn trong danh sách sổ xuống +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 STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}Giữ nút Ctrl để chọn nhiều mục @@ -2892,9 +3018,9 @@ 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) STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Chấp nhận STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Liệt kê hàng hoá được chấp nhận @@ -2905,8 +3031,31 @@ STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPAN STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Uy tín STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Hiện uy tín ga, bến, cảng -STR_STATION_VIEW_CARGO_RATINGS_TITLE :{BLACK}Uy tín với địa phương của dịch vụ vận tải: -STR_STATION_VIEW_CARGO_RATING :{WHITE}{STRING}: {YELLOW}{STRING} ({COMMA}%) +STR_STATION_VIEW_SUPPLY_RATINGS_TITLE :{BLACK}Sản lượng và đánh giá địa phương hàng tháng: +STR_STATION_VIEW_CARGO_SUPPLY_RATING :{WHITE}{STRING}: {YELLOW}{COMMA} / {STRING} ({COMMA}%) + +STR_STATION_VIEW_GROUP :{BLACK}Nhóm bằng +STR_STATION_VIEW_WAITING_STATION :Nhà ga: chờ đợi +STR_STATION_VIEW_WAITING_AMOUNT :Khối lượng: đang chờ +STR_STATION_VIEW_PLANNED_STATION :Nhà ga: kế hoạch +STR_STATION_VIEW_PLANNED_AMOUNT :Khối lượng: dự kiến +STR_STATION_VIEW_FROM :{YELLOW}{CARGO_SHORT} từ {STATION} +STR_STATION_VIEW_VIA :{YELLOW}{CARGO_SHORT} qua {STATION} +STR_STATION_VIEW_TO :{YELLOW}{CARGO_SHORT} đến {STATION} +STR_STATION_VIEW_FROM_ANY :{RED}{CARGO_SHORT} từ một trạm chưa biết +STR_STATION_VIEW_TO_ANY :{RED}{CARGO_SHORT} đến bất cứ trạm nào +STR_STATION_VIEW_VIA_ANY :{RED}{CARGO_SHORT} qua bất cứ trạm nào +STR_STATION_VIEW_FROM_HERE :{GREEN}{CARGO_SHORT} từ trạm này +STR_STATION_VIEW_VIA_HERE :{GREEN}{CARGO_SHORT} dừng ở trạm này +STR_STATION_VIEW_TO_HERE :{GREEN}{CARGO_SHORT} đến trạm này +STR_STATION_VIEW_NONSTOP :{YELLOW}{CARGO_SHORT} chạy suốt + +STR_STATION_VIEW_GROUP_S_V_D :Nguồn-Qua-Đích +STR_STATION_VIEW_GROUP_S_D_V :Nguồn-Đích-Qua +STR_STATION_VIEW_GROUP_V_S_D :Qua-Nguồn-Đích +STR_STATION_VIEW_GROUP_V_D_S :Qua-Đích-Nguồn +STR_STATION_VIEW_GROUP_D_S_V :Đích-Nguồn-Qua +STR_STATION_VIEW_GROUP_D_V_S :Đích-Qua-Nguồn ############ range for rating starts STR_CARGO_RATING_APPALLING :Kinh hãi @@ -2947,10 +3096,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ô @@ -2988,7 +3137,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 @@ -3002,8 +3151,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 @@ -3033,7 +3182,6 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS :{WHITE}Kênh đ STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}Ga, bến: STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}Các ô ga, bến STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}Sân bay -STR_COMPANY_INFRASTRUCTURE_VIEW_COST :{WHITE}{1:CURRENCY_LONG}/năm ({0:COMMA}) STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL :{WHITE}{CURRENCY_LONG}/năm # Industry directory @@ -3050,6 +3198,7 @@ STR_INDUSTRY_VIEW_PRODUCTION_LAST_MONTH_TITLE :{BLACK}Sản l STR_INDUSTRY_VIEW_TRANSPORTED :{YELLOW}{CARGO_LONG}{STRING}{BLACK} ({COMMA}% đã vận chuyển) STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Xem vị trí trung tâm của nhà máy. Ctrl+Click mở cửa sổ mới để xem STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Mức sản lượng: {YELLOW}{COMMA}% +STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}Nhà máy này đã thông báo sắp đóng cửa! ############ range for requires starts STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Yêu cầu: {YELLOW}{STRING}{STRING} @@ -3112,12 +3261,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 @@ -3413,6 +3563,11 @@ STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Tần su 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 +STR_SERVICE_INTERVAL_DROPDOWN_TOOLTIP :{BLACK}Thay đổi kiểu tần suất phục vụ +STR_VEHICLE_DETAILS_DEFAULT :Mặc định +STR_VEHICLE_DETAILS_DAYS :Ngày +STR_VEHICLE_DETAILS_PERCENT :Phần trăm + STR_QUERY_RENAME_TRAIN_CAPTION :{WHITE}Đổi tên tàu hoả STR_QUERY_RENAME_ROAD_VEHICLE_CAPTION :{WHITE}Đổi tên ôtô STR_QUERY_RENAME_SHIP_CAPTION :{WHITE}Đổi tên tàu thuỷ @@ -3648,7 +3803,7 @@ STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}Bảng l STR_TIMETABLE_STATUS_START_AT :{BLACK}Bảng lịch trình sẽ bắt đầu lúc {STRING} STR_TIMETABLE_STARTING_DATE :{BLACK}Ngày bắt đầu -STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Chọn một ngày khởi đầu của bảng lịch trình +STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Lựa chọn ngày bắt đầu trong bảng lịch trình này. Ctrl+Click chọn ngày bắt đầu trong bảng lịch trình và phân bổ nó cho tất cả các phương tiện chia sẻ lộ trình này, nếu như lộ trình đã lên lịch đầy đủ. STR_TIMETABLE_CHANGE_TIME :{BLACK}Đổi thời gian STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Thay đổi thời lượng của điểm lộ trình được phép sử dụng @@ -3670,7 +3825,7 @@ STR_TIMETABLE_AUTOFILL_TOOLTIP :{BLACK}Tự đi STR_TIMETABLE_EXPECTED :{BLACK}Mong muốn STR_TIMETABLE_SCHEDULED :{BLACK}Chốt lịch -STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Chuyển giữa lịch mong muốn là lịch được chốt +STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Chuyển giữa lịch mong muốn và lịch được chốt STR_TIMETABLE_ARRIVAL_ABBREVIATION :Đến: STR_TIMETABLE_DEPARTURE_ABBREVIATION :Đi: @@ -3762,6 +3917,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 @@ -3784,6 +3941,10 @@ STR_INCOME_FLOAT_INCOME_SMALL :{TINY_FONT}{GRE STR_INCOME_FLOAT_INCOME :{GREEN}Thu nhập: {CURRENCY_LONG} STR_FEEDER_TINY :{TINY_FONT}{YELLOW}Vận chuyển: {CURRENCY_LONG} STR_FEEDER :{YELLOW}Vận chuyển: {CURRENCY_LONG} +STR_FEEDER_INCOME_TINY :{TINY_FONT}{YELLOW}Vận chuyển: {CURRENCY_LONG}{WHITE} / {GREEN}Thu nhập: {CURRENCY_LONG} +STR_FEEDER_INCOME :{YELLOW}Vận chyển: {CURRENCY_LONG}{WHITE} / {GREEN}Thu nhập: {CURRENCY_LONG} +STR_FEEDER_COST_TINY :{TINY_FONT}{YELLOW}Vận chuyển: {CURRENCY_LONG}{WHITE} / {RED}Chi phí: {CURRENCY_LONG} +STR_FEEDER_COST :{YELLOW}Vận chuyển: {CURRENCY_LONG}{WHITE} / {RED}Chi phí: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_COST :{WHITE}Chi phí ước tính: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Thu nhập ước tính: {CURRENCY_LONG} @@ -4135,6 +4296,11 @@ STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}Không t STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... xe đã bị phá hủy +STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL :{WHITE}Không có phương tiện nào sẵn sàng cả +STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Thay đổi tham số NewGRF +STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}Chưa có phương tiện nào có sẵn +STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Bắt đầu một màn chơi mới sau {DATE_SHORT} hoặc sử dụng một NewGRF cung cấp sớm phương tiện + # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Không thể để tàu hoả qua tín hiệu đèn khi nguy hiểm... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Không thể đổi hướng đoàn tàu... @@ -4177,6 +4343,16 @@ STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}Không t # Translatable comment for OpenTTD's desktop shortcut STR_DESKTOP_SHORTCUT_COMMENT :Một trò chơi mô phỏng dựa trên Transport Tycoon Deluxe +# Translatable descriptions in media/baseset/*.ob* files +STR_BASEGRAPHICS_DOS_DESCRIPTION :Đồ họa gốc từ phiên bản Transport Tycoon Deluxe trên DOS +STR_BASEGRAPHICS_DOS_DE_DESCRIPTION :Đồ họa gốc từ phiên bản Transport Tycoon Deluxe trên DOS (tiếng Đức) +STR_BASEGRAPHICS_WIN_DESCRIPTION :Đồ họa gốc từ phiên bản Transport Tycoon Deluxe trên Windows +STR_BASESOUNDS_DOS_DESCRIPTION :Âm thanh gốc từ phiên bản Transport Tycoon Deluxe trên DOS +STR_BASESOUNDS_WIN_DESCRIPTION :Âm thanh gốc từ phiên bản Transport Tycoon Deluxe trên Windows +STR_BASESOUNDS_NONE_DESCRIPTION :Gói âm thanh này không có âm thanh nào. +STR_BASEMUSIC_WIN_DESCRIPTION :Nhạc gốc từ phiên bản Transport Tycoon Deluxe trên Windows +STR_BASEMUSIC_NONE_DESCRIPTION :Gói âm nhạc này không có nhạc nào. + ##id 0x2000 # Town building names STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1 :Cao ốc văn phòng @@ -4215,7 +4391,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 @@ -4299,7 +4475,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) @@ -4322,9 +4498,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 @@ -4332,7 +4508,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 @@ -4354,7 +4530,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 @@ -4362,7 +4538,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 @@ -4394,7 +4570,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 @@ -4428,8 +4604,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 @@ -4448,9 +4624,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 @@ -4460,9 +4636,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 @@ -4508,7 +4684,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 @@ -4623,8 +4799,9 @@ 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_SPACE_STRING :{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} @@ -4648,9 +4825,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 c0ba72f93..b9b146715 100644 --- a/src/lang/welsh.txt +++ b/src/lang/welsh.txt @@ -199,27 +199,36 @@ STR_UNITS_POWER_IMPERIAL :{COMMA}hp STR_UNITS_POWER_METRIC :{COMMA}hp 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} tunell STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} tunnell 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} galwyn STR_UNITS_VOLUME_LONG_METRIC :{COMMA} litr 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} tr +STR_UNITS_HEIGHT_METRIC :{COMMA} m STR_UNITS_HEIGHT_SI :{COMMA} 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 @@ -231,7 +240,8 @@ STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Cau ffen STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Teitl ffenestr - llusgwch hwn i symud ffenestr STR_TOOLTIP_SHADE :{BLACK}Cysgodi'r ffenest - dangos y bar teitl yn unig STR_TOOLTIP_DEBUG :{BLACK}Dangos gwybodaeth dadnamu NewGRF -STR_TOOLTIP_STICKY :{BLACK}Peri na fydd y fysell 'cau pob Ffenestr' yn cau'r ffenestr hon +STR_TOOLTIP_DEFSIZE :{BLACK}Ailfeintio'r ffenestr i'w faint rhagosodedig. Bydd Ctrl+Clic yn storio'r maint presenol fel rhagosodiad +STR_TOOLTIP_STICKY :{BLACK}Nodi'r ffenest yma fel un na ellir ei gau can yr allwedd 'Cau Pob Ffenestr'. Bydd Ctrl+Clicio'n cadw'r dewis fel rhagosodiad STR_TOOLTIP_RESIZE :{BLACK}Cliciwch a llusgo er mwyn newid maint y ffenestr STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Toglu maint ffenestri mawr/bach STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Bar sgrolio - sgrolio'r rhestr i fyny neu i lawr @@ -255,7 +265,6 @@ STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}Ardal: { # These are used in buttons -STR_SORT_BY_CAPTION_POPULATION :{BLACK}Poblogaeth STR_SORT_BY_CAPTION_NAME :{BLACK}Enw STR_SORT_BY_CAPTION_DATE :{BLACK}Dyddiad # These are used in dropdowns @@ -276,18 +285,21 @@ 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 :Gwerth y cargo sy'n Disgwyl -STR_SORT_BY_RATING_MAX :Uchaf amcangrif cargo -STR_SORT_BY_RATING_MIN :Isaf amcangrif cargo +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 # Tooltips for the main toolbar STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Oedi'r gêm @@ -300,6 +312,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 @@ -370,19 +384,19 @@ STR_FILE_MENU_SEPARATOR : STR_FILE_MENU_EXIT :Gadael ############ range ends here -############ range for map menu starts +# map menu STR_MAP_MENU_MAP_OF_WORLD :Map o'r Byd STR_MAP_MENU_EXTRA_VIEW_PORT :Ffenestr Olygfa Newydd +STR_MAP_MENU_LINGRAPH_LEGEND :Allwedd Llif Cargo STR_MAP_MENU_SIGN_LIST :Rhestr Arwyddion -############ range for town menu starts, yet the town directory is shown in the map menu in the scenario editor + +############ range for town menu starts STR_TOWN_MENU_TOWN_DIRECTORY :Cyfeiriadur Trefi -############ end of the 'Display map' dropdown STR_TOWN_MENU_FOUND_TOWN :Sefydlu tref -############ end of the 'Town' dropdown +############ range ends here ############ range for subsidies menu starts STR_SUBSIDIES_MENU_SUBSIDIES :Cymorthdaliadau -STR_SUBSIDIES_MENU_GOAL :Nodau presennol ############ range ends here ############ range for graph menu starts @@ -397,10 +411,12 @@ STR_GRAPH_MENU_CARGO_PAYMENT_RATES :Cyfraddau Tâl ############ range for company league menu starts STR_GRAPH_MENU_COMPANY_LEAGUE_TABLE :Tabl Cynghrair Cwmnïau STR_GRAPH_MENU_DETAILED_PERFORMANCE_RATING :Graddfa Fanwl Perfformiad +STR_GRAPH_MENU_HIGHSCORE :Tabl sgôr uchaf ############ range ends here ############ range for industry menu starts STR_INDUSTRY_MENU_INDUSTRY_DIRECTORY :Cyfeiriadur Diwydiannau +STR_INDUSTRY_MENU_INDUSTRY_CHAIN :Cadwyni diwydiant STR_INDUSTRY_MENU_FUND_NEW_INDUSTRY :Ariannu diwydiant newydd ############ range ends here @@ -454,7 +470,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 @@ -470,22 +486,9 @@ 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 ############ range for days ends ############ range for months starts @@ -535,8 +538,8 @@ STR_GRAPH_CARGO_PAYMENT_RATES_X_LABEL :{TINY_FONT}{BLA STR_GRAPH_CARGO_PAYMENT_RATES_TITLE :{TINY_FONT}{BLACK}Tâl am gludo llwyth o 10 uned (neu 10,000 litr) pellter o 20 sgwâr STR_GRAPH_CARGO_ENABLE_ALL :{TINY_FONT}{BLACK}Galluogi popeth STR_GRAPH_CARGO_DISABLE_ALL :{TINY_FONT}{BLACK}Analluogi popeth -STR_GRAPH_CARGO_TOOLTIP_ENABLE_ALL :{BLACK}Dangos pob cargo ar y graff cyfraddau taliadau cargo -STR_GRAPH_CARGO_TOOLTIP_DISABLE_ALL :{BLACK}Peidio a dangos cargo ar y graff cyfraddau talaidau cargo +STR_GRAPH_CARGO_TOOLTIP_ENABLE_ALL :{BLACK}Dangos pob llwyth ar y graff cyfraddau taliadau llwythi +STR_GRAPH_CARGO_TOOLTIP_DISABLE_ALL :{BLACK}Peidio a dangos llwythi ar y graff cyfraddau talaidau llwythi STR_GRAPH_CARGO_PAYMENT_TOGGLE_CARGO :{BLACK}Toglu'r graff ar gyfer math llwyth ymlaen neu i ffwrdd STR_GRAPH_CARGO_PAYMENT_CARGO :{TINY_FONT}{BLACK}{STRING} @@ -647,7 +650,7 @@ STR_HIGHSCORE_PERFORMANCE_TITLE_CAPITALIST :Cyfalafwr STR_HIGHSCORE_PERFORMANCE_TITLE_MAGNATE :Magnad STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL :Mogwl STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY :Teicŵn -STR_HIGHSCORE_NAME :{BIG_FONT}{PRESIDENT_NAME}, {COMPANY} +STR_HIGHSCORE_NAME :{PRESIDENT_NAME}, {COMPANY} STR_HIGHSCORE_STATS :{BIG_FONT}'{STRING}' ({COMMA}) STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{BLACK}Mae {COMPANY} wedi cyrraedd statws '{STRING}'! STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{WHITE}Mae {PRESIDENT_NAME} o gwmni {COMPANY} wedi cyrraedd statws '{STRING}'! @@ -658,17 +661,20 @@ STR_SMALLMAP_CAPTION :{WHITE}Map - {S STR_SMALLMAP_TYPE_CONTOURS :Cyfuchlin STR_SMALLMAP_TYPE_VEHICLES :Cerbydau STR_SMALLMAP_TYPE_INDUSTRIES :Diwydiannau +STR_SMALLMAP_TYPE_ROUTEMAP :Llif Cargo STR_SMALLMAP_TYPE_ROUTES :Ffyrdd STR_SMALLMAP_TYPE_VEGETATION :Llystyfiant STR_SMALLMAP_TYPE_OWNERS :Perchnogion STR_SMALLMAP_TOOLTIP_SHOW_LAND_CONTOURS_ON_MAP :{BLACK}Dangos cyfuchlinau tir ar y map STR_SMALLMAP_TOOLTIP_SHOW_VEHICLES_ON_MAP :{BLACK}Dangos cerbydau ar y map STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRIES_ON_MAP :{BLACK}Dangos diwydiannau ar y map +STR_SMALLMAP_TOOLTIP_SHOW_LINK_STATS_ON_MAP :{BLACK}Dangos llif cargo ar y map STR_SMALLMAP_TOOLTIP_SHOW_TRANSPORT_ROUTES_ON :{BLACK}Dangos llwybrau cludo ar y map STR_SMALLMAP_TOOLTIP_SHOW_VEGETATION_ON_MAP :{BLACK}Dangos llystyfiant ar y map STR_SMALLMAP_TOOLTIP_SHOW_LAND_OWNERS_ON_MAP :{BLACK}Dangos perchnogion tir ar y map STR_SMALLMAP_TOOLTIP_INDUSTRY_SELECTION :{BLACK}Cliciwch ar ddiwydiant i doglo ei arddangos. Mae Ctrl+Clic'n cuddio pob math ond yr un a ddewiswyd. Ctrl+Cliciwch arno eto i ddangos pob diwydiant STR_SMALLMAP_TOOLTIP_COMPANY_SELECTION :{BLACK}Cliciwch ar gwmni i doglo arddangos ei eiddo. Mae Ctrl+Clic yn cuddio pob cwmni ond yr un a ddewiswyd. Ctrl+Cliciwch arno eto i ddangos pob cwmni +STR_SMALLMAP_TOOLTIP_CARGO_SELECTION :{BLACK}Cliciwch ar gargo i doglo arddangos ei rinweddau. Mae Ctrl+Clic yn analluogi pob cargo on yr un a glicwyd. Bydd Ctrl+Clicio arno eto'n galluogi pob cargo. STR_SMALLMAP_LEGENDA_ROADS :{TINY_FONT}{BLACK}Ffyrdd STR_SMALLMAP_LEGENDA_RAILROADS :{TINY_FONT}{BLACK}Rheilffyrdd @@ -702,6 +708,7 @@ STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLA STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Toglu dangos enwau trefi ar y map ymlaen neu i ffwrdd STR_SMALLMAP_CENTER :{BLACK}Canoli'r map bach ar y lleoliad presennol 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}Analluogi popeth @@ -712,6 +719,8 @@ STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES :{BLACK}Dangos p STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}Toglo dangos y map uchder STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES :{BLACK}Peidio â dangos unrhyw eiddo cwmni ar y map STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}Dangos eiddo pob cwmni ar y map +STR_SMALLMAP_TOOLTIP_DISABLE_ALL_CARGOS :{BLACK}Peidio â dangos cargo ar y map +STR_SMALLMAP_TOOLTIP_ENABLE_ALL_CARGOS :{BLACK}Dangos pob cargo ar y map # Status bar messages STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Dangos y neges neu'r adroddiad newyddion ddiwethaf... @@ -788,13 +797,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 +# Order review system / warnings STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}Mae gan {VEHICLE} rhy ddiffyg gorchmynion 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 @@ -873,15 +881,12 @@ STR_GAME_OPTIONS_CURRENCY_LTL :Litau Lithiwana STR_GAME_OPTIONS_CURRENCY_KRW :Won De Korea (KRW) STR_GAME_OPTIONS_CURRENCY_ZAR :Rand De Affrica (ZAR) STR_GAME_OPTIONS_CURRENCY_CUSTOM :Addasedig... +STR_GAME_OPTIONS_CURRENCY_GEL :Lari Georgia (GEL) +STR_GAME_OPTIONS_CURRENCY_IRR :Rial Iran (IRR) ############ end of currency region -STR_GAME_OPTIONS_MEASURING_UNITS_FRAME :{BLACK}Unedau mesur -STR_GAME_OPTIONS_MEASURING_UNITS_DROPDOWN_TOOLTIP :{BLACK}Dewis unedau mesur ############ start of measuring units region -STR_GAME_OPTIONS_MEASURING_UNITS_IMPERIAL :Imperial -STR_GAME_OPTIONS_MEASURING_UNITS_METRIC :Metrig -STR_GAME_OPTIONS_MEASURING_UNITS_SI :SI ############ end of measuring units region STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Cerbydau Ffordd @@ -919,11 +924,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 @@ -935,9 +942,6 @@ 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_BASE_GRF :{BLACK}Set raffeg sylfaenol STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Dewiswch y set raffeg sylfaenol i'w defnyddio STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} ffeil ar goll/llygredig @@ -952,6 +956,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 @@ -959,7 +964,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} @@ -1039,20 +1044,42 @@ STR_WARNING_NO_SUITABLE_AI :{WHITE}Dim AI a # Advanced settings window STR_CONFIG_SETTING_CAPTION :{WHITE}Ffurfweddu Addasiadau +STR_CONFIG_SETTING_FILTER_TITLE :{BLACK}Llinyn hidlo: +STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}Ehangu oll +STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}Cywasgu oll STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT :(dim esboniad ar gael) STR_CONFIG_SETTING_DEFAULT_VALUE :{LTBLUE}Gwerth rhagosodedig: {ORANGE}{STRING} STR_CONFIG_SETTING_TYPE :{LTBLUE}Math o osodiad: {ORANGE}{STRING} -STR_CONFIG_SETTING_TYPE_CLIENT :Gosodiad gwestai (ni storir yn y ffeiliau cadw; yn effeithio ar pob gêm) -STR_CONFIG_SETTING_TYPE_GAME_MENU :Gosodiad gêm (storir yn y ffeiliau cadw; yn effeithio ar gemau newydd yn unig) -STR_CONFIG_SETTING_TYPE_GAME_INGAME :Gosodiad gêm (storir yn y ffeil gadw; yn effeithio ar y gêm bresennol yn unig) -STR_CONFIG_SETTING_TYPE_COMPANY_MENU :Gosodiad cwmni (storir yn y ffeiliau cadw; yn effeithio ar gemau newydd yn unig) -STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :Gosodiad cwmni (storir yn y ffeil gadw; yn effeithio ar y cwmni presennol yn unig) - - +STR_CONFIG_SETTING_TYPE_CLIENT :Gosodiad gwestai (ni gedwir yn y ffeiliau cadw; yn effeithio ar pob gêm) +STR_CONFIG_SETTING_TYPE_GAME_MENU :Gosodiad gêm (cedwir yn y ffeiliau cadw; yn effeithio ar gemau newydd yn unig) +STR_CONFIG_SETTING_TYPE_GAME_INGAME :Gosodiad gêm (cedwir yn y ffeil gadw; yn effeithio ar y gêm bresennol yn unig) +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_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 :Gosodiadau sylfaenol +STR_CONFIG_SETTING_RESTRICT_ADVANCED :Gosodiadau uwch +STR_CONFIG_SETTING_RESTRICT_ALL :Gosodiadau arbenigwyr / pob gosodiad +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 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 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 -STR_CONFIG_SETTING_DISABLED :analluogwyd +STR_CONFIG_SETTING_DISABLED :Analluogwyd STR_CONFIG_SETTING_COMPANIES_OFF :I ffwrdd STR_CONFIG_SETTING_COMPANIES_OWN :Eich cwmni @@ -1066,10 +1093,30 @@ STR_CONFIG_SETTING_HORIZONTAL_POS_LEFT :Chwith STR_CONFIG_SETTING_HORIZONTAL_POS_CENTER :Canol STR_CONFIG_SETTING_HORIZONTAL_POS_RIGHT :De - -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_MAXIMUM_INITIAL_LOAN :Benthyciad agoriadol uchafsymol: {STRING} +STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Y swm uchaf y gall cwmni fenthyca (heb ustyried chwyddiant) +STR_CONFIG_SETTING_INTEREST_RATE :Cyfradd chwyddiant: {STRING} +STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Cyfradd chwyddiant y benthyciad; hefyd chwyddiant yr economi os y galluogir +STR_CONFIG_SETTING_RUNNING_COSTS :Costau rhedeg: {STRING} +STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT :Gosod lefel costau cynnal a chadw ar gerbydau a thanadeiledd +STR_CONFIG_SETTING_CONSTRUCTION_SPEED :Cyflymder adeiladu: {STRING} +STR_CONFIG_SETTING_CONSTRUCTION_SPEED_HELPTEXT :Cyfyngu'r nifer o weithredoedd adeiliadu ar gyfer AIau +STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS :Toriadau cerbydau: {STRING} +STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS_HELPTEXT :Gosod pa mor aml y gall gerbydau heb eu gwasanaethu'n rheolaidd dorri i lawr +STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER :Lluosydd cymhorthdal: {STRING} +STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT :Gosod faint a delir ar gyfer cysylltiadau gyda chymhorthdal +STR_CONFIG_SETTING_CONSTRUCTION_COSTS :Costau adeiladu: {STRING} +STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :Gosod lefel costau prynnu ac adeiladu +STR_CONFIG_SETTING_RECESSIONS :Dirwasgiadau: {STRING} +STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Os y galluogir, gall dirwasgiadau ddigwydd ambell flwyddyn. Yn ystod dirwasgiad bydd lefelau gweithgynhyrchu'n is o lawer (gan ddychwelyd at y lefel gwreiddiol wedi diwedd y dirwasgiad) +STR_CONFIG_SETTING_TRAIN_REVERSING :Rhwystro trenau rhag gwrthdroi mewn gorsafoedd: {STRING} +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 y cyngor tref 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_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 @@ -1090,214 +1137,393 @@ STR_CONFIG_SETTING_PERCENTAGE :{COMMA}% STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS :Serthrwydd llethrau ar gyfer cerbydau ffordd: {STRING} STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS_HELPTEXT :Serthrwydd teil llethr ar gyfer cerbyd ffordd. Mae gwerthoedd uwch yn ei gwneud yn anoddach i ddringo allt STR_CONFIG_SETTING_FORBID_90_DEG :Rhwystro trenau a llongau rhag troi 90 gradd: {STRING} +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_IMPROVEDLOAD :Defnyddio'r algorithm llwytho gwell: {STRING} -STR_CONFIG_SETTING_GRADUAL_LOADING :Llwytho cerbydau'n raddol: {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_INFLATION :Chwyddiant: {STRING} -STR_CONFIG_SETTING_SELECTGOODS :Danfon llwyth i orsaf dim ond pan fo galw: {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_MAX_BRIDGE_LENGTH :Hyd pont uchafsymol: {STRING} +STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_HELPTEXT :Hyd 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} -STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :dim -STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :fel diwydiannau eraill -STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :mwynchwilio am adnoddau crai +STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_HELPTEXT :Dull o ariannu diwydiant cynradd. Mae 'dim' yn golygu nid yw'n bosib ariannu rhai, 'mwynchwilio' yn golygu fod modd ariannu, ond bydd adeiladu'n digwydd mewn man ar hap ac y gall fethu llawn cystad, ac 'fel diwydiannau eraill' yn golygu fod modd eu hadeiladu gan gwmnïau fel diwydiannau eraill mewn unryw man y mynnent +STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :Dim +STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :Fel diwydiannau eraill +STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :Mwynchwilio +STR_CONFIG_SETTING_INDUSTRY_PLATFORM :Ardal gwastad o amgylch diwydiannau: {STRING} +STR_CONFIG_SETTING_INDUSTRY_PLATFORM_HELPTEXT :Ardal gwastad o amgylch diwydiant. Mae hyn yn sicrhau fod yna le gwastad o amgylch diwydiant ar gyfer adeiladu traciau a.y.y.b. STR_CONFIG_SETTING_MULTIPINDTOWN :Caniatáu nifer o ddiwydiannau unfath i bob tref: {STRING} +STR_CONFIG_SETTING_MULTIPINDTOWN_HELPTEXT :Fel arfer, ni fydd tref eisiau mwy nag un diwydiant o unrhyw fath. Bydd y gosodiad yma'n caniatáu nifer o ddiwydiannau o'r un fath yn yr un dref +STR_CONFIG_SETTING_SIGNALSIDE :Dangos signalau: {STRING} +STR_CONFIG_SETTING_SIGNALSIDE_HELPTEXT :Dewis pa ochr o'r trac i osod signalau +STR_CONFIG_SETTING_SIGNALSIDE_LEFT :Ar y chwith +STR_CONFIG_SETTING_SIGNALSIDE_DRIVING_SIDE :Ar yr ochr gyrru +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_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 hir -STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING :Ciwio cerbydau ffordd (gyda effeithiau cwantwm): {STRING} +STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :ochr bell 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 +STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT_FULLSCREEN :Prif ffenestr olygfa, sgrin llawn yn unig +STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT :Prif ffenestr olygfa +STR_CONFIG_SETTING_AUTOSCROLL_EVERY_VIEWPORT :Pob ffenestr olygfa STR_CONFIG_SETTING_BRIBE :Caniatáu llwgrwobrwyo'r awdurdod lleol: {STRING} +STR_CONFIG_SETTING_BRIBE_HELPTEXT :Caniatáu i gwmnïau geisio llwgrwobrwyo'r awdurdod lleol. Os bydd arolygydd yn sylwi ar yr ymgais ni gaiff y cwmni weithredu yn y dref am chwe mis STR_CONFIG_SETTING_ALLOW_EXCLUSIVE :Caniatáu prynu hawliau cludo cyfyngol: {STRING} STR_CONFIG_SETTING_ALLOW_EXCLUSIVE_HELPTEXT :Os yw cwmni'n prynnu hawliau cludiant cyfyngol mewn tref, ni fydd gosafoedd (teithwyr a chargo) gwrthwynebwyr yn derbyn unrhyw gargo am flwyddyn STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS :Caniatáu ariannu adeiladau: {STRING} +STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS_HELPTEXT :Caniatáu i gwmnïau rhoi arian i drefi er mwyn adeiladu tai newydd STR_CONFIG_SETTING_ALLOW_FUND_ROAD :Caniatáu ariannu gwaith ffordd lleol: {STRING} +STR_CONFIG_SETTING_ALLOW_FUND_ROAD_HELPTEXT :Caniatáu i gwmnïau rhoi arian i drefi er mwyn ail-adeiladu ffyrdd a drysu gwasanaethau ffordd yn y dref STR_CONFIG_SETTING_ALLOW_GIVE_MONEY :Caniatáu trosglwyddo arian i gwmnïau eraill: {STRING} +STR_CONFIG_SETTING_ALLOW_GIVE_MONEY_HELPTEXT :Caniatáu trosglwyddo arian rhwng cwmnïau mewn gêm amlchwaraewr STR_CONFIG_SETTING_FREIGHT_TRAINS :Lluosogydd pwysau ar gyfer llwythi i adlewyrchu trenau trwm{STRING} +STR_CONFIG_SETTING_FREIGHT_TRAINS_HELPTEXT :Gosod yr effaith o gario llwythi trom mewn trenau. Bydd gwerth uwch yn gwneud cludo llwythi'n galetach i drenau, yn arbennig ar elltydd +STR_CONFIG_SETTING_PLANE_SPEED :Ffactor cyflymder awyrennau: {STRING} +STR_CONFIG_SETTING_PLANE_SPEED_HELPTEXT :Gosod cyflymder awyrennau o gymharu â cherbydau eraill, i leihau'r incwm wrth gludo mewn awyren +STR_CONFIG_SETTING_PLANE_SPEED_VALUE :1 / {COMMA} STR_CONFIG_SETTING_PLANE_CRASHES :Nifer o ddamweiniau awyren: {STRING} +STR_CONFIG_SETTING_PLANE_CRASHES_HELPTEXT :Gosod y tebygolrwydd o drychineb awyren STR_CONFIG_SETTING_PLANE_CRASHES_NONE :Dim STR_CONFIG_SETTING_PLANE_CRASHES_REDUCED :Llai -STR_CONFIG_SETTING_PLANE_CRASHES_NORMAL :arferol +STR_CONFIG_SETTING_PLANE_CRASHES_NORMAL :Arferol STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Caniatáu arosfannau gyrru-trwodd ar ffyrdd sy'n eiddo i drefi: {STRING} +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_ADJACENT_STATIONS :Caniatáu adeiladu gorsafoedd cyfochrog: {STRING} -STR_CONFIG_SETTING_DYNAMIC_ENGINES :Galluogi defnyddio mwy nag un o setiau injian NewGRF: {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_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 STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :Maes awyr ddim yn dibennu: {STRING} +STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS_HELPTEXT :Mae galluogi'r dewis yma'n peri i bob math o faes awyr aros ar gael am byth wedi ei gyflwyniad gyntaf STR_CONFIG_SETTING_WARN_LOST_VEHICLE :Rhybuddio os yw cerbyd ar goll: {STRING} +STR_CONFIG_SETTING_WARN_LOST_VEHICLE_HELPTEXT :Creu negeseuon am gerbydau sy'n methu dod o hyd i lwybr at eu cyrchfan gorchymedig STR_CONFIG_SETTING_ORDER_REVIEW :Adolygu gorchmynion y cerbyd: {STRING} -STR_CONFIG_SETTING_ORDER_REVIEW_OFF :na -STR_CONFIG_SETTING_ORDER_REVIEW_EXDEPOT :iawn, ond hepgor cerbydau sydd wedi aros -STR_CONFIG_SETTING_ORDER_REVIEW_ON :o bob cerbyd +STR_CONFIG_SETTING_ORDER_REVIEW_HELPTEXT :Pan fo wedi'i alluogi, caiff gorchmynion cerbydau eu gwirio'n aclysurol, ac fe adroddir am rai trafferthion amlwg gyda neges newyddion +STR_CONFIG_SETTING_ORDER_REVIEW_OFF :Na +STR_CONFIG_SETTING_ORDER_REVIEW_EXDEPOT :Ia, ond hepgor cerbydau sydd yn aros +STR_CONFIG_SETTING_ORDER_REVIEW_ON :O bob cerbyd STR_CONFIG_SETTING_WARN_INCOME_LESS :Rhybuddio os yw cerbyd yn gwneud colled: {STRING} +STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :Pan fo wedi'i alluogi, fe yrrir neges newyddion pan fo cerbyd heb wneud elw yn ystod blwyddyn calendr STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Nid yw cerbydau'n darfod: {STRING} +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 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 STR_CONFIG_SETTING_AUTORENEW_MONEY :Isafswm arian awtoadnewyddu ar gyfer adnewyddu: {STRING} +STR_CONFIG_SETTING_AUTORENEW_MONEY_HELPTEXT :Lleiafswm arian a ddylai aros yn y banc cyn ystyried awtoadnewyddu cerbydau +STR_CONFIG_SETTING_ERRMSG_DURATION :Ystod neges gwall: {STRING} +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_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_LAND_GENERATOR :Cynhyrchydd Tir: {STRING} 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_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_ROUGHNESS_OF_TERRAIN :Garwder y tirwedd: {STRING} 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 +STR_CONFIG_SETTING_STATION_SPREAD :Gwasgariad gorsaf uchafsymol: {STRING} +STR_CONFIG_SETTING_STATION_SPREAD_HELPTEXT :Yr ardal mwyaf y caiff cydrannau gorsaf unigol eu gwasgaru trosto. Sylwer y bydd gwerthoedd uchel yn arafu'r gêm STR_CONFIG_SETTING_SERVICEATHELIPAD :Rhoi gwasanaeth i hofrenyddion ar helepads yn awtomatig: {STRING} +STR_CONFIG_SETTING_SERVICEATHELIPAD_HELPTEXT :Gwasanaethu hefrenyddion wedi pop glaniad, hyd yn oed os nad oes depô yn y maes awyr STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR :Cyfuno'r bar offer tirwedd gyda'r bariau offer ffordd/rheilffordd/maes awyr: {STRING} +STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR_HELPTEXT :Wrth agor bar offer adeiladu ar gyfer math o drafnidiaeth, agor y bar offer tirweddu hefyd STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR :Lliw tir a ddefnyddir ar y map bychan: {STRING} +STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :Lliw y tirwedd yn y map bychan 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_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_LIVERIES :Dangos lifrau cwmnïau: {STRING} +STR_CONFIG_SETTING_MEASURE_TOOLTIP_HELPTEXT :Dangos pellterau teil a gwahaniaethau uchder wrth lusgo tra'n adeiladu +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 STR_CONFIG_SETTING_LIVERIES_ALL :Pob cwmni STR_CONFIG_SETTING_PREFER_TEAMCHAT :Newid Sgwrsio Tîm i : {STRING} +STR_CONFIG_SETTING_PREFER_TEAMCHAT_HELPTEXT :Newid rhwymiadau sgwrs cwmni a sgwrs cyhoeddus at a yn ôl eu trefn STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING :Gweithred yr olwyn sgrolio: {STRING} +STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING_HELPTEXT :Galluogi sgrolio gydag olwynion llygoden â dwy echel STR_CONFIG_SETTING_SCROLLWHEEL_ZOOM :Mwyhau map STR_CONFIG_SETTING_SCROLLWHEEL_SCROLL :Sgrolio map STR_CONFIG_SETTING_SCROLLWHEEL_OFF :I ffwrdd STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER :Cyflymder olwyn sgrolio map: {STRING} +STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER_HELPTEXT :Rheoli manylder sgrolio olwyn y llygoden +STR_CONFIG_SETTING_OSK_ACTIVATION :Allweddfwrdd ar y sgrin: {STRING} +STR_CONFIG_SETTING_OSK_ACTIVATION_HELPTEXT :Dewis y dull i agor yr allweddfwrdd ar-sgrin ar gyfer mewnbynnu testun gan ddefnyddio'r cyrchydd yn unig +STR_CONFIG_SETTING_OSK_ACTIVATION_DISABLED :Analluogwyd +STR_CONFIG_SETTING_OSK_ACTIVATION_DOUBLE_CLICK :Clic ddwbl +STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK_FOCUS :Clic sengl (pan fo ffocws) +STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK :Clic sengl (ar unwaith) STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU :Efelychu de-glicio: {STRING} +STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_HELPTEXT :Dewis sut i efelychu cliciau botwm dde y llygoden STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Command-clic STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Ctrl+Clic 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_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} -STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :dim gweithredoedd -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_COMMAND_PAUSE_LEVEL_HELPTEXT :Dewis pa weithredoedd y gellid eu gwneud tra fo'r gêm wedi ei oedi +STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :Dim gweithredoedd +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 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 STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :Dangos amserlen fesul ticiau yn hytrach na dyddiau: {STRING} +STR_CONFIG_SETTING_TIMETABLE_IN_TICKS_HELPTEXT :Dangos amseroedd teithio mewn amserlenni mewn ticiau yn hytrach na dyddiau STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE :Dangos cyrraedd a gadael mewn amserlenni: {STRING} +STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE_HELPTEXT :Dangos amseroedd cyrraedd a gadael rhagdybiedig mewn amserlenni STR_CONFIG_SETTING_QUICKGOTO :Creu cyflym ar gyfer gorchmynion cerbydau: {STRING} +STR_CONFIG_SETTING_QUICKGOTO_HELPTEXT :Rhag-ddewis y 'cyrchydd mynd i' pan yn agor y ffenestr gorchmynion STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE :Math rheilffordd ragosodedig (ar ôl gêm newydd/llwytho gêm ): {STRING} +STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_HELPTEXT :Math o gledrau i'w ddewis wedi dechrau neu lwytho gêm. Bydd 'y cyntaf ar gael' yn dewis y math hynaf, 'yr olaf ar gael' yn dewis y diweddaraf, a 'defnydd mwyaf' y math mwyaf cyffredin ar hyn o bryd 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 STR_CONFIG_SETTING_EXPENSES_LAYOUT :Grwpio costau yn ffenestr cyllid y cwmni: {STRING} - +STR_CONFIG_SETTING_EXPENSES_LAYOUT_HELPTEXT :Diffinio cynllun ffenestr costau'r cwmni + +STR_CONFIG_SETTING_SOUND_TICKER :Stribyn newyddion: {STRING} +STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :Chwarae sŵn ar gyfer crynodiadau newyddion +STR_CONFIG_SETTING_SOUND_NEWS :Papur newydd: {STRING} +STR_CONFIG_SETTING_SOUND_NEWS_HELPTEXT :Chwarae sŵn ar ddangos papurau newydd +STR_CONFIG_SETTING_SOUND_NEW_YEAR :Diwedd y flwyddyn: {STRING} +STR_CONFIG_SETTING_SOUND_NEW_YEAR_HELPTEXT :Chwarae sŵn ar ddiwedd blwyddyn i adlewyrchu perfformiad y cwmni am y flwyddyn o'i gymharu a'r llynedd +STR_CONFIG_SETTING_SOUND_CONFIRM :Adeiladu: {STRING} +STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT :Chwarae sŵn wrth adeiladu'n lwyddiannus neu ar weithredoedd eraill +STR_CONFIG_SETTING_SOUND_CLICK :Cliciau botwm: {STRING} +STR_CONFIG_SETTING_SOUND_CLICK_HELPTEXT :Bipio wrth glicio botymau +STR_CONFIG_SETTING_SOUND_DISASTER :Trychinebau/damweiniau: {STRING} +STR_CONFIG_SETTING_SOUND_DISASTER_HELPTEXT :Chwarae effeithiau sŵn damweiniau a thrychinebau +STR_CONFIG_SETTING_SOUND_VEHICLE :Cerbydau: {STRING} +STR_CONFIG_SETTING_SOUND_VEHICLE_HELPTEXT :Chwarae effeithiau sŵn cerbydau +STR_CONFIG_SETTING_SOUND_AMBIENT :Cefndir: {STRING} +STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :Chwarae synau cefndirol y tirwedd, diwydiannau a threfi STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING :Analluogi adeiladu tanadeiledd pan nad oes cerbydau addas ar gael: {STRING} -STR_CONFIG_SETTING_MAX_TRAINS :Uchafswm nifer trenau cwmni: {STRING} -STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :Uchafswm cerbydau ffordd cwmni: {STRING} -STR_CONFIG_SETTING_MAX_AIRCRAFT :Uchafswm awyrennau cwmni: {STRING} -STR_CONFIG_SETTING_MAX_SHIPS :Uchafswm llongau cwmni: {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 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 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 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 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} +STR_CONFIG_SETTING_AI_BUILDS_TRAINS_HELPTEXT :Mae galluogi'r gosodiad yma'n ei gwneud yn amhosib i chwaraewr cyfrifiadur adeiladu trenau STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES :Analluogi cerbyd ffordd ar gyfer y cyfrifiadur: {STRING} +STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES_HELPTEXT :Mae galluogi'r gosodiad yma'n ei gwneud yn amhosib i chwaraewr cyfrifiadur adeiladu cerbydau ffordd STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT :Analluogi awyren ar gyfer y cyfrifiadur: {STRING} +STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT_HELPTEXT :Mae galluogi'r gosodiad yma'n ei gwneud yn amhosib i chwaraewr cyfrifiadur adeiladu awyrennau STR_CONFIG_SETTING_AI_BUILDS_SHIPS :Analluogi llongau ar gyfer y cyfrifiadur: {STRING} +STR_CONFIG_SETTING_AI_BUILDS_SHIPS_HELPTEXT :Mae galluogi'r gosodiad yma'n ei gwneud yn amhosib i chwaraewr cyfrifiadur adeiladu llongau +STR_CONFIG_SETTING_AI_PROFILE :Proffil gosodiadau rhagosodedig: {STRING} +STR_CONFIG_SETTING_AI_PROFILE_HELPTEXT :Dewis pa broffil gosodiadau i'w ddefnyddio ar gyfer AIau a gyflwynir ar hap, neu fel gwerthoedd rhagosodedig pan yn ychwanegu AI neu Sgript Gêm newydd +STR_CONFIG_SETTING_AI_PROFILE_EASY :Hawdd +STR_CONFIG_SETTING_AI_PROFILE_MEDIUM :Cymhedrol +STR_CONFIG_SETTING_AI_PROFILE_HARD :Anodd STR_CONFIG_SETTING_AI_IN_MULTIPLAYER :Caniatáu AIau mewn gemau amlchwaraewr: {STRING} +STR_CONFIG_SETTING_AI_IN_MULTIPLAYER_HELPTEXT :Caniatáu i chwaraewyr AI gymeryd rhan mewn gemau amlchwaraewr STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES :Nifer y gweithredoedd cyn diarddel sgriptiau: {STRING} +STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES_HELPTEXT :Uchafswm y nifer o gamau cyfrifo y gall sgript ei gymeryd mewn un tro STR_CONFIG_SETTING_SERVINT_ISPERCENT :Dangos y cyfnod rhwng gwasanaethau mewn canrannau: {STRING} +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_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 +STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Ystod gwasanaethu rhagosodedig ar gyfer awyrennau: {STRING} +STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Gosod yr ystod gwasanaethu rhagosodedig ar gyfer awyrennau newydd, os na ddynodir ystod gwasanaethu penodol ar gyfer y cerbyd +STR_CONFIG_SETTING_SERVINT_SHIPS :Ystod gwasanaethu rhagosodedig ar gyfer llongau: {STRING} +STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Gosod yr ystod gwasanaethu rhagosodedig ar gyfer llongau newydd, os na ddynodir ystod gwasanaethu penodol ar gyfer y cerbyd STR_CONFIG_SETTING_NOSERVICE :Analluogi gwasanaethau pan fydd torri i lawr wedi ei osod i Ddim: {STRING} +STR_CONFIG_SETTING_NOSERVICE_HELPTEXT :Pan y galluogir, ni wasanaethir cerbydau os na allent dorri i lawr STR_CONFIG_SETTING_WAGONSPEEDLIMITS :Galluogi terfynau cyflymder wagenni: {STRING} +STR_CONFIG_SETTING_WAGONSPEEDLIMITS_HELPTEXT :Pan y galluogir, fe ddefnyddir terfynnau cyflymder pob cerbyd mewn trên pan yn cyfrifo ei gyflymder uchafsymol STR_CONFIG_SETTING_DISABLE_ELRAILS :Analluogi cledrau trydan: {STRING} +STR_CONFIG_SETTING_DISABLE_ELRAILS_HELPTEXT :Mae galluogi'r gosodiad yma yn gwaredu a'r angen i drydaneiddio traciau cyn y gall injan drydan redeg arnynt STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN :Y cerbyd cyntaf yn cyrraedd gorsaf y chwaraewr: {STRING} +STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN_HELPTEXT :Dangos papur newydd pan fo'r cerbyd cyntaf yn cyrraedd gorsaf newydd y chwaraewr STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER :Y cerbyd cyntaf yn cyrraedd gorsaf cystadleuydd: {STRING} +STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER_HELPTEXT :Dangos papur newydd pan fo'r cerbyd cyntaf yn cyrraedd gorsaf newydd cystadleuwr STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS :Damweiniau / trychinebau: {STRING} +STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS_HELPTEXT :Dangos papur newydd pan fo damweiniau neu drychinebau'n digwydd STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION :Gwybodaeth Cwmnïau: {STRING} +STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION_HELPTEXT :Dangos papur newydd pan fo cwmni newydd yn dechrau, neu pan fo cwmnïau ar fin taro'r wal STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN :Cychwyn diwydiannau: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN_HELPTEXT :Dangos papur newydd pan fo diwydiannau newydd yn agor STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE :Cau diwydiannau: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE_HELPTEXT :Dangos papur newydd pan fo diwydiannau'n cau i lawr STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES :Newidiadau yn yr economi: {STRING} +STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES_HELPTEXT :Dangos papur newydd am newidiadau fyd-eang i'r economi STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY :Newid yng nghynyrch diwydiannau a wasanaethir gan y cwmni: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY_HELPTEXT :Dangos papur newydd pan fo lefel gweithgynhyrchu diwydiannau'n newid, a rheiny yn cael eu gwasanaethu gan y cwmni STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER :Newid yng nghynyrch diwydiannau a wasanaethir gan gystadleuw(y)r: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER_HELPTEXT :Dangos papur newydd pan fo lefel gweithgynhyrchu diwydiannau'n newid, a rheiny yn cael eu gwasanaethu gan gystadleuwyr STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED :Newidiadau cynyrch diwydiannau eraill: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED_HELPTEXT :Dangos papur newydd pan fo lefel gweithgynhyrchu diwydiannau'n newid, a rheiny heb eu gwasanaethu gan y cwmni na'i gystadleuwyr STR_CONFIG_SETTING_NEWS_ADVICE :Cyngor / gwybodaeth am gerbydau cwmni: {STRING} +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_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 STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION :Gwybodaeth Gyffredinol: {STRING} +STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION_HELPTEXT :Dangos papur newydd ar gyfer digwyddiadau cyffredinol, megis prynnu hawliau cyfyngol neu ariannu ailadeiladu ffyrdd STR_CONFIG_SETTING_NEWS_MESSAGES_OFF :I Ffwrdd STR_CONFIG_SETTING_NEWS_MESSAGES_SUMMARY :Crynodeb STR_CONFIG_SETTING_NEWS_MESSAGES_FULL :Llawn STR_CONFIG_SETTING_COLOURED_NEWS_YEAR :Bydd newyddion lliw yn ymddangos yn: {STRING} +STR_CONFIG_SETTING_COLOURED_NEWS_YEAR_HELPTEXT :Y blwyddyn y caiff cyhoeddiadau newyddion eu hargraffu mewn lliw. Cyn y dyddiad yma rhai du a gwyn fyddent STR_CONFIG_SETTING_STARTING_YEAR :Blwyddyn dechreuol: {STRING} STR_CONFIG_SETTING_SMOOTH_ECONOMY :Galluogi economi llyfn (mwy o newidiadau llai): {STRING} +STR_CONFIG_SETTING_SMOOTH_ECONOMY_HELPTEXT :Pan fe wedi'i alluogi, mae gweithgynhyrchiant diwydiant yn newid yn fwy aml, ac mewn cammau llai. Ni fydd y gosodiad yma yn cael effaith os y defnyddir diwydiannau NewGRF, fel rheol STR_CONFIG_SETTING_ALLOW_SHARES :Caniatáu prynu cyfranddaliadau mewn cwmnïau eraill: {STRING} +STR_CONFIG_SETTING_ALLOW_SHARES_HELPTEXT :Pan fo wedi'i alluogi, fe ganiateir prynnu a gwerthu cyfrandalaidau cwmni. Rhaid i gwmni gyrraedd oed penodol cyn y daw eu cyfrandaliadau ar gael +STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE :Canran elw y cymal i'w dalu mewn systemau trosglwyddo: {STRING} +STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE_HELPTEXT :Y canran o elw a ddyfarnir i'r cymalau rhyngol mewn systemau trosglwyddo, gan rhoi fwy o reolaeth dros yr elw +STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY :Wrth lusgo, gosod signalau bob: {STRING} +STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_HELPTEXT :Gosod y pellter y codir signalau ar drac hyd at y rhwystr nesaf (signal, cyffordd), os y llusgir signalau +STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_VALUE :{COMMA} teil +STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE :Pan yn llusgo, cadw pellter cyson rhwng y signalau: {STRING} +STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :Gosod ymddygiad gosod signalau pan yn Ctrl+llusgo signalau. Os analluogir, caiff signalau eu gosod o amgylch twneli a phontydd i osgoi ystodau hir heb signalau. Os y galluogir, caiff signalau eu gosod bob n teil, gan rwyddhau alinio signalau ar traciau paralel 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_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 STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBS :Signalau Llwybr STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBSOWAY :Signalau Llwybr Un-ffordd STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES :Cylchu trwy mathau signal: {STRING} +STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES_HELPTEXT :Dewis pa fathau o signalau i gylchu drwyddynt, pan yn Ctrl+clicio i adeiladu signalau gyda'r offer signal STR_CONFIG_SETTING_CYCLE_SIGNAL_NORMAL :Signalau bloc yn unig STR_CONFIG_SETTING_CYCLE_SIGNAL_PBS :Signalau llwybr yn unig STR_CONFIG_SETTING_CYCLE_SIGNAL_ALL :Pob math STR_CONFIG_SETTING_TOWN_LAYOUT :Cynllun ffyrdd ar gyfer trefi newydd: {STRING} -STR_CONFIG_SETTING_TOWN_LAYOUT_DEFAULT :rhagosodedig -STR_CONFIG_SETTING_TOWN_LAYOUT_BETTER_ROADS :ffyrdd gwell +STR_CONFIG_SETTING_TOWN_LAYOUT_HELPTEXT :Cynllun rhwydwaith ffyrdd trefi +STR_CONFIG_SETTING_TOWN_LAYOUT_DEFAULT :Gwreiddiol +STR_CONFIG_SETTING_TOWN_LAYOUT_BETTER_ROADS :Ffyrdd gwell STR_CONFIG_SETTING_TOWN_LAYOUT_2X2_GRID :grid 2x2 STR_CONFIG_SETTING_TOWN_LAYOUT_3X3_GRID :grid 3x3 -STR_CONFIG_SETTING_TOWN_LAYOUT_RANDOM :ar hap +STR_CONFIG_SETTING_TOWN_LAYOUT_RANDOM :Ar hap STR_CONFIG_SETTING_ALLOW_TOWN_ROADS :Caiff trefi adeiladu ffyrdd: {STRING} +STR_CONFIG_SETTING_ALLOW_TOWN_ROADS_HELPTEXT :Caniatáu i drefi adeiladu ffyrdd er mwyn tyfu. Bydd analluogi yn rhwystro awdurdodau trefi rhag adeiladu ffyrdd eu hunain 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 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_FORBIDDEN :gwahardd -STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :caniatáu -STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :caniatáu, cynllun tref addasiedig +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 +STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :Caniatáu +STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :Caniatáu, cynllun tref addasiedig STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT :Gosod coed mewn gêm: {STRING} -STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NONE :dim {RED}(yn torri'r felin goed) -STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_RAINFOREST :mewn glawgoedwigoedd yn unig -STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_ALL :pob man +STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_HELPTEXT :Rheoli ymddangosiad coed ar hap yn ystod y gêm. Gall hyn effeithio ar ddiwydiannau sy'n ddibynnol ar dyfiant coed, megis melinau coed +STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NONE :Dim {RED}(yn torri'r felin goed) +STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_RAINFOREST :Mewn glawgoedwigoedd yn unig +STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_ALL :Pob man STR_CONFIG_SETTING_TOOLBAR_POS :Safle'r prif far offer: {STRING} +STR_CONFIG_SETTING_TOOLBAR_POS_HELPTEXT :Lleoliad llorweddol y brif bar offer ar frig y sgrin STR_CONFIG_SETTING_STATUSBAR_POS :Lleoliad y bar statws: {STRING} +STR_CONFIG_SETTING_STATUSBAR_POS_HELPTEXT :Lleoliad llorweddol y bar statws ar waelod y sgrin +STR_CONFIG_SETTING_SNAP_RADIUS :Pellter snapio ffenestr: {STRING} +STR_CONFIG_SETTING_SNAP_RADIUS_HELPTEXT :Y pellter rhwng ffenestri cyn y bydd y ffenest sy'n cael ei symyd ei alinio'n ddiofyn at ffenestri gerllaw +STR_CONFIG_SETTING_SNAP_RADIUS_VALUE :{COMMA} picsel +STR_CONFIG_SETTING_SNAP_RADIUS_DISABLED :Analluogwyd STR_CONFIG_SETTING_SOFT_LIMIT :Uchafswm ffenestri (nad yw'n ludiog): {STRING} +STR_CONFIG_SETTING_SOFT_LIMIT_HELPTEXT :Y nifer o ffenestri agored (nad ydynt yn ludiog) cyn y caiff hen ffenestri eu cau'n ddiofyn i wneud lle ar gyfer ffenestri newydd +STR_CONFIG_SETTING_SOFT_LIMIT_VALUE :{COMMA} +STR_CONFIG_SETTING_SOFT_LIMIT_DISABLED :analluogwyd STR_CONFIG_SETTING_ZOOM_MIN :Lefel mwyháu uchafsymol: {STRING} +STR_CONFIG_SETTING_ZOOM_MIN_HELPTEXT :Y lefel agosáu uchaf ar gyfer ffenestri olygfa. Sylwer y bydd galluogi lefelau uwch yn codi 'r gofynion côf STR_CONFIG_SETTING_ZOOM_MAX :Lefel mwyháu isafsymol: {STRING} +STR_CONFIG_SETTING_ZOOM_MAX_HELPTEXT :Y lefel pellhau uchaf ar gyfer ffenestri golygfa. Gall lefelau pellhau uwch beri oediadau pan y defnyddient STR_CONFIG_SETTING_ZOOM_LVL_MIN :4x STR_CONFIG_SETTING_ZOOM_LVL_IN_2X :2x STR_CONFIG_SETTING_ZOOM_LVL_NORMAL :Arferol @@ -1305,40 +1531,115 @@ 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 :Cyflymder twf tref: {STRING} +STR_CONFIG_SETTING_TOWN_GROWTH_HELPTEXT :Cyflymder tyfiant trefi STR_CONFIG_SETTING_TOWN_GROWTH_NONE :Dim STR_CONFIG_SETTING_TOWN_GROWTH_SLOW :Araf STR_CONFIG_SETTING_TOWN_GROWTH_NORMAL :Arferol STR_CONFIG_SETTING_TOWN_GROWTH_FAST :Cyflym STR_CONFIG_SETTING_TOWN_GROWTH_VERY_FAST :Cyflym iawn +STR_CONFIG_SETTING_LARGER_TOWNS :Cyfran o drefi a dyf yn ddinasoedd: {STRING} +STR_CONFIG_SETTING_LARGER_TOWNS_HELPTEXT :Nifer o drefi a dyf yn ddinasoedd, ac felly yn dechrau fel trefi mwy sy'n tyfu'n gyflymach +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_MODIFIED_ROAD_REBUILD :Dileu ffyrdd disynnwyr wrth adeiladu ffyrdd: {STRING} - -STR_CONFIG_SETTING_GUI :{ORANGE}Rhyngwyneb -STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}Adeiladu +STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Maint cymhedrol dinasoedd o gymharu â threfi arferol ar ddechrau'r gêm + +STR_CONFIG_SETTING_LINKGRAPH_INTERVAL :Diweddaru'r graff dosraniad bob {STRING} 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} 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. Mae modd y bydd NewGRFau yn 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'r 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, eu dangos 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_CONSTRUCTION_SIGNALS :{ORANGE}Signalau -STR_CONFIG_SETTING_STATIONS_CARGOHANDLING :{ORANGE}Trin Cargo 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 STR_CONFIG_SETTING_PATHFINDER_YAPF_RECOMMENDED :YAPF {BLUE}(Argymellir) STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Llwybrwr ar gyfer trenau: {STRING} +STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Llwybrwr i'w ddefnyddio ar gyfer trenau STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :Llwybrwr ar gyfer cerbydau ffordd: {STRING} +STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES_HELPTEXT :Llwybrwr i'w ddefnyddio ar gyfer cerbydau ffordd STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS :Llwybrwr ar gyfer llongau: {STRING} +STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT :Llwybrwr i'w ddefnyddio ar gyfer llongau STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :Troi'n ôl yn awtomatig wrth signalau: {STRING} +STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT :Caniatáu i drenau gwrthdroi wrth signal, os ydynt wedi aros yno am beth amser STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}Newid gwerth gosodiad @@ -1359,6 +1660,8 @@ STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_ALGORITHM :{WHITE}... nid STR_CONFIG_ERROR_INVALID_BASE_GRAPHICS_NOT_FOUND :{WHITE}... yn anwybyddu set Graffeg Sylfaenol '{STRING}': ni ganfuwyd STR_CONFIG_ERROR_INVALID_BASE_SOUNDS_NOT_FOUND :{WHITE}... yn anwybyddu setiau Sain Sylfaenol '{STRING}': ni ganfuwyd STR_CONFIG_ERROR_INVALID_BASE_MUSIC_NOT_FOUND :{WHITE}... yn anwybyddu set Sain Sylfaenol '{STRING}': ni ganfuwyd +STR_CONFIG_ERROR_OUT_OF_MEMORY :{WHITE}Allan o gof +STR_CONFIG_ERROR_SPRITECACHE_TOO_BIG :{WHITE}Methwyd dyroddi {BYTES} o storfa corluniau. Lleihawyd y storfa corluniau at {BYTES}. Bydd hyn yn lleihau perfformiad OpenTTD. I leihau gofynion cof gallwch roi cynnig ar analluogi graffigiau 32 did a/neu lefelau mwyháu # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} @@ -1371,6 +1674,7 @@ STR_INTRO_SCENARIO_EDITOR :{BLACK}Golygydd STR_INTRO_MULTIPLAYER :{BLACK}Amlchwaraewr 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_NEWGRF_SETTINGS :{BLACK}Gosodiadau NewGRF STR_INTRO_ONLINE_CONTENT :{BLACK}Gwirio Cynnwys Ar-lein @@ -1390,6 +1694,7 @@ STR_INTRO_TOOLTIP_SUB_TROPICAL_LANDSCAPE :{BLACK}Dewis ti STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Dewis tirwedd teganau 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_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 @@ -1432,7 +1737,7 @@ STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}Caiff t STR_CHEAT_NO_JETCRASH :{LTBLUE}Ni fydd awyrennau jet yn crashio (yn aml) ar feysydd awyr bychain: {ORANGE}{STRING} 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 @@ -1478,6 +1783,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 @@ -1533,10 +1839,10 @@ STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}Newid te # Network server list STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}Amlchwaraewr -STR_NETWORK_SERVER_LIST_CONNECTION :{BLACK}Cysylltiad: -STR_NETWORK_SERVER_LIST_CONNECTION_TOOLTIP :{BLACK}Dewiswch rhwng gêm rhyngrwyd neu gêm Rwydwaith Ardal Leol (LAN) -STR_NETWORK_SERVER_LIST_LAN :LAN -STR_NETWORK_SERVER_LIST_INTERNET :Rhyngrwyd +STR_NETWORK_SERVER_LIST_ADVERTISED :{BLACK}Hysbys +STR_NETWORK_SERVER_LIST_ADVERTISED_TOOLTIP :{BLACK}Dewis rhwyd gêm a hysbysebir (rhyngrwyd) neu un anhysbys (rhwydwaith leol) +STR_NETWORK_SERVER_LIST_ADVERTISED_NO :Na +STR_NETWORK_SERVER_LIST_ADVERTISED_YES :Ia STR_NETWORK_SERVER_LIST_PLAYER_NAME :{BLACK}Enw chwaraewr: STR_NETWORK_SERVER_LIST_ENTER_NAME_TOOLTIP :{BLACK}Byddwch chi'n ymddangos i'r chwaraewyr eraill dan yr enw hwn @@ -1595,16 +1901,16 @@ STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP :{BLACK}Bydd y g STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}Gosod cyfrinair STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Diogelwch eich gêm â chyfrinair os nad ydych am i fynediad ato fod yn gyhoeddus -STR_NETWORK_START_SERVER_LAN_INTERNET :LAN / Rhyngrwyd -STR_NETWORK_START_SERVER_INTERNET_ADVERTISE :Rhyngrwyd (hysbysebu) +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 @@ -1717,6 +2023,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 @@ -1835,6 +2142,10 @@ STR_CONTENT_SELECT_UPDATES_CAPTION :{BLACK}Dewis uw STR_CONTENT_SELECT_UPDATES_CAPTION_TOOLTIP :{BLACK}Marcio'r holl gynnwys sydd yn uwchraddiad ar gyfer cynnwys sydd eisioes yn bodoli ac i'w lwytho i lawr STR_CONTENT_UNSELECT_ALL_CAPTION :{BLACK}Dad-ddewis y cyfan STR_CONTENT_UNSELECT_ALL_CAPTION_TOOLTIP :{BLACK}Marcio'r holl gynnwys nad yw i'w lwytho i lawr +STR_CONTENT_SEARCH_EXTERNAL :{BLACK}Chwilio gwefannau allanol +STR_CONTENT_SEARCH_EXTERNAL_TOOLTIP :{BLACK}Nid yw cynnwys chwilio ar gael ar wasannaeth cynnwys OpenTTD ar gyfer gwefannau nad ydynt yn gysylltiedig ag OpenTTD +STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER_CAPTION :{WHITE}Rydych yn gadael OpenTTD! +STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER :{WHITE}Mae'r termau ac amodau ar gyfer llawrlwytho cynnwys o wefannau allanolyn amrywio.{}Bydd yn rhaid i chi gyfeirio at y gwefannau allanol ar gyfer cyfarwyddiadau a sut i lwytho'r cynnwys yn OpenTTD.{}A ydych am barhau? STR_CONTENT_FILTER_TITLE :{BLACK}Hidlydd enw/tag: STR_CONTENT_OPEN_URL :{BLACK}Gwefan STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}Llwytho'r gwefan ar gyfer y cynnwys yma @@ -1857,7 +2168,7 @@ STR_CONTENT_DETAIL_FILESIZE :{SILVER}Maint L STR_CONTENT_DETAIL_SELECTED_BECAUSE_OF :{SILVER}Dewiswyd oherwydd: {WHITE}{STRING} STR_CONTENT_DETAIL_DEPENDENCIES :{SILVER}Dibyniaethau: {WHITE}{STRING} STR_CONTENT_DETAIL_TAGS :{SILVER}Tagiau: {WHITE}{STRING} -STR_CONTENT_NO_ZLIB :{WHITE}Cafodd OpenTTD ei adeiladu heb gefnogaeth "zlib"... +STR_CONTENT_NO_ZLIB :{WHITE}Adeiladwyd OpenTTD heb gefnogaeth "zlib"... STR_CONTENT_NO_ZLIB_SUB :{WHITE}... nid yw llwytho cynnwys i lawr yn bosibl! # Order of these is important! @@ -1904,6 +2215,17 @@ STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}Toglu tr STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Toglu tryloywder ar gyfer dangosyddion llwytho. Ctrl+Clic i gloi STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}Gosod gwrthrychau'n anweledig yn hytrach nac yn dryloyw +# Linkgraph legend window +STR_LINKGRAPH_LEGEND_CAPTION :{BLACK}Allwedd Llif Cargo +STR_LINKGRAPH_LEGEND_ALL :{BLACK}Oll +STR_LINKGRAPH_LEGEND_NONE :{BLACK}Dim +STR_LINKGRAPH_LEGEND_SELECT_COMPANIES :{BLACK}Dewis cwmnïau i'w dangos + +# Linkgraph legend window and linkgraph legend in smallmap +STR_LINKGRAPH_LEGEND_UNUSED :{TINY_FONT}{BLACK}diddefnydd +STR_LINKGRAPH_LEGEND_SATURATED :{TINY_FONT}{BLACK}dirlawn +STR_LINKGRAPH_LEGEND_OVERLOADED :{TINY_FONT}{BLACK}gorlwythiedig + # Base for station construction window(s) STR_STATION_BUILD_COVERAGE_AREA_TITLE :{BLACK}Amlygu ardal ddylanwad STR_STATION_BUILD_COVERAGE_OFF :{BLACK}I Ffwrdd @@ -1970,18 +2292,18 @@ STR_STATION_CLASS_WAYP :Pwyntiau llwybr # Signal window STR_BUILD_SIGNAL_CAPTION :{WHITE}Dewis Signal STR_BUILD_SIGNAL_SEMAPHORE_NORM_TOOLTIP :{BLACK}Signal Bloc (semaffor){}Dyma'r math mwyaf sylfaenol o signal, sy'n caniatáu un trên yn unig ymhob bloc ar unrhyw adeg -STR_BUILD_SIGNAL_SEMAPHORE_ENTRY_TOOLTIP :{BLACK}Signal Mynediad (semaffor){}Gwyrdd cyhyd a bod un neu fwy o signalau gadael yn wyrdd yn yr ardal nesaf. Coch fel arall +STR_BUILD_SIGNAL_SEMAPHORE_ENTRY_TOOLTIP :{BLACK}Signal Mynediad (semaffor){}Gwyrdd cyhyd y bod un neu fwy o signalau gadael yn wyrdd yn yr ardal nesaf o drac. Dangosir coch fel arall STR_BUILD_SIGNAL_SEMAPHORE_EXIT_TOOLTIP :{BLACK}Signal Gadael (semaffor){}Yn ymddwyn fel signal bloc, ond yn angenrheidiol ar gyfer gweithredu'r lliw cywir ar signalau mynediad a chyfun STR_BUILD_SIGNAL_SEMAPHORE_COMBO_TOOLTIP :{BLACK}Signal Cyfun (semaffor){}Mae'r signal cyfun yn gweithredu fel signal mynediad ac fel signal gadael. Mae hyn yn eich galluogi i adeiladu "coed" o ragsignalau STR_BUILD_SIGNAL_SEMAPHORE_PBS_TOOLTIP :{BLACK}Signal Llwybr (semaffor){}Mae signal llwybr yn caniatáu i fwy nag un trên symud i mewn i floc signal ar yr un pryd, os oes modd i'r trên gofrestru llwybr clir at fan aros diogel. Gellir pasio signalau llwybro cyffredin o'r ochr gefn STR_BUILD_SIGNAL_SEMAPHORE_PBS_OWAY_TOOLTIP :{BLACK}Signal Llwybr Unffordd (semaffor){}Mae signal llwybr yn caniatáu i fwy nag un trên symud i mewn i floc signal ar yr un pryd, os oes modd i'r trên gofrestru llwybr clir at fan aros diogel. Ni ellir pasio signalau llwybro unffordd o'r ochr gefn STR_BUILD_SIGNAL_ELECTRIC_NORM_TOOLTIP :{BLACK}Signal Bloc (trydan){}Dyma'r math mwyaf sylfaenol o signal, sy'n caniatáu un trên yn unig ymhob bloc ar unrhyw adeg -STR_BUILD_SIGNAL_ELECTRIC_ENTRY_TOOLTIP :{BLACK}Signal Mynediad (trydan){}Gwyrdd cyhyd a bod un neu fwy o signalau gadael yn wyrdd yn yr ardal nesaf. Coch fel arall +STR_BUILD_SIGNAL_ELECTRIC_ENTRY_TOOLTIP :{BLACK}Signal Mynediad (trydan){}Gwyrdd cyhyd y bod un neu fwy o signalau gadael yn wyrdd yn yr ardal nesaf o drac. Dangosai coch fel arall STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}Signal Gadael (trydan){}Yn ymddwyn fel signal bloc, ond yn angenrheidiol ar gyfer gweithredu'r lliw cywir ar signalau mynediad a chyfun STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}Signal Cyfun (trydan){}Mae'r signal cyfun yn gweithredu fel signal mynediad ac fel signal gadael. Mae hyn yn eich galluogi i adeiladu "coed" o ragsignalau STR_BUILD_SIGNAL_ELECTRIC_PBS_TOOLTIP :{BLACK}Signal Llwybr (trydan){}Mae signal llwybr yn caniatáu i fwy nag un trên symud i mewn i floc signal ar yr un pryd, os oes modd i'r trên gofrestru llwybr clir at fan aros diogel. Gellir pasio signalau llwybro cyffredin o'r ochr gefn STR_BUILD_SIGNAL_ELECTRIC_PBS_OWAY_TOOLTIP :{BLACK}Signal Llwybr Unffordd (trydan){}Mae signal llwybr yn caniatáu i fwy nag un trên symud i mewn i floc signal ar yr un pryd, os oes modd i'r trên gofrestru llwybr clir at fan aros diogel. Ni ellir pasio signalau llwybro unffordd o'r ochr gefn -STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}Trosi Signal{}Pan fydd wedi'i ddewis, bydd clicio ar signal sy'n bodoli yn ei drosi i'r math ac amrywiad a ddewiswyd, bydd Ctrl+Clic yn toglu'r amrywiad sy'n bodoli. Mae Shift+Clic yn dangos amcangyfrif o'r gost +STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}Trosi Signal{}Pan fydd wedi'i ddewis, bydd clicio ar signal sy'n bodoli yn ei drosi i'r math ac amrywiad a ddewiswyd, Mae Shift+Clic yn dangos amcangyfrif o'r gost STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_TOOLTIP :{BLACK}Dwysedd llusgo signalau STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_DECREASE_TOOLTIP :{BLACK}Cynyddu dwysedd llusgo signalau STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_INCREASE_TOOLTIP :{BLACK}Cynyddu amlder y signalau wrth lusgo @@ -2178,6 +2500,10 @@ STR_INDUSTRY_DISPLAY_CHAIN :{BLACK}Dangos c STR_INDUSTRY_DISPLAY_CHAIN_TOOLTIP :{BLACK}Dangos diwydiannau sy'n cyflenwi a derbyn llwythi STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP :{BLACK}Cyfuno a'r map bychan STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP_TOOLTIP :{BLACK}Dewis y diwydiannau a ddangosir ar y map bychan hefyd +STR_INDUSTRY_CARGOES_SELECT_CARGO :{BLACK}Dewis cargo +STR_INDUSTRY_CARGOES_SELECT_CARGO_TOOLTIP :{BLACK}Dewis y cargo yr ydych am ei ddangos +STR_INDUSTRY_CARGOES_SELECT_INDUSTRY :{BLACK}Dewis diwydiant +STR_INDUSTRY_CARGOES_SELECT_INDUSTRY_TOOLTIP :{BLACK}Dewis y diwydiant yr ydych am ei ddangos # Land area window STR_LAND_AREA_INFORMATION_CAPTION :{WHITE}Gwybodath Ardal Tir @@ -2202,6 +2528,7 @@ STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Llwythi sy'n cael eu derbyn: {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 @@ -2298,7 +2625,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Tir mae cwmni b 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-2012 Y tîm OpenTTD +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2014 Y tîm OpenTTD # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Cadw Gêm @@ -2317,6 +2644,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} @@ -2327,6 +2655,7 @@ STR_SAVELOAD_OSKTITLE :{BLACK}Rhowch e # World generation STR_MAPGEN_WORLD_GENERATION_CAPTION :{WHITE}Cynhyrchu Byd STR_MAPGEN_MAPSIZE :{BLACK}Maint Map: +STR_MAPGEN_MAPSIZE_TOOLTIP :{BLACK}Dewis maint y map mewn teiliau. Bydd y nifer o deiliau sydd ara gael ychydig yn llai STR_MAPGEN_BY :{BLACK}* STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Nifer trefi: STR_MAPGEN_DATE :{BLACK}Dyddiad: @@ -2334,10 +2663,6 @@ STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Nifer di 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: @@ -2364,7 +2689,6 @@ 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_SNOW_LINE_QUERY_CAPT :{WHITE}Newid uchder Llinell Eira STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Newid y flwyddyn gychwyn @@ -2419,7 +2743,9 @@ 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_FILE_TOOLTIP :{BLACK}Rhestr o bob ffeil NewGRF sydd wedi'u gosod. +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 STR_NEWGRF_SETTINGS_SHOW_PARAMETERS :{BLACK}Dangos paramedrau @@ -2443,6 +2769,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 @@ -2502,6 +2838,7 @@ STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}Mae'r { STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Yn cynnwys sawl cofnod Gweithred 8 (corlun {3:NUM}) STR_NEWGRF_ERROR_READ_BOUNDS :Darllen heibio i ddiwedd llid-gorlun (corlun {3:NUM}) STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}Mae'r set raffeg sylfaenol a ddefnyddir ar hyn o bryd yn brin o sawl corlun{}Diweddarwch y set raffeg sylfaenol i ddatrys hyn +STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}Mae nifer o gorluniau ar goll o'r set graffeg sylfaenol mewn defnydd.{}Diweddarwch y set graffeg sylfaenol.{}Gane eich bod yn chwarae {YELLOW}ciplun datblygiadol o OpenTTD{WHITE}, efallai y byddwch angen {YELLOW}ciplun ddatblygiadol o'r grafffeg sylfaenol{WHITE} STR_NEWGRF_ERROR_GRM_FAILED :Nid yw'r adnoddau GRF a geisiwyd ar gael (corlun {3:NUM}) STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :Fe analluogwyd {1:STRING} gan {STRING} STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Fformat cynllun corlun annilys/anhysbys (corlun {3:NUM}) @@ -2512,6 +2849,7 @@ STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}Rydych STR_NEWGRF_DUPLICATE_GRFID :{WHITE}Methu ychwanegu'r ffeil: ID GRF dyblyg STR_NEWGRF_COMPATIBLE_LOADED :{ORANGE}Ni ddarganfuwyd ffeil sy'n cydweddu (GRF cydnaws wedi'i lwytho) +STR_NEWGRF_TOO_MANY_NEWGRFS :{WHITE}Methu ychwanegu ffeil: Wedi cyrraedd terfyn ffeiliau NewGRF STR_NEWGRF_COMPATIBLE_LOAD_WARNING :{WHITE}Llwythwyd GRF(au) cydnaws yn lle'r rhai coll STR_NEWGRF_DISABLED_WARNING :{WHITE}Analluogwyd y ffeiliau GRF coll @@ -2528,20 +2866,24 @@ 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 -STR_NEWGRF_BUGGY_ARTICULATED_CARGO :{WHITE}Mae'r wybodaeth cargo/ailffitio ar gyfer '{1:ENGINE}' yn wahanol i'r rhestr brynu wedi'r adeiladu. Gall hyn beri i awtoadnewyddu/-ddisodli fethu ag ailfitio'n gywir +STR_NEWGRF_BUGGY_ARTICULATED_CARGO :{WHITE}Mae'r wybodaeth llwyth/ailffitio ar gyfer '{1:ENGINE}' yn wahanol i'r rhestr brynu wedi'r adeiladu. Gall hyn beri i awtoadnewyddu/-ddisodli fethu ag ailfitio'n gywir STR_NEWGRF_BUGGY_ENDLESS_PRODUCTION_CALLBACK :{WHITE}'{1:STRING}' wedi creu lŵp diddiwedd yn y system adalw cynhyrchu STR_NEWGRF_BUGGY_UNKNOWN_CALLBACK_RESULT :{WHITE}Dychwelodd adalwad {1:HEX} ganlyniad anhysbys/annilys {2:HEX} # 'User removed essential NewGRFs'-placeholders for stuff without specs -STR_NEWGRF_INVALID_CARGO : +STR_NEWGRF_INVALID_CARGO : STR_NEWGRF_INVALID_CARGO_ABBREV :?? STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} o 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}Yn sganio NewGRFau STR_NEWGRF_SCAN_MESSAGE :{BLACK}Yn sganio NewGRFau. Gall gymeryd peth amser yn ddibynnol ar eu nifer... @@ -2573,7 +2915,7 @@ STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} ( STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}Poblogaeth: {ORANGE}{COMMA}{BLACK} Tai: {ORANGE}{COMMA} STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}Teithwyr mis diwethaf: {ORANGE}{COMMA}{BLACK} uchafswm: {ORANGE}{COMMA} STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}Post mis diwethaf: {ORANGE}{COMMA}{BLACK} uchafswm: {ORANGE}{COMMA} -STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}Cargo angenrheidiol ar gyfer tyfiant y dref: +STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}Nwyddau angenrheidiol ar gyfer tyfiant y dref: STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{RED}Angen {ORANGE}{STRING} STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} ei angen yn y gaeaf STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED_GENERAL :{ORANGE}{STRING}{GREEN} wedi ei dderbyn @@ -2623,12 +2965,16 @@ STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT :{YELLOW}Prynu'r 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_CAPTION :{WHITE}Nodau -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_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_SPECTATOR_NONE :{ORANGE}- Amherthnasol - +STR_GOALS_PROGRESS :{ORANGE}{STRING} +STR_GOALS_PROGRESS_COMPLETE :{GREEN}{STRING} +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 @@ -2665,6 +3011,18 @@ STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}Gwasanae STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING} o {STRING} i {STRING}{YELLOW} ({COMPANY}{YELLOW}, tan {DATE_SHORT}) 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 STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}Daliwch CTRL i ddewis mwy nag un eitem @@ -2678,19 +3036,44 @@ 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} ar ei ffordd o {STATION}) +STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} o {STATION}) +STR_STATION_VIEW_RESERVED :{YELLOW}({CARGO_SHORT} wedi ei gadw ar gyfer llwytho) STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Derbyn STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Dangos rhestr o'r llwythi sy'n cael eu derbyn STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}Derbyn: {WHITE}{CARGO_LIST} +STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Mae gan yr orsaf hon hawliau cludo cyfyngol yn y dref hon. +STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :Mae {YELLOW}{COMPANY}{BLACK} wedi prynnu hawliau cludo cyfyngol yn y dref hon. STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Perfformiad STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Dangos graddfeydd gorsaf -STR_STATION_VIEW_CARGO_RATINGS_TITLE :{BLACK}Safon y gwasanaethau cludiant lleol: -STR_STATION_VIEW_CARGO_RATING :{WHITE}{STRING}: {YELLOW}{STRING} ({COMMA}%) +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 @@ -2713,6 +3096,8 @@ STR_STATION_VIEW_SCHEDULED_SHIPS_TOOLTIP :{BLACK}Dangos p STR_STATION_VIEW_RENAME_STATION_CAPTION :Ailenwi gorsaf/ardal lwytho +STR_STATION_VIEW_CLOSE_AIRPORT :{BLACK}Cau'r maes awyr +STR_STATION_VIEW_CLOSE_AIRPORT_TOOLTIP :{BLACK}Rhwystro awyrennau rhag glanio ar y maes awyr yma # Waypoint/buoy view window STR_WAYPOINT_VIEW_CAPTION :{WHITE}{WAYPOINT} @@ -2815,7 +3200,6 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS :{WHITE}Camlesi STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}Gorsafoedd: STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}Teiliau gorsaf STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}Meysydd Awyr -STR_COMPANY_INFRASTRUCTURE_VIEW_COST :{WHITE}{1:CURRENCY_LONG}/bl ({0:COMMA}) STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL :{WHITE}{CURRENCY_LONG}/bl # Industry directory @@ -2832,6 +3216,7 @@ STR_INDUSTRY_VIEW_PRODUCTION_LAST_MONTH_TITLE :{BLACK}Cynnyrch STR_INDUSTRY_VIEW_TRANSPORTED :{YELLOW}{CARGO_LONG}{STRING}{BLACK} ({COMMA}% wedi'i gludo) STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Canoli'r brif olygfa ar y diwydiant. Mae Ctrl+Clic yn agor ffenest golwg newydd ar leoliad y diwydiant STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Lefel cynhyrchu: {YELLOW}{COMMA}% +STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}Mae'r diwydiant wedi datgan ei fod ar fin cau! ############ range for requires starts STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Angen: {YELLOW}{STRING}{STRING} @@ -2840,7 +3225,7 @@ STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Angen: { ############ range for requires ends ############ range for produces starts -STR_INDUSTRY_VIEW_WAITING_FOR_PROCESSING :{BLACK}Cargo yn aros i gael ei brosesu: +STR_INDUSTRY_VIEW_WAITING_FOR_PROCESSING :{BLACK}Llwythi yn aros i gael ei brosesu: STR_INDUSTRY_VIEW_WAITING_STOCKPILE_CARGO :{YELLOW}{CARGO_LONG}{STRING}{BLACK} STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Cynhyrchu: {YELLOW}{STRING}{STRING} STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}Cynhyrchu: {YELLOW}{STRING}{STRING}, {STRING}{STRING} @@ -2894,12 +3279,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 @@ -2934,7 +3322,7 @@ 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 @@ -3061,7 +3449,7 @@ STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}Cost: {C # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}Disodli {STRING} - {STRING} -STR_REPLACE_VEHICLE_TRAIN :Mae Trên +STR_REPLACE_VEHICLE_TRAIN :Trên STR_REPLACE_VEHICLE_ROAD_VEHICLE :Mae Cerbyd Ffordd STR_REPLACE_VEHICLE_SHIP :Mae Llong STR_REPLACE_VEHICLE_AIRCRAFT :Mae Awyren @@ -3070,15 +3458,17 @@ STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Dewiswch STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Dewiswch y math injan newydd yr hoffech chi ei ddefnyddio yn lle'r math injan ar y chwith STR_REPLACE_VEHICLES_START :{BLACK}Dechrau Disodli Cerbydau +STR_REPLACE_VEHICLES_NOW :Disodli pob cerbyd yn awr +STR_REPLACE_VEHICLES_WHEN_OLD :Disodli hen gerbydau yn unig STR_REPLACE_HELP_START_BUTTON :{BLACK}Pwyswch i ddechrau disodli'r math injan a ddewiswyd ar y chwith gyda'r math injan a ddewiswyd ar y dde STR_REPLACE_NOT_REPLACING :{BLACK}Ddim yn disodli STR_REPLACE_NOT_REPLACING_VEHICLE_SELECTED :{BLACK}Dim cerbyd wedi'i ddewis STR_REPLACE_REPLACING_WHEN_OLD :{ENGINE} pan yn hen -STR_REPLACE_VEHICLES_STOP :{BLACK}Dechrau Disodli Cerbydau +STR_REPLACE_VEHICLES_STOP :{BLACK}Gorffen Disodli Cerbydau 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 @@ -3193,6 +3583,11 @@ STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Bwlch rh 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. +STR_SERVICE_INTERVAL_DROPDOWN_TOOLTIP :{BLACK}Newid dull ystod gwasanaethu +STR_VEHICLE_DETAILS_DEFAULT :Rhagosodedig +STR_VEHICLE_DETAILS_DAYS :Diwrnod +STR_VEHICLE_DETAILS_PERCENT :Canran + STR_QUERY_RENAME_TRAIN_CAPTION :{WHITE}Enwi trên STR_QUERY_RENAME_ROAD_VEHICLE_CAPTION :{WHITE}Enwi cerbyd ffordd STR_QUERY_RENAME_SHIP_CAPTION :{WHITE}Enwi llong @@ -3202,7 +3597,7 @@ STR_QUERY_RENAME_AIRCRAFT_CAPTION :{WHITE}Enwi awy STR_VEHICLE_DETAILS_TRAIN_ENGINE_BUILT_AND_VALUE :{LTBLUE}{ENGINE}{BLACK} Adeiladwyd: {LTBLUE}{NUM}{BLACK} Gwerth: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_DETAILS_TRAIN_WAGON_VALUE :{LTBLUE}{ENGINE}{BLACK} Gwerth: {LTBLUE}{CURRENCY_LONG} -STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY_TEXT :{BLACK}Cyfanswm cynhwysedd cargo y trên hwn: +STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY_TEXT :{BLACK}Cyfanswm cynhwysedd cludo'r trên hwn: 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}) @@ -3216,8 +3611,8 @@ STR_VEHICLE_DETAIL_TAB_INFORMATION :{BLACK}Gwybodae STR_VEHICLE_DETAILS_TRAIN_INFORMATION_TOOLTIP :{BLACK}Dangos manylion cerbydau'r trên STR_VEHICLE_DETAIL_TAB_CAPACITIES :{BLACK}Cyfansymau Gallu Cludo STR_VEHICLE_DETAILS_TRAIN_CAPACITIES_TOOLTIP :{BLACK}Dangos cynwyseddau pob cerbyd -STR_VEHICLE_DETAIL_TAB_TOTAL_CARGO :{BLACK}Cyfanswm Cargo -STR_VEHICLE_DETAILS_TRAIN_TOTAL_CARGO_TOOLTIP :{BLACK}Dangos cynhwysedd y trên, wedi'i rannu yn ôl math cargo +STR_VEHICLE_DETAIL_TAB_TOTAL_CARGO :{BLACK}Cyfanswm Llwyth +STR_VEHICLE_DETAILS_TRAIN_TOTAL_CARGO_TOOLTIP :{BLACK}Dangos cynhwysedd y trên, wedi'i rannu yn ôl math nwyddau STR_VEHICLE_DETAILS_TRAIN_ARTICULATED_RV_CAPACITY :{BLACK}Cynhwysedd: {LTBLUE} @@ -3265,10 +3660,10 @@ STR_ORDER_GO_VIA :Galw heibio STR_ORDER_GO_NON_STOP_VIA :Myn heb stop gan alw heibio STR_ORDER_TOOLTIP_NON_STOP :{BLACK}Newid ymddygiad stopio o'r gorchymyn a amlygwyd -STR_ORDER_TOGGLE_FULL_LOAD :{BLACK}Llwyth llawn o unrhyw gargo +STR_ORDER_TOGGLE_FULL_LOAD :{BLACK}Llwyth llawn, unrhyw gargo STR_ORDER_DROP_LOAD_IF_POSSIBLE :Llwytho os yw ar gael -STR_ORDER_DROP_FULL_LOAD_ALL :Llwyth llawn o bob cargo -STR_ORDER_DROP_FULL_LOAD_ANY :Llwyth llawn o bob cargo +STR_ORDER_DROP_FULL_LOAD_ALL :Llwyth llawn, pob cargo +STR_ORDER_DROP_FULL_LOAD_ANY :Llwyth llawn, unrhyw gargo STR_ORDER_DROP_NO_LOADING :Dim llwytho STR_ORDER_TOOLTIP_FULL_LOAD :{BLACK}Newid ymddygiad llwytho'r gorchymyn a amlygwyd @@ -3281,8 +3676,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 @@ -3330,7 +3725,7 @@ STR_ORDER_GO_TO_NEAREST_DEPOT :Mynd i'r depo a STR_ORDER_GO_TO_NEAREST_HANGAR :Mynd i'r awyrendy agosaf STR_ORDER_CONDITIONAL :Naid gorchymyn amodol STR_ORDER_SHARE :Rhannu gorchmynion -STR_ORDERS_GO_TO_TOOLTIP :{BLACK}Mewnosod gorchymyn newydd cyn yr orchymyn a amlygwyd, neu greu ar ddiwedd y rhestr. Mae Ctrl yn gwneud gorchymynion orsaf yn rhai 'llwyth llawn unrhyw cargo', gorchymynion pwyntiau llwybro 'heb aros' a gorchmynion depot 'gwasanaethu'. Mae 'Rhannu gorchmynion' neu Ctrl yn galluogi i'r cerbyd yma rannu gorchmynion gyda'r cerbyd a ddewisir. Mae clicio ar gerbyd yn copïo gorchmynion o'r cerbyd hwnnw. Mae gorchymyn depo'n analluogi gwasanaethu diofyn ar gyfer y cerbyd +STR_ORDERS_GO_TO_TOOLTIP :{BLACK}Mewnosod gorchymyn newydd cyn yr orchymyn a amlygwyd, neu greu ar ddiwedd y rhestr. Mae Ctrl yn gwneud gorchymynion orsaf yn rhai 'llwyth llawn unrhyw nwyddau', gorchymynion pwyntiau llwybro 'heb aros' a gorchmynion depot 'gwasanaethu'. Mae 'Rhannu gorchmynion' neu Ctrl yn galluogi i'r cerbyd yma rannu gorchmynion gyda'r cerbyd a ddewisir. Mae clicio ar gerbyd yn copïo gorchmynion o'r cerbyd hwnnw. Mae gorchymyn depo'n analluogi gwasanaethu diofyn ar gyfer y cerbyd STR_ORDERS_VEH_WITH_SHARED_ORDERS_LIST_TOOLTIP :{BLACK}Dangos pob cerbydau sy'n rhannu'r amserlen hon @@ -3358,45 +3753,45 @@ STR_ORDER_GO_TO_STATION :{STRING} {STATI STR_ORDER_IMPLICIT :(Ymhlyg) STR_ORDER_FULL_LOAD :(Llwyth llawn) -STR_ORDER_FULL_LOAD_ANY :(Llwyth llawn o unrhyw gargo) +STR_ORDER_FULL_LOAD_ANY :(Llwyth llawn, unrhyw gargo) STR_ORDER_NO_LOAD :(Dim llwytho) -STR_ORDER_UNLOAD :(Dadlwytho a chymryd cargo) +STR_ORDER_UNLOAD :(Dadlwytho a llwytho) STR_ORDER_UNLOAD_FULL_LOAD :(Dadlwytho ac aros am lwyth llawn) STR_ORDER_UNLOAD_FULL_LOAD_ANY :(Dadlwytho ac aros am lwyth llawn) STR_ORDER_UNLOAD_NO_LOAD :(Dadlwytho a gadael yn wag) -STR_ORDER_TRANSFER :(Trosglwyddo a chymryd cargo) +STR_ORDER_TRANSFER :(Trosglwyddo a llwytho) STR_ORDER_TRANSFER_FULL_LOAD :(Trosglwyddo ac aros am lwyth llawn) STR_ORDER_TRANSFER_FULL_LOAD_ANY :(Trosglwyddo ac aros am lwyth llawn) STR_ORDER_TRANSFER_NO_LOAD :(Trosglwyddo a gadael yn wag) -STR_ORDER_NO_UNLOAD :(Dim dadlwytho ond cymryd cargo) +STR_ORDER_NO_UNLOAD :(Dim dadlwytho ond llwytho) STR_ORDER_NO_UNLOAD_FULL_LOAD :(Dim dadlwytho, aros am lwyth llawn) 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 cymryd cargo 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 cymryd cargo 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 cymryd cargo 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 STR_ORDER_STOP_LOCATION_NEAR_END :[ochr agos] STR_ORDER_STOP_LOCATION_MIDDLE :[canol] -STR_ORDER_STOP_LOCATION_FAR_END :[ochr hir] +STR_ORDER_STOP_LOCATION_FAR_END :[ochr bell] STR_ORDER_OUT_OF_RANGE :{RED} (Mae'r cyrchfan nesaf allan o gyrraedd y cerbyd) STR_ORDER_CONDITIONAL_UNCONDITIONAL :Neidio i orchymyn {COMMA} -STR_ORDER_CONDITIONAL_NUM :Neidio i orchymyn {COMMA} pan {STRING} {STRING} {COMMA} -STR_ORDER_CONDITIONAL_TRUE_FALSE :Neidio i orchymyn {COMMA} pan {STRING} {STRING} +STR_ORDER_CONDITIONAL_NUM :Neidio i orchymyn {COMMA} pan fo {STRING} {STRING} {COMMA} +STR_ORDER_CONDITIONAL_TRUE_FALSE :Neidio i orchymyn {COMMA} pan fo {STRING} {STRING} STR_INVALID_ORDER :{RED} (Gorchymyn Annilys) @@ -3413,6 +3808,10 @@ 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 @@ -3428,7 +3827,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 man dechrau ar gyfer yr amselen yma +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 @@ -3450,7 +3849,7 @@ STR_TIMETABLE_AUTOFILL_TOOLTIP :{BLACK}Llenwch STR_TIMETABLE_EXPECTED :{BLACK}Disgwylir STR_TIMETABLE_SCHEDULED :{BLACK}Amserlenwyd -STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Newid rhwng yr amserlen a'r amser a ddisgwylir +STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Newid rhwng yr amser a ddisgwylir a'r amserlen STR_TIMETABLE_ARRIVAL_ABBREVIATION :Cyr: STR_TIMETABLE_DEPARTURE_ABBREVIATION :Gad: @@ -3542,6 +3941,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 @@ -3554,6 +3955,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}Cost: {CURRENCY_LONG} @@ -3562,6 +3965,10 @@ STR_INCOME_FLOAT_INCOME_SMALL :{TINY_FONT}{GRE STR_INCOME_FLOAT_INCOME :{GREEN}Incwm: {CURRENCY_LONG} STR_FEEDER_TINY :{TINY_FONT}{YELLOW}Trosglwyddo: {CURRENCY_LONG} STR_FEEDER :{YELLOW}Trosglwyddo: {CURRENCY_LONG} +STR_FEEDER_INCOME_TINY :{TINY_FONT}{YELLOW}Trosglwyddo: {CURRENCY_LONG}{WHITE} / {GREEN}Incwm: {CURRENCY_LONG} +STR_FEEDER_INCOME :{YELLOW}Trosglwyddo: {CURRENCY_LONG}{WHITE} / {GREEN}Incwm: {CURRENCY_LONG} +STR_FEEDER_COST_TINY :{TINY_FONT}{YELLOW}Trosglwyddo: {CURRENCY_LONG}{WHITE} / {RED}Cost: {CURRENCY_LONG} +STR_FEEDER_COST :{YELLOW}Trosglwyddo: {CURRENCY_LONG}{WHITE} / {RED}Cost: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_COST :{WHITE}Amcangyfrif Côst: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Amcangyfrif Incwm: {CURRENCY_LONG} @@ -3602,6 +4009,8 @@ STR_WARNING_HEIGHTMAP_SCALE_MESSAGE :{YELLOW}Ni argy STR_WARNING_FALLBACK_SOUNDSET :{WHITE}Dim ond set sain wrth gefn a ganfuwyd. Os ydych am gael sain, llawrlwythwch set sain drwy'r system llawrlwytho cynnwys # Screenshot related messages +STR_WARNING_SCREENSHOT_SIZE_CAPTION :{WHITE}Ciplun anferth +STR_WARNING_SCREENSHOT_SIZE_MESSAGE :{YELLOW}Bydd gan y ciplun faint o {COMMA} x {COMMA} pcsel. Gall cymeryd peth amser i greu'r ciplun. A ydych am barhau? STR_MESSAGE_SCREENSHOT_SUCCESSFULLY :{WHITE}Cadwyd y ciplun yn llwyddiannus fel '{STRING}' STR_ERROR_SCREENSHOT_FAILED :{WHITE}Methodd y ciplun! @@ -3625,12 +4034,13 @@ STR_ERROR_OWNED_BY :{WHITE}... eidd STR_ERROR_AREA_IS_OWNED_BY_ANOTHER :{WHITE}... mae'r ardal yn eiddo i gwmni arall STR_ERROR_TERRAFORM_LIMIT_REACHED :{WHITE}... wedi cyrraedd y diben tirffurfio STR_ERROR_CLEARING_LIMIT_REACHED :{WHITE}... diben clirio teiliau wedi ei gyrraedd +STR_ERROR_TREE_PLANT_LIMIT_REACHED :{WHITE}... wedi cyrraedd y diben planu coed STR_ERROR_NAME_MUST_BE_UNIQUE :{WHITE}Rhaid i'r enw fod yn unigryw STR_ERROR_GENERIC_OBJECT_IN_THE_WAY :{WHITE}{1:STRING} yn y ffordd STR_ERROR_NOT_ALLOWED_WHILE_PAUSED :{WHITE}Ni chaniateir hynny tra fo'r gêm wedi ei oedi # Local authority errors -STR_ERROR_LOCAL_AUTHORITY_REFUSES_TO_ALLOW_THIS :{WHITE}Nid yw awdurdod lleol {TOWN}yn caniatáu hyn +STR_ERROR_LOCAL_AUTHORITY_REFUSES_TO_ALLOW_THIS :{WHITE}Nid yw awdurdod lleol {TOWN} yn caniatáu hyn STR_ERROR_LOCAL_AUTHORITY_REFUSES_AIRPORT :{WHITE}Mae awdurdod lleol {TOWN} yn gwrthod caniatáu i faes awyr arall gael ei adeiladu ger y dref hon STR_ERROR_LOCAL_AUTHORITY_REFUSES_NOISE :{WHITE}Mae awdurdod lleol {TOWN} wedi gwrthod caniatâd ar gyfer maes awyr oherwydd pryderon ynglŷn â sŵn STR_ERROR_BRIBE_FAILED :{WHITE}Cawsoch eich dal gan ymchwilydd rhanbarth wrth geisio llwgrwobrwyo @@ -3855,6 +4265,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... @@ -3910,6 +4321,11 @@ 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... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Methu gwrthdroi'r trên... @@ -3952,6 +4368,16 @@ STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}Methu di # Translatable comment for OpenTTD's desktop shortcut STR_DESKTOP_SHORTCUT_COMMENT :Gêm efelychu wedi ei seilio ar Transport Tycoon Deluxe +# Translatable descriptions in media/baseset/*.ob* files +STR_BASEGRAPHICS_DOS_DESCRIPTION :Graffeg gwreiddiol fersiwn DOS o Transport Tycoon Deluxe. +STR_BASEGRAPHICS_DOS_DE_DESCRIPTION :Graffeg gwreiddiol fersiwn DOS (Almaenig) o Transport Tycoon Deluxe. +STR_BASEGRAPHICS_WIN_DESCRIPTION :Graffeg gwreiddiol fersiwn Windows o Transport Tycoon Deluxe. +STR_BASESOUNDS_DOS_DESCRIPTION :Effeithiau sain gwreiddiol fersiwn DOS o Transport Tycoon Deluxe. +STR_BASESOUNDS_WIN_DESCRIPTION :Effeithiau sain gwreiddiol fersiwn Windows o Transport Tycoon Deluxe. +STR_BASESOUNDS_NONE_DESCRIPTION :Pecyn sain heb unrhyw effeithiau sain ynddo. +STR_BASEMUSIC_WIN_DESCRIPTION :Cerddoriaeth gwreiddiol fersion Windows o Transport Tycoon Deluxe. +STR_BASEMUSIC_NONE_DESCRIPTION :Pecyn cerddoriaeth heb unrhyw gerddoriaeth ynddo. + ##id 0x2000 # Town building names STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1 :Bloc swyddfa uchel @@ -4058,9 +4484,9 @@ STR_SV_STNAME_DOCKS :Dociau {STRING} STR_SV_STNAME_BUOY :{STRING} STR_SV_STNAME_WAYPOINT :{STRING} ##id 0x6020 -STR_SV_STNAME_ANNEXE :{STRING} Rhandre -STR_SV_STNAME_SIDINGS :{STRING} Cilffordd -STR_SV_STNAME_BRANCH :{STRING} Cangen +STR_SV_STNAME_ANNEXE :Rhandre {STRING} +STR_SV_STNAME_SIDINGS :Cilffordd {STRING} +STR_SV_STNAME_BRANCH :Cangen {STRING} STR_SV_STNAME_UPPER :Blaenau {STRING} STR_SV_STNAME_LOWER :Dyffryn {STRING} STR_SV_STNAME_HELIPORT :Hofrenyddborth {STRING} @@ -4074,7 +4500,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) @@ -4283,7 +4709,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 @@ -4398,8 +4824,9 @@ 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_SPACE_STRING :{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} @@ -4423,9 +4850,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 new file mode 100644 index 000000000..2c88778ab --- /dev/null +++ b/src/linkgraph/demands.cpp @@ -0,0 +1,284 @@ +/** @file demands.cpp Definition of demand calculating link graph handler. */ + +#include "../stdafx.h" +#include "demands.h" +#include + +#include "../safeguards.h" + +typedef std::list NodeList; + +/** + * Scale various things according to symmetric/asymmetric distribution. + */ +class Scaler { +public: + void SetDemands(LinkGraphJob &job, NodeID from, NodeID to, uint demand_forw); +}; + +/** + * Scaler for symmetric distribution. + */ +class SymmetricScaler : public Scaler { +public: + /** + * Constructor. + * @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), + demand_per_node(0) + {} + + /** + * Count a node's supply into the sum of supplies. + * @param node Node. + */ + inline void AddNode(const Node &node) + { + this->supply_sum += node.Supply(); + } + + /** + * Calculate the mean demand per node using the sum of supplies. + * @param num_demands Number of accepting nodes. + */ + inline void SetDemandPerNode(uint num_demands) + { + this->demand_per_node = max(this->supply_sum / num_demands, 1U); + } + + /** + * Get the effective supply of one node towards another one. In symmetric + * distribution the supply of the other node is weighed in. + * @param from The supplying node. + * @param to The receiving node. + * @return Effective supply. + */ + inline uint EffectiveSupply(const Node &from, const Node &to) + { + return max(from.Supply() * max(1U, to.Supply()) * this->mod_size / 100 / this->demand_per_node, 1U); + } + + /** + * Check if there is any acceptance left for this node. In symmetric distribution + * nodes only accept anything if they also supply something. So if + * undelivered_supply == 0 at the node there isn't any demand left either. + * @param to Node to be checked. + * @return If demand is left. + */ + inline bool HasDemandLeft(const Node &to) + { + return (to.Supply() == 0 || to.UndeliveredSupply() > 0) && to.Demand() > 0; + } + + 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 demand_per_node; ///< Mean demand associated with each node. +}; + +/** + * A scaler for asymmetric distribution. + */ +class AsymmetricScaler : public Scaler { +public: + /** + * Nothing to do here. + * @param unused. + */ + inline void AddNode(const Node &) + { + } + + /** + * Nothing to do here. + * @param unused. + */ + inline void SetDemandPerNode(uint) + { + } + + /** + * Get the effective supply of one node towards another one. + * @param from The supplying node. + * @param unused. + */ + inline uint EffectiveSupply(const Node &from, const Node &) + { + return from.Supply(); + } + + /** + * Check if there is any acceptance left for this node. In asymmetric distribution + * nodes always accept as long as their demand > 0. + * @param to The node to be checked. + * @param to_anno Unused. + */ + inline bool HasDemandLeft(const Node &to) { return to.Demand() > 0; } +}; + +/** + * Set the demands between two nodes using the given base demand. In symmetric mode + * 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 demand_forw Demand calculated for the "forward" direction. + */ +void SymmetricScaler::SetDemands(LinkGraphJob &job, NodeID from_id, NodeID to_id, uint demand_forw) +{ + if (job[from_id].Demand() > 0) { + uint demand_back = demand_forw * this->mod_size / 100; + uint undelivered = job[to_id].UndeliveredSupply(); + if (demand_back > undelivered) { + demand_back = undelivered; + demand_forw = max(1U, demand_back * 100 / this->mod_size); + } + this->Scaler::SetDemands(job, to_id, from_id, demand_back); + } + + this->Scaler::SetDemands(job, from_id, to_id, demand_forw); +} + +/** + * Set the demands between two nodes using the given base demand. In asymmetric mode + * 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 demand_forw Demand calculated for the "forward" direction. + */ +inline void Scaler::SetDemands(LinkGraphJob &job, NodeID from_id, NodeID to_id, uint demand_forw) +{ + job[from_id].DeliverSupply(to_id, demand_forw); +} + +/** + * Do the actual demand calculation, called from constructor. + * @param job Job to calculate the demands for. + * @tparam Tscaler Scaler to be used for scaling demands. + */ +template +void DemandCalculator::CalcDemand(LinkGraphJob &job, Tscaler scaler) +{ + NodeList supplies; + NodeList demands; + uint num_supplies = 0; + uint num_demands = 0; + + for (NodeID node = 0; node < job.Size(); node++) { + scaler.AddNode(job[node]); + if (job[node].Supply() > 0) { + supplies.push_back(node); + num_supplies++; + } + if (job[node].Demand() > 0) { + demands.push_back(node); + num_demands++; + } + } + + if (num_supplies == 0 || num_demands == 0) return; + + /* Mean acceptance attributed to each node. If the distribution is + * symmetric this is relative to remote supply, otherwise it is + * relative to remote demand. */ + scaler.SetDemandPerNode(num_demands); + uint chance = 0; + + while (!supplies.empty() && !demands.empty()) { + NodeID from_id = supplies.front(); + supplies.pop_front(); + + for (uint i = 0; i < num_demands; ++i) { + assert(!demands.empty()); + NodeID to_id = demands.front(); + demands.pop_front(); + if (from_id == to_id) { + /* Only one node with supply and demand left */ + if (demands.empty() && supplies.empty()) return; + + demands.push_back(to_id); + continue; + } + + int32 supply = scaler.EffectiveSupply(job[from_id], job[to_id]); + assert(supply > 0); + + /* Scale the distance by mod_dist around max_distance */ + int32 distance = this->max_distance - (this->max_distance - + (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 + + this->accuracy * distance / this->max_distance + 1; + + assert(divisor > 0); + + uint demand_forw = 0; + if (divisor <= supply) { + /* At first only distribute demand if + * effective supply / accuracy divisor >= 1 + * Others are too small or too far away to be considered. */ + demand_forw = supply / divisor; + } else if (++chance > this->accuracy * num_demands * num_supplies) { + /* After some trying, if there is still supply left, distribute + * demand also to other nodes. */ + demand_forw = 1; + } + + demand_forw = min(demand_forw, job[from_id].UndeliveredSupply()); + + scaler.SetDemands(job, from_id, to_id, demand_forw); + + if (scaler.HasDemandLeft(job[to_id])) { + demands.push_back(to_id); + } else { + num_demands--; + } + + if (job[from_id].UndeliveredSupply() == 0) break; + } + + if (job[from_id].UndeliveredSupply() != 0) { + supplies.push_back(from_id); + } else { + num_supplies--; + } + } +} + +/** + * Create the DemandCalculator and immediately do the calculation. + * @param job Job to calculate the demands for. + */ +DemandCalculator::DemandCalculator(LinkGraphJob &job) : + max_distance(DistanceMaxPlusManhattan(TileXY(0,0), TileXY(MapMaxX(), MapMaxY()))) +{ + const LinkGraphSettings &settings = job.Settings(); + CargoID cargo = job.Cargo(); + + this->accuracy = settings.accuracy; + this->mod_dist = settings.demand_distance; + if (this->mod_dist > 100) { + /* Increase effect of mod_dist > 100 */ + int over100 = this->mod_dist - 100; + this->mod_dist = 100 + over100 * over100; + } + + switch (settings.GetDistributionType(cargo)) { + case DT_SYMMETRIC: + this->CalcDemand(job, SymmetricScaler(settings.demand_size)); + break; + case DT_ASYMMETRIC: + this->CalcDemand(job, AsymmetricScaler()); + break; + default: + /* Nothing to do. */ + break; + } +} diff --git a/src/linkgraph/demands.h b/src/linkgraph/demands.h new file mode 100644 index 000000000..c3d9dc7cd --- /dev/null +++ b/src/linkgraph/demands.h @@ -0,0 +1,43 @@ +/** @file demands.h Declaration of demand calculating link graph handler. */ + +#ifndef DEMANDS_H +#define DEMANDS_H + +#include "linkgraphjob_base.h" + +/** + * Calculate the demands. This class has a state, but is recreated for each + * call to of DemandHandler::Run. + */ +class DemandCalculator { +public: + DemandCalculator(LinkGraphJob &job); + +private: + int32 max_distance; ///< Maximum distance possible on the map. + int32 mod_dist; ///< Distance modifier, determines how much demands decrease with distance. + int32 accuracy; ///< Accuracy of the calculation. + + template + void CalcDemand(LinkGraphJob &job, Tscaler scaler); +}; + +/** + * Stateless, thread safe demand hander. Doesn't do anything but call DemandCalculator. + */ +class DemandHandler : public ComponentHandler { +public: + + /** + * Call the demand calculator on the given component. + * @param graph Component to calculate the demands for. + */ + virtual void Run(LinkGraphJob &job) const { DemandCalculator c(job); } + + /** + * Virtual destructor has to be defined because of virtual Run(). + */ + virtual ~DemandHandler() {} +}; + +#endif /* DEMANDS_H */ diff --git a/src/linkgraph/flowmapper.cpp b/src/linkgraph/flowmapper.cpp new file mode 100644 index 000000000..4b974a809 --- /dev/null +++ b/src/linkgraph/flowmapper.cpp @@ -0,0 +1,69 @@ +/* $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 flowmapper.cpp Definition of flowmapper. */ + +#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 +{ + for (NodeID node_id = 0; node_id < job.Size(); ++node_id) { + Node prev_node = job[node_id]; + StationID prev = prev_node.Station(); + PathList &paths = prev_node.Paths(); + for (PathList::iterator i = paths.begin(); i != paths.end(); ++i) { + Path *path = *i; + uint flow = path->GetFlow(); + if (flow == 0) break; + Node node = job[path->GetNode()]; + StationID via = node.Station(); + StationID origin = job[path->GetOrigin()].Station(); + assert(prev != via && via != origin); + /* Mark all of the flow for local consumption at "first". */ + node.Flows().AddFlow(origin, via, flow); + if (prev != origin) { + /* Pass some of the flow marked for local consumption at "prev" on + * to this node. */ + prev_node.Flows().PassOnFlow(origin, via, flow); + } else { + /* Prev node is origin. Simply add flow. */ + prev_node.Flows().AddFlow(origin, via, flow); + } + } + } + + for (NodeID node_id = 0; node_id < job.Size(); ++node_id) { + /* Remove local consumption shares marked as invalid. */ + Node node = job[node_id]; + 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) { + delete *i; + } + paths.clear(); + } +} diff --git a/src/linkgraph/flowmapper.h b/src/linkgraph/flowmapper.h new file mode 100644 index 000000000..6f874e5b3 --- /dev/null +++ b/src/linkgraph/flowmapper.h @@ -0,0 +1,47 @@ +/* $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 flowmapper.h Declaration of flow mapper; maps paths into flows at nodes. */ + +#ifndef FLOWMAPPER_H_ +#define FLOWMAPPER_H_ + +#include "linkgraphjob_base.h" + +/** + * Map the path trees generated by the MCF solver into flows. The path tree is + * useful to cache capacities and distances and allow quick disconnecting and + * reconnecting to other paths. The flows show how much cargo from which nodes + * is to be routed in which direction at a given node. This is what we need in + * the end. + */ +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/init.h b/src/linkgraph/init.h new file mode 100644 index 000000000..a39a0f820 --- /dev/null +++ b/src/linkgraph/init.h @@ -0,0 +1,27 @@ +/** @file init.h Declaration of initializing link graph handler. */ + +#ifndef INIT_H +#define INIT_H + +#include "linkgraphjob_base.h" + +/** + * Stateless, thread safe initialization hander. Initializes node and edge + * annotations. + */ +class InitHandler : public ComponentHandler { +public: + + /** + * Initialize the link graph job. + * @param job Job to be initialized. + */ + virtual void Run(LinkGraphJob &job) const { job.Init(); } + + /** + * Virtual destructor has to be defined because of virtual Run(). + */ + virtual ~InitHandler() {} +}; + +#endif /* INIT_H */ diff --git a/src/linkgraph/linkgraph.cpp b/src/linkgraph/linkgraph.cpp new file mode 100644 index 000000000..50945d361 --- /dev/null +++ b/src/linkgraph/linkgraph.cpp @@ -0,0 +1,293 @@ +/* $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 linkgraph.cpp Definition of link graph classes used for cargo distribution. */ + +#include "../stdafx.h" +#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(TileIndex xy, StationID st, uint demand) +{ + this->xy = xy; + this->supply = 0; + this->demand = demand; + this->station = st; + this->last_update = INVALID_DATE; +} + +/** + * Create an edge. + */ +inline void LinkGraph::BaseEdge::Init() +{ + this->capacity = 0; + this->usage = 0; + this->last_unrestricted_update = INVALID_DATE; + this->last_restricted_update = INVALID_DATE; + this->next_edge = INVALID_NODE; +} + +/** + * Shift all dates by given interval. + * This is useful if the date has been modified with the cheat menu. + * @param interval Number of days to be added or subtracted. + */ +void LinkGraph::ShiftDates(int interval) +{ + this->last_compression += interval; + for (NodeID node1 = 0; node1 < this->Size(); ++node1) { + BaseNode &source = this->nodes[node1]; + 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_unrestricted_update != INVALID_DATE) edge.last_unrestricted_update += interval; + if (edge.last_restricted_update != INVALID_DATE) edge.last_restricted_update += interval; + } + } +} + +void LinkGraph::Compress() +{ + this->last_compression = (_date + this->last_compression) / 2; + for (NodeID node1 = 0; node1 < this->Size(); ++node1) { + this->nodes[node1].supply /= 2; + for (NodeID node2 = 0; node2 < this->Size(); ++node2) { + BaseEdge &edge = this->edges[node1][node2]; + if (edge.capacity > 0) { + edge.capacity = max(1U, edge.capacity / 2); + edge.usage /= 2; + } + } + } +} + +/** + * Merge a link graph with another one. + * @param other LinkGraph to be merged into this one. + */ +void LinkGraph::Merge(LinkGraph *other) +{ + Date age = _date - this->last_compression + 1; + Date other_age = _date - other->last_compression + 1; + NodeID first = this->Size(); + for (NodeID node1 = 0; node1 < other->Size(); ++node1) { + Station *st = Station::Get(other->nodes[node1].station); + NodeID new_node = this->AddNode(st); + this->nodes[new_node].supply = LinkGraph::Scale(other->nodes[node1].supply, age, other_age); + st->goods[this->cargo].link_graph = this->index; + st->goods[this->cargo].node = new_node; + for (NodeID node2 = 0; node2 < node1; ++node2) { + BaseEdge &forward = this->edges[new_node][first + node2]; + BaseEdge &backward = this->edges[first + node2][new_node]; + forward = other->edges[node1][node2]; + backward = other->edges[node2][node1]; + forward.capacity = LinkGraph::Scale(forward.capacity, age, other_age); + forward.usage = LinkGraph::Scale(forward.usage, age, other_age); + if (forward.next_edge != INVALID_NODE) forward.next_edge += first; + backward.capacity = LinkGraph::Scale(backward.capacity, age, other_age); + backward.usage = LinkGraph::Scale(backward.usage, age, other_age); + if (backward.next_edge != INVALID_NODE) backward.next_edge += first; + } + BaseEdge &new_start = this->edges[new_node][new_node]; + new_start = other->edges[node1][node1]; + if (new_start.next_edge != INVALID_NODE) new_start.next_edge += first; + } + delete other; +} + +/** + * Remove a node from the link graph by overwriting it with the last node. + * @param id ID of the node to be removed. + */ +void LinkGraph::RemoveNode(NodeID id) +{ + assert(id < this->Size()); + + NodeID last_node = this->Size() - 1; + for (NodeID i = 0; i <= last_node; ++i) { + (*this)[i].RemoveEdge(id); + BaseEdge *node_edges = this->edges[i]; + NodeID prev = i; + NodeID next = node_edges[i].next_edge; + while (next != INVALID_NODE) { + if (next == last_node) { + node_edges[prev].next_edge = id; + break; + } + prev = next; + next = node_edges[prev].next_edge; + } + node_edges[id] = node_edges[last_node]; + } + Station::Get(this->nodes[last_node].station)->goods[this->cargo].node = id; + this->nodes.Erase(this->nodes.Get(id)); + this->edges.EraseColumn(id); + /* Not doing EraseRow here, as having the extra invalid row doesn't hurt + * and removing it would trigger a lot of memmove. The data has already + * been copied around in the loop above. */ +} + +/** + * Add a node to the component and create empty edges associated with it. Set + * the station's last_component to this component. Calculate the distances to all + * other nodes. The distances to _all_ nodes are important as the demand + * calculator relies on their availability. + * @param st New node's station. + * @return New node's ID. + */ +NodeID LinkGraph::AddNode(const Station *st) +{ + const GoodsEntry &good = st->goods[this->cargo]; + + NodeID new_node = this->Size(); + this->nodes.Append(); + /* Avoid reducing the height of the matrix as that is expensive and we + * most likely will increase it again later which is again expensive. */ + this->edges.Resize(new_node + 1U, + max(new_node + 1U, this->edges.Height())); + + this->nodes[new_node].Init(st->xy, st->index, + HasBit(good.status, GoodsEntry::GES_ACCEPTANCE)); + + BaseEdge *new_edges = this->edges[new_node]; + + /* Reset the first edge starting at the new node */ + new_edges[new_node].next_edge = INVALID_NODE; + + for (NodeID i = 0; i <= new_node; ++i) { + new_edges[i].Init(); + this->edges[i][new_node].Init(); + } + return new_node; +} + +/** + * 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, EdgeUpdateMode mode) +{ + assert(this->index != to); + BaseEdge &edge = this->edges[to]; + BaseEdge &first = this->edges[this->index]; + edge.capacity = capacity; + edge.usage = usage; + edge.next_edge = first.next_edge; + first.next_edge = to; + if (mode & EUM_UNRESTRICTED) edge.last_unrestricted_update = _date; + if (mode & EUM_RESTRICTED) edge.last_restricted_update = _date; +} + +/** + * 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); + if (this->edges[to].capacity == 0) { + this->AddEdge(to, capacity, usage, mode); + } else { + (*this)[to].Update(capacity, usage, mode); + } +} + +/** + * Remove an outgoing edge from this node. + * @param to ID of destination node. + */ +void LinkGraph::Node::RemoveEdge(NodeID to) +{ + if (this->index == to) return; + BaseEdge &edge = this->edges[to]; + edge.capacity = 0; + edge.last_unrestricted_update = INVALID_DATE; + edge.last_restricted_update = INVALID_DATE; + edge.usage = 0; + + NodeID prev = this->index; + NodeID next = this->edges[this->index].next_edge; + while (next != INVALID_NODE) { + if (next == to) { + /* Will be removed, skip it. */ + this->edges[prev].next_edge = edge.next_edge; + edge.next_edge = INVALID_NODE; + break; + } else { + prev = next; + next = this->edges[next].next_edge; + } + } +} + +/** + * 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. + * @param mode Update mode to be applied. + */ +void LinkGraph::Edge::Update(uint capacity, uint usage, EdgeUpdateMode mode) +{ + assert(this->edge.capacity > 0); + 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); + } + if (mode & EUM_UNRESTRICTED) this->edge.last_unrestricted_update = _date; + if (mode & EUM_RESTRICTED) this->edge.last_restricted_update = _date; +} + +/** + * Resize the component and fill it with empty nodes and edges. Used when + * loading from save games. The component is expected to be empty before. + * @param size New size of the component. + */ +void LinkGraph::Init(uint size) +{ + assert(this->Size() == 0); + this->edges.Resize(size, size); + this->nodes.Resize(size); + + for (uint i = 0; i < size; ++i) { + this->nodes[i].Init(); + BaseEdge *column = this->edges[i]; + for (uint j = 0; j < size; ++j) column[j].Init(); + } +} diff --git a/src/linkgraph/linkgraph.h b/src/linkgraph/linkgraph.h new file mode 100644 index 000000000..799f22c78 --- /dev/null +++ b/src/linkgraph/linkgraph.h @@ -0,0 +1,541 @@ +/* $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 linkgraph.h Declaration of link graph classes used for cargo distribution. */ + +#ifndef LINKGRAPH_H +#define LINKGRAPH_H + +#include "../core/pool_type.hpp" +#include "../core/smallmap_type.hpp" +#include "../core/smallmatrix_type.hpp" +#include "../station_base.h" +#include "../cargotype.h" +#include "../date_func.h" +#include "linkgraph_type.h" + +struct SaveLoad; +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; +/** The actual pool with link graphs. */ +extern LinkGraphPool _link_graph_pool; + +/** + * A connected component of a link graph. Contains a complete set of stations + * connected by links as nodes and edges. Each component also holds a copy of + * the link graph settings at the time of its creation. The global settings + * might change between the creation and join time so we can't rely on them. + */ +class LinkGraph : public LinkGraphPool::PoolItem<&_link_graph_pool> { +public: + + /** + * Node of the link graph. contains all relevant information from the associated + * station. It's copied so that the link graph job can work on its own data set + * in a separate thread. + */ + struct BaseNode { + 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(TileIndex xy = INVALID_TILE, StationID st = INVALID_STATION, uint demand = 0); + }; + + /** + * An edge in the link graph. Corresponds to a link between two stations or at + * least the distance between them. Edges from one node to itself contain the + * ID of the opposite Node of the first active edge (i.e. not just distance) in + * the column as next_edge. + */ + struct BaseEdge { + 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(); + }; + + /** + * Wrapper for an edge (const or not) allowing retrieval, but no modification. + * @tparam Tedge Actual edge class, may be "const BaseEdge" or just "BaseEdge". + */ + template + class EdgeWrapper { + protected: + Tedge &edge; ///< Actual edge to be used. + + public: + + /** + * Wrap a an edge. + * @param edge Edge to be wrapped. + */ + EdgeWrapper (Tedge &edge) : edge(edge) {} + + /** + * Get edge's capacity. + * @return Capacity. + */ + uint Capacity() const { return this->edge.capacity; } + + /** + * Get edge's usage. + * @return Usage. + */ + uint Usage() const { return this->edge.usage; } + + /** + * Get the date of the last update to the edge's unrestricted capacity. + * @return Last update. + */ + Date LastUnrestrictedUpdate() const { return this->edge.last_unrestricted_update; } + + /** + * Get the date of the last update to the edge's restricted capacity. + * @return 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); } + }; + + /** + * Wrapper for a node (const or not) allowing retrieval, but no modification. + * @tparam Tedge Actual node class, may be "const BaseNode" or just "BaseNode". + * @tparam Tedge Actual edge class, may be "const BaseEdge" or just "BaseEdge". + */ + template + class NodeWrapper { + protected: + Tnode &node; ///< Node being wrapped. + Tedge *edges; ///< Outgoing edges for wrapped node. + NodeID index; ///< ID of wrapped node. + + public: + + /** + * Wrap a node. + * @param node Node to be wrapped. + * @param edges Outgoing edges for node to be wrapped. + * @param index ID of node to be wrapped. + */ + NodeWrapper(Tnode &node, Tedge *edges, NodeID index) : node(node), + edges(edges), index(index) {} + + /** + * Get supply of wrapped node. + * @return Supply. + */ + uint Supply() const { return this->node.supply; } + + /** + * Get demand of wrapped node. + * @return Demand. + */ + uint Demand() const { return this->node.demand; } + + /** + * Get ID of station belonging to wrapped node. + * @return ID of node's station. + */ + StationID Station() const { return this->node.station; } + + /** + * Get node's last update. + * @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; } + }; + + /** + * Base class for iterating across outgoing edges of a node. Only the real + * edges (those with capacity) are iterated. The ones with only distance + * information are skipped. + * @tparam Tedge Actual edge class. May be "BaseEdge" or "const BaseEdge". + * @tparam Titer Actual iterator class. + */ + template + class BaseEdgeIterator { + protected: + Tedge *base; ///< Array of edges being iterated. + NodeID current; ///< Current offset in edges array. + + /** + * A "fake" pointer to enable operator-> on temporaries. As the objects + * returned from operator* aren't references but real objects, we have + * to return something that implements operator->, but isn't a pointer + * from operator->. A fake pointer. + */ + class FakePointer : public SmallPair { + public: + + /** + * Construct a fake pointer from a pair of NodeID and edge. + * @param pair Pair to be "pointed" to (in fact shallow-copied). + */ + FakePointer(const SmallPair &pair) : SmallPair(pair) {} + + /** + * Retrieve the pair by operator->. + * @return Pair being "pointed" to. + */ + SmallPair *operator->() { return this; } + }; + + public: + /** + * Constructor. + * @param base Array of edges to be iterated. + * @param current ID of current node (to locate the first edge). + */ + BaseEdgeIterator (Tedge *base, NodeID current) : + base(base), + current(current == INVALID_NODE ? current : base[current].next_edge) + {} + + /** + * Prefix-increment. + * @return This. + */ + Titer &operator++() + { + this->current = this->base[this->current].next_edge; + return static_cast(*this); + } + + /** + * Postfix-increment. + * @return Version of this before increment. + */ + Titer operator++(int) + { + Titer ret(static_cast(*this)); + this->current = this->base[this->current].next_edge; + return ret; + } + + /** + * Compare with some other edge iterator. The other one may be of a + * child class. + * @tparam Tother Class of other iterator. + * @param other Instance of other iterator. + * @return If the iterators have the same edge array and current node. + */ + template + bool operator==(const Tother &other) + { + return this->base == other.base && this->current == other.current; + } + + /** + * Compare for inequality with some other edge iterator. The other one + * may be of a child class. + * @tparam Tother Class of other iterator. + * @param other Instance of other iterator. + * @return If either the edge arrays or the current nodes differ. + */ + template + bool operator!=(const Tother &other) + { + return this->base != other.base || this->current != other.current; + } + + /** + * Dereference with operator*. + * @return Pair of current target NodeID and edge object. + */ + SmallPair operator*() const + { + return SmallPair(this->current, Tedge_wrapper(this->base[this->current])); + } + + /** + * Dereference with operator->. + * @return Fake pointer to Pair of current target NodeID and edge object. + */ + FakePointer operator->() const { + return FakePointer(this->operator*()); + } + }; + + /** + * A constant edge class. + */ + typedef EdgeWrapper ConstEdge; + + /** + * An updatable edge class. + */ + class Edge : public EdgeWrapper { + public: + /** + * Constructor + * @param edge Edge to be wrapped. + */ + Edge(BaseEdge &edge) : EdgeWrapper(edge) {} + 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; } + }; + + /** + * An iterator for const edges. Cannot be typedef'ed because of + * template-reference to ConstEdgeIterator itself. + */ + class ConstEdgeIterator : public BaseEdgeIterator { + public: + /** + * Constructor. + * @param edges Array of edges to be iterated over. + * @param current ID of current edge's end node. + */ + ConstEdgeIterator(const BaseEdge *edges, NodeID current) : + BaseEdgeIterator(edges, current) {} + }; + + /** + * An iterator for non-const edges. Cannot be typedef'ed because of + * template-reference to EdgeIterator itself. + */ + class EdgeIterator : public BaseEdgeIterator { + public: + /** + * Constructor. + * @param edges Array of edges to be iterated over. + * @param current ID of current edge's end node. + */ + EdgeIterator(BaseEdge *edges, NodeID current) : + BaseEdgeIterator(edges, current) {} + }; + + /** + * Constant node class. Only retrieval operations are allowed on both the + * node itself and its edges. + */ + class ConstNode : public NodeWrapper { + public: + /** + * Constructor. + * @param lg LinkGraph to get the node from. + * @param node ID of the node. + */ + ConstNode(const LinkGraph *lg, NodeID node) : + NodeWrapper(lg->nodes[node], lg->edges[node], node) + {} + + /** + * Get a ConstEdge. This is not a reference as the wrapper objects are + * not actually persistent. + * @param to ID of end node of edge. + * @return Constant edge wrapper. + */ + ConstEdge operator[](NodeID to) const { return ConstEdge(this->edges[to]); } + + /** + * Get an iterator pointing to the start of the edges array. + * @return Constant edge iterator. + */ + ConstEdgeIterator Begin() const { return ConstEdgeIterator(this->edges, this->index); } + + /** + * Get an iterator pointing beyond the end of the edges array. + * @return Constant edge iterator. + */ + ConstEdgeIterator End() const { return ConstEdgeIterator(this->edges, INVALID_NODE); } + }; + + /** + * Updatable node class. The node itself as well as its edges can be modified. + */ + class Node : public NodeWrapper { + public: + /** + * Constructor. + * @param lg LinkGraph to get the node from. + * @param node ID of the node. + */ + Node(LinkGraph *lg, NodeID node) : + NodeWrapper(lg->nodes[node], lg->edges[node], node) + {} + + /** + * Get an Edge. This is not a reference as the wrapper objects are not + * actually persistent. + * @param to ID of end node of edge. + * @return Edge wrapper. + */ + Edge operator[](NodeID to) { return Edge(this->edges[to]); } + + /** + * Get an iterator pointing to the start of the edges array. + * @return Edge iterator. + */ + EdgeIterator Begin() { return EdgeIterator(this->edges, this->index); } + + /** + * Get an iterator pointing beyond the end of the edges array. + * @return Constant edge iterator. + */ + EdgeIterator End() { return EdgeIterator(this->edges, INVALID_NODE); } + + /** + * Update the node's supply and set last_update to the current date. + * @param supply Supply to be added. + */ + void UpdateSupply(uint supply) + { + this->node.supply += supply; + 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. + */ + void SetDemand(uint demand) + { + this->node.demand = demand; + } + + void AddEdge(NodeID to, uint capacity, uint usage, EdgeUpdateMode mode); + void UpdateEdge(NodeID to, uint capacity, uint usage, EdgeUpdateMode mode); + void RemoveEdge(NodeID to); + }; + + typedef SmallVector NodeVector; + typedef SmallMatrix EdgeMatrix; + + /** Minimum effective distance for timeout calculation. */ + static const uint MIN_TIMEOUT_DISTANCE = 32; + + /** Minimum number of days between subsequent compressions of a LG. */ + static const uint COMPRESSION_INTERVAL = 256; + + /** + * Scale a value from a link graph of age orig_age for usage in one of age + * target_age. Make sure that the value stays > 0 if it was > 0 before. + * @param val Value to be scaled. + * @param target_age Age of the target link graph. + * @param orig_age Age of the original link graph. + * @return scaled value. + */ + inline static uint Scale(uint val, uint target_age, uint orig_age) + { + return val > 0 ? max(1U, val * target_age / orig_age) : 0; + } + + /** Bare constructor, only for save/load. */ + LinkGraph() : cargo(INVALID_CARGO), last_compression(0) {} + /** + * Real constructor. + * @param cargo Cargo the link graph is about. + */ + LinkGraph(CargoID cargo) : cargo(cargo), last_compression(_date) {} + + void Init(uint size); + void ShiftDates(int interval); + void Compress(); + void Merge(LinkGraph *other); + + /* Splitting link graphs is intentionally not implemented. + * The overhead in determining connectedness would probably outweigh the + * benefit of having to deal with smaller graphs. In real world examples + * networks generally grow. Only rarely a network is permanently split. + * Reacting to temporary splits here would obviously create performance + * problems and detecting the temporary or permanent nature of splits isn't + * trivial. */ + + /** + * Get a node with the specified id. + * @param num ID of the node. + * @return the Requested node. + */ + inline Node operator[](NodeID num) { return Node(this, num); } + + /** + * Get a const reference to a node with the specified id. + * @param num ID of the node. + * @return the Requested node. + */ + inline ConstNode operator[](NodeID num) const { return ConstNode(this, num); } + + /** + * Get the current size of the component. + * @return Size. + */ + inline uint Size() const { return this->nodes.Length(); } + + /** + * Get date of last compression. + * @return Date of last compression. + */ + inline Date LastCompression() const { return this->last_compression; } + + /** + * Get the cargo ID this component's link graph refers to. + * @return Cargo ID. + */ + inline CargoID Cargo() const { return this->cargo; } + + /** + * Scale a value to its monthly equivalent, based on last compression. + * @param base Value to be scaled. + * @return Scaled value. + */ + inline uint Monthly(uint base) const + { + return base * 30 / (_date - this->last_compression + 1); + } + + NodeID AddNode(const Station *st); + void RemoveNode(NodeID id); + +protected: + friend class LinkGraph::ConstNode; + friend class LinkGraph::Node; + friend const SaveLoad *GetLinkGraphDesc(); + friend const SaveLoad *GetLinkGraphJobDesc(); + friend void SaveLoad_LinkGraph(LinkGraph &lg); + + CargoID cargo; ///< Cargo of this component's link graph. + Date last_compression; ///< Last time the capacities and supplies were compressed. + NodeVector nodes; ///< Nodes in the component. + EdgeMatrix edges; ///< Edges in the component. +}; + +#define FOR_ALL_LINK_GRAPHS(var) FOR_ALL_ITEMS_FROM(LinkGraph, link_graph_index, var, 0) + +#endif /* LINKGRAPH_H */ diff --git a/src/linkgraph/linkgraph_base.h b/src/linkgraph/linkgraph_base.h new file mode 100644 index 000000000..6e56af9a9 --- /dev/null +++ b/src/linkgraph/linkgraph_base.h @@ -0,0 +1,27 @@ +/* $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 linkgraph_base.h Some typedefs for the main game. */ + +#ifndef LINKGRAPH_BASE_H +#define LINKGRAPH_BASE_H + +#include "linkgraph.h" +#include "linkgraphschedule.h" + +typedef LinkGraph::Node Node; +typedef LinkGraph::Edge Edge; +typedef LinkGraph::EdgeIterator EdgeIterator; + +typedef LinkGraph::ConstNode ConstNode; +typedef LinkGraph::ConstEdge ConstEdge; +typedef LinkGraph::ConstEdgeIterator ConstEdgeIterator; + + +#endif /* LINKGRAPH_BASE_H */ diff --git a/src/linkgraph/linkgraph_gui.cpp b/src/linkgraph/linkgraph_gui.cpp new file mode 100644 index 000000000..579bf9c46 --- /dev/null +++ b/src/linkgraph/linkgraph_gui.cpp @@ -0,0 +1,575 @@ +/* $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 linkgraph_gui.cpp Implementation of linkgraph overlay GUI. */ + +#include "../stdafx.h" +#include "../window_gui.h" +#include "../window_func.h" +#include "../company_base.h" +#include "../company_gui.h" +#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". + */ +const uint8 LinkGraphOverlay::LINK_COLOURS[] = { + 0x0f, 0xd1, 0xd0, 0x57, + 0x55, 0x53, 0xbf, 0xbd, + 0xba, 0xb9, 0xb7, 0xb5 +}; + +/** + * Get a DPI for the widget we will be drawing to. + * @param dpi DrawPixelInfo to fill with the desired dimensions. + */ +void LinkGraphOverlay::GetWidgetDpi(DrawPixelInfo *dpi) const +{ + const NWidgetBase *wi = this->window->GetWidget(this->widget_id); + dpi->left = dpi->top = 0; + dpi->width = wi->current_x; + dpi->height = wi->current_y; +} + +/** + * Rebuild the cache and recalculate which links and stations to be shown. + */ +void LinkGraphOverlay::RebuildCache() +{ + this->cached_links.clear(); + this->cached_stations.clear(); + if (this->company_mask == 0) return; + + DrawPixelInfo dpi; + this->GetWidgetDpi(&dpi); + + const Station *sta; + FOR_ALL_STATIONS(sta) { + if (sta->rect.IsEmpty()) continue; + + Point pta = this->GetStationMiddle(sta); + + StationID from = sta->index; + StationLinkMap &seen_links = this->cached_links[from]; + + uint supply = 0; + CargoID c; + FOR_EACH_SET_CARGO_ID(c, this->cargo_mask) { + if (!CargoSpec::Get(c)->IsValid()) continue; + if (!LinkGraph::IsValidID(sta->goods[c].link_graph)) continue; + const LinkGraph &lg = *LinkGraph::Get(sta->goods[c].link_graph); + + ConstNode from_node = lg[sta->goods[c].node]; + supply += lg.Monthly(from_node.Supply()); + for (ConstEdgeIterator i = from_node.Begin(); i != from_node.End(); ++i) { + StationID to = lg[i->first].Station(); + assert(from != to); + if (!Station::IsValidID(to) || seen_links.find(to) != seen_links.end()) { + continue; + } + const Station *stb = Station::Get(to); + assert(sta != stb); + + /* 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; + + this->AddLinks(sta, stb); + seen_links[to]; // make sure it is created and marked as seen + } + } + if (this->IsPointVisible(pta, &dpi)) { + this->cached_stations.push_back(std::make_pair(from, supply)); + } + } +} + +/** + * Determine if a certain point is inside the given DPI, with some lee way. + * @param pt Point we are looking for. + * @param dpi Visible area. + * @param padding Extent of the point. + * @return If the point or any of its 'extent' is inside the dpi. + */ +inline bool LinkGraphOverlay::IsPointVisible(Point pt, const DrawPixelInfo *dpi, int padding) const +{ + return pt.x > dpi->left - padding && pt.y > dpi->top - padding && + pt.x < dpi->left + dpi->width + padding && + pt.y < dpi->top + dpi->height + padding; +} + +/** + * Determine if a certain link crosses through the area given by the dpi with some lee way. + * @param pta First end of the link. + * @param ptb Second end of the link. + * @param dpi Visible area. + * @param padding Width or thickness of the link. + * @return If the link or any of its "thickness" is visible. This may return false positives. + */ +inline bool LinkGraphOverlay::IsLinkVisible(Point pta, Point ptb, const DrawPixelInfo *dpi, int padding) const +{ + return !((pta.x < dpi->left - padding && ptb.x < dpi->left - padding) || + (pta.y < dpi->top - padding && ptb.y < dpi->top - padding) || + (pta.x > dpi->left + dpi->width + padding && + ptb.x > dpi->left + dpi->width + padding) || + (pta.y > dpi->top + dpi->height + padding && + ptb.y > dpi->top + dpi->height + padding)); +} + +/** + * Add all "interesting" links between the given stations to the cache. + * @param from The source station. + * @param to The destination station. + */ +void LinkGraphOverlay::AddLinks(const Station *from, const Station *to) +{ + CargoID c; + FOR_EACH_SET_CARGO_ID(c, this->cargo_mask) { + if (!CargoSpec::Get(c)->IsValid()) continue; + const GoodsEntry &ge = from->goods[c]; + if (!LinkGraph::IsValidID(ge.link_graph) || + ge.link_graph != to->goods[c].link_graph) { + continue; + } + const LinkGraph &lg = *LinkGraph::Get(ge.link_graph); + 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), 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. 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, bool new_shared, LinkProperties &cargo) +{ + /* multiply the numbers by 32 in order to avoid comparing to 0 too often. */ + if (cargo.capacity == 0 || + max(cargo.usage, cargo.planned) * 32 / (cargo.capacity + 1) < max(new_usg, new_plan) * 32 / (new_cap + 1)) { + cargo.capacity = new_cap; + cargo.usage = new_usg; + cargo.planned = new_plan; + } + if (new_shared) cargo.shared = true; +} + +/** + * Draw the linkgraph overlay or some part of it, in the area given. + * @param dpi Area to be drawn to. + */ +void LinkGraphOverlay::Draw(const DrawPixelInfo *dpi) const +{ + this->DrawLinks(dpi); + this->DrawStationDots(dpi); +} + +/** + * Draw the cached links or part of them into the given area. + * @param dpi Area to be drawn to. + */ +void LinkGraphOverlay::DrawLinks(const DrawPixelInfo *dpi) const +{ + for (LinkMap::const_iterator i(this->cached_links.begin()); i != this->cached_links.end(); ++i) { + if (!Station::IsValidID(i->first)) continue; + Point pta = this->GetStationMiddle(Station::Get(i->first)); + for (StationLinkMap::const_iterator j(i->second.begin()); j != i->second.end(); ++j) { + if (!Station::IsValidID(j->first)) continue; + Point ptb = this->GetStationMiddle(Station::Get(j->first)); + if (!this->IsLinkVisible(pta, ptb, dpi, this->scale + 2)) continue; + this->DrawContent(pta, ptb, j->second); + } + } +} + +/** + * Draw one specific link. + * @param pta Source of the link. + * @param ptb Destination of the link. + * @param cargo Properties of the link. + */ +void LinkGraphOverlay::DrawContent(Point pta, Point ptb, const LinkProperties &cargo) const +{ + 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)]; + 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); +} + +/** + * Draw dots for stations into the smallmap. The dots' sizes are determined by the amount of + * cargo produced there, their colours by the type of cargo produced. + */ +void LinkGraphOverlay::DrawStationDots(const DrawPixelInfo *dpi) const +{ + for (StationSupplyList::const_iterator i(this->cached_stations.begin()); i != this->cached_stations.end(); ++i) { + const Station *st = Station::GetIfValid(i->first); + if (st == NULL) continue; + Point pt = this->GetStationMiddle(st); + if (!this->IsPointVisible(pt, dpi, 3 * this->scale)) continue; + + uint r = this->scale * 2 + this->scale * 2 * min(200, i->second) / 200; + + LinkGraphOverlay::DrawVertex(pt.x, pt.y, r, + _colour_gradient[st->owner != OWNER_NONE ? + (Colours)Company::Get(st->owner)->colour : COLOUR_GREY][5], + _colour_gradient[COLOUR_GREY][1]); + } +} + +/** + * Draw a square symbolizing a producer of cargo. + * @param x X coordinate of the middle of the vertex. + * @param y Y coordinate of the middle of the vertex. + * @param size Y and y extend of the vertex. + * @param colour Colour with which the vertex will be filled. + * @param border_colour Colour for the border of the vertex. + */ +/* static */ void LinkGraphOverlay::DrawVertex(int x, int y, int size, int colour, int border_colour) +{ + size--; + int w1 = size / 2; + int w2 = size / 2 + size % 2; + + GfxFillRect(x - w1, y - w1, x + w2, y + w2, colour); + + w1++; + w2++; + GfxDrawLine(x - w1, y - w1, x + w2, y - w1, border_colour); + GfxDrawLine(x - w1, y + w2, x + w2, y + w2, border_colour); + GfxDrawLine(x - w1, y - w1, x - w1, y + w2, border_colour); + GfxDrawLine(x + w2, y - w1, x + w2, y + w2, border_colour); +} + +/** + * Determine the middle of a station in the current window. + * @param st The station we're looking for. + * @return Middle point of the station in the current window. + */ +Point LinkGraphOverlay::GetStationMiddle(const Station *st) const +{ + if (this->window->viewport != NULL) { + return GetViewportStationMiddle(this->window->viewport, st); + } else { + /* assume this is a smallmap */ + return static_cast(this->window)->GetStationMiddle(st); + } +} + +/** + * Set a new cargo mask and rebuild the cache. + * @param cargo_mask New cargo mask. + */ +void LinkGraphOverlay::SetCargoMask(uint32 cargo_mask) +{ + this->cargo_mask = cargo_mask; + this->RebuildCache(); + this->window->GetWidget(this->widget_id)->SetDirty(this->window); +} + +/** + * Set a new company mask and rebuild the cache. + * @param company_mask New company mask. + */ +void LinkGraphOverlay::SetCompanyMask(uint32 company_mask) +{ + this->company_mask = company_mask; + this->RebuildCache(); + this->window->GetWidget(this->widget_id)->SetDirty(this->window); +} + +/** Make a number of rows with buttons for each company for the linkgraph legend window. */ +NWidgetBase *MakeCompanyButtonRowsLinkGraphGUI(int *biggest_index) +{ + return MakeCompanyButtonRows(biggest_index, WID_LGL_COMPANY_FIRST, WID_LGL_COMPANY_LAST, 3, STR_LINKGRAPH_LEGEND_SELECT_COMPANIES); +} + +NWidgetBase *MakeSaturationLegendLinkGraphGUI(int *biggest_index) +{ + 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(1, 1); + wid->SetResize(0, 0); + panel->Add(wid); + } + *biggest_index = WID_LGL_SATURATION_LAST; + return panel; +} + +NWidgetBase *MakeCargoesLegendLinkGraphGUI(int *biggest_index) +{ + static const uint ENTRIES_PER_ROW = CeilDiv(NUM_CARGO, 5); + 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(NC_EQUALSIZE); + } + NWidgetBackground * wid = new NWidgetBackground(WWT_PANEL, COLOUR_GREY, i + WID_LGL_CARGO_FIRST); + wid->SetMinimalSize(25, FONT_HEIGHT_SMALL); + 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; +} + + +static const NWidgetPart _nested_linkgraph_legend_widgets[] = { + NWidget(NWID_HORIZONTAL), + NWidget(WWT_CLOSEBOX, COLOUR_DARK_GREEN), + NWidget(WWT_CAPTION, COLOUR_DARK_GREEN, WID_LGL_CAPTION), SetDataTip(STR_LINKGRAPH_LEGEND_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_SHADEBOX, COLOUR_DARK_GREEN), + NWidget(WWT_STICKYBOX, COLOUR_DARK_GREEN), + EndContainer(), + NWidget(WWT_PANEL, COLOUR_DARK_GREEN), + NWidget(NWID_HORIZONTAL), + NWidget(WWT_PANEL, COLOUR_DARK_GREEN, WID_LGL_SATURATION), + SetPadding(WD_FRAMERECT_TOP, 0, WD_FRAMERECT_BOTTOM, WD_CAPTIONTEXT_LEFT), + 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), + 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), + EndContainer(), + EndContainer(), + 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), + 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), + EndContainer(), + EndContainer(), + EndContainer(), + EndContainer() +}; + +assert_compile(WID_LGL_SATURATION_LAST - WID_LGL_SATURATION_FIRST == + lengthof(LinkGraphOverlay::LINK_COLOURS) - 1); + +static WindowDesc _linkgraph_legend_desc( + WDP_AUTO, "toolbar_linkgraph", 0, 0, + WC_LINKGRAPH_LEGEND, WC_NONE, + 0, + _nested_linkgraph_legend_widgets, lengthof(_nested_linkgraph_legend_widgets) +); + +/** + * Open a link graph legend window. + */ +void ShowLinkGraphLegend() +{ + AllocateWindowDescFront(&_linkgraph_legend_desc, 0); +} + +LinkGraphLegendWindow::LinkGraphLegendWindow(WindowDesc *desc, int window_number) : Window(desc) +{ + this->InitNested(window_number); + this->InvalidateData(0); + this->SetOverlay(FindWindowById(WC_MAIN_WINDOW, 0)->viewport->overlay); +} + +/** + * Set the overlay belonging to this menu and import its company/cargo settings. + * @params overlay New overlay for this menu. + */ +void LinkGraphLegendWindow::SetOverlay(LinkGraphOverlay *overlay) { + this->overlay = overlay; + uint32 companies = this->overlay->GetCompanyMask(); + for (uint c = 0; c < MAX_COMPANIES; c++) { + if (!this->IsWidgetDisabled(WID_LGL_COMPANY_FIRST + c)) { + this->SetWidgetLoweredState(WID_LGL_COMPANY_FIRST + c, HasBit(companies, c)); + } + } + uint32 cargoes = this->overlay->GetCargoMask(); + for (uint c = 0; c < NUM_CARGO; c++) { + if (!this->IsWidgetDisabled(WID_LGL_CARGO_FIRST + c)) { + this->SetWidgetLoweredState(WID_LGL_CARGO_FIRST + c, HasBit(cargoes, c)); + } + } +} + +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 +{ + 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 + 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) { + 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) 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(r.left, r.right, (r.top + r.bottom + 1 - FONT_HEIGHT_SMALL) / 2, cargo->abbrev, TC_BLACK, SA_HOR_CENTER); + } +} + +/** + * Update the overlay with the new company selection. + */ +void LinkGraphLegendWindow::UpdateOverlayCompanies() +{ + uint32 mask = 0; + for (uint c = 0; c < MAX_COMPANIES; c++) { + if (this->IsWidgetDisabled(c + WID_LGL_COMPANY_FIRST)) continue; + if (!this->IsWidgetLowered(c + WID_LGL_COMPANY_FIRST)) continue; + SetBit(mask, c); + } + this->overlay->SetCompanyMask(mask); +} + +/** + * Update the overlay with the new cargo selection. + */ +void LinkGraphLegendWindow::UpdateOverlayCargoes() +{ + uint32 mask = 0; + for (uint c = 0; c < NUM_CARGO; c++) { + if (this->IsWidgetDisabled(c + WID_LGL_CARGO_FIRST)) continue; + if (!this->IsWidgetLowered(c + WID_LGL_CARGO_FIRST)) continue; + SetBit(mask, c); + } + this->overlay->SetCargoMask(mask); +} + +void LinkGraphLegendWindow::OnClick(Point pt, int widget, int click_count) +{ + /* Check which button is clicked */ + if (IsInsideMM(widget, WID_LGL_COMPANY_FIRST, WID_LGL_COMPANY_LAST + 1)) { + if (!this->IsWidgetDisabled(widget)) { + this->ToggleWidgetLoweredState(widget); + this->UpdateOverlayCompanies(); + } + } else if (widget == WID_LGL_COMPANIES_ALL || widget == WID_LGL_COMPANIES_NONE) { + for (uint c = 0; c < MAX_COMPANIES; c++) { + if (this->IsWidgetDisabled(c + WID_LGL_COMPANY_FIRST)) continue; + this->SetWidgetLoweredState(WID_LGL_COMPANY_FIRST + c, widget == WID_LGL_COMPANIES_ALL); + } + this->UpdateOverlayCompanies(); + this->SetDirty(); + } else if (IsInsideMM(widget, WID_LGL_CARGO_FIRST, WID_LGL_CARGO_LAST + 1)) { + if (!this->IsWidgetDisabled(widget)) { + this->ToggleWidgetLoweredState(widget); + this->UpdateOverlayCargoes(); + } + } else if (widget == WID_LGL_CARGOES_ALL || widget == WID_LGL_CARGOES_NONE) { + for (uint c = 0; c < NUM_CARGO; c++) { + if (this->IsWidgetDisabled(c + WID_LGL_CARGO_FIRST)) continue; + this->SetWidgetLoweredState(WID_LGL_CARGO_FIRST + c, widget == WID_LGL_CARGOES_ALL); + } + this->UpdateOverlayCargoes(); + } + this->SetDirty(); +} + +/** + * Invalidate the data of this window if the cargoes or companies have changed. + * @param data ignored + * @param gui_scope ignored + */ +void LinkGraphLegendWindow::OnInvalidateData(int data, bool gui_scope) +{ + /* Disable the companies who are not active */ + for (CompanyID i = COMPANY_FIRST; i < MAX_COMPANIES; i++) { + this->SetWidgetDisabledState(i + WID_LGL_COMPANY_FIRST, !Company::IsValidID(i)); + } + for (CargoID i = 0; i < NUM_CARGO; i++) { + this->SetWidgetDisabledState(i + WID_LGL_CARGO_FIRST, !CargoSpec::Get(i)->IsValid()); + } +} diff --git a/src/linkgraph/linkgraph_gui.h b/src/linkgraph/linkgraph_gui.h new file mode 100644 index 000000000..fcf81817f --- /dev/null +++ b/src/linkgraph/linkgraph_gui.h @@ -0,0 +1,115 @@ +/* $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 linkgraph_gui.h Declaration of linkgraph overlay GUI. */ + +#ifndef LINKGRAPH_GUI_H +#define LINKGRAPH_GUI_H + +#include "../company_func.h" +#include "../station_base.h" +#include "../widget_type.h" +#include "linkgraph_base.h" +#include +#include + +/** + * Properties of a link between two stations. + */ +struct LinkProperties { + 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. +}; + +/** + * Handles drawing of links into some window. + * The window must either be a smallmap or have a valid viewport. + */ +class LinkGraphOverlay { +public: + typedef std::map StationLinkMap; + typedef std::map LinkMap; + typedef std::list > StationSupplyList; + + static const uint8 LINK_COLOURS[]; + + /** + * Create a link graph overlay for the specified window. + * @param w Window to be drawn into. + * @param wid ID of the widget to draw into. + * @param cargo_mask Bitmask of cargoes to be shown. + * @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, uint32 company_mask, uint scale) : + window(w), widget_id(wid), cargo_mask(cargo_mask), company_mask(company_mask), scale(scale) + {} + + void RebuildCache(); + void Draw(const DrawPixelInfo *dpi) const; + void SetCargoMask(uint32 cargo_mask); + void SetCompanyMask(uint32 company_mask); + + /** Get a bitmask of the currently shown cargoes. */ + uint32 GetCargoMask() { return this->cargo_mask; } + + /** Get a bitmask of the currently shown companies. */ + uint32 GetCompanyMask() { return this->company_mask; } + +protected: + const Window *window; ///< Window to be drawn into. + const uint widget_id; ///< ID of Widget in Window to be drawn to. + uint32 cargo_mask; ///< Bitmask of cargos to be displayed. + uint32 company_mask; ///< Bitmask of companies to be displayed. + LinkMap cached_links; ///< Cache for links to reduce recalculation. + StationSupplyList cached_stations; ///< Cache for stations to be drawn. + uint scale; ///< Width of link lines. + + Point GetStationMiddle(const Station *st) const; + + void DrawForwBackLinks(Point pta, StationID sta, Point ptb, StationID stb) const; + void AddLinks(const Station *sta, const Station *stb); + void DrawLinks(const DrawPixelInfo *dpi) const; + void DrawStationDots(const DrawPixelInfo *dpi) const; + void DrawContent(Point pta, Point ptb, const LinkProperties &cargo) const; + bool IsLinkVisible(Point pta, Point ptb, const DrawPixelInfo *dpi, int padding = 0) const; + 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, bool new_shared, LinkProperties &cargo); + static void DrawVertex(int x, int y, int size, int colour, int border_colour); +}; + +void ShowLinkGraphLegend(); + +/** + * Menu window to select cargoes and companies to show in a link graph overlay. + */ +struct LinkGraphLegendWindow : Window { +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); + +private: + LinkGraphOverlay *overlay; + + void UpdateOverlayCompanies(); + void UpdateOverlayCargoes(); +}; + +#endif /* LINKGRAPH_GUI_H */ diff --git a/src/linkgraph/linkgraph_type.h b/src/linkgraph/linkgraph_type.h new file mode 100644 index 000000000..6a3239b08 --- /dev/null +++ b/src/linkgraph/linkgraph_type.h @@ -0,0 +1,64 @@ +/* $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 linkgraph_type.h Declaration of link graph types used for cargo distribution. */ + +#ifndef LINKGRAPH_TYPE_H +#define LINKGRAPH_TYPE_H + +typedef uint16 LinkGraphID; +static const LinkGraphID INVALID_LINK_GRAPH = UINT16_MAX; + +typedef uint16 LinkGraphJobID; +static const LinkGraphID INVALID_LINK_GRAPH_JOB = UINT16_MAX; + +typedef uint16 NodeID; +static const NodeID INVALID_NODE = UINT16_MAX; + +enum DistributionType { + DT_BEGIN = 0, + DT_MIN = 0, + DT_MANUAL = 0, ///< Manual distribution. No link graph calculations are run. + DT_ASYMMETRIC = 1, ///< Asymmetric distribution. Usually cargo will only travel in one direction. + DT_MAX_NONSYMMETRIC = 1, ///< Maximum non-symmetric distribution. + DT_SYMMETRIC = 2, ///< Symmetric distribution. The same amount of cargo travels in each direction between each pair of nodes. + DT_MAX = 2, + DT_NUM = 3, + DT_END = 3 +}; + +/* It needs to be 8bits, because we save and load it as such + * Define basic enum properties + */ +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 new file mode 100644 index 000000000..30d68e4d8 --- /dev/null +++ b/src/linkgraph/linkgraphjob.cpp @@ -0,0 +1,272 @@ +/* $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 linkgraphjob.cpp Definition of link graph job classes used for cargo distribution. */ + +#include "../stdafx.h" +#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) + +/** + * 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 + * original. The job is immediately started. + * @param orig Original LinkGraph to be copied. + */ +LinkGraphJob::LinkGraphJob(const LinkGraph &orig) : + /* Copying the link graph here also copies its index member. + * This is on purpose. */ + link_graph(orig), + settings(_settings_game.linkgraph), + thread(NULL), + join_date(_date + _settings_game.linkgraph.recalc_time) +{ +} + +/** + * 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() +{ + 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; + + uint size = this->Size(); + for (NodeID node_id = 0; node_id < size; ++node_id) { + Node from = (*this)[node_id]; + + /* The station can have been deleted. Remove all flows originating from it then. */ + Station *st = Station::GetIfValid(from.Station()); + 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) { + this->EraseFlows(node_id); + continue; + } + + LinkGraph *lg = LinkGraph::Get(ge.link_graph); + FlowStatMap &flows = from.Flows(); + + for (EdgeIterator it(from.Begin()); it != from.End(); ++it) { + if (from[it->first].Flow() == 0) continue; + StationID to = (*this)[it->first].Station(); + Station *st2 = Station::GetIfValid(to); + if (st2 == NULL || st2->goods[this->Cargo()].link_graph != this->link_graph.index || + st2->goods[this->Cargo()].node != it->first || + (*lg)[node_id][it->first].LastUpdate() == INVALID_DATE) { + /* Edge has been removed. Delete flows. */ + 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 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()) { + if (_settings_game.linkgraph.GetDistributionType(this->Cargo()) != DT_MANUAL) { + 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); + flows.erase(new_it); + ++it; + } + } + ge.flows.insert(flows.begin(), flows.end()); + InvalidateWindowData(WC_STATION_VIEW, st->index, this->Cargo()); + } +} + +/** + * Initialize the link graph job: Resize nodes and edges and populate them. + * This is done after the constructor so that we can do it in the calculation + * thread without delaying the main game. + */ +void LinkGraphJob::Init() +{ + uint size = this->Size(); + this->nodes.Resize(size); + this->edges.Resize(size, size); + for (uint i = 0; i < size; ++i) { + this->nodes[i].Init(this->link_graph[i].Supply()); + EdgeAnnotation *node_edges = this->edges[i]; + for (uint j = 0; j < size; ++j) { + node_edges[j].Init(); + } + } +} + +/** + * Initialize a linkgraph job edge. + */ +void LinkGraphJob::EdgeAnnotation::Init() +{ + this->demand = 0; + this->flow = 0; + this->unsatisfied_demand = 0; +} + +/** + * Initialize a Linkgraph job node. The underlying memory is expected to be + * freshly allocated, without any constructors having been called. + * @param supply Initial undelivered supply. + */ +void LinkGraphJob::NodeAnnotation::Init(uint supply) +{ + this->undelivered_supply = supply; + new (&this->flows) FlowStatMap; + new (&this->paths) PathList; +} + +/** + * Add this path as a new child to the given base path, thus making this path + * a "fork" of the base path. + * @param base Path to fork from. + * @param cap Maximum capacity of the new leg. + * @param free_cap Remaining free capacity of the new leg. + * @param dist Distance of the new leg. + */ +void Path::Fork(Path *base, uint cap, int free_cap, uint dist) +{ + this->capacity = min(base->capacity, cap); + this->free_capacity = min(base->free_capacity, free_cap); + this->distance = base->distance + dist; + assert(this->distance > 0); + if (this->parent != base) { + this->Detach(); + this->parent = base; + this->parent->num_children++; + } + this->origin = base->origin; +} + +/** + * Push some flow along a path and register the path in the nodes it passes if + * successful. + * @param new_flow Amount of flow to push. + * @param job Link graph job this node belongs to. + * @param max_saturation Maximum saturation of edges. + * @return Amount of flow actually pushed. + */ +uint Path::AddFlow(uint new_flow, LinkGraphJob &job, uint max_saturation) +{ + if (this->parent != NULL) { + LinkGraphJob::Edge edge = job[this->parent->node][this->node]; + if (max_saturation != UINT_MAX) { + uint usable_cap = edge.Capacity() * max_saturation / 100; + if (usable_cap > edge.Flow()) { + new_flow = min(new_flow, usable_cap - edge.Flow()); + } else { + return 0; + } + } + new_flow = this->parent->AddFlow(new_flow, job, max_saturation); + if (this->flow == 0 && new_flow > 0) { + job[this->parent->node].Paths().push_front(this); + } + edge.AddFlow(new_flow); + } + this->flow += new_flow; + return new_flow; +} + +/** + * Create a leg of a path in the link graph. + * @param n Id of the link graph node this path passes. + * @param source If true, this is the first leg of the path. + */ +Path::Path(NodeID n, bool source) : + distance(source ? 0 : UINT_MAX), + capacity(source ? UINT_MAX : 0), + free_capacity(source ? INT_MAX : INT_MIN), + flow(0), node(n), origin(source ? n : INVALID_NODE), + num_children(0), parent(NULL) +{} + diff --git a/src/linkgraph/linkgraphjob.h b/src/linkgraph/linkgraphjob.h new file mode 100644 index 000000000..00b65f208 --- /dev/null +++ b/src/linkgraph/linkgraphjob.h @@ -0,0 +1,434 @@ +/* $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 linkgraphjob.h Declaration of link graph job classes used for cargo distribution. */ + +#ifndef LINKGRAPHJOB_H +#define LINKGRAPHJOB_H + +#include "../thread/thread.h" +#include "linkgraph.h" +#include + +class LinkGraphJob; +class Path; +typedef std::list PathList; + +/** Type of the pool for link graph jobs. */ +typedef Pool LinkGraphJobPool; +/** The actual pool with link graph jobs. */ +extern LinkGraphJobPool _link_graph_job_pool; + +/** + * Class for calculation jobs to be run on link graphs. + */ +class LinkGraphJob : public LinkGraphJobPool::PoolItem<&_link_graph_job_pool>{ +private: + /** + * Annotation for a link graph edge. + */ + struct EdgeAnnotation { + uint demand; ///< Transport demand between the nodes. + uint unsatisfied_demand; ///< Demand over this edge that hasn't been satisfied yet. + uint flow; ///< Planned flow over this edge. + void Init(); + }; + + /** + * Annotation for a link graph node. + */ + struct NodeAnnotation { + uint undelivered_supply; ///< Amount of supply that hasn't been distributed yet. + 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); + }; + + typedef SmallVector NodeAnnotationVector; + typedef SmallMatrix EdgeAnnotationMatrix; + + friend const SaveLoad *GetLinkGraphJobDesc(); + friend class LinkGraphSchedule; + +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. + 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: + + /** + * A job edge. Wraps a link graph edge and an edge annotation. The + * annotation can be modified, the edge is constant. + */ + class Edge : public LinkGraph::ConstEdge { + private: + EdgeAnnotation &anno; ///< Annotation being wrapped. + public: + /** + * Constructor. + * @param edge Link graph edge to be wrapped. + * @param anno Annotation to be wrapped. + */ + Edge(const LinkGraph::BaseEdge &edge, EdgeAnnotation &anno) : + LinkGraph::ConstEdge(edge), anno(anno) {} + + /** + * Get the transport demand between end the points of the edge. + * @return Demand. + */ + uint Demand() const { return this->anno.demand; } + + /** + * Get the transport demand that hasn't been satisfied by flows, yet. + * @return Unsatisfied demand. + */ + uint UnsatisfiedDemand() const { return this->anno.unsatisfied_demand; } + + /** + * Get the total flow on the edge. + * @return Flow. + */ + uint Flow() const { return this->anno.flow; } + + /** + * Add some flow. + * @param flow Flow to be added. + */ + void AddFlow(uint flow) { this->anno.flow += flow; } + + /** + * Remove some flow. + * @param flow Flow to be removed. + */ + void RemoveFlow(uint flow) + { + assert(flow <= this->anno.flow); + this->anno.flow -= flow; + } + + /** + * Add some (not yet satisfied) demand. + * @param demand Demand to be added. + */ + void AddDemand(uint demand) + { + this->anno.demand += demand; + this->anno.unsatisfied_demand += demand; + } + + /** + * Satisfy some demand. + * @param demand Demand to be satisfied. + */ + void SatisfyDemand(uint demand) + { + assert(demand <= this->anno.unsatisfied_demand); + this->anno.unsatisfied_demand -= demand; + } + }; + + /** + * Iterator for job edges. + */ + class EdgeIterator : public LinkGraph::BaseEdgeIterator { + EdgeAnnotation *base_anno; ///< Array of annotations to be (indirectly) iterated. + public: + /** + * Constructor. + * @param base Array of edges to be iterated. + * @param base_anno Array of annotations to be iterated. + * @param current Start offset of iteration. + */ + EdgeIterator(const LinkGraph::BaseEdge *base, EdgeAnnotation *base_anno, NodeID current) : + LinkGraph::BaseEdgeIterator(base, current), + base_anno(base_anno) {} + + /** + * Dereference. + * @return Pair of the edge currently pointed to and the ID of its + * other end. + */ + SmallPair operator*() const + { + return SmallPair(this->current, Edge(this->base[this->current], this->base_anno[this->current])); + } + + /** + * Dereference. Has to be repeated here as operator* is different than + * in LinkGraph::EdgeWrapper. + * @return Fake pointer to pair of NodeID/Edge. + */ + FakePointer operator->() const { + return FakePointer(this->operator*()); + } + }; + + /** + * Link graph job node. Wraps a constant link graph node and a modifiable + * node annotation. + */ + class Node : public LinkGraph::ConstNode { + private: + NodeAnnotation &node_anno; ///< Annotation being wrapped. + EdgeAnnotation *edge_annos; ///< Edge annotations belonging to this node. + public: + + /** + * Constructor. + * @param lgj Job to take the node from. + * @param node ID of the node. + */ + Node (LinkGraphJob *lgj, NodeID node) : + LinkGraph::ConstNode(&lgj->link_graph, node), + node_anno(lgj->nodes[node]), edge_annos(lgj->edges[node]) + {} + + /** + * Retrieve an edge starting at this node. Mind that this returns an + * object, not a reference. + * @param to Remote end of the edge. + * @return Edge between this node and "to". + */ + Edge operator[](NodeID to) const { return Edge(this->edges[to], this->edge_annos[to]); } + + /** + * Iterator for the "begin" of the edge array. Only edges with capacity + * are iterated. The others are skipped. + * @return Iterator pointing to the first edge. + */ + EdgeIterator Begin() const { return EdgeIterator(this->edges, this->edge_annos, index); } + + /** + * Iterator for the "end" of the edge array. Only edges with capacity + * are iterated. The others are skipped. + * @return Iterator pointing beyond the last edge. + */ + EdgeIterator End() const { return EdgeIterator(this->edges, this->edge_annos, INVALID_NODE); } + + /** + * Get amount of supply that hasn't been delivered, yet. + * @return Undelivered supply. + */ + uint UndeliveredSupply() const { return this->node_anno.undelivered_supply; } + + /** + * Get the flows running through this node. + * @return Flows. + */ + FlowStatMap &Flows() { return this->node_anno.flows; } + + /** + * Get a constant version of the flows running through this node. + * @return Flows. + */ + const FlowStatMap &Flows() const { return this->node_anno.flows; } + + /** + * 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; } + + /** + * Get a constant version of the paths this node is part of. + * @return Paths. + */ + const PathList &Paths() const { return this->node_anno.paths; } + + /** + * Deliver some supply, adding demand to the respective edge. + * @param to Destination for supply. + * @param amount Amount of supply to be delivered. + */ + void DeliverSupply(NodeID to, uint amount) + { + this->node_anno.undelivered_supply -= amount; + (*this)[to].AddDemand(amount); + } + }; + + /** + * Bare constructor, only for save/load. link_graph, join_date and actually + * settings have to be brutally const-casted in order to populate them. + */ + LinkGraphJob() : settings(_settings_game.linkgraph), thread(NULL), + join_date(INVALID_DATE) {} + + LinkGraphJob(const LinkGraph &orig); + ~LinkGraphJob(); + + void Init(); + + /** + * Check if job is supposed to be finished. + * @return True if job should be finished by now, false if not. + */ + inline bool IsFinished() const { return this->join_date <= _date; } + + /** + * Get the date when the job should be finished. + * @return Join date. + */ + 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. + */ + inline const LinkGraphSettings &Settings() const { return this->settings; } + + /** + * Get a node abstraction with the specified id. + * @param num ID of the node. + * @return the Requested node. + */ + inline Node operator[](NodeID num) { return Node(this, num); } + + /** + * Get the size of the underlying link graph. + * @return Size. + */ + inline uint Size() const { return this->link_graph.Size(); } + + /** + * Get the cargo of the underlying link graph. + * @return Cargo. + */ + inline CargoID Cargo() const { return this->link_graph.Cargo(); } + + /** + * Get the date when the underlying link graph was last compressed. + * @return Compression date. + */ + inline Date LastCompression() const { return this->link_graph.LastCompression(); } + + /** + * Get the ID of the underlying link graph. + * @return Link graph ID. + */ + inline LinkGraphID LinkGraphIndex() const { return this->link_graph.index; } + + /** + * Get a reference to the underlying link graph. Only use this for save/load. + * @return Link graph. + */ + inline const LinkGraph &Graph() const { return this->link_graph; } +}; + +#define FOR_ALL_LINK_GRAPH_JOBS(var) FOR_ALL_ITEMS_FROM(LinkGraphJob, link_graph_job_index, var, 0) + +/** + * A leg of a path in the link graph. Paths can form trees by being "forked". + */ +class Path { +public: + Path(NodeID n, bool source = false); + + /** Get the node this leg passes. */ + inline NodeID GetNode() const { return this->node; } + + /** Get the overall origin of the path. */ + inline NodeID GetOrigin() const { return this->origin; } + + /** Get the parent leg of this one. */ + inline Path *GetParent() { return this->parent; } + + /** Get the overall capacity of the path. */ + inline uint GetCapacity() const { return this->capacity; } + + /** Get the free capacity of the path. */ + inline int GetFreeCapacity() const { return this->free_capacity; } + + /** + * Get ratio of free * 16 (so that we get fewer 0) / + * max(total capacity, 1) (so that we don't divide by 0). + * @param free Free capacity. + * @param total Total capacity. + * @return free * 16 / max(total, 1). + */ + inline static int GetCapacityRatio(int free, uint total) + { + return Clamp(free, PATH_CAP_MIN_FREE, PATH_CAP_MAX_FREE) * PATH_CAP_MULTIPLIER / max(total, 1U); + } + + /** + * Get capacity ratio of this path. + * @return free capacity * 16 / (total capacity + 1). + */ + inline int GetCapacityRatio() const + { + return Path::GetCapacityRatio(this->free_capacity, this->capacity); + } + + /** Get the overall distance of the path. */ + inline uint GetDistance() const { return this->distance; } + + /** Reduce the flow on this leg only by the specified amount. */ + inline void ReduceFlow(uint f) { this->flow -= f; } + + /** Increase the flow on this leg only by the specified amount. */ + inline void AddFlow(uint f) { this->flow += f; } + + /** Get the flow on this leg. */ + inline uint GetFlow() const { return this->flow; } + + /** Get the number of "forked off" child legs of this one. */ + inline uint GetNumChildren() const { return this->num_children; } + + /** + * Detach this path from its parent. + */ + inline void Detach() + { + if (this->parent != NULL) { + this->parent->num_children--; + this->parent = NULL; + } + } + + uint AddFlow(uint f, LinkGraphJob &job, uint max_saturation); + void Fork(Path *base, uint cap, int free_cap, uint dist); + +protected: + + /** + * Some boundaries to clamp agains in order to avoid integer overflows. + */ + enum PathCapacityBoundaries { + PATH_CAP_MULTIPLIER = 16, + PATH_CAP_MIN_FREE = (INT_MIN + 1) / PATH_CAP_MULTIPLIER, + PATH_CAP_MAX_FREE = (INT_MAX - 1) / PATH_CAP_MULTIPLIER + }; + + uint distance; ///< Sum(distance of all legs up to this one). + uint capacity; ///< This capacity is min(capacity) fom all edges. + int free_capacity; ///< This capacity is min(edge.capacity - edge.flow) for the current run of Dijkstra. + uint flow; ///< Flow the current run of the mcf solver assigns. + NodeID node; ///< Link graph node this leg passes. + NodeID origin; ///< Link graph node this path originates from. + uint num_children; ///< Number of child legs that have been forked from this path. + Path *parent; ///< Parent leg of this one. +}; + +#endif /* LINKGRAPHJOB_H */ diff --git a/src/linkgraph/linkgraphjob_base.h b/src/linkgraph/linkgraphjob_base.h new file mode 100644 index 000000000..0a29166ee --- /dev/null +++ b/src/linkgraph/linkgraphjob_base.h @@ -0,0 +1,23 @@ +/* $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 linkgraphjob_base.h Some typedefs for component handlers. */ + +#ifndef LINKGRAPHJOB_BASE_H +#define LINKGRAPHJOB_BASE_H + +#include "linkgraph.h" +#include "linkgraphjob.h" +#include "linkgraphschedule.h" + +typedef LinkGraphJob::Node Node; +typedef LinkGraphJob::Edge Edge; +typedef LinkGraphJob::EdgeIterator EdgeIterator; + +#endif /* LINKGRAPHJOB_BASE_H */ diff --git a/src/linkgraph/linkgraphschedule.cpp b/src/linkgraph/linkgraphschedule.cpp new file mode 100644 index 000000000..30ad20d4d --- /dev/null +++ b/src/linkgraph/linkgraphschedule.cpp @@ -0,0 +1,162 @@ +/* $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 linkgraphschedule.cpp Definition of link graph schedule used for cargo distribution. */ + +#include "../stdafx.h" +#include "linkgraphschedule.h" +#include "init.h" +#include "demands.h" +#include "mcf.h" +#include "flowmapper.h" + +#include "../safeguards.h" + +/** + * Start the next job in the schedule. + */ +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); + job->SpawnThread(); + this->running.push_back(job); + } else { + NOT_REACHED(); + } +} + +/** + * Join the next finished job, if available. + */ +void LinkGraphSchedule::JoinNext() +{ + if (this->running.empty()) return; + LinkGraphJob *next = this->running.front(); + if (!next->IsFinished()) return; + this->running.pop_front(); + LinkGraphID id = next->LinkGraphIndex(); + 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. + this->Queue(lg); + } +} + +/** + * Run all handlers for the given Job. This method is tailored to + * ThreadObject::New. + * @param j Pointer to a link graph job. + */ +/* 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); + } +} + +/** + * Start all threads in the running list. This is only useful for save/load. + * Usually threads are started when the job is created. + */ +void LinkGraphSchedule::SpawnAll() +{ + for (JobList::iterator i = this->running.begin(); i != this->running.end(); ++i) { + (*i)->SpawnThread(); + } +} + +/** + * Clear all link graphs and jobs from the schedule. + */ +/* static */ void LinkGraphSchedule::Clear() +{ + LinkGraphSchedule *inst = LinkGraphSchedule::Instance(); + for (JobList::iterator i(inst->running.begin()); i != inst->running.end(); ++i) { + (*i)->JoinThread(); + } + inst->running.clear(); + inst->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); +} + +/** + * Create a link graph schedule and initialize its handlers. + */ +LinkGraphSchedule::LinkGraphSchedule() +{ + this->handlers[0] = new InitHandler; + this->handlers[1] = new DemandHandler; + this->handlers[2] = new MCFHandler; + this->handlers[3] = new FlowMapper(false); + this->handlers[4] = new MCFHandler; + this->handlers[5] = new FlowMapper(true); +} + +/** + * Delete a link graph schedule and its handlers. + */ +LinkGraphSchedule::~LinkGraphSchedule() +{ + this->Clear(); + for (uint i = 0; i < lengthof(this->handlers); ++i) { + delete this->handlers[i]; + } +} + +/** + * 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. + */ +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(); + } else if (offset == _settings_game.linkgraph.recalc_interval / 2) { + LinkGraphSchedule::Instance()->JoinNext(); + } +} + + diff --git a/src/linkgraph/linkgraphschedule.h b/src/linkgraph/linkgraphschedule.h new file mode 100644 index 000000000..5d1871962 --- /dev/null +++ b/src/linkgraph/linkgraphschedule.h @@ -0,0 +1,81 @@ +/* $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 linkgraphschedule.h Declaration of link graph schedule used for cargo distribution. */ + +#ifndef LINKGRAPHSCHEDULE_H +#define LINKGRAPHSCHEDULE_H + +#include "linkgraph.h" + +class LinkGraphJob; + +/** + * A handler doing "something" on a link graph component. It must not keep any + * state as it is called concurrently from different threads. + */ +class ComponentHandler { +public: + /** + * Destroy the handler. Must be given due to virtual Run. + */ + virtual ~ComponentHandler() {} + + /** + * Run the handler. A link graph handler must not read or write any data + * outside the given component as that would create a potential desync. + * @param job Link graph component to run the handler on. + */ + virtual void Run(LinkGraphJob &job) const = 0; +}; + +class LinkGraphSchedule { +private: + LinkGraphSchedule(); + ~LinkGraphSchedule(); + typedef std::list GraphList; + typedef std::list JobList; + friend const SaveLoad *GetLinkGraphScheduleDesc(); + +protected: + ComponentHandler *handlers[6]; ///< Handlers to be run for each job. + GraphList schedule; ///< Queue for new jobs. + JobList running; ///< Currently running jobs. + +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 void Run(void *j); + static void Clear(); + + void SpawnNext(); + void JoinNext(); + void SpawnAll(); + void ShiftDates(int interval); + + /** + * Queue a link graph for execution. + * @param lg Link graph to be queued. + */ + void Queue(LinkGraph *lg) + { + assert(LinkGraph::Get(lg->index) == lg); + this->schedule.push_back(lg); + } + + /** + * Remove a link graph from the execution queue. + * @param lg Link graph to be removed. + */ + void Unqueue(LinkGraph *lg) { this->schedule.remove(lg); } +}; + +#endif /* LINKGRAPHSCHEDULE_H */ diff --git a/src/linkgraph/mcf.cpp b/src/linkgraph/mcf.cpp new file mode 100644 index 000000000..81d4d6d38 --- /dev/null +++ b/src/linkgraph/mcf.cpp @@ -0,0 +1,581 @@ +/** @file mcf.cpp Definition of Multi-Commodity-Flow solver. */ + +#include "../stdafx.h" +#include "../core/math_func.hpp" +#include "mcf.h" +#include + +#include "../safeguards.h" + +typedef std::map PathViaMap; + +/** + * Distance-based annotation for use in the Dijkstra algorithm. This is close + * to the original meaning of "annotation" in this context. Paths are rated + * according to the sum of distances of their edges. + */ +class DistanceAnnotation : public Path { +public: + + /** + * Constructor. + * @param n ID of node to be annotated. + * @param source If the node is the source of its path. + */ + DistanceAnnotation(NodeID n, bool source = false) : Path(n, source) {} + + bool IsBetter(const DistanceAnnotation *base, uint cap, int free_cap, uint dist) const; + + /** + * Return the actual value of the annotation, in this case the distance. + * @return Distance. + */ + inline uint GetAnnotation() const { return this->distance; } + + /** + * Comparator for std containers. + */ + struct Comparator { + bool operator()(const DistanceAnnotation *x, const DistanceAnnotation *y) const; + }; +}; + +/** + * Capacity-based annotation for use in the Dijkstra algorithm. This annotation + * rates paths according to the maximum capacity of their edges. The Dijkstra + * algorithm still gives meaningful results like this as the capacity of a path + * can only decrease or stay the same if you add more edges. + */ +class CapacityAnnotation : public Path { +public: + + /** + * Constructor. + * @param n ID of node to be annotated. + * @param source If the node is the source of its path. + */ + CapacityAnnotation(NodeID n, bool source = false) : Path(n, source) {} + + bool IsBetter(const CapacityAnnotation *base, uint cap, int free_cap, uint dist) const; + + /** + * Return the actual value of the annotation, in this case the capacity. + * @return Capacity. + */ + inline int GetAnnotation() const { return this->GetCapacityRatio(); } + + /** + * Comparator for std containers. + */ + struct Comparator { + bool operator()(const CapacityAnnotation *x, const CapacityAnnotation *y) const; + }; +}; + +/** + * Iterator class for getting the edges in the order of their next_edge + * members. + */ +class GraphEdgeIterator { +private: + LinkGraphJob &job; ///< Job being executed + EdgeIterator i; ///< Iterator pointing to current edge. + EdgeIterator end; ///< Iterator pointing beyond last edge. + +public: + + /** + * Construct a GraphEdgeIterator. + * @param job Job to iterate on. + */ + GraphEdgeIterator(LinkGraphJob &job) : job(job), + i(NULL, NULL, INVALID_NODE), end(NULL, NULL, INVALID_NODE) + {} + + /** + * Setup the node to start iterating at. + * @param source Unused. + * @param node Node to start iterating at. + */ + void SetNode(NodeID source, NodeID node) + { + this->i = this->job[node].Begin(); + this->end = this->job[node].End(); + } + + /** + * Retrieve the ID of the node the next edge points to. + * @return Next edge's target node ID or INVALID_NODE. + */ + NodeID Next() + { + return this->i != this->end ? (this->i++)->first : INVALID_NODE; + } +}; + +/** + * Iterator class for getting edges from a FlowStatMap. + */ +class FlowEdgeIterator { +private: + LinkGraphJob &job; ///< Link graph job we're working with. + + /** Lookup table for getting NodeIDs from StationIDs. */ + std::map station_to_node; + + /** Current iterator in the shares map. */ + FlowStat::SharesMap::const_iterator it; + + /** End of the shares map. */ + FlowStat::SharesMap::const_iterator end; +public: + + /** + * Constructor. + * @param job Link graph job to work with. + */ + FlowEdgeIterator(LinkGraphJob &job) : job(job) + { + for (NodeID i = 0; i < job.Size(); ++i) { + this->station_to_node[job[i].Station()] = i; + } + } + + /** + * Setup the node to retrieve edges from. + * @param source Root of the current path tree. + * @param node Current node to be checked for outgoing flows. + */ + 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(); + } + } + + /** + * Get the next node for which a flow exists. + * @return ID of next node with flow. + */ + NodeID Next() + { + if (this->it == this->end) return INVALID_NODE; + return this->station_to_node[(this->it++)->second]; + } +}; + +/** + * Determines if an extension to the given Path with the given parameters is + * better than this path. + * @param base Other path. + * @param cap Capacity of the new edge to be added to base. + * @param dist Distance of the new edge. + * @return True if base + the new edge would be better than the path associated + * with this annotation. + */ +bool DistanceAnnotation::IsBetter(const DistanceAnnotation *base, uint cap, + int free_cap, uint dist) const +{ + /* If any of the paths is disconnected, the other one is better. If both + * are disconnected, this path is better.*/ + if (base->distance == UINT_MAX) { + return false; + } else if (this->distance == UINT_MAX) { + return true; + } + + if (free_cap > 0 && base->free_capacity > 0) { + /* If both paths have capacity left, compare their distances. + * If the other path has capacity left and this one hasn't, the + * other one's better (thus, return true). */ + return this->free_capacity > 0 ? (base->distance + dist < this->distance) : true; + } else { + /* If the other path doesn't have capacity left, but this one has, + * the other one is worse (thus, return false). + * If both paths are out of capacity, do the regular distance + * comparison. */ + return this->free_capacity > 0 ? false : (base->distance + dist < this->distance); + } +} + +/** + * Determines if an extension to the given Path with the given parameters is + * better than this path. + * @param base Other path. + * @param cap Capacity of the new edge to be added to base. + * @param dist Distance of the new edge. + * @return True if base + the new edge would be better than the path associated + * with this annotation. + */ +bool CapacityAnnotation::IsBetter(const CapacityAnnotation *base, uint cap, + int free_cap, uint dist) const +{ + int min_cap = Path::GetCapacityRatio(min(base->free_capacity, free_cap), min(base->capacity, cap)); + int this_cap = this->GetCapacityRatio(); + if (min_cap == this_cap) { + /* If the capacities are the same and the other path isn't disconnected + * choose the shorter path. */ + return base->distance == UINT_MAX ? false : (base->distance + dist < this->distance); + } else { + return min_cap > this_cap; + } +} + +/** + * A slightly modified Dijkstra algorithm. Grades the paths not necessarily by + * distance, but by the value Tannotation computes. It uses the max_saturation + * setting to artificially decrease capacities. + * @tparam Tannotation Annotation to be used. + * @tparam Tedge_iterator Iterator to be used for getting outgoing edges. + * @param source_node Node where the algorithm starts. + * @param paths Container for the paths to be calculated. + */ +template +void MultiCommodityFlow::Dijkstra(NodeID source_node, PathVector &paths) +{ + typedef std::set AnnoSet; + Tedge_iterator iter(this->job); + uint size = this->job.Size(); + AnnoSet annos; + paths.resize(size, NULL); + for (NodeID node = 0; node < size; ++node) { + Tannotation *anno = new Tannotation(node, node == source_node); + annos.insert(anno); + paths[node] = anno; + } + while (!annos.empty()) { + typename AnnoSet::iterator i = annos.begin(); + Tannotation *source = *i; + annos.erase(i); + NodeID from = source->GetNode(); + iter.SetNode(source_node, from); + 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]; + uint capacity = edge.Capacity(); + if (this->max_saturation != UINT_MAX) { + capacity *= this->max_saturation; + capacity /= 100; + if (capacity == 0) capacity = 1; + } + /* punish in-between stops a little */ + 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); + dest->Fork(source, capacity, capacity - edge.Flow(), distance); + annos.insert(dest); + } + } + } +} + +/** + * Clean up paths that lead nowhere and the root path. + * @param source_id ID of the root node. + * @param paths Paths to be cleaned up. + */ +void MultiCommodityFlow::CleanupPaths(NodeID source_id, PathVector &paths) +{ + Path *source = paths[source_id]; + paths[source_id] = NULL; + for (PathVector::iterator i = paths.begin(); i != paths.end(); ++i) { + Path *path = *i; + if (path == NULL) continue; + if (path->GetParent() == source) path->Detach(); + while (path != source && path != NULL && path->GetFlow() == 0) { + Path *parent = path->GetParent(); + path->Detach(); + if (path->GetNumChildren() == 0) { + paths[path->GetNode()] = NULL; + delete path; + } + path = parent; + } + } + delete source; + paths.clear(); +} + +/** + * Push flow along a path and update the unsatisfied_demand of the associated + * edge. + * @param edge Edge whose ends the path connects. + * @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". + */ +uint MultiCommodityFlow::PushFlow(Edge &edge, Path *path, uint accuracy, + uint max_saturation) +{ + assert(edge.UnsatisfiedDemand() > 0); + uint flow = Clamp(edge.Demand() / accuracy, 1, edge.UnsatisfiedDemand()); + flow = path->AddFlow(flow, this->job, max_saturation); + edge.SatisfyDemand(flow); + return flow; +} + +/** + * Find the flow along a cycle including cycle_begin in path. + * @param path Set of paths that form the cycle. + * @param cycle_begin Path to start at. + * @return Flow along the cycle. + */ +uint MCF1stPass::FindCycleFlow(const PathVector &path, const Path *cycle_begin) +{ + uint flow = UINT_MAX; + const Path *cycle_end = cycle_begin; + do { + flow = min(flow, cycle_begin->GetFlow()); + cycle_begin = path[cycle_begin->GetNode()]; + } while (cycle_begin != cycle_end); + return flow; +} + +/** + * Eliminate a cycle of the given flow in the given set of paths. + * @param path Set of paths containing the cycle. + * @param cycle_begin Part of the cycle to start at. + * @param flow Flow along the cycle. + */ +void MCF1stPass::EliminateCycle(PathVector &path, Path *cycle_begin, uint flow) +{ + Path *cycle_end = cycle_begin; + do { + NodeID prev = cycle_begin->GetNode(); + cycle_begin->ReduceFlow(flow); + 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); +} + +/** + * Eliminate cycles for origin_id in the graph. Start searching at next_id and + * work recursively. Also "summarize" paths: Add up the flows along parallel + * paths in one. + * @param path Paths checked in parent calls to this method. + * @param origin_id Origin of the paths to be checked. + * @param next_id Next node to be checked. + * @return If any cycles have been found and eliminated. + */ +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 == 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();) { + 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; + 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; + /* Search the next hops for nodes we have already visited */ + for (PathViaMap::iterator via_it = next_hops.begin(); + via_it != next_hops.end(); ++via_it) { + Path *child = via_it->second; + if (child->GetFlow() > 0) { + /* Push one child into the path vector and search this child's + * children. */ + path[next_id] = child; + found = this->EliminateCycles(path, origin_id, child->GetNode()) || found; + } + } + /* All paths departing from this node have been searched. Mark as + * resolved if no cycles found. If cycles were found further cycles + * 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; + return found; + } + + /* This node has already been visited => we have a cycle. + * Backtrack to find the exact flow. */ + uint flow = this->FindCycleFlow(path, at_next_pos); + if (flow > 0) { + this->EliminateCycle(path, at_next_pos, flow); + return true; + } + + return false; +} + +/** + * Eliminate all cycles in the graph. Check paths starting at each node for + * potential cycles. + * @return If any cycles have been found and eliminated. + */ +bool MCF1stPass::EliminateCycles() +{ + bool cycles_found = false; + uint size = this->job.Size(); + PathVector path(size, NULL); + for (NodeID node = 0; node < size; ++node) { + /* Starting at each node in the graph find all cycles involving this + * node. */ + std::fill(path.begin(), path.end(), (Path *)NULL); + cycles_found |= this->EliminateCycles(path, node, node); + } + return cycles_found; +} + +/** + * Run the first pass of the MCF calculation. + * @param job Link graph job to calculate. + */ +MCF1stPass::MCF1stPass(LinkGraphJob &job) : MultiCommodityFlow(job) +{ + PathVector paths; + uint size = job.Size(); + uint accuracy = job.Settings().accuracy; + bool more_loops; + + do { + more_loops = false; + for (NodeID source = 0; source < size; ++source) { + /* First saturate the shortest paths. */ + this->Dijkstra(source, paths); + + for (NodeID dest = 0; dest < size; ++dest) { + Edge edge = job[source][dest]; + if (edge.UnsatisfiedDemand() > 0) { + Path *path = paths[dest]; + assert(path != NULL); + /* Generally only allow paths that don't exceed the + * available capacity. But if no demand has been assigned + * yet, make an exception and allow any valid path *once*. */ + if (path->GetFreeCapacity() > 0 && this->PushFlow(edge, path, + accuracy, this->max_saturation) > 0) { + /* If a path has been found there is a chance we can + * find more. */ + more_loops = more_loops || (edge.UnsatisfiedDemand() > 0); + } else if (edge.UnsatisfiedDemand() == edge.Demand() && + path->GetFreeCapacity() > INT_MIN) { + this->PushFlow(edge, path, accuracy, UINT_MAX); + } + } + } + this->CleanupPaths(source, paths); + } + } while (more_loops || this->EliminateCycles()); +} + +/** + * Run the second pass of the MCF calculation which assigns all remaining + * demands to existing paths. + * @param job Link graph job to calculate. + */ +MCF2ndPass::MCF2ndPass(LinkGraphJob &job) : MultiCommodityFlow(job) +{ + this->max_saturation = UINT_MAX; // disable artificial cap on saturation + PathVector paths; + uint size = job.Size(); + uint accuracy = job.Settings().accuracy; + bool demand_left = true; + while (demand_left) { + demand_left = false; + for (NodeID source = 0; source < size; ++source) { + this->Dijkstra(source, paths); + for (NodeID dest = 0; dest < size; ++dest) { + Edge edge = this->job[source][dest]; + Path *path = paths[dest]; + if (edge.UnsatisfiedDemand() > 0 && path->GetFreeCapacity() > INT_MIN) { + this->PushFlow(edge, path, accuracy, UINT_MAX); + if (edge.UnsatisfiedDemand() > 0) demand_left = true; + } + } + this->CleanupPaths(source, paths); + } + } +} + +/** + * Relation that creates a weak order without duplicates. + * Avoid accidentally deleting different paths of the same capacity/distance in + * a set. When the annotation is the same node IDs are compared, so there are + * no equal ranges. + * @tparam T Type to be compared on. + * @param x_anno First value. + * @param y_anno Second value. + * @param x Node id associated with the first value. + * @param y Node id associated with the second value. + */ +template +bool Greater(T x_anno, T y_anno, NodeID x, NodeID y) +{ + if (x_anno > y_anno) return true; + if (x_anno < y_anno) return false; + return x > y; +} + +/** + * Compare two capacity annotations. + * @param x First capacity annotation. + * @param y Second capacity annotation. + * @return If x is better than y. + */ +bool CapacityAnnotation::Comparator::operator()(const CapacityAnnotation *x, + const CapacityAnnotation *y) const +{ + return x != y && Greater(x->GetAnnotation(), y->GetAnnotation(), + x->GetNode(), y->GetNode()); +} + +/** + * Compare two distance annotations. + * @param x First distance annotation. + * @param y Second distance annotation. + * @return If x is better than y. + */ +bool DistanceAnnotation::Comparator::operator()(const DistanceAnnotation *x, + const DistanceAnnotation *y) const +{ + return x != y && !Greater(x->GetAnnotation(), y->GetAnnotation(), + x->GetNode(), y->GetNode()); +} diff --git a/src/linkgraph/mcf.h b/src/linkgraph/mcf.h new file mode 100644 index 000000000..4ad598c57 --- /dev/null +++ b/src/linkgraph/mcf.h @@ -0,0 +1,92 @@ +/** @file mcf.h Declaration of Multi-Commodity-Flow solver */ + +#ifndef MCF_H +#define MCF_H + +#include "linkgraphjob_base.h" +#include + +typedef std::vector PathVector; + +/** + * Multi-commodity flow calculating base class. + */ +class MultiCommodityFlow { +protected: + /** + * Constructor. + * @param job Link graph job being executed. + */ + MultiCommodityFlow(LinkGraphJob &job) : job(job), + max_saturation(job.Settings().short_path_saturation) + {} + + template + void Dijkstra(NodeID from, PathVector &paths); + + uint PushFlow(Edge &edge, Path *path, uint accuracy, uint max_saturation); + + void CleanupPaths(NodeID source, PathVector &paths); + + LinkGraphJob &job; ///< Job we're working with. + uint max_saturation; ///< Maximum saturation for edges. +}; + +/** + * First pass of the MCF calculation. Saturates shortest paths first, creates + * new paths if needed, eliminates cycles. This calculation is of exponential + * complexity in the number of nodes but the constant factors are sufficiently + * small to make it usable for most real-life link graph components. You can + * deal with performance problems that might occur here in multiple ways: + * - The overall accuracy is used here to determine how much flow is assigned + * in each loop. The lower the accuracy, the more flow is assigned, the less + * loops it takes to assign all flow. + * - The short_path_saturation setting determines when this pass stops. The + * lower you set it, the less flow will be assigned in this pass, the less + * time it will take. + * - You can increase the recalculation interval to allow for longer running + * times without creating lags. + */ +class MCF1stPass : public MultiCommodityFlow { +private: + bool EliminateCycles(); + bool EliminateCycles(PathVector &path, NodeID origin_id, NodeID next_id); + void EliminateCycle(PathVector &path, Path *cycle_begin, uint flow); + uint FindCycleFlow(const PathVector &path, const Path *cycle_begin); +public: + MCF1stPass(LinkGraphJob &job); +}; + +/** + * Second pass of the MCF calculation. Saturates paths with most capacity left + * first and doesn't create any paths along edges that haven't been visited in + * the first pass. This is why it doesn't have to do any cycle detection and + * elimination. As cycle detection is the most intense problem in the first + * pass this pass is cheaper. The accuracy is used here, too. + */ +class MCF2ndPass : public MultiCommodityFlow { +public: + MCF2ndPass(LinkGraphJob &job); +}; + +/** + * Link graph handler for MCF. Creates MultiCommodityFlow instance according to + * the template parameter. + */ +template +class MCFHandler : public ComponentHandler { +public: + + /** + * Run the calculation. + * @param graph Component to be calculated. + */ + virtual void Run(LinkGraphJob &job) const { Tpass pass(job); } + + /** + * Destructor. Has to be given because of virtual Run(). + */ + virtual ~MCFHandler() {} +}; + +#endif /* MCF_H */ diff --git a/src/linkgraph/refresh.cpp b/src/linkgraph/refresh.cpp new file mode 100644 index 000000000..d2a3bdda1 --- /dev/null +++ b/src/linkgraph/refresh.cpp @@ -0,0 +1,310 @@ +/* $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 next Order to be processed. + */ +void LinkRefresher::HandleRefit(const Order *next) +{ + this->cargo = next->GetRefitCargo(); + RefitList::iterator refit_it = this->refit_capacities.begin(); + 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; + } + + /* 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 + } + } +} + +/** + * 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 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()) { + SetBit(flags, WAS_REFIT); + this->HandleRefit(next); + } + + /* 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 000000000..eac34266d --- /dev/null +++ b/src/linkgraph/refresh.h @@ -0,0 +1,103 @@ +/* $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. + }; + + /** + * 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); + + void HandleRefit(const Order *next); + 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 593a896b7..cdef1e6a6 100644 --- a/src/main_gui.cpp +++ b/src/main_gui.cpp @@ -29,6 +29,7 @@ #include "company_func.h" #include "toolbar_gui.h" #include "statusbar_gui.h" +#include "linkgraph/linkgraph_gui.h" #include "tilehighlight_func.h" #include "hotkeys.h" @@ -44,6 +45,8 @@ #include "table/sprites.h" #include "table/strings.h" +#include "safeguards.h" + static int _rename_id = 1; static int _rename_what = -1; @@ -76,7 +79,7 @@ void HandleOnEditText(const char *str) uint32 money_c = Clamp(ClampToI32(money), 0, 20000000); // Clamp between 20 million and 0 - /* Give 'id' the money, and substract it from ourself */ + /* Give 'id' the money, and subtract it from ourself */ DoCommandP(0, money_c, _rename_id, CMD_GIVE_MONEY | CMD_MSG(STR_ERROR_INSUFFICIENT_FUNDS), CcGiveMoney, str); break; } @@ -205,13 +208,6 @@ static const struct NWidgetPart _nested_main_window_widgets[] = { NWidget(NWID_VIEWPORT, INVALID_COLOUR, WID_M_VIEWPORT), SetResize(1, 1), }; -static const WindowDesc _main_window_desc( - WDP_MANUAL, 0, 0, - WC_MAIN_WINDOW, WC_NONE, - 0, - _nested_main_window_widgets, lengthof(_nested_main_window_widgets) -); - enum { GHK_QUIT, GHK_ABANDON, @@ -239,14 +235,37 @@ enum { struct MainWindow : Window { - MainWindow() : Window() + uint refresh; + + static const uint LINKGRAPH_REFRESH_PERIOD = 0xff; + static const uint LINKGRAPH_DELAY = 0xf; + + MainWindow(WindowDesc *desc) : Window(desc) { - this->InitNested(&_main_window_desc, 0); + this->InitNested(0); CLRBITS(this->flags, WF_WHITE_BORDER); ResizeWindow(this, _screen.width, _screen.height); NWidgetViewport *nvp = this->GetWidget(WID_M_VIEWPORT); nvp->InitializeViewport(this, TileXY(32, 32), ZOOM_LVL_VIEWPORT); + + this->viewport->overlay = new LinkGraphOverlay(this, WID_M_VIEWPORT, 0, 0, 3); + this->refresh = LINKGRAPH_DELAY; + } + + virtual void OnTick() + { + 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() @@ -269,10 +288,9 @@ struct MainWindow : Window } } - virtual EventState OnKeyPress(uint16 key, uint16 keycode) + virtual EventState OnHotkey(int hotkey) { - int num = CheckHotkeyMatch(global_hotkeys, keycode, this); - if (num == GHK_QUIT) { + if (hotkey == GHK_QUIT) { HandleExitGameRequest(); return ES_HANDLED; } @@ -283,7 +301,7 @@ struct MainWindow : Window * assertions that are hard to trigger and debug */ if (HasModalProgress()) return ES_NOT_HANDLED; - switch (num) { + switch (hotkey) { case GHK_ABANDON: /* No point returning from the main menu to itself */ if (_game_mode == GM_MENU) return ES_HANDLED; @@ -310,13 +328,13 @@ struct MainWindow : Window if (_game_mode == GM_MENU) return ES_NOT_HANDLED; - switch (num) { + switch (hotkey) { case GHK_CENTER: case GHK_CENTER_ZOOM: { Point pt = GetTileBelowCursor(); if (pt.x != -1) { - bool instant = (num == GHK_CENTER_ZOOM && this->viewport->zoom != _settings_client.gui.zoom_min); - if (num == GHK_CENTER_ZOOM) MaxZoomInOut(ZOOM_IN, this); + bool instant = (hotkey == GHK_CENTER_ZOOM && this->viewport->zoom != _settings_client.gui.zoom_min); + if (hotkey == GHK_CENTER_ZOOM) MaxZoomInOut(ZOOM_IN, this); ScrollMainWindowTo(pt.x, pt.y, -1, instant); } break; @@ -350,7 +368,7 @@ struct MainWindow : Window case GHK_TOGGLE_TRANSPARENCY + 7: case GHK_TOGGLE_TRANSPARENCY + 8: /* Transparency toggle hot keys */ - ToggleTransparency((TransparencyOption)(num - GHK_TOGGLE_TRANSPARENCY)); + ToggleTransparency((TransparencyOption)(hotkey - GHK_TOGGLE_TRANSPARENCY)); MarkWholeScreenDirty(); break; @@ -363,7 +381,7 @@ struct MainWindow : Window case GHK_TOGGLE_INVISIBILITY + 6: case GHK_TOGGLE_INVISIBILITY + 7: /* Invisibility toggle hot keys */ - ToggleInvisibilityWithTransparency((TransparencyOption)(num - GHK_TOGGLE_INVISIBILITY)); + ToggleInvisibilityWithTransparency((TransparencyOption)(hotkey - GHK_TOGGLE_INVISIBILITY)); MarkWholeScreenDirty(); break; @@ -416,6 +434,7 @@ struct MainWindow : Window this->viewport->scrollpos_y += ScaleByZoom(delta.y, this->viewport->zoom); this->viewport->dest_scrollpos_x = this->viewport->scrollpos_x; this->viewport->dest_scrollpos_y = this->viewport->scrollpos_y; + this->refresh = LINKGRAPH_DELAY; } virtual void OnMouseWheel(int wheel) @@ -430,6 +449,7 @@ struct MainWindow : Window if (this->viewport != NULL) { NWidgetViewport *nvp = this->GetWidget(WID_M_VIEWPORT); nvp->UpdateViewportCoordinates(this); + this->refresh = LINKGRAPH_DELAY; } } @@ -445,7 +465,7 @@ struct MainWindow : Window InvalidateWindowData(WC_MAIN_TOOLBAR, 0, data, true); } - static Hotkey global_hotkeys[]; + static HotkeyList hotkeys; }; const uint16 _ghk_quit_keys[] = {'Q' | WKC_CTRL, 'Q' | WKC_META, 0}; @@ -455,51 +475,59 @@ const uint16 _ghk_chat_all_keys[] = {WKC_SHIFT | WKC_RETURN, WKC_SHIFT | 'T', 0} const uint16 _ghk_chat_company_keys[] = {WKC_CTRL | WKC_RETURN, WKC_CTRL | 'T', 0}; const uint16 _ghk_chat_server_keys[] = {WKC_CTRL | WKC_SHIFT | WKC_RETURN, WKC_CTRL | WKC_SHIFT | 'T', 0}; -Hotkey MainWindow::global_hotkeys[] = { - Hotkey(_ghk_quit_keys, "quit", GHK_QUIT), - Hotkey(_ghk_abandon_keys, "abandon", GHK_ABANDON), - Hotkey(WKC_BACKQUOTE, "console", GHK_CONSOLE), - Hotkey('B' | WKC_CTRL, "bounding_boxes", GHK_BOUNDING_BOXES), - Hotkey('I' | WKC_CTRL, "dirty_blocks", GHK_DIRTY_BLOCKS), - Hotkey('C', "center", GHK_CENTER), - Hotkey('Z', "center_zoom", GHK_CENTER_ZOOM), - Hotkey(WKC_ESC, "reset_object_to_place", GHK_RESET_OBJECT_TO_PLACE), - Hotkey(WKC_DELETE, "delete_windows", GHK_DELETE_WINDOWS), - Hotkey(WKC_DELETE | WKC_SHIFT, "delete_all_windows", GHK_DELETE_NONVITAL_WINDOWS), - Hotkey('R' | WKC_CTRL, "refresh_screen", GHK_REFRESH_SCREEN), +static Hotkey global_hotkeys[] = { + Hotkey(_ghk_quit_keys, "quit", GHK_QUIT), + Hotkey(_ghk_abandon_keys, "abandon", GHK_ABANDON), + Hotkey(WKC_BACKQUOTE, "console", GHK_CONSOLE), + Hotkey('B' | WKC_CTRL, "bounding_boxes", GHK_BOUNDING_BOXES), + Hotkey('I' | WKC_CTRL, "dirty_blocks", GHK_DIRTY_BLOCKS), + Hotkey('C', "center", GHK_CENTER), + Hotkey('Z', "center_zoom", GHK_CENTER_ZOOM), + Hotkey(WKC_ESC, "reset_object_to_place", GHK_RESET_OBJECT_TO_PLACE), + Hotkey(WKC_DELETE, "delete_windows", GHK_DELETE_WINDOWS), + Hotkey(WKC_DELETE | WKC_SHIFT, "delete_all_windows", GHK_DELETE_NONVITAL_WINDOWS), + Hotkey('R' | WKC_CTRL, "refresh_screen", GHK_REFRESH_SCREEN), #if defined(_DEBUG) - Hotkey('0' | WKC_ALT, "crash_game", GHK_CRASH), - Hotkey('1' | WKC_ALT, "money", GHK_MONEY), - Hotkey('2' | WKC_ALT, "update_coordinates", GHK_UPDATE_COORDS), + Hotkey('0' | WKC_ALT, "crash_game", GHK_CRASH), + Hotkey('1' | WKC_ALT, "money", GHK_MONEY), + Hotkey('2' | WKC_ALT, "update_coordinates", GHK_UPDATE_COORDS), #endif - Hotkey('1' | WKC_CTRL, "transparency_signs", GHK_TOGGLE_TRANSPARENCY), - Hotkey('2' | WKC_CTRL, "transparency_trees", GHK_TOGGLE_TRANSPARENCY + 1), - Hotkey('3' | WKC_CTRL, "transparency_houses", GHK_TOGGLE_TRANSPARENCY + 2), - Hotkey('4' | WKC_CTRL, "transparency_industries", GHK_TOGGLE_TRANSPARENCY + 3), - Hotkey('5' | WKC_CTRL, "transparency_buildings", GHK_TOGGLE_TRANSPARENCY + 4), - Hotkey('6' | WKC_CTRL, "transparency_bridges", GHK_TOGGLE_TRANSPARENCY + 5), - Hotkey('7' | WKC_CTRL, "transparency_structures", GHK_TOGGLE_TRANSPARENCY + 6), - Hotkey('8' | WKC_CTRL, "transparency_catenary", GHK_TOGGLE_TRANSPARENCY + 7), - Hotkey('9' | WKC_CTRL, "transparency_loading", GHK_TOGGLE_TRANSPARENCY + 8), - Hotkey('1' | WKC_CTRL | WKC_SHIFT, "invisibility_signs", GHK_TOGGLE_INVISIBILITY), - Hotkey('2' | WKC_CTRL | WKC_SHIFT, "invisibility_trees", GHK_TOGGLE_INVISIBILITY + 1), - Hotkey('3' | WKC_CTRL | WKC_SHIFT, "invisibility_houses", GHK_TOGGLE_INVISIBILITY + 2), - Hotkey('4' | WKC_CTRL | WKC_SHIFT, "invisibility_industries", GHK_TOGGLE_INVISIBILITY + 3), - Hotkey('5' | WKC_CTRL | WKC_SHIFT, "invisibility_buildings", GHK_TOGGLE_INVISIBILITY + 4), - Hotkey('6' | WKC_CTRL | WKC_SHIFT, "invisibility_bridges", GHK_TOGGLE_INVISIBILITY + 5), - Hotkey('7' | WKC_CTRL | WKC_SHIFT, "invisibility_structures", GHK_TOGGLE_INVISIBILITY + 6), - Hotkey('8' | WKC_CTRL | WKC_SHIFT, "invisibility_catenary", GHK_TOGGLE_INVISIBILITY + 7), - Hotkey('X' | WKC_CTRL, "transparency_toolbar", GHK_TRANSPARENCY_TOOLBAR), - Hotkey('X', "toggle_transparency", GHK_TRANSPARANCY), + Hotkey('1' | WKC_CTRL, "transparency_signs", GHK_TOGGLE_TRANSPARENCY), + Hotkey('2' | WKC_CTRL, "transparency_trees", GHK_TOGGLE_TRANSPARENCY + 1), + Hotkey('3' | WKC_CTRL, "transparency_houses", GHK_TOGGLE_TRANSPARENCY + 2), + Hotkey('4' | WKC_CTRL, "transparency_industries", GHK_TOGGLE_TRANSPARENCY + 3), + Hotkey('5' | WKC_CTRL, "transparency_buildings", GHK_TOGGLE_TRANSPARENCY + 4), + Hotkey('6' | WKC_CTRL, "transparency_bridges", GHK_TOGGLE_TRANSPARENCY + 5), + Hotkey('7' | WKC_CTRL, "transparency_structures", GHK_TOGGLE_TRANSPARENCY + 6), + Hotkey('8' | WKC_CTRL, "transparency_catenary", GHK_TOGGLE_TRANSPARENCY + 7), + Hotkey('9' | WKC_CTRL, "transparency_loading", GHK_TOGGLE_TRANSPARENCY + 8), + Hotkey('1' | WKC_CTRL | WKC_SHIFT, "invisibility_signs", GHK_TOGGLE_INVISIBILITY), + Hotkey('2' | WKC_CTRL | WKC_SHIFT, "invisibility_trees", GHK_TOGGLE_INVISIBILITY + 1), + Hotkey('3' | WKC_CTRL | WKC_SHIFT, "invisibility_houses", GHK_TOGGLE_INVISIBILITY + 2), + Hotkey('4' | WKC_CTRL | WKC_SHIFT, "invisibility_industries", GHK_TOGGLE_INVISIBILITY + 3), + Hotkey('5' | WKC_CTRL | WKC_SHIFT, "invisibility_buildings", GHK_TOGGLE_INVISIBILITY + 4), + Hotkey('6' | WKC_CTRL | WKC_SHIFT, "invisibility_bridges", GHK_TOGGLE_INVISIBILITY + 5), + Hotkey('7' | WKC_CTRL | WKC_SHIFT, "invisibility_structures", GHK_TOGGLE_INVISIBILITY + 6), + Hotkey('8' | WKC_CTRL | WKC_SHIFT, "invisibility_catenary", GHK_TOGGLE_INVISIBILITY + 7), + Hotkey('X' | WKC_CTRL, "transparency_toolbar", GHK_TRANSPARENCY_TOOLBAR), + Hotkey('X', "toggle_transparency", GHK_TRANSPARANCY), #ifdef ENABLE_NETWORK - Hotkey(_ghk_chat_keys, "chat", GHK_CHAT), - Hotkey(_ghk_chat_all_keys, "chat_all", GHK_CHAT_ALL), - Hotkey(_ghk_chat_company_keys, "chat_company", GHK_CHAT_COMPANY), - Hotkey(_ghk_chat_server_keys, "chat_server", GHK_CHAT_SERVER), + Hotkey(_ghk_chat_keys, "chat", GHK_CHAT), + Hotkey(_ghk_chat_all_keys, "chat_all", GHK_CHAT_ALL), + Hotkey(_ghk_chat_company_keys, "chat_company", GHK_CHAT_COMPANY), + Hotkey(_ghk_chat_server_keys, "chat_server", GHK_CHAT_SERVER), #endif - HOTKEY_LIST_END(MainWindow) + HOTKEY_LIST_END }; -Hotkey *_global_hotkeys = MainWindow::global_hotkeys; +HotkeyList MainWindow::hotkeys("global", global_hotkeys); + +static WindowDesc _main_window_desc( + WDP_MANUAL, NULL, 0, 0, + WC_MAIN_WINDOW, WC_NONE, + 0, + _nested_main_window_widgets, lengthof(_nested_main_window_widgets), + &MainWindow::hotkeys +); /** * Does the given keycode match one of the keycodes bound to 'quit game'? @@ -508,7 +536,7 @@ Hotkey *_global_hotkeys = MainWindow::global_hotkeys; */ bool IsQuitKey(uint16 keycode) { - int num = CheckHotkeyMatch(_global_hotkeys, keycode, NULL); + int num = MainWindow::hotkeys.CheckMatch(keycode); return num == GHK_QUIT; } @@ -527,7 +555,7 @@ void SetupColoursAndInitialWindow() memcpy(_colour_gradient[i], b + 0xC6, sizeof(_colour_gradient[i])); } - new MainWindow; + new MainWindow(&_main_window_desc); /* XXX: these are not done */ switch (_game_mode) { diff --git a/src/map.cpp b/src/map.cpp index 1ee0ba247..252f20b60 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_func.h b/src/map_func.h index 105090fd8..9198c2cd1 100644 --- a/src/map_func.h +++ b/src/map_func.h @@ -146,7 +146,7 @@ static inline uint ScaleByMapSize1D(uint n) /** * An offset value between to tiles. * - * This value is used fro the difference between + * This value is used for the difference between * to tiles. It can be added to a tileindex to get * the resulting tileindex of the start tile applied * with this saved difference. diff --git a/src/map_type.h b/src/map_type.h index c55f77c80..3add9e64a 100644 --- a/src/map_type.h +++ b/src/map_type.h @@ -59,9 +59,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 c967d5369..d9d506993 100644 --- a/src/misc.cpp +++ b/src/misc.cpp @@ -27,6 +27,9 @@ #include "window_func.h" #include "core/pool_type.hpp" #include "game/game.hpp" +#include "linkgraph/linkgraphschedule.h" + +#include "safeguards.h" extern TileIndex _cur_tileloop_tile; @@ -68,6 +71,7 @@ void InitializeGame(uint size_x, uint size_y, bool reset_date, bool reset_settin InitializeOldNames(); } + LinkGraphSchedule::Clear(); PoolBase::Clean(PT_NORMAL); ResetPersistentNewGRFData(); diff --git a/src/misc/binaryheap.hpp b/src/misc/binaryheap.hpp index 0a2e02ed0..092ab720b 100644 --- a/src/misc/binaryheap.hpp +++ b/src/misc/binaryheap.hpp @@ -44,7 +44,7 @@ * implementation. * * @par - * For further information about the Binary Heap algotithm, see + * For further information about the Binary Heap algorithm, see * http://www.policyalmanac.org/games/binaryHeaps.htm * * @tparam T Type of the items stored in the binary heap @@ -187,7 +187,7 @@ class CBinaryHeapT { /** * Get the LAST item in the binary tree. * - * @note The last item is not neccesary the biggest! + * @note The last item is not necessary the biggest! * * @return The last item */ @@ -266,7 +266,7 @@ class CBinaryHeapT { /** * Search for an item in the priority queue. - * Matching is done by comparing adress of the + * Matching is done by comparing address of the * item. * * @param item The reference to the item diff --git a/src/misc/blob.hpp b/src/misc/blob.hpp index 0b14a7eae..bf936934b 100644 --- a/src/misc/blob.hpp +++ b/src/misc/blob.hpp @@ -31,7 +31,7 @@ * Always, when it allocates memory the allocated size is: * sizeof(BlobHeader) + * 3. Two 'virtual' members (items and capacity) are stored in the BlobHeader at beginning - * of the alloated block. + * of the allocated block. * 4. The pointer of the union pobsize_ts behind the header (to the first data byte). * When memory block is allocated, the sizeof(BlobHeader) it added to it. * 5. Benefits of this layout: diff --git a/src/misc/countedobj.cpp b/src/misc/countedobj.cpp index 228b35e82..28f614afa 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/countedptr.hpp b/src/misc/countedptr.hpp index 0187422df..5dfc9a74c 100644 --- a/src/misc/countedptr.hpp +++ b/src/misc/countedptr.hpp @@ -140,7 +140,7 @@ template struct AdaptT { /** * Simple counted object. Use it as base of your struct/class if you want to use * basic reference counting. Your struct/class will destroy and free itself when - * last reference to it is released (using Relese() method). The initial reference + * last reference to it is released (using Release() method). The initial reference * count (when it is created) is zero (don't forget AddRef() at least one time if * not using CCountedPtr. * diff --git a/src/misc/dbg_helpers.cpp b/src/misc/dbg_helpers.cpp index f87070fa0..a80230de1 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 6ca9a1bfc..7859594dd 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 b109b4e82..b982913fc 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 7f0dbc168..e7da13c7a 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,10 +207,42 @@ 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 - * companies if you have paid off your loan (either explicitely, or implicitely + * companies if you have paid off your loan (either explicitly, or implicitly * given the fact that you have more money than loan). * @param tile unused * @param flags operation to perform diff --git a/src/misc_gui.cpp b/src/misc_gui.cpp index 9c90b927a..8810c2c0e 100644 --- a/src/misc_gui.cpp +++ b/src/misc_gui.cpp @@ -30,12 +30,14 @@ #include "table/strings.h" +#include "safeguards.h" + /** Method to open the OSK. */ enum OskActivation { OSKA_DISABLED, ///< The OSK shall not be activated at all. OSKA_DOUBLE_CLICK, ///< Double click on the edit box opens OSK. OSKA_SINGLE_CLICK, ///< Single click after focus click opens OSK. - OSKA_IMMEDIATELY, ///< Focussing click already opens OSK. + OSKA_IMMEDIATELY, ///< Focusing click already opens OSK. }; @@ -48,8 +50,8 @@ static const NWidgetPart _nested_land_info_widgets[] = { NWidget(WWT_PANEL, COLOUR_GREY, WID_LI_BACKGROUND), EndContainer(), }; -static const WindowDesc _land_info_desc( - WDP_AUTO, 0, 0, +static WindowDesc _land_info_desc( + WDP_AUTO, "land_info", 0, 0, WC_LAND_INFO, WC_NONE, 0, _nested_land_info_widgets, lengthof(_nested_land_info_widgets) @@ -57,7 +59,7 @@ static const 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, }; @@ -110,9 +112,9 @@ class LandInfoWindow : public Window { } } - LandInfoWindow(TileIndex tile) : Window(), tile(tile) + LandInfoWindow(TileIndex tile) : Window(&_land_info_desc), tile(tile) { - this->InitNested(&_land_info_desc); + this->InitNested(); #if defined(_DEBUG) # define LANDINFOD_LEVEL 0 @@ -159,6 +161,7 @@ class LandInfoWindow : public Window { td.airport_name = STR_NULL; td.airport_tile_name = STR_NULL; td.rail_speed = 0; + td.road_speed = 0; td.grf = NULL; @@ -208,7 +211,7 @@ class LandInfoWindow : public Window { /* 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 +277,13 @@ class LandInfoWindow : public Window { 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); @@ -365,8 +375,8 @@ static const NWidgetPart _nested_about_widgets[] = { EndContainer(), }; -static const WindowDesc _about_desc( - WDP_CENTER, 0, 0, +static WindowDesc _about_desc( + WDP_CENTER, NULL, 0, 0, WC_GAME_OPTIONS, WC_NONE, 0, _nested_about_widgets, lengthof(_nested_about_widgets) @@ -381,6 +391,7 @@ static const char * const _credits[] = { " 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", @@ -410,7 +421,7 @@ static const char * const _credits[] = { "", "Special thanks go out to:", " Josef Drexler - For his great work on TTDPatch", - " Marcin Grzegorczyk - For describing Transport Tycoon Deluxe internals", + " 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", @@ -425,7 +436,6 @@ static const char * const _credits[] = { " George - Canal/Lock graphics \xC2\xA9 2003-2004", " Andrew Parkhouse (andythenorth) - River graphics", " David Dallaston (Pikka) - Tram tracks", - " Marcin Grzegorczyk - Foundations for tracks on slopes", " All Translators - Who made OpenTTD a truly international game", " Bug Reporters - Without whom OpenTTD would still be full of bugs!", "", @@ -440,9 +450,9 @@ struct AboutWindow : public Window { int line_height; ///< The height of a single line static const int num_visible_lines = 19; ///< The number of lines visible simultaneously - AboutWindow() : Window() + AboutWindow() : Window(&_about_desc) { - this->InitNested(&_about_desc, WN_GAME_OPTIONS_ABOUT); + this->InitNested(WN_GAME_OPTIONS_ABOUT); this->counter = 5; this->text_position = this->GetWidget(WID_A_SCROLLING_TEXT)->pos_y + this->GetWidget(WID_A_SCROLLING_TEXT)->current_y; @@ -544,17 +554,28 @@ void ShowCostOrIncomeAnimation(int x, int y, int z, Money cost) /** * Display animated feeder income. - * @param x World X position of the animation location. - * @param y World Y position of the animation location. - * @param z World Z position of the animation location. - * @param cost Estimated feeder income. + * @param x World X position of the animation location. + * @param y World Y position of the animation location. + * @param z World Z position of the animation location. + * @param transfer Estimated feeder income. + * @param income Real income from goods being delivered to their final destination. */ -void ShowFeederIncomeAnimation(int x, int y, int z, Money cost) +void ShowFeederIncomeAnimation(int x, int y, int z, Money transfer, Money income) { Point pt = RemapCoords(x, y, z); - SetDParam(0, cost); - AddTextEffect(STR_FEEDER, pt.x, pt.y, DAY_TICKS, TE_RISING); + SetDParam(0, transfer); + if (income == 0) { + AddTextEffect(STR_FEEDER, pt.x, pt.y, DAY_TICKS, TE_RISING); + } else { + StringID msg = STR_FEEDER_COST; + if (income < 0) { + income = -income; + msg = STR_FEEDER_INCOME; + } + SetDParam(1, income); + AddTextEffect(msg, pt.x, pt.y, DAY_TICKS, TE_RISING); + } } /** @@ -605,8 +626,8 @@ static const NWidgetPart _nested_tooltips_widgets[] = { NWidget(WWT_PANEL, COLOUR_GREY, WID_TT_BACKGROUND), SetMinimalSize(200, 32), EndContainer(), }; -static const WindowDesc _tool_tips_desc( - WDP_MANUAL, 0, 0, // Coordinates and sizes are not used, +static WindowDesc _tool_tips_desc( + WDP_MANUAL, NULL, 0, 0, // Coordinates and sizes are not used, WC_TOOLTIPS, WC_NONE, 0, _nested_tooltips_widgets, lengthof(_nested_tooltips_widgets) @@ -620,7 +641,7 @@ struct TooltipsWindow : public Window uint64 params[5]; ///< The string parameters. TooltipCloseCondition close_cond; ///< Condition for closing the window. - TooltipsWindow(Window *parent, StringID str, uint paramcount, const uint64 params[], TooltipCloseCondition close_tooltip) : Window() + TooltipsWindow(Window *parent, StringID str, uint paramcount, const uint64 params[], TooltipCloseCondition close_tooltip) : Window(&_tool_tips_desc) { this->parent = parent; this->string_id = str; @@ -630,12 +651,12 @@ struct TooltipsWindow : public Window this->paramcount = paramcount; this->close_cond = close_tooltip; - this->InitNested(&_tool_tips_desc); + this->InitNested(); CLRBITS(this->flags, WF_WHITE_BORDER); } - virtual Point OnInitialPosition(const WindowDesc *desc, int16 sm_width, int16 sm_height, int window_number) + virtual Point OnInitialPosition(int16 sm_width, int16 sm_height, int window_number) { /* Find the free screen space between the main toolbar at the top, and the statusbar at the bottom. * Add a fixed distance 2 so the tooltip floats free from both bars. @@ -704,7 +725,7 @@ struct TooltipsWindow : public Window * @param str String to be displayed * @param paramcount number of params to deal with * @param params (optional) up to 5 pieces of additional information that may be added to a tooltip - * @param use_left_mouse_button close the tooltip when the left (true) or right (false) mousebutton is released + * @param use_left_mouse_button close the tooltip when the left (true) or right (false) mouse button is released */ void GuiShowTooltips(Window *parent, StringID str, uint paramcount, const uint64 params[], TooltipCloseCondition close_tooltip) { @@ -715,56 +736,6 @@ void GuiShowTooltips(Window *parent, StringID str, uint paramcount, const uint64 new TooltipsWindow(parent, str, paramcount, params, close_tooltip); } -HandleEditBoxResult QueryString::HandleEditBoxKey(Window *w, int wid, uint16 key, uint16 keycode, EventState &state) -{ - if (!w->IsWidgetGloballyFocused(wid)) return HEBR_NOT_FOCUSED; - - state = ES_HANDLED; - - bool edited = false; - - switch (keycode) { - case WKC_ESC: return HEBR_CANCEL; - - case WKC_RETURN: case WKC_NUM_ENTER: return HEBR_CONFIRM; - -#ifdef WITH_COCOA - case (WKC_META | 'V'): -#endif - case (WKC_CTRL | 'V'): - edited = this->text.InsertClipboard(); - break; - -#ifdef WITH_COCOA - case (WKC_META | 'U'): -#endif - case (WKC_CTRL | 'U'): - this->text.DeleteAll(); - edited = true; - break; - - case WKC_BACKSPACE: case WKC_DELETE: - case WKC_CTRL | WKC_BACKSPACE: case WKC_CTRL | WKC_DELETE: - edited = this->text.DeleteChar(keycode); - break; - - case WKC_LEFT: case WKC_RIGHT: case WKC_END: case WKC_HOME: - case WKC_CTRL | WKC_LEFT: case WKC_CTRL | WKC_RIGHT: - this->text.MovePos(keycode); - break; - - default: - if (IsValidChar(key, this->afilter)) { - edited = this->text.InsertChar(key); - } else { - state = ES_NOT_HANDLED; - } - break; - } - - return edited ? HEBR_EDITING : HEBR_CURSOR; -} - void QueryString::HandleEditBox(Window *w, int wid) { if (w->IsWidgetGloballyFocused(wid) && this->text.HandleCaret()) { @@ -814,6 +785,9 @@ void QueryString::DrawEditBox(const Window *w, int wid) const if (tb->caretxoffs + delta < 0) delta = -tb->caretxoffs; + /* If we have a marked area, draw a background highlight. */ + if (tb->marklength != 0) GfxFillRect(delta + tb->markxoffs, 0, delta + tb->markxoffs + tb->marklength - 1, bottom - top, PC_GREY); + DrawString(delta, tb->pixels, 0, tb->buf, TC_YELLOW); bool focussed = w->IsWidgetGloballyFocused(wid) || IsOSKOpenedFor(w, wid); if (focussed && tb->caret) { @@ -824,6 +798,105 @@ void QueryString::DrawEditBox(const Window *w, int wid) const _cur_dpi = old_dpi; } +/** + * Get the current caret position. + * @param w Window the edit box is in. + * @param wid Widget index. + * @return Top-left location of the caret, relative to the window. + */ +Point QueryString::GetCaretPosition(const Window *w, int wid) const +{ + const NWidgetLeaf *wi = w->GetWidget(wid); + + assert((wi->type & WWT_MASK) == WWT_EDITBOX); + + bool rtl = _current_text_dir == TD_RTL; + Dimension sprite_size = GetSpriteSize(rtl ? SPR_IMG_DELETE_RIGHT : SPR_IMG_DELETE_LEFT); + int clearbtn_width = sprite_size.width + WD_IMGBTN_LEFT + WD_IMGBTN_RIGHT; + + int left = wi->pos_x + (rtl ? clearbtn_width : 0); + int right = wi->pos_x + (rtl ? wi->current_x : wi->current_x - clearbtn_width) - 1; + + /* Clamp caret position to be inside out current width. */ + const Textbuf *tb = &this->text; + int delta = min(0, (right - left) - tb->pixels - 10); + if (tb->caretxoffs + delta < 0) delta = -tb->caretxoffs; + + Point pt = {left + WD_FRAMERECT_LEFT + tb->caretxoffs + delta, wi->pos_y + WD_FRAMERECT_TOP}; + return pt; +} + +/** + * Get the bounding rectangle for a range of the query string. + * @param w Window the edit box is in. + * @param wid Widget index. + * @param from Start of the string range. + * @param to End of the string range. + * @return Rectangle encompassing the string range, relative to the window. + */ +Rect QueryString::GetBoundingRect(const Window *w, int wid, const char *from, const char *to) const +{ + const NWidgetLeaf *wi = w->GetWidget(wid); + + assert((wi->type & WWT_MASK) == WWT_EDITBOX); + + bool rtl = _current_text_dir == TD_RTL; + Dimension sprite_size = GetSpriteSize(rtl ? SPR_IMG_DELETE_RIGHT : SPR_IMG_DELETE_LEFT); + int clearbtn_width = sprite_size.width + WD_IMGBTN_LEFT + WD_IMGBTN_RIGHT; + + int left = wi->pos_x + (rtl ? clearbtn_width : 0); + int right = wi->pos_x + (rtl ? wi->current_x : wi->current_x - clearbtn_width) - 1; + + int top = wi->pos_y + WD_FRAMERECT_TOP; + int bottom = wi->pos_y + wi->current_y - 1 - WD_FRAMERECT_BOTTOM; + + /* Clamp caret position to be inside our current width. */ + const Textbuf *tb = &this->text; + int delta = min(0, (right - left) - tb->pixels - 10); + if (tb->caretxoffs + delta < 0) delta = -tb->caretxoffs; + + /* Get location of first and last character. */ + Point p1 = GetCharPosInString(tb->buf, from, FS_NORMAL); + Point p2 = from != to ? GetCharPosInString(tb->buf, to, FS_NORMAL) : p1; + + Rect r = { Clamp(left + p1.x + delta + WD_FRAMERECT_LEFT, left, right), top, Clamp(left + p2.x + delta + WD_FRAMERECT_LEFT, left, right - WD_FRAMERECT_RIGHT), bottom }; + + return r; +} + +/** + * Get the character that is rendered at a position. + * @param w Window the edit box is in. + * @param wid Widget index. + * @param pt Position to test. + * @return Pointer to the character at the position or NULL if no character is at the position. + */ +const char *QueryString::GetCharAtPosition(const Window *w, int wid, const Point &pt) const +{ + const NWidgetLeaf *wi = w->GetWidget(wid); + + assert((wi->type & WWT_MASK) == WWT_EDITBOX); + + bool rtl = _current_text_dir == TD_RTL; + Dimension sprite_size = GetSpriteSize(rtl ? SPR_IMG_DELETE_RIGHT : SPR_IMG_DELETE_LEFT); + int clearbtn_width = sprite_size.width + WD_IMGBTN_LEFT + WD_IMGBTN_RIGHT; + + int left = wi->pos_x + (rtl ? clearbtn_width : 0); + int right = wi->pos_x + (rtl ? wi->current_x : wi->current_x - clearbtn_width) - 1; + + int top = wi->pos_y + WD_FRAMERECT_TOP; + int bottom = wi->pos_y + wi->current_y - 1 - WD_FRAMERECT_BOTTOM; + + if (!IsInsideMM(pt.y, top, bottom)) return NULL; + + /* Clamp caret position to be inside our current width. */ + const Textbuf *tb = &this->text; + int delta = min(0, (right - left) - tb->pixels - 10); + if (tb->caretxoffs + delta < 0) delta = -tb->caretxoffs; + + return ::GetCharAtPosition(tb->buf, pt.x - delta - left); +} + void QueryString::ClickEditBox(Window *w, Point pt, int wid, int click_count, bool focus_changed) { const NWidgetLeaf *wi = w->GetWidget(wid); @@ -858,8 +931,8 @@ struct QueryStringWindow : public Window QueryString editbox; ///< Editbox. QueryStringFlags flags; ///< Flags controlling behaviour of the window. - QueryStringWindow(StringID str, StringID caption, uint max_bytes, uint max_chars, const WindowDesc *desc, Window *parent, CharSetFilter afilter, QueryStringFlags flags) : - editbox(max_bytes, max_chars) + QueryStringWindow(StringID str, StringID caption, uint max_bytes, uint max_chars, WindowDesc *desc, Window *parent, CharSetFilter afilter, QueryStringFlags flags) : + Window(desc), editbox(max_bytes, max_chars) { char *last_of = &this->editbox.text.buf[this->editbox.text.max_bytes - 1]; GetString(this->editbox.text.buf, str, last_of); @@ -873,16 +946,16 @@ 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; this->editbox.cancel_button = WID_QS_CANCEL; this->editbox.ok_button = WID_QS_OK; - this->editbox.afilter = afilter; + this->editbox.text.afilter = afilter; this->flags = flags; - this->InitNested(desc, WN_QUERY_STRING); + this->InitNested(WN_QUERY_STRING); this->parent = parent; @@ -958,8 +1031,8 @@ static const NWidgetPart _nested_query_string_widgets[] = { EndContainer(), }; -static const WindowDesc _query_string_desc( - WDP_CENTER, 0, 0, +static WindowDesc _query_string_desc( + WDP_CENTER, "query_string", 0, 0, WC_QUERY_STRING, WC_NONE, 0, _nested_query_string_widgets, lengthof(_nested_query_string_widgets) @@ -990,7 +1063,7 @@ struct QueryWindow : public Window { StringID message; ///< message shown for query window StringID caption; ///< title of window - QueryWindow(const WindowDesc *desc, StringID caption, StringID message, Window *parent, QueryCallbackProc *callback) : Window() + QueryWindow(WindowDesc *desc, StringID caption, StringID message, Window *parent, QueryCallbackProc *callback) : Window(desc) { /* Create a backup of the variadic arguments to strings because it will be * overridden pretty often. We will copy these back for drawing */ @@ -999,7 +1072,7 @@ struct QueryWindow : public Window { this->message = message; this->proc = callback; - this->InitNested(desc, WN_CONFIRM_POPUP_QUERY); + this->InitNested(WN_CONFIRM_POPUP_QUERY); this->parent = parent; this->left = parent->left + (parent->width / 2) - (this->width / 2); @@ -1066,7 +1139,7 @@ struct QueryWindow : public Window { } } - virtual EventState OnKeyPress(uint16 key, uint16 keycode) + virtual EventState OnKeyPress(WChar key, uint16 keycode) { /* ESC closes the window, Enter confirms the action */ switch (keycode) { @@ -1099,8 +1172,8 @@ static const NWidgetPart _nested_query_widgets[] = { EndContainer(), }; -static const WindowDesc _query_desc( - WDP_CENTER, 0, 0, +static WindowDesc _query_desc( + WDP_CENTER, NULL, 0, 0, WC_CONFIRM_POPUP_QUERY, WC_NONE, WDF_MODAL, _nested_query_widgets, lengthof(_nested_query_widgets) diff --git a/src/mixer.cpp b/src/mixer.cpp index 401a9c0ba..5945bd235 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 55599a947..4001e621e 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 955182590..77b488186 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 2160c396e..69cf59569 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 @@ class MusicDriver_Allegro: public MusicDriver { }; /** 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 5ee62dfe5..2bc207476 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 1b280e667..23c6249d5 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 @@ class MusicDriver_BeMidi: public MusicDriver { }; /** 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 e7c7d6b75..a201984ae 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 f3cff9db8..1963bef5b 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 @@ class MusicDriver_Cocoa: public MusicDriver { /* 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 cb255e7c0..40ce69d1a 100644 --- a/src/music/dmusic.cpp +++ b/src/music/dmusic.cpp @@ -18,6 +18,7 @@ #endif #include "../debug.h" #include "../os/windows/win32.h" +#include "../core/mem_func.hpp" #include "dmusic.h" #include @@ -26,8 +27,13 @@ #include #include +#include "../safeguards.h" + static FMusicDriver_DMusic iFMusicDriver_DMusic; +/** the direct music object manages buffers and ports */ +static IDirectMusic *music = NULL; + /** the performance object controls manipulation of the segments */ static IDirectMusicPerformance *performance = NULL; @@ -82,27 +88,80 @@ const char *MusicDriver_DMusic::Start(const char * const *parm) IID_IDirectMusicPerformance, (LPVOID*)&performance ))) { - proc.CoUninitialize(); return "Failed to create the performance object"; } /* initialize it */ - if (FAILED(performance->Init(NULL, NULL, NULL))) { - performance->Release(); - performance = NULL; - proc.CoUninitialize(); + if (FAILED(performance->Init(&music, NULL, NULL))) { return "Failed to initialize performance object"; } - /* choose default Windows synth */ - if (FAILED(performance->AddPort(NULL))) { - performance->CloseDown(); - performance->Release(); - performance = NULL; - proc.CoUninitialize(); + int port = GetDriverParamInt(parm, "port", -1); + +#ifndef NO_DEBUG_MESSAGES + if (_debug_driver_level > 0) { + /* Print all valid output ports. */ + char desc[DMUS_MAX_DESCRIPTION]; + + DMUS_PORTCAPS caps; + MemSetT(&caps, 0); + caps.dwSize = sizeof(DMUS_PORTCAPS); + + DEBUG(driver, 1, "Detected DirectMusic ports:"); + for (int i = 0; music->EnumPort(i, &caps) == S_OK; i++) { + if (caps.dwClass == DMUS_PC_OUTPUTCLASS) { + /* Description is UNICODE even for ANSI build. */ + DEBUG(driver, 1, " %d: %s%s", i, convert_from_fs(caps.wszDescription, desc, lengthof(desc)), i == port ? " (selected)" : ""); + } + } + } +#endif + + IDirectMusicPort *music_port = NULL; // NULL means 'use default port'. + + if (port >= 0) { + /* Check if the passed port is a valid port. */ + DMUS_PORTCAPS caps; + MemSetT(&caps, 0); + caps.dwSize = sizeof(DMUS_PORTCAPS); + if (FAILED(music->EnumPort(port, &caps))) return "Supplied port parameter is not a valid port"; + if (caps.dwClass != DMUS_PC_OUTPUTCLASS) return "Supplied port parameter is not an output port"; + + /* Create new port. */ + DMUS_PORTPARAMS params; + MemSetT(¶ms, 0); + params.dwSize = sizeof(DMUS_PORTPARAMS); + params.dwValidParams = DMUS_PORTPARAMS_CHANNELGROUPS; + params.dwChannelGroups = 1; + + if (FAILED(music->CreatePort(caps.guidPort, ¶ms, &music_port, NULL))) { + return "Failed to create port"; + } + + /* Activate port. */ + if (FAILED(music_port->Activate(TRUE))) { + music_port->Release(); + return "Failed to activate port"; + } + } + + /* Add port to performance. */ + if (FAILED(performance->AddPort(music_port))) { + if (music_port != NULL) music_port->Release(); return "AddPort failed"; } + /* Assign a performance channel block to the performance if we added + * a custom port to the performance. */ + if (music_port != NULL) { + if (FAILED(performance->AssignPChannelBlock(0, music_port, 1))) { + music_port->Release(); + return "Failed to assign PChannel block"; + } + /* We don't need the port anymore. */ + music_port->Release(); + } + /* create the loader object; this will be used to load the MIDI file */ if (FAILED(proc.CoCreateInstance( CLSID_DirectMusicLoader, @@ -111,10 +170,6 @@ const char *MusicDriver_DMusic::Start(const char * const *parm) IID_IDirectMusicLoader, (LPVOID*)&loader ))) { - performance->CloseDown(); - performance->Release(); - performance = NULL; - proc.CoUninitialize(); return "Failed to create loader object"; } @@ -122,6 +177,12 @@ const char *MusicDriver_DMusic::Start(const char * const *parm) } +MusicDriver_DMusic::~MusicDriver_DMusic() +{ + this->Stop(); +} + + void MusicDriver_DMusic::Stop() { seeking = false; @@ -134,6 +195,11 @@ void MusicDriver_DMusic::Stop() segment = NULL; } + if (music != NULL) { + music->Release(); + music = NULL; + } + if (performance != NULL) { performance->CloseDown(); performance->Release(); diff --git a/src/music/dmusic.h b/src/music/dmusic.h index b3fc99610..7287623e4 100644 --- a/src/music/dmusic.h +++ b/src/music/dmusic.h @@ -15,8 +15,10 @@ #include "music_driver.hpp" /** Music player making use of DirectX. */ -class MusicDriver_DMusic: public MusicDriver { +class MusicDriver_DMusic : public MusicDriver { public: + virtual ~MusicDriver_DMusic(); + /* virtual */ const char *Start(const char * const *param); /* virtual */ void Stop(); @@ -32,12 +34,10 @@ class MusicDriver_DMusic: public MusicDriver { }; /** 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 93492aa99..f4a35360c 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 1638c78f5..c6a9e08f8 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 @@ class MusicDriver_ExtMidi: public MusicDriver { /* 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 92f17212c..1cb2adc0f 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 4f9343619..abe17e770 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 @@ class MusicDriver_LibTimidity: public MusicDriver { }; /** 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 70a1e37a5..be09d3ea2 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 @@ class MusicDriver: public Driver { * @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 cb42a906a..90d08d04a 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 babfd3775..df9f7d80d 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 @@ class MusicDriver_Null: public MusicDriver { }; /** 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 ec1fca264..d7fb97d2d 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 054526e59..f35e2fdcf 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 @@ class MusicDriver_OS2: public MusicDriver { }; /** 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 d938d37bf..dfd6f16eb 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; @@ -78,7 +80,7 @@ static void SetMIDITypeIfNeeded(const FSRef *ref) * * @param *path String with the path of an existing MIDI file. * @param *moov Pointer to a @c Movie where the result will be stored. - * @return Wether the file was loaded and the @c Movie successfully created. + * @return Whether the file was loaded and the @c Movie successfully created. */ static bool LoadMovieForMIDIFile(const char *path, Movie *moov) { @@ -99,7 +101,7 @@ static bool LoadMovieForMIDIFile(const char *path, Movie *moov) * XXX Manual check for MIDI header ('MThd'), as I don't know how to make * QuickTime load MIDI files without a .mid suffix without knowing it's * a MIDI file and setting the OSType of the file to the 'Midi' value. - * Perhahaps ugly, but it seems that it does the Right Thing(tm). + * Perhaps ugly, but it seems that it does the Right Thing(tm). */ fd = open(path, O_RDONLY, 0); if (fd == -1) return false; @@ -192,7 +194,7 @@ const char *MusicDriver_QtMidi::Start(const char * const *parm) /** - * Checks wether the player is active. + * Checks whether the player is active. * * This function is called at regular intervals from OpenTTD's main loop, so * we call @c MoviesTask() from here to let QuickTime do its work. diff --git a/src/music/qtmidi.h b/src/music/qtmidi.h index 806a3c196..f0e17086e 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 @@ class MusicDriver_QtMidi: public MusicDriver { /* 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 65ffbbc6b..d3a7019a0 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 cf46fbc15..3efee3243 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 @@ class MusicDriver_Win32: public MusicDriver { }; /** 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 72ed9f907..1a6a4ca20 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); } @@ -271,7 +273,7 @@ void MusicLoop() if (!_song_is_active) return; - if (!_music_driver->IsSongPlaying()) { + if (!MusicDriver::GetInstance()->IsSongPlaying()) { if (_game_mode != GM_MENU) { StopMusic(); SkipToNextSong(); @@ -290,9 +292,9 @@ static void SelectPlaylist(byte list) } struct MusicTrackSelectionWindow : public Window { - MusicTrackSelectionWindow(const WindowDesc *desc, WindowNumber number) : Window() + MusicTrackSelectionWindow(WindowDesc *desc, WindowNumber number) : Window(desc) { - this->InitNested(desc, number); + this->InitNested(number); this->LowerWidget(WID_MTS_LIST_LEFT); this->LowerWidget(WID_MTS_LIST_RIGHT); this->SetWidgetDisabledState(WID_MTS_CLEAR, _settings_client.music.playlist <= 3); @@ -495,8 +497,8 @@ static const NWidgetPart _nested_music_track_selection_widgets[] = { EndContainer(), }; -static const WindowDesc _music_track_selection_desc( - WDP_AUTO, 0, 0, +static WindowDesc _music_track_selection_desc( + WDP_AUTO, "music_track", 0, 0, WC_MUSIC_TRACK_SELECTION, WC_NONE, 0, _nested_music_track_selection_widgets, lengthof(_nested_music_track_selection_widgets) @@ -510,9 +512,9 @@ static void ShowMusicTrackSelection() struct MusicWindow : public Window { static const int slider_width = 3; - MusicWindow(const WindowDesc *desc, WindowNumber number) : Window() + MusicWindow(WindowDesc *desc, WindowNumber number) : Window(desc) { - this->InitNested(desc, number); + this->InitNested(number); this->LowerWidget(_settings_client.music.playlist + WID_M_ALL); this->SetWidgetLoweredState(WID_M_SHUFFLE, _settings_client.music.shuffle); } @@ -682,6 +684,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), @@ -758,8 +762,8 @@ static const NWidgetPart _nested_music_window_widgets[] = { EndContainer(), }; -static const WindowDesc _music_window_desc( - WDP_AUTO, 0, 0, +static WindowDesc _music_window_desc( + WDP_AUTO, "music", 0, 0, WC_MUSIC_WINDOW, WC_NONE, 0, _nested_music_window_widgets, lengthof(_nested_music_window_widgets) diff --git a/src/network/core/address.cpp b/src/network/core/address.cpp index 3b3c9f4aa..d25ade4a3 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. @@ -259,7 +261,7 @@ SOCKET NetworkAddress::Resolve(int family, int socktype, int flags, SocketList * for (struct addrinfo *runp = ai; runp != NULL; runp = runp->ai_next) { /* When we are binding to multiple sockets, make sure we do not * connect to one with exactly the same address twice. That's - * ofcourse totally unneeded ;) */ + * of course totally unneeded ;) */ if (sockets != NULL) { NetworkAddress address(runp->ai_addr, (int)runp->ai_addrlen); if (sockets->Contains(address)) continue; diff --git a/src/network/core/config.h b/src/network/core/config.h index cbe4f5d74..93f75e377 100644 --- a/src/network/core/config.h +++ b/src/network/core/config.h @@ -25,33 +25,33 @@ static const char * const NETWORK_CONTENT_MIRROR_URL = "/bananas"; /** Message sent to the masterserver to 'identify' this client as OpenTTD */ static const char * const NETWORK_MASTER_SERVER_WELCOME_MESSAGE = "OpenTTDRegister"; -static const uint16 NETWORK_MASTER_SERVER_PORT = 3978; ///< The default port of the master server (UDP) -static const uint16 NETWORK_CONTENT_SERVER_PORT = 3978; ///< The default port of the content server (TCP) -static const uint16 NETWORK_CONTENT_MIRROR_PORT = 80; ///< The default port of the content mirror (TCP) -static const uint16 NETWORK_DEFAULT_PORT = 3979; ///< The default port of the game server (TCP & UDP) -static const uint16 NETWORK_ADMIN_PORT = 3977; ///< The default port for admin network -static const uint16 NETWORK_DEFAULT_DEBUGLOG_PORT = 3982; ///< The default port debug-log is sent to (TCP) +static const uint16 NETWORK_MASTER_SERVER_PORT = 3978; ///< The default port of the master server (UDP) +static const uint16 NETWORK_CONTENT_SERVER_PORT = 3978; ///< The default port of the content server (TCP) +static const uint16 NETWORK_CONTENT_MIRROR_PORT = 80; ///< The default port of the content mirror (TCP) +static const uint16 NETWORK_DEFAULT_PORT = 3979; ///< The default port of the game server (TCP & UDP) +static const uint16 NETWORK_ADMIN_PORT = 3977; ///< The default port for admin network +static const uint16 NETWORK_DEFAULT_DEBUGLOG_PORT = 3982; ///< The default port debug-log is sent to (TCP) -static const uint16 SEND_MTU = 1460; ///< Number of bytes we can pack in a single packet +static const uint16 SEND_MTU = 1460; ///< Number of bytes we can pack in a single packet -static const byte NETWORK_GAME_ADMIN_VERSION = 1; ///< What version of the admin network do we use? -static const byte NETWORK_GAME_INFO_VERSION = 4; ///< What version of game-info do we use? -static const byte NETWORK_COMPANY_INFO_VERSION = 6; ///< What version of company info is this? -static const byte NETWORK_MASTER_SERVER_VERSION = 2; ///< What version of master-server-protocol do we use? +static const byte NETWORK_GAME_ADMIN_VERSION = 1; ///< What version of the admin network do we use? +static const byte NETWORK_GAME_INFO_VERSION = 4; ///< What version of game-info do we use? +static const byte NETWORK_COMPANY_INFO_VERSION = 6; ///< What version of company info is this? +static const byte NETWORK_MASTER_SERVER_VERSION = 2; ///< What version of master-server-protocol do we use? -static const uint NETWORK_NAME_LENGTH = 80; ///< The maximum length of the server name and map name, in bytes including '\0' -static const uint NETWORK_COMPANY_NAME_LENGTH = 128; ///< The maximum length of the company name, in bytes including '\0' -static const uint NETWORK_HOSTNAME_LENGTH = 80; ///< The maximum length of the host name, in bytes including '\0' -static const uint NETWORK_SERVER_ID_LENGTH = 33; ///< The maximum length of the network id of the servers, in bytes including '\0' -static const uint NETWORK_REVISION_LENGTH = 15; ///< The maximum length of the revision, in bytes including '\0' -static const uint NETWORK_PASSWORD_LENGTH = 33; ///< The maximum length of the password, in bytes including '\0' (must be >= NETWORK_SERVER_ID_LENGTH) -static const uint NETWORK_CLIENTS_LENGTH = 200; ///< The maximum length for the list of clients that controls a company, in bytes including '\0' -static const uint NETWORK_CLIENT_NAME_LENGTH = 25; ///< The maximum length of a client's name, in bytes including '\0' -static const uint NETWORK_RCONCOMMAND_LENGTH = 500; ///< The maximum length of a rconsole command, in bytes including '\0' -static const uint NETWORK_GAMESCRIPT_JSON_LENGTH = 1450; ///< The maximum length of a gamescript json string, in bytes including '\0' -static const uint NETWORK_CHAT_LENGTH = 900; ///< The maximum length of a chat message, in bytes including '\0' +static const uint NETWORK_NAME_LENGTH = 80; ///< The maximum length of the server name and map name, in bytes including '\0' +static const uint NETWORK_COMPANY_NAME_LENGTH = 128; ///< The maximum length of the company name, in bytes including '\0' +static const uint NETWORK_HOSTNAME_LENGTH = 80; ///< The maximum length of the host name, in bytes including '\0' +static const uint NETWORK_SERVER_ID_LENGTH = 33; ///< The maximum length of the network id of the servers, in bytes including '\0' +static const uint NETWORK_REVISION_LENGTH = 15; ///< The maximum length of the revision, in bytes including '\0' +static const uint NETWORK_PASSWORD_LENGTH = 33; ///< The maximum length of the password, in bytes including '\0' (must be >= NETWORK_SERVER_ID_LENGTH) +static const uint NETWORK_CLIENTS_LENGTH = 200; ///< The maximum length for the list of clients that controls a company, in bytes including '\0' +static const uint NETWORK_CLIENT_NAME_LENGTH = 25; ///< The maximum length of a client's name, in bytes including '\0' +static const uint NETWORK_RCONCOMMAND_LENGTH = 500; ///< The maximum length of a rconsole command, in bytes including '\0' +static const uint NETWORK_GAMESCRIPT_JSON_LENGTH = SEND_MTU - 3; ///< The maximum length of a gamescript json string, in bytes including '\0'. Must not be longer than SEND_MTU including header (3 bytes) +static const uint NETWORK_CHAT_LENGTH = 900; ///< The maximum length of a chat message, in bytes including '\0' -static const uint NETWORK_GRF_NAME_LENGTH = 80; ///< Maximum length of the name of a GRF +static const uint NETWORK_GRF_NAME_LENGTH = 80; ///< Maximum length of the name of a GRF /** * Maximum number of GRFs that can be sent. diff --git a/src/network/core/core.cpp b/src/network/core/core.cpp index fc1bbf954..7a2ad92a2 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 */ @@ -51,7 +53,7 @@ bool NetworkCoreInitialize() if (OpenDevice("timer.device", UNIT_MICROHZ, (struct IORequest*)TimerRequest, 0) == 0) { TimerBase = TimerRequest->tr_node.io_Device; if (TimerBase == NULL) { - /* free ressources... */ + /* free resources... */ DEBUG(net, 0, "[core] can't initialize timer, network unavailable"); return false; } diff --git a/src/network/core/core.h b/src/network/core/core.h index ca7c763bd..a250dbb08 100644 --- a/src/network/core/core.h +++ b/src/network/core/core.h @@ -28,12 +28,12 @@ enum NetworkRecvStatus { NETWORK_RECV_STATUS_DESYNC, ///< A desync did occur NETWORK_RECV_STATUS_NEWGRF_MISMATCH, ///< We did not have the required NewGRFs NETWORK_RECV_STATUS_SAVEGAME, ///< Something went wrong (down)loading the savegame - NETWORK_RECV_STATUS_CONN_LOST, ///< The conection is 'just' lost + NETWORK_RECV_STATUS_CONN_LOST, ///< The connection is 'just' lost NETWORK_RECV_STATUS_MALFORMED_PACKET, ///< We apparently send a malformed packet NETWORK_RECV_STATUS_SERVER_ERROR, ///< The server told us we made an error NETWORK_RECV_STATUS_SERVER_FULL, ///< The server is full NETWORK_RECV_STATUS_SERVER_BANNED, ///< The server has banned us - NETWORK_RECV_STATUS_CLOSE_QUERY, ///< Done quering the server + NETWORK_RECV_STATUS_CLOSE_QUERY, ///< Done querying the server }; /** Forward declaration due to circular dependencies */ @@ -48,7 +48,7 @@ class NetworkSocketHandler { /** Create a new unbound socket */ NetworkSocketHandler() { this->has_quit = false; } - /** Close the socket when distructing the socket handler */ + /** Close the socket when destructing the socket handler */ virtual ~NetworkSocketHandler() { this->Close(); } /** Really close the socket */ diff --git a/src/network/core/host.cpp b/src/network/core/host.cpp index 0af0f7992..cf98239f8 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/packet.cpp b/src/network/core/packet.cpp index 4d9345e82..7548132e0 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 8cfa2d60e..790941fc0 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.h b/src/network/core/tcp.h index e55605561..b736189b4 100644 --- a/src/network/core/tcp.h +++ b/src/network/core/tcp.h @@ -52,7 +52,7 @@ class NetworkTCPSocketHandler : public NetworkSocketHandler { /** * Whether there is something pending in the send queue. - * @return true when someting is pending in the send queue. + * @return true when something is pending in the send queue. */ bool HasSendQueue() { return this->packet_queue != NULL; } diff --git a/src/network/core/tcp_admin.cpp b/src/network/core/tcp_admin.cpp index 027159883..284ceda9b 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() @@ -61,6 +65,7 @@ NetworkRecvStatus NetworkAdminSocketHandler::HandlePacket(Packet *p) case ADMIN_PACKET_ADMIN_CHAT: return this->Receive_ADMIN_CHAT(p); case ADMIN_PACKET_ADMIN_RCON: return this->Receive_ADMIN_RCON(p); case ADMIN_PACKET_ADMIN_GAMESCRIPT: return this->Receive_ADMIN_GAMESCRIPT(p); + case ADMIN_PACKET_ADMIN_PING: return this->Receive_ADMIN_PING(p); case ADMIN_PACKET_SERVER_FULL: return this->Receive_SERVER_FULL(p); case ADMIN_PACKET_SERVER_BANNED: return this->Receive_SERVER_BANNED(p); @@ -87,6 +92,8 @@ NetworkRecvStatus NetworkAdminSocketHandler::HandlePacket(Packet *p) case ADMIN_PACKET_SERVER_CONSOLE: return this->Receive_SERVER_CONSOLE(p); case ADMIN_PACKET_SERVER_CMD_NAMES: return this->Receive_SERVER_CMD_NAMES(p); case ADMIN_PACKET_SERVER_CMD_LOGGING: return this->Receive_SERVER_CMD_LOGGING(p); + case ADMIN_PACKET_SERVER_RCON_END: return this->Receive_SERVER_RCON_END(p); + case ADMIN_PACKET_SERVER_PONG: return this->Receive_SERVER_PONG(p); default: if (this->HasClientQuit()) { @@ -136,6 +143,7 @@ NetworkRecvStatus NetworkAdminSocketHandler::Receive_ADMIN_POLL(Packet *p) { ret NetworkRecvStatus NetworkAdminSocketHandler::Receive_ADMIN_CHAT(Packet *p) { return this->ReceiveInvalidPacket(ADMIN_PACKET_ADMIN_CHAT); } NetworkRecvStatus NetworkAdminSocketHandler::Receive_ADMIN_RCON(Packet *p) { return this->ReceiveInvalidPacket(ADMIN_PACKET_ADMIN_RCON); } NetworkRecvStatus NetworkAdminSocketHandler::Receive_ADMIN_GAMESCRIPT(Packet *p) { return this->ReceiveInvalidPacket(ADMIN_PACKET_ADMIN_GAMESCRIPT); } +NetworkRecvStatus NetworkAdminSocketHandler::Receive_ADMIN_PING(Packet *p) { return this->ReceiveInvalidPacket(ADMIN_PACKET_ADMIN_PING); } NetworkRecvStatus NetworkAdminSocketHandler::Receive_SERVER_FULL(Packet *p) { return this->ReceiveInvalidPacket(ADMIN_PACKET_SERVER_FULL); } NetworkRecvStatus NetworkAdminSocketHandler::Receive_SERVER_BANNED(Packet *p) { return this->ReceiveInvalidPacket(ADMIN_PACKET_SERVER_BANNED); } @@ -162,5 +170,7 @@ NetworkRecvStatus NetworkAdminSocketHandler::Receive_SERVER_RCON(Packet *p) { re NetworkRecvStatus NetworkAdminSocketHandler::Receive_SERVER_CONSOLE(Packet *p) { return this->ReceiveInvalidPacket(ADMIN_PACKET_SERVER_CONSOLE); } NetworkRecvStatus NetworkAdminSocketHandler::Receive_SERVER_CMD_NAMES(Packet *p) { return this->ReceiveInvalidPacket(ADMIN_PACKET_SERVER_CMD_NAMES); } NetworkRecvStatus NetworkAdminSocketHandler::Receive_SERVER_CMD_LOGGING(Packet *p) { return this->ReceiveInvalidPacket(ADMIN_PACKET_SERVER_CMD_LOGGING); } +NetworkRecvStatus NetworkAdminSocketHandler::Receive_SERVER_RCON_END(Packet *p) { return this->ReceiveInvalidPacket(ADMIN_PACKET_SERVER_RCON_END); } +NetworkRecvStatus NetworkAdminSocketHandler::Receive_SERVER_PONG(Packet *p) { return this->ReceiveInvalidPacket(ADMIN_PACKET_SERVER_PONG); } #endif /* ENABLE_NETWORK */ diff --git a/src/network/core/tcp_admin.h b/src/network/core/tcp_admin.h index f950f1a97..72c2e1160 100644 --- a/src/network/core/tcp_admin.h +++ b/src/network/core/tcp_admin.h @@ -33,6 +33,7 @@ enum PacketAdminType { ADMIN_PACKET_ADMIN_CHAT, ///< The admin sends a chat message to be distributed. ADMIN_PACKET_ADMIN_RCON, ///< The admin sends a remote console command. ADMIN_PACKET_ADMIN_GAMESCRIPT, ///< The admin sends a JSON string for the GameScript. + ADMIN_PACKET_ADMIN_PING, ///< The admin sends a ping to the server, expecting a ping-reply (PONG) packet. ADMIN_PACKET_SERVER_FULL = 100, ///< The server tells the admin it cannot accept the admin. ADMIN_PACKET_SERVER_BANNED, ///< The server tells the admin it is banned. @@ -60,6 +61,8 @@ enum PacketAdminType { ADMIN_PACKET_SERVER_CMD_NAMES, ///< The server sends out the names of the DoCommands to the admins. ADMIN_PACKET_SERVER_CMD_LOGGING, ///< The server gives the admin copies of incoming command packets. ADMIN_PACKET_SERVER_GAMESCRIPT, ///< The server gives the admin information from the GameScript in JSON. + ADMIN_PACKET_SERVER_RCON_END, ///< The server indicates that the remote console command has completed. + ADMIN_PACKET_SERVER_PONG, ///< The server replies to a ping request from the admin. INVALID_ADMIN_PACKET = 0xFF, ///< An invalid marker for admin packets. }; @@ -180,6 +183,14 @@ class NetworkAdminSocketHandler : public NetworkTCPSocketHandler { */ virtual NetworkRecvStatus Receive_ADMIN_GAMESCRIPT(Packet *p); + /** + * Ping the server, requiring the server to reply with a pong packet. + * uint32 Integer value to pass to the server, which is quoted in the reply. + * @param p The packet that was just received. + * @return The state the network should have. + */ + virtual NetworkRecvStatus Receive_ADMIN_PING(Packet *p); + /** * The server is full (connection gets closed). * @param p The packet that was just received. @@ -339,7 +350,7 @@ class NetworkAdminSocketHandler : public NetworkTCPSocketHandler { virtual NetworkRecvStatus Receive_SERVER_COMPANY_UPDATE(Packet *p); /** - * Notification about a removed company (e.g. due to banrkuptcy). + * Notification about a removed company (e.g. due to bankruptcy). * uint8 ID of the company. * uint8 Reason for being removed (see #AdminCompanyRemoveReason). * @param p The packet that was just received. @@ -454,6 +465,22 @@ class NetworkAdminSocketHandler : public NetworkTCPSocketHandler { */ virtual NetworkRecvStatus Receive_SERVER_CMD_LOGGING(Packet *p); + /** + * Send a ping-reply (pong) to the admin that sent us the ping packet. + * uint32 Integer identifier - should be the same as read from the admins ping packet. + * @param p The packet that was just received. + * @return The state the network should have. + */ + virtual NetworkRecvStatus Receive_SERVER_PONG(Packet *p); + + /** + * Notify the admin connection that the rcon command has finished. + * string The command as requested by the admin connection. + * @param p The packet that was just received. + * @return The state the network should have. + */ + virtual NetworkRecvStatus Receive_SERVER_RCON_END(Packet *p); + NetworkRecvStatus HandlePacket(Packet *p); public: NetworkRecvStatus CloseConnection(bool error = true); diff --git a/src/network/core/tcp_connect.cpp b/src/network/core/tcp_connect.cpp index ed2885b0e..ccbf93f3c 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 95b31fc9d..fc22c4491 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() { @@ -152,12 +154,6 @@ void NetworkContentSocketHandler::Close() this->sock = INVALID_SOCKET; } -/** - * Defines a simple (switch) case for each network packet - * @param type the packet type to create the case for - */ -#define CONTENT_COMMAND(type) case type: return this->NetworkPacketReceive_ ## type ## _command(p); break; - /** * Handle the given packet, i.e. pass it to the right * parser receive command. @@ -189,15 +185,39 @@ bool NetworkContentSocketHandler::HandlePacket(Packet *p) /** * Receive a packet at TCP level + * @return Whether at least one packet was received. */ -void NetworkContentSocketHandler::ReceivePackets() +bool NetworkContentSocketHandler::ReceivePackets() { + /* + * We read only a few of the packets. This as receiving packets can be expensive + * due to the re-resolving of the parent/child relations and checking the toggle + * state of all bits. We cannot do this all in one go, as we want to show the + * user what we already received. Otherwise, it can take very long before any + * progress is shown to the end user that something has been received. + * It is also the case that we request extra content from the content server in + * case there is an unknown (in the content list) piece of content. These will + * come in after the main lists have been requested. As a result, we won't be + * getting everything reliably in one batch. Thus, we need to make subsequent + * updates in that case as well. + * + * As a result, we simple handle an arbitrary number of packets in one cycle, + * and let the rest be handled in subsequent cycles. These are ran, almost, + * immediately after this cycle so in speed it does not matter much, except + * that the user inferface will appear better responding. + * + * What arbitrary number to choose is the ultimate question though. + */ Packet *p; - while ((p = this->ReceivePacket()) != NULL) { + static const int MAX_PACKETS_TO_RECEIVE = 42; + int i = MAX_PACKETS_TO_RECEIVE; + while (--i != 0 && (p = this->ReceivePacket()) != NULL) { bool cont = this->HandlePacket(p); delete p; - if (!cont) return; + if (!cont) return true; } + + return i != MAX_PACKETS_TO_RECEIVE - 1; } diff --git a/src/network/core/tcp_content.h b/src/network/core/tcp_content.h index b803d7189..a506439da 100644 --- a/src/network/core/tcp_content.h +++ b/src/network/core/tcp_content.h @@ -139,7 +139,7 @@ class NetworkContentSocketHandler : public NetworkTCPSocketHandler { /** * Client requesting a list of content info based on an external * 'unique' id; GRF ID + MD5 checksum for NewGRFS, shortname and - * xor-ed MD5 checsums for base graphics and AIs. + * xor-ed MD5 checksums for base graphics and AIs. * Scenarios and AI libraries are not supported * uint8 count of requests * for each request: @@ -206,7 +206,7 @@ class NetworkContentSocketHandler : public NetworkTCPSocketHandler { /** On destructing of this class, the socket needs to be closed */ virtual ~NetworkContentSocketHandler() { this->Close(); } - void ReceivePackets(); + bool ReceivePackets(); }; #ifndef OPENTTD_MSU diff --git a/src/network/core/tcp_game.cpp b/src/network/core/tcp_game.cpp index 64b7ba97a..9b3f7b5ef 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; } /** @@ -56,12 +56,6 @@ NetworkRecvStatus NetworkGameSocketHandler::CloseConnection(bool error) } -/** - * Defines a simple (switch) case for each network packet - * @param type the packet type to create the case for - */ -#define GAME_COMMAND(type) case type: return this->NetworkPacketReceive_ ## type ## _command(p); break; - /** * Handle the given packet, i.e. pass it to the right parser receive command. * @param p the packet to handle diff --git a/src/network/core/tcp_game.h b/src/network/core/tcp_game.h index 580e129ea..5c6cb5c34 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); @@ -326,8 +326,8 @@ class NetworkGameSocketHandler : public NetworkTCPSocketHandler { * Sends the current frame counter to the client: * uint32 Frame counter * uint32 Frame counter max (how far may the client walk before the server?) - * uint32 General seed 1 (dependant on compile settings, not default). - * uint32 General seed 2 (dependant on compile settings, not default). + * uint32 General seed 1 (dependent on compile settings, not default). + * uint32 General seed 2 (dependent on compile settings, not default). * uint8 Random token to validate the client is actually listening (only occasionally present). * @param p The packet that was just received. */ @@ -337,7 +337,7 @@ class NetworkGameSocketHandler : public NetworkTCPSocketHandler { * Sends a sync-check to the client: * uint32 Frame counter. * uint32 General seed 1. - * uint32 General seed 2 (dependant on compile settings, not default). + * uint32 General seed 2 (dependent on compile settings, not default). * @param p The packet that was just received. */ virtual NetworkRecvStatus Receive_SERVER_SYNC(Packet *p); @@ -413,13 +413,13 @@ class NetworkGameSocketHandler : public NetworkTCPSocketHandler { virtual NetworkRecvStatus Receive_CLIENT_SET_NAME(Packet *p); /** - * The client is quiting the game. + * The client is quitting the game. * @param p The packet that was just received. */ virtual NetworkRecvStatus Receive_CLIENT_QUIT(Packet *p); /** - * The client made an error and is quiting the game. + * The client made an error and is quitting the game. * uint8 Error of the code caused (see NetworkErrorCode). * @param p The packet that was just received. */ diff --git a/src/network/core/tcp_http.cpp b/src/network/core/tcp_http.cpp index 386ba776c..a8bb64080 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; @@ -177,7 +179,7 @@ int NetworkHTTPSocketHandler::HandleHeader() int ret = NetworkHTTPSocketHandler::Connect(uri, this->callback, this->data, this->redirect_depth + 1); if (ret != 0) return ret; - /* We've relinguished control of data now. */ + /* We've relinquished control of data now. */ this->data = NULL; /* Restore the header. */ diff --git a/src/network/core/tcp_http.h b/src/network/core/tcp_http.h index dc678cca0..36520f136 100644 --- a/src/network/core/tcp_http.h +++ b/src/network/core/tcp_http.h @@ -96,7 +96,7 @@ class NetworkHTTPContentConnecter : TCPConnecter { const char *data = NULL, int depth = 0) : TCPConnecter(address), callback(callback), - url(strdup(url)), + url(stredup(url)), data(data), depth(depth) { @@ -117,7 +117,7 @@ class NetworkHTTPContentConnecter : TCPConnecter { virtual void OnConnect(SOCKET s) { new NetworkHTTPSocketHandler(s, this->callback, this->address.GetHostname(), this->url, this->data, this->depth); - /* We've relinguished control of data now. */ + /* We've relinquished control of data now. */ this->data = NULL; } }; diff --git a/src/network/core/tcp_listen.h b/src/network/core/tcp_listen.h index 9fdf339c3..e6b589332 100644 --- a/src/network/core/tcp_listen.h +++ b/src/network/core/tcp_listen.h @@ -64,7 +64,9 @@ class TCPListenHandler { 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 @@ class TCPListenHandler { 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 @@ class TCPListenHandler { 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 4c74af3f6..ce5f06b1f 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 @@ -282,12 +286,6 @@ void NetworkUDPSocketHandler::ReceiveNetworkGameInfo(Packet *p, NetworkGameInfo } } -/** - * Defines a simple (switch) case for each network packet - * @param type the packet type to create the case for - */ -#define UDP_COMMAND(type) case type: this->NetworkPacketReceive_ ## type ## _command(p, client_addr); break; - /** * Handle an incoming packets by sending it to the correct function. * @param p the received packet diff --git a/src/network/core/udp.h b/src/network/core/udp.h index 29abb8a68..9aa0c9dc4 100644 --- a/src/network/core/udp.h +++ b/src/network/core/udp.h @@ -27,7 +27,7 @@ enum PacketUDPType { PACKET_UDP_CLIENT_DETAIL_INFO, ///< Queries a game server about details of the game, such as companies PACKET_UDP_SERVER_DETAIL_INFO, ///< Reply of the game server about details of the game, such as companies PACKET_UDP_SERVER_REGISTER, ///< Packet to register itself to the master server - PACKET_UDP_MASTER_ACK_REGISTER, ///< Packet indicating registration has succedeed + PACKET_UDP_MASTER_ACK_REGISTER, ///< Packet indicating registration has succeeded PACKET_UDP_CLIENT_GET_LIST, ///< Request for serverlist from master server PACKET_UDP_MASTER_RESPONSE_LIST, ///< Response from master server with server ip's + port's PACKET_UDP_SERVER_UNREGISTER, ///< Request to be removed from the server-list @@ -73,7 +73,7 @@ class NetworkUDPSocketHandler : public NetworkSocketHandler { * all 1 the version of this packet's structure * * 4+ 1 number of GRFs attached (n) - * 4+ n * 20 unique identifier for GRF files. Constists of: + * 4+ n * 20 unique identifier for GRF files. Consists of: * - one 4 byte variable with the GRF ID * - 16 bytes (sent sequentially) for the MD5 checksum * of the GRF diff --git a/src/network/network.cpp b/src/network/network.cpp index 41af3d1df..662f49d17 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; } @@ -455,7 +468,7 @@ static void CheckPauseOnJoin() * Converts a string to ip/port/company * Format: IP:port#company * - * connection_string will be re-terminated to seperate out the hostname, and company and port will + * connection_string will be re-terminated to separate out the hostname, and company and port will * be set to the company and port strings given by the user, inside the memory area originally * occupied by connection_string. */ @@ -488,7 +501,7 @@ void ParseConnectionString(const char **company, const char **port, char *connec } /** - * Handle the acception of a connection to the server. + * Handle the accepting of a connection to the server. * @param s The socket of the new connection. * @param address The address of the peer. */ @@ -549,7 +562,7 @@ void NetworkClose(bool close_admins) InitializeNetworkPools(close_admins); } -/* Inits the network (cleans sockets and stuff) */ +/* Initializes the network (cleans sockets and stuff) */ static void NetworkInitialize(bool close_admins = true) { InitializeNetworkPools(close_admins); @@ -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); @@ -809,7 +827,7 @@ void NetworkDisconnect(bool blocking, bool close_admins) /** * Receives something from the network. - * @return true if everthing went fine, false when the connection got closed. + * @return true if everything went fine, false when the connection got closed. */ static bool NetworkReceive() { @@ -1009,18 +1027,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 3dd63d03c..26f94482e 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 45ceaa793..c1ca3d3bb 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); @@ -480,6 +487,20 @@ NetworkRecvStatus ServerNetworkAdminSocketHandler::SendChat(NetworkAction action return NETWORK_RECV_STATUS_OKAY; } +/** + * Send a notification indicating the rcon command has completed. + * @param command The original command sent. + */ +NetworkRecvStatus ServerNetworkAdminSocketHandler::SendRconEnd(const char *command) +{ + Packet *p = new Packet(ADMIN_PACKET_SERVER_RCON_END); + + p->Send_string(command); + this->SendPacket(p); + + return NETWORK_RECV_STATUS_OKAY; +} + /** * Send the reply of an rcon command. * @param colour The colour of the text. @@ -509,7 +530,7 @@ NetworkRecvStatus ServerNetworkAdminSocketHandler::Receive_ADMIN_RCON(Packet *p) _redirect_console_to_admin = this->index; IConsoleCmdExec(command); _redirect_console_to_admin = INVALID_ADMIN_ID; - return NETWORK_RECV_STATUS_OKAY; + return this->SendRconEnd(command); } NetworkRecvStatus ServerNetworkAdminSocketHandler::Receive_ADMIN_GAMESCRIPT(Packet *p) @@ -526,6 +547,17 @@ NetworkRecvStatus ServerNetworkAdminSocketHandler::Receive_ADMIN_GAMESCRIPT(Pack return NETWORK_RECV_STATUS_OKAY; } +NetworkRecvStatus ServerNetworkAdminSocketHandler::Receive_ADMIN_PING(Packet *p) +{ + if (this->status == ADMIN_STATUS_INACTIVE) return this->SendError(NETWORK_ERROR_NOT_EXPECTED); + + uint32 d1 = p->Recv_uint32(); + + DEBUG(net, 2, "[admin] Ping from '%s' (%s): '%d'", this->admin_name, this->admin_version, d1); + + return this->SendPong(d1); +} + /** * Send console output of other clients. * @param origin The origin of the string. @@ -554,10 +586,10 @@ NetworkRecvStatus ServerNetworkAdminSocketHandler::SendConsole(const char *origi */ NetworkRecvStatus ServerNetworkAdminSocketHandler::SendGameScript(const char *json) { - /* At the moment we cannot transmit anything larger than MTU. So the string - * has to be no longer than the length of the json + '\0' + 3 bytes of the - * packet header. */ - if (strlen(json) + 1 + 3 >= SEND_MTU) return NETWORK_RECV_STATUS_OKAY; + /* At the moment we cannot transmit anything larger than MTU. So we limit + * the maximum amount of json data that can be sent. Account also for + * the trailing \0 of the string */ + if (strlen(json) + 1 >= NETWORK_GAMESCRIPT_JSON_LENGTH) return NETWORK_RECV_STATUS_OKAY; Packet *p = new Packet(ADMIN_PACKET_SERVER_GAMESCRIPT); @@ -567,6 +599,17 @@ NetworkRecvStatus ServerNetworkAdminSocketHandler::SendGameScript(const char *js return NETWORK_RECV_STATUS_OKAY; } +/** Send ping-reply (pong) to admin **/ +NetworkRecvStatus ServerNetworkAdminSocketHandler::SendPong(uint32 d1) +{ + Packet *p = new Packet(ADMIN_PACKET_SERVER_PONG); + + p->Send_uint32(d1); + this->SendPacket(p); + + return NETWORK_RECV_STATUS_OKAY; +} + /** Send the names of the commands. */ NetworkRecvStatus ServerNetworkAdminSocketHandler::SendCmdNames() { @@ -974,7 +1017,7 @@ void ServerNetworkAdminSocketHandler::WelcomeAll() /** * Send (push) updates to the admin network as they have registered for these updates. - * @param freq the frequency to be processd. + * @param freq the frequency to be processed. */ void NetworkAdminUpdate(AdminUpdateFrequency freq) { diff --git a/src/network/network_admin.h b/src/network/network_admin.h index c8241cabf..cb478fc7e 100644 --- a/src/network/network_admin.h +++ b/src/network/network_admin.h @@ -35,8 +35,10 @@ class ServerNetworkAdminSocketHandler : public NetworkAdminSocketPool::PoolItem< virtual NetworkRecvStatus Receive_ADMIN_CHAT(Packet *p); virtual NetworkRecvStatus Receive_ADMIN_RCON(Packet *p); virtual NetworkRecvStatus Receive_ADMIN_GAMESCRIPT(Packet *p); + virtual NetworkRecvStatus Receive_ADMIN_PING(Packet *p); NetworkRecvStatus SendProtocol(); + NetworkRecvStatus SendPong(uint32 d1); public: AdminUpdateFrequency update_frequency[ADMIN_UPDATE_END]; ///< Admin requested update intervals. uint32 realtime_connect; ///< Time of connection. @@ -69,6 +71,7 @@ class ServerNetworkAdminSocketHandler : public NetworkAdminSocketPool::PoolItem< NetworkRecvStatus SendGameScript(const char *json); NetworkRecvStatus SendCmdNames(); NetworkRecvStatus SendCmdLogging(ClientID client_id, const CommandPacket *cp); + NetworkRecvStatus SendRconEnd(const char *command); static void Send(); static void AcceptConnection(SOCKET s, const NetworkAddress &address); diff --git a/src/network/network_chat_gui.cpp b/src/network/network_chat_gui.cpp index dca244a37..fdfc4acff 100644 --- a/src/network/network_chat_gui.cpp +++ b/src/network/network_chat_gui.cpp @@ -30,6 +30,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); @@ -81,40 +83,24 @@ static inline uint GetChatMessageCount() void CDECL NetworkAddChatMessage(TextColour colour, uint duration, const char *message, ...) { char buf[DRAW_STRING_BUFFER]; - const char *bufp; va_list va; - uint msg_count; - uint16 lines; va_start(va, message); - vsnprintf(buf, lengthof(buf), message, va); + vseprintf(buf, lastof(buf), message, va); va_end(va); Utf8TrimString(buf, DRAW_STRING_BUFFER); - /* Force linebreaks for strings that are too long */ - lines = GB(FormatStringLinebreaks(buf, lastof(buf), _chatmsg_box.width - 8), 0, 16) + 1; - if (lines >= MAX_CHAT_MESSAGES) return; - - msg_count = GetChatMessageCount(); - /* We want to add more chat messages than there is free space for, remove 'old' */ - if (lines > MAX_CHAT_MESSAGES - msg_count) { - int i = lines - (MAX_CHAT_MESSAGES - msg_count); - memmove(&_chatmsg_list[0], &_chatmsg_list[i], sizeof(_chatmsg_list[0]) * (msg_count - i)); - msg_count = MAX_CHAT_MESSAGES - lines; + uint msg_count = GetChatMessageCount(); + if (MAX_CHAT_MESSAGES == msg_count) { + memmove(&_chatmsg_list[0], &_chatmsg_list[1], sizeof(_chatmsg_list[0]) * (msg_count - 1)); + msg_count = MAX_CHAT_MESSAGES - 1; } - for (bufp = buf; lines != 0; lines--) { - ChatMessage *cmsg = &_chatmsg_list[msg_count++]; - strecpy(cmsg->message, bufp, lastof(cmsg->message)); - - /* The default colour for a message is company colour. Replace this with - * white for any additional lines */ - cmsg->colour = (bufp == buf && (colour & TC_IS_PALETTE_COLOUR)) ? colour : TC_WHITE; - cmsg->remove_time = _realtime_tick + duration * 1000; - - bufp += strlen(bufp) + 1; // jump to 'next line' in the formatted string - } + ChatMessage *cmsg = &_chatmsg_list[msg_count++]; + strecpy(cmsg->message, buf, lastof(cmsg->message)); + cmsg->colour = (colour & TC_IS_PALETTE_COLOUR) ? colour : TC_WHITE; + cmsg->remove_time = _realtime_tick + duration * 1000; _chatmessage_dirty = true; } @@ -124,7 +110,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. */ @@ -165,7 +151,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; @@ -183,7 +169,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; } @@ -214,7 +200,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 */ @@ -246,22 +232,31 @@ void NetworkDrawChatMessage() _cur_dpi = &_screen; // switch to _screen painting + int string_height = 0; + for (uint i = 0; i < count; i++) { + SetDParamStr(0, _chatmsg_list[i].message); + string_height += GetStringLineCount(STR_JUST_RAW_STRING, width - 1) * FONT_HEIGHT_NORMAL + NETWORK_CHAT_LINE_SPACING; + } + + string_height = min(string_height, MAX_CHAT_MESSAGES * (FONT_HEIGHT_NORMAL + NETWORK_CHAT_LINE_SPACING)); + + int top = _screen.height - _chatmsg_box.y - string_height - 2; + int bottom = _screen.height - _chatmsg_box.y - 2; /* Paint a half-transparent box behind the chat messages */ - GfxFillRect( - _chatmsg_box.x, - _screen.height - _chatmsg_box.y - count * (FONT_HEIGHT_NORMAL + NETWORK_CHAT_LINE_SPACING) - 2, - _chatmsg_box.x + _chatmsg_box.width - 1, - _screen.height - _chatmsg_box.y - 2, + GfxFillRect(_chatmsg_box.x, top - 2, _chatmsg_box.x + _chatmsg_box.width - 1, bottom, PALETTE_TO_TRANSPARENT, FILLRECT_RECOLOUR // black, but with some alpha for background ); /* Paint the chat messages starting with the lowest at the bottom */ - for (uint y = FONT_HEIGHT_NORMAL + NETWORK_CHAT_LINE_SPACING; count-- != 0; y += (FONT_HEIGHT_NORMAL + NETWORK_CHAT_LINE_SPACING)) { - DrawString(_chatmsg_box.x + 3, _chatmsg_box.x + _chatmsg_box.width - 1, _screen.height - _chatmsg_box.y - y + 1, _chatmsg_list[count].message, _chatmsg_list[count].colour); + int ypos = bottom - 2; + + for (int i = count - 1; i >= 0; i--) { + ypos = DrawStringMultiLine(_chatmsg_box.x + 3, _chatmsg_box.x + _chatmsg_box.width - 1, top, ypos, _chatmsg_list[i].message, _chatmsg_list[i].colour, SA_LEFT | SA_BOTTOM | SA_FORCE) - NETWORK_CHAT_LINE_SPACING; + if (ypos < top) break; } /* 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; @@ -296,14 +291,13 @@ struct NetworkChatWindow : public Window { * @param type The type of destination. * @param dest The actual destination index. */ - NetworkChatWindow(const WindowDesc *desc, DestType type, int dest) : message_editbox(NETWORK_CHAT_LENGTH) + NetworkChatWindow(WindowDesc *desc, DestType type, int dest) : Window(desc), message_editbox(NETWORK_CHAT_LENGTH) { this->dtype = type; this->dest = dest; this->querystrings[WID_NC_TEXTBOX] = &this->message_editbox; this->message_editbox.cancel_button = WID_NC_CLOSE; this->message_editbox.ok_button = WID_NC_SENDBUTTON; - this->message_editbox.afilter = CS_ALPHANUMERAL; static const StringID chat_captions[] = { STR_NETWORK_CHAT_ALL_CAPTION, @@ -313,7 +307,7 @@ struct NetworkChatWindow : public Window { assert((uint)this->dtype < lengthof(chat_captions)); this->dest_string = chat_captions[this->dtype]; - this->InitNested(desc, type); + this->InitNested(type); this->SetFocusedWidget(WID_NC_TEXTBOX); InvalidateWindowData(WC_NEWS_WINDOW, 0, this->height); @@ -397,7 +391,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); @@ -434,7 +428,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) */ @@ -451,7 +445,7 @@ struct NetworkChatWindow : public Window { } if (second_scan) { - /* We walked all posibilities, and the user presses tab again.. revert to original text */ + /* We walked all possibilities, and the user presses tab again.. revert to original text */ this->message_editbox.text.Assign(_chat_tab_completion_buf); _chat_tab_completion_active = false; @@ -460,7 +454,7 @@ struct NetworkChatWindow : public Window { free(pre_buf); } - virtual Point OnInitialPosition(const WindowDesc *desc, int16 sm_width, int16 sm_height, int window_number) + virtual Point OnInitialPosition(int16 sm_width, int16 sm_height, int window_number) { Point pt = { 0, _screen.height - sm_height - FindWindowById(WC_STATUS_BAR, 0)->height }; return pt; @@ -499,7 +493,7 @@ struct NetworkChatWindow : public Window { } } - virtual EventState OnKeyPress(uint16 key, uint16 keycode) + virtual EventState OnKeyPress(WChar key, uint16 keycode) { EventState state = ES_NOT_HANDLED; if (keycode == WKC_TAB) { @@ -541,8 +535,8 @@ static const NWidgetPart _nested_chat_window_widgets[] = { }; /** The description of the chat window. */ -static const WindowDesc _chat_window_desc( - WDP_MANUAL, 640, 14, // x, y, width, height +static WindowDesc _chat_window_desc( + WDP_MANUAL, NULL, 640, 14, // x, y, width, height 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 8eaa2eb41..326af65d7 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 */ @@ -617,8 +619,8 @@ NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_CLIENT_INFO(Pac } /* There are at most as many ClientInfo as ClientSocket objects in a - * server. Having more Infos than a server can have means something - * has gone wrong somewhere, i.e. the server has more Infos than it + * server. Having more info than a server can have means something + * has gone wrong somewhere, i.e. the server has more info than it * has actual clients. That means the server is feeding us an invalid * state. So, bail out! This server is broken. */ if (!NetworkClientInfo::CanAllocateItem()) return NETWORK_RECV_STATUS_MALFORMED_PACKET; @@ -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; } @@ -1056,7 +1058,7 @@ NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_NEWGAME(Packet /* Only when we're trying to join we really * care about the server shutting down. */ if (this->status >= STATUS_JOIN) { - /* To trottle the reconnects a bit, every clients waits its + /* To throttle the reconnects a bit, every clients waits its * Client ID modulo 16. This way reconnects should be spread * out a bit. */ _network_reconnect = _network_own_client_id % 16; @@ -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_client.h b/src/network/network_client.h index 342834f1c..23878b506 100644 --- a/src/network/network_client.h +++ b/src/network/network_client.h @@ -29,7 +29,7 @@ class ClientNetworkGameSocketHandler : public ZeroedMemoryAllocator, public Netw STATUS_JOIN, ///< We are trying to join a server. STATUS_NEWGRFS_CHECK, ///< Last action was checking NewGRFs. STATUS_AUTH_GAME, ///< Last action was requesting game (server) password. - STATUS_AUTH_COMPANY, ///< Last action was requestion company password. + STATUS_AUTH_COMPANY, ///< Last action was requesting company password. STATUS_AUTHORIZED, ///< The client is authorized at the server. STATUS_MAP_WAIT, ///< The client is waiting as someone else is downloading the map. STATUS_MAP, ///< The client is downloading the map. diff --git a/src/network/network_command.cpp b/src/network/network_command.cpp index 6cf96c9f5..6e5458fd8 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 afbca4a37..174dbdafe 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"); @@ -509,7 +513,7 @@ bool ClientNetworkContentSocketHandler::BeforeDownload() /* The filesize is > 0, so we are going to download it */ const char *filename = GetFullFilename(this->curInfo, true); if (filename == NULL || (this->curFile = fopen(filename, "wb")) == NULL) { - /* Unless that fails ofcourse... */ + /* Unless that fails of course... */ DeleteWindowById(WC_NETWORK_STATUS_WINDOW, WN_NETWORK_STATUS_WINDOW_CONTENT_DOWNLOAD); ShowErrorMessage(STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD, STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD_FILE_NOT_WRITABLE, WL_ERROR); return false; @@ -703,7 +707,8 @@ ClientNetworkContentSocketHandler::ClientNetworkContentSocketHandler() : http_response_index(-2), curFile(NULL), curInfo(NULL), - isConnecting(false) + isConnecting(false), + lastActivity(_realtime_tick) { } @@ -778,8 +783,10 @@ void ClientNetworkContentSocketHandler::SendReceive() } if (this->CanSendReceive()) { - this->ReceivePackets(); - this->lastActivity = _realtime_tick; + if (this->ReceivePackets()) { + /* Only update activity once a packet is received, instead of everytime we try it. */ + this->lastActivity = _realtime_tick; + } } this->SendPackets(); diff --git a/src/network/network_content_gui.cpp b/src/network/network_content_gui.cpp index 9f8ee75c6..332cf1a53 100644 --- a/src/network/network_content_gui.cpp +++ b/src/network/network_content_gui.cpp @@ -29,6 +29,13 @@ #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; + + /** Window for displaying the textfile of an item in the content list. */ struct ContentTextfileWindow : public TextfileWindow { const ContentInfo *ci; ///< View the textfile of this ContentInfo. @@ -86,20 +93,20 @@ static const NWidgetPart _nested_network_content_download_status_window_widgets[ }; /** Window description for the download window */ -static const WindowDesc _network_content_download_status_window_desc( - WDP_CENTER, 0, 0, +static WindowDesc _network_content_download_status_window_desc( + WDP_CENTER, NULL, 0, 0, WC_NETWORK_STATUS_WINDOW, WC_NONE, WDF_MODAL, _nested_network_content_download_status_window_widgets, lengthof(_nested_network_content_download_status_window_widgets) ); -BaseNetworkContentDownloadStatusWindow::BaseNetworkContentDownloadStatusWindow(const WindowDesc *desc) : - cur_id(UINT32_MAX) +BaseNetworkContentDownloadStatusWindow::BaseNetworkContentDownloadStatusWindow(WindowDesc *desc) : + Window(desc), cur_id(UINT32_MAX) { _network_content_client.AddCallback(this); _network_content_client.DownloadSelectedContent(this->total_files, this->total_bytes); - this->InitNested(desc, WN_NETWORK_STATUS_WINDOW_CONTENT_DOWNLOAD); + this->InitNested(WN_NETWORK_STATUS_WINDOW_CONTENT_DOWNLOAD); } BaseNetworkContentDownloadStatusWindow::~BaseNetworkContentDownloadStatusWindow() @@ -296,6 +303,63 @@ class NetworkContentListWindow : public Window, ContentCallback { uint filesize_sum; ///< The sum of all selected file sizes Scrollbar *vscroll; ///< Cache of the vertical scrollbar + /** Search external websites for content */ + void OpenExternalSearch() + { + extern void OpenBrowser(const char *url); + + char url[1024]; + const char *last = lastof(url); + + char *pos = strecpy(url, "http://grfsearch.openttd.org/?", last); + + if (this->auto_select) { + pos = strecpy(pos, "do=searchgrfid&q=", last); + + bool first = true; + for (ConstContentIterator iter = this->content.Begin(); iter != this->content.End(); iter++) { + const ContentInfo *ci = *iter; + if (ci->state != ContentInfo::DOES_NOT_EXIST) continue; + + if (!first) pos = strecpy(pos, ",", last); + first = false; + + pos += seprintf(pos, last, "%08X", ci->unique_id); + pos = strecpy(pos, ":", last); + pos = md5sumToString(pos, last, ci->md5sum); + } + } else { + pos = strecpy(pos, "do=searchtext&q=", last); + + /* Escape search term */ + for (const char *search = this->filter_editbox.text.buf; *search != '\0'; search++) { + /* Remove quotes */ + if (*search == '\'' || *search == '"') continue; + + /* Escape special chars, such as &%,= */ + if (*search < 0x30) { + pos += seprintf(pos, last, "%%%02X", *search); + } else if (pos < last) { + *pos = *search; + *++pos = '\0'; + } + } + } + + OpenBrowser(url); + } + + /** + * Callback function for disclaimer about entering external websites. + */ + static void ExternalSearchDisclaimerCallback(Window *w, bool accepted) + { + if (accepted) { + _accepted_external_search = true; + ((NetworkContentListWindow*)w)->OpenExternalSearch(); + } + } + /** * (Re)build the network game list as its amount has changed because * an item has been added or deleted for example @@ -307,10 +371,15 @@ class NetworkContentListWindow : public Window, ContentCallback { /* Create temporary array of games to use for listing */ this->content.Clear(); + bool all_available = true; + for (ConstContentIterator iter = _network_content_client.Begin(); iter != _network_content_client.End(); iter++) { + if ((*iter)->state == ContentInfo::DOES_NOT_EXIST) all_available = false; *this->content.Append() = *iter; } + this->SetWidgetDisabledState(WID_NCL_SEARCH_EXTERNAL, this->auto_select && all_available); + this->FilterContentList(); this->content.Compact(); this->content.RebuildDone(); @@ -323,7 +392,7 @@ class NetworkContentListWindow : public Window, ContentCallback { /** Sort content by name. */ static int CDECL NameSorter(const ContentInfo * const *a, const ContentInfo * const *b) { - return strnatcmp((*a)->name, (*b)->name); // Sort by name (natural sorting). + return strnatcmp((*a)->name, (*b)->name, true); // Sort by name (natural sorting). } /** Sort content by type. */ @@ -405,22 +474,23 @@ class NetworkContentListWindow : public Window, ContentCallback { * @param desc the window description to pass to Window's constructor. * @param select_all Whether the select all button is allowed or not. */ - NetworkContentListWindow(const WindowDesc *desc, bool select_all) : + NetworkContentListWindow(WindowDesc *desc, bool select_all) : + Window(desc), auto_select(select_all), filter_editbox(EDITBOX_MAX_SIZE), selected(NULL), list_pos(0) { - this->CreateNestedTree(desc); + this->CreateNestedTree(); this->vscroll = this->GetScrollbar(WID_NCL_SCROLLBAR); - this->FinishInitNested(desc, WN_NETWORK_WINDOW_CONTENT_LIST); + this->FinishInitNested(WN_NETWORK_WINDOW_CONTENT_LIST); this->GetWidget(WID_NCL_SEL_ALL_UPDATE)->SetDisplayedPlane(select_all); this->querystrings[WID_NCL_FILTER] = &this->filter_editbox; this->filter_editbox.cancel_button = QueryString::ACTION_CLEAR; - this->filter_editbox.afilter = CS_ALPHANUMERAL; this->SetFocusedWidget(WID_NCL_FILTER); + this->SetWidgetDisabledState(WID_NCL_SEARCH_EXTERNAL, this->auto_select); _network_content_client.AddCallback(this); this->content.SetListing(this->last_sorting); @@ -682,7 +752,7 @@ class NetworkContentListWindow : public Window, ContentCallback { 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(); @@ -721,10 +791,18 @@ class NetworkContentListWindow : public Window, ContentCallback { case WID_NCL_DOWNLOAD: if (BringWindowToFrontById(WC_NETWORK_STATUS_WINDOW, WN_NETWORK_STATUS_WINDOW_CONTENT_DOWNLOAD) == NULL) new NetworkContentDownloadStatusWindow(); break; + + case WID_NCL_SEARCH_EXTERNAL: + if (_accepted_external_search) { + this->OpenExternalSearch(); + } else { + ShowQuery(STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER_CAPTION, STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER, this, ExternalSearchDisclaimerCallback); + } + break; } } - virtual EventState OnKeyPress(uint16 key, uint16 keycode) + virtual EventState OnKeyPress(WChar key, uint16 keycode) { switch (keycode) { case WKC_UP: @@ -768,7 +846,10 @@ class NetworkContentListWindow : public Window, ContentCallback { 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); @@ -793,7 +874,6 @@ class NetworkContentListWindow : public Window, ContentCallback { virtual void OnResize() { this->vscroll->SetCapacityFromWidget(this, WID_NCL_MATRIX); - this->GetWidget(WID_NCL_MATRIX)->widget_data = (this->vscroll->GetCapacity() << MAT_ROW_START) + (1 << MAT_COL_START); } virtual void OnReceiveContentInfo(const ContentInfo *rci) @@ -884,6 +964,7 @@ static const NWidgetPart _nested_network_content_list_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_LIGHT_BLUE), NWidget(WWT_CAPTION, COLOUR_LIGHT_BLUE), SetDataTip(STR_CONTENT_TITLE, STR_NULL), + NWidget(WWT_DEFSIZEBOX, COLOUR_LIGHT_BLUE), EndContainer(), NWidget(WWT_PANEL, COLOUR_LIGHT_BLUE, WID_NCL_BACKGROUND), NWidget(NWID_SPACER), SetMinimalSize(0, 7), SetResize(1, 0), @@ -896,7 +977,7 @@ static const NWidgetPart _nested_network_content_list_widgets[] = { NWidget(NWID_SPACER), SetMinimalSize(0, 7), SetResize(1, 0), NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), SetPIP(8, 8, 8), /* Left side. */ - NWidget(NWID_VERTICAL), + NWidget(NWID_VERTICAL), SetPIP(0, 4, 0), NWidget(NWID_HORIZONTAL), NWidget(NWID_VERTICAL), NWidget(NWID_HORIZONTAL), @@ -906,17 +987,30 @@ static const NWidgetPart _nested_network_content_list_widgets[] = { NWidget(WWT_PUSHTXTBTN, COLOUR_WHITE, WID_NCL_NAME), SetResize(1, 0), SetFill(1, 0), SetDataTip(STR_CONTENT_NAME_CAPTION, STR_CONTENT_NAME_CAPTION_TOOLTIP), EndContainer(), - NWidget(WWT_MATRIX, COLOUR_LIGHT_BLUE, WID_NCL_MATRIX), SetResize(1, 14), SetFill(1, 1), SetScrollbar(WID_NCL_SCROLLBAR), SetDataTip(STR_NULL, STR_CONTENT_MATRIX_TOOLTIP), + NWidget(WWT_MATRIX, COLOUR_LIGHT_BLUE, WID_NCL_MATRIX), SetResize(1, 14), SetFill(1, 1), SetScrollbar(WID_NCL_SCROLLBAR), SetMatrixDataTip(1, 0, STR_CONTENT_MATRIX_TOOLTIP), EndContainer(), NWidget(NWID_VSCROLLBAR, COLOUR_LIGHT_BLUE, WID_NCL_SCROLLBAR), EndContainer(), + NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), SetPIP(0, 8, 0), + NWidget(NWID_SELECTION, INVALID_COLOUR, WID_NCL_SEL_ALL_UPDATE), SetResize(1, 0), SetFill(1, 0), + NWidget(WWT_PUSHTXTBTN, COLOUR_WHITE, WID_NCL_SELECT_UPDATE), SetResize(1, 0), SetFill(1, 0), + SetDataTip(STR_CONTENT_SELECT_UPDATES_CAPTION, STR_CONTENT_SELECT_UPDATES_CAPTION_TOOLTIP), + NWidget(WWT_PUSHTXTBTN, COLOUR_WHITE, WID_NCL_SELECT_ALL), SetResize(1, 0), SetFill(1, 0), + SetDataTip(STR_CONTENT_SELECT_ALL_CAPTION, STR_CONTENT_SELECT_ALL_CAPTION_TOOLTIP), + EndContainer(), + NWidget(WWT_PUSHTXTBTN, COLOUR_WHITE, WID_NCL_UNSELECT), SetResize(1, 0), SetFill(1, 0), + SetDataTip(STR_CONTENT_UNSELECT_ALL_CAPTION, STR_CONTENT_UNSELECT_ALL_CAPTION_TOOLTIP), + EndContainer(), EndContainer(), /* Right side. */ - NWidget(NWID_VERTICAL), + NWidget(NWID_VERTICAL), SetPIP(0, 4, 0), NWidget(WWT_PANEL, COLOUR_LIGHT_BLUE, WID_NCL_DETAILS), SetResize(1, 1), SetFill(1, 1), EndContainer(), - NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), SetPIP(7, 0, 7), + NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), SetPIP(0, 8, 0), NWidget(WWT_PUSHTXTBTN, COLOUR_WHITE, WID_NCL_TEXTFILE + TFT_README), SetFill(1, 0), SetResize(1, 0), SetDataTip(STR_TEXTFILE_VIEW_README, STR_NULL), NWidget(WWT_PUSHTXTBTN, COLOUR_WHITE, WID_NCL_TEXTFILE + TFT_CHANGELOG), SetFill(1, 0), SetResize(1, 0), SetDataTip(STR_TEXTFILE_VIEW_CHANGELOG, STR_NULL), + EndContainer(), + NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), SetPIP(0, 8, 0), + NWidget(WWT_PUSHTXTBTN, COLOUR_WHITE, WID_NCL_OPEN_URL), SetResize(1, 0), SetFill(1, 0), SetDataTip(STR_CONTENT_OPEN_URL, STR_CONTENT_OPEN_URL_TOOLTIP), NWidget(WWT_PUSHTXTBTN, COLOUR_WHITE, WID_NCL_TEXTFILE + TFT_LICENSE), SetFill(1, 0), SetResize(1, 0), SetDataTip(STR_TEXTFILE_VIEW_LICENCE, STR_NULL), EndContainer(), EndContainer(), @@ -924,19 +1018,9 @@ static const NWidgetPart _nested_network_content_list_widgets[] = { NWidget(NWID_SPACER), SetMinimalSize(0, 7), SetResize(1, 0), /* Bottom. */ NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), SetPIP(8, 8, 8), - NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), SetPIP(8, 8, 8), - NWidget(NWID_SELECTION, INVALID_COLOUR, WID_NCL_SEL_ALL_UPDATE), SetResize(1, 0), SetFill(1, 0), - NWidget(WWT_PUSHTXTBTN, COLOUR_WHITE, WID_NCL_SELECT_UPDATE), SetResize(1, 0), SetFill(1, 0), - SetDataTip(STR_CONTENT_SELECT_UPDATES_CAPTION, STR_CONTENT_SELECT_UPDATES_CAPTION_TOOLTIP), - NWidget(WWT_PUSHTXTBTN, COLOUR_WHITE, WID_NCL_SELECT_ALL), SetResize(1, 0), SetFill(1, 0), - SetDataTip(STR_CONTENT_SELECT_ALL_CAPTION, STR_CONTENT_SELECT_ALL_CAPTION_TOOLTIP), - EndContainer(), - NWidget(WWT_PUSHTXTBTN, COLOUR_WHITE, WID_NCL_UNSELECT), SetResize(1, 0), SetFill(1, 0), - SetDataTip(STR_CONTENT_UNSELECT_ALL_CAPTION, STR_CONTENT_UNSELECT_ALL_CAPTION_TOOLTIP), - EndContainer(), - NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), SetPIP(8, 8, 8), - NWidget(WWT_PUSHTXTBTN, COLOUR_WHITE, WID_NCL_OPEN_URL), SetResize(1, 0), SetFill(1, 0), - SetDataTip(STR_CONTENT_OPEN_URL, STR_CONTENT_OPEN_URL_TOOLTIP), + NWidget(WWT_PUSHTXTBTN, COLOUR_WHITE, WID_NCL_SEARCH_EXTERNAL), SetResize(1, 0), SetFill(1, 0), + SetDataTip(STR_CONTENT_SEARCH_EXTERNAL, STR_CONTENT_SEARCH_EXTERNAL_TOOLTIP), + NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), SetPIP(0, 8, 0), NWidget(WWT_PUSHTXTBTN, COLOUR_WHITE, WID_NCL_CANCEL), SetResize(1, 0), SetFill(1, 0), SetDataTip(STR_BUTTON_CANCEL, STR_NULL), NWidget(WWT_PUSHTXTBTN, COLOUR_WHITE, WID_NCL_DOWNLOAD), SetResize(1, 0), SetFill(1, 0), @@ -953,8 +1037,8 @@ static const NWidgetPart _nested_network_content_list_widgets[] = { }; /** Window description of the content list */ -static const WindowDesc _network_content_list_desc( - WDP_CENTER, 630, 460, +static WindowDesc _network_content_list_desc( + WDP_CENTER, "list_content", 630, 460, WC_NETWORK_WINDOW, WC_NONE, 0, _nested_network_content_list_widgets, lengthof(_nested_network_content_list_widgets) diff --git a/src/network/network_content_gui.h b/src/network/network_content_gui.h index 6650eb14a..212fcec04 100644 --- a/src/network/network_content_gui.h +++ b/src/network/network_content_gui.h @@ -32,7 +32,7 @@ class BaseNetworkContentDownloadStatusWindow : public Window, ContentCallback { * Create the window with the given description. * @param desc The description of the window. */ - BaseNetworkContentDownloadStatusWindow(const WindowDesc *desc); + BaseNetworkContentDownloadStatusWindow(WindowDesc *desc); /** * Free everything associated with this window. diff --git a/src/network/network_func.h b/src/network/network_func.h index 7ce8414f9..67d4c8d48 100644 --- a/src/network/network_func.h +++ b/src/network/network_func.h @@ -12,6 +12,12 @@ #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 + #include "core/address.h" #include "network_type.h" #include "../console_type.h" @@ -65,7 +71,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 949636213..e5d80630e 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 c0a73d808..0580dc95c 100644 --- a/src/network/network_gui.cpp +++ b/src/network/network_gui.cpp @@ -39,19 +39,27 @@ #include "../stringfilter_type.h" +#include "../safeguards.h" + static void ShowNetworkStartServerWindow(); static void ShowNetworkLobbyWindow(NetworkGameList *ngl); +/** + * Advertisement options in the start server window + */ static const StringID _connection_types_dropdown[] = { - STR_NETWORK_START_SERVER_LAN_INTERNET, - STR_NETWORK_START_SERVER_INTERNET_ADVERTISE, + STR_NETWORK_START_SERVER_UNADVERTISED, + STR_NETWORK_START_SERVER_ADVERTISED, INVALID_STRING_ID }; +/** + * Advertisement options in the server list + */ static const StringID _lan_internet_types_dropdown[] = { - STR_NETWORK_SERVER_LIST_LAN, - STR_NETWORK_SERVER_LIST_INTERNET, + STR_NETWORK_SERVER_LIST_ADVERTISED_NO, + STR_NETWORK_SERVER_LIST_ADVERTISED_YES, INVALID_STRING_ID }; @@ -263,24 +271,10 @@ class NetworkGameWindow : public Window { this->UpdateListPos(); } - /** - * Skip some of the 'garbage' in the string that we don't want to use - * to sort on. This way the alphabetical sorting will work better as - * we would be actually using those characters instead of some other - * characters such as spaces and tildes at the begin of the name. - * @param str The string to skip the initial garbage of. - * @return The string with the garbage skipped. - */ - static const char *SkipGarbage(const char *str) - { - while (*str != '\0' && (*str < 'A' || IsInsideMM(*str, '[', '`' + 1) || IsInsideMM(*str, '{', '~' + 1))) str++; - return str; - } - /** Sort servers by name. */ static int CDECL NGameNameSorter(NetworkGameList * const *a, NetworkGameList * const *b) { - int r = strnatcmp(SkipGarbage((*a)->info.server_name), SkipGarbage((*b)->info.server_name)); // Sort by name (natural sorting). + int r = strnatcmp((*a)->info.server_name, (*b)->info.server_name, true); // Sort by name (natural sorting). return r == 0 ? (*a)->address.CompareTo((*b)->address) : r; } @@ -457,18 +451,17 @@ class NetworkGameWindow : public Window { } public: - NetworkGameWindow(const WindowDesc *desc) : name_editbox(NETWORK_CLIENT_NAME_LENGTH), filter_editbox(120) + NetworkGameWindow(WindowDesc *desc) : Window(desc), name_editbox(NETWORK_CLIENT_NAME_LENGTH), filter_editbox(120) { this->list_pos = SLP_INVALID; this->server = NULL; - this->CreateNestedTree(desc); + this->CreateNestedTree(); this->vscroll = this->GetScrollbar(WID_NG_SCROLLBAR); - this->FinishInitNested(desc, WN_NETWORK_WINDOW_GAME); + this->FinishInitNested(WN_NETWORK_WINDOW_GAME); this->querystrings[WID_NG_CLIENT] = &this->name_editbox; this->name_editbox.text.Assign(_settings_client.network.client_name); - this->name_editbox.afilter = CS_ALPHANUMERAL; this->querystrings[WID_NG_FILTER] = &this->filter_editbox; this->filter_editbox.cancel_button = QueryString::ACTION_CLEAR; @@ -763,7 +756,7 @@ class NetworkGameWindow : public Window { 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); } @@ -808,7 +801,7 @@ class NetworkGameWindow : public Window { this->SetDirty(); } - virtual EventState OnKeyPress(uint16 key, uint16 keycode) + virtual EventState OnKeyPress(WChar key, uint16 keycode) { EventState state = ES_NOT_HANDLED; @@ -844,7 +837,7 @@ class NetworkGameWindow : public Window { /* jump to end */ this->list_pos = this->servers.Length() - 1; break; - default: break; + default: NOT_REACHED(); } this->server = this->servers[this->list_pos]; @@ -899,7 +892,6 @@ class NetworkGameWindow : public Window { virtual void OnResize() { this->vscroll->SetCapacityFromWidget(this, WID_NG_MATRIX); - this->GetWidget(WID_NG_MATRIX)->widget_data = (this->vscroll->GetCapacity() << MAT_ROW_START) + (1 << MAT_COL_START); } virtual void OnTick() @@ -933,6 +925,7 @@ static const NWidgetPart _nested_network_game_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_LIGHT_BLUE), NWidget(WWT_CAPTION, COLOUR_LIGHT_BLUE), SetDataTip(STR_NETWORK_SERVER_LIST_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_DEFSIZEBOX, COLOUR_LIGHT_BLUE), EndContainer(), NWidget(WWT_PANEL, COLOUR_LIGHT_BLUE, WID_NG_MAIN), NWidget(NWID_VERTICAL), SetPIP(10, 7, 0), @@ -940,9 +933,9 @@ static const NWidgetPart _nested_network_game_widgets[] = { /* LEFT SIDE */ NWidget(NWID_VERTICAL), SetPIP(0, 7, 0), NWidget(NWID_HORIZONTAL), SetPIP(0, 7, 0), - NWidget(WWT_TEXT, COLOUR_LIGHT_BLUE, WID_NG_CONNECTION), SetDataTip(STR_NETWORK_SERVER_LIST_CONNECTION, STR_NULL), + NWidget(WWT_TEXT, COLOUR_LIGHT_BLUE, WID_NG_CONNECTION), SetDataTip(STR_NETWORK_SERVER_LIST_ADVERTISED, STR_NULL), NWidget(WWT_DROPDOWN, COLOUR_LIGHT_BLUE, WID_NG_CONN_BTN), - SetDataTip(STR_BLACK_STRING, STR_NETWORK_SERVER_LIST_CONNECTION_TOOLTIP), + SetDataTip(STR_BLACK_STRING, STR_NETWORK_SERVER_LIST_ADVERTISED_TOOLTIP), NWidget(NWID_SPACER), SetFill(1, 0), SetResize(1, 0), EndContainer(), NWidget(NWID_HORIZONTAL), SetPIP(0, 7, 0), @@ -954,7 +947,7 @@ static const NWidgetPart _nested_network_game_widgets[] = { NWidget(NWID_VERTICAL), NWidgetFunction(MakeResizableHeader), NWidget(WWT_MATRIX, COLOUR_LIGHT_BLUE, WID_NG_MATRIX), SetResize(1, 1), SetFill(1, 0), - SetDataTip(0, STR_NETWORK_SERVER_LIST_CLICK_GAME_TO_SELECT), SetScrollbar(WID_NG_SCROLLBAR), + SetMatrixDataTip(1, 0, STR_NETWORK_SERVER_LIST_CLICK_GAME_TO_SELECT), SetScrollbar(WID_NG_SCROLLBAR), EndContainer(), NWidget(NWID_VSCROLLBAR, COLOUR_LIGHT_BLUE, WID_NG_SCROLLBAR), EndContainer(), @@ -1020,8 +1013,8 @@ static const NWidgetPart _nested_network_game_widgets[] = { EndContainer(), }; -static const WindowDesc _network_game_window_desc( - WDP_CENTER, 1000, 730, +static WindowDesc _network_game_window_desc( + WDP_CENTER, "list_servers", 1000, 730, WC_NETWORK_WINDOW, WC_NONE, 0, _nested_network_game_widgets, lengthof(_nested_network_game_widgets) @@ -1049,14 +1042,13 @@ struct NetworkStartServerWindow : public Window { byte widget_id; ///< The widget that has the pop-up input menu QueryString name_editbox; ///< Server name editbox. - NetworkStartServerWindow(const WindowDesc *desc) : name_editbox(NETWORK_NAME_LENGTH) + NetworkStartServerWindow(WindowDesc *desc) : Window(desc), name_editbox(NETWORK_NAME_LENGTH) { - this->InitNested(desc, WN_NETWORK_WINDOW_START); + this->InitNested(WN_NETWORK_WINDOW_START); this->querystrings[WID_NSS_GAMENAME] = &this->name_editbox; this->name_editbox.text.Assign(_settings_client.network.server_name); - this->name_editbox.afilter = CS_ALPHANUMERAL; this->SetFocusedWidget(WID_NSS_GAMENAME); } @@ -1273,8 +1265,8 @@ static const NWidgetPart _nested_network_start_server_window_widgets[] = { NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), SetPIP(10, 6, 10), NWidget(NWID_VERTICAL), SetPIP(0, 1, 0), - NWidget(WWT_TEXT, COLOUR_LIGHT_BLUE, WID_NSS_CONNTYPE_LABEL), SetFill(1, 0), SetDataTip(STR_NETWORK_SERVER_LIST_CONNECTION, STR_NULL), - NWidget(WWT_DROPDOWN, COLOUR_LIGHT_BLUE, WID_NSS_CONNTYPE_BTN), SetFill(1, 0), SetDataTip(STR_BLACK_STRING, STR_NETWORK_SERVER_LIST_CONNECTION_TOOLTIP), + NWidget(WWT_TEXT, COLOUR_LIGHT_BLUE, WID_NSS_CONNTYPE_LABEL), SetFill(1, 0), SetDataTip(STR_NETWORK_SERVER_LIST_ADVERTISED, STR_NULL), + NWidget(WWT_DROPDOWN, COLOUR_LIGHT_BLUE, WID_NSS_CONNTYPE_BTN), SetFill(1, 0), SetDataTip(STR_BLACK_STRING, STR_NETWORK_SERVER_LIST_ADVERTISED_TOOLTIP), EndContainer(), NWidget(NWID_VERTICAL), SetPIP(0, 1, 0), NWidget(WWT_TEXT, COLOUR_LIGHT_BLUE, WID_NSS_LANGUAGE_LABEL), SetFill(1, 0), SetDataTip(STR_NETWORK_START_SERVER_LANGUAGE_SPOKEN, STR_NULL), @@ -1336,8 +1328,8 @@ static const NWidgetPart _nested_network_start_server_window_widgets[] = { EndContainer(), }; -static const WindowDesc _network_start_server_window_desc( - WDP_CENTER, 0, 0, +static WindowDesc _network_start_server_window_desc( + WDP_CENTER, NULL, 0, 0, WC_NETWORK_WINDOW, WC_NONE, 0, _nested_network_start_server_window_widgets, lengthof(_nested_network_start_server_window_widgets) @@ -1357,13 +1349,12 @@ struct NetworkLobbyWindow : public Window { NetworkCompanyInfo company_info[MAX_COMPANIES]; Scrollbar *vscroll; - NetworkLobbyWindow(const WindowDesc *desc, NetworkGameList *ngl) : - Window(), company(INVALID_COMPANY), server(ngl) + NetworkLobbyWindow(WindowDesc *desc, NetworkGameList *ngl) : + Window(desc), company(INVALID_COMPANY), server(ngl) { - this->CreateNestedTree(desc); + this->CreateNestedTree(); this->vscroll = this->GetScrollbar(WID_NL_SCROLLBAR); - this->FinishInitNested(desc, WN_NETWORK_WINDOW_LOBBY); - this->OnResize(); + this->FinishInitNested(WN_NETWORK_WINDOW_LOBBY); } CompanyID NetworkLobbyFindCompanyIndex(byte pos) const @@ -1582,7 +1573,6 @@ struct NetworkLobbyWindow : public Window { virtual void OnResize() { this->vscroll->SetCapacityFromWidget(this, WID_NL_MATRIX); - this->GetWidget(WID_NL_MATRIX)->widget_data = (this->vscroll->GetCapacity() << MAT_ROW_START) + (1 << MAT_COL_START); } }; @@ -1598,7 +1588,7 @@ static const NWidgetPart _nested_network_lobby_window_widgets[] = { /* Company list. */ NWidget(NWID_VERTICAL), NWidget(WWT_PANEL, COLOUR_WHITE, WID_NL_HEADER), SetMinimalSize(146, 0), SetResize(1, 0), SetFill(1, 0), EndContainer(), - NWidget(WWT_MATRIX, COLOUR_LIGHT_BLUE, WID_NL_MATRIX), SetMinimalSize(146, 0), SetResize(1, 1), SetFill(1, 1), SetDataTip(0, STR_NETWORK_GAME_LOBBY_COMPANY_LIST_TOOLTIP), SetScrollbar(WID_NL_SCROLLBAR), + NWidget(WWT_MATRIX, COLOUR_LIGHT_BLUE, WID_NL_MATRIX), SetMinimalSize(146, 0), SetResize(1, 1), SetFill(1, 1), SetMatrixDataTip(1, 0, STR_NETWORK_GAME_LOBBY_COMPANY_LIST_TOOLTIP), SetScrollbar(WID_NL_SCROLLBAR), EndContainer(), NWidget(NWID_VSCROLLBAR, COLOUR_LIGHT_BLUE, WID_NL_SCROLLBAR), NWidget(NWID_SPACER), SetMinimalSize(5, 0), SetResize(0, 1), @@ -1625,8 +1615,8 @@ static const NWidgetPart _nested_network_lobby_window_widgets[] = { EndContainer(), }; -static const WindowDesc _network_lobby_window_desc( - WDP_CENTER, 0, 0, +static WindowDesc _network_lobby_window_desc( + WDP_CENTER, NULL, 0, 0, WC_NETWORK_WINDOW, WC_NONE, 0, _nested_network_lobby_window_widgets, lengthof(_nested_network_lobby_window_widgets) @@ -1674,8 +1664,8 @@ static const NWidgetPart _nested_client_list_popup_widgets[] = { NWidget(WWT_PANEL, COLOUR_GREY, WID_CLP_PANEL), EndContainer(), }; -static const WindowDesc _client_list_popup_desc( - WDP_AUTO, 0, 0, +static WindowDesc _client_list_popup_desc( + WDP_AUTO, NULL, 0, 0, WC_CLIENT_LIST_POPUP, WC_CLIENT_LIST, 0, _nested_client_list_popup_widgets, lengthof(_nested_client_list_popup_widgets) @@ -1737,8 +1727,8 @@ struct NetworkClientListPopupWindow : Window { action->proc = proc; } - NetworkClientListPopupWindow(const WindowDesc *desc, int x, int y, ClientID client_id) : - Window(), + NetworkClientListPopupWindow(WindowDesc *desc, int x, int y, ClientID client_id) : + Window(desc), sel_index(0), client_id(client_id) { this->desired_location.x = x; @@ -1768,11 +1758,11 @@ struct NetworkClientListPopupWindow : Window { this->AddAction(STR_NETWORK_CLIENTLIST_BAN, &ClientList_Ban); } - this->InitNested(desc, client_id); + this->InitNested(client_id); CLRBITS(this->flags, WF_WHITE_BORDER); } - virtual Point OnInitialPosition(const WindowDesc *desc, int16 sm_width, int16 sm_height, int window_number) + virtual Point OnInitialPosition(int16 sm_width, int16 sm_height, int window_number) { return this->desired_location; } @@ -1850,8 +1840,8 @@ static const NWidgetPart _nested_client_list_widgets[] = { NWidget(WWT_PANEL, COLOUR_GREY, WID_CL_PANEL), SetMinimalSize(250, WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM), SetResize(1, 1), EndContainer(), }; -static const WindowDesc _client_list_desc( - WDP_AUTO, 0, 0, +static WindowDesc _client_list_desc( + WDP_AUTO, "list_clients", 0, 0, WC_CLIENT_LIST, WC_NONE, 0, _nested_client_list_widgets, lengthof(_nested_client_list_widgets) @@ -1866,11 +1856,11 @@ struct NetworkClientListWindow : Window { uint server_client_width; uint company_icon_width; - NetworkClientListWindow(const WindowDesc *desc, WindowNumber window_number) : - Window(), + NetworkClientListWindow(WindowDesc *desc, WindowNumber window_number) : + Window(desc), selected_item(-1) { - this->InitNested(desc, window_number); + this->InitNested(window_number); } /** @@ -2019,10 +2009,10 @@ uint32 _network_join_bytes_total; ///< The total number of bytes to downlo struct NetworkJoinStatusWindow : Window { NetworkPasswordType password_type; - NetworkJoinStatusWindow(const WindowDesc *desc) : Window() + NetworkJoinStatusWindow(WindowDesc *desc) : Window(desc) { this->parent = FindWindowById(WC_NETWORK_WINDOW, WN_NETWORK_WINDOW_GAME); - this->InitNested(desc, WN_NETWORK_STATUS_WINDOW_JOIN); + this->InitNested(WN_NETWORK_STATUS_WINDOW_JOIN); } virtual void DrawWidget(const Rect &r, int widget) const @@ -2122,8 +2112,8 @@ static const NWidgetPart _nested_network_join_status_window_widgets[] = { EndContainer(), }; -static const WindowDesc _network_join_status_window_desc( - WDP_CENTER, 0, 0, +static WindowDesc _network_join_status_window_desc( + WDP_CENTER, NULL, 0, 0, WC_NETWORK_STATUS_WINDOW, WC_NONE, WDF_MODAL, _nested_network_join_status_window_widgets, lengthof(_nested_network_join_status_window_widgets) @@ -2153,15 +2143,14 @@ void ShowNetworkNeedPassword(NetworkPasswordType npt) struct NetworkCompanyPasswordWindow : public Window { QueryString password_editbox; ///< Password editbox. - NetworkCompanyPasswordWindow(const WindowDesc *desc, Window *parent) : password_editbox(lengthof(_settings_client.network.default_company_pass)) + NetworkCompanyPasswordWindow(WindowDesc *desc, Window *parent) : Window(desc), password_editbox(lengthof(_settings_client.network.default_company_pass)) { - this->InitNested(desc, 0); + this->InitNested(0); this->parent = parent; this->querystrings[WID_NCP_PASSWORD] = &this->password_editbox; this->password_editbox.cancel_button = WID_NCP_CANCEL; this->password_editbox.ok_button = WID_NCP_OK; - this->password_editbox.afilter = CS_ALPHANUMERAL; this->SetFocusedWidget(WID_NCP_PASSWORD); } @@ -2217,8 +2206,8 @@ static const NWidgetPart _nested_network_company_password_window_widgets[] = { EndContainer(), }; -static const WindowDesc _network_company_password_window_desc( - WDP_AUTO, 0, 0, +static WindowDesc _network_company_password_window_desc( + WDP_AUTO, NULL, 0, 0, WC_COMPANY_PASSWORD_WINDOW, WC_NONE, 0, _nested_network_company_password_window_widgets, lengthof(_nested_network_company_password_window_widgets) diff --git a/src/network/network_internal.h b/src/network/network_internal.h index 938682981..ed9a8de6f 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 3464efa9c..dc18658a9 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); @@ -528,7 +575,7 @@ NetworkRecvStatus ServerNetworkGameSocketHandler::SendWait() /** This sends the map to the client */ NetworkRecvStatus ServerNetworkGameSocketHandler::SendMap() { - static uint sent_packets; // How many packets we did send succecfully last time + static uint sent_packets; // How many packets we did send successfully last time if (this->status < STATUS_AUTHORIZED) { /* Illegal call, return error and ignore the packet */ @@ -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); } @@ -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); @@ -1500,7 +1542,7 @@ void NetworkSocketHandler::SendCompanyInformation(Packet *p, const Company *c, c p->Send_uint64(income); p->Send_uint16(c->old_economy[0].performance_history); - /* Send 1 if there is a passord for the company else send 0 */ + /* Send 1 if there is a password for the company else send 0 */ p->Send_bool (!StrEmpty(_network_company_states[c->index].password)); for (uint i = 0; i < NETWORK_VEH_END; i++) { @@ -1620,7 +1662,7 @@ static void NetworkAutoCleanCompanies() } } - /* Go through all the comapnies */ + /* Go through all the companies */ FOR_ALL_COMPANIES(c) { /* Skip the non-active once */ if (c->is_ai) continue; @@ -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); } } @@ -1786,7 +1828,7 @@ void NetworkServer_Tick(bool send_frame) switch (cs->status) { case NetworkClientSocket::STATUS_ACTIVE: if (lag > _settings_client.network.max_lag_time) { - /* Client did still not report in within the specififed limit. */ + /* Client did still not report in within the specified limit. */ IConsolePrintF(CC_ERROR, cs->last_packet + lag * MILLISECONDS_PER_TICK > _realtime_tick ? /* A packet was received in the last three game days, so the client is likely lagging behind. */ "Client #%d is dropped because the client's game state is more than %d ticks behind" : @@ -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 e9d790a48..a52b2c936 100644 --- a/src/network/network_server.h +++ b/src/network/network_server.h @@ -19,7 +19,7 @@ #include "../thread/thread.h" class ServerNetworkGameSocketHandler; -/** Make the code look slightliy nicer/simpler. */ +/** Make the code look slightly nicer/simpler. */ typedef ServerNetworkGameSocketHandler NetworkClientSocket; /** Pool with all client sockets. */ typedef Pool NetworkClientSocketPool; @@ -75,18 +75,15 @@ class ServerNetworkGameSocketHandler : public NetworkClientSocketPool::PoolItem< 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 @@ class ServerNetworkGameSocketHandler : public NetworkClientSocketPool::PoolItem< 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 f58a39342..731d51ca0 100644 --- a/src/network/network_udp.cpp +++ b/src/network/network_udp.cpp @@ -34,15 +34,17 @@ #include "core/udp.h" -/** Mutex for all out threaded udp resoltion and such. */ +#include "../safeguards.h" + +/** Mutex for all out threaded udp resolution and such. */ static ThreadMutex *_network_udp_mutex = ThreadMutex::New(); /** Session key to register ourselves to the master server */ static uint64 _session_key = 0; static const uint ADVERTISE_NORMAL_INTERVAL = 30000; ///< interval between advertising in ticks (15 minutes) -static const uint ADVERTISE_RETRY_INTERVAL = 300; ///< readvertise when no response after this many ticks (9 seconds) -static const uint ADVERTISE_RETRY_TIMES = 3; ///< give up readvertising after this much failed retries +static const uint ADVERTISE_RETRY_INTERVAL = 300; ///< re-advertise when no response after this many ticks (9 seconds) +static const uint ADVERTISE_RETRY_TIMES = 3; ///< give up re-advertising after this much failed retries NetworkUDPSocketHandler *_udp_client_socket = NULL; ///< udp client socket NetworkUDPSocketHandler *_udp_server_socket = NULL; ///< udp server socket @@ -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 9a2c4dbbd..b1b6f5ff1 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 @@ struct GrfProcessingState { 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 @@ class ByteReader { 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; -typedef std::map StringIDToGRFIDMapping; -static StringIDToGRFIDMapping _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); + + 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; } @@ -1619,7 +1742,7 @@ static ChangeInfoResult AircraftVehicleChangeInfo(uint engine, int numinfo, int break; case 0x0D: // Acceleration - avi->acceleration = (buf->ReadByte() * 128) / 10; + avi->acceleration = buf->ReadByte(); break; case PROP_AIRCRAFT_RUNNING_COST_FACTOR: // 0x0E Running cost factor @@ -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]; @@ -1908,6 +2031,9 @@ static ChangeInfoResult StationChangeInfo(uint stid, int numinfo, int prop, Byte case 0x12: // Cargo types for random triggers statspec->cargo_triggers = buf->ReadDWord(); + if (_cur.grffile->grf_version >= 7) { + statspec->cargo_triggers = TranslateRefitMask(statspec->cargo_triggers); + } break; case 0x13: // General flags @@ -2180,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++) { @@ -2293,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 @@ -2484,7 +2609,7 @@ static ChangeInfoResult GlobalVarChangeInfo(uint gvid, int numinfo, int prop, By uint curidx = GetNewgrfCurrencyIdConverted(gvid + i); StringID newone = GetGRFStringID(_cur.grffile->grfid, buf->ReadWord()); - if ((newone != STR_UNDEFINED) && (curidx < NUM_CURRENCY)) { + if ((newone != STR_UNDEFINED) && (curidx < CURRENCY_END)) { _currency_specs[curidx].name = newone; } break; @@ -2494,7 +2619,7 @@ static ChangeInfoResult GlobalVarChangeInfo(uint gvid, int numinfo, int prop, By uint curidx = GetNewgrfCurrencyIdConverted(gvid + i); uint32 rate = buf->ReadDWord(); - if (curidx < NUM_CURRENCY) { + if (curidx < CURRENCY_END) { /* TTDPatch uses a multiple of 1000 for its conversion calculations, * which OTTD does not. For this reason, divide grf value by 1000, * to be compatible */ @@ -2509,7 +2634,7 @@ static ChangeInfoResult GlobalVarChangeInfo(uint gvid, int numinfo, int prop, By uint curidx = GetNewgrfCurrencyIdConverted(gvid + i); uint16 options = buf->ReadWord(); - if (curidx < NUM_CURRENCY) { + if (curidx < CURRENCY_END) { _currency_specs[curidx].separator[0] = GB(options, 0, 8); _currency_specs[curidx].separator[1] = '\0'; /* By specifying only one bit, we prevent errors, @@ -2525,7 +2650,7 @@ static ChangeInfoResult GlobalVarChangeInfo(uint gvid, int numinfo, int prop, By uint curidx = GetNewgrfCurrencyIdConverted(gvid + i); uint32 tempfix = buf->ReadDWord(); - if (curidx < NUM_CURRENCY) { + if (curidx < CURRENCY_END) { memcpy(_currency_specs[curidx].prefix, &tempfix, 4); _currency_specs[curidx].prefix[4] = 0; } else { @@ -2538,7 +2663,7 @@ static ChangeInfoResult GlobalVarChangeInfo(uint gvid, int numinfo, int prop, By uint curidx = GetNewgrfCurrencyIdConverted(gvid + i); uint32 tempfix = buf->ReadDWord(); - if (curidx < NUM_CURRENCY) { + if (curidx < CURRENCY_END) { memcpy(&_currency_specs[curidx].suffix, &tempfix, 4); _currency_specs[curidx].suffix[4] = 0; } else { @@ -2551,7 +2676,7 @@ static ChangeInfoResult GlobalVarChangeInfo(uint gvid, int numinfo, int prop, By uint curidx = GetNewgrfCurrencyIdConverted(gvid + i); Year year_euro = buf->ReadWord(); - if (curidx < NUM_CURRENCY) { + if (curidx < CURRENCY_END) { _currency_specs[curidx].to_euro = year_euro; } else { grfmsg(1, "GlobalVarChangeInfo: Euro intro date %d out of range, ignoring", curidx); @@ -2760,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) @@ -2774,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) @@ -2783,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 @@ -2844,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; @@ -2974,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++) { @@ -3212,16 +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; } - grfmsg(1, "IndustriesChangeInfo: newid %u", indid); - /* 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++) { @@ -3389,18 +3508,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 @@ -3471,8 +3587,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 @@ -3485,8 +3600,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 @@ -3504,10 +3618,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; @@ -3553,16 +3672,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; } - grfmsg(1, "AirportChangeInfo: newid %u", airport); - /* 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++) { @@ -3626,7 +3743,7 @@ static ChangeInfoResult AirportChangeInfo(uint airport, int numinfo, int prop, B if (att[k].ti.x == 0 && att[k].ti.y == 0x80) { /* Not the same terminator. The one we are using is rather - x= -80, y = 0 . So, adjust it. */ + * x = -80, y = 0 . So, adjust it. */ att[k].ti.x = -0x80; att[k].ti.y = 0; att[k].gfx = 0; @@ -3702,8 +3819,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 @@ -3738,6 +3854,7 @@ static ChangeInfoResult IgnoreObjectProperty(uint prop, ByteReader *buf) case 0x16: case 0x17: buf->ReadByte(); + break; case 0x09: case 0x0A: @@ -3774,14 +3891,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++) { @@ -3812,16 +3929,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 @@ -3883,6 +3997,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; @@ -3923,33 +4041,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 @@ -3966,8 +4080,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; } @@ -4013,8 +4127,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 @@ -4119,14 +4232,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++) { @@ -5772,7 +5885,7 @@ static uint32 GetParamVal(byte param, uint32 *cond_val) case 0x88: // GRF ID check return 0; - /* case 0x99: Global ID offest not implemented */ + /* case 0x99: Global ID offset not implemented */ default: /* GRF Parameter */ @@ -5893,7 +6006,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 @@ -6256,7 +6369,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]; @@ -6268,7 +6381,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. */ @@ -6372,6 +6485,14 @@ static uint32 GetPatchVariable(uint8 param) case 0x14: return MAX_TILE_HEIGHT; + /* Extra foundations base sprite */ + case 0x15: + return SPR_SLOPES_BASE; + + /* Shore base sprite */ + case 0x16: + return SPR_SHORE_BASE; + default: grfmsg(2, "ParamSet: Unknown Patch variable 0x%02X.", param); return 0; @@ -6567,7 +6688,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; @@ -6617,7 +6738,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; @@ -6625,7 +6746,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; @@ -6769,7 +6890,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()); } } } @@ -7120,7 +7241,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; } @@ -7540,7 +7661,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) { @@ -7747,7 +7868,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]; @@ -7782,7 +7903,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]); } @@ -7798,7 +7919,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) { @@ -7819,7 +7940,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); @@ -7839,7 +7960,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; @@ -7859,7 +7980,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]); } @@ -7875,7 +7996,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]); } @@ -8061,7 +8182,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 */ @@ -8373,7 +8494,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; @@ -8382,7 +8503,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; @@ -8412,14 +8533,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; @@ -8427,11 +8548,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. */ @@ -8475,7 +8596,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) { @@ -8512,7 +8633,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); @@ -8545,7 +8666,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]); } @@ -8565,7 +8686,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]); } @@ -8574,7 +8695,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]); } @@ -8821,7 +8942,7 @@ void LoadNewGRFFile(GRFConfig *config, uint file_index, GrfLoadingStage stage, S static void ActivateOldShore() { /* Use default graphics, if no shore sprites were loaded. - * Should not happen, as openttd(w/d).grf includes some. */ + * Should not happen, as the base set's extra grf should include some. */ if (_loaded_newgrf_features.shore == SHORE_REPLACE_NONE) _loaded_newgrf_features.shore = SHORE_REPLACE_ACTION_A; if (_loaded_newgrf_features.shore != SHORE_REPLACE_ACTION_5) { @@ -8977,10 +9098,10 @@ 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++) { @@ -9020,6 +9141,9 @@ static void AfterLoadGRFs() /* Create dynamic list of industry legends for smallmap_gui.cpp */ BuildIndustriesLegend(); + /* Build the routemap legend, based on the available cargos */ + BuildLinkStatsLegend(); + /* Add all new airports to the airports array. */ FinaliseAirportsArray(); BindAirportSpecs(); diff --git a/src/newgrf.h b/src/newgrf.h index 70fa6ceed..a02b0021f 100644 --- a/src/newgrf.h +++ b/src/newgrf.h @@ -126,7 +126,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 @@ -167,7 +167,7 @@ struct GRFLoadedFeatures { }; /** - * Check for grf miscelaneous bits + * Check for grf miscellaneous bits * @param bit The bit to check. * @return Whether the bit is set. */ diff --git a/src/newgrf_airport.cpp b/src/newgrf_airport.cpp index 4b43af483..6db12f737 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_airport.h b/src/newgrf_airport.h index a981bea6b..5a917c6bd 100644 --- a/src/newgrf_airport.h +++ b/src/newgrf_airport.h @@ -91,7 +91,7 @@ enum TTDPAirportType { struct HangarTileTable { TileIndexDiffC ti; ///< Tile offset from the top-most airport tile. Direction dir; ///< Direction of the exit. - byte hangar_num; ///< The hanger to which this tile belongs. + byte hangar_num; ///< The hangar to which this tile belongs. }; /** @@ -114,7 +114,7 @@ struct AirportSpec { TTDPAirportType ttd_airport_type; ///< ttdpatch airport type (Small/Large/Helipad/Oilrig) AirportClassID cls_id; ///< the class to which this airport type belongs SpriteID preview_sprite; ///< preview sprite for this airport - uint16 maintenance_cost; ///< maintenance cost mulltiplier + uint16 maintenance_cost; ///< maintenance cost multiplier /* Newgrf data */ bool enabled; ///< Entity still available (by default true). Newgrf can disable it, though. struct GRFFileProps grf_prop; ///< Properties related to the grf file. diff --git a/src/newgrf_airporttiles.cpp b/src/newgrf_airporttiles.cpp index 9829286dd..5eb24f670 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]; @@ -133,11 +135,11 @@ static uint32 GetAirportTileIDAtOffset(TileIndex tile, const Station *st, uint32 const AirportTileSpec *ats = AirportTileSpec::Get(gfx); if (gfx < NEW_AIRPORTTILE_OFFSET) { // Does it belongs to an old type? - /* It is an old tile. We have to see if it's been overriden */ + /* It is an old tile. We have to see if it's been overridden */ if (ats->grf_prop.override == INVALID_AIRPORTTILE) { // has it been overridden? return 0xFF << 8 | gfx; // no. Tag FF + the gfx id of that tile } - /* Overriden */ + /* Overridden */ const AirportTileSpec *tile_ovr = AirportTileSpec::Get(ats->grf_prop.override); if (tile_ovr->grf_prop.grffile->grfid == cur_grfid) { @@ -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 7fe57253c..4d25aa924 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; @@ -47,7 +47,7 @@ struct AirportTileResolverObject : public ResolverObject { }; /** - * Defines the data structure of each indivudual tile of an airport. + * Defines the data structure of each individual tile of an airport. */ struct AirportTileSpec { AnimationInfo animation; ///< Information about the animation. diff --git a/src/newgrf_canal.cpp b/src/newgrf_canal.cpp index 13b7e15d6..cba19cbdb 100644 --- a/src/newgrf_canal.cpp +++ b/src/newgrf_canal.cpp @@ -13,8 +13,11 @@ #include "debug.h" #include "newgrf_spritegroup.h" #include "newgrf_canal.h" +#include "water.h" #include "water_map.h" +#include "safeguards.h" + /** Table of canal 'feature' sprite groups */ WaterFeature _water_feature[CF_END]; @@ -22,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; @@ -32,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) @@ -66,6 +69,29 @@ struct CanalResolverObject : public ResolverObject { /* Terrain type */ case 0x81: return GetTerrainType(this->tile); + /* Dike map: Connectivity info for river and canal tiles + * + * Assignment of bits to directions defined in agreement with + * http://projects.tt-forums.net/projects/ttdpatch/repository/revisions/2367/entry/trunk/patches/water.asm#L879 + * 7 + * 3 0 + * 6 * 4 + * 2 1 + * 5 + */ + case 0x82: { + uint32 connectivity = + (!IsWateredTile(TILE_ADDXY(tile, -1, 0), DIR_SW) << 0) // NE + + (!IsWateredTile(TILE_ADDXY(tile, 0, 1), DIR_NW) << 1) // SE + + (!IsWateredTile(TILE_ADDXY(tile, 1, 0), DIR_NE) << 2) // SW + + (!IsWateredTile(TILE_ADDXY(tile, 0, -1), DIR_SE) << 3) // NW + + (!IsWateredTile(TILE_ADDXY(tile, -1, 1), DIR_W) << 4) // E + + (!IsWateredTile(TILE_ADDXY(tile, 1, 1), DIR_N) << 5) // S + + (!IsWateredTile(TILE_ADDXY(tile, 1, -1), DIR_E) << 6) // W + + (!IsWateredTile(TILE_ADDXY(tile, -1, -1), DIR_S) << 7); // N + return connectivity; + } + /* Random data for river or canal tiles, otherwise zero */ case 0x83: return IsTileType(this->tile, MP_WATER) ? GetWaterTileRandomBits(this->tile) : 0; } @@ -84,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; } /** @@ -111,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(); @@ -129,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 d6227b801..7d830c573 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 cb7826759..4caf3a5d4 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 @@ -95,7 +97,7 @@ void OverrideManagerBase::ResetOverride() /** * Return the ID (if ever available) of a previously inserted entity. - * @param grf_local_id ID of this enity withing the grfID + * @param grf_local_id ID of this entity within the grfID * @param grfid ID of the grf file * @return the ID of the candidate, of the Invalid flag item ID */ @@ -170,7 +172,7 @@ uint16 OverrideManagerBase::GetSubstituteID(uint16 entity_id) const /** * Install the specs into the HouseSpecs array - * It will find itself the proper slot onwhich it will go + * It will find itself the proper slot on which it will go * @param hs HouseSpec read from the grf file, ready for inclusion */ void HouseOverrideManager::SetEntitySpec(const HouseSpec *hs) @@ -198,7 +200,7 @@ void HouseOverrideManager::SetEntitySpec(const HouseSpec *hs) /** * Return the ID (if ever available) of a previously inserted entity. - * @param grf_local_id ID of this enity withing the grfID + * @param grf_local_id ID of this entity within the grfID * @param grfid ID of the grf file * @return the ID of the candidate, of the Invalid flag item ID */ @@ -226,7 +228,7 @@ uint16 IndustryOverrideManager::AddEntityID(byte grf_local_id, uint32 grfid, byt { /* This entity hasn't been defined before, so give it an ID now. */ for (uint16 id = 0; id < max_new_entities; id++) { - /* Skip overriden industries */ + /* Skip overridden industries */ if (id < max_offset && entity_overrides[id] != invalid_ID) continue; /* Get the real live industry */ @@ -234,7 +236,7 @@ uint16 IndustryOverrideManager::AddEntityID(byte grf_local_id, uint32 grfid, byt /* This industry must be one that is not available(enabled), mostly because of climate. * And it must not already be used by a grf (grffile == NULL). - * So reseve this slot here, as it is the chosen one */ + * So reserve this slot here, as it is the chosen one */ if (!inds->enabled && inds->grf_prop.grffile == NULL) { EntityIDMapping *map = &mapping_ID[id]; @@ -252,8 +254,8 @@ uint16 IndustryOverrideManager::AddEntityID(byte grf_local_id, uint32 grfid, byt } /** - * Method to install the new indistry data in its proper slot - * The slot assigment is internal of this method, since it requires + * Method to install the new industry data in its proper slot + * The slot assignment is internal of this method, since it requires * checking what is available * @param inds Industryspec that comes from the grf decoding process */ @@ -264,11 +266,11 @@ void IndustryOverrideManager::SetEntitySpec(IndustrySpec *inds) if (ind_id == invalid_ID) { /* Not found. - * Or it has already been overriden, so you've lost your place old boy. + * Or it has already been overridden, so you've lost your place old boy. * Or it is a simple substitute. * We need to find a free available slot */ ind_id = this->AddEntityID(inds->grf_prop.local_id, inds->grf_prop.grffile->grfid, inds->grf_prop.subst_id); - inds->grf_prop.override = invalid_ID; // make sure it will not be detected as overriden + inds->grf_prop.override = invalid_ID; // make sure it will not be detected as overridden } if (ind_id == invalid_ID) { @@ -308,7 +310,7 @@ void IndustryTileOverrideManager::SetEntitySpec(const IndustryTileSpec *its) /** * Method to install the new object data in its proper slot - * The slot assigment is internal of this method, since it requires + * The slot assignment is internal of this method, since it requires * checking what is available * @param spec ObjectSpec that comes from the grf decoding process */ @@ -319,7 +321,7 @@ void ObjectOverrideManager::SetEntitySpec(ObjectSpec *spec) if (type == invalid_ID) { /* Not found. - * Or it has already been overriden, so you've lost your place old boy. + * Or it has already been overridden, so you've lost your place old boy. * Or it is a simple substitute. * We need to find a free available slot */ type = this->AddEntityID(spec->grf_prop.local_id, spec->grf_prop.grffile->grfid, OBJECT_TRANSMITTER); @@ -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 b352d1126..4202c18db 100644 --- a/src/newgrf_commons.h +++ b/src/newgrf_commons.h @@ -199,7 +199,7 @@ class OverrideManagerBase { uint16 max_offset; ///< what is the length of the original entity's array of specs uint16 max_new_entities; ///< what is the amount of entities, old and new summed - uint16 invalid_ID; ///< ID used to dected invalid entities; + uint16 invalid_ID; ///< ID used to detected invalid entities; virtual bool CheckValidNewID(uint16 testid) { return true; } public: @@ -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 d327da550..6b7b8c377 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 @@ GRFListCompatibility IsGoodGRFConfigList(GRFConfig *grfconfig) * 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; @@ -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 52818c8f0..e19d8d608 100644 --- a/src/newgrf_config.h +++ b/src/newgrf_config.h @@ -46,12 +46,13 @@ 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 */ enum GRFListCompatibility { GLC_ALL_GOOD, ///< All GRF needed by game are present - GLC_COMPATIBLE, ///< Compatible (eg. the same ID, but different chacksum) GRF found in at least one case + GLC_COMPATIBLE, ///< Compatible (eg. the same ID, but different checksum) GRF found in at least one case GLC_NOT_FOUND, ///< At least one GRF couldn't be found (higher priority than GLC_COMPATIBLE) }; @@ -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 89ede74eb..6e514c4ce 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 244d2c090..6d5312514 100644 --- a/src/newgrf_debug_gui.cpp +++ b/src/newgrf_debug_gui.cpp @@ -18,6 +18,7 @@ #include "string_func.h" #include "strings_func.h" #include "textbuf_gui.h" +#include "vehicle_gui.h" #include "engine_base.h" #include "industry.h" @@ -25,6 +26,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 +43,8 @@ #include "table/strings.h" +#include "safeguards.h" + /** The sprite picker. */ NewGrfDebugSpritePicker _newgrf_debug_sprite_picker = { SPM_NONE, NULL, 0, SmallVector() }; @@ -68,7 +73,7 @@ static inline uint GetInspectWindowNumber(GrfSpecFeature feature, uint index) /** * The type of a property to show. This is used to - * provide an appropriate represenation in the GUI. + * provide an appropriate representation in the GUI. */ enum NIType { NIT_INT, ///< The property is a simple integer @@ -278,7 +283,10 @@ struct NewGRFInspectWindow : Window { /** GRFID of the caller of this window, 0 if it has no caller. */ uint32 caller_grfid; - /** The currently editted parameter, to update the right one. */ + /** For ground vehicles: Index in vehicle chain. */ + uint chain_index; + + /** The currently edited parameter, to update the right one. */ byte current_edit_param; Scrollbar *vscroll; @@ -303,31 +311,81 @@ struct NewGRFInspectWindow : Window { this->SetDirty(); } - NewGRFInspectWindow(const WindowDesc *desc, WindowNumber wno) : Window() + /** + * 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(desc); + this->CreateNestedTree(); this->vscroll = this->GetScrollbar(WID_NGRFI_SCROLLBAR); - this->FinishInitNested(desc, wno); + 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 +400,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 +554,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,16 +611,57 @@ 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), NWidget(WWT_CAPTION, COLOUR_GREY, WID_NGRFI_CAPTION), SetDataTip(STR_NEWGRF_INSPECT_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_NGRFI_PARENT), SetDataTip(STR_NEWGRF_INSPECT_PARENT_BUTTON, STR_NEWGRF_INSPECT_PARENT_TOOLTIP), NWidget(WWT_SHADEBOX, COLOUR_GREY), + NWidget(WWT_DEFSIZEBOX, COLOUR_GREY), NWidget(WWT_STICKYBOX, COLOUR_GREY), EndContainer(), NWidget(NWID_HORIZONTAL), @@ -518,8 +673,15 @@ static const NWidgetPart _nested_newgrf_inspect_widgets[] = { EndContainer(), }; -static const WindowDesc _newgrf_inspect_desc( - WDP_AUTO, 400, 300, +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, 0, _nested_newgrf_inspect_widgets, lengthof(_nested_newgrf_inspect_widgets) @@ -539,11 +701,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); + NewGRFInspectWindow *w = AllocateWindowDescFront(feature == GSF_TRAINS || feature == GSF_ROADVEHICLES ? &_newgrf_inspect_chain_desc : &_newgrf_inspect_desc, wno); if (w == NULL) w = (NewGRFInspectWindow *)FindWindowById(WC_NEWGRF_INSPECT, wno); 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 @@ -630,11 +808,11 @@ struct SpriteAlignerWindow : Window { SpriteID current_sprite; ///< The currently shown sprite Scrollbar *vscroll; - SpriteAlignerWindow(const WindowDesc *desc, WindowNumber wno) : Window() + SpriteAlignerWindow(WindowDesc *desc, WindowNumber wno) : Window(desc) { - this->CreateNestedTree(desc); + this->CreateNestedTree(); this->vscroll = this->GetScrollbar(WID_SA_SCROLLBAR); - this->FinishInitNested(desc, wno); + this->FinishInitNested(wno); /* Oh yes, we assume there is at least one normal sprite! */ while (GetSpriteType(this->current_sprite) != ST_NORMAL) this->current_sprite++; @@ -776,7 +954,7 @@ struct SpriteAlignerWindow : Window { case WID_SA_LEFT: spr->x_offs -= ZOOM_LVL_BASE; break; case WID_SA_RIGHT: spr->x_offs += ZOOM_LVL_BASE; break; } - /* Ofcourse, we need to redraw the sprite, but where is it used? + /* Of course, we need to redraw the sprite, but where is it used? * Everywhere is a safe bet. */ MarkWholeScreenDirty(); break; @@ -814,7 +992,6 @@ struct SpriteAlignerWindow : Window { virtual void OnResize() { this->vscroll->SetCapacityFromWidget(this, WID_SA_LIST); - this->GetWidget(WID_SA_LIST)->widget_data = (this->vscroll->GetCapacity() << MAT_ROW_START) + (1 << MAT_COL_START); } }; @@ -864,7 +1041,7 @@ static const NWidgetPart _nested_sprite_aligner_widgets[] = { NWidget(NWID_VERTICAL), SetPIP(10, 5, 10), NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_SA_PICKER), SetDataTip(STR_SPRITE_ALIGNER_PICKER_BUTTON, STR_SPRITE_ALIGNER_PICKER_TOOLTIP), SetFill(1, 0), NWidget(NWID_HORIZONTAL), - NWidget(WWT_MATRIX, COLOUR_GREY, WID_SA_LIST), SetResize(1, 1), SetDataTip(0x101, STR_NULL), SetFill(1, 1), SetScrollbar(WID_SA_SCROLLBAR), + NWidget(WWT_MATRIX, COLOUR_GREY, WID_SA_LIST), SetResize(1, 1), SetMatrixDataTip(1, 0, STR_NULL), SetFill(1, 1), SetScrollbar(WID_SA_SCROLLBAR), NWidget(NWID_VSCROLLBAR, COLOUR_GREY, WID_SA_SCROLLBAR), EndContainer(), EndContainer(), @@ -872,8 +1049,8 @@ static const NWidgetPart _nested_sprite_aligner_widgets[] = { EndContainer(), }; -static const WindowDesc _sprite_aligner_desc( - WDP_AUTO, 400, 300, +static WindowDesc _sprite_aligner_desc( + WDP_AUTO, "sprite_aligner", 400, 300, WC_SPRITE_ALIGNER, WC_NONE, 0, _nested_sprite_aligner_widgets, lengthof(_nested_sprite_aligner_widgets) diff --git a/src/newgrf_engine.cpp b/src/newgrf_engine.cpp index c9d489e94..cdd62b7ae 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; @@ -177,22 +179,22 @@ static byte MapAircraftMovementState(const Aircraft *v) switch (v->state) { case HANGAR: /* The international airport is a special case as helicopters can land in - * front of the hanger. Helicopters also change their air.state to + * front of the hangar. Helicopters also change their air.state to * AMED_HELI_LOWER some time before actually descending. */ /* This condition only occurs for helicopters, during descent, - * to a landing by the hanger of an international airport. */ + * to a landing by the hangar of an international airport. */ if (amdflag & AMED_HELI_LOWER) return AMS_TTDP_HELI_LAND_AIRPORT; /* This condition only occurs for helicopters, before starting descent, - * to a landing by the hanger of an international airport. */ + * to a landing by the hangar of an international airport. */ if (amdflag & AMED_SLOWTURN) return AMS_TTDP_FLIGHT_TO_TOWER; /* The final two conditions apply to helicopters or aircraft. - * Has reached hanger? */ + * Has reached hangar? */ if (amdflag & AMED_EXACTPOS) return AMS_TTDP_HANGAR; - /* Still moving towards hanger. */ + /* Still moving towards hangar. */ return AMS_TTDP_TO_HANGAR; case TERM1: @@ -320,7 +322,7 @@ static byte MapAircraftMovementAction(const Aircraft *v) case STARTTAKEOFF: // Accelerating down runway case ENDTAKEOFF: // Ascent case HELITAKEOFF: - /* @todo Need to find which terminal (or hanger) we've come from. How? */ + /* @todo Need to find which terminal (or hangar) we've come from. How? */ return AMA_TTDP_PAD1_TO_TAKEOFF; case FLYING: @@ -360,7 +362,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; } @@ -546,7 +548,7 @@ static uint32 VehicleGetVariable(Vehicle *v, const VehicleScopeResolver *object, /* 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; + 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]; @@ -617,7 +619,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,8 +629,19 @@ 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 occurance + 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 +653,16 @@ 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) { 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 +671,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 +718,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); @@ -733,8 +751,8 @@ static uint32 VehicleGetVariable(Vehicle *v, const VehicleScopeResolver *object, } case 0x12: return Clamp(v->date_of_last_service - DAYS_TILL_ORIGINAL_BASE_YEAR, 0, 0xFFFF); case 0x13: return GB(Clamp(v->date_of_last_service - DAYS_TILL_ORIGINAL_BASE_YEAR, 0, 0xFFFF), 8, 8); - case 0x14: return v->service_interval; - case 0x15: return GB(v->service_interval, 8, 8); + case 0x14: return v->GetServiceInterval(); + case 0x15: return GB(v->GetServiceInterval(), 8, 8); case 0x16: return v->last_station_visited; case 0x17: return v->tick_counter; case 0x18: @@ -768,8 +786,8 @@ static uint32 VehicleGetVariable(Vehicle *v, const VehicleScopeResolver *object, case 0x39: return v->cargo_type; case 0x3A: return v->cargo_cap; case 0x3B: return GB(v->cargo_cap, 8, 8); - case 0x3C: return ClampToU16(v->cargo.Count()); - case 0x3D: return GB(ClampToU16(v->cargo.Count()), 8, 8); + case 0x3C: return ClampToU16(v->cargo.StoredCount()); + case 0x3D: return GB(ClampToU16(v->cargo.StoredCount()), 8, 8); case 0x3E: return v->cargo.Source(); case 0x3F: return ClampU(v->cargo.DaysInTransit(), 0, 0xFF); case 0x40: return ClampToU16(v->age); @@ -922,7 +940,7 @@ static uint32 VehicleGetVariable(Vehicle *v, const VehicleScopeResolver *object, if (totalsets == 0) return NULL; - uint set = (v->cargo.Count() * totalsets) / max((uint16)1, v->cargo_cap); + uint set = (v->cargo.StoredCount() * totalsets) / max((uint16)1, v->cargo_cap); set = min(set, totalsets - 1); return in_motion ? group->loaded[set] : group->loading[set]; @@ -935,7 +953,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 +976,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 +1035,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()); } @@ -1059,7 +1059,7 @@ bool UsesWagonOverride(const Vehicle *v) /** * Evaluate a newgrf callback for vehicles - * @param callback The callback to evalute + * @param callback The callback to evaluate * @param param1 First parameter of the callback * @param param2 Second parameter of the callback * @param engine Engine type of the vehicle to evaluate the callback for @@ -1068,32 +1068,25 @@ 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(); } /** * Evaluate a newgrf callback for vehicles with a different vehicle for parent scope. - * @param callback The callback to evalute + * @param callback The callback to evaluate * @param param1 First parameter of the callback * @param param2 Second parameter of the callback * @param engine Engine type of the vehicle to evaluate the callback for - * @param v The vehicle to evaluate the callback for, or NULL if it doesnt exist yet + * @param v The vehicle to evaluate the callback for, or NULL if it doesn't exist yet * @param parent The vehicle to use for parent scope * @return The value the callback returned, or CALLBACK_FAILED if it failed */ 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 +1111,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(); @@ -1239,7 +1232,7 @@ void CommitVehicleListOrderChanges() } QSortT(ordering.Begin(), ordering.Length(), EnginePreSort); - /* Apply Insertion-Sort opeations */ + /* Apply Insertion-Sort operations */ const ListOrderChange *end = _list_order_changes.End(); for (const ListOrderChange *it = _list_order_changes.Begin(); it != end; ++it) { EngineID source = it->engine; @@ -1285,7 +1278,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 +1286,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 7eb65f134..4a6f211c4 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 75e25c3d4..9bd77239a 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 11896a57d..b211c1cb4 100644 --- a/src/newgrf_gui.cpp +++ b/src/newgrf_gui.cpp @@ -29,12 +29,20 @@ #include "newgrf_text.h" #include "textfile_gui.h" #include "tilehighlight_func.h" +#include "fios.h" #include "widgets/newgrf_widget.h" #include "widgets/misc_widget.h" #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; + /** * Show the first NewGRF error we can find. */ @@ -83,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); @@ -114,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); } @@ -129,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); } @@ -154,7 +161,7 @@ struct NewGRFParametersWindow : public Window { bool action14present; ///< True if action14 information is present. bool editable; ///< Allow editing parameters. - NewGRFParametersWindow(const WindowDesc *desc, GRFConfig *c, bool editable) : Window(), + NewGRFParametersWindow(WindowDesc *desc, GRFConfig *c, bool editable) : Window(desc), grf_config(c), clicked_button(UINT_MAX), clicked_dropdown(false), @@ -165,11 +172,11 @@ struct NewGRFParametersWindow : public Window { { this->action14present = (c->num_valid_params != lengthof(c->param) || c->param_info.Length() != 0); - this->CreateNestedTree(desc); + this->CreateNestedTree(); this->vscroll = this->GetScrollbar(WID_NP_SCROLLBAR); this->GetWidget(WID_NP_SHOW_NUMPAR)->SetDisplayedPlane(this->action14present ? SZSP_HORIZONTAL : 0); this->GetWidget(WID_NP_SHOW_DESCRIPTION)->SetDisplayedPlane(this->action14present ? 0 : SZSP_HORIZONTAL); - this->FinishInitNested(desc); // Initializes 'this->line_height' as side effect. + this->FinishInitNested(); // Initializes 'this->line_height' as side effect. this->SetWidgetDisabledState(WID_NP_RESET, !this->editable); @@ -210,7 +217,7 @@ struct NewGRFParametersWindow : public Window { resize->width = 1; resize->height = this->line_height; - size->height = GB(this->GetWidget(widget)->widget_data, MAT_ROW_START, MAT_ROW_BITS) * this->line_height; + size->height = 5 * this->line_height; break; case WID_NP_DESCRIPTION: @@ -373,7 +380,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); @@ -455,9 +462,7 @@ struct NewGRFParametersWindow : public Window { virtual void OnResize() { - NWidgetCore *nwi = this->GetWidget(WID_NP_BACKGROUND); - this->vscroll->SetCapacity(nwi->current_y / this->line_height); - nwi->widget_data = (this->vscroll->GetCapacity() << MAT_ROW_START) + (1 << MAT_COL_START); + this->vscroll->SetCapacityFromWidget(this, WID_NP_BACKGROUND); } /** @@ -495,6 +500,7 @@ static const NWidgetPart _nested_newgrf_parameter_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_MAUVE), NWidget(WWT_CAPTION, COLOUR_MAUVE), SetDataTip(STR_NEWGRF_PARAMETERS_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_DEFSIZEBOX, COLOUR_MAUVE), EndContainer(), NWidget(NWID_SELECTION, INVALID_COLOUR, WID_NP_SHOW_NUMPAR), NWidget(WWT_PANEL, COLOUR_MAUVE), SetResize(1, 0), SetFill(1, 0), SetPIP(4, 0, 4), @@ -506,7 +512,7 @@ static const NWidgetPart _nested_newgrf_parameter_widgets[] = { EndContainer(), EndContainer(), NWidget(NWID_HORIZONTAL), - NWidget(WWT_MATRIX, COLOUR_MAUVE, WID_NP_BACKGROUND), SetMinimalSize(188, 182), SetResize(1, 1), SetFill(1, 0), SetDataTip(0x501, STR_NULL), SetScrollbar(WID_NP_SCROLLBAR), + NWidget(WWT_MATRIX, COLOUR_MAUVE, WID_NP_BACKGROUND), SetMinimalSize(188, 182), SetResize(1, 1), SetFill(1, 0), SetMatrixDataTip(1, 0, STR_NULL), SetScrollbar(WID_NP_SCROLLBAR), NWidget(NWID_VSCROLLBAR, COLOUR_MAUVE, WID_NP_SCROLLBAR), EndContainer(), NWidget(NWID_SELECTION, INVALID_COLOUR, WID_NP_SHOW_DESCRIPTION), @@ -523,8 +529,8 @@ static const NWidgetPart _nested_newgrf_parameter_widgets[] = { }; /** Window definition for the change grf parameters window */ -static const WindowDesc _newgrf_parameters_desc( - WDP_CENTER, 500, 208, +static WindowDesc _newgrf_parameters_desc( + WDP_CENTER, "settings_newgrf_config", 500, 208, WC_GRF_PARAMETERS, WC_NONE, 0, _nested_newgrf_parameter_widgets, lengthof(_nested_newgrf_parameter_widgets) @@ -561,7 +567,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: @@ -580,7 +586,25 @@ class DropDownListPresetItem : public DropDownListItem { } }; + +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 @@ -608,13 +632,13 @@ 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; Scrollbar *vscroll2; - NewGRFWindow(const WindowDesc *desc, bool editable, bool show_params, bool execute, GRFConfig **orig_list) : filter_editbox(EDITBOX_MAX_SIZE) + NewGRFWindow(WindowDesc *desc, bool editable, bool show_params, bool execute, GRFConfig **orig_list) : Window(desc), filter_editbox(EDITBOX_MAX_SIZE) { this->avail_sel = NULL; this->avail_pos = -1; @@ -630,17 +654,21 @@ struct NewGRFWindow : public Window, NewGRFScanCallback { CopyGRFConfigList(&this->actives, *orig_list, false); GetGRFPresetList(&_grf_preset_list); - this->CreateNestedTree(desc); + this->CreateNestedTree(); this->vscroll = this->GetScrollbar(WID_NS_SCROLLBAR); this->vscroll2 = this->GetScrollbar(WID_NS_SCROLL2BAR); this->GetWidget(WID_NS_SHOW_REMOVE)->SetDisplayedPlane(this->editable ? 0 : 1); this->GetWidget(WID_NS_SHOW_APPLY)->SetDisplayedPlane(this->editable ? 0 : this->show_params ? 1 : SZSP_HORIZONTAL); - this->FinishInitNested(desc, WN_GAME_OPTIONS_NEWGRF_STATE); + this->FinishInitNested(WN_GAME_OPTIONS_NEWGRF_STATE); this->querystrings[WID_NS_FILTER] = &this->filter_editbox; this->filter_editbox.cancel_button = QueryString::ACTION_CLEAR; - this->SetFocusedWidget(WID_NS_FILTER); + if (editable) { + this->SetFocusedWidget(WID_NS_FILTER); + } else { + this->DisableWidget(WID_NS_FILTER); + } this->avails.SetListing(this->last_sorting); this->avails.SetFiltering(this->last_filtering); @@ -655,6 +683,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); @@ -667,6 +696,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) { @@ -876,11 +943,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); } } @@ -898,7 +965,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: @@ -983,6 +1050,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; @@ -998,6 +1067,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(); @@ -1048,7 +1124,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(); } @@ -1160,10 +1236,8 @@ struct NewGRFWindow : public Window, NewGRFScanCallback { int i = 0; for (const GRFConfig *c = this->actives; c != NULL; c = c->next, i++) {} - this->vscroll->SetCapacityFromWidget(this, WID_NS_FILE_LIST); this->vscroll->SetCount(i + 1); // Reserve empty space for drag and drop handling. - this->vscroll2->SetCapacityFromWidget(this, WID_NS_AVAIL_LIST); if (this->avail_pos >= 0) this->vscroll2->ScrollTowards(this->avail_pos); break; } @@ -1178,6 +1252,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, @@ -1195,7 +1270,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 */ @@ -1229,7 +1305,7 @@ struct NewGRFWindow : public Window, NewGRFScanCallback { this->SetWidgetDisabledState(WID_NS_PRESET_SAVE, has_missing); } - virtual EventState OnKeyPress(uint16 key, uint16 keycode) + virtual EventState OnKeyPress(WChar key, uint16 keycode) { if (!this->editable) return ES_NOT_HANDLED; @@ -1363,7 +1439,7 @@ struct NewGRFWindow : public Window, NewGRFScanCallback { /** Sort grfs by name. */ static int CDECL NameSorter(const GRFConfig * const *a, const GRFConfig * const *b) { - int i = strnatcmp((*a)->GetName(), (*b)->GetName()); // Sort by name (natural sorting). + int i = strnatcmp((*a)->GetName(), (*b)->GetName(), true); // Sort by name (natural sorting). if (i != 0) return i; i = (*a)->version - (*b)->version; @@ -1432,6 +1508,7 @@ struct NewGRFWindow : public Window, NewGRFScanCallback { { if (this->avail_sel == NULL || !this->editable || HasBit(this->avail_sel->flags, GCF_INVALID)) return false; + int count = 0; GRFConfig **entry = NULL; GRFConfig **list; /* Find last entry in the list, checking for duplicate grfid on the way */ @@ -1441,8 +1518,13 @@ struct NewGRFWindow : public Window, NewGRFScanCallback { ShowErrorMessage(STR_NEWGRF_DUPLICATE_GRFID, INVALID_STRING_ID, WL_INFO); return false; } + count++; } if (entry == NULL) entry = list; + if (count >= MAX_NEWGRFS) { + ShowErrorMessage(STR_NEWGRF_TOO_MANY_NEWGRFS, INVALID_STRING_ID, WL_INFO); + return false; + } GRFConfig *c = new GRFConfig(*this->avail_sel); // Copy GRF details from scanned list. c->SetParameterDefaults(); @@ -1466,7 +1548,7 @@ struct NewGRFWindow : public Window, NewGRFScanCallback { #if defined(ENABLE_NETWORK) /** * Show the content list window with all missing grfs from the given list. - * @param list The list of grfs to check for missings / not exactly matching ones. + * @param list The list of grfs to check for missing / not exactly matching ones. */ void ShowMissingContentWindow(const GRFConfig *list) { @@ -1478,7 +1560,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; @@ -1584,12 +1666,12 @@ class NWidgetNewGRFDisplay : public NWidgetContainer { uint avs_extra_width = min_list_width - min_avs_width; // Additional width needed for avs to reach min_list_width. uint acs_extra_width = min_list_width - min_acs_width; // Additional width needed for acs to reach min_list_width. - /* Use 2 or 3 colmuns? */ + /* Use 2 or 3 columns? */ uint min_three_columns = min_avs_width + min_acs_width + min_inf_width + 2 * INTER_COLUMN_SPACING; uint min_two_columns = min_list_width + min_inf_width + INTER_COLUMN_SPACING; bool use_three_columns = this->editable && (min_three_columns + MIN_EXTRA_FOR_3_COLUMNS <= given_width); - /* Info panel is a seperate column in both modes. Compute its width first. */ + /* Info panel is a separate column in both modes. Compute its width first. */ uint extra_width, inf_width; if (use_three_columns) { extra_width = given_width - min_three_columns; @@ -1619,11 +1701,11 @@ class NWidgetNewGRFDisplay : public NWidgetContainer { acs_width = ComputeMaxSize(min_acs_width, acs_width, this->acs->GetHorizontalStepSize(sizing)) - this->acs->padding_left - this->acs->padding_right; - /* Never use fill_y on these; the minimal size is choosen, so that the 3 column view looks nice */ + /* Never use fill_y on these; the minimal size is chosen, so that the 3 column view looks nice */ uint avs_height = ComputeMaxSize(this->avs->smallest_y, given_height, this->avs->resize_y); uint acs_height = ComputeMaxSize(this->acs->smallest_y, given_height, this->acs->resize_y); - /* Assign size and position to the childs. */ + /* Assign size and position to the children. */ if (rtl) { x += this->inf->padding_left; this->inf->AssignSizePosition(sizing, x, y + this->inf->padding_top, inf_width, inf_height, rtl); @@ -1662,7 +1744,7 @@ class NWidgetNewGRFDisplay : public NWidgetContainer { if (this->editable) extra_height -= avs_height - this->avs->smallest_y; uint acs_height = ComputeMaxSize(this->acs->smallest_y, this->acs->smallest_y + extra_height, this->acs->resize_y); - /* Assign size and position to the childs. */ + /* Assign size and position to the children. */ if (rtl) { x += this->inf->padding_left; this->inf->AssignSizePosition(sizing, x, y + this->inf->padding_top, inf_width, inf_height, rtl); @@ -1753,6 +1835,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), @@ -1854,6 +1938,7 @@ static const NWidgetPart _nested_newgrf_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_MAUVE), NWidget(WWT_CAPTION, COLOUR_MAUVE), SetDataTip(STR_NEWGRF_SETTINGS_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_DEFSIZEBOX, COLOUR_MAUVE), EndContainer(), NWidget(WWT_PANEL, COLOUR_MAUVE), NWidgetFunction(NewGRFDisplay), SetPadding(WD_RESIZEBOX_WIDTH, WD_RESIZEBOX_WIDTH, 2, WD_RESIZEBOX_WIDTH), @@ -1866,8 +1951,8 @@ static const NWidgetPart _nested_newgrf_widgets[] = { }; /* Window definition of the manage newgrfs window */ -static const WindowDesc _newgrf_desc( - WDP_CENTER, 300, 263, +static WindowDesc _newgrf_desc( + WDP_CENTER, "settings_newgrf", 300, 263, WC_GAME_OPTIONS, WC_NONE, 0, _nested_newgrf_widgets, lengthof(_nested_newgrf_widgets) @@ -1922,6 +2007,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), @@ -1937,8 +2178,8 @@ static const NWidgetPart _nested_scan_progress_widgets[] = { }; /** Description of the widgets and other settings of the window. */ -static const WindowDesc _scan_progress_desc( - WDP_CENTER, 0, 0, +static WindowDesc _scan_progress_desc( + WDP_CENTER, NULL, 0, 0, WC_MODAL_PROGRESS, WC_NONE, 0, _nested_scan_progress_widgets, lengthof(_nested_scan_progress_widgets) @@ -1950,9 +2191,9 @@ struct ScanProgressWindow : public Window { int scanned; ///< The number of NewGRFs that we have seen. /** Create the window. */ - ScanProgressWindow() : Window(), last_name(NULL), scanned(0) + ScanProgressWindow() : Window(&_scan_progress_desc), last_name(NULL), scanned(0) { - this->InitNested(&_scan_progress_desc, 1); + this->InitNested(1); } /** Free the last name buffer. */ @@ -2018,9 +2259,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 0f0cc3138..6c9c614af 100644 --- a/src/newgrf_house.cpp +++ b/src/newgrf_house.cpp @@ -24,22 +24,24 @@ #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. * @param ro Surrounding resolver. - * @param house_id Houe type being queried. + * @param house_id House type being queried. * @param tile %Tile containing the house. * @param town %Town containing the house. * @param not_yet_constructed House is still under construction. * @param initial_random_bits Random bits during construction checks. * @param watched_cargo_triggers Cargo types that triggered the watched cargo callback. */ -HouseScopeResolver::HouseScopeResolver(ResolverObject *ro, HouseID house_id, TileIndex tile, Town *town, +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; @@ -535,9 +534,9 @@ bool CanDeleteHouse(TileIndex tile) { const HouseSpec *hs = HouseSpec::Get(GetHouseType(tile)); - /* Humans are always allowed to remove buildings, as is water and + /* Humans are always allowed to remove buildings, as is water and disasters and * anyone using the scenario editor. */ - if (Company::IsValidHumanID(_current_company) || _current_company == OWNER_WATER || _current_company == OWNER_NONE) { + if (Company::IsValidHumanID(_current_company) || _current_company == OWNER_WATER || _current_company == OWNER_NONE || _game_mode == GM_EDITOR || _generating_world) { return true; } @@ -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 d6d4beb5d..37c167947 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 b1cb80be3..a7ae4c01f 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. */ @@ -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; } @@ -63,11 +65,11 @@ uint32 GetIndustryIDAtOffset(TileIndex tile, const Industry *i, uint32 cur_grfid const IndustryTileSpec *indtsp = GetIndustryTileSpec(gfx); if (gfx < NEW_INDUSTRYTILEOFFSET) { // Does it belongs to an old type? - /* It is an old tile. We have to see if it's been overriden */ + /* It is an old tile. We have to see if it's been overridden */ if (indtsp->grf_prop.override == INVALID_INDUSTRYTILE) { // has it been overridden? return 0xFF << 8 | gfx; // no. Tag FF + the gfx id of that tile } - /* Overriden */ + /* Overridden */ const IndustryTileSpec *tile_ovr = GetIndustryTileSpec(indtsp->grf_prop.override); if (tile_ovr->grf_prop.grffile->grfid == cur_grfid) { @@ -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; @@ -225,7 +227,9 @@ static uint32 GetCountAndDistanceOfClosestInstance(byte param_setID, byte layout } /* Manhattan distance of closes dry/water tile */ - case 0x43: return GetClosestWaterDistance(this->tile, (indspec->behaviour & INDUSTRYBEH_BUILT_ONWATER) == 0); + case 0x43: + if (this->tile == INVALID_TILE) break; + return GetClosestWaterDistance(this->tile, (indspec->behaviour & INDUSTRYBEH_BUILT_ONWATER) == 0); /* Layout number */ case 0x44: return this->industry->selected_layout; @@ -249,19 +253,23 @@ 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: { + if (this->tile == INVALID_TILE) break; TileIndex tile = GetNearbyTile(parameter, this->tile, false); return this->industry->TileBelongsToIndustry(tile) ? GetIndustryRandomBits(tile) : 0; } /* Land info of nearby tiles */ - case 0x62: return GetNearbyIndustryTileInformation(parameter, this->tile, INVALID_INDUSTRY, false, this->ro->grffile->grf_version >= 8); + case 0x62: + if (this->tile == INVALID_TILE) break; + return GetNearbyIndustryTileInformation(parameter, this->tile, INVALID_INDUSTRY, false, this->ro.grffile->grf_version >= 8); /* Animation stage of nearby tiles */ case 0x63: { + if (this->tile == INVALID_TILE) break; TileIndex tile = GetNearbyTile(parameter, this->tile, false); if (this->industry->TileBelongsToIndustry(tile)) { return GetAnimationFrame(tile); @@ -270,11 +278,17 @@ static uint32 GetCountAndDistanceOfClosestInstance(byte param_setID, byte layout } /* Distance of nearest industry of given type */ - case 0x64: return GetClosestIndustry(this->tile, MapNewGRFIndustryType(parameter, indspec->grf_prop.grffile->grfid), this->industry); + case 0x64: + if (this->tile == INVALID_TILE) break; + return GetClosestIndustry(this->tile, MapNewGRFIndustryType(parameter, indspec->grf_prop.grffile->grfid), this->industry); /* Get town zone and Manhattan distance of closest town */ - case 0x65: return GetTownRadiusGroup(this->industry->town, this->tile) << 16 | min(DistanceManhattan(this->tile, this->industry->town->xy), 0xFFFF); + case 0x65: + if (this->tile == INVALID_TILE) break; + return GetTownRadiusGroup(this->industry->town, this->tile) << 16 | min(DistanceManhattan(this->tile, this->industry->town->xy), 0xFFFF); /* Get square of Euclidian distance of closes town */ - case 0x66: return GetTownRadiusGroup(this->industry->town, this->tile) << 16 | min(DistanceSquare(this->tile, this->industry->town->xy), 0xFFFF); + case 0x66: + if (this->tile == INVALID_TILE) break; + return GetTownRadiusGroup(this->industry->town, this->tile) << 16 | min(DistanceSquare(this->tile, this->industry->town->xy), 0xFFFF); /* Count of industry, distance of closest instance * 68 is the same as 67, but with a filtering on selected layout */ @@ -387,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); @@ -417,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() @@ -435,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; } @@ -454,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; @@ -476,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(); } /** @@ -509,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); } /** @@ -582,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 5c95fcdcb..57e44e8c0 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 d23a38298..90a17550d 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,16 +211,14 @@ 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); - if (group == NULL || group->type != SGT_TILELAYOUT) { - return false; - } else { - /* Limit the building stage to the number of stages supplied. */ - const TileLayoutSpriteGroup *tlgroup = (const TileLayoutSpriteGroup *)group; - byte stage = GetIndustryConstructionStage(ti->tile); - IndustryDrawTileLayout(ti, tlgroup, i->random_colour, stage, gfx); - return true; - } + const SpriteGroup *group = object.Resolve(); + if (group == NULL || group->type != SGT_TILELAYOUT) return false; + + /* Limit the building stage to the number of stages supplied. */ + const TileLayoutSpriteGroup *tlgroup = (const TileLayoutSpriteGroup *)group; + byte stage = GetIndustryConstructionStage(ti->tile); + IndustryDrawTileLayout(ti, tlgroup, i->random_colour, stage, gfx); + return true; } extern bool IsSlopeRefused(Slope current, Slope refused); @@ -236,7 +234,7 @@ extern bool IsSlopeRefused(Slope current, Slope refused); * @param initial_random_bits Random bits of industry after construction * @param founder Industry founder * @param creation_type The circumstances the industry is created under. - * @return Suceeded or failed command. + * @return Succeeded or failed command. */ CommandCost PerformIndustryTileSlopeCheck(TileIndex ind_base_tile, TileIndex ind_tile, const IndustryTileSpec *its, IndustryType type, IndustryGfx gfx, uint itspec_index, uint16 initial_random_bits, Owner founder, IndustryAvailabilityCallType creation_type) { @@ -258,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. */ @@ -330,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 f5b88db83..394f75e1c 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 1db4b02c6..3f48a819f 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 @@ static uint32 GetCountAndDistanceOfClosestInstance(byte local_id, uint32 grfid, 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 4ccca97b8..4a3b770d2 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 @@ struct ObjectResolverObject : public ResolverObject { 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 36ac7260a..872a3a7f6 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; } /** @@ -104,8 +108,8 @@ SpriteID GetCustomRailSprite(const RailtypeInfo *rti, TileIndex tile, RailTypeSp 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; return group->GetResult(); @@ -127,9 +131,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 c1977eaf8..9b00bf5bf 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) { diff --git a/src/newgrf_sound.cpp b/src/newgrf_sound.cpp index fc345ded8..60ee60916 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; @@ -198,7 +200,7 @@ bool PlayVehicleSound(const Vehicle *v, VehicleSoundEvent event) } /** - * Play a NewGRF sound effect at the location of a specfic tile. + * Play a NewGRF sound effect at the location of a specific tile. * @param file NewGRF triggering the sound effect. * @param sound_id Sound effect the NewGRF wants to play. * @param tile Location of the effect. diff --git a/src/newgrf_spritegroup.cpp b/src/newgrf_spritegroup.cpp index 0bbf467b5..624b4d547 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 evalute the feature specific variables */ + /* 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() {} @@ -117,13 +138,13 @@ ScopeResolver::~ScopeResolver() {} /** * Resolver constructor. - * @param grffile NewGRF file asscoiated with the object (or \c NULL if none). + * @param grffile NewGRF file associated with the object (or \c NULL if none). * @param callback Callback code being resolved (default value is #CBID_NO_CALLBACK). * @param callback_param1 First parameter (var 10) of the callback (only used when \a callback is also set). * @param callback_param2 Second parameter (var 18) of the callback (only used when \a callback is also set). */ ResolverObject::ResolverObject(const GRFFile *grffile, CallbackID callback, uint32 callback_param1, uint32 callback_param2) - : default_scope(this) + : 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 93e2e58dc..0a7705d66 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 @@ struct SpriteGroup : SpriteGroupPool::PoolItem<&_spritegroup_pool> { 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. */ @@ -161,8 +139,8 @@ enum DeterministicSpriteGroupAdjustOperation { DSGA_OP_RST, ///< return b DSGA_OP_STOP, ///< store a into persistent storage, indexed by b, return a DSGA_OP_ROR, ///< rotate a b positions to the right - DSGA_OP_SCMP, ///< (signed) comparision (a < b -> 0, a == b = 1, a > b = 2) - DSGA_OP_UCMP, ///< (unsigned) comparision (a < b -> 0, a == b = 1, a > b = 2) + DSGA_OP_SCMP, ///< (signed) comparison (a < b -> 0, a == b = 1, a > b = 2) + DSGA_OP_UCMP, ///< (unsigned) comparison (a < b -> 0, a == b = 1, a > b = 2) DSGA_OP_SHL, ///< a << b DSGA_OP_SHR, ///< (unsigned) a >> b DSGA_OP_SAR, ///< (signed) a >> b @@ -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 91a1fd068..cd5dad7b4 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, @@ -73,8 +75,8 @@ struct ETileArea : TileArea { Axis axis = GetRailStationAxis(tile); TileIndexDiff delta = TileOffsByDiagDir(AxisToDiagDir(axis)); - for (end = tile; IsRailStationTile(end + delta) && IsCompatibleTrainStationTile(tile, end + delta); end += delta) { /* Nothing */ } - for (start = tile; IsRailStationTile(start - delta) && IsCompatibleTrainStationTile(tile, start - delta); start -= delta) { /* Nothing */ } + for (end = tile; IsRailStationTile(end + delta) && IsCompatibleTrainStationTile(end + delta, tile); end += delta) { /* Nothing */ } + for (start = tile; IsRailStationTile(start - delta) && IsCompatibleTrainStationTile(start - delta, tile); start -= delta) { /* Nothing */ } this->tile = start; this->w = TileX(end) - TileX(start) + 1; @@ -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) { @@ -421,17 +423,17 @@ uint32 Station::GetNewGRFVariable(const ResolverObject *object, byte variable, b const GoodsEntry *ge = &this->goods[c]; switch (variable) { - case 0x60: return min(ge->cargo.Count(), 4095); + case 0x60: return min(ge->cargo.TotalCount(), 4095); case 0x61: return ge->HasVehicleEverTriedLoading() ? ge->time_since_pickup : 0; - case 0x62: return HasBit(ge->acceptance_pickup, GoodsEntry::GES_PICKUP) ? ge->rating : 0xFFFFFFFF; + 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); } } } @@ -440,8 +442,8 @@ uint32 Station::GetNewGRFVariable(const ResolverObject *object, byte variable, b if (variable >= 0x8C && variable <= 0xEC) { const GoodsEntry *g = &this->goods[GB(variable - 0x8C, 3, 4)]; switch (GB(variable - 0x8C, 0, 3)) { - case 0: return g->cargo.Count(); - case 1: return GB(min(g->cargo.Count(), 4095), 0, 4) | (GB(g->acceptance_pickup, GoodsEntry::GES_ACCEPTANCE, 1) << 7); + case 0: return g->cargo.TotalCount(); + 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 @@ -507,12 +509,12 @@ uint32 Waypoint::GetNewGRFVariable(const ResolverObject *object, byte variable, case CT_DEFAULT: for (CargoID cargo_type = 0; cargo_type < NUM_CARGO; cargo_type++) { - cargo += st->goods[cargo_type].cargo.Count(); + cargo += st->goods[cargo_type].cargo.TotalCount(); } break; default: - cargo = st->goods[this->station_scope.cargo_type].cargo.Count(); + cargo = st->goods[this->station_scope.cargo_type].cargo.TotalCount(); break; } @@ -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,51 +602,18 @@ 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.Empty()) { - 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 * @param st Station (NULL in GUI) * @param tile Station tile being drawn (INVALID_TILE in GUI) * @param var10 Value to put in variable 10; normally 0; 1 when resolving the groundsprite and SSF_SEPARATE_GROUND is set. - * @return First sprite of the Action 1 spriteset ot use, minus an offset of 0x42D to accommodate for weird NewGRF specs. + * @return First sprite of the Action 1 spriteset to use, minus an offset of 0x42D to accommodate for weird NewGRF specs. */ 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 slighty "wrong" (as per specs) looking stations, + * 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; } @@ -730,6 +723,8 @@ int AllocateSpecToStation(const StationSpec *statspec, BaseStation *st, bool exe st->speclist[i].spec = statspec; st->speclist[i].grfid = statspec->grf_prop.grffile->grfid; st->speclist[i].localidx = statspec->grf_prop.local_id; + + StationUpdateCachedTriggers(st); } return i; @@ -771,11 +766,12 @@ void DeallocateSpecFromStation(BaseStation *st, byte specindex) st->num_specs = 0; st->speclist = NULL; st->cached_anim_triggers = 0; + st->cached_cargo_triggers = 0; return; } } - StationUpdateAnimTriggers(st); + StationUpdateCachedTriggers(st); } /** @@ -844,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); @@ -966,19 +962,104 @@ void TriggerStationAnimation(BaseStation *st, TileIndex tile, StationAnimationTr } } +/** + * Trigger station randomisation + * @param st station being triggered + * @param tile specific tile of platform to trigger + * @param trigger trigger type + * @param cargo_type cargo type causing trigger + */ +void TriggerStationRandomisation(Station *st, TileIndex tile, StationRandomTrigger trigger, CargoID cargo_type) +{ + /* List of coverage areas for each animation trigger */ + static const TriggerArea tas[] = { + TA_WHOLE, TA_WHOLE, TA_PLATFORM, TA_PLATFORM, TA_PLATFORM, TA_PLATFORM + }; + + /* Get Station if it wasn't supplied */ + if (st == NULL) st = Station::GetByTile(tile); + + /* Check the cached cargo trigger bitmask to see if we need + * to bother with any further processing. */ + if (st->cached_cargo_triggers == 0) return; + if (cargo_type != CT_INVALID && !HasBit(st->cached_cargo_triggers, cargo_type)) return; + + uint32 whole_reseed = 0; + ETileArea area = ETileArea(st, tile, tas[trigger]); + + uint32 empty_mask = 0; + if (trigger == SRT_CARGO_TAKEN) { + /* Create a bitmask of completely empty cargo types to be matched */ + for (CargoID i = 0; i < NUM_CARGO; i++) { + if (st->goods[i].cargo.TotalCount() == 0) { + SetBit(empty_mask, i); + } + } + } + + /* Convert trigger to bit */ + uint8 trigger_bit = 1 << trigger; + + /* Check all tiles over the station to check if the specindex is still in use */ + TILE_AREA_LOOP(tile, area) { + if (st->TileBelongsToRailStation(tile)) { + const StationSpec *ss = GetStationSpec(tile); + if (ss == NULL) continue; + + /* Cargo taken "will only be triggered if all of those + * cargo types have no more cargo waiting." */ + if (trigger == SRT_CARGO_TAKEN) { + if ((ss->cargo_triggers & ~empty_mask) != 0) continue; + } + + if (cargo_type == CT_INVALID || HasBit(ss->cargo_triggers, cargo_type)) { + StationResolverObject object(ss, st, tile, CBID_RANDOM_TRIGGER, 0); + object.trigger = trigger_bit; + + const SpriteGroup *group = object.Resolve(); + if (group == NULL) continue; + + uint32 reseed = object.GetReseedSum(); + if (reseed != 0) { + whole_reseed |= reseed; + reseed >>= 16; + + /* Set individual tile random bits */ + uint8 random_bits = GetStationTileRandomBits(tile); + random_bits &= ~reseed; + random_bits |= Random() & reseed; + SetStationTileRandomBits(tile, random_bits); + + MarkTileDirtyByTile(tile); + } + } + } + } + + /* Update whole station random bits */ + if ((whole_reseed & 0xFFFF) != 0) { + st->random_bits &= ~whole_reseed; + st->random_bits |= Random() & whole_reseed; + } +} + /** * Update the cached animation trigger bitmask for a station. * @param st Station to update. */ -void StationUpdateAnimTriggers(BaseStation *st) +void StationUpdateCachedTriggers(BaseStation *st) { st->cached_anim_triggers = 0; + st->cached_cargo_triggers = 0; /* Combine animation trigger bitmask for all station specs * of this station. */ for (uint i = 0; i < st->num_specs; i++) { const StationSpec *ss = st->speclist[i].spec; - if (ss != NULL) st->cached_anim_triggers |= ss->animation.triggers; + if (ss != NULL) { + st->cached_anim_triggers |= ss->animation.triggers; + st->cached_cargo_triggers |= ss->cargo_triggers; + } } } diff --git a/src/newgrf_station.h b/src/newgrf_station.h index a536687a6..ffb827cb3 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; @@ -90,6 +90,16 @@ enum StationSpecFlags { SSF_EXTENDED_FOUNDATIONS, ///< Extended foundation block instead of simple. }; +/** Randomisation triggers for stations */ +enum StationRandomTrigger { + SRT_NEW_CARGO, ///< Trigger station on new cargo arrival. + SRT_CARGO_TAKEN, ///< Trigger station when cargo is completely taken. + SRT_TRAIN_ARRIVES, ///< Trigger platform when train arrives. + SRT_TRAIN_DEPARTS, ///< Trigger platform when train leaves. + SRT_TRAIN_LOADS, ///< Trigger platform when train loads/unloads. + SRT_PATH_RESERVATION, ///< Trigger platform when train reserves path. +}; + /* Station layout for given dimensions - it is a two-dimensional array * where index is computed as (x * platforms) + platform. */ typedef byte *StationLayout; @@ -108,12 +118,12 @@ struct StationSpec { /** * Bitmask of number of platforms available for the station. - * 0..6 correpsond to 1..7, while bit 7 corresponds to >7 platforms. + * 0..6 correspond to 1..7, while bit 7 corresponds to >7 platforms. */ byte disallowed_platforms; /** * Bitmask of platform lengths available for the station. - * 0..6 correpsond to 1..7, while bit 7 corresponds to >7 tiles long. + * 0..6 correspond to 1..7, while bit 7 corresponds to >7 tiles long. */ byte disallowed_lengths; @@ -176,6 +186,7 @@ bool DrawStationTile(int x, int y, RailType railtype, Axis axis, StationClassID void AnimateStationTile(TileIndex tile); void TriggerStationAnimation(BaseStation *st, TileIndex tile, StationAnimationTrigger trigger, CargoID cargo_type = CT_INVALID); -void StationUpdateAnimTriggers(BaseStation *st); +void TriggerStationRandomisation(Station *st, TileIndex tile, StationRandomTrigger trigger, CargoID cargo_type = CT_INVALID); +void StationUpdateCachedTriggers(BaseStation *st); #endif /* NEWGRF_STATION_H */ diff --git a/src/newgrf_storage.cpp b/src/newgrf_storage.cpp index ac91a122f..e91e1f90c 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 f5044b05d..ae9782d88 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 be6c4713d..549353122 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 @@ -182,7 +121,7 @@ struct GRFText { GRFText(byte langid_, const char *text_, size_t len_) : next(NULL), len(len_), langid(langid_) { /* We need to use memcpy instead of strcpy due to - * the possibility of "choice lists" and therefor + * the possibility of "choice lists" and therefore * intermediate string terminators. */ memcpy(this->text, text_, len); } @@ -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. */ @@ -432,8 +371,8 @@ char *TranslateTTDPatchCodes(uint32 grfid, uint8 language_id, bool allow_newline switch (c) { case 0x01: if (str[0] == '\0') goto string_end; - d += Utf8Encode(d, SCC_SETX); - *d++ = *str++; + d += Utf8Encode(d, ' '); + str++; break; case 0x0A: break; case 0x0D: @@ -447,9 +386,8 @@ char *TranslateTTDPatchCodes(uint32 grfid, uint8 language_id, bool allow_newline case 0x0F: d += Utf8Encode(d, SCC_BIGFONT); break; case 0x1F: if (str[0] == '\0' || str[1] == '\0') goto string_end; - d += Utf8Encode(d, SCC_SETXY); - *d++ = *str++; - *d++ = *str++; + d += Utf8Encode(d, ' '); + str += 2; break; case 0x7B: case 0x7C: @@ -585,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"); @@ -755,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; } @@ -810,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; @@ -881,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)); @@ -938,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; } }; @@ -987,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++) { @@ -1023,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(); @@ -1065,8 +1049,15 @@ 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; } } @@ -1118,6 +1109,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 081e7e36c..6587fc1fe 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 95cab9643..2f48eb757 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 3f6094cdb..145571e8a 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 29ca06817..42aae3f14 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/newgrf_townname.h b/src/newgrf_townname.h index e6b8ec2be..0b1b389cb 100644 --- a/src/newgrf_townname.h +++ b/src/newgrf_townname.h @@ -18,7 +18,7 @@ #include "strings_type.h" struct NamePart { - byte prob; ///< The relative probablity of the following name to appear in the bottom 7 bits. + byte prob; ///< The relative probability of the following name to appear in the bottom 7 bits. union { char *text; ///< If probability bit 7 is clear byte id; ///< If probability bit 7 is set diff --git a/src/news_gui.cpp b/src/news_gui.cpp index e8fafaa4e..7098b315b 100644 --- a/src/news_gui.cpp +++ b/src/news_gui.cpp @@ -38,9 +38,11 @@ #include "table/strings.h" +#include "safeguards.h" + const NewsItem *_statusbar_news_item = NULL; -static uint MIN_NEWS_AMOUNT = 30; ///< prefered minimum amount of news messages +static uint MIN_NEWS_AMOUNT = 30; ///< preferred minimum amount of news messages static uint _total_news = 0; ///< current number of news items static NewsItem *_oldest_news = NULL; ///< head of news items queue static NewsItem *_latest_news = NULL; ///< tail of news items queue @@ -89,8 +91,8 @@ static const NWidgetPart _nested_normal_news_widgets[] = { EndContainer(), }; -static const WindowDesc _normal_news_desc( - WDP_MANUAL, 0, 0, +static WindowDesc _normal_news_desc( + WDP_MANUAL, NULL, 0, 0, WC_NEWS_WINDOW, WC_NONE, 0, _nested_normal_news_widgets, lengthof(_nested_normal_news_widgets) @@ -116,8 +118,8 @@ static const NWidgetPart _nested_vehicle_news_widgets[] = { EndContainer(), }; -static const WindowDesc _vehicle_news_desc( - WDP_MANUAL, 0, 0, +static WindowDesc _vehicle_news_desc( + WDP_MANUAL, NULL, 0, 0, WC_NEWS_WINDOW, WC_NONE, 0, _nested_vehicle_news_widgets, lengthof(_nested_vehicle_news_widgets) @@ -147,8 +149,8 @@ static const NWidgetPart _nested_company_news_widgets[] = { EndContainer(), }; -static const WindowDesc _company_news_desc( - WDP_MANUAL, 0, 0, +static WindowDesc _company_news_desc( + WDP_MANUAL, NULL, 0, 0, WC_NEWS_WINDOW, WC_NONE, 0, _nested_company_news_widgets, lengthof(_nested_company_news_widgets) @@ -170,8 +172,8 @@ static const NWidgetPart _nested_thin_news_widgets[] = { EndContainer(), }; -static const WindowDesc _thin_news_desc( - WDP_MANUAL, 0, 0, +static WindowDesc _thin_news_desc( + WDP_MANUAL, NULL, 0, 0, WC_NEWS_WINDOW, WC_NONE, 0, _nested_thin_news_widgets, lengthof(_nested_thin_news_widgets) @@ -194,8 +196,8 @@ static const NWidgetPart _nested_small_news_widgets[] = { EndContainer(), }; -static const WindowDesc _small_news_desc( - WDP_MANUAL, 0, 0, +static WindowDesc _small_news_desc( + WDP_MANUAL, NULL, 0, 0, WC_NEWS_WINDOW, WC_NONE, 0, _nested_small_news_widgets, lengthof(_nested_small_news_widgets) @@ -204,7 +206,7 @@ static const WindowDesc _small_news_desc( /** * Window layouts for news items. */ -static const WindowDesc* _news_window_layout[] = { +static WindowDesc* _news_window_layout[] = { &_thin_news_desc, ///< NF_THIN &_small_news_desc, ///< NF_SMALL &_normal_news_desc, ///< NF_NORMAL @@ -212,7 +214,7 @@ static const WindowDesc* _news_window_layout[] = { &_company_news_desc, ///< NF_COMPANY }; -const WindowDesc* GetNewsWindowLayout(NewsFlag flags) +WindowDesc* GetNewsWindowLayout(NewsFlag flags) { uint layout = GB(flags, NFB_WINDOW_LAYOUT, NFB_WINDOW_LAYOUT_COUNT); assert(layout < lengthof(_news_window_layout)); @@ -263,7 +265,7 @@ struct NewsWindow : Window { const NewsItem *ni; ///< News item to display. static uint duration; ///< Remaining time for showing current news message (may only be accessed while a news item is displayed). - NewsWindow(const WindowDesc *desc, const NewsItem *ni) : Window(), ni(ni) + NewsWindow(WindowDesc *desc, const NewsItem *ni) : Window(desc), ni(ni) { NewsWindow::duration = 555; const Window *w = FindWindowByClass(WC_SEND_NETWORK_MSG); @@ -272,12 +274,12 @@ struct NewsWindow : Window { this->flags |= WF_DISABLE_VP_SCROLL; - this->CreateNestedTree(desc); + this->CreateNestedTree(); /* For company news with a face we have a separate headline in param[0] */ if (desc == &_company_news_desc) this->GetWidget(WID_N_TITLE)->widget_data = this->ni->params[0]; - this->FinishInitNested(desc, 0); + this->FinishInitNested(0); /* Initialize viewport if it exists. */ NWidgetViewport *nvp = this->GetWidget(WID_N_VIEWPORT); @@ -304,7 +306,7 @@ struct NewsWindow : Window { GfxFillRect(r.left, r.bottom, r.right, r.bottom, PC_BLACK); } - virtual Point OnInitialPosition(const WindowDesc *desc, int16 sm_width, int16 sm_height, int window_number) + virtual Point OnInitialPosition(int16 sm_width, int16 sm_height, int window_number) { Point pt = { 0, _screen.height }; return pt; @@ -449,7 +451,7 @@ struct NewsWindow : Window { } } - virtual EventState OnKeyPress(uint16 key, uint16 keycode) + virtual EventState OnKeyPress(WChar key, uint16 keycode) { if (keycode == WKC_SPACE) { /* Don't continue. */ @@ -724,7 +726,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); } @@ -909,8 +911,14 @@ void ShowLastNewsMessage() } else if (_forced_news == NULL) { /* Not forced any news yet, show the current one, unless a news window is * open (which can only be the current one), then show the previous item */ - const Window *w = FindWindowById(WC_NEWS_WINDOW, 0); - ni = (w == NULL || (_current_news == _oldest_news)) ? _current_news : _current_news->prev; + if (_current_news == NULL) { + /* No news were shown yet resp. the last shown one was already deleted. + * Threat this as if _forced_news reached _oldest_news; so, wrap around and start anew with the latest. */ + ni = _latest_news; + } else { + const Window *w = FindWindowById(WC_NEWS_WINDOW, 0); + ni = (w == NULL || (_current_news == _oldest_news)) ? _current_news : _current_news->prev; + } } else if (_forced_news == _oldest_news) { /* We have reached the oldest news, start anew with the latest */ ni = _latest_news; @@ -977,7 +985,7 @@ static void DrawNewsString(uint left, uint right, int y, TextColour colour, cons } *dest = '\0'; - /* Truncate and show string; postfixed by '...' if neccessary */ + /* Truncate and show string; postfixed by '...' if necessary */ DrawString(left, right, y, buffer2, colour); } @@ -985,16 +993,16 @@ struct MessageHistoryWindow : Window { static const int top_spacing; ///< Additional spacing at the top of the #WID_MH_BACKGROUND widget. static const int bottom_spacing; ///< Additional spacing at the bottom of the #WID_MH_BACKGROUND widget. - int line_height; /// < Height of a single line in the news histoy window including spacing. + int line_height; /// < Height of a single line in the news history window including spacing. int date_width; /// < Width needed for the date part. Scrollbar *vscroll; - MessageHistoryWindow(const WindowDesc *desc) : Window() + MessageHistoryWindow(WindowDesc *desc) : Window(desc) { - this->CreateNestedTree(desc); + this->CreateNestedTree(); this->vscroll = this->GetScrollbar(WID_MH_SCROLLBAR); - this->FinishInitNested(desc); // Initializes 'this->line_height' and 'this->date_width'. + this->FinishInitNested(); // Initializes 'this->line_height' and 'this->date_width'. this->OnInvalidateData(0); } @@ -1078,7 +1086,7 @@ struct MessageHistoryWindow : Window { virtual void OnResize() { - this->vscroll->SetCapacity(this->GetWidget(WID_MH_BACKGROUND)->current_y / this->line_height); + this->vscroll->SetCapacityFromWidget(this, WID_MH_BACKGROUND); } }; @@ -1090,6 +1098,7 @@ static const NWidgetPart _nested_message_history[] = { NWidget(WWT_CLOSEBOX, COLOUR_BROWN), NWidget(WWT_CAPTION, COLOUR_BROWN), SetDataTip(STR_MESSAGE_HISTORY, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), NWidget(WWT_SHADEBOX, COLOUR_BROWN), + NWidget(WWT_DEFSIZEBOX, COLOUR_BROWN), NWidget(WWT_STICKYBOX, COLOUR_BROWN), EndContainer(), @@ -1103,8 +1112,8 @@ static const NWidgetPart _nested_message_history[] = { EndContainer(), }; -static const WindowDesc _message_history_desc( - WDP_AUTO, 400, 140, +static WindowDesc _message_history_desc( + WDP_AUTO, "list_news", 400, 140, WC_MESSAGE_HISTORY, WC_NONE, 0, _nested_message_history, lengthof(_nested_message_history) diff --git a/src/object_base.h b/src/object_base.h index 8f3ddb1b4..47e5a7f94 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 9ba2ba83c..4038288d0 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; } } @@ -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 9217bb62f..c55041886 100644 --- a/src/object_gui.cpp +++ b/src/object_gui.cpp @@ -17,11 +17,14 @@ #include "strings_func.h" #include "viewport_func.h" #include "window_gui.h" +#include "window_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 @@ -30,33 +33,66 @@ static uint8 _selected_object_view; ///< the view of the selected objec class BuildObjectWindow : public PickerWindowBase { static const int OBJECT_MARGIN = 4; ///< The margin (in pixels) around an object. int line_height; ///< The height of a single line. - int object_height; ///< The height of the object box. int info_height; ///< The height of the info box. Scrollbar *vscroll; ///< The scrollbar. -public: - BuildObjectWindow(const WindowDesc *desc, Window *w) : PickerWindowBase(w), info_height(1) + /** Scroll #WID_BO_CLASS_LIST so that the selected object class is visible. */ + void EnsureSelectedObjectClassIsVisible() + { + uint pos = 0; + for (int i = 0; i < _selected_object_class; i++) { + if (ObjectClass::Get((ObjectClassID) i)->GetUISpecCount() == 0) continue; + pos++; + } + this->vscroll->ScrollTowards(pos); + } + + /** + * Tests whether the previously selected object can be selected. + * @return \c true if the selected object is available, \c false otherwise. + */ + bool CanRestoreSelectedObject() + { + if (_selected_object_index == -1) return false; + + ObjectClass *sel_objclass = ObjectClass::Get(_selected_object_class); + if ((int)sel_objclass->GetSpecCount() <= _selected_object_index) return false; + + return sel_objclass->GetSpec(_selected_object_index)->IsAvailable(); + } + + /** + * Calculate the number of columns of the #WID_BO_SELECT_MATRIX widget. + * @return Number of columns in the matrix. + */ + uint GetMatrixColumnCount() { - this->CreateNestedTree(desc); + const NWidgetBase *matrix = this->GetWidget(WID_BO_SELECT_MATRIX); + return 1 + (matrix->current_x - matrix->smallest_x) / matrix->resize_x; + } +public: + BuildObjectWindow(WindowDesc *desc, Window *w) : PickerWindowBase(desc, w), info_height(1) + { + this->CreateNestedTree(); this->vscroll = this->GetScrollbar(WID_BO_SCROLLBAR); - this->vscroll->SetCapacity(5); + this->FinishInitNested(0); + this->vscroll->SetPosition(0); this->vscroll->SetCount(ObjectClass::GetUIClassCount()); - this->FinishInitNested(desc, 0); - - this->SelectFirstAvailableObject(true); - assert(ObjectClass::Get(_selected_object_class)->GetUISpecCount() > 0); // object GUI should be disables elsewise - this->GetWidget(WID_BO_OBJECT_MATRIX)->SetCount(4); - NWidgetMatrix *matrix = this->GetWidget(WID_BO_SELECT_MATRIX); matrix->SetScrollbar(this->GetScrollbar(WID_BO_SELECT_SCROLL)); - matrix->SetCount(ObjectClass::Get(_selected_object_class)->GetUISpecCount()); - } - virtual ~BuildObjectWindow() - { + this->SelectOtherClass(_selected_object_class); + if (this->CanRestoreSelectedObject()) { + this->SelectOtherObject(_selected_object_index); + } else { + this->SelectFirstAvailableObject(true); + } + assert(ObjectClass::Get(_selected_object_class)->GetUISpecCount() > 0); // object GUI should be disables elsewise + this->EnsureSelectedObjectClassIsVisible(); + this->GetWidget(WID_BO_OBJECT_MATRIX)->SetCount(4); } virtual void SetStringParameters(int widget) const @@ -92,7 +128,7 @@ class BuildObjectWindow : public PickerWindowBase { size->width += padding.width; this->line_height = FONT_HEIGHT_NORMAL + WD_MATRIX_TOP + WD_MATRIX_BOTTOM; resize->height = this->line_height; - size->height = this->vscroll->GetCapacity() * this->line_height; + size->height = 5 * this->line_height; break; } @@ -115,7 +151,7 @@ class BuildObjectWindow : public PickerWindowBase { } case WID_BO_OBJECT_SPRITE: { - bool two_wide = false; // Whether there will be two widgets next to eachother in the matrix or not. + bool two_wide = false; // Whether there will be two widgets next to each other in the matrix or not. int height[2] = {0, 0}; // The height for the different views; in this case views 1/2 and 4. /* Get the height and view information. */ @@ -175,8 +211,7 @@ class BuildObjectWindow : public PickerWindowBase { 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; } @@ -190,7 +225,7 @@ class BuildObjectWindow : public PickerWindowBase { /* Height of the selection matrix. * Depending on the number of views, the matrix has a 1x1, 1x2, 2x1 or 2x2 layout. To make the previews * look nice in all layouts, we use the 4x4 layout (smallest previews) as starting point. For the bigger - * previews in the layouts with less views we add space homogenously on all sides, so the 4x4 preview-rectangle + * previews in the layouts with less views we add space homogeneously on all sides, so the 4x4 preview-rectangle * is centered in the 2x1, 1x2 resp. 1x1 buttons. */ uint matrix_height = this->GetWidget(WID_BO_OBJECT_MATRIX)->current_y; @@ -252,7 +287,7 @@ class BuildObjectWindow : public PickerWindowBase { } 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. */ @@ -271,6 +306,16 @@ class BuildObjectWindow : public PickerWindowBase { } } + /** + * Select the specified object class. + * @param object_class_index Object class index to select. + */ + void SelectOtherClass(ObjectClassID object_class_index) + { + _selected_object_class = object_class_index; + this->GetWidget(WID_BO_SELECT_MATRIX)->SetCount(ObjectClass::Get(_selected_object_class)->GetUISpecCount()); + } + /** * Select the specified object in #_selected_object_class class. * @param object_index Object index to select, \c -1 means select nothing. @@ -307,7 +352,6 @@ class BuildObjectWindow : public PickerWindowBase { virtual void OnResize() { this->vscroll->SetCapacityFromWidget(this, WID_BO_CLASS_LIST); - this->GetWidget(WID_BO_CLASS_LIST)->widget_data = (this->vscroll->GetCapacity() << MAT_ROW_START) + (1 << MAT_COL_START); } virtual void OnClick(Point pt, int widget, int click_count) @@ -317,8 +361,7 @@ class BuildObjectWindow : public PickerWindowBase { int num_clicked = this->vscroll->GetPosition() + (pt.y - this->nested_array[widget]->pos_y) / this->line_height; if (num_clicked >= (int)ObjectClass::GetUIClassCount()) break; - _selected_object_class = ObjectClass::GetUIClass(num_clicked); - this->GetWidget(WID_BO_SELECT_MATRIX)->SetCount(ObjectClass::Get(_selected_object_class)->GetUISpecCount()); + this->SelectOtherClass(ObjectClass::GetUIClass(num_clicked)); this->SelectFirstAvailableObject(false); break; } @@ -365,7 +408,7 @@ class BuildObjectWindow : public PickerWindowBase { for (uint i = 0; i < objclass->GetSpecCount(); i++) { const ObjectSpec *spec = objclass->GetSpec(i); if (spec->IsAvailable()) { - _selected_object_class = j; + this->SelectOtherClass(j); this->SelectOtherObject(i); return; } @@ -377,7 +420,7 @@ class BuildObjectWindow : public PickerWindowBase { /* ... but make sure that the class is not empty. */ for (ObjectClassID j = OBJECT_CLASS_BEGIN; j < OBJECT_CLASS_MAX; j++) { if (ObjectClass::Get(j)->GetUISpecCount() > 0) { - _selected_object_class = j; + this->SelectOtherClass(j); break; } } @@ -390,12 +433,13 @@ static const NWidgetPart _nested_build_object_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_DARK_GREEN), NWidget(WWT_CAPTION, COLOUR_DARK_GREEN), SetDataTip(STR_OBJECT_BUILD_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_DEFSIZEBOX, COLOUR_DARK_GREEN), EndContainer(), NWidget(WWT_PANEL, COLOUR_DARK_GREEN), NWidget(NWID_HORIZONTAL), SetPadding(2, 0, 0, 0), NWidget(NWID_VERTICAL), NWidget(NWID_HORIZONTAL), SetPadding(0, 5, 2, 5), - NWidget(WWT_MATRIX, COLOUR_GREY, WID_BO_CLASS_LIST), SetFill(1, 0), SetDataTip(0x501, STR_OBJECT_BUILD_CLASS_TOOLTIP), SetScrollbar(WID_BO_SCROLLBAR), + NWidget(WWT_MATRIX, COLOUR_GREY, WID_BO_CLASS_LIST), SetFill(1, 0), SetMatrixDataTip(1, 0, STR_OBJECT_BUILD_CLASS_TOOLTIP), SetScrollbar(WID_BO_SCROLLBAR), NWidget(NWID_VSCROLLBAR, COLOUR_GREY, WID_BO_SCROLLBAR), EndContainer(), NWidget(NWID_HORIZONTAL), SetPadding(0, 5, 0, 5), @@ -427,8 +471,8 @@ static const NWidgetPart _nested_build_object_widgets[] = { EndContainer(), }; -static const WindowDesc _build_object_desc( - WDP_AUTO, 0, 0, +static WindowDesc _build_object_desc( + WDP_AUTO, "build_object", 0, 0, WC_BUILD_OBJECT, WC_BUILD_TOOLBAR, WDF_CONSTRUCTION, _nested_build_object_widgets, lengthof(_nested_build_object_widgets) diff --git a/src/object_map.h b/src/object_map.h index 580fd6976..85faf4444 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 obect. + * @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,7 +81,7 @@ 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; + _m[t].m5 = index >> 16; SB(_m[t].m6, 2, 4, 0); _me[t].m7 = 0; } diff --git a/src/object_type.h b/src/object_type.h index 7987c6481..4ead576f3 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 1ec778dad..f289545ec 100644 --- a/src/openttd.cpp +++ b/src/openttd.cpp @@ -61,10 +61,14 @@ #include "game/game_config.hpp" #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(); @@ -89,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); } @@ -109,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); @@ -128,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); } @@ -187,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)); @@ -297,6 +301,7 @@ static void ShutdownGame() free(_config_file); #endif + LinkGraphSchedule::Clear(); PoolBase::Clean(PT_ALL); /* No NewGRFs were loaded when it was still bootstrapping. */ @@ -338,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() @@ -425,12 +430,13 @@ struct AfterNewGRFScan : NewGRFScanCallback { CheckConfig(); LoadFromHighScore(); LoadHotkeysFromConfig(); + WindowDesc::LoadFromConfig(); /* We have loaded the config, so we may possibly save it. */ *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; @@ -438,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 */ @@ -520,8 +526,13 @@ static const OptionData _options[] = { GETOPT_END() }; - -int ttd_main(int argc, char *argv[]) +/** + * Main entry point for this lovely game. + * @param argc The number of arguments passed to this game. + * @param argv The values of the arguments. + * @return 0 when there is no error. + */ +int openttd_main(int argc, char *argv[]) { char *musicdriver = NULL; char *sounddriver = NULL; @@ -547,27 +558,28 @@ int ttd_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) { @@ -628,7 +640,11 @@ int ttd_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)); @@ -643,15 +659,15 @@ int ttd_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': _config_file = stredup(mgo.opt); break; case 'x': scanner->save_config = false; break; case 'h': i = -2; // Force printing of help. @@ -672,8 +688,8 @@ int ttd_main(int argc, char *argv[]) BaseSounds::FindSets(); BaseMusic::FindSets(); ShowHelp(); - delete scanner; - return 0; + + goto exit_noshutdown; } #if defined(WINCE) && defined(_DEBUG) @@ -723,7 +739,7 @@ int ttd_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); @@ -739,11 +755,18 @@ int ttd_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); @@ -751,15 +774,12 @@ int ttd_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; @@ -780,15 +800,19 @@ int ttd_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."); @@ -801,7 +825,7 @@ int ttd_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."); @@ -813,22 +837,12 @@ int ttd_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! */ @@ -842,9 +856,11 @@ int ttd_main(int argc, char *argv[]) CheckForMissingGlyphs(); + /* ScanNewGRFFiles now has control over the scanner. */ ScanNewGRFFiles(scanner); + scanner = NULL; - _video_driver->MainLoop(); + VideoDriver::GetInstance()->MainLoop(); WaitTillSaved(); @@ -852,22 +868,47 @@ int ttd_main(int argc, char *argv[]) if (save_config) { SaveToConfig(); SaveHotkeysToConfig(); + WindowDesc::SaveToConfig(); 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() @@ -887,8 +928,9 @@ 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"); return; } @@ -915,6 +957,7 @@ static void MakeNewGameDone() if (_settings_client.gui.pause_on_newgame) DoCommandP(0, PM_PAUSED_NORMAL, 1, CMD_PAUSE); + CheckEngines(); MarkWholeScreenDirty(); } @@ -1027,7 +1070,7 @@ void SwitchToMode(SwitchMode new_mode) } } #endif /* ENABLE_NETWORK */ - /* Make sure all AI controllers are gone at quiting game */ + /* Make sure all AI controllers are gone at quitting game */ if (new_mode != SM_SAVE_GAME) AI::KillAll(); switch (new_mode) { @@ -1039,7 +1082,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); @@ -1066,7 +1109,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 */ } @@ -1076,7 +1119,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); @@ -1106,7 +1149,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; @@ -1227,7 +1270,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; @@ -1295,22 +1338,25 @@ static void CheckCaches() */ void StateGameLoop() { - /* dont execute the state loop during pause */ + /* 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(); @@ -1319,7 +1365,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); } @@ -1329,15 +1375,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(); @@ -1368,7 +1417,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; } @@ -1394,8 +1443,8 @@ void GameLoop() /* autosave game? */ if (_do_autosave) { - _do_autosave = false; DoAutosave(); + _do_autosave = false; SetWindowDirty(WC_STATUS_BAR, 0); } @@ -1445,6 +1494,6 @@ void GameLoop() InputLoop(); - _sound_driver->MainLoop(); + SoundDriver::GetInstance()->MainLoop(); MusicLoop(); } diff --git a/src/openttd.h b/src/openttd.h index 7df5a39b1..5e360d6fc 100644 --- a/src/openttd.h +++ b/src/openttd.h @@ -75,7 +75,7 @@ extern PauseModeByte _pause_mode; void AskExitGame(); void AskExitToGameMenu(); -int ttd_main(int argc, char *argv[]); +int openttd_main(int argc, char *argv[]); void HandleExitGameRequest(); void SwitchToMode(SwitchMode new_mode); diff --git a/src/order_backup.cpp b/src/order_backup.cpp index 100348f8a..597ad13bb 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 82e1371ee..d2e1f58f1 100644 --- a/src/order_base.h +++ b/src/order_base.h @@ -20,6 +20,7 @@ #include "station_type.h" #include "vehicle_type.h" #include "date_type.h" +#include "date_func.h" typedef Pool OrderPool; typedef Pool OrderListPool; @@ -42,15 +43,14 @@ struct Order : OrderPool::PoolItem<&_order_pool> { DestinationID dest; ///< The destination of the order. CargoID refit_cargo; ///< Refit CargoID - byte refit_subtype; ///< Refit subtype - -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(); @@ -72,7 +72,7 @@ struct Order : OrderPool::PoolItem<&_order_pool> { void Free(); void MakeGoToStation(StationID destination); - void MakeGoToDepot(DepotID destination, OrderDepotTypeFlags order, OrderNonStopFlags non_stop_type = ONSF_NO_STOP_AT_INTERMEDIATE_STATIONS, OrderDepotActionFlags action = ODATF_SERVICE_ONLY, CargoID cargo = CT_NO_REFIT, byte subtype = 0); + void MakeGoToDepot(DepotID destination, OrderDepotTypeFlags order, OrderNonStopFlags non_stop_type = ONSF_NO_STOP_AT_INTERMEDIATE_STATIONS, OrderDepotActionFlags action = ODATF_SERVICE_ONLY, CargoID cargo = CT_NO_REFIT); void MakeGoToWaypoint(StationID destination); void MakeLoading(bool ordered); void MakeLeaveStation(); @@ -124,27 +124,20 @@ struct Order : OrderPool::PoolItem<&_order_pool> { */ inline CargoID GetRefitCargo() const { return this->refit_cargo; } - /** - * Get the cargo subtype to to refit to. - * @pre IsType(OT_GOTO_DEPOT) || IsType(OT_GOTO_STATION) - * @return the cargo subtype. - */ - inline byte GetRefitSubtype() const { return this->refit_subtype; } - - void SetRefit(CargoID cargo, byte subtype = 0); + 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? */ @@ -155,17 +148,17 @@ struct Order : OrderPool::PoolItem<&_order_pool> { 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. */ @@ -175,14 +168,70 @@ struct Order : OrderPool::PoolItem<&_order_pool> { /** 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; } @@ -197,8 +246,34 @@ struct Order : OrderPool::PoolItem<&_order_pool> { void InsertOrder(Vehicle *v, Order *new_o, VehicleOrderID sel_ord); void DeleteOrder(Vehicle *v, VehicleOrderID sel_ord); -/** - * Shared order list linking together the linked list of orders and the list +/** Working modes for timetable separation. */ +enum TTSepMode { + /** Timetable separation works in fully automatic mode, determining its parameters from the situation in game. */ + TTS_MODE_AUTO, + + /** Timetable separation is deactivated altogether. */ + TTS_MODE_OFF, + + /** Timetable separation is active in manual time mode. The amount of time between vehicles is set in ticks by the user. */ + TTS_MODE_MAN_T, + + /** Timetable separation is active in manual number mode. The user sets a number of vehicles that are supposed to be running + * the timetable simultaneously. The algorithm acts according to this specification regardless of the actual number of + * running vehicles.*/ + TTS_MODE_MAN_N, + + /** Timetable separation works in buffered automatic mode that keeps one vehicle waiting at the first stop as + * reserve for delay compensation and behaves like full automatic otherwise. */ + TTS_MODE_BUFFERED_AUTO, +}; + +struct TTSepSettings { + TTSepMode mode; + uint num_veh, sep_ticks; + TTSepSettings() : mode(TTS_MODE_AUTO), num_veh(0), sep_ticks(0) { } +}; + +/** Shared order list linking together the linked list of orders and the list * of vehicles sharing this order list. */ struct OrderList : OrderListPool::PoolItem<&_orderlist_pool> { @@ -206,19 +281,32 @@ struct OrderList : OrderListPool::PoolItem<&_orderlist_pool> { friend void AfterLoadVehicles(bool part_of_load); ///< For instantiating the shared vehicle chain friend const struct SaveLoad *GetOrderListDescription(); ///< Saving and loading of order lists. + StationID GetBestLoadableNext(const Vehicle *v, const Order *o1, const Order *o2) const; + + /** Returns the number of running (i.e. not stopped) vehicles in the shared orders list. */ + int GetNumRunningVehicles(); + Order *first; ///< First order of the order list. VehicleOrderID num_orders; ///< NOSAVE: How many orders there are in the list. VehicleOrderID num_manual_orders; ///< NOSAVE: How many manually added orders are there in the list. 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. + Ticks last_timetable_init; ///< Contains the last absolute time of initialization in ticks. + uint separation_counter; ///< Counts the vehicles that arrive at the first shared order for separation timing. + bool is_separation_valid; ///< Is true if the separation has been initialized since last load or vehicle list change. + Ticks current_separation; ///< The current separation between vehicles in the shared order list. + TTSepMode current_sep_mode; ///< The current mode of vehicle separation. + uint num_sep_vehicles; ///< Number of planned vehicles for separation. 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), last_timetable_init(INVALID_TICKS), separation_counter(0), + is_separation_valid(false), current_separation(INVALID_TICKS), current_sep_mode(TTS_MODE_OFF), + num_sep_vehicles(0), total_duration(0) { } /** * Create an order list with the given order chain for the given vehicle. @@ -246,6 +334,14 @@ struct OrderList : OrderListPool::PoolItem<&_orderlist_pool> { */ inline Order *GetLastOrder() const { return this->GetOrderAt(this->num_orders - 1); } + /** + * Get the order after the given one or the first one, if the given one is the + * last one. + * @param curr Order to find the next one for. + * @return Next order. + */ + inline const Order *GetNext(const Order *curr) const { return (curr->next == NULL) ? this->GetFirstOrder() : curr->next; } + /** * Get number of orders in the order list. * @return number of orders in the chain. @@ -258,6 +354,9 @@ struct OrderList : OrderListPool::PoolItem<&_orderlist_pool> { */ inline VehicleOrderID GetNumManualOrders() const { return this->num_manual_orders; } + 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); void MoveOrder(int from, int to); @@ -280,6 +379,24 @@ struct OrderList : OrderListPool::PoolItem<&_orderlist_pool> { */ inline uint GetNumVehicles() const { return this->num_vehicles; } + /** + * Returns the amount of separation time between vehicles. + * @return the amount of separation time between vehicles. + */ + inline uint GetSepTime() const + { + if (this->is_separation_valid) { + return this->current_separation; + } else { + return this->GetTimetableTotalDuration() / this->GetNumVehicles(); + } + } + + TTSepSettings GetSepSettings(); + + void SetSepSettings(TTSepSettings s); + void SetSepSettings(TTSepMode Mode, uint Parameter); + bool IsVehicleInSharedOrdersList(const Vehicle *v) const; int GetPositionInSharedOrderList(const Vehicle *v) const; @@ -307,11 +424,80 @@ struct OrderList : OrderListPool::PoolItem<&_orderlist_pool> { */ 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; } + /** + * Gets the last absolute time in Ticks since separation was initalized. + * @return last arrival time of first vehicle at first order. + */ + inline Ticks GetSeparationInitTime() const + { + return this->last_timetable_init; + } + + /** + * Gets the current value of the timetable separation counter. + * @return the current value of the timetable separation counter. + */ + inline uint GetSeparationCounter() const + { + return this->separation_counter; + } + + /** Increases the timetable separation counter. */ + void IncreaseSeparationCounter() + { + this->separation_counter++; + } + + /** Marks timetable separation invalid so it has to be initialized again. */ + void MarkSeparationInvalid() + { + if ((this->current_sep_mode == TTS_MODE_AUTO)||(this->current_sep_mode == TTS_MODE_BUFFERED_AUTO)) + this->is_separation_valid = false; + } + + /** + * Returns the new delay for the current vehicle and increases the separation counter. + * @return the new delay + */ + Ticks SeparateVehicle(); + + /** + * Gets whether the timetable separation is currently valid or not. + * @return whether the timetable separation is currently valid or not. + */ + inline bool IsSeparationValid() const + { + return this->is_separation_valid; + } + + /** + * Gets whether timetable separation is currently switched on or not. + * @return whether the timetable separation is currently switched on or not. + */ + inline bool IsSeparationOn() const + { + return this->current_sep_mode != TTS_MODE_OFF; + } + + /** Initializes the separation system. */ + void InitializeSeparation(); void FreeChain(bool keep_orderlist = false); diff --git a/src/order_cmd.cpp b/src/order_cmd.cpp index 9fe0a4c3f..08319aba6 100644 --- a/src/order_cmd.cpp +++ b/src/order_cmd.cpp @@ -20,15 +20,19 @@ #include "vehicle_func.h" #include "depot_base.h" #include "core/pool_func.hpp" +#include "core/random_func.hpp" #include "aircraft.h" #include "roadveh.h" #include "station_base.h" #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 */ @@ -79,20 +83,19 @@ void Order::MakeGoToStation(StationID destination) /** * Makes this order a Go To Depot order. * @param destination the depot to go to. - * @param order is this order a 'default' order, or an overriden vehicle order? + * @param order is this order a 'default' order, or an overridden vehicle order? * @param non_stop_type how to get to the depot? * @param action what to do in the depot? * @param cargo the cargo type to change to. - * @param subtype the subtype to change to. */ -void Order::MakeGoToDepot(DepotID destination, OrderDepotTypeFlags order, OrderNonStopFlags non_stop_type, OrderDepotActionFlags action, CargoID cargo, byte subtype) +void Order::MakeGoToDepot(DepotID destination, OrderDepotTypeFlags order, OrderNonStopFlags non_stop_type, OrderDepotActionFlags action, CargoID cargo) { this->type = OT_GOTO_DEPOT; this->SetDepotOrderType(order); this->SetDepotActionType(action); this->SetNonStopType(non_stop_type); this->dest = destination; - this->SetRefit(cargo, subtype); + this->SetRefit(cargo); } /** @@ -158,13 +161,11 @@ void Order::MakeImplicit(StationID destination) /** * Make this depot/station order also a refit order. * @param cargo the cargo type to change to. - * @param subtype the subtype to change to. * @pre IsType(OT_GOTO_DEPOT) || IsType(OT_GOTO_STATION). */ -void Order::SetRefit(CargoID cargo, byte subtype) +void Order::SetRefit(CargoID cargo) { this->refit_cargo = cargo; - this->refit_subtype = subtype; } /** @@ -238,7 +239,6 @@ Order::Order(uint32 packed) this->dest = GB(packed, 16, 16); this->next = NULL; this->refit_cargo = CT_NO_REFIT; - this->refit_subtype = 0; this->wait_time = 0; this->travel_time = 0; this->max_speed = UINT16_MAX; @@ -278,7 +278,6 @@ void Order::AssignOrder(const Order &other) this->dest = other.dest; this->refit_cargo = other.refit_cargo; - this->refit_subtype = other.refit_subtype; this->wait_time = other.wait_time; this->travel_time = other.travel_time; @@ -299,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()) { @@ -354,6 +355,104 @@ Order *OrderList::GetOrderAt(int index) const return order; } +/** + * Get the next order which will make the given vehicle stop at a station + * 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. + * @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::GetNextDecisionNode(const Order *next, uint hops) const +{ + if (hops > this->GetNumOrders() || next == NULL) return NULL; + + if (next->IsType(OT_CONDITIONAL)) { + 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)) { + if (next->GetDepotActionType() == ODATFB_HALT) return NULL; + if (next->IsRefit()) return next; + } + + if (!next->CanLoadOrUnload()) { + return this->GetNextDecisionNode(this->GetNext(next), hops + 1); + } + + return 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. + */ +StationIDStack OrderList::GetNextStoppingStation(const Vehicle *v, const Order *first, uint hops) const +{ + + 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); + } + } + + do { + 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 && + (next->GetUnloadType() & (OUFB_TRANSFER | OUFB_UNLOAD)) != 0)) { + return INVALID_STATION; + } + } while (next->IsType(OT_GOTO_DEPOT) || next->GetDestination() == v->last_station_visited); + + return next->GetDestination(); +} + /** * Insert a new order into the order chain. * @param new_order is the order to insert into the chain. @@ -380,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. */ @@ -412,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; } @@ -507,26 +608,169 @@ 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); +} + +/** Returns the number of running (i.e. not stopped) vehicles in the shared orders list. */ +int OrderList::GetNumRunningVehicles() +{ + int num_running_vehicles = 0; + + for (const Vehicle *v = this->first_shared; v != NULL; v = v->NextShared()) { + if (!(v->vehstatus & (VS_STOPPED | VS_CRASHED))) num_running_vehicles++; + } + + return num_running_vehicles; +} + +/** (Re-)Initializes Separation if necessary and possible. */ +void OrderList::InitializeSeparation() +{ + // Check whether separation can be used at all + if(!this->IsCompleteTimetable() || this->current_sep_mode == TTS_MODE_OFF) { + this->is_separation_valid = false; + return; + } + + // Save current tick count as reference for future timetable start dates and reset the separation counter. + this->last_timetable_init = GetCurrentTickCount(); + this->separation_counter = 0; + + // Calculate separation amount depending on mode of operation. + switch (current_sep_mode) { + case TTS_MODE_AUTO: { + int num_running_vehicles = this->GetNumRunningVehicles(); + assert(num_running_vehicles > 0); + + this->current_separation = this->GetTimetableTotalDuration() / num_running_vehicles; + break; + } + + case TTS_MODE_MAN_N: + this->current_separation = this->GetTimetableTotalDuration() / this->num_sep_vehicles; + break; + + case TTS_MODE_MAN_T: + // separation is set manually -> nothing to do + break; + + case TTS_MODE_BUFFERED_AUTO: { + int num_running_vehicles = this->GetNumRunningVehicles(); + assert(num_running_vehicles > 0); + + if(num_running_vehicles > 1) + num_running_vehicles--; + + this->current_separation = this->GetTimetableTotalDuration() / num_running_vehicles; + break; + } + + default: + NOT_REACHED(); + break; + } + + this->is_separation_valid = true; +} + +/** + * Returns the delay setting required for correct separation and increases the separation counter by 1. + * @return the delay setting required for correct separation. */ +Ticks OrderList::SeparateVehicle() +{ + if (!this->is_separation_valid || this->current_sep_mode == TTS_MODE_OFF) + return INVALID_TICKS; + + Ticks result = GetCurrentTickCount() - (this->separation_counter * this->current_separation + this->last_timetable_init); + this->separation_counter++; + + return result; +} + +/** + * Returns the current separation settings. + * @return the current separation settings. + */ +TTSepSettings OrderList::GetSepSettings() +{ + TTSepSettings result; + + result.mode = this->current_sep_mode; + result.sep_ticks = GetSepTime(); + + // Depending on the operation mode return either the user setting or the true amount of vehicles running the timetable. + result.num_veh = (result.mode == TTS_MODE_MAN_N) ? this->num_sep_vehicles : GetNumVehicles(); + return result; +} + +/** + * Prepares command to set new separation settings. + * @param s Contains the new settings to be used for separation. + * @todo Clean this up (e.g. via union type) + */ +void OrderList::SetSepSettings(TTSepSettings s) +{ + uint32 p2 = GB(s.mode,0,3); + AB(p2,3,29, (s.mode == TTS_MODE_MAN_N) ? s.num_veh : s.sep_ticks); + DoCommandP(0, this->first_shared->index, p2, CMD_REINIT_SEPARATION); +} + +/** + * Sets new separation settings. + * @param mode Contains the operation mode that is to be used for separation. + * @param parameter Depending on the operation mode this contains either the number of vehicles (#TTS_MODE_MAN_N) + * or the time between vehicles in ticks (#TTS_MODE_MAN_T). For other modes, this is undefined. + */ +void OrderList::SetSepSettings(TTSepMode mode, uint32 parameter) +{ + this->current_sep_mode = mode; + + switch (this->current_sep_mode) + { + case TTS_MODE_MAN_N: + this->current_separation = this->GetTimetableTotalDuration() / parameter; + this->num_sep_vehicles = parameter; + break; + + case TTS_MODE_MAN_T: + this->current_separation = parameter; + this->num_sep_vehicles = this->GetTimetableTotalDuration() / this->current_separation; + break; + + case TTS_MODE_AUTO: + case TTS_MODE_BUFFERED_AUTO: + case TTS_MODE_OFF: + /* nothing to do */ + break; + + default: + NOT_REACHED(); + break; + } + + this->is_separation_valid = false; } /** @@ -554,6 +798,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); } /** @@ -1049,11 +1294,11 @@ CommandCost CmdSkipToOrder(TileIndex tile, DoCommandFlag flags, uint32 p1, uint3 if (ret.Failed()) return ret; if (flags & DC_EXEC) { + if (v->current_order.IsType(OT_LOADING)) v->LeaveStation(); + v->cur_implicit_order_index = v->cur_real_order_index = sel_ord; v->UpdateRealOrderIndex(); - if (v->current_order.IsType(OT_LOADING)) v->LeaveStation(); - InvalidateVehicleOrder(v, VIWD_MODIFY_ORDERS); } @@ -1118,7 +1363,7 @@ CommandCost CmdMoveOrder(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 * predictable and transparent behaviour. * * With that decision it basically does not matter what we do to cur_implicit_order_index. - * If we change orders between the implict- and real-index, the implicit orders are mostly likely + * If we change orders between the implicit- and real-index, the implicit orders are mostly likely * completely out-dated anyway. So, keep it simple and just keep cur_implicit_order_index as well. * The worst which can happen is that a lot of implicit orders are removed when reaching current_order. */ @@ -1202,7 +1447,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: @@ -1236,6 +1481,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; @@ -1243,6 +1489,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; @@ -1272,7 +1519,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: @@ -1294,7 +1543,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: @@ -1347,6 +1600,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: @@ -1521,7 +1775,7 @@ CommandCost CmdCloneOrder(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 if (ret.Failed()) return ret; /* Trucks can't copy all the orders from busses (and visa versa), - * and neither can helicopters and aircarft. */ + * and neither can helicopters and aircraft. */ const Order *order; FOR_VEHICLE_ORDERS(src, order) { if (OrderGoesToStation(dst, order) && @@ -1587,7 +1841,6 @@ CommandCost CmdCloneOrder(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 * @param p1 VehicleIndex of the vehicle having the order * @param p2 bitmask * - bit 0-7 CargoID - * - bit 8-15 Cargo subtype * - bit 16-23 number of order to modify * @param text unused * @return the cost of this operation or an error @@ -1597,7 +1850,6 @@ CommandCost CmdOrderRefit(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 VehicleID veh = GB(p1, 0, 20); VehicleOrderID order_number = GB(p2, 16, 8); CargoID cargo = GB(p2, 0, 8); - byte subtype = GB(p2, 8, 8); if (cargo >= NUM_CARGO && cargo != CT_NO_REFIT && cargo != CT_AUTO_REFIT) return CMD_ERROR; @@ -1613,8 +1865,10 @@ CommandCost CmdOrderRefit(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 /* Automatic refit cargo is only supported for goto station orders. */ if (cargo == CT_AUTO_REFIT && !order->IsType(OT_GOTO_STATION)) return CMD_ERROR; + if (order->GetLoadType() & OLFB_NO_LOAD) return CMD_ERROR; + if (flags & DC_EXEC) { - order->SetRefit(cargo, subtype); + order->SetRefit(cargo); /* Make the depot order an 'always go' order. */ if (cargo != CT_NO_REFIT && order->IsType(OT_GOTO_DEPOT)) { @@ -1628,7 +1882,7 @@ CommandCost CmdOrderRefit(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 /* If the vehicle already got the current depot set as current order, then update current order as well */ if (u->cur_real_order_index == order_number && (u->current_order.GetDepotOrderType() & ODTFB_PART_OF_ORDERS)) { - u->current_order.SetRefit(cargo, subtype); + u->current_order.SetRefit(cargo); } } } @@ -1658,17 +1912,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? */ @@ -1676,7 +1929,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; + } } } @@ -1685,22 +1947,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); @@ -1751,7 +2010,19 @@ void RemoveOrderFromAllVehicles(OrderType type, DestinationID destination) 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)); @@ -1817,9 +2088,9 @@ void DeleteVehicleOrders(Vehicle *v, bool keep_orderlist, bool reset_order_indic * @param company_id the owner of the vehicle * @return Clamped service interval */ -uint16 GetServiceIntervalClamped(uint interval, CompanyID company_id) +uint16 GetServiceIntervalClamped(uint interval, bool ispercent) { - return (Company::Get(company_id)->settings.vehicle.servint_ispercent) ? Clamp(interval, MIN_SERVINT_PERCENT, MAX_SERVINT_PERCENT) : Clamp(interval, MIN_SERVINT_DAYS, MAX_SERVINT_DAYS); + return ispercent ? Clamp(interval, MIN_SERVINT_PERCENT, MAX_SERVINT_PERCENT) : Clamp(interval, MIN_SERVINT_DAYS, MAX_SERVINT_DAYS); } /** @@ -1904,7 +2175,11 @@ VehicleOrderID ProcessConditionalOrder(const Order *order, const Vehicle *v) */ bool UpdateOrderDest(Vehicle *v, const Order *order, int conditional_depth, bool pbs_look_ahead) { - if (conditional_depth > v->GetNumOrders()) return false; + if (conditional_depth > v->GetNumOrders()) { + v->current_order.Free(); + v->dest_tile = 0; + return false; + } switch (order->GetType()) { case OT_GOTO_STATION: @@ -1930,7 +2205,7 @@ bool UpdateOrderDest(Vehicle *v, const Order *order, int conditional_depth, bool if (pbs_look_ahead && reverse) return false; v->dest_tile = location; - v->current_order.MakeGoToDepot(destination, v->current_order.GetDepotOrderType(), v->current_order.GetNonStopType(), (OrderDepotActionFlags)(v->current_order.GetDepotActionType() & ~ODATFB_NEAREST_DEPOT), v->current_order.GetRefitCargo(), v->current_order.GetRefitSubtype()); + v->current_order.MakeGoToDepot(destination, v->current_order.GetDepotOrderType(), v->current_order.GetNonStopType(), (OrderDepotActionFlags)(v->current_order.GetDepotActionType() & ~ODATFB_NEAREST_DEPOT), v->current_order.GetRefitCargo()); /* If there is no depot in front, reverse automatically (trains only) */ if (v->type == VEH_TRAIN && reverse) DoCommand(v->tile, v->index, 0, DC_EXEC, CMD_REVERSE_TRAIN_DIRECTION); @@ -1972,7 +2247,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. */ @@ -2127,3 +2402,23 @@ bool Order::ShouldStopAtStation(const Vehicle *v, StationID station) const /* Finally do stop when there is no non-stop flag set for this type of station. */ !(this->GetNonStopType() & (is_dest_station ? ONSF_NO_STOP_AT_DESTINATION_STATION : ONSF_NO_STOP_AT_INTERMEDIATE_STATIONS)); } + +bool Order::CanLoadOrUnload() const +{ + return (this->IsType(OT_GOTO_STATION) || this->IsType(OT_IMPLICIT)) && + (this->GetNonStopType() & ONSF_NO_STOP_AT_DESTINATION_STATION) == 0 && + ((this->GetLoadType() & OLFB_NO_LOAD) == 0 || + (this->GetUnloadType() & OUFB_NO_UNLOAD) == 0); +} + +/** + * A vehicle can leave the current station with cargo if: + * 1. it can load cargo here OR + * 2a. it could leave the last station with cargo AND + * 2b. it doesn't have to unload all cargo here. + */ +bool Order::CanLeaveWithCargo(bool has_cargo) const +{ + return (this->GetLoadType() & OLFB_NO_LOAD) == 0 || (has_cargo && + (this->GetUnloadType() & (OUFB_UNLOAD | OUFB_TRANSFER)) == 0); +} diff --git a/src/order_func.h b/src/order_func.h index abdbf3f55..54977181a 100644 --- a/src/order_func.h +++ b/src/order_func.h @@ -33,6 +33,6 @@ void DrawOrderString(const Vehicle *v, const Order *order, int order_index, int #define MIN_SERVINT_DAYS 30 #define MAX_SERVINT_DAYS 800 -uint16 GetServiceIntervalClamped(uint interval, CompanyID company_id); +uint16 GetServiceIntervalClamped(uint interval, bool ispercent); #endif /* ORDER_FUNC_H */ diff --git a/src/order_gui.cpp b/src/order_gui.cpp index 965ba4838..d4feae35c 100644 --- a/src/order_gui.cpp +++ b/src/order_gui.cpp @@ -28,9 +28,12 @@ #include "core/geometry_func.hpp" #include "hotkeys.h" #include "aircraft.h" +#include "engine_func.h" #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] = { @@ -263,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]); @@ -331,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); } @@ -345,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; - - 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 (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_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; + if (_ctrl_pressed) order.SetDepotOrderType((OrderDepotTypeFlags)(order.GetDepotOrderType() ^ ODTFB_SERVICE)); - 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; } @@ -436,6 +414,21 @@ static Order GetOrderCmdFromTile(const Vehicle *v, TileIndex tile) return order; } +/** Hotkeys for order window. */ +enum { + OHK_SKIP, + OHK_DELETE, + OHK_GOTO, + OHK_NONSTOP, + OHK_FULLLOAD, + OHK_UNLOAD, + OHK_NEAREST_DEPOT, + OHK_ALWAYS_SERVICE, + OHK_TRANSFER, + OHK_NO_UNLOAD, + OHK_NO_LOAD, +}; + /** * %Order window code for all vehicles. * @@ -480,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. */ @@ -518,11 +513,12 @@ struct OrdersWindow : public Window { OrderPlaceObjectState goto_type; const Vehicle *vehicle; ///< Vehicle owning the orders being displayed and manipulated. Scrollbar *vscroll; + bool can_do_refit; ///< Vehicle chain can be refitted in depot. bool can_do_autorefit; ///< Vehicle chain can be auto-refitted. /** * Return the memorised selected order. - * @return the memorised order if it is a vaild one + * @return the memorised order if it is a valid one * else return the number of orders */ VehicleOrderID OrderGetSel() const @@ -553,18 +549,19 @@ struct OrdersWindow : public Window { /** * Handle the click on the goto button. - * @param i Dummy parameter. */ - void OrderClick_Goto(int i) + 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(); - } } /** @@ -587,7 +584,7 @@ struct OrdersWindow : public Window { /** * Handle the 'no loading' hotkey */ - void OrderHotkey_NoLoad(int i) + void OrderHotkey_NoLoad() { this->OrderClick_FullLoad(OLFB_NO_LOAD); } @@ -609,9 +606,8 @@ struct OrdersWindow : public Window { /** * Handle the click on the service in nearest depot button. - * @param i Dummy parameter. */ - void OrderClick_NearestDepot(int i) + void OrderClick_NearestDepot() { Order order; order.next = NULL; @@ -623,30 +619,6 @@ struct OrdersWindow : public Window { 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. - * @param i Dummy parameter. - */ - void OrderClick_Conditional(int i) - { - 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. - * @param i Dummy parameter. - */ - void OrderClick_Share(int i) - { - 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. */ @@ -673,7 +645,7 @@ struct OrdersWindow : public Window { /** * Handle the transfer hotkey */ - void OrderHotkey_Transfer(int i) + void OrderHotkey_Transfer() { this->OrderClick_Unload(OUFB_TRANSFER); } @@ -681,7 +653,7 @@ struct OrdersWindow : public Window { /** * Handle the 'no unload' hotkey */ - void OrderHotkey_NoUnload(int i) + void OrderHotkey_NoUnload() { this->OrderClick_Unload(OUFB_NO_UNLOAD); } @@ -711,9 +683,8 @@ struct OrdersWindow : public Window { /** * Handle the click on the skip button. * If ctrl is pressed, skip to selected order, else skip to current order + 1 - * @param i Dummy parameter. */ - void OrderClick_Skip(int i) + void OrderClick_Skip() { /* Don't skip when there's nothing to skip */ if (_ctrl_pressed && this->vehicle->cur_implicit_order_index == this->OrderGetSel()) return; @@ -725,9 +696,8 @@ struct OrdersWindow : public Window { /** * Handle the click on the delete button. - * @param i Dummy parameter. */ - void OrderClick_Delete(int i) + void OrderClick_Delete() { /* When networking, move one order lower */ int selected = this->selected_order + (int)_networking; @@ -743,15 +713,14 @@ struct OrdersWindow : public Window { * If 'End of Shared Orders' isn't selected, do nothing. If Ctrl is pressed, call OrderClick_Delete and exit. * To stop sharing this vehicle order list, we copy the orders of a vehicle that share this order list. That way we * exit the group of shared vehicles while keeping the same order list. - * @param i Dummy parameter. */ - void OrderClick_StopSharing(int i) + void OrderClick_StopSharing() { /* Don't try to stop sharing orders if 'End of Shared Orders' isn't selected. */ if (!this->vehicle->IsOrderListShared() || this->selected_order != this->vehicle->GetNumOrders()) return; /* If Ctrl is pressed, delete the order list as if we clicked the 'Delete' button. */ if (_ctrl_pressed) { - this->OrderClick_Delete(0); + this->OrderClick_Delete(); return; } @@ -786,26 +755,29 @@ struct OrdersWindow : public Window { /** Cache auto-refittability of the vehicle chain. */ void UpdateAutoRefitState() { + this->can_do_refit = false; this->can_do_autorefit = false; - for (const Vehicle *w = this->vehicle; w != NULL; w = w->Next()) { + for (const Vehicle *w = this->vehicle; w != NULL; w = w->IsGroundVehicle() ? w->Next() : NULL) { + if (IsEngineRefittable(w->engine_type)) this->can_do_refit = true; if (HasBit(Engine::Get(w->engine_type)->info.misc_flags, EF_AUTO_REFIT)) this->can_do_autorefit = true; } } public: - OrdersWindow(const WindowDesc *desc, const Vehicle *v) : Window() + OrdersWindow(WindowDesc *desc, const Vehicle *v) : Window(desc) { this->vehicle = v; - this->CreateNestedTree(desc); + this->CreateNestedTree(); this->vscroll = this->GetScrollbar(WID_O_SCROLLBAR); - this->FinishInitNested(desc, v->index); + this->FinishInitNested(v->index); if (v->owner == _local_company) { this->DisableWidget(WID_O_EMPTY); } this->selected_order = -1; this->order_over = INVALID_VEH_ORDER_ID; + this->goto_type = OPOS_NONE; this->owner = v->owner; this->UpdateAutoRefitState(); @@ -818,7 +790,7 @@ struct OrdersWindow : public Window { if (order->IsType(OT_GOTO_STATION)) station_orders++; } - if (station_orders < 2) this->OrderClick_Goto(0); + if (station_orders < 2) this->OrderClick_Goto(OPOS_GOTO); } this->OnInvalidateData(VIWD_MODIFY_ORDERS); } @@ -1014,8 +986,11 @@ struct OrdersWindow : public Window { this->SetWidgetLoweredState(WID_O_FULL_LOAD, order->GetLoadType() == OLF_FULL_LOAD_ANY); this->SetWidgetLoweredState(WID_O_UNLOAD, order->GetUnloadType() == OUFB_UNLOAD); - /* Can only do refitting when stopping at the destination and loading cargo. */ - this->SetWidgetDisabledState(WID_O_REFIT_DROPDOWN, !this->can_do_autorefit || order->GetLoadType() == OLFB_NO_LOAD || order->GetNonStopType() & ONSF_NO_STOP_AT_DESTINATION_STATION); + /* Can only do refitting when stopping at the destination and loading cargo. + * Also enable the button if a refit is already set to allow clearing it. */ + this->SetWidgetDisabledState(WID_O_REFIT_DROPDOWN, + order->GetLoadType() == OLFB_NO_LOAD || (order->GetNonStopType() & ONSF_NO_STOP_AT_DESTINATION_STATION) || + ((!this->can_do_refit || !this->can_do_autorefit) && !order->IsRefit())); break; @@ -1048,7 +1023,9 @@ struct OrdersWindow : public Window { } /* Disable refit button if the order is no 'always go' order. * However, keep the service button enabled for refit-orders to allow clearing refits (without knowing about ctrl). */ - this->SetWidgetDisabledState(WID_O_REFIT, (order->GetDepotOrderType() & ODTFB_SERVICE) || (order->GetDepotActionType() & ODATFB_HALT)); + this->SetWidgetDisabledState(WID_O_REFIT, + (order->GetDepotOrderType() & ODTFB_SERVICE) || (order->GetDepotActionType() & ODATFB_HALT) || + (!this->can_do_refit && !order->IsRefit())); this->SetWidgetLoweredState(WID_O_SERVICE, order->GetDepotOrderType() & ODTFB_SERVICE); break; @@ -1060,8 +1037,8 @@ struct OrdersWindow : public Window { } 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; @@ -1092,7 +1069,11 @@ struct OrdersWindow : public Window { 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(); } @@ -1180,7 +1161,6 @@ struct OrdersWindow : public Window { 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; @@ -1230,15 +1210,15 @@ struct OrdersWindow : public Window { } case WID_O_SKIP: - this->OrderClick_Skip(0); + this->OrderClick_Skip(); break; case WID_O_DELETE: - this->OrderClick_Delete(0); + this->OrderClick_Delete(); break; case WID_O_STOP_SHARING: - this->OrderClick_StopSharing(0); + this->OrderClick_StopSharing(); break; case WID_O_NON_STOP: @@ -1253,9 +1233,21 @@ struct OrdersWindow : public Window { case WID_O_GOTO: if (this->GetWidget(widget)->ButtonHit(pt)) { - this->OrderClick_Goto(0); + 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; @@ -1302,7 +1294,7 @@ struct OrdersWindow : public Window { 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; @@ -1369,10 +1361,10 @@ struct OrdersWindow : public Window { case WID_O_GOTO: switch (index) { - case 0: this->OrderClick_Goto(0); break; - case 1: this->OrderClick_NearestDepot(0); break; - case 2: this->OrderClick_Conditional(0); break; - case 3: this->OrderClick_Share(0); break; + case 0: this->OrderClick_Goto(OPOS_GOTO); break; + case 1: this->OrderClick_NearestDepot(); break; + case 2: this->OrderClick_Goto(OPOS_CONDITIONAL); break; + case 3: this->OrderClick_Goto(OPOS_SHARE); break; default: NOT_REACHED(); } break; @@ -1411,11 +1403,11 @@ struct OrdersWindow : public Window { } case WID_O_DELETE: - this->OrderClick_Delete(0); + this->OrderClick_Delete(); break; case WID_O_STOP_SHARING: - this->OrderClick_StopSharing(0); + this->OrderClick_StopSharing(); break; } @@ -1428,11 +1420,25 @@ struct OrdersWindow : public Window { } } - virtual EventState OnKeyPress(uint16 key, uint16 keycode) + virtual EventState OnHotkey(int hotkey) { if (this->vehicle->owner != _local_company) return ES_NOT_HANDLED; - return CheckHotkeyMatch(order_hotkeys, keycode, this) != -1 ? ES_HANDLED : 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(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; } virtual void OnPlaceObject(Point pt, TileIndex tile) @@ -1468,7 +1474,7 @@ struct OrdersWindow : public Window { virtual void OnPlaceObjectAbort() { - this->RaiseWidget(WID_O_GOTO); + this->goto_type = OPOS_NONE; this->SetWidgetDirty(WID_O_GOTO); /* Remove drag highlighting if it exists. */ @@ -1504,25 +1510,24 @@ struct OrdersWindow : public Window { this->vscroll->SetCapacityFromWidget(this, WID_O_ORDER_LIST); } - static Hotkey order_hotkeys[]; + static HotkeyList hotkeys; }; -Hotkey OrdersWindow::order_hotkeys[] = { - Hotkey('D', "skip", 0, &OrdersWindow::OrderClick_Skip), - Hotkey('F', "delete", 0, &OrdersWindow::OrderClick_Delete), - Hotkey('G', "goto", 0, &OrdersWindow::OrderClick_Goto), - Hotkey('H', "nonstop", 0, &OrdersWindow::OrderClick_Nonstop), - Hotkey('J', "fullload", 0, &OrdersWindow::OrderClick_FullLoad), - Hotkey('K', "unload", 0, &OrdersWindow::OrderClick_Unload), - Hotkey((uint16)0, "nearest_depot", 0, &OrdersWindow::OrderClick_NearestDepot), - Hotkey((uint16)0, "always_service", 0, &OrdersWindow::OrderClick_Service), - Hotkey((uint16)0, "force_unload", 0, &OrdersWindow::OrderClick_Unload), - Hotkey((uint16)0, "transfer", 0, &OrdersWindow::OrderHotkey_Transfer), - Hotkey((uint16)0, "no_unload", 0, &OrdersWindow::OrderHotkey_NoUnload), - Hotkey((uint16)0, "no_load", 0, &OrdersWindow::OrderHotkey_NoLoad), - HOTKEY_LIST_END(OrdersWindow) +static Hotkey order_hotkeys[] = { + Hotkey('D', "skip", OHK_SKIP), + Hotkey('F', "delete", OHK_DELETE), + Hotkey('G', "goto", OHK_GOTO), + Hotkey('H', "nonstop", OHK_NONSTOP), + Hotkey('J', "fullload", OHK_FULLLOAD), + Hotkey('K', "unload", OHK_UNLOAD), + Hotkey((uint16)0, "nearest_depot", OHK_NEAREST_DEPOT), + Hotkey((uint16)0, "always_service", OHK_ALWAYS_SERVICE), + Hotkey((uint16)0, "transfer", OHK_TRANSFER), + Hotkey((uint16)0, "no_unload", OHK_NO_UNLOAD), + Hotkey((uint16)0, "no_load", OHK_NO_LOAD), + HOTKEY_LIST_END }; -Hotkey *_order_hotkeys = OrdersWindow::order_hotkeys; +HotkeyList OrdersWindow::hotkeys("order", order_hotkeys); /** Nested widget definition for "your" train orders. */ static const NWidgetPart _nested_orders_train_widgets[] = { @@ -1531,6 +1536,7 @@ static const NWidgetPart _nested_orders_train_widgets[] = { NWidget(WWT_CAPTION, COLOUR_GREY, WID_O_CAPTION), SetDataTip(STR_ORDERS_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_O_TIMETABLE_VIEW), SetMinimalSize(61, 14), SetDataTip(STR_ORDERS_TIMETABLE_VIEW, STR_ORDERS_TIMETABLE_VIEW_TOOLTIP), NWidget(WWT_SHADEBOX, COLOUR_GREY), + NWidget(WWT_DEFSIZEBOX, COLOUR_GREY), NWidget(WWT_STICKYBOX, COLOUR_GREY), EndContainer(), NWidget(NWID_HORIZONTAL), @@ -1593,11 +1599,12 @@ static const NWidgetPart _nested_orders_train_widgets[] = { EndContainer(), }; -static const WindowDesc _orders_train_desc( - WDP_AUTO, 384, 100, +static WindowDesc _orders_train_desc( + WDP_AUTO, "view_vehicle_orders_train", 384, 100, WC_VEHICLE_ORDERS, WC_VEHICLE_VIEW, WDF_CONSTRUCTION, - _nested_orders_train_widgets, lengthof(_nested_orders_train_widgets) + _nested_orders_train_widgets, lengthof(_nested_orders_train_widgets), + &OrdersWindow::hotkeys ); /** Nested widget definition for "your" orders (non-train). */ @@ -1607,6 +1614,7 @@ static const NWidgetPart _nested_orders_widgets[] = { NWidget(WWT_CAPTION, COLOUR_GREY, WID_O_CAPTION), SetDataTip(STR_ORDERS_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_O_TIMETABLE_VIEW), SetMinimalSize(61, 14), SetDataTip(STR_ORDERS_TIMETABLE_VIEW, STR_ORDERS_TIMETABLE_VIEW_TOOLTIP), NWidget(WWT_SHADEBOX, COLOUR_GREY), + NWidget(WWT_DEFSIZEBOX, COLOUR_GREY), NWidget(WWT_STICKYBOX, COLOUR_GREY), EndContainer(), NWidget(NWID_HORIZONTAL), @@ -1664,11 +1672,12 @@ static const NWidgetPart _nested_orders_widgets[] = { EndContainer(), }; -static const WindowDesc _orders_desc( - WDP_AUTO, 384, 100, +static WindowDesc _orders_desc( + WDP_AUTO, "view_vehicle_orders", 384, 100, WC_VEHICLE_ORDERS, WC_VEHICLE_VIEW, WDF_CONSTRUCTION, - _nested_orders_widgets, lengthof(_nested_orders_widgets) + _nested_orders_widgets, lengthof(_nested_orders_widgets), + &OrdersWindow::hotkeys ); /** Nested widget definition for competitor orders. */ @@ -1678,6 +1687,7 @@ static const NWidgetPart _nested_other_orders_widgets[] = { NWidget(WWT_CAPTION, COLOUR_GREY, WID_O_CAPTION), SetDataTip(STR_ORDERS_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_O_TIMETABLE_VIEW), SetMinimalSize(61, 14), SetDataTip(STR_ORDERS_TIMETABLE_VIEW, STR_ORDERS_TIMETABLE_VIEW_TOOLTIP), NWidget(WWT_SHADEBOX, COLOUR_GREY), + NWidget(WWT_DEFSIZEBOX, COLOUR_GREY), NWidget(WWT_STICKYBOX, COLOUR_GREY), EndContainer(), NWidget(NWID_HORIZONTAL), @@ -1689,11 +1699,12 @@ static const NWidgetPart _nested_other_orders_widgets[] = { EndContainer(), }; -static const WindowDesc _other_orders_desc( - WDP_AUTO, 384, 86, +static WindowDesc _other_orders_desc( + WDP_AUTO, "view_vehicle_orders_competitor", 384, 86, WC_VEHICLE_ORDERS, WC_VEHICLE_VIEW, WDF_CONSTRUCTION, - _nested_other_orders_widgets, lengthof(_nested_other_orders_widgets) + _nested_other_orders_widgets, lengthof(_nested_other_orders_widgets), + &OrdersWindow::hotkeys ); void ShowOrdersWindow(const Vehicle *v) diff --git a/src/order_type.h b/src/order_type.h index 947f00da8..d3a771ce8 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 109b3e5fe..05816c67e 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__) diff --git a/src/os/macosx/macos.h b/src/os/macosx/macos.h index d147dfb0b..1e6729f12 100644 --- a/src/os/macosx/macos.h +++ b/src/os/macosx/macos.h @@ -12,32 +12,6 @@ #ifndef MACOS_H #define MACOS_H -/* It would seem that to ensure backward compability we have to ensure that we have defined MAC_OS_X_VERSION_10_x everywhere */ -#ifndef MAC_OS_X_VERSION_10_3 -#define MAC_OS_X_VERSION_10_3 1030 -#endif - -#ifndef MAC_OS_X_VERSION_10_4 -#define MAC_OS_X_VERSION_10_4 1040 -#endif - -#ifndef MAC_OS_X_VERSION_10_5 -#define MAC_OS_X_VERSION_10_5 1050 -#endif - -#ifndef MAC_OS_X_VERSION_10_6 -#define MAC_OS_X_VERSION_10_6 1060 -#endif - -#ifndef MAC_OS_X_VERSION_10_7 -#define MAC_OS_X_VERSION_10_7 1070 -#endif - -#ifndef MAC_OS_X_VERSION_10_8 -#define MAC_OS_X_VERSION_10_8 1080 -#endif - - /** Helper function displaying a message the best possible way. */ void ShowMacDialog(const char *title, const char *message, const char *button_label); @@ -62,4 +36,6 @@ static inline bool MacOSVersionIsAtLeast(long major, long minor, long bugfix) return true; } +bool IsMonospaceFont(CFStringRef name); + #endif /* MACOS_H */ diff --git a/src/os/macosx/macos.mm b/src/os/macosx/macos.mm index 38ddae8ee..8d34cda58 100644 --- a/src/os/macosx/macos.mm +++ b/src/os/macosx/macos.mm @@ -155,11 +155,11 @@ void OSOpenBrowser(const char *url) /** * 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; } @@ -193,3 +193,15 @@ uint GetCPUCoreCount() return count; } + +/** + * Check if a font is a monospace font. + * @param name Name of the font. + * @return True if the font is a monospace font. + */ +bool IsMonospaceFont(CFStringRef name) +{ + NSFont *font = [ NSFont fontWithName:(NSString *)name size:0.0f ]; + + return font != NULL ? [ font isFixedPitch ] : false; +} diff --git a/src/os/macosx/osx_stdafx.h b/src/os/macosx/osx_stdafx.h index 688762be9..cd30f372e 100644 --- a/src/os/macosx/osx_stdafx.h +++ b/src/os/macosx/osx_stdafx.h @@ -12,6 +12,37 @@ #ifndef MACOS_STDAFX_H #define MACOS_STDAFX_H + +/* It would seem that to ensure backward compability we have to ensure that we have defined MAC_OS_X_VERSION_10_x everywhere */ +#ifndef MAC_OS_X_VERSION_10_3 +#define MAC_OS_X_VERSION_10_3 1030 +#endif + +#ifndef MAC_OS_X_VERSION_10_4 +#define MAC_OS_X_VERSION_10_4 1040 +#endif + +#ifndef MAC_OS_X_VERSION_10_5 +#define MAC_OS_X_VERSION_10_5 1050 +#endif + +#ifndef MAC_OS_X_VERSION_10_6 +#define MAC_OS_X_VERSION_10_6 1060 +#endif + +#ifndef MAC_OS_X_VERSION_10_7 +#define MAC_OS_X_VERSION_10_7 1070 +#endif + +#ifndef MAC_OS_X_VERSION_10_8 +#define MAC_OS_X_VERSION_10_8 1080 +#endif + +#ifndef MAC_OS_X_VERSION_10_9 +#define MAC_OS_X_VERSION_10_9 1090 +#endif + + #define __STDC_LIMIT_MACROS #include @@ -22,7 +53,7 @@ /* 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 @@ -44,6 +75,7 @@ #define WindowClass OTTDWindowClass #define ScriptOrder OTTDScriptOrder #define Palette OTTDPalette +#define GlyphID OTTDGlyphID #include #include @@ -53,6 +85,7 @@ #undef WindowClass #undef ScriptOrder #undef Palette +#undef GlyphID /* remove the variables that CoreServices defines, but we define ourselves too */ #undef bool @@ -75,4 +108,17 @@ typedef unsigned int NSUInteger; #endif /* __LP64__ */ #endif /* NSInteger */ +#ifndef CGFLOAT_DEFINED +#if __LP64__ +typedef double CGFloat; +#else +typedef float CGFloat; +#endif /* __LP64__ */ +#endif /* CGFLOAT_DEFINED */ + +/* OS X SDK versions >= 10.5 have a non-const iconv. */ +#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5 +# define HAVE_NON_CONST_ICONV +#endif + #endif /* MACOS_STDAFX_H */ diff --git a/src/os/macosx/splash.cpp b/src/os/macosx/splash.cpp index 79bb0a022..eadb78510 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 21fd0c78b..e62b96850 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,10 @@ int CDECL main(int argc, char *argv[]) { SetRandomSeed(time(NULL)); - return ttd_main(argc, argv); + 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 +189,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; } diff --git a/src/os/unix/crashlog_unix.cpp b/src/os/unix/crashlog_unix.cpp index 0960720d1..47de057f7 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 7cd9709f8..ebae5c244 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; @@ -272,7 +275,7 @@ int CDECL main(int argc, char *argv[]) signal(SIGPIPE, SIG_IGN); - ret = ttd_main(argc, argv); + ret = openttd_main(argc, argv); #ifdef WITH_COCOA cocoaReleaseAutoreleasePool(); @@ -282,7 +285,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 +340,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) diff --git a/src/os/windows/crashlog_win.cpp b/src/os/windows/crashlog_win.cpp index 2230203bf..6e28cdba6 100644 --- a/src/os/windows/crashlog_win.cpp +++ b/src/os/windows/crashlog_win.cpp @@ -10,12 +10,6 @@ /** @file crashlog_win.cpp Implementation of a crashlogger for Windows */ #include "../../stdafx.h" -#if defined(_MSC_VER) && defined(_M_AMD64) -/* Redefine WinNT version to get RtlCaptureContext prototype. */ -#undef _WIN32_WINNT -#undef NTDDI_VERSION -#define _WIN32_WINNT _WIN32_WINNT_WINXP -#endif /* defined(_MSC_VER) && defined(_M_AMD64) */ #include "../../crashlog.h" #include "win32.h" #include "../../core/alloc_func.hpp" @@ -30,6 +24,8 @@ #include #include +#include "../../safeguards.h" + static const uint MAX_SYMBOL_LEN = 512; static const uint MAX_FRAMES = 64; @@ -197,7 +193,7 @@ static char *PrintModuleInfo(char *output, const char *last, HMODULE mod) GetModuleFileName(mod, buffer, MAX_PATH); GetFileInfo(&dfi, buffer); output += seprintf(output, last, " %-20s handle: %p size: %d crc: %.8X date: %d-%.2d-%.2d %.2d:%.2d:%.2d\n", - WIDE_TO_MB(buffer), + FS2OTTD(buffer), mod, dfi.size, dfi.crc32, @@ -527,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; @@ -617,15 +613,17 @@ 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) { case WM_INITDIALOG: { -#if defined(UNICODE) - /* We need to put the crash-log in a seperate buffer because the default + /* We need to put the crash-log in a separate buffer because the default * buffer in MB_TO_WIDE is not large enough (512 chars) */ - wchar_t crash_msgW[lengthof(CrashLogWindows::current->crashlog)]; -#endif + TCHAR crash_msgW[lengthof(CrashLogWindows::current->crashlog)]; /* Convert unix -> dos newlines because the edit box only supports that properly :( */ const char *unix_nl = CrashLogWindows::current->crashlog; char dos_nl[lengthof(CrashLogWindows::current->crashlog)]; @@ -655,7 +653,7 @@ static INT_PTR CALLBACK CrashDialogFunc(HWND wnd, UINT msg, WPARAM wParam, LPARA } SetDlgItemText(wnd, 10, text); - SetDlgItemText(wnd, 11, MB_TO_WIDE_BUFFER(dos_nl, crash_msgW, lengthof(crash_msgW))); + SetDlgItemText(wnd, 11, convert_to_fs(dos_nl, crash_msgW, lengthof(crash_msgW))); SendDlgItemMessage(wnd, 11, WM_SETFONT, (WPARAM)GetStockObject(ANSI_FIXED_FONT), FALSE); SetWndSize(wnd, -1); } return TRUE; diff --git a/src/os/windows/ottdres.rc.in b/src/os/windows/ottdres.rc.in index 10c9531e0..f70c521ff 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,3,0,!!REVISION!! - PRODUCTVERSION 1,3,0,!!REVISION!! + FILEVERSION 1,5,0,!!REVISION!! + PRODUCTVERSION 1,5,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-2012. All Rights Reserved.\0" + VALUE "LegalCopyright", "Copyright \xA9 OpenTTD Developers 2002-2014. 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 065ed3737..3d5f0ebde 100644 --- a/src/os/windows/win32.cpp +++ b/src/os/windows/win32.cpp @@ -17,8 +17,9 @@ #include "../../fios.h" #include #include +#include #include /* SHGetFolderPath */ -#include +#include #include "win32.h" #include "../../core/alloc_func.hpp" #include "../../openttd.h" @@ -28,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; @@ -77,12 +83,12 @@ bool LoadLibraryList(Function proc[], const char *dll) void ShowOSErrorBox(const char *buf, bool system) { MyShowCursor(true); - MessageBox(GetActiveWindow(), MB_TO_WIDE(buf), _T("Error!"), MB_ICONSTOP); + MessageBox(GetActiveWindow(), OTTD2FS(buf), _T("Error!"), MB_ICONSTOP); } void OSOpenBrowser(const char *url) { - ShellExecute(GetActiveWindow(), _T("open"), MB_TO_WIDE(url), NULL, NULL, SW_SHOWNORMAL); + ShellExecute(GetActiveWindow(), _T("open"), OTTD2FS(url), NULL, NULL, SW_SHOWNORMAL); } /* Code below for windows version of opendir/readdir/closedir copied and @@ -209,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]; @@ -220,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 */ } } @@ -238,7 +244,7 @@ bool FiosIsValidFile(const char *path, const struct dirent *ent, struct stat *sb * we just have to subtract POSIX epoch and scale down to units of seconds. * http://www.gamedev.net/community/forums/topic.asp?topic_id=294070&whichpage=1� * XXX - not entirely correct, since filetimes on FAT aren't UTC but local, - * this won't entirely be correct, but we use the time only for comparsion. */ + * this won't entirely be correct, but we use the time only for comparison. */ sb->st_mtime = (time_t)((*(const uint64*)&fd->ftLastWriteTime - posix_epoch_hns) / 1E7); sb->st_mode = (fd->dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)? S_IFDIR : S_IFREG; @@ -370,12 +376,10 @@ static INT_PTR CALLBACK HelpDialogFunc(HWND wnd, UINT msg, WPARAM wParam, LPARAM *q++ = *p++; } *q = '\0'; -#if defined(UNICODE) - /* We need to put the text in a seperate buffer because the default - * buffer in MB_TO_WIDE might not be large enough (512 chars) */ - wchar_t help_msgW[8192]; -#endif - SetDlgItemText(wnd, 11, MB_TO_WIDE_BUFFER(help_msg, help_msgW, lengthof(help_msgW))); + /* We need to put the text in a separate buffer because the default + * buffer in OTTD2FS might not be large enough (512 chars). */ + TCHAR help_msg_buf[8192]; + SetDlgItemText(wnd, 11, convert_to_fs(help_msg, help_msg_buf, lengthof(help_msg_buf))); SendDlgItemMessage(wnd, 11, WM_SETFONT, (WPARAM)GetStockObject(ANSI_FIXED_FONT), FALSE); } return TRUE; @@ -406,12 +410,10 @@ void ShowInfo(const char *str) _help_msg = str; DialogBox(GetModuleHandle(NULL), MAKEINTRESOURCE(101), NULL, HelpDialogFunc); } else { -#if defined(UNICODE) - /* We need to put the text in a seperate buffer because the default - * buffer in MB_TO_WIDE might not be large enough (512 chars) */ - wchar_t help_msgW[8192]; -#endif - MessageBox(GetActiveWindow(), MB_TO_WIDE_BUFFER(str, help_msgW, lengthof(help_msgW)), _T("OpenTTD"), MB_ICONINFORMATION | MB_OK); + /* We need to put the text in a separate buffer because the default + * buffer in OTTD2FS might not be large enough (512 chars). */ + TCHAR help_msg_buf[8192]; + MessageBox(GetActiveWindow(), convert_to_fs(str, help_msg_buf, lengthof(help_msg_buf)), _T("OpenTTD"), MB_ICONINFORMATION | MB_OK); } MyShowCursor(old); } @@ -425,28 +427,18 @@ int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLi { int argc; char *argv[64]; // max 64 command line arguments - char *cmdline; - -#if !defined(UNICODE) - _codepage = GetACP(); // get system codepage as some kind of a default -#endif /* UNICODE */ CrashLog::InitialiseCrashLog(); -#if defined(UNICODE) - -#if !defined(WINCE) +#if defined(UNICODE) && !defined(WINCE) /* Check if a win9x user started the win32 version */ if (HasBit(GetVersion(), 31)) usererror("This version of OpenTTD doesn't run on windows 95/98/ME.\nPlease download the win9x binary and try again."); #endif - /* For UNICODE we need to convert the commandline to char* _AND_ - * save it because argv[] points into this buffer and thus needs to - * be available between subsequent calls to FS2OTTD() */ - char cmdlinebuf[MAX_PATH]; -#endif /* UNICODE */ - - cmdline = WIDE_TO_MB_BUFFER(GetCommandLine(), cmdlinebuf, lengthof(cmdlinebuf)); + /* 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 = stredup(FS2OTTD(GetCommandLine())); #if defined(_DEBUG) CreateConsole(); @@ -461,7 +453,8 @@ int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLi argc = ParseCommandLine(cmdline, argv, lengthof(argv)); - ttd_main(argc, argv); + openttd_main(argc, argv); + free(cmdline); return 0; } @@ -489,12 +482,10 @@ char *getcwd(char *buf, size_t size) /* GetModuleFileName returns dir with file, so remove everything behind latest '\\' */ char *p = strrchr(buf, '\\'); if (p != NULL) *p = '\0'; -#elif defined(UNICODE) +#else TCHAR path[MAX_PATH]; GetCurrentDirectory(MAX_PATH - 1, path); convert_from_fs(path, buf, size); -#else - GetCurrentDirectory(size, buf); #endif return buf; } @@ -505,19 +496,25 @@ void DetermineBasePaths(const char *exe) char tmp[MAX_PATH]; TCHAR path[MAX_PATH]; #ifdef WITH_PERSONAL_DIR - SHGetFolderPath(NULL, CSIDL_PERSONAL, NULL, SHGFP_TYPE_CURRENT, path); - strecpy(tmp, WIDE_TO_MB_BUFFER(path, tmp, lengthof(tmp)), lastof(tmp)); - AppendPathSeparator(tmp, MAX_PATH); - ttd_strlcat(tmp, PERSONAL_DIR, MAX_PATH); - AppendPathSeparator(tmp, MAX_PATH); - _searchpaths[SP_PERSONAL_DIR] = strdup(tmp); - - SHGetFolderPath(NULL, CSIDL_COMMON_DOCUMENTS, NULL, SHGFP_TYPE_CURRENT, path); - strecpy(tmp, WIDE_TO_MB_BUFFER(path, tmp, lengthof(tmp)), lastof(tmp)); - AppendPathSeparator(tmp, MAX_PATH); - ttd_strlcat(tmp, PERSONAL_DIR, MAX_PATH); - AppendPathSeparator(tmp, MAX_PATH); - _searchpaths[SP_SHARED_DIR] = strdup(tmp); + if (SUCCEEDED(OTTDSHGetFolderPath(NULL, CSIDL_PERSONAL, NULL, SHGFP_TYPE_CURRENT, path))) { + strecpy(tmp, FS2OTTD(path), lastof(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, lastof(tmp)); + strecat(tmp, PERSONAL_DIR, lastof(tmp)); + AppendPathSeparator(tmp, lastof(tmp)); + _searchpaths[SP_SHARED_DIR] = stredup(tmp); + } else { + _searchpaths[SP_SHARED_DIR] = NULL; + } #else _searchpaths[SP_PERSONAL_DIR] = NULL; _searchpaths[SP_SHARED_DIR] = NULL; @@ -525,23 +522,23 @@ 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()); _searchpaths[SP_BINARY_DIR] = NULL; } else { TCHAR exec_dir[MAX_PATH]; - _tcsncpy(path, MB_TO_WIDE_BUFFER(exe, path, lengthof(path)), lengthof(path)); + _tcsncpy(path, convert_to_fs(exe, path, lengthof(path)), lengthof(path)); if (!GetFullPathName(path, lengthof(exec_dir), exec_dir, NULL)) { DEBUG(misc, 0, "GetFullPathName failed (%lu)\n", GetLastError()); _searchpaths[SP_BINARY_DIR] = NULL; } else { - strecpy(tmp, WIDE_TO_MB_BUFFER(exec_dir, tmp, lengthof(tmp)), lastof(tmp)); + 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); } } @@ -550,7 +547,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; @@ -560,18 +557,18 @@ bool GetClipboardContents(char *buffer, size_t buff_len) cbuf = GetClipboardData(CF_UNICODETEXT); ptr = (const char*)GlobalLock(cbuf); - const char *ret = convert_from_fs((const wchar_t*)ptr, buffer, buff_len); + int out_len = WideCharToMultiByte(CP_UTF8, 0, (LPCWSTR)ptr, -1, buffer, (last - buffer) + 1, NULL, NULL); GlobalUnlock(cbuf); CloseClipboard(); - if (*ret == '\0') return false; + if (out_len == 0) return false; #if !defined(UNICODE) } else if (IsClipboardFormatAvailable(CF_TEXT)) { OpenClipboard(NULL); cbuf = GetClipboardData(CF_TEXT); ptr = (const char*)GlobalLock(cbuf); - ttd_strlcpy(buffer, FS2OTTD(ptr), buff_len); + strecpy(buffer, FS2OTTD(ptr), last); GlobalUnlock(cbuf); CloseClipboard(); @@ -606,26 +603,7 @@ void CSleep(int milliseconds) const char *FS2OTTD(const TCHAR *name) { static char utf8_buf[512]; -#if defined(UNICODE) return convert_from_fs(name, utf8_buf, lengthof(utf8_buf)); -#else - char *s = utf8_buf; - - for (; *name != '\0'; name++) { - wchar_t w; - int len = MultiByteToWideChar(_codepage, 0, name, 1, &w, 1); - if (len != 1) { - DEBUG(misc, 0, "[utf8] M2W error converting '%c'. Errno %lu", *name, GetLastError()); - continue; - } - - if (s + Utf8CharLen(w) >= lastof(utf8_buf)) break; - s += Utf8Encode(s, w); - } - - *s = '\0'; - return utf8_buf; -#endif /* UNICODE */ } /** @@ -637,34 +615,13 @@ const char *FS2OTTD(const TCHAR *name) * The returned value's contents can only be guaranteed until the next call to * this function. So if the value is needed for anything else, use convert_from_fs * @param name pointer to a valid string that will be converted (UTF8) + * @param console_cp convert to the console encoding instead of the normal system encoding. * @return pointer to the converted string; if failed string is of zero-length - * @see the current code-page comes from video\win32_v.cpp, event-notification - * WM_INPUTLANGCHANGE */ -const TCHAR *OTTD2FS(const char *name) +const TCHAR *OTTD2FS(const char *name, bool console_cp) { static TCHAR system_buf[512]; -#if defined(UNICODE) - return convert_to_fs(name, system_buf, lengthof(system_buf)); -#else - char *s = system_buf; - - for (WChar c; (c = Utf8Consume(&name)) != '\0';) { - if (s >= lastof(system_buf)) break; - - char mb; - int len = WideCharToMultiByte(_codepage, 0, (wchar_t*)&c, 1, &mb, 1, NULL, NULL); - if (len != 1) { - DEBUG(misc, 0, "[utf8] W2M error converting '0x%X'. Errno %lu", c, GetLastError()); - continue; - } - - *s++ = mb; - } - - *s = '\0'; - return system_buf; -#endif /* UNICODE */ + return convert_to_fs(name, system_buf, lengthof(system_buf), console_cp); } @@ -676,14 +633,26 @@ const TCHAR *OTTD2FS(const char *name) * @param buflen length in characters of the receiving buffer * @return pointer to utf8_buf. If conversion fails the string is of zero-length */ -char *convert_from_fs(const wchar_t *name, char *utf8_buf, size_t buflen) +char *convert_from_fs(const TCHAR *name, char *utf8_buf, size_t buflen) { - int len = WideCharToMultiByte(CP_UTF8, 0, name, -1, utf8_buf, (int)buflen, NULL, NULL); - if (len == 0) { - DEBUG(misc, 0, "[utf8] W2M error converting wide-string. Errno %lu", GetLastError()); +#if defined(UNICODE) + const WCHAR *wide_buf = name; +#else + /* Convert string from the local codepage to UTF-16. */ + int wide_len = MultiByteToWideChar(CP_ACP, 0, name, -1, NULL, 0); + if (wide_len == 0) { utf8_buf[0] = '\0'; + return utf8_buf; } + WCHAR *wide_buf = AllocaM(WCHAR, wide_len); + MultiByteToWideChar(CP_ACP, 0, name, -1, wide_buf, wide_len); +#endif + + /* Convert UTF-16 string to UTF-8. */ + int len = WideCharToMultiByte(CP_UTF8, 0, wide_buf, -1, utf8_buf, (int)buflen, NULL, NULL); + if (len == 0) utf8_buf[0] = '\0'; + return utf8_buf; } @@ -695,17 +664,29 @@ char *convert_from_fs(const wchar_t *name, char *utf8_buf, size_t buflen) * @param utf16_buf pointer to a valid wide-char buffer that will receive the * converted string * @param buflen length in wide characters of the receiving buffer + * @param console_cp convert to the console encoding instead of the normal system encoding. * @return pointer to utf16_buf. If conversion fails the string is of zero-length */ -wchar_t *convert_to_fs(const char *name, wchar_t *utf16_buf, size_t buflen) +TCHAR *convert_to_fs(const char *name, TCHAR *system_buf, size_t buflen, bool console_cp) { - int len = MultiByteToWideChar(CP_UTF8, 0, name, -1, utf16_buf, (int)buflen); +#if defined(UNICODE) + int len = MultiByteToWideChar(CP_UTF8, 0, name, -1, system_buf, (int)buflen); + if (len == 0) system_buf[0] = '\0'; +#else + int len = MultiByteToWideChar(CP_UTF8, 0, name, -1, NULL, 0); if (len == 0) { - DEBUG(misc, 0, "[utf8] M2W error converting '%s'. Errno %lu", name, GetLastError()); - utf16_buf[0] = '\0'; + system_buf[0] = '\0'; + return system_buf; } - return utf16_buf; + WCHAR *wide_buf = AllocaM(WCHAR, len); + MultiByteToWideChar(CP_UTF8, 0, name, -1, wide_buf, len); + + len = WideCharToMultiByte(console_cp ? CP_OEMCP : CP_ACP, 0, wide_buf, len, system_buf, (int)buflen, NULL, NULL); + if (len == 0) system_buf[0] = '\0'; +#endif + + return system_buf; } /** @@ -726,8 +707,11 @@ HRESULT OTTDSHGetFolderPath(HWND hwnd, int csidl, HANDLE hToken, DWORD dwFlags, #else # define W(x) x "A" #endif - if (!LoadLibraryList((Function*)&SHGetFolderPath, "SHFolder.dll\0" W("SHGetFolderPath") "\0\0")) { - DEBUG(misc, 0, "Unable to load " W("SHGetFolderPath") "from SHFolder.dll"); + /* The function lives in shell32.dll for all current Windows versions, but it first started to appear in SHFolder.dll. */ + if (!LoadLibraryList((Function*)&SHGetFolderPath, "shell32.dll\0" W("SHGetFolderPath") "\0\0")) { + if (!LoadLibraryList((Function*)&SHGetFolderPath, "SHFolder.dll\0" W("SHGetFolderPath") "\0\0")) { + DEBUG(misc, 0, "Unable to load " W("SHGetFolderPath") "from either shell32.dll or SHFolder.dll"); + } } #undef W first_time = false; @@ -752,6 +736,17 @@ HRESULT OTTDSHGetFolderPath(HWND hwnd, int csidl, HANDLE hToken, DWORD dwFlags, return (HRESULT)0; + case CSIDL_PERSONAL: + case CSIDL_COMMON_DOCUMENTS: { + HKEY key; + if (RegOpenKeyEx(csidl == CSIDL_PERSONAL ? HKEY_CURRENT_USER : HKEY_LOCAL_MACHINE, REGSTR_PATH_SPECIAL_FOLDERS, 0, KEY_READ, &key) != ERROR_SUCCESS) break; + DWORD len = MAX_PATH; + ret = RegQueryValueEx(key, csidl == CSIDL_PERSONAL ? _T("Personal") : _T("Common Documents"), NULL, NULL, (LPBYTE)pszPath, &len); + RegCloseKey(key); + if (ret == ERROR_SUCCESS) return (HRESULT)0; + break; + } + /* XXX - other types to go here when needed... */ } } diff --git a/src/os/windows/win32.h b/src/os/windows/win32.h index 66c519973..45bcff10a 100644 --- a/src/os/windows/win32.h +++ b/src/os/windows/win32.h @@ -18,34 +18,21 @@ bool MyShowCursor(bool show, bool toggle = false); typedef void (*Function)(int); bool LoadLibraryList(Function proc[], const char *dll); -char *convert_from_fs(const wchar_t *name, char *utf8_buf, size_t buflen); -wchar_t *convert_to_fs(const char *name, wchar_t *utf16_buf, size_t buflen); +char *convert_from_fs(const TCHAR *name, char *utf8_buf, size_t buflen); +TCHAR *convert_to_fs(const char *name, TCHAR *utf16_buf, size_t buflen, bool console_cp = false); /* Function shortcuts for UTF-8 <> UNICODE conversion. When unicode is not * defined these macros return the string passed to them, with UNICODE - * they return a pointer to the converted string. The only difference between - * XX_TO_YY and XX_TO_YY_BUFFER is that with the buffer variant you can - * specify where to put the converted string (and how long it can be). Without - * the buffer and internal buffer is used, of max 512 characters */ + * they return a pointer to the converted string. These functions use an + * internal buffer of max 512 characters. */ #if defined(UNICODE) # define MB_TO_WIDE(str) OTTD2FS(str) -# define MB_TO_WIDE_BUFFER(str, buffer, buflen) convert_to_fs(str, buffer, buflen) # define WIDE_TO_MB(str) FS2OTTD(str) -# define WIDE_TO_MB_BUFFER(str, buffer, buflen) convert_from_fs(str, buffer, buflen) #else -extern uint _codepage; // local code-page in the system @see win32_v.cpp:WM_INPUTLANGCHANGE # define MB_TO_WIDE(str) (str) -# define MB_TO_WIDE_BUFFER(str, buffer, buflen) (str) # define WIDE_TO_MB(str) (str) -# define WIDE_TO_MB_BUFFER(str, buffer, buflen) (str) #endif -/* Override SHGetFolderPath with our custom implementation */ -#if defined(SHGetFolderPath) -#undef SHGetFolderPath -#endif -#define SHGetFolderPath OTTDSHGetFolderPath - HRESULT OTTDSHGetFolderPath(HWND, int, HANDLE, DWORD, LPTSTR); #if defined(__MINGW32__) diff --git a/src/osk_gui.cpp b/src/osk_gui.cpp index ea66782e8..974e465f4 100644 --- a/src/osk_gui.cpp +++ b/src/osk_gui.cpp @@ -16,12 +16,15 @@ #include "window_func.h" #include "gfx_func.h" #include "querystring_gui.h" +#include "video/video_driver.hpp" #include "widgets/osk_widget.h" #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]; @@ -40,7 +43,7 @@ struct OskWindow : public Window { char *orig_str_buf; ///< Original string. bool shift; ///< Is the shift effectively pressed? - OskWindow(const WindowDesc *desc, Window *parent, int button) : Window() + OskWindow(WindowDesc *desc, Window *parent, int button) : Window(desc) { this->parent = parent; assert(parent != NULL); @@ -56,9 +59,9 @@ 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(desc, 0); + this->InitNested(0); this->SetFocusedWidget(WID_OSK_TEXT); /* Not needed by default. */ @@ -83,9 +86,9 @@ struct OskWindow : public Window { for (uint i = 0; i < OSK_KEYBOARD_ENTRIES; i++) { this->SetWidgetDisabledState(WID_OSK_LETTERS + i, - !IsValidChar(_keyboard[this->shift][i], this->qs->afilter) || _keyboard[this->shift][i] == ' '); + !IsValidChar(_keyboard[this->shift][i], this->qs->text.afilter) || _keyboard[this->shift][i] == ' '); } - this->SetWidgetDisabledState(WID_OSK_SPACE, !IsValidChar(' ', this->qs->afilter)); + this->SetWidgetDisabledState(WID_OSK_SPACE, !IsValidChar(' ', this->qs->text.afilter)); this->SetWidgetLoweredState(WID_OSK_SHIFT, HasBit(_keystate, KEYS_SHIFT)); this->SetWidgetLoweredState(WID_OSK_CAPS, HasBit(_keystate, KEYS_CAPS)); @@ -113,7 +116,7 @@ struct OskWindow : public Window { if (widget >= WID_OSK_LETTERS) { WChar c = _keyboard[this->shift][widget - WID_OSK_LETTERS]; - if (!IsValidChar(c, this->qs->afilter)) return; + if (!IsValidChar(c, this->qs->text.afilter)) return; if (this->qs->text.InsertChar(c)) this->OnEditboxChanged(WID_OSK_TEXT); @@ -205,6 +208,7 @@ struct OskWindow : public Window { virtual void OnFocusLost() { + VideoDriver::GetInstance()->EditBoxLostFocus(); delete this; } }; @@ -339,8 +343,8 @@ static const NWidgetPart _nested_osk_widgets[] = { EndContainer(), }; -static const WindowDesc _osk_desc( - WDP_CENTER, 0, 0, +static WindowDesc _osk_desc( + WDP_CENTER, "query_osk", 0, 0, WC_OSK, WC_NONE, 0, _nested_osk_widgets, lengthof(_nested_osk_widgets) @@ -426,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 3fdc3f1f8..7cc7c7248 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,7 +123,7 @@ 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; @@ -233,7 +235,7 @@ struct CFollowTrackT 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 64a1735e4..9ef2bca47 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. @@ -124,7 +126,7 @@ void AyStar::CheckTile(AyStarNode *current, OpenListNode *parent) /* The f-value if g + h */ new_f = new_g + new_h; - /* Get the pointer to the parent in the ClosedList (the currentone is to a copy of the one in the OpenList) */ + /* Get the pointer to the parent in the ClosedList (the current one is to a copy of the one in the OpenList) */ closedlist_parent = this->ClosedListIsInList(&parent->path.node); /* Check if this item is already in the OpenList */ diff --git a/src/pathfinder/npf/aystar.h b/src/pathfinder/npf/aystar.h index 6865626eb..f9dd1a4ff 100644 --- a/src/pathfinder/npf/aystar.h +++ b/src/pathfinder/npf/aystar.h @@ -64,7 +64,7 @@ struct AyStar; /** * Check whether the end-tile is found. * @param aystar %AyStar search algorithm data. - * @param current Node to examone. + * @param current Node to exam one. * @note The 2nd parameter should be #OpenListNode, and \em not #AyStarNode. #AyStarNode is * part of #OpenListNode and so it could be accessed without any problems. * The good part about #OpenListNode is, and how AIs use it, that you can diff --git a/src/pathfinder/npf/npf.cpp b/src/pathfinder/npf/npf.cpp index 1b8d2f17f..bb705e5f4 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; @@ -100,7 +102,7 @@ static inline void NPFSetFlag(AyStarNode *node, NPFNodeFlag flag, bool value) } /** - * Calculates the minimum distance traveled to get from t0 to t1 when only + * Calculates the minimum distance travelled to get from t0 to t1 when only * using tracks (ie, only making 45 degree turns). Returns the distance in the * NPF scale, ie the number of full tiles multiplied by NPF_TILE_LENGTH to * prevent rounding. @@ -145,7 +147,7 @@ static int32 NPFCalcZero(AyStar *as, AyStarNode *current, OpenListNode *parent) return 0; } -/* Calcs the heuristic to the target station or tile. For train stations, it +/* Calculates the heuristic to the target station or tile. For train stations, it * takes into account the direction of approach. */ static int32 NPFCalcStationOrTileHeuristic(AyStar *as, AyStarNode *current, OpenListNode *parent) @@ -245,7 +247,7 @@ static uint NPFSlopeCost(AyStarNode *current) } return 0; /* Should we give a bonus for slope down? Probably not, we - * could just substract that bonus from the penalty, because + * could just subtract that bonus from the penalty, because * there is only one level of steepness... */ } @@ -569,7 +571,7 @@ static int32 NPFFindStationOrTile(AyStar *as, OpenListNode *current) * Find the node containing the first signal on the path. * * If the first signal is on the very first two tiles of the path, - * the second signal is returnd. If no suitable signal is present, the + * the second signal is returned. If no suitable signal is present, the * last node of the path is returned. */ static const PathNode *FindSafePosition(PathNode *path, const Train *v) @@ -1052,7 +1054,7 @@ static NPFFoundTargetData NPFRouteToStationOrTile(TileIndex tile, Trackdir track /* Search using breadth first. Good for little track choice and inaccurate * heuristic, such as railway/road with two start nodes, the second being the reverse. Call * NPFGetFlag(result.node, NPF_FLAG_REVERSE) to see from which node the path - * orginated. All pathfs from the second node will have the given + * originated. All paths from the second node will have the given * reverse_penalty applied (NPF_TILE_LENGTH is the equivalent of one full * tile). */ diff --git a/src/pathfinder/npf/queue.cpp b/src/pathfinder/npf/queue.cpp index f964ece24..2afb41391 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 @@ -158,7 +160,7 @@ bool BinaryHeap::Delete(void *item, int priority) for (;;) { j = i; - /* Check if we have 2 childs */ + /* Check if we have 2 children */ if (2 * j + 1 <= this->size) { /* Is this child smaller than the parent? */ if (this->GetElement(j).priority >= this->GetElement(2 * j).priority) i = 2 * j; @@ -170,13 +172,13 @@ bool BinaryHeap::Delete(void *item, int priority) if (this->GetElement(j).priority >= this->GetElement(2 * j).priority) i = 2 * j; } - /* One of our childs is smaller than we are, switch */ + /* One of our children is smaller than we are, switch */ if (i != j) { temp = this->GetElement(j); this->GetElement(j) = this->GetElement(i); this->GetElement(i) = temp; } else { - /* None of our childs is smaller, so we stay here.. stop :) */ + /* None of our children is smaller, so we stay here.. stop :) */ break; } } diff --git a/src/pathfinder/opf/opf_ship.cpp b/src/pathfinder/opf/opf_ship.cpp index 850577de1..023c6a4a0 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/pathfinder_type.h b/src/pathfinder/pathfinder_type.h index cee1fd3f6..9f5a42d76 100644 --- a/src/pathfinder/pathfinder_type.h +++ b/src/pathfinder/pathfinder_type.h @@ -18,7 +18,7 @@ static const int NPF_TILE_LENGTH = 100; /** - * This penalty is the equivalent of "infite", which means that paths that + * This penalty is the equivalent of "infinite", which means that paths that * get this penalty will be chosen, but only if there is no other route * without it. Be careful with not applying this penalty to often, or the * total path cost might overflow.. @@ -33,7 +33,7 @@ static const int YAPF_TILE_LENGTH = 100; static const int YAPF_TILE_CORNER_LENGTH = 71; /** - * This penalty is the equivalent of "infite", which means that paths that + * This penalty is the equivalent of "infinite", which means that paths that * get this penalty will be chosen, but only if there is no other route * without it. Be careful with not applying this penalty to often, or the * total path cost might overflow.. diff --git a/src/pathfinder/yapf/yapf.hpp b/src/pathfinder/yapf/yapf.hpp index be438fc49..fda79287d 100644 --- a/src/pathfinder/yapf/yapf.hpp +++ b/src/pathfinder/yapf/yapf.hpp @@ -29,6 +29,7 @@ #include "../../misc/dbg_helpers.h" #include "nodelist.hpp" #include "../follow_track.hpp" +#include "yapf_type.hpp" #include "yapf_base.hpp" #include "yapf_node.hpp" #include "yapf_common.hpp" diff --git a/src/pathfinder/yapf/yapf_base.hpp b/src/pathfinder/yapf/yapf_base.hpp index 4702c9451..0f88d058e 100644 --- a/src/pathfinder/yapf/yapf_base.hpp +++ b/src/pathfinder/yapf/yapf_base.hpp @@ -34,8 +34,8 @@ extern int _total_pf_time_us; * you need to declare only your node type. Look at test_yapf.h for an example. * * - * Requrements to your pathfinder class derived from CYapfBaseT: - * ------------------------------------------------------------- + * Requirements to your pathfinder class derived from CYapfBaseT: + * -------------------------------------------------------------- * Your pathfinder derived class needs to implement following methods: * inline void PfSetStartupNodes() * inline void PfFollowNode(Node& org) @@ -223,6 +223,21 @@ class CYapfBaseT { } } + /** + * In some cases an intermediate node branch should be pruned. + * The most prominent case is when a red EOL signal is encountered, but + * there was a segment change (e.g. a rail type change) before that. If + * the branch would not be pruned, the rail type change location would + * remain the best intermediate node, and thus the vehicle would still + * go towards the red EOL signal. + */ + void PruneIntermediateNodeBranch() + { + while (Yapf().m_pBestIntermediateNode != NULL && (Yapf().m_pBestIntermediateNode->m_segment->m_end_segment_reason & ESRB_CHOICE_FOLLOWS) == 0) { + Yapf().m_pBestIntermediateNode = Yapf().m_pBestIntermediateNode->m_parent; + } + } + /** * AddNewNode() - called by Tderived::PfFollowNode() for each child node. * Nodes are evaluated here and added into open list diff --git a/src/pathfinder/yapf/yapf_costbase.hpp b/src/pathfinder/yapf/yapf_costbase.hpp index 316d1476c..6b55585a8 100644 --- a/src/pathfinder/yapf/yapf_costbase.hpp +++ b/src/pathfinder/yapf/yapf_costbase.hpp @@ -15,7 +15,7 @@ /** Base implementation for cost accounting. */ struct CYapfCostBase { /** - * Does the given track direction on the given tile yeild an uphill penalty? + * Does the given track direction on the given tile yield an uphill penalty? * @param tile The tile to check. * @param td The track direction to check. * @return True if there's a slope, otherwise false. diff --git a/src/pathfinder/yapf/yapf_costrail.hpp b/src/pathfinder/yapf/yapf_costrail.hpp index 44647443b..c6080f2a1 100644 --- a/src/pathfinder/yapf/yapf_costrail.hpp +++ b/src/pathfinder/yapf/yapf_costrail.hpp @@ -212,7 +212,8 @@ class CYapfCostRailT /* we have a red signal in our direction * was it first signal which is two-way? */ if (!IsPbsSignal(sig_type) && Yapf().TreatFirstRedTwoWaySignalAsEOL() && n.flags_u.flags_s.m_choice_seen && has_signal_against && n.m_num_signals_passed == 0) { - /* yes, the first signal is two-way red signal => DEAD END */ + /* yes, the first signal is two-way red signal => DEAD END. Prune this branch... */ + Yapf().PruneIntermediateNodeBranch(); n.m_segment->m_end_segment_reason |= ESRB_DEAD_END; Yapf().m_stopped_on_first_two_way_signal = true; return -1; diff --git a/src/pathfinder/yapf/yapf_node_rail.hpp b/src/pathfinder/yapf/yapf_node_rail.hpp index 765fa0daf..b615b8227 100644 --- a/src/pathfinder/yapf/yapf_node_rail.hpp +++ b/src/pathfinder/yapf/yapf_node_rail.hpp @@ -61,75 +61,6 @@ struct CYapfRailSegmentKey } }; -/* Enum used in PfCalcCost() to see why was the segment closed. */ -enum EndSegmentReason { - /* The following reasons can be saved into cached segment */ - ESR_DEAD_END = 0, ///< track ends here - ESR_RAIL_TYPE, ///< the next tile has a different rail type than our tiles - ESR_INFINITE_LOOP, ///< infinite loop detected - ESR_SEGMENT_TOO_LONG, ///< the segment is too long (possible infinite loop) - ESR_CHOICE_FOLLOWS, ///< the next tile contains a choice (the track splits to more than one segments) - ESR_DEPOT, ///< stop in the depot (could be a target next time) - ESR_WAYPOINT, ///< waypoint encountered (could be a target next time) - ESR_STATION, ///< station encountered (could be a target next time) - ESR_SAFE_TILE, ///< safe waiting position found (could be a target) - - /* The following reasons are used only internally by PfCalcCost(). - * They should not be found in the cached segment. */ - ESR_PATH_TOO_LONG, ///< the path is too long (searching for the nearest depot in the given radius) - ESR_FIRST_TWO_WAY_RED, ///< first signal was 2-way and it was red - ESR_LOOK_AHEAD_END, ///< we have just passed the last look-ahead signal - ESR_TARGET_REACHED, ///< we have just reached the destination - - /* Special values */ - ESR_NONE = 0xFF, ///< no reason to end the segment here -}; - -enum EndSegmentReasonBits { - ESRB_NONE = 0, - - ESRB_DEAD_END = 1 << ESR_DEAD_END, - ESRB_RAIL_TYPE = 1 << ESR_RAIL_TYPE, - ESRB_INFINITE_LOOP = 1 << ESR_INFINITE_LOOP, - ESRB_SEGMENT_TOO_LONG = 1 << ESR_SEGMENT_TOO_LONG, - ESRB_CHOICE_FOLLOWS = 1 << ESR_CHOICE_FOLLOWS, - ESRB_DEPOT = 1 << ESR_DEPOT, - ESRB_WAYPOINT = 1 << ESR_WAYPOINT, - ESRB_STATION = 1 << ESR_STATION, - ESRB_SAFE_TILE = 1 << ESR_SAFE_TILE, - - ESRB_PATH_TOO_LONG = 1 << ESR_PATH_TOO_LONG, - ESRB_FIRST_TWO_WAY_RED = 1 << ESR_FIRST_TWO_WAY_RED, - ESRB_LOOK_AHEAD_END = 1 << ESR_LOOK_AHEAD_END, - ESRB_TARGET_REACHED = 1 << ESR_TARGET_REACHED, - - /* Additional (composite) values. */ - - /* What reasons mean that the target can be found and needs to be detected. */ - ESRB_POSSIBLE_TARGET = ESRB_DEPOT | ESRB_WAYPOINT | ESRB_STATION | ESRB_SAFE_TILE, - - /* What reasons can be stored back into cached segment. */ - ESRB_CACHED_MASK = ESRB_DEAD_END | ESRB_RAIL_TYPE | ESRB_INFINITE_LOOP | ESRB_SEGMENT_TOO_LONG | ESRB_CHOICE_FOLLOWS | ESRB_DEPOT | ESRB_WAYPOINT | ESRB_STATION | ESRB_SAFE_TILE, - - /* Reasons to abort pathfinding in this direction. */ - ESRB_ABORT_PF_MASK = ESRB_DEAD_END | ESRB_PATH_TOO_LONG | ESRB_INFINITE_LOOP | ESRB_FIRST_TWO_WAY_RED, -}; - -DECLARE_ENUM_AS_BIT_SET(EndSegmentReasonBits) - -inline CStrA ValueStr(EndSegmentReasonBits bits) -{ - static const char * const end_segment_reason_names[] = { - "DEAD_END", "RAIL_TYPE", "INFINITE_LOOP", "SEGMENT_TOO_LONG", "CHOICE_FOLLOWS", - "DEPOT", "WAYPOINT", "STATION", "SAFE_TILE", - "PATH_TOO_LONG", "FIRST_TWO_WAY_RED", "LOOK_AHEAD_END", "TARGET_REACHED" - }; - - CStrA out; - out.Format("0x%04X (%s)", bits, ComposeNameT(bits, end_segment_reason_names, "UNK", ESRB_NONE, "NONE").Data()); - return out.Transfer(); -} - /** cached segment cost for rail YAPF */ struct CYapfRailSegment { @@ -265,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 48417b2b3..dea4e28c1 100644 --- a/src/pathfinder/yapf/yapf_rail.cpp +++ b/src/pathfinder/yapf/yapf_rail.cpp @@ -17,6 +17,9 @@ #include "yapf_costrail.hpp" #include "yapf_destrail.hpp" #include "../../viewport_func.h" +#include "../../newgrf_station.h" + +#include "../../safeguards.h" #define DEBUG_YAPF_CACHE 0 @@ -83,6 +86,8 @@ class CYapfReserveTrack tile = TILE_ADD(tile, diff); } while (IsCompatibleTrainStationTile(tile, start) && tile != m_origin_tile); + TriggerStationRandomisation(NULL, start, SRT_PATH_RESERVATION); + return true; } diff --git a/src/pathfinder/yapf/yapf_road.cpp b/src/pathfinder/yapf/yapf_road.cpp index 82493241f..711889b56 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 a4113144e..a01444a9e 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 @@ -58,9 +60,12 @@ class CYapfFollowShipT if (tile == v->dest_tile) { /* convert tracks to trackdirs */ TrackdirBits trackdirs = (TrackdirBits)(tracks | ((int)tracks << 8)); - /* choose any trackdir reachable from enterdir */ + /* limit to trackdirs reachable from enterdir */ trackdirs &= DiagdirReachesTrackdirs(enterdir); - return (Trackdir)FindFirstBit2x64(trackdirs); + + /* use vehicle's current direction if that's possible, otherwise use first usable one. */ + Trackdir veh_dir = v->GetVehicleTrackdir(); + return ((trackdirs & TrackdirToTrackdirBits(veh_dir)) != 0) ? veh_dir : (Trackdir)FindFirstBit2x64(trackdirs); } /* move back to the old tile/trackdir (where ship is coming from) */ @@ -164,7 +169,7 @@ class CYapfCostShipT /* 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/pathfinder/yapf/yapf_type.hpp b/src/pathfinder/yapf/yapf_type.hpp new file mode 100644 index 000000000..8d24eee5e --- /dev/null +++ b/src/pathfinder/yapf/yapf_type.hpp @@ -0,0 +1,84 @@ +/* $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 yapf_type.hpp Types used by YAPF. */ + +#ifndef YAPF_TYPE_HPP +#define YAPF_TYPE_HPP + +/* Enum used in PfCalcCost() to see why was the segment closed. */ +enum EndSegmentReason { + /* The following reasons can be saved into cached segment */ + ESR_DEAD_END = 0, ///< track ends here + ESR_RAIL_TYPE, ///< the next tile has a different rail type than our tiles + ESR_INFINITE_LOOP, ///< infinite loop detected + ESR_SEGMENT_TOO_LONG, ///< the segment is too long (possible infinite loop) + ESR_CHOICE_FOLLOWS, ///< the next tile contains a choice (the track splits to more than one segments) + ESR_DEPOT, ///< stop in the depot (could be a target next time) + ESR_WAYPOINT, ///< waypoint encountered (could be a target next time) + ESR_STATION, ///< station encountered (could be a target next time) + ESR_SAFE_TILE, ///< safe waiting position found (could be a target) + + /* The following reasons are used only internally by PfCalcCost(). + * They should not be found in the cached segment. */ + ESR_PATH_TOO_LONG, ///< the path is too long (searching for the nearest depot in the given radius) + ESR_FIRST_TWO_WAY_RED, ///< first signal was 2-way and it was red + ESR_LOOK_AHEAD_END, ///< we have just passed the last look-ahead signal + ESR_TARGET_REACHED, ///< we have just reached the destination + + /* Special values */ + ESR_NONE = 0xFF, ///< no reason to end the segment here +}; + +enum EndSegmentReasonBits { + ESRB_NONE = 0, + + ESRB_DEAD_END = 1 << ESR_DEAD_END, + ESRB_RAIL_TYPE = 1 << ESR_RAIL_TYPE, + ESRB_INFINITE_LOOP = 1 << ESR_INFINITE_LOOP, + ESRB_SEGMENT_TOO_LONG = 1 << ESR_SEGMENT_TOO_LONG, + ESRB_CHOICE_FOLLOWS = 1 << ESR_CHOICE_FOLLOWS, + ESRB_DEPOT = 1 << ESR_DEPOT, + ESRB_WAYPOINT = 1 << ESR_WAYPOINT, + ESRB_STATION = 1 << ESR_STATION, + ESRB_SAFE_TILE = 1 << ESR_SAFE_TILE, + + ESRB_PATH_TOO_LONG = 1 << ESR_PATH_TOO_LONG, + ESRB_FIRST_TWO_WAY_RED = 1 << ESR_FIRST_TWO_WAY_RED, + ESRB_LOOK_AHEAD_END = 1 << ESR_LOOK_AHEAD_END, + ESRB_TARGET_REACHED = 1 << ESR_TARGET_REACHED, + + /* Additional (composite) values. */ + + /* What reasons mean that the target can be found and needs to be detected. */ + ESRB_POSSIBLE_TARGET = ESRB_DEPOT | ESRB_WAYPOINT | ESRB_STATION | ESRB_SAFE_TILE, + + /* What reasons can be stored back into cached segment. */ + ESRB_CACHED_MASK = ESRB_DEAD_END | ESRB_RAIL_TYPE | ESRB_INFINITE_LOOP | ESRB_SEGMENT_TOO_LONG | ESRB_CHOICE_FOLLOWS | ESRB_DEPOT | ESRB_WAYPOINT | ESRB_STATION | ESRB_SAFE_TILE, + + /* Reasons to abort pathfinding in this direction. */ + ESRB_ABORT_PF_MASK = ESRB_DEAD_END | ESRB_PATH_TOO_LONG | ESRB_INFINITE_LOOP | ESRB_FIRST_TWO_WAY_RED, +}; + +DECLARE_ENUM_AS_BIT_SET(EndSegmentReasonBits) + +inline CStrA ValueStr(EndSegmentReasonBits bits) +{ + static const char * const end_segment_reason_names[] = { + "DEAD_END", "RAIL_TYPE", "INFINITE_LOOP", "SEGMENT_TOO_LONG", "CHOICE_FOLLOWS", + "DEPOT", "WAYPOINT", "STATION", "SAFE_TILE", + "PATH_TOO_LONG", "FIRST_TWO_WAY_RED", "LOOK_AHEAD_END", "TARGET_REACHED" + }; + + CStrA out; + out.Format("0x%04X (%s)", bits, ComposeNameT(bits, end_segment_reason_names, "UNK", ESRB_NONE, "NONE").Data()); + return out.Transfer(); +} + +#endif /* YAPF_TYPE_HPP */ diff --git a/src/pbs.cpp b/src/pbs.cpp index 01e7b2f37..76cb3b9d6 100644 --- a/src/pbs.cpp +++ b/src/pbs.cpp @@ -12,8 +12,11 @@ #include "stdafx.h" #include "viewport_func.h" #include "vehicle_func.h" +#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 @@ -72,10 +75,11 @@ void SetRailStationPlatformReservation(TileIndex start, DiagDirection dir, bool * Try to reserve a specific track on a tile * @param tile the tile * @param t the track + * @param trigger_stations whether to call station randomisation trigger * @return \c true if reservation was successful, i.e. the track was * free and didn't cross any other reserved tracks. */ -bool TryReserveRailTrack(TileIndex tile, Track t) +bool TryReserveRailTrack(TileIndex tile, Track t, bool trigger_stations) { assert((GetTileTrackStatus(tile, TRANSPORT_RAIL, 0) & TrackToTrackBits(t)) != 0); @@ -108,6 +112,7 @@ bool TryReserveRailTrack(TileIndex tile, Track t) case MP_STATION: if (HasStationRail(tile) && !HasStationReservation(tile)) { SetRailStationReservation(tile, true); + if (trigger_stations && IsRailStation(tile)) TriggerStationRandomisation(NULL, tile, SRT_PATH_RESERVATION); MarkTileDirtyByTile(tile); // some GRFs need redraw after reserving track return true; } @@ -219,7 +224,7 @@ static PBSTileInfo FollowReservation(Owner o, RailTypes rts, TileIndex tile, Tra if (first_loop) { /* Update the start tile after we followed the track the first - * time. This is neccessary because the track follower can skip + * time. This is necessary because the track follower can skip * tiles (in stations for example) which means that we might * never visit our original starting tile again. */ start_tile = tile; @@ -376,7 +381,7 @@ bool IsSafeWaitingPosition(const Train *v, TileIndex tile, Trackdir trackdir, bo if (HasSignalOnTrackdir(tile, trackdir) && !IsPbsSignal(GetSignalType(tile, TrackdirToTrack(trackdir)))) return true; } - /* Check next tile. For perfomance reasons, we check for 90 degree turns ourself. */ + /* Check next tile. For performance reasons, we check for 90 degree turns ourself. */ CFollowTrackRail ft(v, GetRailTypeInfo(v->railtype)->compatible_railtypes); /* End of track? */ diff --git a/src/pbs.h b/src/pbs.h index 2e1fb8968..a02d4d06e 100644 --- a/src/pbs.h +++ b/src/pbs.h @@ -21,7 +21,7 @@ TrackBits GetReservedTrackbits(TileIndex t); void SetRailStationPlatformReservation(TileIndex start, DiagDirection dir, bool b); -bool TryReserveRailTrack(TileIndex tile, Track t); +bool TryReserveRailTrack(TileIndex tile, Track t, bool trigger_stations = true); void UnreserveRailTrack(TileIndex tile, Track t); /** This struct contains information about the end of a reserved path. */ diff --git a/src/progress.cpp b/src/progress.cpp index 343893cee..b498be109 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/querystring_gui.h b/src/querystring_gui.h index a7916a801..a1f3896dd 100644 --- a/src/querystring_gui.h +++ b/src/querystring_gui.h @@ -16,18 +16,6 @@ #include "textbuf_gui.h" #include "window_gui.h" -/** - * Return values for HandleEditBoxKey - */ -enum HandleEditBoxResult -{ - HEBR_EDITING, ///< Editbox content changed. - HEBR_CURSOR, ///< Non-text change, e.g. cursor position. - HEBR_CONFIRM, ///< Return or enter key pressed. - HEBR_CANCEL, ///< Escape key pressed. - HEBR_NOT_FOCUSED, ///< Edit box widget not focused. -}; - /** * Data stored about a string that can be modified in the GUI */ @@ -42,7 +30,6 @@ struct QueryString { int cancel_button; ///< Widget button of parent window to simulate when pressing CANCEL in OSK. Textbuf text; const char *orig; - CharSetFilter afilter; bool handled; /** @@ -66,7 +53,41 @@ struct QueryString { void DrawEditBox(const Window *w, int wid) const; void ClickEditBox(Window *w, Point pt, int wid, int click_count, bool focus_changed); void HandleEditBox(Window *w, int wid); - HandleEditBoxResult HandleEditBoxKey(Window *w, int wid, uint16 key, uint16 keycode, EventState &state); + + Point GetCaretPosition(const Window *w, int wid) const; + Rect GetBoundingRect(const Window *w, int wid, const char *from, const char *to) const; + const char *GetCharAtPosition(const Window *w, int wid, const Point &pt) const; + + /** + * Get the current text. + * @return Current text. + */ + const char *GetText() const + { + return this->text.buf; + } + + /** + * Get the position of the caret in the text buffer. + * @return Pointer to the caret in the text buffer. + */ + const char *GetCaret() const + { + return this->text.buf + this->text.caretpos; + } + + /** + * Get the currently marked text. + * @param[out] length Length of the marked text. + * @return Begining of the marked area or NULL if no text is marked. + */ + const char *GetMarkedText(size_t *length) const + { + if (this->text.markend == 0) return NULL; + + *length = this->text.markend - this->text.markpos; + return this->text.buf + this->text.markpos; + } }; void ShowOnScreenKeyboard(Window *parent, int button); diff --git a/src/rail.cpp b/src/rail.cpp index fa0d86c88..79598ec4a 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 */ @@ -216,7 +218,7 @@ RailType GetBestRailtype(const CompanyID company) /** * Add the rail types that are to be introduced at the given date. * @param current The currently available railtypes. - * @param date The date for the introduction comparisions. + * @param date The date for the introduction comparisons. * @return The rail types that should be available when date * introduced rail types are taken into account as well. */ diff --git a/src/rail.h b/src/rail.h index 0a6a15381..249c1bea1 100644 --- a/src/rail.h +++ b/src/rail.h @@ -76,7 +76,7 @@ enum RailTrackOffset { }; /** - * Offsets for spries within a bridge surface overlay set. + * Offsets for sprites within a bridge surface overlay set. */ enum RailTrackBridgeOffset { RTBO_X, ///< Piece of rail in X direction @@ -120,7 +120,7 @@ struct RailtypeInfo { SpriteID single_s; ///< single piece of rail in the southern corner SpriteID single_e; ///< single piece of rail in the eastern corner SpriteID single_w; ///< single piece of rail in the western corner - SpriteID single_sloped;///< single piecs of rail for slopes + SpriteID single_sloped;///< single piece of rail for slopes SpriteID crossing; ///< level crossing, rail in X direction SpriteID tunnel; ///< tunnel sprites base } base_sprites; diff --git a/src/rail_cmd.cpp b/src/rail_cmd.cpp index 2f3728450..c4b2b9f43 100644 --- a/src/rail_cmd.cpp +++ b/src/rail_cmd.cpp @@ -32,11 +32,14 @@ #include "date_func.h" #include "strings_func.h" #include "company_gui.h" +#include "object_map.h" #include "table/strings.h" #include "table/railtypes.h" #include "table/track_land.h" +#include "safeguards.h" + /** Helper type for lists/vectors of trains */ typedef SmallVector TrainList; @@ -820,7 +823,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). @@ -834,7 +837,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); @@ -842,12 +845,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; @@ -901,7 +902,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 @@ -923,7 +924,7 @@ CommandCost CmdRemoveRailroadTrack(TileIndex tile, DoCommandFlag flags, uint32 p * @return the cost of this operation or an error * * @todo When checking for the tile slope, - * distingush between "Flat land required" and "land sloped in wrong direction" + * distinguish between "Flat land required" and "land sloped in wrong direction" */ CommandCost CmdBuildTrainDepot(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) { @@ -1022,15 +1023,8 @@ CommandCost CmdBuildSingleSignal(TileIndex tile, DoCommandFlag flags, uint32 p1, CommandCost ret = CheckTileOwnership(tile); if (ret.Failed()) return ret; - { - /* See if this is a valid track combination for signals, (ie, no overlap) */ - TrackBits trackbits = GetTrackBits(tile); - if (KillFirstBit(trackbits) != TRACK_BIT_NONE && // More than one track present - trackbits != TRACK_BIT_HORZ && - trackbits != TRACK_BIT_VERT) { - return_cmd_error(STR_ERROR_NO_SUITABLE_RAILROAD_TRACK); - } - } + /* See if this is a valid track combination for signals (no overlap) */ + if (TracksOverlap(GetTrackBits(tile))) return_cmd_error(STR_ERROR_NO_SUITABLE_RAILROAD_TRACK); /* In case we don't want to change an existing signal, return without error. */ if (HasBit(p1, 17) && HasSignalOnTrack(tile, track)) return CommandCost(); @@ -1096,7 +1090,7 @@ CommandCost CmdBuildSingleSignal(TileIndex tile, DoCommandFlag flags, uint32 p1, if (convert_signal) { /* convert signal button pressed */ if (ctrl_pressed) { - /* toggle the pressent signal variant: SIG_ELECTRIC <-> SIG_SEMAPHORE */ + /* toggle the present signal variant: SIG_ELECTRIC <-> SIG_SEMAPHORE */ SetSignalVariant(tile, track, (GetSignalVariant(tile, track) == SIG_ELECTRIC) ? SIG_SEMAPHORE : SIG_ELECTRIC); /* Query current signal type so the check for PBS signals below works. */ sigtype = GetSignalType(tile, track); @@ -1139,9 +1133,9 @@ CommandCost CmdBuildSingleSignal(TileIndex tile, DoCommandFlag flags, uint32 p1, DirtyCompanyInfrastructureWindows(GetTileOwner(tile)); if (IsPbsSignal(sigtype)) { - /* PBS signals should show red unless they are on a reservation. */ + /* PBS signals should show red unless they are on reserved tiles without a train. */ uint mask = GetPresentSignals(tile) & SignalOnTrack(track); - SetSignalStates(tile, (GetSignalStates(tile) & ~mask) | ((HasBit(GetRailReservationTrackBits(tile), track) ? UINT_MAX : 0) & mask)); + SetSignalStates(tile, (GetSignalStates(tile) & ~mask) | ((HasBit(GetRailReservationTrackBits(tile), track) && EnsureNoVehicleOnGround(tile).Succeeded() ? UINT_MAX : 0) & mask)); } MarkTileDirtyByTile(tile); AddTrackToSignalBuffer(tile, track, _current_company); @@ -1320,7 +1314,7 @@ static CommandCost CmdSignalTrackHelper(TileIndex tile, DoCommandFlag flags, uin if (HasBit(signal_dir, 1)) signals |= SignalAgainstTrackdir(trackdir); /* Test tiles in between for suitability as well if minimising gaps. */ - bool test_only = minimise_gaps && signal_ctr < (last_used_ctr + signal_density); + bool test_only = !remove && minimise_gaps && signal_ctr < (last_used_ctr + signal_density); CommandCost ret = DoCommand(tile, p1, signals, test_only ? flags & ~DC_EXEC : flags, remove ? CMD_REMOVE_SIGNALS : CMD_BUILD_SIGNALS); if (ret.Succeeded()) { @@ -1523,16 +1517,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); @@ -1647,10 +1644,15 @@ 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 coverting rail <-> el. rail, any vehicle cannot be in tunnel/bridge */ + /* When not converting rail <-> el. rail, any vehicle cannot be in tunnel/bridge */ if (!IsCompatibleRail(GetRailType(tile), totype)) { CommandCost ret = TunnelBridgeIsFree(tile, endtile); if (ret.Failed()) { @@ -1718,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); } } @@ -2576,9 +2578,9 @@ static void TileLoop_Track(TileIndex tile) TileIndex tile2 = tile + TileOffsByDiagDir(d); - /* Show fences if it's a house, industry, road, tunnelbridge or not owned by us. */ + /* 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_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; } } @@ -2643,8 +2645,8 @@ static TrackStatus GetTileTrackStatus_Track(TileIndex tile, TransportType mode, /* When signals are not present (in neither direction), * we pretend them to be green. Otherwise, it depends on * the signal type. For signals that are only active from - * one side, we set the missing signals explicitely to - * `green'. Otherwise, they implicitely become `red'. */ + * one side, we set the missing signals explicitly to + * `green'. Otherwise, they implicitly become `red'. */ if (!IsOnewaySignal(tile, TRACK_UPPER) || (a & SignalOnTrack(TRACK_UPPER)) == 0) b |= ~a & SignalOnTrack(TRACK_UPPER); if (!IsOnewaySignal(tile, TRACK_LOWER) || (a & SignalOnTrack(TRACK_LOWER)) == 0) b |= ~a & SignalOnTrack(TRACK_LOWER); diff --git a/src/rail_gui.cpp b/src/rail_gui.cpp index bbbc695fe..1907c6617 100644 --- a/src/rail_gui.cpp +++ b/src/rail_gui.cpp @@ -33,12 +33,15 @@ #include "engine_base.h" #include "vehicle_func.h" #include "zoom_func.h" +#include "rail_gui.h" #include "station_map.h" #include "tunnelbridge_map.h" #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 @@ -85,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) @@ -132,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); @@ -170,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(); } @@ -261,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); } @@ -271,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); @@ -294,7 +297,7 @@ static void ToggleRailButton_Remove(Window *w) /** * Updates the Remove button because of Ctrl state change * @param w window the button belongs to - * @return true iff the remove buton was changed + * @return true iff the remove button was changed */ static bool RailToolbar_CtrlChanged(Window *w) { @@ -351,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() @@ -415,9 +419,9 @@ struct BuildRailToolbarWindow : Window { RailType railtype; ///< Rail type to build. int last_user_action; ///< Last started user action. - BuildRailToolbarWindow(const WindowDesc *desc, RailType railtype) : Window() + BuildRailToolbarWindow(WindowDesc *desc, RailType railtype) : Window(desc) { - this->InitNested(desc, TRANSPORT_RAIL); + this->InitNested(TRANSPORT_RAIL); this->SetupRailToolbar(railtype); this->DisableWidget(WID_RAT_REMOVE); this->last_user_action = WIDGET_LIST_END; @@ -596,13 +600,10 @@ struct BuildRailToolbarWindow : Window { if (_ctrl_pressed) RailToolbar_CtrlChanged(this); } - virtual EventState OnKeyPress(uint16 key, uint16 keycode) + virtual EventState OnHotkey(int hotkey) { - int num = CheckHotkeyMatch(railtoolbar_hotkeys, keycode, this); - if (num == -1) return ES_NOT_HANDLED; - this->OnClick(Point(), num, 1); MarkTileDirtyByTile(TileVirtXY(_thd.pos.x, _thd.pos.y)); // redraw tile selection - return ES_HANDLED; + return Window::OnHotkey(hotkey); } virtual void OnPlaceObject(Point pt, TileIndex tile) @@ -754,29 +755,43 @@ struct BuildRailToolbarWindow : Window { return ES_NOT_HANDLED; } - static Hotkey railtoolbar_hotkeys[]; + static HotkeyList hotkeys; }; +/** + * Handler for global hotkeys of the BuildRailToolbarWindow. + * @param hotkey Hotkey + * @return ES_HANDLED if hotkey was accepted. + */ +static EventState RailToolbarGlobalHotkeys(int hotkey) +{ + if (_game_mode != GM_NORMAL || !CanBuildVehicleInfrastructure(VEH_TRAIN)) return ES_NOT_HANDLED; + extern RailType _last_built_railtype; + Window *w = ShowBuildRailToolbar(_last_built_railtype); + if (w == NULL) return ES_NOT_HANDLED; + return w->OnHotkey(hotkey); +} + const uint16 _railtoolbar_autorail_keys[] = {'5', 'A' | WKC_GLOBAL_HOTKEY, 0}; -Hotkey BuildRailToolbarWindow::railtoolbar_hotkeys[] = { - Hotkey('1', "build_ns", WID_RAT_BUILD_NS), - Hotkey('2', "build_x", WID_RAT_BUILD_X), - Hotkey('3', "build_ew", WID_RAT_BUILD_EW), - Hotkey('4', "build_y", WID_RAT_BUILD_Y), - Hotkey(_railtoolbar_autorail_keys, "autorail", WID_RAT_AUTORAIL), - Hotkey('6', "demolish", WID_RAT_DEMOLISH), - Hotkey('7', "depot", WID_RAT_BUILD_DEPOT), - Hotkey('8', "waypoint", WID_RAT_BUILD_WAYPOINT), - Hotkey('9', "station", WID_RAT_BUILD_STATION), - Hotkey('S', "signal", WID_RAT_BUILD_SIGNALS), - Hotkey('B', "bridge", WID_RAT_BUILD_BRIDGE), - Hotkey('T', "tunnel", WID_RAT_BUILD_TUNNEL), - Hotkey('R', "remove", WID_RAT_REMOVE), - Hotkey('C', "convert", WID_RAT_CONVERT_RAIL), - HOTKEY_LIST_END(BuildRailToolbarWindow) +static Hotkey railtoolbar_hotkeys[] = { + Hotkey('1', "build_ns", WID_RAT_BUILD_NS), + Hotkey('2', "build_x", WID_RAT_BUILD_X), + Hotkey('3', "build_ew", WID_RAT_BUILD_EW), + Hotkey('4', "build_y", WID_RAT_BUILD_Y), + Hotkey(_railtoolbar_autorail_keys, "autorail", WID_RAT_AUTORAIL), + Hotkey('6', "demolish", WID_RAT_DEMOLISH), + Hotkey('7', "depot", WID_RAT_BUILD_DEPOT), + Hotkey('8', "waypoint", WID_RAT_BUILD_WAYPOINT), + Hotkey('9', "station", WID_RAT_BUILD_STATION), + Hotkey('S', "signal", WID_RAT_BUILD_SIGNALS), + Hotkey('B', "bridge", WID_RAT_BUILD_BRIDGE), + Hotkey('T', "tunnel", WID_RAT_BUILD_TUNNEL), + Hotkey('R', "remove", WID_RAT_REMOVE), + Hotkey('C', "convert", WID_RAT_CONVERT_RAIL), + HOTKEY_LIST_END }; -Hotkey *_railtoolbar_hotkeys = BuildRailToolbarWindow::railtoolbar_hotkeys; +HotkeyList BuildRailToolbarWindow::hotkeys("railtoolbar", railtoolbar_hotkeys, RailToolbarGlobalHotkeys); static const NWidgetPart _nested_build_rail_widgets[] = { NWidget(NWID_HORIZONTAL), @@ -819,11 +834,12 @@ static const NWidgetPart _nested_build_rail_widgets[] = { EndContainer(), }; -static const WindowDesc _build_rail_desc( - WDP_ALIGN_TOOLBAR, 0, 0, +static WindowDesc _build_rail_desc( + WDP_ALIGN_TOOLBAR, "toolbar_rail", 0, 0, WC_BUILD_TOOLBAR, WC_NONE, WDF_CONSTRUCTION, - _nested_build_rail_widgets, lengthof(_nested_build_rail_widgets) + _nested_build_rail_widgets, lengthof(_nested_build_rail_widgets), + &BuildRailToolbarWindow::hotkeys ); @@ -846,17 +862,6 @@ Window *ShowBuildRailToolbar(RailType railtype) return new BuildRailToolbarWindow(&_build_rail_desc, railtype); } -EventState RailToolbarGlobalHotkeys(uint16 key, uint16 keycode) -{ - if (!CanBuildVehicleInfrastructure(VEH_TRAIN)) return ES_NOT_HANDLED; - extern RailType _last_built_railtype; - int num = CheckHotkeyMatch(_railtoolbar_hotkeys, keycode, NULL, true); - if (num == -1) return ES_NOT_HANDLED; - Window *w = ShowBuildRailToolbar(_last_built_railtype); - if (w == NULL) return ES_NOT_HANDLED; - return w->OnKeyPress(key, keycode); -} - /* TODO: For custom stations, respect their allowed platforms/lengths bitmasks! * --pasky */ @@ -891,41 +896,51 @@ struct BuildRailStationWindow : public PickerWindowBase { { 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); } } public: - BuildRailStationWindow(const WindowDesc *desc, Window *parent, bool newstation) : PickerWindowBase(parent) + BuildRailStationWindow(WindowDesc *desc, Window *parent, bool newstation) : PickerWindowBase(desc, parent) { this->coverage_height = 2 * FONT_HEIGHT_NORMAL + 3 * WD_PAR_VSEP_NORMAL; this->vscroll = NULL; _railstation.newstations = newstation; - this->CreateNestedTree(desc); + this->CreateNestedTree(); NWidgetStacked *newst_additions = this->GetWidget(WID_BRAS_SHOW_NEWST_ADDITIONS); newst_additions->SetDisplayedPlane(newstation ? 0 : SZSP_NONE); newst_additions = this->GetWidget(WID_BRAS_SHOW_NEWST_MATRIX); newst_additions->SetDisplayedPlane(newstation ? 0 : SZSP_NONE); + newst_additions = this->GetWidget(WID_BRAS_SHOW_NEWST_DEFSIZE); + newst_additions->SetDisplayedPlane(newstation ? 0 : SZSP_NONE); newst_additions = this->GetWidget(WID_BRAS_SHOW_NEWST_RESIZE); newst_additions->SetDisplayedPlane(newstation ? 0 : SZSP_NONE); - this->FinishInitNested(desc, TRANSPORT_RAIL); + if (newstation) { + this->vscroll = this->GetScrollbar(WID_BRAS_NEWST_SCROLL); + this->vscroll2 = this->GetScrollbar(WID_BRAS_MATRIX_SCROLL); + } + this->FinishInitNested(TRANSPORT_RAIL); this->LowerWidget(_railstation.orientation + WID_BRAS_PLATFORM_DIR_X); if (_settings_client.gui.station_dragdrop) { @@ -953,12 +968,9 @@ struct BuildRailStationWindow : public PickerWindowBase { if (i == STAT_CLASS_WAYP) continue; count++; } - this->vscroll = this->GetScrollbar(WID_BRAS_NEWST_SCROLL); this->vscroll->SetCount(count); - this->vscroll->SetCapacity(GB(this->GetWidget(WID_BRAS_NEWST_LIST)->widget_data, MAT_ROW_START, MAT_ROW_BITS)); this->vscroll->SetPosition(Clamp(_railstation.station_class - 2, 0, max(this->vscroll->GetCount() - this->vscroll->GetCapacity(), 0))); - this->vscroll2 = this->GetScrollbar(WID_BRAS_MATRIX_SCROLL); NWidgetMatrix *matrix = this->GetWidget(WID_BRAS_MATRIX); matrix->SetScrollbar(this->vscroll2); matrix->SetCount(_railstation.station_count); @@ -1012,8 +1024,10 @@ struct BuildRailStationWindow : public PickerWindowBase { int bottom = cov->pos_y + cov->current_y; top = DrawStationCoverageAreaText(left, right, top, SCT_ALL, rad, false) + WD_PAR_VSEP_NORMAL; top = DrawStationCoverageAreaText(left, right, top, SCT_ALL, rad, true) + WD_PAR_VSEP_NORMAL; - /* Resize the coverage text space if the text is not equally long as the window. */ - if (top != bottom) { + /* Resize background if the window is too small. + * 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) { this->coverage_height += top - bottom; this->ReInit(); } @@ -1026,12 +1040,11 @@ struct BuildRailStationWindow : public PickerWindowBase { 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; - size->height = GB(this->GetWidget(widget)->widget_data, MAT_ROW_START, MAT_ROW_BITS) * this->line_height; + size->height = 5 * this->line_height; resize->height = this->line_height; break; } @@ -1080,8 +1093,8 @@ struct BuildRailStationWindow : public PickerWindowBase { 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, 16, _cur_railtype, AXIS_X, _railstation.station_class, _railstation.station_type)) { - StationPickerDrawSprite(32, 16, STATION_RAIL, _cur_railtype, INVALID_ROADTYPE, 2); + if (!DrawStationTile(32, 28, _cur_railtype, AXIS_X, _railstation.station_class, _railstation.station_type)) { + StationPickerDrawSprite(32, 28, STATION_RAIL, _cur_railtype, INVALID_ROADTYPE, 2); } _cur_dpi = old_dpi; } @@ -1092,8 +1105,8 @@ struct BuildRailStationWindow : public PickerWindowBase { 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, 16, _cur_railtype, AXIS_Y, _railstation.station_class, _railstation.station_type)) { - StationPickerDrawSprite(32, 16, STATION_RAIL, _cur_railtype, INVALID_ROADTYPE, 3); + if (!DrawStationTile(32, 28, _cur_railtype, AXIS_Y, _railstation.station_class, _railstation.station_type)) { + StationPickerDrawSprite(32, 28, STATION_RAIL, _cur_railtype, INVALID_ROADTYPE, 3); } _cur_dpi = old_dpi; } @@ -1105,8 +1118,8 @@ struct BuildRailStationWindow : public PickerWindowBase { 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++; } @@ -1125,11 +1138,11 @@ struct BuildRailStationWindow : public PickerWindowBase { } /* Set up a clipping area for the station preview. */ - if (FillDrawPixelInfo(&tmp_dpi, r.left + 1, r.top + 1, r.right - (r.left + 1) + 1, r.bottom - 1 - (r.top + 1) + 1)) { + 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(31, 29, _cur_railtype, _railstation.orientation, _railstation.station_class, type)) { - StationPickerDrawSprite(31, 29, STATION_RAIL, _cur_railtype, INVALID_ROADTYPE, 2 + _railstation.orientation); + if (!DrawStationTile(32, 28, _cur_railtype, _railstation.orientation, _railstation.station_class, type)) { + StationPickerDrawSprite(32, 28, STATION_RAIL, _cur_railtype, INVALID_ROADTYPE, 2 + _railstation.orientation); } _cur_dpi = old_dpi; } @@ -1142,7 +1155,6 @@ struct BuildRailStationWindow : public PickerWindowBase { { if (this->vscroll != NULL) { // New stations available. this->vscroll->SetCapacityFromWidget(this, WID_BRAS_NEWST_LIST); - this->GetWidget(WID_BRAS_NEWST_LIST)->widget_data = (this->vscroll->GetCapacity() << MAT_ROW_START) + (1 << MAT_COL_START); } } @@ -1340,6 +1352,9 @@ static const NWidgetPart _nested_station_builder_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_DARK_GREEN), NWidget(WWT_CAPTION, COLOUR_DARK_GREEN), SetDataTip(STR_STATION_BUILD_RAIL_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(NWID_SELECTION, INVALID_COLOUR, WID_BRAS_SHOW_NEWST_DEFSIZE), + NWidget(WWT_DEFSIZEBOX, COLOUR_DARK_GREEN), + EndContainer(), EndContainer(), NWidget(WWT_PANEL, COLOUR_DARK_GREEN), NWidget(NWID_HORIZONTAL), @@ -1347,16 +1362,16 @@ static const NWidgetPart _nested_station_builder_widgets[] = { NWidget(NWID_SELECTION, INVALID_COLOUR, WID_BRAS_SHOW_NEWST_ADDITIONS), NWidget(NWID_HORIZONTAL), SetPIP(7, 0, 7), SetPadding(2, 0, 1, 0), NWidget(WWT_MATRIX, COLOUR_GREY, WID_BRAS_NEWST_LIST), SetMinimalSize(122, 71), SetFill(1, 0), - SetDataTip(0x501, STR_STATION_BUILD_STATION_CLASS_TOOLTIP), SetScrollbar(WID_BRAS_NEWST_SCROLL), + SetMatrixDataTip(1, 0, STR_STATION_BUILD_STATION_CLASS_TOOLTIP), SetScrollbar(WID_BRAS_NEWST_SCROLL), NWidget(NWID_VSCROLLBAR, COLOUR_GREY, WID_BRAS_NEWST_SCROLL), EndContainer(), EndContainer(), NWidget(WWT_LABEL, COLOUR_DARK_GREEN), SetMinimalSize(144, 11), SetDataTip(STR_STATION_BUILD_ORIENTATION, STR_NULL), SetPadding(1, 2, 0, 2), NWidget(NWID_HORIZONTAL), NWidget(NWID_SPACER), SetMinimalSize(7, 0), SetFill(1, 0), - NWidget(WWT_PANEL, COLOUR_GREY, WID_BRAS_PLATFORM_DIR_X), SetMinimalSize(66, 48), SetFill(0, 0), SetDataTip(0x0, STR_STATION_BUILD_RAILROAD_ORIENTATION_TOOLTIP), EndContainer(), + NWidget(WWT_PANEL, COLOUR_GREY, WID_BRAS_PLATFORM_DIR_X), SetMinimalSize(66, 60), SetFill(0, 0), SetDataTip(0x0, STR_STATION_BUILD_RAILROAD_ORIENTATION_TOOLTIP), EndContainer(), NWidget(NWID_SPACER), SetMinimalSize(2, 0), SetFill(1, 0), - NWidget(WWT_PANEL, COLOUR_GREY, WID_BRAS_PLATFORM_DIR_Y), SetMinimalSize(66, 48), SetFill(0, 0), SetDataTip(0x0, STR_STATION_BUILD_RAILROAD_ORIENTATION_TOOLTIP), EndContainer(), + NWidget(WWT_PANEL, COLOUR_GREY, WID_BRAS_PLATFORM_DIR_Y), SetMinimalSize(66, 60), SetFill(0, 0), SetDataTip(0x0, STR_STATION_BUILD_RAILROAD_ORIENTATION_TOOLTIP), EndContainer(), NWidget(NWID_SPACER), SetMinimalSize(7, 0), SetFill(1, 0), EndContainer(), NWidget(WWT_LABEL, COLOUR_DARK_GREEN, WID_BRAS_SHOW_NEWST_TYPE), SetMinimalSize(144, 11), SetDataTip(STR_ORANGE_STRING, STR_NULL), SetPadding(1, 2, 4, 2), @@ -1427,8 +1442,8 @@ static const NWidgetPart _nested_station_builder_widgets[] = { }; /** High level window description of the station-build window (default & newGRF) */ -static const WindowDesc _station_builder_desc( - WDP_AUTO, 350, 0, +static WindowDesc _station_builder_desc( + WDP_AUTO, "build_station_rail", 350, 0, WC_BUILD_STATION, WC_BUILD_TOOLBAR, WDF_CONSTRUCTION, _nested_station_builder_widgets, lengthof(_nested_station_builder_widgets) @@ -1443,6 +1458,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 @@ -1452,32 +1470,23 @@ struct BuildSignalWindow : public PickerWindowBase { */ 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: - BuildSignalWindow(const WindowDesc *desc, Window *parent) : PickerWindowBase(parent) + BuildSignalWindow(WindowDesc *desc, Window *parent) : PickerWindowBase(desc, parent) { - this->InitNested(desc, TRANSPORT_RAIL); + this->InitNested(TRANSPORT_RAIL); this->OnInvalidateData(); } @@ -1486,6 +1495,37 @@ struct BuildSignalWindow : public PickerWindowBase { _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) { @@ -1614,8 +1654,8 @@ static const NWidgetPart _nested_signal_builder_widgets[] = { }; /** Signal selection window description */ -static const WindowDesc _signal_builder_desc( - WDP_AUTO, 0, 0, +static WindowDesc _signal_builder_desc( + WDP_AUTO, "build_signal", 0, 0, WC_BUILD_SIGNAL, WC_BUILD_TOOLBAR, WDF_CONSTRUCTION, _nested_signal_builder_widgets, lengthof(_nested_signal_builder_widgets) @@ -1630,9 +1670,9 @@ static void ShowSignalBuilder(Window *parent) } struct BuildRailDepotWindow : public PickerWindowBase { - BuildRailDepotWindow(const WindowDesc *desc, Window *parent) : PickerWindowBase(parent) + BuildRailDepotWindow(WindowDesc *desc, Window *parent) : PickerWindowBase(desc, parent) { - this->InitNested(desc, TRANSPORT_RAIL); + this->InitNested(TRANSPORT_RAIL); this->LowerWidget(_build_depot_direction + WID_BRAD_DEPOT_NE); } @@ -1691,8 +1731,8 @@ static const NWidgetPart _nested_build_depot_widgets[] = { EndContainer(), }; -static const WindowDesc _build_depot_desc( - WDP_AUTO, 0, 0, +static WindowDesc _build_depot_desc( + WDP_AUTO, NULL, 0, 0, WC_BUILD_DEPOT, WC_BUILD_TOOLBAR, WDF_CONSTRUCTION, _nested_build_depot_widgets, lengthof(_nested_build_depot_widgets) @@ -1704,14 +1744,14 @@ static void ShowBuildTrainDepotPicker(Window *parent) } struct BuildRailWaypointWindow : PickerWindowBase { - BuildRailWaypointWindow(const WindowDesc *desc, Window *parent) : PickerWindowBase(parent) + BuildRailWaypointWindow(WindowDesc *desc, Window *parent) : PickerWindowBase(desc, parent) { - this->CreateNestedTree(desc); + this->CreateNestedTree(); NWidgetMatrix *matrix = this->GetWidget(WID_BRW_WAYPOINT_MATRIX); matrix->SetScrollbar(this->GetScrollbar(WID_BRW_SCROLL)); - this->FinishInitNested(desc, TRANSPORT_RAIL); + this->FinishInitNested(TRANSPORT_RAIL); matrix->SetCount(_waypoint_count); matrix->SetClicked(_cur_waypoint_type); @@ -1772,6 +1812,7 @@ static const NWidgetPart _nested_build_waypoint_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_DARK_GREEN), NWidget(WWT_CAPTION, COLOUR_DARK_GREEN), SetDataTip(STR_WAYPOINT_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_DEFSIZEBOX, COLOUR_DARK_GREEN), EndContainer(), NWidget(NWID_HORIZONTAL), NWidget(NWID_MATRIX, COLOUR_DARK_GREEN, WID_BRW_WAYPOINT_MATRIX), SetPIP(3, 2, 3), SetScrollbar(WID_BRW_SCROLL), @@ -1784,8 +1825,8 @@ static const NWidgetPart _nested_build_waypoint_widgets[] = { EndContainer(), }; -static const WindowDesc _build_waypoint_desc( - WDP_AUTO, 0, 0, +static WindowDesc _build_waypoint_desc( + WDP_AUTO, "build_waypoint", 0, 0, WC_BUILD_WAYPOINT, WC_BUILD_TOOLBAR, WDF_CONSTRUCTION, _nested_build_waypoint_widgets, lengthof(_nested_build_waypoint_widgets) @@ -1870,7 +1911,7 @@ static void SetDefaultRailGui() * @param p needed to be called when a setting changes * @return success, needed for settings */ -bool ResetSignalVariant(int32 p = 0) +bool ResetSignalVariant(int32 p) { SignalVariant new_variant = (_cur_year < _settings_client.gui.semaphore_build_before ? SIG_SEMAPHORE : SIG_ELECTRIC); @@ -1905,9 +1946,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; } /** @@ -1944,8 +1985,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/rev.cpp.in b/src/rev.cpp.in index ce21fc503..c20838205 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. @@ -49,7 +51,7 @@ const char _openttd_build_date[] = __DATE__ " " __TIME__; /** * Let us know if current build was modified. This detection - * works even in the case when revision string is overriden by + * works even in the case when revision string is overridden by * --revision argument. * Value 0 means no modification, 1 is for unknown state * (compiling from sources without any version control software) @@ -68,9 +70,9 @@ const byte _openttd_revision_modified = !!MODIFIED!!; * * The 19th bit is there so the development/betas/alpha, etc. leading to a * final release will always have a lower version number than the released - * version, thus making comparisions on specific revisions easy. + * version, thus making comparisons on specific revisions easy. */ -const uint32 _openttd_newgrf_version = 1 << 28 | 3 << 24 | 0 << 20 | 0 << 19 | (!!REVISION!! & ((1 << 19) - 1)); +const uint32 _openttd_newgrf_version = 1 << 28 | 5 << 24 | 0 << 20 | 0 << 19 | (!!REVISION!! & ((1 << 19) - 1)); #ifdef __MORPHOS__ /** diff --git a/src/rev.h b/src/rev.h index 50b265419..d31dbb51c 100644 --- a/src/rev.h +++ b/src/rev.h @@ -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 . */ -/** @file rev.h declaration of OTTD revision dependant variables */ +/** @file rev.h declaration of OTTD revision dependent variables */ #ifndef REV_H #define REV_H diff --git a/src/road.cpp b/src/road.cpp index fad4cbce1..57c5da5d4 100644 --- a/src/road.cpp +++ b/src/road.cpp @@ -20,10 +20,12 @@ #include "date_func.h" #include "landscape.h" +#include "safeguards.h" + /** * Return if the tile is a valid tile for a crossing. * - * @param tile the curent tile + * @param tile the current tile * @param ax the axis of the road over the rail * @return true if it is a valid tile */ @@ -36,7 +38,7 @@ static bool IsPossibleCrossing(const TileIndex tile, Axis ax) } /** - * Clean up unneccesary RoadBits of a planed tile. + * Clean up unnecessary RoadBits of a planed tile. * @param tile current tile * @param org_rb planed RoadBits * @return optimised RoadBits @@ -56,7 +58,7 @@ RoadBits CleanUpRoadBits(const TileIndex tile, RoadBits org_rb) const RoadBits mirrored_rb = MirrorRoadBits(target_rb); switch (GetTileType(neighbor_tile)) { - /* Allways connective ones */ + /* Always connective ones */ case MP_CLEAR: case MP_TREES: connective = true; break; @@ -83,11 +85,11 @@ RoadBits CleanUpRoadBits(const TileIndex tile, RoadBits org_rb) connective = !IsWater(neighbor_tile); break; - /* The defentetly not connective ones */ + /* The definitely not connective ones */ default: break; } - /* If the neighbor tile is inconnective remove the planed road connection to it */ + /* If the neighbor tile is inconnective, remove the planed road connection to it */ if (!connective) org_rb ^= target_rb; } diff --git a/src/road_cmd.cpp b/src/road_cmd.cpp index 9f070b7af..d20bdcfb4 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 @@ -993,7 +995,7 @@ CommandCost CmdRemoveLongRoad(TileIndex start_tile, DoCommandFlag flags, uint32 * @return the cost of this operation or an error * * @todo When checking for the tile slope, - * distingush between "Flat land required" and "land sloped in wrong direction" + * distinguish between "Flat land required" and "land sloped in wrong direction" */ CommandCost CmdBuildRoadDepot(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) { diff --git a/src/road_func.h b/src/road_func.h index 27622f443..c4af229d5 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,13 +98,14 @@ 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)); } /** * Calculate rotated RoadBits * - * Move the Roadbits clockwise til they are in their final position. + * Move the Roadbits clockwise until they are in their final position. * * @param r The given RoadBits value * @param rot The given Rotation angle @@ -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 74b31499b..c0594e1f8 100644 --- a/src/road_gui.cpp +++ b/src/road_gui.cpp @@ -33,6 +33,8 @@ #include "table/strings.h" +#include "safeguards.h" + static void ShowRVStationPicker(Window *parent, RoadStopType rs); static void ShowRoadDepotPicker(Window *parent); @@ -63,7 +65,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 +77,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 +95,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 +176,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 +200,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) { @@ -273,7 +275,7 @@ static void PlaceRoad_TruckStation(TileIndex tile) typedef void OnButtonClick(Window *w); /** - * Toogles state of the Remove button of Build road toolbar + * Toggles state of the Remove button of Build road toolbar * @param w window the button belongs to */ static void ToggleRoadButton_Remove(Window *w) @@ -287,7 +289,7 @@ static void ToggleRoadButton_Remove(Window *w) /** * Updates the Remove button because of Ctrl state change * @param w window the button belongs to - * @return true iff the remove buton was changed + * @return true iff the remove button was changed */ static bool RoadToolbar_CtrlChanged(Window *w) { @@ -308,9 +310,9 @@ static bool RoadToolbar_CtrlChanged(Window *w) struct BuildRoadToolbarWindow : Window { int last_started_action; ///< Last started user action. - BuildRoadToolbarWindow(const WindowDesc *desc, WindowNumber window_number) : Window() + BuildRoadToolbarWindow(WindowDesc *desc, WindowNumber window_number) : Window(desc) { - this->InitNested(desc, window_number); + this->InitNested(window_number); this->SetWidgetsDisabledState(true, WID_ROT_REMOVE, WID_ROT_ONE_WAY, @@ -350,7 +352,7 @@ struct BuildRoadToolbarWindow : Window { void UpdateOptionWidgetStatus(RoadToolbarWidgets clicked_widget) { /* The remove and the one way button state is driven - * by the other buttons so they don't act on themselfs. + * by the other buttons so they don't act on themselves. * Both are only valid if they are able to apply as options. */ switch (clicked_widget) { case WID_ROT_REMOVE: @@ -473,13 +475,10 @@ struct BuildRoadToolbarWindow : Window { if (_ctrl_pressed) RoadToolbar_CtrlChanged(this); } - virtual EventState OnKeyPress(uint16 key, uint16 keycode) + virtual EventState OnHotkey(int hotkey) { - int num = CheckHotkeyMatch(roadtoolbar_hotkeys, keycode, this); - if (num == -1 || this->GetWidget(num) == NULL) return ES_NOT_HANDLED; - this->OnClick(Point(), num, 1); MarkTileDirtyByTile(TileVirtXY(_thd.pos.x, _thd.pos.y)); // redraw tile selection - return ES_HANDLED; + return Window::OnHotkey(hotkey); } virtual void OnPlaceObject(Point pt, TileIndex tile) @@ -660,24 +659,51 @@ struct BuildRoadToolbarWindow : Window { return ES_NOT_HANDLED; } - static Hotkey roadtoolbar_hotkeys[]; + static HotkeyList hotkeys; }; -Hotkey BuildRoadToolbarWindow::roadtoolbar_hotkeys[] = { - Hotkey('1', "build_x", WID_ROT_ROAD_X), - Hotkey('2', "build_y", WID_ROT_ROAD_Y), - Hotkey('3', "autoroad", WID_ROT_AUTOROAD), - Hotkey('4', "demolish", WID_ROT_DEMOLISH), - Hotkey('5', "depot", WID_ROT_DEPOT), - Hotkey('6', "bus_station", WID_ROT_BUS_STATION), - Hotkey('7', "truck_station", WID_ROT_TRUCK_STATION), - Hotkey('8', "oneway", WID_ROT_ONE_WAY), - Hotkey('B', "bridge", WID_ROT_BUILD_BRIDGE), - Hotkey('T', "tunnel", WID_ROT_BUILD_TUNNEL), - Hotkey('R', "remove", WID_ROT_REMOVE), - HOTKEY_LIST_END(BuildRoadToolbarWindow) +/** + * Handler for global hotkeys of the BuildRoadToolbarWindow. + * @param hotkey Hotkey + * @return ES_HANDLED if hotkey was accepted. + */ +static EventState RoadToolbarGlobalHotkeys(int hotkey) +{ + Window *w = NULL; + switch (_game_mode) { + case GM_NORMAL: { + extern RoadType _last_built_roadtype; + w = ShowBuildRoadToolbar(_last_built_roadtype); + break; + } + + case GM_EDITOR: + w = ShowBuildRoadScenToolbar(); + break; + + default: + break; + } + + if (w == NULL) return ES_NOT_HANDLED; + return w->OnHotkey(hotkey); +} + +static Hotkey roadtoolbar_hotkeys[] = { + Hotkey('1', "build_x", WID_ROT_ROAD_X), + Hotkey('2', "build_y", WID_ROT_ROAD_Y), + Hotkey('3', "autoroad", WID_ROT_AUTOROAD), + Hotkey('4', "demolish", WID_ROT_DEMOLISH), + Hotkey('5', "depot", WID_ROT_DEPOT), + Hotkey('6', "bus_station", WID_ROT_BUS_STATION), + Hotkey('7', "truck_station", WID_ROT_TRUCK_STATION), + Hotkey('8', "oneway", WID_ROT_ONE_WAY), + Hotkey('B', "bridge", WID_ROT_BUILD_BRIDGE), + Hotkey('T', "tunnel", WID_ROT_BUILD_TUNNEL), + Hotkey('R', "remove", WID_ROT_REMOVE), + HOTKEY_LIST_END }; -Hotkey *_roadtoolbar_hotkeys = BuildRoadToolbarWindow::roadtoolbar_hotkeys; +HotkeyList BuildRoadToolbarWindow::hotkeys("roadtoolbar", roadtoolbar_hotkeys, RoadToolbarGlobalHotkeys); static const NWidgetPart _nested_build_road_widgets[] = { @@ -713,11 +739,12 @@ static const NWidgetPart _nested_build_road_widgets[] = { EndContainer(), }; -static const WindowDesc _build_road_desc( - WDP_ALIGN_TOOLBAR, 0, 0, +static WindowDesc _build_road_desc( + WDP_ALIGN_TOOLBAR, "toolbar_road", 0, 0, WC_BUILD_TOOLBAR, WC_NONE, WDF_CONSTRUCTION, - _nested_build_road_widgets, lengthof(_nested_build_road_widgets) + _nested_build_road_widgets, lengthof(_nested_build_road_widgets), + &BuildRoadToolbarWindow::hotkeys ); static const NWidgetPart _nested_build_tramway_widgets[] = { @@ -752,11 +779,12 @@ static const NWidgetPart _nested_build_tramway_widgets[] = { EndContainer(), }; -static const WindowDesc _build_tramway_desc( - WDP_ALIGN_TOOLBAR, 0, 0, +static WindowDesc _build_tramway_desc( + WDP_ALIGN_TOOLBAR, "toolbar_tramway", 0, 0, WC_BUILD_TOOLBAR, WC_NONE, WDF_CONSTRUCTION, - _nested_build_tramway_widgets, lengthof(_nested_build_tramway_widgets) + _nested_build_tramway_widgets, lengthof(_nested_build_tramway_widgets), + &BuildRoadToolbarWindow::hotkeys ); /** @@ -775,16 +803,6 @@ Window *ShowBuildRoadToolbar(RoadType roadtype) return AllocateWindowDescFront(roadtype == ROADTYPE_ROAD ? &_build_road_desc : &_build_tramway_desc, TRANSPORT_ROAD); } -EventState RoadToolbarGlobalHotkeys(uint16 key, uint16 keycode) -{ - extern RoadType _last_built_roadtype; - int num = CheckHotkeyMatch(_roadtoolbar_hotkeys, keycode, NULL, true); - if (num == -1) return ES_NOT_HANDLED; - Window *w = ShowBuildRoadToolbar(_last_built_roadtype); - if (w == NULL) return ES_NOT_HANDLED; - return w->OnKeyPress(key, keycode); -} - static const NWidgetPart _nested_build_road_scen_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_DARK_GREEN), @@ -812,11 +830,12 @@ static const NWidgetPart _nested_build_road_scen_widgets[] = { EndContainer(), }; -static const WindowDesc _build_road_scen_desc( - WDP_AUTO, 0, 0, +static WindowDesc _build_road_scen_desc( + WDP_AUTO, "toolbar_road_scen", 0, 0, WC_SCEN_BUILD_TOOLBAR, WC_NONE, WDF_CONSTRUCTION, - _nested_build_road_scen_widgets, lengthof(_nested_build_road_scen_widgets) + _nested_build_road_scen_widgets, lengthof(_nested_build_road_scen_widgets), + &BuildRoadToolbarWindow::hotkeys ); /** @@ -829,19 +848,10 @@ Window *ShowBuildRoadScenToolbar() return AllocateWindowDescFront(&_build_road_scen_desc, TRANSPORT_ROAD); } -EventState RoadToolbarEditorGlobalHotkeys(uint16 key, uint16 keycode) -{ - int num = CheckHotkeyMatch(_roadtoolbar_hotkeys, keycode, NULL, true); - if (num == -1) return ES_NOT_HANDLED; - Window *w = ShowBuildRoadScenToolbar(); - if (w == NULL) return ES_NOT_HANDLED; - return w->OnKeyPress(key, keycode); -} - struct BuildRoadDepotWindow : public PickerWindowBase { - BuildRoadDepotWindow(const WindowDesc *desc, Window *parent) : PickerWindowBase(parent) + BuildRoadDepotWindow(WindowDesc *desc, Window *parent) : PickerWindowBase(desc, parent) { - this->CreateNestedTree(desc); + this->CreateNestedTree(); this->LowerWidget(_road_depot_orientation + WID_BROD_DEPOT_NE); if ( _cur_roadtype == ROADTYPE_TRAM) { @@ -849,7 +859,7 @@ struct BuildRoadDepotWindow : public PickerWindowBase { for (int i = WID_BROD_DEPOT_NE; i <= WID_BROD_DEPOT_NW; i++) this->GetWidget(i)->tool_tip = STR_BUILD_DEPOT_TRAM_ORIENTATION_SELECT_TOOLTIP; } - this->FinishInitNested(desc, TRANSPORT_ROAD); + this->FinishInitNested(TRANSPORT_ROAD); } virtual void DrawWidget(const Rect &r, int widget) const @@ -909,8 +919,8 @@ static const NWidgetPart _nested_build_road_depot_widgets[] = { EndContainer(), }; -static const WindowDesc _build_road_depot_desc( - WDP_AUTO, 0, 0, +static WindowDesc _build_road_depot_desc( + WDP_AUTO, NULL, 0, 0, WC_BUILD_DEPOT, WC_BUILD_TOOLBAR, WDF_CONSTRUCTION, _nested_build_road_depot_widgets, lengthof(_nested_build_road_depot_widgets) @@ -922,9 +932,9 @@ static void ShowRoadDepotPicker(Window *parent) } struct BuildRoadStationWindow : public PickerWindowBase { - BuildRoadStationWindow(const WindowDesc *desc, Window *parent, RoadStopType rs) : PickerWindowBase(parent) + BuildRoadStationWindow(WindowDesc *desc, Window *parent, RoadStopType rs) : PickerWindowBase(desc, parent) { - this->CreateNestedTree(desc); + this->CreateNestedTree(); /* Trams don't have non-drivethrough stations */ if (_cur_roadtype == ROADTYPE_TRAM && _road_station_picker_orientation < DIAGDIR_END) { @@ -943,7 +953,7 @@ struct BuildRoadStationWindow : public PickerWindowBase { this->LowerWidget(_road_station_picker_orientation + WID_BROS_STATION_NE); this->LowerWidget(_settings_client.gui.station_show_coverage + WID_BROS_LT_OFF); - this->FinishInitNested(desc, TRANSPORT_ROAD); + this->FinishInitNested(TRANSPORT_ROAD); this->window_class = (rs == ROADSTOP_BUS) ? WC_BUS_STATION : WC_TRUCK_STATION; } @@ -957,7 +967,7 @@ struct BuildRoadStationWindow : public PickerWindowBase { { this->DrawWidgets(); - int rad = _settings_game.station.modified_catchment ? CA_TRUCK /* = CA_BUS */ : CA_UNMODIFIED; + int rad = _settings_game.station.modified_catchment ? ((this->window_class == WC_BUS_STATION) ? CA_BUS : CA_TRUCK) : CA_UNMODIFIED; if (_settings_client.gui.station_show_coverage) { SetTileSelectBigSize(-rad, -rad, 2 * rad, 2 * rad); } else { @@ -972,8 +982,10 @@ struct BuildRoadStationWindow : public PickerWindowBase { int bottom = back_nwi->pos_y + back_nwi->current_y; top = DrawStationCoverageAreaText(back_nwi->pos_x + WD_FRAMERECT_LEFT, right - WD_FRAMERECT_RIGHT, top, sct, rad, false) + WD_PAR_VSEP_NORMAL; top = DrawStationCoverageAreaText(back_nwi->pos_x + WD_FRAMERECT_LEFT, right - WD_FRAMERECT_RIGHT, top, sct, rad, true) + WD_PAR_VSEP_NORMAL; - /* Resize background if the text is not equally long as the window. */ - if (top > bottom || (top < bottom && back_nwi->current_y > back_nwi->smallest_y)) { + /* Resize background if the window is too small. + * 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); } } @@ -1063,8 +1075,8 @@ static const NWidgetPart _nested_rv_station_picker_widgets[] = { EndContainer(), }; -static const WindowDesc _rv_station_picker_desc( - WDP_AUTO, 0, 0, +static WindowDesc _rv_station_picker_desc( + WDP_AUTO, NULL, 0, 0, WC_BUS_STATION, WC_BUILD_TOOLBAR, WDF_CONSTRUCTION, _nested_rv_station_picker_widgets, lengthof(_nested_rv_station_picker_widgets) diff --git a/src/road_map.cpp b/src/road_map.cpp index 2c24582ee..4984117ba 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/roadstop.cpp b/src/roadstop.cpp index b5840dd9d..ca049979c 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) @@ -65,7 +67,7 @@ void RoadStop::MakeDriveThrough() RoadStopType rst = GetRoadStopType(this->xy); DiagDirection dir = GetRoadStopDir(this->xy); - /* Use absolute so we always go towards the nortern tile */ + /* Use absolute so we always go towards the northern tile */ TileIndexDiff offset = abs(TileOffsByDiagDir(dir)); /* Information about the tile north of us */ @@ -81,7 +83,7 @@ void RoadStop::MakeDriveThrough() /* Amount of road stops that will be added to the 'northern' head */ int added = 1; if (north && rs_north->east != NULL) { // (east != NULL) == (west != NULL) - /* There is a more nothern one, so this can join them */ + /* There is a more northern one, so this can join them */ this->east = rs_north->east; this->west = rs_north->west; @@ -133,7 +135,7 @@ void RoadStop::ClearDriveThrough() RoadStopType rst = GetRoadStopType(this->xy); DiagDirection dir = GetRoadStopDir(this->xy); - /* Use absolute so we always go towards the nortern tile */ + /* Use absolute so we always go towards the northern tile */ TileIndexDiff offset = abs(TileOffsByDiagDir(dir)); /* Information about the tile north of us */ @@ -178,7 +180,7 @@ void RoadStop::ClearDriveThrough() /* We have to rebuild the entries because we cannot easily determine * how full each part is. So instead of keeping and maintaining a list * of vehicles and using that to 'rebuild' the occupied state we just - * rebuild it from scratch as that removes lots of maintainance code + * rebuild it from scratch as that removes lots of maintenance code * for the vehicle list and it's faster in real games as long as you * do not keep split and merge road stop every tick by the millions. */ rs_south_base->east->Rebuild(rs_south_base); @@ -243,7 +245,7 @@ bool RoadStop::Enter(RoadVehicle *rv) uint bay_nr = this->AllocateBay(); SB(rv->state, RVS_USING_SECOND_BAY, 1, bay_nr); - /* Mark the station entrace as busy */ + /* Mark the station entrance as busy */ this->SetEntranceBusy(true); return true; } @@ -290,7 +292,7 @@ void RoadStop::Entry::Leave(const RoadVehicle *rv) void RoadStop::Entry::Enter(const RoadVehicle *rv) { /* we cannot assert on this->occupied < this->length because of the - * remote possibility that RVs are running through eachother when + * remote possibility that RVs are running through each other when * trying to prevention an infinite jam. */ this->occupied += rv->gcache.cached_total_length; } diff --git a/src/roadveh.h b/src/roadveh.h index 7dd4da140..5b265f047 100644 --- a/src/roadveh.h +++ b/src/roadveh.h @@ -157,7 +157,7 @@ struct RoadVehicle FINAL : public GroundVehicle { */ inline uint16 GetWeight() const { - uint16 weight = (CargoSpec::Get(this->cargo_type)->weight * this->cargo.Count()) / 16; + uint16 weight = (CargoSpec::Get(this->cargo_type)->weight * this->cargo.StoredCount()) / 16; /* Vehicle weight is not added for articulated parts. */ if (!this->IsArticulatedPart()) { diff --git a/src/roadveh_cmd.cpp b/src/roadveh_cmd.cpp index 646cb0772..b3310af10 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] = { @@ -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,9 +141,10 @@ 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.Count() >= this->cargo_cap / 2U) sprite += _roadveh_full_adder[spritenum]; + if (this->cargo.StoredCount() >= this->cargo_cap / 2U) sprite += _roadveh_full_adder[spritenum]; return sprite; } @@ -232,10 +243,7 @@ void RoadVehUpdateCache(RoadVehicle *v, bool same_length) v->gcache.cached_total_length += u->gcache.cached_veh_length; /* Update visual effect */ - v->UpdateVisualEffect(); - - /* Invalidate the vehicle colour map */ - u->colourmap = PAL_NONE; + 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); @@ -279,8 +287,10 @@ CommandCost CmdBuildRoadVehicle(TileIndex tile, DoCommandFlag flags, const Engin v->spritenum = rvi->image_index; v->cargo_type = e->GetDefaultCargoType(); v->cargo_cap = rvi->capacity; + v->refit_cap = 0; v->last_station_visited = INVALID_STATION; + v->last_loading_station = INVALID_STATION; v->engine_type = e->index; v->gcache.first_engine = INVALID_ENGINE; // needs to be set before first callback @@ -289,7 +299,7 @@ CommandCost CmdBuildRoadVehicle(TileIndex tile, DoCommandFlag flags, const Engin v->max_age = e->GetLifeLengthInDays(); _new_vehicle_id = v->index; - v->service_interval = Company::Get(v->owner)->settings.vehicle.servint_roadveh; + v->SetServiceInterval(Company::Get(v->owner)->settings.vehicle.servint_roadveh); v->date_of_last_service = _date; v->build_year = _cur_year; @@ -303,6 +313,7 @@ CommandCost CmdBuildRoadVehicle(TileIndex tile, DoCommandFlag flags, const Engin v->gcache.cached_veh_length = VEHICLE_LENGTH; if (e->flags & ENGINE_EXCLUSIVE_PREVIEW) SetBit(v->vehicle_flags, VF_BUILT_AS_PROTOTYPE); + v->SetServiceIntervalIsPercent(Company::Get(_current_company)->settings.vehicle.servint_ispercent); AddArticulatedParts(v); v->InvalidateNewGRFCacheOfChain(); @@ -310,6 +321,7 @@ CommandCost CmdBuildRoadVehicle(TileIndex tile, DoCommandFlag flags, const Engin /* Call various callbacks after the whole consist has been constructed */ for (RoadVehicle *u = v; u != NULL; u = u->Next()) { u->cargo_cap = u->GetEngine()->DetermineCapacity(u); + u->refit_cap = 0; v->InvalidateNewGRFCache(); u->InvalidateNewGRFCache(); } @@ -390,7 +402,8 @@ CommandCost CmdTurnRoadVeh(TileIndex tile, DoCommandFlag flags, uint32 p1, uint3 void RoadVehicle::MarkDirty() { for (RoadVehicle *v = this; v != NULL; v = v->Next()) { - v->UpdateViewport(false, false); + v->colourmap = PAL_NONE; + v->UpdateViewport(true, false); } this->CargoChanged(); } @@ -428,17 +441,17 @@ void RoadVehicle::UpdateDeltaXY(Direction direction) */ inline int RoadVehicle::GetCurrentMaxSpeed() const { - if (_settings_game.vehicle.roadveh_acceleration_model == AM_ORIGINAL) return min(this->vcache.cached_max_speed, this->current_order.max_speed * 2); - int max_speed = this->vcache.cached_max_speed; /* Limit speed to 50% while reversing, 75% in curves. */ for (const RoadVehicle *u = this; u != NULL; u = u->Next()) { - if (this->state <= RVSB_TRACKDIR_MASK && IsReversingRoadTrackdir((Trackdir)this->state)) { - max_speed = this->vcache.cached_max_speed / 2; - break; - } else if ((u->direction & 1) == 0) { - max_speed = this->vcache.cached_max_speed * 3 / 4; + if (_settings_game.vehicle.roadveh_acceleration_model == AM_REALISTIC) { + if (this->state <= RVSB_TRACKDIR_MASK && IsReversingRoadTrackdir((Trackdir)this->state)) { + max_speed = this->vcache.cached_max_speed / 2; + break; + } else if ((u->direction & 1) == 0) { + max_speed = this->vcache.cached_max_speed * 3 / 4; + } } /* Vehicle is on the middle part of a bridge. */ @@ -447,7 +460,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); } /** @@ -456,9 +469,11 @@ inline int RoadVehicle::GetCurrentMaxSpeed() const */ static void DeleteLastRoadVeh(RoadVehicle *v) { + RoadVehicle *first = v->First(); Vehicle *u = v; for (; v->Next() != NULL; v = v->Next()) u = v; u->SetNext(NULL); + v->last_station_visited = first->last_station_visited; // for PreDestructor /* Only leave the road stop when we're really gone. */ if (IsInsideMM(v->state, RVSB_IN_ROAD_STOP, RVSB_IN_ROAD_STOP_END)) RoadStop::GetByTile(v->tile, GetRoadStopType(v->tile))->Leave(v); @@ -1088,13 +1103,13 @@ static bool CanBuildTramTrackOnTile(CompanyID c, TileIndex t, RoadBits r) /* The 'current' company is not necessarily the owner of the vehicle. */ Backup cur_company(_current_company, c, FILE_LINE); - CommandCost ret = DoCommand(t, ROADTYPE_TRAM << 4 | r, 0, DC_NONE, CMD_BUILD_ROAD); + CommandCost ret = DoCommand(t, ROADTYPE_TRAM << 4 | r, 0, DC_NO_WATER, CMD_BUILD_ROAD); cur_company.Restore(); 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)) { @@ -1403,14 +1418,13 @@ static bool IndividualRoadVehicleController(RoadVehicle *v, const RoadVehicle *p 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 @@ -1500,7 +1514,6 @@ static bool IndividualRoadVehicleController(RoadVehicle *v, const RoadVehicle *p static bool RoadVehController(RoadVehicle *v) { /* decrease counters */ - v->tick_counter++; v->current_order_time++; if (v->reverse_ctr != 0) v->reverse_ctr--; @@ -1575,6 +1588,8 @@ Money RoadVehicle::GetRunningCost() const bool RoadVehicle::Tick() { + this->tick_counter++; + if (this->IsFrontEngine()) { if (!(this->vehstatus & VS_STOPPED)) this->running_ticks++; return RoadVehController(this); diff --git a/src/roadveh_gui.cpp b/src/roadveh_gui.cpp index 03e283062..7f3e7bbbc 100644 --- a/src/roadveh_gui.cpp +++ b/src/roadveh_gui.cpp @@ -18,6 +18,8 @@ #include "table/strings.h" +#include "safeguards.h" + /** * Draw the details for the given vehicle at the given position * @@ -35,7 +37,7 @@ void DrawRoadVehDetails(const Vehicle *v, int left, int right, int y) SetDParam(0, v->engine_type); SetDParam(1, v->build_year); SetDParam(2, v->value); - DrawString(left, right, y + y_offset, STR_VEHICLE_INFO_BUILT_VALUE, TC_FROMSTRING, SA_LEFT | SA_STRIP); + DrawString(left, right, y + y_offset, STR_VEHICLE_INFO_BUILT_VALUE); if (v->HasArticulatedPart()) { CargoArray max_cargo; @@ -81,9 +83,9 @@ void DrawRoadVehDetails(const Vehicle *v, int left, int right, int y) if (u->cargo_cap == 0) continue; str = STR_VEHICLE_DETAILS_CARGO_EMPTY; - if (!u->cargo.Empty()) { + if (u->cargo.StoredCount() > 0) { SetDParam(0, u->cargo_type); - SetDParam(1, u->cargo.Count()); + SetDParam(1, u->cargo.StoredCount()); SetDParam(2, u->cargo.Source()); str = STR_VEHICLE_DETAILS_CARGO_FROM; feeder_share += u->cargo.FeederShare(); @@ -101,9 +103,9 @@ void DrawRoadVehDetails(const Vehicle *v, int left, int right, int y) DrawString(left, right, y + FONT_HEIGHT_NORMAL + y_offset, STR_VEHICLE_INFO_CAPACITY); str = STR_VEHICLE_DETAILS_CARGO_EMPTY; - if (!v->cargo.Empty()) { + if (v->cargo.StoredCount() > 0) { SetDParam(0, v->cargo_type); - SetDParam(1, v->cargo.Count()); + SetDParam(1, v->cargo.StoredCount()); SetDParam(2, v->cargo.Source()); str = STR_VEHICLE_DETAILS_CARGO_FROM; feeder_share += v->cargo.FeederShare(); diff --git a/src/safeguards.h b/src/safeguards.h new file mode 100644 index 000000000..f447627e6 --- /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 3a8e58ab4..8ecd27b49 100644 --- a/src/saveload/afterload.cpp +++ b/src/saveload/afterload.cpp @@ -58,6 +58,8 @@ #include +#include "../safeguards.h" + extern Company *DoStartupNewCompany(bool is_ai, CompanyID company = INVALID_COMPANY); /** @@ -74,7 +76,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 +250,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(); @@ -636,7 +667,12 @@ bool AfterLoadGame() SetDate(_date, _date_fract); /* - * Force the old behaviour for compatibility reasons with old savegames. + * Force the old behaviour for compatibility reasons with old savegames. As new + * settings can only be loaded from new savegames loading old savegames with new + * versions of OpenTTD will normally initialize settings newer than the savegame + * version with "new game" defaults which the player can define to their liking. + * For some settings we override that to keep the behaviour the same as when the + * game was saved. * * Note that there is no non-stop in here. This is because the setting could have * either value in TTDPatch. To convert it properly the user has to make sure the @@ -648,9 +684,27 @@ bool AfterLoadGame() if (IsSavegameVersionBefore(21)) _settings_game.vehicle.train_acceleration_model = 0; if (IsSavegameVersionBefore(90)) _settings_game.vehicle.plane_speed = 4; if (IsSavegameVersionBefore(95)) _settings_game.vehicle.dynamic_engines = 0; - if (IsSavegameVersionBefore(133)) _settings_game.vehicle.roadveh_acceleration_model = 0; - if (IsSavegameVersionBefore(159)) _settings_game.vehicle.max_train_length = 50; + if (IsSavegameVersionBefore(96)) _settings_game.economy.station_noise_level = false; + if (IsSavegameVersionBefore(133)) { + _settings_game.vehicle.roadveh_acceleration_model = 0; + _settings_game.vehicle.train_slope_steepness = 3; + } + if (IsSavegameVersionBefore(134)) _settings_game.economy.feeder_payment_share = 75; + if (IsSavegameVersionBefore(138)) _settings_game.vehicle.plane_crashes = 2; + if (IsSavegameVersionBefore(139)) _settings_game.vehicle.roadveh_slope_steepness = 7; + if (IsSavegameVersionBefore(143)) _settings_game.economy.allow_town_level_crossings = true; + if (IsSavegameVersionBefore(159)) { + _settings_game.vehicle.max_train_length = 50; + _settings_game.construction.max_bridge_length = 64; + _settings_game.construction.max_tunnel_length = 64; + } if (IsSavegameVersionBefore(166)) _settings_game.economy.infrastructure_maintenance = false; + if (IsSavegameVersionBefore(183)) { + _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; + } /* Load the sprites */ GfxLoadSprites(); @@ -713,8 +767,8 @@ bool AfterLoadGame() /* If Load Scenario / New (Scenario) Game is used, * a company does not exist yet. So create one here. - * 1 exeption: network-games. Those can have 0 companies - * But this exeption is not true for non dedicated network_servers! */ + * 1 exception: network-games. Those can have 0 companies + * But this exception is not true for non-dedicated network servers! */ if (!Company::IsValidID(COMPANY_FIRST) && (!_networking || (_networking && _network_server && !_network_dedicated))) { DoStartupNewCompany(false); Company *c = Company::Get(COMPANY_FIRST); @@ -821,7 +875,7 @@ bool AfterLoadGame() case STATION_OILRIG: { /* Very old savegames sometimes have phantom oil rigs, i.e. - * an oil rig which got shut down, but not completly removed from + * an oil rig which got shut down, but not completely removed from * the map */ TileIndex t1 = TILE_ADDXY(t, 0, 1); @@ -1077,7 +1131,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) { @@ -1169,7 +1223,7 @@ bool AfterLoadGame() } FOR_ALL_TRAINS(v) { - if (v->IsFrontEngine() || v->IsFreeWagon()) v->ConsistChanged(true); + if (v->IsFrontEngine() || v->IsFreeWagon()) v->ConsistChanged(CCF_TRACK); } } @@ -1196,11 +1250,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); } @@ -1275,7 +1333,7 @@ bool AfterLoadGame() } /* From 32 on we save the industry who made the farmland. - * To give this prettyness to old savegames, we remove all farmfields and + * To give this prettiness to old savegames, we remove all farmfields and * plant new ones. */ if (IsSavegameVersionBefore(32)) { Industry *i; @@ -1421,7 +1479,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; } } @@ -1480,13 +1538,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)); } } } @@ -1539,7 +1599,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.Count() != 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); } } } @@ -1683,7 +1743,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); @@ -1831,7 +1891,7 @@ bool AfterLoadGame() if (HasStationRail(t)) SetRailStationReservation(t, false); break; - case MP_TUNNELBRIDGE: // Clear PBS reservation on tunnels/birdges + case MP_TUNNELBRIDGE: // Clear PBS reservation on tunnels/bridges if (GetTunnelBridgeTransportType(t) == TRANSPORT_RAIL) SetTunnelBridgeReservation(t, false); break; @@ -1917,7 +1977,7 @@ bool AfterLoadGame() if (!IsTileType(t, MP_OBJECT)) continue; /* Reordering/generalisation of the object bits. */ - ObjectType type = GetObjectType(t); + ObjectType type = _m[t].m5; SB(_m[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; @@ -1944,7 +2004,7 @@ bool AfterLoadGame() 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()) { @@ -2177,11 +2237,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) { @@ -2366,7 +2421,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); } } @@ -2671,11 +2726,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); @@ -2761,16 +2816,126 @@ bool AfterLoadGame() _settings_game.script.settings_profile = IsInsideMM(_old_diff_level, SP_BEGIN, SP_END) ? _old_diff_level : (uint)SP_MEDIUM; } + if (IsSavegameVersionBefore(182)) { + Aircraft *v; + /* Aircraft acceleration variable was bonkers */ + FOR_ALL_AIRCRAFT(v) { + if (v->subtype <= AIR_AIRCRAFT) { + const AircraftVehicleInfo *avi = AircraftVehInfo(v->engine_type); + v->acceleration = avi->acceleration; + } + } + + /* Blocked tiles could be reserved due to a bug, which causes + * other places to assert upon e.g. station reconstruction. */ + for (TileIndex t = 0; t < map_size; t++) { + if (HasStationTileRail(t) && IsStationTileBlocked(t)) { + SetRailStationReservation(t, false); + } + } + } + + if (IsSavegameVersionBefore(184)) { + /* The global units configuration is split up in multiple configurations. */ + extern uint8 _old_units; + _settings_game.locale.units_velocity = Clamp(_old_units, 0, 2); + _settings_game.locale.units_power = Clamp(_old_units, 0, 2); + _settings_game.locale.units_weight = Clamp(_old_units, 1, 2); + _settings_game.locale.units_volume = Clamp(_old_units, 1, 2); + _settings_game.locale.units_force = 2; + _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--; + } + } + } + + + /* 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(); AfterLoadCompanyStats(); + AfterLoadStoryBook(); GamelogPrintDebug(1); InitializeWindowsAndCaches(); /* Restore the signals */ ResetSignalHandlers(); + + AfterLoadLinkGraphs(); return true; } diff --git a/src/saveload/ai_sl.cpp b/src/saveload/ai_sl.cpp index 51d0a50b8..e8b5339c0 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 00a4b2b01..1172d2593 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 2ccd42cb5..3fc5f6175 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 0cb9cca8d..99e945503 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 2188470a2..98ad95f09 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 e36cede7c..dc8d4145e 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. */ @@ -22,14 +24,14 @@ { if (IsSavegameVersionBefore(44)) { Vehicle *v; - /* If we remove a station while cargo from it is still enroute, payment calculation will assume + /* If we remove a station while cargo from it is still en route, payment calculation will assume * 0, 0 to be the source of the cargo, resulting in very high payments usually. v->source_xy * stores the coordinates, preserving them even if the station is removed. However, if a game is loaded * where this situation exists, the cargo-source information is lost. in this case, we set the source * to the current tile of the vehicle to prevent excessive profits */ FOR_ALL_VEHICLES(v) { - const VehicleCargoList::List *packets = v->cargo.Packets(); + const CargoPacketList *packets = v->cargo.Packets(); for (VehicleCargoList::ConstIterator it(packets->begin()); it != packets->end(); it++) { CargoPacket *cp = *it; cp->source_xy = Station::IsValidID(cp->source) ? Station::Get(cp->source)->xy : v->tile; @@ -47,7 +49,7 @@ for (CargoID c = 0; c < NUM_CARGO; c++) { GoodsEntry *ge = &st->goods[c]; - const StationCargoList::List *packets = ge->cargo.Packets(); + const StationCargoPacketMap *packets = ge->cargo.Packets(); for (StationCargoList::ConstIterator it(packets->begin()); it != packets->end(); it++) { CargoPacket *cp = *it; cp->source_xy = Station::IsValidID(cp->source) ? Station::Get(cp->source)->xy : st->xy; @@ -77,6 +79,11 @@ for (CargoID c = 0; c < NUM_CARGO; c++) st->goods[c].cargo.InvalidateCache(); } } + + if (IsSavegameVersionBefore(181)) { + Vehicle *v; + FOR_ALL_VEHICLES(v) v->cargo.KeepAll(); + } } /** diff --git a/src/saveload/cheat_sl.cpp b/src/saveload/cheat_sl.cpp index aa5648a88..4616b7e85 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 5878f31ea..6ac22c268 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 0d62d74cd..861a54173 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 9bdad61a9..dabf120fc 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() { @@ -63,11 +65,11 @@ static void Load_ECMY() } static const SaveLoad _cargopayment_desc[] = { - SLE_REF(CargoPayment, front, REF_VEHICLE), - SLE_VAR(CargoPayment, route_profit, SLE_INT64), - SLE_VAR(CargoPayment, visual_profit, SLE_INT64), - - SLE_END() + SLE_REF(CargoPayment, front, REF_VEHICLE), + SLE_VAR(CargoPayment, route_profit, SLE_INT64), + SLE_VAR(CargoPayment, visual_profit, SLE_INT64), + SLE_CONDVAR(CargoPayment, visual_transfer, SLE_INT64, 181, SL_MAX_VERSION), + SLE_END() }; static void Save_CAPY() diff --git a/src/saveload/engine_sl.cpp b/src/saveload/engine_sl.cpp index d02264cd6..07bad4606 100644 --- a/src/saveload/engine_sl.cpp +++ b/src/saveload/engine_sl.cpp @@ -12,8 +12,11 @@ #include "../stdafx.h" #include "saveload_internal.h" #include "../engine_base.h" +#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), SLE_CONDVAR(Engine, intro_date, SLE_INT32, 31, SL_MAX_VERSION), @@ -105,7 +108,7 @@ 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); + if (se->name != NULL) e->name = stredup(se->name); } /* Get rid of temporary data */ diff --git a/src/saveload/game_sl.cpp b/src/saveload/game_sl.cpp index d5a454f48..a3273114c 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(); @@ -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 f25a8d1eb..f818eca13 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 b8df122b3..4d1441787 100644 --- a/src/saveload/goal_sl.cpp +++ b/src/saveload/goal_sl.cpp @@ -14,11 +14,15 @@ #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, dst, SLE_UINT32), - SLE_STR(Goal, text, SLE_STR | SLF_ALLOW_CONTROL, 0), + 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), + SLE_CONDVAR(Goal, completed, SLE_BOOL, 182, SL_MAX_VERSION), SLE_END() }; diff --git a/src/saveload/group_sl.cpp b/src/saveload/group_sl.cpp index 6b833137b..93734f80f 100644 --- a/src/saveload/group_sl.cpp +++ b/src/saveload/group_sl.cpp @@ -14,14 +14,17 @@ #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), - SLE_CONDNULL(2, 0, 163), // num_vehicle - SLE_VAR(Group, owner, SLE_UINT8), - SLE_VAR(Group, vehicle_type, SLE_UINT8), - SLE_VAR(Group, replace_protection, SLE_BOOL), - SLE_END() + SLE_CONDVAR(Group, name, SLE_NAME, 0, 83), + SLE_CONDSTR(Group, name, SLE_STR | SLF_ALLOW_CONTROL, 0, 84, SL_MAX_VERSION), + SLE_CONDNULL(2, 0, 163), // num_vehicle + 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() }; static void Save_GRPS() @@ -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 8943a5d52..658cfd2bd 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); diff --git a/src/saveload/labelmaps_sl.cpp b/src/saveload/labelmaps_sl.cpp index 5cc77af0c..3b898a3b8 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 new file mode 100644 index 000000000..20a3f4498 --- /dev/null +++ b/src/saveload/linkgraph_sl.cpp @@ -0,0 +1,296 @@ +/* $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 linkgraph_sl.cpp Code handling saving and loading of link graphs */ + +#include "../stdafx.h" +#include "../linkgraph/linkgraph.h" +#include "../linkgraph/linkgraphjob.h" +#include "../linkgraph/linkgraphschedule.h" +#include "../settings_internal.h" +#include "saveload.h" + +#include "../safeguards.h" + +typedef LinkGraph::BaseNode Node; +typedef LinkGraph::BaseEdge Edge; + +const SettingDesc *GetSettingDescription(uint index); + +static uint16 _num_nodes; + +/** + * Get a SaveLoad array for a link graph. + * @return SaveLoad array for link graph. + */ +const SaveLoad *GetLinkGraphDesc() +{ + static const SaveLoad link_graph_desc[] = { + SLE_VAR(LinkGraph, last_compression, SLE_INT32), + SLEG_VAR(_num_nodes, SLE_UINT16), + SLE_VAR(LinkGraph, cargo, SLE_UINT8), + SLE_END() + }; + return link_graph_desc; +} + +/** + * Get a SaveLoad array for a link graph job. The settings struct is derived from + * the global settings saveload array. The exact entries are calculated when the function + * is called the first time. + * It's necessary to keep a copy of the settings for each link graph job so that you can + * change the settings while in-game and still not mess with current link graph runs. + * Of course the settings have to be saved and loaded, too, to avoid desyncs. + * @return Array of SaveLoad structs. + */ +const SaveLoad *GetLinkGraphJobDesc() +{ + static SmallVector saveloads; + static const char *prefix = "linkgraph."; + + /* Build the SaveLoad array on first call and don't touch it later on */ + if (saveloads.Length() == 0) { + size_t offset_gamesettings = cpp_offsetof(GameSettings, linkgraph); + size_t offset_component = cpp_offsetof(LinkGraphJob, settings); + + size_t prefixlen = strlen(prefix); + + int setting = 0; + const SettingDesc *desc = GetSettingDescription(setting); + while (desc->save.cmd != SL_END) { + if (desc->desc.name != NULL && strncmp(desc->desc.name, prefix, prefixlen) == 0) { + SaveLoad sl = desc->save; + char *&address = reinterpret_cast(sl.address); + address -= offset_gamesettings; + address += offset_component; + *(saveloads.Append()) = sl; + } + desc = GetSettingDescription(++setting); + } + + const SaveLoad job_desc[] = { + SLE_VAR(LinkGraphJob, join_date, SLE_INT32), + SLE_VAR(LinkGraphJob, link_graph.index, SLE_UINT16), + SLE_END() + }; + + int i = 0; + do { + *(saveloads.Append()) = job_desc[i++]; + } while (saveloads[saveloads.Length() - 1].cmd != SL_END); + } + + return &saveloads[0]; +} + +/** + * Get a SaveLoad array for the link graph schedule. + * @return SaveLoad array for the link graph schedule. + */ +const SaveLoad *GetLinkGraphScheduleDesc() +{ + static const SaveLoad schedule_desc[] = { + SLE_LST(LinkGraphSchedule, schedule, REF_LINK_GRAPH), + SLE_LST(LinkGraphSchedule, running, REF_LINK_GRAPH_JOB), + SLE_END() + }; + return schedule_desc; +} + +/* Edges and nodes are saved in the correct order, so we don't need to save their IDs. */ + +/** + * SaveLoad desc for a link graph node. + */ +static const SaveLoad _node_desc[] = { + 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_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() +}; + +/** + * Save/load a link graph. + * @param comp Link graph to be saved or loaded. + */ +void SaveLoad_LinkGraph(LinkGraph &lg) +{ + uint size = lg.Size(); + for (NodeID from = 0; from < size; ++from) { + Node *node = &lg.nodes[from]; + SlObject(node, _node_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); + } + } + } +} + +/** + * Save a link graph job. + * @param lgj LinkGraphJob to be saved. + */ +static void DoSave_LGRJ(LinkGraphJob *lgj) +{ + SlObject(lgj, GetLinkGraphJobDesc()); + _num_nodes = lgj->Size(); + SlObject(const_cast(&lgj->Graph()), GetLinkGraphDesc()); + SaveLoad_LinkGraph(const_cast(lgj->Graph())); +} + +/** + * Save a link graph. + * @param lg LinkGraph to be saved. + */ +static void DoSave_LGRP(LinkGraph *lg) +{ + _num_nodes = lg->Size(); + SlObject(lg, GetLinkGraphDesc()); + SaveLoad_LinkGraph(*lg); +} + +/** + * Load all link graphs. + */ +static void Load_LGRP() +{ + int index; + while ((index = SlIterateArray()) != -1) { + if (!LinkGraph::CanAllocateItem()) { + /* Impossible as they have been present in previous game. */ + NOT_REACHED(); + } + LinkGraph *lg = new (index) LinkGraph(); + SlObject(lg, GetLinkGraphDesc()); + lg->Init(_num_nodes); + SaveLoad_LinkGraph(*lg); + } +} + +/** + * Load all link graph jobs. + */ +static void Load_LGRJ() +{ + int index; + while ((index = SlIterateArray()) != -1) { + if (!LinkGraphJob::CanAllocateItem()) { + /* Impossible as they have been present in previous game. */ + NOT_REACHED(); + } + LinkGraphJob *lgj = new (index) LinkGraphJob(); + SlObject(lgj, GetLinkGraphJobDesc()); + LinkGraph &lg = const_cast(lgj->Graph()); + SlObject(&lg, GetLinkGraphDesc()); + lg.Init(_num_nodes); + SaveLoad_LinkGraph(lg); + } +} + +/** + * Load the link graph schedule. + */ +static void Load_LGRS() +{ + SlObject(LinkGraphSchedule::Instance(), GetLinkGraphScheduleDesc()); +} + +/** + * Spawn the threads for running link graph calculations. + * Has to be done after loading as the cargo classes might have changed. + */ +void AfterLoadLinkGraphs() +{ + 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(); +} + +/** + * Save all link graphs. + */ +static void Save_LGRP() +{ + LinkGraph *lg; + FOR_ALL_LINK_GRAPHS(lg) { + SlSetArrayIndex(lg->index); + SlAutolength((AutolengthProc*)DoSave_LGRP, lg); + } +} + +/** + * Save all link graph jobs. + */ +static void Save_LGRJ() +{ + LinkGraphJob *lgj; + FOR_ALL_LINK_GRAPH_JOBS(lgj) { + SlSetArrayIndex(lgj->index); + SlAutolength((AutolengthProc*)DoSave_LGRJ, lgj); + } +} + +/** + * Save the link graph schedule. + */ +static void Save_LGRS() +{ + SlObject(LinkGraphSchedule::Instance(), GetLinkGraphScheduleDesc()); +} + +/** + * Substitute pointers in link graph schedule. + */ +static void Ptrs_LGRS() +{ + SlObject(LinkGraphSchedule::Instance(), GetLinkGraphScheduleDesc()); +} + +extern const ChunkHandler _linkgraph_chunk_handlers[] = { + { 'LGRP', Save_LGRP, Load_LGRP, NULL, NULL, CH_ARRAY }, + { 'LGRJ', Save_LGRJ, Load_LGRJ, NULL, NULL, CH_ARRAY }, + { 'LGRS', Save_LGRS, Load_LGRS, Ptrs_LGRS, NULL, CH_LAST } +}; diff --git a/src/saveload/map_sl.cpp b/src/saveload/map_sl.cpp index 7088a4406..007af7bc6 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; diff --git a/src/saveload/misc_sl.cpp b/src/saveload/misc_sl.cpp index 72c56db54..c7bd31e81 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 d3915340c..cdfd0f317 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), diff --git a/src/saveload/object_sl.cpp b/src/saveload/object_sl.cpp index 037fc6b4d..dfb1d2cbf 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 2ea24f33b..13ee0e5b0 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; @@ -78,7 +80,7 @@ byte ReadByte(LoadgameState *ls) which means that we have a chunk, which starts with a length byte. If that byte is negative, we have to repeat the next byte that many times ( + 1). Else, we need to read that amount of bytes. - Works pretty good if you have many zero's behind eachother */ + Works pretty well if you have many zeros behind each other */ if (ls->chunk_size == 0) { /* Read new chunk */ @@ -235,7 +237,7 @@ static inline bool CheckOldSavegameType(FILE *f, char *temp, const char *last, u } bool ret = VerifyOldNameChecksum(temp, len); - temp[len - 2] = '\0'; // name is nul-terminated in savegame, but it's better to be sure + temp[len - 2] = '\0'; // name is null-terminated in savegame, but it's better to be sure str_validate(temp, last); return ret; @@ -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 0ee7eea2b..d3c63d951 100644 --- a/src/saveload/oldloader_sl.cpp +++ b/src/saveload/oldloader_sl.cpp @@ -34,6 +34,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 @@ -626,7 +628,7 @@ static bool LoadOldOrder(LoadgameState *ls, int num) if (o->IsType(OT_NOTHING)) { delete o; } else { - /* Relink the orders to eachother (in the orders for one vehicle are behind eachother, + /* Relink the orders to each other (in the orders for one vehicle are behind each other, * with an invalid order (OT_NOTHING) as indication that it is the last order */ Order *prev = Order::GetIfValid(num - 1); if (prev != NULL) prev->next = o; @@ -637,7 +639,7 @@ static bool LoadOldOrder(LoadgameState *ls, int num) static bool LoadOldAnimTileList(LoadgameState *ls, int num) { - /* This is sligthly hackish - we must load a chunk into an array whose + /* This is slightly hackish - we must load a chunk into an array whose * address isn't static, but instead pointed to by _animated_tile_list. * To achieve that, create an OldChunks list on the stack on the fly. * The list cannot be static because the value of _animated_tile_list @@ -708,10 +710,11 @@ 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)); + ge->cargo.Append(new CargoPacket(GB(_waiting_acceptance, 0, 12), _cargo_days, (_cargo_source == 0xFF) ? INVALID_STATION : _cargo_source, 0, 0), + INVALID_STATION); } return true; @@ -1252,6 +1255,7 @@ bool LoadOldVehicle(LoadgameState *ls, int num) if (!LoadChunk(ls, v, vehicle_chunk)) return false; if (v == NULL) continue; + v->refit_cap = v->cargo_cap; SpriteID sprite = v->cur_image; /* no need to override other sprites */ @@ -1575,6 +1579,7 @@ extern uint16 _disaster_delay; extern byte _trees_tick_ctr; extern byte _age_cargo_skip_counter; // From misc_sl.cpp extern uint8 _old_diff_level; +extern uint8 _old_units; static const OldChunks main_chunk[] = { OCL_ASSERT( OC_TTD, 0 ), OCL_ASSERT( OC_TTO, 0 ), @@ -1703,7 +1708,7 @@ static const OldChunks main_chunk[] = { OCL_NULL( 1 ), ///< Station tick counter, no longer in use OCL_VAR ( OC_UINT8, 1, &_settings_game.locale.currency ), - OCL_VAR ( OC_UINT8, 1, &_settings_game.locale.units ), + OCL_VAR ( OC_UINT8, 1, &_old_units ), OCL_VAR ( OC_FILE_U8 | OC_VAR_U32, 1, &_cur_company_tick_index ), OCL_NULL( 2 ), ///< Date stuff, calculated automatically diff --git a/src/saveload/order_sl.cpp b/src/saveload/order_sl.cpp index c72d982ad..2eb4ebd78 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. @@ -107,7 +109,7 @@ const SaveLoad *GetOrderDescription() SLE_VAR(Order, dest, SLE_UINT16), SLE_REF(Order, next, REF_ORDER), SLE_CONDVAR(Order, refit_cargo, SLE_UINT8, 36, SL_MAX_VERSION), - SLE_CONDVAR(Order, refit_subtype, SLE_UINT8, 36, SL_MAX_VERSION), + SLE_CONDNULL(1, 36, 181), // refit_subtype SLE_CONDVAR(Order, wait_time, SLE_UINT16, 67, SL_MAX_VERSION), SLE_CONDVAR(Order, travel_time, SLE_UINT16, 67, SL_MAX_VERSION), SLE_CONDVAR(Order, max_speed, SLE_UINT16, 172, SL_MAX_VERSION), @@ -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); + } } } } @@ -203,7 +209,14 @@ static void Ptrs_ORDR() const SaveLoad *GetOrderListDescription() { static const SaveLoad _orderlist_desc[] = { - SLE_REF(OrderList, first, REF_ORDER), + SLE_REF( OrderList, first, REF_ORDER), + SLE_CONDVAR(OrderList, current_sep_mode, SLE_UINT, SL_TTSEP_VER, SL_MAX_VERSION), + SLE_CONDVAR(OrderList, num_sep_vehicles, SLE_UINT, SL_TTSEP_VER, SL_MAX_VERSION), + SLE_CONDVAR(OrderList, separation_counter, SLE_UINT, SL_TTSEP_VER, SL_MAX_VERSION), + SLE_CONDVAR(OrderList, separation_counter, SLE_UINT, SL_TTSEP_VER, SL_MAX_VERSION), + SLE_CONDVAR(OrderList, is_separation_valid, SLE_BOOL, SL_TTSEP_VER, SL_MAX_VERSION), + SLE_CONDVAR(OrderList, current_separation, SLE_INT, SL_TTSEP_VER, SL_MAX_VERSION), + SLE_CONDVAR(OrderList, last_timetable_init, SLE_INT, SL_TTSEP_VER, SL_MAX_VERSION), SLE_END() }; @@ -247,15 +260,16 @@ 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_INT32), + SLE_VAR(OrderBackup, service_interval, SLE_UINT32), SLE_STR(OrderBackup, name, SLE_STR, 0), SLE_VAR(OrderBackup, clone, SLE_UINT16), 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), - SLE_CONDVAR(OrderBackup, lateness_counter, SLE_INT32, 176, SL_MAX_VERSION), - SLE_CONDVAR(OrderBackup, timetable_start, SLE_INT32, 176, SL_MAX_VERSION), - SLE_CONDVAR(OrderBackup, vehicle_flags, SLE_UINT8, 176, SL_MAX_VERSION), + 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), + SLE_CONDVAR(OrderBackup, lateness_counter, SLE_INT32, 176, SL_MAX_VERSION), + SLE_CONDVAR(OrderBackup, timetable_start, SLE_INT32, 176, SL_MAX_VERSION), + SLE_CONDVAR(OrderBackup, vehicle_flags, SLE_FILE_U8 | SLE_VAR_U16, 176, 179), + SLE_CONDVAR(OrderBackup, vehicle_flags, SLE_UINT16, 180, SL_MAX_VERSION), SLE_REF(OrderBackup, orders, REF_ORDER), SLE_END() }; diff --git a/src/saveload/saveload.cpp b/src/saveload/saveload.cpp index ac8a7e81b..19dab6bfe 100644 --- a/src/saveload/saveload.cpp +++ b/src/saveload/saveload.cpp @@ -35,6 +35,8 @@ #include "../date_func.h" #include "../autoreplace_base.h" #include "../roadstop_base.h" +#include "../linkgraph/linkgraph.h" +#include "../linkgraph/linkgraphjob.h" #include "../statusbar_gui.h" #include "../fileio_func.h" #include "../gamelog.h" @@ -47,6 +49,8 @@ #include "saveload_internal.h" #include "saveload_filter.h" +#include "../safeguards.h" + /* * Previous savegame versions, the trunk revision where they were * introduced and the released version that had that particular @@ -243,8 +247,20 @@ * 177 24619 * 178 24789 * 179 24810 + * 180 24998 1.3.x + * 181 25012 + * 182 25296 + * 183 25363 + * 184 25508 + * 185 25620 + * 186 25833 + * 187 25899 + * 188 26169 1.4.x + * 189 26450 + * 190 26547 + * 191 26646 */ -extern const uint16 SAVEGAME_VERSION = 179; ///< Current savegame version of OpenTTD. +extern const uint16 SAVEGAME_VERSION = SL_TTSEP_VER; ///< Current savegame version of OpenTTD. SavegameType _savegame_type; ///< type of savegame we are loading @@ -415,6 +431,7 @@ extern const ChunkHandler _economy_chunk_handlers[]; extern const ChunkHandler _subsidy_chunk_handlers[]; extern const ChunkHandler _cargomonitor_chunk_handlers[]; extern const ChunkHandler _goal_chunk_handlers[]; +extern const ChunkHandler _story_page_chunk_handlers[]; extern const ChunkHandler _ai_chunk_handlers[]; extern const ChunkHandler _game_chunk_handlers[]; extern const ChunkHandler _animated_tile_chunk_handlers[]; @@ -423,6 +440,7 @@ extern const ChunkHandler _group_chunk_handlers[]; extern const ChunkHandler _cargopacket_chunk_handlers[]; extern const ChunkHandler _autoreplace_chunk_handlers[]; extern const ChunkHandler _labelmaps_chunk_handlers[]; +extern const ChunkHandler _linkgraph_chunk_handlers[]; extern const ChunkHandler _airport_chunk_handlers[]; extern const ChunkHandler _object_chunk_handlers[]; extern const ChunkHandler _persistent_storage_chunk_handlers[]; @@ -444,6 +462,7 @@ static const ChunkHandler * const _chunk_handlers[] = { _subsidy_chunk_handlers, _cargomonitor_chunk_handlers, _goal_chunk_handlers, + _story_page_chunk_handlers, _engine_chunk_handlers, _town_chunk_handlers, _sign_chunk_handlers, @@ -457,6 +476,7 @@ static const ChunkHandler * const _chunk_handlers[] = { _cargopacket_chunk_handlers, _autoreplace_chunk_handlers, _labelmaps_chunk_handlers, + _linkgraph_chunk_handlers, _airport_chunk_handlers, _object_chunk_handlers, _persistent_storage_chunk_handlers, @@ -509,11 +529,11 @@ void NORETURN SlError(StringID string, const char *extra_msg) 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 = (extra_msg == NULL) ? NULL : stredup(extra_msg); } else { _sl.error_str = string; free(_sl.extra_msg); - _sl.extra_msg = (extra_msg == NULL) ? NULL : strdup(extra_msg); + _sl.extra_msg = (extra_msg == NULL) ? NULL : stredup(extra_msg); } /* We have to NULL all pointers here; we might be in a state where @@ -655,7 +675,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(); } @@ -675,6 +699,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 */ @@ -683,8 +712,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))); @@ -700,7 +734,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() @@ -1204,16 +1238,18 @@ static size_t ReferenceToInt(const void *obj, SLRefType rt) if (obj == NULL) return 0; switch (rt) { - case REF_VEHICLE_OLD: // Old vehicles we save as new onces + case REF_VEHICLE_OLD: // Old vehicles we save as new ones case REF_VEHICLE: return ((const Vehicle*)obj)->index + 1; case REF_STATION: return ((const Station*)obj)->index + 1; case REF_TOWN: return ((const Town*)obj)->index + 1; case REF_ORDER: return ((const Order*)obj)->index + 1; case REF_ROADSTOPS: return ((const RoadStop*)obj)->index + 1; - case REF_ENGINE_RENEWS: return ((const EngineRenew*)obj)->index + 1; - case REF_CARGO_PACKET: return ((const CargoPacket*)obj)->index + 1; - case REF_ORDERLIST: return ((const OrderList*)obj)->index + 1; - case REF_STORAGE: return ((const PersistentStorage*)obj)->index + 1; + case REF_ENGINE_RENEWS: return ((const EngineRenew*)obj)->index + 1; + case REF_CARGO_PACKET: return ((const CargoPacket*)obj)->index + 1; + case REF_ORDERLIST: return ((const OrderList*)obj)->index + 1; + case REF_STORAGE: return ((const PersistentStorage*)obj)->index + 1; + case REF_LINK_GRAPH: return ((const LinkGraph*)obj)->index + 1; + case REF_LINK_GRAPH_JOB: return ((const LinkGraphJob*)obj)->index + 1; default: NOT_REACHED(); } } @@ -1287,6 +1323,14 @@ static void *IntToReference(size_t index, SLRefType rt) if (PersistentStorage::IsValidID(index)) return PersistentStorage::Get(index); SlErrorCorrupt("Referencing invalid PersistentStorage"); + case REF_LINK_GRAPH: + if (LinkGraph::IsValidID(index)) return LinkGraph::Get(index); + SlErrorCorrupt("Referencing invalid LinkGraph"); + + case REF_LINK_GRAPH_JOB: + if (LinkGraphJob::IsValidID(index)) return LinkGraphJob::Get(index); + SlErrorCorrupt("Referencing invalid LinkGraphJob"); + default: NOT_REACHED(); } } @@ -1392,7 +1436,7 @@ static inline bool SlSkipVariableOnLoad(const SaveLoad *sld) * Calculate the size of an object. * @param object to be measured * @param sld The SaveLoad description of the object so we know how to manipulate it - * @return size of given objetc + * @return size of given object */ size_t SlCalcObjLength(const void *object, const SaveLoad *sld) { @@ -1435,9 +1479,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: @@ -1824,7 +1909,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"); + } } }; @@ -2087,7 +2174,7 @@ struct ZlibSaveFilter : SaveFilter { * "Conditional jump or move depends on uninitialised value(s)" kind: * According to the author of zlib it is not a bug and it won't be fixed. * http://groups.google.com/group/comp.compression/browse_thread/thread/b154b8def8c2a3ef/cdf9b8729ce17ee2 - * [Mark Adler, Feb 24 2004, 'zlib-1.2.1 valgrind warnings' in the newgroup comp.compression] + * [Mark Adler, Feb 24 2004, 'zlib-1.2.1 valgrind warnings' in the newsgroup comp.compression] */ int r = deflate(&this->z, mode); @@ -2274,7 +2361,7 @@ static const SaveLoadFormat _saveload_formats[] = { * Higher compression levels are possible, and might improve savegame size by up to 25%, but are also up to 10 times slower. * The next significant reduction in file size is at level 4, but that is already 4 times slower. Level 3 is primarily 50% * slower while not improving the filesize, while level 0 and 1 are faster, but don't reduce savegame size much. - * It's OTTX and not e.g. OTTL because liblzma is part of xz-utils and .tar.xz is prefered over .tar.lzma. */ + * It's OTTX and not e.g. OTTL because liblzma is part of xz-utils and .tar.xz is preferred over .tar.lzma. */ {"lzma", TO_BE32X('OTTX'), CreateLoadFilter, CreateSaveFilter, 0, 2, 9}, #else {"lzma", TO_BE32X('OTTX'), NULL, NULL, 0, 0, 0}, @@ -2472,10 +2559,10 @@ void WaitTillSaved() /** * Actually perform the saving of the savegame. - * General tactic is to first save the game to memory, then write it to file + * General tactics is to first save the game to memory, then write it to file * using the writer, either in threaded mode if possible, or single-threaded. * @param writer The filter to write the savegame to. - * @param threaded Whether to try to perform the saving asynchroniously. + * @param threaded Whether to try to perform the saving asynchronously. * @return Return the result of the action. #SL_OK or #SL_ERROR */ static SaveOrLoadResult DoSave(SaveFilter *writer, bool threaded) @@ -2506,7 +2593,7 @@ static SaveOrLoadResult DoSave(SaveFilter *writer, bool threaded) /** * Save the game using a (writer) filter. * @param writer The filter to write the savegame to. - * @param threaded Whether to try to perform the saving asynchroniously. + * @param threaded Whether to try to perform the saving asynchronously. * @return Return the result of the action. #SL_OK or #SL_ERROR */ SaveOrLoadResult SaveWithFilter(SaveFilter *writer, bool threaded) @@ -2568,7 +2655,7 @@ static SaveOrLoadResult DoLoad(LoadFilter *reader, bool load_check) _sl_version = TO_BE32(hdr[1]) >> 16; /* Minor is not used anymore from version 18.0, but it is still needed * in versions before that (4 cases) which can't be removed easy. - * Therefor it is loaded, but never saved (or, it saves a 0 in any scenario). */ + * 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); @@ -2584,7 +2671,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); } @@ -2694,36 +2781,36 @@ 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 - - /* 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()) { + 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()) { + 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 */ @@ -2753,7 +2840,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 c5ffbeff8..f8a2901ae 100644 --- a/src/saveload/saveload.h +++ b/src/saveload/saveload.h @@ -15,6 +15,8 @@ #include "../fileio_type.h" #include "../strings_type.h" +#define SL_TTSEP_VER 200 + /** Save or load result codes. */ enum SaveOrLoadResult { SL_OK = 0, ///< completed successfully @@ -73,20 +75,22 @@ struct NullStruct { /** Type of reference (#SLE_REF, #SLE_CONDREF). */ enum SLRefType { - REF_ORDER = 0, ///< Load/save a reference to an order. - REF_VEHICLE = 1, ///< Load/save a reference to a vehicle. - REF_STATION = 2, ///< Load/save a reference to a station. - REF_TOWN = 3, ///< Load/save a reference to a town. - REF_VEHICLE_OLD = 4, ///< Load/save an old-style reference to a vehicle (for pre-4.4 savegames). - REF_ROADSTOPS = 5, ///< Load/save a reference to a bus/truck stop. - REF_ENGINE_RENEWS = 6, ///< Load/save a reference to an engine renewal (autoreplace). - REF_CARGO_PACKET = 7, ///< Load/save a reference to a cargo packet. - REF_ORDERLIST = 8, ///< Load/save a reference to an orderlist. - REF_STORAGE = 9, ///< Load/save a reference to a persistent storage. + REF_ORDER = 0, ///< Load/save a reference to an order. + REF_VEHICLE = 1, ///< Load/save a reference to a vehicle. + REF_STATION = 2, ///< Load/save a reference to a station. + REF_TOWN = 3, ///< Load/save a reference to a town. + REF_VEHICLE_OLD = 4, ///< Load/save an old-style reference to a vehicle (for pre-4.4 savegames). + REF_ROADSTOPS = 5, ///< Load/save a reference to a bus/truck stop. + REF_ENGINE_RENEWS = 6, ///< Load/save a reference to an engine renewal (autoreplace). + REF_CARGO_PACKET = 7, ///< Load/save a reference to a cargo packet. + REF_ORDERLIST = 8, ///< Load/save a reference to an orderlist. + REF_STORAGE = 9, ///< Load/save a reference to a persistent storage. + REF_LINK_GRAPH = 10, ///< Load/save a reference to a link graph. + REF_LINK_GRAPH_JOB = 11, ///< Load/save a reference to a link graph job. }; /** Highest possible savegame version. */ -#define SL_MAX_VERSION 255 +#define SL_MAX_VERSION UINT16_MAX /** Flags of a chunk. */ enum ChunkType { @@ -210,6 +214,7 @@ 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. }; /** Same as #SaveLoad but global variables are used (for better readability); */ @@ -225,7 +230,7 @@ typedef SaveLoad SaveLoadGlobVarList; * @param to Last savegame version that has 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(cmd, base, variable, type, length, from, to) {false, cmd, type, length, from, to, (void*)cpp_offsetof(base, variable), cpp_sizeof(base, variable)} /** * Storage of a variable in some savegame versions. @@ -338,11 +343,11 @@ typedef SaveLoad SaveLoadGlobVarList; /** 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. @@ -353,7 +358,7 @@ typedef SaveLoad SaveLoadGlobVarList; * @param to Last savegame version that has 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(cmd, variable, type, length, from, to) {true, cmd, type, length, from, to, (void*)&variable, sizeof(variable)} /** * Storage of a global variable in some savegame versions. @@ -446,7 +451,7 @@ typedef SaveLoad SaveLoadGlobVarList; #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. diff --git a/src/saveload/saveload_internal.h b/src/saveload/saveload_internal.h index 5217db136..74e5b9936 100644 --- a/src/saveload/saveload_internal.h +++ b/src/saveload/saveload_internal.h @@ -31,6 +31,8 @@ void FixupTrainLengths(); void AfterLoadStations(); void AfterLoadRoadStops(); void AfterLoadLabelMaps(); +void AfterLoadStoryBook(); +void AfterLoadLinkGraphs(); void AfterLoadCompanyStats(); void UpdateHousesAndTowns(); diff --git a/src/saveload/signs_sl.cpp b/src/saveload/signs_sl.cpp index d5ea26d65..d5bacd509 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 579e9458a..a6de95dd0 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. @@ -123,7 +125,7 @@ void AfterLoadStations() for (const RoadStop *rs = sta->truck_stops; rs != NULL; rs = rs->next) sta->truck_station.Add(rs->xy); } - StationUpdateAnimTriggers(st); + StationUpdateCachedTriggers(st); } } @@ -224,9 +226,10 @@ static const SaveLoad _old_station_desc[] = { }; static uint16 _waiting_acceptance; +static uint32 _num_flows; static uint16 _cargo_source; static uint32 _cargo_source_xy; -static uint16 _cargo_days; +static uint8 _cargo_days; static Money _cargo_feeder_share; static const SaveLoad _station_speclist_desc[] = { @@ -236,6 +239,25 @@ static const SaveLoad _station_speclist_desc[] = { SLE_END() }; +std::list _packets; +uint32 _num_dests; + +struct FlowSaveLoad { + 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_CONDVAR(FlowSaveLoad, restricted, SLE_BOOL, 187, SL_MAX_VERSION), + SLE_END() +}; + /** * Wrapper function to get the GoodsEntry's internal structure while * some of the variables itself are private. @@ -244,28 +266,62 @@ static const SaveLoad _station_speclist_desc[] = { 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_CONDNULL(2, 51, 67), - SLE_VAR(GoodsEntry, time_since_pickup, SLE_UINT8), - SLE_VAR(GoodsEntry, rating, SLE_UINT8), - SLEG_CONDVAR( _cargo_source, SLE_FILE_U8 | SLE_VAR_U16, 0, 6), - SLEG_CONDVAR( _cargo_source, SLE_UINT16, 7, 67), - SLEG_CONDVAR( _cargo_source_xy, SLE_UINT32, 44, 67), - SLEG_CONDVAR( _cargo_days, SLE_UINT8, 0, 67), - SLE_VAR(GoodsEntry, last_speed, SLE_UINT8), - SLE_VAR(GoodsEntry, last_age, SLE_UINT8), - SLEG_CONDVAR( _cargo_feeder_share, SLE_FILE_U32 | SLE_VAR_I64, 14, 64), - SLEG_CONDVAR( _cargo_feeder_share, SLE_INT64, 65, 67), - SLE_CONDVAR(GoodsEntry, amount_fract, SLE_UINT8, 150, SL_MAX_VERSION), - SLE_CONDLST(GoodsEntry, cargo.packets, REF_CARGO_PACKET, 68, SL_MAX_VERSION), - + SLEG_CONDVAR( _waiting_acceptance, SLE_UINT16, 0, 67), + 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), + SLEG_CONDVAR( _cargo_source, SLE_FILE_U8 | SLE_VAR_U16, 0, 6), + SLEG_CONDVAR( _cargo_source, SLE_UINT16, 7, 67), + SLEG_CONDVAR( _cargo_source_xy, SLE_UINT32, 44, 67), + SLEG_CONDVAR( _cargo_days, SLE_UINT8, 0, 67), + SLE_VAR(GoodsEntry, last_speed, SLE_UINT8), + SLE_VAR(GoodsEntry, last_age, SLE_UINT8), + SLEG_CONDVAR( _cargo_feeder_share, SLE_FILE_U32 | SLE_VAR_I64, 14, 64), + SLEG_CONDVAR( _cargo_feeder_share, SLE_INT64, 65, 67), + SLE_CONDVAR(GoodsEntry, amount_fract, SLE_UINT8, 150, SL_MAX_VERSION), + SLEG_CONDLST( _packets, REF_CARGO_PACKET, 68, 182), + SLEG_CONDVAR( _num_dests, SLE_UINT32, 183, SL_MAX_VERSION), + SLE_CONDVAR(GoodsEntry, cargo.reserved_count, SLE_UINT, 181, SL_MAX_VERSION), + SLE_CONDVAR(GoodsEntry, link_graph, SLE_UINT16, 183, SL_MAX_VERSION), + SLE_CONDVAR(GoodsEntry, node, SLE_UINT16, 183, SL_MAX_VERSION), + SLEG_CONDVAR( _num_flows, SLE_UINT32, 183, SL_MAX_VERSION), + SLE_CONDVAR(GoodsEntry, max_waiting_cargo, SLE_UINT32, 183, SL_MAX_VERSION), SLE_END() }; return goods_desc; } +typedef std::pair > StationCargoPair; + +static const SaveLoad _cargo_list_desc[] = { + SLE_VAR(StationCargoPair, first, SLE_UINT16), + SLE_LST(StationCargoPair, second, REF_CARGO_PACKET), + SLE_END() +}; + +/** + * Swap the temporary packets with the packets without specific destination in + * the given goods entry. Assert that at least one of those is empty. + * @param ge Goods entry to swap with. + */ +static void SwapPackets(GoodsEntry *ge) +{ + StationCargoPacketMap &ge_packets = const_cast(*ge->cargo.Packets()); + + if (_packets.empty()) { + std::map >::iterator it(ge_packets.find(INVALID_STATION)); + if (it == ge_packets.end()) { + return; + } else { + it->second.swap(_packets); + } + } else { + assert(ge_packets[INVALID_STATION].empty()); + ge_packets[INVALID_STATION].swap(_packets); + } +} static void Load_STNS() { @@ -281,8 +337,9 @@ static void Load_STNS() for (CargoID i = 0; i < num_cargo; i++) { GoodsEntry *ge = &st->goods[i]; 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; @@ -292,8 +349,11 @@ static void Load_STNS() * savegame versions. As the CargoPacketPool has more than * 16 million entries; it fits by an order of magnitude. */ assert(CargoPacket::CanAllocateItem()); - ge->cargo.Append(new CargoPacket(GB(_waiting_acceptance, 0, 12), _cargo_days, source, _cargo_source_xy, _cargo_source_xy, _cargo_feeder_share)); - SB(ge->acceptance_pickup, GoodsEntry::GES_PICKUP, 1, 1); + + /* 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->status, GoodsEntry::GES_RATING, 1, 1); } } } @@ -318,7 +378,9 @@ static void Ptrs_STNS() if (!IsSavegameVersionBefore(68)) { for (CargoID i = 0; i < NUM_CARGO; i++) { GoodsEntry *ge = &st->goods[i]; + SwapPackets(ge); SlObject(ge, GetGoodsDesc()); + SwapPackets(ge); } } SlObject(st, _old_station_desc); @@ -409,7 +471,29 @@ static void RealSave_STNN(BaseStation *bst) if (!waypoint) { Station *st = Station::From(bst); for (CargoID i = 0; i < NUM_CARGO; i++) { + _num_dests = (uint32)st->goods[i].cargo.Packets()->MapSize(); + _num_flows = 0; + for (FlowStatMap::const_iterator it(st->goods[i].flows.begin()); it != st->goods[i].flows.end(); ++it) { + _num_flows += (uint32)it->second.GetShares()->size(); + } SlObject(&st->goods[i], GetGoodsDesc()); + for (FlowStatMap::const_iterator outer_it(st->goods[i].flows.begin()); outer_it != st->goods[i].flows.end(); ++outer_it) { + const FlowStat::SharesMap *shares = outer_it->second.GetShares(); + uint32 sum_shares = 0; + FlowSaveLoad flow; + flow.source = outer_it->first; + 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); + } + } + for (StationCargoPacketMap::ConstMapIterator it(st->goods[i].cargo.Packets()->begin()); it != st->goods[i].cargo.Packets()->end(); ++it) { + SlObject(const_cast(&(*it)), _cargo_list_desc); + } } } @@ -445,12 +529,34 @@ 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)); } for (CargoID i = 0; i < NUM_CARGO; i++) { SlObject(&st->goods[i], GetGoodsDesc()); + FlowSaveLoad flow; + FlowStat *fs = NULL; + StationID prev_source = INVALID_STATION; + 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); + } else { + fs->AppendShare(flow.via, flow.share, flow.restricted); + } + prev_source = flow.source; + } + if (IsSavegameVersionBefore(183)) { + SwapPackets(&st->goods[i]); + } else { + StationCargoPair pair; + for (uint j = 0; j < _num_dests; ++j) { + SlObject(&pair, _cargo_list_desc); + const_cast(*(st->goods[i].cargo.Packets()))[pair.first].swap(pair.second); + assert(pair.second.empty()); + } + } } } @@ -473,7 +579,16 @@ static void Ptrs_STNN() FOR_ALL_STATIONS(st) { for (CargoID i = 0; i < NUM_CARGO; i++) { GoodsEntry *ge = &st->goods[i]; - SlObject(ge, GetGoodsDesc()); + if (IsSavegameVersionBefore(183)) { + SwapPackets(ge); + SlObject(ge, GetGoodsDesc()); + SwapPackets(ge); + } else { + SlObject(ge, GetGoodsDesc()); + for (StationCargoPacketMap::ConstMapIterator it = ge->cargo.Packets()->begin(); it != ge->cargo.Packets()->end(); ++it) { + SlObject(const_cast(&(*it)), _cargo_list_desc); + } + } } SlObject(st, _station_desc); } diff --git a/src/saveload/storage_sl.cpp b/src/saveload/storage_sl.cpp index 1fa8d2404..110df63a7 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 new file mode 100644 index 000000000..87e3720a6 --- /dev/null +++ b/src/saveload/story_sl.cpp @@ -0,0 +1,107 @@ +/* $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 story_sl.cpp Code handling saving and loading of story pages */ + +#include "../stdafx.h" +#include "../story_base.h" + +#include "saveload.h" + +#include "../safeguards.h" + +/** Called after load to trash broken pages. */ +void AfterLoadStoryBook() +{ + if (IsSavegameVersionBefore(185)) { + /* Trash all story pages and page elements because + * they were saved with wrong data types. + */ + _story_page_element_pool.CleanPool(); + _story_page_pool.CleanPool(); + } +} + +static const SaveLoad _story_page_elements_desc[] = { + SLE_CONDVAR(StoryPageElement, sort_value, SLE_FILE_U16 | SLE_VAR_U32, 0, 184), + SLE_CONDVAR(StoryPageElement, sort_value, SLE_UINT32, 185, SL_MAX_VERSION), + SLE_VAR(StoryPageElement, page, SLE_UINT16), + SLE_CONDVAR(StoryPageElement, type, SLE_FILE_U16 | SLE_VAR_U8, 0, 184), + SLE_CONDVAR(StoryPageElement, type, SLE_UINT8, 185, SL_MAX_VERSION), + SLE_VAR(StoryPageElement, referenced_id, SLE_UINT32), + SLE_STR(StoryPageElement, text, SLE_STR | SLF_ALLOW_CONTROL, 0), + SLE_END() +}; + +static void Save_STORY_PAGE_ELEMENT() +{ + StoryPageElement *s; + FOR_ALL_STORY_PAGE_ELEMENTS(s) { + SlSetArrayIndex(s->index); + SlObject(s, _story_page_elements_desc); + } +} + +static void Load_STORY_PAGE_ELEMENT() +{ + int index; + uint32 max_sort_value = 0; + while ((index = SlIterateArray()) != -1) { + StoryPageElement *s = new (index) StoryPageElement(); + SlObject(s, _story_page_elements_desc); + if (s->sort_value > max_sort_value) { + max_sort_value = s->sort_value; + } + } + /* Update the next sort value, so that the next + * created page is shown after all existing pages. + */ + _story_page_element_next_sort_value = max_sort_value + 1; +} + +static const SaveLoad _story_pages_desc[] = { + SLE_CONDVAR(StoryPage, sort_value, SLE_FILE_U16 | SLE_VAR_U32, 0, 184), + SLE_CONDVAR(StoryPage, sort_value, SLE_UINT32, 185, SL_MAX_VERSION), + SLE_VAR(StoryPage, date, SLE_UINT32), + SLE_CONDVAR(StoryPage, company, SLE_FILE_U16 | SLE_VAR_U8, 0, 184), + SLE_CONDVAR(StoryPage, company, SLE_UINT8, 185, SL_MAX_VERSION), + SLE_STR(StoryPage, title, SLE_STR | SLF_ALLOW_CONTROL, 0), + SLE_END() +}; + +static void Save_STORY_PAGE() +{ + StoryPage *s; + FOR_ALL_STORY_PAGES(s) { + SlSetArrayIndex(s->index); + SlObject(s, _story_pages_desc); + } +} + +static void Load_STORY_PAGE() +{ + int index; + uint32 max_sort_value = 0; + while ((index = SlIterateArray()) != -1) { + StoryPage *s = new (index) StoryPage(); + SlObject(s, _story_pages_desc); + if (s->sort_value > max_sort_value) { + max_sort_value = s->sort_value; + } + } + /* Update the next sort value, so that the next + * created page is shown after all existing pages. + */ + _story_page_next_sort_value = max_sort_value + 1; +} + +extern const ChunkHandler _story_page_chunk_handlers[] = { + { 'STPE', Save_STORY_PAGE_ELEMENT, Load_STORY_PAGE_ELEMENT, NULL, NULL, CH_ARRAY}, + { 'STPA', Save_STORY_PAGE, Load_STORY_PAGE, NULL, NULL, CH_ARRAY | CH_LAST}, +}; diff --git a/src/saveload/strings_sl.cpp b/src/saveload/strings_sl.cpp index b1cc50d46..73f2a1e2e 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 bfdd25339..f6d650468 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 c0cb59994..7db6a7aa6 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. */ @@ -44,7 +46,7 @@ void RebuildTownCaches() if (GetHouseNorthPart(house_id) == 0) town->cache.num_houses++; } - /* Update the population and num_house dependant values */ + /* Update the population and num_house dependent values */ FOR_ALL_TOWNS(town) { UpdateTownRadius(town); UpdateTownCargoes(town); diff --git a/src/saveload/vehicle_sl.cpp b/src/saveload/vehicle_sl.cpp index 416b0f0e9..453210baa 100644 --- a/src/saveload/vehicle_sl.cpp +++ b/src/saveload/vehicle_sl.cpp @@ -17,11 +17,15 @@ #include "../aircraft.h" #include "../station_base.h" #include "../effectvehicle_base.h" +#include "../company_base.h" +#include "../company_func.h" #include "saveload.h" #include +#include "../safeguards.h" + /** * Link front and rear multiheaded engines to each other * This is done when loading a savegame @@ -349,6 +353,19 @@ void AfterLoadVehicles(bool part_of_load) v->cargo_age_counter = _age_cargo_skip_counter; } } + + if (IsSavegameVersionBefore(180)) { + /* Set service interval flags */ + FOR_ALL_VEHICLES(v) { + if (!v->IsPrimaryVehicle()) continue; + + const Company *c = Company::Get(v->owner); + int interval = CompanyServiceInterval(c, v->type); + + v->SetServiceIntervalIsCustom(v->GetServiceInterval() != interval); + v->SetServiceIntervalIsPercent(c->settings.vehicle.servint_ispercent); + } + } } CheckValidVehicles(); @@ -361,7 +378,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; } @@ -532,7 +549,7 @@ void FixupTrainLengths() } /* Update all cached properties after moving the vehicle chain around. */ - Train::From(v)->ConsistChanged(true); + Train::From(v)->ConsistChanged(CCF_TRACK); } } } @@ -589,6 +606,7 @@ const SaveLoad *GetVehicleDescription(VehicleType vt) SLE_VAR(Vehicle, vehstatus, SLE_UINT8), SLE_CONDVAR(Vehicle, last_station_visited, SLE_FILE_U8 | SLE_VAR_U16, 0, 4), SLE_CONDVAR(Vehicle, last_station_visited, SLE_UINT16, 5, SL_MAX_VERSION), + SLE_CONDVAR(Vehicle, last_loading_station, SLE_UINT16, 182, SL_MAX_VERSION), SLE_VAR(Vehicle, cargo_type, SLE_UINT8), SLE_CONDVAR(Vehicle, cargo_subtype, SLE_UINT8, 35, SL_MAX_VERSION), @@ -597,8 +615,10 @@ const SaveLoad *GetVehicleDescription(VehicleType vt) SLEG_CONDVAR( _cargo_source, SLE_UINT16, 7, 67), SLEG_CONDVAR( _cargo_source_xy, SLE_UINT32, 44, 67), SLE_VAR(Vehicle, cargo_cap, SLE_UINT16), + SLE_CONDVAR(Vehicle, refit_cap, SLE_UINT16, 182, SL_MAX_VERSION), SLEG_CONDVAR( _cargo_count, SLE_UINT16, 0, 67), SLE_CONDLST(Vehicle, cargo.packets, REF_CARGO_PACKET, 68, SL_MAX_VERSION), + SLE_CONDARR(Vehicle, cargo.action_counts, SLE_UINT, VehicleCargoList::NUM_MOVE_TO_ACTION, 181, SL_MAX_VERSION), SLE_CONDVAR(Vehicle, cargo_age_counter, SLE_UINT16, 162, SL_MAX_VERSION), SLE_VAR(Vehicle, day_counter, SLE_UINT8), @@ -623,7 +643,7 @@ const SaveLoad *GetVehicleDescription(VehicleType vt) /* Refit in current order */ SLE_CONDVAR(Vehicle, current_order.refit_cargo, SLE_UINT8, 36, SL_MAX_VERSION), - SLE_CONDVAR(Vehicle, current_order.refit_subtype, SLE_UINT8, 36, SL_MAX_VERSION), + SLE_CONDNULL(1, 36, 181), // refit_subtype /* Timetable in current order */ SLE_CONDVAR(Vehicle, current_order.wait_time, SLE_UINT16, 67, SL_MAX_VERSION), @@ -640,8 +660,9 @@ const SaveLoad *GetVehicleDescription(VehicleType vt) SLE_CONDVAR(Vehicle, max_age, SLE_INT32, 31, SL_MAX_VERSION), SLE_CONDVAR(Vehicle, date_of_last_service, SLE_FILE_U16 | SLE_VAR_I32, 0, 30), SLE_CONDVAR(Vehicle, date_of_last_service, SLE_INT32, 31, SL_MAX_VERSION), - SLE_CONDVAR(Vehicle, service_interval, SLE_FILE_U16 | SLE_VAR_I32, 0, 30), - SLE_CONDVAR(Vehicle, service_interval, SLE_INT32, 31, SL_MAX_VERSION), + SLE_CONDVAR(Vehicle, service_interval, SLE_UINT16, 0, 30), + SLE_CONDVAR(Vehicle, service_interval, SLE_FILE_U32 | SLE_VAR_U16, 31, 179), + SLE_CONDVAR(Vehicle, service_interval, SLE_UINT16, 180, SL_MAX_VERSION), SLE_VAR(Vehicle, reliability, SLE_UINT16), SLE_VAR(Vehicle, reliability_spd_dec, SLE_UINT16), SLE_VAR(Vehicle, breakdown_ctr, SLE_UINT8), @@ -653,7 +674,8 @@ const SaveLoad *GetVehicleDescription(VehicleType vt) SLE_VAR(Vehicle, load_unload_ticks, SLE_UINT16), SLEG_CONDVAR( _cargo_paid_for, SLE_UINT16, 45, SL_MAX_VERSION), - SLE_CONDVAR(Vehicle, vehicle_flags, SLE_UINT8, 40, SL_MAX_VERSION), + SLE_CONDVAR(Vehicle, vehicle_flags, SLE_FILE_U8 | SLE_VAR_U16, 40, 179), + SLE_CONDVAR(Vehicle, vehicle_flags, SLE_UINT16, 180, SL_MAX_VERSION), SLE_CONDVAR(Vehicle, profit_this_year, SLE_FILE_I32 | SLE_VAR_I64, 0, 64), SLE_CONDVAR(Vehicle, profit_this_year, SLE_INT64, 65, SL_MAX_VERSION), @@ -817,8 +839,10 @@ 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_CONDNULL(16, 2, 143), // old reserved space @@ -885,6 +909,8 @@ void Load_VEHS() v->last_station_visited = INVALID_STATION; } + if (IsSavegameVersionBefore(182)) v->last_loading_station = INVALID_STATION; + if (IsSavegameVersionBefore(5)) { /* Convert the current_order.type (which is a mix of type and flags, because * in those versions, they both were 4 bits big) to type and flags */ diff --git a/src/saveload/waypoint_sl.cpp b/src/saveload/waypoint_sl.cpp index 6ea72ea6f..0f9396985 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 c642c0391..4921378f8 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); } /** @@ -781,6 +750,7 @@ void SetupScreenshotViewport(ScreenshotType t, ViewPort *vp) vp->top = 0; vp->width = UnScaleByZoom(vp->virtual_width, vp->zoom); vp->height = UnScaleByZoom(vp->virtual_height, vp->zoom); + vp->overlay = NULL; } /** @@ -795,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); } /** @@ -844,7 +814,7 @@ bool MakeHeightmapScreenshot(const char *filename) * Make an actual screenshot. * @param t the type of screenshot to make. * @param name the name to give to the screenshot. - * @return true iff the screenshow was made successfully + * @return true iff the screenshot was made successfully */ bool MakeScreenshot(ScreenshotType t, const char *name) { diff --git a/src/screenshot.h b/src/screenshot.h index 7456a09de..ee03d8aff 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/Doxyfile_AI b/src/script/api/Doxyfile_AI index 04c56db3a..568859bff 100644 --- a/src/script/api/Doxyfile_AI +++ b/src/script/api/Doxyfile_AI @@ -213,7 +213,7 @@ SKIP_FUNCTION_MACROS = YES # Configuration::additions related to external references #--------------------------------------------------------------------------- TAGFILES = -GENERATE_TAGFILE = openttd_noai.tag +GENERATE_TAGFILE = ../../../objs/openttd_noai.tag ALLEXTERNALS = NO EXTERNAL_GROUPS = YES PERL_PATH = /usr/bin/perl diff --git a/src/script/api/Doxyfile_Game b/src/script/api/Doxyfile_Game index d8518912f..1edfe42c7 100644 --- a/src/script/api/Doxyfile_Game +++ b/src/script/api/Doxyfile_Game @@ -213,7 +213,7 @@ SKIP_FUNCTION_MACROS = YES # Configuration::additions related to external references #--------------------------------------------------------------------------- TAGFILES = -GENERATE_TAGFILE = openttd_nogo.tag +GENERATE_TAGFILE = ../../../objs/openttd_nogo.tag ALLEXTERNALS = NO EXTERNAL_GROUPS = YES PERL_PATH = /usr/bin/perl diff --git a/src/script/api/ai/ai_cargo.hpp.sq b/src/script/api/ai/ai_cargo.hpp.sq index c65872126..6478d44b8 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 3210a6950..7bdf9519d 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_error.hpp.sq b/src/script/api/ai/ai_error.hpp.sq index c588f7b40..54636d3a1 100644 --- a/src/script/api/ai/ai_error.hpp.sq +++ b/src/script/api/ai/ai_error.hpp.sq @@ -21,39 +21,40 @@ void SQAIError_Register(Squirrel *engine) SQAIError.PreRegister(engine); SQAIError.AddConstructor(engine, "x"); - SQAIError.DefSQConst(engine, ScriptError::ERR_CAT_NONE, "ERR_CAT_NONE"); - SQAIError.DefSQConst(engine, ScriptError::ERR_CAT_GENERAL, "ERR_CAT_GENERAL"); - SQAIError.DefSQConst(engine, ScriptError::ERR_CAT_VEHICLE, "ERR_CAT_VEHICLE"); - SQAIError.DefSQConst(engine, ScriptError::ERR_CAT_STATION, "ERR_CAT_STATION"); - SQAIError.DefSQConst(engine, ScriptError::ERR_CAT_BRIDGE, "ERR_CAT_BRIDGE"); - SQAIError.DefSQConst(engine, ScriptError::ERR_CAT_TUNNEL, "ERR_CAT_TUNNEL"); - SQAIError.DefSQConst(engine, ScriptError::ERR_CAT_TILE, "ERR_CAT_TILE"); - SQAIError.DefSQConst(engine, ScriptError::ERR_CAT_SIGN, "ERR_CAT_SIGN"); - SQAIError.DefSQConst(engine, ScriptError::ERR_CAT_RAIL, "ERR_CAT_RAIL"); - SQAIError.DefSQConst(engine, ScriptError::ERR_CAT_ROAD, "ERR_CAT_ROAD"); - SQAIError.DefSQConst(engine, ScriptError::ERR_CAT_ORDER, "ERR_CAT_ORDER"); - SQAIError.DefSQConst(engine, ScriptError::ERR_CAT_MARINE, "ERR_CAT_MARINE"); - SQAIError.DefSQConst(engine, ScriptError::ERR_CAT_WAYPOINT, "ERR_CAT_WAYPOINT"); - SQAIError.DefSQConst(engine, ScriptError::ERR_CAT_BIT_SIZE, "ERR_CAT_BIT_SIZE"); - SQAIError.DefSQConst(engine, ScriptError::ERR_NONE, "ERR_NONE"); - SQAIError.DefSQConst(engine, ScriptError::ERR_UNKNOWN, "ERR_UNKNOWN"); - SQAIError.DefSQConst(engine, ScriptError::ERR_PRECONDITION_FAILED, "ERR_PRECONDITION_FAILED"); - SQAIError.DefSQConst(engine, ScriptError::ERR_PRECONDITION_STRING_TOO_LONG, "ERR_PRECONDITION_STRING_TOO_LONG"); - SQAIError.DefSQConst(engine, ScriptError::ERR_PRECONDITION_INVALID_COMPANY, "ERR_PRECONDITION_INVALID_COMPANY"); - SQAIError.DefSQConst(engine, ScriptError::ERR_NEWGRF_SUPPLIED_ERROR, "ERR_NEWGRF_SUPPLIED_ERROR"); - SQAIError.DefSQConst(engine, ScriptError::ERR_GENERAL_BASE, "ERR_GENERAL_BASE"); - SQAIError.DefSQConst(engine, ScriptError::ERR_NOT_ENOUGH_CASH, "ERR_NOT_ENOUGH_CASH"); - SQAIError.DefSQConst(engine, ScriptError::ERR_LOCAL_AUTHORITY_REFUSES, "ERR_LOCAL_AUTHORITY_REFUSES"); - SQAIError.DefSQConst(engine, ScriptError::ERR_ALREADY_BUILT, "ERR_ALREADY_BUILT"); - SQAIError.DefSQConst(engine, ScriptError::ERR_AREA_NOT_CLEAR, "ERR_AREA_NOT_CLEAR"); - SQAIError.DefSQConst(engine, ScriptError::ERR_OWNED_BY_ANOTHER_COMPANY, "ERR_OWNED_BY_ANOTHER_COMPANY"); - SQAIError.DefSQConst(engine, ScriptError::ERR_NAME_IS_NOT_UNIQUE, "ERR_NAME_IS_NOT_UNIQUE"); - SQAIError.DefSQConst(engine, ScriptError::ERR_FLAT_LAND_REQUIRED, "ERR_FLAT_LAND_REQUIRED"); - SQAIError.DefSQConst(engine, ScriptError::ERR_LAND_SLOPED_WRONG, "ERR_LAND_SLOPED_WRONG"); - SQAIError.DefSQConst(engine, ScriptError::ERR_VEHICLE_IN_THE_WAY, "ERR_VEHICLE_IN_THE_WAY"); - SQAIError.DefSQConst(engine, ScriptError::ERR_SITE_UNSUITABLE, "ERR_SITE_UNSUITABLE"); - SQAIError.DefSQConst(engine, ScriptError::ERR_TOO_CLOSE_TO_EDGE, "ERR_TOO_CLOSE_TO_EDGE"); - SQAIError.DefSQConst(engine, ScriptError::ERR_STATION_TOO_SPREAD_OUT, "ERR_STATION_TOO_SPREAD_OUT"); + SQAIError.DefSQConst(engine, ScriptError::ERR_CAT_NONE, "ERR_CAT_NONE"); + SQAIError.DefSQConst(engine, ScriptError::ERR_CAT_GENERAL, "ERR_CAT_GENERAL"); + SQAIError.DefSQConst(engine, ScriptError::ERR_CAT_VEHICLE, "ERR_CAT_VEHICLE"); + SQAIError.DefSQConst(engine, ScriptError::ERR_CAT_STATION, "ERR_CAT_STATION"); + SQAIError.DefSQConst(engine, ScriptError::ERR_CAT_BRIDGE, "ERR_CAT_BRIDGE"); + SQAIError.DefSQConst(engine, ScriptError::ERR_CAT_TUNNEL, "ERR_CAT_TUNNEL"); + SQAIError.DefSQConst(engine, ScriptError::ERR_CAT_TILE, "ERR_CAT_TILE"); + SQAIError.DefSQConst(engine, ScriptError::ERR_CAT_SIGN, "ERR_CAT_SIGN"); + SQAIError.DefSQConst(engine, ScriptError::ERR_CAT_RAIL, "ERR_CAT_RAIL"); + SQAIError.DefSQConst(engine, ScriptError::ERR_CAT_ROAD, "ERR_CAT_ROAD"); + SQAIError.DefSQConst(engine, ScriptError::ERR_CAT_ORDER, "ERR_CAT_ORDER"); + SQAIError.DefSQConst(engine, ScriptError::ERR_CAT_MARINE, "ERR_CAT_MARINE"); + SQAIError.DefSQConst(engine, ScriptError::ERR_CAT_WAYPOINT, "ERR_CAT_WAYPOINT"); + SQAIError.DefSQConst(engine, ScriptError::ERR_CAT_BIT_SIZE, "ERR_CAT_BIT_SIZE"); + SQAIError.DefSQConst(engine, ScriptError::ERR_NONE, "ERR_NONE"); + SQAIError.DefSQConst(engine, ScriptError::ERR_UNKNOWN, "ERR_UNKNOWN"); + SQAIError.DefSQConst(engine, ScriptError::ERR_PRECONDITION_FAILED, "ERR_PRECONDITION_FAILED"); + SQAIError.DefSQConst(engine, ScriptError::ERR_PRECONDITION_STRING_TOO_LONG, "ERR_PRECONDITION_STRING_TOO_LONG"); + SQAIError.DefSQConst(engine, ScriptError::ERR_PRECONDITION_TOO_MANY_PARAMETERS, "ERR_PRECONDITION_TOO_MANY_PARAMETERS"); + SQAIError.DefSQConst(engine, ScriptError::ERR_PRECONDITION_INVALID_COMPANY, "ERR_PRECONDITION_INVALID_COMPANY"); + SQAIError.DefSQConst(engine, ScriptError::ERR_NEWGRF_SUPPLIED_ERROR, "ERR_NEWGRF_SUPPLIED_ERROR"); + SQAIError.DefSQConst(engine, ScriptError::ERR_GENERAL_BASE, "ERR_GENERAL_BASE"); + SQAIError.DefSQConst(engine, ScriptError::ERR_NOT_ENOUGH_CASH, "ERR_NOT_ENOUGH_CASH"); + SQAIError.DefSQConst(engine, ScriptError::ERR_LOCAL_AUTHORITY_REFUSES, "ERR_LOCAL_AUTHORITY_REFUSES"); + SQAIError.DefSQConst(engine, ScriptError::ERR_ALREADY_BUILT, "ERR_ALREADY_BUILT"); + SQAIError.DefSQConst(engine, ScriptError::ERR_AREA_NOT_CLEAR, "ERR_AREA_NOT_CLEAR"); + SQAIError.DefSQConst(engine, ScriptError::ERR_OWNED_BY_ANOTHER_COMPANY, "ERR_OWNED_BY_ANOTHER_COMPANY"); + SQAIError.DefSQConst(engine, ScriptError::ERR_NAME_IS_NOT_UNIQUE, "ERR_NAME_IS_NOT_UNIQUE"); + SQAIError.DefSQConst(engine, ScriptError::ERR_FLAT_LAND_REQUIRED, "ERR_FLAT_LAND_REQUIRED"); + SQAIError.DefSQConst(engine, ScriptError::ERR_LAND_SLOPED_WRONG, "ERR_LAND_SLOPED_WRONG"); + SQAIError.DefSQConst(engine, ScriptError::ERR_VEHICLE_IN_THE_WAY, "ERR_VEHICLE_IN_THE_WAY"); + SQAIError.DefSQConst(engine, ScriptError::ERR_SITE_UNSUITABLE, "ERR_SITE_UNSUITABLE"); + SQAIError.DefSQConst(engine, ScriptError::ERR_TOO_CLOSE_TO_EDGE, "ERR_TOO_CLOSE_TO_EDGE"); + SQAIError.DefSQConst(engine, ScriptError::ERR_STATION_TOO_SPREAD_OUT, "ERR_STATION_TOO_SPREAD_OUT"); ScriptError::RegisterErrorMap(STR_ERROR_NOT_ENOUGH_CASH_REQUIRES_CURRENCY, ScriptError::ERR_NOT_ENOUGH_CASH); ScriptError::RegisterErrorMap(STR_ERROR_LOCAL_AUTHORITY_REFUSES_TO_ALLOW_THIS, ScriptError::ERR_LOCAL_AUTHORITY_REFUSES); @@ -90,24 +91,25 @@ void SQAIError_Register(Squirrel *engine) ScriptError::RegisterErrorMap(STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP, ScriptError::ERR_TOO_CLOSE_TO_EDGE); ScriptError::RegisterErrorMap(STR_ERROR_STATION_TOO_SPREAD_OUT, ScriptError::ERR_STATION_TOO_SPREAD_OUT); - ScriptError::RegisterErrorMapString(ScriptError::ERR_NONE, "ERR_NONE"); - ScriptError::RegisterErrorMapString(ScriptError::ERR_UNKNOWN, "ERR_UNKNOWN"); - ScriptError::RegisterErrorMapString(ScriptError::ERR_PRECONDITION_FAILED, "ERR_PRECONDITION_FAILED"); - ScriptError::RegisterErrorMapString(ScriptError::ERR_PRECONDITION_STRING_TOO_LONG, "ERR_PRECONDITION_STRING_TOO_LONG"); - ScriptError::RegisterErrorMapString(ScriptError::ERR_PRECONDITION_INVALID_COMPANY, "ERR_PRECONDITION_INVALID_COMPANY"); - ScriptError::RegisterErrorMapString(ScriptError::ERR_NEWGRF_SUPPLIED_ERROR, "ERR_NEWGRF_SUPPLIED_ERROR"); - ScriptError::RegisterErrorMapString(ScriptError::ERR_NOT_ENOUGH_CASH, "ERR_NOT_ENOUGH_CASH"); - ScriptError::RegisterErrorMapString(ScriptError::ERR_LOCAL_AUTHORITY_REFUSES, "ERR_LOCAL_AUTHORITY_REFUSES"); - ScriptError::RegisterErrorMapString(ScriptError::ERR_ALREADY_BUILT, "ERR_ALREADY_BUILT"); - ScriptError::RegisterErrorMapString(ScriptError::ERR_AREA_NOT_CLEAR, "ERR_AREA_NOT_CLEAR"); - ScriptError::RegisterErrorMapString(ScriptError::ERR_OWNED_BY_ANOTHER_COMPANY, "ERR_OWNED_BY_ANOTHER_COMPANY"); - ScriptError::RegisterErrorMapString(ScriptError::ERR_NAME_IS_NOT_UNIQUE, "ERR_NAME_IS_NOT_UNIQUE"); - ScriptError::RegisterErrorMapString(ScriptError::ERR_FLAT_LAND_REQUIRED, "ERR_FLAT_LAND_REQUIRED"); - ScriptError::RegisterErrorMapString(ScriptError::ERR_LAND_SLOPED_WRONG, "ERR_LAND_SLOPED_WRONG"); - ScriptError::RegisterErrorMapString(ScriptError::ERR_VEHICLE_IN_THE_WAY, "ERR_VEHICLE_IN_THE_WAY"); - ScriptError::RegisterErrorMapString(ScriptError::ERR_SITE_UNSUITABLE, "ERR_SITE_UNSUITABLE"); - ScriptError::RegisterErrorMapString(ScriptError::ERR_TOO_CLOSE_TO_EDGE, "ERR_TOO_CLOSE_TO_EDGE"); - ScriptError::RegisterErrorMapString(ScriptError::ERR_STATION_TOO_SPREAD_OUT, "ERR_STATION_TOO_SPREAD_OUT"); + ScriptError::RegisterErrorMapString(ScriptError::ERR_NONE, "ERR_NONE"); + ScriptError::RegisterErrorMapString(ScriptError::ERR_UNKNOWN, "ERR_UNKNOWN"); + ScriptError::RegisterErrorMapString(ScriptError::ERR_PRECONDITION_FAILED, "ERR_PRECONDITION_FAILED"); + ScriptError::RegisterErrorMapString(ScriptError::ERR_PRECONDITION_STRING_TOO_LONG, "ERR_PRECONDITION_STRING_TOO_LONG"); + ScriptError::RegisterErrorMapString(ScriptError::ERR_PRECONDITION_TOO_MANY_PARAMETERS, "ERR_PRECONDITION_TOO_MANY_PARAMETERS"); + ScriptError::RegisterErrorMapString(ScriptError::ERR_PRECONDITION_INVALID_COMPANY, "ERR_PRECONDITION_INVALID_COMPANY"); + ScriptError::RegisterErrorMapString(ScriptError::ERR_NEWGRF_SUPPLIED_ERROR, "ERR_NEWGRF_SUPPLIED_ERROR"); + ScriptError::RegisterErrorMapString(ScriptError::ERR_NOT_ENOUGH_CASH, "ERR_NOT_ENOUGH_CASH"); + ScriptError::RegisterErrorMapString(ScriptError::ERR_LOCAL_AUTHORITY_REFUSES, "ERR_LOCAL_AUTHORITY_REFUSES"); + ScriptError::RegisterErrorMapString(ScriptError::ERR_ALREADY_BUILT, "ERR_ALREADY_BUILT"); + ScriptError::RegisterErrorMapString(ScriptError::ERR_AREA_NOT_CLEAR, "ERR_AREA_NOT_CLEAR"); + ScriptError::RegisterErrorMapString(ScriptError::ERR_OWNED_BY_ANOTHER_COMPANY, "ERR_OWNED_BY_ANOTHER_COMPANY"); + ScriptError::RegisterErrorMapString(ScriptError::ERR_NAME_IS_NOT_UNIQUE, "ERR_NAME_IS_NOT_UNIQUE"); + ScriptError::RegisterErrorMapString(ScriptError::ERR_FLAT_LAND_REQUIRED, "ERR_FLAT_LAND_REQUIRED"); + ScriptError::RegisterErrorMapString(ScriptError::ERR_LAND_SLOPED_WRONG, "ERR_LAND_SLOPED_WRONG"); + ScriptError::RegisterErrorMapString(ScriptError::ERR_VEHICLE_IN_THE_WAY, "ERR_VEHICLE_IN_THE_WAY"); + ScriptError::RegisterErrorMapString(ScriptError::ERR_SITE_UNSUITABLE, "ERR_SITE_UNSUITABLE"); + ScriptError::RegisterErrorMapString(ScriptError::ERR_TOO_CLOSE_TO_EDGE, "ERR_TOO_CLOSE_TO_EDGE"); + ScriptError::RegisterErrorMapString(ScriptError::ERR_STATION_TOO_SPREAD_OUT, "ERR_STATION_TOO_SPREAD_OUT"); SQAIError.DefSQStaticMethod(engine, &ScriptError::GetErrorCategory, "GetErrorCategory", 1, "."); SQAIError.DefSQStaticMethod(engine, &ScriptError::GetLastError, "GetLastError", 1, "."); diff --git a/src/script/api/ai/ai_rail.hpp.sq b/src/script/api/ai/ai_rail.hpp.sq index 8ec22e338..ba9d7e656 100644 --- a/src/script/api/ai/ai_rail.hpp.sq +++ b/src/script/api/ai/ai_rail.hpp.sq @@ -53,6 +53,9 @@ void SQAIRail_Register(Squirrel *engine) ScriptError::RegisterErrorMap(STR_ERROR_CROSSING_ON_ONEWAY_ROAD, ScriptRail::ERR_CROSSING_ON_ONEWAY_ROAD); ScriptError::RegisterErrorMap(STR_ERROR_NO_SUITABLE_RAILROAD_TRACK, ScriptRail::ERR_UNSUITABLE_TRACK); + ScriptError::RegisterErrorMap(STR_ERROR_THERE_IS_NO_RAILROAD_TRACK, ScriptRail::ERR_UNSUITABLE_TRACK); + ScriptError::RegisterErrorMap(STR_ERROR_THERE_ARE_NO_SIGNALS, ScriptRail::ERR_UNSUITABLE_TRACK); + ScriptError::RegisterErrorMap(STR_ERROR_THERE_IS_NO_STATION, ScriptRail::ERR_UNSUITABLE_TRACK); ScriptError::RegisterErrorMap(STR_ERROR_CROSSING_DISALLOWED, ScriptRail::ERR_RAILTYPE_DISALLOWS_CROSSING); ScriptError::RegisterErrorMapString(ScriptRail::ERR_CROSSING_ON_ONEWAY_ROAD, "ERR_CROSSING_ON_ONEWAY_ROAD"); diff --git a/src/script/api/ai/ai_station.hpp.sq b/src/script/api/ai/ai_station.hpp.sq index 620f378b9..6f2b6e741 100644 --- a/src/script/api/ai/ai_station.hpp.sq +++ b/src/script/api/ai/ai_station.hpp.sq @@ -47,6 +47,10 @@ 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::HasCargoRating, "HasCargoRating", 3, ".ii"); SQAIStation.DefSQStaticMethod(engine, &ScriptStation::GetCargoRating, "GetCargoRating", 3, ".ii"); SQAIStation.DefSQStaticMethod(engine, &ScriptStation::GetCoverageRadius, "GetCoverageRadius", 2, ".i"); SQAIStation.DefSQStaticMethod(engine, &ScriptStation::GetStationCoverageRadius, "GetStationCoverageRadius", 2, ".i"); diff --git a/src/script/api/ai/ai_tile.hpp.sq b/src/script/api/ai/ai_tile.hpp.sq index 44d5e326c..570e88cd2 100644 --- a/src/script/api/ai/ai_tile.hpp.sq +++ b/src/script/api/ai/ai_tile.hpp.sq @@ -66,6 +66,10 @@ void SQAITile_Register(Squirrel *engine) SQAITile.DefSQConst(engine, ScriptTile::BT_CLEAR_ROCKY, "BT_CLEAR_ROCKY"); SQAITile.DefSQConst(engine, ScriptTile::BT_CLEAR_FIELDS, "BT_CLEAR_FIELDS"); SQAITile.DefSQConst(engine, ScriptTile::BT_CLEAR_HOUSE, "BT_CLEAR_HOUSE"); + SQAITile.DefSQConst(engine, ScriptTile::TERRAIN_NORMAL, "TERRAIN_NORMAL"); + SQAITile.DefSQConst(engine, ScriptTile::TERRAIN_DESERT, "TERRAIN_DESERT"); + SQAITile.DefSQConst(engine, ScriptTile::TERRAIN_RAINFOREST, "TERRAIN_RAINFOREST"); + SQAITile.DefSQConst(engine, ScriptTile::TERRAIN_SNOW, "TERRAIN_SNOW"); ScriptError::RegisterErrorMap(STR_ERROR_ALREADY_AT_SEA_LEVEL, ScriptTile::ERR_TILE_TOO_HIGH); ScriptError::RegisterErrorMap(STR_ERROR_ALREADY_AT_SEA_LEVEL, ScriptTile::ERR_TILE_TOO_LOW); @@ -90,6 +94,7 @@ void SQAITile_Register(Squirrel *engine) SQAITile.DefSQStaticMethod(engine, &ScriptTile::IsRoughTile, "IsRoughTile", 2, ".i"); SQAITile.DefSQStaticMethod(engine, &ScriptTile::IsSnowTile, "IsSnowTile", 2, ".i"); SQAITile.DefSQStaticMethod(engine, &ScriptTile::IsDesertTile, "IsDesertTile", 2, ".i"); + SQAITile.DefSQStaticMethod(engine, &ScriptTile::GetTerrainType, "GetTerrainType", 2, ".i"); SQAITile.DefSQStaticMethod(engine, &ScriptTile::GetSlope, "GetSlope", 2, ".i"); SQAITile.DefSQStaticMethod(engine, &ScriptTile::GetComplementSlope, "GetComplementSlope", 2, ".i"); SQAITile.DefSQStaticMethod(engine, &ScriptTile::GetMinHeight, "GetMinHeight", 2, ".i"); diff --git a/src/script/api/ai/ai_town.hpp.sq b/src/script/api/ai/ai_town.hpp.sq index 70e3e994e..6b09190be 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 91429fcf2..92893c269 100644 --- a/src/script/api/ai_changelog.hpp +++ b/src/script/api/ai_changelog.hpp @@ -15,9 +15,45 @@ * functions may still be available if you return an older API version * in GetAPIVersion() in info.nut. * - * \b 1.3.0 + * \b 1.5.0 + * + * 1.5.0 is not yet released. The following changes are not set in stone yet. + * + * API additions: + * \li AIStation::GetCargoWaitingFromVia + * + * \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 * - * 1.3.0 is not yet released. The following changes are not set in stone yet. + * No changes + * + * \b 1.3.2 + * + * No changes + * + * \b 1.3.1 + * + * API additions: + * \li AITile::GetTerrainType + * + * \b 1.3.0 * * API additions: * \li AIEventExclusiveTransportRights @@ -65,10 +101,10 @@ * \li AIOrder::SetOrderRefit * \li AIRail::GetMaintenanceCostFactor * \li AIRoad::GetMaintenanceCostFactor + * \li AITile::GetTownAuthority * \li AITown::GetCargoGoal * \li AITown::GetGrowthRate * \li AITown::GetLastMonthReceived - * \li AITown::GetTownAuthority * \li AITownEffectList (to walk over all available town effects) * \li AIVehicle::ERR_VEHICLE_TOO_LONG in case vehicle length limit is reached * \li AIVehicle::GetMaximumOrderDistance @@ -88,7 +124,7 @@ * Other changes: * \li AITown::GetLastMonthProduction no longer has prerequisites based on town * effects. - * \li AITown::GetLastMonthTransported no longer has prerequisites based on + * \li AITown::GetLastMonthTransported resp. AITown::GetLastMonthSupplied no longer has prerequisites based on * town effects. * \li AITown::GetLastMonthTransportedPercentage no longer has prerequisites * based on town effects. @@ -215,7 +251,7 @@ * AIBaseStation, but can still be used as AIStation.GetConstructionDate * \li WaypointID was replaced by StationID. All WaypointIDs from previous * savegames are invalid. Use STATION_INVALID instead of WAYPOINT_INVALID - * \li AIWaypointList constructor now needs a WaypointType similiar to AIStationList, + * \li AIWaypointList constructor now needs a WaypointType similar to AIStationList, * it can also handle buoys. * \li AIVehicleList_Station now also works for waypoints * \li Stations can be build over rail without signals that is in the right diff --git a/src/script/api/game/game_cargo.hpp.sq b/src/script/api/game/game_cargo.hpp.sq index 188c732a8..515d5ff28 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 98c6d4476..56917a5b2 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 43af86afa..dc40989da 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_error.hpp.sq b/src/script/api/game/game_error.hpp.sq index b47f5d4a9..7718f1434 100644 --- a/src/script/api/game/game_error.hpp.sq +++ b/src/script/api/game/game_error.hpp.sq @@ -21,39 +21,40 @@ void SQGSError_Register(Squirrel *engine) SQGSError.PreRegister(engine); SQGSError.AddConstructor(engine, "x"); - SQGSError.DefSQConst(engine, ScriptError::ERR_CAT_NONE, "ERR_CAT_NONE"); - SQGSError.DefSQConst(engine, ScriptError::ERR_CAT_GENERAL, "ERR_CAT_GENERAL"); - SQGSError.DefSQConst(engine, ScriptError::ERR_CAT_VEHICLE, "ERR_CAT_VEHICLE"); - SQGSError.DefSQConst(engine, ScriptError::ERR_CAT_STATION, "ERR_CAT_STATION"); - SQGSError.DefSQConst(engine, ScriptError::ERR_CAT_BRIDGE, "ERR_CAT_BRIDGE"); - SQGSError.DefSQConst(engine, ScriptError::ERR_CAT_TUNNEL, "ERR_CAT_TUNNEL"); - SQGSError.DefSQConst(engine, ScriptError::ERR_CAT_TILE, "ERR_CAT_TILE"); - SQGSError.DefSQConst(engine, ScriptError::ERR_CAT_SIGN, "ERR_CAT_SIGN"); - SQGSError.DefSQConst(engine, ScriptError::ERR_CAT_RAIL, "ERR_CAT_RAIL"); - SQGSError.DefSQConst(engine, ScriptError::ERR_CAT_ROAD, "ERR_CAT_ROAD"); - SQGSError.DefSQConst(engine, ScriptError::ERR_CAT_ORDER, "ERR_CAT_ORDER"); - SQGSError.DefSQConst(engine, ScriptError::ERR_CAT_MARINE, "ERR_CAT_MARINE"); - SQGSError.DefSQConst(engine, ScriptError::ERR_CAT_WAYPOINT, "ERR_CAT_WAYPOINT"); - SQGSError.DefSQConst(engine, ScriptError::ERR_CAT_BIT_SIZE, "ERR_CAT_BIT_SIZE"); - SQGSError.DefSQConst(engine, ScriptError::ERR_NONE, "ERR_NONE"); - SQGSError.DefSQConst(engine, ScriptError::ERR_UNKNOWN, "ERR_UNKNOWN"); - SQGSError.DefSQConst(engine, ScriptError::ERR_PRECONDITION_FAILED, "ERR_PRECONDITION_FAILED"); - SQGSError.DefSQConst(engine, ScriptError::ERR_PRECONDITION_STRING_TOO_LONG, "ERR_PRECONDITION_STRING_TOO_LONG"); - SQGSError.DefSQConst(engine, ScriptError::ERR_PRECONDITION_INVALID_COMPANY, "ERR_PRECONDITION_INVALID_COMPANY"); - SQGSError.DefSQConst(engine, ScriptError::ERR_NEWGRF_SUPPLIED_ERROR, "ERR_NEWGRF_SUPPLIED_ERROR"); - SQGSError.DefSQConst(engine, ScriptError::ERR_GENERAL_BASE, "ERR_GENERAL_BASE"); - SQGSError.DefSQConst(engine, ScriptError::ERR_NOT_ENOUGH_CASH, "ERR_NOT_ENOUGH_CASH"); - SQGSError.DefSQConst(engine, ScriptError::ERR_LOCAL_AUTHORITY_REFUSES, "ERR_LOCAL_AUTHORITY_REFUSES"); - SQGSError.DefSQConst(engine, ScriptError::ERR_ALREADY_BUILT, "ERR_ALREADY_BUILT"); - SQGSError.DefSQConst(engine, ScriptError::ERR_AREA_NOT_CLEAR, "ERR_AREA_NOT_CLEAR"); - SQGSError.DefSQConst(engine, ScriptError::ERR_OWNED_BY_ANOTHER_COMPANY, "ERR_OWNED_BY_ANOTHER_COMPANY"); - SQGSError.DefSQConst(engine, ScriptError::ERR_NAME_IS_NOT_UNIQUE, "ERR_NAME_IS_NOT_UNIQUE"); - SQGSError.DefSQConst(engine, ScriptError::ERR_FLAT_LAND_REQUIRED, "ERR_FLAT_LAND_REQUIRED"); - SQGSError.DefSQConst(engine, ScriptError::ERR_LAND_SLOPED_WRONG, "ERR_LAND_SLOPED_WRONG"); - SQGSError.DefSQConst(engine, ScriptError::ERR_VEHICLE_IN_THE_WAY, "ERR_VEHICLE_IN_THE_WAY"); - SQGSError.DefSQConst(engine, ScriptError::ERR_SITE_UNSUITABLE, "ERR_SITE_UNSUITABLE"); - SQGSError.DefSQConst(engine, ScriptError::ERR_TOO_CLOSE_TO_EDGE, "ERR_TOO_CLOSE_TO_EDGE"); - SQGSError.DefSQConst(engine, ScriptError::ERR_STATION_TOO_SPREAD_OUT, "ERR_STATION_TOO_SPREAD_OUT"); + SQGSError.DefSQConst(engine, ScriptError::ERR_CAT_NONE, "ERR_CAT_NONE"); + SQGSError.DefSQConst(engine, ScriptError::ERR_CAT_GENERAL, "ERR_CAT_GENERAL"); + SQGSError.DefSQConst(engine, ScriptError::ERR_CAT_VEHICLE, "ERR_CAT_VEHICLE"); + SQGSError.DefSQConst(engine, ScriptError::ERR_CAT_STATION, "ERR_CAT_STATION"); + SQGSError.DefSQConst(engine, ScriptError::ERR_CAT_BRIDGE, "ERR_CAT_BRIDGE"); + SQGSError.DefSQConst(engine, ScriptError::ERR_CAT_TUNNEL, "ERR_CAT_TUNNEL"); + SQGSError.DefSQConst(engine, ScriptError::ERR_CAT_TILE, "ERR_CAT_TILE"); + SQGSError.DefSQConst(engine, ScriptError::ERR_CAT_SIGN, "ERR_CAT_SIGN"); + SQGSError.DefSQConst(engine, ScriptError::ERR_CAT_RAIL, "ERR_CAT_RAIL"); + SQGSError.DefSQConst(engine, ScriptError::ERR_CAT_ROAD, "ERR_CAT_ROAD"); + SQGSError.DefSQConst(engine, ScriptError::ERR_CAT_ORDER, "ERR_CAT_ORDER"); + SQGSError.DefSQConst(engine, ScriptError::ERR_CAT_MARINE, "ERR_CAT_MARINE"); + SQGSError.DefSQConst(engine, ScriptError::ERR_CAT_WAYPOINT, "ERR_CAT_WAYPOINT"); + SQGSError.DefSQConst(engine, ScriptError::ERR_CAT_BIT_SIZE, "ERR_CAT_BIT_SIZE"); + SQGSError.DefSQConst(engine, ScriptError::ERR_NONE, "ERR_NONE"); + SQGSError.DefSQConst(engine, ScriptError::ERR_UNKNOWN, "ERR_UNKNOWN"); + SQGSError.DefSQConst(engine, ScriptError::ERR_PRECONDITION_FAILED, "ERR_PRECONDITION_FAILED"); + SQGSError.DefSQConst(engine, ScriptError::ERR_PRECONDITION_STRING_TOO_LONG, "ERR_PRECONDITION_STRING_TOO_LONG"); + SQGSError.DefSQConst(engine, ScriptError::ERR_PRECONDITION_TOO_MANY_PARAMETERS, "ERR_PRECONDITION_TOO_MANY_PARAMETERS"); + SQGSError.DefSQConst(engine, ScriptError::ERR_PRECONDITION_INVALID_COMPANY, "ERR_PRECONDITION_INVALID_COMPANY"); + SQGSError.DefSQConst(engine, ScriptError::ERR_NEWGRF_SUPPLIED_ERROR, "ERR_NEWGRF_SUPPLIED_ERROR"); + SQGSError.DefSQConst(engine, ScriptError::ERR_GENERAL_BASE, "ERR_GENERAL_BASE"); + SQGSError.DefSQConst(engine, ScriptError::ERR_NOT_ENOUGH_CASH, "ERR_NOT_ENOUGH_CASH"); + SQGSError.DefSQConst(engine, ScriptError::ERR_LOCAL_AUTHORITY_REFUSES, "ERR_LOCAL_AUTHORITY_REFUSES"); + SQGSError.DefSQConst(engine, ScriptError::ERR_ALREADY_BUILT, "ERR_ALREADY_BUILT"); + SQGSError.DefSQConst(engine, ScriptError::ERR_AREA_NOT_CLEAR, "ERR_AREA_NOT_CLEAR"); + SQGSError.DefSQConst(engine, ScriptError::ERR_OWNED_BY_ANOTHER_COMPANY, "ERR_OWNED_BY_ANOTHER_COMPANY"); + SQGSError.DefSQConst(engine, ScriptError::ERR_NAME_IS_NOT_UNIQUE, "ERR_NAME_IS_NOT_UNIQUE"); + SQGSError.DefSQConst(engine, ScriptError::ERR_FLAT_LAND_REQUIRED, "ERR_FLAT_LAND_REQUIRED"); + SQGSError.DefSQConst(engine, ScriptError::ERR_LAND_SLOPED_WRONG, "ERR_LAND_SLOPED_WRONG"); + SQGSError.DefSQConst(engine, ScriptError::ERR_VEHICLE_IN_THE_WAY, "ERR_VEHICLE_IN_THE_WAY"); + SQGSError.DefSQConst(engine, ScriptError::ERR_SITE_UNSUITABLE, "ERR_SITE_UNSUITABLE"); + SQGSError.DefSQConst(engine, ScriptError::ERR_TOO_CLOSE_TO_EDGE, "ERR_TOO_CLOSE_TO_EDGE"); + SQGSError.DefSQConst(engine, ScriptError::ERR_STATION_TOO_SPREAD_OUT, "ERR_STATION_TOO_SPREAD_OUT"); ScriptError::RegisterErrorMap(STR_ERROR_NOT_ENOUGH_CASH_REQUIRES_CURRENCY, ScriptError::ERR_NOT_ENOUGH_CASH); ScriptError::RegisterErrorMap(STR_ERROR_LOCAL_AUTHORITY_REFUSES_TO_ALLOW_THIS, ScriptError::ERR_LOCAL_AUTHORITY_REFUSES); @@ -90,24 +91,25 @@ void SQGSError_Register(Squirrel *engine) ScriptError::RegisterErrorMap(STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP, ScriptError::ERR_TOO_CLOSE_TO_EDGE); ScriptError::RegisterErrorMap(STR_ERROR_STATION_TOO_SPREAD_OUT, ScriptError::ERR_STATION_TOO_SPREAD_OUT); - ScriptError::RegisterErrorMapString(ScriptError::ERR_NONE, "ERR_NONE"); - ScriptError::RegisterErrorMapString(ScriptError::ERR_UNKNOWN, "ERR_UNKNOWN"); - ScriptError::RegisterErrorMapString(ScriptError::ERR_PRECONDITION_FAILED, "ERR_PRECONDITION_FAILED"); - ScriptError::RegisterErrorMapString(ScriptError::ERR_PRECONDITION_STRING_TOO_LONG, "ERR_PRECONDITION_STRING_TOO_LONG"); - ScriptError::RegisterErrorMapString(ScriptError::ERR_PRECONDITION_INVALID_COMPANY, "ERR_PRECONDITION_INVALID_COMPANY"); - ScriptError::RegisterErrorMapString(ScriptError::ERR_NEWGRF_SUPPLIED_ERROR, "ERR_NEWGRF_SUPPLIED_ERROR"); - ScriptError::RegisterErrorMapString(ScriptError::ERR_NOT_ENOUGH_CASH, "ERR_NOT_ENOUGH_CASH"); - ScriptError::RegisterErrorMapString(ScriptError::ERR_LOCAL_AUTHORITY_REFUSES, "ERR_LOCAL_AUTHORITY_REFUSES"); - ScriptError::RegisterErrorMapString(ScriptError::ERR_ALREADY_BUILT, "ERR_ALREADY_BUILT"); - ScriptError::RegisterErrorMapString(ScriptError::ERR_AREA_NOT_CLEAR, "ERR_AREA_NOT_CLEAR"); - ScriptError::RegisterErrorMapString(ScriptError::ERR_OWNED_BY_ANOTHER_COMPANY, "ERR_OWNED_BY_ANOTHER_COMPANY"); - ScriptError::RegisterErrorMapString(ScriptError::ERR_NAME_IS_NOT_UNIQUE, "ERR_NAME_IS_NOT_UNIQUE"); - ScriptError::RegisterErrorMapString(ScriptError::ERR_FLAT_LAND_REQUIRED, "ERR_FLAT_LAND_REQUIRED"); - ScriptError::RegisterErrorMapString(ScriptError::ERR_LAND_SLOPED_WRONG, "ERR_LAND_SLOPED_WRONG"); - ScriptError::RegisterErrorMapString(ScriptError::ERR_VEHICLE_IN_THE_WAY, "ERR_VEHICLE_IN_THE_WAY"); - ScriptError::RegisterErrorMapString(ScriptError::ERR_SITE_UNSUITABLE, "ERR_SITE_UNSUITABLE"); - ScriptError::RegisterErrorMapString(ScriptError::ERR_TOO_CLOSE_TO_EDGE, "ERR_TOO_CLOSE_TO_EDGE"); - ScriptError::RegisterErrorMapString(ScriptError::ERR_STATION_TOO_SPREAD_OUT, "ERR_STATION_TOO_SPREAD_OUT"); + ScriptError::RegisterErrorMapString(ScriptError::ERR_NONE, "ERR_NONE"); + ScriptError::RegisterErrorMapString(ScriptError::ERR_UNKNOWN, "ERR_UNKNOWN"); + ScriptError::RegisterErrorMapString(ScriptError::ERR_PRECONDITION_FAILED, "ERR_PRECONDITION_FAILED"); + ScriptError::RegisterErrorMapString(ScriptError::ERR_PRECONDITION_STRING_TOO_LONG, "ERR_PRECONDITION_STRING_TOO_LONG"); + ScriptError::RegisterErrorMapString(ScriptError::ERR_PRECONDITION_TOO_MANY_PARAMETERS, "ERR_PRECONDITION_TOO_MANY_PARAMETERS"); + ScriptError::RegisterErrorMapString(ScriptError::ERR_PRECONDITION_INVALID_COMPANY, "ERR_PRECONDITION_INVALID_COMPANY"); + ScriptError::RegisterErrorMapString(ScriptError::ERR_NEWGRF_SUPPLIED_ERROR, "ERR_NEWGRF_SUPPLIED_ERROR"); + ScriptError::RegisterErrorMapString(ScriptError::ERR_NOT_ENOUGH_CASH, "ERR_NOT_ENOUGH_CASH"); + ScriptError::RegisterErrorMapString(ScriptError::ERR_LOCAL_AUTHORITY_REFUSES, "ERR_LOCAL_AUTHORITY_REFUSES"); + ScriptError::RegisterErrorMapString(ScriptError::ERR_ALREADY_BUILT, "ERR_ALREADY_BUILT"); + ScriptError::RegisterErrorMapString(ScriptError::ERR_AREA_NOT_CLEAR, "ERR_AREA_NOT_CLEAR"); + ScriptError::RegisterErrorMapString(ScriptError::ERR_OWNED_BY_ANOTHER_COMPANY, "ERR_OWNED_BY_ANOTHER_COMPANY"); + ScriptError::RegisterErrorMapString(ScriptError::ERR_NAME_IS_NOT_UNIQUE, "ERR_NAME_IS_NOT_UNIQUE"); + ScriptError::RegisterErrorMapString(ScriptError::ERR_FLAT_LAND_REQUIRED, "ERR_FLAT_LAND_REQUIRED"); + ScriptError::RegisterErrorMapString(ScriptError::ERR_LAND_SLOPED_WRONG, "ERR_LAND_SLOPED_WRONG"); + ScriptError::RegisterErrorMapString(ScriptError::ERR_VEHICLE_IN_THE_WAY, "ERR_VEHICLE_IN_THE_WAY"); + ScriptError::RegisterErrorMapString(ScriptError::ERR_SITE_UNSUITABLE, "ERR_SITE_UNSUITABLE"); + ScriptError::RegisterErrorMapString(ScriptError::ERR_TOO_CLOSE_TO_EDGE, "ERR_TOO_CLOSE_TO_EDGE"); + ScriptError::RegisterErrorMapString(ScriptError::ERR_STATION_TOO_SPREAD_OUT, "ERR_STATION_TOO_SPREAD_OUT"); SQGSError.DefSQStaticMethod(engine, &ScriptError::GetErrorCategory, "GetErrorCategory", 1, "."); SQGSError.DefSQStaticMethod(engine, &ScriptError::GetLastError, "GetLastError", 1, "."); diff --git a/src/script/api/game/game_goal.hpp.sq b/src/script/api/game/game_goal.hpp.sq index 765cc779e..7d8a3bf5e 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"); @@ -53,6 +54,10 @@ void SQGSGoal_Register(Squirrel *engine) SQGSGoal.DefSQStaticMethod(engine, &ScriptGoal::IsValidGoal, "IsValidGoal", 2, ".i"); SQGSGoal.DefSQStaticMethod(engine, &ScriptGoal::New, "New", 5, ".i.ii"); SQGSGoal.DefSQStaticMethod(engine, &ScriptGoal::Remove, "Remove", 2, ".i"); + SQGSGoal.DefSQStaticMethod(engine, &ScriptGoal::SetText, "SetText", 3, ".i."); + SQGSGoal.DefSQStaticMethod(engine, &ScriptGoal::SetProgress, "SetProgress", 3, ".i."); + SQGSGoal.DefSQStaticMethod(engine, &ScriptGoal::SetCompleted, "SetCompleted", 3, ".ib"); + SQGSGoal.DefSQStaticMethod(engine, &ScriptGoal::IsCompleted, "IsCompleted", 2, ".i"); SQGSGoal.DefSQStaticMethod(engine, &ScriptGoal::Question, "Question", 6, ".ii.ii"); SQGSGoal.DefSQStaticMethod(engine, &ScriptGoal::CloseQuestion, "CloseQuestion", 2, ".i"); diff --git a/src/script/api/game/game_rail.hpp.sq b/src/script/api/game/game_rail.hpp.sq index 68c8b3322..c05736030 100644 --- a/src/script/api/game/game_rail.hpp.sq +++ b/src/script/api/game/game_rail.hpp.sq @@ -53,6 +53,9 @@ void SQGSRail_Register(Squirrel *engine) ScriptError::RegisterErrorMap(STR_ERROR_CROSSING_ON_ONEWAY_ROAD, ScriptRail::ERR_CROSSING_ON_ONEWAY_ROAD); ScriptError::RegisterErrorMap(STR_ERROR_NO_SUITABLE_RAILROAD_TRACK, ScriptRail::ERR_UNSUITABLE_TRACK); + ScriptError::RegisterErrorMap(STR_ERROR_THERE_IS_NO_RAILROAD_TRACK, ScriptRail::ERR_UNSUITABLE_TRACK); + ScriptError::RegisterErrorMap(STR_ERROR_THERE_ARE_NO_SIGNALS, ScriptRail::ERR_UNSUITABLE_TRACK); + ScriptError::RegisterErrorMap(STR_ERROR_THERE_IS_NO_STATION, ScriptRail::ERR_UNSUITABLE_TRACK); ScriptError::RegisterErrorMap(STR_ERROR_CROSSING_DISALLOWED, ScriptRail::ERR_RAILTYPE_DISALLOWS_CROSSING); ScriptError::RegisterErrorMapString(ScriptRail::ERR_CROSSING_ON_ONEWAY_ROAD, "ERR_CROSSING_ON_ONEWAY_ROAD"); diff --git a/src/script/api/game/game_station.hpp.sq b/src/script/api/game/game_station.hpp.sq index 9e95d32bf..263ad6ba7 100644 --- a/src/script/api/game/game_station.hpp.sq +++ b/src/script/api/game/game_station.hpp.sq @@ -48,6 +48,10 @@ 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::HasCargoRating, "HasCargoRating", 3, ".ii"); SQGSStation.DefSQStaticMethod(engine, &ScriptStation::GetCargoRating, "GetCargoRating", 3, ".ii"); SQGSStation.DefSQStaticMethod(engine, &ScriptStation::GetCoverageRadius, "GetCoverageRadius", 2, ".i"); SQGSStation.DefSQStaticMethod(engine, &ScriptStation::GetStationCoverageRadius, "GetStationCoverageRadius", 2, ".i"); diff --git a/src/script/api/game/game_story_page.hpp.sq b/src/script/api/game/game_story_page.hpp.sq new file mode 100644 index 000000000..621399bb0 --- /dev/null +++ b/src/script/api/game/game_story_page.hpp.sq @@ -0,0 +1,46 @@ +/* $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_story_page.hpp" +#include "../template/template_story_page.hpp.sq" + + +template <> const char *GetClassName() { return "GSStoryPage"; } + +void SQGSStoryPage_Register(Squirrel *engine) +{ + DefSQClass SQGSStoryPage("GSStoryPage"); + SQGSStoryPage.PreRegister(engine); + SQGSStoryPage.AddConstructor(engine, "x"); + + SQGSStoryPage.DefSQConst(engine, ScriptStoryPage::STORY_PAGE_INVALID, "STORY_PAGE_INVALID"); + SQGSStoryPage.DefSQConst(engine, ScriptStoryPage::STORY_PAGE_ELEMENT_INVALID, "STORY_PAGE_ELEMENT_INVALID"); + SQGSStoryPage.DefSQConst(engine, ScriptStoryPage::SPET_TEXT, "SPET_TEXT"); + SQGSStoryPage.DefSQConst(engine, ScriptStoryPage::SPET_LOCATION, "SPET_LOCATION"); + SQGSStoryPage.DefSQConst(engine, ScriptStoryPage::SPET_GOAL, "SPET_GOAL"); + + SQGSStoryPage.DefSQStaticMethod(engine, &ScriptStoryPage::IsValidStoryPage, "IsValidStoryPage", 2, ".i"); + SQGSStoryPage.DefSQStaticMethod(engine, &ScriptStoryPage::IsValidStoryPageElement, "IsValidStoryPageElement", 2, ".i"); + 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 000000000..5ef3e6ed3 --- /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 000000000..99b25a30a --- /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_tile.hpp.sq b/src/script/api/game/game_tile.hpp.sq index c2d5cb55e..6224919ff 100644 --- a/src/script/api/game/game_tile.hpp.sq +++ b/src/script/api/game/game_tile.hpp.sq @@ -66,6 +66,10 @@ void SQGSTile_Register(Squirrel *engine) SQGSTile.DefSQConst(engine, ScriptTile::BT_CLEAR_ROCKY, "BT_CLEAR_ROCKY"); SQGSTile.DefSQConst(engine, ScriptTile::BT_CLEAR_FIELDS, "BT_CLEAR_FIELDS"); SQGSTile.DefSQConst(engine, ScriptTile::BT_CLEAR_HOUSE, "BT_CLEAR_HOUSE"); + SQGSTile.DefSQConst(engine, ScriptTile::TERRAIN_NORMAL, "TERRAIN_NORMAL"); + SQGSTile.DefSQConst(engine, ScriptTile::TERRAIN_DESERT, "TERRAIN_DESERT"); + SQGSTile.DefSQConst(engine, ScriptTile::TERRAIN_RAINFOREST, "TERRAIN_RAINFOREST"); + SQGSTile.DefSQConst(engine, ScriptTile::TERRAIN_SNOW, "TERRAIN_SNOW"); ScriptError::RegisterErrorMap(STR_ERROR_ALREADY_AT_SEA_LEVEL, ScriptTile::ERR_TILE_TOO_HIGH); ScriptError::RegisterErrorMap(STR_ERROR_ALREADY_AT_SEA_LEVEL, ScriptTile::ERR_TILE_TOO_LOW); @@ -90,6 +94,7 @@ void SQGSTile_Register(Squirrel *engine) SQGSTile.DefSQStaticMethod(engine, &ScriptTile::IsRoughTile, "IsRoughTile", 2, ".i"); SQGSTile.DefSQStaticMethod(engine, &ScriptTile::IsSnowTile, "IsSnowTile", 2, ".i"); SQGSTile.DefSQStaticMethod(engine, &ScriptTile::IsDesertTile, "IsDesertTile", 2, ".i"); + SQGSTile.DefSQStaticMethod(engine, &ScriptTile::GetTerrainType, "GetTerrainType", 2, ".i"); SQGSTile.DefSQStaticMethod(engine, &ScriptTile::GetSlope, "GetSlope", 2, ".i"); SQGSTile.DefSQStaticMethod(engine, &ScriptTile::GetComplementSlope, "GetComplementSlope", 2, ".i"); SQGSTile.DefSQStaticMethod(engine, &ScriptTile::GetMinHeight, "GetMinHeight", 2, ".i"); diff --git a/src/script/api/game/game_town.hpp.sq b/src/script/api/game/game_town.hpp.sq index ddd80c59d..30eec6928 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 51a281553..44d300c27 100644 --- a/src/script/api/game/game_window.hpp.sq +++ b/src/script/api/game/game_window.hpp.sq @@ -76,6 +76,7 @@ void SQGSWindow_Register(Squirrel *engine) SQGSWindow.DefSQConst(engine, ScriptWindow::WC_SIGN_LIST, "WC_SIGN_LIST"); SQGSWindow.DefSQConst(engine, ScriptWindow::WC_AI_LIST, "WC_AI_LIST"); SQGSWindow.DefSQConst(engine, ScriptWindow::WC_GOALS_LIST, "WC_GOALS_LIST"); + SQGSWindow.DefSQConst(engine, ScriptWindow::WC_STORY_BOOK, "WC_STORY_BOOK"); SQGSWindow.DefSQConst(engine, ScriptWindow::WC_STATION_LIST, "WC_STATION_LIST"); SQGSWindow.DefSQConst(engine, ScriptWindow::WC_TRAINS_LIST, "WC_TRAINS_LIST"); SQGSWindow.DefSQConst(engine, ScriptWindow::WC_ROADVEH_LIST, "WC_ROADVEH_LIST"); @@ -135,6 +136,8 @@ void SQGSWindow_Register(Squirrel *engine) SQGSWindow.DefSQConst(engine, ScriptWindow::WC_AI_DEBUG, "WC_AI_DEBUG"); 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"); @@ -452,8 +455,6 @@ 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_START_DATE_DOWN, "WID_GL_START_DATE_DOWN"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_GL_START_DATE_TEXT, "WID_GL_START_DATE_TEXT"); @@ -493,8 +494,9 @@ void SQGSWindow_Register(Squirrel *engine) SQGSWindow.DefSQConst(engine, ScriptWindow::WID_GP_PROGRESS_BAR, "WID_GP_PROGRESS_BAR"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_GP_PROGRESS_TEXT, "WID_GP_PROGRESS_TEXT"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_GP_ABORT, "WID_GP_ABORT"); - SQGSWindow.DefSQConst(engine, ScriptWindow::WID_GL_PANEL, "WID_GL_PANEL"); - SQGSWindow.DefSQConst(engine, ScriptWindow::WID_GL_SCROLLBAR, "WID_GL_SCROLLBAR"); + SQGSWindow.DefSQConst(engine, ScriptWindow::WID_GOAL_CAPTION, "WID_GOAL_CAPTION"); + SQGSWindow.DefSQConst(engine, ScriptWindow::WID_GOAL_LIST, "WID_GOAL_LIST"); + SQGSWindow.DefSQConst(engine, ScriptWindow::WID_GOAL_SCROLLBAR, "WID_GOAL_SCROLLBAR"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_GQ_CAPTION, "WID_GQ_CAPTION"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_GQ_QUESTION, "WID_GQ_QUESTION"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_GQ_BUTTONS, "WID_GQ_BUTTONS"); @@ -583,6 +585,20 @@ void SQGSWindow_Register(Squirrel *engine) SQGSWindow.DefSQConst(engine, ScriptWindow::WID_SGI_CONTENT_DOWNLOAD, "WID_SGI_CONTENT_DOWNLOAD"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_SGI_AI_SETTINGS, "WID_SGI_AI_SETTINGS"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_SGI_EXIT, "WID_SGI_EXIT"); + SQGSWindow.DefSQConst(engine, ScriptWindow::WID_LGL_CAPTION, "WID_LGL_CAPTION"); + SQGSWindow.DefSQConst(engine, ScriptWindow::WID_LGL_SATURATION, "WID_LGL_SATURATION"); + SQGSWindow.DefSQConst(engine, ScriptWindow::WID_LGL_SATURATION_FIRST, "WID_LGL_SATURATION_FIRST"); + SQGSWindow.DefSQConst(engine, ScriptWindow::WID_LGL_SATURATION_LAST, "WID_LGL_SATURATION_LAST"); + SQGSWindow.DefSQConst(engine, ScriptWindow::WID_LGL_COMPANIES, "WID_LGL_COMPANIES"); + SQGSWindow.DefSQConst(engine, ScriptWindow::WID_LGL_COMPANY_FIRST, "WID_LGL_COMPANY_FIRST"); + SQGSWindow.DefSQConst(engine, ScriptWindow::WID_LGL_COMPANY_LAST, "WID_LGL_COMPANY_LAST"); + SQGSWindow.DefSQConst(engine, ScriptWindow::WID_LGL_COMPANIES_ALL, "WID_LGL_COMPANIES_ALL"); + SQGSWindow.DefSQConst(engine, ScriptWindow::WID_LGL_COMPANIES_NONE, "WID_LGL_COMPANIES_NONE"); + SQGSWindow.DefSQConst(engine, ScriptWindow::WID_LGL_CARGOES, "WID_LGL_CARGOES"); + SQGSWindow.DefSQConst(engine, ScriptWindow::WID_LGL_CARGO_FIRST, "WID_LGL_CARGO_FIRST"); + SQGSWindow.DefSQConst(engine, ScriptWindow::WID_LGL_CARGO_LAST, "WID_LGL_CARGO_LAST"); + SQGSWindow.DefSQConst(engine, ScriptWindow::WID_LGL_CARGOES_ALL, "WID_LGL_CARGOES_ALL"); + SQGSWindow.DefSQConst(engine, ScriptWindow::WID_LGL_CARGOES_NONE, "WID_LGL_CARGOES_NONE"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_M_VIEWPORT, "WID_M_VIEWPORT"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_LI_BACKGROUND, "WID_LI_BACKGROUND"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_TT_BACKGROUND, "WID_TT_BACKGROUND"); @@ -598,6 +614,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"); @@ -655,6 +672,7 @@ void SQGSWindow_Register(Squirrel *engine) SQGSWindow.DefSQConst(engine, ScriptWindow::WID_NCL_CANCEL, "WID_NCL_CANCEL"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_NCL_DOWNLOAD, "WID_NCL_DOWNLOAD"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_NCL_SEL_ALL_UPDATE, "WID_NCL_SEL_ALL_UPDATE"); + SQGSWindow.DefSQConst(engine, ScriptWindow::WID_NCL_SEARCH_EXTERNAL, "WID_NCL_SEARCH_EXTERNAL"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_NG_MAIN, "WID_NG_MAIN"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_NG_CONNECTION, "WID_NG_CONNECTION"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_NG_CONN_BTN, "WID_NG_CONN_BTN"); @@ -734,6 +752,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"); @@ -767,6 +788,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"); @@ -786,6 +808,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"); @@ -901,6 +928,7 @@ void SQGSWindow_Register(Squirrel *engine) SQGSWindow.DefSQConst(engine, ScriptWindow::WID_BRAS_MATRIX, "WID_BRAS_MATRIX"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_BRAS_IMAGE, "WID_BRAS_IMAGE"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_BRAS_MATRIX_SCROLL, "WID_BRAS_MATRIX_SCROLL"); + SQGSWindow.DefSQConst(engine, ScriptWindow::WID_BRAS_SHOW_NEWST_DEFSIZE, "WID_BRAS_SHOW_NEWST_DEFSIZE"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_BRAS_SHOW_NEWST_ADDITIONS, "WID_BRAS_SHOW_NEWST_ADDITIONS"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_BRAS_SHOW_NEWST_MATRIX, "WID_BRAS_SHOW_NEWST_MATRIX"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_BRAS_SHOW_NEWST_RESIZE, "WID_BRAS_SHOW_NEWST_RESIZE"); @@ -968,7 +996,6 @@ 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_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"); @@ -986,7 +1013,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"); @@ -1019,11 +1047,13 @@ void SQGSWindow_Register(Squirrel *engine) SQGSWindow.DefSQConst(engine, ScriptWindow::WID_SM_MAP_BORDER, "WID_SM_MAP_BORDER"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_SM_MAP, "WID_SM_MAP"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_SM_LEGEND, "WID_SM_LEGEND"); + SQGSWindow.DefSQConst(engine, ScriptWindow::WID_SM_BLANK, "WID_SM_BLANK"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_SM_ZOOM_IN, "WID_SM_ZOOM_IN"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_SM_ZOOM_OUT, "WID_SM_ZOOM_OUT"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_SM_CONTOUR, "WID_SM_CONTOUR"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_SM_VEHICLES, "WID_SM_VEHICLES"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_SM_INDUSTRIES, "WID_SM_INDUSTRIES"); + SQGSWindow.DefSQConst(engine, ScriptWindow::WID_SM_LINKSTATS, "WID_SM_LINKSTATS"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_SM_ROUTES, "WID_SM_ROUTES"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_SM_VEGETATION, "WID_SM_VEGETATION"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_SM_OWNERS, "WID_SM_OWNERS"); @@ -1034,6 +1064,10 @@ void SQGSWindow_Register(Squirrel *engine) SQGSWindow.DefSQConst(engine, ScriptWindow::WID_SM_DISABLE_ALL, "WID_SM_DISABLE_ALL"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_SM_SHOW_HEIGHT, "WID_SM_SHOW_HEIGHT"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_SV_CAPTION, "WID_SV_CAPTION"); + SQGSWindow.DefSQConst(engine, ScriptWindow::WID_SV_SORT_ORDER, "WID_SV_SORT_ORDER"); + SQGSWindow.DefSQConst(engine, ScriptWindow::WID_SV_SORT_BY, "WID_SV_SORT_BY"); + SQGSWindow.DefSQConst(engine, ScriptWindow::WID_SV_GROUP, "WID_SV_GROUP"); + SQGSWindow.DefSQConst(engine, ScriptWindow::WID_SV_GROUP_BY, "WID_SV_GROUP_BY"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_SV_WAITING, "WID_SV_WAITING"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_SV_SCROLLBAR, "WID_SV_SCROLLBAR"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_SV_ACCEPT_RATING_LIST, "WID_SV_ACCEPT_RATING_LIST"); @@ -1065,6 +1099,12 @@ void SQGSWindow_Register(Squirrel *engine) SQGSWindow.DefSQConst(engine, ScriptWindow::WID_S_LEFT, "WID_S_LEFT"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_S_MIDDLE, "WID_S_MIDDLE"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_S_RIGHT, "WID_S_RIGHT"); + SQGSWindow.DefSQConst(engine, ScriptWindow::WID_SB_CAPTION, "WID_SB_CAPTION"); + SQGSWindow.DefSQConst(engine, ScriptWindow::WID_SB_SEL_PAGE, "WID_SB_SEL_PAGE"); + SQGSWindow.DefSQConst(engine, ScriptWindow::WID_SB_PAGE_PANEL, "WID_SB_PAGE_PANEL"); + SQGSWindow.DefSQConst(engine, ScriptWindow::WID_SB_SCROLLBAR, "WID_SB_SCROLLBAR"); + SQGSWindow.DefSQConst(engine, ScriptWindow::WID_SB_PREV_PAGE, "WID_SB_PREV_PAGE"); + SQGSWindow.DefSQConst(engine, ScriptWindow::WID_SB_NEXT_PAGE, "WID_SB_NEXT_PAGE"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_SUL_PANEL, "WID_SUL_PANEL"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_SUL_SCROLLBAR, "WID_SUL_SCROLLBAR"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_TT_SHOW_PLACE_OBJECT, "WID_TT_SHOW_PLACE_OBJECT"); @@ -1120,6 +1160,8 @@ void SQGSWindow_Register(Squirrel *engine) SQGSWindow.DefSQConst(engine, ScriptWindow::WID_TN_STATIONS, "WID_TN_STATIONS"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_TN_FINANCES, "WID_TN_FINANCES"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_TN_COMPANIES, "WID_TN_COMPANIES"); + SQGSWindow.DefSQConst(engine, ScriptWindow::WID_TN_STORY, "WID_TN_STORY"); + SQGSWindow.DefSQConst(engine, ScriptWindow::WID_TN_GOAL, "WID_TN_GOAL"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_TN_GRAPHS, "WID_TN_GRAPHS"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_TN_LEAGUE, "WID_TN_LEAGUE"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_TN_INDUSTRIES, "WID_TN_INDUSTRIES"); @@ -1162,8 +1204,8 @@ void SQGSWindow_Register(Squirrel *engine) SQGSWindow.DefSQConst(engine, ScriptWindow::WID_TE_MUSIC_SOUND, "WID_TE_MUSIC_SOUND"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_TE_HELP, "WID_TE_HELP"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_TE_SWITCH_BAR, "WID_TE_SWITCH_BAR"); - SQGSWindow.DefSQConst(engine, ScriptWindow::WID_TD_SORT_NAME, "WID_TD_SORT_NAME"); - SQGSWindow.DefSQConst(engine, ScriptWindow::WID_TD_SORT_POPULATION, "WID_TD_SORT_POPULATION"); + SQGSWindow.DefSQConst(engine, ScriptWindow::WID_TD_SORT_ORDER, "WID_TD_SORT_ORDER"); + SQGSWindow.DefSQConst(engine, ScriptWindow::WID_TD_SORT_CRITERIA, "WID_TD_SORT_CRITERIA"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_TD_LIST, "WID_TD_LIST"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_TD_SCROLLBAR, "WID_TD_SCROLLBAR"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_TD_WORLD_POPULATION, "WID_TD_WORLD_POPULATION"); @@ -1249,6 +1291,7 @@ void SQGSWindow_Register(Squirrel *engine) SQGSWindow.DefSQConst(engine, ScriptWindow::WID_VD_TOP_DETAILS, "WID_VD_TOP_DETAILS"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_VD_INCREASE_SERVICING_INTERVAL, "WID_VD_INCREASE_SERVICING_INTERVAL"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_VD_DECREASE_SERVICING_INTERVAL, "WID_VD_DECREASE_SERVICING_INTERVAL"); + SQGSWindow.DefSQConst(engine, ScriptWindow::WID_VD_SERVICE_INTERVAL_DROPDOWN, "WID_VD_SERVICE_INTERVAL_DROPDOWN"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_VD_SERVICING_INTERVAL, "WID_VD_SERVICING_INTERVAL"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_VD_MIDDLE_DETAILS, "WID_VD_MIDDLE_DETAILS"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_VD_MATRIX, "WID_VD_MATRIX"); diff --git a/src/script/api/game_changelog.hpp b/src/script/api/game_changelog.hpp index bb61f5d62..6f1a93b52 100644 --- a/src/script/api/game_changelog.hpp +++ b/src/script/api/game_changelog.hpp @@ -15,9 +15,61 @@ * functions may still be available if you return an older API version * in GetAPIVersion() in info.nut. * - * \b 1.3.0 + * \b 1.5.0 + * + * 1.5.0 is not yet released. The following changes are not set in stone yet. + * + * API additions: + * \li GSStation::GetCargoWaitingFromVia + * + * 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.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 * - * 1.3.0 is not yet released. The following changes are not set in stone yet. + * No changes + * + * \b 1.3.2 + * + * No changes + * + * \b 1.3.1 + * + * API additions: + * \li GSTile::GetTerrainType + * + * \b 1.3.0 * * API additions: * \li GSCargoMonitor @@ -31,6 +83,9 @@ * \li GSController::Break * \li GSIndustryType::BuildIndustry, GSIndustryType::CanBuildIndustry, GSIndustryType::ProspectIndustry and GSIndustryType::CanProspectIndustry when outside GSCompanyMode scope * + * Other changes: + * \li Company specific goals are now removed when a company goes bankrupt or is taken over. + * * \b 1.2.3 * * No changes diff --git a/src/script/api/script_accounting.cpp b/src/script/api/script_accounting.cpp index dfe05df3b..e6fddf9e8 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 3625fb458..feecd11db 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,7 +31,7 @@ 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; } diff --git a/src/script/api/script_admin.hpp b/src/script/api/script_admin.hpp index 9733e5b9e..48126eac0 100644 --- a/src/script/api/script_admin.hpp +++ b/src/script/api/script_admin.hpp @@ -36,7 +36,7 @@ class ScriptAdmin : public ScriptObject { * @note If the resulting JSON of your table is larger than 1450 bytes, * nothing will be sent (and false will be returned). */ - static bool Send(table); + static bool Send(void *table); #endif /* DOXYGEN_API */ private: diff --git a/src/script/api/script_airport.cpp b/src/script/api/script_airport.cpp index 438a18ae9..edb912609 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_airport.hpp b/src/script/api/script_airport.hpp index ddf51860a..e4c0a217d 100644 --- a/src/script/api/script_airport.hpp +++ b/src/script/api/script_airport.hpp @@ -125,11 +125,11 @@ class ScriptAirport : public ScriptObject { static int32 GetNumHangars(TileIndex tile); /** - * Get the first hanger tile of the airport. + * Get the first hangar tile of the airport. * @param tile Any tile of the airport. * @pre ScriptMap::IsValidTile(tile). * @pre GetNumHangars(tile) > 0. - * @return The first hanger tile of the airport. + * @return The first hangar tile of the airport. * @note Possible there are more hangars, but you won't be able to find them * without walking over all the tiles of the airport and using * IsHangarTile() on them. diff --git a/src/script/api/script_base.cpp b/src/script/api/script_base.cpp index 2472fe1c7..5b2d550b8 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) @@ -44,7 +46,7 @@ /* static */ bool ScriptBase::Chance(uint out, uint max) { EnforcePrecondition(false, out <= max); - return (uint16)Rand() <= (uint16)((65535 * out) / max); + return ScriptBase::RandRange(max) < out; } /* static */ bool ScriptBase::ChanceItem(int unused_param, uint out, uint max) diff --git a/src/script/api/script_base.hpp b/src/script/api/script_base.hpp index a01325820..936dee77d 100644 --- a/src/script/api/script_base.hpp +++ b/src/script/api/script_base.hpp @@ -70,6 +70,7 @@ class ScriptBase : public ScriptObject { * @param unused_param This parameter is not used, but is needed to work with lists. * @param out How many times it should return true. * @param max Out of this many times. + * @pre \a out is at most equal to \a max. * @return True if the chance worked out. */ static bool ChanceItem(int unused_param, uint out, uint max); diff --git a/src/script/api/script_basestation.cpp b/src/script/api/script_basestation.cpp index d1bcf6f6d..229abf865 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); @@ -38,8 +40,8 @@ EnforcePrecondition(false, ScriptObject::GetCompany() != OWNER_DEITY); EnforcePrecondition(false, IsValidBaseStation(station_id)); EnforcePrecondition(false, name != NULL); - const char *text = name->GetEncodedText(); - EnforcePrecondition(false, !::StrEmpty(text)); + const char *text = name->GetDecodedText(); + EnforcePreconditionEncodedText(false, text); EnforcePreconditionCustomError(false, ::Utf8StringLength(text) < MAX_LENGTH_STATION_NAME_CHARS, ScriptError::ERR_PRECONDITION_STRING_TOO_LONG); return ScriptObject::DoCommand(0, station_id, 0, ::Station::IsValidID(station_id) ? CMD_RENAME_STATION : CMD_RENAME_WAYPOINT, text); @@ -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 e61028079..9676829f6 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 @@ class ScriptBaseStation : public ScriptObject { * @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 8cd11b311..45bec466c 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 8a00206fd..e06928596 100644 --- a/src/script/api/script_bridge.hpp +++ b/src/script/api/script_bridge.hpp @@ -133,7 +133,8 @@ class ScriptBridge : public ScriptObject { * @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 9687663e9..0969342ec 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 e8268b6bb..a2643f897 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 f4e430362..9d409e191 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 @@ class ScriptCargo : public ScriptObject { 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. @@ -121,6 +132,13 @@ class ScriptCargo : public ScriptObject { * @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 08f705d60..b96cd721e 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 e19821bba..3cb9b4a8e 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 aa06a8f4a..175936db2 100644 --- a/src/script/api/script_cargomonitor.hpp +++ b/src/script/api/script_cargomonitor.hpp @@ -37,7 +37,8 @@ * The latter get added at the moment the cargo is delivered. This prevents users from getting credit for * picking up cargo without delivering it. * - * The active monitors are saved and loaded. You can reset to the empty state with #StopAllMonitoring. + * The active monitors are saved and loaded. Upon bankruptcy or company takeover, the cargo monitors are + * automatically stopped for that company. You can reset to the empty state with #StopAllMonitoring. * * @api game */ @@ -49,9 +50,10 @@ class ScriptCargoMonitor : public ScriptObject { * @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. @@ -59,9 +61,10 @@ class ScriptCargoMonitor : public ScriptObject { * @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. @@ -69,10 +72,11 @@ class ScriptCargoMonitor : public ScriptObject { * @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. @@ -80,10 +84,11 @@ class ScriptCargoMonitor : public ScriptObject { * @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 8e19904f9..a5fecf8ea 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) { @@ -43,8 +46,8 @@ CCountedPtr counter(name); EnforcePrecondition(false, name != NULL); - const char *text = name->GetEncodedText(); - EnforcePrecondition(false, !::StrEmpty(text)); + const char *text = name->GetDecodedText(); + EnforcePreconditionEncodedText(false, text); EnforcePreconditionCustomError(false, ::Utf8StringLength(text) < MAX_LENGTH_COMPANY_NAME_CHARS, ScriptError::ERR_PRECONDITION_STRING_TOO_LONG); return ScriptObject::DoCommand(0, 0, 0, CMD_RENAME_COMPANY, text); @@ -64,8 +67,9 @@ CCountedPtr counter(name); EnforcePrecondition(false, name != NULL); - const char *text = name->GetEncodedText(); - EnforcePrecondition(false, !::StrEmpty(text)); + const char *text = name->GetDecodedText(); + EnforcePreconditionEncodedText(false, text); + EnforcePreconditionCustomError(false, ::Utf8StringLength(text) < MAX_LENGTH_PRESIDENT_NAME_CHARS, ScriptError::ERR_PRECONDITION_STRING_TOO_LONG); return ScriptObject::DoCommand(0, 0, 0, CMD_RENAME_PRESIDENT, text); } @@ -192,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); @@ -207,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()); @@ -222,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, delta >= INT32_MIN); + EnforcePrecondition(false, 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); @@ -265,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 6fcf01d0f..532793081 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 @@ class ScriptCompany : public ScriptObject { 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 @@ class ScriptCompany : public ScriptObject { * @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 @@ class ScriptCompany : public ScriptObject { * @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,21 @@ class ScriptCompany : public ScriptObject { */ 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. + * @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; @@ -172,13 +209,13 @@ class ScriptCompany : public ScriptObject { * @param quarter The quarter to get the income of. * @pre ResolveCompanyID(company) != COMPANY_INVALID. * @pre quarter <= EARLIEST_QUARTER. - * @return The bruto income of the company in the given quarter. + * @return The gross income of the company in the given quarter. */ static Money GetQuarterlyIncome(CompanyID company, uint32 quarter); /** * Get the expenses of the company in the given quarter. - * Note that this function only considers recurring expensens from vehicle + * Note that this function only considers recurring expenses from vehicle * running cost, maintenance and interests; it does not include one-time * expenses from construction and buying stuff. * @param company The company to get the quarterly expenses of. @@ -223,7 +260,7 @@ class ScriptCompany : public ScriptObject { /** * Build your company's HQ on the given tile. - * @param tile The tile to build your HQ on, this tile is the most nothern tile of your HQ. + * @param tile The tile to build your HQ on, this tile is the most northern tile of your HQ. * @pre ScriptMap::IsValidTile(tile). * @game @pre Valid ScriptCompanyMode active in scope. * @exception ScriptError::ERR_AREA_NOT_CLEAR @@ -238,7 +275,7 @@ class ScriptCompany : public ScriptObject { * Return the location of a company's HQ. * @param company The company the get the HQ of. * @pre ResolveCompanyID(company) != COMPANY_INVALID. - * @return The tile of the company's HQ, this tile is the most nothern tile + * @return The tile of the company's HQ, this tile is the most northern tile * of that HQ, or ScriptMap::TILE_INVALID if there is no HQ yet. */ static TileIndex GetCompanyHQ(CompanyID company); @@ -279,9 +316,11 @@ class ScriptCompany : public ScriptObject { * 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 +328,7 @@ class ScriptCompany : public ScriptObject { * @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 bf6da493c..1931a5db7 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 7ca0c7d46..65e542c02 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,13 +115,13 @@ 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); + seprintf(error, lastof(error), "couldn't find library '%s' with version %d", library, version); throw sq_throwerror(vm, OTTD2SQ(error)); } @@ -131,12 +133,12 @@ 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); @@ -145,14 +147,14 @@ ScriptController::~ScriptController() /* 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); + seprintf(error, lastof(error), "there was a compile error when importing '%s' version %d", library, version); throw sq_throwerror(vm, OTTD2SQ(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') */ @@ -164,7 +166,7 @@ ScriptController::~ScriptController() sq_pushstring(vm, OTTD2SQ(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); + seprintf(error, lastof(error), "unable to find class '%s' in the library '%s' version %d", lib->GetInstanceName(), library, version); throw sq_throwerror(vm, OTTD2SQ(error)); } HSQOBJECT obj; diff --git a/src/script/api/script_controller.hpp b/src/script/api/script_controller.hpp index f9eeed71b..10fd48dcd 100644 --- a/src/script/api/script_controller.hpp +++ b/src/script/api/script_controller.hpp @@ -127,9 +127,10 @@ class ScriptController { /** * 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 specificly. + * @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. * @note This command can be called from the global space, and does not need an instance. */ diff --git a/src/script/api/script_date.cpp b/src/script/api/script_date.cpp index 1f80b40d7..2f5b39963 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 488e35eda..b402b0a2b 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 @@ class ScriptDate : public ScriptObject { * 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 @@ class ScriptDate : public ScriptObject { * @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 7adbe8a28..05bb4ccd0 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 a34d0910f..1fe16321b 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 c5525baa2..5f703e159 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. @@ -174,7 +175,7 @@ class ScriptEngine : public ScriptObject { * @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. @@ -255,7 +256,7 @@ class ScriptEngine : public ScriptObject { /** * Get the maximum allowed distance between two orders for an engine. - * The distance returned is a vehicle-type specific distance indepenent from other + * The distance returned is a vehicle-type specific distance independent from other * map distances, you may use the result of this function to compare it * with the result of ScriptOrder::GetOrderDistance. * @param engine_id The engine to get the max distance for. diff --git a/src/script/api/script_enginelist.cpp b/src/script/api/script_enginelist.cpp index b6143a20e..99ab9537b 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 46d287f77..d30ad9c66 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_error.hpp b/src/script/api/script_error.hpp index ccbd8b176..1817cdb7d 100644 --- a/src/script/api/script_error.hpp +++ b/src/script/api/script_error.hpp @@ -38,6 +38,21 @@ return returnval; \ } +/** + * Helper to write precondition enforcers for the script API in an abbreviated manner for encoded texts. + * @param returnval The value to return on failure. + * @param string The string that is checked. + */ +#define EnforcePreconditionEncodedText(returnval, string) \ + if ((string) == NULL) { \ + ScriptObject::SetLastError(ScriptError::ERR_PRECONDITION_TOO_MANY_PARAMETERS); \ + return returnval; \ + } \ + if (StrEmpty(string)) { \ + ScriptObject::SetLastError(ScriptError::ERR_PRECONDITION_FAILED); \ + return returnval; \ + } + /** * Class that handles all error related functions. * @api ai game @@ -81,6 +96,8 @@ class ScriptError : public ScriptObject { ERR_PRECONDITION_FAILED, // [] /** A string supplied was too long */ ERR_PRECONDITION_STRING_TOO_LONG, // [] + /** A string had too many parameters */ + ERR_PRECONDITION_TOO_MANY_PARAMETERS, // [] /** The company you use is invalid */ ERR_PRECONDITION_INVALID_COMPANY, // [] /** An error returned by a NewGRF. No possibility to get the exact error in an script readable format */ @@ -129,7 +146,7 @@ class ScriptError : public ScriptObject { /** * Check the membership of the last thrown error. * @return The category the error belongs to. - * @note The last throw error can be aquired by calling GetLastError(). + * @note The last throw error can be acquired by calling GetLastError(). */ static ErrorCategories GetErrorCategory(); diff --git a/src/script/api/script_event.cpp b/src/script/api/script_event.cpp index d7d19863f..0e711ca41 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 0e1683440..277ce22ec 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; } @@ -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 f7b58c5ce..943016897 100644 --- a/src/script/api/script_event_types.hpp +++ b/src/script/api/script_event_types.hpp @@ -141,7 +141,7 @@ class ScriptEventSubsidyOfferExpired : public ScriptEvent { }; /** - * Event Subidy Awarded, indicating a subsidy is awarded to some company. + * Event Subsidy Awarded, indicating a subsidy is awarded to some company. * @api ai game */ class ScriptEventSubsidyAwarded : public ScriptEvent { @@ -168,7 +168,7 @@ class ScriptEventSubsidyAwarded : public ScriptEvent { SubsidyID GetSubsidyID() { return this->subsidy_id; } private: - SubsidyID subsidy_id; ///< The subsidy that was awared. + SubsidyID subsidy_id; ///< The subsidy that was awarded. }; /** @@ -412,7 +412,7 @@ class ScriptEventCompanyMerger : public ScriptEvent { public: /** * @param old_owner The company bought off. - * @param new_owner The company that bougth owner. + * @param new_owner The company that bought owner. */ ScriptEventCompanyMerger(Owner old_owner, Owner new_owner) : ScriptEvent(ET_COMPANY_MERGER), @@ -432,7 +432,7 @@ class ScriptEventCompanyMerger : public ScriptEvent { * @return The CompanyID of the company that has been bought. * @note: The value below is not valid anymore as CompanyID, and * ScriptCompany::ResolveCompanyID will return COMPANY_COMPANY. It's - * only usefull if you're keeping track of company's yourself. + * only useful if you're keeping track of company's yourself. */ ScriptCompany::CompanyID GetOldCompanyID() { return this->old_owner; } @@ -700,7 +700,7 @@ class ScriptEventStationFirstVehicle : public ScriptEvent { VehicleID GetVehicleID() { return this->vehicle; } private: - StationID station; ///< The station the vehicle arived at. + StationID station; ///< The station the vehicle arrived at. VehicleID vehicle; ///< The vehicle that arrived at the station. }; @@ -839,15 +839,8 @@ class ScriptEventAdminPort : public ScriptEvent { /** * @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 fe2ac3d7c..4fb0cc7e2 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_execmode.hpp b/src/script/api/script_execmode.hpp index 1ac756553..6591399d3 100644 --- a/src/script/api/script_execmode.hpp +++ b/src/script/api/script_execmode.hpp @@ -25,7 +25,7 @@ class ScriptExecMode : public ScriptObject { private: ScriptModeProc *last_mode; ///< The previous mode we were in. - ScriptObject *last_instance; ///< The previous instace of the mode. + ScriptObject *last_instance; ///< The previous instance of the mode. protected: /** diff --git a/src/script/api/script_game.cpp b/src/script/api/script_game.cpp index f0aeb191f..c24757a3c 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_game.hpp b/src/script/api/script_game.hpp index 3b66ba1f8..3531c9de8 100644 --- a/src/script/api/script_game.hpp +++ b/src/script/api/script_game.hpp @@ -26,7 +26,7 @@ class ScriptGame : public ScriptObject { */ enum LandscapeType { /* Note: these values represent part of the in-game LandscapeType enum */ - LT_TEMPERATE = ::LT_TEMPERATE, ///< Temperate climiate. + LT_TEMPERATE = ::LT_TEMPERATE, ///< Temperate climate. LT_ARCTIC = ::LT_ARCTIC, ///< Arctic climate. LT_TROPIC = ::LT_TROPIC, ///< Tropic climate. LT_TOYLAND = ::LT_TOYLAND, ///< Toyland climate. diff --git a/src/script/api/script_gamesettings.cpp b/src/script/api/script_gamesettings.cpp index ed284ae59..1f8ded877 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_gamesettings.hpp b/src/script/api/script_gamesettings.hpp index ad718f3ef..6f92ca758 100644 --- a/src/script/api/script_gamesettings.hpp +++ b/src/script/api/script_gamesettings.hpp @@ -43,7 +43,7 @@ class ScriptGameSettings : public ScriptObject { * @warning Results of this function are not governed by the API. This means * that a setting that previously existed can be gone or has * changed its name. - * @note Results achieved in the past offer no gurantee for the future. + * @note Results achieved in the past offer no guarantee for the future. * @return True if and only if the setting is valid. */ static bool IsValid(const char *setting); @@ -56,7 +56,7 @@ class ScriptGameSettings : public ScriptObject { * that the value of settings may be out of the expected range. It * also means that a setting that previously existed can be gone or * has changed its name/characteristics. - * @note Results achieved in the past offer no gurantee for the future. + * @note Results achieved in the past offer no guarantee for the future. * @return The value for the setting. */ static int32 GetValue(const char *setting); @@ -67,7 +67,7 @@ class ScriptGameSettings : public ScriptObject { * @param value The value to set the setting to. * @pre IsValid(setting). * @return True if the action succeeded. - * @note Results achieved in the past offer no gurantee for the future. + * @note Results achieved in the past offer no guarantee for the future. * @api -ai */ static bool SetValue(const char *setting, int value); diff --git a/src/script/api/script_goal.cpp b/src/script/api/script_goal.cpp index 8e9dcbff8..5153e0ef0 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); @@ -30,14 +33,23 @@ EnforcePrecondition(GOAL_INVALID, ScriptObject::GetCompany() == OWNER_DEITY); EnforcePrecondition(GOAL_INVALID, goal != NULL); - EnforcePrecondition(GOAL_INVALID, !StrEmpty(goal->GetEncodedText())); + 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, goal->GetEncodedText(), &ScriptInstance::DoCommandReturnGoalID)) return GOAL_INVALID; + if (!ScriptObject::DoCommand(0, type | (c << 8), destination, CMD_CREATE_GOAL, text, &ScriptInstance::DoCommandReturnGoalID)) return GOAL_INVALID; /* In case of test-mode, we return GoalID 0 */ return (ScriptGoal::GoalID)0; @@ -51,22 +63,67 @@ return ScriptObject::DoCommand(0, goal_id, 0, CMD_REMOVE_GOAL); } +/* static */ bool ScriptGoal::SetText(GoalID goal_id, Text *goal) +{ + CCountedPtr counter(goal); + + EnforcePrecondition(false, IsValidGoal(goal_id)); + EnforcePrecondition(false, ScriptObject::GetCompany() == OWNER_DEITY); + EnforcePrecondition(false, goal != NULL); + EnforcePrecondition(false, !StrEmpty(goal->GetEncodedText())); + + return ScriptObject::DoCommand(0, goal_id, 0, CMD_SET_GOAL_TEXT, goal->GetEncodedText()); +} + +/* static */ bool ScriptGoal::SetProgress(GoalID goal_id, Text *progress) +{ + CCountedPtr counter(progress); + + EnforcePrecondition(false, IsValidGoal(goal_id)); + EnforcePrecondition(false, ScriptObject::GetCompany() == OWNER_DEITY); + + /* Ensure null as used for emtpy string. */ + if (progress != NULL && StrEmpty(progress->GetEncodedText())) { + progress = NULL; + } + + return ScriptObject::DoCommand(0, goal_id, 0, CMD_SET_GOAL_PROGRESS, progress != NULL ? progress->GetEncodedText() : NULL); +} + +/* static */ bool ScriptGoal::SetCompleted(GoalID goal_id, bool completed) +{ + EnforcePrecondition(false, IsValidGoal(goal_id)); + EnforcePrecondition(false, ScriptObject::GetCompany() == OWNER_DEITY); + + return ScriptObject::DoCommand(0, goal_id, completed ? 1 : 0, CMD_SET_GOAL_COMPLETED); +} + +/* static */ bool ScriptGoal::IsCompleted(GoalID goal_id) +{ + EnforcePrecondition(false, IsValidGoal(goal_id)); + EnforcePrecondition(false, ScriptObject::GetCompany() == OWNER_DEITY); + + Goal *g = Goal::Get(goal_id); + return g != NULL && g->completed; +} + /* static */ bool ScriptGoal::Question(uint16 uniqueid, ScriptCompany::CompanyID company, Text *question, QuestionType type, int buttons) { CCountedPtr counter(question); EnforcePrecondition(false, ScriptObject::GetCompany() == OWNER_DEITY); EnforcePrecondition(false, question != NULL); - EnforcePrecondition(false, !StrEmpty(question->GetEncodedText())); + const char *text = question->GetEncodedText(); + EnforcePreconditionEncodedText(false, text); 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; - return ScriptObject::DoCommand(0, uniqueid | (c << 16) | (type << 24), buttons, CMD_GOAL_QUESTION, question->GetEncodedText()); + return ScriptObject::DoCommand(0, uniqueid | (c << 16) | (type << 24), buttons, CMD_GOAL_QUESTION, text); } /* static */ bool ScriptGoal::CloseQuestion(uint16 uniqueid) diff --git a/src/script/api/script_goal.hpp b/src/script/api/script_goal.hpp index deca0bd3f..a9c7b239d 100644 --- a/src/script/api/script_goal.hpp +++ b/src/script/api/script_goal.hpp @@ -17,6 +17,11 @@ /** * Class that handles some goal related functions. + * + * Goals are saved and loaded. Upon bankruptcy or company takeover, all company + * specific goals are removed for that company. You can also remove individual + * goals using #Remove. + * * @api game */ class ScriptGoal : public ScriptObject { @@ -39,6 +44,7 @@ class ScriptGoal : public ScriptObject { 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. }; /** @@ -52,6 +58,9 @@ class ScriptGoal : public ScriptObject { QT_ERROR, ///< Showing an error; title: Error. }; + /** + * Types of buttons that can be in the question window. + */ enum QuestionButton { /* Note: these values represent part of the string list starting with STR_GOAL_QUESTION_BUTTON_CANCEL */ BUTTON_CANCEL = (1 << 0), ///< Cancel button. @@ -91,6 +100,9 @@ class ScriptGoal : public ScriptObject { * @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); @@ -103,6 +115,50 @@ class ScriptGoal : public ScriptObject { */ static bool Remove(GoalID goal_id); + /** + * Update goal text of a goal. + * @param goal_id The goal to update. + * @param goal The new goal text (can be either a raw string, or a ScriptText object). + * @return True if the action succeeded. + * @pre No ScriptCompanyMode may be in scope. + * @pre goal != NULL && len(goal) != 0. + * @pre IsValidGoal(goal_id). + */ + static bool SetText(GoalID goal_id, Text *goal); + + /** + * Update the progress text of a goal. The progress text is a text that + * is shown adjacent to the goal but in a separate column. Try to keep + * the progress string short. + * @param goal_id The goal to update. + * @param progress The new progress text for the goal (can be either a raw string, + * or a ScriptText object). To clear the progress string you can pass NULL or an + * empty string. + * @return True if the action succeeded. + * @pre No ScriptCompanyMode may be in scope. + * @pre IsValidGoal(goal_id). + */ + static bool SetProgress(GoalID goal_id, Text *progress); + + /** + * Update completed status of goal + * @param goal_id The goal to update. + * @param complete The new goal completed status. + * @return True if the action succeeded. + * @pre No ScriptCompanyMode may be in scope. + * @pre IsValidGoal(goal_id). + */ + static bool SetCompleted(GoalID goal_id, bool complete); + + /** + * Checks if a given goal have been marked as completed. + * @param goal_id The goal to check complete status. + * @return True if the goal is completed, otherwise false. + * @pre No ScriptCompanyMode may be in scope. + * @pre IsValidGoal(goal_id). + */ + static bool IsCompleted(GoalID goal_id); + /** * Ask a question. * @param uniqueid Your unique id to distinguish results of multiple questions in the returning event. diff --git a/src/script/api/script_group.cpp b/src/script/api/script_group.cpp index b04ece2fa..1e8d6d774 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); @@ -53,11 +55,11 @@ EnforcePrecondition(false, IsValidGroup(group_id)); EnforcePrecondition(false, name != NULL); - const char *text = name->GetEncodedText(); - EnforcePrecondition(false, !::StrEmpty(text)); + const char *text = name->GetDecodedText(); + 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 39dd31002..d1071c36c 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 5e30f1377..c536ec559 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 b9824b9ac..d2d298fa3 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 bbfca99a4..1ac59975d 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 bae0919e9..8dccc68c9 100644 --- a/src/script/api/script_industrytype.hpp +++ b/src/script/api/script_industrytype.hpp @@ -112,7 +112,9 @@ class ScriptIndustryType : public ScriptObject { * @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 @@ class ScriptIndustryType : public ScriptObject { * @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 c72fabcaa..b60361578 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 1ae38750c..e12a6a45c 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 @@ class ScriptInfo { * * @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 @@ class ScriptInfo { /** * 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 1ce051bba..d7da2747e 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 e2afbff83..7add90c74 100644 --- a/src/script/api/script_list.cpp +++ b/src/script/api/script_list.cpp @@ -14,6 +14,8 @@ #include "../../debug.h" #include "../../script/squirrel.hpp" +#include "../../safeguards.h" + /** * Base class for any ScriptList sorter. */ @@ -520,9 +522,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; @@ -641,6 +641,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()) { @@ -835,7 +836,7 @@ SQInteger ScriptList::Valuate(HSQUIRRELVM vm) return SQ_ERROR; } - /* Retreive the return value */ + /* Retrieve the return value */ SQInteger value; switch (sq_gettype(vm, -1)) { case OT_INTEGER: { diff --git a/src/script/api/script_list.hpp b/src/script/api/script_list.hpp index 879928287..2117f959d 100644 --- a/src/script/api/script_list.hpp +++ b/src/script/api/script_list.hpp @@ -33,11 +33,11 @@ class ScriptList : public ScriptObject { /** Sort ascending */ static const bool SORT_ASCENDING = true; - /** Sort descnding */ + /** Sort descending */ static const bool SORT_DESCENDING = false; private: - ScriptListSorter *sorter; ///< Sorting algorithm + ScriptListSorter *sorter; ///< Sorting algorithm SorterType sorter_type; ///< Sorting type bool sort_ascending; ///< Whether to sort ascending or descending bool initialized; ///< Whether an iteration has been started @@ -54,13 +54,16 @@ class ScriptList : public ScriptObject { ScriptList(); ~ScriptList(); +#ifdef DOXYGEN_API /** * Add a single item to the list. * @param item the item to add. Should be unique, otherwise it is ignored. * @param value the value to assign. - * @note the value is set to 0 by default. */ + void AddItem(int32 item, int32 value); +#else void AddItem(int32 item, int32 value = 0); +#endif /* DOXYGEN_API */ /** * Remove a single item from the list. @@ -164,7 +167,7 @@ class ScriptList : public ScriptObject { /** * 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 valuens (exclusive). + * @param end the upper bound of the to be removed values (exclusive). */ void RemoveBetweenValue(int32 start, int32 end); diff --git a/src/script/api/script_log.cpp b/src/script/api/script_log.cpp index fc6a0b193..d9fbbde98 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_log.hpp b/src/script/api/script_log.hpp index a95e1ccbf..def37c938 100644 --- a/src/script/api/script_log.hpp +++ b/src/script/api/script_log.hpp @@ -53,18 +53,21 @@ class ScriptLog : public ScriptObject { /** * Print an Info message to the logs. * @param message The message to log. + * @note Special characters such as U+0000-U+0019 and U+E000-U+E1FF are not supported and removed or replaced by a question mark. This includes newlines and tabs. */ static void Info(const char *message); /** * Print a Warning message to the logs. * @param message The message to log. + * @note Special characters such as U+0000-U+0019 and U+E000-U+E1FF are not supported and removed or replaced by a question mark. This includes newlines and tabs. */ static void Warning(const char *message); /** * Print an Error message to the logs. * @param message The message to log. + * @note Special characters such as U+0000-U+0019 and U+E000-U+E1FF are not supported and removed or replaced by a question mark. This includes newlines and tabs. */ static void Error(const char *message); diff --git a/src/script/api/script_map.cpp b/src/script/api/script_map.cpp index 3f224b3d1..6334089fd 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 abc8666f1..434ec11ac 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 aaa8a6895..8d808ff3c 100644 --- a/src/script/api/script_news.cpp +++ b/src/script/api/script_news.cpp @@ -15,17 +15,20 @@ #include "../../command_type.h" #include "../../string_func.h" +#include "../../safeguards.h" + /* static */ bool ScriptNews::Create(NewsType type, Text *text, ScriptCompany::CompanyID company) { CCountedPtr counter(text); EnforcePrecondition(false, text != NULL); - EnforcePrecondition(false, !StrEmpty(text->GetEncodedText())); + const char *encoded = text->GetEncodedText(); + 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); 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, text->GetEncodedText()); + return ScriptObject::DoCommand(0, type | (NR_NONE << 8) | (c << 16), 0, CMD_CUSTOM_NEWS_ITEM, encoded); } diff --git a/src/script/api/script_object.cpp b/src/script/api/script_object.cpp index 7da23d6f7..49dba6bb7 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. @@ -144,6 +146,8 @@ ScriptObject::ActiveInstance::~ActiveInstance() SetNewSignID(_new_sign_id); SetNewGroupID(_new_group_id); SetNewGoalID(_new_goal_id); + SetNewStoryPageID(_new_story_page_id); + SetNewStoryPageElementID(_new_story_page_element_id); } /* static */ bool ScriptObject::GetLastCommandRes() @@ -191,6 +195,26 @@ ScriptObject::ActiveInstance::~ActiveInstance() return GetStorage()->new_goal_id; } +/* static */ void ScriptObject::SetNewStoryPageID(StoryPageID story_page_id) +{ + GetStorage()->new_story_page_id = story_page_id; +} + +/* static */ GroupID ScriptObject::GetNewStoryPageID() +{ + return GetStorage()->new_story_page_id; +} + +/* static */ void ScriptObject::SetNewStoryPageElementID(StoryPageElementID story_page_element_id) +{ + GetStorage()->new_story_page_element_id = story_page_element_id; +} + +/* static */ GroupID ScriptObject::GetNewStoryPageElementID() +{ + return GetStorage()->new_story_page_element_id; +} + /* static */ void ScriptObject::SetAllowDoCommand(bool allow) { GetStorage()->allow_do_command = allow; @@ -240,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) @@ -265,6 +289,12 @@ ScriptObject::ActiveInstance::~ActiveInstance() return false; } + 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; @@ -300,7 +330,12 @@ ScriptObject::ActiveInstance::~ActiveInstance() if (_generating_world) { IncreaseDoCommandCosts(res.GetCost()); - if (callback != NULL) callback(GetActiveInstance()); + if (callback != NULL) { + /* Insert return value into to stack and throw a control code that + * the return value in the stack should be used. */ + callback(GetActiveInstance()); + throw SQInteger(1); + } return true; } else if (_networking) { /* Suspend the script till the command is really executed. */ diff --git a/src/script/api/script_object.hpp b/src/script/api/script_object.hpp index a2631dd3d..482e76f66 100644 --- a/src/script/api/script_object.hpp +++ b/src/script/api/script_object.hpp @@ -166,6 +166,16 @@ friend class ScriptController; */ static GoalID GetNewGoalID(); + /** + * Get the latest stored new_story_page_id. + */ + static StoryPageID GetNewStoryPageID(); + + /** + * Get the latest stored new_story_page_id. + */ + static StoryPageID GetNewStoryPageElementID(); + /** * Store a allow_do_command per company. * @param allow The new allow. @@ -266,6 +276,18 @@ friend class ScriptController; * @param goal_id The new GoalID. */ static void SetNewGoalID(GoalID goal_id); + + /** + * Store a new_story_page_id per company. + * @param story_page_id The new StoryPageID. + */ + static void SetNewStoryPageID(StoryPageID story_page_id); + + /** + * Store a new_story_page_id per company. + * @param story_page_id The new StoryPageID. + */ + static void SetNewStoryPageElementID(StoryPageElementID story_page_element_id); }; #endif /* SCRIPT_OBJECT_HPP */ diff --git a/src/script/api/script_order.cpp b/src/script/api/script_order.cpp index 8b55cabb4..676262dc7 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; } @@ -627,6 +633,7 @@ static void _DoCommandReturnSetOrderFlags(class ScriptInstance *instance) EnforcePrecondition(false, IsValidVehicleOrder(vehicle_id, order_position_move)); EnforcePrecondition(false, IsValidVehicleOrder(vehicle_id, order_position_target)); + EnforcePrecondition(false, order_position_move != order_position_target); int order_pos_move = ScriptOrderPositionToRealOrderPosition(vehicle_id, order_position_move); int order_pos_target = ScriptOrderPositionToRealOrderPosition(vehicle_id, order_position_target); diff --git a/src/script/api/script_order.hpp b/src/script/api/script_order.hpp index 4df6f7ef4..63089a2bd 100644 --- a/src/script/api/script_order.hpp +++ b/src/script/api/script_order.hpp @@ -47,7 +47,7 @@ class ScriptOrder : public ScriptObject { /** Do not stop at the stations that are passed when going to the destination. Only for trains and road vehicles. */ OF_NON_STOP_INTERMEDIATE = 1 << 0, - /** Do not stop at the destionation station. Only for trains and road vehicles. */ + /** Do not stop at the destination station. Only for trains and road vehicles. */ OF_NON_STOP_DESTINATION = 1 << 1, /** Always unload the vehicle; only for stations. Cannot be set when OF_TRANSFER or OF_NO_UNLOAD is set. */ @@ -524,6 +524,7 @@ class ScriptOrder : public ScriptObject { * @param order_position_target The target order * @pre IsValidVehicleOrder(vehicle_id, order_position_move). * @pre IsValidVehicleOrder(vehicle_id, order_position_target). + * @pre order_position_move != order_position_target. * @exception ScriptError::ERR_OWNED_BY_ANOTHER_COMPANY * @return True if and only if the order was moved. * @note If the order is moved to a lower place (e.g. from 7 to 2) @@ -586,7 +587,7 @@ class ScriptOrder : public ScriptObject { /** * Get the distance between two points for a vehicle type. * Use this function to compute the distance between two tiles wrt. a vehicle type. - * These vehicle-type specific distances are indepenent from other map distances, you may + * These vehicle-type specific distances are independent from other map distances, you may * use the result of this function to compare it with the result of * ScriptEngine::GetMaximumOrderDistance or ScriptVehicle::GetMaximumOrderDistance. * @param vehicle_type The vehicle type to get the distance for. diff --git a/src/script/api/script_rail.cpp b/src/script/api/script_rail.cpp index fd1e3e920..af68a3edc 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; @@ -186,10 +188,11 @@ if (spec == NULL) { DEBUG(grf, 1, "%s returned an invalid station ID for 'AI construction/purchase selection (18)' callback", file->filename); } else { - p2 |= spec->cls_id | index << 8; + /* We might have gotten an usable station spec. Try to build it, but if it fails we'll fall back to the original station. */ + if (ScriptObject::DoCommand(tile, p1, p2 | spec->cls_id | index << 8, CMD_BUILD_RAIL_STATION)) return true; } - } + return ScriptObject::DoCommand(tile, p1, p2, CMD_BUILD_RAIL_STATION); } @@ -252,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) @@ -283,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); @@ -352,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); } @@ -369,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_rail.hpp b/src/script/api/script_rail.hpp index 21dfab356..7e2a59e7f 100644 --- a/src/script/api/script_rail.hpp +++ b/src/script/api/script_rail.hpp @@ -32,8 +32,8 @@ class ScriptRail : public ScriptObject { /** One-way roads cannot have crossings */ ERR_CROSSING_ON_ONEWAY_ROAD, // [STR_ERROR_CROSSING_ON_ONEWAY_ROAD] - /** Track not suitable for signals */ - ERR_UNSUITABLE_TRACK, // [STR_ERROR_NO_SUITABLE_RAILROAD_TRACK] + /** No suitable track could be found */ + ERR_UNSUITABLE_TRACK, // [STR_ERROR_NO_SUITABLE_RAILROAD_TRACK, STR_ERROR_THERE_IS_NO_RAILROAD_TRACK, STR_ERROR_THERE_ARE_NO_SIGNALS, STR_ERROR_THERE_IS_NO_STATION] /** This railtype cannot have crossings */ ERR_RAILTYPE_DISALLOWS_CROSSING, // [STR_ERROR_CROSSING_DISALLOWED] @@ -268,6 +268,9 @@ class ScriptRail : public ScriptObject { * Build a NewGRF rail station. This calls callback 18 to let a NewGRF * provide the station class / id to build, so we don't end up with * only the default stations on the map. + * When no NewGRF provides a rail station, or an unbuildable rail station is + * returned by a NewGRF, this function will fall back to building a default + * non-NewGRF station as if ScriptRail::BuildRailStation was called. * @param tile Place to build the station. * @param direction The direction to build the station. * @param num_platforms The number of platforms to build. @@ -314,11 +317,12 @@ class ScriptRail : public ScriptObject { /** * Remove all rail waypoint pieces within a rectangle on the map. * @param tile One corner of the rectangle to clear. - * @param tile2 The oppposite corner. + * @param tile2 The opposite corner. * @param keep_rail Whether to keep the rail after removal. * @pre IsValidTile(tile). * @pre IsValidTile(tile2). * @game @pre Valid ScriptCompanyMode active in scope. + * @exception ScriptRail::ERR_UNSUITABLE_TRACK * @return Whether at least one tile has been/can be cleared or not. */ static bool RemoveRailWaypointTileRectangle(TileIndex tile, TileIndex tile2, bool keep_rail); @@ -326,11 +330,12 @@ class ScriptRail : public ScriptObject { /** * Remove all rail station platform pieces within a rectangle on the map. * @param tile One corner of the rectangle to clear. - * @param tile2 The oppposite corner. + * @param tile2 The opposite corner. * @param keep_rail Whether to keep the rail after removal. * @pre IsValidTile(tile). * @pre IsValidTile(tile2). * @game @pre Valid ScriptCompanyMode active in scope. + * @exception ScriptRail::ERR_UNSUITABLE_TRACK * @return Whether at least one tile has been/can be cleared or not. */ static bool RemoveRailStationTileRectangle(TileIndex tile, TileIndex tile2, bool keep_rail); @@ -369,6 +374,7 @@ class ScriptRail : public ScriptObject { * @pre ScriptMap::IsValidTile(tile). * @pre (GetRailTracks(tile) & rail_track) != 0. * @game @pre Valid ScriptCompanyMode active in scope. + * @exception ScriptRail::ERR_UNSUITABLE_TRACK * @return Whether the rail has been/can be removed or not. * @note You can only remove a single track with this function so do not * use the values from RailTrack as bitmask. @@ -424,6 +430,7 @@ class ScriptRail : public ScriptObject { * (ScriptMap::GetTileX(from) == ScriptMap::GetTileX(tile) && ScriptMap::GetTileX(tile) == ScriptMap::GetTileX(to)) || * (ScriptMap::GetTileY(from) == ScriptMap::GetTileY(tile) && ScriptMap::GetTileY(tile) == ScriptMap::GetTileY(to)). * @game @pre Valid ScriptCompanyMode active in scope. + * @exception ScriptRail::ERR_UNSUITABLE_TRACK * @return Whether the rail has been/can be removed or not. */ static bool RemoveRail(TileIndex from, TileIndex tile, TileIndex to); @@ -457,6 +464,7 @@ class ScriptRail : public ScriptObject { * @pre ScriptMap::DistanceManhattan(tile, front) == 1. * @pre GetSignalType(tile, front) != SIGNALTYPE_NONE. * @game @pre Valid ScriptCompanyMode active in scope. + * @exception ScriptRail::ERR_UNSUITABLE_TRACK * @return Whether the signal has been/can be removed or not. */ static bool RemoveSignal(TileIndex tile, TileIndex front); diff --git a/src/script/api/script_railtypelist.cpp b/src/script/api/script_railtypelist.cpp index 9373ce85c..016145b76 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 137ae7618..3a9a8ca3f 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 6f928e25c..ed4058f97 100644 --- a/src/script/api/script_road.hpp +++ b/src/script/api/script_road.hpp @@ -93,6 +93,7 @@ class ScriptRoad : public ScriptObject { * 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 @@ class ScriptRoad : public ScriptObject { * 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 @@ class ScriptRoad : public ScriptObject { * 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); @@ -147,7 +150,7 @@ class ScriptRoad : public ScriptObject { /** * Checks whether the given tiles are directly connected, i.e. whether * a road vehicle can travel from the center of the first tile to the - * center of the second tile. + * center of the second tile. * @param tile_from The source tile. * @param tile_to The destination tile. * @pre IsRoadTypeAvailable(GetCurrentRoadType()). diff --git a/src/script/api/script_sign.cpp b/src/script/api/script_sign.cpp index ecf0b4c28..236e1df7e 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); @@ -37,8 +39,8 @@ EnforcePrecondition(false, IsValidSign(sign_id)); EnforcePrecondition(false, name != NULL); - const char *text = name->GetEncodedText(); - EnforcePrecondition(false, !::StrEmpty(text)); + const char *text = name->GetDecodedText(); + EnforcePreconditionEncodedText(false, text); EnforcePreconditionCustomError(false, ::Utf8StringLength(text) < MAX_LENGTH_SIGN_NAME_CHARS, ScriptError::ERR_PRECONDITION_STRING_TOO_LONG); return ScriptObject::DoCommand(0, sign_id, 0, CMD_RENAME_SIGN, text); @@ -72,8 +74,8 @@ EnforcePrecondition(INVALID_SIGN, ::IsValidTile(location)); EnforcePrecondition(INVALID_SIGN, name != NULL); - const char *text = name->GetEncodedText(); - EnforcePrecondition(INVALID_SIGN, !::StrEmpty(text)); + const char *text = name->GetDecodedText(); + EnforcePreconditionEncodedText(INVALID_SIGN, text); EnforcePreconditionCustomError(INVALID_SIGN, ::Utf8StringLength(text) < MAX_LENGTH_SIGN_NAME_CHARS, ScriptError::ERR_PRECONDITION_STRING_TOO_LONG); if (!ScriptObject::DoCommand(location, 0, 0, CMD_PLACE_SIGN, text, &ScriptInstance::DoCommandReturnSignID)) return INVALID_SIGN; diff --git a/src/script/api/script_signlist.cpp b/src/script/api/script_signlist.cpp index 5f6c6075b..61ab9665a 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 423c5545a..c03f851a3 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,18 +39,65 @@ return ::GetStationIndex(tile); } -/* static */ int32 ScriptStation::GetCargoWaiting(StationID station_id, CargoID cargo_id) +template +/* static */ int32 ScriptStation::CountCargoWaiting(StationID station_id, + StationID from_station_id, StationID via_station_id, CargoID cargo_id) { if (!IsValidStation(station_id)) return -1; + if (Tfrom && !IsValidStation(from_station_id) && from_station_id != STATION_INVALID) return -1; + if (Tvia && !IsValidStation(via_station_id) && via_station_id != STATION_INVALID) return -1; if (!ScriptCargo::IsValidCargo(cargo_id)) return -1; - return ::Station::Get(station_id)->goods[cargo_id].cargo.Count(); + 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) +{ + 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); +} + +/* static */ bool ScriptStation::HasCargoRating(StationID station_id, CargoID cargo_id) +{ + if (!IsValidStation(station_id)) return false; + if (!ScriptCargo::IsValidCargo(cargo_id)) return false; + + return ::Station::Get(station_id)->goods[cargo_id].HasRating(); } /* static */ int32 ScriptStation::GetCargoRating(StationID station_id, CargoID cargo_id) { - if (!IsValidStation(station_id)) return -1; - if (!ScriptCargo::IsValidCargo(cargo_id)) return -1; + if (!ScriptStation::HasCargoRating(station_id, cargo_id)) return -1; return ::ToPercent8(::Station::Get(station_id)->goods[cargo_id].rating); } diff --git a/src/script/api/script_station.hpp b/src/script/api/script_station.hpp index bb5d22c1b..26fc28042 100644 --- a/src/script/api/script_station.hpp +++ b/src/script/api/script_station.hpp @@ -86,12 +86,64 @@ class ScriptStation : public ScriptBaseStation { */ 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); + + /** + * Check whether the given cargo at the given station a rating. + * @param station_id The station to get the cargo-rating state of. + * @param cargo_id The cargo to get the cargo-rating state of. + * @pre IsValidStation(station_id). + * @pre IsValidCargo(cargo_id). + * @return True if the cargo has a rating, otherwise false. + */ + static bool HasCargoRating(StationID station_id, CargoID cargo_id); + /** * See how high the rating is of a cargo on a station. * @param station_id The station to get the cargo-rating of. * @param cargo_id The cargo to get the cargo-rating of. * @pre IsValidStation(station_id). * @pre IsValidCargo(cargo_id). + * @pre HasCargoRating(station_id, cargo_id). * @return The rating in percent of the cargo on the station. */ static int32 GetCargoRating(StationID station_id, CargoID cargo_id); @@ -190,6 +242,12 @@ class ScriptStation : public ScriptBaseStation { * @return True if the state could be toggled. */ static bool OpenCloseAirport(StationID station_id); + +private: + template + static int32 CountCargoWaiting(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 a7269bd24..9d88fd8fc 100644 --- a/src/script/api/script_stationlist.cpp +++ b/src/script/api/script_stationlist.cpp @@ -15,6 +15,8 @@ #include "../../station_base.h" #include "../../vehicle_base.h" +#include "../../safeguards.h" + ScriptStationList::ScriptStationList(ScriptStation::StationType station_type) { Station *st; diff --git a/src/script/api/script_story_page.cpp b/src/script/api/script_story_page.cpp new file mode 100644 index 000000000..11820ec3f --- /dev/null +++ b/src/script/api/script_story_page.cpp @@ -0,0 +1,177 @@ +/* $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_story_page.cpp Implementation of ScriptStoryPage. */ + +#include "../../stdafx.h" +#include "script_story_page.hpp" +#include "script_error.hpp" +#include "script_industry.hpp" +#include "script_map.hpp" +#include "script_town.hpp" +#include "script_goal.hpp" +#include "../script_instance.hpp" +#include "../../story_base.h" +#include "../../goal_base.h" +#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); +} + +/* static */ bool ScriptStoryPage::IsValidStoryPageElement(StoryPageElementID story_page_element_id) +{ + return ::StoryPageElement::IsValidID(story_page_element_id); +} + +/* static */ ScriptStoryPage::StoryPageID ScriptStoryPage::New(ScriptCompany::CompanyID company, Text *title) +{ + CCountedPtr counter(title); + + EnforcePrecondition(STORY_PAGE_INVALID, ScriptObject::GetCompany() == OWNER_DEITY); + EnforcePrecondition(STORY_PAGE_INVALID, company == ScriptCompany::COMPANY_INVALID || ScriptCompany::ResolveCompanyID(company) != ScriptCompany::COMPANY_INVALID); + + uint8 c = company; + if (company == ScriptCompany::COMPANY_INVALID) c = INVALID_COMPANY; + + if (!ScriptObject::DoCommand(0, + c, + 0, + CMD_CREATE_STORY_PAGE, + title != NULL? title->GetEncodedText() : NULL, + &ScriptInstance::DoCommandReturnStoryPageID)) return STORY_PAGE_INVALID; + + /* In case of test-mode, we return StoryPageID 0 */ + return (ScriptStoryPage::StoryPageID)0; +} + +/* static */ ScriptStoryPage::StoryPageElementID ScriptStoryPage::NewElement(StoryPageID story_page_id, StoryPageElementType type, uint32 reference, Text *text) +{ + CCountedPtr counter(text); + + EnforcePrecondition(STORY_PAGE_ELEMENT_INVALID, ScriptObject::GetCompany() == OWNER_DEITY); + EnforcePrecondition(STORY_PAGE_ELEMENT_INVALID, IsValidStoryPage(story_page_id)); + EnforcePrecondition(STORY_PAGE_ELEMENT_INVALID, (type != SPET_TEXT && type != SPET_LOCATION) || (text != NULL && !StrEmpty(text->GetEncodedText()))); + EnforcePrecondition(STORY_PAGE_ELEMENT_INVALID, type != SPET_LOCATION || ::IsValidTile(reference)); + EnforcePrecondition(STORY_PAGE_ELEMENT_INVALID, type != SPET_GOAL || ScriptGoal::IsValidGoal((ScriptGoal::GoalID)reference)); + EnforcePrecondition(STORY_PAGE_ELEMENT_INVALID, type != SPET_GOAL || !(StoryPage::Get(story_page_id)->company == INVALID_COMPANY && Goal::Get(reference)->company != INVALID_COMPANY)); + + if (!ScriptObject::DoCommand(type == SPET_LOCATION ? reference : 0, + story_page_id + (type << 16), + type == SPET_GOAL ? reference : 0, + CMD_CREATE_STORY_PAGE_ELEMENT, + type == SPET_TEXT || type == SPET_LOCATION ? text->GetEncodedText() : NULL, + &ScriptInstance::DoCommandReturnStoryPageElementID)) return STORY_PAGE_ELEMENT_INVALID; + + /* In case of test-mode, we return StoryPageElementID 0 */ + return (ScriptStoryPage::StoryPageElementID)0; +} + +/* static */ bool ScriptStoryPage::UpdateElement(StoryPageElementID story_page_element_id, uint32 reference, Text *text) +{ + CCountedPtr counter(text); + + EnforcePrecondition(false, ScriptObject::GetCompany() == OWNER_DEITY); + EnforcePrecondition(false, IsValidStoryPageElement(story_page_element_id)); + + StoryPageElement *pe = StoryPageElement::Get(story_page_element_id); + StoryPage *p = StoryPage::Get(pe->page); + ::StoryPageElementType type = pe->type; + + EnforcePrecondition(false, (type != ::SPET_TEXT && type != ::SPET_LOCATION) || (text != NULL && !StrEmpty(text->GetEncodedText()))); + EnforcePrecondition(false, type != ::SPET_LOCATION || ::IsValidTile(reference)); + EnforcePrecondition(false, type != ::SPET_GOAL || ScriptGoal::IsValidGoal((ScriptGoal::GoalID)reference)); + EnforcePrecondition(false, type != ::SPET_GOAL || !(p->company == INVALID_COMPANY && Goal::Get(reference)->company != INVALID_COMPANY)); + + return ScriptObject::DoCommand(type == ::SPET_LOCATION ? reference : 0, + story_page_element_id, + type == ::SPET_GOAL ? reference : 0, + CMD_UPDATE_STORY_PAGE_ELEMENT, + 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) +{ + CCountedPtr counter(title); + + EnforcePrecondition(false, IsValidStoryPage(story_page_id)); + EnforcePrecondition(false, ScriptObject::GetCompany() == OWNER_DEITY); + + 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)); + EnforcePrecondition(false, ScriptObject::GetCompany() == OWNER_DEITY); + + return ScriptObject::DoCommand(0, story_page_id, 0, CMD_SHOW_STORY_PAGE); +} + +/* static */ bool ScriptStoryPage::Remove(StoryPageID story_page_id) +{ + EnforcePrecondition(false, ScriptObject::GetCompany() == OWNER_DEITY); + EnforcePrecondition(false, IsValidStoryPage(story_page_id)); + + 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 new file mode 100644 index 000000000..c22d4c198 --- /dev/null +++ b/src/script/api/script_story_page.hpp @@ -0,0 +1,212 @@ +/* $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_story_page.hpp Everything to manipulate a story page. */ + +#ifndef SCRIPT_STORY_HPP +#define SCRIPT_STORY_HPP + +#include "script_company.hpp" +#include "script_date.hpp" +#include "../../story_type.h" +#include "../../story_base.h" + +/** + * Class that handles story page related functions. + * + * To create a page: + * 1. Create the page + * 2. Create page elements that will be appended to the page in the order which they are created. + * + * Pages can be either global or company specific. It is possible to mix, but the only mixed solution + * that will work is to have all global pages first. Once you create the first company specific page, + * it is not recommended to add additional global pages unless you clear up all pages first. + * + * Page elements are stacked vertically on a page. If goal elements are used, the element will + * become empty if the goal is removed while the page still exist. Instead of removing the goal, + * you can mark it as complete and the Story Book will show that the goal is completed. + * + * Mind that users might want to go back to old pages later on. Thus do not remove pages in + * the story book unless you really need to. + * + * @api game + */ +class ScriptStoryPage : public ScriptObject { +public: + /** + * The story page IDs. + */ + enum StoryPageID { + /* Note: these values represent part of the in-game StoryPageID enum */ + STORY_PAGE_INVALID = ::INVALID_STORY_PAGE, ///< An invalid story page id. + }; + + /** + * The story page element IDs. + */ + enum StoryPageElementID { + /* Note: these values represent part of the in-game StoryPageElementID enum */ + STORY_PAGE_ELEMENT_INVALID = ::INVALID_STORY_PAGE_ELEMENT, ///< An invalid story page element id. + }; + + /** + * Story page element types. + */ + enum StoryPageElementType { + SPET_TEXT = ::SPET_TEXT, ///< An element that displays a block of text. + SPET_LOCATION = ::SPET_LOCATION, ///< An element that displays a single line of text along with a button to view the referenced location. + SPET_GOAL = ::SPET_GOAL, ///< An element that displays a goal. + }; + + /** + * Check whether this is a valid story page ID. + * @param story_page_id The StoryPageID to check. + * @return True if and only if this story page is valid. + */ + static bool IsValidStoryPage(StoryPageID story_page_id); + + /** + * Check whether this is a valid story page element ID. + * @param story_page_element_id The StoryPageElementID to check. + * @return True if and only if this story page element is valid. + */ + static bool IsValidStoryPageElement(StoryPageElementID story_page_element_id); + + /** + * 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_PAGE_INVALID if it failed. + * @pre No ScriptCompanyMode may be in scope. + * @pre company == COMPANY_INVALID || ResolveCompanyID(company) != COMPANY_INVALID. + */ + static StoryPageID New(ScriptCompany::CompanyID company, Text *title); + + /** + * Create a new story page element. + * @param story_page_id The page id of the story page which the page element should be appended to. + * @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 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). + * @pre type != SPET_LOCATION || ScriptMap::IsValidTile(reference). + * @pre type != SPET_GOAL || ScriptGoal::IsValidGoal(reference). + * @pre if type is SPET_GOAL and story_page is a global page, then referenced goal must be global. + */ + static StoryPageElementID NewElement(StoryPageID story_page_id, StoryPageElementType type, uint32 reference, Text *text); + + /** + * Update the content of a page element + * @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 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). + * @pre type != SPET_LOCATION || ScriptMap::IsValidTile(reference). + * @pre type != SPET_GOAL || ScriptGoal::IsValidGoal(reference). + * @pre if type is SPET_GOAL and story_page is a global page, then referenced goal must be global. + */ + 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. + * @param title Page title (can be either a raw string, a ScriptText object, or null). + * @return True if the action succeeded. + * @pre No ScriptCompanyMode may be in scope. + * @pre IsValidStoryPage(story_page_id). + */ + static bool SetTitle(StoryPageID story_page_id, Text *title); + + /** + * Opens the Story Book if not yet open and selects the given page. + * @param story_page_id The story page to update. If it is a global page, clients of all + * companies are affecetd. Otherwise only the clients of the company which the page belongs + * to are affected. + * @return True if the action succeeded. + * @pre No ScriptCompanyMode may be in scope. + * @pre IsValidStoryPage(story_page_id). + */ + static bool Show(StoryPageID story_page_id); + + /** + * 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 000000000..3f1fa4ebb --- /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 000000000..6aa2faf2d --- /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 000000000..fc32e80a3 --- /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 000000000..7aa3389f3 --- /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 8ec074d4d..640f7ab0a 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 bf565056e..16a679440 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. @@ -26,7 +27,7 @@ class ScriptSubsidy : public ScriptObject { */ enum SubsidyParticipantType { /* Values are important, as they represent the internal state of the game. - * It is orignally named SourceType. ST_HEADQUARTERS is intentionally + * It is originally named SourceType. ST_HEADQUARTERS is intentionally * left out, as it cannot be used for Subsidies. */ SPT_INDUSTRY = 0, ///< Subsidy participant is an industry SPT_TOWN = 1, ///< Subsidy participant is a town @@ -83,7 +84,7 @@ class ScriptSubsidy : public ScriptObject { * @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 68644846f..fd7d94779 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 46cc15e05..37f296de0 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_testmode.hpp b/src/script/api/script_testmode.hpp index 5ef33822c..4ca29d5dc 100644 --- a/src/script/api/script_testmode.hpp +++ b/src/script/api/script_testmode.hpp @@ -27,7 +27,7 @@ class ScriptTestMode : public ScriptObject { private: ScriptModeProc *last_mode; ///< The previous mode we were in. - ScriptObject *last_instance; ///< The previous instace of the mode. + ScriptObject *last_instance; ///< The previous instance of the mode. protected: /** diff --git a/src/script/api/script_text.cpp b/src/script/api/script_text.cpp index e9b51e2e7..1529d4577 100644 --- a/src/script/api/script_text.cpp +++ b/src/script/api/script_text.cpp @@ -11,9 +11,24 @@ #include "../../stdafx.h" #include "../../string_func.h" +#include "../../strings_func.h" #include "script_text.hpp" #include "../../table/control_codes.h" +#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() { @@ -68,7 +83,8 @@ 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(SQ2OTTD(value)); + ValidateString(this->params[parameter]); break; } @@ -144,6 +160,7 @@ SQInteger ScriptText::_set(HSQUIRRELVM vm) const SQChar *key; sq_getstring(vm, 2, &key); const char *key_string = SQ2OTTD(key); + ValidateString(key_string); if (strncmp(key_string, "param_", 6) != 0 || strlen(key_string) > 8) return SQ_ERROR; k = atoi(key_string + 6); @@ -165,26 +182,40 @@ SQInteger ScriptText::_set(HSQUIRRELVM vm) const char *ScriptText::GetEncodedText() { static char buf[1024]; - this->_GetEncodedText(buf, lastof(buf)); - return buf; + int param_count = 0; + this->_GetEncodedText(buf, lastof(buf), param_count); + return (param_count > SCRIPT_TEXT_MAX_PARAMETERS) ? NULL : buf; } -char *ScriptText::_GetEncodedText(char *p, char *lastofp) +char *ScriptText::_GetEncodedText(char *p, char *lastofp, int ¶m_count) { p += Utf8Encode(p, SCC_ENCODED); p += seprintf(p, lastofp, "%X", this->string); for (int i = 0; i < this->paramc; i++) { if (this->params[i] != NULL) { p += seprintf(p, lastofp, ":\"%s\"", this->params[i]); + param_count++; continue; } if (this->paramt[i] != NULL) { p += seprintf(p, lastofp, ":"); - p = this->paramt[i]->_GetEncodedText(p, lastofp); + p = this->paramt[i]->_GetEncodedText(p, lastofp, param_count); continue; } - p += seprintf(p, lastofp,":%X", this->parami[i]); + p += seprintf(p, lastofp,":%X", (uint32)this->parami[i]); + param_count++; } return p; } + +const char *Text::GetDecodedText() +{ + const char *encoded_text = this->GetEncodedText(); + if (encoded_text == NULL) return NULL; + + static char buf[1024]; + ::SetDParamStr(0, encoded_text); + ::GetString(buf, STR_JUST_RAW_STRING, lastof(buf)); + return buf; +} diff --git a/src/script/api/script_text.hpp b/src/script/api/script_text.hpp index 43a6037ef..fe38be197 100644 --- a/src/script/api/script_text.hpp +++ b/src/script/api/script_text.hpp @@ -27,6 +27,13 @@ class Text : public ScriptObject { * @api -all */ virtual const char *GetEncodedText() = 0; + + /** + * Convert a #ScriptText into a decoded normal string. + * @return A string (in a static buffer), or NULL. + * @api -all + */ + const char *GetDecodedText(); }; /** @@ -35,9 +42,8 @@ class Text : public ScriptObject { */ 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: @@ -132,9 +138,10 @@ class ScriptText : public Text , public ZeroedMemoryAllocator { * instances, while writing in the same buffer. * @param p The current position in the buffer. * @param lastofp The last position valid in the buffer. + * @param param_count The number of parameters that are in the string. * @return The new current position in the buffer. */ - char *_GetEncodedText(char *p, char *lastofp); + char *_GetEncodedText(char *p, char *lastofp, int ¶m_count); /** * Set a parameter, where the value is the first item on the stack. diff --git a/src/script/api/script_tile.cpp b/src/script/api/script_tile.cpp index f6f016213..db9220acd 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++) { @@ -135,6 +138,19 @@ return (::IsTileType(tile, MP_CLEAR) && ::IsClearGround(tile, CLEAR_DESERT)); } +/* static */ ScriptTile::TerrainType ScriptTile::GetTerrainType(TileIndex tile) +{ + if (!::IsValidTile(tile)) return TERRAIN_NORMAL; + + switch (::GetTerrainType(tile)) { + default: + case 0: return TERRAIN_NORMAL; + case 1: return TERRAIN_DESERT; + case 2: return TERRAIN_RAINFOREST; + case 4: return TERRAIN_SNOW; + } +} + /* static */ ScriptTile::Slope ScriptTile::GetSlope(TileIndex tile) { if (!::IsValidTile(tile)) return SLOPE_INVALID; diff --git a/src/script/api/script_tile.hpp b/src/script/api/script_tile.hpp index e4d9cda98..f4a2f0970 100644 --- a/src/script/api/script_tile.hpp +++ b/src/script/api/script_tile.hpp @@ -120,6 +120,19 @@ class ScriptTile : public ScriptObject { BT_CLEAR_HOUSE, ///< Clear a tile with a house }; + /** + * The types of terrain a tile can have. + * + * @note When a desert or rainforest tile are changed, their terrain type will remain the same. In other words, a sea tile can be of the desert terrain type. + * @note The snow terrain type can change to the normal terrain type and vice versa based on landscaping or variable snow lines from NewGRFs. + */ + enum TerrainType { + TERRAIN_NORMAL, ///< A normal tile (default); not desert, rainforest or snow. + TERRAIN_DESERT, ///< A tile in the desert (manually set in in scenarios, below certain height and certain distance from water in random games). + TERRAIN_RAINFOREST, ///< A tile in the rainforest (manually set in scenarios, certain distance away from deserts in random games), + TERRAIN_SNOW ///< A tile on or above the snowline level. + }; + /** * Check if this tile is buildable, i.e. no things on it that needs * demolishing. @@ -222,7 +235,8 @@ class ScriptTile : public ScriptObject { static bool IsRoughTile(TileIndex tile); /** - * Check if the tile is a snow tile. + * Check if the tile without buildings or infrastructure is a snow tile. + * @note If you want to know if a tile (with or without buildings and infrastructure) is on or above the snowline, use ScriptTile::GetTerrainType(tile). * @param tile The tile to check on. * @pre ScriptMap::IsValidTile(tile). * @return True if and only if the tile is snow tile. @@ -230,13 +244,24 @@ class ScriptTile : public ScriptObject { static bool IsSnowTile(TileIndex tile); /** - * Check if the tile is a desert tile. + * Check if the tile without buildings or infrastructure is a desert tile. + * @note If you want to know if a tile (with or without buildings and infrastructure) is in a desert, use ScriptTile::GetTerrainType(tile). * @param tile The tile to check on. * @pre ScriptMap::IsValidTile(tile). * @return True if and only if the tile is desert tile. */ static bool IsDesertTile(TileIndex tile); + /** + * Get the type of terrain regardless of buildings or infrastructure. + * @note When a desert or rainforest tile are changed, their terrain type will remain the same. In other words, a sea tile can be of the desert terrain type. + * @note The snow terrain type can change to the normal terrain type and vice versa based on landscaping or variable snow lines from NewGRFs. + * @param tile The tile to check on. + * @pre ScriptMap::IsValidTile(tile). + * @return The #TerrainType. + */ + static TerrainType GetTerrainType(TileIndex tile); + /** * Get the slope of a tile. * This is the slope of the bare tile. A possible foundation on the tile does not influence this slope. diff --git a/src/script/api/script_tilelist.cpp b/src/script/api/script_tilelist.cpp index d4fe9f977..933a92c4c 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_town.cpp b/src/script/api/script_town.cpp index 31b9ed0b1..d81704ae3 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,14 +41,31 @@ 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); EnforcePrecondition(false, text != NULL); + const char *encoded_text = text->GetEncodedText(); + EnforcePreconditionEncodedText(false, encoded_text); EnforcePrecondition(false, IsValidTown(town_id)); - return ScriptObject::DoCommand(::Town::Get(town_id)->xy, town_id, 0, CMD_TOWN_SET_TEXT, text->GetEncodedText()); + return ScriptObject::DoCommand(::Town::Get(town_id)->xy, town_id, 0, CMD_TOWN_SET_TEXT, encoded_text); } /* static */ int32 ScriptTown::GetPopulation(TownID town_id) @@ -118,8 +138,8 @@ /* static */ uint32 ScriptTown::GetCargoGoal(TownID town_id, ScriptCargo::TownEffect towneffect_id) { - if (!IsValidTown(town_id)) return -1; - if (!ScriptCargo::IsValidTownEffect(towneffect_id)) return -1; + if (!IsValidTown(town_id)) return UINT32_MAX; + if (!ScriptCargo::IsValidTownEffect(towneffect_id)) return UINT32_MAX; const Town *t = ::Town::Get(town_id); @@ -136,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; } @@ -195,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; @@ -236,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 c10e1f642..4aef587e6 100644 --- a/src/script/api/script_town.hpp +++ b/src/script/api/script_town.hpp @@ -105,6 +105,25 @@ class ScriptTown : public ScriptObject { 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 @@ class ScriptTown : public ScriptObject { */ 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. @@ -228,19 +257,21 @@ class ScriptTown : public ScriptObject { /** * Set the amount of days between town growth. * @param town_id The index of the town. - * @param days_between_town_growth The amont 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. * @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 +333,15 @@ class ScriptTown : public ScriptObject { */ 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 +395,25 @@ class ScriptTown : public ScriptObject { */ 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 33a3fc070..a2e12febe 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 cf228e415..7b891f28d 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 9911361f7..74fdaabc5 100644 --- a/src/script/api/script_tunnel.hpp +++ b/src/script/api/script_tunnel.hpp @@ -85,8 +85,8 @@ class ScriptTunnel : public ScriptObject { * @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_types.hpp b/src/script/api/script_types.hpp index d4b72ea80..d3ac70b4d 100644 --- a/src/script/api/script_types.hpp +++ b/src/script/api/script_types.hpp @@ -100,6 +100,8 @@ typedef uint16 SignID; ///< The ID of a sign. typedef uint16 StationID; ///< The ID of a station. typedef uint16 StringID; ///< The ID of a string. typedef uint16 SubsidyID; ///< The ID of a subsidy. +typedef uint16 StoryPageID; ///< The ID of a story page. +typedef uint16 StoryPageElementID; ///< The ID of a story page element. typedef uint32 TileIndex; ///< The ID of a tile (just named differently). typedef uint16 TownID; ///< The ID of a town. typedef uint32 VehicleID; ///< The ID of a vehicle. diff --git a/src/script/api/script_vehicle.cpp b/src/script/api/script_vehicle.cpp index 639b42f4b..ca841f755 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); @@ -219,8 +221,8 @@ EnforcePrecondition(false, ScriptObject::GetCompany() != OWNER_DEITY); EnforcePrecondition(false, IsValidVehicle(vehicle_id)); EnforcePrecondition(false, name != NULL); - const char *text = name->GetEncodedText(); - EnforcePrecondition(false, !::StrEmpty(text)); + const char *text = name->GetDecodedText(); + EnforcePreconditionEncodedText(false, text); EnforcePreconditionCustomError(false, ::Utf8StringLength(text) < MAX_LENGTH_VEHICLE_NAME_CHARS, ScriptError::ERR_PRECONDITION_STRING_TOO_LONG); return ScriptObject::DoCommand(0, vehicle_id, 0, CMD_RENAME_VEHICLE, text); @@ -399,7 +401,7 @@ uint32 amount = 0; for (const Vehicle *v = ::Vehicle::Get(vehicle_id); v != NULL; v = v->Next()) { - if (v->cargo_type == cargo) amount += v->cargo.Count(); + if (v->cargo_type == cargo) amount += v->cargo.StoredCount(); } return amount; diff --git a/src/script/api/script_vehicle.hpp b/src/script/api/script_vehicle.hpp index 9af3aca8e..f6b22c204 100644 --- a/src/script/api/script_vehicle.hpp +++ b/src/script/api/script_vehicle.hpp @@ -370,7 +370,7 @@ class ScriptVehicle : public ScriptObject { static bool MoveWagonChain(VehicleID source_vehicle_id, int source_wagon, int dest_vehicle_id, int dest_wagon); /** - * Gets the capacity of the given vehicle when refited to the given cargo type. + * Gets the capacity of the given vehicle when refitted to the given cargo type. * @param vehicle_id The vehicle to refit. * @param cargo The cargo to refit to. * @pre IsValidVehicle(vehicle_id). @@ -549,7 +549,7 @@ class ScriptVehicle : public ScriptObject { /** * Get the maximum allowed distance between two orders for a vehicle. - * The distance returned is a vehicle-type specific distance indepenent from other + * The distance returned is a vehicle-type specific distance independent from other * map distances, you may use the result of this function to compare it * with the result of ScriptOrder::GetOrderDistance. * @param vehicle_id The vehicle to get the distance for. diff --git a/src/script/api/script_vehiclelist.cpp b/src/script/api/script_vehiclelist.cpp index 3017266fa..625f0f8c4 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 139edb029..737e7e68d 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_viewport.hpp b/src/script/api/script_viewport.hpp index a3b82a78a..542b58095 100644 --- a/src/script/api/script_viewport.hpp +++ b/src/script/api/script_viewport.hpp @@ -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 . */ -/** @file script_viewport.hpp Everything to manipulate the users viewport. */ +/** @file script_viewport.hpp Everything to manipulate the user's viewport. */ #ifndef SCRIPT_VIEWPORT_HPP #define SCRIPT_VIEWPORT_HPP @@ -15,7 +15,7 @@ #include "script_object.hpp" /** - * Class that manipultes the users viewport. + * Class that manipulates the user's viewport. * @api game */ class ScriptViewport : public ScriptObject { @@ -24,7 +24,7 @@ class ScriptViewport : public ScriptObject { * Scroll the viewport to the given tile, where the tile will be in the * center of the screen. * @param tile The tile to put in the center of the screen. - * @pre !ScriptGame::IsMultiplayer(). + * @pre ! ScriptGame::IsMultiplayer(). * @pre ScriptMap::IsValidTile(tile). */ static void ScrollTo(TileIndex tile); diff --git a/src/script/api/script_waypoint.cpp b/src/script/api/script_waypoint.cpp index a10b3376b..91733a38e 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 b32b3e8b3..dd641a684 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 086e59f63..1252f0fc7 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 e3f8740ba..81bac27ac 100644 --- a/src/script/api/script_window.hpp +++ b/src/script/api/script_window.hpp @@ -68,6 +68,8 @@ #include "../../widgets/vehicle_widget.h" #include "../../widgets/viewport_widget.h" #include "../../widgets/waypoint_widget.h" +#include "../../widgets/link_graph_legend_widget.h" +#include "../../widgets/story_widget.h" /** * Class that handles window interaction. A Window in OpenTTD has two imporant @@ -365,6 +367,11 @@ class ScriptWindow : public ScriptObject { */ WC_GOALS_LIST = ::WC_GOALS_LIST, + /** + * Story book; %Window numbers: + * - CompanyID = #StoryBookWidgets + */ + WC_STORY_BOOK = ::WC_STORY_BOOK, /** * Station list; %Window numbers: @@ -745,6 +752,18 @@ class ScriptWindow : public ScriptObject { */ WC_SPRITE_ALIGNER = ::WC_SPRITE_ALIGNER, + /** + * 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. }; @@ -866,7 +885,7 @@ class ScriptWindow : public ScriptObject { WID_AID_SCRIPT_GAME = ::WID_AID_SCRIPT_GAME, ///< Game Script button. WID_AID_RELOAD_TOGGLE = ::WID_AID_RELOAD_TOGGLE, ///< Reload button. WID_AID_LOG_PANEL = ::WID_AID_LOG_PANEL, ///< Panel where the log is in. - WID_AID_SCROLLBAR = ::WID_AID_SCROLLBAR, ///< Scrollbar of the log pannel. + WID_AID_SCROLLBAR = ::WID_AID_SCROLLBAR, ///< Scrollbar of the log panel. WID_AID_COMPANY_BUTTON_START = ::WID_AID_COMPANY_BUTTON_START, ///< Buttons in the VIEW. WID_AID_COMPANY_BUTTON_END = ::WID_AID_COMPANY_BUTTON_END, ///< Last possible button in the VIEW. WID_AID_BREAK_STRING_WIDGETS = ::WID_AID_BREAK_STRING_WIDGETS, ///< The panel to handle the breaking on string. @@ -908,7 +927,7 @@ class ScriptWindow : public ScriptObject { 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. WID_RV_RIGHT_MATRIX = ::WID_RV_RIGHT_MATRIX, ///< The matrix on the right. - WID_RV_RIGHT_SCROLLBAR = ::WID_RV_RIGHT_SCROLLBAR, ///< The scrollbar for the matrxi on the right. + WID_RV_RIGHT_SCROLLBAR = ::WID_RV_RIGHT_SCROLLBAR, ///< The scrollbar for the matrix on the right. WID_RV_LEFT_DETAILS = ::WID_RV_LEFT_DETAILS, ///< Details of the entry on the left. WID_RV_RIGHT_DETAILS = ::WID_RV_RIGHT_DETAILS, ///< Details of the entry on the right. @@ -1265,9 +1284,6 @@ class ScriptWindow : public ScriptObject { 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_START_DATE_DOWN = ::WID_GL_START_DATE_DOWN, ///< Decrease start year. @@ -1326,8 +1342,9 @@ class ScriptWindow : public ScriptObject { /* automatically generated from ../../widgets/goal_widget.h */ /** Widgets of the #GoalListWindow class. */ enum GoalListWidgets { - WID_GL_PANEL = ::WID_GL_PANEL, ///< Panel of the window. - WID_GL_SCROLLBAR = ::WID_GL_SCROLLBAR, ///< Scrollbar of the panel. + WID_GOAL_CAPTION = ::WID_GOAL_CAPTION, ///< Caption of the window. + WID_GOAL_LIST = ::WID_GOAL_LIST, ///< Goal list. + WID_GOAL_SCROLLBAR = ::WID_GOAL_SCROLLBAR, ///< Scrollbar of the goal list. }; /** Widgets of the #GoalQuestionWindow class. */ @@ -1482,6 +1499,25 @@ class ScriptWindow : public ScriptObject { WID_SGI_EXIT = ::WID_SGI_EXIT, ///< Exit button. }; + /* automatically generated from ../../widgets/link_graph_legend_widget.h */ + /** Widgets of the WC_LINKGRAPH_LEGEND. */ + enum LinkGraphLegendWidgets { + WID_LGL_CAPTION = ::WID_LGL_CAPTION, ///< Caption widget. + WID_LGL_SATURATION = ::WID_LGL_SATURATION, ///< Saturation legend. + WID_LGL_SATURATION_FIRST = ::WID_LGL_SATURATION_FIRST, + WID_LGL_SATURATION_LAST = ::WID_LGL_SATURATION_LAST, + WID_LGL_COMPANIES = ::WID_LGL_COMPANIES, ///< Company selection widget. + WID_LGL_COMPANY_FIRST = ::WID_LGL_COMPANY_FIRST, + WID_LGL_COMPANY_LAST = ::WID_LGL_COMPANY_LAST, + WID_LGL_COMPANIES_ALL = ::WID_LGL_COMPANIES_ALL, + WID_LGL_COMPANIES_NONE = ::WID_LGL_COMPANIES_NONE, + WID_LGL_CARGOES = ::WID_LGL_CARGOES, ///< Cargo selection widget. + WID_LGL_CARGO_FIRST = ::WID_LGL_CARGO_FIRST, + WID_LGL_CARGO_LAST = ::WID_LGL_CARGO_LAST, + WID_LGL_CARGOES_ALL = ::WID_LGL_CARGOES_ALL, + WID_LGL_CARGOES_NONE = ::WID_LGL_CARGOES_NONE, + }; + /* automatically generated from ../../widgets/main_widget.h */ /** Widgets of the #MainWindow class. */ enum MainWidgets { @@ -1525,6 +1561,7 @@ class ScriptWindow : public ScriptObject { /** 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. @@ -1611,6 +1648,7 @@ class ScriptWindow : public ScriptObject { WID_NCL_DOWNLOAD = ::WID_NCL_DOWNLOAD, ///< 'Download' button. WID_NCL_SEL_ALL_UPDATE = ::WID_NCL_SEL_ALL_UPDATE, ///< #NWID_SELECTION widget for select all/update buttons.. + WID_NCL_SEARCH_EXTERNAL = ::WID_NCL_SEARCH_EXTERNAL, ///< Search external sites for missing NewGRF. }; /* automatically generated from ../../widgets/network_widget.h */ @@ -1733,6 +1771,9 @@ class ScriptWindow : public ScriptObject { 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. }; @@ -1779,6 +1820,7 @@ class ScriptWindow : public ScriptObject { 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. @@ -1800,6 +1842,15 @@ class ScriptWindow : public ScriptObject { 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. @@ -1889,7 +1940,7 @@ class ScriptWindow : public ScriptObject { WID_OSK_CANCEL = ::WID_OSK_CANCEL, ///< Cancel key. WID_OSK_OK = ::WID_OSK_OK, ///< Ok key. WID_OSK_BACKSPACE = ::WID_OSK_BACKSPACE, ///< Backspace key. - WID_OSK_SPECIAL = ::WID_OSK_SPECIAL, ///< Special key (at keyborads often used for tab key). + WID_OSK_SPECIAL = ::WID_OSK_SPECIAL, ///< Special key (at keyboards often used for tab key). WID_OSK_CAPS = ::WID_OSK_CAPS, ///< Capslock key. WID_OSK_SHIFT = ::WID_OSK_SHIFT, ///< Shift(lock) key. WID_OSK_SPACE = ::WID_OSK_SPACE, ///< Space bar. @@ -1911,7 +1962,7 @@ class ScriptWindow : public ScriptObject { }; /* automatically generated from ../../widgets/rail_widget.h */ - /** Widgets of the #BuildRailToolbarWindow ckass. */ + /** Widgets of the #BuildRailToolbarWindow class. */ enum RailToolbarWidgets { /* Name starts with RA instead of R, because of collision with RoadToolbarWidgets */ WID_RAT_CAPTION = ::WID_RAT_CAPTION, ///< Caption of the window. @@ -1963,6 +2014,7 @@ class ScriptWindow : public ScriptObject { WID_BRAS_IMAGE = ::WID_BRAS_IMAGE, ///< Panel used at each cell of the matrix. WID_BRAS_MATRIX_SCROLL = ::WID_BRAS_MATRIX_SCROLL, ///< Scrollbar of the matrix widget. + WID_BRAS_SHOW_NEWST_DEFSIZE = ::WID_BRAS_SHOW_NEWST_DEFSIZE, ///< Selection for default-size button for newstation. WID_BRAS_SHOW_NEWST_ADDITIONS = ::WID_BRAS_SHOW_NEWST_ADDITIONS, ///< Selection for newstation class selection list. WID_BRAS_SHOW_NEWST_MATRIX = ::WID_BRAS_SHOW_NEWST_MATRIX, ///< Selection for newstation image matrix. WID_BRAS_SHOW_NEWST_RESIZE = ::WID_BRAS_SHOW_NEWST_RESIZE, ///< Selection for panel and resize at bottom right for newstation. @@ -1997,10 +2049,10 @@ class ScriptWindow : public ScriptObject { /** Widgets of the #BuildRailDepotWindow class. */ enum BuildRailDepotWidgets { /* Name starts with BRA instead of BR, because of collision with BuildRoadDepotWidgets */ - WID_BRAD_DEPOT_NE = ::WID_BRAD_DEPOT_NE, ///< Build a depot with the entrace in the north east. - WID_BRAD_DEPOT_SE = ::WID_BRAD_DEPOT_SE, ///< Build a depot with the entrace in the south east. - WID_BRAD_DEPOT_SW = ::WID_BRAD_DEPOT_SW, ///< Build a depot with the entrace in the south west. - WID_BRAD_DEPOT_NW = ::WID_BRAD_DEPOT_NW, ///< Build a depot with the entrace in the north west. + WID_BRAD_DEPOT_NE = ::WID_BRAD_DEPOT_NE, ///< Build a depot with the entrance in the north east. + WID_BRAD_DEPOT_SE = ::WID_BRAD_DEPOT_SE, ///< Build a depot with the entrance in the south east. + WID_BRAD_DEPOT_SW = ::WID_BRAD_DEPOT_SW, ///< Build a depot with the entrance in the south west. + WID_BRAD_DEPOT_NW = ::WID_BRAD_DEPOT_NW, ///< Build a depot with the entrance in the north west. }; /** Widgets of the #BuildRailWaypointWindow class. */ @@ -2065,7 +2117,6 @@ class ScriptWindow : public ScriptObject { 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_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). @@ -2087,7 +2138,8 @@ class ScriptWindow : public ScriptObject { 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 }; @@ -2097,8 +2149,8 @@ class ScriptWindow : public ScriptObject { WID_CC_RATE_DOWN = ::WID_CC_RATE_DOWN, ///< Down button. WID_CC_RATE_UP = ::WID_CC_RATE_UP, ///< Up button. WID_CC_RATE = ::WID_CC_RATE, ///< Rate of currency. - WID_CC_SEPARATOR_EDIT = ::WID_CC_SEPARATOR_EDIT, ///< Seperator edit button. - WID_CC_SEPARATOR = ::WID_CC_SEPARATOR, ///< Current seperator. + WID_CC_SEPARATOR_EDIT = ::WID_CC_SEPARATOR_EDIT, ///< Separator edit button. + WID_CC_SEPARATOR = ::WID_CC_SEPARATOR, ///< Current separator. WID_CC_PREFIX_EDIT = ::WID_CC_PREFIX_EDIT, ///< Prefix edit button. WID_CC_PREFIX = ::WID_CC_PREFIX, ///< Current prefix. WID_CC_SUFFIX_EDIT = ::WID_CC_SUFFIX_EDIT, ///< Suffix edit button. @@ -2139,11 +2191,13 @@ class ScriptWindow : public ScriptObject { WID_SM_MAP_BORDER = ::WID_SM_MAP_BORDER, ///< Border around the smallmap. WID_SM_MAP = ::WID_SM_MAP, ///< Panel containing the smallmap. WID_SM_LEGEND = ::WID_SM_LEGEND, ///< Bottom panel to display smallmap legends. + WID_SM_BLANK = ::WID_SM_BLANK, ///< Empty button as placeholder. WID_SM_ZOOM_IN = ::WID_SM_ZOOM_IN, ///< Button to zoom in one step. WID_SM_ZOOM_OUT = ::WID_SM_ZOOM_OUT, ///< Button to zoom out one step. WID_SM_CONTOUR = ::WID_SM_CONTOUR, ///< Button to select the contour view (height map). WID_SM_VEHICLES = ::WID_SM_VEHICLES, ///< Button to select the vehicles view. WID_SM_INDUSTRIES = ::WID_SM_INDUSTRIES, ///< Button to select the industries view. + WID_SM_LINKSTATS = ::WID_SM_LINKSTATS, ///< Button to select the link stats view. WID_SM_ROUTES = ::WID_SM_ROUTES, ///< Button to select the routes view. WID_SM_VEGETATION = ::WID_SM_VEGETATION, ///< Button to select the vegetation view. WID_SM_OWNERS = ::WID_SM_OWNERS, ///< Button to select the owners view. @@ -2159,6 +2213,10 @@ class ScriptWindow : public ScriptObject { /** Widgets of the #StationViewWindow class. */ enum StationViewWidgets { WID_SV_CAPTION = ::WID_SV_CAPTION, ///< Caption of the window. + WID_SV_SORT_ORDER = ::WID_SV_SORT_ORDER, ///< 'Sort order' button + WID_SV_SORT_BY = ::WID_SV_SORT_BY, ///< 'Sort by' button + WID_SV_GROUP = ::WID_SV_GROUP, ///< label for "group by" + WID_SV_GROUP_BY = ::WID_SV_GROUP_BY, ///< 'Group by' button WID_SV_WAITING = ::WID_SV_WAITING, ///< List of waiting cargo. WID_SV_SCROLLBAR = ::WID_SV_SCROLLBAR, ///< Scrollbar. WID_SV_ACCEPT_RATING_LIST = ::WID_SV_ACCEPT_RATING_LIST, ///< List of accepted cargoes / rating of cargoes. @@ -2211,6 +2269,17 @@ class ScriptWindow : public ScriptObject { WID_S_RIGHT = ::WID_S_RIGHT, ///< Right part; bank balance. }; + /* automatically generated from ../../widgets/story_widget.h */ + /** Widgets of the #GoalListWindow class. */ + enum StoryBookWidgets { + WID_SB_CAPTION = ::WID_SB_CAPTION, ///< Caption of the window. + WID_SB_SEL_PAGE = ::WID_SB_SEL_PAGE, ///< Page selector. + WID_SB_PAGE_PANEL = ::WID_SB_PAGE_PANEL, ///< Page body. + WID_SB_SCROLLBAR = ::WID_SB_SCROLLBAR, ///< Scrollbar of the goal list. + WID_SB_PREV_PAGE = ::WID_SB_PREV_PAGE, ///< Prev button. + WID_SB_NEXT_PAGE = ::WID_SB_NEXT_PAGE, ///< Next button. + }; + /* automatically generated from ../../widgets/subsidy_widget.h */ /** Widgets of the #SubsidyListWindow class. */ enum SubsidyListWidgets { @@ -2229,7 +2298,7 @@ class ScriptWindow : public ScriptObject { WID_TT_LEVEL_LAND = ::WID_TT_LEVEL_LAND, ///< Level land button. WID_TT_DEMOLISH = ::WID_TT_DEMOLISH, ///< Demolish aka dynamite button. WID_TT_BUY_LAND = ::WID_TT_BUY_LAND, ///< Buy land button. - WID_TT_PLANT_TREES = ::WID_TT_PLANT_TREES, ///< Plant trees button (note: opens seperate window, no place-push-button). + WID_TT_PLANT_TREES = ::WID_TT_PLANT_TREES, ///< Plant trees button (note: opens separate window, no place-push-button). WID_TT_PLACE_SIGN = ::WID_TT_PLACE_SIGN, ///< Place sign button. WID_TT_PLACE_OBJECT = ::WID_TT_PLACE_OBJECT, ///< Place object button. }; @@ -2289,6 +2358,8 @@ class ScriptWindow : public ScriptObject { WID_TN_STATIONS = ::WID_TN_STATIONS, ///< Station menu. WID_TN_FINANCES = ::WID_TN_FINANCES, ///< Finance menu. WID_TN_COMPANIES = ::WID_TN_COMPANIES, ///< Company menu. + WID_TN_STORY = ::WID_TN_STORY, ///< Story menu. + WID_TN_GOAL = ::WID_TN_GOAL, ///< Goal menu. WID_TN_GRAPHS = ::WID_TN_GRAPHS, ///< Graph menu. WID_TN_LEAGUE = ::WID_TN_LEAGUE, ///< Company league menu. WID_TN_INDUSTRIES = ::WID_TN_INDUSTRIES, ///< Industry menu. @@ -2341,8 +2412,8 @@ class ScriptWindow : public ScriptObject { /* automatically generated from ../../widgets/town_widget.h */ /** Widgets of the #TownDirectoryWindow class. */ enum TownDirectoryWidgets { - WID_TD_SORT_NAME = ::WID_TD_SORT_NAME, ///< Sort by town name. - WID_TD_SORT_POPULATION = ::WID_TD_SORT_POPULATION, ///< Sort by town population. + WID_TD_SORT_ORDER = ::WID_TD_SORT_ORDER, ///< Direction of sort dropdown. + WID_TD_SORT_CRITERIA = ::WID_TD_SORT_CRITERIA, ///< Criteria of sort dropdown. WID_TD_LIST = ::WID_TD_LIST, ///< List of towns. WID_TD_SCROLLBAR = ::WID_TD_SCROLLBAR, ///< Scrollbar for the town list. WID_TD_WORLD_POPULATION = ::WID_TD_WORLD_POPULATION, ///< The world's population. @@ -2466,6 +2537,7 @@ class ScriptWindow : public ScriptObject { WID_VD_TOP_DETAILS = ::WID_VD_TOP_DETAILS, ///< Panel with generic details. WID_VD_INCREASE_SERVICING_INTERVAL = ::WID_VD_INCREASE_SERVICING_INTERVAL, ///< Increase the servicing interval. WID_VD_DECREASE_SERVICING_INTERVAL = ::WID_VD_DECREASE_SERVICING_INTERVAL, ///< Decrease the servicing interval. + WID_VD_SERVICE_INTERVAL_DROPDOWN = ::WID_VD_SERVICE_INTERVAL_DROPDOWN, ///< Dropdown to select default/days/percent service interval. WID_VD_SERVICING_INTERVAL = ::WID_VD_SERVICING_INTERVAL, ///< Information about the servicing interval. WID_VD_MIDDLE_DETAILS = ::WID_VD_MIDDLE_DETAILS, ///< Details for non-trains. WID_VD_MATRIX = ::WID_VD_MATRIX, ///< List of details for trains. @@ -2473,7 +2545,7 @@ class ScriptWindow : public ScriptObject { WID_VD_DETAILS_CARGO_CARRIED = ::WID_VD_DETAILS_CARGO_CARRIED, ///< Show carried cargo per part of the train. WID_VD_DETAILS_TRAIN_VEHICLES = ::WID_VD_DETAILS_TRAIN_VEHICLES, ///< Show all parts of the train with their description. WID_VD_DETAILS_CAPACITY_OF_EACH = ::WID_VD_DETAILS_CAPACITY_OF_EACH, ///< Show the capacity of all train parts. - WID_VD_DETAILS_TOTAL_CARGO = ::WID_VD_DETAILS_TOTAL_CARGO, ///< Show the capacity and carried cargo amounts aggregrated per cargo of the train. + WID_VD_DETAILS_TOTAL_CARGO = ::WID_VD_DETAILS_TOTAL_CARGO, ///< Show the capacity and carried cargo amounts aggregated per cargo of the train. }; /** Widgets of the #VehicleListWindow class. */ diff --git a/src/script/api/template/template_cargo.hpp.sq b/src/script/api/template/template_cargo.hpp.sq index 0a80aa705..b57e5c05a 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 5668e893e..7dc63f24b 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 976ddb7a5..cca4a258b 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_story_page.hpp.sq b/src/script/api/template/template_story_page.hpp.sq new file mode 100644 index 000000000..4c322a3ac --- /dev/null +++ b/src/script/api/template/template_story_page.hpp.sq @@ -0,0 +1,29 @@ +/* $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_story_page.hpp" + +namespace SQConvert { + /* Allow enums to be used as Squirrel parameters */ + template <> inline ScriptStoryPage::StoryPageID GetParam(ForceType, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQInteger tmp; sq_getinteger(vm, index, &tmp); return (ScriptStoryPage::StoryPageID)tmp; } + template <> inline int Return(HSQUIRRELVM vm, ScriptStoryPage::StoryPageID res) { sq_pushinteger(vm, (int32)res); return 1; } + template <> inline ScriptStoryPage::StoryPageElementID GetParam(ForceType, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQInteger tmp; sq_getinteger(vm, index, &tmp); return (ScriptStoryPage::StoryPageElementID)tmp; } + template <> inline int Return(HSQUIRRELVM vm, ScriptStoryPage::StoryPageElementID res) { sq_pushinteger(vm, (int32)res); return 1; } + template <> inline ScriptStoryPage::StoryPageElementType GetParam(ForceType, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQInteger tmp; sq_getinteger(vm, index, &tmp); return (ScriptStoryPage::StoryPageElementType)tmp; } + template <> inline int Return(HSQUIRRELVM vm, ScriptStoryPage::StoryPageElementType res) { sq_pushinteger(vm, (int32)res); return 1; } + + /* Allow ScriptStoryPage to be used as Squirrel parameter */ + template <> inline ScriptStoryPage *GetParam(ForceType, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (ScriptStoryPage *)instance; } + template <> inline ScriptStoryPage &GetParam(ForceType, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(ScriptStoryPage *)instance; } + template <> inline const ScriptStoryPage *GetParam(ForceType, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (ScriptStoryPage *)instance; } + template <> inline const ScriptStoryPage &GetParam(ForceType, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(ScriptStoryPage *)instance; } + template <> inline int Return(HSQUIRRELVM vm, ScriptStoryPage *res) { if (res == NULL) { sq_pushnull(vm); return 1; } res->AddRef(); Squirrel::CreateClassInstanceVM(vm, "StoryPage", res, NULL, DefSQDestructorCallback, true); return 1; } +} // namespace SQConvert 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 000000000..34d940f92 --- /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 000000000..7325969fd --- /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_tile.hpp.sq b/src/script/api/template/template_tile.hpp.sq index 8897e8c55..e78aaa6ac 100644 --- a/src/script/api/template/template_tile.hpp.sq +++ b/src/script/api/template/template_tile.hpp.sq @@ -23,6 +23,8 @@ namespace SQConvert { template <> inline int Return(HSQUIRRELVM vm, ScriptTile::TransportType res) { sq_pushinteger(vm, (int32)res); return 1; } template <> inline ScriptTile::BuildType GetParam(ForceType, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQInteger tmp; sq_getinteger(vm, index, &tmp); return (ScriptTile::BuildType)tmp; } template <> inline int Return(HSQUIRRELVM vm, ScriptTile::BuildType res) { sq_pushinteger(vm, (int32)res); return 1; } + template <> inline ScriptTile::TerrainType GetParam(ForceType, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQInteger tmp; sq_getinteger(vm, index, &tmp); return (ScriptTile::TerrainType)tmp; } + template <> inline int Return(HSQUIRRELVM vm, ScriptTile::TerrainType res) { sq_pushinteger(vm, (int32)res); return 1; } /* Allow ScriptTile to be used as Squirrel parameter */ template <> inline ScriptTile *GetParam(ForceType, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (ScriptTile *)instance; } diff --git a/src/script/api/template/template_town.hpp.sq b/src/script/api/template/template_town.hpp.sq index 8eda7fce3..0ec1c285d 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 846bcf806..a21a75ab8 100644 --- a/src/script/api/template/template_window.hpp.sq +++ b/src/script/api/template/template_window.hpp.sq @@ -113,6 +113,8 @@ namespace SQConvert { template <> inline int Return(HSQUIRRELVM vm, ScriptWindow::IndustryCargoesWidgets res) { sq_pushinteger(vm, (int32)res); return 1; } template <> inline ScriptWindow::SelectGameIntroWidgets GetParam(ForceType, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQInteger tmp; sq_getinteger(vm, index, &tmp); return (ScriptWindow::SelectGameIntroWidgets)tmp; } template <> inline int Return(HSQUIRRELVM vm, ScriptWindow::SelectGameIntroWidgets res) { sq_pushinteger(vm, (int32)res); return 1; } + template <> inline ScriptWindow::LinkGraphLegendWidgets GetParam(ForceType, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQInteger tmp; sq_getinteger(vm, index, &tmp); return (ScriptWindow::LinkGraphLegendWidgets)tmp; } + template <> inline int Return(HSQUIRRELVM vm, ScriptWindow::LinkGraphLegendWidgets res) { sq_pushinteger(vm, (int32)res); return 1; } template <> inline ScriptWindow::MainWidgets GetParam(ForceType, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQInteger tmp; sq_getinteger(vm, index, &tmp); return (ScriptWindow::MainWidgets)tmp; } template <> inline int Return(HSQUIRRELVM vm, ScriptWindow::MainWidgets res) { sq_pushinteger(vm, (int32)res); return 1; } template <> inline ScriptWindow::LandInfoWidgets GetParam(ForceType, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQInteger tmp; sq_getinteger(vm, index, &tmp); return (ScriptWindow::LandInfoWidgets)tmp; } @@ -159,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; } @@ -207,6 +211,8 @@ namespace SQConvert { template <> inline int Return(HSQUIRRELVM vm, ScriptWindow::JoinStationWidgets res) { sq_pushinteger(vm, (int32)res); return 1; } template <> inline ScriptWindow::StatusbarWidgets GetParam(ForceType, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQInteger tmp; sq_getinteger(vm, index, &tmp); return (ScriptWindow::StatusbarWidgets)tmp; } template <> inline int Return(HSQUIRRELVM vm, ScriptWindow::StatusbarWidgets res) { sq_pushinteger(vm, (int32)res); return 1; } + template <> inline ScriptWindow::StoryBookWidgets GetParam(ForceType, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQInteger tmp; sq_getinteger(vm, index, &tmp); return (ScriptWindow::StoryBookWidgets)tmp; } + template <> inline int Return(HSQUIRRELVM vm, ScriptWindow::StoryBookWidgets res) { sq_pushinteger(vm, (int32)res); return 1; } template <> inline ScriptWindow::SubsidyListWidgets GetParam(ForceType, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQInteger tmp; sq_getinteger(vm, index, &tmp); return (ScriptWindow::SubsidyListWidgets)tmp; } template <> inline int Return(HSQUIRRELVM vm, ScriptWindow::SubsidyListWidgets res) { sq_pushinteger(vm, (int32)res); return 1; } template <> inline ScriptWindow::TerraformToolbarWidgets GetParam(ForceType, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQInteger tmp; sq_getinteger(vm, index, &tmp); return (ScriptWindow::TerraformToolbarWidgets)tmp; } diff --git a/src/script/script_config.cpp b/src/script/script_config.cpp index 7260febdf..a6e41476e 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(); } @@ -84,6 +87,15 @@ void ScriptConfig::ClearConfigList() this->settings.clear(); } +void ScriptConfig::AnchorUnchangeableSettings() +{ + for (ScriptConfigItemList::const_iterator it = this->GetConfigList()->begin(); it != this->GetConfigList()->end(); it++) { + if (((*it).flags & SCRIPTCONFIG_INGAME) == 0) { + this->SetSetting((*it).name, this->GetSetting((*it).name)); + } + } +} + int ScriptConfig::GetSetting(const char *name) const { SettingValueList::const_iterator it = this->settings.find(name); @@ -105,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; } } @@ -148,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) { @@ -172,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 23822de88..dfc675473 100644 --- a/src/script/script_config.hpp +++ b/src/script/script_config.hpp @@ -107,6 +107,16 @@ class ScriptConfig { SSS_FORCE_GAME, ///< Get the Script config from the current game }; + /** + * As long as the default of a setting has not been changed, the value of + * the setting is not stored. This to allow changing the difficulty setting + * without having to reset the script's config. However, when a setting may + * not be changed in game, we must "anchor" this value to what the setting + * would be at the time of starting. Otherwise changing the difficulty + * setting would change the setting's value (which isn't allowed). + */ + void AnchorUnchangeableSettings(); + /** * Get the value of a setting for this config. It might fallback to his * 'info' to find the default value (if not set or if not-custom difficulty @@ -162,7 +172,7 @@ class ScriptConfig { * 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 a1db9e13e..83d3bab8a 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; @@ -126,12 +128,15 @@ SQInteger ScriptInfo::AddSetting(HSQUIRRELVM vm) const SQChar *sqkey; if (SQ_FAILED(sq_getstring(vm, -2, &sqkey))) return SQ_ERROR; const char *key = SQ2OTTD(sqkey); + 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(SQ2OTTD(sqvalue)); char *s; + ValidateString(name); + /* Don't allow '=' and ',' in configure setting names, as we need those * 2 chars to nicely store the settings as a string. */ while ((s = strchr(name, '=')) != NULL) *s = '_'; @@ -141,7 +146,8 @@ 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(SQ2OTTD(sqdescription)); + ValidateString(config.description); items |= 0x002; } else if (strcmp(key, "min_value") == 0) { SQInteger res; @@ -189,7 +195,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; } @@ -202,7 +208,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; } @@ -213,7 +219,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; } @@ -227,6 +233,7 @@ 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); + ValidateString(setting_name); ScriptConfigItem *config = NULL; for (ScriptConfigItemList::iterator it = this->config_list.begin(); it != this->config_list.end(); it++) { @@ -235,7 +242,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; } @@ -255,9 +262,10 @@ SQInteger ScriptInfo::AddLabels(HSQUIRRELVM vm) 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 4ed160726..ae341a7d8 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 b84630332..b70032f44 100644 --- a/src/script/script_info_dummy.cpp +++ b/src/script/script_info_dummy.cpp @@ -15,6 +15,8 @@ #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 diff --git a/src/script/script_instance.cpp b/src/script/script_instance.cpp index 6a4471166..9cfe05c49 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 */ @@ -49,6 +51,7 @@ static void PrintFunc(bool error_msg, const SQChar *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; @@ -275,6 +278,16 @@ void ScriptInstance::CollectGarbage() const instance->engine->InsertResult(ScriptObject::GetNewGoalID()); } +/* static */ void ScriptInstance::DoCommandReturnStoryPageID(ScriptInstance *instance) +{ + instance->engine->InsertResult(ScriptObject::GetNewStoryPageID()); +} + +/* static */ void ScriptInstance::DoCommandReturnStoryPageElementID(ScriptInstance *instance) +{ + instance->engine->InsertResult(ScriptObject::GetNewStoryPageElementID()); +} + ScriptStorage *ScriptInstance::GetStorage() { return this->storage; diff --git a/src/script/script_instance.hpp b/src/script/script_instance.hpp index 2e7eb55cc..e6f3c64b2 100644 --- a/src/script/script_instance.hpp +++ b/src/script/script_instance.hpp @@ -107,6 +107,16 @@ class ScriptInstance { */ static void DoCommandReturnGoalID(ScriptInstance *instance); + /** + * Return a StoryPageID reply for a DoCommand. + */ + static void DoCommandReturnStoryPageID(ScriptInstance *instance); + + /** + * Return a StoryPageElementID reply for a DoCommand. + */ + static void DoCommandReturnStoryPageElementID(ScriptInstance *instance); + /** * Get the controller attached to the instance. */ diff --git a/src/script/script_scanner.cpp b/src/script/script_scanner.cpp index 248b17f9a..57265669f 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() @@ -76,6 +87,7 @@ ScriptScanner::~ScriptScanner() this->Reset(); free(this->main_script); + free(this->tar_file); delete this->engine; } @@ -107,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) { @@ -141,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; } @@ -169,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 792d36bae..50dad02ad 100644 --- a/src/script/script_scanner.hpp +++ b/src/script/script_scanner.hpp @@ -101,7 +101,7 @@ class ScriptScanner : public FileScanner { /** * 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 @@ class ScriptScanner : public FileScanner { */ 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 79de2de8f..8fe1e1732 100644 --- a/src/script/script_storage.hpp +++ b/src/script/script_storage.hpp @@ -17,6 +17,7 @@ #include "../road_type.h" #include "../group.h" #include "../goal_type.h" +#include "../story_type.h" #include "table/strings.h" #include @@ -49,6 +50,8 @@ friend class ScriptObject; SignID new_sign_id; ///< The ID of the new Sign. GroupID new_group_id; ///< The ID of the new Group. GoalID new_goal_id; ///< The ID of the new Goal. + StoryPageID new_story_page_id; ///< The ID of the new StoryPage. + StoryPageID new_story_page_element_id; ///< The ID of the new StoryPageElement. std::vector callback_value; ///< The values which need to survive a callback. @@ -73,6 +76,9 @@ friend class ScriptObject; 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 1f4ce7ae9..9c101c7aa 100644 --- a/src/script/squirrel.cpp +++ b/src/script/squirrel.cpp @@ -14,19 +14,24 @@ #include "../debug.h" #include "squirrel_std.hpp" #include "../fileio_func.h" +#include "../string_func.h" #include #include <../squirrel/sqpcheader.h> #include <../squirrel/sqvm.h> +/* Due to the different characters for Squirrel, the scsnprintf might be a simple + * snprint which triggers the safeguard. But it isn't always a simple snprintf. + * Likewise for scvsnprintf and scstrcat. */ +#include "../safeguards.h" +#undef snprintf +#undef vsnprintf +#undef strcat + 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 + scsnprintf(buf, lengthof(buf), _SC("Error %s:") SQ_PRINTF64 _SC("/") SQ_PRINTF64 _SC(": %s"), source, line, column, desc); /* Check if we have a custom print function */ Squirrel *engine = (Squirrel *)sq_getforeignptr(vm); @@ -251,7 +256,8 @@ 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; } @@ -283,8 +289,9 @@ 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); } else { @@ -328,12 +335,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 */ @@ -345,7 +357,7 @@ Squirrel::Squirrel(const char *APIName) : sq_newclosure(this->vm, &Squirrel::_RunError, 0); sq_seterrorhandler(this->vm); - /* Set the foreigh pointer, so we can always find this instance from within the VM */ + /* Set the foreign pointer, so we can always find this instance from within the VM */ sq_setforeignptr(this->vm, this); sq_pushroottable(this->vm); @@ -464,7 +476,10 @@ 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, _SC("cannot seek the file")); + } if (SQ_SUCCEEDED(sq_readclosure(vm, _io_file_read, &f))) { FioFCloseFile(file); return SQ_OK; @@ -491,7 +506,13 @@ SQRESULT Squirrel::LoadFile(HSQUIRRELVM vm, const char *filename, SQBool printer } 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, _SC("cannot seek the file")); + } + break; } if (SQ_SUCCEEDED(sq_compile(vm, func, &f, OTTD2SQ(filename), printerror))) { @@ -532,24 +553,39 @@ 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); - vm->GetAt(vm->_stackbase + vm->_suspended_target) = vm->GetUp(-1); - vm->Pop(); + if (this->IsSuspended()) { // Called before resuming a suspended script? + vm->GetAt(vm->_stackbase + vm->_suspended_target) = vm->GetUp(-1); + vm->Pop(); + } } void Squirrel::InsertResult(int result) { sq_pushinteger(this->vm, result); - vm->GetAt(vm->_stackbase + vm->_suspended_target) = vm->GetUp(-1); - vm->Pop(); + if (this->IsSuspended()) { // Called before resuming a suspended script? + vm->GetAt(vm->_stackbase + vm->_suspended_target) = vm->GetUp(-1); + vm->Pop(); + } } /* static */ void Squirrel::DecreaseOps(HSQUIRRELVM vm, int ops) @@ -567,11 +603,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 4e31d3247..4fdde85a1 100644 --- a/src/script/squirrel.hpp +++ b/src/script/squirrel.hpp @@ -41,6 +41,11 @@ class Squirrel { */ 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. @@ -248,11 +253,6 @@ class Squirrel { */ bool HasScriptCrashed(); - /** - * Reset the crashed status. - */ - void ResetCrashed(); - /** * Set the script status to crashed. */ @@ -267,6 +267,11 @@ class Squirrel { * 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 3e3764384..760d6c3bf 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,8 +85,8 @@ 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; } @@ -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(SQ2OTTD(tmp)); sq_poptop(vm); *ptr->Append() = (void *)tmp_str; str_validate(tmp_str, tmp_str + strlen(tmp_str)); diff --git a/src/script/squirrel_std.cpp b/src/script/squirrel_std.cpp index 9de119e1e..0fb8564c8 100644 --- a/src/script/squirrel_std.cpp +++ b/src/script/squirrel_std.cpp @@ -16,6 +16,13 @@ #include "squirrel_std.hpp" #include "../core/alloc_func.hpp" #include "../core/math_func.hpp" +#include "../string_func.h" + +/* Due to the different characters for Squirrel, the scstrcat might be a simple + * strcat which triggers the safeguard. But it isn't always a simple strcat. */ +#include "../safeguards.h" +#undef strcat +#undef strdup SQInteger SquirrelStd::min(HSQUIRRELVM vm) @@ -66,7 +73,7 @@ SQInteger SquirrelStd::require(HSQUIRRELVM vm) 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)); + char *filen = stredup(SQ2OTTD(real_filename)); #if (PATHSEPCHAR != '/') for (char *n = filen; *n != '\0'; n++) if (*n == '/') *n = PATHSEPCHAR; #endif diff --git a/src/script/squirrel_std.hpp b/src/script/squirrel_std.hpp index 248b9773e..b1c7b3013 100644 --- a/src/script/squirrel_std.hpp +++ b/src/script/squirrel_std.hpp @@ -58,7 +58,7 @@ void squirrel_register_std(Squirrel *engine); /** * Register all standard functions that are available on first startup. - * @note this set is very limited, and is only ment to load other scripts and things like that. + * @note this set is very limited, and is only meant to load other scripts and things like that. */ void squirrel_register_global_std(Squirrel *engine); diff --git a/src/sdl.cpp b/src/sdl.cpp index 91d52d917..79e9ed292 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/sdl.h b/src/sdl.h index 2f4131e1a..ff1092358 100644 --- a/src/sdl.h +++ b/src/sdl.h @@ -57,6 +57,8 @@ void SdlClose(uint32 x); Uint32 (SDLCALL *SDL_MapRGB)(SDL_PixelFormat *, Uint8, Uint8, Uint8); int (SDLCALL *SDL_VideoModeOK)(int, int, int, Uint32); SDL_version *(SDLCALL *SDL_Linked_Version)(); + int (SDLCALL *SDL_BlitSurface)(SDL_Surface *, SDL_Rect *, SDL_Surface *, SDL_Rect *); + SDL_Surface *(SDLCALL *SDL_CreateRGBSurface)(Uint32, int, int, int, Uint32, Uint32, Uint32, Uint32); }; extern SDLProcs sdl_proc; diff --git a/src/settings.cpp b/src/settings.cpp index 5a80b9bbd..5cbdce9d9 100644 --- a/src/settings.cpp +++ b/src/settings.cpp @@ -71,6 +71,8 @@ #include "table/strings.h" #include "table/settings.h" +#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). @@ -98,7 +100,7 @@ static const char * const _list_group_names[] = { }; /** - * Find the index value of a ONEofMANY type in a string seperated by | + * Find the index value of a ONEofMANY type in a string separated by | * @param many full domain of values the ONEofMANY setting can have * @param one the current value of the setting for which a value needs found * @param onelen force calculation of the *one parameter @@ -130,7 +132,7 @@ static size_t LookupOneOfMany(const char *many, const char *one, size_t onelen = * Find the set-integer value MANYofMANY type in a string * @param many full domain of values the MANYofMANY setting can have * @param str the current string value of the setting, each individual - * of seperated by a whitespace,tab or | character + * of separated by a whitespace,tab or | character * @return the 'fully' set integer, or -1 if a set is not found */ static size_t LookupManyOfMany(const char *many, const char *str) @@ -159,7 +161,7 @@ static size_t LookupManyOfMany(const char *many, const char *str) /** * Parse an integerlist string and set each found value - * @param p the string to be parsed. Each element in the list is seperated by a + * @param p the string to be parsed. Each element in the list is separated by a * comma or a space character * @param items pointer to the integerlist-array that will be filled with values * @param maxitems the maximum number of elements the integerlist-array has @@ -248,7 +250,7 @@ static bool LoadIntList(const char *str, void *array, int nelems, VarType type) /** * Convert an integer-array (intlist) to a string representation. Each value - * is seperated by a comma or a space character + * is separated by a comma or a space character * @param buf output buffer where the string-representation will be stored * @param last last item to write to in the output buffer * @param array pointer to the integer-arrays that is read from @@ -524,13 +526,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; @@ -685,7 +687,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 +709,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); } } @@ -732,6 +734,28 @@ static void IniSaveSettingList(IniFile *ini, const char *grpname, StringList *li } } +/** + * Load a WindowDesc from config. + * @param ini IniFile handle to the ini file with the source data + * @param grpname character string identifying the section-header of the ini file that will be parsed + * @param desc Destination WindowDesc + */ +void IniLoadWindowSettings(IniFile *ini, const char *grpname, void *desc) +{ + IniLoadSettings(ini, _window_settings, grpname, desc); +} + +/** + * Save a WindowDesc to config. + * @param ini IniFile handle to the ini file where the destination data is saved + * @param grpname character string identifying the section-header of the ini file + * @param desc Source WindowDesc + */ +void IniSaveWindowSettings(IniFile *ini, const char *grpname, void *desc) +{ + IniSaveSettings(ini, _window_settings, grpname, desc); +} + /** * Check whether the setting is editable in the current gamemode. * @param do_command true if this is about checking a command from the server. @@ -809,9 +833,10 @@ static bool InvalidateDetailsWindow(int32 p1) return true; } -static bool InvalidateStationBuildWindow(int32 p1) +static bool StationSpreadChanged(int32 p1) { - SetWindowDirty(WC_BUILD_STATION, 0); + InvalidateWindowData(WC_SELECT_STATION, 0); + InvalidateWindowData(WC_BUILD_STATION, 0); return true; } @@ -846,7 +871,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; @@ -855,11 +880,14 @@ static bool UpdateConsists(int32 p1) /* Check service intervals of vehicles, p1 is value of % or day based servicing */ static bool CheckInterval(int32 p1) { + bool update_vehicles; VehicleDefaultSettings *vds; if (_game_mode == GM_MENU || !Company::IsValidID(_current_company)) { vds = &_settings_client.company.vehicle; + update_vehicles = false; } else { vds = &Company::Get(_current_company)->settings.vehicle; + update_vehicles = true; } if (p1 != 0) { @@ -874,11 +902,72 @@ static bool CheckInterval(int32 p1) vds->servint_ships = 360; } + if (update_vehicles) { + const Company *c = Company::Get(_current_company); + Vehicle *v; + FOR_ALL_VEHICLES(v) { + if (v->owner == _current_company && v->IsPrimaryVehicle() && !v->ServiceIntervalIsCustom()) { + v->SetServiceInterval(CompanyServiceInterval(c, v->type)); + v->SetServiceIntervalIsPercent(p1 != 0); + } + } + } + InvalidateDetailsWindow(0); return true; } +static bool UpdateInterval(VehicleType type, int32 p1) +{ + bool update_vehicles; + VehicleDefaultSettings *vds; + if (_game_mode == GM_MENU || !Company::IsValidID(_current_company)) { + vds = &_settings_client.company.vehicle; + update_vehicles = false; + } else { + vds = &Company::Get(_current_company)->settings.vehicle; + update_vehicles = true; + } + + /* Test if the interval is valid */ + uint16 interval = GetServiceIntervalClamped(p1, vds->servint_ispercent); + if (interval != p1) return false; + + if (update_vehicles) { + Vehicle *v; + FOR_ALL_VEHICLES(v) { + if (v->owner == _current_company && v->type == type && v->IsPrimaryVehicle() && !v->ServiceIntervalIsCustom()) { + v->SetServiceInterval(p1); + } + } + } + + InvalidateDetailsWindow(0); + + return true; +} + +static bool UpdateIntervalTrains(int32 p1) +{ + return UpdateInterval(VEH_TRAIN, p1); +} + +static bool UpdateIntervalRoadVeh(int32 p1) +{ + return UpdateInterval(VEH_ROAD, p1); +} + +static bool UpdateIntervalShips(int32 p1) +{ + return UpdateInterval(VEH_SHIP, p1); +} + +static bool UpdateIntervalAircraft(int32 p1) +{ + return UpdateInterval(VEH_AIRCRAFT, p1); +} + static bool TrainAccelerationModelChanged(int32 p1) { Train *t; @@ -1037,6 +1126,17 @@ static bool InvalidateCompanyInfrastructureWindow(int32 p1) return true; } +/** + * Invalidate the company details window after the shares setting changed. + * @param p1 Unused. + * @return Always true. + */ +static bool InvalidateCompanyWindow(int32 p1) +{ + InvalidateWindowClassesData(WC_COMPANY); + return true; +} + /** Checks if any settings are set to incorrect values, and sets them to correct values in that case. */ static void ValidateSettings() { @@ -1307,6 +1407,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. @@ -1323,16 +1457,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 */ @@ -1349,7 +1508,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; @@ -1359,7 +1518,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; @@ -1393,7 +1552,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(); @@ -1401,7 +1560,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); } } @@ -1416,7 +1575,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(); @@ -1424,7 +1583,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); } @@ -1437,7 +1596,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 }, @@ -1457,10 +1616,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); } } @@ -1501,7 +1665,7 @@ static IniFile *IniLoadConfig() void LoadFromConfig(bool minimal) { IniFile *ini = IniLoadConfig(); - if (!minimal) ResetCurrencies(false); // Initialize the array of curencies, without preserving the custom one + if (!minimal) ResetCurrencies(false); // Initialize the array of currencies, without preserving the custom one /* Load basic settings only during bootstrap, load other settings not during bootstrap */ HandleSettingDescs(ini, IniLoadSettings, IniLoadSettingList, minimal, !minimal); @@ -1559,7 +1723,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); } } @@ -1574,8 +1738,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); @@ -1592,8 +1757,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); @@ -1607,8 +1773,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); @@ -1616,7 +1783,7 @@ void DeleteGRFPresetFromConfig(const char *config_name) delete ini; } -static const SettingDesc *GetSettingDescription(uint index) +const SettingDesc *GetSettingDescription(uint index) { if (index >= lengthof(_settings)) return NULL; return &_settings[index]; @@ -1826,10 +1993,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); @@ -1940,9 +2107,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)", @@ -1966,11 +2133,11 @@ void IConsoleListSettings(const char *prefilter) 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); } diff --git a/src/settings_func.h b/src/settings_func.h index c6f0892c7..3b3387b5f 100644 --- a/src/settings_func.h +++ b/src/settings_func.h @@ -15,6 +15,8 @@ #include "core/smallvec_type.hpp" #include "company_type.h" +struct IniFile; + void IConsoleSetSetting(const char *name, const char *value, bool force_newgame = false); void IConsoleSetSetting(const char *name, int32 value); void IConsoleGetSetting(const char *name, bool force_newgame = false); @@ -24,6 +26,9 @@ void LoadFromConfig(bool minimal = false); void SaveToConfig(); void CheckConfig(); +void IniLoadWindowSettings(IniFile *ini, const char *grpname, void *desc); +void IniSaveWindowSettings(IniFile *ini, const char *grpname, void *desc); + /* Functions to load and save NewGRF settings to a separate * configuration file, used for presets. */ typedef AutoFreeSmallVector GRFPresetList; diff --git a/src/settings_gui.cpp b/src/settings_gui.cpp index 616e8d6e1..2fd8b3e54 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,13 +37,10 @@ #include "stringfilter_type.h" #include "querystring_gui.h" +#include + +#include "safeguards.h" -static const StringID _units_dropdown[] = { - STR_GAME_OPTIONS_MEASURING_UNITS_IMPERIAL, - STR_GAME_OPTIONS_MEASURING_UNITS_METRIC, - STR_GAME_OPTIONS_MEASURING_UNITS_SI, - INVALID_STRING_ID -}; static const StringID _driveside_dropdown[] = { STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT, @@ -116,7 +112,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; @@ -160,12 +156,12 @@ struct GameOptionsWindow : Window { GameSettings *opt; bool reload; - GameOptionsWindow(const WindowDesc *desc) : Window() + GameOptionsWindow(WindowDesc *desc) : Window(desc) { this->opt = &GetGameSettings(); this->reload = false; - this->InitNested(desc, WN_GAME_OPTIONS_GAME_OPTIONS); + this->InitNested(WN_GAME_OPTIONS_GAME_OPTIONS); this->OnInvalidateData(0); } @@ -189,34 +185,18 @@ struct GameOptionsWindow : Window { list = new DropDownList(); *selected_index = this->opt->locale.currency; StringID *items = BuildCurrencyDropdown(); - uint disabled = _game_mode == GM_MENU ? 0 : ~GetMaskOfAllowedCurrencies(); - int custom_index = -1; + uint64 disabled = _game_mode == GM_MENU ? 0LL : ~GetMaskOfAllowedCurrencies(); /* Add non-custom currencies; sorted naturally */ - for (uint i = 0; *items != INVALID_STRING_ID; items++, i++) { - if (*items == STR_GAME_OPTIONS_CURRENCY_CUSTOM) { - custom_index = i; - } else { - list->push_back(new DropDownListStringItem(*items, i, HasBit(disabled, i))); - } + for (uint i = 0; i < CURRENCY_END; items++, i++) { + if (i == CURRENCY_CUSTOM) continue; + *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 */ - if (custom_index >= 0) { - list->push_back(new DropDownListItem(-1, false)); // separator line - list->push_back(new DropDownListStringItem(STR_GAME_OPTIONS_CURRENCY_CUSTOM, custom_index, HasBit(disabled, custom_index))); - } - break; - } - - case WID_GO_DISTANCE_DROPDOWN: { // Setup distance unit dropdown - list = new DropDownList(); - *selected_index = this->opt->locale.units; - const StringID *items = _units_dropdown; - for (uint i = 0; *items != INVALID_STRING_ID; items++, i++) { - list->push_back(new DropDownListStringItem(*items, i, false)); - } + *list->Append() = new DropDownListItem(-1, false); // separator line + *list->Append() = new DropDownListStringItem(STR_GAME_OPTIONS_CURRENCY_CUSTOM, CURRENCY_CUSTOM, HasBit(disabled, CURRENCY_CUSTOM)); break; } @@ -234,7 +214,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; } @@ -245,25 +225,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; } @@ -272,7 +252,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; } @@ -281,26 +261,19 @@ 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)); - } - break; - - case WID_GO_SCREENSHOT_DROPDOWN: // Setup screenshot format 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)); + *list->Append() = new DropDownListStringItem(SPECSTR_RESOLUTION_START + i, i, false); } break; @@ -327,13 +300,11 @@ struct GameOptionsWindow : Window { { switch (widget) { case WID_GO_CURRENCY_DROPDOWN: SetDParam(0, _currency_specs[this->opt->locale.currency].name); break; - case WID_GO_DISTANCE_DROPDOWN: SetDParam(0, STR_GAME_OPTIONS_MEASURING_UNITS_IMPERIAL + this->opt->locale.units); break; case WID_GO_ROADSIDE_DROPDOWN: SetDParam(0, STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT + this->opt->vehicle.road_side); break; case WID_GO_TOWNNAME_DROPDOWN: SetDParam(0, TownName(this->opt->game_creation.town_name)); break; 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_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; @@ -416,14 +387,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; } @@ -466,6 +435,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; } @@ -484,7 +455,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; @@ -496,16 +467,11 @@ struct GameOptionsWindow : Window { { switch (widget) { case WID_GO_CURRENCY_DROPDOWN: // Currency - if (index == CUSTOM_CURRENCY_ID) ShowCustCurrency(); + if (index == CURRENCY_CUSTOM) ShowCustCurrency(); this->opt->locale.currency = index; ReInitAllWindows(); break; - case WID_GO_DISTANCE_DROPDOWN: // Measuring units - this->opt->locale.units = index; - MarkWholeScreenDirty(); - break; - case WID_GO_ROADSIDE_DROPDOWN: // Road side if (this->opt->vehicle.road_side != index) { // only change if setting changed uint i; @@ -541,11 +507,6 @@ struct GameOptionsWindow : Window { } break; - case WID_GO_SCREENSHOT_DROPDOWN: // Change screenshot format - SetScreenshotFormat(index); - this->SetDirty(); - break; - case WID_GO_BASE_GRF_DROPDOWN: this->SetMediaSet(index); break; @@ -592,9 +553,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(), @@ -611,17 +569,14 @@ static const NWidgetPart _nested_game_options_widgets[] = { EndContainer(), NWidget(NWID_VERTICAL), SetPIP(0, 6, 0), - NWidget(WWT_FRAME, COLOUR_GREY), SetDataTip(STR_GAME_OPTIONS_MEASURING_UNITS_FRAME, STR_NULL), - NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_GO_DISTANCE_DROPDOWN), SetMinimalSize(150, 12), SetDataTip(STR_BLACK_STRING, STR_GAME_OPTIONS_MEASURING_UNITS_DROPDOWN_TOOLTIP), SetFill(1, 0), - EndContainer(), NWidget(WWT_FRAME, COLOUR_GREY), SetDataTip(STR_GAME_OPTIONS_TOWN_NAMES_FRAME, STR_NULL), NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_GO_TOWNNAME_DROPDOWN), SetMinimalSize(150, 12), SetDataTip(STR_BLACK_STRING, STR_GAME_OPTIONS_TOWN_NAMES_DROPDOWN_TOOLTIP), SetFill(1, 0), EndContainer(), 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(), @@ -668,8 +623,8 @@ static const NWidgetPart _nested_game_options_widgets[] = { EndContainer(), }; -static const WindowDesc _game_options_desc( - WDP_CENTER, 0, 0, +static WindowDesc _game_options_desc( + WDP_CENTER, "settings_game", 0, 0, WC_GAME_OPTIONS, WC_NONE, 0, _nested_game_options_widgets, lengthof(_nested_game_options_widgets) @@ -696,27 +651,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. */ @@ -728,30 +662,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. @@ -759,38 +691,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; +}; + +/** 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); - 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); + 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(); @@ -798,144 +762,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) + + SettingsPage(StringID title); -/* == SettingEntry methods == */ + 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 ot 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); } /** @@ -949,47 +932,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; } /** @@ -999,20 +945,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); } /** @@ -1026,11 +959,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); @@ -1070,35 +1002,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); @@ -1106,113 +1033,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 { @@ -1229,19 +1070,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; @@ -1269,33 +1110,32 @@ void SettingEntry::DrawSetting(GameSettings *settings_ptr, int left, int right, DrawString(text_left, text_right, y, 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(); } } @@ -1304,10 +1144,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); } } @@ -1317,13 +1157,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; @@ -1332,24 +1172,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; } @@ -1360,12 +1200,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; } @@ -1378,337 +1217,504 @@ 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 strucure 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 - 8 : left, y + (SETTING_HEIGHT - 11) / 2); + DrawString(rtl ? left : left + 12, rtl ? right - 12 : right, y, this->title); +} -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")); + 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_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_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.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_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.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")); + routing->Add(new SettingEntry("order.automatic_timetable_separation")); + } + + 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_bridge_length")); + 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 @@ -1719,6 +1725,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 @@ -1736,24 +1751,22 @@ 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(const WindowDesc *desc) : filter_editbox(50) + 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 - } + 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 @@ -1762,9 +1775,9 @@ struct GameSettingsWindow : Window { this->closing_dropdown = false; this->manually_changed_folding = false; - this->CreateNestedTree(desc); + this->CreateNestedTree(); this->vscroll = this->GetScrollbar(WID_GS_SCROLLBAR); - this->FinishInitNested(desc, WN_GAME_OPTIONS_GAME_SETTINGS); + this->FinishInitNested(WN_GAME_OPTIONS_GAME_SETTINGS); this->querystrings[WID_GS_FILTER] = &this->filter_editbox; this->filter_editbox.cancel_button = QueryString::ACTION_CLEAR; @@ -1794,10 +1807,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; } @@ -1811,7 +1829,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 @@ -1844,16 +1892,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; @@ -1862,14 +1910,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()) { @@ -1910,13 +1962,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; @@ -1940,19 +1992,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; @@ -1960,8 +2014,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()) { @@ -2003,7 +2058,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); @@ -2065,9 +2120,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(); } @@ -2100,8 +2155,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)) { @@ -2114,9 +2168,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(); } @@ -2131,8 +2185,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. */ @@ -2150,13 +2204,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(); @@ -2188,17 +2242,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); } @@ -2210,7 +2275,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(); } @@ -2228,13 +2293,16 @@ 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_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(), @@ -2247,9 +2315,7 @@ 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), @@ -2267,8 +2333,8 @@ static const NWidgetPart _nested_settings_selection_widgets[] = { EndContainer(), }; -static const WindowDesc _settings_selection_desc( - WDP_CENTER, 510, 450, +static WindowDesc _settings_selection_desc( + WDP_CENTER, "settings", 510, 450, WC_GAME_OPTIONS, WC_NONE, 0, _nested_settings_selection_widgets, lengthof(_nested_settings_selection_widgets) @@ -2348,9 +2414,9 @@ void DrawBoolButton(int x, int y, bool state, bool clickable) struct CustomCurrencyWindow : Window { int query_widget; - CustomCurrencyWindow(const WindowDesc *desc) : Window() + CustomCurrencyWindow(WindowDesc *desc) : Window(desc) { - this->InitNested(desc); + this->InitNested(); SetButtonState(); } @@ -2491,7 +2557,7 @@ struct CustomCurrencyWindow : Window { _custom_currency.rate = Clamp(atoi(str), 1, UINT16_MAX); break; - case WID_CC_SEPARATOR: // Thousands seperator + case WID_CC_SEPARATOR: // Thousands separator strecpy(_custom_currency.separator, str, lastof(_custom_currency.separator)); break; @@ -2560,8 +2626,8 @@ static const NWidgetPart _nested_cust_currency_widgets[] = { EndContainer(), }; -static const WindowDesc _cust_currency_desc( - WDP_CENTER, 0, 0, +static WindowDesc _cust_currency_desc( + WDP_CENTER, NULL, 0, 0, WC_CUSTOM_CURRENCY, WC_NONE, 0, _nested_cust_currency_widgets, lengthof(_nested_cust_currency_widgets) diff --git a/src/settings_internal.h b/src/settings_internal.h index 851496c96..028e977e4 100644 --- a/src/settings_internal.h +++ b/src/settings_internal.h @@ -27,7 +27,7 @@ enum SettingDescTypeLong { SDT_BOOLX = 1, ///< a boolean number SDT_ONEOFMANY = 2, ///< bitmasked number where only ONE bit may be set SDT_MANYOFMANY = 3, ///< bitmasked number where MULTIPLE bits may be set - SDT_INTLIST = 4, ///< list of integers seperated by a comma ',' + SDT_INTLIST = 4, ///< list of integers separated by a comma ',' SDT_STRING = 5, ///< string with a pre-allocated buffer SDT_END, /* 10 more possible primitives */ @@ -88,7 +88,7 @@ enum SettingType { }; typedef bool OnChange(int32 var); ///< callback prototype on data modification -typedef size_t OnConvert(const char *value); ///< callback prototype for convertion error +typedef size_t OnConvert(const char *value); ///< callback prototype for conversion error /** Properties of config file settings. */ struct SettingDescBase { diff --git a/src/settings_type.h b/src/settings_type.h index 72cad4c09..b20c37b64 100644 --- a/src/settings_type.h +++ b/src/settings_type.h @@ -17,6 +17,8 @@ #include "transport_type.h" #include "network/core/config.h" #include "company_type.h" +#include "cargotype.h" +#include "linkgraph/linkgraph_type.h" #include "zoom_type.h" #include "openttd.h" @@ -137,6 +139,10 @@ struct GUISettings { uint16 console_backlog_timeout; ///< the minimum amount of time items should be in the console backlog before they will be removed in ~3 seconds granularity. uint16 console_backlog_length; ///< the minimum amount of items in the console backlog before items will be removed. + + uint8 station_gui_group_order; ///< the order of grouping cargo entries in the station gui + 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 uint8 network_chat_box_height; ///< height of the chat box in lines @@ -188,7 +194,12 @@ struct MusicSettings { /** Settings related to currency/unit systems. */ struct LocaleSettings { byte currency; ///< currency we currently use - byte units; ///< unit system we show everything + byte units_velocity; ///< unit system for velocity + byte units_power; ///< unit system for power + byte units_weight; ///< unit system for weight + byte units_volume; ///< unit system for volume + byte units_force; ///< unit system for force + byte units_height; ///< unit system for height char *digit_group_separator; ///< thousand separator for non-currencies char *digit_group_separator_currency; ///< thousand separator for currencies char *digit_decimal_separator; ///< decimal separator @@ -424,7 +435,8 @@ struct OrderSettings { bool improved_load; ///< improved loading algorithm bool gradual_loading; ///< load vehicles gradually bool selectgoods; ///< only send the goods to station if a train has been there - bool no_servicing_if_no_breakdowns; ///< dont send vehicles to depot when breakdowns are disabled + bool no_servicing_if_no_breakdowns; ///< don't send vehicles to depot when breakdowns are disabled + bool automatic_timetable_separation; ///< Enable automatic separation of vehicles in the timetable. bool serviceathelipad; ///< service helicopters at helipads automatically (no need to send to depot) }; @@ -463,7 +475,7 @@ struct EconomySettings { bool fund_buildings; ///< allow funding new buildings bool fund_roads; ///< allow funding local road reconstruction bool give_money; ///< allow giving other companies money - bool mod_road_rebuild; ///< roadworks remove unneccesary RoadBits + bool mod_road_rebuild; ///< roadworks remove unnecessary RoadBits bool multiple_industry_per_town; ///< allow many industries of the same type per town uint8 town_growth_rate; ///< town growth rate uint8 larger_towns; ///< the number of cities to build. These start off larger and grow twice as fast @@ -477,6 +489,26 @@ struct EconomySettings { bool infrastructure_maintenance; ///< enable monthly maintenance fee for owner infrastructure }; +struct LinkGraphSettings { + uint16 recalc_time; ///< time (in days) for recalculating each link graph component. + uint16 recalc_interval; ///< time (in days) between subsequent checks for link graphs to be calculated. + DistributionTypeByte distribution_pax; ///< distribution type for passengers + DistributionTypeByte distribution_mail; ///< distribution type for mail + DistributionTypeByte distribution_armoured; ///< distribution type for armoured cargo class + DistributionTypeByte distribution_default; ///< distribution type for all other goods + uint8 accuracy; ///< accuracy when calculating things on the link graph. low accuracy => low running time + uint8 demand_size; ///< influence of supply ("station size") on the demand function + uint8 demand_distance; ///< influence of distance between stations on the demand function + uint8 short_path_saturation; ///< percentage up to which short paths are saturated before saturating most capacious paths + + inline DistributionType GetDistributionType(CargoID cargo) const { + if (IsCargoInClass(cargo, CC_PASSENGERS)) return this->distribution_pax; + if (IsCargoInClass(cargo, CC_MAIL)) return this->distribution_mail; + if (IsCargoInClass(cargo, CC_ARMOURED)) return this->distribution_armoured; + return this->distribution_default; + } +}; + /** Settings related to stations. */ struct StationSettings { bool modified_catchment; ///< different-size catchment areas @@ -517,6 +549,7 @@ struct GameSettings { OrderSettings order; ///< settings related to orders VehicleSettings vehicle; ///< options for vehicles EconomySettings economy; ///< settings to change the economy + LinkGraphSettings linkgraph; ///< settings for link graph calculations StationSettings station; ///< settings related to station management LocaleSettings locale; ///< settings related to used currency/unit system in the current game }; diff --git a/src/settingsgen/settingsgen.cpp b/src/settingsgen/settingsgen.cpp index d97582247..dd92e2627 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 29f4439d4..18f04c8fa 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 5c2056081..4fcda7c27 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]; } @@ -115,6 +124,7 @@ SpriteID Ship::GetImage(Direction direction, EngineImageType image_type) const spritenum = this->GetEngine()->original_image_index; } + assert(IsValidImageIndex(spritenum)); return _ship_sprites[spritenum] + direction; } @@ -245,7 +255,8 @@ Trackdir Ship::GetVehicleTrackdir() const void Ship::MarkDirty() { - this->UpdateViewport(false, false); + this->colourmap = PAL_NONE; + this->UpdateViewport(true, false); this->UpdateCache(); } @@ -367,7 +378,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) { @@ -375,7 +386,7 @@ static bool ShipAccelerate(Vehicle *v) SetWindowWidgetDirty(WC_VEHICLE_VIEW, v->index, WID_VV_START_STOP); } - /* Convert direction-indepenent speed into direction-dependent speed. (old movement method) */ + /* Convert direction-independent speed into direction-dependent speed. (old movement method) */ spd = v->GetOldAdvanceSpeed(spd); if (spd == 0) return false; @@ -681,8 +692,10 @@ CommandCost CmdBuildShip(TileIndex tile, DoCommandFlag flags, const Engine *e, u v->spritenum = svi->image_index; v->cargo_type = e->GetDefaultCargoType(); v->cargo_cap = svi->capacity; + v->refit_cap = 0; v->last_station_visited = INVALID_STATION; + v->last_loading_station = INVALID_STATION; v->engine_type = e->index; v->reliability = e->reliability; @@ -692,7 +705,7 @@ CommandCost CmdBuildShip(TileIndex tile, DoCommandFlag flags, const Engine *e, u v->state = TRACK_BIT_DEPOT; - v->service_interval = Company::Get(_current_company)->settings.vehicle.servint_ships; + v->SetServiceInterval(Company::Get(_current_company)->settings.vehicle.servint_ships); v->date_of_last_service = _date; v->build_year = _cur_year; v->cur_image = SPR_IMG_QUERY; @@ -701,6 +714,7 @@ CommandCost CmdBuildShip(TileIndex tile, DoCommandFlag flags, const Engine *e, u v->UpdateCache(); if (e->flags & ENGINE_EXCLUSIVE_PREVIEW) SetBit(v->vehicle_flags, VF_BUILT_AS_PROTOTYPE); + v->SetServiceIntervalIsPercent(Company::Get(_current_company)->settings.vehicle.servint_ispercent); v->InvalidateNewGRFCacheOfChain(); diff --git a/src/ship_gui.cpp b/src/ship_gui.cpp index d036cef43..cd04efbef 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 @@ -62,7 +64,7 @@ void DrawShipDetails(const Vehicle *v, int left, int right, int y) SetDParam(0, v->engine_type); SetDParam(1, v->build_year); SetDParam(2, v->value); - DrawString(left, right, y, STR_VEHICLE_INFO_BUILT_VALUE, TC_FROMSTRING, SA_LEFT | SA_STRIP); + DrawString(left, right, y, STR_VEHICLE_INFO_BUILT_VALUE); SetDParam(0, v->cargo_type); SetDParam(1, v->cargo_cap); @@ -70,9 +72,9 @@ void DrawShipDetails(const Vehicle *v, int left, int right, int y) DrawString(left, right, y + FONT_HEIGHT_NORMAL, STR_VEHICLE_INFO_CAPACITY); StringID str = STR_VEHICLE_DETAILS_CARGO_EMPTY; - if (!v->cargo.Empty()) { + if (v->cargo.StoredCount() > 0) { SetDParam(0, v->cargo_type); - SetDParam(1, v->cargo.Count()); + SetDParam(1, v->cargo.StoredCount()); SetDParam(2, v->cargo.Source()); str = STR_VEHICLE_DETAILS_CARGO_FROM; } diff --git a/src/signal.cpp b/src/signal.cpp index d991d6233..8e870b53d 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 @@ -52,7 +54,7 @@ template struct SmallSet { private: uint n; // actual number of units - bool overflowed; // did we try to oveflow the set? + bool overflowed; // did we try to overflow the set? const char *name; // name, used for debugging purposes... /** Element of set */ @@ -73,7 +75,7 @@ struct SmallSet { } /** - * Returns value of 'oveflowed' + * Returns value of 'overflowed' * @return did we try to overflow the set? */ bool Overflowed() @@ -131,7 +133,7 @@ struct SmallSet { * Tries to find given tile and dir in the set * @param tile tile * @param dir and dir to find - * @return true iff the tile & dir elemnt was found + * @return true iff the tile & dir element was found */ bool IsIn(TileIndex tile, Tdir dir) { @@ -201,7 +203,7 @@ static Vehicle *TrainOnTileEnum(Vehicle *v, void *) * The new and reverse direction is removed from _globset, because we are sure * it doesn't need to be checked again * Also, remove reverse direction from _tbdset - * This is the 'core' part so the graph seaching won't enter any tile twice + * This is the 'core' part so the graph searching won't enter any tile twice * * @param t1 tile we are entering * @param d1 direction (tile side) we are entering @@ -227,7 +229,7 @@ static inline bool CheckAddToTodoSet(TileIndex t1, DiagDirection d1, TileIndex t * The new and reverse direction is removed from Global set, because we are sure * it doesn't need to be checked again * Also, remove reverse direction from Todo set - * This is the 'core' part so the graph seaching won't enter any tile twice + * This is the 'core' part so the graph searching won't enter any tile twice * * @param t1 tile we are entering * @param d1 direction (tile side) we are entering @@ -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 53465fc8a..2a23a43c9 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 3109d1ef0..4badd3605 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 120906ae9..2358e9492 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. @@ -149,18 +151,17 @@ struct SignListWindow : Window, SignList { int text_offset; ///< Offset of the sign text relative to the left edge of the WID_SIL_LIST widget. Scrollbar *vscroll; - SignListWindow(const WindowDesc *desc, WindowNumber window_number) : filter_editbox(MAX_LENGTH_SIGN_NAME_CHARS * MAX_CHAR_LENGTH, MAX_LENGTH_SIGN_NAME_CHARS) + SignListWindow(WindowDesc *desc, WindowNumber window_number) : Window(desc), filter_editbox(MAX_LENGTH_SIGN_NAME_CHARS * MAX_CHAR_LENGTH, MAX_LENGTH_SIGN_NAME_CHARS) { - this->CreateNestedTree(desc); + this->CreateNestedTree(); this->vscroll = this->GetScrollbar(WID_SIL_SCROLLBAR); - this->FinishInitNested(desc, window_number); + this->FinishInitNested(window_number); this->SetWidgetLoweredState(WID_SIL_FILTER_MATCH_CASE_BTN, SignList::match_case); /* 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; - this->filter_editbox.afilter = CS_ALPHANUMERAL; /* Initialize the filtering variables */ this->SetFilterString(""); @@ -199,7 +200,7 @@ struct SignListWindow : Window, SignList { uint y = r.top + WD_FRAMERECT_TOP; // Offset from top of widget. /* No signs? */ if (this->vscroll->GetCount() == 0) { - DrawString(r.left + WD_FRAMETEXT_LEFT, r.right, y, STR_STATION_LIST_NONE); + DrawString(r.left + WD_FRAMETEXT_LEFT, r.right - WD_FRAMETEXT_RIGHT, y, STR_STATION_LIST_NONE); return; } @@ -282,16 +283,19 @@ struct SignListWindow : Window, SignList { } } - virtual EventState OnKeyPress(uint16 key, uint16 keycode) + virtual EventState OnHotkey(int hotkey) { - EventState state = ES_NOT_HANDLED; - if (CheckHotkeyMatch(signlist_hotkeys, keycode, this) == SLHK_FOCUS_FILTER_BOX) { - this->SetFocusedWidget(WID_SIL_FILTER_TEXT); - SetFocusedWindow(this); // The user has asked to give focus to the text box, so make sure this window is focused. - state = ES_HANDLED; + switch (hotkey) { + case SLHK_FOCUS_FILTER_BOX: + this->SetFocusedWidget(WID_SIL_FILTER_TEXT); + SetFocusedWindow(this); // The user has asked to give focus to the text box, so make sure this window is focused. + break; + + default: + return ES_NOT_HANDLED; } - return state; + return ES_HANDLED; } virtual void OnEditboxChanged(int widget) @@ -333,20 +337,34 @@ struct SignListWindow : Window, SignList { } } - static Hotkey signlist_hotkeys[]; + static HotkeyList hotkeys; }; -Hotkey SignListWindow::signlist_hotkeys[] = { - Hotkey('F', "focus_filter_box", SLHK_FOCUS_FILTER_BOX), - HOTKEY_LIST_END(SignListWindow) +/** + * Handler for global hotkeys of the SignListWindow. + * @param hotkey Hotkey + * @return ES_HANDLED if hotkey was accepted. + */ +static EventState SignListGlobalHotkeys(int hotkey) +{ + if (_game_mode == GM_MENU) return ES_NOT_HANDLED; + Window *w = ShowSignList(); + if (w == NULL) return ES_NOT_HANDLED; + return w->OnHotkey(hotkey); +} + +static Hotkey signlist_hotkeys[] = { + Hotkey('F', "focus_filter_box", SLHK_FOCUS_FILTER_BOX), + HOTKEY_LIST_END }; -Hotkey *_signlist_hotkeys = SignListWindow::signlist_hotkeys; +HotkeyList SignListWindow::hotkeys("signlist", signlist_hotkeys, SignListGlobalHotkeys); static const NWidgetPart _nested_sign_list_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_GREY), NWidget(WWT_CAPTION, COLOUR_GREY, WID_SIL_CAPTION), SetDataTip(STR_SIGN_LIST_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), NWidget(WWT_SHADEBOX, COLOUR_GREY), + NWidget(WWT_DEFSIZEBOX, COLOUR_GREY), NWidget(WWT_STICKYBOX, COLOUR_GREY), EndContainer(), NWidget(NWID_HORIZONTAL), @@ -370,11 +388,12 @@ static const NWidgetPart _nested_sign_list_widgets[] = { EndContainer(), }; -static const WindowDesc _sign_list_desc( - WDP_AUTO, 358, 138, +static WindowDesc _sign_list_desc( + WDP_AUTO, "list_signs", 358, 138, WC_SIGN_LIST, WC_NONE, 0, - _nested_sign_list_widgets, lengthof(_nested_sign_list_widgets) + _nested_sign_list_widgets, lengthof(_nested_sign_list_widgets), + &SignListWindow::hotkeys ); /** @@ -387,15 +406,6 @@ Window *ShowSignList() return AllocateWindowDescFront(&_sign_list_desc, 0); } -EventState SignListGlobalHotkeys(uint16 key, uint16 keycode) -{ - int num = CheckHotkeyMatch(_signlist_hotkeys, keycode, NULL, true); - if (num == -1) return ES_NOT_HANDLED; - Window *w = ShowSignList(); - if (w == NULL) return ES_NOT_HANDLED; - return w->OnKeyPress(key, keycode); -} - /** * Actually rename the sign. * @param index the sign to rename. @@ -413,15 +423,14 @@ struct SignWindow : Window, SignList { QueryString name_editbox; SignID cur_sign; - SignWindow(const WindowDesc *desc, const Sign *si) : name_editbox(MAX_LENGTH_SIGN_NAME_CHARS * MAX_CHAR_LENGTH, MAX_LENGTH_SIGN_NAME_CHARS) + SignWindow(WindowDesc *desc, const Sign *si) : Window(desc), name_editbox(MAX_LENGTH_SIGN_NAME_CHARS * MAX_CHAR_LENGTH, MAX_LENGTH_SIGN_NAME_CHARS) { this->querystrings[WID_QES_TEXT] = &this->name_editbox; this->name_editbox.caption = STR_EDIT_SIGN_CAPTION; this->name_editbox.cancel_button = WID_QES_CANCEL; this->name_editbox.ok_button = WID_QES_OK; - this->name_editbox.afilter = CS_ALPHANUMERAL; - this->InitNested(desc, WN_QUERY_STRING_SIGN); + this->InitNested(WN_QUERY_STRING_SIGN); UpdateSignEditWindow(si); this->SetFocusedWidget(WID_QES_TEXT); @@ -429,7 +438,7 @@ struct SignWindow : Window, SignList { void UpdateSignEditWindow(const Sign *si) { - /* Display an empty string when the sign hasnt been edited yet */ + /* Display an empty string when the sign hasn't been edited yet */ if (si->name != NULL) { SetDParam(0, si->index); this->name_editbox.text.Assign(STR_SIGN_NAME); @@ -533,8 +542,8 @@ static const NWidgetPart _nested_query_sign_edit_widgets[] = { EndContainer(), }; -static const WindowDesc _query_sign_edit_desc( - WDP_AUTO, 0, 0, +static WindowDesc _query_sign_edit_desc( + 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 528d7bf6a..a8da3284e 100644 --- a/src/smallmap_gui.cpp +++ b/src/smallmap_gui.cpp @@ -14,25 +14,28 @@ #include "industry.h" #include "station_map.h" #include "landscape.h" -#include "window_gui.h" #include "tree_map.h" #include "viewport_func.h" #include "town.h" -#include "blitter/factory.hpp" #include "tunnelbridge_map.h" -#include "strings_func.h" #include "core/endian_func.hpp" #include "vehicle_base.h" #include "sound_func.h" #include "window_func.h" #include "company_base.h" -#include "widgets/smallmap_widget.h" +#include "smallmap_gui.h" #include "table/strings.h" +#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. + +/** Link stat colours shown in legenda. */ +static uint8 _linkstat_colours_in_legenda[] = {0, 1, 3, 5, 7, 9, 11}; static const int NUM_NO_COMPANY_ENTRIES = 4; ///< Number of entries in the owner legend that are not companies. @@ -64,18 +67,6 @@ static const uint8 PC_WATER = 0xCA; ///< Dark blue palette colour for */ #define MS(a, b) {a, b, INVALID_INDUSTRYTYPE, 0, INVALID_COMPANY, true, false, true} -/** Structure for holding relevant data for legends in small map */ -struct LegendAndColour { - uint8 colour; ///< Colour of the item on the map. - StringID legend; ///< String corresponding to the coloured item. - IndustryType type; ///< Type of industry. Only valid for industry entries. - uint8 height; ///< Height in tiles. Only valid for height legend entries. - CompanyID company; ///< Company to display. Only valid for company entries of the owner legend. - bool show_on_map; ///< For filtering industries, if \c true, industry is shown on the map in colour. - bool end; ///< This is the end of the list. - bool col_break; ///< Perform a column break and go further at the next column. -}; - /** 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. */ @@ -149,9 +140,11 @@ static LegendAndColour _legend_land_owners[NUM_NO_COMPANY_ENTRIES + MAX_COMPANIE #undef MOEND #undef MKEND +/** Legend entries for the link stats view. */ +static LegendAndColour _legend_linkstats[NUM_CARGO + lengthof(_linkstat_colours_in_legenda) + 1]; /** * Allow room for all industries, plus a terminator entry - * This is required in order to have the indutry slots all filled up + * This is required in order to have the industry slots all filled up */ static LegendAndColour _legend_from_industries[NUM_INDUSTRYTYPES + 1]; /** For connecting industry type to position in industries list(small map legend) */ @@ -196,10 +189,44 @@ void BuildIndustriesLegend() _smallmap_industry_count = j; } +/** + * Populate legend table for the link stat view. + */ +void BuildLinkStatsLegend() +{ + /* Clear the legend */ + memset(_legend_linkstats, 0, sizeof(_legend_linkstats)); + + uint i = 0; + for (; i < _sorted_cargo_specs_size; ++i) { + const CargoSpec *cs = _sorted_cargo_specs[i]; + + _legend_linkstats[i].legend = cs->name; + _legend_linkstats[i].colour = cs->legend_colour; + _legend_linkstats[i].type = cs->Index(); + _legend_linkstats[i].show_on_map = true; + } + + _legend_linkstats[i].col_break = true; + _smallmap_cargo_count = i; + + for (; i < _smallmap_cargo_count + lengthof(_linkstat_colours_in_legenda); ++i) { + _legend_linkstats[i].legend = STR_EMPTY; + _legend_linkstats[i].colour = LinkGraphOverlay::LINK_COLOURS[_linkstat_colours_in_legenda[i - _smallmap_cargo_count]]; + _legend_linkstats[i].show_on_map = true; + } + + _legend_linkstats[_smallmap_cargo_count].legend = STR_LINKGRAPH_LEGEND_UNUSED; + _legend_linkstats[i - 1].legend = STR_LINKGRAPH_LEGEND_OVERLOADED; + _legend_linkstats[(_smallmap_cargo_count + i - 1) / 2].legend = STR_LINKGRAPH_LEGEND_SATURATED; + _legend_linkstats[i].end = true; +} + static const LegendAndColour * const _legend_table[] = { _legend_land_contours, _legend_vehicles, _legend_from_industries, + _legend_linkstats, _legend_routes, _legend_vegetation, _legend_land_owners, @@ -492,6 +519,17 @@ static inline uint32 GetSmallMapRoutesPixels(TileIndex tile, TileType t) return ApplyMask(cs->default_colour, &_smallmap_contours_andor[t]); } +/** + * Return the colour a tile would be displayed with in the small map in mode "link stats". + * + * @param tile The tile of which we would like to get the colour. + * @param t Effective tile type of the tile (see #GetEffectiveTileType). + * @return The colour of tile in the small map in mode "link stats" + */ +static inline uint32 GetSmallMapLinkStatsPixels(TileIndex tile, TileType t) +{ + return _smallmap_show_heightmap ? GetSmallMapContoursPixels(tile, t) : GetSmallMapRoutesPixels(tile, t); +} static const uint32 _vegetation_clear_bits[] = { MKCOLOUR_XXXX(PC_GRASS_LAND), ///< full grass @@ -569,1022 +607,1023 @@ static const byte _vehicle_type_colours[6] = { }; -/** Class managing the smallmap window. */ -class SmallMapWindow : public Window { - /** Types of legends in the #WID_SM_LEGEND widget. */ - enum SmallMapType { - SMT_CONTOUR, - SMT_VEHICLES, - SMT_INDUSTRY, - SMT_ROUTES, - SMT_VEGETATION, - SMT_OWNER, - }; - - /** Available kinds of zoomlevel changes. */ - enum ZoomLevelChange { - ZLC_INITIALIZE, ///< Initialize zoom level. - ZLC_ZOOM_OUT, ///< Zoom out. - ZLC_ZOOM_IN, ///< Zoom in. - }; - - static SmallMapType map_type; ///< Currently displayed legends. - static bool show_towns; ///< Display town names in the smallmap. - - 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. - uint min_number_of_fixed_rows; ///< Minimal number of rows in the legends for the fixed layouts only (all except #SMT_INDUSTRY). - uint column_width; ///< Width of a column in the #WID_SM_LEGEND widget. - - int32 scroll_x; ///< Horizontal world coordinate of the base tile left of the top-left corner of the smallmap display. - int32 scroll_y; ///< Vertical world coordinate of the base tile left of the top-left corner of the smallmap display. - int32 subscroll; ///< Number of pixels (0..3) between the right end of the base tile and the pixel at the top-left corner of the smallmap display. - int zoom; ///< Zoom level. Bigger number means more zoom-out (further away). - - static const uint FORCE_REFRESH_PERIOD = 0x1F; ///< map is redrawn after that many ticks - static const uint BLINK_PERIOD = 0x0F; ///< highlight blinking interval - uint8 refresh; ///< refresh counter, zeroed every FORCE_REFRESH_PERIOD ticks - - inline Point SmallmapRemapCoords(int x, int y) const - { - Point pt; - pt.x = (y - x) * 2; - pt.y = y + x; - return pt; - } +inline Point SmallMapWindow::SmallmapRemapCoords(int x, int y) const +{ + Point pt; + pt.x = (y - x) * 2; + pt.y = y + x; + return pt; +} - /** - * Remap tile to location on this smallmap. - * @param tile_x X coordinate of the tile. - * @param tile_y Y coordinate of the tile. - * @return Position to draw on. - */ - inline Point RemapTile(int tile_x, int tile_y) const - { - int x_offset = tile_x - this->scroll_x / (int)TILE_SIZE; - int y_offset = tile_y - this->scroll_y / (int)TILE_SIZE; +/** + * Remap tile to location on this smallmap. + * @param tile_x X coordinate of the tile. + * @param tile_y Y coordinate of the tile. + * @return Position to draw on. + */ +inline Point SmallMapWindow::RemapTile(int tile_x, int tile_y) const +{ + int x_offset = tile_x - this->scroll_x / (int)TILE_SIZE; + int y_offset = tile_y - this->scroll_y / (int)TILE_SIZE; - if (this->zoom == 1) return SmallmapRemapCoords(x_offset, y_offset); + if (this->zoom == 1) return SmallmapRemapCoords(x_offset, y_offset); - /* For negative offsets, round towards -inf. */ - if (x_offset < 0) x_offset -= this->zoom - 1; - if (y_offset < 0) y_offset -= this->zoom - 1; + /* For negative offsets, round towards -inf. */ + if (x_offset < 0) x_offset -= this->zoom - 1; + if (y_offset < 0) y_offset -= this->zoom - 1; - return SmallmapRemapCoords(x_offset / this->zoom, y_offset / this->zoom); - } + return SmallmapRemapCoords(x_offset / this->zoom, y_offset / this->zoom); +} - /** - * Determine the tile relative to the base tile of the smallmap, and the pixel position at - * that tile for a point in the smallmap. - * @param px Horizontal coordinate of the pixel. - * @param py Vertical coordinate of the pixel. - * @param sub[out] Pixel position at the tile (0..3). - * @param add_sub Add current #subscroll to the position. - * @return Tile being displayed at the given position relative to #scroll_x and #scroll_y. - * @note The #subscroll offset is already accounted for. - */ - inline Point PixelToTile(int px, int py, int *sub, bool add_sub = true) const - { - if (add_sub) px += this->subscroll; // Total horizontal offset. +/** + * Determine the tile relative to the base tile of the smallmap, and the pixel position at + * that tile for a point in the smallmap. + * @param px Horizontal coordinate of the pixel. + * @param py Vertical coordinate of the pixel. + * @param sub[out] Pixel position at the tile (0..3). + * @param add_sub Add current #subscroll to the position. + * @return Tile being displayed at the given position relative to #scroll_x and #scroll_y. + * @note The #subscroll offset is already accounted for. + */ +inline Point SmallMapWindow::PixelToTile(int px, int py, int *sub, bool add_sub) const +{ + if (add_sub) px += this->subscroll; // Total horizontal offset. - /* For each two rows down, add a x and a y tile, and - * For each four pixels to the right, move a tile to the right. */ - Point pt = {((py >> 1) - (px >> 2)) * this->zoom, ((py >> 1) + (px >> 2)) * this->zoom}; - px &= 3; + /* For each two rows down, add a x and a y tile, and + * For each four pixels to the right, move a tile to the right. */ + Point pt = {((py >> 1) - (px >> 2)) * this->zoom, ((py >> 1) + (px >> 2)) * this->zoom}; + px &= 3; - if (py & 1) { // Odd number of rows, handle the 2 pixel shift. - if (px < 2) { - pt.x += this->zoom; - px += 2; - } else { - pt.y += this->zoom; - px -= 2; - } + if (py & 1) { // Odd number of rows, handle the 2 pixel shift. + if (px < 2) { + pt.x += this->zoom; + px += 2; + } else { + pt.y += this->zoom; + px -= 2; } - - *sub = px; - return pt; } - /** - * Compute base parameters of the smallmap such that tile (\a tx, \a ty) starts at pixel (\a x, \a y). - * @param tx Tile x coordinate. - * @param ty Tile y coordinate. - * @param x Non-negative horizontal position in the display where the tile starts. - * @param y Non-negative vertical position in the display where the tile starts. - * @param sub [out] Value of #subscroll needed. - * @return #scroll_x, #scroll_y values. - */ - Point ComputeScroll(int tx, int ty, int x, int y, int *sub) - { - assert(x >= 0 && y >= 0); - - int new_sub; - Point tile_xy = PixelToTile(x, y, &new_sub, false); - tx -= tile_xy.x; - ty -= tile_xy.y; - - Point scroll; - if (new_sub == 0) { - *sub = 0; - scroll.x = (tx + this->zoom) * TILE_SIZE; - scroll.y = (ty - this->zoom) * TILE_SIZE; - } else { - *sub = 4 - new_sub; - scroll.x = (tx + 2 * this->zoom) * TILE_SIZE; - scroll.y = (ty - 2 * this->zoom) * TILE_SIZE; - } - return scroll; + *sub = px; + return pt; +} + +/** + * Compute base parameters of the smallmap such that tile (\a tx, \a ty) starts at pixel (\a x, \a y). + * @param tx Tile x coordinate. + * @param ty Tile y coordinate. + * @param x Non-negative horizontal position in the display where the tile starts. + * @param y Non-negative vertical position in the display where the tile starts. + * @param sub [out] Value of #subscroll needed. + * @return #scroll_x, #scroll_y values. + */ +Point SmallMapWindow::ComputeScroll(int tx, int ty, int x, int y, int *sub) +{ + assert(x >= 0 && y >= 0); + + int new_sub; + Point tile_xy = PixelToTile(x, y, &new_sub, false); + tx -= tile_xy.x; + ty -= tile_xy.y; + + Point scroll; + if (new_sub == 0) { + *sub = 0; + scroll.x = (tx + this->zoom) * TILE_SIZE; + scroll.y = (ty - this->zoom) * TILE_SIZE; + } else { + *sub = 4 - new_sub; + scroll.x = (tx + 2 * this->zoom) * TILE_SIZE; + scroll.y = (ty - 2 * this->zoom) * TILE_SIZE; } + return scroll; +} - /** - * Initialize or change the zoom level. - * @param change Way to change the zoom level. - * @param zoom_pt Position to keep fixed while zooming. - * @pre \c *zoom_pt should contain a point in the smallmap display when zooming in or out. - */ - void SetZoomLevel(ZoomLevelChange change, const Point *zoom_pt) - { - static const int zoomlevels[] = {1, 2, 4, 6, 8}; // Available zoom levels. Bigger number means more zoom-out (further away). - static const int MIN_ZOOM_INDEX = 0; - static const int MAX_ZOOM_INDEX = lengthof(zoomlevels) - 1; - - int new_index, cur_index, sub; - Point tile; - switch (change) { - case ZLC_INITIALIZE: - cur_index = - 1; // Definitely different from new_index. - new_index = MIN_ZOOM_INDEX; - break; +/** + * Initialize or change the zoom level. + * @param change Way to change the zoom level. + * @param zoom_pt Position to keep fixed while zooming. + * @pre \c *zoom_pt should contain a point in the smallmap display when zooming in or out. + */ +void SmallMapWindow::SetZoomLevel(ZoomLevelChange change, const Point *zoom_pt) +{ + static const int zoomlevels[] = {1, 2, 4, 6, 8}; // Available zoom levels. Bigger number means more zoom-out (further away). + static const int MIN_ZOOM_INDEX = 0; + static const int MAX_ZOOM_INDEX = lengthof(zoomlevels) - 1; + + int new_index, cur_index, sub; + Point tile; + switch (change) { + 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: + case ZLC_ZOOM_OUT: + for (cur_index = MIN_ZOOM_INDEX; cur_index <= MAX_ZOOM_INDEX; cur_index++) { + if (this->zoom == zoomlevels[cur_index]) break; + } + assert(cur_index <= MAX_ZOOM_INDEX); - case ZLC_ZOOM_IN: - case ZLC_ZOOM_OUT: - for (cur_index = MIN_ZOOM_INDEX; cur_index <= MAX_ZOOM_INDEX; cur_index++) { - if (this->zoom == zoomlevels[cur_index]) break; - } - assert(cur_index <= MAX_ZOOM_INDEX); + tile = this->PixelToTile(zoom_pt->x, zoom_pt->y, &sub); + new_index = Clamp(cur_index + ((change == ZLC_ZOOM_IN) ? -1 : 1), MIN_ZOOM_INDEX, MAX_ZOOM_INDEX); + break; - tile = this->PixelToTile(zoom_pt->x, zoom_pt->y, &sub); - new_index = Clamp(cur_index + ((change == ZLC_ZOOM_IN) ? -1 : 1), MIN_ZOOM_INDEX, MAX_ZOOM_INDEX); - break; + default: NOT_REACHED(); + } - default: NOT_REACHED(); + if (new_index != cur_index) { + this->zoom = zoomlevels[new_index]; + if (cur_index >= 0) { + Point new_tile = this->PixelToTile(zoom_pt->x, zoom_pt->y, &sub); + this->SetNewScroll(this->scroll_x + (tile.x - new_tile.x) * TILE_SIZE, + this->scroll_y + (tile.y - new_tile.y) * TILE_SIZE, sub); + } else if (this->map_type == SMT_LINKSTATS) { + this->overlay->RebuildCache(); } + this->SetWidgetDisabledState(WID_SM_ZOOM_IN, this->zoom == zoomlevels[MIN_ZOOM_INDEX]); + this->SetWidgetDisabledState(WID_SM_ZOOM_OUT, this->zoom == zoomlevels[MAX_ZOOM_INDEX]); + this->SetDirty(); + } +} - if (new_index != cur_index) { - this->zoom = zoomlevels[new_index]; - if (cur_index >= 0) { - Point new_tile = this->PixelToTile(zoom_pt->x, zoom_pt->y, &sub); - this->SetNewScroll(this->scroll_x + (tile.x - new_tile.x) * TILE_SIZE, - this->scroll_y + (tile.y - new_tile.y) * TILE_SIZE, sub); - } - this->SetWidgetDisabledState(WID_SM_ZOOM_IN, this->zoom == zoomlevels[MIN_ZOOM_INDEX]); - this->SetWidgetDisabledState(WID_SM_ZOOM_OUT, this->zoom == zoomlevels[MAX_ZOOM_INDEX]); - this->SetDirty(); +/** + * Decide which colours to show to the user for a group of tiles. + * @param ta Tile area to investigate. + * @return Colours to display. + */ +inline uint32 SmallMapWindow::GetTileColours(const TileArea &ta) const +{ + int importance = 0; + TileIndex tile = INVALID_TILE; // Position of the most important tile. + TileType et = MP_VOID; // Effective tile type at that position. + + TILE_AREA_LOOP(ti, ta) { + TileType ttype = GetEffectiveTileType(ti); + if (_tiletype_importance[ttype] > importance) { + importance = _tiletype_importance[ttype]; + tile = ti; + et = ttype; } } - /** - * Decide which colours to show to the user for a group of tiles. - * @param ta Tile area to investigate. - * @return Colours to display. - */ - inline uint32 GetTileColours(const TileArea &ta) const - { - int importance = 0; - TileIndex tile = INVALID_TILE; // Position of the most important tile. - TileType et = MP_VOID; // Effective tile type at that position. - - TILE_AREA_LOOP(ti, ta) { - TileType ttype = GetEffectiveTileType(ti); - if (_tiletype_importance[ttype] > importance) { - importance = _tiletype_importance[ttype]; - tile = ti; - et = ttype; - } - } + switch (this->map_type) { + case SMT_CONTOUR: + return GetSmallMapContoursPixels(tile, et); - switch (this->map_type) { - case SMT_CONTOUR: - return GetSmallMapContoursPixels(tile, et); + case SMT_VEHICLES: + return GetSmallMapVehiclesPixels(tile, et); - case SMT_VEHICLES: - return GetSmallMapVehiclesPixels(tile, et); + case SMT_INDUSTRY: + return GetSmallMapIndustriesPixels(tile, et); - case SMT_INDUSTRY: - return GetSmallMapIndustriesPixels(tile, et); + case SMT_LINKSTATS: + return GetSmallMapLinkStatsPixels(tile, et); - case SMT_ROUTES: - return GetSmallMapRoutesPixels(tile, et); + case SMT_ROUTES: + return GetSmallMapRoutesPixels(tile, et); - case SMT_VEGETATION: - return GetSmallMapVegetationPixels(tile, et); + case SMT_VEGETATION: + return GetSmallMapVegetationPixels(tile, et); - case SMT_OWNER: - return GetSmallMapOwnerPixels(tile, et); + case SMT_OWNER: + return GetSmallMapOwnerPixels(tile, et); - default: NOT_REACHED(); - } + default: NOT_REACHED(); } +} - /** - * Draws one column of tiles of the small map in a certain mode onto the screen buffer, skipping the shifted rows in between. - * - * @param dst Pointer to a part of the screen buffer to write to. - * @param xc The X coordinate of the first tile in the column. - * @param yc The Y coordinate of the first tile in the column - * @param pitch Number of pixels to advance in the screen buffer each time a pixel is written. - * @param reps Number of lines to draw - * @param start_pos Position of first pixel to draw. - * @param end_pos Position of last pixel to draw (exclusive). - * @param blitter current blitter - * @note If pixel position is below \c 0, skip drawing. - * @see GetSmallMapPixels(TileIndex) - */ - void DrawSmallMapColumn(void *dst, uint xc, uint yc, int pitch, int reps, int start_pos, int end_pos, Blitter *blitter) const - { - void *dst_ptr_abs_end = blitter->MoveTo(_screen.dst_ptr, 0, _screen.height); - uint min_xy = _settings_game.construction.freeform_edges ? 1 : 0; - - do { - /* Check if the tile (xc,yc) is within the map range */ - if (xc >= MapMaxX() || yc >= MapMaxY()) continue; +/** + * Draws one column of tiles of the small map in a certain mode onto the screen buffer, skipping the shifted rows in between. + * + * @param dst Pointer to a part of the screen buffer to write to. + * @param xc The X coordinate of the first tile in the column. + * @param yc The Y coordinate of the first tile in the column + * @param pitch Number of pixels to advance in the screen buffer each time a pixel is written. + * @param reps Number of lines to draw + * @param start_pos Position of first pixel to draw. + * @param end_pos Position of last pixel to draw (exclusive). + * @param blitter current blitter + * @note If pixel position is below \c 0, skip drawing. + */ +void SmallMapWindow::DrawSmallMapColumn(void *dst, uint xc, uint yc, int pitch, int reps, int start_pos, int end_pos, Blitter *blitter) const +{ + void *dst_ptr_abs_end = blitter->MoveTo(_screen.dst_ptr, 0, _screen.height); + uint min_xy = _settings_game.construction.freeform_edges ? 1 : 0; - /* Check if the dst pointer points to a pixel inside the screen buffer */ - if (dst < _screen.dst_ptr) continue; - if (dst >= dst_ptr_abs_end) continue; + do { + /* Check if the tile (xc,yc) is within the map range */ + if (xc >= MapMaxX() || yc >= MapMaxY()) continue; - /* Construct tilearea covered by (xc, yc, xc + this->zoom, yc + this->zoom) such that it is within min_xy limits. */ - TileArea ta; - if (min_xy == 1 && (xc == 0 || yc == 0)) { - if (this->zoom == 1) continue; // The tile area is empty, don't draw anything. + /* Check if the dst pointer points to a pixel inside the screen buffer */ + if (dst < _screen.dst_ptr) continue; + if (dst >= dst_ptr_abs_end) continue; - ta = TileArea(TileXY(max(min_xy, xc), max(min_xy, yc)), this->zoom - (xc == 0), this->zoom - (yc == 0)); - } else { - ta = TileArea(TileXY(xc, yc), this->zoom, this->zoom); - } - ta.ClampToMap(); // Clamp to map boundaries (may contain MP_VOID tiles!). - - uint32 val = this->GetTileColours(ta); - uint8 *val8 = (uint8 *)&val; - int idx = max(0, -start_pos); - for (int pos = max(0, start_pos); pos < end_pos; pos++) { - blitter->SetPixel(dst, idx, 0, val8[idx]); - idx++; - } - /* Switch to next tile in the column */ - } while (xc += this->zoom, yc += this->zoom, dst = blitter->MoveTo(dst, pitch, 0), --reps != 0); - } + /* Construct tilearea covered by (xc, yc, xc + this->zoom, yc + this->zoom) such that it is within min_xy limits. */ + TileArea ta; + if (min_xy == 1 && (xc == 0 || yc == 0)) { + if (this->zoom == 1) continue; // The tile area is empty, don't draw anything. - /** - * Adds vehicles to the smallmap. - * @param dpi the part of the smallmap to be drawn into - * @param blitter current blitter - */ - void DrawVehicles(const DrawPixelInfo *dpi, Blitter *blitter) const - { - const Vehicle *v; - FOR_ALL_VEHICLES(v) { - if (v->type == VEH_EFFECT) continue; - 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); - - int y = pt.y - dpi->top; - if (!IsInsideMM(y, 0, dpi->height)) continue; // y is out of bounds. - - bool skip = false; // Default is to draw both pixels. - int x = pt.x - this->subscroll - 3 - dpi->left; // Offset X coordinate. - if (x < 0) { - /* if x+1 is 0, that means we're on the very left edge, - * and should thus only draw a single pixel */ - if (++x != 0) continue; - skip = true; - } else if (x >= dpi->width - 1) { - /* Check if we're at the very right edge, and if so draw only a single pixel */ - if (x != dpi->width - 1) continue; - skip = true; - } - - /* Calculate pointer to pixel and the colour */ - byte colour = (this->map_type == SMT_VEHICLES) ? _vehicle_type_colours[v->type] : PC_WHITE; - - /* And draw either one or two pixels depending on clipping */ - blitter->SetPixel(dpi->dst_ptr, x, y, colour); - if (!skip) blitter->SetPixel(dpi->dst_ptr, x + 1, y, colour); + ta = TileArea(TileXY(max(min_xy, xc), max(min_xy, yc)), this->zoom - (xc == 0), this->zoom - (yc == 0)); + } else { + ta = TileArea(TileXY(xc, yc), this->zoom, this->zoom); } - } + ta.ClampToMap(); // Clamp to map boundaries (may contain MP_VOID tiles!). + + uint32 val = this->GetTileColours(ta); + uint8 *val8 = (uint8 *)&val; + int idx = max(0, -start_pos); + for (int pos = max(0, start_pos); pos < end_pos; pos++) { + blitter->SetPixel(dst, idx, 0, val8[idx]); + idx++; + } + /* Switch to next tile in the column */ + } while (xc += this->zoom, yc += this->zoom, dst = blitter->MoveTo(dst, pitch, 0), --reps != 0); +} - /** - * Adds town names to the smallmap. - * @param dpi the part of the smallmap to be drawn into - */ - void DrawTowns(const DrawPixelInfo *dpi) const - { - const Town *t; - FOR_ALL_TOWNS(t) { - /* Remap the town coordinate */ - Point pt = this->RemapTile(TileX(t->xy), TileY(t->xy)); - int x = pt.x - this->subscroll - (t->cache.sign.width_small >> 1); - int y = pt.y; - - /* Check if the town sign is within bounds */ - if (x + t->cache.sign.width_small > dpi->left && - x < dpi->left + dpi->width && - y + FONT_HEIGHT_SMALL > dpi->top && - y < dpi->top + dpi->height) { - /* And draw it. */ - SetDParam(0, t->index); - DrawString(x, x + t->cache.sign.width_small, y, STR_SMALLMAP_TOWN); - } +/** + * Adds vehicles to the smallmap. + * @param dpi the part of the smallmap to be drawn into + * @param blitter current blitter + */ +void SmallMapWindow::DrawVehicles(const DrawPixelInfo *dpi, Blitter *blitter) const +{ + const Vehicle *v; + FOR_ALL_VEHICLES(v) { + if (v->type == VEH_EFFECT) continue; + 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); + + int y = pt.y - dpi->top; + if (!IsInsideMM(y, 0, dpi->height)) continue; // y is out of bounds. + + bool skip = false; // Default is to draw both pixels. + int x = pt.x - this->subscroll - 3 - dpi->left; // Offset X coordinate. + if (x < 0) { + /* if x+1 is 0, that means we're on the very left edge, + * and should thus only draw a single pixel */ + if (++x != 0) continue; + skip = true; + } else if (x >= dpi->width - 1) { + /* Check if we're at the very right edge, and if so draw only a single pixel */ + if (x != dpi->width - 1) continue; + skip = true; } - } - /** - * Draws vertical part of map indicator - * @param x X coord of left/right border of main viewport - * @param y Y coord of top border of main viewport - * @param y2 Y coord of bottom border of main viewport - */ - static inline void DrawVertMapIndicator(int x, int y, int y2) - { - GfxFillRect(x, y, x, y + 3, PC_VERY_LIGHT_YELLOW); - GfxFillRect(x, y2 - 3, x, y2, PC_VERY_LIGHT_YELLOW); - } + /* Calculate pointer to pixel and the colour */ + byte colour = (this->map_type == SMT_VEHICLES) ? _vehicle_type_colours[v->type] : PC_WHITE; - /** - * Draws horizontal part of map indicator - * @param x X coord of left border of main viewport - * @param x2 X coord of right border of main viewport - * @param y Y coord of top/bottom border of main viewport - */ - static inline void DrawHorizMapIndicator(int x, int x2, int y) - { - GfxFillRect(x, y, x + 3, y, PC_VERY_LIGHT_YELLOW); - GfxFillRect(x2 - 3, y, x2, y, PC_VERY_LIGHT_YELLOW); + /* And draw either one or two pixels depending on clipping */ + blitter->SetPixel(dpi->dst_ptr, x, y, colour); + if (!skip) blitter->SetPixel(dpi->dst_ptr, x + 1, y, colour); } +} - /** - * Adds map indicators to the smallmap. - */ - void DrawMapIndicators() const - { - /* Find main viewport. */ - const ViewPort *vp = FindWindowById(WC_MAIN_WINDOW, 0)->viewport; +/** + * Adds town names to the smallmap. + * @param dpi the part of the smallmap to be drawn into + */ +void SmallMapWindow::DrawTowns(const DrawPixelInfo *dpi) const +{ + const Town *t; + FOR_ALL_TOWNS(t) { + /* Remap the town coordinate */ + Point pt = this->RemapTile(TileX(t->xy), TileY(t->xy)); + int x = pt.x - this->subscroll - (t->cache.sign.width_small >> 1); + int y = pt.y; + + /* Check if the town sign is within bounds */ + if (x + t->cache.sign.width_small > dpi->left && + x < dpi->left + dpi->width && + y + FONT_HEIGHT_SMALL > dpi->top && + y < dpi->top + dpi->height) { + /* And draw it. */ + SetDParam(0, t->index); + DrawString(x, x + t->cache.sign.width_small, y, STR_SMALLMAP_TOWN); + } + } +} - Point tile = InverseRemapCoords(vp->virtual_left, vp->virtual_top); - Point tl = this->RemapTile(tile.x >> 4, tile.y >> 4); - tl.x -= this->subscroll; +/** + * Adds map indicators to the smallmap. + */ +void SmallMapWindow::DrawMapIndicators() const +{ + /* Find main viewport. */ + const ViewPort *vp = FindWindowById(WC_MAIN_WINDOW, 0)->viewport; - 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 tile = InverseRemapCoords(vp->virtual_left, vp->virtual_top); + Point tl = this->RemapTile(tile.x >> 4, tile.y >> 4); + tl.x -= this->subscroll; - SmallMapWindow::DrawVertMapIndicator(tl.x, tl.y, br.y); - SmallMapWindow::DrawVertMapIndicator(br.x, tl.y, br.y); + 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; - SmallMapWindow::DrawHorizMapIndicator(tl.x, br.x, tl.y); - SmallMapWindow::DrawHorizMapIndicator(tl.x, br.x, br.y); - } + SmallMapWindow::DrawVertMapIndicator(tl.x, tl.y, br.y); + SmallMapWindow::DrawVertMapIndicator(br.x, tl.y, br.y); - /** - * Draws the small map. - * - * Basically, the small map is draw column of pixels by column of pixels. The pixels - * are drawn directly into the screen buffer. The final map is drawn in multiple passes. - * The passes are: - *
    1. The colours of tiles in the different modes.
    2. - *
    3. Town names (optional)
    - * - * @param dpi pointer to pixel to write onto - */ - void DrawSmallMap(DrawPixelInfo *dpi) const - { - Blitter *blitter = BlitterFactoryBase::GetCurrentBlitter(); - DrawPixelInfo *old_dpi; - - old_dpi = _cur_dpi; - _cur_dpi = dpi; - - /* Clear it */ - GfxFillRect(dpi->left, dpi->top, dpi->left + dpi->width - 1, dpi->top + dpi->height - 1, PC_BLACK); - - /* Which tile is displayed at (dpi->left, dpi->top)? */ - int dx; - Point tile = this->PixelToTile(dpi->left, dpi->top, &dx); - int tile_x = this->scroll_x / (int)TILE_SIZE + tile.x; - int tile_y = this->scroll_y / (int)TILE_SIZE + tile.y; - - void *ptr = blitter->MoveTo(dpi->dst_ptr, -dx - 4, 0); - int x = - dx - 4; - int y = 0; - - for (;;) { - /* Distance from left edge */ - if (x >= -3) { - if (x >= dpi->width) break; // Exit the loop. - - int end_pos = min(dpi->width, x + 4); - int reps = (dpi->height - y + 1) / 2; // Number of lines. - if (reps > 0) { - this->DrawSmallMapColumn(ptr, tile_x, tile_y, dpi->pitch * 2, reps, x, end_pos, blitter); - } - } + SmallMapWindow::DrawHorizMapIndicator(tl.x, br.x, tl.y); + SmallMapWindow::DrawHorizMapIndicator(tl.x, br.x, br.y); +} - if (y == 0) { - tile_y += this->zoom; - y++; - ptr = blitter->MoveTo(ptr, 0, 1); - } else { - tile_x -= this->zoom; - y--; - ptr = blitter->MoveTo(ptr, 0, -1); +/** + * Draws the small map. + * + * Basically, the small map is draw column of pixels by column of pixels. The pixels + * are drawn directly into the screen buffer. The final map is drawn in multiple passes. + * The passes are: + *
    1. The colours of tiles in the different modes.
    2. + *
    3. Town names (optional)
    + * + * @param dpi pointer to pixel to write onto + */ +void SmallMapWindow::DrawSmallMap(DrawPixelInfo *dpi) const +{ + Blitter *blitter = BlitterFactory::GetCurrentBlitter(); + DrawPixelInfo *old_dpi; + + old_dpi = _cur_dpi; + _cur_dpi = dpi; + + /* Clear it */ + GfxFillRect(dpi->left, dpi->top, dpi->left + dpi->width - 1, dpi->top + dpi->height - 1, PC_BLACK); + + /* Which tile is displayed at (dpi->left, dpi->top)? */ + int dx; + Point tile = this->PixelToTile(dpi->left, dpi->top, &dx); + int tile_x = this->scroll_x / (int)TILE_SIZE + tile.x; + int tile_y = this->scroll_y / (int)TILE_SIZE + tile.y; + + void *ptr = blitter->MoveTo(dpi->dst_ptr, -dx - 4, 0); + int x = - dx - 4; + int y = 0; + + for (;;) { + /* Distance from left edge */ + if (x >= -3) { + if (x >= dpi->width) break; // Exit the loop. + + int end_pos = min(dpi->width, x + 4); + int reps = (dpi->height - y + 1) / 2; // Number of lines. + if (reps > 0) { + this->DrawSmallMapColumn(ptr, tile_x, tile_y, dpi->pitch * 2, reps, x, end_pos, blitter); } - ptr = blitter->MoveTo(ptr, 2, 0); - x += 2; } - /* Draw vehicles */ - if (this->map_type == SMT_CONTOUR || this->map_type == SMT_VEHICLES) this->DrawVehicles(dpi, blitter); - - /* Draw town names */ - if (this->show_towns) this->DrawTowns(dpi); - - /* Draw map indicators */ - this->DrawMapIndicators(); - - _cur_dpi = old_dpi; + if (y == 0) { + tile_y += this->zoom; + y++; + ptr = blitter->MoveTo(ptr, 0, 1); + } else { + tile_x -= this->zoom; + y--; + ptr = blitter->MoveTo(ptr, 0, -1); + } + ptr = blitter->MoveTo(ptr, 2, 0); + x += 2; } - /** - * Function to set up widgets depending on the information being shown on the smallmap. - */ - void SetupWidgetData() - { - StringID legend_tooltip; - StringID enable_all_tooltip; - StringID disable_all_tooltip; - int plane; - switch (this->map_type) { - case SMT_INDUSTRY: - legend_tooltip = STR_SMALLMAP_TOOLTIP_INDUSTRY_SELECTION; - enable_all_tooltip = STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES; - disable_all_tooltip = STR_SMALLMAP_TOOLTIP_DISABLE_ALL_INDUSTRIES; - plane = 0; - break; + /* Draw vehicles */ + if (this->map_type == SMT_CONTOUR || this->map_type == SMT_VEHICLES) this->DrawVehicles(dpi, blitter); - case SMT_OWNER: - legend_tooltip = STR_SMALLMAP_TOOLTIP_COMPANY_SELECTION; - enable_all_tooltip = STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES; - disable_all_tooltip = STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES; - plane = 0; - break; + /* Draw link stat overlay */ + if (this->map_type == SMT_LINKSTATS) this->overlay->Draw(dpi); - default: - legend_tooltip = STR_NULL; - enable_all_tooltip = STR_NULL; - disable_all_tooltip = STR_NULL; - plane = 1; - break; - } + /* Draw town names */ + if (this->show_towns) this->DrawTowns(dpi); - this->GetWidget(WID_SM_LEGEND)->SetDataTip(STR_NULL, legend_tooltip); - this->GetWidget(WID_SM_ENABLE_ALL)->SetDataTip(STR_SMALLMAP_ENABLE_ALL, enable_all_tooltip); - this->GetWidget(WID_SM_DISABLE_ALL)->SetDataTip(STR_SMALLMAP_DISABLE_ALL, disable_all_tooltip); - this->GetWidget(WID_SM_SELECT_BUTTONS)->SetDisplayedPlane(plane); - } + /* Draw map indicators */ + this->DrawMapIndicators(); -public: - uint min_number_of_columns; ///< Minimal number of columns in legends. + _cur_dpi = old_dpi; +} - SmallMapWindow(const WindowDesc *desc, int window_number) : Window(), refresh(FORCE_REFRESH_PERIOD) - { - _smallmap_industry_highlight = INVALID_INDUSTRYTYPE; - this->InitNested(desc, window_number); - this->LowerWidget(this->map_type + WID_SM_CONTOUR); +/** + * Function to set up widgets depending on the information being shown on the smallmap. + */ +void SmallMapWindow::SetupWidgetData() +{ + StringID legend_tooltip; + StringID enable_all_tooltip; + StringID disable_all_tooltip; + int plane; + switch (this->map_type) { + case SMT_INDUSTRY: + legend_tooltip = STR_SMALLMAP_TOOLTIP_INDUSTRY_SELECTION; + enable_all_tooltip = STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES; + disable_all_tooltip = STR_SMALLMAP_TOOLTIP_DISABLE_ALL_INDUSTRIES; + plane = 0; + break; + + case SMT_OWNER: + legend_tooltip = STR_SMALLMAP_TOOLTIP_COMPANY_SELECTION; + enable_all_tooltip = STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES; + disable_all_tooltip = STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES; + plane = 0; + break; + + case SMT_LINKSTATS: + legend_tooltip = STR_SMALLMAP_TOOLTIP_CARGO_SELECTION; + enable_all_tooltip = STR_SMALLMAP_TOOLTIP_ENABLE_ALL_CARGOS; + disable_all_tooltip = STR_SMALLMAP_TOOLTIP_DISABLE_ALL_CARGOS; + plane = 0; + break; - BuildLandLegend(); - this->SetWidgetLoweredState(WID_SM_SHOW_HEIGHT, _smallmap_show_heightmap); + default: + legend_tooltip = STR_NULL; + enable_all_tooltip = STR_NULL; + disable_all_tooltip = STR_NULL; + plane = 1; + break; + } - this->SetWidgetLoweredState(WID_SM_TOGGLETOWNNAME, this->show_towns); + this->GetWidget(WID_SM_LEGEND)->SetDataTip(STR_NULL, legend_tooltip); + this->GetWidget(WID_SM_ENABLE_ALL)->SetDataTip(STR_SMALLMAP_ENABLE_ALL, enable_all_tooltip); + this->GetWidget(WID_SM_DISABLE_ALL)->SetDataTip(STR_SMALLMAP_DISABLE_ALL, disable_all_tooltip); + this->GetWidget(WID_SM_SELECT_BUTTONS)->SetDisplayedPlane(plane); +} - this->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, 0, this->GetOverlayCompanyMask(), 1); + this->InitNested(window_number); + this->LowerWidget(this->map_type + WID_SM_CONTOUR); - this->SetZoomLevel(ZLC_INITIALIZE, NULL); - this->SmallMapCenterOnCurrentPos(); - } + BuildLandLegend(); + this->SetWidgetLoweredState(WID_SM_SHOW_HEIGHT, _smallmap_show_heightmap); - /** - * Compute minimal required width of the legends. - * @return Minimally needed width for displaying the smallmap legends in pixels. - */ - inline uint GetMinLegendWidth() const - { - return WD_FRAMERECT_LEFT + this->min_number_of_columns * this->column_width; - } + this->SetWidgetLoweredState(WID_SM_TOGGLETOWNNAME, this->show_towns); - /** - * Return number of columns that can be displayed in \a width pixels. - * @return Number of columns to display. - */ - inline uint GetNumberColumnsLegend(uint width) const - { - return width / this->column_width; - } + this->SetupWidgetData(); - /** - * Compute height given a number of columns. - * @param num_columns Number of columns. - * @return Needed height for displaying the smallmap legends in pixels. - */ - uint GetLegendHeight(uint num_columns) const - { - uint num_rows = max(this->min_number_of_fixed_rows, CeilDiv(max(_smallmap_company_count, _smallmap_industry_count), num_columns)); - return WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM + num_rows * FONT_HEIGHT_SMALL; - } + this->SetZoomLevel(ZLC_INITIALIZE, NULL); + this->SmallMapCenterOnCurrentPos(); + this->SetOverlayCargoMask(); +} - virtual void SetStringParameters(int widget) const - { - switch (widget) { - case WID_SM_CAPTION: - SetDParam(0, STR_SMALLMAP_TYPE_CONTOURS + this->map_type); - break; - } +/* virtual */ void SmallMapWindow::SetStringParameters(int widget) const +{ + switch (widget) { + case WID_SM_CAPTION: + SetDParam(0, STR_SMALLMAP_TYPE_CONTOURS + this->map_type); + break; } +} - virtual void OnInit() - { - uint min_width = 0; - this->min_number_of_columns = INDUSTRY_MIN_NUMBER_OF_COLUMNS; - this->min_number_of_fixed_rows = 0; - for (uint i = 0; i < lengthof(_legend_table); i++) { - uint height = 0; - uint num_columns = 1; - for (const LegendAndColour *tbl = _legend_table[i]; !tbl->end; ++tbl) { - StringID str; - if (i == SMT_INDUSTRY) { - SetDParam(0, tbl->legend); - SetDParam(1, IndustryPool::MAX_SIZE); - str = STR_SMALLMAP_INDUSTRY; - } else if (i == SMT_OWNER) { - if (tbl->company != INVALID_COMPANY) { - if (!Company::IsValidID(tbl->company)) { - /* Rebuild the owner legend. */ - BuildOwnerLegend(); - this->OnInit(); - return; - } - /* Non-fixed legend entries for the owner view. */ - SetDParam(0, tbl->company); - str = STR_SMALLMAP_COMPANY; - } else { - str = tbl->legend; +/* virtual */ void SmallMapWindow::OnInit() +{ + uint min_width = 0; + this->min_number_of_columns = INDUSTRY_MIN_NUMBER_OF_COLUMNS; + this->min_number_of_fixed_rows = lengthof(_linkstat_colours_in_legenda); + for (uint i = 0; i < lengthof(_legend_table); i++) { + uint height = 0; + uint num_columns = 1; + for (const LegendAndColour *tbl = _legend_table[i]; !tbl->end; ++tbl) { + StringID str; + if (i == SMT_INDUSTRY) { + SetDParam(0, tbl->legend); + SetDParam(1, IndustryPool::MAX_SIZE); + str = STR_SMALLMAP_INDUSTRY; + } else if (i == SMT_LINKSTATS) { + SetDParam(0, tbl->legend); + str = STR_SMALLMAP_LINKSTATS; + } else if (i == SMT_OWNER) { + if (tbl->company != INVALID_COMPANY) { + if (!Company::IsValidID(tbl->company)) { + /* Rebuild the owner legend. */ + BuildOwnerLegend(); + this->OnInit(); + return; } + /* Non-fixed legend entries for the owner view. */ + SetDParam(0, tbl->company); + str = STR_SMALLMAP_COMPANY; } else { - if (tbl->col_break) { - this->min_number_of_fixed_rows = max(this->min_number_of_fixed_rows, height); - height = 0; - num_columns++; - } - height++; str = tbl->legend; } - min_width = max(GetStringBoundingBox(str).width, min_width); + } else { + if (tbl->col_break) { + this->min_number_of_fixed_rows = max(this->min_number_of_fixed_rows, height); + height = 0; + num_columns++; + } + height++; + str = tbl->legend; } - this->min_number_of_fixed_rows = max(this->min_number_of_fixed_rows, height); - this->min_number_of_columns = max(this->min_number_of_columns, num_columns); + min_width = max(GetStringBoundingBox(str).width, min_width); } - - /* The width of a column is the minimum width of all texts + the size of the blob + some spacing */ - this->column_width = min_width + LEGEND_BLOB_WIDTH + WD_FRAMERECT_LEFT + WD_FRAMERECT_RIGHT; + this->min_number_of_fixed_rows = max(this->min_number_of_fixed_rows, height); + this->min_number_of_columns = max(this->min_number_of_columns, num_columns); } - virtual void OnPaint() - { - if (this->map_type == SMT_OWNER) { - for (const LegendAndColour *tbl = _legend_table[this->map_type]; !tbl->end; ++tbl) { - if (tbl->company != INVALID_COMPANY && !Company::IsValidID(tbl->company)) { - /* Rebuild the owner legend. */ - BuildOwnerLegend(); - this->InvalidateData(1); - break; - } + /* The width of a column is the minimum width of all texts + the size of the blob + some spacing */ + this->column_width = min_width + LEGEND_BLOB_WIDTH + WD_FRAMERECT_LEFT + WD_FRAMERECT_RIGHT; +} + +/* virtual */ void SmallMapWindow::OnPaint() +{ + if (this->map_type == SMT_OWNER) { + for (const LegendAndColour *tbl = _legend_table[this->map_type]; !tbl->end; ++tbl) { + if (tbl->company != INVALID_COMPANY && !Company::IsValidID(tbl->company)) { + /* Rebuild the owner legend. */ + BuildOwnerLegend(); + this->InvalidateData(1); + break; } } - - this->DrawWidgets(); } - virtual void DrawWidget(const Rect &r, int widget) const - { - switch (widget) { - case WID_SM_MAP: { - DrawPixelInfo new_dpi; - if (!FillDrawPixelInfo(&new_dpi, r.left + 1, r.top + 1, r.right - r.left - 1, r.bottom - r.top - 1)) return; - this->DrawSmallMap(&new_dpi); - break; + this->DrawWidgets(); +} + +/* virtual */ void SmallMapWindow::DrawWidget(const Rect &r, int widget) const +{ + switch (widget) { + case WID_SM_MAP: { + DrawPixelInfo new_dpi; + if (!FillDrawPixelInfo(&new_dpi, r.left + 1, r.top + 1, r.right - r.left - 1, r.bottom - r.top - 1)) return; + this->DrawSmallMap(&new_dpi); + break; + } + + case WID_SM_LEGEND: { + uint columns = this->GetNumberColumnsLegend(r.right - r.left + 1); + uint number_of_rows = this->GetNumberRowsLegend(columns); + bool rtl = _current_text_dir == TD_RTL; + uint y_org = r.top + WD_FRAMERECT_TOP; + uint x = rtl ? r.right - this->column_width - WD_FRAMERECT_RIGHT : r.left + WD_FRAMERECT_LEFT; + uint y = y_org; + uint i = 0; // Row counter for industry legend. + uint row_height = FONT_HEIGHT_SMALL; + + uint text_left = rtl ? 0 : LEGEND_BLOB_WIDTH + WD_FRAMERECT_LEFT; + uint text_right = this->column_width - 1 - (rtl ? LEGEND_BLOB_WIDTH + WD_FRAMERECT_RIGHT : 0); + uint blob_left = rtl ? this->column_width - 1 - LEGEND_BLOB_WIDTH : 0; + uint blob_right = rtl ? this->column_width - 1 : LEGEND_BLOB_WIDTH; + + StringID string = STR_NULL; + switch (this->map_type) { + case SMT_INDUSTRY: + string = STR_SMALLMAP_INDUSTRY; + break; + case SMT_LINKSTATS: + string = STR_SMALLMAP_LINKSTATS; + break; + case SMT_OWNER: + string = STR_SMALLMAP_COMPANY; + break; + default: + break; } - case WID_SM_LEGEND: { - uint columns = this->GetNumberColumnsLegend(r.right - r.left + 1); - uint number_of_rows = max((this->map_type == SMT_INDUSTRY || this->map_type == SMT_OWNER) ? CeilDiv(max(_smallmap_company_count, _smallmap_industry_count), columns) : 0, this->min_number_of_fixed_rows); - bool rtl = _current_text_dir == TD_RTL; - uint y_org = r.top + WD_FRAMERECT_TOP; - uint x = rtl ? r.right - this->column_width - WD_FRAMERECT_RIGHT : r.left + WD_FRAMERECT_LEFT; - uint y = y_org; - uint i = 0; // Row counter for industry legend. - uint row_height = FONT_HEIGHT_SMALL; - - uint text_left = rtl ? 0 : LEGEND_BLOB_WIDTH + WD_FRAMERECT_LEFT; - uint text_right = this->column_width - 1 - (rtl ? LEGEND_BLOB_WIDTH + WD_FRAMERECT_RIGHT : 0); - uint blob_left = rtl ? this->column_width - 1 - LEGEND_BLOB_WIDTH : 0; - uint blob_right = rtl ? this->column_width - 1 : LEGEND_BLOB_WIDTH; - - for (const LegendAndColour *tbl = _legend_table[this->map_type]; !tbl->end; ++tbl) { - if (tbl->col_break || ((this->map_type == SMT_INDUSTRY || this->map_type == SMT_OWNER) && i++ >= number_of_rows)) { - /* Column break needed, continue at top, COLUMN_WIDTH pixels - * (one "row") to the right. */ - x += rtl ? -(int)this->column_width : this->column_width; - y = y_org; - i = 1; - } + for (const LegendAndColour *tbl = _legend_table[this->map_type]; !tbl->end; ++tbl) { + if (tbl->col_break || ((this->map_type == SMT_INDUSTRY || this->map_type == SMT_OWNER || this->map_type == SMT_LINKSTATS) && i++ >= number_of_rows)) { + /* Column break needed, continue at top, COLUMN_WIDTH pixels + * (one "row") to the right. */ + x += rtl ? -(int)this->column_width : this->column_width; + y = y_org; + i = 1; + } - uint8 legend_colour = tbl->colour; + uint8 legend_colour = tbl->colour; - if (this->map_type == SMT_INDUSTRY) { + switch (this->map_type) { + case SMT_INDUSTRY: /* Industry name must be formatted, since it's not in tiny font in the specs. * So, draw with a parameter and use the STR_SMALLMAP_INDUSTRY string, which is tiny font */ SetDParam(0, tbl->legend); SetDParam(1, Industry::GetIndustryTypeCount(tbl->type)); - if (!tbl->show_on_map) { - /* Simply draw the string, not the black border of the legend colour. - * This will enforce the idea of the disabled item */ - DrawString(x + text_left, x + text_right, y, STR_SMALLMAP_INDUSTRY, TC_GREY); - } else { - if (tbl->type == _smallmap_industry_highlight) { - legend_colour = _smallmap_industry_highlight_state ? PC_WHITE : PC_BLACK; - } - DrawString(x + text_left, x + text_right, y, STR_SMALLMAP_INDUSTRY, TC_BLACK); - GfxFillRect(x + blob_left, y + 1, x + blob_right, y + row_height - 1, PC_BLACK); // Outer border of the legend colour + if (tbl->show_on_map && tbl->type == _smallmap_industry_highlight) { + legend_colour = _smallmap_industry_highlight_state ? PC_WHITE : PC_BLACK; } - } else if (this->map_type == SMT_OWNER && tbl->company != INVALID_COMPANY) { - SetDParam(0, tbl->company); - if (!tbl->show_on_map) { - /* Simply draw the string, not the black border of the legend colour. - * This will enforce the idea of the disabled item */ - DrawString(x + text_left, x + text_right, y, STR_SMALLMAP_COMPANY, TC_GREY); - } else { - DrawString(x + text_left, x + text_right, y, STR_SMALLMAP_COMPANY, TC_BLACK); - GfxFillRect(x + blob_left, y + 1, x + blob_right, y + row_height - 1, PC_BLACK); // Outer border of the legend colour + /* FALL THROUGH */ + case SMT_LINKSTATS: + SetDParam(0, tbl->legend); + /* FALL_THROUGH */ + case SMT_OWNER: + if (this->map_type != SMT_OWNER || tbl->company != INVALID_COMPANY) { + if (this->map_type == SMT_OWNER) SetDParam(0, tbl->company); + if (!tbl->show_on_map) { + /* Simply draw the string, not the black border of the legend colour. + * This will enforce the idea of the disabled item */ + DrawString(x + text_left, x + text_right, y, string, TC_GREY); + } else { + DrawString(x + text_left, x + text_right, y, string, TC_BLACK); + GfxFillRect(x + blob_left, y + 1, x + blob_right, y + row_height - 1, PC_BLACK); // Outer border of the legend colour + } + break; } - } else { + /* FALL_THROUGH */ + default: if (this->map_type == SMT_CONTOUR) SetDParam(0, tbl->height * TILE_HEIGHT_STEP); - /* Anything that is not an industry or a company is using normal process */ GfxFillRect(x + blob_left, y + 1, x + blob_right, y + row_height - 1, PC_BLACK); DrawString(x + text_left, x + text_right, y, tbl->legend); - } - GfxFillRect(x + blob_left + 1, y + 2, x + blob_right - 1, y + row_height - 2, legend_colour); // Legend colour - - y += row_height; + break; } + GfxFillRect(x + blob_left + 1, y + 2, x + blob_right - 1, y + row_height - 2, legend_colour); // Legend colour + + y += row_height; } } } +} - /** - * Select a new map type. - * @param map_type New map type. - */ - void SwitchMapType(SmallMapType map_type) - { - this->RaiseWidget(this->map_type + WID_SM_CONTOUR); - this->map_type = map_type; - this->LowerWidget(this->map_type + WID_SM_CONTOUR); +/** + * Select a new map type. + * @param map_type New map type. + */ +void SmallMapWindow::SwitchMapType(SmallMapType map_type) +{ + this->RaiseWidget(this->map_type + WID_SM_CONTOUR); + this->map_type = map_type; + this->LowerWidget(this->map_type + WID_SM_CONTOUR); - this->SetupWidgetData(); + this->SetupWidgetData(); - this->SetDirty(); - } + if (map_type == SMT_LINKSTATS) this->overlay->RebuildCache(); + this->SetDirty(); +} - /** - * Determines the mouse position on the legend. - * @param pt Mouse position. - * @return Legend item under the mouse. - */ - int GetPositionOnLegend(Point pt) - { - const NWidgetBase *wi = this->GetWidget(WID_SM_LEGEND); - uint line = (pt.y - wi->pos_y - WD_FRAMERECT_TOP) / FONT_HEIGHT_SMALL; - uint columns = this->GetNumberColumnsLegend(wi->current_x); - uint number_of_rows = max(CeilDiv(max(_smallmap_company_count, _smallmap_industry_count), columns), this->min_number_of_fixed_rows); - if (line >= number_of_rows) return -1; - - bool rtl = _current_text_dir == TD_RTL; - int x = pt.x - wi->pos_x; - if (rtl) x = wi->current_x - x; - uint column = (x - WD_FRAMERECT_LEFT) / this->column_width; - - return (column * number_of_rows) + line; - } +/** + * Get the number of rows in the legend from the number of columns. Those + * are at least min_number_of_fixed_rows and possibly more if there are so + * many cargoes, industry types or companies that they won't fit in the + * available space. + * @param columns Number of columns in the legend. + * @return Number of rows needed for everything to fit in. + */ +inline uint SmallMapWindow::GetNumberRowsLegend(uint columns) const +{ + /* Reserve one column for link colours */ + uint num_rows_linkstats = CeilDiv(_smallmap_cargo_count, columns - 1); + uint num_rows_others = CeilDiv(max(_smallmap_industry_count, _smallmap_company_count), columns); + return max(this->min_number_of_fixed_rows, max(num_rows_linkstats, num_rows_others)); +} - virtual void OnMouseOver(Point pt, int widget) - { - IndustryType new_highlight = INVALID_INDUSTRYTYPE; - if (widget == WID_SM_LEGEND && this->map_type == SMT_INDUSTRY) { - int industry_pos = GetPositionOnLegend(pt); - if (industry_pos >= 0 && industry_pos < _smallmap_industry_count) { - new_highlight = _legend_from_industries[industry_pos].type; +/** + * Select and toggle a legend item. When CTRL is pressed, disable all other + * items in the group defined by begin_legend_item and end_legend_item and + * keep the clicked one enabled even if it was already enabled before. If + * the other items in the group are all disabled already and CTRL is pressed + * enable them instead. + * @param click_pos the index of the item being selected + * @param legend the legend from which we select + * @param end_legend_item index one past the last item in the group to be inverted + * @param begin_legend_item index of the first item in the group to be inverted + */ +void SmallMapWindow::SelectLegendItem(int click_pos, LegendAndColour *legend, int end_legend_item, int begin_legend_item) +{ + if (_ctrl_pressed) { + /* Disable all, except the clicked one */ + bool changes = false; + for (int i = begin_legend_item; i != end_legend_item; i++) { + bool new_state = (i == click_pos); + if (legend[i].show_on_map != new_state) { + changes = true; + legend[i].show_on_map = new_state; } } - if (new_highlight != _smallmap_industry_highlight) { - _smallmap_industry_highlight = new_highlight; - this->refresh = _smallmap_industry_highlight != INVALID_INDUSTRYTYPE ? BLINK_PERIOD : FORCE_REFRESH_PERIOD; - _smallmap_industry_highlight_state = true; - this->SetDirty(); + if (!changes) { + /* Nothing changed? Then show all (again). */ + for (int i = begin_legend_item; i != end_legend_item; i++) { + legend[i].show_on_map = true; + } } + } else { + legend[click_pos].show_on_map = !legend[click_pos].show_on_map; } +} - virtual void OnClick(Point pt, int widget, int click_count) - { - /* User clicked something, notify the industry chain window to stop sending newly selected industries. */ - InvalidateWindowClassesData(WC_INDUSTRY_CARGOES, NUM_INDUSTRYTYPES); - - switch (widget) { - case WID_SM_MAP: { // Map window - /* - * XXX: scrolling with the left mouse button is done by subsequently - * clicking with the left mouse button; clicking once centers the - * large map at the selected point. So by unclicking the left mouse - * button here, it gets reclicked during the next inputloop, which - * would make it look like the mouse is being dragged, while it is - * actually being (virtually) clicked every inputloop. - */ - _left_button_clicked = false; - - const NWidgetBase *wid = this->GetWidget(WID_SM_MAP); - 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); +/** + * Set the link graph overlay cargo mask from the legend. + */ +void SmallMapWindow::SetOverlayCargoMask() +{ + uint32 cargo_mask = 0; + for (int i = 0; i != _smallmap_cargo_count; ++i) { + if (_legend_linkstats[i].show_on_map) SetBit(cargo_mask, _legend_linkstats[i].type); + } + this->overlay->SetCargoMask(cargo_mask); +} - this->SetDirty(); - break; - } +/** + * Determines the mouse position on the legend. + * @param pt Mouse position. + * @return Legend item under the mouse. + */ +int SmallMapWindow::GetPositionOnLegend(Point pt) +{ + const NWidgetBase *wi = this->GetWidget(WID_SM_LEGEND); + uint line = (pt.y - wi->pos_y - WD_FRAMERECT_TOP) / FONT_HEIGHT_SMALL; + uint columns = this->GetNumberColumnsLegend(wi->current_x); + uint number_of_rows = this->GetNumberRowsLegend(columns); + if (line >= number_of_rows) return -1; + + bool rtl = _current_text_dir == TD_RTL; + int x = pt.x - wi->pos_x; + if (rtl) x = wi->current_x - x; + uint column = (x - WD_FRAMERECT_LEFT) / this->column_width; + + return (column * number_of_rows) + line; +} - case WID_SM_ZOOM_IN: - case WID_SM_ZOOM_OUT: { - const NWidgetBase *wid = this->GetWidget(WID_SM_MAP); - Point pt = {wid->current_x / 2, wid->current_y / 2}; - this->SetZoomLevel((widget == WID_SM_ZOOM_IN) ? ZLC_ZOOM_IN : ZLC_ZOOM_OUT, &pt); - if (_settings_client.sound.click_beep) SndPlayFx(SND_15_BEEP); - break; - } +/* virtual */ void SmallMapWindow::OnMouseOver(Point pt, int widget) +{ + IndustryType new_highlight = INVALID_INDUSTRYTYPE; + if (widget == WID_SM_LEGEND && this->map_type == SMT_INDUSTRY) { + int industry_pos = GetPositionOnLegend(pt); + if (industry_pos >= 0 && industry_pos < _smallmap_industry_count) { + new_highlight = _legend_from_industries[industry_pos].type; + } + } + if (new_highlight != _smallmap_industry_highlight) { + _smallmap_industry_highlight = new_highlight; + this->refresh = _smallmap_industry_highlight != INVALID_INDUSTRYTYPE ? BLINK_PERIOD : FORCE_REFRESH_PERIOD; + _smallmap_industry_highlight_state = true; + this->SetDirty(); + } +} - case WID_SM_CONTOUR: // Show land contours - case WID_SM_VEHICLES: // Show vehicles - case WID_SM_INDUSTRIES: // Show industries - case WID_SM_ROUTES: // Show transport routes - case WID_SM_VEGETATION: // Show vegetation - case WID_SM_OWNERS: // Show land owners - this->SwitchMapType((SmallMapType)(widget - WID_SM_CONTOUR)); - if (_settings_client.sound.click_beep) SndPlayFx(SND_15_BEEP); - break; +/* virtual */ void SmallMapWindow::OnClick(Point pt, int widget, int click_count) +{ + /* User clicked something, notify the industry chain window to stop sending newly selected industries. */ + InvalidateWindowClassesData(WC_INDUSTRY_CARGOES, NUM_INDUSTRYTYPES); + + switch (widget) { + case WID_SM_MAP: { // Map window + /* + * XXX: scrolling with the left mouse button is done by subsequently + * clicking with the left mouse button; clicking once centers the + * large map at the selected point. So by unclicking the left mouse + * button here, it gets reclicked during the next inputloop, which + * would make it look like the mouse is being dragged, while it is + * actually being (virtually) clicked every inputloop. + */ + _left_button_clicked = false; - case WID_SM_CENTERMAP: // Center the smallmap again - this->SmallMapCenterOnCurrentPos(); - this->HandleButtonClick(WID_SM_CENTERMAP); - if (_settings_client.sound.click_beep) SndPlayFx(SND_15_BEEP); - break; + const NWidgetBase *wid = this->GetWidget(WID_SM_MAP); + 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); - case WID_SM_TOGGLETOWNNAME: // Toggle town names - this->show_towns = !this->show_towns; - this->SetWidgetLoweredState(WID_SM_TOGGLETOWNNAME, this->show_towns); + 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); - this->SetDirty(); - if (_settings_client.sound.click_beep) SndPlayFx(SND_15_BEEP); - break; + this->SetDirty(); + break; + } - case WID_SM_LEGEND: // Legend - if (this->map_type == SMT_INDUSTRY || this->map_type == SMT_OWNER) { - /* If industry type small map*/ - if (this->map_type == SMT_INDUSTRY) { - /* If click on industries label, find right industry type and enable/disable it. */ - int industry_pos = GetPositionOnLegend(pt); - if (industry_pos >= 0 && industry_pos < _smallmap_industry_count) { - if (_ctrl_pressed) { - /* Disable all, except the clicked one. */ - bool changes = false; - for (int i = 0; i != _smallmap_industry_count; i++) { - bool new_state = i == industry_pos; - if (_legend_from_industries[i].show_on_map != new_state) { - changes = true; - _legend_from_industries[i].show_on_map = new_state; - } - } - if (!changes) { - /* Nothing changed? Then show all (again). */ - for (int i = 0; i != _smallmap_industry_count; i++) { - _legend_from_industries[i].show_on_map = true; - } - } - } else { - _legend_from_industries[industry_pos].show_on_map = !_legend_from_industries[industry_pos].show_on_map; - } - } - } else if (this->map_type == SMT_OWNER) { - /* If click on companies label, find right company and enable/disable it. */ - int company_pos = GetPositionOnLegend(pt); - if (company_pos < NUM_NO_COMPANY_ENTRIES) break; - if (company_pos < _smallmap_company_count) { - if (_ctrl_pressed) { - /* Disable all, except the clicked one */ - bool changes = false; - for (int i = NUM_NO_COMPANY_ENTRIES; i != _smallmap_company_count; i++) { - bool new_state = i == company_pos; - if (_legend_land_owners[i].show_on_map != new_state) { - changes = true; - _legend_land_owners[i].show_on_map = new_state; - } - } - if (!changes) { - /* Nothing changed? Then show all (again). */ - for (int i = NUM_NO_COMPANY_ENTRIES; i != _smallmap_company_count; i++) { - _legend_land_owners[i].show_on_map = true; - } - } - } else { - _legend_land_owners[company_pos].show_on_map = !_legend_land_owners[company_pos].show_on_map; - } - } - } - this->SetDirty(); - } - break; + case WID_SM_ZOOM_IN: + case WID_SM_ZOOM_OUT: { + const NWidgetBase *wid = this->GetWidget(WID_SM_MAP); + Point pt = {wid->current_x / 2, wid->current_y / 2}; + this->SetZoomLevel((widget == WID_SM_ZOOM_IN) ? ZLC_ZOOM_IN : ZLC_ZOOM_OUT, &pt); + if (_settings_client.sound.click_beep) SndPlayFx(SND_15_BEEP); + break; + } + + case WID_SM_CONTOUR: // Show land contours + case WID_SM_VEHICLES: // Show vehicles + case WID_SM_INDUSTRIES: // Show industries + case WID_SM_LINKSTATS: // Show route map + case WID_SM_ROUTES: // Show transport routes + case WID_SM_VEGETATION: // Show vegetation + case WID_SM_OWNERS: // Show land owners + this->SwitchMapType((SmallMapType)(widget - WID_SM_CONTOUR)); + if (_settings_client.sound.click_beep) SndPlayFx(SND_15_BEEP); + break; + + case WID_SM_CENTERMAP: // Center the smallmap again + this->SmallMapCenterOnCurrentPos(); + this->HandleButtonClick(WID_SM_CENTERMAP); + if (_settings_client.sound.click_beep) SndPlayFx(SND_15_BEEP); + break; + + case WID_SM_TOGGLETOWNNAME: // Toggle town names + this->show_towns = !this->show_towns; + this->SetWidgetLoweredState(WID_SM_TOGGLETOWNNAME, this->show_towns); + + this->SetDirty(); + if (_settings_client.sound.click_beep) SndPlayFx(SND_15_BEEP); + break; + + 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; - case WID_SM_ENABLE_ALL: + /* If industry type small map*/ if (this->map_type == SMT_INDUSTRY) { - for (int i = 0; i != _smallmap_industry_count; i++) { - _legend_from_industries[i].show_on_map = true; + /* If click on industries label, find right industry type and enable/disable it. */ + if (click_pos < _smallmap_industry_count) { + this->SelectLegendItem(click_pos, _legend_from_industries, _smallmap_industry_count); + } + } else if (this->map_type == SMT_LINKSTATS) { + if (click_pos < _smallmap_cargo_count) { + this->SelectLegendItem(click_pos, _legend_linkstats, _smallmap_cargo_count); + this->SetOverlayCargoMask(); } } else if (this->map_type == SMT_OWNER) { - for (int i = NUM_NO_COMPANY_ENTRIES; i != _smallmap_company_count; i++) { - _legend_land_owners[i].show_on_map = true; + if (click_pos < _smallmap_company_count) { + this->SelectLegendItem(click_pos, _legend_land_owners, _smallmap_company_count, NUM_NO_COMPANY_ENTRIES); } } this->SetDirty(); - break; + } + break; + + case WID_SM_ENABLE_ALL: + /* FALL THROUGH */ + case WID_SM_DISABLE_ALL: { + LegendAndColour *tbl = NULL; + switch (this->map_type) { + case SMT_INDUSTRY: + tbl = _legend_from_industries; + break; + case SMT_OWNER: + tbl = &(_legend_land_owners[NUM_NO_COMPANY_ENTRIES]); + break; + case SMT_LINKSTATS: + tbl = _legend_linkstats; + break; + default: + NOT_REACHED(); + } + for (;!tbl->end && tbl->legend != STR_LINKGRAPH_LEGEND_UNUSED; ++tbl) { + tbl->show_on_map = (widget == WID_SM_ENABLE_ALL); + } + if (this->map_type == SMT_LINKSTATS) this->SetOverlayCargoMask(); + this->SetDirty(); + break; + } - case WID_SM_DISABLE_ALL: - if (this->map_type == SMT_INDUSTRY) { - for (int i = 0; i != _smallmap_industry_count; i++) { - _legend_from_industries[i].show_on_map = false; - } - } else { - for (int i = NUM_NO_COMPANY_ENTRIES; i != _smallmap_company_count; i++) { - _legend_land_owners[i].show_on_map = false; - } - } - this->SetDirty(); - break; + case WID_SM_SHOW_HEIGHT: // Enable/disable showing of heightmap. + _smallmap_show_heightmap = !_smallmap_show_heightmap; + this->SetWidgetLoweredState(WID_SM_SHOW_HEIGHT, _smallmap_show_heightmap); + this->SetDirty(); + break; + } +} - case WID_SM_SHOW_HEIGHT: // Enable/disable showing of heightmap. - _smallmap_show_heightmap = !_smallmap_show_heightmap; - this->SetWidgetLoweredState(WID_SM_SHOW_HEIGHT, _smallmap_show_heightmap); - this->SetDirty(); - break; +/** + * Some data on this window has become invalid. + * @param data Information about the changed data. + * - data = 0: Displayed industries at the industry chain window have changed. + * - data = 1: Companies have changed. + * @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. */ + this->ReInit(); + break; + + case 0: { + extern uint64 _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); + } + break; } - } - /** - * Some data on this window has become invalid. - * @param data Information about the changed data. - * - data = 0: Displayed industries at the industry chain window have changed. - * - data = 1: Companies have changed. - * @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; - switch (data) { - case 1: - /* The owner legend has already been rebuilt. */ - this->ReInit(); - break; + default: NOT_REACHED(); + } + this->SetDirty(); +} - case 0: { - extern uint64 _displayed_industries; - if (this->map_type != SMT_INDUSTRY) this->SwitchMapType(SMT_INDUSTRY); +/* virtual */ bool SmallMapWindow::OnRightClick(Point pt, int widget) +{ + if (widget != WID_SM_MAP || _scrolling_viewport) return false; - for (int i = 0; i != _smallmap_industry_count; i++) { - _legend_from_industries[i].show_on_map = HasBit(_displayed_industries, _legend_from_industries[i].type); - } - break; - } + _scrolling_viewport = true; + return true; +} - default: NOT_REACHED(); +/* virtual */ void SmallMapWindow::OnMouseWheel(int wheel) +{ + if (_settings_client.gui.scrollwheel_scrolling == 0) { + const NWidgetBase *wid = this->GetWidget(WID_SM_MAP); + int cursor_x = _cursor.pos.x - this->left - wid->pos_x; + int cursor_y = _cursor.pos.y - this->top - wid->pos_y; + if (IsInsideMM(cursor_x, 0, wid->current_x) && IsInsideMM(cursor_y, 0, wid->current_y)) { + Point pt = {cursor_x, cursor_y}; + this->SetZoomLevel((wheel < 0) ? ZLC_ZOOM_IN : ZLC_ZOOM_OUT, &pt); } - this->SetDirty(); } +} - virtual bool OnRightClick(Point pt, int widget) - { - if (widget != WID_SM_MAP || _scrolling_viewport) return false; - - _scrolling_viewport = true; - return true; - } +/* virtual */ void SmallMapWindow::OnTick() +{ + /* Update the window every now and then */ + if (--this->refresh != 0) return; - virtual void OnMouseWheel(int wheel) - { - if (_settings_client.gui.scrollwheel_scrolling == 0) { - const NWidgetBase *wid = this->GetWidget(WID_SM_MAP); - int cursor_x = _cursor.pos.x - this->left - wid->pos_x; - int cursor_y = _cursor.pos.y - this->top - wid->pos_y; - if (IsInsideMM(cursor_x, 0, wid->current_x) && IsInsideMM(cursor_y, 0, wid->current_y)) { - Point pt = {cursor_x, cursor_y}; - this->SetZoomLevel((wheel < 0) ? ZLC_ZOOM_IN : ZLC_ZOOM_OUT, &pt); - } + 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; - virtual void OnTick() - { - /* Update the window every now and then */ - if (--this->refresh != 0) return; - - _smallmap_industry_highlight_state = !_smallmap_industry_highlight_state; + this->refresh = _smallmap_industry_highlight != INVALID_INDUSTRYTYPE ? BLINK_PERIOD : FORCE_REFRESH_PERIOD; + this->SetDirty(); +} - this->refresh = _smallmap_industry_highlight != INVALID_INDUSTRYTYPE ? BLINK_PERIOD : FORCE_REFRESH_PERIOD; - this->SetDirty(); +/** + * Set new #scroll_x, #scroll_y, and #subscroll values after limiting them such that the center + * of the smallmap always contains a part of the map. + * @param sx Proposed new #scroll_x + * @param sy Proposed new #scroll_y + * @param sub Proposed new #subscroll + */ +void SmallMapWindow::SetNewScroll(int sx, int sy, int sub) +{ + const NWidgetBase *wi = this->GetWidget(WID_SM_MAP); + Point hv = InverseRemapCoords(wi->current_x * ZOOM_LVL_BASE * TILE_SIZE / 2, wi->current_y * ZOOM_LVL_BASE * TILE_SIZE / 2); + hv.x *= this->zoom; + hv.y *= this->zoom; + + if (sx < -hv.x) { + sx = -hv.x; + sub = 0; + } + if (sx > (int)(MapMaxX() * TILE_SIZE) - hv.x) { + sx = MapMaxX() * TILE_SIZE - hv.x; + sub = 0; + } + if (sy < -hv.y) { + sy = -hv.y; + sub = 0; + } + if (sy > (int)(MapMaxY() * TILE_SIZE) - hv.y) { + sy = MapMaxY() * TILE_SIZE - hv.y; + sub = 0; } - /** - * Set new #scroll_x, #scroll_y, and #subscroll values after limiting them such that the center - * of the smallmap always contains a part of the map. - * @param sx Proposed new #scroll_x - * @param sy Proposed new #scroll_y - * @param sub Proposed new #subscroll - */ - void SetNewScroll(int sx, int sy, int sub) - { - const NWidgetBase *wi = this->GetWidget(WID_SM_MAP); - Point hv = InverseRemapCoords(wi->current_x * ZOOM_LVL_BASE * TILE_SIZE / 2, wi->current_y * ZOOM_LVL_BASE * TILE_SIZE / 2); - hv.x *= this->zoom; - hv.y *= this->zoom; - - if (sx < -hv.x) { - sx = -hv.x; - sub = 0; - } - if (sx > (int)(MapMaxX() * TILE_SIZE) - hv.x) { - sx = MapMaxX() * TILE_SIZE - hv.x; - sub = 0; - } - if (sy < -hv.y) { - sy = -hv.y; - sub = 0; - } - if (sy > (int)(MapMaxY() * TILE_SIZE) - hv.y) { - sy = MapMaxY() * TILE_SIZE - hv.y; - sub = 0; - } + this->scroll_x = sx; + this->scroll_y = sy; + this->subscroll = sub; + if (this->map_type == SMT_LINKSTATS) this->overlay->RebuildCache(); +} - this->scroll_x = sx; - this->scroll_y = sy; - this->subscroll = sub; - } +/* virtual */ void SmallMapWindow::OnScroll(Point delta) +{ + _cursor.fix_at = true; - virtual void OnScroll(Point delta) - { - _cursor.fix_at = true; + /* While tile is at (delta.x, delta.y)? */ + int sub; + Point pt = this->PixelToTile(delta.x, delta.y, &sub); + this->SetNewScroll(this->scroll_x + pt.x * TILE_SIZE, this->scroll_y + pt.y * TILE_SIZE, sub); - /* While tile is at (delta.x, delta.y)? */ - int sub; - Point pt = this->PixelToTile(delta.x, delta.y, &sub); - this->SetNewScroll(this->scroll_x + pt.x * TILE_SIZE, this->scroll_y + pt.y * TILE_SIZE, sub); + this->SetDirty(); +} - this->SetDirty(); - } +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); + + 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); + this->SetNewScroll(sxy.x, sxy.y, sub); + this->SetDirty(); +} - void 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); +/** + * Get the center of the given station as point on the screen in the smallmap window. + * @param st Station to find in the smallmap. + * @return Point with coordinates of the station. + */ +Point SmallMapWindow::GetStationMiddle(const Station *st) const +{ + int x = (st->rect.right + st->rect.left + 1) / 2; + int y = (st->rect.bottom + st->rect.top + 1) / 2; + Point ret = this->RemapTile(x, y); - 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); - this->SetNewScroll(sxy.x, sxy.y, sub); - this->SetDirty(); - } -}; + /* Same magic 3 as in DrawVehicles; that's where I got it from. + * No idea what it is, but without it the result looks bad. + */ + ret.x -= 3 + this->subscroll; + return ret; +} SmallMapWindow::SmallMapType SmallMapWindow::map_type = SMT_CONTOUR; bool SmallMapWindow::show_towns = true; @@ -1593,8 +1632,8 @@ bool SmallMapWindow::show_towns = true; * Custom container class for displaying smallmap with a vertically resizing legend panel. * The legend panel has a smallest height that depends on its width. Standard containers cannot handle this case. * - * @note The container assumes it has two childs, the first is the display, the second is the bar with legends and selection image buttons. - * Both childs should be both horizontally and vertically resizable and horizontally fillable. + * @note The container assumes it has two children, the first is the display, the second is the bar with legends and selection image buttons. + * Both children should be both horizontally and vertically resizable and horizontally fillable. * The bar should have a minimal size with a zero-size legends display. Child padding is not supported. */ class NWidgetSmallmapDisplay : public NWidgetContainer { @@ -1614,6 +1653,7 @@ class NWidgetSmallmapDisplay : public NWidgetContainer { 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); @@ -1681,6 +1721,8 @@ static const NWidgetPart _nested_smallmap_bar[] = { SetDataTip(SPR_IMG_ZOOMIN, STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_IN), SetFill(1, 1), NWidget(WWT_PUSHIMGBTN, COLOUR_BROWN, WID_SM_CENTERMAP), SetDataTip(SPR_IMG_SMALLMAP, STR_SMALLMAP_CENTER), SetFill(1, 1), + NWidget(WWT_IMGBTN, COLOUR_BROWN, WID_SM_BLANK), + SetDataTip(SPR_DOT_SMALL, STR_NULL), SetFill(1, 1), NWidget(WWT_IMGBTN, COLOUR_BROWN, WID_SM_CONTOUR), SetDataTip(SPR_IMG_SHOW_COUNTOURS, STR_SMALLMAP_TOOLTIP_SHOW_LAND_CONTOURS_ON_MAP), SetFill(1, 1), NWidget(WWT_IMGBTN, COLOUR_BROWN, WID_SM_VEHICLES), @@ -1694,6 +1736,8 @@ static const NWidgetPart _nested_smallmap_bar[] = { SetDataTip(SPR_IMG_ZOOMOUT, STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_OUT), SetFill(1, 1), 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_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), @@ -1722,6 +1766,7 @@ static const NWidgetPart _nested_smallmap_widgets[] = { NWidget(WWT_CLOSEBOX, COLOUR_BROWN), NWidget(WWT_CAPTION, COLOUR_BROWN, WID_SM_CAPTION), SetDataTip(STR_SMALLMAP_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), NWidget(WWT_SHADEBOX, COLOUR_BROWN), + NWidget(WWT_DEFSIZEBOX, COLOUR_BROWN), NWidget(WWT_STICKYBOX, COLOUR_BROWN), EndContainer(), NWidgetFunction(SmallMapDisplay), // Smallmap display and legend bar + image buttons. @@ -1744,8 +1789,8 @@ static const NWidgetPart _nested_smallmap_widgets[] = { EndContainer(), }; -static const WindowDesc _smallmap_desc( - WDP_AUTO, 446, 314, +static WindowDesc _smallmap_desc( + WDP_AUTO, "smallmap", 484, 314, WC_SMALLMAP, WC_NONE, 0, _nested_smallmap_widgets, lengthof(_nested_smallmap_widgets) diff --git a/src/smallmap_gui.h b/src/smallmap_gui.h index 572a17534..6652f83d8 100644 --- a/src/smallmap_gui.h +++ b/src/smallmap_gui.h @@ -12,9 +12,181 @@ #ifndef SMALLMAP_GUI_H #define SMALLMAP_GUI_H +#include "industry_type.h" +#include "company_base.h" +#include "window_gui.h" +#include "strings_func.h" +#include "blitter/factory.hpp" +#include "linkgraph/linkgraph_gui.h" +#include "widgets/smallmap_widget.h" + +/* set up the cargos to be displayed in the smallmap's route legend */ +void BuildLinkStatsLegend(); + void BuildIndustriesLegend(); void ShowSmallMap(); void BuildLandLegend(); void BuildOwnerLegend(); +/** Structure for holding relevant data for legends in small map */ +struct LegendAndColour { + uint8 colour; ///< Colour of the item on the map. + StringID legend; ///< String corresponding to the coloured item. + IndustryType type; ///< Type of industry. Only valid for industry entries. + uint8 height; ///< Height in tiles. Only valid for height legend entries. + CompanyID company; ///< Company to display. Only valid for company entries of the owner legend. + bool show_on_map; ///< For filtering industries, if \c true, industry is shown on the map in colour. + bool end; ///< This is the end of the list. + bool col_break; ///< Perform a column break and go further at the next column. +}; + +/** Class managing the smallmap window. */ +class SmallMapWindow : public Window { +protected: + /** Types of legends in the #WID_SM_LEGEND widget. */ + enum SmallMapType { + SMT_CONTOUR, + SMT_VEHICLES, + SMT_INDUSTRY, + SMT_LINKSTATS, + SMT_ROUTES, + SMT_VEGETATION, + SMT_OWNER, + }; + + /** Available kinds of zoomlevel changes. */ + enum ZoomLevelChange { + ZLC_INITIALIZE, ///< Initialize zoom level. + ZLC_ZOOM_OUT, ///< Zoom out. + ZLC_ZOOM_IN, ///< Zoom in. + }; + + static SmallMapType map_type; ///< Currently displayed legends. + static bool show_towns; ///< Display town names in the smallmap. + + 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. + static const uint FORCE_REFRESH_PERIOD = 0x1F; ///< map is redrawn after that many ticks + static const uint BLINK_PERIOD = 0x0F; ///< highlight blinking interval + + uint min_number_of_columns; ///< Minimal number of columns in legends. + uint min_number_of_fixed_rows; ///< Minimal number of rows in the legends for the fixed layouts only (all except #SMT_INDUSTRY). + uint column_width; ///< Width of a column in the #WID_SM_LEGEND widget. + + int32 scroll_x; ///< Horizontal world coordinate of the base tile left of the top-left corner of the smallmap display. + int32 scroll_y; ///< Vertical world coordinate of the base tile left of the top-left corner of the smallmap display. + int32 subscroll; ///< Number of pixels (0..3) between the right end of the base tile and the pixel at the top-left corner of the smallmap display. + int zoom; ///< Zoom level. Bigger number means more zoom-out (further away). + + uint8 refresh; ///< Refresh counter, zeroed every FORCE_REFRESH_PERIOD ticks. + LinkGraphOverlay *overlay; + + Point SmallmapRemapCoords(int x, int y) const; + + /** + * Draws vertical part of map indicator + * @param x X coord of left/right border of main viewport + * @param y Y coord of top border of main viewport + * @param y2 Y coord of bottom border of main viewport + */ + static inline void DrawVertMapIndicator(int x, int y, int y2) + { + GfxFillRect(x, y, x, y + 3, PC_VERY_LIGHT_YELLOW); + GfxFillRect(x, y2 - 3, x, y2, PC_VERY_LIGHT_YELLOW); + } + + /** + * Draws horizontal part of map indicator + * @param x X coord of left border of main viewport + * @param x2 X coord of right border of main viewport + * @param y Y coord of top/bottom border of main viewport + */ + static inline void DrawHorizMapIndicator(int x, int x2, int y) + { + GfxFillRect(x, y, x + 3, y, PC_VERY_LIGHT_YELLOW); + GfxFillRect(x2 - 3, y, x2, y, PC_VERY_LIGHT_YELLOW); + } + + /** + * Compute minimal required width of the legends. + * @return Minimally needed width for displaying the smallmap legends in pixels. + */ + inline uint GetMinLegendWidth() const + { + return WD_FRAMERECT_LEFT + this->min_number_of_columns * this->column_width; + } + + /** + * Return number of columns that can be displayed in \a width pixels. + * @return Number of columns to display. + */ + inline uint GetNumberColumnsLegend(uint width) const + { + return width / this->column_width; + } + + /** + * Compute height given a number of columns. + * @param num_columns Number of columns. + * @return Needed height for displaying the smallmap legends in pixels. + */ + inline uint GetLegendHeight(uint num_columns) const + { + return WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM + + 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; + } + + 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); + void SetNewScroll(int sx, int sy, int sub); + + void DrawMapIndicators() const; + void DrawSmallMapColumn(void *dst, uint xc, uint yc, int pitch, int reps, int start_pos, int end_pos, Blitter *blitter) const; + void DrawVehicles(const DrawPixelInfo *dpi, Blitter *blitter) const; + void DrawTowns(const DrawPixelInfo *dpi) const; + void DrawSmallMap(DrawPixelInfo *dpi) const; + + Point RemapTile(int tile_x, int tile_y) const; + Point PixelToTile(int px, int py, int *sub, bool add_sub = true) const; + Point ComputeScroll(int tx, int ty, int x, int y, int *sub); + void SetZoomLevel(ZoomLevelChange change, const Point *zoom_pt); + void SetOverlayCargoMask(); + void SetupWidgetData(); + uint32 GetTileColours(const TileArea &ta) const; + + int GetPositionOnLegend(Point pt); + +public: + friend class NWidgetSmallmapDisplay; + + SmallMapWindow(WindowDesc *desc, int window_number); + virtual ~SmallMapWindow() { delete this->overlay; } + + void SmallMapCenterOnCurrentPos(); + Point GetStationMiddle(const Station *st) const; + + virtual void SetStringParameters(int widget) const; + virtual void OnInit(); + virtual void OnPaint(); + 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); + virtual bool OnRightClick(Point pt, int widget); + virtual void OnMouseWheel(int wheel); + virtual void OnTick(); + virtual void OnScroll(Point delta); + virtual void OnMouseOver(Point pt, int widget); +}; + #endif /* SMALLMAP_GUI_H */ diff --git a/src/sortlist_type.h b/src/sortlist_type.h index 5e6ac11be..1a30c3b1a 100644 --- a/src/sortlist_type.h +++ b/src/sortlist_type.h @@ -30,7 +30,7 @@ enum SortListFlags { }; DECLARE_ENUM_AS_BIT_SET(SortListFlags) -/** Data structure describing how to show the list (what sort direction and criterium). */ +/** Data structure describing how to show the list (what sort direction and criteria). */ struct Listing { bool order; ///< Ascending/descending byte criteria; ///< Sorting criteria @@ -232,7 +232,7 @@ class GUIList : public SmallVector { } /** - * Toogle the sort order + * Toggle the sort order * Since that is the worst condition for the sort function * reverse the list here. */ diff --git a/src/sound.cpp b/src/sound.cpp index 4c7277852..79dd988bf 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) @@ -306,7 +308,7 @@ template const Tbase_set *best = NULL; for (const Tbase_set *c = BaseMedia::available_sets; c != NULL; c = c->next) { - /* Skip unuseable sets */ + /* Skip unusable sets */ if (c->GetNumMissing() != 0) continue; if (best == NULL || diff --git a/src/sound/allegro_s.cpp b/src/sound/allegro_s.cpp index 76a1e1e91..88a723ff8 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 315bad2a8..e0a247f7b 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 @@ class SoundDriver_Allegro: public SoundDriver { }; /** 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 945c15da2..8cf4a632b 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; @@ -67,7 +69,7 @@ const char *SoundDriver_Cocoa::Start(const char * const *parm) requestedDesc.mBytesPerFrame = requestedDesc.mBitsPerChannel * requestedDesc.mChannelsPerFrame / 8; requestedDesc.mBytesPerPacket = requestedDesc.mBytesPerFrame * requestedDesc.mFramesPerPacket; - MxInitialize(requestedDesc.mSampleRate); + MxInitialize((uint)requestedDesc.mSampleRate); /* Locate the default output audio unit */ desc.componentType = kAudioUnitType_Output; diff --git a/src/sound/cocoa_s.h b/src/sound/cocoa_s.h index 7492164c5..701091425 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 @@ class SoundDriver_Cocoa: public SoundDriver { /* 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 953bf5764..3dc95c46f 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 5951842cb..b2acd9093 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 @@ class SoundDriver_Null: public SoundDriver { }; /** 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 7e1c3e993..e3fb99eaa 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 6733ee6a7..544ce2070 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 @@ class SoundDriver_SDL: public SoundDriver { }; /** 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 56664e6ad..0df69b8b4 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 d241f45c8..0cd632714 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 03af04a53..77906c88a 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 @@ class SoundDriver_Win32: public SoundDriver { }; /** 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 b014c2694..72486dcac 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 acf0dca2d..6db6966d8 100644 --- a/src/sprite.cpp +++ b/src/sprite.cpp @@ -16,12 +16,14 @@ #include "spritecache.h" #include "zoom_func.h" +#include "safeguards.h" + /** * Draws a tile sprite sequence. * @param ti The tile to draw on * @param dts Sprite and subsprites to draw - * @param to The transparancy bit that toggles drawing of these sprites + * @param to The transparency bit that toggles drawing of these sprites * @param orig_offset Sprite-Offset for original sprites * @param newgrf_offset Sprite-Offset for NewGRF defined sprites * @param default_palette The default recolour sprite to use (typically company colour) diff --git a/src/spritecache.cpp b/src/spritecache.cpp index 55d5f376c..c41b8f51c 100644 --- a/src/spritecache.cpp +++ b/src/spritecache.cpp @@ -13,6 +13,7 @@ #include "fileio_func.h" #include "spriteloader/grf.hpp" #include "gfx_func.h" +#include "error.h" #include "zoom_func.h" #include "settings_type.h" #include "blitter/factory.hpp" @@ -20,8 +21,11 @@ #include "core/mem_func.hpp" #include "table/sprites.h" +#include "table/strings.h" #include "table/palette_convert.h" +#include "safeguards.h" + /* Default of 4MB spritecache */ uint _sprite_cache_size = 4; @@ -116,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); } @@ -159,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; @@ -391,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); } @@ -414,7 +419,7 @@ static void *ReadSprite(const SpriteCache *sc, SpriteID id, SpriteType sprite_ty * extract the data directly and store that as sprite. * Ugly: yes. Other solution: no. Blame the original author or * something ;) The image should really have been a data-stream - * (so type = 0xFF basicly). */ + * (so type = 0xFF basically). */ uint num = sprite[ZOOM_LVL_NORMAL].width * sprite[ZOOM_LVL_NORMAL].height; Sprite *s = (Sprite *)allocator(sizeof(*s) + num); @@ -439,11 +444,11 @@ static void *ReadSprite(const SpriteCache *sc, SpriteID id, SpriteType sprite_ty return (void*)GetRawSprite(SPR_IMG_QUERY, ST_NORMAL, allocator); } } - return BlitterFactoryBase::GetCurrentBlitter()->Encode(sprite, allocator); + return BlitterFactory::GetCurrentBlitter()->Encode(sprite, allocator); } -/** */ +/** Map from sprite numbers to position in the GRF file. */ static std::map _grf_sprite_offsets; /** @@ -844,13 +849,46 @@ 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; - if (_spritecache_ptr == NULL || _allocated_sprite_cache_size != target_size) { - free(_spritecache_ptr); + /* Remember 'target_size' from the previous allocation attempt, so we do not try to reach the target_size multiple times in case of failure. */ + static uint last_alloc_attempt = 0; + + if (_spritecache_ptr == NULL || (_allocated_sprite_cache_size != target_size && target_size != last_alloc_attempt)) { + delete[] reinterpret_cast(_spritecache_ptr); + + last_alloc_attempt = target_size; _allocated_sprite_cache_size = target_size; - _spritecache_ptr = (MemBlock*)MallocT(_allocated_sprite_cache_size); + + do { + try { + /* Try to allocate 50% more to make sure we do not allocate almost all available. */ + _spritecache_ptr = reinterpret_cast(new byte[_allocated_sprite_cache_size + _allocated_sprite_cache_size / 2]); + } catch (std::bad_alloc &) { + _spritecache_ptr = NULL; + } + + if (_spritecache_ptr != NULL) { + /* Allocation succeeded, but we wanted less. */ + delete[] reinterpret_cast(_spritecache_ptr); + _spritecache_ptr = reinterpret_cast(new byte[_allocated_sprite_cache_size]); + } else if (_allocated_sprite_cache_size < 2 * 1024 * 1024) { + usererror("Cannot allocate spritecache"); + } else { + /* Try again to allocate half. */ + _allocated_sprite_cache_size >>= 1; + } + } while (_spritecache_ptr == NULL); + + if (_allocated_sprite_cache_size != target_size) { + DEBUG(misc, 0, "Not enough memory to allocate %d MiB of spritecache. Spritecache was reduced to %d MiB.", target_size / 1024 / 1024, _allocated_sprite_cache_size / 1024 / 1024); + + ErrorMessageData msg(STR_CONFIG_ERROR_OUT_OF_MEMORY, STR_CONFIG_ERROR_SPRITECACHE_TOO_BIG); + msg.SetDParam(0, target_size); + msg.SetDParam(1, _allocated_sprite_cache_size); + ScheduleErrorMessage(msg); + } } /* A big free block */ diff --git a/src/spriteloader/grf.cpp b/src/spriteloader/grf.cpp index 2de58dc6f..a45bd0fa8 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. */ @@ -235,6 +237,11 @@ uint8 LoadSpriteV1(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) { + 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; @@ -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 94f49fd0b..c035aafce 100644 --- a/src/station.cpp +++ b/src/station.cpp @@ -24,13 +24,20 @@ #include "roadstop_base.h" #include "industry.h" #include "core/random_func.hpp" +#include "linkgraph/linkgraph.h" +#include "linkgraph/linkgraphschedule.h" #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); @@ -63,7 +70,8 @@ Station::Station(TileIndex tile) : } /** - * Clean up a station by clearing vehicle orders and invalidating windows. + * Clean up a station by clearing vehicle orders, invalidating windows and + * removing link stats. * Aircraft-Hangar orders need special treatment here, as the hangars are * actually part of a station (tiletype is STATION), but the order type * is OT_GOTO_DEPOT. @@ -87,12 +95,34 @@ Station::~Station() if (a->targetairport == this->index) a->targetairport = INVALID_STATION; } + for (CargoID c = 0; c < NUM_CARGO; ++c) { + LinkGraph *lg = LinkGraph::GetIfValid(this->goods[c].link_graph); + 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) { + 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); + delete lg; + } + } + Vehicle *v; FOR_ALL_VEHICLES(v) { /* Forget about this station if this station is removed */ if (v->last_station_visited == this->index) { v->last_station_visited = INVALID_STATION; } + if (v->last_loading_station == this->index) { + v->last_loading_station = INVALID_STATION; + } } /* Clear the persistent storage. */ @@ -114,7 +144,7 @@ Station::~Station() DeleteStationNews(this->index); for (CargoID c = 0; c < NUM_CARGO; c++) { - this->goods[c].cargo.Truncate(0); + this->goods[c].cargo.Truncate(); } CargoPacket::InvalidateAllFrom(this->index); @@ -376,7 +406,7 @@ void StationRect::MakeEmpty() * @note x and y are in Tile coordinates * @param x X coordinate * @param y Y coordinate - * @param distance The maxmium distance a point may have (L1 norm) + * @param distance The maximum distance a point may have (L1 norm) * @return true if the point is within distance tiles of the station rectangle */ bool StationRect::PtInExtendedRect(int x, int y, int distance) const diff --git a/src/station_base.h b/src/station_base.h index 07d1d2294..944a731f2 100644 --- a/src/station_base.h +++ b/src/station_base.h @@ -12,17 +12,150 @@ #ifndef STATION_BASE_H #define STATION_BASE_H +#include "core/random_func.hpp" #include "base_station_base.h" #include "newgrf_airport.h" #include "cargopacket.h" #include "industry_type.h" +#include "linkgraph/linkgraph_type.h" #include "newgrf_storage.h" +#include typedef Pool StationPool; extern StationPool _station_pool; static const byte INITIAL_STATION_RATING = 175; +/** + * Flow statistics telling how much flow should be sent along a link. This is + * done by creating "flow shares" and using std::map's upper_bound() method to + * look them up with a random number. A flow share is the difference between a + * key in a map and the previous key. So one key in the map doesn't actually + * mean anything by itself. + */ +class FlowStat { +public: + typedef std::map SharesMap; + + /** + * Invalid constructor. This can't be called as a FlowStat must not be + * empty. However, the constructor must be defined and reachable for + * FlwoStat to be used in a std::map. + */ + inline FlowStat() {NOT_REACHED();} + + /** + * Create a FlowStat with an initial entry. + * @param st Station the initial entry refers to. + * @param flow Amount of flow for the initial entry. + */ + inline FlowStat(StationID st, uint flow) + { + assert(flow > 0); + this->shares[flow] = st; + this->unrestricted = flow; + } + + /** + * Add some flow to the end of the shares map. Only do that if you know + * that the station isn't in the map yet. Anything else may lead to + * 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, 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. + * @return Actual shares. + */ + 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); + 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. 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->unrestricted > 0 ? + this->shares.upper_bound(RandomRange(this->unrestricted))->second : + INVALID_STATION; + } + + StationID GetVia(StationID excluded, StationID excluded2 = INVALID_STATION) const; + + void Invalidate(); + +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: + void AddFlow(StationID origin, StationID via, uint amount); + void PassOnFlow(StationID origin, StationID via, uint amount); + StationIDStack DeleteFlows(StationID via); + void RestrictFlows(StationID via); + void ReleaseFlows(StationID via); + void FinalizeLocalConsumption(StationID self); +}; + /** * Stores station stats for a single cargo. */ @@ -36,13 +169,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. @@ -70,14 +204,18 @@ struct GoodsEntry { }; GoodsEntry() : - acceptance_pickup(0), + status(0), time_since_pickup(255), rating(INITIAL_STATION_RATING), last_speed(0), - last_age(255) + 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. @@ -108,12 +246,53 @@ struct GoodsEntry { byte amount_fract; ///< Fractional part of the amount in the cargo list StationCargoList cargo; ///< The cargo packets of cargo waiting in this station + LinkGraphID link_graph; ///< Link graph this station belongs to. + NodeID node; ///< ID of node in link graph referring to this goods entry. + FlowStatMap flows; ///< Planned flows through this station. + uint max_waiting_cargo; ///< Max cargo from this station waiting at any station. + /** * 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. cargo has been moved to the station. + */ + inline bool HasRating() const + { + 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. + * @return The chosen next hop or INVALID_STATION if none was found. + */ + inline StationID GetVia(StationID source) const + { + FlowStatMap::const_iterator flow_it(this->flows.find(source)); + return flow_it != this->flows.end() ? flow_it->second.GetVia() : INVALID_STATION; + } + + /** + * Get the best next hop for a cargo packet from station source, optionally + * excluding one or two stations. + * @param source Source of the packet. + * @param excluded If this station would be chosen choose the second best one instead. + * @param excluded2 Second station to be excluded, if != INVALID_STATION. + * @return The chosen next hop or INVALID_STATION if none was found. + */ + inline StationID GetVia(StationID source, StationID excluded, StationID excluded2 = INVALID_STATION) const + { + FlowStatMap::const_iterator flow_it(this->flows.find(source)); + return flow_it != this->flows.end() ? flow_it->second.GetVia(excluded, excluded2) : INVALID_STATION; + } }; /** All airport-related information. Only valid if tile != INVALID_TILE. */ @@ -123,7 +302,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. @@ -316,7 +495,7 @@ struct Station FINAL : SpecializedStation { 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; }; diff --git a/src/station_cmd.cpp b/src/station_cmd.cpp index 9377009ea..91d65ad87 100644 --- a/src/station_cmd.cpp +++ b/src/station_cmd.cpp @@ -50,10 +50,14 @@ #include "order_backup.h" #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" + /** * Check whether the given tile is a hangar. * @param t the tile to of whether it is a hangar. @@ -245,6 +249,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); @@ -426,7 +438,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; } @@ -559,7 +571,7 @@ void UpdateStationAcceptance(Station *st, bool show_msg) /* Adjust in case our station only accepts fewer kinds of goods */ for (CargoID i = 0; i < NUM_CARGO; i++) { - uint amt = min(acceptance[i], 15); + uint amt = acceptance[i]; /* Make sure the station can accept the goods type. */ bool is_passengers = IsCargoInClass(i, CC_PASSENGERS); @@ -568,7 +580,11 @@ void UpdateStationAcceptance(Station *st, bool show_msg) amt = 0; } - SB(st->goods[i].acceptance_pickup, GoodsEntry::GES_ACCEPTANCE, 1, amt >= 8); + GoodsEntry &ge = st->goods[i]; + 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); + } } /* Only show a message in case the acceptance was actually changed. */ @@ -594,7 +610,7 @@ void UpdateStationAcceptance(Station *st, bool show_msg) uint num_acc = 0; uint num_rej = 0; - /* Test each cargo type to see if its acceptange has changed */ + /* Test each cargo type to see if its acceptance has changed */ for (CargoID i = 0; i < NUM_CARGO; i++) { if (HasBit(new_acc, i)) { if (!HasBit(old_acc, i) && num_acc < lengthof(accepts)) { @@ -627,6 +643,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); + } } /** @@ -636,7 +660,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) { @@ -692,7 +716,7 @@ CommandCost ClearTile_Station(TileIndex tile, DoCommandFlag flags); * @param invalid_dirs Prohibited directions for slopes (set of #DiagDirection). * @param allowed_z Height allowed for the tile. If allowed_z is negative, it will be set to the height of this tile. * @param allow_steep Whether steep slopes are allowed. - * @param check_bridge Check for the existance of a bridge. + * @param check_bridge Check for the existence of a bridge. * @return The cost in case of success, or an error code if it failed. */ CommandCost CheckBuildableTile(TileIndex tile, uint invalid_dirs, int &allowed_z, bool allow_steep, bool check_bridge = true) @@ -1199,7 +1223,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; } @@ -1236,8 +1260,9 @@ CommandCost CmdBuildRailStation(TileIndex tile_org, DoCommandFlag flags, uint32 numtracks_orig = numtracks; Company *c = Company::Get(st->owner); + TileIndex tile_track = tile_org; do { - TileIndex tile = tile_org; + TileIndex tile = tile_track; int w = plat_len; do { byte layout = *layout_ptr++; @@ -1275,7 +1300,7 @@ CommandCost CmdBuildRailStation(TileIndex tile_org, DoCommandFlag flags, uint32 if (statspec != NULL) { /* Use a fixed axis for GetPlatformInfo as our platforms / numtracks are always the right way around */ - uint32 platinfo = GetPlatformInfo(AXIS_X, 0, plat_len, numtracks_orig, plat_len - w, numtracks_orig - numtracks, false); + uint32 platinfo = GetPlatformInfo(AXIS_X, GetStationGfx(tile), plat_len, numtracks_orig, plat_len - w, numtracks_orig - numtracks, false); /* As the station is not yet completely finished, the station does not yet exist. */ uint16 callback = GetStationCallback(CBID_STATION_TILE_LAYOUT, platinfo, 0, statspec, NULL, tile); @@ -1293,9 +1318,9 @@ CommandCost CmdBuildRailStation(TileIndex tile_org, DoCommandFlag flags, uint32 tile += tile_delta; } while (--w); - AddTrackToSignalBuffer(tile_org, track, _current_company); - YapfNotifyTrackLayoutChange(tile_org, track); - tile_org += tile_delta ^ TileDiffXY(1, 1); // perpendicular to tile_delta + AddTrackToSignalBuffer(tile_track, track, _current_company); + YapfNotifyTrackLayoutChange(tile_track, track); + tile_track += tile_delta ^ TileDiffXY(1, 1); // perpendicular to tile_delta } while (--numtracks); for (uint i = 0; i < affected_vehicles.Length(); ++i) { @@ -1307,6 +1332,42 @@ CommandCost CmdBuildRailStation(TileIndex tile_org, DoCommandFlag flags, uint32 if (IsRailStationTile(v->tile)) SetRailStationPlatformReservation(v->tile, TrackdirToExitdir(ReverseTrackdir(v->GetVehicleTrackdir())), true); } + /* Check whether we need to expand the reservation of trains already on the station. */ + TileArea update_reservation_area; + if (axis == AXIS_X) { + update_reservation_area = TileArea(tile_org, 1, numtracks_orig); + } else { + update_reservation_area = TileArea(tile_org, numtracks_orig, 1); + } + + TILE_AREA_LOOP(tile, update_reservation_area) { + /* Don't even try to make eye candy parts reserved. */ + if (IsStationTileBlocked(tile)) continue; + + DiagDirection dir = AxisToDiagDir(axis); + TileIndexDiff tile_offset = TileOffsByDiagDir(dir); + TileIndex platform_begin = tile; + TileIndex platform_end = tile; + + /* We can only account for tiles that are reachable from this tile, so ignore primarily blocked tiles while finding the platform begin and end. */ + for (TileIndex next_tile = platform_begin - tile_offset; IsCompatibleTrainStationTile(next_tile, platform_begin); next_tile -= tile_offset) { + platform_begin = next_tile; + } + for (TileIndex next_tile = platform_end + tile_offset; IsCompatibleTrainStationTile(next_tile, platform_end); next_tile += tile_offset) { + platform_end = next_tile; + } + + /* If there is at least on reservation on the platform, we reserve the whole platform. */ + bool reservation = false; + for (TileIndex t = platform_begin; !reservation && t <= platform_end; t += tile_offset) { + reservation = HasStationReservation(t); + } + + if (reservation) { + SetRailStationPlatformReservation(platform_begin, dir, true); + } + } + st->MarkTilesDirty(false); st->UpdateVirtCoord(); UpdateStationAcceptance(st, false); @@ -1388,6 +1449,10 @@ CommandCost RemoveFromRailBaseStation(TileArea ta, SmallVector &affected /* Count of the number of tiles removed */ int quantity = 0; CommandCost total_cost(EXPENSES_CONSTRUCTION); + /* Accumulator for the errors seen during clearing. If no errors happen, + * and the quantity is 0 there is no station. Otherwise it will be one + * of the other error that got accumulated. */ + CommandCost error; /* Do the action for every tile into the area */ TILE_AREA_LOOP(tile, ta) { @@ -1396,6 +1461,7 @@ CommandCost RemoveFromRailBaseStation(TileArea ta, SmallVector &affected /* If there is a vehicle on ground, do not allow to remove (flood) the tile */ CommandCost ret = EnsureNoVehicleOnGround(tile); + error.AddCost(ret); if (ret.Failed()) continue; /* Check ownership of station */ @@ -1404,6 +1470,7 @@ CommandCost RemoveFromRailBaseStation(TileArea ta, SmallVector &affected if (_current_company != OWNER_WATER) { CommandCost ret = CheckOwnership(st->owner); + error.AddCost(ret); if (ret.Failed()) continue; } @@ -1463,7 +1530,7 @@ CommandCost RemoveFromRailBaseStation(TileArea ta, SmallVector &affected } } - if (quantity == 0) return_cmd_error(STR_ERROR_THERE_IS_NO_STATION); + if (quantity == 0) return error.Failed() ? error : CommandCost(STR_ERROR_THERE_IS_NO_STATION); for (T **stp = affected_stations.Begin(); stp != affected_stations.End(); stp++) { T *st = *stp; @@ -1700,7 +1767,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. @@ -1734,12 +1802,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; @@ -1747,7 +1820,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); @@ -1801,7 +1874,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. */ @@ -2237,7 +2310,7 @@ CommandCost CmdBuildAirport(TileIndex tile, DoCommandFlag flags, uint32 p1, uint st->RecomputeIndustriesNear(); InvalidateWindowData(WC_SELECT_STATION, 0, 0); InvalidateWindowData(WC_STATION_LIST, st->owner, 0); - InvalidateWindowData(WC_STATION_VIEW, st->index); + InvalidateWindowData(WC_STATION_VIEW, st->index, -1); if (_settings_game.economy.station_noise_level) { SetWindowDirty(WC_TOWN_VIEW, st->town->index); @@ -2313,7 +2386,7 @@ static CommandCost RemoveAirport(TileIndex tile, DoCommandFlag flags) st->airport.Clear(); st->facilities &= ~FACIL_AIRPORT; - InvalidateWindowData(WC_STATION_VIEW, st->index); + InvalidateWindowData(WC_STATION_VIEW, st->index, -1); if (_settings_game.economy.station_noise_level) { SetWindowDirty(WC_TOWN_VIEW, st->town->index); @@ -2423,7 +2496,7 @@ CommandCost CmdBuildDock(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 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); } @@ -2436,7 +2509,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); } @@ -3021,7 +3094,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: @@ -3075,8 +3148,8 @@ static VehicleEnterTileStatus VehicleEnter_Station(Vehicle *v, TileIndex tile, i /* Stop whenever that amount of station ahead + the distance from the * begin of the platform to the stop location is longer than the length * of the platform. Station ahead 'includes' the current tile where the - * vehicle is on, so we need to substract that. */ - if (!IsInsideBS(stop + station_ahead, station_length, TILE_SIZE)) return VETSB_CONTINUE; + * vehicle is on, so we need to subtract that. */ + if (stop + station_ahead - (int)TILE_SIZE >= station_length) return VETSB_CONTINUE; DiagDirection dir = DirToDiagDir(v->direction); @@ -3088,12 +3161,11 @@ 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 - if (x < stop) { - uint16 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; - spd = max(0, (stop - x) * 20 - 15); + uint16 spd = max(0, (stop - x) * 20 - 15); if (spd < v->cur_speed) v->cur_speed = spd; } } @@ -3119,7 +3191,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? */ @@ -3152,7 +3224,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); } } @@ -3168,6 +3240,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; @@ -3181,17 +3275,37 @@ static void UpdateStationRating(Station *st) /* Slowly increase the rating back to his original level in the case we * didn't deliver cargo yet to this station. This happens when a bribe * failed while you didn't moved that cargo yet to a station. */ - if (!HasBit(ge->acceptance_pickup, GoodsEntry::GES_PICKUP) && ge->rating < INITIAL_STATION_RATING) { + if (!ge->HasRating() && ge->rating < INITIAL_STATION_RATING) { ge->rating++; } /* Only change the rating if we are moving this cargo */ - if (HasBit(ge->acceptance_pickup, GoodsEntry::GES_PICKUP)) { + 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.Count(); + uint waiting = ge->cargo.TotalCount(); + + /* num_dests is at least 1 if there is any cargo as + * INVALID_STATION is also a destination. + */ + uint num_dests = (uint)ge->cargo.Packets()->MapSize(); + + /* Average amount of cargo per next hop, but prefer solitary stations + * with only one or two next hops. They are allowed to have more + * cargo waiting per next hop. + * With manual cargo distribution waiting_avg = waiting / 2 as then + * INVALID_STATION is the only destination. + */ + uint waiting_avg = waiting / (num_dests + 1); if (HasBit(cs->callback_mask, CBM_CARGO_STATION_RATING_CALC)) { /* Perform custom station rating. If it succeeds the speed, days in transit and @@ -3200,7 +3314,7 @@ static void UpdateStationRating(Station *st) /* NewGRFs expect last speed to be 0xFF when no vehicle has arrived yet. */ uint last_speed = ge->HasVehicleEverTriedLoading() ? ge->last_speed : 0xFF; - uint32 var18 = min(ge->time_since_pickup, 0xFF) | (min(waiting, 0xFFFF) << 8) | (min(last_speed, 0xFF) << 24); + uint32 var18 = min(ge->time_since_pickup, 0xFF) | (min(ge->max_waiting_cargo, 0xFFFF) << 8) | (min(last_speed, 0xFF) << 24); /* Convert to the 'old' vehicle types */ uint32 var10 = (st->last_vehicle_type == VEH_INVALID) ? 0x0 : (st->last_vehicle_type + 0x10); uint16 callback = GetCargoCallback(CBID_CARGO_STATION_RATING_CALC, var10, var18, cs); @@ -3225,11 +3339,11 @@ static void UpdateStationRating(Station *st) (rating += 45, waittime > 3) || (rating += 35, true); - (rating -= 90, waiting > 1500) || - (rating += 55, waiting > 1000) || - (rating += 35, waiting > 600) || - (rating += 10, waiting > 300) || - (rating += 20, waiting > 100) || + (rating -= 90, ge->max_waiting_cargo > 1500) || + (rating += 55, ge->max_waiting_cargo > 1000) || + (rating += 35, ge->max_waiting_cargo > 600) || + (rating += 10, ge->max_waiting_cargo > 300) || + (rating += 20, ge->max_waiting_cargo > 100) || (rating += 10, true); } @@ -3247,12 +3361,12 @@ static void UpdateStationRating(Station *st) /* only modify rating in steps of -2, -1, 0, 1 or 2 */ ge->rating = rating = or_ + Clamp(Clamp(rating, 0, 255) - or_, -2, 2); - /* if rating is <= 64 and more than 200 items waiting, + /* if rating is <= 64 and more than 100 items waiting on average per destination, * remove some random amount of goods from the station */ - if (rating <= 64 && waiting >= 200) { + if (rating <= 64 && waiting_avg >= 100) { int dec = Random() & 0x1F; - if (waiting < 400) dec &= 7; - waiting -= dec + 1; + if (waiting_avg < 200) dec &= 7; + waiting -= (dec + 1) * num_dests; waiting_changed = true; } @@ -3261,14 +3375,14 @@ static void UpdateStationRating(Station *st) uint32 r = Random(); if (rating <= (int)GB(r, 0, 7)) { /* Need to have int, otherwise it will just overflow etc. */ - waiting = max((int)waiting - (int)GB(r, 8, 2) - 1, 0); + waiting = max((int)waiting - (int)((GB(r, 8, 2) - 1) * num_dests), 0); waiting_changed = true; } } /* At some point we really must cap the cargo. Previously this * was a strict 4095, but now we'll have a less strict, but - * increasingly agressive truncation of the amount of cargo. */ + * increasingly aggressive truncation of the amount of cargo. */ static const uint WAITING_CARGO_THRESHOLD = 1 << 12; static const uint WAITING_CARGO_CUT_FACTOR = 1 << 6; static const uint MAX_WAITING_CARGO = 1 << 15; @@ -3281,7 +3395,18 @@ static void UpdateStationRating(Station *st) waiting_changed = true; } - if (waiting_changed) ge->cargo.Truncate(waiting); + /* We can't truncate cargo that's already reserved for loading. + * Thus StoredCount() here. */ + if (waiting_changed && waiting < ge->cargo.AvailableCount()) { + /* Feed back the exact own waiting cargo at this station for the + * next rating calculation. */ + ge->max_waiting_cargo = 0; + + 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; + } } } } @@ -3294,6 +3419,181 @@ static void UpdateStationRating(Station *st) } } +/** + * Reroute cargo of type c at station st or in any vehicles unloading there. + * Make sure the cargo's new next hop is neither "avoid" nor "avoid2". + * @param st Station to be rerouted at. + * @param c Type of cargo. + * @param avoid Original next hop of cargo, avoid this. + * @param avoid2 Another station to be avoided when rerouting. + */ +void RerouteCargo(Station *st, CargoID c, StationID avoid, StationID avoid2) +{ + GoodsEntry &ge = st->goods[c]; + + /* Reroute cargo in station. */ + ge.cargo.Reroute(UINT_MAX, &ge.cargo, avoid, avoid2, &ge); + + /* Reroute cargo staged to be transfered. */ + for (std::list::iterator it(st->loading_vehicles.begin()); it != st->loading_vehicles.end(); ++it) { + for (Vehicle *v = *it; v != NULL; v = v->Next()) { + if (v->cargo_type != c) continue; + v->cargo.Reroute(UINT_MAX, &v->cargo, avoid, avoid2, &ge); + } + } +} + +/** + * Check all next hops of cargo packets in this station for existance of a + * a valid link they may use to travel on. Reroute any cargo not having a valid + * link and remove timed out links found like this from the linkgraph. We're + * not all links here as that is expensive and useless. A link no one is using + * doesn't hurt either. + * @param from Station to check. + */ +void DeleteStaleLinks(Station *from) +{ + for (CargoID c = 0; c < NUM_CARGO; ++c) { + GoodsEntry &ge = from->goods[c]; + LinkGraph *lg = LinkGraph::GetIfValid(ge.link_graph); + if (lg == NULL) continue; + Node node = (*lg)[ge.node]; + for (EdgeIterator it(node.Begin()); it != node.End();) { + 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 edge. Anything else may crash. + assert(_date >= edge.LastUpdate()); + 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()); + if ((uint)(_date - lg->LastCompression()) > LinkGraph::COMPRESSION_INTERVAL) { + lg->Compress(); + } + } +} + +/** + * Increase capacity for a link stat given by station cargo and next hop. + * @param st Station to get the link stats 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. + * @param mode Update mode to be applied. + */ +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); + GoodsEntry &ge2 = st2->goods[cargo]; + LinkGraph *lg = NULL; + if (ge1.link_graph == INVALID_LINK_GRAPH) { + if (ge2.link_graph == INVALID_LINK_GRAPH) { + if (LinkGraph::CanAllocateItem()) { + lg = new LinkGraph(cargo); + LinkGraphSchedule::Instance()->Queue(lg); + ge2.link_graph = lg->index; + ge2.node = lg->AddNode(st2); + } else { + DEBUG(misc, 0, "Can't allocate link graph"); + } + } else { + lg = LinkGraph::Get(ge2.link_graph); + } + if (lg) { + ge1.link_graph = lg->index; + ge1.node = lg->AddNode(st); + } + } else if (ge2.link_graph == INVALID_LINK_GRAPH) { + lg = LinkGraph::Get(ge1.link_graph); + ge2.link_graph = lg->index; + ge2.node = lg->AddNode(st2); + } else { + lg = LinkGraph::Get(ge1.link_graph); + if (ge1.link_graph != ge2.link_graph) { + LinkGraph *lg2 = LinkGraph::Get(ge2.link_graph); + if (lg->Size() < lg2->Size()) { + LinkGraphSchedule::Instance()->Unqueue(lg); + lg2->Merge(lg); // Updates GoodsEntries of lg + lg = lg2; + } else { + LinkGraphSchedule::Instance()->Unqueue(lg2); + lg->Merge(lg2); // Updates GoodsEntries of lg2 + } + } + } + if (lg != NULL) { + (*lg)[ge1.node].UpdateEdge(ge2.node, capacity, usage, mode); + } +} + +/** + * Increase capacity for all link stats associated with vehicles in the given consist. + * @param st Station to get the link stats from. + * @param front First vehicle in the consist. + * @param next_station_id Station the consist will be travelling to next. + */ +void IncreaseStats(Station *st, const Vehicle *front, StationID next_station_id) +{ + for (const Vehicle *v = front; v != NULL; v = v->Next()) { + if (v->refit_cap > 0) { + /* The cargo count can indeed be higher than the refit_cap if + * wagons have been auto-replaced and subsequently auto- + * refitted to a higher capacity. The cargo gets redistributed + * among the wagons in that case. + * 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()), EUM_INCREASE); + } + } +} + /* called for every station each tick */ static void StationHandleSmallTick(BaseStation *st) { @@ -3314,6 +3614,11 @@ void OnTick_Station() FOR_ALL_BASE_STATIONS(st) { StationHandleSmallTick(st); + /* Clean up the link graph about once a week. */ + if (Station::IsExpected(st) && (_tick_counter + st->index) % STATION_LINKGRAPH_TICKS == 0) { + DeleteStaleLinks(Station::From(st)); + }; + /* Run STATION_ACCEPTANCE_TICKS = 250 tick interval trigger for station animation. * Station index is included so that triggers are not all done * at the same time. */ @@ -3334,8 +3639,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); } } } @@ -3351,7 +3656,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); } } @@ -3373,13 +3678,29 @@ static uint UpdateStationWaiting(Station *st, CargoID type, uint amount, SourceT /* No new "real" cargo item yet. */ if (amount == 0) return 0; - ge.cargo.Append(new CargoPacket(st->index, st->xy, amount, source_type, source_id)); + StationID next = ge.GetVia(st->index); + ge.cargo.Append(new CargoPacket(st->index, st->xy, amount, source_type, source_id), next); + LinkGraph *lg = NULL; + if (ge.link_graph == INVALID_LINK_GRAPH) { + if (LinkGraph::CanAllocateItem()) { + lg = new LinkGraph(type); + LinkGraphSchedule::Instance()->Queue(lg); + ge.link_graph = lg->index; + ge.node = lg->AddNode(st); + } else { + DEBUG(misc, 0, "Can't allocate link graph"); + } + } else { + lg = LinkGraph::Get(ge.link_graph); + } + if (lg != NULL) (*lg)[ge.node].UpdateSupply(amount); - if (!HasBit(ge.acceptance_pickup, GoodsEntry::GES_PICKUP)) { + 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); TriggerStationAnimation(st, st->xy, SAT_NEW_CARGO, type); AirportAnimationTrigger(st, AAT_STATION_NEW_CARGO, type); @@ -3425,7 +3746,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); @@ -3802,6 +4123,352 @@ static CommandCost TerraformTile_Station(TileIndex tile, DoCommandFlag flags, in return DoCommand(tile, 0, 0, flags, CMD_LANDSCAPE_CLEAR); } +/** + * Get flow for a station. + * @param st Station to get flow for. + * @return Flow for st. + */ +uint FlowStat::GetShare(StationID st) const +{ + uint32 prev = 0; + for (SharesMap::const_iterator it = this->shares.begin(); it != this->shares.end(); ++it) { + if (it->second == st) { + return it->first - prev; + } else { + prev = it->first; + } + } + return 0; +} + +/** + * 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()); + 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. + * Draw another share, from outside its range. */ + + uint end = it->first; + uint begin = (it == this->shares.begin() ? 0 : (--it)->first); + uint interval = end - begin; + 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() && it2->first <= this->unrestricted); + if (it2->second != excluded && it2->second != excluded2) return it2->second; + + /* We've hit the second excluded station. + * Same as before, only a bit more complicated. */ + + 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. + new_max -= interval2; + if (begin > begin2) { + Swap(begin, begin2); + Swap(end, end2); + Swap(interval, interval2); + } + rand = RandomRange(new_max); + SharesMap::const_iterator it3 = this->shares.upper_bound(this->unrestricted); + if (rand < begin) { + it3 = this->shares.upper_bound(rand); + } else if (rand < begin2 - interval) { + it3 = this->shares.upper_bound(rand + interval); + } else { + it3 = this->shares.upper_bound(rand + interval + interval2); + } + assert(it3 != this->shares.end() && it3->first <= this->unrestricted); + return it3->second; +} + +/** + * Reduce all flows to minimum capacity so that they don't get in the way of + * link usage statistics too much. Keep them around, though, to continue + * routing any remaining cargo. + */ +void FlowStat::Invalidate() +{ + assert(!this->shares.empty()); + SharesMap new_shares; + 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() && this->unrestricted <= (--this->shares.end())->first); +} + +/** + * Change share for specified station. By specifing INT_MIN as parameter you + * 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. + */ +void FlowStat::ChangeShare(StationID st, int flow) +{ + /* We assert only before changing as afterwards the shares can actually + * be empty. In that case the whole flow stat must be deleted then. */ + assert(!this->shares.empty()); + + uint removed_shares = 0; + uint added_shares = 0; + uint last_share = 0; + SharesMap new_shares; + for (SharesMap::iterator it(this->shares.begin()); it != this->shares.end(); ++it) { + if (it->second == st) { + if (flow < 0) { + 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 + } + removed_shares += (uint)(-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. */ + flow = 0; + } + 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 (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); +} + +/** + * Add some flow from "origin", going via "via". + * @param origin Origin of the flow. + * @param via Next hop. + * @param flow Amount of flow to be added. + */ +void FlowStatMap::AddFlow(StationID origin, StationID via, uint flow) +{ + FlowStatMap::iterator origin_it = this->find(origin); + if (origin_it == this->end()) { + this->insert(std::make_pair(origin, FlowStat(via, flow))); + } else { + origin_it->second.ChangeShare(via, flow); + assert(!origin_it->second.GetShares()->empty()); + } +} + +/** + * Pass on some flow, remembering it as invalid, for later subtraction from + * locally consumed flow. This is necessary because we can't have negative + * flows and we don't want to sort the flows before adding them up. + * @param origin Origin of the flow. + * @param via Next hop. + * @param flow Amount of flow to be passed. + */ +void FlowStatMap::PassOnFlow(StationID origin, StationID via, uint flow) +{ + FlowStatMap::iterator prev_it = this->find(origin); + if (prev_it == this->end()) { + FlowStat fs(via, flow); + fs.AppendShare(INVALID_STATION, flow); + this->insert(std::make_pair(origin, fs)); + } else { + prev_it->second.ChangeShare(via, flow); + prev_it->second.ChangeShare(INVALID_STATION, flow); + assert(!prev_it->second.GetShares()->empty()); + } +} + +/** + * Subtract invalid flows from locally consumed flow. + * @param self ID of own station. + */ +void FlowStatMap::FinalizeLocalConsumption(StationID self) +{ + for (FlowStatMap::iterator i = this->begin(); i != this->end(); ++i) { + FlowStat &fs = i->second; + uint local = fs.GetShare(INVALID_STATION); + if (local > INT_MAX) { // make sure it fits in an int + fs.ChangeShare(self, -INT_MAX); + fs.ChangeShare(INVALID_STATION, -INT_MAX); + local -= INT_MAX; + } + fs.ChangeShare(self, -(int)local); + fs.ChangeShare(INVALID_STATION, -(int)local); + + /* If the local share is used up there must be a share for some + * remote station. */ + assert(!fs.GetShares()->empty()); + } +} + +/** + * 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. + */ +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; +} + +/** + * 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 flows via a specific station from this GoodsEntry. + * @param via Remote station to look for. + * @return a FlowStat with all flows for 'via' added up. + */ +uint GoodsEntry::GetSumFlowVia(StationID via) const +{ + uint ret = 0; + for (FlowStatMap::const_iterator i = this->flows.begin(); i != this->flows.end(); ++i) { + ret += i->second.GetShare(via); + } + return ret; +} extern const TileTypeProcs _tile_type_station_procs = { DrawTile_Station, // draw_tile_proc diff --git a/src/station_func.h b/src/station_func.h index 000bd19ba..f33dbd21f 100644 --- a/src/station_func.h +++ b/src/station_func.h @@ -15,8 +15,10 @@ #include "sprite.h" #include "rail_type.h" #include "road_type.h" +#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); @@ -47,6 +49,10 @@ 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, EdgeUpdateMode mode); +void RerouteCargo(Station *st, CargoID c, StationID avoid, StationID avoid2); + /** * Calculates the maintenance cost of a number of station tiles. * @param num Number of station tiles. diff --git a/src/station_gui.cpp b/src/station_gui.cpp index b0709e2c2..e9f0a9240 100644 --- a/src/station_gui.cpp +++ b/src/station_gui.cpp @@ -30,11 +30,17 @@ #include "core/geometry_func.hpp" #include "vehiclelist.h" #include "town.h" +#include "linkgraph/linkgraph.h" #include "widgets/station_widget.h" #include "table/strings.h" +#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 @@ -178,7 +184,7 @@ class CompanyStationsWindow : public Window if (this->facilities & st->facilities) { // only stations with selected facilities int num_waiting_cargo = 0; for (CargoID j = 0; j < NUM_CARGO; j++) { - if (HasBit(st->goods[j].acceptance_pickup, GoodsEntry::GES_PICKUP)) { + if (st->goods[j].HasRating()) { num_waiting_cargo++; // count number of waiting cargo if (HasBit(this->cargo_filter, j)) { *this->stations.Append() = st; @@ -225,17 +231,29 @@ class CompanyStationsWindow : public Window } /** Sort stations by their waiting cargo */ - static int CDECL StationWaitingSorter(const Station * const *a, const Station * const *b) + static int CDECL StationWaitingTotalSorter(const Station * const *a, const Station * const *b) + { + int diff = 0; + + CargoID j; + FOR_EACH_SET_CARGO_ID(j, cargo_filter) { + diff += (*a)->goods[j].cargo.TotalCount() - (*b)->goods[j].cargo.TotalCount(); + } + + return diff; + } + + /** Sort stations by their available waiting cargo */ + static int CDECL StationWaitingAvailableSorter(const Station * const *a, const Station * const *b) { - Money diff = 0; + int diff = 0; CargoID j; FOR_EACH_SET_CARGO_ID(j, cargo_filter) { - if (!(*a)->goods[j].cargo.Empty()) diff += GetTransportedGoodsIncome((*a)->goods[j].cargo.Count(), 20, 50, j); - if (!(*b)->goods[j].cargo.Empty()) diff -= GetTransportedGoodsIncome((*b)->goods[j].cargo.Count(), 20, 50, j); + diff += (*a)->goods[j].cargo.AvailableCount() - (*b)->goods[j].cargo.AvailableCount(); } - return ClampToI32(diff); + return diff; } /** Sort stations by their rating */ @@ -246,8 +264,8 @@ class CompanyStationsWindow : public Window CargoID j; FOR_EACH_SET_CARGO_ID(j, cargo_filter) { - if (HasBit((*a)->goods[j].acceptance_pickup, GoodsEntry::GES_PICKUP)) maxr1 = max(maxr1, (*a)->goods[j].rating); - if (HasBit((*b)->goods[j].acceptance_pickup, GoodsEntry::GES_PICKUP)) maxr2 = max(maxr2, (*b)->goods[j].rating); + if ((*a)->goods[j].HasRating()) maxr1 = max(maxr1, (*a)->goods[j].rating); + if ((*b)->goods[j].HasRating()) maxr2 = max(maxr2, (*b)->goods[j].rating); } return maxr1 - maxr2; @@ -261,8 +279,8 @@ class CompanyStationsWindow : public Window for (CargoID j = 0; j < NUM_CARGO; j++) { if (!HasBit(cargo_filter, j)) continue; - if (HasBit((*a)->goods[j].acceptance_pickup, GoodsEntry::GES_PICKUP)) minr1 = min(minr1, (*a)->goods[j].rating); - if (HasBit((*b)->goods[j].acceptance_pickup, GoodsEntry::GES_PICKUP)) minr2 = min(minr2, (*b)->goods[j].rating); + if ((*a)->goods[j].HasRating()) minr1 = min(minr1, (*a)->goods[j].rating); + if ((*b)->goods[j].HasRating()) minr2 = min(minr2, (*b)->goods[j].rating); } return -(minr1 - minr2); @@ -281,7 +299,7 @@ class CompanyStationsWindow : public Window } public: - CompanyStationsWindow(const WindowDesc *desc, WindowNumber window_number) : Window() + CompanyStationsWindow(WindowDesc *desc, WindowNumber window_number) : Window(desc) { this->stations.SetListing(this->last_sorting); this->stations.SetSortFuncs(this->sorter_funcs); @@ -289,9 +307,9 @@ class CompanyStationsWindow : public Window this->stations.NeedResort(); this->SortStationsList(); - this->CreateNestedTree(desc); + this->CreateNestedTree(); this->vscroll = this->GetScrollbar(WID_STL_SCROLLBAR); - this->FinishInitNested(desc, window_number); + this->FinishInitNested(window_number); this->owner = (Owner)this->window_number; const CargoSpec *cs; @@ -407,7 +425,7 @@ class CompanyStationsWindow : public Window /* show cargo waiting and station ratings */ for (uint j = 0; j < _sorted_standard_cargo_specs_size; j++) { CargoID cid = _sorted_cargo_specs[j]->Index(); - if (!st->goods[cid].cargo.Empty()) { + if (st->goods[cid].cargo.TotalCount() > 0) { /* For RTL we work in exactly the opposite direction. So * decrement the space needed first, then draw to the left * instead of drawing to the left and then incrementing @@ -416,7 +434,7 @@ class CompanyStationsWindow : public Window x -= 20; if (x < r.left + WD_FRAMERECT_LEFT) break; } - StationsWndShowStationRating(x, x + 16, y, cid, st->goods[cid].cargo.Count(), st->goods[cid].rating); + StationsWndShowStationRating(x, x + 16, y, cid, st->goods[cid].cargo.TotalCount(), st->goods[cid].rating); if (!rtl) { x += 20; if (x > r.right - WD_FRAMERECT_RIGHT) break; @@ -447,7 +465,7 @@ class CompanyStationsWindow : public Window case WID_STL_FACILALL: { int cg_ofst = this->IsWidgetLowered(widget) ? 2 : 1; - DrawString(r.left + cg_ofst, r.right + cg_ofst, r.top + cg_ofst, STR_ABBREV_ALL, TC_BLACK); + DrawString(r.left + cg_ofst, r.right + cg_ofst, r.top + cg_ofst, STR_ABBREV_ALL, TC_BLACK, SA_HOR_CENTER); break; } @@ -640,7 +658,8 @@ const Station *CompanyStationsWindow::last_station = NULL; GUIStationList::SortFunction * const CompanyStationsWindow::sorter_funcs[] = { &StationNameSorter, &StationTypeSorter, - &StationWaitingSorter, + &StationWaitingTotalSorter, + &StationWaitingAvailableSorter, &StationRatingMaxSorter, &StationRatingMinSorter }; @@ -649,7 +668,8 @@ GUIStationList::SortFunction * const CompanyStationsWindow::sorter_funcs[] = { const StringID CompanyStationsWindow::sorter_names[] = { STR_SORT_BY_NAME, STR_SORT_BY_FACILITY, - STR_SORT_BY_WAITING, + STR_SORT_BY_WAITING_TOTAL, + STR_SORT_BY_WAITING_AVAILABLE, STR_SORT_BY_RATING_MAX, STR_SORT_BY_RATING_MIN, INVALID_STRING_ID @@ -681,6 +701,7 @@ static const NWidgetPart _nested_company_stations_widgets[] = { NWidget(WWT_CLOSEBOX, COLOUR_GREY), NWidget(WWT_CAPTION, COLOUR_GREY, WID_STL_CAPTION), SetDataTip(STR_STATION_LIST_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), NWidget(WWT_SHADEBOX, COLOUR_GREY), + NWidget(WWT_DEFSIZEBOX, COLOUR_GREY), NWidget(WWT_STICKYBOX, COLOUR_GREY), EndContainer(), NWidget(NWID_HORIZONTAL), @@ -710,8 +731,8 @@ static const NWidgetPart _nested_company_stations_widgets[] = { EndContainer(), }; -static const WindowDesc _company_stations_desc( - WDP_AUTO, 358, 162, +static WindowDesc _company_stations_desc( + WDP_AUTO, "list_stations", 358, 162, WC_STATION_LIST, WC_NONE, 0, _nested_company_stations_widgets, lengthof(_nested_company_stations_widgets) @@ -734,13 +755,22 @@ static const NWidgetPart _nested_station_view_widgets[] = { NWidget(WWT_CLOSEBOX, COLOUR_GREY), NWidget(WWT_CAPTION, COLOUR_GREY, WID_SV_CAPTION), SetDataTip(STR_STATION_VIEW_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), NWidget(WWT_SHADEBOX, COLOUR_GREY), + NWidget(WWT_DEFSIZEBOX, COLOUR_GREY), NWidget(WWT_STICKYBOX, COLOUR_GREY), EndContainer(), NWidget(NWID_HORIZONTAL), - NWidget(WWT_PANEL, COLOUR_GREY, WID_SV_WAITING), SetMinimalSize(237, 52), SetResize(1, 10), SetScrollbar(WID_SV_SCROLLBAR), EndContainer(), + NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SV_SORT_ORDER), SetMinimalSize(81, 12), SetFill(1, 1), SetDataTip(STR_BUTTON_SORT_BY, STR_TOOLTIP_SORT_ORDER), + NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_SV_SORT_BY), SetMinimalSize(168, 12), SetResize(1, 0), SetFill(0, 1), SetDataTip(0x0, STR_TOOLTIP_SORT_CRITERIA), + EndContainer(), + NWidget(NWID_HORIZONTAL), + NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_SV_GROUP), SetMinimalSize(81, 12), SetFill(1, 1), SetDataTip(STR_STATION_VIEW_GROUP, 0x0), + NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_SV_GROUP_BY), SetMinimalSize(168, 12), SetResize(1, 0), SetFill(0, 1), SetDataTip(0x0, STR_TOOLTIP_GROUP_ORDER), + EndContainer(), + NWidget(NWID_HORIZONTAL), + NWidget(WWT_PANEL, COLOUR_GREY, WID_SV_WAITING), SetMinimalSize(237, 44), SetResize(1, 10), SetScrollbar(WID_SV_SCROLLBAR), EndContainer(), NWidget(NWID_VSCROLLBAR, COLOUR_GREY, WID_SV_SCROLLBAR), EndContainer(), - NWidget(WWT_PANEL, COLOUR_GREY, WID_SV_ACCEPT_RATING_LIST), SetMinimalSize(249, 32), SetResize(1, 0), EndContainer(), + NWidget(WWT_PANEL, COLOUR_GREY, WID_SV_ACCEPT_RATING_LIST), SetMinimalSize(249, 23), SetResize(1, 0), EndContainer(), NWidget(NWID_HORIZONTAL), NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SV_LOCATION), SetMinimalSize(45, 12), SetResize(1, 0), SetFill(1, 1), @@ -777,33 +807,449 @@ static void DrawCargoIcons(CargoID i, uint waiting, int left, int right, int y) SpriteID sprite = CargoSpec::Get(i)->GetCargoIcon(); - int x = _current_text_dir == TD_RTL ? right - num * 10 : left; + int x = _current_text_dir == TD_RTL ? left : right - num * 10; do { DrawSprite(sprite, PAL_NONE, x, y); x += 10; } while (--num); } -struct CargoData { - CargoID cargo; - StationID source; - uint count; +enum SortOrder { + SO_DESCENDING, + SO_ASCENDING +}; + +class CargoDataEntry; + +enum CargoSortType { + ST_AS_GROUPING, ///< by the same principle the entries are being grouped + ST_COUNT, ///< by amount of cargo + ST_STATION_STRING, ///< by station name + ST_STATION_ID, ///< by station id + ST_CARGO_ID, ///< by cargo id +}; + +class CargoSorter { +public: + CargoSorter(CargoSortType t = ST_STATION_ID, SortOrder o = SO_ASCENDING) : type(t), order(o) {} + CargoSortType GetSortType() {return this->type;} + bool operator()(const CargoDataEntry *cd1, const CargoDataEntry *cd2) const; + +private: + CargoSortType type; + SortOrder order; + + template + bool SortId(Tid st1, Tid st2) const; + bool SortCount(const CargoDataEntry *cd1, const CargoDataEntry *cd2) const; + bool SortStation (StationID st1, StationID st2) const; +}; + +typedef std::set CargoDataSet; + +/** + * A cargo data entry representing one possible row in the station view window's + * top part. Cargo data entries form a tree where each entry can have several + * children. Parents keep track of the sums of their childrens' cargo counts. + */ +class CargoDataEntry { +public: + CargoDataEntry(); + ~CargoDataEntry(); + + /** + * Insert a new child or retrieve an existing child using a station ID as ID. + * @param station ID of the station for which an entry shall be created or retrieved + * @return a child entry associated with the given station. + */ + CargoDataEntry *InsertOrRetrieve(StationID station) + { + return this->InsertOrRetrieve(station); + } + + /** + * Insert a new child or retrieve an existing child using a cargo ID as ID. + * @param cargo ID of the cargo for which an entry shall be created or retrieved + * @return a child entry associated with the given cargo. + */ + CargoDataEntry *InsertOrRetrieve(CargoID cargo) + { + return this->InsertOrRetrieve(cargo); + } + + void Update(uint count); + + /** + * Remove a child associated with the given station. + * @param station ID of the station for which the child should be removed. + */ + void Remove(StationID station) + { + CargoDataEntry t(station); + this->Remove(&t); + } + + /** + * Remove a child associated with the given cargo. + * @param cargo ID of the cargo for which the child should be removed. + */ + void Remove(CargoID cargo) + { + CargoDataEntry t(cargo); + this->Remove(&t); + } + + /** + * Retrieve a child for the given station. Return NULL if it doesn't exist. + * @param station ID of the station the child we're looking for is associated with. + * @return a child entry for the given station or NULL. + */ + CargoDataEntry *Retrieve(StationID station) const + { + CargoDataEntry t(station); + return this->Retrieve(this->children->find(&t)); + } + + /** + * Retrieve a child for the given cargo. Return NULL if it doesn't exist. + * @param cargo ID of the cargo the child we're looking for is associated with. + * @return a child entry for the given cargo or NULL. + */ + CargoDataEntry *Retrieve(CargoID cargo) const + { + CargoDataEntry t(cargo); + return this->Retrieve(this->children->find(&t)); + } + + void Resort(CargoSortType type, SortOrder order); + + /** + * Get the station ID for this entry. + */ + StationID GetStation() const { return this->station; } + + /** + * Get the cargo ID for this entry. + */ + CargoID GetCargo() const { return this->cargo; } + + /** + * Get the cargo count for this entry. + */ + uint GetCount() const { return this->count; } + + /** + * Get the parent entry for this entry. + */ + CargoDataEntry *GetParent() const { return this->parent; } + + /** + * Get the number of children for this entry. + */ + uint GetNumChildren() const { return this->num_children; } + + /** + * Get an iterator pointing to the begin of the set of children. + */ + CargoDataSet::iterator Begin() const { return this->children->begin(); } + + /** + * Get an iterator pointing to the end of the set of children. + */ + CargoDataSet::iterator End() const { return this->children->end(); } + + /** + * Has this entry transfers. + */ + bool HasTransfers() const { return this->transfers; } + + /** + * Set the transfers state. + */ + void SetTransfers(bool value) { this->transfers = value; } + + void Clear(); +private: + + CargoDataEntry(StationID st, uint c, CargoDataEntry *p); + CargoDataEntry(CargoID car, uint c, CargoDataEntry *p); + CargoDataEntry(StationID st); + CargoDataEntry(CargoID car); + + CargoDataEntry *Retrieve(CargoDataSet::iterator i) const; + + template + CargoDataEntry *InsertOrRetrieve(Tid s); + + void Remove(CargoDataEntry *comp); + void IncrementSize(); - CargoData(CargoID cargo, StationID source, uint count) : - cargo(cargo), - source(source), - count(count) - { } + CargoDataEntry *parent; ///< the parent of this entry. + const union { + StationID station; ///< ID of the station this entry is associated with. + struct { + CargoID cargo; ///< ID of the cargo this entry is associated with. + bool transfers; ///< If there are transfers for this cargo. + }; + }; + uint num_children; ///< the number of subentries belonging to this entry. + uint count; ///< sum of counts of all children or amount of cargo for this entry. + CargoDataSet *children; ///< the children of this entry. }; -typedef std::list CargoDataList; +CargoDataEntry::CargoDataEntry() : + parent(NULL), + station(INVALID_STATION), + num_children(0), + count(0), + children(new CargoDataSet(CargoSorter(ST_CARGO_ID))) +{} + +CargoDataEntry::CargoDataEntry(CargoID cargo, uint count, CargoDataEntry *parent) : + parent(parent), + cargo(cargo), + num_children(0), + count(count), + children(new CargoDataSet) +{} + +CargoDataEntry::CargoDataEntry(StationID station, uint count, CargoDataEntry *parent) : + parent(parent), + station(station), + num_children(0), + count(count), + children(new CargoDataSet) +{} + +CargoDataEntry::CargoDataEntry(StationID station) : + parent(NULL), + station(station), + num_children(0), + count(0), + children(NULL) +{} + +CargoDataEntry::CargoDataEntry(CargoID cargo) : + parent(NULL), + cargo(cargo), + num_children(0), + count(0), + children(NULL) +{} + +CargoDataEntry::~CargoDataEntry() +{ + this->Clear(); + delete this->children; +} + +/** + * Delete all subentries, reset count and num_children and adapt parent's count. + */ +void CargoDataEntry::Clear() +{ + if (this->children != NULL) { + for (CargoDataSet::iterator i = this->children->begin(); i != this->children->end(); ++i) { + assert(*i != this); + delete *i; + } + this->children->clear(); + } + if (this->parent != NULL) this->parent->count -= this->count; + this->count = 0; + this->num_children = 0; +} + +/** + * Remove a subentry from this one and delete it. + * @param child the entry to be removed. This may also be a synthetic entry + * which only contains the ID of the entry to be removed. In this case child is + * not deleted. + */ +void CargoDataEntry::Remove(CargoDataEntry *child) +{ + CargoDataSet::iterator i = this->children->find(child); + if (i != this->children->end()) { + delete *i; + this->children->erase(i); + } +} + +/** + * Retrieve a subentry or insert it if it doesn't exist, yet. + * @tparam ID type of ID: either StationID or CargoID + * @param child_id ID of the child to be inserted or retrieved. + * @return the new or retrieved subentry + */ +template +CargoDataEntry *CargoDataEntry::InsertOrRetrieve(Tid child_id) +{ + CargoDataEntry tmp(child_id); + CargoDataSet::iterator i = this->children->find(&tmp); + if (i == this->children->end()) { + IncrementSize(); + return *(this->children->insert(new CargoDataEntry(child_id, 0, this)).first); + } else { + CargoDataEntry *ret = *i; + assert(this->children->value_comp().GetSortType() != ST_COUNT); + return ret; + } +} + +/** + * Update the count for this entry and propagate the change to the parent entry + * if there is one. + * @param count the amount to be added to this entry + */ +void CargoDataEntry::Update(uint count) +{ + this->count += count; + if (this->parent != NULL) this->parent->Update(count); +} + +/** + * Increment + */ +void CargoDataEntry::IncrementSize() +{ + ++this->num_children; + if (this->parent != NULL) this->parent->IncrementSize(); +} + +void CargoDataEntry::Resort(CargoSortType type, SortOrder order) +{ + CargoDataSet *new_subs = new CargoDataSet(this->children->begin(), this->children->end(), CargoSorter(type, order)); + delete this->children; + this->children = new_subs; +} + +CargoDataEntry *CargoDataEntry::Retrieve(CargoDataSet::iterator i) const +{ + if (i == this->children->end()) { + return NULL; + } else { + assert(this->children->value_comp().GetSortType() != ST_COUNT); + return *i; + } +} + +bool CargoSorter::operator()(const CargoDataEntry *cd1, const CargoDataEntry *cd2) const +{ + switch (this->type) { + case ST_STATION_ID: + return this->SortId(cd1->GetStation(), cd2->GetStation()); + case ST_CARGO_ID: + return this->SortId(cd1->GetCargo(), cd2->GetCargo()); + case ST_COUNT: + return this->SortCount(cd1, cd2); + case ST_STATION_STRING: + return this->SortStation(cd1->GetStation(), cd2->GetStation()); + default: + NOT_REACHED(); + } +} + +template +bool CargoSorter::SortId(Tid st1, Tid st2) const +{ + return (this->order == SO_ASCENDING) ? st1 < st2 : st2 < st1; +} + +bool CargoSorter::SortCount(const CargoDataEntry *cd1, const CargoDataEntry *cd2) const +{ + uint c1 = cd1->GetCount(); + uint c2 = cd2->GetCount(); + if (c1 == c2) { + return this->SortStation(cd1->GetStation(), cd2->GetStation()); + } else if (this->order == SO_ASCENDING) { + return c1 < c2; + } else { + return c2 < c1; + } +} + +bool CargoSorter::SortStation(StationID st1, StationID st2) const +{ + static char buf1[MAX_LENGTH_STATION_NAME_CHARS]; + static char buf2[MAX_LENGTH_STATION_NAME_CHARS]; + + if (!Station::IsValidID(st1)) { + return Station::IsValidID(st2) ? this->order == SO_ASCENDING : this->SortId(st1, st2); + } else if (!Station::IsValidID(st2)) { + return order == SO_DESCENDING; + } + + SetDParam(0, st1); + GetString(buf1, STR_STATION_NAME, lastof(buf1)); + SetDParam(0, st2); + GetString(buf2, STR_STATION_NAME, lastof(buf2)); + + int res = strcmp(buf1, buf2); + if (res == 0) { + return this->SortId(st1, st2); + } else { + return (this->order == SO_ASCENDING) ? res < 0 : res > 0; + } +} /** * The StationView window */ struct StationViewWindow : public Window { - uint32 cargo; ///< Bitmask of cargo types to expand - uint16 cargo_rows[NUM_CARGO]; ///< Header row for each cargo type + /** + * A row being displayed in the cargo view (as opposed to being "hidden" behind a plus sign). + */ + struct RowDisplay { + RowDisplay(CargoDataEntry *f, StationID n) : filter(f), next_station(n) {} + RowDisplay(CargoDataEntry *f, CargoID n) : filter(f), next_cargo(n) {} + + /** + * Parent of the cargo entry belonging to the row. + */ + CargoDataEntry *filter; + union { + /** + * ID of the station belonging to the entry actually displayed if it's to/from/via. + */ + StationID next_station; + + /** + * ID of the cargo belonging to the entry actually displayed if it's cargo. + */ + CargoID next_cargo; + }; + }; + + typedef std::vector CargoDataVector; + + static const int NUM_COLUMNS = 4; ///< Number of "columns" in the cargo view: cargo, from, via, to + + /** + * Type of data invalidation. + */ + enum Invalidation { + INV_FLOWS = 0x100, ///< The planned flows have been recalculated and everything has to be updated. + INV_CARGO = 0x200 ///< Some cargo has been added or removed. + }; + + /** + * Type of grouping used in each of the "columns". + */ + enum Grouping { + GR_SOURCE, ///< Group by source of cargo ("from"). + GR_NEXT, ///< Group by next station ("via"). + GR_DESTINATION, ///< Group by estimated final destination ("to"). + GR_CARGO, ///< Group by cargo type. + }; + + /** + * Display mode of the cargo view. + */ + enum Mode { + MODE_WAITING, ///< Show cargo waiting at the station. + MODE_PLANNED ///< Show cargo planned to pass through the station. + }; + uint expand_shrink_width; ///< The width allocated to the expand/shrink 'button' int rating_lines; ///< Number of lines in the cargo ratings view. int accepts_lines; ///< Number of lines in the accepted cargo view. @@ -815,16 +1261,46 @@ struct StationViewWindow : public Window { ALH_ACCEPTS = 3, ///< Height of the accepted cargo view. }; - StationViewWindow(const WindowDesc *desc, WindowNumber window_number) : Window() + static const StringID _sort_names[]; ///< Names of the sorting options in the dropdown. + static const StringID _group_names[]; ///< Names of the grouping options in the dropdown. + + /** + * Sort types of the different 'columns'. + * In fact only ST_COUNT and ST_AS_GROUPING are active and you can only + * sort all the columns in the same way. The other options haven't been + * included in the GUI due to lack of space. + */ + CargoSortType sortings[NUM_COLUMNS]; + + /** Sort order (ascending/descending) for the 'columns'. */ + SortOrder sort_orders[NUM_COLUMNS]; + + int scroll_to_row; ///< If set, scroll the main viewport to the station pointed to by this row. + int grouping_index; ///< Currently selected entry in the grouping drop down. + Mode current_mode; ///< Currently selected display mode of cargo view. + Grouping groupings[NUM_COLUMNS]; ///< Grouping modes for the different columns. + + CargoDataEntry expanded_rows; ///< Parent entry of currently expanded rows. + CargoDataEntry cached_destinations; ///< Cache for the flows passing through this station. + CargoDataVector displayed_rows; ///< Parent entry of currently displayed rows (including collapsed ones). + + StationViewWindow(WindowDesc *desc, WindowNumber window_number) : Window(desc), + scroll_to_row(INT_MAX), grouping_index(0) { this->rating_lines = ALH_RATING; this->accepts_lines = ALH_ACCEPTS; - this->CreateNestedTree(desc); + this->CreateNestedTree(); this->vscroll = this->GetScrollbar(WID_SV_SCROLLBAR); /* Nested widget tree creation is done in two steps to ensure that this->GetWidget(WID_SV_ACCEPTS_RATINGS) exists in UpdateWidgetSize(). */ - this->FinishInitNested(desc, window_number); - + this->FinishInitNested(window_number); + + this->groupings[0] = GR_CARGO; + this->sortings[0] = ST_AS_GROUPING; + this->SelectGroupBy(_settings_client.gui.station_gui_group_order); + 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; } @@ -838,12 +1314,58 @@ struct StationViewWindow : public Window { DeleteWindowById(WC_AIRCRAFT_LIST, VehicleListIdentifier(VL_STATION_LIST, VEH_AIRCRAFT, owner, this->window_number).Pack(), false); } + /** + * Show a certain cargo entry characterized by source/next/dest station, cargo ID and amount of cargo at the + * right place in the cargo view. I.e. update as many rows as are expanded following that characterization. + * @param data Root entry of the tree. + * @param cargo Cargo ID of the entry to be shown. + * @param source Source station of the entry to be shown. + * @param next Next station the cargo to be shown will visit. + * @param dest Final destination of the cargo to be shown. + * @param count Amount of cargo to be shown. + */ + void ShowCargo(CargoDataEntry *data, CargoID cargo, StationID source, StationID next, StationID dest, uint count) + { + if (count == 0) return; + bool auto_distributed = _settings_game.linkgraph.GetDistributionType(cargo) != DT_MANUAL; + const CargoDataEntry *expand = &this->expanded_rows; + for (int i = 0; i < NUM_COLUMNS && expand != NULL; ++i) { + switch (groupings[i]) { + case GR_CARGO: + assert(i == 0); + data = data->InsertOrRetrieve(cargo); + data->SetTransfers(source != this->window_number); + expand = expand->Retrieve(cargo); + break; + case GR_SOURCE: + if (auto_distributed || source != this->window_number) { + data = data->InsertOrRetrieve(source); + expand = expand->Retrieve(source); + } + break; + case GR_NEXT: + if (auto_distributed) { + data = data->InsertOrRetrieve(next); + expand = expand->Retrieve(next); + } + break; + case GR_DESTINATION: + if (auto_distributed) { + data = data->InsertOrRetrieve(dest); + expand = expand->Retrieve(dest); + } + break; + } + } + data->Update(count); + } + virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) { switch (widget) { case WID_SV_WAITING: resize->height = FONT_HEIGHT_NORMAL; - size->height = WD_FRAMERECT_TOP + 5 * resize->height + WD_FRAMERECT_BOTTOM; + size->height = WD_FRAMERECT_TOP + 4 * resize->height + WD_FRAMERECT_BOTTOM; this->expand_shrink_width = max(GetStringBoundingBox("-").width, GetStringBoundingBox("+").width) + WD_FRAMERECT_LEFT + WD_FRAMERECT_RIGHT; break; @@ -864,14 +1386,13 @@ struct StationViewWindow : public Window { virtual void OnPaint() { - CargoDataList cargolist; - uint32 transfers = 0; - this->OrderWaitingCargo(&cargolist, &transfers); + const Station *st = Station::Get(this->window_number); + CargoDataEntry cargo; + BuildCargoList(&cargo, st); - this->vscroll->SetCount((int)cargolist.size() + 1); // update scrollbar + this->vscroll->SetCount(cargo.GetNumChildren()); // update scrollbar /* disable some buttons */ - const Station *st = Station::Get(this->window_number); this->SetWidgetDisabledState(WID_SV_RENAME, st->owner != _local_company); this->SetWidgetDisabledState(WID_SV_TRAINS, !(st->facilities & FACIL_TRAIN)); this->SetWidgetDisabledState(WID_SV_ROADVEHS, !(st->facilities & FACIL_TRUCK_STOP) && !(st->facilities & FACIL_BUS_STOP)); @@ -902,133 +1423,368 @@ struct StationViewWindow : public Window { } } + /* Draw arrow pointing up/down for ascending/descending sorting */ + this->DrawSortButtonState(WID_SV_SORT_ORDER, sort_orders[1] == SO_ASCENDING ? SBS_UP : SBS_DOWN); + + int pos = this->vscroll->GetPosition(); + + int maxrows = this->vscroll->GetCapacity(); + + displayed_rows.clear(); + /* Draw waiting cargo. */ NWidgetBase *nwi = this->GetWidget(WID_SV_WAITING); Rect waiting_rect = {nwi->pos_x, nwi->pos_y, nwi->pos_x + nwi->current_x - 1, nwi->pos_y + nwi->current_y - 1}; - this->DrawWaitingCargo(waiting_rect, cargolist, transfers); + this->DrawEntries(&cargo, waiting_rect, pos, maxrows, 0); + scroll_to_row = INT_MAX; } } virtual void SetStringParameters(int widget) const { - if (widget == WID_SV_CAPTION) { - const Station *st = Station::Get(this->window_number); - SetDParam(0, st->index); - SetDParam(1, st->facilities); - } + const Station *st = Station::Get(this->window_number); + SetDParam(0, st->index); + SetDParam(1, st->facilities); } /** - * Order waiting cargo by type and destination. - * @param cargolist [out] Ordered cargo. - * @param transfers [out] Bitmask for cargoes being transfered. - * @pre \c *cargolist must be empty. + * Rebuild the cache for estimated destinations which is used to quickly show the "destination" entries + * even if we actually don't know the destination of a certain packet from just looking at it. + * @param i Cargo to recalculate the cache for. */ - void OrderWaitingCargo(CargoDataList *cargolist, uint32 *transfers) + void RecalcDestinations(CargoID i) { - assert(cargolist->size() == 0); - *transfers = 0; + const Station *st = Station::Get(this->window_number); + CargoDataEntry *cargo_entry = cached_destinations.InsertOrRetrieve(i); + cargo_entry->Clear(); + + const FlowStatMap &flows = st->goods[i].flows; + for (FlowStatMap::const_iterator it = flows.begin(); it != flows.end(); ++it) { + StationID from = it->first; + CargoDataEntry *source_entry = cargo_entry->InsertOrRetrieve(from); + const FlowStat::SharesMap *shares = it->second.GetShares(); + uint32 prev_count = 0; + for (FlowStat::SharesMap::const_iterator flow_it = shares->begin(); flow_it != shares->end(); ++flow_it) { + StationID via = flow_it->second; + CargoDataEntry *via_entry = source_entry->InsertOrRetrieve(via); + if (via == this->window_number) { + via_entry->InsertOrRetrieve(via)->Update(flow_it->first - prev_count); + } else { + EstimateDestinations(i, from, via, flow_it->first - prev_count, via_entry); + } + prev_count = flow_it->first; + } + } + } - StationID station_id = this->window_number; - const Station *st = Station::Get(station_id); + /** + * Estimate the amounts of cargo per final destination for a given cargo, source station and next hop and + * save the result as children of the given CargoDataEntry. + * @param cargo ID of the cargo to estimate destinations for. + * @param source Source station of the given batch of cargo. + * @param next Intermediate hop to start the calculation at ("next hop"). + * @param count Size of the batch of cargo. + * @param dest CargoDataEntry to save the results in. + */ + void EstimateDestinations(CargoID cargo, StationID source, StationID next, uint count, CargoDataEntry *dest) + { + if (Station::IsValidID(next) && Station::IsValidID(source)) { + CargoDataEntry tmp; + const FlowStatMap &flowmap = Station::Get(next)->goods[cargo].flows; + FlowStatMap::const_iterator map_it = flowmap.find(source); + if (map_it != flowmap.end()) { + const FlowStat::SharesMap *shares = map_it->second.GetShares(); + uint32 prev_count = 0; + for (FlowStat::SharesMap::const_iterator i = shares->begin(); i != shares->end(); ++i) { + tmp.InsertOrRetrieve(i->second)->Update(i->first - prev_count); + prev_count = i->first; + } + } - /* count types of cargoes waiting in station */ - for (CargoID i = 0; i < NUM_CARGO; i++) { - if (st->goods[i].cargo.Empty()) { - this->cargo_rows[i] = 0; + if (tmp.GetCount() == 0) { + dest->InsertOrRetrieve(INVALID_STATION)->Update(count); } else { - /* Add an entry for total amount of cargo of this type waiting. */ - cargolist->push_back(CargoData(i, INVALID_STATION, st->goods[i].cargo.Count())); - - /* Set the row for this cargo entry for the expand/hide button */ - this->cargo_rows[i] = (uint16)cargolist->size(); - - /* Add an entry for each distinct cargo source. */ - const StationCargoList::List *packets = st->goods[i].cargo.Packets(); - for (StationCargoList::ConstIterator it(packets->begin()); it != packets->end(); it++) { - const CargoPacket *cp = *it; - if (cp->SourceStation() != station_id) { - bool added = false; - - /* Enable the expand/hide button for this cargo type */ - SetBit(*transfers, i); - - /* Don't add cargo lines if not expanded */ - if (!HasBit(this->cargo, i)) break; - - /* Check if we already have this source in the list */ - for (CargoDataList::iterator jt(cargolist->begin()); jt != cargolist->end(); jt++) { - CargoData *cd = &(*jt); - if (cd->cargo == i && cd->source == cp->SourceStation()) { - cd->count += cp->Count(); - added = true; - break; - } + uint sum_estimated = 0; + while (sum_estimated < count) { + for (CargoDataSet::iterator i = tmp.Begin(); i != tmp.End() && sum_estimated < count; ++i) { + CargoDataEntry *child = *i; + uint estimate = DivideApprox(child->GetCount() * count, tmp.GetCount()); + if (estimate == 0) estimate = 1; + + sum_estimated += estimate; + if (sum_estimated > count) { + estimate -= sum_estimated - count; + sum_estimated = count; } - if (!added) cargolist->push_back(CargoData(i, cp->SourceStation(), cp->Count())); + if (estimate > 0) { + if (child->GetStation() == next) { + dest->InsertOrRetrieve(next)->Update(estimate); + } else { + EstimateDestinations(cargo, source, child->GetStation(), estimate, dest); + } + } } + } } + } else { + dest->InsertOrRetrieve(INVALID_STATION)->Update(count); } } /** - * Draw waiting cargo. - * @param r Rectangle of the widget. - * @param cargolist Cargo, ordered by type and destination. - * @param transfers Bitmask for cargoes that are transfered. + * Build up the cargo view for PLANNED mode and a specific cargo. + * @param i Cargo to show. + * @param flows The current station's flows for that cargo. + * @param cargo The CargoDataEntry to save the results in. */ - void DrawWaitingCargo(const Rect &r, const CargoDataList &cargolist, uint32 transfers) const + void BuildFlowList(CargoID i, const FlowStatMap &flows, CargoDataEntry *cargo) { - int y = r.top + WD_FRAMERECT_TOP; - int pos = this->vscroll->GetPosition(); + const CargoDataEntry *source_dest = this->cached_destinations.Retrieve(i); + for (FlowStatMap::const_iterator it = flows.begin(); it != flows.end(); ++it) { + StationID from = it->first; + const CargoDataEntry *source_entry = source_dest->Retrieve(from); + const FlowStat::SharesMap *shares = it->second.GetShares(); + for (FlowStat::SharesMap::const_iterator flow_it = shares->begin(); flow_it != shares->end(); ++flow_it) { + const CargoDataEntry *via_entry = source_entry->Retrieve(flow_it->second); + for (CargoDataSet::iterator dest_it = via_entry->Begin(); dest_it != via_entry->End(); ++dest_it) { + CargoDataEntry *dest_entry = *dest_it; + ShowCargo(cargo, i, from, flow_it->second, dest_entry->GetStation(), dest_entry->GetCount()); + } + } + } + } - const Station *st = Station::Get(this->window_number); - if (--pos < 0) { - StringID str = STR_JUST_NOTHING; - for (CargoID i = 0; i < NUM_CARGO; i++) { - if (!st->goods[i].cargo.Empty()) str = STR_EMPTY; + /** + * Build up the cargo view for WAITING mode and a specific cargo. + * @param i Cargo to show. + * @param packets The current station's cargo list for that cargo. + * @param cargo The CargoDataEntry to save the result in. + */ + void BuildCargoList(CargoID i, const StationCargoList &packets, CargoDataEntry *cargo) + { + const CargoDataEntry *source_dest = this->cached_destinations.Retrieve(i); + for (StationCargoList::ConstIterator it = packets.Packets()->begin(); it != packets.Packets()->end(); it++) { + const CargoPacket *cp = *it; + StationID next = it.GetKey(); + + const CargoDataEntry *source_entry = source_dest->Retrieve(cp->SourceStation()); + if (source_entry == NULL) { + this->ShowCargo(cargo, i, cp->SourceStation(), next, INVALID_STATION, cp->Count()); + continue; + } + + const CargoDataEntry *via_entry = source_entry->Retrieve(next); + if (via_entry == NULL) { + this->ShowCargo(cargo, i, cp->SourceStation(), next, INVALID_STATION, cp->Count()); + continue; + } + + for (CargoDataSet::iterator dest_it = via_entry->Begin(); dest_it != via_entry->End(); ++dest_it) { + CargoDataEntry *dest_entry = *dest_it; + uint val = DivideApprox(cp->Count() * dest_entry->GetCount(), via_entry->GetCount()); + this->ShowCargo(cargo, i, cp->SourceStation(), next, dest_entry->GetStation(), val); } - SetDParam(0, str); - DrawString(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_RIGHT, y, STR_STATION_VIEW_WAITING_TITLE); - y += FONT_HEIGHT_NORMAL; } + this->ShowCargo(cargo, i, NEW_STATION, NEW_STATION, NEW_STATION, packets.ReservedCount()); + } - bool rtl = _current_text_dir == TD_RTL; - int text_left = rtl ? r.left + this->expand_shrink_width : r.left + WD_FRAMERECT_LEFT; - int text_right = rtl ? r.right - WD_FRAMERECT_LEFT : r.right - this->expand_shrink_width; - int shrink_left = rtl ? r.left + WD_FRAMERECT_LEFT : r.right - this->expand_shrink_width + WD_FRAMERECT_LEFT; - int shrink_right = rtl ? r.left + this->expand_shrink_width - WD_FRAMERECT_RIGHT : r.right - WD_FRAMERECT_RIGHT; - - - int maxrows = this->vscroll->GetCapacity(); - for (CargoDataList::const_iterator it = cargolist.begin(); it != cargolist.end() && pos > -maxrows; ++it) { - if (--pos < 0) { - const CargoData *cd = &(*it); - if (cd->source == INVALID_STATION) { - /* Heading */ - DrawCargoIcons(cd->cargo, cd->count, r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_RIGHT, y); - SetDParam(0, cd->cargo); - SetDParam(1, cd->count); - if (HasBit(transfers, cd->cargo)) { - /* This cargo has transfers waiting so show the expand or shrink 'button' */ - const char *sym = HasBit(this->cargo, cd->cargo) ? "-" : "+"; - DrawString(text_left, text_right, y, STR_STATION_VIEW_WAITING_CARGO, TC_FROMSTRING, SA_RIGHT); - DrawString(shrink_left, shrink_right, y, sym, TC_YELLOW, SA_RIGHT); - } else { - DrawString(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_RIGHT, y, STR_STATION_VIEW_WAITING_CARGO, TC_FROMSTRING, SA_RIGHT); - } + /** + * Build up the cargo view for all cargoes. + * @param cargo The root cargo entry to save all results in. + * @param st The station to calculate the cargo view from. + */ + void BuildCargoList(CargoDataEntry *cargo, const Station *st) + { + for (CargoID i = 0; i < NUM_CARGO; i++) { + + if (this->cached_destinations.Retrieve(i) == NULL) { + this->RecalcDestinations(i); + } + + if (this->current_mode == MODE_WAITING) { + this->BuildCargoList(i, st->goods[i].cargo, cargo); + } else { + this->BuildFlowList(i, st->goods[i].flows, cargo); + } + } + } + + /** + * Mark a specific row, characterized by its CargoDataEntry, as expanded. + * @param data The row to be marked as expanded. + */ + void SetDisplayedRow(const CargoDataEntry *data) + { + std::list stations; + const CargoDataEntry *parent = data->GetParent(); + if (parent->GetParent() == NULL) { + this->displayed_rows.push_back(RowDisplay(&this->expanded_rows, data->GetCargo())); + return; + } + + StationID next = data->GetStation(); + while (parent->GetParent()->GetParent() != NULL) { + stations.push_back(parent->GetStation()); + parent = parent->GetParent(); + } + + CargoID cargo = parent->GetCargo(); + CargoDataEntry *filter = this->expanded_rows.Retrieve(cargo); + while (!stations.empty()) { + filter = filter->Retrieve(stations.back()); + stations.pop_back(); + } + + this->displayed_rows.push_back(RowDisplay(filter, next)); + } + + /** + * Select the correct string for an entry referring to the specified station. + * @param station Station the entry is showing cargo for. + * @param here String to be shown if the entry refers to the same station as this station GUI belongs to. + * @param other_station String to be shown if the entry refers to a specific other station. + * @param any String to be shown if the entry refers to "any station". + * @return One of the three given strings or STR_STATION_VIEW_RESERVED, depending on what station the entry refers to. + */ + StringID GetEntryString(StationID station, StringID here, StringID other_station, StringID any) + { + if (station == this->window_number) { + return here; + } else if (station == INVALID_STATION) { + return any; + } else if (station == NEW_STATION) { + return STR_STATION_VIEW_RESERVED; + } else { + SetDParam(2, station); + return other_station; + } + } + + /** + * Determine if we need to show the special "non-stop" string. + * @param cd Entry we are going to show. + * @param station Station the entry refers to. + * @param column The "column" the entry will be shown in. + * @return either STR_STATION_VIEW_VIA or STR_STATION_VIEW_NONSTOP. + */ + StringID SearchNonStop(CargoDataEntry *cd, StationID station, int column) + { + CargoDataEntry *parent = cd->GetParent(); + for (int i = column - 1; i > 0; --i) { + if (this->groupings[i] == GR_DESTINATION) { + if (parent->GetStation() == station) { + return STR_STATION_VIEW_NONSTOP; } else { - SetDParam(0, cd->cargo); - SetDParam(1, cd->count); - SetDParam(2, cd->source); - DrawString(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_RIGHT, y, STR_STATION_VIEW_EN_ROUTE_FROM, TC_FROMSTRING, SA_RIGHT); + return STR_STATION_VIEW_VIA; } + } + parent = parent->GetParent(); + } - y += FONT_HEIGHT_NORMAL; + if (this->groupings[column + 1] == GR_DESTINATION) { + CargoDataSet::iterator begin = cd->Begin(); + CargoDataSet::iterator end = cd->End(); + if (begin != end && ++(cd->Begin()) == end && (*(begin))->GetStation() == station) { + return STR_STATION_VIEW_NONSTOP; + } else { + return STR_STATION_VIEW_VIA; } } + + return STR_STATION_VIEW_VIA; + } + + /** + * Draw the given cargo entries in the station GUI. + * @param entry Root entry for all cargo to be drawn. + * @param r Screen rectangle to draw into. + * @param pos Current row to be drawn to (counted down from 0 to -maxrows, same as vscroll->GetPosition()). + * @param maxrows Maximum row to be drawn. + * @param column Current "column" being drawn. + * @param cargo Current cargo being drawn (if cargo column has been passed). + * @return row (in "pos" counting) after the one we have last drawn to. + */ + int DrawEntries(CargoDataEntry *entry, Rect &r, int pos, int maxrows, int column, CargoID cargo = CT_INVALID) + { + if (this->sortings[column] == ST_AS_GROUPING) { + if (this->groupings[column] != GR_CARGO) { + entry->Resort(ST_STATION_STRING, this->sort_orders[column]); + } + } else { + entry->Resort(ST_COUNT, this->sort_orders[column]); + } + for (CargoDataSet::iterator i = entry->Begin(); i != entry->End(); ++i) { + CargoDataEntry *cd = *i; + + Grouping grouping = this->groupings[column]; + if (grouping == GR_CARGO) cargo = cd->GetCargo(); + bool auto_distributed = _settings_game.linkgraph.GetDistributionType(cargo) != DT_MANUAL; + + if (pos > -maxrows && pos <= 0) { + StringID str = STR_EMPTY; + int y = r.top + WD_FRAMERECT_TOP - pos * FONT_HEIGHT_NORMAL; + SetDParam(0, cargo); + SetDParam(1, cd->GetCount()); + + if (this->groupings[column] == GR_CARGO) { + str = STR_STATION_VIEW_WAITING_CARGO; + DrawCargoIcons(cd->GetCargo(), cd->GetCount(), r.left + WD_FRAMERECT_LEFT + this->expand_shrink_width, r.right - WD_FRAMERECT_RIGHT - this->expand_shrink_width, y); + } else { + if (!auto_distributed) grouping = GR_SOURCE; + StationID station = cd->GetStation(); + + switch (grouping) { + case GR_SOURCE: + str = this->GetEntryString(station, STR_STATION_VIEW_FROM_HERE, STR_STATION_VIEW_FROM, STR_STATION_VIEW_FROM_ANY); + break; + case GR_NEXT: + str = this->GetEntryString(station, STR_STATION_VIEW_VIA_HERE, STR_STATION_VIEW_VIA, STR_STATION_VIEW_VIA_ANY); + if (str == STR_STATION_VIEW_VIA) str = this->SearchNonStop(cd, station, column); + break; + case GR_DESTINATION: + str = this->GetEntryString(station, STR_STATION_VIEW_TO_HERE, STR_STATION_VIEW_TO, STR_STATION_VIEW_TO_ANY); + break; + default: + NOT_REACHED(); + } + if (pos == -this->scroll_to_row && Station::IsValidID(station)) { + ScrollMainWindowToTile(Station::Get(station)->xy); + } + } + + bool rtl = _current_text_dir == TD_RTL; + int text_left = rtl ? r.left + this->expand_shrink_width : r.left + WD_FRAMERECT_LEFT + column * this->expand_shrink_width; + int text_right = rtl ? r.right - WD_FRAMERECT_LEFT - column * this->expand_shrink_width : r.right - this->expand_shrink_width; + int shrink_left = rtl ? r.left + WD_FRAMERECT_LEFT : r.right - this->expand_shrink_width + WD_FRAMERECT_LEFT; + int shrink_right = rtl ? r.left + this->expand_shrink_width - WD_FRAMERECT_RIGHT : r.right - WD_FRAMERECT_RIGHT; + + DrawString(text_left, text_right, y, str); + + if (column < NUM_COLUMNS - 1) { + const char *sym = NULL; + if (cd->GetNumChildren() > 0) { + sym = "-"; + } else if (auto_distributed && str != STR_STATION_VIEW_RESERVED) { + sym = "+"; + } else { + /* Only draw '+' if there is something to be shown. */ + const StationCargoList &list = Station::Get(this->window_number)->goods[cargo].cargo; + if (grouping == GR_CARGO && (list.ReservedCount() > 0 || cd->HasTransfers())) { + sym = "+"; + } + } + if (sym) DrawString(shrink_left, shrink_right, y, sym, TC_YELLOW); + } + this->SetDisplayedRow(cd); + } + --pos; + if (auto_distributed || column == 0) { + pos = this->DrawEntries(cd, r, pos, maxrows, column + 1, cargo); + } + } + return pos; } /** @@ -1042,7 +1798,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); @@ -1065,41 +1821,65 @@ struct StationViewWindow : public Window { y += WD_PAR_VSEP_WIDE; } - DrawString(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_RIGHT, y, STR_STATION_VIEW_CARGO_RATINGS_TITLE); + DrawString(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_RIGHT, y, STR_STATION_VIEW_SUPPLY_RATINGS_TITLE); y += FONT_HEIGHT_NORMAL; const CargoSpec *cs; FOR_ALL_SORTED_STANDARD_CARGOSPECS(cs) { const GoodsEntry *ge = &st->goods[cs->Index()]; - if (!HasBit(ge->acceptance_pickup, GoodsEntry::GES_PICKUP)) continue; + if (!ge->HasRating()) continue; + const LinkGraph *lg = LinkGraph::GetIfValid(ge->link_graph); SetDParam(0, cs->name); - SetDParam(2, ToPercent8(ge->rating)); - SetDParam(1, STR_CARGO_RATING_APPALLING + (ge->rating >> 5)); - DrawString(r.left + WD_FRAMERECT_LEFT + 6, r.right - WD_FRAMERECT_RIGHT - 6, y, STR_STATION_VIEW_CARGO_RATING); + SetDParam(1, lg != NULL ? lg->Monthly((*lg)[ge->node].Supply()) : 0); + SetDParam(2, STR_CARGO_RATING_APPALLING + (ge->rating >> 5)); + SetDParam(3, ToPercent8(ge->rating)); + DrawString(r.left + WD_FRAMERECT_LEFT + 6, r.right - WD_FRAMERECT_RIGHT - 6, y, STR_STATION_VIEW_CARGO_SUPPLY_RATING); y += FONT_HEIGHT_NORMAL; } return CeilDiv(y - r.top - WD_FRAMERECT_TOP, FONT_HEIGHT_NORMAL); } - void HandleCargoWaitingClick(int row) + /** + * Expand or collapse a specific row. + * @param filter Parent of the row. + * @param next ID pointing to the row. + */ + template + void HandleCargoWaitingClick(CargoDataEntry *filter, Tid next) { - if (row == 0) return; + if (filter->Retrieve(next) != NULL) { + filter->Remove(next); + } else { + filter->InsertOrRetrieve(next); + } + } - for (CargoID c = 0; c < NUM_CARGO; c++) { - if (this->cargo_rows[c] == row) { - ToggleBit(this->cargo, c); - this->SetWidgetDirty(WID_SV_WAITING); - break; + /** + * Handle a click on a specific row in the cargo view. + * @param row Row being clicked. + */ + void HandleCargoWaitingClick(int row) + { + if (row < 0 || (uint)row >= this->displayed_rows.size()) return; + if (_ctrl_pressed) { + this->scroll_to_row = row; + } else { + RowDisplay &display = this->displayed_rows[row]; + if (display.filter == &this->expanded_rows) { + this->HandleCargoWaitingClick(display.filter, display.next_cargo); + } else { + this->HandleCargoWaitingClick(display.filter, display.next_station); } } + this->SetWidgetDirty(WID_SV_WAITING); } virtual void OnClick(Point pt, int widget, int click_count) { switch (widget) { case WID_SV_WAITING: - this->HandleCargoWaitingClick(this->vscroll->GetScrolledRowFromWidget(pt.y, this, WID_SV_WAITING, WD_FRAMERECT_TOP, FONT_HEIGHT_NORMAL)); + this->HandleCargoWaitingClick(this->vscroll->GetScrolledRowFromWidget(pt.y, this, WID_SV_WAITING, WD_FRAMERECT_TOP, FONT_HEIGHT_NORMAL) - this->vscroll->GetPosition()); break; case WID_SV_LOCATION: @@ -1143,6 +1923,125 @@ struct StationViewWindow : public Window { ShowVehicleListWindow(owner, (VehicleType)(widget - WID_SV_TRAINS), (StationID)this->window_number); break; } + + case WID_SV_SORT_BY: { + /* The initial selection is composed of current mode and + * sorting criteria for columns 1, 2, and 3. Column 0 is always + * sorted by cargo ID. The others can theoretically be sorted + * by different things but there is no UI for that. */ + ShowDropDownMenu(this, _sort_names, + this->current_mode * 2 + (this->sortings[1] == ST_COUNT ? 1 : 0), + WID_SV_SORT_BY, 0, 0); + break; + } + + case WID_SV_GROUP_BY: { + ShowDropDownMenu(this, _group_names, this->grouping_index, WID_SV_GROUP_BY, 0, 0); + break; + } + + case WID_SV_SORT_ORDER: { // flip sorting method asc/desc + this->SelectSortOrder(this->sort_orders[1] == SO_ASCENDING ? SO_DESCENDING : SO_ASCENDING); + this->SetTimeout(); + this->LowerWidget(WID_SV_SORT_ORDER); + break; + } + } + } + + /** + * Select a new sort order for the cargo view. + * @param order New sort order. + */ + void SelectSortOrder(SortOrder order) + { + this->sort_orders[1] = this->sort_orders[2] = this->sort_orders[3] = order; + _settings_client.gui.station_gui_sort_order = this->sort_orders[1]; + this->SetDirty(); + } + + /** + * Select a new sort criterium for the cargo view. + * @param index Row being selected in the sort criteria drop down. + */ + void SelectSortBy(int index) + { + _settings_client.gui.station_gui_sort_by = index; + switch (_sort_names[index]) { + case STR_STATION_VIEW_WAITING_STATION: + this->current_mode = MODE_WAITING; + this->sortings[1] = this->sortings[2] = this->sortings[3] = ST_AS_GROUPING; + break; + case STR_STATION_VIEW_WAITING_AMOUNT: + this->current_mode = MODE_WAITING; + this->sortings[1] = this->sortings[2] = this->sortings[3] = ST_COUNT; + break; + case STR_STATION_VIEW_PLANNED_STATION: + this->current_mode = MODE_PLANNED; + this->sortings[1] = this->sortings[2] = this->sortings[3] = ST_AS_GROUPING; + break; + case STR_STATION_VIEW_PLANNED_AMOUNT: + this->current_mode = MODE_PLANNED; + this->sortings[1] = this->sortings[2] = this->sortings[3] = ST_COUNT; + break; + default: + NOT_REACHED(); + } + /* Display the current sort variant */ + this->GetWidget(WID_SV_SORT_BY)->widget_data = _sort_names[index]; + this->SetDirty(); + } + + /** + * Select a new grouping mode for the cargo view. + * @param index Row being selected in the grouping drop down. + */ + void SelectGroupBy(int index) + { + this->grouping_index = index; + _settings_client.gui.station_gui_group_order = index; + this->GetWidget(WID_SV_GROUP_BY)->widget_data = _group_names[index]; + switch (_group_names[index]) { + case STR_STATION_VIEW_GROUP_S_V_D: + this->groupings[1] = GR_SOURCE; + this->groupings[2] = GR_NEXT; + this->groupings[3] = GR_DESTINATION; + break; + case STR_STATION_VIEW_GROUP_S_D_V: + this->groupings[1] = GR_SOURCE; + this->groupings[2] = GR_DESTINATION; + this->groupings[3] = GR_NEXT; + break; + case STR_STATION_VIEW_GROUP_V_S_D: + this->groupings[1] = GR_NEXT; + this->groupings[2] = GR_SOURCE; + this->groupings[3] = GR_DESTINATION; + break; + case STR_STATION_VIEW_GROUP_V_D_S: + this->groupings[1] = GR_NEXT; + this->groupings[2] = GR_DESTINATION; + this->groupings[3] = GR_SOURCE; + break; + case STR_STATION_VIEW_GROUP_D_S_V: + this->groupings[1] = GR_DESTINATION; + this->groupings[2] = GR_SOURCE; + this->groupings[3] = GR_NEXT; + break; + case STR_STATION_VIEW_GROUP_D_V_S: + this->groupings[1] = GR_DESTINATION; + this->groupings[2] = GR_NEXT; + this->groupings[3] = GR_SOURCE; + break; + } + this->SetDirty(); + } + + virtual void OnDropdownSelect(int widget, int index) + { + if (widget == WID_SV_SORT_BY) { + this->SelectSortBy(index); + } else { + this->SelectGroupBy(index); } } @@ -1159,19 +2058,42 @@ struct StationViewWindow : public Window { } /** - * Some data on this window has become invalid. - * @param data Information about the changed data. + * Some data on this window has become invalid. Invalidate the cache for the given cargo if necessary. + * @param data Information about the changed data. If it's a valid cargo ID, invalidate the cargo 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) this->ReInit(); + if (gui_scope) { + if (data >= 0 && data < NUM_CARGO) { + this->cached_destinations.Remove((CargoID)data); + } else { + this->ReInit(); + } + } } }; +const StringID StationViewWindow::_sort_names[] = { + STR_STATION_VIEW_WAITING_STATION, + STR_STATION_VIEW_WAITING_AMOUNT, + STR_STATION_VIEW_PLANNED_STATION, + STR_STATION_VIEW_PLANNED_AMOUNT, + INVALID_STRING_ID +}; + +const StringID StationViewWindow::_group_names[] = { + 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, + INVALID_STRING_ID +}; -static const WindowDesc _station_view_desc( - WDP_AUTO, 249, 110, +static WindowDesc _station_view_desc( + WDP_AUTO, "view_station", 249, 117, WC_STATION_VIEW, WC_NONE, 0, _nested_station_view_widgets, lengthof(_nested_station_view_widgets) @@ -1293,6 +2215,7 @@ static const NWidgetPart _nested_select_station_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_DARK_GREEN), NWidget(WWT_CAPTION, COLOUR_DARK_GREEN, WID_JS_CAPTION), SetDataTip(STR_JOIN_STATION_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_DEFSIZEBOX, COLOUR_DARK_GREEN), EndContainer(), NWidget(NWID_HORIZONTAL), NWidget(WWT_PANEL, COLOUR_DARK_GREEN, WID_JS_PANEL), SetResize(1, 0), SetScrollbar(WID_JS_SCROLLBAR), EndContainer(), @@ -1313,15 +2236,15 @@ struct SelectStationWindow : Window { TileArea area; ///< Location of new station Scrollbar *vscroll; - SelectStationWindow(const WindowDesc *desc, CommandContainer cmd, TileArea ta) : - Window(), + SelectStationWindow(WindowDesc *desc, const CommandContainer &cmd, TileArea ta) : + Window(desc), select_station_cmd(cmd), area(ta) { - this->CreateNestedTree(desc); + this->CreateNestedTree(); this->vscroll = this->GetScrollbar(WID_JS_SCROLLBAR); this->GetWidget(WID_JS_CAPTION)->widget_data = T::EXPECTED_FACIL == FACIL_WAYPOINT ? STR_JOIN_WAYPOINT_CAPTION : STR_JOIN_STATION_CAPTION; - this->FinishInitNested(desc, 0); + this->FinishInitNested(0); this->OnInvalidateData(0); } @@ -1414,8 +2337,8 @@ struct SelectStationWindow : Window { } }; -static const WindowDesc _select_station_desc( - WDP_AUTO, 200, 180, +static WindowDesc _select_station_desc( + WDP_AUTO, "build_station_join", 200, 180, WC_SELECT_STATION, WC_NONE, WDF_CONSTRUCTION, _nested_select_station_widgets, lengthof(_nested_select_station_widgets) @@ -1430,7 +2353,7 @@ static const 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; @@ -1464,7 +2387,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(); @@ -1479,7 +2402,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); } @@ -1489,7 +2412,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 155dccfee..664085624 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 1411a7833..67f41f1d7 100644 --- a/src/station_map.h +++ b/src/station_map.h @@ -364,25 +364,25 @@ static inline TrackBits GetRailStationTrackBits(TileIndex t) } /** - * Check if tile is compatible with a railstation tile. The two tiles - * are compatible if all of the following are true: - * \li both tiles are rail station tiles - * \li the railtype of \a t1 is compatible with the railtype of \a t2 - * \li the tracks on \a t1 and \a t2 are in the same direction + * Check if a tile is a valid continuation to a railstation tile. + * The tile \a test_tile is a valid continuation to \a station_tile, if all of the following are true: + * \li \a test_tile is a rail station tile + * \li the railtype of \a test_tile is compatible with the railtype of \a station_tile + * \li the tracks on \a test_tile and \a station_tile are in the same direction * \li both tiles belong to the same station - * \li \a t1 is not blocked (@see IsStationTileBlocked) - * @param t1 First tile to compare - * @param t2 Second tile to compare - * @pre IsRailStationTile(t2) + * \li \a test_tile is not blocked (@see IsStationTileBlocked) + * @param test_tile Tile to test + * @param station_tile Station tile to compare with + * @pre IsRailStationTile(station_tile) * @return true if the two tiles are compatible */ -static inline bool IsCompatibleTrainStationTile(TileIndex t1, TileIndex t2) +static inline bool IsCompatibleTrainStationTile(TileIndex test_tile, TileIndex station_tile) { - assert(IsRailStationTile(t2)); - return IsRailStationTile(t1) && IsCompatibleRail(GetRailType(t1), GetRailType(t2)) && - GetRailStationAxis(t1) == GetRailStationAxis(t2) && - GetStationIndex(t1) == GetStationIndex(t2) && - !IsStationTileBlocked(t1); + assert(IsRailStationTile(station_tile)); + return IsRailStationTile(test_tile) && IsCompatibleRail(GetRailType(test_tile), GetRailType(station_tile)) && + GetRailStationAxis(test_tile) == GetRailStationAxis(station_tile) && + GetStationIndex(test_tile) == GetStationIndex(station_tile) && + !IsStationTileBlocked(test_tile); } /** diff --git a/src/station_type.h b/src/station_type.h index b312bdd74..952a683d7 100644 --- a/src/station_type.h +++ b/src/station_type.h @@ -13,7 +13,9 @@ #define STATION_TYPE_H #include "core/smallvec_type.hpp" +#include "core/smallstack_type.hpp" #include "tilearea_type.h" +#include typedef uint16 StationID; typedef uint16 RoadStopID; @@ -27,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, @@ -87,6 +91,9 @@ enum CatchmentArea { static const uint MAX_LENGTH_STATION_NAME_CHARS = 32; ///< The maximum length of a station name in characters including '\0' +/** List of station IDs */ +typedef std::list StationIDList; + /** List of stations */ typedef SmallVector StationList; diff --git a/src/statusbar_gui.cpp b/src/statusbar_gui.cpp index f8d39ceaf..151fa5c37 100644 --- a/src/statusbar_gui.cpp +++ b/src/statusbar_gui.cpp @@ -31,6 +31,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)); @@ -83,17 +85,17 @@ struct StatusBarWindow : Window { static const int REMINDER_STOP = 0; ///< reminder disappears when counter reaches this value static const int COUNTER_STEP = 2; ///< this is subtracted from active counters every tick - StatusBarWindow(const WindowDesc *desc) : Window() + StatusBarWindow(WindowDesc *desc) : Window(desc) { this->ticker_scroll = TICKER_STOP; this->reminder_timeout = REMINDER_STOP; - this->InitNested(desc); + this->InitNested(); CLRBITS(this->flags, WF_WHITE_BORDER); PositionStatusbar(this); } - virtual Point OnInitialPosition(const WindowDesc *desc, int16 sm_width, int16 sm_height, int window_number) + virtual Point OnInitialPosition(int16 sm_width, int16 sm_height, int window_number) { Point pt = { 0, _screen.height - sm_height }; return pt; @@ -236,7 +238,7 @@ static const NWidgetPart _nested_main_status_widgets[] = { }; static WindowDesc _main_status_desc( - WDP_MANUAL, 640, 12, + WDP_MANUAL, NULL, 640, 12, WC_STATUS_BAR, WC_NONE, WDF_NO_FOCUS, _nested_main_status_widgets, lengthof(_nested_main_status_widgets) @@ -251,8 +253,6 @@ bool IsNewsTickerShown() return w != NULL && w->ticker_scroll < StatusBarWindow::TICKER_STOP; } -int16 *_preferred_statusbar_size = &_main_status_desc.default_width; ///< Pointer to the default size for the status toolbar. - /** * Show our status bar. */ diff --git a/src/statusbar_gui.h b/src/statusbar_gui.h index 7852c7803..574a75c73 100644 --- a/src/statusbar_gui.h +++ b/src/statusbar_gui.h @@ -16,7 +16,7 @@ enum StatusBarInvalidate { SBI_SAVELOAD_START, ///< started saving SBI_SAVELOAD_FINISH, ///< finished saving - SBI_SHOW_TICKER, ///< start scolling news + SBI_SHOW_TICKER, ///< start scrolling news SBI_SHOW_REMINDER, ///< show a reminder (dot on the right side of the statusbar) SBI_NEWS_DELETED, ///< abort current news display (active news were deleted) SBI_END @@ -25,6 +25,4 @@ enum StatusBarInvalidate { bool IsNewsTickerShown(); void ShowStatusBar(); -extern int16 *_preferred_statusbar_size; - #endif /* STATUSBAR_GUI_H */ diff --git a/src/stdafx.h b/src/stdafx.h index c6a7335c3..d0e6fb30a 100644 --- a/src/stdafx.h +++ b/src/stdafx.h @@ -28,31 +28,54 @@ /* It seems that we need to include stdint.h before anything else * We need INT64_MAX, which for most systems comes from stdint.h. However, MSVC - * does not have stdint.h and apparently neither does MorphOS, so define - * INT64_MAX for them ourselves. */ -#if defined(__APPLE__) - /* Already done in osx_stdafx.h */ -#elif !defined(_MSC_VER) && !defined( __MORPHOS__) && !defined(_STDINT_H_) + * does not have stdint.h and apparently neither does MorphOS. + * For OSX the inclusion is already done in osx_stdafx.h. */ +#if !defined(__APPLE__) && (!defined(_MSC_VER) || _MSC_VER >= 1600) && !defined(__MORPHOS__) #if defined(SUNOS) /* SunOS/Solaris does not have stdint.h, but inttypes.h defines everything * stdint.h defines and we need. */ #include - # else + #else #define __STDC_LIMIT_MACROS #include #endif -#else +#endif + +/* The conditions for these constants to be available are way too messy; so check them one by one */ +#if !defined(UINT64_MAX) #define UINT64_MAX (18446744073709551615ULL) +#endif +#if !defined(INT64_MAX) #define INT64_MAX (9223372036854775807LL) +#endif +#if !defined(INT64_MIN) #define INT64_MIN (-INT64_MAX - 1) +#endif +#if !defined(UINT32_MAX) #define UINT32_MAX (4294967295U) +#endif +#if !defined(INT32_MAX) #define INT32_MAX (2147483647) +#endif +#if !defined(INT32_MIN) #define INT32_MIN (-INT32_MAX - 1) +#endif +#if !defined(UINT16_MAX) #define UINT16_MAX (65535U) +#endif +#if !defined(INT16_MAX) #define INT16_MAX (32767) +#endif +#if !defined(INT16_MIN) #define INT16_MIN (-INT16_MAX - 1) +#endif +#if !defined(UINT8_MAX) #define UINT8_MAX (255) +#endif +#if !defined(INT8_MAX) #define INT8_MAX (127) +#endif +#if !defined(INT8_MIN) #define INT8_MIN (-INT8_MAX - 1) #endif @@ -154,15 +177,24 @@ /* Stuff for MSVC */ #if defined(_MSC_VER) #pragma once - /* Define a win32 target platform, to override defaults of the SDK - * We need to define NTDDI version for Vista SDK, but win2k is minimum */ - #define NTDDI_VERSION NTDDI_WIN2K // Windows 2000 - #define _WIN32_WINNT 0x0500 // Windows 2000 - #define _WIN32_WINDOWS 0x400 // Windows 95 - #if !defined(WINCE) - #define WINVER 0x0400 // Windows NT 4.0 / Windows 95 + #ifdef _WIN64 + /* No 64-bit Windows below XP, so we can safely assume it as the target platform. */ + #define NTDDI_VERSION NTDDI_WINXP // Windows XP + #define _WIN32_WINNT 0x501 // Windows XP + #define _WIN32_WINDOWS 0x501 // Windows XP + #define WINVER 0x0501 // Windows XP + #define _WIN32_IE_ 0x0600 // 6.0 (XP+) + #else + /* Define a win32 target platform, to override defaults of the SDK + * We need to define NTDDI version for Vista SDK, but win2k is minimum */ + #define NTDDI_VERSION NTDDI_WIN2K // Windows 2000 + #define _WIN32_WINNT 0x0500 // Windows 2000 + #define _WIN32_WINDOWS 0x400 // Windows 95 + #if !defined(WINCE) + #define WINVER 0x0400 // Windows NT 4.0 / Windows 95 + #endif + #define _WIN32_IE_ 0x0401 // 4.01 (win98 and NT4SP5+) #endif - #define _WIN32_IE_ 0x0401 // 4.01 (win98 and NT4SP5+) #define NOMINMAX // Disable min/max macros in windows.h. #pragma warning(disable: 4244) // 'conversion' conversion from 'type1' to 'type2', possible loss of data @@ -183,6 +215,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 @@ -195,7 +232,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 @@ -245,7 +281,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 @@ -264,7 +300,7 @@ #endif /* WINCE */ const char *FS2OTTD(const TCHAR *name); - const TCHAR *OTTD2FS(const char *name); + const TCHAR *OTTD2FS(const char *name, bool console_cp = false); #define SQ2OTTD(name) FS2OTTD(name) #define OTTD2SQ(name) OTTD2FS(name) #else @@ -458,4 +494,21 @@ 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) + #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") +#else + #define IGNORE_UNINITIALIZED_WARNING_START + #define IGNORE_UNINITIALIZED_WARNING_STOP +#endif + #endif /* STDAFX_H */ diff --git a/src/story.cpp b/src/story.cpp new file mode 100644 index 000000000..b74842f41 --- /dev/null +++ b/src/story.cpp @@ -0,0 +1,364 @@ +/* $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 story.cpp Handling of stories. */ + +#include "stdafx.h" +#include "story_base.h" +#include "core/pool_func.hpp" +#include "cmd_helper.h" +#include "command_func.h" +#include "company_base.h" +#include "company_func.h" +#include "string_func.h" +#include "date_func.h" +#include "tile_map.h" +#include "goal_type.h" +#include "goal_base.h" +#include "window_func.h" +#include "gui.h" + +#include "safeguards.h" + + +StoryPageElementID _new_story_page_element_id; +StoryPageID _new_story_page_id; +uint32 _story_page_element_next_sort_value; +uint32 _story_page_next_sort_value; + +StoryPageElementPool _story_page_element_pool("StoryPageElement"); +StoryPagePool _story_page_pool("StoryPage"); +INSTANTIATE_POOL_METHODS(StoryPageElement) +INSTANTIATE_POOL_METHODS(StoryPage) + +/** + * This helper for Create/Update PageElement Cmd procedure verifies if the page + * element parameters are correct for the given page element type. + * @param page_id The page id of the page which the page element (will) belong to + * @param type The type of the page element to create/update + * @param tile The tile parameter of the DoCommand proc + * @param reference The reference parameter of the DoCommand proc (p2) + * @param text The text parameter of the DoCommand proc + * @return true, if and only if the given parameters are valid for the given page elment type and page id. + */ +static bool VerifyElementContentParameters(StoryPageID page_id, StoryPageElementType type, TileIndex tile, uint32 reference, const char *text) +{ + switch (type) { + case SPET_TEXT: + if (StrEmpty(text)) return false; + break; + case SPET_LOCATION: + if (StrEmpty(text)) return false; + if (!IsValidTile(tile)) return false; + break; + case SPET_GOAL: + if (!Goal::IsValidID((GoalID)reference)) return false; + /* Reject company specific goals on global pages */ + if (StoryPage::Get(page_id)->company == INVALID_COMPANY && Goal::Get((GoalID)reference)->company != INVALID_COMPANY) return false; + break; + default: + return false; + } + + return true; +} + +/** + * This helper for Create/Update PageElement Cmd procedure updates a page + * element with new content data. + * @param pe The page element to update + * @param tile The tile parameter of the DoCommand proc + * @param reference The reference parameter of the DoCommand proc (p2) + * @param text The text parameter of the DoCommand proc + */ +static void UpdateElement(StoryPageElement &pe, TileIndex tile, uint32 reference, const char *text) +{ + switch (pe.type) { + case SPET_TEXT: + pe.text = stredup(text); + break; + case SPET_LOCATION: + pe.text = stredup(text); + pe.referenced_id = tile; + break; + case SPET_GOAL: + pe.referenced_id = (GoalID)reference; + break; + default: NOT_REACHED(); + } +} + +/** + * Create a new story page. + * @param tile unused. + * @param flags type of operation + * @param p1 various bitstuffed elements + * - p1 = (bit 0 - 7) - Company for which this story page belongs to. + * @param p2 unused. + * @param text Title of the story page. Null is allowed in wich case a generic page title is provided by OpenTTD. + * @return the cost of this operation or an error + */ +CommandCost CmdCreateStoryPage(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) +{ + if (!StoryPage::CanAllocateItem()) return CMD_ERROR; + + CompanyID company = (CompanyID)GB(p1, 0, 8); + + if (_current_company != OWNER_DEITY) return CMD_ERROR; + if (company != INVALID_COMPANY && !Company::IsValidID(company)) return CMD_ERROR; + + if (flags & DC_EXEC) { + if (_story_page_pool.items == 0) { + /* Initialize the next sort value variable. */ + _story_page_next_sort_value = 0; + } + + StoryPage *s = new StoryPage(); + s->sort_value = _story_page_next_sort_value; + s->date = _date; + s->company = company; + if (StrEmpty(text)) { + s->title = NULL; + } else { + 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++; + } + + return CommandCost(); +} + +/** + * Create a new story page element. + * @param tile Tile location if it is a location page element, otherwise unused. + * @param flags type of operation + * @param p1 various bitstuffed elements + * - p1 = (bit 0 - 15) - The page which the element belongs to. + * (bit 16 - 23) - Page element type + * @param p2 Id of referenced object + * @param text Text content in case it is a text or location page element + * @return the cost of this operation or an error + */ +CommandCost CmdCreateStoryPageElement(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) +{ + if (!StoryPageElement::CanAllocateItem()) return CMD_ERROR; + + StoryPageID page_id = (CompanyID)GB(p1, 0, 16); + StoryPageElementType type = Extract(p1); + + /* Allow at most 128 elements per page. */ + uint16 element_count = 0; + StoryPageElement *iter; + FOR_ALL_STORY_PAGE_ELEMENTS(iter) { + if (iter->page == page_id) element_count++; + } + if (element_count >= 128) return CMD_ERROR; + + if (_current_company != OWNER_DEITY) return CMD_ERROR; + if (!StoryPage::IsValidID(page_id)) return CMD_ERROR; + if (!VerifyElementContentParameters(page_id, type, tile, p2, text)) return CMD_ERROR; + + if (flags & DC_EXEC) { + if (_story_page_element_pool.items == 0) { + /* Initialize the next sort value variable. */ + _story_page_element_next_sort_value = 0; + } + + StoryPageElement *pe = new StoryPageElement(); + pe->sort_value = _story_page_element_next_sort_value; + pe->type = type; + pe->page = page_id; + UpdateElement(*pe, tile, p2, text); + + InvalidateWindowClassesData(WC_STORY_BOOK, page_id); + + _new_story_page_element_id = pe->index; + _story_page_element_next_sort_value++; + } + + return CommandCost(); +} + +/** + * Update a new story page element. + * @param tile Tile location if it is a location page element, otherwise unused. + * @param flags type of operation + * @param p1 various bitstuffed elements + * - p1 = (bit 0 - 15) - The page element to update. + * (bit 16 - 31) - unused + * @param p2 Id of referenced object + * @param text Text content in case it is a text or location page element + * @return the cost of this operation or an error + */ +CommandCost CmdUpdateStoryPageElement(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) +{ + StoryPageElementID page_element_id = (StoryPageElementID)GB(p1, 0, 16); + + if (_current_company != OWNER_DEITY) return CMD_ERROR; + if (!StoryPageElement::IsValidID(page_element_id)) return CMD_ERROR; + + StoryPageElement *pe = StoryPageElement::Get(page_element_id); + StoryPageID page_id = pe->page; + StoryPageElementType type = pe->type; + + if (!VerifyElementContentParameters(page_id, type, tile, p2, text)) return CMD_ERROR; + + if (flags & DC_EXEC) { + UpdateElement(*pe, tile, p2, text); + InvalidateWindowClassesData(WC_STORY_BOOK, pe->page); + } + + return CommandCost(); +} + +/** + * Update title of a story page. + * @param tile unused. + * @param flags type of operation + * @param p1 = (bit 0 - 15) - StoryPageID to update. + * @param p2 unused + * @param text title text of the story page. + * @return the cost of this operation or an error + */ +CommandCost CmdSetStoryPageTitle(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; + + if (flags & DC_EXEC) { + StoryPage *p = StoryPage::Get(page_id); + free(p->title); + if (StrEmpty(text)) { + p->title = NULL; + } else { + p->title = stredup(text); + } + + InvalidateWindowClassesData(WC_STORY_BOOK, page_id); + } + + 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. + * @param tile unused. + * @param flags type of operation + * @param p1 = (bit 0 - 15) - StoryPageID to show. + * @param p2 unused + * @param text unused + * @return the cost of this operation or an error + */ +CommandCost CmdShowStoryPage(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; + + if (flags & DC_EXEC) { + StoryPage *g = StoryPage::Get(page_id); + if ((g->company != INVALID_COMPANY && g->company == _local_company) || (g->company == INVALID_COMPANY && Company::IsValidID(_local_company))) ShowStoryBook(_local_company, page_id); + } + + return CommandCost(); +} +/** + * Remove a story page and associated story page elements. + * @param tile unused. + * @param flags type of operation + * @param p1 = (bit 0 - 15) - StoryPageID to remove. + * @param p2 unused. + * @param text unused. + * @return the cost of this operation or an error + */ +CommandCost CmdRemoveStoryPage(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) +{ + if (_current_company != OWNER_DEITY) return CMD_ERROR; + StoryPageID page_id = (StoryPageID)p1; + if (!StoryPage::IsValidID(page_id)) return CMD_ERROR; + + if (flags & DC_EXEC) { + StoryPage *p = StoryPage::Get(page_id); + + StoryPageElement *pe; + FOR_ALL_STORY_PAGE_ELEMENTS(pe) { + if (pe->page == p->index) { + delete pe; + } + } + + 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_base.h b/src/story_base.h new file mode 100644 index 000000000..3db1ba4a8 --- /dev/null +++ b/src/story_base.h @@ -0,0 +1,101 @@ +/* $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 story_base.h %StoryPage base class. */ + +#ifndef STORY_BASE_H +#define STORY_BASE_H + +#include "company_type.h" +#include "story_type.h" +#include "date_type.h" +#include "core/pool_type.hpp" + +typedef Pool StoryPageElementPool; +typedef Pool StoryPagePool; +extern StoryPageElementPool _story_page_element_pool; +extern StoryPagePool _story_page_pool; +extern uint32 _story_page_element_next_sort_value; +extern uint32 _story_page_next_sort_value; + +/* + * Each story page element is one of these types. + */ +enum StoryPageElementType { + SPET_TEXT = 0, ///< A text element. + SPET_LOCATION, ///< An element that references a tile along with a one-line text. + SPET_GOAL, ///< An element that references a goal. + SPET_END, + INVALID_SPET = 0xFF, +}; + +/** Define basic enum properties */ +template <> struct EnumPropsT : MakeEnumPropsT {}; +typedef TinyEnumT StoryPageElementTypeByte; ///< typedefing-enumification of Direction + +/** + * Struct about story page elements. + * Each StoryPage is composed of one or more page elements that provide + * page content. Each element only contain one type of content. + **/ +struct StoryPageElement : StoryPageElementPool::PoolItem<&_story_page_element_pool> { + uint32 sort_value; ///< A number that increases for every created story page element. Used for sorting. The id of a story page element is the pool index. + StoryPageID page; ///< Id of the page which the page element belongs to + StoryPageElementTypeByte type; ///< Type of page element + + uint32 referenced_id; ///< Id of referenced object (location, goal etc.) + char *text; ///< Static content text of page element + + /** + * We need an (empty) constructor so struct isn't zeroed (as C++ standard states) + */ + inline StoryPageElement() { } + + /** + * (Empty) destructor has to be defined else operator delete might be called with NULL parameter + */ + inline ~StoryPageElement() { free(this->text); } +}; + +#define FOR_ALL_STORY_PAGE_ELEMENTS_FROM(var, start) FOR_ALL_ITEMS_FROM(StoryPageElement, story_page_element_index, var, start) +#define FOR_ALL_STORY_PAGE_ELEMENTS(var) FOR_ALL_STORY_PAGE_ELEMENTS_FROM(var, 0) + +/** Struct about stories, current and completed */ +struct StoryPage : StoryPagePool::PoolItem<&_story_page_pool> { + uint32 sort_value; ///< A number that increases for every created story page. Used for sorting. The id of a story page is the pool index. + Date date; ///< Date when the page was created. + CompanyByte company; ///< StoryPage is for a specific company; INVALID_COMPANY if it is global + + char *title; ///< Title of story page + + /** + * We need an (empty) constructor so struct isn't zeroed (as C++ standard states) + */ + inline StoryPage() { } + + /** + * (Empty) destructor has to be defined else operator delete might be called with NULL parameter + */ + inline ~StoryPage() + { + if (!this->CleaningPool()) { + StoryPageElement *spe; + FOR_ALL_STORY_PAGE_ELEMENTS(spe) { + if (spe->page == this->index) delete spe; + } + } + free(this->title); + } +}; + +#define FOR_ALL_STORY_PAGES_FROM(var, start) FOR_ALL_ITEMS_FROM(StoryPage, story_page_index, var, start) +#define FOR_ALL_STORY_PAGES(var) FOR_ALL_STORY_PAGES_FROM(var, 0) + +#endif /* STORY_BASE_H */ + diff --git a/src/story_gui.cpp b/src/story_gui.cpp new file mode 100644 index 000000000..8199e7fcc --- /dev/null +++ b/src/story_gui.cpp @@ -0,0 +1,770 @@ +/* $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 story_gui.cpp GUI for stories. */ + +#include "stdafx.h" +#include "window_gui.h" +#include "strings_func.h" +#include "date_func.h" +#include "gui.h" +#include "story_base.h" +#include "core/geometry_func.hpp" +#include "company_func.h" +#include "command_func.h" +#include "widgets/dropdown_type.h" +#include "widgets/dropdown_func.h" +#include "sortlist_type.h" +#include "goal_base.h" +#include "viewport_func.h" +#include "window_func.h" +#include "company_base.h" + +#include "widgets/story_widget.h" + +#include "table/strings.h" +#include "table/sprites.h" + +#include "safeguards.h" + +typedef GUIList GUIStoryPageList; +typedef GUIList GUIStoryPageElementList; + +struct StoryBookWindow : Window { +protected: + Scrollbar *vscroll; ///< Scrollbar of the page text. + + GUIStoryPageList story_pages; ///< Sorted list of pages. + GUIStoryPageElementList story_page_elements; ///< Sorted list of page elements that belong to the current page. + StoryPageID selected_page_id; ///< Pool index of selected page. + char selected_generic_title[255]; ///< If the selected page doesn't have a custom title, this buffer is used to store a generic page title. + + static GUIStoryPageList::SortFunction * const page_sorter_funcs[]; + static GUIStoryPageElementList::SortFunction * const page_element_sorter_funcs[]; + + /** (Re)Build story page list. */ + void BuildStoryPageList() + { + if (this->story_pages.NeedRebuild()) { + this->story_pages.Clear(); + + const StoryPage *p; + FOR_ALL_STORY_PAGES(p) { + if (this->IsPageAvailable(p)) { + *this->story_pages.Append() = p; + } + } + + this->story_pages.Compact(); + this->story_pages.RebuildDone(); + } + + this->story_pages.Sort(); + } + + /** Sort story pages by order value. */ + static int CDECL PageOrderSorter(const StoryPage * const *a, const StoryPage * const *b) + { + return (*a)->sort_value - (*b)->sort_value; + } + + /** (Re)Build story page element list. */ + void BuildStoryPageElementList() + { + if (this->story_page_elements.NeedRebuild()) { + this->story_page_elements.Clear(); + + const StoryPage *p = GetSelPage(); + if (p != NULL) { + const StoryPageElement *pe; + FOR_ALL_STORY_PAGE_ELEMENTS(pe) { + if (pe->page == p->index) { + *this->story_page_elements.Append() = pe; + } + } + } + + this->story_page_elements.Compact(); + this->story_page_elements.RebuildDone(); + } + + this->story_page_elements.Sort(); + } + + /** Sort story page elements by order value. */ + static int CDECL PageElementOrderSorter(const StoryPageElement * const *a, const StoryPageElement * const *b) + { + return (*a)->sort_value - (*b)->sort_value; + } + + /* + * Checks if a given page should be visible in the story book. + * @param page The page to check. + * @return True if the page should be visible, otherwise false. + */ + bool IsPageAvailable(const StoryPage *page) const + { + return page->company == INVALID_COMPANY || page->company == this->window_number; + } + + /** + * Get instance of selected page. + * @return Instance of selected page or NULL if no page is selected. + */ + StoryPage *GetSelPage() const + { + if (!_story_page_pool.IsValidID(selected_page_id)) return NULL; + return _story_page_pool.Get(selected_page_id); + } + + /** + * Get the page number of selected page. + * @return Number of available pages before to the selected one, or -1 if no page is selected. + */ + int GetSelPageNum() const + { + int page_number = 0; + for (const StoryPage *const*iter = this->story_pages.Begin(); iter != this->story_pages.End(); iter++) { + const StoryPage *p = *iter; + if (p->index == this->selected_page_id) { + return page_number; + } + page_number++; + } + return -1; + } + + /** + * Check if the selected page is also the first available page. + */ + bool IsFirstPageSelected() + { + /* Verify that the selected page exist. */ + if (!_story_page_pool.IsValidID(this->selected_page_id)) return false; + + return (*this->story_pages.Begin())->index == this->selected_page_id; + } + + /** + * Check if the selected page is also the last available page. + */ + bool IsLastPageSelected() + { + /* Verify that the selected page exist. */ + if (!_story_page_pool.IsValidID(this->selected_page_id)) return false; + + if (this->story_pages.Length() <= 1) return true; + const StoryPage *last = *(this->story_pages.End() - 1); + return last->index == this->selected_page_id; + } + + /** + * Updates the content of selected page. + */ + void RefreshSelectedPage() + { + /* Generate generic title if selected page have no custom title. */ + StoryPage *page = this->GetSelPage(); + if (page != NULL && page->title == NULL) { + SetDParam(0, GetSelPageNum() + 1); + GetString(selected_generic_title, STR_STORY_BOOK_GENERIC_PAGE_ITEM, lastof(selected_generic_title)); + } + + this->story_page_elements.ForceRebuild(); + this->BuildStoryPageElementList(); + + this->vscroll->SetCount(this->GetContentHeight()); + this->SetWidgetDirty(WID_SB_SCROLLBAR); + this->SetWidgetDirty(WID_SB_SEL_PAGE); + this->SetWidgetDirty(WID_SB_PAGE_PANEL); + } + + /** + * Selects the previous available page before the currently selected page. + */ + void SelectPrevPage() + { + if (!_story_page_pool.IsValidID(this->selected_page_id)) return; + + /* Find the last available page which is previous to the current selected page. */ + const StoryPage *last_available; + last_available = NULL; + for (const StoryPage *const*iter = this->story_pages.Begin(); iter != this->story_pages.End(); iter++) { + const StoryPage *p = *iter; + if (p->index == this->selected_page_id) { + if (last_available == NULL) return; // No previous page available. + this->SetSelectedPage(last_available->index); + return; + } + last_available = p; + } + } + + /** + * Selects the next available page after the currently selected page. + */ + void SelectNextPage() + { + if (!_story_page_pool.IsValidID(this->selected_page_id)) return; + + /* Find selected page. */ + for (const StoryPage *const*iter = this->story_pages.Begin(); iter != this->story_pages.End(); iter++) { + const StoryPage *p = *iter; + if (p->index == this->selected_page_id) { + /* Select the page after selected page. */ + iter++; + if (iter != this->story_pages.End()) { + this->SetSelectedPage((*iter)->index); + } + return; + } + } + } + + /** + * Builds the page selector drop down list. + */ + DropDownList *BuildDropDownList() const + { + DropDownList *list = new DropDownList(); + uint16 page_num = 1; + for (const StoryPage *const*iter = this->story_pages.Begin(); iter != this->story_pages.End(); iter++) { + const StoryPage *p = *iter; + bool current_page = p->index == this->selected_page_id; + DropDownListStringItem *item = NULL; + if (p->title != NULL) { + item = new DropDownListCharStringItem(p->title, p->index, current_page); + } else { + /* No custom title => use a generic page title with page number. */ + DropDownListParamStringItem *str_item = + new DropDownListParamStringItem(STR_STORY_BOOK_GENERIC_PAGE_ITEM, p->index, current_page); + str_item->SetParam(0, page_num); + item = str_item; + } + + *list->Append() = item; + page_num++; + } + + /* Check if list is empty. */ + if (list->Length() == 0) { + delete list; + list = NULL; + } + + return list; + } + + /** + * Get the width available for displaying content on the page panel. + */ + uint GetAvailablePageContentWidth() + { + return this->GetWidget(WID_SB_PAGE_PANEL)->current_x - WD_FRAMETEXT_LEFT - WD_FRAMERECT_RIGHT; + } + + /** + * 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 height in pixels. + */ + uint GetHeadHeight(int max_width) const + { + StoryPage *page = this->GetSelPage(); + if (page == NULL) return 0; + int height = 0; + + /* Title lines */ + height += FONT_HEIGHT_NORMAL; // Date always use exactly one line. + SetDParamStr(0, page->title != NULL ? page->title : this->selected_generic_title); + height += GetStringHeight(STR_STORY_BOOK_TITLE, max_width); + + return height; + } + + /** + * Decides which sprite to display for a given page element. + * @param pe The page element. + * @return The SpriteID of the sprite to display. + * @pre pe.type must be SPET_GOAL or SPET_LOCATION. + */ + SpriteID GetPageElementSprite(const StoryPageElement &pe) const + { + switch (pe.type) { + case SPET_GOAL: { + Goal *g = Goal::Get((GoalID) pe.referenced_id); + if (g == NULL) return SPR_IMG_GOAL_BROKEN_REF; + return g->completed ? SPR_IMG_GOAL_COMPLETED : SPR_IMG_GOAL; + } + case SPET_LOCATION: + return SPR_IMG_VIEW_LOCATION; + default: + NOT_REACHED(); + } + } + + /** + * 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 height in pixels. + */ + uint GetPageElementHeight(const StoryPageElement &pe, int max_width) + { + switch (pe.type) { + case SPET_TEXT: + SetDParamStr(0, pe.text); + return GetStringHeight(STR_BLACK_RAW_STRING, max_width); + break; + + case SPET_GOAL: + case SPET_LOCATION: { + Dimension sprite_dim = GetSpriteSize(GetPageElementSprite(pe)); + return sprite_dim.height; + break; + } + default: + NOT_REACHED(); + } + return 0; + } + + /** + * Get the total height of the content displayed + * in this window. + * @return the height in pixels + */ + uint GetContentHeight() + { + StoryPage *page = this->GetSelPage(); + if (page == NULL) return 0; + int max_width = GetAvailablePageContentWidth(); + uint element_vertical_dist = FONT_HEIGHT_NORMAL; + + /* Head */ + uint height = GetHeadHeight(max_width); + + /* Body */ + for (const StoryPageElement **iter = this->story_page_elements.Begin(); iter != this->story_page_elements.End(); iter++) { + const StoryPageElement *pe = *iter; + height += element_vertical_dist; + height += GetPageElementHeight(*pe, max_width); + } + + return height; + } + + /** + * Draws a page element that is composed of a sprite to the left and a single line of + * text after that. These page elements are generally clickable and are thus called + * action elements. + * @param y_offset Current y_offset which will get updated when this method has completed its drawing. + * @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, StringID string_id = STR_JUST_RAW_STRING) const + { + Dimension sprite_dim = GetSpriteSize(action_sprite); + 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, string_id, TC_BLACK); + + y_offset += element_height; + } + + /** + * Internal event handler for when a page element is clicked. + * @param pe The clicked page element. + */ + void OnPageElementClick(const StoryPageElement& pe) + { + switch (pe.type) { + case SPET_TEXT: + /* Do nothing. */ + break; + + case SPET_LOCATION: + if (_ctrl_pressed) { + ShowExtraViewPortWindow((TileIndex)pe.referenced_id); + } else { + ScrollMainWindowToTile((TileIndex)pe.referenced_id); + } + break; + + case SPET_GOAL: + ShowGoalsList((CompanyID)this->window_number); + break; + + default: + NOT_REACHED(); + } + } + +public: + StoryBookWindow(WindowDesc *desc, WindowNumber window_number) : Window(desc) + { + 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); + this->story_pages.ForceRebuild(); + this->BuildStoryPageList(); + this->story_page_elements.SetSortFuncs(StoryBookWindow::page_element_sorter_funcs); + /* 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'; + this->selected_page_id = INVALID_STORY_PAGE; + + this->OnInvalidateData(-1); + } + + /** + * Updates the disabled state of the prev/next buttons. + */ + void UpdatePrevNextDisabledState() + { + this->SetWidgetDisabledState(WID_SB_PREV_PAGE, story_pages.Length() == 0 || this->IsFirstPageSelected()); + this->SetWidgetDisabledState(WID_SB_NEXT_PAGE, story_pages.Length() == 0 || this->IsLastPageSelected()); + this->SetWidgetDirty(WID_SB_PREV_PAGE); + this->SetWidgetDirty(WID_SB_NEXT_PAGE); + } + + /** + * Sets the selected page. + * @param page_index pool index of the page to select. + */ + void SetSelectedPage(uint16 page_index) + { + if (this->selected_page_id != page_index) { + this->selected_page_id = page_index; + this->RefreshSelectedPage(); + this->UpdatePrevNextDisabledState(); + } + } + + virtual void SetStringParameters(int widget) const + { + switch (widget) { + case WID_SB_SEL_PAGE: { + StoryPage *page = this->GetSelPage(); + SetDParamStr(0, page != NULL && page->title != NULL ? page->title : this->selected_generic_title); + break; + } + case WID_SB_CAPTION: + if (this->window_number == INVALID_COMPANY) { + SetDParam(0, STR_STORY_BOOK_SPECTATOR_CAPTION); + } else { + SetDParam(0, STR_STORY_BOOK_CAPTION); + SetDParam(1, this->window_number); + } + break; + } + } + + 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; + + StoryPage *page = this->GetSelPage(); + if (page == NULL) return; + + 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; + + /* Set up a clipping region for the panel. */ + DrawPixelInfo tmp_dpi; + 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 = FONT_HEIGHT_NORMAL; + int y_offset = - this->vscroll->GetPosition(); + + /* Date */ + 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 */ + SetDParamStr(0, page->title != NULL ? page->title : this->selected_generic_title); + y_offset = DrawStringMultiLine(0, right - x, y_offset, bottom - y, STR_STORY_BOOK_TITLE, TC_BLACK, SA_TOP | SA_HOR_CENTER); + + /* Page elements */ + for (const StoryPageElement *const*iter = this->story_page_elements.Begin(); iter != this->story_page_elements.End(); iter++) { + const StoryPageElement *const pe = *iter; + y_offset += line_height; // margin to previous element + + switch (pe->type) { + case SPET_TEXT: + SetDParamStr(0, pe->text); + y_offset = DrawStringMultiLine(0, right - x, y_offset, bottom - y, STR_JUST_RAW_STRING, TC_BLACK, SA_TOP | SA_LEFT); + break; + + case SPET_GOAL: { + Goal *g = Goal::Get((GoalID) pe->referenced_id); + 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; + } + + case SPET_LOCATION: + SetDParamStr(0, pe->text); + DrawActionElement(y_offset, right - x, line_height, GetPageElementSprite(*pe)); + break; + + default: NOT_REACHED(); + } + } + + /* Restore clipping region. */ + _cur_dpi = old_dpi; + } + + virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) + { + if (widget != WID_SB_SEL_PAGE && widget != WID_SB_PAGE_PANEL) return; + + Dimension d; + d.height= FONT_HEIGHT_NORMAL; + d.width = 0; + + switch(widget) { + case WID_SB_SEL_PAGE: { + + /* Get max title width. */ + for (uint16 i = 0; i < this->story_pages.Length(); i++) { + const StoryPage *s = this->story_pages[i]; + + if (s->title != NULL) { + SetDParamStr(0, s->title); + } else { + SetDParamStr(0, this->selected_generic_title); + } + Dimension title_d = GetStringBoundingBox(STR_BLACK_RAW_STRING); + + if (title_d.width > d.width) { + d.width = title_d.width; + } + } + + d.width += padding.width; + d.height += padding.height; + *size = maxdim(*size, d); + break; + } + + case WID_SB_PAGE_PANEL: { + d.height *= 5; + d.height += padding.height + WD_FRAMETEXT_TOP + WD_FRAMETEXT_BOTTOM; + *size = maxdim(*size, d); + break; + } + } + + } + + virtual void OnResize() + { + this->vscroll->SetCapacityFromWidget(this, WID_SB_PAGE_PANEL, WD_FRAMETEXT_TOP + WD_FRAMETEXT_BOTTOM); + this->vscroll->SetCount(this->GetContentHeight()); + } + + virtual void OnClick(Point pt, int widget, int click_count) + { + switch (widget) { + case WID_SB_SEL_PAGE: { + DropDownList *list = this->BuildDropDownList(); + if (list != NULL) { + /* Get the index of selected page. */ + int selected = 0; + for (uint16 i = 0; i < this->story_pages.Length(); i++) { + const StoryPage *p = this->story_pages[i]; + if (p->index == this->selected_page_id) break; + selected++; + } + + ShowDropDownList(this, list, selected, widget); + } + break; + } + + case WID_SB_PREV_PAGE: + this->SelectPrevPage(); + break; + + case WID_SB_NEXT_PAGE: + this->SelectNextPage(); + break; + + case WID_SB_PAGE_PANEL: { + uint clicked_y = this->vscroll->GetScrolledRowFromWidget(pt.y, this, WID_SB_PAGE_PANEL, WD_FRAMETEXT_TOP); + uint max_width = GetAvailablePageContentWidth(); + + /* Skip head rows. */ + uint head_height = this->GetHeadHeight(max_width); + if (clicked_y < head_height) return; + + /* Detect if a page element was clicked. */ + 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; + + y += element_vertical_dist; // margin row + + uint content_height = GetPageElementHeight(*pe, max_width); + if (clicked_y >= y && clicked_y < y + content_height) { + this->OnPageElementClick(*pe); + return; + } + + y += content_height; + } + } + } + } + + virtual void OnDropdownSelect(int widget, int index) + { + if (widget != WID_SB_SEL_PAGE) return; + + /* index (which is set in BuildDropDownList) is the page id. */ + this->SetSelectedPage(index); + } + + /** + * Some data on this window has become invalid. + * @param data Information about the changed data. + * -1 Rebuild page list and refresh current page; + * >= 0 Id of the page that needs to be refreshed. If it is not the current page, nothing happens. + * @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 added/removed page, force rebuild. Sort order never change so just a + * re-sort is never needed. + */ + if (data == -1) { + this->story_pages.ForceRebuild(); + this->BuildStoryPageList(); + + /* Was the last page removed? */ + if (this->story_pages.Length() == 0) { + this->selected_generic_title[0] = '\0'; + } + + /* Verify page selection. */ + if (!_story_page_pool.IsValidID(this->selected_page_id)) { + this->selected_page_id = INVALID_STORY_PAGE; + } + if (this->selected_page_id == INVALID_STORY_PAGE && this->story_pages.Length() > 0) { + /* No page is selected, but there exist at least one available. + * => Select first page. + */ + this->SetSelectedPage(this->story_pages[0]->index); + } + + this->SetWidgetDisabledState(WID_SB_SEL_PAGE, this->story_pages.Length() == 0); + this->SetWidgetDirty(WID_SB_SEL_PAGE); + this->UpdatePrevNextDisabledState(); + } else if (data >= 0 && this->selected_page_id == data) { + this->RefreshSelectedPage(); + } + } +}; + +GUIStoryPageList::SortFunction * const StoryBookWindow::page_sorter_funcs[] = { + &PageOrderSorter, +}; + +GUIStoryPageElementList::SortFunction * const StoryBookWindow::page_element_sorter_funcs[] = { + &PageElementOrderSorter, +}; + +static const NWidgetPart _nested_story_book_widgets[] = { + NWidget(NWID_HORIZONTAL), + NWidget(WWT_CLOSEBOX, COLOUR_BROWN), + NWidget(WWT_CAPTION, COLOUR_BROWN, WID_SB_CAPTION), SetDataTip(STR_JUST_STRING, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_SHADEBOX, COLOUR_BROWN), + NWidget(WWT_DEFSIZEBOX, COLOUR_BROWN), + NWidget(WWT_STICKYBOX, COLOUR_BROWN), + EndContainer(), + NWidget(NWID_HORIZONTAL), SetFill(1, 1), + NWidget(NWID_VERTICAL), SetFill(1, 1), + NWidget(WWT_PANEL, COLOUR_BROWN, WID_SB_PAGE_PANEL), SetResize(1, 1), SetScrollbar(WID_SB_SCROLLBAR), EndContainer(), + NWidget(NWID_HORIZONTAL), + NWidget(WWT_TEXTBTN, COLOUR_BROWN, WID_SB_PREV_PAGE), SetMinimalSize(100, 0), SetFill(0, 0), SetDataTip(STR_STORY_BOOK_PREV_PAGE, STR_STORY_BOOK_PREV_PAGE_TOOLTIP), + NWidget(NWID_BUTTON_DROPDOWN, COLOUR_BROWN, WID_SB_SEL_PAGE), SetMinimalSize(93, 12), SetFill(1, 0), + SetDataTip(STR_BLACK_RAW_STRING, STR_STORY_BOOK_SEL_PAGE_TOOLTIP), SetResize(1, 0), + NWidget(WWT_TEXTBTN, COLOUR_BROWN, WID_SB_NEXT_PAGE), SetMinimalSize(100, 0), SetFill(0, 0), SetDataTip(STR_STORY_BOOK_NEXT_PAGE, STR_STORY_BOOK_NEXT_PAGE_TOOLTIP), + EndContainer(), + EndContainer(), + NWidget(NWID_VERTICAL), SetFill(0, 1), + NWidget(NWID_VSCROLLBAR, COLOUR_BROWN, WID_SB_SCROLLBAR), + NWidget(WWT_RESIZEBOX, COLOUR_BROWN), + EndContainer(), + EndContainer(), +}; + +static WindowDesc _story_book_desc( + WDP_CENTER, "view_story", 400, 300, + WC_STORY_BOOK, WC_NONE, + 0, + _nested_story_book_widgets, lengthof(_nested_story_book_widgets) +); + +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); + } +} diff --git a/src/story_type.h b/src/story_type.h new file mode 100644 index 000000000..392249da2 --- /dev/null +++ b/src/story_type.h @@ -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 story_type.h basic types related to story pages */ + +#ifndef STORY_TYPE_H +#define STORY_TYPE_H + +#include "core/enum_type.hpp" + +typedef uint16 StoryPageElementID; ///< ID of a story page element +typedef uint16 StoryPageID; ///< ID of a story page +struct StoryPageElement; +struct StoryPage; + +extern StoryPageElementID _new_story_page_element_id; +extern StoryPageID _new_story_page_id; +static const StoryPageElementID INVALID_STORY_PAGE_ELEMENT = 0xFFFF; ///< Constant representing a non-existing story page element. +static const StoryPageID INVALID_STORY_PAGE = 0xFFFF; ///< Constant representing a non-existing story page. + +#endif /* STORY_TYPE_H */ + diff --git a/src/strgen/strgen.cpp b/src/strgen/strgen.cpp index e93036952..85b83f2b5 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) { @@ -263,7 +265,7 @@ struct FileWriter { /** Make sure the file is closed. */ virtual ~FileWriter() { - /* If we weren't closed an exception was thrown, so remove the termporary file. */ + /* If we weren't closed an exception was thrown, so remove the temporary file. */ if (fh != NULL) { fclose(this->fh); unlink(this->filename); @@ -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,25 +372,27 @@ 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 } /** * Create a path consisting of an already existing path, a possible - * path seperator and the filename. The seperator is only appended if the path - * does not already end with a seperator + * 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 seperator if necessary - if (p[-1] != PATHSEPCHAR && (size_t)(p - buf) + 1 < buflen) *p++ = PATHSEPCHAR; - ttd_strlcpy(p, file, buflen - (size_t)(p - buf)); // catenate filename at end of buffer + char *p = strchr(buf, '\0'); // add path separator if necessary + if (p[-1] != PATHSEPCHAR && p != last) *p++ = PATHSEPCHAR; + strecpy(p, file, last); // concatenate filename at end of buffer return buf; } @@ -434,24 +446,14 @@ int CDECL main(int argc, char *argv[]) printf("args\tflags\tcommand\treplacement\n"); for (const CmdStruct *cs = _cmd_structs; cs < endof(_cmd_structs); cs++) { char flags; - switch (cs->value) { - case 0x200E: case 0x200F: // Implicit BIDI controls - case 0x202A: case 0x202B: case 0x202C: case 0x202D: case 0x202E: // Explicit BIDI controls - case 0xA0: // Non breaking space - case '\n': // Newlines may be added too - case '{': // This special - /* This command may be in the translation when it is not in base */ - flags = 'i'; - break; - - default: - if (cs->proc == EmitGender) { - flags = 'g'; // Command needs number of parameters defined by number of genders - } else if (cs->proc == EmitPlural) { - flags = 'p'; // Command needs number of parameters defined by plural value - } else { - flags = '0'; // Command needs no parameters - } + if (cs->proc == EmitGender) { + flags = 'g'; // Command needs number of parameters defined by number of genders + } else if (cs->proc == EmitPlural) { + flags = 'p'; // Command needs number of parameters defined by plural value + } else if (cs->flags & C_DONTCOUNT) { + flags = 'i'; // Command may be in the translation when it is not in base + } else { + flags = '0'; // Command needs no parameters } printf("%i\t%c\t\"%s\"\t\"%s\"\n", cs->consumes, flags, cs->cmd, strstr(cs->cmd, "STRING") ? "STRING" : cs->cmd); } @@ -520,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); @@ -530,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); @@ -538,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 */ @@ -556,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 18ea26997..ecae71a72 100644 --- a/src/strgen/strgen.h +++ b/src/strgen/strgen.h @@ -44,7 +44,7 @@ struct StringData { LangString **strings; ///< Array of all known strings. uint16 *hash_heads; ///< Hash table for the strings. size_t tabs; ///< The number of 'tabs' of strings. - size_t max_strings; ///< The maxmimum number of strings. + size_t max_strings; ///< The maximum number of strings. int next_string_id; ///< The next string ID to allocate. StringData(size_t tabs); @@ -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 7e4516f61..95d3291e4 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) { } @@ -235,7 +237,7 @@ static int _cur_argidx; /** The buffer for writing a single string. */ struct Buffer : SmallVector { /** - * Conveniance method for adding a byte. + * Convenience method for adding a byte. * @param value The value to add. */ void AppendByte(byte value) @@ -387,14 +389,15 @@ void EmitPlural(Buffer *buffer, char *buf, int value) { int argidx = _cur_argidx; int offset = 0; - const char *words[5]; + 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--; /* 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 +406,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 +577,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 +614,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++; } } @@ -723,6 +726,7 @@ void StringReader::HandleString(char *str) WChar c; Utf8Decode(&c, tmp); if (c <= 0x001F || // ASCII control character range + c == 0x200B || // Zero width space (c >= 0xE000 && c <= 0xF8FF) || // Private range (c >= 0xFFF0 && c <= 0xFFFF)) { // Specials range strgen_fatal("Unwanted UTF-8 character U+%04X in sequence '%s'", c, s); @@ -774,7 +778,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. */ @@ -817,7 +821,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 4f7865ada..87ea26ee7 100644 --- a/src/string.cpp +++ b/src/string.cpp @@ -14,6 +14,7 @@ #include "core/alloc_func.hpp" #include "core/math_func.hpp" #include "string_func.h" +#include "string_base.h" #include "table/control_codes.h" @@ -31,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. @@ -41,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. * @@ -160,6 +116,21 @@ 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; +} + /** * Format, "printf", into a newly allocated string. * @param str The formatting string. @@ -248,22 +219,24 @@ void str_validate(char *str, const char *last, StringValidationSettings settings /* Replace the undesirable character with a question mark */ str += len; if ((settings & SVS_REPLACE_WITH_QUESTION_MARK) != 0) *dst++ = '?'; - - /* In case of these two special cases assume that they really - * mean SETX/SETXY and also "eat" the paramater. If this was - * not the case the string was broken to begin with and this - * would not break much more. */ - if (c == SCC_SETX) { - str++; - } else if (c == SCC_SETXY) { - str += 2; - } } } *dst = '\0'; } +/** + * Scans the string for valid characters and if it finds invalid ones, + * replaces them with a question mark '?'. + * @param str the string to validate + */ +void ValidateString(const char *str) +{ + /* We know it is '\0' terminated. */ + str_validate(const_cast(str), str + strlen(str) + 1); +} + + /** * Checks whether the given string is valid, i.e. contains only * valid (printable) characters and is properly terminated. @@ -376,20 +349,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. @@ -413,7 +372,7 @@ int CDECL vsnprintf(char *str, size_t size, const char *format, va_list ap) } } else if ((size_t)ret < size) { /* The buffer is big enough for the number of - * characers stored (excluding null), i.e. + * characters stored (excluding null), i.e. * the string has been null-terminated. */ return ret; } @@ -569,17 +528,6 @@ size_t Utf8TrimString(char *s, size_t maxlen) return length; } -#ifdef DEFINE_STRNDUP -#include "core/math_func.hpp" -char *strndup(const char *s, size_t len) -{ - len = min(strlen(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) { @@ -596,15 +544,34 @@ char *strcasestr(const char *haystack, const char *needle) } #endif /* DEFINE_STRCASESTR */ +/** + * Skip some of the 'garbage' in the string that we don't want to use + * to sort on. This way the alphabetical sorting will work better as + * we would be actually using those characters instead of some other + * characters such as spaces and tildes at the begin of the name. + * @param str The string to skip the initial garbage of. + * @return The string with the garbage skipped. + */ +static const char *SkipGarbage(const char *str) +{ + while (*str != '\0' && (*str < '0' || IsInsideMM(*str, ';', '@' + 1) || IsInsideMM(*str, '[', '`' + 1) || IsInsideMM(*str, '{', '~' + 1))) str++; + return str; +} + /** * Compares two strings using case insensitive natural sort. * * @param s1 First string to compare. * @param s2 Second string to compare. + * @param ignore_garbage_at_front Skip punctuation characters in the front * @return Less than zero if s1 < s2, zero if s1 == s2, greater than zero if s1 > s2. */ -int strnatcmp(const char *s1, const char *s2) +int strnatcmp(const char *s1, const char *s2, bool ignore_garbage_at_front) { + if (ignore_garbage_at_front) { + s1 = SkipGarbage(s1); + s2 = SkipGarbage(s2); + } #ifdef WITH_ICU if (_current_collator != NULL) { UErrorCode status = U_ZERO_ERROR; @@ -630,3 +597,271 @@ int strnatcmp(const char *s1, const char *s2) /* Do a normal comparison if ICU is missing or if we cannot create a collator. */ return strcasecmp(s1, s2); } + +#ifdef WITH_ICU + +#include +#include + +/** String iterator using ICU as a backend. */ +class IcuStringIterator : public StringIterator +{ + icu::BreakIterator *char_itr; ///< ICU iterator for characters. + icu::BreakIterator *word_itr; ///< ICU iterator for words. + + 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. + +public: + IcuStringIterator() : char_itr(NULL), word_itr(NULL) + { + UErrorCode status = U_ZERO_ERROR; + this->char_itr = icu::BreakIterator::createCharacterInstance(icu::Locale(_current_language != NULL ? _current_language->isocode : "en"), status); + this->word_itr = icu::BreakIterator::createWordInstance(icu::Locale(_current_language != NULL ? _current_language->isocode : "en"), status); + + *this->utf16_str.Append() = '\0'; + *this->utf16_to_utf8.Append() = 0; + } + + virtual ~IcuStringIterator() + { + delete this->char_itr; + delete this->word_itr; + } + + virtual void SetString(const char *s) + { + const char *string_base = s; + + /* Unfortunately current ICU versions only provide rudimentary support + * for word break iterators (especially for CJK languages) in combination + * with UTF-8 input. As a work around we have to convert the input to + * UTF-16 and create a mapping back to UTF-8 character indices. */ + this->utf16_str.Clear(); + this->utf16_to_utf8.Clear(); + + while (*s != '\0') { + size_t idx = s - string_base; + + WChar c = Utf8Consume(&s); + if (c < 0x10000) { + *this->utf16_str.Append() = (UChar)c; + } else { + /* Make a surrogate pair. */ + *this->utf16_str.Append() = (UChar)(0xD800 + ((c - 0x10000) >> 10)); + *this->utf16_str.Append() = (UChar)(0xDC00 + ((c - 0x10000) & 0x3FF)); + *this->utf16_to_utf8.Append() = idx; + } + *this->utf16_to_utf8.Append() = idx; + } + *this->utf16_str.Append() = '\0'; + *this->utf16_to_utf8.Append() = s - string_base; + + UText text = UTEXT_INITIALIZER; + UErrorCode status = U_ZERO_ERROR; + utext_openUChars(&text, this->utf16_str.Begin(), this->utf16_str.Length() - 1, &status); + this->char_itr->setText(&text, status); + this->word_itr->setText(&text, status); + this->char_itr->first(); + this->word_itr->first(); + } + + virtual size_t SetCurPosition(size_t pos) + { + /* Convert incoming position to an UTF-16 string index. */ + uint utf16_pos = 0; + for (uint i = 0; i < this->utf16_to_utf8.Length(); i++) { + if (this->utf16_to_utf8[i] == pos) { + utf16_pos = i; + break; + } + } + + /* isBoundary has the documented side-effect of setting the current + * position to the first valid boundary equal to or greater than + * the passed value. */ + this->char_itr->isBoundary(utf16_pos); + return this->utf16_to_utf8[this->char_itr->current()]; + } + + virtual size_t Next(IterType what) + { + int32_t pos; + switch (what) { + case ITER_CHARACTER: + pos = this->char_itr->next(); + break; + + case ITER_WORD: + pos = this->word_itr->following(this->char_itr->current()); + /* 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]))) { + 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; + + default: + NOT_REACHED(); + } + + return pos == icu::BreakIterator::DONE ? END : this->utf16_to_utf8[pos]; + } + + virtual size_t Prev(IterType what) + { + int32_t pos; + switch (what) { + case ITER_CHARACTER: + pos = this->char_itr->previous(); + break; + + case ITER_WORD: + pos = this->word_itr->preceding(this->char_itr->current()); + /* 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]))) { + 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; + + default: + NOT_REACHED(); + } + + return pos == icu::BreakIterator::DONE ? END : this->utf16_to_utf8[pos]; + } +}; + +/* static */ StringIterator *StringIterator::Create() +{ + return new IcuStringIterator(); +} + +#else + +/** Fallback simple string iterator. */ +class DefaultStringIterator : public StringIterator +{ + const char *string; ///< Current string. + size_t len; ///< String length. + size_t cur_pos; ///< Current iteration position. + +public: + DefaultStringIterator() : string(NULL), len(0), cur_pos(0) + { + } + + virtual void SetString(const char *s) + { + this->string = s; + this->len = strlen(s); + this->cur_pos = 0; + } + + virtual size_t SetCurPosition(size_t pos) + { + assert(this->string != NULL && pos <= this->len); + /* Sanitize in case we get a position inside an UTF-8 sequence. */ + while (pos > 0 && IsUtf8Part(this->string[pos])) pos--; + return this->cur_pos = pos; + } + + virtual size_t Next(IterType what) + { + assert(this->string != NULL); + + /* Already at the end? */ + if (this->cur_pos >= this->len) return END; + + switch (what) { + case ITER_CHARACTER: { + WChar c; + this->cur_pos += Utf8Decode(&c, this->string + this->cur_pos); + return this->cur_pos; + } + + case ITER_WORD: { + WChar c; + /* Consume current word. */ + size_t offs = Utf8Decode(&c, this->string + this->cur_pos); + while (this->cur_pos < this->len && !IsWhitespace(c)) { + this->cur_pos += offs; + offs = Utf8Decode(&c, this->string + this->cur_pos); + } + /* Consume whitespace to the next word. */ + while (this->cur_pos < this->len && IsWhitespace(c)) { + this->cur_pos += offs; + offs = Utf8Decode(&c, this->string + this->cur_pos); + } + + return this->cur_pos; + } + + default: + NOT_REACHED(); + } + + return END; + } + + virtual size_t Prev(IterType what) + { + assert(this->string != NULL); + + /* Already at the beginning? */ + if (this->cur_pos == 0) return END; + + switch (what) { + case ITER_CHARACTER: + return this->cur_pos = Utf8PrevChar(this->string + this->cur_pos) - this->string; + + case ITER_WORD: { + const char *s = this->string + this->cur_pos; + WChar c; + /* Consume preceding whitespace. */ + do { + s = Utf8PrevChar(s); + Utf8Decode(&c, s); + } while (s > this->string && IsWhitespace(c)); + /* Consume preceding word. */ + while (s > this->string && !IsWhitespace(c)) { + s = Utf8PrevChar(s); + Utf8Decode(&c, s); + } + /* Move caret back to the beginning of the word. */ + if (IsWhitespace(c)) Utf8Consume(&s); + + return this->cur_pos = s - this->string; + } + + default: + NOT_REACHED(); + } + + return END; + } +}; + +/* static */ StringIterator *StringIterator::Create() +{ + return new DefaultStringIterator(); +} + +#endif diff --git a/src/string_base.h b/src/string_base.h new file mode 100644 index 000000000..e1eaed349 --- /dev/null +++ b/src/string_base.h @@ -0,0 +1,66 @@ +/* $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 . + */ + +#ifndef STRING_BASE_H +#define STRING_BASE_H + +#include "string_type.h" + +/** Class for iterating over different kind of parts of a string. */ +class StringIterator { +public: + /** Type of the iterator. */ + enum IterType { + ITER_CHARACTER, ///< Iterate over characters (or more exactly grapheme clusters). + ITER_WORD, ///< Iterate over words. + }; + + /** Sentinel to indicate end-of-iteration. */ + static const size_t END = SIZE_MAX; + + /** + * Create a new iterator instance. + * @return New iterator instance. + */ + static StringIterator *Create(); + + virtual ~StringIterator() {} + + /** + * Set a new iteration string. Must also be called if the string contents + * changed. The cursor is reset to the start of the string. + * @param s New string. + */ + virtual void SetString(const char *s) = 0; + + /** + * Change the current string cursor. + * @param p New cursor position. + * @return Actual new cursor position at the next valid character boundary. + * @pre p has to be inside the current string. + */ + virtual size_t SetCurPosition(size_t pos) = 0; + + /** + * Advance the cursor by one iteration unit. + * @return New cursor position (in bytes) or #END if the cursor is already at the end of the string. + */ + virtual size_t Next(IterType what = ITER_CHARACTER) = 0; + + /** + * Move the cursor back by one iteration unit. + * @return New cursor position (in bytes) or #END if the cursor is already at the start of the string. + */ + virtual size_t Prev(IterType what = ITER_CHARACTER) = 0; + +protected: + StringIterator() {} +}; + +#endif /* STRING_BASE_H */ diff --git a/src/string_func.h b/src/string_func.h index 070695fdb..ff12f3747 100644 --- a/src/string_func.h +++ b/src/string_func.h @@ -26,20 +26,23 @@ #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); void str_validate(char *str, const char *last, StringValidationSettings settings = SVS_REPLACE_WITH_QUESTION_MARK); +void ValidateString(const char *str); + void str_fix_scc_encoded(char *str, const char *last); void str_strip_colours(char *str); bool strtolower(char *str); @@ -49,7 +52,7 @@ bool StrValid(const char *str, const char *last); /** * Check if a string buffer is empty. * - * @param s The pointer to the firste element of the buffer + * @param s The pointer to the first element of the buffer * @return true if the buffer starts with the terminating null-character or * if the given pointer points to NULL else return false */ @@ -61,7 +64,7 @@ static inline bool StrEmpty(const char *s) /** * Get the length of a string, within a limited buffer. * - * @param str The pointer to the firste element of the buffer + * @param str The pointer to the first element of the buffer * @param maxlen The maximum size of the buffer * @return The length of the string */ @@ -88,7 +91,6 @@ static inline WChar Utf8Consume(const char **s) return c; } - /** * Return the length of a UTF-8 encoded character. * @param c Unicode character. @@ -145,8 +147,60 @@ static inline char *Utf8PrevChar(char *s) return ret; } +static inline const char *Utf8PrevChar(const char *s) +{ + const char *ret = s; + while (IsUtf8Part(*--ret)) {} + return ret; +} + size_t Utf8StringLength(const char *s); +/** + * Is the given character a lead surrogate code point? + * @param c The character to test. + * @return True if the character is a lead surrogate code point. + */ +static inline bool Utf16IsLeadSurrogate(uint c) +{ + return c >= 0xD800 && c <= 0xDBFF; +} + +/** + * Is the given character a lead surrogate code point? + * @param c The character to test. + * @return True if the character is a lead surrogate code point. + */ +static inline bool Utf16IsTrailSurrogate(uint c) +{ + return c >= 0xDC00 && c <= 0xDFFF; +} + +/** + * Convert an UTF-16 surrogate pair to the corresponding Unicode character. + * @param lead Lead surrogate code point. + * @param trail Trail surrogate code point. + * @return Decoded Unicode character. + */ +static inline WChar Utf16DecodeSurrogate(uint lead, uint trail) +{ + return 0x10000 + (((lead - 0xD800) << 10) | (trail - 0xDC00)); +} + +/** + * Decode an UTF-16 character. + * @param c Pointer to one or two UTF-16 code points. + * @return Decoded Unicode character. + */ +static inline WChar Utf16DecodeChar(const uint16 *c) +{ + if (Utf16IsLeadSurrogate(c[0])) { + return Utf16DecodeSurrogate(c[0], c[1]); + } else { + return *c; + } +} + /** * Is the given character a text direction character. * @param c The character to test. @@ -195,14 +249,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 @@ -211,6 +257,6 @@ char *strndup(const char *s, size_t len); char *strcasestr(const char *haystack, const char *needle); #endif /* strcasestr is available */ -int strnatcmp(const char *s1, const char *s2); +int strnatcmp(const char *s1, const char *s2, bool ignore_garbage_at_front = false); #endif /* STRING_FUNC_H */ diff --git a/src/stringfilter.cpp b/src/stringfilter.cpp index e021c57b5..6045c19ef 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 a8a7cc62b..c12695c3a 100644 --- a/src/strings.cpp +++ b/src/strings.cpp @@ -13,14 +13,13 @@ #include "currency.h" #include "station_base.h" #include "town.h" -#include "screenshot.h" #include "waypoint_base.h" #include "depot_base.h" #include "industry.h" #include "newgrf_text.h" #include "fileio_func.h" #include "signs_base.h" -#include "fontcache.h" +#include "fontdetection.h" #include "error.h" #include "strings_func.h" #include "rev.h" @@ -41,6 +40,8 @@ #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. @@ -95,29 +96,32 @@ void StringParameters::ShiftParameters(uint amount) * @param n Index of the string parameter. * @param max_value The biggest value which shall be displayed. * For the result only the number of digits of \a max_value matter. - * @param min_count Minimum number of digits indepentent of \a max. + * @param min_count Minimum number of digits independent of \a max. + * @param size Font of the number */ -void SetDParamMaxValue(uint n, uint64 max_value, uint min_count) +void SetDParamMaxValue(uint n, uint64 max_value, uint min_count, FontSize size) { uint num_digits = 1; while (max_value >= 10) { num_digits++; max_value /= 10; } - SetDParamMaxDigits(n, max(min_count, num_digits)); + SetDParamMaxDigits(n, max(min_count, num_digits), size); } /** * Set DParam n to some number that is suitable for string size computations. * @param n Index of the string parameter. * @param count Number of digits which shall be displayable. + * @param size Font of the number */ -void SetDParamMaxDigits(uint n, uint count) +void SetDParamMaxDigits(uint n, uint count, FontSize size) { - static const uint biggest_digit = 8; ///< Digit with the biggest string width. - uint64 val = biggest_digit; + uint front, next; + GetBroadestDigit(&front, &next, size); + uint64 val = count > 1 ? front : next; for (; count > 1; count--) { - val = 10 * val + biggest_digit; + val = 10 * val + next; } SetDParam(n, val); } @@ -160,7 +164,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; @@ -189,8 +193,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); @@ -203,7 +207,7 @@ const char *GetStringPtr(StringID string) * @param buffr Pointer to a string buffer where the formatted string should be written to. * @param string * @param args Arguments for the string. - * @param last Pointer just past the end of buffr. + * @param last Pointer just past the end of \a buffr. * @param case_index The "case index". This will only be set when FormatString wants to print the string in a different case. * @param game_script The string is coming directly from a game script. * @return Pointer to the final zero byte of the formatted string. @@ -230,18 +234,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); @@ -251,9 +253,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]) { @@ -274,14 +273,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 @@ -418,7 +409,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); } @@ -441,8 +432,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); @@ -524,7 +515,7 @@ static int DeterminePluralForm(int64 count, int plural_form) * Danish, Dutch, English, German, Norwegian, Swedish, Estonian, Finnish, * Greek, Hebrew, Italian, Portuguese, Spanish, Esperanto */ case 0: - return n != 1; + return n != 1 ? 1 : 0; /* Only one form. * Used in: @@ -536,9 +527,10 @@ static int DeterminePluralForm(int64 count, int plural_form) * Used in: * French, Brazilian Portuguese */ case 2: - return n > 1; + return n > 1 ? 1 : 0; /* Three forms: special cases for 0, and numbers ending in 1 except when ending in 11. + * Note: Cases are out of order for hysterical reasons. '0' is last. * Used in: * Latvian */ case 3: @@ -556,7 +548,7 @@ static int DeterminePluralForm(int64 count, int plural_form) case 5: return n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2; - /* Three forms: special cases for numbers ending in 1 except wehn ending in 11, and 2 to 4 except when ending in 12 to 14. + /* Three forms: special cases for numbers ending in 1 except when ending in 11, and 2 to 4 except when ending in 12 to 14. * Used in: * Croatian, Russian, Ukrainian */ case 6: @@ -616,6 +608,11 @@ static int DeterminePluralForm(int64 count, int plural_form) * Maltese */ case 12: return (n == 1 ? 0 : n == 0 || (n % 100 > 1 && n % 100 < 11) ? 1 : (n % 100 > 10 && n % 100 < 20) ? 2 : 3); + /* Four forms: special cases for 1 and 11, 2 and 12, 3 .. 10 and 13 .. 19, other + * Used in: + * Scottish Gaelic */ + case 13: + return ((n == 1 || n == 11) ? 0 : (n == 2 || n == 12) ? 1 : ((n > 2 && n < 11) || (n > 12 && n < 20)) ? 2 : 3); } } @@ -664,49 +661,59 @@ struct UnitConversion { } }; +/** Information about a specific unit system. */ struct Units { - UnitConversion c_velocity; ///< Conversion for velocity - StringID velocity; ///< String for velocity - UnitConversion c_power; ///< Conversion for power - StringID power; ///< String for power - UnitConversion c_weight; ///< Conversion for weight - StringID s_weight; ///< Short string for weight - StringID l_weight; ///< Long string for weight - UnitConversion c_volume; ///< Conversion for volume - StringID s_volume; ///< Short string for volume - StringID l_volume; ///< Long string for volume - UnitConversion c_force; ///< Conversion for force - StringID force; ///< String for force - UnitConversion c_height; ///< Conversion for height - StringID height; ///< String for height + UnitConversion c; ///< Conversion + StringID s; ///< String for the unit +}; + +/** Information about a specific unit system with a long variant. */ +struct UnitsLong { + UnitConversion c; ///< Conversion + StringID s; ///< String for the short variant of the unit + StringID l; ///< String for the long variant of the unit +}; + +/** Unit conversions for velocity. */ +static const Units _units_velocity[] = { + { { 1, 0}, STR_UNITS_VELOCITY_IMPERIAL }, + { { 103, 6}, STR_UNITS_VELOCITY_METRIC }, + { {1831, 12}, STR_UNITS_VELOCITY_SI }, +}; + +/** Unit conversions for velocity. */ +static const Units _units_power[] = { + { { 1, 0}, STR_UNITS_POWER_IMPERIAL }, + { {4153, 12}, STR_UNITS_POWER_METRIC }, + { {6109, 13}, STR_UNITS_POWER_SI }, +}; + +/** Unit conversions for weight. */ +static const UnitsLong _units_weight[] = { + { {4515, 12}, STR_UNITS_WEIGHT_SHORT_IMPERIAL, STR_UNITS_WEIGHT_LONG_IMPERIAL }, + { { 1, 0}, STR_UNITS_WEIGHT_SHORT_METRIC, STR_UNITS_WEIGHT_LONG_METRIC }, + { {1000, 0}, STR_UNITS_WEIGHT_SHORT_SI, STR_UNITS_WEIGHT_LONG_SI }, +}; + +/** Unit conversions for volume. */ +static const UnitsLong _units_volume[] = { + { {4227, 4}, STR_UNITS_VOLUME_SHORT_IMPERIAL, STR_UNITS_VOLUME_LONG_IMPERIAL }, + { {1000, 0}, STR_UNITS_VOLUME_SHORT_METRIC, STR_UNITS_VOLUME_LONG_METRIC }, + { { 1, 0}, STR_UNITS_VOLUME_SHORT_SI, STR_UNITS_VOLUME_LONG_SI }, +}; + +/** Unit conversions for force. */ +static const Units _units_force[] = { + { {3597, 4}, STR_UNITS_FORCE_IMPERIAL }, + { {3263, 5}, STR_UNITS_FORCE_METRIC }, + { { 1, 0}, STR_UNITS_FORCE_SI }, }; -/* Unit conversions */ -static const Units _units[] = { - { // Imperial (Original, mph, hp, metric ton, litre, kN, ft) - { 1, 0}, STR_UNITS_VELOCITY_IMPERIAL, - { 1, 0}, STR_UNITS_POWER_IMPERIAL, - { 1, 0}, STR_UNITS_WEIGHT_SHORT_METRIC, STR_UNITS_WEIGHT_LONG_METRIC, - {1000, 0}, STR_UNITS_VOLUME_SHORT_METRIC, STR_UNITS_VOLUME_LONG_METRIC, - { 1, 0}, STR_UNITS_FORCE_SI, - { 3, 0}, STR_UNITS_HEIGHT_IMPERIAL, // "Wrong" conversion factor for more nicer GUI values - }, - { // Metric (km/h, hp, metric ton, litre, kN, metre) - { 103, 6}, STR_UNITS_VELOCITY_METRIC, - {4153, 12}, STR_UNITS_POWER_METRIC, - { 1, 0}, STR_UNITS_WEIGHT_SHORT_METRIC, STR_UNITS_WEIGHT_LONG_METRIC, - {1000, 0}, STR_UNITS_VOLUME_SHORT_METRIC, STR_UNITS_VOLUME_LONG_METRIC, - { 1, 0}, STR_UNITS_FORCE_SI, - { 1, 0}, STR_UNITS_HEIGHT_SI, - }, - { // SI (m/s, kilowatt, kilogram, cubic metre, kilonewton, metre) - {1831, 12}, STR_UNITS_VELOCITY_SI, - {6109, 13}, STR_UNITS_POWER_SI, - {1000, 0}, STR_UNITS_WEIGHT_SHORT_SI, STR_UNITS_WEIGHT_LONG_SI, - { 1, 0}, STR_UNITS_VOLUME_SHORT_SI, STR_UNITS_VOLUME_LONG_SI, - { 1, 0}, STR_UNITS_FORCE_SI, - { 1, 0}, STR_UNITS_HEIGHT_SI, - }, +/** Unit conversions for height. */ +static const Units _units_height[] = { + { { 3, 0}, STR_UNITS_HEIGHT_IMPERIAL }, // "Wrong" conversion factor for more nicer GUI values + { { 1, 0}, STR_UNITS_HEIGHT_METRIC }, + { { 1, 0}, STR_UNITS_HEIGHT_SI }, }; /** @@ -719,7 +726,7 @@ uint ConvertSpeedToDisplaySpeed(uint speed) /* For historical reasons we don't want to mess with the * conversion for speed. So, don't round it and keep the * original conversion factors instead of the real ones. */ - return _units[_settings_game.locale.units].c_velocity.ToDisplay(speed, false); + return _units_velocity[_settings_game.locale.units_velocity].c.ToDisplay(speed, false); } /** @@ -729,7 +736,7 @@ uint ConvertSpeedToDisplaySpeed(uint speed) */ uint ConvertDisplaySpeedToSpeed(uint speed) { - return _units[_settings_game.locale.units].c_velocity.FromDisplay(speed); + return _units_velocity[_settings_game.locale.units_velocity].c.FromDisplay(speed); } /** @@ -739,7 +746,7 @@ uint ConvertDisplaySpeedToSpeed(uint speed) */ uint ConvertKmhishSpeedToDisplaySpeed(uint speed) { - return _units[_settings_game.locale.units].c_velocity.ToDisplay(speed * 10, false) / 16; + return _units_velocity[_settings_game.locale.units_velocity].c.ToDisplay(speed * 10, false) / 16; } /** @@ -749,7 +756,7 @@ uint ConvertKmhishSpeedToDisplaySpeed(uint speed) */ uint ConvertDisplaySpeedToKmhishSpeed(uint speed) { - return _units[_settings_game.locale.units].c_velocity.FromDisplay(speed * 16, true, 10); + return _units_velocity[_settings_game.locale.units_velocity].c.FromDisplay(speed * 16, true, 10); } /** * Parse most format codes within a string and write the result to a buffer. @@ -782,7 +789,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; @@ -798,7 +805,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; } @@ -867,7 +874,7 @@ static char *FormatString(char *buff, const char *str_arg, StringParameters *arg bool lookup = (l == SCC_ENCODED); if (lookup) s += len; - param = strtol(s, &p, 16); + param = (int32)strtoul(s, &p, 16); if (lookup) { if (param >= TAB_SIZE) { @@ -881,18 +888,18 @@ 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; sub_args.SetParam(i++, (uint64)(size_t)g); } } - /* We error'd out in the while, to error out in themain too */ - if (*str == '\0') break; - - str = p; - buff = GetStringWithArgs(buff, (GAME_TEXT_TAB << TAB_COUNT_OFFSET) + stringid, &sub_args, last, true); + /* If we didn't error out, we can actually print the string. */ + if (*str != '\0') { + str = p; + buff = GetStringWithArgs(buff, (GAME_TEXT_TAB << TAB_COUNT_OFFSET) + stringid, &sub_args, last, true); + } for (int i = 0; i < 20; i++) { if (sub_args_need_free[i]) free((void *)sub_args.GetParam(i)); @@ -994,30 +1001,10 @@ static char *FormatString(char *buff, const char *str_arg, StringParameters *arg break; } - case SCC_SETX: // {SETX} - if (buff + Utf8CharLen(SCC_SETX) + 1 < last) { - buff += Utf8Encode(buff, SCC_SETX); - *buff++ = *str++; - } - break; - - case SCC_SETXY: // {SETXY} - if (buff + Utf8CharLen(SCC_SETXY) + 2 < last) { - buff += Utf8Encode(buff, SCC_SETXY); - *buff++ = *str++; - *buff++ = *str++; - } - break; - case SCC_REVISION: // {REV} 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); @@ -1031,7 +1018,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; @@ -1047,8 +1034,13 @@ static char *FormatString(char *buff, const char *str_arg, StringParameters *arg /* Strings that consume arguments */ StringID str = args->GetInt32(b); if (game_script && GB(str, TAB_COUNT_OFFSET, TAB_COUNT_BITS) != GAME_TEXT_TAB) break; - StringParameters sub_args(*args, b - SCC_STRING1 + 1); - buff = GetStringWithArgs(buff, str, &sub_args, last, next_substr_case_index, game_script); + uint size = b - SCC_STRING1 + 1; + if (game_script && size > args->GetDataLeft()) { + buff = strecat(buff, "(too many parameters)", last); + } else { + StringParameters sub_args(*args, size); + buff = GetStringWithArgs(buff, str, &sub_args, last, next_substr_case_index, game_script); + } next_substr_case_index = 0; break; } @@ -1093,11 +1085,11 @@ static char *FormatString(char *buff, const char *str_arg, StringParameters *arg int64 amount = 0; switch (cargo_str) { case STR_TONS: - amount = _units[_settings_game.locale.units].c_weight.ToDisplay(args->GetInt64()); + amount = _units_weight[_settings_game.locale.units_weight].c.ToDisplay(args->GetInt64()); break; case STR_LITERS: - amount = _units[_settings_game.locale.units].c_volume.ToDisplay(args->GetInt64()); + amount = _units_volume[_settings_game.locale.units_volume].c.ToDisplay(args->GetInt64()); break; default: { @@ -1120,18 +1112,18 @@ static char *FormatString(char *buff, const char *str_arg, StringParameters *arg StringID cargo_str = CargoSpec::Get(cargo)->units_volume; switch (cargo_str) { case STR_TONS: { - assert(_settings_game.locale.units < lengthof(_units)); - int64 args_array[] = {_units[_settings_game.locale.units].c_weight.ToDisplay(args->GetInt64())}; + assert(_settings_game.locale.units_weight < lengthof(_units_weight)); + int64 args_array[] = {_units_weight[_settings_game.locale.units_weight].c.ToDisplay(args->GetInt64())}; StringParameters tmp_params(args_array); - buff = FormatString(buff, GetStringPtr(_units[_settings_game.locale.units].l_weight), &tmp_params, last); + buff = FormatString(buff, GetStringPtr(_units_weight[_settings_game.locale.units_weight].l), &tmp_params, last); break; } case STR_LITERS: { - assert(_settings_game.locale.units < lengthof(_units)); - int64 args_array[] = {_units[_settings_game.locale.units].c_volume.ToDisplay(args->GetInt64())}; + assert(_settings_game.locale.units_volume < lengthof(_units_volume)); + int64 args_array[] = {_units_volume[_settings_game.locale.units_volume].c.ToDisplay(args->GetInt64())}; StringParameters tmp_params(args_array); - buff = FormatString(buff, GetStringPtr(_units[_settings_game.locale.units].l_volume), &tmp_params, last); + buff = FormatString(buff, GetStringPtr(_units_volume[_settings_game.locale.units_volume].l), &tmp_params, last); break; } @@ -1214,65 +1206,66 @@ static char *FormatString(char *buff, const char *str_arg, StringParameters *arg break; case SCC_FORCE: { // {FORCE} - assert(_settings_game.locale.units < lengthof(_units)); - int64 args_array[1] = {_units[_settings_game.locale.units].c_force.ToDisplay(args->GetInt64())}; + assert(_settings_game.locale.units_force < lengthof(_units_force)); + int64 args_array[1] = {_units_force[_settings_game.locale.units_force].c.ToDisplay(args->GetInt64())}; StringParameters tmp_params(args_array); - buff = FormatString(buff, GetStringPtr(_units[_settings_game.locale.units].force), &tmp_params, last); + buff = FormatString(buff, GetStringPtr(_units_force[_settings_game.locale.units_force].s), &tmp_params, last); break; } case SCC_HEIGHT: { // {HEIGHT} - int64 args_array[] = {_units[_settings_game.locale.units].c_height.ToDisplay(args->GetInt64())}; + assert(_settings_game.locale.units_height < lengthof(_units_height)); + int64 args_array[] = {_units_height[_settings_game.locale.units_height].c.ToDisplay(args->GetInt64())}; StringParameters tmp_params(args_array); - buff = FormatString(buff, GetStringPtr(_units[_settings_game.locale.units].height), &tmp_params, last); + buff = FormatString(buff, GetStringPtr(_units_height[_settings_game.locale.units_height].s), &tmp_params, last); break; } case SCC_POWER: { // {POWER} - assert(_settings_game.locale.units < lengthof(_units)); - int64 args_array[1] = {_units[_settings_game.locale.units].c_power.ToDisplay(args->GetInt64())}; + assert(_settings_game.locale.units_power < lengthof(_units_power)); + int64 args_array[1] = {_units_power[_settings_game.locale.units_power].c.ToDisplay(args->GetInt64())}; StringParameters tmp_params(args_array); - buff = FormatString(buff, GetStringPtr(_units[_settings_game.locale.units].power), &tmp_params, last); + buff = FormatString(buff, GetStringPtr(_units_power[_settings_game.locale.units_power].s), &tmp_params, last); break; } case SCC_VELOCITY: { // {VELOCITY} - assert(_settings_game.locale.units < lengthof(_units)); + assert(_settings_game.locale.units_velocity < lengthof(_units_velocity)); int64 args_array[] = {ConvertKmhishSpeedToDisplaySpeed(args->GetInt64(SCC_VELOCITY))}; StringParameters tmp_params(args_array); - buff = FormatString(buff, GetStringPtr(_units[_settings_game.locale.units].velocity), &tmp_params, last); + buff = FormatString(buff, GetStringPtr(_units_velocity[_settings_game.locale.units_velocity].s), &tmp_params, last); break; } case SCC_VOLUME_SHORT: { // {VOLUME_SHORT} - assert(_settings_game.locale.units < lengthof(_units)); - int64 args_array[1] = {_units[_settings_game.locale.units].c_volume.ToDisplay(args->GetInt64())}; + assert(_settings_game.locale.units_volume < lengthof(_units_volume)); + int64 args_array[1] = {_units_volume[_settings_game.locale.units_volume].c.ToDisplay(args->GetInt64())}; StringParameters tmp_params(args_array); - buff = FormatString(buff, GetStringPtr(_units[_settings_game.locale.units].s_volume), &tmp_params, last); + buff = FormatString(buff, GetStringPtr(_units_volume[_settings_game.locale.units_volume].s), &tmp_params, last); break; } case SCC_VOLUME_LONG: { // {VOLUME_LONG} - assert(_settings_game.locale.units < lengthof(_units)); - int64 args_array[1] = {_units[_settings_game.locale.units].c_volume.ToDisplay(args->GetInt64(SCC_VOLUME_LONG))}; + assert(_settings_game.locale.units_volume < lengthof(_units_volume)); + int64 args_array[1] = {_units_volume[_settings_game.locale.units_volume].c.ToDisplay(args->GetInt64(SCC_VOLUME_LONG))}; StringParameters tmp_params(args_array); - buff = FormatString(buff, GetStringPtr(_units[_settings_game.locale.units].l_volume), &tmp_params, last); + buff = FormatString(buff, GetStringPtr(_units_volume[_settings_game.locale.units_volume].l), &tmp_params, last); break; } case SCC_WEIGHT_SHORT: { // {WEIGHT_SHORT} - assert(_settings_game.locale.units < lengthof(_units)); - int64 args_array[1] = {_units[_settings_game.locale.units].c_weight.ToDisplay(args->GetInt64())}; + assert(_settings_game.locale.units_weight < lengthof(_units_weight)); + int64 args_array[1] = {_units_weight[_settings_game.locale.units_weight].c.ToDisplay(args->GetInt64())}; StringParameters tmp_params(args_array); - buff = FormatString(buff, GetStringPtr(_units[_settings_game.locale.units].s_weight), &tmp_params, last); + buff = FormatString(buff, GetStringPtr(_units_weight[_settings_game.locale.units_weight].s), &tmp_params, last); break; } case SCC_WEIGHT_LONG: { // {WEIGHT_LONG} - assert(_settings_game.locale.units < lengthof(_units)); - int64 args_array[1] = {_units[_settings_game.locale.units].c_weight.ToDisplay(args->GetInt64(SCC_WEIGHT_LONG))}; + assert(_settings_game.locale.units_weight < lengthof(_units_weight)); + int64 args_array[1] = {_units_weight[_settings_game.locale.units_weight].c.ToDisplay(args->GetInt64(SCC_WEIGHT_LONG))}; StringParameters tmp_params(args_array); - buff = FormatString(buff, GetStringPtr(_units[_settings_game.locale.units].l_weight), &tmp_params, last); + buff = FormatString(buff, GetStringPtr(_units_weight[_settings_game.locale.units_weight].l), &tmp_params, last); break; } @@ -1479,7 +1472,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; @@ -1688,12 +1681,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(); } @@ -1753,7 +1740,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; @@ -1955,7 +1947,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?)"); @@ -2022,14 +2014,7 @@ bool MissingGlyphSearcher::FindMissingGlyphs(const char **str) FontSize size = this->DefaultSize(); if (str != NULL) *str = text; for (WChar c = Utf8Consume(&text); c != '\0'; c = Utf8Consume(&text)) { - if (c == SCC_SETX) { - /* SetX is, together with SetXY as special character that - * uses the next (two) characters as data points. We have - * to skip those, otherwise the UTF8 reading will go haywire. */ - text++; - } else if (c == SCC_SETXY) { - text += 2; - } else if (c == SCC_TINYFONT) { + if (c == SCC_TINYFONT) { size = FS_SMALL; } else if (c == SCC_BIGFONT) { size = FS_LARGE; @@ -2062,12 +2047,12 @@ class LanguagePackGlyphSearcher : public MissingGlyphSearcher { { if (this->i >= TAB_COUNT) return NULL; - const char *ret = _langpack_offs[_langtab_start[i] + j]; + const char *ret = _langpack_offs[_langtab_start[this->i] + this->j]; this->j++; - while (this->j >= _langtab_num[this->i] && this->i < TAB_COUNT) { - i++; - j = 0; + while (this->i < TAB_COUNT && this->j >= _langtab_num[this->i]) { + this->i++; + this->j = 0; } return ret; @@ -2081,9 +2066,9 @@ class LanguagePackGlyphSearcher : public MissingGlyphSearcher { /* virtual */ void SetFontNames(FreeTypeSettings *settings, const char *font_name) { #ifdef WITH_FREETYPE - strecpy(settings->small_font, font_name, lastof(settings->small_font)); - strecpy(settings->medium_font, font_name, lastof(settings->medium_font)); - strecpy(settings->large_font, font_name, lastof(settings->large_font)); + strecpy(settings->small.font, font_name, lastof(settings->small.font)); + strecpy(settings->medium.font, font_name, lastof(settings->medium.font)); + strecpy(settings->large.font, font_name, lastof(settings->large.font)); #endif /* WITH_FREETYPE */ } }; @@ -2129,10 +2114,10 @@ void CheckForMissingGlyphs(bool base_font, MissingGlyphSearcher *searcher) if (bad_font) { /* All attempts have failed. Display an error. As we do not want the string to be translated by * the translators, we 'force' it into the binary and 'load' it via a BindCString. To do this - * properly we have to set the colour of the string, otherwise we end up with a lot of artefacts. + * 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); @@ -2153,14 +2138,14 @@ void CheckForMissingGlyphs(bool base_font, MissingGlyphSearcher *searcher) * be translated by the translators, we 'force' it into the * binary and 'load' it via a BindCString. To do this * properly we have to set the colour of the string, - * otherwise we end up with a lot of artefacts. The colour + * 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. */ 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 f977b3b3c..2c7809d02 100644 --- a/src/strings_func.h +++ b/src/strings_func.h @@ -56,7 +56,7 @@ class StringParameters { 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 @@ class StringParameters { 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 @@ class StringParameters { }; 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); @@ -155,8 +160,8 @@ static inline void SetDParam(uint n, uint64 v) _global_string_params.SetParam(n, v); } -void SetDParamMaxValue(uint n, uint64 max_value, uint min_count = 0); -void SetDParamMaxDigits(uint n, uint count); +void SetDParamMaxValue(uint n, uint64 max_value, uint min_count = 0, FontSize size = FS_NORMAL); +void SetDParamMaxDigits(uint n, uint count, FontSize size = FS_NORMAL); void SetDParamStr(uint n, const char *str); diff --git a/src/strings_type.h b/src/strings_type.h index 35f22e5fc..c6eebd54d 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 356d8abe8..62b463ced 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); @@ -242,7 +245,7 @@ void CreateSubsidy(CargoID cid, SourceType src_type, SourceID src, SourceType ds * - p1 = (bit 24 - 31) - CargoID of subsidy. * @param p2 various bitstuffed elements * - p2 = (bit 0 - 7) - SourceType of destination. - * - p2 = (bit 8 - 23) - SourceID of destionation. + * - p2 = (bit 8 - 23) - SourceID of destination. * @param text unused. * @return the cost of this operation or an error */ @@ -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 138ea453d..04e5ae262 100644 --- a/src/subsidy_gui.cpp +++ b/src/subsidy_gui.cpp @@ -25,14 +25,16 @@ #include "table/strings.h" +#include "safeguards.h" + struct SubsidyListWindow : Window { Scrollbar *vscroll; - SubsidyListWindow(const WindowDesc *desc, WindowNumber window_number) : Window() + SubsidyListWindow(WindowDesc *desc, WindowNumber window_number) : Window(desc) { - this->CreateNestedTree(desc); + this->CreateNestedTree(); this->vscroll = this->GetScrollbar(WID_SUL_SCROLLBAR); - this->FinishInitNested(desc, window_number); + this->FinishInitNested(window_number); this->OnInvalidateData(0); } @@ -154,7 +156,7 @@ struct SubsidyListWindow : Window { int pos = -this->vscroll->GetPosition(); const int cap = this->vscroll->GetCapacity(); - /* Section for drawing the offered subisidies */ + /* Section for drawing the offered subsidies */ if (IsInsideMM(pos, 0, cap)) DrawString(x, right, y + pos * FONT_HEIGHT_NORMAL, STR_SUBSIDIES_OFFERED_TITLE); pos++; @@ -178,7 +180,7 @@ struct SubsidyListWindow : Window { pos++; } - /* Section for drawing the already granted subisidies */ + /* Section for drawing the already granted subsidies */ pos++; if (IsInsideMM(pos, 0, cap)) DrawString(x, right, y + pos * FONT_HEIGHT_NORMAL, STR_SUBSIDIES_SUBSIDISED_TITLE); pos++; @@ -227,6 +229,7 @@ static const NWidgetPart _nested_subsidies_list_widgets[] = { NWidget(WWT_CLOSEBOX, COLOUR_BROWN), NWidget(WWT_CAPTION, COLOUR_BROWN), SetDataTip(STR_SUBSIDIES_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), NWidget(WWT_SHADEBOX, COLOUR_BROWN), + NWidget(WWT_DEFSIZEBOX, COLOUR_BROWN), NWidget(WWT_STICKYBOX, COLOUR_BROWN), EndContainer(), NWidget(NWID_HORIZONTAL), @@ -238,8 +241,8 @@ static const NWidgetPart _nested_subsidies_list_widgets[] = { EndContainer(), }; -static const WindowDesc _subsidies_list_desc( - WDP_AUTO, 500, 127, +static WindowDesc _subsidies_list_desc( + WDP_AUTO, "list_subsidies", 500, 127, WC_SUBSIDIES_LIST, WC_NONE, 0, _nested_subsidies_list_widgets, lengthof(_nested_subsidies_list_widgets) diff --git a/src/table/animcursors.h b/src/table/animcursors.h index 14d22b7ef..08a90757a 100644 --- a/src/table/animcursors.h +++ b/src/table/animcursors.h @@ -30,7 +30,7 @@ #define ANIM_CURSOR_END() ANIM_CURSOR_LINE(AnimCursor::LAST, 0) /** - * Animated cursor elements for demolishion + * Animated cursor elements for demolition */ static const AnimCursor _demolish_animcursor[] = { ANIM_CURSOR_LINE(SPR_CURSOR_DEMOLISH_FIRST, 8) diff --git a/src/table/bridge_land.h b/src/table/bridge_land.h index f1ff8b415..4f6f94bb0 100644 --- a/src/table/bridge_land.h +++ b/src/table/bridge_land.h @@ -13,7 +13,7 @@ *
    • _bridge_sprite_table_n_m. Defines all the sprites of a bridge besides the pylons. * n defines the number of the bridge type, m the number of the section. the highest m for * each bridge set defines the heads.
      - * Sprites for middle secionts are arranged in groups of four, the elements are: + * Sprites for middle sections are arranged in groups of four, the elements are: *
      1. Element containing the track. This element is logically behind the vehicle.
      2. *
      3. Element containing the structure that is logically between the vehicle and the camera
      4. *
      5. Element containing the pylons.
      @@ -729,7 +729,7 @@ static const PalSpriteID * const * const _bridge_sprite_table[MAX_BRIDGES] = { /** * Describes the data that defines each bridge in the game - * @param y year of availablity + * @param y year of availability * @param mnl minimum length (not counting bridge heads) * @param mxl maximum length (not counting bridge heads) * @param p price multiplier @@ -745,7 +745,7 @@ static const PalSpriteID * const * const _bridge_sprite_table[MAX_BRIDGES] = { const BridgeSpec _orig_bridge[] = { /* - year of availablity + year of availability | minimum length | | maximum length | | | price multiplier diff --git a/src/table/build_industry.h b/src/table/build_industry.h index bcb6e28ec..9c9a28d48 100644 --- a/src/table/build_industry.h +++ b/src/table/build_industry.h @@ -1171,7 +1171,7 @@ enum IndustryTypes { * @param a3 accepted cargo 3 * @param im3 input multiplier for cargo 3 * @param pr industry life (actually, the same as extractive, organic, processing in ttdpatch's specs) - * @param clim climate availaility + * @param clim climate availability * @param bev industry behaviour * @param in name * @param intx text while building diff --git a/src/table/company_settings.ini b/src/table/company_settings.ini index 932cd6b58..71b95cc39 100644 --- a/src/table/company_settings.ini +++ b/src/table/company_settings.ini @@ -9,6 +9,10 @@ [pre-amble] static bool CheckInterval(int32 p1); static bool InvalidateDetailsWindow(int32 p1); +static bool UpdateIntervalTrains(int32 p1); +static bool UpdateIntervalRoadVeh(int32 p1); +static bool UpdateIntervalShips(int32 p1); +static bool UpdateIntervalAircraft(int32 p1); static const SettingDesc _company_settings[] = { [post-amble] @@ -88,7 +92,7 @@ max = 800 str = STR_CONFIG_SETTING_SERVINT_TRAINS strhelp = STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT strval = STR_CONFIG_SETTING_SERVINT_VALUE -proc = InvalidateDetailsWindow +proc = UpdateIntervalTrains [SDT_VAR] base = CompanySettings @@ -101,7 +105,7 @@ max = 800 str = STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES strhelp = STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES_HELPTEXT strval = STR_CONFIG_SETTING_SERVINT_VALUE -proc = InvalidateDetailsWindow +proc = UpdateIntervalRoadVeh [SDT_VAR] base = CompanySettings @@ -114,7 +118,7 @@ max = 800 str = STR_CONFIG_SETTING_SERVINT_SHIPS strhelp = STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT strval = STR_CONFIG_SETTING_SERVINT_VALUE -proc = InvalidateDetailsWindow +proc = UpdateIntervalShips [SDT_VAR] base = CompanySettings @@ -127,7 +131,7 @@ max = 800 str = STR_CONFIG_SETTING_SERVINT_AIRCRAFT strhelp = STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT strval = STR_CONFIG_SETTING_SERVINT_VALUE -proc = InvalidateDetailsWindow +proc = UpdateIntervalAircraft [SDT_END] diff --git a/src/table/control_codes.h b/src/table/control_codes.h index 50233d5f6..81f9950d5 100644 --- a/src/table/control_codes.h +++ b/src/table/control_codes.h @@ -27,8 +27,6 @@ enum StringControlCode { SCC_ENCODED = SCC_CONTROL_START, /* Display control codes */ - SCC_SETX, - SCC_SETXY, SCC_TINYFONT, ///< Switch to small font SCC_BIGFONT, ///< Switch to large font @@ -87,7 +85,6 @@ enum StringControlCode { SCC_HEX, SCC_BYTES, - SCC_STRING_ID, SCC_RAW_STRING_POINTER, SCC_PLURAL_LIST, SCC_GENDER_LIST, @@ -143,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/elrail_data.h b/src/table/elrail_data.h index 9ded0c3ef..156f0e941 100644 --- a/src/table/elrail_data.h +++ b/src/table/elrail_data.h @@ -117,7 +117,7 @@ static const byte PreferredPPPofTrackAtPCP[TRACK_END][DIAGDIR_END] = { #define NUM_IGNORE_GROUPS 3 #define IGNORE_NONE 0xFF /** - * In case we have a staight line, we place pylon only every two tiles, + * In case we have a straight line, we place pylon only every two tiles, * so there are certain tiles which we ignore. A straight line is found if * we have exactly two PPPs. */ @@ -195,7 +195,7 @@ static const byte IgnoredPCP[NUM_IGNORE_GROUPS][TLG_END][DIAGDIR_END] = { #undef NO_IGNORE -/** Which pylons can definately NOT be built */ +/** Which pylons can definitely NOT be built */ static const byte DisallowedPPPofTrackAtPCP[TRACK_END][DIAGDIR_END] = { {1 << DIR_SW | 1 << DIR_NE, 0, 1 << DIR_SW | 1 << DIR_NE, 0 }, // X {0, 1 << DIR_NW | 1 << DIR_SE, 0, 1 << DIR_NW | 1 << DIR_SE}, // Y diff --git a/src/table/engines.h b/src/table/engines.h index 102d8d79c..b79733c7a 100644 --- a/src/table/engines.h +++ b/src/table/engines.h @@ -580,8 +580,8 @@ static const ShipVehicleInfo _orig_ship_vehicle_info[] = { * @param c running_Cost * @param d subtype (bit 0 - plane, bit 1 - large plane) * @param e sound effect - * @param f acceleration - * @param g max_speed (1 unit = 8 mph = 12.8 km-ish/h) + * @param f acceleration (1 unit = 3/8 mph/tick = 3/5 km-ish/h/tick) (stays the same in the variable) + * @param g max_speed (1 unit = 8 mph = 12.8 km-ish/h) (is converted to km-ish/h by the macro) * @param h mail_capacity (bags) * @param i passenger_capacity (persons) */ diff --git a/src/table/gameopt_settings.ini b/src/table/gameopt_settings.ini index 8f7861942..3a47c09e3 100644 --- a/src/table/gameopt_settings.ini +++ b/src/table/gameopt_settings.ini @@ -10,6 +10,7 @@ static const uint GAME_DIFFICULTY_NUM = 18; static uint16 _old_diff_custom[GAME_DIFFICULTY_NUM]; uint8 _old_diff_level; ///< Old difficulty level from old savegames +uint8 _old_units; ///< Old units from old savegames /* Most of these strings are used both for gameopt-backward compatability * and the settings tables. The rest is here for consistency. */ @@ -28,15 +29,15 @@ 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] @@ -44,6 +45,7 @@ SDTG_GENERAL = SDTG_GENERAL($name, $sdt_cmd, $sle_cmd, $type, $flags, $guiflags, 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), SDT_END = SDT_END() @@ -108,15 +110,15 @@ var = locale.currency type = SLE_UINT8 flags = SLF_NO_NETWORK_SYNC def = 0 -max = CUSTOM_CURRENCY_ID +max = CURRENCY_END - 1 full = _locale_currencies cat = SC_BASIC -[SDT_OMANY] -base = GameSettings -var = locale.units +[SDTG_OMANY] +name = ""units"" +var = _old_units type = SLE_UINT8 -flags = SLF_NO_NETWORK_SYNC +flags = SLF_NOT_IN_CONFIG def = 1 max = 2 full = _locale_units diff --git a/src/table/landscape_sprite.h b/src/table/landscape_sprite.h index 7058ee033..ceadd3e58 100644 --- a/src/table/landscape_sprite.h +++ b/src/table/landscape_sprite.h @@ -12,134 +12,134 @@ static const SpriteID END = 0xFFFF; static const SpriteID _landscape_spriteindexes_arctic[] = { - 0xF67, 0xF9F, - 0xAAD, 0xAB0, - 0x83A, 0x845, - 0xFA0, 0xFC9, - 0x43F, 0x45E, - 0x566, 0x56D, - 0x945, 0x94C, - 0x3ED, 0x40C, - 0x515, 0x51C, - 0x55A, 0x561, - 0x534, 0x546, - 0x93D, 0x944, - 0x955, 0x95C, - 0xFDD, 0xFEC, - 0x87D, 0x883, - 0xA2B, 0xA39, - 0x497, 0x4B0, - 0x572, 0x575, - 0x94D, 0x954, - 0x818, 0x81D, - 0x3DE, 0x3EB, -0x1212, 0x1212, -END + 0xF67, 0xF9F, + 0xAAD, 0xAB0, + 0x83A, 0x845, + 0xFA0, 0xFC9, + 0x43F, 0x45E, + 0x566, 0x56D, + 0x945, 0x94C, + 0x3ED, 0x40C, + 0x515, 0x51C, + 0x55A, 0x561, + 0x534, 0x546, + 0x93D, 0x944, + 0x955, 0x95C, + 0xFDD, 0xFEC, + 0x87D, 0x883, + 0xA2B, 0xA39, + 0x497, 0x4B0, + 0x572, 0x575, + 0x94D, 0x954, + 0x818, 0x81D, + 0x3DE, 0x3EB, + 0x1212, 0x1212, + END }; static const SpriteID _landscape_spriteindexes_tropic[] = { - 0xF67, 0xF9F, - 0xAAD, 0xAB0, - 0xFA0, 0xFC9, - 0x43F, 0x45E, - 0x566, 0x56D, - 0x945, 0x94C, - 0x3ED, 0x40C, - 0x515, 0x51C, - 0x55A, 0x561, - 0x547, 0x559, - 0x93D, 0x944, - 0x955, 0x95C, - 0xFDD, 0xFEC, - 0x87D, 0x883, - 0xA2B, 0xA39, - 0x497, 0x4B0, - 0x572, 0x575, - 0x94D, 0x954, - 0x5AE, 0x5AF, -0x118D, 0x11D8, - 0x534, 0x546, - 0x40D, 0x426, - 0x45F, 0x478, - 0x4B1, 0x4CA, - 0x95D, 0x97C, - 0x3DE, 0x3EB, - 0x562, 0x565, - 0x56E, 0x571, - 0x57A, 0x57D, - 0x83A, 0x845, - 0xFF5, 0xFF5, - 0xFF8, 0xFF8, -0x1212, 0x1212, -END + 0xF67, 0xF9F, + 0xAAD, 0xAB0, + 0xFA0, 0xFC9, + 0x43F, 0x45E, + 0x566, 0x56D, + 0x945, 0x94C, + 0x3ED, 0x40C, + 0x515, 0x51C, + 0x55A, 0x561, + 0x547, 0x559, + 0x93D, 0x944, + 0x955, 0x95C, + 0xFDD, 0xFEC, + 0x87D, 0x883, + 0xA2B, 0xA39, + 0x497, 0x4B0, + 0x572, 0x575, + 0x94D, 0x954, + 0x5AE, 0x5AF, + 0x118D, 0x11D8, + 0x534, 0x546, + 0x40D, 0x426, + 0x45F, 0x478, + 0x4B1, 0x4CA, + 0x95D, 0x97C, + 0x3DE, 0x3EB, + 0x562, 0x565, + 0x56E, 0x571, + 0x57A, 0x57D, + 0x83A, 0x845, + 0xFF5, 0xFF5, + 0xFF8, 0xFF8, + 0x1212, 0x1212, + END }; static const SpriteID _landscape_spriteindexes_toyland[] = { - 0xF54, 0xF9F, - 0xFDD, 0xFE5, - 0xFEC, 0xFEC, - 0xFA0, 0xFC9, - 0x818, 0x81D, - 0x521, 0x546, - 0x57E, 0x57F, - 0x3ED, 0x40C, - 0x43F, 0x45E, - 0x491, 0x4B0, - 0xA48, 0xA48, - 0x4FB, 0x50A, - 0x55A, 0x561, - 0x566, 0x56D, - 0x572, 0x579, - 0x427, 0x42C, - 0x479, 0x47E, - 0x4CB, 0x4D0, - 0x4EF, 0x4FA, - 0xE9D, 0xECC, - 0xF3D, 0xF40, - 0xB59, 0xB60, - 0xE5D, 0xE6C, - 0xA49, 0xA59, - 0xA63, 0xA68, - 0xA5A, 0xA62, - 0xA78, 0xA83, - 0xA69, 0xA77, - 0xA84, 0xAA3, - 0xAA7, 0xAAC, - 0xA2B, 0xA47, - 0x3DE, 0x3EB, - 0x47F, 0x488, - 0x4D1, 0x4DA, - 0x42D, 0x436, - 0x515, 0x51C, - 0x580, 0x585, - 0xC14, 0xCB3, - 0xAAD, 0xAB0, - 0xAB5, 0xB00, - 0xB69, 0xB70, - 0xB61, 0xB68, - 0xBC9, 0xBD0, - 0xBD9, 0xBE0, - 0xBA9, 0xBB0, - 0xBC1, 0xBC4, - 0x2D0, 0x2D0, - 0xAA5, 0xAA6, - 0x50F, 0x50F, - 0x2EA, 0x2EA, - 0x2ED, 0x2EE, - 0x512, 0x513, - 0x4EB, 0x4EE, - 0x4E7, 0x4EA, - 0x985, 0xA28, -0x10E4, 0x1133, - 0x93D, 0x95C, - 0x97D, 0x984, - 0x7DA, 0x7DA, - 0x2E6, 0x2E6, - 0x1, 0x1, - 0xE54, 0xE54, - 0x51F, 0x520, - 0x514, 0x514, - 0x511, 0x511, - 0x322, 0x322, -END + 0xF54, 0xF9F, + 0xFDD, 0xFE5, + 0xFEC, 0xFEC, + 0xFA0, 0xFC9, + 0x818, 0x81D, + 0x521, 0x546, + 0x57E, 0x57F, + 0x3ED, 0x40C, + 0x43F, 0x45E, + 0x491, 0x4B0, + 0xA48, 0xA48, + 0x4FB, 0x50A, + 0x55A, 0x561, + 0x566, 0x56D, + 0x572, 0x579, + 0x427, 0x42C, + 0x479, 0x47E, + 0x4CB, 0x4D0, + 0x4EF, 0x4FA, + 0xE9D, 0xECC, + 0xF3D, 0xF40, + 0xB59, 0xB60, + 0xE5D, 0xE6C, + 0xA49, 0xA59, + 0xA63, 0xA68, + 0xA5A, 0xA62, + 0xA78, 0xA83, + 0xA69, 0xA77, + 0xA84, 0xAA3, + 0xAA7, 0xAAC, + 0xA2B, 0xA47, + 0x3DE, 0x3EB, + 0x47F, 0x488, + 0x4D1, 0x4DA, + 0x42D, 0x436, + 0x515, 0x51C, + 0x580, 0x585, + 0xC14, 0xCB3, + 0xAAD, 0xAB0, + 0xAB5, 0xB00, + 0xB69, 0xB70, + 0xB61, 0xB68, + 0xBC9, 0xBD0, + 0xBD9, 0xBE0, + 0xBA9, 0xBB0, + 0xBC1, 0xBC4, + 0x2D0, 0x2D0, + 0xAA5, 0xAA6, + 0x50F, 0x50F, + 0x2EA, 0x2EA, + 0x2ED, 0x2EE, + 0x512, 0x513, + 0x4EB, 0x4EE, + 0x4E7, 0x4EA, + 0x985, 0xA28, + 0x10E4, 0x1133, + 0x93D, 0x95C, + 0x97D, 0x984, + 0x7DA, 0x7DA, + 0x2E6, 0x2E6, + 0x1, 0x1, + 0xE54, 0xE54, + 0x51F, 0x520, + 0x514, 0x514, + 0x511, 0x511, + 0x322, 0x322, + END }; diff --git a/src/table/misc_settings.ini b/src/table/misc_settings.ini index 6d9e7bbea..474c9b981 100644 --- a/src/table/misc_settings.ini +++ b/src/table/misc_settings.ini @@ -9,12 +9,15 @@ [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_OMANY = SDTG_OMANY($name, $type, $flags, $guiflags, $var, $def, $max, $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), @@ -48,6 +51,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 @@ -135,36 +147,36 @@ def = false ifdef = WITH_FREETYPE name = ""small_font"" type = SLE_STRB -var = _freetype.small_font +var = _freetype.small.font def = NULL [SDTG_STR] ifdef = WITH_FREETYPE name = ""medium_font"" type = SLE_STRB -var = _freetype.medium_font +var = _freetype.medium.font def = NULL [SDTG_STR] ifdef = WITH_FREETYPE name = ""large_font"" type = SLE_STRB -var = _freetype.large_font +var = _freetype.large.font def = NULL [SDTG_STR] ifdef = WITH_FREETYPE name = ""mono_font"" type = SLE_STRB -var = _freetype.mono_font +var = _freetype.mono.font def = NULL [SDTG_VAR] ifdef = WITH_FREETYPE name = ""small_size"" type = SLE_UINT -var = _freetype.small_size -def = 8 +var = _freetype.small.size +def = 0 min = 0 max = 72 @@ -172,8 +184,8 @@ max = 72 ifdef = WITH_FREETYPE name = ""medium_size"" type = SLE_UINT -var = _freetype.medium_size -def = 10 +var = _freetype.medium.size +def = 0 min = 0 max = 72 @@ -181,8 +193,8 @@ max = 72 ifdef = WITH_FREETYPE name = ""large_size"" type = SLE_UINT -var = _freetype.large_size -def = 16 +var = _freetype.large.size +def = 0 min = 0 max = 72 @@ -190,33 +202,33 @@ max = 72 ifdef = WITH_FREETYPE name = ""mono_size"" type = SLE_UINT -var = _freetype.mono_size -def = 10 +var = _freetype.mono.size +def = 0 min = 0 max = 72 [SDTG_BOOL] ifdef = WITH_FREETYPE name = ""small_aa"" -var = _freetype.small_aa +var = _freetype.small.aa def = false [SDTG_BOOL] ifdef = WITH_FREETYPE name = ""medium_aa"" -var = _freetype.medium_aa +var = _freetype.medium.aa def = false [SDTG_BOOL] ifdef = WITH_FREETYPE name = ""large_aa"" -var = _freetype.large_aa +var = _freetype.large.aa def = false [SDTG_BOOL] ifdef = WITH_FREETYPE name = ""mono_aa"" -var = _freetype.mono_aa +var = _freetype.mono.aa def = false [SDTG_VAR] diff --git a/src/table/newgrf_debug_data.h b/src/table/newgrf_debug_data.h index 2f02b1404..4814ae50c 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(0x4A, "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 3c7ac1bc0..035b1ee8e 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, 0xFFFFFFFF, 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 | OBJECT_FLAG_ALLOW_UNDER_BRIDGE), - 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/settings.h.preamble b/src/table/settings.h.preamble index 75e93e26f..33345bb71 100644 --- a/src/table/settings.h.preamble +++ b/src/table/settings.h.preamble @@ -20,14 +20,24 @@ static size_t ConvertLandscape(const char *value); /** * Settings-macro usage: * The list might look daunting at first, but is in general easy to understand. - * We have two types of list: + * The macros can be grouped depending on where the config variable is + * stored: * 1. SDTG_something - * 2. SDT_something - * The 'G' stands for global, so this is the one you will use for a - * SettingDescGlobVarList section meaning global variables. The other uses a - * Base/Offset and runtime variable selection mechanism, known from the saveload - * convention (it also has global so it should not be hard). - * Now there are a lot of types. Easy ones are: + * These are for global variables, so this is the one you will use + * for a #SettingDescGlobVarList section. Here 'var' refers to a + * global variable. + * 2. SDTC_something + * These are for client-only variables. Here the 'var' refers to an + * entry inside _settings_client. + * 3. SDT_something + * Thse are for members in the struct described by the current + * #SettingDesc list / .ini file. Here, 'base' specifies type of the + * struct while 'var' points out the member of the struct (the actual + * struct to store it in is implicitely defined by the #SettingDesc + * list / .ini file preamble the entry is in). + * + * The something part defines the type of variable to store. There are a + * lot of types. Easy ones are: * - VAR: any number type, 'type' field specifies what number. eg int8 or uint32 * - BOOL: a boolean number type * - STR: a string or character. 'type' field specifies what string. Normal, string, or quoted diff --git a/src/table/settings.ini b/src/table/settings.ini index d1c1a1eb4..5d620afd8 100644 --- a/src/table/settings.ini +++ b/src/table/settings.ini @@ -13,7 +13,7 @@ static bool v_PositionStatusbar(int32 p1); static bool PopulationInLabelActive(int32 p1); static bool RedrawScreen(int32 p1); static bool RedrawSmallmap(int32 p1); -static bool InvalidateStationBuildWindow(int32 p1); +static bool StationSpreadChanged(int32 p1); static bool InvalidateBuildIndustryWindow(int32 p1); static bool CloseSignalGUI(int32 p1); static bool InvalidateTownViewWindow(int32 p1); @@ -38,6 +38,7 @@ static bool InvalidateIndustryViewWindow(int32 p1); static bool InvalidateAISettingsWindow(int32 p1); static bool RedrawTownAuthority(int32 p1); static bool InvalidateCompanyInfrastructureWindow(int32 p1); +static bool InvalidateCompanyWindow(int32 p1); static bool ZoomMinMaxChanged(int32 p1); #ifdef ENABLE_NETWORK @@ -63,6 +64,7 @@ const SettingDesc _settings[] = { [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), @@ -73,7 +75,6 @@ SDT_OMANY = SDT_OMANY($base, $var, $type, $flags, $guiflags, $def, 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_VAR = SDTG_VAR($name, $type, $flags, $guiflags, $var, $def, $min, $max, $interval, $str, $strhelp, $strval, $proc, $from, $to, $cat), SDT_END = SDT_END() [defaults] @@ -128,11 +129,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 @@ -249,11 +252,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 interval = 1 +str = STR_CONFIG_SETTING_TERRAIN_TYPE +strhelp = STR_CONFIG_SETTING_TERRAIN_TYPE_HELPTEXT strval = STR_TERRAIN_TYPE_VERY_FLAT cat = SC_BASIC @@ -340,11 +345,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) @@ -358,10 +366,13 @@ 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 @@ -371,8 +382,6 @@ 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] @@ -479,7 +488,7 @@ 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 @@ -493,7 +502,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 @@ -575,6 +584,142 @@ def = true str = STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS strhelp = STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS_HELPTEXT +; link graph + +[SDT_VAR] +base = GameSettings +var = linkgraph.recalc_interval +type = SLE_UINT16 +from = 183 +def = 4 +min = 2 +max = 32 +interval = 2 +str = STR_CONFIG_SETTING_LINKGRAPH_INTERVAL +strval = STR_JUST_COMMA +strhelp = STR_CONFIG_SETTING_LINKGRAPH_INTERVAL_HELPTEXT + +[SDT_VAR] +base = GameSettings +var = linkgraph.recalc_time +type = SLE_UINT16 +from = 183 +def = 16 +min = 1 +max = 4096 +interval = 1 +str = STR_CONFIG_SETTING_LINKGRAPH_TIME +strval = STR_JUST_COMMA +strhelp = STR_CONFIG_SETTING_LINKGRAPH_TIME_HELPTEXT + +[SDT_VAR] +base = GameSettings +var = linkgraph.distribution_pax +type = SLE_UINT8 +from = 183 +guiflags = SGF_MULTISTRING +def = DT_MANUAL +min = DT_MIN +max = DT_MAX +interval = 1 +str = STR_CONFIG_SETTING_DISTRIBUTION_PAX +strval = STR_CONFIG_SETTING_DISTRIBUTION_MANUAL +strhelp = STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT + +[SDT_VAR] +base = GameSettings +var = linkgraph.distribution_mail +type = SLE_UINT8 +from = 183 +guiflags = SGF_MULTISTRING +def = DT_MANUAL +min = DT_MIN +max = DT_MAX +interval = 1 +str = STR_CONFIG_SETTING_DISTRIBUTION_MAIL +strval = STR_CONFIG_SETTING_DISTRIBUTION_MANUAL +strhelp = STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT + +[SDT_VAR] +base = GameSettings +var = linkgraph.distribution_armoured +type = SLE_UINT8 +from = 183 +guiflags = SGF_MULTISTRING +def = DT_MANUAL +min = DT_MIN +max = DT_MAX +interval = 1 +str = STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED +strval = STR_CONFIG_SETTING_DISTRIBUTION_MANUAL +strhelp = STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT + +[SDT_VAR] +base = GameSettings +var = linkgraph.distribution_default +type = SLE_UINT8 +from = 183 +guiflags = SGF_MULTISTRING +def = DT_MANUAL +min = DT_BEGIN +max = DT_MAX_NONSYMMETRIC +interval = 1 +str = STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT +strval = STR_CONFIG_SETTING_DISTRIBUTION_MANUAL +strhelp = STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT + +[SDT_VAR] +base = GameSettings +var = linkgraph.accuracy +type = SLE_UINT8 +from = 183 +def = 16 +min = 2 +max = 64 +interval = 1 +str = STR_CONFIG_SETTING_LINKGRAPH_ACCURACY +strval = STR_JUST_COMMA +strhelp = STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT + +[SDT_VAR] +base = GameSettings +var = linkgraph.demand_distance +type = SLE_UINT8 +from = 183 +def = 100 +min = 0 +max = 255 +interval = 5 +str = STR_CONFIG_SETTING_DEMAND_DISTANCE +strval = STR_CONFIG_SETTING_PERCENTAGE +strhelp = STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT + +[SDT_VAR] +base = GameSettings +var = linkgraph.demand_size +type = SLE_UINT8 +from = 183 +def = 100 +min = 0 +max = 100 +interval = 5 +str = STR_CONFIG_SETTING_DEMAND_SIZE +strval = STR_CONFIG_SETTING_PERCENTAGE +strhelp = STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT + +[SDT_VAR] +base = GameSettings +var = linkgraph.short_path_saturation +type = SLE_UINT8 +from = 183 +def = 80 +min = 0 +max = 250 +interval = 5 +str = STR_CONFIG_SETTING_SHORT_PATH_SATURATION +strval = STR_CONFIG_SETTING_PERCENTAGE +strhelp = STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT + ; Vehicles [SDT_VAR] @@ -687,8 +832,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] @@ -942,8 +1085,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 @@ -978,16 +1119,20 @@ 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 + +[SDT_BOOL] +base = GameSettings +var = order.automatic_timetable_separation +from = SL_TTSEP_VER +def = true +str = STR_CONFIG_SETTING_TIMETABLE_ENABLE_SEPARATION [SDTC_BOOL] var = gui.sg_new_nonstop @@ -1010,7 +1155,7 @@ max = 64 str = STR_CONFIG_SETTING_STATION_SPREAD strhelp = STR_CONFIG_SETTING_STATION_SPREAD_HELPTEXT strval = STR_CONFIG_SETTING_TILE_LENGTH -proc = InvalidateStationBuildWindow +proc = StationSpreadChanged cat = SC_BASIC [SDT_BOOL] @@ -1036,8 +1181,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] @@ -1063,8 +1206,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] @@ -1185,10 +1326,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 @@ -1227,6 +1370,7 @@ var = economy.allow_shares def = false str = STR_CONFIG_SETTING_ALLOW_SHARES strhelp = STR_CONFIG_SETTING_ALLOW_SHARES_HELPTEXT +proc = InvalidateCompanyWindow [SDT_VAR] base = GameSettings @@ -1286,8 +1430,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. @@ -1983,11 +2125,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] @@ -2007,11 +2150,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 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 @@ -2020,9 +2164,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 @@ -2039,11 +2187,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] @@ -2097,8 +2246,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 @@ -2170,9 +2317,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 @@ -2183,22 +2334,119 @@ type = SLE_UINT8 from = 97 flags = SLF_NO_NETWORK_SYNC def = 0 -max = CUSTOM_CURRENCY_ID +max = CURRENCY_END - 1 full = _locale_currencies proc = RedrawScreen cat = SC_BASIC +[SDTG_OMANY] +name = ""units"" +var = _old_units +type = SLE_UINT8 +from = 97 +to = 183 +flags = SLF_NOT_IN_CONFIG +def = 1 +max = 2 +full = _locale_units +proc = RedrawScreen +cat = SC_BASIC + [SDT_OMANY] base = GameSettings -var = locale.units +var = locale.units_velocity type = SLE_UINT8 -from = 97 +from = 184 flags = SLF_NO_NETWORK_SYNC +guiflags = SGF_MULTISTRING def = 1 max = 2 full = _locale_units proc = RedrawScreen cat = SC_BASIC +str = STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY +strhelp = STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_HELPTEXT +strval = STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_IMPERIAL + +[SDT_OMANY] +base = GameSettings +var = locale.units_power +type = SLE_UINT8 +from = 184 +flags = SLF_NO_NETWORK_SYNC +guiflags = SGF_MULTISTRING +def = 1 +max = 2 +full = _locale_units +proc = RedrawScreen +cat = SC_BASIC +str = STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER +strhelp = STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_HELPTEXT +strval = STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_IMPERIAL + +[SDT_OMANY] +base = GameSettings +var = locale.units_weight +type = SLE_UINT8 +from = 184 +flags = SLF_NO_NETWORK_SYNC +guiflags = SGF_MULTISTRING +def = 1 +max = 2 +full = _locale_units +proc = RedrawScreen +cat = SC_BASIC +str = STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT +strhelp = STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_HELPTEXT +strval = STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_IMPERIAL + +[SDT_OMANY] +base = GameSettings +var = locale.units_volume +type = SLE_UINT8 +from = 184 +flags = SLF_NO_NETWORK_SYNC +guiflags = SGF_MULTISTRING +def = 1 +max = 2 +full = _locale_units +proc = RedrawScreen +cat = SC_BASIC +str = STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME +strhelp = STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_HELPTEXT +strval = STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_IMPERIAL + +[SDT_OMANY] +base = GameSettings +var = locale.units_force +type = SLE_UINT8 +from = 184 +flags = SLF_NO_NETWORK_SYNC +guiflags = SGF_MULTISTRING +def = 2 +max = 2 +full = _locale_units +proc = RedrawScreen +cat = SC_BASIC +str = STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE +strhelp = STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_HELPTEXT +strval = STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_IMPERIAL + +[SDT_OMANY] +base = GameSettings +var = locale.units_height +type = SLE_UINT8 +from = 184 +flags = SLF_NO_NETWORK_SYNC +guiflags = SGF_MULTISTRING +def = 1 +max = 2 +full = _locale_units +proc = RedrawScreen +cat = SC_BASIC +str = STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT +strhelp = STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_HELPTEXT +strval = STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL [SDT_STR] base = GameSettings @@ -2238,9 +2486,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] @@ -2806,6 +3058,33 @@ str = STR_CONFIG_SETTING_EXPENSES_LAYOUT strhelp = STR_CONFIG_SETTING_EXPENSES_LAYOUT_HELPTEXT proc = RedrawScreen +[SDTC_VAR] +var = gui.station_gui_group_order +type = SLE_UINT8 +flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +def = 0 +min = 0 +max = 5 +interval = 1 + +[SDTC_VAR] +var = gui.station_gui_sort_by +type = SLE_UINT8 +flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +def = 0 +min = 0 +max = 3 +interval = 1 + +[SDTC_VAR] +var = gui.station_gui_sort_order +type = SLE_UINT8 +flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +def = 0 +min = 0 +max = 1 +interval = 1 + [SDTC_VAR] var = gui.missing_strings_threshold type = SLE_UINT8 @@ -2891,9 +3170,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 diff --git a/src/table/sprites.h b/src/table/sprites.h index 538888308..5d42caccb 100644 --- a/src/table/sprites.h +++ b/src/table/sprites.h @@ -9,7 +9,7 @@ /** * @file sprites.h - * This file contails all sprite-related enums and defines. These consist mainly of + * This file contains all sprite-related enums and defines. These consist mainly of * the sprite numbers and a bunch of masks and macros to handle sprites and to get * rid of all the magic numbers in the code. * @@ -26,7 +26,7 @@ * * All sprites which are described here are referenced only one to a handful of times * throughout the code. When introducing new sprite enums, use meaningful names. - * Don't be lazy and typing, and only use abbrevations when their meaning is clear or + * Don't be lazy and typing, and only use abbreviations when their meaning is clear or * the length of the enum would get out of hand. In that case EXPLAIN THE ABBREVATION * IN THIS FILE, and perhaps add some comments in the code where it is used. * Now, don't whine about this being too much typing work if the enums are like @@ -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 = 168; +static const uint16 OPENTTD_SPRITE_COUNT = 175; /* Halftile-selection sprites */ static const SpriteID SPR_HALFTILE_SELECTION_FLAT = SPR_OPENTTD_BASE; @@ -157,6 +157,10 @@ static const SpriteID SPR_IMG_SWITCH_TOOLBAR = SPR_OPENTTD_BASE + 144; static const SpriteID SPR_IMG_DELETE_LEFT = SPR_OPENTTD_BASE + 166; 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; @@ -709,14 +713,14 @@ static const SpriteID SPR_BTSGA_MGLV_Y_REAR = 4365; * TILE_* denotes the different tiles a suspension bridge * can have * TILE_A and TILE_B are the "beginnings" and "ends" of the - * suspension system. they have small rectangluar endcaps + * suspension system. They have small rectangular endcaps * TILE_C and TILE_D look almost identical to TILE_A and * TILE_B, but they do not have the "endcaps". They form the * middle part * TILE_E is a condensed configuration of two pillars. while they * are usually 2 pillars apart, they only have 1 pillar separation * here - * TILE_F is an extended configuration of pillars. they are + * TILE_F is an extended configuration of pillars. They are * plugged in when pillars should be 3 tiles apart */ static const SpriteID SPR_BTSUS_ROAD_Y_REAR_TILE_A = 2453; @@ -860,7 +864,7 @@ static const SpriteID SPR_BTGIR_MGLV_Y = 4403; * tubular bridges have 3 kinds of tiles: * a start tile (with only half a tube on the far side, marked _BEG * a middle tile (full tunnel), marked _MID - * and an end tile (half a tube on the near side, maked _END + * and an end tile (half a tube on the near side, marked _END */ static const SpriteID SPR_BTTUB_X_FRONT_BEG = 2559; static const SpriteID SPR_BTTUB_X_FRONT_MID = 2560; @@ -1086,6 +1090,7 @@ static const SpriteID SPR_IMG_MESSAGES = 680; static const SpriteID SPR_IMG_QUERY = 723; static const SpriteID SPR_IMG_SIGN = 4082; static const SpriteID SPR_IMG_BUY_LAND = 4791; +static const SpriteID SPR_IMG_STORY_BOOK = SPR_OPENTTD_BASE + 169; /* OpenTTD in gamescreen */ static const SpriteID SPR_OTTD_O = 4842; @@ -1315,6 +1320,12 @@ static const SpriteID SPR_IMG_CONVERT_ELRAIL = SPR_OPENTTD_BASE + 59; static const SpriteID SPR_IMG_CONVERT_MONO = SPR_OPENTTD_BASE + 65; static const SpriteID SPR_IMG_CONVERT_MAGLEV = SPR_OPENTTD_BASE + 71; +/* story_gui.cpp */ +static const SpriteID SPR_IMG_VIEW_LOCATION = SPR_OPENTTD_BASE + 170; +static const SpriteID SPR_IMG_GOAL = SPR_OPENTTD_BASE + 171; +static const SpriteID SPR_IMG_GOAL_COMPLETED = SPR_OPENTTD_BASE + 172; +static const SpriteID SPR_IMG_GOAL_BROKEN_REF= SPR_OPENTTD_BASE + 173; + /* intro_gui.cpp, genworld_gui.cpp */ static const SpriteID SPR_SELECT_TEMPERATE = 4882; static const SpriteID SPR_SELECT_TEMPERATE_PUSHED = 4883; diff --git a/src/table/strgen_tables.h b/src/table/strgen_tables.h index d71a46fdb..e6924e29c 100644 --- a/src/table/strgen_tables.h +++ b/src/table/strgen_tables.h @@ -40,23 +40,23 @@ static const CmdStruct _cmd_structs[] = { {"BIG_FONT", EmitSingleChar, SCC_BIGFONT, 0, C_NONE}, /* Colours */ - {"BLUE", EmitSingleChar, SCC_BLUE, 0, C_NONE}, - {"SILVER", EmitSingleChar, SCC_SILVER, 0, C_NONE}, - {"GOLD", EmitSingleChar, SCC_GOLD, 0, C_NONE}, - {"RED", EmitSingleChar, SCC_RED, 0, C_NONE}, - {"PURPLE", EmitSingleChar, SCC_PURPLE, 0, C_NONE}, - {"LTBROWN", EmitSingleChar, SCC_LTBROWN, 0, C_NONE}, - {"ORANGE", EmitSingleChar, SCC_ORANGE, 0, C_NONE}, - {"GREEN", EmitSingleChar, SCC_GREEN, 0, C_NONE}, - {"YELLOW", EmitSingleChar, SCC_YELLOW, 0, C_NONE}, - {"DKGREEN", EmitSingleChar, SCC_DKGREEN, 0, C_NONE}, - {"CREAM", EmitSingleChar, SCC_CREAM, 0, C_NONE}, - {"BROWN", EmitSingleChar, SCC_BROWN, 0, C_NONE}, - {"WHITE", EmitSingleChar, SCC_WHITE, 0, C_NONE}, - {"LTBLUE", EmitSingleChar, SCC_LTBLUE, 0, C_NONE}, - {"GRAY", EmitSingleChar, SCC_GRAY, 0, C_NONE}, - {"DKBLUE", EmitSingleChar, SCC_DKBLUE, 0, C_NONE}, - {"BLACK", EmitSingleChar, SCC_BLACK, 0, C_NONE}, + {"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 @@ -128,15 +128,10 @@ static const CmdStruct _cmd_structs[] = { {"PLANE", EmitSingleChar, SCC_PLANE, 0, C_DONTCOUNT}, {"SHIP", EmitSingleChar, SCC_SHIP, 0, C_DONTCOUNT}, {"NBSP", EmitSingleChar, 0xA0, 0, C_DONTCOUNT}, - {"CENT", EmitSingleChar, 0xA2, 0, C_DONTCOUNT}, - {"POUND_SIGN", EmitSingleChar, 0xA3, 0, C_DONTCOUNT}, - {"EURO", EmitSingleChar, 0x20AC, 0, C_DONTCOUNT}, - {"YEN_SIGN", EmitSingleChar, 0xA5, 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}, - {"REGISTERED", EmitSingleChar, 0xAE, 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}, @@ -159,12 +154,15 @@ 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\"" }, { 1, "Only one form.", "\"other\"" }, { 2, "Two forms: special case for 0 to 1.", "\"0..1\" \"other\"" }, - { 3, "Three forms: special cases for 0, and numbers ending in 1 except when ending in 11.", "\"0\" \"1,21,31,...\" \"other\"" }, + { 3, "Three forms: special cases for 0, and numbers ending in 1 except when ending in 11.", "\"1,21,31,...\" \"other\" \"0\"" }, { 5, "Five forms: special cases for 1, 2, 3 to 6, and 7 to 10.", "\"1\" \"2\" \"3..6\" \"7..10\" \"other\"" }, { 3, "Three forms: special cases for numbers ending in 1 except when ending in 11, and 2 to 9 except when ending in 12 to 19.", "\"1,21,31,...\" \"2..9,22..29,32..39,...\" \"other\"" }, { 3, "Three forms: special cases for numbers ending in 1 except when ending in 11, and 2 to 4 except when ending in 12 to 14.", "\"1,21,31,...\" \"2..4,22..24,32..34,...\" \"other\"" }, @@ -174,6 +172,7 @@ static const PluralForm _plural_forms[] = { { 3, "Three forms: special cases for 1, and 2 to 4.", "\"1\" \"2..4\" \"other\"" }, { 2, "Two forms: cases for numbers ending with a consonant, and with a vowel.", "\"yeong,il,sam,yuk,chil,pal\" \"i,sa,o,gu\"" }, { 4, "Four forms: special cases for 1, 0 and numbers ending in 02 to 10, and numbers ending in 11 to 19.", "\"1\" \"0,2..10,102..110,202..210,...\" \"11..19,111..119,211..219,...\" \"other\"" }, + { 4, "Four forms: special cases for 1 and 11, 2 and 12, 3..10 and 13..19.", "\"1,11\" \"2,12\" \"3..10,13..19\" \"other\"" }, }; /* Flags: @@ -197,7 +196,7 @@ static const char * const _pragmas[][4] = { { "plural", "tp", "0", "Plural form to use" }, { "textdir", "tl", "ltr", "Text direction. Either ltr (left-to-right) or rtl (right-to-left)" }, { "digitsep", "td", ",", "Digit grouping separator for non-currency numbers" }, - { "digitsepcur", "td", ",", "Digit grouping seprarator for currency numbers" }, + { "digitsepcur", "td", ",", "Digit grouping separator for currency numbers" }, { "decimalsep", "td", ".", "Decimal separator" }, { "winlangid", "x2", "0x0000", "Language ID for Windows" }, { "grflangid", "x1", "0x00", "Language ID for NewGRFs" }, diff --git a/src/table/town_land.h b/src/table/town_land.h index 91f37fde0..e4098334a 100644 --- a/src/table/town_land.h +++ b/src/table/town_land.h @@ -27,1766 +27,1766 @@ /** structure of houses graphics*/ static const DrawBuildingsTileStruct _town_draw_tile_data[] = { - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x58d, PAL_NONE, 0, 0, 14, 14, 8, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x58e, PAL_NONE, 0, 0, 14, 14, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x58f, PAL_NONE, 0, 0, 14, 14, 60, 0), - M( 0x590, PAL_NONE, 0x58f, PAL_NONE, 0, 0, 14, 14, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x58d, PAL_NONE, 0, 0, 14, 14, 8, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x58e, PAL_NONE, 0, 0, 14, 14, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x591, PAL_NONE, 0, 0, 14, 14, 60, 0), - M( 0x590, PAL_NONE, 0x591, PAL_NONE, 0, 0, 14, 14, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x58d, PALETTE_TO_STRUCT_WHITE, 0, 0, 14, 14, 8, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x58e, PALETTE_TO_STRUCT_WHITE, 0, 0, 14, 14, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x591, PALETTE_TO_STRUCT_WHITE, 0, 0, 14, 14, 60, 0), - M( 0x590, PAL_NONE, 0x591, PALETTE_TO_STRUCT_WHITE, 0, 0, 14, 14, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x58d, PALETTE_TO_STRUCT_CONCRETE, 0, 0, 14, 14, 8, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x58e, PALETTE_TO_STRUCT_CONCRETE, 0, 0, 14, 14, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x591, PALETTE_TO_STRUCT_CONCRETE, 0, 0, 14, 14, 60, 0), - M( 0x590, PAL_NONE, 0x591, PALETTE_TO_STRUCT_CONCRETE, 0, 0, 14, 14, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x592, PAL_NONE, 0, 0, 14, 16, 11, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x593, PAL_NONE, 0, 0, 14, 16, 33, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x594, PAL_NONE, 0, 0, 14, 16, 33, 0), - M( 0x595, PAL_NONE, 0x594, PAL_NONE, 0, 0, 14, 16, 33, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x592, PALETTE_TO_STRUCT_WHITE, 0, 0, 16, 16, 11, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x593, PALETTE_TO_STRUCT_WHITE, 0, 0, 16, 16, 33, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x594, PALETTE_TO_STRUCT_WHITE, 0, 0, 16, 16, 33, 0), - M( 0x595, PAL_NONE, 0x594, PALETTE_TO_STRUCT_WHITE, 0, 0, 16, 16, 33, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x592, PALETTE_TO_STRUCT_CONCRETE, 0, 0, 16, 16, 11, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x593, PALETTE_TO_STRUCT_CONCRETE, 0, 0, 16, 16, 33, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x594, PALETTE_TO_STRUCT_CONCRETE, 0, 0, 16, 16, 33, 0), - M( 0x595, PAL_NONE, 0x594, PALETTE_TO_STRUCT_CONCRETE, 0, 0, 16, 16, 33, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x592, PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 11, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x593, PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 33, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x594, PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 33, 0), - M( 0x595, PAL_NONE, 0x594, PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 33, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x596, PAL_NONE, 0, 0, 12, 12, 6, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x597, PAL_NONE, 0, 0, 12, 12, 17, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x598, PAL_NONE, 0, 0, 12, 12, 17, 0), - M( 0x599, PAL_NONE, 0x598, PAL_NONE, 0, 0, 12, 12, 17, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x596, PAL_NONE, 0, 0, 12, 12, 6, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x597, PAL_NONE, 0, 0, 12, 12, 17, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x598, PAL_NONE, 0, 0, 12, 12, 17, 0), - M( 0x599, PAL_NONE, 0x598, PAL_NONE, 0, 0, 12, 12, 17, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x596, PAL_NONE, 0, 0, 12, 12, 6, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x597, PAL_NONE, 0, 0, 12, 12, 17, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x598, PAL_NONE, 0, 0, 12, 12, 17, 0), - M( 0x599, PAL_NONE, 0x598, PAL_NONE, 0, 0, 12, 12, 17, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x596, PAL_NONE, 0, 0, 12, 12, 6, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x597, PAL_NONE, 0, 0, 12, 12, 17, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x598, PAL_NONE, 0, 0, 12, 12, 17, 0), - M( 0x599, PAL_NONE, 0x598, PAL_NONE, 0, 0, 12, 12, 17, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x59a, PAL_NONE, 0, 0, 14, 16, 16, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x59b, PAL_NONE, 0, 0, 14, 16, 22, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x59c, PAL_NONE, 0, 0, 14, 16, 35, 0), - M( 0x59d, PAL_NONE, 0x59c, PAL_NONE, 0, 0, 14, 16, 35, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x59a, PALETTE_CHURCH_RED, 0, 0, 14, 16, 16, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x59b, PALETTE_CHURCH_RED, 0, 0, 14, 16, 22, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x59c, PALETTE_CHURCH_RED, 0, 0, 14, 16, 35, 0), - M( 0x59d, PAL_NONE, 0x59c, PALETTE_CHURCH_RED, 0, 0, 14, 16, 35, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x59a, PALETTE_CHURCH_CREAM, 0, 0, 14, 16, 16, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x59b, PALETTE_CHURCH_CREAM, 0, 0, 14, 16, 22, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x59c, PALETTE_CHURCH_CREAM, 0, 0, 14, 16, 35, 0), - M( 0x59d, PAL_NONE, 0x59c, PALETTE_CHURCH_CREAM, 0, 0, 14, 16, 35, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x59a, PALETTE_CHURCH_CREAM, 0, 0, 14, 16, 16, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x59b, PALETTE_CHURCH_CREAM, 0, 0, 14, 16, 22, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x59c, PALETTE_CHURCH_CREAM, 0, 0, 14, 16, 35, 0), - M( 0x59d, PAL_NONE, 0x59c, PALETTE_CHURCH_CREAM, 0, 0, 14, 16, 35, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5a0, PAL_NONE, 0, 0, 15, 15, 5, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5a1, PAL_NONE, 0, 0, 15, 15, 53, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5a2, PAL_NONE, 0, 0, 15, 15, 53, 0), - M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5a2, PAL_NONE, 0, 0, 15, 15, 53, 1), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5a0, PAL_NONE, 0, 0, 15, 15, 5, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5a1, PAL_NONE, 0, 0, 15, 15, 53, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5a2, PAL_NONE, 0, 0, 15, 15, 53, 0), - M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5a2, PAL_NONE, 0, 0, 15, 15, 53, 1), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5a0, PAL_NONE, 0, 0, 15, 15, 5, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5a1, PAL_NONE, 0, 0, 15, 15, 53, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5a2, PAL_NONE, 0, 0, 15, 15, 53, 0), - M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5a2, PAL_NONE, 0, 0, 15, 15, 53, 1), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5a0, PAL_NONE, 0, 0, 15, 15, 5, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5a1, PAL_NONE, 0, 0, 15, 15, 53, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5a2, PAL_NONE, 0, 0, 15, 15, 53, 0), - M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5a2, PAL_NONE, 0, 0, 15, 15, 53, 1), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5a0, PAL_NONE, 0, 0, 15, 15, 5, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5a1, PAL_NONE, 0, 0, 15, 15, 53, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11d9, PAL_NONE, 0, 0, 15, 15, 53, 0), - M( SPR_CONCRETE_GROUND,PAL_NONE, 0x11d9, PAL_NONE, 0, 0, 15, 15, 53, 1), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5a0, PAL_NONE, 0, 0, 15, 15, 5, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5a1, PAL_NONE, 0, 0, 15, 15, 53, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11d9, PAL_NONE, 0, 0, 15, 15, 53, 0), - M( SPR_CONCRETE_GROUND,PAL_NONE, 0x11d9, PAL_NONE, 0, 0, 15, 15, 53, 1), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5a0, PAL_NONE, 0, 0, 15, 15, 5, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5a1, PAL_NONE, 0, 0, 15, 15, 53, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11d9, PAL_NONE, 0, 0, 15, 15, 53, 0), - M( SPR_CONCRETE_GROUND,PAL_NONE, 0x11d9, PAL_NONE, 0, 0, 15, 15, 53, 1), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5a0, PAL_NONE, 0, 0, 15, 15, 5, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5a1, PAL_NONE, 0, 0, 15, 15, 53, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11d9, PAL_NONE, 0, 0, 15, 15, 53, 0), - M( SPR_CONCRETE_GROUND,PAL_NONE, 0x11d9, PAL_NONE, 0, 0, 15, 15, 53, 1), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5a4, PAL_NONE, 0, 0, 16, 16, 16, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5a5, PAL_NONE, 0, 0, 16, 16, 16, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5a6, PAL_NONE, 0, 0, 16, 16, 16, 0), - M( 0x5a7, PAL_NONE, 0x5a6, PAL_NONE, 0, 0, 16, 16, 16, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5a4, PAL_NONE, 0, 0, 16, 16, 16, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5a5, PAL_NONE, 0, 0, 16, 16, 16, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5a6, PAL_NONE, 0, 0, 16, 16, 16, 0), - M( 0x5a7, PAL_NONE, 0x5a6, PAL_NONE, 0, 0, 16, 16, 16, 0), - M( 0x5dd, PAL_NONE, 0x5de, PAL_NONE, 0, 0, 16, 16, 16, 0), - M( 0x5df, PAL_NONE, 0x5e0, PAL_NONE, 0, 0, 16, 16, 16, 0), - M( 0x5e1, PAL_NONE, 0x5e2, PAL_NONE, 0, 0, 16, 16, 16, 0), - M( 0x5e1, PAL_NONE, 0x5e2, PAL_NONE, 0, 0, 16, 16, 16, 0), - M( 0x5dd, PAL_NONE, 0x5de, PAL_NONE, 0, 0, 16, 16, 16, 0), - M( 0x5df, PAL_NONE, 0x5e0, PAL_NONE, 0, 0, 16, 16, 16, 0), - M( 0x5e1, PAL_NONE, 0x5e2, PAL_NONE, 0, 0, 16, 16, 16, 0), - M( 0x5e1, PAL_NONE, 0x5e2, PAL_NONE, 0, 0, 16, 16, 16, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5a8, PAL_NONE, 0, 0, 16, 16, 15, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5a9, PAL_NONE, 0, 0, 16, 16, 38, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5aa, PAL_NONE, 0, 0, 16, 16, 45, 0), - M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5aa, PAL_NONE, 0, 0, 16, 16, 45, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5a8, PAL_NONE, 0, 0, 16, 16, 15, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5a9, PAL_NONE, 0, 0, 16, 16, 38, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5aa, PAL_NONE, 0, 0, 16, 16, 45, 0), - M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5aa, PAL_NONE, 0, 0, 16, 16, 45, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5a8, PAL_NONE, 0, 0, 16, 16, 15, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5a9, PAL_NONE, 0, 0, 16, 16, 38, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5aa, PAL_NONE, 0, 0, 16, 16, 45, 0), - M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5aa, PAL_NONE, 0, 0, 16, 16, 45, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5a8, PAL_NONE, 0, 0, 16, 16, 15, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5a9, PAL_NONE, 0, 0, 16, 16, 38, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5aa, PAL_NONE, 0, 0, 16, 16, 45, 0), - M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5aa, PAL_NONE, 0, 0, 16, 16, 45, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5ab, PAL_NONE, 0, 0, 16, 16, 15, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5ac, PAL_NONE, 0, 0, 16, 16, 38, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5ad, PAL_NONE, 0, 0, 16, 16, 45, 0), - M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5ad, PAL_NONE, 0, 0, 16, 16, 45, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5ab, PAL_NONE, 0, 0, 16, 16, 15, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5ac, PAL_NONE, 0, 0, 16, 16, 38, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5ad, PAL_NONE, 0, 0, 16, 16, 45, 0), - M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5ad, PAL_NONE, 0, 0, 16, 16, 45, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5ab, PAL_NONE, 0, 0, 16, 16, 15, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5ac, PAL_NONE, 0, 0, 16, 16, 38, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5ad, PAL_NONE, 0, 0, 16, 16, 45, 0), - M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5ad, PAL_NONE, 0, 0, 16, 16, 45, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5ab, PAL_NONE, 0, 0, 16, 16, 15, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5ac, PAL_NONE, 0, 0, 16, 16, 38, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5ad, PAL_NONE, 0, 0, 16, 16, 45, 0), - M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5ad, PAL_NONE, 0, 0, 16, 16, 45, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 6, 5, 3, 6, 8, 0), - M( SPR_CONCRETE_GROUND,PAL_NONE, 0x0, PAL_NONE, 6, 5, 3, 6, 8, 0), - M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5ae, PAL_NONE, 6, 5, 3, 6, 8, 0), - M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5ae, PAL_NONE, 6, 5, 3, 6, 8, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 6, 5, 3, 6, 8, 0), - M( SPR_CONCRETE_GROUND,PAL_NONE, 0x0, PAL_NONE, 6, 5, 3, 6, 8, 0), - M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5ae, PAL_NONE, 6, 5, 3, 6, 8, 0), - M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5ae, PAL_NONE, 6, 5, 3, 6, 8, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 6, 5, 3, 6, 8, 0), - M( SPR_CONCRETE_GROUND,PAL_NONE, 0x0, PAL_NONE, 6, 5, 3, 6, 8, 0), - M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5ae, PAL_NONE, 6, 5, 3, 6, 8, 0), - M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5ae, PAL_NONE, 6, 5, 3, 6, 8, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 6, 5, 3, 6, 8, 0), - M( SPR_CONCRETE_GROUND,PAL_NONE, 0x0, PAL_NONE, 6, 5, 3, 6, 8, 0), - M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5ae, PAL_NONE, 6, 5, 3, 6, 8, 0), - M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5ae, PAL_NONE, 6, 5, 3, 6, 8, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 3, 3, 9, 9, 8, 0), - M( SPR_CONCRETE_GROUND,PAL_NONE, 0x0, PAL_NONE, 3, 3, 9, 9, 8, 0), - M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5af, PAL_NONE, 3, 3, 9, 9, 8, 0), - M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5af, PAL_NONE, 3, 3, 9, 9, 8, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 3, 3, 9, 9, 8, 0), - M( SPR_CONCRETE_GROUND,PAL_NONE, 0x0, PAL_NONE, 3, 3, 9, 9, 8, 0), - M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5af, PAL_NONE, 3, 3, 9, 9, 8, 0), - M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5af, PAL_NONE, 3, 3, 9, 9, 8, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 3, 3, 9, 9, 8, 0), - M( SPR_CONCRETE_GROUND,PAL_NONE, 0x0, PAL_NONE, 3, 3, 9, 9, 8, 0), - M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5af, PAL_NONE, 3, 3, 9, 9, 8, 0), - M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5af, PAL_NONE, 3, 3, 9, 9, 8, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 3, 3, 9, 9, 8, 0), - M( SPR_CONCRETE_GROUND,PAL_NONE, 0x0, PAL_NONE, 3, 3, 9, 9, 8, 0), - M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5af, PAL_NONE, 3, 3, 9, 9, 8, 0), - M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5af, PAL_NONE, 3, 3, 9, 9, 8, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 15, 0), - M( SPR_FLAT_GRASS_TILE,PAL_NONE, 0x5b0, PAL_NONE, 0, 0, 16, 16, 15, 0), - M( SPR_FLAT_GRASS_TILE,PAL_NONE, 0x5b0, PAL_NONE, 0, 0, 16, 16, 15, 0), - M( SPR_FLAT_GRASS_TILE,PAL_NONE, 0x5b0, PAL_NONE, 0, 0, 16, 16, 15, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 15, 0), - M( SPR_FLAT_GRASS_TILE,PAL_NONE, 0x5b0, PAL_NONE, 0, 0, 16, 16, 15, 0), - M( SPR_FLAT_GRASS_TILE,PAL_NONE, 0x5b0, PAL_NONE, 0, 0, 16, 16, 15, 0), - M( SPR_FLAT_GRASS_TILE,PAL_NONE, 0x5b0, PAL_NONE, 0, 0, 16, 16, 15, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 15, 0), - M( SPR_FLAT_GRASS_TILE,PAL_NONE, 0x5b0, PAL_NONE, 0, 0, 16, 16, 15, 0), - M( SPR_FLAT_GRASS_TILE,PAL_NONE, 0x5b0, PAL_NONE, 0, 0, 16, 16, 15, 0), - M( SPR_FLAT_GRASS_TILE,PAL_NONE, 0x5b0, PAL_NONE, 0, 0, 16, 16, 15, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 15, 0), - M( SPR_FLAT_GRASS_TILE,PAL_NONE, 0x5b0, PAL_NONE, 0, 0, 16, 16, 15, 0), - M( SPR_FLAT_GRASS_TILE,PAL_NONE, 0x5b0, PAL_NONE, 0, 0, 16, 16, 15, 0), - M( SPR_FLAT_GRASS_TILE,PAL_NONE, 0x5b0, PAL_NONE, 0, 0, 16, 16, 15, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 15, 0), - M( SPR_FLAT_GRASS_TILE,PAL_NONE, 0x5b1, PAL_NONE, 0, 0, 16, 16, 15, 0), - M( SPR_FLAT_GRASS_TILE,PAL_NONE, 0x5b1, PAL_NONE, 0, 0, 16, 16, 15, 0), - M( SPR_FLAT_GRASS_TILE,PAL_NONE, 0x5b1, PAL_NONE, 0, 0, 16, 16, 15, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 15, 0), - M( SPR_FLAT_GRASS_TILE,PAL_NONE, 0x5b1, PAL_NONE, 0, 0, 16, 16, 15, 0), - M( SPR_FLAT_GRASS_TILE,PAL_NONE, 0x5b1, PAL_NONE, 0, 0, 16, 16, 15, 0), - M( SPR_FLAT_GRASS_TILE,PAL_NONE, 0x5b1, PAL_NONE, 0, 0, 16, 16, 15, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 15, 0), - M( SPR_FLAT_GRASS_TILE,PAL_NONE, 0x5b1, PAL_NONE, 0, 0, 16, 16, 15, 0), - M( SPR_FLAT_GRASS_TILE,PAL_NONE, 0x5b1, PAL_NONE, 0, 0, 16, 16, 15, 0), - M( SPR_FLAT_GRASS_TILE,PAL_NONE, 0x5b1, PAL_NONE, 0, 0, 16, 16, 15, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 15, 0), - M( SPR_FLAT_GRASS_TILE,PAL_NONE, 0x5b1, PAL_NONE, 0, 0, 16, 16, 15, 0), - M( SPR_FLAT_GRASS_TILE,PAL_NONE, 0x5b1, PAL_NONE, 0, 0, 16, 16, 15, 0), - M( SPR_FLAT_GRASS_TILE,PAL_NONE, 0x5b1, PAL_NONE, 0, 0, 16, 16, 15, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5b2, PAL_NONE, 0, 0, 16, 16, 8, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5b3, PAL_NONE, 0, 0, 16, 16, 42, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5b4, PAL_NONE, 0, 0, 16, 16, 42, 0), - M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5b4, PAL_NONE, 0, 0, 16, 16, 42, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5b2, PALETTE_TO_STRUCT_WHITE, 0, 0, 16, 16, 8, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5b3, PALETTE_TO_STRUCT_WHITE, 0, 0, 16, 16, 42, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5b4, PALETTE_TO_STRUCT_WHITE, 0, 0, 16, 16, 42, 0), - M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5b4, PALETTE_TO_STRUCT_WHITE, 0, 0, 16, 16, 42, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5b2, PALETTE_TO_STRUCT_RED, 0, 0, 16, 16, 8, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5b3, PALETTE_TO_STRUCT_RED, 0, 0, 16, 16, 42, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5b4, PALETTE_TO_STRUCT_RED, 0, 0, 16, 16, 42, 0), - M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5b4, PALETTE_TO_STRUCT_RED, 0, 0, 16, 16, 42, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5b2, PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 8, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5b3, PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 42, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5b4, PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 42, 0), - M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5b4, PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 42, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5b5, PAL_NONE, 1, 3, 14, 11, 7, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5b6, PAL_NONE, 1, 3, 14, 11, 53, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5b7, PAL_NONE, 1, 3, 14, 11, 53, 0), - M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5b7, PAL_NONE, 1, 3, 14, 11, 53, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5b5, PAL_NONE, 1, 3, 14, 11, 7, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5b6, PAL_NONE, 1, 3, 14, 11, 53, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5b7, PAL_NONE, 1, 3, 14, 11, 53, 0), - M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5b7, PAL_NONE, 1, 3, 14, 11, 53, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5b5, PAL_NONE, 1, 3, 14, 11, 7, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5b6, PAL_NONE, 1, 3, 14, 11, 53, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5b7, PAL_NONE, 1, 3, 14, 11, 53, 0), - M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5b7, PAL_NONE, 1, 3, 14, 11, 53, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5b5, PAL_NONE, 1, 3, 14, 11, 7, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5b6, PAL_NONE, 1, 3, 14, 11, 53, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5b7, PAL_NONE, 1, 3, 14, 11, 53, 0), - M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5b7, PAL_NONE, 1, 3, 14, 11, 53, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5b8, PAL_NONE, 3, 1, 11, 14, 6, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5b9, PAL_NONE, 3, 1, 11, 14, 28, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5ba, PAL_NONE, 3, 1, 11, 14, 28, 0), - M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5ba, PAL_NONE, 3, 1, 11, 14, 28, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5b8, PAL_NONE, 3, 1, 11, 14, 6, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5b9, PAL_NONE, 3, 1, 11, 14, 28, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5ba, PAL_NONE, 3, 1, 11, 14, 28, 0), - M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5ba, PAL_NONE, 3, 1, 11, 14, 28, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5b8, PAL_NONE, 3, 1, 11, 14, 6, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5b9, PAL_NONE, 3, 1, 11, 14, 28, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5ba, PAL_NONE, 3, 1, 11, 14, 28, 0), - M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5ba, PAL_NONE, 3, 1, 11, 14, 28, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5b8, PAL_NONE, 3, 1, 11, 14, 6, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5b9, PAL_NONE, 3, 1, 11, 14, 28, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5ba, PAL_NONE, 3, 1, 11, 14, 28, 0), - M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5ba, PAL_NONE, 3, 1, 11, 14, 28, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5bb, PAL_NONE, 2, 0, 13, 16, 6, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5bc, PAL_NONE, 2, 0, 13, 16, 45, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5bd, PAL_NONE, 2, 0, 13, 16, 46, 0), - M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5bd, PAL_NONE, 2, 0, 13, 16, 46, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5bb, PAL_NONE, 2, 0, 13, 16, 6, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5bc, PAL_NONE, 2, 0, 13, 16, 45, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5bd, PAL_NONE, 2, 0, 13, 16, 46, 0), - M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5bd, PAL_NONE, 2, 0, 13, 16, 46, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5bb, PALETTE_TO_STRUCT_BLUE, 2, 0, 13, 16, 6, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5bc, PALETTE_TO_STRUCT_BLUE, 2, 0, 13, 16, 45, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5bd, PALETTE_TO_STRUCT_BLUE, 2, 0, 13, 16, 46, 0), - M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5bd, PALETTE_TO_STRUCT_BLUE, 2, 0, 13, 16, 46, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5bb, PALETTE_TO_STRUCT_WHITE, 2, 0, 13, 16, 6, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5bc, PALETTE_TO_STRUCT_WHITE, 2, 0, 13, 16, 45, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5bd, PALETTE_TO_STRUCT_WHITE, 2, 0, 13, 16, 46, 0), - M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5bd, PALETTE_TO_STRUCT_WHITE, 2, 0, 13, 16, 46, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5be, PALETTE_TO_RED, 2, 0, 13, 16, 13, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5bf, PALETTE_TO_RED, 2, 0, 13, 16, 110, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5c0, PALETTE_TO_RED, 2, 0, 13, 16, 110, 0), - M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5c0, PALETTE_TO_RED, 2, 0, 13, 16, 110, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5be, PALETTE_TO_BLUE, 2, 0, 13, 16, 13, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5bf, PALETTE_TO_BLUE, 2, 0, 13, 16, 110, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5c0, PALETTE_TO_BLUE, 2, 0, 13, 16, 110, 0), - M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5c0, PALETTE_TO_BLUE, 2, 0, 13, 16, 110, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5be, PALETTE_TO_ORANGE, 2, 0, 13, 16, 13, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5bf, PALETTE_TO_ORANGE, 2, 0, 13, 16, 110, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5c0, PALETTE_TO_ORANGE, 2, 0, 13, 16, 110, 0), - M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5c0, PALETTE_TO_ORANGE, 2, 0, 13, 16, 110, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5be, PALETTE_TO_GREEN, 2, 0, 13, 16, 13, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5bf, PALETTE_TO_GREEN, 2, 0, 13, 16, 110, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5c0, PALETTE_TO_GREEN, 2, 0, 13, 16, 110, 0), - M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5c0, PALETTE_TO_GREEN, 2, 0, 13, 16, 110, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5c1, PAL_NONE, 1, 2, 15, 12, 4, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5c2, PAL_NONE, 1, 2, 15, 12, 24, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5c3, PAL_NONE, 1, 2, 15, 12, 31, 0), - M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5c3, PAL_NONE, 1, 2, 15, 12, 31, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5c1, PAL_NONE, 1, 2, 15, 12, 4, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5c2, PAL_NONE, 1, 2, 15, 12, 24, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5c3, PAL_NONE, 1, 2, 15, 12, 31, 0), - M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5c3, PAL_NONE, 1, 2, 15, 12, 31, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5c1, PAL_NONE, 1, 2, 15, 12, 4, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5c2, PAL_NONE, 1, 2, 15, 12, 24, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5c3, PAL_NONE, 1, 2, 15, 12, 31, 0), - M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5c3, PAL_NONE, 1, 2, 15, 12, 31, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5c1, PAL_NONE, 1, 2, 15, 12, 4, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5c2, PAL_NONE, 1, 2, 15, 12, 24, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5c3, PAL_NONE, 1, 2, 15, 12, 31, 0), - M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5c3, PAL_NONE, 1, 2, 15, 12, 31, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5c4, PAL_NONE, 1, 0, 14, 15, 20, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5c5, PAL_NONE, 1, 0, 14, 15, 42, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5c6, PAL_NONE, 1, 0, 14, 15, 42, 0), - M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5c6, PAL_NONE, 1, 0, 14, 15, 42, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5c4, PAL_NONE, 1, 0, 14, 15, 20, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5c5, PAL_NONE, 1, 0, 14, 15, 42, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5c6, PAL_NONE, 1, 0, 14, 15, 42, 0), - M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5c6, PAL_NONE, 1, 0, 14, 15, 42, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5c4, PAL_NONE, 1, 0, 14, 15, 20, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5c5, PAL_NONE, 1, 0, 14, 15, 42, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5c6, PAL_NONE, 1, 0, 14, 15, 42, 0), - M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5c6, PAL_NONE, 1, 0, 14, 15, 42, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5c4, PAL_NONE, 1, 0, 14, 15, 20, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5c5, PAL_NONE, 1, 0, 14, 15, 42, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5c6, PAL_NONE, 1, 0, 14, 15, 42, 0), - M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5c6, PAL_NONE, 1, 0, 14, 15, 42, 0), - M( SPR_GRND_STADIUM_N, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_GRND_STADIUM_N, PAL_NONE, 0x5cb, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_GRND_STADIUM_N, PAL_NONE, 0x5cb, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_GRND_STADIUM_N, PAL_NONE, 0x5cb, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_GRND_STADIUM_N, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_GRND_STADIUM_N, PAL_NONE, 0x5cb, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_GRND_STADIUM_N, PAL_NONE, 0x5cb, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_GRND_STADIUM_N, PAL_NONE, 0x5cb, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_GRND_STADIUM_N, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_GRND_STADIUM_N, PAL_NONE, 0x5cb, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_GRND_STADIUM_N, PAL_NONE, 0x5cb, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_GRND_STADIUM_N, PAL_NONE, 0x5cb, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_GRND_STADIUM_N, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_GRND_STADIUM_N, PAL_NONE, 0x5cb, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_GRND_STADIUM_N, PAL_NONE, 0x5cb, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_GRND_STADIUM_N, PAL_NONE, 0x5cb, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_GRND_STADIUM_E, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_GRND_STADIUM_E, PAL_NONE, 0x5cc, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_GRND_STADIUM_E, PAL_NONE, 0x5cc, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_GRND_STADIUM_E, PAL_NONE, 0x5cc, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_GRND_STADIUM_E, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_GRND_STADIUM_E, PAL_NONE, 0x5cc, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_GRND_STADIUM_E, PAL_NONE, 0x5cc, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_GRND_STADIUM_E, PAL_NONE, 0x5cc, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_GRND_STADIUM_E, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_GRND_STADIUM_E, PAL_NONE, 0x5cc, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_GRND_STADIUM_E, PAL_NONE, 0x5cc, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_GRND_STADIUM_E, PAL_NONE, 0x5cc, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_GRND_STADIUM_E, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_GRND_STADIUM_E, PAL_NONE, 0x5cc, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_GRND_STADIUM_E, PAL_NONE, 0x5cc, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_GRND_STADIUM_E, PAL_NONE, 0x5cc, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_GRND_STADIUM_W, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_GRND_STADIUM_W, PAL_NONE, 0x5cd, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_GRND_STADIUM_W, PAL_NONE, 0x5cd, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_GRND_STADIUM_W, PAL_NONE, 0x5cd, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_GRND_STADIUM_W, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_GRND_STADIUM_W, PAL_NONE, 0x5cd, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_GRND_STADIUM_W, PAL_NONE, 0x5cd, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_GRND_STADIUM_W, PAL_NONE, 0x5cd, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_GRND_STADIUM_W, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_GRND_STADIUM_W, PAL_NONE, 0x5cd, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_GRND_STADIUM_W, PAL_NONE, 0x5cd, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_GRND_STADIUM_W, PAL_NONE, 0x5cd, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_GRND_STADIUM_W, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_GRND_STADIUM_W, PAL_NONE, 0x5cd, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_GRND_STADIUM_W, PAL_NONE, 0x5cd, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_GRND_STADIUM_W, PAL_NONE, 0x5cd, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_GRND_STADIUM_S, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_GRND_STADIUM_S, PAL_NONE, 0x5ce, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_GRND_STADIUM_S, PAL_NONE, 0x5ce, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_GRND_STADIUM_S, PAL_NONE, 0x5ce, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_GRND_STADIUM_S, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_GRND_STADIUM_S, PAL_NONE, 0x5ce, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_GRND_STADIUM_S, PAL_NONE, 0x5ce, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_GRND_STADIUM_S, PAL_NONE, 0x5ce, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_GRND_STADIUM_S, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_GRND_STADIUM_S, PAL_NONE, 0x5ce, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_GRND_STADIUM_S, PAL_NONE, 0x5ce, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_GRND_STADIUM_S, PAL_NONE, 0x5ce, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_GRND_STADIUM_S, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_GRND_STADIUM_S, PAL_NONE, 0x5ce, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_GRND_STADIUM_S, PAL_NONE, 0x5ce, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_GRND_STADIUM_S, PAL_NONE, 0x5ce, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5d4, PAL_NONE, 0, 0, 16, 16, 22, 0), - M( 0x5d3, PAL_NONE, 0x5d4, PAL_NONE, 0, 0, 16, 16, 22, 0), - M( 0x5d3, PAL_NONE, 0x5d4, PAL_NONE, 0, 0, 16, 16, 22, 0), - M( 0x5d3, PAL_NONE, 0x5d4, PAL_NONE, 0, 0, 16, 16, 22, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5d6, PAL_NONE, 0, 0, 16, 16, 22, 0), - M( 0x5d5, PAL_NONE, 0x5d6, PAL_NONE, 0, 0, 16, 16, 22, 0), - M( 0x5d5, PAL_NONE, 0x5d6, PAL_NONE, 0, 0, 16, 16, 22, 0), - M( 0x5d5, PAL_NONE, 0x5d6, PAL_NONE, 0, 0, 16, 16, 22, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5d0, PAL_NONE, 0, 0, 16, 16, 21, 0), - M( 0x5cf, PAL_NONE, 0x5d0, PAL_NONE, 0, 0, 16, 16, 21, 0), - M( 0x5cf, PAL_NONE, 0x5d0, PAL_NONE, 0, 0, 16, 16, 21, 0), - M( 0x5cf, PAL_NONE, 0x5d0, PAL_NONE, 0, 0, 16, 16, 21, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5d2, PAL_NONE, 0, 0, 16, 16, 11, 0), - M( 0x5d1, PAL_NONE, 0x5d2, PAL_NONE, 0, 0, 16, 16, 11, 0), - M( 0x5d1, PAL_NONE, 0x5d2, PAL_NONE, 0, 0, 16, 16, 11, 0), - M( 0x5d1, PAL_NONE, 0x5d2, PAL_NONE, 0, 0, 16, 16, 11, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 22, 0), - M( 0x5d7, PAL_NONE, 0x5d8, PAL_NONE, 0, 0, 16, 16, 22, 0), - M( 0x5d7, PAL_NONE, 0x5d8, PAL_NONE, 0, 0, 16, 16, 22, 0), - M( 0x5d7, PAL_NONE, 0x5d8, PAL_NONE, 0, 0, 16, 16, 22, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 22, 0), - M( 0x5d7, PAL_NONE, 0x5d8, PAL_NONE, 0, 0, 16, 16, 22, 0), - M( 0x5d7, PAL_NONE, 0x5d8, PAL_NONE, 0, 0, 16, 16, 22, 0), - M( 0x5d7, PAL_NONE, 0x5d8, PAL_NONE, 0, 0, 16, 16, 22, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 22, 0), - M( 0x5d7, PAL_NONE, 0x5d8, PAL_NONE, 0, 0, 16, 16, 22, 0), - M( 0x5d7, PAL_NONE, 0x5d8, PAL_NONE, 0, 0, 16, 16, 22, 0), - M( 0x5d7, PAL_NONE, 0x5d8, PAL_NONE, 0, 0, 16, 16, 22, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 22, 0), - M( 0x5d7, PAL_NONE, 0x5d8, PAL_NONE, 0, 0, 16, 16, 22, 0), - M( 0x5d7, PAL_NONE, 0x5d8, PAL_NONE, 0, 0, 16, 16, 22, 0), - M( 0x5d7, PAL_NONE, 0x5d8, PAL_NONE, 0, 0, 16, 16, 22, 0), - M( 0x5d9, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 22, 0), - M( 0x5da, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 22, 0), - M( 0x5db, PAL_NONE, 0x5dc, PAL_NONE, 0, 0, 16, 16, 22, 0), - M( 0x5db, PAL_NONE, 0x5dc, PAL_NONE, 0, 0, 16, 16, 22, 0), - M( 0x622, PAL_NONE, 0x623, PAL_NONE, 0, 0, 16, 16, 22, 0), - M( 0x624, PAL_NONE, 0x625, PAL_NONE, 0, 0, 16, 16, 22, 0), - M( 0x626, PAL_NONE, 0x627, PAL_NONE, 0, 0, 16, 16, 22, 0), - M( 0x626, PAL_NONE, 0x627, PAL_NONE, 0, 0, 16, 16, 22, 0), - M( 0x5e3, PAL_NONE, 0x5e4, PAL_NONE, 0, 0, 16, 16, 22, 0), - M( 0x5e5, PAL_NONE, 0x5e6, PAL_NONE, 0, 0, 16, 16, 22, 0), - M( 0x5e7, PAL_NONE, 0x5e8, PAL_NONE, 0, 0, 16, 16, 22, 0), - M( 0x5e7, PAL_NONE, 0x5e8, PAL_NONE, 0, 0, 16, 16, 22, 0), - M( 0x5e9, PAL_NONE, 0x5ea, PAL_NONE, 0, 0, 16, 16, 22, 0), - M( 0x5eb, PAL_NONE, 0x5ec, PAL_NONE, 0, 0, 16, 16, 22, 0), - M( 0x5ed, PAL_NONE, 0x5ee, PAL_NONE, 0, 0, 16, 16, 22, 0), - M( 0x5ed, PAL_NONE, 0x5ee, PAL_NONE, 0, 0, 16, 16, 22, 0), - M( 0x5ef, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 22, 0), - M( 0x5f0, PAL_NONE, 0x5f1, PAL_NONE, 0, 0, 16, 16, 22, 0), - M( 0x5f2, PAL_NONE, 0x5f3, PAL_NONE, 0, 0, 16, 16, 22, 0), - M( 0x5f2, PAL_NONE, 0x5f3, PAL_NONE, 0, 0, 16, 16, 22, 0), - M( 0x5ef, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 22, 0), - M( 0x5f0, PAL_NONE, 0x5f1, PAL_NONE, 0, 0, 16, 16, 22, 0), - M( 0x5f2, PAL_NONE, 0x5f3, PAL_NONE, 0, 0, 16, 16, 22, 0), - M( 0x5f2, PAL_NONE, 0x5f3, PAL_NONE, 0, 0, 16, 16, 22, 0), - M( 0x5f4, PAL_NONE, 0x5f5, PAL_NONE, 0, 0, 16, 16, 22, 0), - M( 0x5f6, PAL_NONE, 0x5f7, PAL_NONE, 0, 0, 16, 16, 22, 0), - M( 0x5f8, PAL_NONE, 0x5f9, PAL_NONE, 0, 0, 16, 16, 22, 0), - M( 0x5f8, PAL_NONE, 0x5f9, PAL_NONE, 0, 0, 16, 16, 22, 0), - M( 0x5f4, PAL_NONE, 0x5f5, PAL_NONE, 0, 0, 16, 16, 22, 0), - M( 0x5f6, PAL_NONE, 0x5f7, PAL_NONE, 0, 0, 16, 16, 22, 0), - M( 0x5f8, PAL_NONE, 0x5f9, PAL_NONE, 0, 0, 16, 16, 22, 0), - M( 0x5f8, PAL_NONE, 0x5f9, PAL_NONE, 0, 0, 16, 16, 22, 0), - M( 0x5fa, PAL_NONE, 0x5fb, PAL_NONE, 0, 0, 16, 16, 85, 0), - M( 0x5fc, PAL_NONE, 0x5fd, PAL_NONE, 0, 0, 16, 16, 85, 0), - M( 0x5fe, PAL_NONE, 0x5ff, PAL_NONE, 0, 0, 16, 16, 85, 0), - M( 0x5fe, PAL_NONE, 0x5ff, PAL_NONE, 0, 0, 16, 16, 85, 0), - M( 0x5fa, PAL_NONE, 0x5fb, PAL_NONE, 0, 0, 16, 16, 85, 0), - M( 0x5fc, PAL_NONE, 0x5fd, PAL_NONE, 0, 0, 16, 16, 85, 0), - M( 0x5fe, PAL_NONE, 0x5ff, PAL_NONE, 0, 0, 16, 16, 85, 0), - M( 0x5fe, PAL_NONE, 0x5ff, PAL_NONE, 0, 0, 16, 16, 85, 0), - M( 0x60a, PAL_NONE, 0x60b, PAL_NONE, 0, 0, 16, 16, 95, 0), - M( 0x60c, PAL_NONE, 0x60d, PAL_NONE, 0, 0, 16, 16, 95, 0), - M( 0x60e, PAL_NONE, 0x60f, PAL_NONE, 0, 0, 16, 16, 95, 0), - M( 0x60e, PAL_NONE, 0x60f, PAL_NONE, 0, 0, 16, 16, 95, 0), - M( 0x60a, PAL_NONE, 0x60b, PAL_NONE, 0, 0, 16, 16, 95, 0), - M( 0x60c, PAL_NONE, 0x60d, PAL_NONE, 0, 0, 16, 16, 95, 0), - M( 0x60e, PAL_NONE, 0x60f, PAL_NONE, 0, 0, 16, 16, 95, 0), - M( 0x60e, PAL_NONE, 0x60f, PAL_NONE, 0, 0, 16, 16, 95, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 22, 0), - M( 0x600, PAL_NONE, 0x601, PAL_NONE, 0, 0, 16, 16, 55, 0), - M( 0x600, PAL_NONE, 0x601, PAL_NONE, 0, 0, 16, 16, 55, 0), - M( 0x600, PAL_NONE, 0x601, PAL_NONE, 0, 0, 16, 16, 55, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 22, 0), - M( 0x600, PALETTE_TO_STRUCT_WHITE, 0x601, PALETTE_TO_STRUCT_WHITE, 0, 0, 16, 16, 55, 0), - M( 0x600, PALETTE_TO_STRUCT_WHITE, 0x601, PALETTE_TO_STRUCT_WHITE, 0, 0, 16, 16, 55, 0), - M( 0x600, PALETTE_TO_STRUCT_WHITE, 0x601, PALETTE_TO_STRUCT_WHITE, 0, 0, 16, 16, 55, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 22, 0), - M( 0x602, PAL_NONE, 0x603, PAL_NONE, 0, 0, 16, 16, 42, 0), - M( 0x602, PAL_NONE, 0x603, PAL_NONE, 0, 0, 16, 16, 42, 0), - M( 0x602, PAL_NONE, 0x603, PAL_NONE, 0, 0, 16, 16, 42, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 22, 0), - M( 0x602, PALETTE_TO_STRUCT_CONCRETE, 0x603, PALETTE_TO_STRUCT_CONCRETE, 0, 0, 16, 16, 42, 0), - M( 0x602, PALETTE_TO_STRUCT_CONCRETE, 0x603, PALETTE_TO_STRUCT_CONCRETE, 0, 0, 16, 16, 42, 0), - M( 0x602, PALETTE_TO_STRUCT_CONCRETE, 0x603, PALETTE_TO_STRUCT_CONCRETE, 0, 0, 16, 16, 42, 0), - M( 0x604, PAL_NONE, 0x605, PAL_NONE, 0, 0, 16, 16, 88, 0), - M( 0x606, PAL_NONE, 0x607, PAL_NONE, 0, 0, 16, 16, 88, 0), - M( 0x608, PAL_NONE, 0x609, PAL_NONE, 0, 0, 16, 16, 88, 0), - M( 0x608, PAL_NONE, 0x609, PAL_NONE, 0, 0, 16, 16, 88, 0), - M( 0x604, PAL_NONE, 0x605, PAL_NONE, 0, 0, 16, 16, 88, 0), - M( 0x606, PAL_NONE, 0x607, PAL_NONE, 0, 0, 16, 16, 88, 0), - M( 0x608, PAL_NONE, 0x609, PAL_NONE, 0, 0, 16, 16, 88, 0), - M( 0x608, PAL_NONE, 0x609, PAL_NONE, 0, 0, 16, 16, 88, 0), - M( 0x604, PAL_NONE, 0x605, PAL_NONE, 0, 0, 16, 16, 88, 0), - M( 0x606, PAL_NONE, 0x607, PAL_NONE, 0, 0, 16, 16, 88, 0), - M( 0x608, PAL_NONE, 0x609, PAL_NONE, 0, 0, 16, 16, 88, 0), - M( 0x608, PAL_NONE, 0x609, PAL_NONE, 0, 0, 16, 16, 88, 0), - M( 0x604, PAL_NONE, 0x605, PAL_NONE, 0, 0, 16, 16, 88, 0), - M( 0x606, PAL_NONE, 0x607, PAL_NONE, 0, 0, 16, 16, 88, 0), - M( 0x608, PAL_NONE, 0x609, PAL_NONE, 0, 0, 16, 16, 88, 0), - M( 0x608, PAL_NONE, 0x609, PAL_NONE, 0, 0, 16, 16, 88, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 22, 0), - M( 0x610, PAL_NONE, 0x611, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( 0x610, PAL_NONE, 0x611, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( 0x610, PAL_NONE, 0x611, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 22, 0), - M( 0x610, PAL_NONE, 0x611, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( 0x610, PAL_NONE, 0x611, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( 0x610, PAL_NONE, 0x611, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 22, 0), - M( 0x610, PAL_NONE, 0x611, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( 0x610, PAL_NONE, 0x611, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( 0x610, PAL_NONE, 0x611, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 22, 0), - M( 0x610, PAL_NONE, 0x611, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( 0x610, PAL_NONE, 0x611, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( 0x610, PAL_NONE, 0x611, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( 0x612, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( 0x612, PAL_NONE, 0x616, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( 0x612, PAL_NONE, 0x616, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( 0x612, PAL_NONE, 0x616, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( 0x612, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( 0x612, PAL_NONE, 0x616, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( 0x612, PAL_NONE, 0x616, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( 0x612, PAL_NONE, 0x616, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( 0x612, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( 0x612, PAL_NONE, 0x616, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( 0x612, PAL_NONE, 0x616, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( 0x612, PAL_NONE, 0x616, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( 0x612, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( 0x612, PAL_NONE, 0x616, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( 0x612, PAL_NONE, 0x616, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( 0x612, PAL_NONE, 0x616, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( 0x613, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( 0x613, PAL_NONE, 0x617, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( 0x613, PAL_NONE, 0x617, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( 0x613, PAL_NONE, 0x617, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( 0x613, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( 0x613, PAL_NONE, 0x617, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( 0x613, PAL_NONE, 0x617, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( 0x613, PAL_NONE, 0x617, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( 0x613, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( 0x613, PAL_NONE, 0x617, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( 0x613, PAL_NONE, 0x617, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( 0x613, PAL_NONE, 0x617, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( 0x613, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( 0x613, PAL_NONE, 0x617, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( 0x613, PAL_NONE, 0x617, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( 0x613, PAL_NONE, 0x617, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( 0x614, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( 0x614, PAL_NONE, 0x618, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( 0x614, PAL_NONE, 0x618, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( 0x614, PAL_NONE, 0x618, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( 0x614, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( 0x614, PAL_NONE, 0x618, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( 0x614, PAL_NONE, 0x618, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( 0x614, PAL_NONE, 0x618, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( 0x614, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( 0x614, PAL_NONE, 0x618, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( 0x614, PAL_NONE, 0x618, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( 0x614, PAL_NONE, 0x618, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( 0x614, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( 0x614, PAL_NONE, 0x618, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( 0x614, PAL_NONE, 0x618, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( 0x614, PAL_NONE, 0x618, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( 0x615, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( 0x615, PAL_NONE, 0x619, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( 0x615, PAL_NONE, 0x619, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( 0x615, PAL_NONE, 0x619, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( 0x615, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( 0x615, PAL_NONE, 0x619, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( 0x615, PAL_NONE, 0x619, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( 0x615, PAL_NONE, 0x619, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( 0x615, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( 0x615, PAL_NONE, 0x619, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( 0x615, PAL_NONE, 0x619, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( 0x615, PAL_NONE, 0x619, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( 0x615, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( 0x615, PAL_NONE, 0x619, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( 0x615, PAL_NONE, 0x619, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( 0x615, PAL_NONE, 0x619, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 22, 0), - M( 0x61a, PAL_NONE, 0x61b, PAL_NONE, 0, 0, 16, 16, 100, 0), - M( 0x61a, PAL_NONE, 0x61b, PAL_NONE, 0, 0, 16, 16, 100, 0), - M( 0x61c, PAL_NONE, 0x61d, PAL_NONE, 0, 0, 16, 16, 100, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 22, 0), - M( 0x61a, PAL_NONE, 0x61b, PAL_NONE, 0, 0, 16, 16, 100, 0), - M( 0x61a, PAL_NONE, 0x61b, PAL_NONE, 0, 0, 16, 16, 100, 0), - M( 0x61c, PAL_NONE, 0x61d, PAL_NONE, 0, 0, 16, 16, 100, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 22, 0), - M( 0x61a, PAL_NONE, 0x61b, PAL_NONE, 0, 0, 16, 16, 100, 0), - M( 0x61a, PAL_NONE, 0x61b, PAL_NONE, 0, 0, 16, 16, 100, 0), - M( 0x61c, PAL_NONE, 0x61d, PAL_NONE, 0, 0, 16, 16, 100, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 22, 0), - M( 0x61a, PAL_NONE, 0x61b, PAL_NONE, 0, 0, 16, 16, 100, 0), - M( 0x61a, PAL_NONE, 0x61b, PAL_NONE, 0, 0, 16, 16, 100, 0), - M( 0x61c, PAL_NONE, 0x61d, PAL_NONE, 0, 0, 16, 16, 100, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 22, 0), - M( 0x61e, PAL_NONE, 0x61f, PAL_NONE, 0, 0, 16, 16, 25, 0), - M( 0x61e, PAL_NONE, 0x61f, PAL_NONE, 0, 0, 16, 16, 25, 0), - M( 0x61e, PAL_NONE, 0x61f, PAL_NONE, 0, 0, 16, 16, 25, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 22, 0), - M( 0x61e, PALETTE_TO_STRUCT_WHITE, 0x61f, PALETTE_TO_STRUCT_WHITE, 0, 0, 16, 16, 25, 0), - M( 0x61e, PALETTE_TO_STRUCT_WHITE, 0x61f, PALETTE_TO_STRUCT_WHITE, 0, 0, 16, 16, 25, 0), - M( 0x61e, PALETTE_TO_STRUCT_WHITE, 0x61f, PALETTE_TO_STRUCT_WHITE, 0, 0, 16, 16, 25, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 22, 0), - M( 0x620, PAL_NONE, 0x621, PAL_NONE, 0, 0, 16, 16, 25, 0), - M( 0x620, PAL_NONE, 0x621, PAL_NONE, 0, 0, 16, 16, 25, 0), - M( 0x620, PAL_NONE, 0x621, PAL_NONE, 0, 0, 16, 16, 25, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 22, 0), - M( 0x620, PALETTE_TO_CREAM, 0x621, PALETTE_TO_CREAM, 0, 0, 16, 16, 25, 0), - M( 0x620, PALETTE_TO_CREAM, 0x621, PALETTE_TO_CREAM, 0, 0, 16, 16, 25, 0), - M( 0x620, PALETTE_TO_CREAM, 0x621, PALETTE_TO_CREAM, 0, 0, 16, 16, 25, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 22, 0), - M(0x11da, PAL_NONE, 0x11db, PAL_NONE, 0, 0, 16, 16, 25, 0), - M(0x11da, PAL_NONE, 0x11db, PAL_NONE, 0, 0, 16, 16, 25, 0), - M(0x11da, PAL_NONE, 0x11db, PAL_NONE, 0, 0, 16, 16, 25, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 22, 0), - M(0x11da, PALETTE_TO_STRUCT_WHITE, 0x11db, PALETTE_TO_STRUCT_WHITE, 0, 0, 16, 16, 25, 0), - M(0x11da, PALETTE_TO_STRUCT_WHITE, 0x11db, PALETTE_TO_STRUCT_WHITE, 0, 0, 16, 16, 25, 0), - M(0x11da, PALETTE_TO_STRUCT_WHITE, 0x11db, PALETTE_TO_STRUCT_WHITE, 0, 0, 16, 16, 25, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 22, 0), - M(0x11dc, PAL_NONE, 0x11dd, PAL_NONE, 0, 0, 16, 16, 25, 0), - M(0x11dc, PAL_NONE, 0x11dd, PAL_NONE, 0, 0, 16, 16, 25, 0), - M(0x11dc, PAL_NONE, 0x11dd, PAL_NONE, 0, 0, 16, 16, 25, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 22, 0), - M(0x11dc, PALETTE_TO_CREAM, 0x11dd, PALETTE_TO_CREAM, 0, 0, 16, 16, 25, 0), - M(0x11dc, PALETTE_TO_CREAM, 0x11dd, PALETTE_TO_CREAM, 0, 0, 16, 16, 25, 0), - M(0x11dc, PALETTE_TO_CREAM, 0x11dd, PALETTE_TO_CREAM, 0, 0, 16, 16, 25, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 22, 0), - M(0x1134, PAL_NONE, 0x1135, PAL_NONE, 0, 0, 16, 16, 40, 0), - M(0x1134, PAL_NONE, 0x1135, PAL_NONE, 0, 0, 16, 16, 40, 0), - M(0x1134, PAL_NONE, 0x1135, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 22, 0), - M(0x1134, PAL_NONE, 0x1135, PAL_NONE, 0, 0, 16, 16, 40, 0), - M(0x1134, PAL_NONE, 0x1135, PAL_NONE, 0, 0, 16, 16, 40, 0), - M(0x1134, PAL_NONE, 0x1135, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 22, 0), - M(0x1134, PAL_NONE, 0x1135, PAL_NONE, 0, 0, 16, 16, 40, 0), - M(0x1134, PAL_NONE, 0x1135, PAL_NONE, 0, 0, 16, 16, 40, 0), - M(0x1134, PAL_NONE, 0x1135, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 22, 0), - M(0x1134, PAL_NONE, 0x1135, PAL_NONE, 0, 0, 16, 16, 40, 0), - M(0x1134, PAL_NONE, 0x1135, PAL_NONE, 0, 0, 16, 16, 40, 0), - M(0x1134, PAL_NONE, 0x1135, PAL_NONE, 0, 0, 16, 16, 40, 0), - M(0x1136, PAL_NONE, 0x1137, PAL_NONE, 0, 0, 16, 16, 20, 0), - M(0x1136, PAL_NONE, 0x1137, PAL_NONE, 0, 0, 16, 16, 20, 0), - M(0x113b, PAL_NONE, 0x113c, PAL_NONE, 0, 0, 16, 16, 20, 0), - M(0x113b, PAL_NONE, 0x113c, PAL_NONE, 0, 0, 16, 16, 20, 0), - M(0x1136, PAL_NONE, 0x1137, PAL_NONE, 0, 0, 16, 16, 20, 0), - M(0x1136, PAL_NONE, 0x1137, PAL_NONE, 0, 0, 16, 16, 20, 0), - M(0x113b, PAL_NONE, 0x113c, PAL_NONE, 0, 0, 16, 16, 20, 0), - M(0x113b, PAL_NONE, 0x113c, PAL_NONE, 0, 0, 16, 16, 20, 0), - M(0x1136, PAL_NONE, 0x1137, PAL_NONE, 0, 0, 16, 16, 20, 0), - M(0x1136, PAL_NONE, 0x1137, PAL_NONE, 0, 0, 16, 16, 20, 0), - M(0x113b, PAL_NONE, 0x113c, PAL_NONE, 0, 0, 16, 16, 20, 0), - M(0x113b, PAL_NONE, 0x113c, PAL_NONE, 0, 0, 16, 16, 20, 0), - M(0x1136, PAL_NONE, 0x1137, PAL_NONE, 0, 0, 16, 16, 20, 0), - M(0x1136, PAL_NONE, 0x1137, PAL_NONE, 0, 0, 16, 16, 20, 0), - M(0x113b, PAL_NONE, 0x113c, PAL_NONE, 0, 0, 16, 16, 20, 0), - M(0x113b, PAL_NONE, 0x113c, PAL_NONE, 0, 0, 16, 16, 20, 0), - M(0x1138, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), - M(0x1138, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), - M(0x113d, PAL_NONE, 0x113e, PAL_NONE, 0, 0, 16, 16, 20, 0), - M(0x113d, PAL_NONE, 0x113e, PAL_NONE, 0, 0, 16, 16, 20, 0), - M(0x1138, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), - M(0x1138, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), - M(0x113d, PAL_NONE, 0x113e, PAL_NONE, 0, 0, 16, 16, 20, 0), - M(0x113d, PAL_NONE, 0x113e, PAL_NONE, 0, 0, 16, 16, 20, 0), - M(0x1138, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), - M(0x1138, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), - M(0x113d, PAL_NONE, 0x113e, PAL_NONE, 0, 0, 16, 16, 20, 0), - M(0x113d, PAL_NONE, 0x113e, PAL_NONE, 0, 0, 16, 16, 20, 0), - M(0x1138, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), - M(0x1138, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), - M(0x113d, PAL_NONE, 0x113e, PAL_NONE, 0, 0, 16, 16, 20, 0), - M(0x113d, PAL_NONE, 0x113e, PAL_NONE, 0, 0, 16, 16, 20, 0), - M(0x1139, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), - M(0x1139, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), - M(0x113f, PAL_NONE, 0x1140, PAL_NONE, 0, 0, 16, 16, 20, 0), - M(0x113f, PAL_NONE, 0x1140, PAL_NONE, 0, 0, 16, 16, 20, 0), - M(0x1139, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), - M(0x1139, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), - M(0x113f, PAL_NONE, 0x1140, PAL_NONE, 0, 0, 16, 16, 20, 0), - M(0x113f, PAL_NONE, 0x1140, PAL_NONE, 0, 0, 16, 16, 20, 0), - M(0x1139, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), - M(0x1139, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), - M(0x113f, PAL_NONE, 0x1140, PAL_NONE, 0, 0, 16, 16, 20, 0), - M(0x113f, PAL_NONE, 0x1140, PAL_NONE, 0, 0, 16, 16, 20, 0), - M(0x1139, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), - M(0x1139, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), - M(0x113f, PAL_NONE, 0x1140, PAL_NONE, 0, 0, 16, 16, 20, 0), - M(0x113f, PAL_NONE, 0x1140, PAL_NONE, 0, 0, 16, 16, 20, 0), - M(0x113a, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), - M(0x113a, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), - M(0x1141, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), - M(0x1141, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), - M(0x113a, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), - M(0x113a, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), - M(0x1141, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), - M(0x1141, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), - M(0x113a, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), - M(0x113a, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), - M(0x1141, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), - M(0x1141, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), - M(0x113a, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), - M(0x113a, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), - M(0x1141, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), - M(0x1141, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1144, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1145, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1146, PAL_NONE, 0, 0, 16, 16, 40, 0), - M(0x1142, PAL_NONE, 0x1146, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1144, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1145, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1146, PAL_NONE, 0, 0, 16, 16, 40, 0), - M(0x1142, PAL_NONE, 0x1146, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1144, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1145, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1146, PAL_NONE, 0, 0, 16, 16, 40, 0), - M(0x1142, PAL_NONE, 0x1146, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1144, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1145, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1146, PAL_NONE, 0, 0, 16, 16, 40, 0), - M(0x1142, PAL_NONE, 0x1146, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1144, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1145, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1146, PAL_NONE, 0, 0, 16, 16, 40, 0), - M(0x1143, PAL_NONE, 0x1147, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1144, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1145, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1146, PAL_NONE, 0, 0, 16, 16, 40, 0), - M(0x1143, PAL_NONE, 0x1147, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1144, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1145, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1146, PAL_NONE, 0, 0, 16, 16, 40, 0), - M(0x1143, PAL_NONE, 0x1147, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1144, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1145, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1146, PAL_NONE, 0, 0, 16, 16, 40, 0), - M(0x1143, PAL_NONE, 0x1147, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1148, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1149, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x114a, PAL_NONE, 0, 0, 16, 16, 40, 0), - M(0x1142, PAL_NONE, 0x114a, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1148, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1149, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x114a, PAL_NONE, 0, 0, 16, 16, 40, 0), - M(0x1142, PAL_NONE, 0x114a, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1148, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1149, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x114a, PAL_NONE, 0, 0, 16, 16, 40, 0), - M(0x1142, PAL_NONE, 0x114a, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1148, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1149, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x114a, PAL_NONE, 0, 0, 16, 16, 40, 0), - M(0x1142, PAL_NONE, 0x114a, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1148, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1149, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x114a, PAL_NONE, 0, 0, 16, 16, 40, 0), - M(0x1143, PAL_NONE, 0x114b, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1148, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1149, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x114a, PAL_NONE, 0, 0, 16, 16, 40, 0), - M(0x1143, PAL_NONE, 0x114b, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1148, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1149, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x114a, PAL_NONE, 0, 0, 16, 16, 40, 0), - M(0x1143, PAL_NONE, 0x114b, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1148, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1149, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x114a, PAL_NONE, 0, 0, 16, 16, 40, 0), - M(0x1143, PAL_NONE, 0x114b, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x114e, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x114f, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1150, PAL_NONE, 0, 0, 16, 16, 40, 0), - M(0x114c, PAL_NONE, 0x1150, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x114e, PALETTE_TO_PINK, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x114f, PALETTE_TO_PINK, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1150, PALETTE_TO_PINK, 0, 0, 16, 16, 40, 0), - M(0x114c, PAL_NONE, 0x1150, PALETTE_TO_PINK, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x114e, PALETTE_TO_CREAM, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x114f, PALETTE_TO_CREAM, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1150, PALETTE_TO_CREAM, 0, 0, 16, 16, 40, 0), - M(0x114c, PAL_NONE, 0x1150, PALETTE_TO_CREAM, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x114e, PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x114f, PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1150, PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 40, 0), - M(0x114c, PAL_NONE, 0x1150, PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x114e, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x114f, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1150, PAL_NONE, 0, 0, 16, 16, 40, 0), - M(0x114d, PAL_NONE, 0x1151, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x114e, PALETTE_TO_PINK, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x114f, PALETTE_TO_PINK, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1150, PALETTE_TO_PINK, 0, 0, 16, 16, 40, 0), - M(0x114d, PAL_NONE, 0x1151, PALETTE_TO_PINK, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x114e, PALETTE_TO_CREAM, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x114f, PALETTE_TO_CREAM, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1150, PALETTE_TO_CREAM, 0, 0, 16, 16, 40, 0), - M(0x114d, PAL_NONE, 0x1151, PALETTE_TO_CREAM, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x114e, PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x114f, PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1150, PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 40, 0), - M(0x114d, PAL_NONE, 0x1151, PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1153, PAL_NONE, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1154, PAL_NONE, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1155, PAL_NONE, 0, 0, 16, 16, 60, 0), - M(0x1152, PAL_NONE, 0x1155, PAL_NONE, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1153, PALETTE_TO_RED, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1154, PALETTE_TO_RED, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1155, PALETTE_TO_RED, 0, 0, 16, 16, 60, 0), - M(0x1152, PAL_NONE, 0x1155, PALETTE_TO_RED, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1153, PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1154, PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1155, PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 60, 0), - M(0x1152, PAL_NONE, 0x1155, PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1153, PALETTE_TO_GREY, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1154, PALETTE_TO_GREY, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1155, PALETTE_TO_GREY, 0, 0, 16, 16, 60, 0), - M(0x1152, PAL_NONE, 0x1155, PALETTE_TO_GREY, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1153, PAL_NONE, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1154, PAL_NONE, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11de, PAL_NONE, 0, 0, 16, 16, 60, 0), - M(0x1152, PAL_NONE, 0x11de, PAL_NONE, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1153, PALETTE_TO_RED, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1154, PALETTE_TO_RED, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11de, PALETTE_TO_RED, 0, 0, 16, 16, 60, 0), - M(0x1152, PAL_NONE, 0x11de, PALETTE_TO_RED, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1153, PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1154, PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11de, PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 60, 0), - M(0x1152, PAL_NONE, 0x11de, PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1153, PALETTE_TO_GREY, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1154, PALETTE_TO_GREY, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11de, PALETTE_TO_GREY, 0, 0, 16, 16, 60, 0), - M(0x1152, PAL_NONE, 0x11de, PALETTE_TO_GREY, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1157, PAL_NONE, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1158, PAL_NONE, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1159, PAL_NONE, 0, 0, 16, 16, 60, 0), - M(0x1156, PAL_NONE, 0x1159, PAL_NONE, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1157, PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1158, PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1159, PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 60, 0), - M(0x1156, PAL_NONE, 0x1159, PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1157, PALETTE_TO_CREAM, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1158, PALETTE_TO_CREAM, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1159, PALETTE_TO_CREAM, 0, 0, 16, 16, 60, 0), - M(0x1156, PAL_NONE, 0x1159, PALETTE_TO_CREAM, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1157, PALETTE_TO_YELLOW, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1158, PALETTE_TO_YELLOW, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1159, PALETTE_TO_YELLOW, 0, 0, 16, 16, 60, 0), - M(0x1156, PAL_NONE, 0x1159, PALETTE_TO_YELLOW, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1157, PAL_NONE, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1158, PAL_NONE, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11df, PAL_NONE, 0, 0, 16, 16, 60, 0), - M(0x1156, PAL_NONE, 0x11df, PAL_NONE, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1157, PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1158, PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11df, PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 60, 0), - M(0x1156, PAL_NONE, 0x11df, PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1157, PALETTE_TO_CREAM, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1158, PALETTE_TO_CREAM, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11df, PALETTE_TO_CREAM, 0, 0, 16, 16, 60, 0), - M(0x1156, PAL_NONE, 0x11df, PALETTE_TO_CREAM, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1157, PALETTE_TO_YELLOW, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1158, PALETTE_TO_YELLOW, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11df, PALETTE_TO_YELLOW, 0, 0, 16, 16, 60, 0), - M(0x1156, PAL_NONE, 0x11df, PALETTE_TO_YELLOW, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x115b, PAL_NONE, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x115c, PAL_NONE, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x115d, PAL_NONE, 0, 0, 16, 16, 60, 0), - M(0x115a, PAL_NONE, 0x115d, PAL_NONE, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x115b, PALETTE_TO_RED, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x115c, PALETTE_TO_RED, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x115d, PALETTE_TO_RED, 0, 0, 16, 16, 60, 0), - M(0x115a, PAL_NONE, 0x115d, PALETTE_TO_RED, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x115b, PALETTE_TO_ORANGE, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x115c, PALETTE_TO_ORANGE, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x115d, PALETTE_TO_ORANGE, 0, 0, 16, 16, 60, 0), - M(0x115a, PAL_NONE, 0x115d, PALETTE_TO_ORANGE, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x115b, PALETTE_TO_BROWN, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x115c, PALETTE_TO_BROWN, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x115d, PALETTE_TO_BROWN, 0, 0, 16, 16, 60, 0), - M(0x115a, PAL_NONE, 0x115d, PALETTE_TO_BROWN, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x115b, PAL_NONE, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x115c, PAL_NONE, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e0, PAL_NONE, 0, 0, 16, 16, 60, 0), - M(0x115a, PAL_NONE, 0x11e0, PAL_NONE, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x115b, PALETTE_TO_RED, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x115c, PALETTE_TO_RED, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e0, PALETTE_TO_RED, 0, 0, 16, 16, 60, 0), - M(0x115a, PAL_NONE, 0x11e0, PALETTE_TO_RED, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x115b, PALETTE_TO_ORANGE, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x115c, PALETTE_TO_ORANGE, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e0, PALETTE_TO_ORANGE, 0, 0, 16, 16, 60, 0), - M(0x115a, PAL_NONE, 0x11e0, PALETTE_TO_ORANGE, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x115b, PALETTE_TO_BROWN, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x115c, PALETTE_TO_BROWN, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e0, PALETTE_TO_BROWN, 0, 0, 16, 16, 60, 0), - M(0x115a, PAL_NONE, 0x11e0, PALETTE_TO_BROWN, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1160, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1161, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1162, PAL_NONE, 0, 0, 16, 16, 20, 0), - M(0x115e, PAL_NONE, 0x1162, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1160, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1161, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1162, PAL_NONE, 0, 0, 16, 16, 20, 0), - M(0x115e, PAL_NONE, 0x1162, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1166, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1167, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1168, PAL_NONE, 0, 0, 16, 16, 20, 0), - M(0x1164, PAL_NONE, 0x1168, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1166, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1167, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1168, PAL_NONE, 0, 0, 16, 16, 20, 0), - M(0x1164, PAL_NONE, 0x1168, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1160, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1161, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1162, PAL_NONE, 0, 0, 16, 16, 20, 0), - M(0x115f, PAL_NONE, 0x1163, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1160, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1161, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1162, PAL_NONE, 0, 0, 16, 16, 20, 0), - M(0x115f, PAL_NONE, 0x1163, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1166, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1167, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1168, PAL_NONE, 0, 0, 16, 16, 20, 0), - M(0x1165, PAL_NONE, 0x1169, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1166, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1167, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1168, PAL_NONE, 0, 0, 16, 16, 20, 0), - M(0x1165, PAL_NONE, 0x1169, PAL_NONE, 0, 0, 16, 16, 20, 0), - M(0x116b, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x116c, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x116d, PAL_NONE, 0, 0, 16, 16, 40, 0), - M(0x116a, PAL_NONE, 0x116d, PAL_NONE, 0, 0, 16, 16, 40, 0), - M(0x116b, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x116c, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x116d, PAL_NONE, 0, 0, 16, 16, 40, 0), - M(0x116a, PAL_NONE, 0x116d, PAL_NONE, 0, 0, 16, 16, 40, 0), - M(0x116b, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x116c, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x116d, PAL_NONE, 0, 0, 16, 16, 40, 0), - M(0x116a, PAL_NONE, 0x116d, PAL_NONE, 0, 0, 16, 16, 40, 0), - M(0x116b, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x116c, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x116d, PAL_NONE, 0, 0, 16, 16, 40, 0), - M(0x116a, PAL_NONE, 0x116d, PAL_NONE, 0, 0, 16, 16, 40, 0), - M(0x116b, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x116c, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e2, PAL_NONE, 0, 0, 16, 16, 40, 0), - M(0x116a, PAL_NONE, 0x11e2, PAL_NONE, 0, 0, 16, 16, 40, 0), - M(0x116b, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x116c, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e2, PAL_NONE, 0, 0, 16, 16, 40, 0), - M(0x116a, PAL_NONE, 0x11e2, PAL_NONE, 0, 0, 16, 16, 40, 0), - M(0x116b, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x116c, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e2, PAL_NONE, 0, 0, 16, 16, 40, 0), - M(0x116a, PAL_NONE, 0x11e2, PAL_NONE, 0, 0, 16, 16, 40, 0), - M(0x116b, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x116c, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e2, PAL_NONE, 0, 0, 16, 16, 40, 0), - M(0x116a, PAL_NONE, 0x11e2, PAL_NONE, 0, 0, 16, 16, 40, 0), - M(0x116f, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1170, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1171, PAL_NONE, 0, 0, 16, 16, 40, 0), - M(0x116e, PAL_NONE, 0x1171, PAL_NONE, 0, 0, 16, 16, 40, 0), - M(0x116f, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1170, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1171, PAL_NONE, 0, 0, 16, 16, 40, 0), - M(0x116e, PAL_NONE, 0x1171, PAL_NONE, 0, 0, 16, 16, 40, 0), - M(0x116f, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1170, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1171, PAL_NONE, 0, 0, 16, 16, 40, 0), - M(0x116e, PAL_NONE, 0x1171, PAL_NONE, 0, 0, 16, 16, 40, 0), - M(0x116f, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1170, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1171, PAL_NONE, 0, 0, 16, 16, 40, 0), - M(0x116e, PAL_NONE, 0x1171, PAL_NONE, 0, 0, 16, 16, 40, 0), - M(0x116f, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1170, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e3, PAL_NONE, 0, 0, 16, 16, 40, 0), - M(0x116e, PAL_NONE, 0x11e3, PAL_NONE, 0, 0, 16, 16, 40, 0), - M(0x116f, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1170, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e3, PAL_NONE, 0, 0, 16, 16, 40, 0), - M(0x116e, PAL_NONE, 0x11e3, PAL_NONE, 0, 0, 16, 16, 40, 0), - M(0x116f, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1170, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e3, PAL_NONE, 0, 0, 16, 16, 40, 0), - M(0x116e, PAL_NONE, 0x11e3, PAL_NONE, 0, 0, 16, 16, 40, 0), - M(0x116f, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1170, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e3, PAL_NONE, 0, 0, 16, 16, 40, 0), - M(0x116e, PAL_NONE, 0x11e3, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1173, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1174, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1175, PAL_NONE, 0, 0, 16, 16, 40, 0), - M(0x1172, PAL_NONE, 0x1175, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1173, PALETTE_TO_BROWN, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1174, PALETTE_TO_BROWN, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1175, PALETTE_TO_BROWN, 0, 0, 16, 16, 40, 0), - M(0x1172, PAL_NONE, 0x1175, PALETTE_TO_BROWN, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1173, PALETTE_TO_CREAM, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1174, PALETTE_TO_CREAM, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1175, PALETTE_TO_CREAM, 0, 0, 16, 16, 40, 0), - M(0x1172, PAL_NONE, 0x1175, PALETTE_TO_CREAM, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1173, PALETTE_TO_GREY, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1174, PALETTE_TO_GREY, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1175, PALETTE_TO_GREY, 0, 0, 16, 16, 40, 0), - M(0x1172, PAL_NONE, 0x1175, PALETTE_TO_GREY, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1173, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1174, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1175, PAL_NONE, 0, 0, 16, 16, 40, 0), - M(0x11e4, PAL_NONE, 0x11e5, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1173, PALETTE_TO_BROWN, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1174, PALETTE_TO_BROWN, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1175, PALETTE_TO_BROWN, 0, 0, 16, 16, 40, 0), - M(0x11e4, PAL_NONE, 0x11e5, PALETTE_TO_BROWN, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1173, PALETTE_TO_CREAM, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1174, PALETTE_TO_CREAM, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1175, PALETTE_TO_CREAM, 0, 0, 16, 16, 40, 0), - M(0x11e4, PAL_NONE, 0x11e5, PALETTE_TO_CREAM, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1173, PALETTE_TO_GREY, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1174, PALETTE_TO_GREY, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1175, PALETTE_TO_GREY, 0, 0, 16, 16, 40, 0), - M(0x11e4, PAL_NONE, 0x11e5, PALETTE_TO_GREY, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1176, PAL_NONE, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1176, PAL_NONE, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1176, PAL_NONE, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1176, PAL_NONE, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1176, PAL_NONE, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1176, PAL_NONE, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1176, PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1176, PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1176, PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1176, PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1176, PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1176, PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e6, PAL_NONE, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e6, PAL_NONE, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e6, PAL_NONE, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e6, PAL_NONE, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e6, PAL_NONE, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e6, PAL_NONE, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e6, PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e6, PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e6, PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e6, PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e6, PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e6, PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 60, 0), - M(0x1177, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1179, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117b, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117b, PAL_NONE, 0, 0, 16, 16, 40, 0), - M(0x1177, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1179, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117b, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117b, PAL_NONE, 0, 0, 16, 16, 40, 0), - M(0x1177, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1179, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117b, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117b, PAL_NONE, 0, 0, 16, 16, 40, 0), - M(0x1177, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1179, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117b, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117b, PAL_NONE, 0, 0, 16, 16, 40, 0), - M(0x1178, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117a, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117c, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117c, PAL_NONE, 0, 0, 16, 16, 40, 0), - M(0x1178, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117a, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117c, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117c, PAL_NONE, 0, 0, 16, 16, 40, 0), - M(0x1178, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117a, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117c, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117c, PAL_NONE, 0, 0, 16, 16, 40, 0), - M(0x1178, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117a, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117c, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117c, PAL_NONE, 0, 0, 16, 16, 40, 0), - M(0x1177, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1179, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e7, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e7, PAL_NONE, 0, 0, 16, 16, 40, 0), - M(0x1177, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1179, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e7, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e7, PAL_NONE, 0, 0, 16, 16, 40, 0), - M(0x1177, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1179, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e7, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e7, PAL_NONE, 0, 0, 16, 16, 40, 0), - M(0x1177, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1179, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e7, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e7, PAL_NONE, 0, 0, 16, 16, 40, 0), - M(0x1178, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117a, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e8, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e8, PAL_NONE, 0, 0, 16, 16, 40, 0), - M(0x1178, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117a, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e8, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e8, PAL_NONE, 0, 0, 16, 16, 40, 0), - M(0x1178, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117a, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e8, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e8, PAL_NONE, 0, 0, 16, 16, 40, 0), - M(0x1178, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117a, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e8, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e8, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117d, PAL_NONE, 0, 0, 16, 16, 50, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117e, PAL_NONE, 0, 0, 16, 16, 50, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117f, PAL_NONE, 0, 0, 16, 16, 50, 0), - M( SPR_CONCRETE_GROUND,PAL_NONE, 0x117f, PAL_NONE, 0, 0, 16, 16, 50, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117d, PAL_NONE, 0, 0, 16, 16, 50, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117e, PAL_NONE, 0, 0, 16, 16, 50, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117f, PAL_NONE, 0, 0, 16, 16, 50, 0), - M( SPR_CONCRETE_GROUND,PAL_NONE, 0x117f, PAL_NONE, 0, 0, 16, 16, 50, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117d, PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 50, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117e, PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 50, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117f, PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 50, 0), - M( SPR_CONCRETE_GROUND,PAL_NONE, 0x117f, PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 50, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117d, PALETTE_TO_STRUCT_WHITE, 0, 0, 16, 16, 50, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117e, PALETTE_TO_STRUCT_WHITE, 0, 0, 16, 16, 50, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117f, PALETTE_TO_STRUCT_WHITE, 0, 0, 16, 16, 50, 0), - M( SPR_CONCRETE_GROUND,PAL_NONE, 0x117f, PALETTE_TO_STRUCT_WHITE, 0, 0, 16, 16, 50, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117d, PAL_NONE, 0, 0, 16, 16, 50, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117e, PAL_NONE, 0, 0, 16, 16, 50, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e1, PAL_NONE, 0, 0, 16, 16, 50, 0), - M( SPR_CONCRETE_GROUND,PAL_NONE, 0x11e1, PAL_NONE, 0, 0, 16, 16, 50, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117d, PAL_NONE, 0, 0, 16, 16, 50, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117e, PAL_NONE, 0, 0, 16, 16, 50, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e1, PAL_NONE, 0, 0, 16, 16, 50, 0), - M( SPR_CONCRETE_GROUND,PAL_NONE, 0x11e1, PAL_NONE, 0, 0, 16, 16, 50, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117d, PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 50, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117e, PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 50, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e1, PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 50, 0), - M( SPR_CONCRETE_GROUND,PAL_NONE, 0x11e1, PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 50, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117d, PALETTE_TO_STRUCT_WHITE, 0, 0, 16, 16, 50, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117e, PALETTE_TO_STRUCT_WHITE, 0, 0, 16, 16, 50, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e1, PALETTE_TO_STRUCT_WHITE, 0, 0, 16, 16, 50, 0), - M( SPR_CONCRETE_GROUND,PAL_NONE, 0x11e1, PALETTE_TO_STRUCT_WHITE, 0, 0, 16, 16, 50, 0), - M(0x1180, PAL_NONE, 0x1181, PAL_NONE, 0, 0, 16, 16, 10, 0), - M(0x1183, PAL_NONE, 0x1182, PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 60, 0), - M(0x1183, PAL_NONE, 0x1182, PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 60, 0), - M(0x1183, PAL_NONE, 0x1184, PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 60, 0), - M(0x1180, PAL_NONE, 0x1181, PAL_NONE, 0, 0, 16, 16, 10, 0), - M(0x1183, PAL_NONE, 0x1182, PALETTE_TO_ORANGE, 0, 0, 16, 16, 60, 0), - M(0x1183, PAL_NONE, 0x1182, PALETTE_TO_ORANGE, 0, 0, 16, 16, 60, 0), - M(0x1183, PAL_NONE, 0x1184, PALETTE_TO_ORANGE, 0, 0, 16, 16, 60, 0), - M(0x1180, PAL_NONE, 0x1181, PAL_NONE, 0, 0, 16, 16, 10, 0), - M(0x1183, PAL_NONE, 0x1182, PALETTE_TO_BROWN, 0, 0, 16, 16, 60, 0), - M(0x1183, PAL_NONE, 0x1182, PALETTE_TO_BROWN, 0, 0, 16, 16, 60, 0), - M(0x1183, PAL_NONE, 0x1184, PALETTE_TO_BROWN, 0, 0, 16, 16, 60, 0), - M(0x1180, PAL_NONE, 0x1181, PAL_NONE, 0, 0, 16, 16, 10, 0), - M(0x1183, PAL_NONE, 0x1182, PALETTE_TO_GREY, 0, 0, 16, 16, 60, 0), - M(0x1183, PAL_NONE, 0x1182, PALETTE_TO_GREY, 0, 0, 16, 16, 60, 0), - M(0x1183, PAL_NONE, 0x1184, PALETTE_TO_GREY, 0, 0, 16, 16, 60, 0), - M(0x1180, PAL_NONE, 0x1181, PAL_NONE, 0, 0, 16, 16, 10, 0), - M(0x1183, PAL_NONE, 0x1182, PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 60, 0), - M(0x1183, PAL_NONE, 0x1182, PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 60, 0), - M(0x1183, PAL_NONE, 0x11e9, PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 60, 0), - M(0x1180, PAL_NONE, 0x1181, PAL_NONE, 0, 0, 16, 16, 10, 0), - M(0x1183, PAL_NONE, 0x1182, PALETTE_TO_ORANGE, 0, 0, 16, 16, 60, 0), - M(0x1183, PAL_NONE, 0x1182, PALETTE_TO_ORANGE, 0, 0, 16, 16, 60, 0), - M(0x1183, PAL_NONE, 0x11e9, PALETTE_TO_ORANGE, 0, 0, 16, 16, 60, 0), - M(0x1180, PAL_NONE, 0x1181, PAL_NONE, 0, 0, 16, 16, 10, 0), - M(0x1183, PAL_NONE, 0x1182, PALETTE_TO_BROWN, 0, 0, 16, 16, 60, 0), - M(0x1183, PAL_NONE, 0x1182, PALETTE_TO_BROWN, 0, 0, 16, 16, 60, 0), - M(0x1183, PAL_NONE, 0x11e9, PALETTE_TO_BROWN, 0, 0, 16, 16, 60, 0), - M(0x1180, PAL_NONE, 0x1181, PAL_NONE, 0, 0, 16, 16, 10, 0), - M(0x1183, PAL_NONE, 0x1182, PALETTE_TO_GREY, 0, 0, 16, 16, 60, 0), - M(0x1183, PAL_NONE, 0x1182, PALETTE_TO_GREY, 0, 0, 16, 16, 60, 0), - M(0x1183, PAL_NONE, 0x11e9, PALETTE_TO_GREY, 0, 0, 16, 16, 60, 0), - M(0x1185, PAL_NONE, 0x1187, PAL_NONE, 0, 0, 16, 16, 10, 0), - M(0x1185, PAL_NONE, 0x1189, PAL_NONE, 0, 0, 16, 16, 10, 0), - M(0x1185, PAL_NONE, 0x1189, PAL_NONE, 0, 0, 16, 16, 10, 0), - M(0x1185, PAL_NONE, 0x118b, PAL_NONE, 0, 0, 16, 16, 10, 0), - M(0x1185, PAL_NONE, 0x1187, PAL_NONE, 0, 0, 16, 16, 10, 0), - M(0x1185, PAL_NONE, 0x1189, PAL_NONE, 0, 0, 16, 16, 10, 0), - M(0x1185, PAL_NONE, 0x1189, PAL_NONE, 0, 0, 16, 16, 10, 0), - M(0x1185, PAL_NONE, 0x118b, PAL_NONE, 0, 0, 16, 16, 10, 0), - M(0x1185, PAL_NONE, 0x1187, PAL_NONE, 0, 0, 16, 16, 10, 0), - M(0x1185, PAL_NONE, 0x1189, PAL_NONE, 0, 0, 16, 16, 10, 0), - M(0x1185, PAL_NONE, 0x1189, PAL_NONE, 0, 0, 16, 16, 10, 0), - M(0x1185, PAL_NONE, 0x118b, PAL_NONE, 0, 0, 16, 16, 10, 0), - M(0x1185, PAL_NONE, 0x1187, PAL_NONE, 0, 0, 16, 16, 10, 0), - M(0x1185, PAL_NONE, 0x1189, PAL_NONE, 0, 0, 16, 16, 10, 0), - M(0x1185, PAL_NONE, 0x1189, PAL_NONE, 0, 0, 16, 16, 10, 0), - M(0x1185, PAL_NONE, 0x118b, PAL_NONE, 0, 0, 16, 16, 10, 0), - M(0x1186, PAL_NONE, 0x1188, PAL_NONE, 0, 0, 16, 16, 10, 0), - M(0x1186, PAL_NONE, 0x118a, PAL_NONE, 0, 0, 16, 16, 10, 0), - M(0x1186, PAL_NONE, 0x118a, PAL_NONE, 0, 0, 16, 16, 10, 0), - M(0x1186, PAL_NONE, 0x118c, PAL_NONE, 0, 0, 16, 16, 10, 0), - M(0x1186, PAL_NONE, 0x1188, PAL_NONE, 0, 0, 16, 16, 10, 0), - M(0x1186, PAL_NONE, 0x118a, PAL_NONE, 0, 0, 16, 16, 10, 0), - M(0x1186, PAL_NONE, 0x118a, PAL_NONE, 0, 0, 16, 16, 10, 0), - M(0x1186, PAL_NONE, 0x118c, PAL_NONE, 0, 0, 16, 16, 10, 0), - M(0x1186, PAL_NONE, 0x1188, PAL_NONE, 0, 0, 16, 16, 10, 0), - M(0x1186, PAL_NONE, 0x118a, PAL_NONE, 0, 0, 16, 16, 10, 0), - M(0x1186, PAL_NONE, 0x118a, PAL_NONE, 0, 0, 16, 16, 10, 0), - M(0x1186, PAL_NONE, 0x118c, PAL_NONE, 0, 0, 16, 16, 10, 0), - M(0x1186, PAL_NONE, 0x1188, PAL_NONE, 0, 0, 16, 16, 10, 0), - M(0x1186, PAL_NONE, 0x118a, PAL_NONE, 0, 0, 16, 16, 10, 0), - M(0x1186, PAL_NONE, 0x118a, PAL_NONE, 0, 0, 16, 16, 10, 0), - M(0x1186, PAL_NONE, 0x118c, PAL_NONE, 0, 0, 16, 16, 10, 0), - M(0x1185, PAL_NONE, 0x1187, PAL_NONE, 0, 0, 16, 16, 10, 0), - M(0x1185, PAL_NONE, 0x1189, PAL_NONE, 0, 0, 16, 16, 10, 0), - M(0x1185, PAL_NONE, 0x1189, PAL_NONE, 0, 0, 16, 16, 10, 0), - M(0x1185, PAL_NONE, 0x11ea, PAL_NONE, 0, 0, 16, 16, 10, 0), - M(0x1185, PAL_NONE, 0x1187, PAL_NONE, 0, 0, 16, 16, 10, 0), - M(0x1185, PAL_NONE, 0x1189, PAL_NONE, 0, 0, 16, 16, 10, 0), - M(0x1185, PAL_NONE, 0x1189, PAL_NONE, 0, 0, 16, 16, 10, 0), - M(0x1185, PAL_NONE, 0x11ea, PAL_NONE, 0, 0, 16, 16, 10, 0), - M(0x1185, PAL_NONE, 0x1187, PAL_NONE, 0, 0, 16, 16, 10, 0), - M(0x1185, PAL_NONE, 0x1189, PAL_NONE, 0, 0, 16, 16, 10, 0), - M(0x1185, PAL_NONE, 0x1189, PAL_NONE, 0, 0, 16, 16, 10, 0), - M(0x1185, PAL_NONE, 0x11ea, PAL_NONE, 0, 0, 16, 16, 10, 0), - M(0x1185, PAL_NONE, 0x1187, PAL_NONE, 0, 0, 16, 16, 10, 0), - M(0x1185, PAL_NONE, 0x1189, PAL_NONE, 0, 0, 16, 16, 10, 0), - M(0x1185, PAL_NONE, 0x1189, PAL_NONE, 0, 0, 16, 16, 10, 0), - M(0x1185, PAL_NONE, 0x11ea, PAL_NONE, 0, 0, 16, 16, 10, 0), - M(0x1186, PAL_NONE, 0x1188, PAL_NONE, 0, 0, 16, 16, 10, 0), - M(0x1186, PAL_NONE, 0x118a, PAL_NONE, 0, 0, 16, 16, 10, 0), - M(0x1186, PAL_NONE, 0x118a, PAL_NONE, 0, 0, 16, 16, 10, 0), - M(0x1186, PAL_NONE, 0x11eb, PAL_NONE, 0, 0, 16, 16, 10, 0), - M(0x1186, PAL_NONE, 0x1188, PAL_NONE, 0, 0, 16, 16, 10, 0), - M(0x1186, PAL_NONE, 0x118a, PAL_NONE, 0, 0, 16, 16, 10, 0), - M(0x1186, PAL_NONE, 0x118a, PAL_NONE, 0, 0, 16, 16, 10, 0), - M(0x1186, PAL_NONE, 0x11eb, PAL_NONE, 0, 0, 16, 16, 10, 0), - M(0x1186, PAL_NONE, 0x1188, PAL_NONE, 0, 0, 16, 16, 10, 0), - M(0x1186, PAL_NONE, 0x118a, PAL_NONE, 0, 0, 16, 16, 10, 0), - M(0x1186, PAL_NONE, 0x118a, PAL_NONE, 0, 0, 16, 16, 10, 0), - M(0x1186, PAL_NONE, 0x11eb, PAL_NONE, 0, 0, 16, 16, 10, 0), - M(0x1186, PAL_NONE, 0x1188, PAL_NONE, 0, 0, 16, 16, 10, 0), - M(0x1186, PAL_NONE, 0x118a, PAL_NONE, 0, 0, 16, 16, 10, 0), - M(0x1186, PAL_NONE, 0x118a, PAL_NONE, 0, 0, 16, 16, 10, 0), - M(0x1186, PAL_NONE, 0x11eb, PAL_NONE, 0, 0, 16, 16, 10, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11ec, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11ed, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11ed, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11ee, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11ec, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11ed, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11ed, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11ee, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11ec, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11ed, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11ed, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11ee, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11ec, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11ed, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11ed, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11ee, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11ef, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f0, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f0, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f1, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11ef, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f0, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f0, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f1, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11ef, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f0, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f0, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f1, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11ef, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f0, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f0, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f1, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f2, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f3, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f3, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f4, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f2, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f3, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f3, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f4, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f2, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f3, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f3, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f4, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f2, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f3, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f3, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f4, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f5, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f5, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f5, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f6, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f6, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f6, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f7, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f7, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f7, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f8, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f8, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f8, PAL_NONE, 0, 0, 16, 16, 20, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f9, PAL_NONE, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fa, PAL_NONE, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fa, PAL_NONE, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fb, PAL_NONE, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f9, PAL_NONE, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fa, PAL_NONE, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fa, PAL_NONE, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fb, PAL_NONE, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f9, PAL_NONE, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fa, PAL_NONE, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fa, PAL_NONE, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fb, PAL_NONE, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f9, PAL_NONE, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fa, PAL_NONE, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fa, PAL_NONE, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fb, PAL_NONE, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fc, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fc, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fc, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fc, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fc, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fc, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fc, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fc, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fc, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fc, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fc, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fc, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fd, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fe, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fe, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11ff, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fd, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fe, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fe, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11ff, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fd, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fe, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fe, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11ff, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fd, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fe, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fe, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11ff, PAL_NONE, 0, 0, 16, 16, 40, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1200, PAL_NONE, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1201, PAL_NONE, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1201, PAL_NONE, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1202, PAL_NONE, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1200, PALETTE_TO_PINK, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1201, PALETTE_TO_PINK, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1201, PALETTE_TO_PINK, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1202, PALETTE_TO_PINK, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1200, PALETTE_TO_YELLOW, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1201, PALETTE_TO_YELLOW, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1201, PALETTE_TO_YELLOW, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1202, PALETTE_TO_YELLOW, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1200, PALETTE_TO_RED, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1201, PALETTE_TO_RED, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1201, PALETTE_TO_RED, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1202, PALETTE_TO_RED, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1203, PAL_NONE, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1204, PAL_NONE, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1204, PAL_NONE, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1205, PAL_NONE, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1203, PALETTE_TO_PINK, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1204, PALETTE_TO_PINK, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1204, PALETTE_TO_PINK, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1205, PALETTE_TO_PINK, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1203, PALETTE_TO_YELLOW, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1204, PALETTE_TO_YELLOW, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1204, PALETTE_TO_YELLOW, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1205, PALETTE_TO_YELLOW, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1203, PALETTE_TO_RED, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1204, PALETTE_TO_RED, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1204, PALETTE_TO_RED, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1205, PALETTE_TO_RED, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1206, PAL_NONE, 0, 0, 16, 16, 80, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1208, PAL_NONE, 0, 0, 16, 16, 80, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1208, PAL_NONE, 0, 0, 16, 16, 80, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x120a, PAL_NONE, 0, 0, 16, 16, 80, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1206, PAL_NONE, 0, 0, 16, 16, 80, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1208, PAL_NONE, 0, 0, 16, 16, 80, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1208, PAL_NONE, 0, 0, 16, 16, 80, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x120a, PAL_NONE, 0, 0, 16, 16, 80, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1206, PAL_NONE, 0, 0, 16, 16, 80, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1208, PAL_NONE, 0, 0, 16, 16, 80, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1208, PAL_NONE, 0, 0, 16, 16, 80, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x120a, PAL_NONE, 0, 0, 16, 16, 80, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1206, PAL_NONE, 0, 0, 16, 16, 80, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1208, PAL_NONE, 0, 0, 16, 16, 80, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1208, PAL_NONE, 0, 0, 16, 16, 80, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x120a, PAL_NONE, 0, 0, 16, 16, 80, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1207, PAL_NONE, 0, 0, 16, 16, 80, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1209, PAL_NONE, 0, 0, 16, 16, 80, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1209, PAL_NONE, 0, 0, 16, 16, 80, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x120b, PAL_NONE, 0, 0, 16, 16, 80, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1207, PAL_NONE, 0, 0, 16, 16, 80, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1209, PAL_NONE, 0, 0, 16, 16, 80, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1209, PAL_NONE, 0, 0, 16, 16, 80, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x120b, PAL_NONE, 0, 0, 16, 16, 80, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1207, PAL_NONE, 0, 0, 16, 16, 80, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1209, PAL_NONE, 0, 0, 16, 16, 80, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1209, PAL_NONE, 0, 0, 16, 16, 80, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x120b, PAL_NONE, 0, 0, 16, 16, 80, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1207, PAL_NONE, 0, 0, 16, 16, 80, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1209, PAL_NONE, 0, 0, 16, 16, 80, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1209, PAL_NONE, 0, 0, 16, 16, 80, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x120b, PAL_NONE, 0, 0, 16, 16, 80, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x120c, PAL_NONE, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x120d, PAL_NONE, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x120d, PAL_NONE, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x120e, PAL_NONE, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x120c, PAL_NONE, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x120d, PAL_NONE, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x120d, PAL_NONE, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x120e, PAL_NONE, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x120c, PAL_NONE, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x120d, PAL_NONE, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x120d, PAL_NONE, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x120e, PAL_NONE, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x120c, PAL_NONE, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x120d, PAL_NONE, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x120d, PAL_NONE, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x120e, PAL_NONE, 0, 0, 16, 16, 60, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x120f, PAL_NONE, 0, 0, 16, 16, 50, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1210, PAL_NONE, 0, 0, 16, 16, 50, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1210, PAL_NONE, 0, 0, 16, 16, 50, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1211, PAL_NONE, 0, 0, 16, 16, 50, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x120f, PAL_NONE, 0, 0, 16, 16, 50, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1210, PAL_NONE, 0, 0, 16, 16, 50, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1210, PAL_NONE, 0, 0, 16, 16, 50, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1211, PAL_NONE, 0, 0, 16, 16, 50, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x120f, PAL_NONE, 0, 0, 16, 16, 50, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1210, PAL_NONE, 0, 0, 16, 16, 50, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1210, PAL_NONE, 0, 0, 16, 16, 50, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1211, PAL_NONE, 0, 0, 16, 16, 50, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x120f, PAL_NONE, 0, 0, 16, 16, 50, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1210, PAL_NONE, 0, 0, 16, 16, 50, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1210, PAL_NONE, 0, 0, 16, 16, 50, 0), - M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1211, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1213, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1214, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1214, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1215, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1213, PALETTE_TO_RED, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1214, PALETTE_TO_RED, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1214, PALETTE_TO_RED, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1215, PALETTE_TO_RED, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1213, PALETTE_TO_PINK, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1214, PALETTE_TO_PINK, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1214, PALETTE_TO_PINK, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1215, PALETTE_TO_PINK, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1213, PALETTE_TO_PALE_GREEN, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1214, PALETTE_TO_PALE_GREEN, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1214, PALETTE_TO_PALE_GREEN, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1215, PALETTE_TO_PALE_GREEN, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1216, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1217, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1217, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1218, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1216, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1217, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1217, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1218, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1216, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1217, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1217, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1218, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1216, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1217, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1217, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1218, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1219, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x121a, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x121a, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x121b, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1219, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x121a, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x121a, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x121b, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1219, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x121a, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x121a, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x121b, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1219, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x121a, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x121a, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x121b, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x121c, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x121d, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x121d, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x121e, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x121c, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x121d, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x121d, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x121e, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x121c, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x121d, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x121d, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x121e, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x121c, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x121d, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x121d, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x121e, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x121f, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1220, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1220, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1221, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x121f, PALETTE_TO_PINK, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1220, PALETTE_TO_PINK, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1220, PALETTE_TO_PINK, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1221, PALETTE_TO_PINK, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x121f, PALETTE_TO_MAUVE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1220, PALETTE_TO_MAUVE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1220, PALETTE_TO_MAUVE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1221, PALETTE_TO_MAUVE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x121f, PALETTE_TO_CREAM, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1220, PALETTE_TO_CREAM, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1220, PALETTE_TO_CREAM, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1221, PALETTE_TO_CREAM, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1222, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1223, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1223, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1224, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1222, PALETTE_TO_PINK, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1223, PALETTE_TO_PINK, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1223, PALETTE_TO_PINK, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1224, PALETTE_TO_PINK, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1222, PALETTE_TO_CREAM, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1223, PALETTE_TO_CREAM, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1223, PALETTE_TO_CREAM, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1224, PALETTE_TO_CREAM, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1222, PALETTE_TO_PALE_GREEN, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1223, PALETTE_TO_PALE_GREEN, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1223, PALETTE_TO_PALE_GREEN, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1224, PALETTE_TO_PALE_GREEN, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1225, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1226, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1226, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1227, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1225, PALETTE_TO_PINK, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1226, PALETTE_TO_PINK, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1226, PALETTE_TO_PINK, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1227, PALETTE_TO_PINK, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1225, PALETTE_TO_RED, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1226, PALETTE_TO_RED, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1226, PALETTE_TO_RED, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1227, PALETTE_TO_RED, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1225, PALETTE_TO_PALE_GREEN, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1226, PALETTE_TO_PALE_GREEN, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1226, PALETTE_TO_PALE_GREEN, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1227, PALETTE_TO_PALE_GREEN, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1228, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1229, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1229, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x122a, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1228, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1229, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1229, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x122a, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1228, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1229, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1229, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x122a, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1228, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1229, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1229, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x122a, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x122b, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x122d, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x122d, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x122f, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x122b, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x122d, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x122d, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x122f, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x122b, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x122d, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x122d, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x122f, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x122b, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x122d, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x122d, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x122f, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x122c, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x122e, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x122e, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1230, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x122c, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x122e, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x122e, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1230, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x122c, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x122e, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x122e, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1230, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x122c, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x122e, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x122e, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1230, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1231, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1232, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1232, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1233, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1231, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1232, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1232, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1233, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1231, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1232, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1232, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1233, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1231, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1232, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1232, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1233, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1234, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1235, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1235, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1236, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1234, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1235, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1235, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1236, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1234, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1235, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1235, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1236, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1234, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1235, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1235, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1236, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1237, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1238, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1238, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1239, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1237, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1238, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1238, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1239, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1237, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1238, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1238, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1239, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1237, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1238, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1238, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1239, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x123a, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x123b, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x123b, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x123c, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x123a, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x123b, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x123b, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x123c, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x123a, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x123b, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x123b, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x123c, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x123a, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x123b, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x123b, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x123c, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x123d, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x123e, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x123e, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x123f, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x123d, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x123e, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x123e, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x123f, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x123d, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x123e, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x123e, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x123f, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x123d, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x123e, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x123e, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x123f, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1240, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1241, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1241, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1242, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1240, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1241, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1241, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1242, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1240, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1241, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1241, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1242, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1240, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1241, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1241, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1242, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1256, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1256, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1256, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1256, PALETTE_TO_PALE_GREEN, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1256, PALETTE_TO_PALE_GREEN, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1256, PALETTE_TO_PALE_GREEN, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1256, PALETTE_TO_RED, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1256, PALETTE_TO_RED, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1256, PALETTE_TO_RED, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1256, PALETTE_TO_CREAM, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1256, PALETTE_TO_CREAM, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1256, PALETTE_TO_CREAM, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1257, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1258, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1258, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1259, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1257, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1258, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1258, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1259, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1257, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1258, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1258, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1259, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1257, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1258, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1258, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1259, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x125a, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x125a, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x125a, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x125a, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x125a, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x125a, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x125a, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x125a, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x125a, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x125a, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x125a, PAL_NONE, 0, 0, 16, 16, 50, 0), - M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x125a, PAL_NONE, 0, 0, 16, 16, 50, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x58d, PAL_NONE, 0, 0, 14, 14, 8, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x58e, PAL_NONE, 0, 0, 14, 14, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x58f, PAL_NONE, 0, 0, 14, 14, 60, 0), + M( 0x590, PAL_NONE, 0x58f, PAL_NONE, 0, 0, 14, 14, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x58d, PAL_NONE, 0, 0, 14, 14, 8, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x58e, PAL_NONE, 0, 0, 14, 14, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x591, PAL_NONE, 0, 0, 14, 14, 60, 0), + M( 0x590, PAL_NONE, 0x591, PAL_NONE, 0, 0, 14, 14, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x58d, PALETTE_TO_STRUCT_WHITE, 0, 0, 14, 14, 8, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x58e, PALETTE_TO_STRUCT_WHITE, 0, 0, 14, 14, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x591, PALETTE_TO_STRUCT_WHITE, 0, 0, 14, 14, 60, 0), + M( 0x590, PAL_NONE, 0x591, PALETTE_TO_STRUCT_WHITE, 0, 0, 14, 14, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x58d, PALETTE_TO_STRUCT_CONCRETE, 0, 0, 14, 14, 8, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x58e, PALETTE_TO_STRUCT_CONCRETE, 0, 0, 14, 14, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x591, PALETTE_TO_STRUCT_CONCRETE, 0, 0, 14, 14, 60, 0), + M( 0x590, PAL_NONE, 0x591, PALETTE_TO_STRUCT_CONCRETE, 0, 0, 14, 14, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x592, PAL_NONE, 0, 0, 14, 16, 11, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x593, PAL_NONE, 0, 0, 14, 16, 33, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x594, PAL_NONE, 0, 0, 14, 16, 33, 0), + M( 0x595, PAL_NONE, 0x594, PAL_NONE, 0, 0, 14, 16, 33, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x592, PALETTE_TO_STRUCT_WHITE, 0, 0, 16, 16, 11, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x593, PALETTE_TO_STRUCT_WHITE, 0, 0, 16, 16, 33, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x594, PALETTE_TO_STRUCT_WHITE, 0, 0, 16, 16, 33, 0), + M( 0x595, PAL_NONE, 0x594, PALETTE_TO_STRUCT_WHITE, 0, 0, 16, 16, 33, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x592, PALETTE_TO_STRUCT_CONCRETE, 0, 0, 16, 16, 11, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x593, PALETTE_TO_STRUCT_CONCRETE, 0, 0, 16, 16, 33, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x594, PALETTE_TO_STRUCT_CONCRETE, 0, 0, 16, 16, 33, 0), + M( 0x595, PAL_NONE, 0x594, PALETTE_TO_STRUCT_CONCRETE, 0, 0, 16, 16, 33, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x592, PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 11, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x593, PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 33, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x594, PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 33, 0), + M( 0x595, PAL_NONE, 0x594, PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 33, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x596, PAL_NONE, 0, 0, 12, 12, 6, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x597, PAL_NONE, 0, 0, 12, 12, 17, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x598, PAL_NONE, 0, 0, 12, 12, 17, 0), + M( 0x599, PAL_NONE, 0x598, PAL_NONE, 0, 0, 12, 12, 17, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x596, PAL_NONE, 0, 0, 12, 12, 6, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x597, PAL_NONE, 0, 0, 12, 12, 17, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x598, PAL_NONE, 0, 0, 12, 12, 17, 0), + M( 0x599, PAL_NONE, 0x598, PAL_NONE, 0, 0, 12, 12, 17, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x596, PAL_NONE, 0, 0, 12, 12, 6, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x597, PAL_NONE, 0, 0, 12, 12, 17, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x598, PAL_NONE, 0, 0, 12, 12, 17, 0), + M( 0x599, PAL_NONE, 0x598, PAL_NONE, 0, 0, 12, 12, 17, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x596, PAL_NONE, 0, 0, 12, 12, 6, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x597, PAL_NONE, 0, 0, 12, 12, 17, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x598, PAL_NONE, 0, 0, 12, 12, 17, 0), + M( 0x599, PAL_NONE, 0x598, PAL_NONE, 0, 0, 12, 12, 17, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x59a, PAL_NONE, 0, 0, 14, 16, 16, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x59b, PAL_NONE, 0, 0, 14, 16, 22, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x59c, PAL_NONE, 0, 0, 14, 16, 35, 0), + M( 0x59d, PAL_NONE, 0x59c, PAL_NONE, 0, 0, 14, 16, 35, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x59a, PALETTE_CHURCH_RED, 0, 0, 14, 16, 16, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x59b, PALETTE_CHURCH_RED, 0, 0, 14, 16, 22, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x59c, PALETTE_CHURCH_RED, 0, 0, 14, 16, 35, 0), + M( 0x59d, PAL_NONE, 0x59c, PALETTE_CHURCH_RED, 0, 0, 14, 16, 35, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x59a, PALETTE_CHURCH_CREAM, 0, 0, 14, 16, 16, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x59b, PALETTE_CHURCH_CREAM, 0, 0, 14, 16, 22, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x59c, PALETTE_CHURCH_CREAM, 0, 0, 14, 16, 35, 0), + M( 0x59d, PAL_NONE, 0x59c, PALETTE_CHURCH_CREAM, 0, 0, 14, 16, 35, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x59a, PALETTE_CHURCH_CREAM, 0, 0, 14, 16, 16, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x59b, PALETTE_CHURCH_CREAM, 0, 0, 14, 16, 22, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x59c, PALETTE_CHURCH_CREAM, 0, 0, 14, 16, 35, 0), + M( 0x59d, PAL_NONE, 0x59c, PALETTE_CHURCH_CREAM, 0, 0, 14, 16, 35, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5a0, PAL_NONE, 0, 0, 15, 15, 5, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5a1, PAL_NONE, 0, 0, 15, 15, 53, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5a2, PAL_NONE, 0, 0, 15, 15, 53, 0), + M(SPR_CONCRETE_GROUND, PAL_NONE, 0x5a2, PAL_NONE, 0, 0, 15, 15, 53, 1), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5a0, PAL_NONE, 0, 0, 15, 15, 5, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5a1, PAL_NONE, 0, 0, 15, 15, 53, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5a2, PAL_NONE, 0, 0, 15, 15, 53, 0), + M(SPR_CONCRETE_GROUND, PAL_NONE, 0x5a2, PAL_NONE, 0, 0, 15, 15, 53, 1), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5a0, PAL_NONE, 0, 0, 15, 15, 5, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5a1, PAL_NONE, 0, 0, 15, 15, 53, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5a2, PAL_NONE, 0, 0, 15, 15, 53, 0), + M(SPR_CONCRETE_GROUND, PAL_NONE, 0x5a2, PAL_NONE, 0, 0, 15, 15, 53, 1), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5a0, PAL_NONE, 0, 0, 15, 15, 5, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5a1, PAL_NONE, 0, 0, 15, 15, 53, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5a2, PAL_NONE, 0, 0, 15, 15, 53, 0), + M(SPR_CONCRETE_GROUND, PAL_NONE, 0x5a2, PAL_NONE, 0, 0, 15, 15, 53, 1), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5a0, PAL_NONE, 0, 0, 15, 15, 5, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5a1, PAL_NONE, 0, 0, 15, 15, 53, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11d9, PAL_NONE, 0, 0, 15, 15, 53, 0), + M(SPR_CONCRETE_GROUND, PAL_NONE, 0x11d9, PAL_NONE, 0, 0, 15, 15, 53, 1), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5a0, PAL_NONE, 0, 0, 15, 15, 5, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5a1, PAL_NONE, 0, 0, 15, 15, 53, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11d9, PAL_NONE, 0, 0, 15, 15, 53, 0), + M(SPR_CONCRETE_GROUND, PAL_NONE, 0x11d9, PAL_NONE, 0, 0, 15, 15, 53, 1), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5a0, PAL_NONE, 0, 0, 15, 15, 5, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5a1, PAL_NONE, 0, 0, 15, 15, 53, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11d9, PAL_NONE, 0, 0, 15, 15, 53, 0), + M(SPR_CONCRETE_GROUND, PAL_NONE, 0x11d9, PAL_NONE, 0, 0, 15, 15, 53, 1), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5a0, PAL_NONE, 0, 0, 15, 15, 5, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5a1, PAL_NONE, 0, 0, 15, 15, 53, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11d9, PAL_NONE, 0, 0, 15, 15, 53, 0), + M(SPR_CONCRETE_GROUND, PAL_NONE, 0x11d9, PAL_NONE, 0, 0, 15, 15, 53, 1), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5a4, PAL_NONE, 0, 0, 16, 16, 16, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5a5, PAL_NONE, 0, 0, 16, 16, 16, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5a6, PAL_NONE, 0, 0, 16, 16, 16, 0), + M( 0x5a7, PAL_NONE, 0x5a6, PAL_NONE, 0, 0, 16, 16, 16, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5a4, PAL_NONE, 0, 0, 16, 16, 16, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5a5, PAL_NONE, 0, 0, 16, 16, 16, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5a6, PAL_NONE, 0, 0, 16, 16, 16, 0), + M( 0x5a7, PAL_NONE, 0x5a6, PAL_NONE, 0, 0, 16, 16, 16, 0), + M( 0x5dd, PAL_NONE, 0x5de, PAL_NONE, 0, 0, 16, 16, 16, 0), + M( 0x5df, PAL_NONE, 0x5e0, PAL_NONE, 0, 0, 16, 16, 16, 0), + M( 0x5e1, PAL_NONE, 0x5e2, PAL_NONE, 0, 0, 16, 16, 16, 0), + M( 0x5e1, PAL_NONE, 0x5e2, PAL_NONE, 0, 0, 16, 16, 16, 0), + M( 0x5dd, PAL_NONE, 0x5de, PAL_NONE, 0, 0, 16, 16, 16, 0), + M( 0x5df, PAL_NONE, 0x5e0, PAL_NONE, 0, 0, 16, 16, 16, 0), + M( 0x5e1, PAL_NONE, 0x5e2, PAL_NONE, 0, 0, 16, 16, 16, 0), + M( 0x5e1, PAL_NONE, 0x5e2, PAL_NONE, 0, 0, 16, 16, 16, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5a8, PAL_NONE, 0, 0, 16, 16, 15, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5a9, PAL_NONE, 0, 0, 16, 16, 38, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5aa, PAL_NONE, 0, 0, 16, 16, 45, 0), + M(SPR_CONCRETE_GROUND, PAL_NONE, 0x5aa, PAL_NONE, 0, 0, 16, 16, 45, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5a8, PAL_NONE, 0, 0, 16, 16, 15, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5a9, PAL_NONE, 0, 0, 16, 16, 38, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5aa, PAL_NONE, 0, 0, 16, 16, 45, 0), + M(SPR_CONCRETE_GROUND, PAL_NONE, 0x5aa, PAL_NONE, 0, 0, 16, 16, 45, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5a8, PAL_NONE, 0, 0, 16, 16, 15, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5a9, PAL_NONE, 0, 0, 16, 16, 38, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5aa, PAL_NONE, 0, 0, 16, 16, 45, 0), + M(SPR_CONCRETE_GROUND, PAL_NONE, 0x5aa, PAL_NONE, 0, 0, 16, 16, 45, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5a8, PAL_NONE, 0, 0, 16, 16, 15, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5a9, PAL_NONE, 0, 0, 16, 16, 38, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5aa, PAL_NONE, 0, 0, 16, 16, 45, 0), + M(SPR_CONCRETE_GROUND, PAL_NONE, 0x5aa, PAL_NONE, 0, 0, 16, 16, 45, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5ab, PAL_NONE, 0, 0, 16, 16, 15, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5ac, PAL_NONE, 0, 0, 16, 16, 38, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5ad, PAL_NONE, 0, 0, 16, 16, 45, 0), + M(SPR_CONCRETE_GROUND, PAL_NONE, 0x5ad, PAL_NONE, 0, 0, 16, 16, 45, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5ab, PAL_NONE, 0, 0, 16, 16, 15, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5ac, PAL_NONE, 0, 0, 16, 16, 38, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5ad, PAL_NONE, 0, 0, 16, 16, 45, 0), + M(SPR_CONCRETE_GROUND, PAL_NONE, 0x5ad, PAL_NONE, 0, 0, 16, 16, 45, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5ab, PAL_NONE, 0, 0, 16, 16, 15, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5ac, PAL_NONE, 0, 0, 16, 16, 38, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5ad, PAL_NONE, 0, 0, 16, 16, 45, 0), + M(SPR_CONCRETE_GROUND, PAL_NONE, 0x5ad, PAL_NONE, 0, 0, 16, 16, 45, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5ab, PAL_NONE, 0, 0, 16, 16, 15, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5ac, PAL_NONE, 0, 0, 16, 16, 38, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5ad, PAL_NONE, 0, 0, 16, 16, 45, 0), + M(SPR_CONCRETE_GROUND, PAL_NONE, 0x5ad, PAL_NONE, 0, 0, 16, 16, 45, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 6, 5, 3, 6, 8, 0), + M(SPR_CONCRETE_GROUND, PAL_NONE, 0x0, PAL_NONE, 6, 5, 3, 6, 8, 0), + M(SPR_CONCRETE_GROUND, PAL_NONE, 0x5ae, PAL_NONE, 6, 5, 3, 6, 8, 0), + M(SPR_CONCRETE_GROUND, PAL_NONE, 0x5ae, PAL_NONE, 6, 5, 3, 6, 8, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 6, 5, 3, 6, 8, 0), + M(SPR_CONCRETE_GROUND, PAL_NONE, 0x0, PAL_NONE, 6, 5, 3, 6, 8, 0), + M(SPR_CONCRETE_GROUND, PAL_NONE, 0x5ae, PAL_NONE, 6, 5, 3, 6, 8, 0), + M(SPR_CONCRETE_GROUND, PAL_NONE, 0x5ae, PAL_NONE, 6, 5, 3, 6, 8, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 6, 5, 3, 6, 8, 0), + M(SPR_CONCRETE_GROUND, PAL_NONE, 0x0, PAL_NONE, 6, 5, 3, 6, 8, 0), + M(SPR_CONCRETE_GROUND, PAL_NONE, 0x5ae, PAL_NONE, 6, 5, 3, 6, 8, 0), + M(SPR_CONCRETE_GROUND, PAL_NONE, 0x5ae, PAL_NONE, 6, 5, 3, 6, 8, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 6, 5, 3, 6, 8, 0), + M(SPR_CONCRETE_GROUND, PAL_NONE, 0x0, PAL_NONE, 6, 5, 3, 6, 8, 0), + M(SPR_CONCRETE_GROUND, PAL_NONE, 0x5ae, PAL_NONE, 6, 5, 3, 6, 8, 0), + M(SPR_CONCRETE_GROUND, PAL_NONE, 0x5ae, PAL_NONE, 6, 5, 3, 6, 8, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 3, 3, 9, 9, 8, 0), + M(SPR_CONCRETE_GROUND, PAL_NONE, 0x0, PAL_NONE, 3, 3, 9, 9, 8, 0), + M(SPR_CONCRETE_GROUND, PAL_NONE, 0x5af, PAL_NONE, 3, 3, 9, 9, 8, 0), + M(SPR_CONCRETE_GROUND, PAL_NONE, 0x5af, PAL_NONE, 3, 3, 9, 9, 8, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 3, 3, 9, 9, 8, 0), + M(SPR_CONCRETE_GROUND, PAL_NONE, 0x0, PAL_NONE, 3, 3, 9, 9, 8, 0), + M(SPR_CONCRETE_GROUND, PAL_NONE, 0x5af, PAL_NONE, 3, 3, 9, 9, 8, 0), + M(SPR_CONCRETE_GROUND, PAL_NONE, 0x5af, PAL_NONE, 3, 3, 9, 9, 8, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 3, 3, 9, 9, 8, 0), + M(SPR_CONCRETE_GROUND, PAL_NONE, 0x0, PAL_NONE, 3, 3, 9, 9, 8, 0), + M(SPR_CONCRETE_GROUND, PAL_NONE, 0x5af, PAL_NONE, 3, 3, 9, 9, 8, 0), + M(SPR_CONCRETE_GROUND, PAL_NONE, 0x5af, PAL_NONE, 3, 3, 9, 9, 8, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 3, 3, 9, 9, 8, 0), + M(SPR_CONCRETE_GROUND, PAL_NONE, 0x0, PAL_NONE, 3, 3, 9, 9, 8, 0), + M(SPR_CONCRETE_GROUND, PAL_NONE, 0x5af, PAL_NONE, 3, 3, 9, 9, 8, 0), + M(SPR_CONCRETE_GROUND, PAL_NONE, 0x5af, PAL_NONE, 3, 3, 9, 9, 8, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 15, 0), + M(SPR_FLAT_GRASS_TILE, PAL_NONE, 0x5b0, PAL_NONE, 0, 0, 16, 16, 15, 0), + M(SPR_FLAT_GRASS_TILE, PAL_NONE, 0x5b0, PAL_NONE, 0, 0, 16, 16, 15, 0), + M(SPR_FLAT_GRASS_TILE, PAL_NONE, 0x5b0, PAL_NONE, 0, 0, 16, 16, 15, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 15, 0), + M(SPR_FLAT_GRASS_TILE, PAL_NONE, 0x5b0, PAL_NONE, 0, 0, 16, 16, 15, 0), + M(SPR_FLAT_GRASS_TILE, PAL_NONE, 0x5b0, PAL_NONE, 0, 0, 16, 16, 15, 0), + M(SPR_FLAT_GRASS_TILE, PAL_NONE, 0x5b0, PAL_NONE, 0, 0, 16, 16, 15, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 15, 0), + M(SPR_FLAT_GRASS_TILE, PAL_NONE, 0x5b0, PAL_NONE, 0, 0, 16, 16, 15, 0), + M(SPR_FLAT_GRASS_TILE, PAL_NONE, 0x5b0, PAL_NONE, 0, 0, 16, 16, 15, 0), + M(SPR_FLAT_GRASS_TILE, PAL_NONE, 0x5b0, PAL_NONE, 0, 0, 16, 16, 15, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 15, 0), + M(SPR_FLAT_GRASS_TILE, PAL_NONE, 0x5b0, PAL_NONE, 0, 0, 16, 16, 15, 0), + M(SPR_FLAT_GRASS_TILE, PAL_NONE, 0x5b0, PAL_NONE, 0, 0, 16, 16, 15, 0), + M(SPR_FLAT_GRASS_TILE, PAL_NONE, 0x5b0, PAL_NONE, 0, 0, 16, 16, 15, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 15, 0), + M(SPR_FLAT_GRASS_TILE, PAL_NONE, 0x5b1, PAL_NONE, 0, 0, 16, 16, 15, 0), + M(SPR_FLAT_GRASS_TILE, PAL_NONE, 0x5b1, PAL_NONE, 0, 0, 16, 16, 15, 0), + M(SPR_FLAT_GRASS_TILE, PAL_NONE, 0x5b1, PAL_NONE, 0, 0, 16, 16, 15, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 15, 0), + M(SPR_FLAT_GRASS_TILE, PAL_NONE, 0x5b1, PAL_NONE, 0, 0, 16, 16, 15, 0), + M(SPR_FLAT_GRASS_TILE, PAL_NONE, 0x5b1, PAL_NONE, 0, 0, 16, 16, 15, 0), + M(SPR_FLAT_GRASS_TILE, PAL_NONE, 0x5b1, PAL_NONE, 0, 0, 16, 16, 15, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 15, 0), + M(SPR_FLAT_GRASS_TILE, PAL_NONE, 0x5b1, PAL_NONE, 0, 0, 16, 16, 15, 0), + M(SPR_FLAT_GRASS_TILE, PAL_NONE, 0x5b1, PAL_NONE, 0, 0, 16, 16, 15, 0), + M(SPR_FLAT_GRASS_TILE, PAL_NONE, 0x5b1, PAL_NONE, 0, 0, 16, 16, 15, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 15, 0), + M(SPR_FLAT_GRASS_TILE, PAL_NONE, 0x5b1, PAL_NONE, 0, 0, 16, 16, 15, 0), + M(SPR_FLAT_GRASS_TILE, PAL_NONE, 0x5b1, PAL_NONE, 0, 0, 16, 16, 15, 0), + M(SPR_FLAT_GRASS_TILE, PAL_NONE, 0x5b1, PAL_NONE, 0, 0, 16, 16, 15, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5b2, PAL_NONE, 0, 0, 16, 16, 8, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5b3, PAL_NONE, 0, 0, 16, 16, 42, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5b4, PAL_NONE, 0, 0, 16, 16, 42, 0), + M(SPR_CONCRETE_GROUND, PAL_NONE, 0x5b4, PAL_NONE, 0, 0, 16, 16, 42, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5b2, PALETTE_TO_STRUCT_WHITE, 0, 0, 16, 16, 8, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5b3, PALETTE_TO_STRUCT_WHITE, 0, 0, 16, 16, 42, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5b4, PALETTE_TO_STRUCT_WHITE, 0, 0, 16, 16, 42, 0), + M(SPR_CONCRETE_GROUND, PAL_NONE, 0x5b4, PALETTE_TO_STRUCT_WHITE, 0, 0, 16, 16, 42, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5b2, PALETTE_TO_STRUCT_RED, 0, 0, 16, 16, 8, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5b3, PALETTE_TO_STRUCT_RED, 0, 0, 16, 16, 42, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5b4, PALETTE_TO_STRUCT_RED, 0, 0, 16, 16, 42, 0), + M(SPR_CONCRETE_GROUND, PAL_NONE, 0x5b4, PALETTE_TO_STRUCT_RED, 0, 0, 16, 16, 42, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5b2, PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 8, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5b3, PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 42, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5b4, PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 42, 0), + M(SPR_CONCRETE_GROUND, PAL_NONE, 0x5b4, PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 42, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5b5, PAL_NONE, 1, 3, 14, 11, 7, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5b6, PAL_NONE, 1, 3, 14, 11, 53, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5b7, PAL_NONE, 1, 3, 14, 11, 53, 0), + M(SPR_CONCRETE_GROUND, PAL_NONE, 0x5b7, PAL_NONE, 1, 3, 14, 11, 53, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5b5, PAL_NONE, 1, 3, 14, 11, 7, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5b6, PAL_NONE, 1, 3, 14, 11, 53, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5b7, PAL_NONE, 1, 3, 14, 11, 53, 0), + M(SPR_CONCRETE_GROUND, PAL_NONE, 0x5b7, PAL_NONE, 1, 3, 14, 11, 53, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5b5, PAL_NONE, 1, 3, 14, 11, 7, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5b6, PAL_NONE, 1, 3, 14, 11, 53, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5b7, PAL_NONE, 1, 3, 14, 11, 53, 0), + M(SPR_CONCRETE_GROUND, PAL_NONE, 0x5b7, PAL_NONE, 1, 3, 14, 11, 53, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5b5, PAL_NONE, 1, 3, 14, 11, 7, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5b6, PAL_NONE, 1, 3, 14, 11, 53, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5b7, PAL_NONE, 1, 3, 14, 11, 53, 0), + M(SPR_CONCRETE_GROUND, PAL_NONE, 0x5b7, PAL_NONE, 1, 3, 14, 11, 53, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5b8, PAL_NONE, 3, 1, 11, 14, 6, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5b9, PAL_NONE, 3, 1, 11, 14, 28, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5ba, PAL_NONE, 3, 1, 11, 14, 28, 0), + M(SPR_CONCRETE_GROUND, PAL_NONE, 0x5ba, PAL_NONE, 3, 1, 11, 14, 28, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5b8, PAL_NONE, 3, 1, 11, 14, 6, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5b9, PAL_NONE, 3, 1, 11, 14, 28, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5ba, PAL_NONE, 3, 1, 11, 14, 28, 0), + M(SPR_CONCRETE_GROUND, PAL_NONE, 0x5ba, PAL_NONE, 3, 1, 11, 14, 28, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5b8, PAL_NONE, 3, 1, 11, 14, 6, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5b9, PAL_NONE, 3, 1, 11, 14, 28, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5ba, PAL_NONE, 3, 1, 11, 14, 28, 0), + M(SPR_CONCRETE_GROUND, PAL_NONE, 0x5ba, PAL_NONE, 3, 1, 11, 14, 28, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5b8, PAL_NONE, 3, 1, 11, 14, 6, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5b9, PAL_NONE, 3, 1, 11, 14, 28, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5ba, PAL_NONE, 3, 1, 11, 14, 28, 0), + M(SPR_CONCRETE_GROUND, PAL_NONE, 0x5ba, PAL_NONE, 3, 1, 11, 14, 28, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5bb, PAL_NONE, 2, 0, 13, 16, 6, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5bc, PAL_NONE, 2, 0, 13, 16, 45, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5bd, PAL_NONE, 2, 0, 13, 16, 46, 0), + M(SPR_CONCRETE_GROUND, PAL_NONE, 0x5bd, PAL_NONE, 2, 0, 13, 16, 46, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5bb, PAL_NONE, 2, 0, 13, 16, 6, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5bc, PAL_NONE, 2, 0, 13, 16, 45, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5bd, PAL_NONE, 2, 0, 13, 16, 46, 0), + M(SPR_CONCRETE_GROUND, PAL_NONE, 0x5bd, PAL_NONE, 2, 0, 13, 16, 46, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5bb, PALETTE_TO_STRUCT_BLUE, 2, 0, 13, 16, 6, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5bc, PALETTE_TO_STRUCT_BLUE, 2, 0, 13, 16, 45, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5bd, PALETTE_TO_STRUCT_BLUE, 2, 0, 13, 16, 46, 0), + M(SPR_CONCRETE_GROUND, PAL_NONE, 0x5bd, PALETTE_TO_STRUCT_BLUE, 2, 0, 13, 16, 46, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5bb, PALETTE_TO_STRUCT_WHITE, 2, 0, 13, 16, 6, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5bc, PALETTE_TO_STRUCT_WHITE, 2, 0, 13, 16, 45, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5bd, PALETTE_TO_STRUCT_WHITE, 2, 0, 13, 16, 46, 0), + M(SPR_CONCRETE_GROUND, PAL_NONE, 0x5bd, PALETTE_TO_STRUCT_WHITE, 2, 0, 13, 16, 46, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5be, PALETTE_TO_RED, 2, 0, 13, 16, 13, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5bf, PALETTE_TO_RED, 2, 0, 13, 16, 110, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5c0, PALETTE_TO_RED, 2, 0, 13, 16, 110, 0), + M(SPR_CONCRETE_GROUND, PAL_NONE, 0x5c0, PALETTE_TO_RED, 2, 0, 13, 16, 110, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5be, PALETTE_TO_BLUE, 2, 0, 13, 16, 13, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5bf, PALETTE_TO_BLUE, 2, 0, 13, 16, 110, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5c0, PALETTE_TO_BLUE, 2, 0, 13, 16, 110, 0), + M(SPR_CONCRETE_GROUND, PAL_NONE, 0x5c0, PALETTE_TO_BLUE, 2, 0, 13, 16, 110, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5be, PALETTE_TO_ORANGE, 2, 0, 13, 16, 13, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5bf, PALETTE_TO_ORANGE, 2, 0, 13, 16, 110, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5c0, PALETTE_TO_ORANGE, 2, 0, 13, 16, 110, 0), + M(SPR_CONCRETE_GROUND, PAL_NONE, 0x5c0, PALETTE_TO_ORANGE, 2, 0, 13, 16, 110, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5be, PALETTE_TO_GREEN, 2, 0, 13, 16, 13, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5bf, PALETTE_TO_GREEN, 2, 0, 13, 16, 110, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5c0, PALETTE_TO_GREEN, 2, 0, 13, 16, 110, 0), + M(SPR_CONCRETE_GROUND, PAL_NONE, 0x5c0, PALETTE_TO_GREEN, 2, 0, 13, 16, 110, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5c1, PAL_NONE, 1, 2, 15, 12, 4, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5c2, PAL_NONE, 1, 2, 15, 12, 24, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5c3, PAL_NONE, 1, 2, 15, 12, 31, 0), + M(SPR_CONCRETE_GROUND, PAL_NONE, 0x5c3, PAL_NONE, 1, 2, 15, 12, 31, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5c1, PAL_NONE, 1, 2, 15, 12, 4, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5c2, PAL_NONE, 1, 2, 15, 12, 24, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5c3, PAL_NONE, 1, 2, 15, 12, 31, 0), + M(SPR_CONCRETE_GROUND, PAL_NONE, 0x5c3, PAL_NONE, 1, 2, 15, 12, 31, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5c1, PAL_NONE, 1, 2, 15, 12, 4, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5c2, PAL_NONE, 1, 2, 15, 12, 24, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5c3, PAL_NONE, 1, 2, 15, 12, 31, 0), + M(SPR_CONCRETE_GROUND, PAL_NONE, 0x5c3, PAL_NONE, 1, 2, 15, 12, 31, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5c1, PAL_NONE, 1, 2, 15, 12, 4, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5c2, PAL_NONE, 1, 2, 15, 12, 24, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5c3, PAL_NONE, 1, 2, 15, 12, 31, 0), + M(SPR_CONCRETE_GROUND, PAL_NONE, 0x5c3, PAL_NONE, 1, 2, 15, 12, 31, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5c4, PAL_NONE, 1, 0, 14, 15, 20, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5c5, PAL_NONE, 1, 0, 14, 15, 42, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5c6, PAL_NONE, 1, 0, 14, 15, 42, 0), + M(SPR_CONCRETE_GROUND, PAL_NONE, 0x5c6, PAL_NONE, 1, 0, 14, 15, 42, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5c4, PAL_NONE, 1, 0, 14, 15, 20, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5c5, PAL_NONE, 1, 0, 14, 15, 42, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5c6, PAL_NONE, 1, 0, 14, 15, 42, 0), + M(SPR_CONCRETE_GROUND, PAL_NONE, 0x5c6, PAL_NONE, 1, 0, 14, 15, 42, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5c4, PAL_NONE, 1, 0, 14, 15, 20, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5c5, PAL_NONE, 1, 0, 14, 15, 42, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5c6, PAL_NONE, 1, 0, 14, 15, 42, 0), + M(SPR_CONCRETE_GROUND, PAL_NONE, 0x5c6, PAL_NONE, 1, 0, 14, 15, 42, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5c4, PAL_NONE, 1, 0, 14, 15, 20, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5c5, PAL_NONE, 1, 0, 14, 15, 42, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5c6, PAL_NONE, 1, 0, 14, 15, 42, 0), + M(SPR_CONCRETE_GROUND, PAL_NONE, 0x5c6, PAL_NONE, 1, 0, 14, 15, 42, 0), + M( SPR_GRND_STADIUM_N, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_GRND_STADIUM_N, PAL_NONE, 0x5cb, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_GRND_STADIUM_N, PAL_NONE, 0x5cb, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_GRND_STADIUM_N, PAL_NONE, 0x5cb, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_GRND_STADIUM_N, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_GRND_STADIUM_N, PAL_NONE, 0x5cb, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_GRND_STADIUM_N, PAL_NONE, 0x5cb, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_GRND_STADIUM_N, PAL_NONE, 0x5cb, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_GRND_STADIUM_N, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_GRND_STADIUM_N, PAL_NONE, 0x5cb, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_GRND_STADIUM_N, PAL_NONE, 0x5cb, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_GRND_STADIUM_N, PAL_NONE, 0x5cb, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_GRND_STADIUM_N, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_GRND_STADIUM_N, PAL_NONE, 0x5cb, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_GRND_STADIUM_N, PAL_NONE, 0x5cb, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_GRND_STADIUM_N, PAL_NONE, 0x5cb, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_GRND_STADIUM_E, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_GRND_STADIUM_E, PAL_NONE, 0x5cc, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_GRND_STADIUM_E, PAL_NONE, 0x5cc, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_GRND_STADIUM_E, PAL_NONE, 0x5cc, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_GRND_STADIUM_E, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_GRND_STADIUM_E, PAL_NONE, 0x5cc, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_GRND_STADIUM_E, PAL_NONE, 0x5cc, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_GRND_STADIUM_E, PAL_NONE, 0x5cc, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_GRND_STADIUM_E, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_GRND_STADIUM_E, PAL_NONE, 0x5cc, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_GRND_STADIUM_E, PAL_NONE, 0x5cc, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_GRND_STADIUM_E, PAL_NONE, 0x5cc, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_GRND_STADIUM_E, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_GRND_STADIUM_E, PAL_NONE, 0x5cc, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_GRND_STADIUM_E, PAL_NONE, 0x5cc, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_GRND_STADIUM_E, PAL_NONE, 0x5cc, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_GRND_STADIUM_W, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_GRND_STADIUM_W, PAL_NONE, 0x5cd, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_GRND_STADIUM_W, PAL_NONE, 0x5cd, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_GRND_STADIUM_W, PAL_NONE, 0x5cd, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_GRND_STADIUM_W, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_GRND_STADIUM_W, PAL_NONE, 0x5cd, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_GRND_STADIUM_W, PAL_NONE, 0x5cd, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_GRND_STADIUM_W, PAL_NONE, 0x5cd, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_GRND_STADIUM_W, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_GRND_STADIUM_W, PAL_NONE, 0x5cd, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_GRND_STADIUM_W, PAL_NONE, 0x5cd, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_GRND_STADIUM_W, PAL_NONE, 0x5cd, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_GRND_STADIUM_W, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_GRND_STADIUM_W, PAL_NONE, 0x5cd, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_GRND_STADIUM_W, PAL_NONE, 0x5cd, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_GRND_STADIUM_W, PAL_NONE, 0x5cd, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_GRND_STADIUM_S, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_GRND_STADIUM_S, PAL_NONE, 0x5ce, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_GRND_STADIUM_S, PAL_NONE, 0x5ce, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_GRND_STADIUM_S, PAL_NONE, 0x5ce, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_GRND_STADIUM_S, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_GRND_STADIUM_S, PAL_NONE, 0x5ce, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_GRND_STADIUM_S, PAL_NONE, 0x5ce, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_GRND_STADIUM_S, PAL_NONE, 0x5ce, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_GRND_STADIUM_S, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_GRND_STADIUM_S, PAL_NONE, 0x5ce, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_GRND_STADIUM_S, PAL_NONE, 0x5ce, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_GRND_STADIUM_S, PAL_NONE, 0x5ce, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_GRND_STADIUM_S, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_GRND_STADIUM_S, PAL_NONE, 0x5ce, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_GRND_STADIUM_S, PAL_NONE, 0x5ce, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_GRND_STADIUM_S, PAL_NONE, 0x5ce, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5d4, PAL_NONE, 0, 0, 16, 16, 22, 0), + M( 0x5d3, PAL_NONE, 0x5d4, PAL_NONE, 0, 0, 16, 16, 22, 0), + M( 0x5d3, PAL_NONE, 0x5d4, PAL_NONE, 0, 0, 16, 16, 22, 0), + M( 0x5d3, PAL_NONE, 0x5d4, PAL_NONE, 0, 0, 16, 16, 22, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5d6, PAL_NONE, 0, 0, 16, 16, 22, 0), + M( 0x5d5, PAL_NONE, 0x5d6, PAL_NONE, 0, 0, 16, 16, 22, 0), + M( 0x5d5, PAL_NONE, 0x5d6, PAL_NONE, 0, 0, 16, 16, 22, 0), + M( 0x5d5, PAL_NONE, 0x5d6, PAL_NONE, 0, 0, 16, 16, 22, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5d0, PAL_NONE, 0, 0, 16, 16, 21, 0), + M( 0x5cf, PAL_NONE, 0x5d0, PAL_NONE, 0, 0, 16, 16, 21, 0), + M( 0x5cf, PAL_NONE, 0x5d0, PAL_NONE, 0, 0, 16, 16, 21, 0), + M( 0x5cf, PAL_NONE, 0x5d0, PAL_NONE, 0, 0, 16, 16, 21, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5d2, PAL_NONE, 0, 0, 16, 16, 11, 0), + M( 0x5d1, PAL_NONE, 0x5d2, PAL_NONE, 0, 0, 16, 16, 11, 0), + M( 0x5d1, PAL_NONE, 0x5d2, PAL_NONE, 0, 0, 16, 16, 11, 0), + M( 0x5d1, PAL_NONE, 0x5d2, PAL_NONE, 0, 0, 16, 16, 11, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 22, 0), + M( 0x5d7, PAL_NONE, 0x5d8, PAL_NONE, 0, 0, 16, 16, 22, 0), + M( 0x5d7, PAL_NONE, 0x5d8, PAL_NONE, 0, 0, 16, 16, 22, 0), + M( 0x5d7, PAL_NONE, 0x5d8, PAL_NONE, 0, 0, 16, 16, 22, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 22, 0), + M( 0x5d7, PAL_NONE, 0x5d8, PAL_NONE, 0, 0, 16, 16, 22, 0), + M( 0x5d7, PAL_NONE, 0x5d8, PAL_NONE, 0, 0, 16, 16, 22, 0), + M( 0x5d7, PAL_NONE, 0x5d8, PAL_NONE, 0, 0, 16, 16, 22, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 22, 0), + M( 0x5d7, PAL_NONE, 0x5d8, PAL_NONE, 0, 0, 16, 16, 22, 0), + M( 0x5d7, PAL_NONE, 0x5d8, PAL_NONE, 0, 0, 16, 16, 22, 0), + M( 0x5d7, PAL_NONE, 0x5d8, PAL_NONE, 0, 0, 16, 16, 22, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 22, 0), + M( 0x5d7, PAL_NONE, 0x5d8, PAL_NONE, 0, 0, 16, 16, 22, 0), + M( 0x5d7, PAL_NONE, 0x5d8, PAL_NONE, 0, 0, 16, 16, 22, 0), + M( 0x5d7, PAL_NONE, 0x5d8, PAL_NONE, 0, 0, 16, 16, 22, 0), + M( 0x5d9, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 22, 0), + M( 0x5da, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 22, 0), + M( 0x5db, PAL_NONE, 0x5dc, PAL_NONE, 0, 0, 16, 16, 22, 0), + M( 0x5db, PAL_NONE, 0x5dc, PAL_NONE, 0, 0, 16, 16, 22, 0), + M( 0x622, PAL_NONE, 0x623, PAL_NONE, 0, 0, 16, 16, 22, 0), + M( 0x624, PAL_NONE, 0x625, PAL_NONE, 0, 0, 16, 16, 22, 0), + M( 0x626, PAL_NONE, 0x627, PAL_NONE, 0, 0, 16, 16, 22, 0), + M( 0x626, PAL_NONE, 0x627, PAL_NONE, 0, 0, 16, 16, 22, 0), + M( 0x5e3, PAL_NONE, 0x5e4, PAL_NONE, 0, 0, 16, 16, 22, 0), + M( 0x5e5, PAL_NONE, 0x5e6, PAL_NONE, 0, 0, 16, 16, 22, 0), + M( 0x5e7, PAL_NONE, 0x5e8, PAL_NONE, 0, 0, 16, 16, 22, 0), + M( 0x5e7, PAL_NONE, 0x5e8, PAL_NONE, 0, 0, 16, 16, 22, 0), + M( 0x5e9, PAL_NONE, 0x5ea, PAL_NONE, 0, 0, 16, 16, 22, 0), + M( 0x5eb, PAL_NONE, 0x5ec, PAL_NONE, 0, 0, 16, 16, 22, 0), + M( 0x5ed, PAL_NONE, 0x5ee, PAL_NONE, 0, 0, 16, 16, 22, 0), + M( 0x5ed, PAL_NONE, 0x5ee, PAL_NONE, 0, 0, 16, 16, 22, 0), + M( 0x5ef, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 22, 0), + M( 0x5f0, PAL_NONE, 0x5f1, PAL_NONE, 0, 0, 16, 16, 22, 0), + M( 0x5f2, PAL_NONE, 0x5f3, PAL_NONE, 0, 0, 16, 16, 22, 0), + M( 0x5f2, PAL_NONE, 0x5f3, PAL_NONE, 0, 0, 16, 16, 22, 0), + M( 0x5ef, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 22, 0), + M( 0x5f0, PAL_NONE, 0x5f1, PAL_NONE, 0, 0, 16, 16, 22, 0), + M( 0x5f2, PAL_NONE, 0x5f3, PAL_NONE, 0, 0, 16, 16, 22, 0), + M( 0x5f2, PAL_NONE, 0x5f3, PAL_NONE, 0, 0, 16, 16, 22, 0), + M( 0x5f4, PAL_NONE, 0x5f5, PAL_NONE, 0, 0, 16, 16, 22, 0), + M( 0x5f6, PAL_NONE, 0x5f7, PAL_NONE, 0, 0, 16, 16, 22, 0), + M( 0x5f8, PAL_NONE, 0x5f9, PAL_NONE, 0, 0, 16, 16, 22, 0), + M( 0x5f8, PAL_NONE, 0x5f9, PAL_NONE, 0, 0, 16, 16, 22, 0), + M( 0x5f4, PAL_NONE, 0x5f5, PAL_NONE, 0, 0, 16, 16, 22, 0), + M( 0x5f6, PAL_NONE, 0x5f7, PAL_NONE, 0, 0, 16, 16, 22, 0), + M( 0x5f8, PAL_NONE, 0x5f9, PAL_NONE, 0, 0, 16, 16, 22, 0), + M( 0x5f8, PAL_NONE, 0x5f9, PAL_NONE, 0, 0, 16, 16, 22, 0), + M( 0x5fa, PAL_NONE, 0x5fb, PAL_NONE, 0, 0, 16, 16, 85, 0), + M( 0x5fc, PAL_NONE, 0x5fd, PAL_NONE, 0, 0, 16, 16, 85, 0), + M( 0x5fe, PAL_NONE, 0x5ff, PAL_NONE, 0, 0, 16, 16, 85, 0), + M( 0x5fe, PAL_NONE, 0x5ff, PAL_NONE, 0, 0, 16, 16, 85, 0), + M( 0x5fa, PAL_NONE, 0x5fb, PAL_NONE, 0, 0, 16, 16, 85, 0), + M( 0x5fc, PAL_NONE, 0x5fd, PAL_NONE, 0, 0, 16, 16, 85, 0), + M( 0x5fe, PAL_NONE, 0x5ff, PAL_NONE, 0, 0, 16, 16, 85, 0), + M( 0x5fe, PAL_NONE, 0x5ff, PAL_NONE, 0, 0, 16, 16, 85, 0), + M( 0x60a, PAL_NONE, 0x60b, PAL_NONE, 0, 0, 16, 16, 95, 0), + M( 0x60c, PAL_NONE, 0x60d, PAL_NONE, 0, 0, 16, 16, 95, 0), + M( 0x60e, PAL_NONE, 0x60f, PAL_NONE, 0, 0, 16, 16, 95, 0), + M( 0x60e, PAL_NONE, 0x60f, PAL_NONE, 0, 0, 16, 16, 95, 0), + M( 0x60a, PAL_NONE, 0x60b, PAL_NONE, 0, 0, 16, 16, 95, 0), + M( 0x60c, PAL_NONE, 0x60d, PAL_NONE, 0, 0, 16, 16, 95, 0), + M( 0x60e, PAL_NONE, 0x60f, PAL_NONE, 0, 0, 16, 16, 95, 0), + M( 0x60e, PAL_NONE, 0x60f, PAL_NONE, 0, 0, 16, 16, 95, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 22, 0), + M( 0x600, PAL_NONE, 0x601, PAL_NONE, 0, 0, 16, 16, 55, 0), + M( 0x600, PAL_NONE, 0x601, PAL_NONE, 0, 0, 16, 16, 55, 0), + M( 0x600, PAL_NONE, 0x601, PAL_NONE, 0, 0, 16, 16, 55, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 22, 0), + M( 0x600, PALETTE_TO_STRUCT_WHITE, 0x601, PALETTE_TO_STRUCT_WHITE, 0, 0, 16, 16, 55, 0), + M( 0x600, PALETTE_TO_STRUCT_WHITE, 0x601, PALETTE_TO_STRUCT_WHITE, 0, 0, 16, 16, 55, 0), + M( 0x600, PALETTE_TO_STRUCT_WHITE, 0x601, PALETTE_TO_STRUCT_WHITE, 0, 0, 16, 16, 55, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 22, 0), + M( 0x602, PAL_NONE, 0x603, PAL_NONE, 0, 0, 16, 16, 42, 0), + M( 0x602, PAL_NONE, 0x603, PAL_NONE, 0, 0, 16, 16, 42, 0), + M( 0x602, PAL_NONE, 0x603, PAL_NONE, 0, 0, 16, 16, 42, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 22, 0), + M( 0x602, PALETTE_TO_STRUCT_CONCRETE, 0x603, PALETTE_TO_STRUCT_CONCRETE, 0, 0, 16, 16, 42, 0), + M( 0x602, PALETTE_TO_STRUCT_CONCRETE, 0x603, PALETTE_TO_STRUCT_CONCRETE, 0, 0, 16, 16, 42, 0), + M( 0x602, PALETTE_TO_STRUCT_CONCRETE, 0x603, PALETTE_TO_STRUCT_CONCRETE, 0, 0, 16, 16, 42, 0), + M( 0x604, PAL_NONE, 0x605, PAL_NONE, 0, 0, 16, 16, 88, 0), + M( 0x606, PAL_NONE, 0x607, PAL_NONE, 0, 0, 16, 16, 88, 0), + M( 0x608, PAL_NONE, 0x609, PAL_NONE, 0, 0, 16, 16, 88, 0), + M( 0x608, PAL_NONE, 0x609, PAL_NONE, 0, 0, 16, 16, 88, 0), + M( 0x604, PAL_NONE, 0x605, PAL_NONE, 0, 0, 16, 16, 88, 0), + M( 0x606, PAL_NONE, 0x607, PAL_NONE, 0, 0, 16, 16, 88, 0), + M( 0x608, PAL_NONE, 0x609, PAL_NONE, 0, 0, 16, 16, 88, 0), + M( 0x608, PAL_NONE, 0x609, PAL_NONE, 0, 0, 16, 16, 88, 0), + M( 0x604, PAL_NONE, 0x605, PAL_NONE, 0, 0, 16, 16, 88, 0), + M( 0x606, PAL_NONE, 0x607, PAL_NONE, 0, 0, 16, 16, 88, 0), + M( 0x608, PAL_NONE, 0x609, PAL_NONE, 0, 0, 16, 16, 88, 0), + M( 0x608, PAL_NONE, 0x609, PAL_NONE, 0, 0, 16, 16, 88, 0), + M( 0x604, PAL_NONE, 0x605, PAL_NONE, 0, 0, 16, 16, 88, 0), + M( 0x606, PAL_NONE, 0x607, PAL_NONE, 0, 0, 16, 16, 88, 0), + M( 0x608, PAL_NONE, 0x609, PAL_NONE, 0, 0, 16, 16, 88, 0), + M( 0x608, PAL_NONE, 0x609, PAL_NONE, 0, 0, 16, 16, 88, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 22, 0), + M( 0x610, PAL_NONE, 0x611, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( 0x610, PAL_NONE, 0x611, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( 0x610, PAL_NONE, 0x611, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 22, 0), + M( 0x610, PAL_NONE, 0x611, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( 0x610, PAL_NONE, 0x611, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( 0x610, PAL_NONE, 0x611, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 22, 0), + M( 0x610, PAL_NONE, 0x611, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( 0x610, PAL_NONE, 0x611, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( 0x610, PAL_NONE, 0x611, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 22, 0), + M( 0x610, PAL_NONE, 0x611, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( 0x610, PAL_NONE, 0x611, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( 0x610, PAL_NONE, 0x611, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( 0x612, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x612, PAL_NONE, 0x616, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x612, PAL_NONE, 0x616, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x612, PAL_NONE, 0x616, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x612, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x612, PAL_NONE, 0x616, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x612, PAL_NONE, 0x616, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x612, PAL_NONE, 0x616, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x612, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x612, PAL_NONE, 0x616, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x612, PAL_NONE, 0x616, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x612, PAL_NONE, 0x616, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x612, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x612, PAL_NONE, 0x616, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x612, PAL_NONE, 0x616, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x612, PAL_NONE, 0x616, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x613, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x613, PAL_NONE, 0x617, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x613, PAL_NONE, 0x617, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x613, PAL_NONE, 0x617, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x613, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x613, PAL_NONE, 0x617, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x613, PAL_NONE, 0x617, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x613, PAL_NONE, 0x617, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x613, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x613, PAL_NONE, 0x617, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x613, PAL_NONE, 0x617, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x613, PAL_NONE, 0x617, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x613, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x613, PAL_NONE, 0x617, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x613, PAL_NONE, 0x617, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x613, PAL_NONE, 0x617, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x614, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x614, PAL_NONE, 0x618, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x614, PAL_NONE, 0x618, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x614, PAL_NONE, 0x618, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x614, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x614, PAL_NONE, 0x618, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x614, PAL_NONE, 0x618, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x614, PAL_NONE, 0x618, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x614, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x614, PAL_NONE, 0x618, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x614, PAL_NONE, 0x618, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x614, PAL_NONE, 0x618, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x614, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x614, PAL_NONE, 0x618, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x614, PAL_NONE, 0x618, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x614, PAL_NONE, 0x618, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x615, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x615, PAL_NONE, 0x619, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x615, PAL_NONE, 0x619, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x615, PAL_NONE, 0x619, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x615, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x615, PAL_NONE, 0x619, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x615, PAL_NONE, 0x619, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x615, PAL_NONE, 0x619, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x615, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x615, PAL_NONE, 0x619, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x615, PAL_NONE, 0x619, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x615, PAL_NONE, 0x619, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x615, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x615, PAL_NONE, 0x619, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x615, PAL_NONE, 0x619, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x615, PAL_NONE, 0x619, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 22, 0), + M( 0x61a, PAL_NONE, 0x61b, PAL_NONE, 0, 0, 16, 16, 100, 0), + M( 0x61a, PAL_NONE, 0x61b, PAL_NONE, 0, 0, 16, 16, 100, 0), + M( 0x61c, PAL_NONE, 0x61d, PAL_NONE, 0, 0, 16, 16, 100, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 22, 0), + M( 0x61a, PAL_NONE, 0x61b, PAL_NONE, 0, 0, 16, 16, 100, 0), + M( 0x61a, PAL_NONE, 0x61b, PAL_NONE, 0, 0, 16, 16, 100, 0), + M( 0x61c, PAL_NONE, 0x61d, PAL_NONE, 0, 0, 16, 16, 100, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 22, 0), + M( 0x61a, PAL_NONE, 0x61b, PAL_NONE, 0, 0, 16, 16, 100, 0), + M( 0x61a, PAL_NONE, 0x61b, PAL_NONE, 0, 0, 16, 16, 100, 0), + M( 0x61c, PAL_NONE, 0x61d, PAL_NONE, 0, 0, 16, 16, 100, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 22, 0), + M( 0x61a, PAL_NONE, 0x61b, PAL_NONE, 0, 0, 16, 16, 100, 0), + M( 0x61a, PAL_NONE, 0x61b, PAL_NONE, 0, 0, 16, 16, 100, 0), + M( 0x61c, PAL_NONE, 0x61d, PAL_NONE, 0, 0, 16, 16, 100, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 22, 0), + M( 0x61e, PAL_NONE, 0x61f, PAL_NONE, 0, 0, 16, 16, 25, 0), + M( 0x61e, PAL_NONE, 0x61f, PAL_NONE, 0, 0, 16, 16, 25, 0), + M( 0x61e, PAL_NONE, 0x61f, PAL_NONE, 0, 0, 16, 16, 25, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 22, 0), + M( 0x61e, PALETTE_TO_STRUCT_WHITE, 0x61f, PALETTE_TO_STRUCT_WHITE, 0, 0, 16, 16, 25, 0), + M( 0x61e, PALETTE_TO_STRUCT_WHITE, 0x61f, PALETTE_TO_STRUCT_WHITE, 0, 0, 16, 16, 25, 0), + M( 0x61e, PALETTE_TO_STRUCT_WHITE, 0x61f, PALETTE_TO_STRUCT_WHITE, 0, 0, 16, 16, 25, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 22, 0), + M( 0x620, PAL_NONE, 0x621, PAL_NONE, 0, 0, 16, 16, 25, 0), + M( 0x620, PAL_NONE, 0x621, PAL_NONE, 0, 0, 16, 16, 25, 0), + M( 0x620, PAL_NONE, 0x621, PAL_NONE, 0, 0, 16, 16, 25, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 22, 0), + M( 0x620, PALETTE_TO_CREAM, 0x621, PALETTE_TO_CREAM, 0, 0, 16, 16, 25, 0), + M( 0x620, PALETTE_TO_CREAM, 0x621, PALETTE_TO_CREAM, 0, 0, 16, 16, 25, 0), + M( 0x620, PALETTE_TO_CREAM, 0x621, PALETTE_TO_CREAM, 0, 0, 16, 16, 25, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 22, 0), + M( 0x11da, PAL_NONE, 0x11db, PAL_NONE, 0, 0, 16, 16, 25, 0), + M( 0x11da, PAL_NONE, 0x11db, PAL_NONE, 0, 0, 16, 16, 25, 0), + M( 0x11da, PAL_NONE, 0x11db, PAL_NONE, 0, 0, 16, 16, 25, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 22, 0), + M( 0x11da, PALETTE_TO_STRUCT_WHITE, 0x11db, PALETTE_TO_STRUCT_WHITE, 0, 0, 16, 16, 25, 0), + M( 0x11da, PALETTE_TO_STRUCT_WHITE, 0x11db, PALETTE_TO_STRUCT_WHITE, 0, 0, 16, 16, 25, 0), + M( 0x11da, PALETTE_TO_STRUCT_WHITE, 0x11db, PALETTE_TO_STRUCT_WHITE, 0, 0, 16, 16, 25, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 22, 0), + M( 0x11dc, PAL_NONE, 0x11dd, PAL_NONE, 0, 0, 16, 16, 25, 0), + M( 0x11dc, PAL_NONE, 0x11dd, PAL_NONE, 0, 0, 16, 16, 25, 0), + M( 0x11dc, PAL_NONE, 0x11dd, PAL_NONE, 0, 0, 16, 16, 25, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 22, 0), + M( 0x11dc, PALETTE_TO_CREAM, 0x11dd, PALETTE_TO_CREAM, 0, 0, 16, 16, 25, 0), + M( 0x11dc, PALETTE_TO_CREAM, 0x11dd, PALETTE_TO_CREAM, 0, 0, 16, 16, 25, 0), + M( 0x11dc, PALETTE_TO_CREAM, 0x11dd, PALETTE_TO_CREAM, 0, 0, 16, 16, 25, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 22, 0), + M( 0x1134, PAL_NONE, 0x1135, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( 0x1134, PAL_NONE, 0x1135, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( 0x1134, PAL_NONE, 0x1135, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 22, 0), + M( 0x1134, PAL_NONE, 0x1135, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( 0x1134, PAL_NONE, 0x1135, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( 0x1134, PAL_NONE, 0x1135, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 22, 0), + M( 0x1134, PAL_NONE, 0x1135, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( 0x1134, PAL_NONE, 0x1135, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( 0x1134, PAL_NONE, 0x1135, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 22, 0), + M( 0x1134, PAL_NONE, 0x1135, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( 0x1134, PAL_NONE, 0x1135, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( 0x1134, PAL_NONE, 0x1135, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( 0x1136, PAL_NONE, 0x1137, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x1136, PAL_NONE, 0x1137, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x113b, PAL_NONE, 0x113c, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x113b, PAL_NONE, 0x113c, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x1136, PAL_NONE, 0x1137, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x1136, PAL_NONE, 0x1137, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x113b, PAL_NONE, 0x113c, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x113b, PAL_NONE, 0x113c, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x1136, PAL_NONE, 0x1137, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x1136, PAL_NONE, 0x1137, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x113b, PAL_NONE, 0x113c, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x113b, PAL_NONE, 0x113c, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x1136, PAL_NONE, 0x1137, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x1136, PAL_NONE, 0x1137, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x113b, PAL_NONE, 0x113c, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x113b, PAL_NONE, 0x113c, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x1138, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x1138, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x113d, PAL_NONE, 0x113e, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x113d, PAL_NONE, 0x113e, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x1138, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x1138, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x113d, PAL_NONE, 0x113e, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x113d, PAL_NONE, 0x113e, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x1138, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x1138, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x113d, PAL_NONE, 0x113e, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x113d, PAL_NONE, 0x113e, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x1138, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x1138, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x113d, PAL_NONE, 0x113e, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x113d, PAL_NONE, 0x113e, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x1139, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x1139, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x113f, PAL_NONE, 0x1140, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x113f, PAL_NONE, 0x1140, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x1139, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x1139, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x113f, PAL_NONE, 0x1140, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x113f, PAL_NONE, 0x1140, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x1139, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x1139, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x113f, PAL_NONE, 0x1140, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x113f, PAL_NONE, 0x1140, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x1139, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x1139, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x113f, PAL_NONE, 0x1140, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x113f, PAL_NONE, 0x1140, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x113a, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x113a, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x1141, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x1141, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x113a, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x113a, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x1141, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x1141, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x113a, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x113a, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x1141, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x1141, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x113a, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x113a, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x1141, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x1141, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1144, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1145, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1146, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( 0x1142, PAL_NONE, 0x1146, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1144, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1145, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1146, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( 0x1142, PAL_NONE, 0x1146, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1144, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1145, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1146, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( 0x1142, PAL_NONE, 0x1146, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1144, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1145, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1146, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( 0x1142, PAL_NONE, 0x1146, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1144, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1145, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1146, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( 0x1143, PAL_NONE, 0x1147, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1144, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1145, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1146, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( 0x1143, PAL_NONE, 0x1147, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1144, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1145, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1146, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( 0x1143, PAL_NONE, 0x1147, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1144, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1145, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1146, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( 0x1143, PAL_NONE, 0x1147, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1148, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1149, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x114a, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( 0x1142, PAL_NONE, 0x114a, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1148, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1149, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x114a, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( 0x1142, PAL_NONE, 0x114a, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1148, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1149, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x114a, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( 0x1142, PAL_NONE, 0x114a, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1148, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1149, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x114a, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( 0x1142, PAL_NONE, 0x114a, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1148, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1149, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x114a, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( 0x1143, PAL_NONE, 0x114b, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1148, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1149, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x114a, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( 0x1143, PAL_NONE, 0x114b, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1148, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1149, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x114a, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( 0x1143, PAL_NONE, 0x114b, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1148, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1149, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x114a, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( 0x1143, PAL_NONE, 0x114b, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x114e, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x114f, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1150, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( 0x114c, PAL_NONE, 0x1150, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x114e, PALETTE_TO_PINK, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x114f, PALETTE_TO_PINK, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1150, PALETTE_TO_PINK, 0, 0, 16, 16, 40, 0), + M( 0x114c, PAL_NONE, 0x1150, PALETTE_TO_PINK, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x114e, PALETTE_TO_CREAM, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x114f, PALETTE_TO_CREAM, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1150, PALETTE_TO_CREAM, 0, 0, 16, 16, 40, 0), + M( 0x114c, PAL_NONE, 0x1150, PALETTE_TO_CREAM, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x114e, PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x114f, PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1150, PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 40, 0), + M( 0x114c, PAL_NONE, 0x1150, PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x114e, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x114f, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1150, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( 0x114d, PAL_NONE, 0x1151, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x114e, PALETTE_TO_PINK, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x114f, PALETTE_TO_PINK, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1150, PALETTE_TO_PINK, 0, 0, 16, 16, 40, 0), + M( 0x114d, PAL_NONE, 0x1151, PALETTE_TO_PINK, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x114e, PALETTE_TO_CREAM, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x114f, PALETTE_TO_CREAM, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1150, PALETTE_TO_CREAM, 0, 0, 16, 16, 40, 0), + M( 0x114d, PAL_NONE, 0x1151, PALETTE_TO_CREAM, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x114e, PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x114f, PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1150, PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 40, 0), + M( 0x114d, PAL_NONE, 0x1151, PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1153, PAL_NONE, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1154, PAL_NONE, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1155, PAL_NONE, 0, 0, 16, 16, 60, 0), + M( 0x1152, PAL_NONE, 0x1155, PAL_NONE, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1153, PALETTE_TO_RED, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1154, PALETTE_TO_RED, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1155, PALETTE_TO_RED, 0, 0, 16, 16, 60, 0), + M( 0x1152, PAL_NONE, 0x1155, PALETTE_TO_RED, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1153, PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1154, PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1155, PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 60, 0), + M( 0x1152, PAL_NONE, 0x1155, PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1153, PALETTE_TO_GREY, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1154, PALETTE_TO_GREY, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1155, PALETTE_TO_GREY, 0, 0, 16, 16, 60, 0), + M( 0x1152, PAL_NONE, 0x1155, PALETTE_TO_GREY, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1153, PAL_NONE, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1154, PAL_NONE, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11de, PAL_NONE, 0, 0, 16, 16, 60, 0), + M( 0x1152, PAL_NONE, 0x11de, PAL_NONE, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1153, PALETTE_TO_RED, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1154, PALETTE_TO_RED, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11de, PALETTE_TO_RED, 0, 0, 16, 16, 60, 0), + M( 0x1152, PAL_NONE, 0x11de, PALETTE_TO_RED, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1153, PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1154, PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11de, PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 60, 0), + M( 0x1152, PAL_NONE, 0x11de, PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1153, PALETTE_TO_GREY, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1154, PALETTE_TO_GREY, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11de, PALETTE_TO_GREY, 0, 0, 16, 16, 60, 0), + M( 0x1152, PAL_NONE, 0x11de, PALETTE_TO_GREY, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1157, PAL_NONE, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1158, PAL_NONE, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1159, PAL_NONE, 0, 0, 16, 16, 60, 0), + M( 0x1156, PAL_NONE, 0x1159, PAL_NONE, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1157, PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1158, PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1159, PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 60, 0), + M( 0x1156, PAL_NONE, 0x1159, PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1157, PALETTE_TO_CREAM, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1158, PALETTE_TO_CREAM, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1159, PALETTE_TO_CREAM, 0, 0, 16, 16, 60, 0), + M( 0x1156, PAL_NONE, 0x1159, PALETTE_TO_CREAM, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1157, PALETTE_TO_YELLOW, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1158, PALETTE_TO_YELLOW, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1159, PALETTE_TO_YELLOW, 0, 0, 16, 16, 60, 0), + M( 0x1156, PAL_NONE, 0x1159, PALETTE_TO_YELLOW, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1157, PAL_NONE, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1158, PAL_NONE, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11df, PAL_NONE, 0, 0, 16, 16, 60, 0), + M( 0x1156, PAL_NONE, 0x11df, PAL_NONE, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1157, PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1158, PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11df, PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 60, 0), + M( 0x1156, PAL_NONE, 0x11df, PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1157, PALETTE_TO_CREAM, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1158, PALETTE_TO_CREAM, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11df, PALETTE_TO_CREAM, 0, 0, 16, 16, 60, 0), + M( 0x1156, PAL_NONE, 0x11df, PALETTE_TO_CREAM, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1157, PALETTE_TO_YELLOW, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1158, PALETTE_TO_YELLOW, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11df, PALETTE_TO_YELLOW, 0, 0, 16, 16, 60, 0), + M( 0x1156, PAL_NONE, 0x11df, PALETTE_TO_YELLOW, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x115b, PAL_NONE, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x115c, PAL_NONE, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x115d, PAL_NONE, 0, 0, 16, 16, 60, 0), + M( 0x115a, PAL_NONE, 0x115d, PAL_NONE, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x115b, PALETTE_TO_RED, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x115c, PALETTE_TO_RED, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x115d, PALETTE_TO_RED, 0, 0, 16, 16, 60, 0), + M( 0x115a, PAL_NONE, 0x115d, PALETTE_TO_RED, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x115b, PALETTE_TO_ORANGE, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x115c, PALETTE_TO_ORANGE, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x115d, PALETTE_TO_ORANGE, 0, 0, 16, 16, 60, 0), + M( 0x115a, PAL_NONE, 0x115d, PALETTE_TO_ORANGE, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x115b, PALETTE_TO_BROWN, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x115c, PALETTE_TO_BROWN, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x115d, PALETTE_TO_BROWN, 0, 0, 16, 16, 60, 0), + M( 0x115a, PAL_NONE, 0x115d, PALETTE_TO_BROWN, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x115b, PAL_NONE, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x115c, PAL_NONE, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e0, PAL_NONE, 0, 0, 16, 16, 60, 0), + M( 0x115a, PAL_NONE, 0x11e0, PAL_NONE, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x115b, PALETTE_TO_RED, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x115c, PALETTE_TO_RED, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e0, PALETTE_TO_RED, 0, 0, 16, 16, 60, 0), + M( 0x115a, PAL_NONE, 0x11e0, PALETTE_TO_RED, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x115b, PALETTE_TO_ORANGE, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x115c, PALETTE_TO_ORANGE, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e0, PALETTE_TO_ORANGE, 0, 0, 16, 16, 60, 0), + M( 0x115a, PAL_NONE, 0x11e0, PALETTE_TO_ORANGE, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x115b, PALETTE_TO_BROWN, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x115c, PALETTE_TO_BROWN, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e0, PALETTE_TO_BROWN, 0, 0, 16, 16, 60, 0), + M( 0x115a, PAL_NONE, 0x11e0, PALETTE_TO_BROWN, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1160, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1161, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1162, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x115e, PAL_NONE, 0x1162, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1160, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1161, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1162, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x115e, PAL_NONE, 0x1162, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1166, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1167, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1168, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x1164, PAL_NONE, 0x1168, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1166, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1167, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1168, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x1164, PAL_NONE, 0x1168, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1160, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1161, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1162, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x115f, PAL_NONE, 0x1163, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1160, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1161, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1162, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x115f, PAL_NONE, 0x1163, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1166, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1167, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1168, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x1165, PAL_NONE, 0x1169, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1166, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1167, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1168, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x1165, PAL_NONE, 0x1169, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( 0x116b, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x116c, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x116d, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( 0x116a, PAL_NONE, 0x116d, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( 0x116b, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x116c, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x116d, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( 0x116a, PAL_NONE, 0x116d, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( 0x116b, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x116c, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x116d, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( 0x116a, PAL_NONE, 0x116d, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( 0x116b, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x116c, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x116d, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( 0x116a, PAL_NONE, 0x116d, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( 0x116b, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x116c, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e2, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( 0x116a, PAL_NONE, 0x11e2, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( 0x116b, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x116c, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e2, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( 0x116a, PAL_NONE, 0x11e2, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( 0x116b, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x116c, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e2, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( 0x116a, PAL_NONE, 0x11e2, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( 0x116b, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x116c, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e2, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( 0x116a, PAL_NONE, 0x11e2, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( 0x116f, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1170, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1171, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( 0x116e, PAL_NONE, 0x1171, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( 0x116f, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1170, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1171, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( 0x116e, PAL_NONE, 0x1171, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( 0x116f, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1170, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1171, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( 0x116e, PAL_NONE, 0x1171, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( 0x116f, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1170, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1171, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( 0x116e, PAL_NONE, 0x1171, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( 0x116f, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1170, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e3, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( 0x116e, PAL_NONE, 0x11e3, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( 0x116f, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1170, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e3, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( 0x116e, PAL_NONE, 0x11e3, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( 0x116f, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1170, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e3, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( 0x116e, PAL_NONE, 0x11e3, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( 0x116f, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1170, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e3, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( 0x116e, PAL_NONE, 0x11e3, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1173, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1174, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1175, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( 0x1172, PAL_NONE, 0x1175, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1173, PALETTE_TO_BROWN, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1174, PALETTE_TO_BROWN, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1175, PALETTE_TO_BROWN, 0, 0, 16, 16, 40, 0), + M( 0x1172, PAL_NONE, 0x1175, PALETTE_TO_BROWN, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1173, PALETTE_TO_CREAM, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1174, PALETTE_TO_CREAM, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1175, PALETTE_TO_CREAM, 0, 0, 16, 16, 40, 0), + M( 0x1172, PAL_NONE, 0x1175, PALETTE_TO_CREAM, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1173, PALETTE_TO_GREY, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1174, PALETTE_TO_GREY, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1175, PALETTE_TO_GREY, 0, 0, 16, 16, 40, 0), + M( 0x1172, PAL_NONE, 0x1175, PALETTE_TO_GREY, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1173, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1174, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1175, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( 0x11e4, PAL_NONE, 0x11e5, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1173, PALETTE_TO_BROWN, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1174, PALETTE_TO_BROWN, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1175, PALETTE_TO_BROWN, 0, 0, 16, 16, 40, 0), + M( 0x11e4, PAL_NONE, 0x11e5, PALETTE_TO_BROWN, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1173, PALETTE_TO_CREAM, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1174, PALETTE_TO_CREAM, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1175, PALETTE_TO_CREAM, 0, 0, 16, 16, 40, 0), + M( 0x11e4, PAL_NONE, 0x11e5, PALETTE_TO_CREAM, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1173, PALETTE_TO_GREY, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1174, PALETTE_TO_GREY, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1175, PALETTE_TO_GREY, 0, 0, 16, 16, 40, 0), + M( 0x11e4, PAL_NONE, 0x11e5, PALETTE_TO_GREY, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1176, PAL_NONE, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1176, PAL_NONE, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1176, PAL_NONE, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1176, PAL_NONE, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1176, PAL_NONE, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1176, PAL_NONE, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1176, PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1176, PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1176, PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1176, PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1176, PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1176, PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e6, PAL_NONE, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e6, PAL_NONE, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e6, PAL_NONE, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e6, PAL_NONE, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e6, PAL_NONE, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e6, PAL_NONE, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e6, PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e6, PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e6, PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e6, PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e6, PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e6, PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 60, 0), + M( 0x1177, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1179, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117b, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117b, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( 0x1177, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1179, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117b, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117b, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( 0x1177, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1179, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117b, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117b, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( 0x1177, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1179, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117b, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117b, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( 0x1178, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117a, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117c, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117c, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( 0x1178, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117a, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117c, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117c, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( 0x1178, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117a, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117c, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117c, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( 0x1178, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117a, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117c, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117c, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( 0x1177, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1179, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e7, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e7, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( 0x1177, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1179, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e7, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e7, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( 0x1177, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1179, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e7, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e7, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( 0x1177, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1179, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e7, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e7, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( 0x1178, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117a, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e8, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e8, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( 0x1178, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117a, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e8, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e8, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( 0x1178, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117a, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e8, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e8, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( 0x1178, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117a, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e8, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e8, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117d, PAL_NONE, 0, 0, 16, 16, 50, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117e, PAL_NONE, 0, 0, 16, 16, 50, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117f, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_CONCRETE_GROUND, PAL_NONE, 0x117f, PAL_NONE, 0, 0, 16, 16, 50, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117d, PAL_NONE, 0, 0, 16, 16, 50, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117e, PAL_NONE, 0, 0, 16, 16, 50, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117f, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_CONCRETE_GROUND, PAL_NONE, 0x117f, PAL_NONE, 0, 0, 16, 16, 50, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117d, PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 50, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117e, PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 50, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117f, PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 50, 0), + M(SPR_CONCRETE_GROUND, PAL_NONE, 0x117f, PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 50, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117d, PALETTE_TO_STRUCT_WHITE, 0, 0, 16, 16, 50, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117e, PALETTE_TO_STRUCT_WHITE, 0, 0, 16, 16, 50, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117f, PALETTE_TO_STRUCT_WHITE, 0, 0, 16, 16, 50, 0), + M(SPR_CONCRETE_GROUND, PAL_NONE, 0x117f, PALETTE_TO_STRUCT_WHITE, 0, 0, 16, 16, 50, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117d, PAL_NONE, 0, 0, 16, 16, 50, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117e, PAL_NONE, 0, 0, 16, 16, 50, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e1, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_CONCRETE_GROUND, PAL_NONE, 0x11e1, PAL_NONE, 0, 0, 16, 16, 50, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117d, PAL_NONE, 0, 0, 16, 16, 50, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117e, PAL_NONE, 0, 0, 16, 16, 50, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e1, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_CONCRETE_GROUND, PAL_NONE, 0x11e1, PAL_NONE, 0, 0, 16, 16, 50, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117d, PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 50, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117e, PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 50, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e1, PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 50, 0), + M(SPR_CONCRETE_GROUND, PAL_NONE, 0x11e1, PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 50, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117d, PALETTE_TO_STRUCT_WHITE, 0, 0, 16, 16, 50, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117e, PALETTE_TO_STRUCT_WHITE, 0, 0, 16, 16, 50, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e1, PALETTE_TO_STRUCT_WHITE, 0, 0, 16, 16, 50, 0), + M(SPR_CONCRETE_GROUND, PAL_NONE, 0x11e1, PALETTE_TO_STRUCT_WHITE, 0, 0, 16, 16, 50, 0), + M( 0x1180, PAL_NONE, 0x1181, PAL_NONE, 0, 0, 16, 16, 10, 0), + M( 0x1183, PAL_NONE, 0x1182, PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 60, 0), + M( 0x1183, PAL_NONE, 0x1182, PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 60, 0), + M( 0x1183, PAL_NONE, 0x1184, PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 60, 0), + M( 0x1180, PAL_NONE, 0x1181, PAL_NONE, 0, 0, 16, 16, 10, 0), + M( 0x1183, PAL_NONE, 0x1182, PALETTE_TO_ORANGE, 0, 0, 16, 16, 60, 0), + M( 0x1183, PAL_NONE, 0x1182, PALETTE_TO_ORANGE, 0, 0, 16, 16, 60, 0), + M( 0x1183, PAL_NONE, 0x1184, PALETTE_TO_ORANGE, 0, 0, 16, 16, 60, 0), + M( 0x1180, PAL_NONE, 0x1181, PAL_NONE, 0, 0, 16, 16, 10, 0), + M( 0x1183, PAL_NONE, 0x1182, PALETTE_TO_BROWN, 0, 0, 16, 16, 60, 0), + M( 0x1183, PAL_NONE, 0x1182, PALETTE_TO_BROWN, 0, 0, 16, 16, 60, 0), + M( 0x1183, PAL_NONE, 0x1184, PALETTE_TO_BROWN, 0, 0, 16, 16, 60, 0), + M( 0x1180, PAL_NONE, 0x1181, PAL_NONE, 0, 0, 16, 16, 10, 0), + M( 0x1183, PAL_NONE, 0x1182, PALETTE_TO_GREY, 0, 0, 16, 16, 60, 0), + M( 0x1183, PAL_NONE, 0x1182, PALETTE_TO_GREY, 0, 0, 16, 16, 60, 0), + M( 0x1183, PAL_NONE, 0x1184, PALETTE_TO_GREY, 0, 0, 16, 16, 60, 0), + M( 0x1180, PAL_NONE, 0x1181, PAL_NONE, 0, 0, 16, 16, 10, 0), + M( 0x1183, PAL_NONE, 0x1182, PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 60, 0), + M( 0x1183, PAL_NONE, 0x1182, PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 60, 0), + M( 0x1183, PAL_NONE, 0x11e9, PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 60, 0), + M( 0x1180, PAL_NONE, 0x1181, PAL_NONE, 0, 0, 16, 16, 10, 0), + M( 0x1183, PAL_NONE, 0x1182, PALETTE_TO_ORANGE, 0, 0, 16, 16, 60, 0), + M( 0x1183, PAL_NONE, 0x1182, PALETTE_TO_ORANGE, 0, 0, 16, 16, 60, 0), + M( 0x1183, PAL_NONE, 0x11e9, PALETTE_TO_ORANGE, 0, 0, 16, 16, 60, 0), + M( 0x1180, PAL_NONE, 0x1181, PAL_NONE, 0, 0, 16, 16, 10, 0), + M( 0x1183, PAL_NONE, 0x1182, PALETTE_TO_BROWN, 0, 0, 16, 16, 60, 0), + M( 0x1183, PAL_NONE, 0x1182, PALETTE_TO_BROWN, 0, 0, 16, 16, 60, 0), + M( 0x1183, PAL_NONE, 0x11e9, PALETTE_TO_BROWN, 0, 0, 16, 16, 60, 0), + M( 0x1180, PAL_NONE, 0x1181, PAL_NONE, 0, 0, 16, 16, 10, 0), + M( 0x1183, PAL_NONE, 0x1182, PALETTE_TO_GREY, 0, 0, 16, 16, 60, 0), + M( 0x1183, PAL_NONE, 0x1182, PALETTE_TO_GREY, 0, 0, 16, 16, 60, 0), + M( 0x1183, PAL_NONE, 0x11e9, PALETTE_TO_GREY, 0, 0, 16, 16, 60, 0), + M( 0x1185, PAL_NONE, 0x1187, PAL_NONE, 0, 0, 16, 16, 10, 0), + M( 0x1185, PAL_NONE, 0x1189, PAL_NONE, 0, 0, 16, 16, 10, 0), + M( 0x1185, PAL_NONE, 0x1189, PAL_NONE, 0, 0, 16, 16, 10, 0), + M( 0x1185, PAL_NONE, 0x118b, PAL_NONE, 0, 0, 16, 16, 10, 0), + M( 0x1185, PAL_NONE, 0x1187, PAL_NONE, 0, 0, 16, 16, 10, 0), + M( 0x1185, PAL_NONE, 0x1189, PAL_NONE, 0, 0, 16, 16, 10, 0), + M( 0x1185, PAL_NONE, 0x1189, PAL_NONE, 0, 0, 16, 16, 10, 0), + M( 0x1185, PAL_NONE, 0x118b, PAL_NONE, 0, 0, 16, 16, 10, 0), + M( 0x1185, PAL_NONE, 0x1187, PAL_NONE, 0, 0, 16, 16, 10, 0), + M( 0x1185, PAL_NONE, 0x1189, PAL_NONE, 0, 0, 16, 16, 10, 0), + M( 0x1185, PAL_NONE, 0x1189, PAL_NONE, 0, 0, 16, 16, 10, 0), + M( 0x1185, PAL_NONE, 0x118b, PAL_NONE, 0, 0, 16, 16, 10, 0), + M( 0x1185, PAL_NONE, 0x1187, PAL_NONE, 0, 0, 16, 16, 10, 0), + M( 0x1185, PAL_NONE, 0x1189, PAL_NONE, 0, 0, 16, 16, 10, 0), + M( 0x1185, PAL_NONE, 0x1189, PAL_NONE, 0, 0, 16, 16, 10, 0), + M( 0x1185, PAL_NONE, 0x118b, PAL_NONE, 0, 0, 16, 16, 10, 0), + M( 0x1186, PAL_NONE, 0x1188, PAL_NONE, 0, 0, 16, 16, 10, 0), + M( 0x1186, PAL_NONE, 0x118a, PAL_NONE, 0, 0, 16, 16, 10, 0), + M( 0x1186, PAL_NONE, 0x118a, PAL_NONE, 0, 0, 16, 16, 10, 0), + M( 0x1186, PAL_NONE, 0x118c, PAL_NONE, 0, 0, 16, 16, 10, 0), + M( 0x1186, PAL_NONE, 0x1188, PAL_NONE, 0, 0, 16, 16, 10, 0), + M( 0x1186, PAL_NONE, 0x118a, PAL_NONE, 0, 0, 16, 16, 10, 0), + M( 0x1186, PAL_NONE, 0x118a, PAL_NONE, 0, 0, 16, 16, 10, 0), + M( 0x1186, PAL_NONE, 0x118c, PAL_NONE, 0, 0, 16, 16, 10, 0), + M( 0x1186, PAL_NONE, 0x1188, PAL_NONE, 0, 0, 16, 16, 10, 0), + M( 0x1186, PAL_NONE, 0x118a, PAL_NONE, 0, 0, 16, 16, 10, 0), + M( 0x1186, PAL_NONE, 0x118a, PAL_NONE, 0, 0, 16, 16, 10, 0), + M( 0x1186, PAL_NONE, 0x118c, PAL_NONE, 0, 0, 16, 16, 10, 0), + M( 0x1186, PAL_NONE, 0x1188, PAL_NONE, 0, 0, 16, 16, 10, 0), + M( 0x1186, PAL_NONE, 0x118a, PAL_NONE, 0, 0, 16, 16, 10, 0), + M( 0x1186, PAL_NONE, 0x118a, PAL_NONE, 0, 0, 16, 16, 10, 0), + M( 0x1186, PAL_NONE, 0x118c, PAL_NONE, 0, 0, 16, 16, 10, 0), + M( 0x1185, PAL_NONE, 0x1187, PAL_NONE, 0, 0, 16, 16, 10, 0), + M( 0x1185, PAL_NONE, 0x1189, PAL_NONE, 0, 0, 16, 16, 10, 0), + M( 0x1185, PAL_NONE, 0x1189, PAL_NONE, 0, 0, 16, 16, 10, 0), + M( 0x1185, PAL_NONE, 0x11ea, PAL_NONE, 0, 0, 16, 16, 10, 0), + M( 0x1185, PAL_NONE, 0x1187, PAL_NONE, 0, 0, 16, 16, 10, 0), + M( 0x1185, PAL_NONE, 0x1189, PAL_NONE, 0, 0, 16, 16, 10, 0), + M( 0x1185, PAL_NONE, 0x1189, PAL_NONE, 0, 0, 16, 16, 10, 0), + M( 0x1185, PAL_NONE, 0x11ea, PAL_NONE, 0, 0, 16, 16, 10, 0), + M( 0x1185, PAL_NONE, 0x1187, PAL_NONE, 0, 0, 16, 16, 10, 0), + M( 0x1185, PAL_NONE, 0x1189, PAL_NONE, 0, 0, 16, 16, 10, 0), + M( 0x1185, PAL_NONE, 0x1189, PAL_NONE, 0, 0, 16, 16, 10, 0), + M( 0x1185, PAL_NONE, 0x11ea, PAL_NONE, 0, 0, 16, 16, 10, 0), + M( 0x1185, PAL_NONE, 0x1187, PAL_NONE, 0, 0, 16, 16, 10, 0), + M( 0x1185, PAL_NONE, 0x1189, PAL_NONE, 0, 0, 16, 16, 10, 0), + M( 0x1185, PAL_NONE, 0x1189, PAL_NONE, 0, 0, 16, 16, 10, 0), + M( 0x1185, PAL_NONE, 0x11ea, PAL_NONE, 0, 0, 16, 16, 10, 0), + M( 0x1186, PAL_NONE, 0x1188, PAL_NONE, 0, 0, 16, 16, 10, 0), + M( 0x1186, PAL_NONE, 0x118a, PAL_NONE, 0, 0, 16, 16, 10, 0), + M( 0x1186, PAL_NONE, 0x118a, PAL_NONE, 0, 0, 16, 16, 10, 0), + M( 0x1186, PAL_NONE, 0x11eb, PAL_NONE, 0, 0, 16, 16, 10, 0), + M( 0x1186, PAL_NONE, 0x1188, PAL_NONE, 0, 0, 16, 16, 10, 0), + M( 0x1186, PAL_NONE, 0x118a, PAL_NONE, 0, 0, 16, 16, 10, 0), + M( 0x1186, PAL_NONE, 0x118a, PAL_NONE, 0, 0, 16, 16, 10, 0), + M( 0x1186, PAL_NONE, 0x11eb, PAL_NONE, 0, 0, 16, 16, 10, 0), + M( 0x1186, PAL_NONE, 0x1188, PAL_NONE, 0, 0, 16, 16, 10, 0), + M( 0x1186, PAL_NONE, 0x118a, PAL_NONE, 0, 0, 16, 16, 10, 0), + M( 0x1186, PAL_NONE, 0x118a, PAL_NONE, 0, 0, 16, 16, 10, 0), + M( 0x1186, PAL_NONE, 0x11eb, PAL_NONE, 0, 0, 16, 16, 10, 0), + M( 0x1186, PAL_NONE, 0x1188, PAL_NONE, 0, 0, 16, 16, 10, 0), + M( 0x1186, PAL_NONE, 0x118a, PAL_NONE, 0, 0, 16, 16, 10, 0), + M( 0x1186, PAL_NONE, 0x118a, PAL_NONE, 0, 0, 16, 16, 10, 0), + M( 0x1186, PAL_NONE, 0x11eb, PAL_NONE, 0, 0, 16, 16, 10, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11ec, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11ed, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11ed, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11ee, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11ec, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11ed, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11ed, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11ee, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11ec, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11ed, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11ed, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11ee, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11ec, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11ed, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11ed, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11ee, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11ef, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f0, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f0, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f1, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11ef, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f0, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f0, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f1, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11ef, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f0, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f0, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f1, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11ef, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f0, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f0, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f1, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f2, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f3, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f3, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f4, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f2, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f3, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f3, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f4, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f2, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f3, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f3, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f4, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f2, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f3, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f3, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f4, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f5, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f5, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f5, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f6, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f6, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f6, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f7, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f7, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f7, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f8, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f8, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f8, PAL_NONE, 0, 0, 16, 16, 20, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f9, PAL_NONE, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fa, PAL_NONE, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fa, PAL_NONE, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fb, PAL_NONE, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f9, PAL_NONE, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fa, PAL_NONE, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fa, PAL_NONE, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fb, PAL_NONE, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f9, PAL_NONE, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fa, PAL_NONE, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fa, PAL_NONE, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fb, PAL_NONE, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f9, PAL_NONE, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fa, PAL_NONE, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fa, PAL_NONE, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fb, PAL_NONE, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fc, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fc, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fc, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fc, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fc, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fc, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fc, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fc, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fc, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fc, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fc, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fc, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fd, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fe, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fe, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11ff, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fd, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fe, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fe, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11ff, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fd, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fe, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fe, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11ff, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fd, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fe, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fe, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11ff, PAL_NONE, 0, 0, 16, 16, 40, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1200, PAL_NONE, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1201, PAL_NONE, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1201, PAL_NONE, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1202, PAL_NONE, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1200, PALETTE_TO_PINK, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1201, PALETTE_TO_PINK, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1201, PALETTE_TO_PINK, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1202, PALETTE_TO_PINK, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1200, PALETTE_TO_YELLOW, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1201, PALETTE_TO_YELLOW, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1201, PALETTE_TO_YELLOW, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1202, PALETTE_TO_YELLOW, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1200, PALETTE_TO_RED, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1201, PALETTE_TO_RED, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1201, PALETTE_TO_RED, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1202, PALETTE_TO_RED, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1203, PAL_NONE, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1204, PAL_NONE, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1204, PAL_NONE, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1205, PAL_NONE, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1203, PALETTE_TO_PINK, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1204, PALETTE_TO_PINK, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1204, PALETTE_TO_PINK, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1205, PALETTE_TO_PINK, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1203, PALETTE_TO_YELLOW, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1204, PALETTE_TO_YELLOW, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1204, PALETTE_TO_YELLOW, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1205, PALETTE_TO_YELLOW, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1203, PALETTE_TO_RED, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1204, PALETTE_TO_RED, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1204, PALETTE_TO_RED, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1205, PALETTE_TO_RED, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1206, PAL_NONE, 0, 0, 16, 16, 80, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1208, PAL_NONE, 0, 0, 16, 16, 80, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1208, PAL_NONE, 0, 0, 16, 16, 80, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x120a, PAL_NONE, 0, 0, 16, 16, 80, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1206, PAL_NONE, 0, 0, 16, 16, 80, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1208, PAL_NONE, 0, 0, 16, 16, 80, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1208, PAL_NONE, 0, 0, 16, 16, 80, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x120a, PAL_NONE, 0, 0, 16, 16, 80, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1206, PAL_NONE, 0, 0, 16, 16, 80, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1208, PAL_NONE, 0, 0, 16, 16, 80, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1208, PAL_NONE, 0, 0, 16, 16, 80, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x120a, PAL_NONE, 0, 0, 16, 16, 80, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1206, PAL_NONE, 0, 0, 16, 16, 80, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1208, PAL_NONE, 0, 0, 16, 16, 80, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1208, PAL_NONE, 0, 0, 16, 16, 80, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x120a, PAL_NONE, 0, 0, 16, 16, 80, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1207, PAL_NONE, 0, 0, 16, 16, 80, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1209, PAL_NONE, 0, 0, 16, 16, 80, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1209, PAL_NONE, 0, 0, 16, 16, 80, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x120b, PAL_NONE, 0, 0, 16, 16, 80, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1207, PAL_NONE, 0, 0, 16, 16, 80, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1209, PAL_NONE, 0, 0, 16, 16, 80, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1209, PAL_NONE, 0, 0, 16, 16, 80, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x120b, PAL_NONE, 0, 0, 16, 16, 80, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1207, PAL_NONE, 0, 0, 16, 16, 80, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1209, PAL_NONE, 0, 0, 16, 16, 80, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1209, PAL_NONE, 0, 0, 16, 16, 80, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x120b, PAL_NONE, 0, 0, 16, 16, 80, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1207, PAL_NONE, 0, 0, 16, 16, 80, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1209, PAL_NONE, 0, 0, 16, 16, 80, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1209, PAL_NONE, 0, 0, 16, 16, 80, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x120b, PAL_NONE, 0, 0, 16, 16, 80, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x120c, PAL_NONE, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x120d, PAL_NONE, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x120d, PAL_NONE, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x120e, PAL_NONE, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x120c, PAL_NONE, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x120d, PAL_NONE, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x120d, PAL_NONE, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x120e, PAL_NONE, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x120c, PAL_NONE, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x120d, PAL_NONE, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x120d, PAL_NONE, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x120e, PAL_NONE, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x120c, PAL_NONE, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x120d, PAL_NONE, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x120d, PAL_NONE, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x120e, PAL_NONE, 0, 0, 16, 16, 60, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x120f, PAL_NONE, 0, 0, 16, 16, 50, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1210, PAL_NONE, 0, 0, 16, 16, 50, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1210, PAL_NONE, 0, 0, 16, 16, 50, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1211, PAL_NONE, 0, 0, 16, 16, 50, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x120f, PAL_NONE, 0, 0, 16, 16, 50, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1210, PAL_NONE, 0, 0, 16, 16, 50, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1210, PAL_NONE, 0, 0, 16, 16, 50, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1211, PAL_NONE, 0, 0, 16, 16, 50, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x120f, PAL_NONE, 0, 0, 16, 16, 50, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1210, PAL_NONE, 0, 0, 16, 16, 50, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1210, PAL_NONE, 0, 0, 16, 16, 50, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1211, PAL_NONE, 0, 0, 16, 16, 50, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x120f, PAL_NONE, 0, 0, 16, 16, 50, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1210, PAL_NONE, 0, 0, 16, 16, 50, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1210, PAL_NONE, 0, 0, 16, 16, 50, 0), + M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1211, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1213, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1214, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1214, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1215, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1213, PALETTE_TO_RED, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1214, PALETTE_TO_RED, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1214, PALETTE_TO_RED, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1215, PALETTE_TO_RED, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1213, PALETTE_TO_PINK, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1214, PALETTE_TO_PINK, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1214, PALETTE_TO_PINK, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1215, PALETTE_TO_PINK, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1213, PALETTE_TO_PALE_GREEN, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1214, PALETTE_TO_PALE_GREEN, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1214, PALETTE_TO_PALE_GREEN, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1215, PALETTE_TO_PALE_GREEN, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1216, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1217, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1217, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1218, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1216, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1217, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1217, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1218, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1216, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1217, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1217, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1218, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1216, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1217, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1217, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1218, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1219, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x121a, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x121a, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x121b, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1219, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x121a, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x121a, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x121b, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1219, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x121a, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x121a, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x121b, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1219, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x121a, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x121a, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x121b, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x121c, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x121d, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x121d, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x121e, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x121c, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x121d, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x121d, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x121e, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x121c, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x121d, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x121d, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x121e, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x121c, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x121d, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x121d, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x121e, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x121f, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1220, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1220, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1221, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x121f, PALETTE_TO_PINK, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1220, PALETTE_TO_PINK, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1220, PALETTE_TO_PINK, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1221, PALETTE_TO_PINK, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x121f, PALETTE_TO_MAUVE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1220, PALETTE_TO_MAUVE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1220, PALETTE_TO_MAUVE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1221, PALETTE_TO_MAUVE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x121f, PALETTE_TO_CREAM, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1220, PALETTE_TO_CREAM, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1220, PALETTE_TO_CREAM, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1221, PALETTE_TO_CREAM, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1222, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1223, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1223, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1224, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1222, PALETTE_TO_PINK, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1223, PALETTE_TO_PINK, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1223, PALETTE_TO_PINK, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1224, PALETTE_TO_PINK, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1222, PALETTE_TO_CREAM, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1223, PALETTE_TO_CREAM, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1223, PALETTE_TO_CREAM, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1224, PALETTE_TO_CREAM, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1222, PALETTE_TO_PALE_GREEN, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1223, PALETTE_TO_PALE_GREEN, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1223, PALETTE_TO_PALE_GREEN, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1224, PALETTE_TO_PALE_GREEN, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1225, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1226, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1226, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1227, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1225, PALETTE_TO_PINK, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1226, PALETTE_TO_PINK, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1226, PALETTE_TO_PINK, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1227, PALETTE_TO_PINK, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1225, PALETTE_TO_RED, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1226, PALETTE_TO_RED, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1226, PALETTE_TO_RED, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1227, PALETTE_TO_RED, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1225, PALETTE_TO_PALE_GREEN, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1226, PALETTE_TO_PALE_GREEN, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1226, PALETTE_TO_PALE_GREEN, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1227, PALETTE_TO_PALE_GREEN, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1228, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1229, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1229, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x122a, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1228, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1229, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1229, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x122a, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1228, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1229, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1229, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x122a, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1228, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1229, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1229, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x122a, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x122b, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x122d, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x122d, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x122f, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x122b, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x122d, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x122d, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x122f, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x122b, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x122d, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x122d, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x122f, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x122b, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x122d, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x122d, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x122f, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x122c, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x122e, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x122e, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1230, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x122c, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x122e, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x122e, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1230, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x122c, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x122e, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x122e, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1230, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x122c, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x122e, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x122e, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1230, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1231, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1232, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1232, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1233, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1231, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1232, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1232, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1233, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1231, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1232, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1232, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1233, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1231, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1232, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1232, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1233, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1234, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1235, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1235, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1236, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1234, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1235, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1235, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1236, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1234, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1235, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1235, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1236, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1234, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1235, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1235, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1236, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1237, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1238, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1238, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1239, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1237, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1238, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1238, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1239, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1237, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1238, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1238, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1239, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1237, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1238, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1238, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1239, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x123a, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x123b, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x123b, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x123c, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x123a, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x123b, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x123b, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x123c, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x123a, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x123b, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x123b, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x123c, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x123a, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x123b, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x123b, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x123c, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x123d, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x123e, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x123e, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x123f, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x123d, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x123e, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x123e, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x123f, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x123d, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x123e, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x123e, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x123f, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x123d, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x123e, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x123e, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x123f, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1240, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1241, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1241, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1242, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1240, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1241, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1241, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1242, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1240, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1241, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1241, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1242, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1240, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1241, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1241, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1242, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1256, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1256, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1256, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1256, PALETTE_TO_PALE_GREEN, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1256, PALETTE_TO_PALE_GREEN, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1256, PALETTE_TO_PALE_GREEN, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1256, PALETTE_TO_RED, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1256, PALETTE_TO_RED, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1256, PALETTE_TO_RED, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1256, PALETTE_TO_CREAM, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1256, PALETTE_TO_CREAM, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1256, PALETTE_TO_CREAM, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1257, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1258, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1258, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1259, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1257, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1258, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1258, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1259, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1257, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1258, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1258, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1259, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1257, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1258, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1258, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1259, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x125a, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x125a, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x125a, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x125a, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x125a, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x125a, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x125a, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x125a, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x125a, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x125a, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x125a, PAL_NONE, 0, 0, 16, 16, 50, 0), + M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x125a, PAL_NONE, 0, 0, 16, 16, 50, 0), }; #undef M /** Make sure we have the right number of elements: 4 variants * 4 build stages for each house */ diff --git a/src/table/townname.h b/src/table/townname.h index 4c81c481b..aac2d2b35 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", @@ -1729,7 +1729,7 @@ static const char * const _name_czech_patmod[][3] = { /* CZG_PNEUT */ { "\xC3\xAD", "\xC3\xA1", "a" } }; -/* This way the substantives can choose only some adjectives/endings: +/* This way the substantive can choose only some adjectives/endings: * At least one of these flags must be satisfied: */ enum CzechAllow { CZA_SHORT = 1, @@ -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 ec92069fc..15ac6f2aa 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 282c13272..1e0c9ad02 100644 --- a/src/table/win32_settings.ini +++ b/src/table/win32_settings.ini @@ -10,7 +10,7 @@ /* 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] @@ -51,15 +51,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 new file mode 100644 index 000000000..ad77423d9 --- /dev/null +++ b/src/table/window_settings.ini @@ -0,0 +1,55 @@ +; $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 . +; + +[pre-amble] + +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_END = SDT_END() + +[defaults] +base = WindowDesc +flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +guiflags = 0 +interval = 0 +str = STR_NULL +strhelp = STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT +strval = STR_NULL +proc = NULL +load = NULL +from = 0 +to = SL_MAX_VERSION +cat = SC_ADVANCED + + + +[SDT_BOOL] +var = pref_sticky +def = false + +[SDT_VAR] +var = pref_width +type = SLE_INT16 +def = 0 +min = 0 +max = 32000 + +[SDT_VAR] +var = pref_height +type = SLE_INT16 +def = 0 +min = 0 +max = 32000 + +[SDT_END] + +}; diff --git a/src/terraform_cmd.cpp b/src/terraform_cmd.cpp index 095726160..98ac1d365 100644 --- a/src/terraform_cmd.cpp +++ b/src/terraform_cmd.cpp @@ -21,16 +21,18 @@ #include "table/strings.h" +#include "safeguards.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 archieved when raising a complete flat land from sea level to MAX_TILE_HEIGHT or vice versa. + * 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); /* - * The maximal amount of affected tiles (i.e. the tiles that incident with one of the corners above, is computed similiar to + * 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); @@ -424,8 +426,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 d3c28ef9e..d2e7d39e1 100644 --- a/src/terraform_gui.cpp +++ b/src/terraform_gui.cpp @@ -31,15 +31,18 @@ #include "object.h" #include "hotkeys.h" #include "engine_base.h" +#include "terraform_gui.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); @@ -87,7 +90,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); } /** @@ -147,11 +150,11 @@ void PlaceProc_DemolishArea(TileIndex tile) struct TerraformToolbarWindow : Window { int last_user_action; ///< Last started user action. - TerraformToolbarWindow(const WindowDesc *desc, WindowNumber window_number) : Window() + TerraformToolbarWindow(WindowDesc *desc, WindowNumber window_number) : Window(desc) { /* This is needed as we like to have the tree available on OnInit. */ - this->CreateNestedTree(desc); - this->FinishInitNested(desc, window_number); + this->CreateNestedTree(); + this->FinishInitNested(window_number); this->last_user_action = WIDGET_LIST_END; } @@ -218,14 +221,6 @@ struct TerraformToolbarWindow : Window { } } - virtual EventState OnKeyPress(uint16 key, uint16 keycode) - { - int num = CheckHotkeyMatch(terraform_hotkeys, keycode, this); - if (num == -1) return ES_NOT_HANDLED; - this->OnClick(Point(), num, 1); - return ES_HANDLED; - } - virtual void OnPlaceObject(Point pt, TileIndex tile) { switch (this->last_user_action) { @@ -266,7 +261,7 @@ struct TerraformToolbarWindow : Window { VpSelectTilesWithMethod(pt.x, pt.y, select_method); } - virtual Point OnInitialPosition(const WindowDesc *desc, int16 sm_width, int16 sm_height, int window_number) + virtual Point OnInitialPosition(int16 sm_width, int16 sm_height, int window_number) { Point pt = GetToolbarAlignedWindowPosition(sm_width); pt.y += sm_height; @@ -294,21 +289,34 @@ struct TerraformToolbarWindow : Window { this->RaiseButtons(); } - static Hotkey terraform_hotkeys[]; + static HotkeyList hotkeys; }; -Hotkey TerraformToolbarWindow::terraform_hotkeys[] = { - Hotkey('Q' | WKC_GLOBAL_HOTKEY, "lower", WID_TT_LOWER_LAND), - Hotkey('W' | WKC_GLOBAL_HOTKEY, "raise", WID_TT_RAISE_LAND), - Hotkey('E' | WKC_GLOBAL_HOTKEY, "level", WID_TT_LEVEL_LAND), - Hotkey('D' | WKC_GLOBAL_HOTKEY, "dynamite", WID_TT_DEMOLISH), - Hotkey('U', "buyland", WID_TT_BUY_LAND), - Hotkey('I', "trees", WID_TT_PLANT_TREES), - Hotkey('O', "placesign", WID_TT_PLACE_SIGN), - Hotkey('P', "placeobject", WID_TT_PLACE_OBJECT), - HOTKEY_LIST_END(TerraformToolbarWindow) +/** + * Handler for global hotkeys of the TerraformToolbarWindow. + * @param hotkey Hotkey + * @return ES_HANDLED if hotkey was accepted. + */ +static EventState TerraformToolbarGlobalHotkeys(int hotkey) +{ + if (_game_mode != GM_NORMAL) return ES_NOT_HANDLED; + Window *w = ShowTerraformToolbar(NULL); + if (w == NULL) return ES_NOT_HANDLED; + return w->OnHotkey(hotkey); +} + +static Hotkey terraform_hotkeys[] = { + Hotkey('Q' | WKC_GLOBAL_HOTKEY, "lower", WID_TT_LOWER_LAND), + Hotkey('W' | WKC_GLOBAL_HOTKEY, "raise", WID_TT_RAISE_LAND), + Hotkey('E' | WKC_GLOBAL_HOTKEY, "level", WID_TT_LEVEL_LAND), + Hotkey('D' | WKC_GLOBAL_HOTKEY, "dynamite", WID_TT_DEMOLISH), + Hotkey('U', "buyland", WID_TT_BUY_LAND), + Hotkey('I', "trees", WID_TT_PLANT_TREES), + Hotkey('O', "placesign", WID_TT_PLACE_SIGN), + Hotkey('P', "placeobject", WID_TT_PLACE_OBJECT), + HOTKEY_LIST_END }; -Hotkey *_terraform_hotkeys = TerraformToolbarWindow::terraform_hotkeys; +HotkeyList TerraformToolbarWindow::hotkeys("terraform", terraform_hotkeys, TerraformToolbarGlobalHotkeys); static const NWidgetPart _nested_terraform_widgets[] = { NWidget(NWID_HORIZONTAL), @@ -341,11 +349,12 @@ static const NWidgetPart _nested_terraform_widgets[] = { EndContainer(), }; -static const WindowDesc _terraform_desc( - WDP_MANUAL, 0, 0, +static WindowDesc _terraform_desc( + WDP_MANUAL, "toolbar_landscape", 0, 0, WC_SCEN_LAND_GEN, WC_NONE, WDF_CONSTRUCTION, - _nested_terraform_widgets, lengthof(_nested_terraform_widgets) + _nested_terraform_widgets, lengthof(_nested_terraform_widgets), + &TerraformToolbarWindow::hotkeys ); /** @@ -377,15 +386,6 @@ Window *ShowTerraformToolbar(Window *link) return w; } -EventState TerraformToolbarGlobalHotkeys(uint16 key, uint16 keycode) -{ - int num = CheckHotkeyMatch(_terraform_hotkeys, keycode, NULL, true); - if (num == -1) return ES_NOT_HANDLED; - Window *w = ShowTerraformToolbar(NULL); - if (w == NULL) return ES_NOT_HANDLED; - return w->OnKeyPress(key, keycode); -} - static byte _terraform_size = 1; /** @@ -411,7 +411,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) { @@ -536,12 +536,12 @@ static void ResetLandscapeConfirmationCallback(Window *w, bool confirmed) struct ScenarioEditorLandscapeGenerationWindow : Window { int last_user_action; ///< Last started user action. - ScenarioEditorLandscapeGenerationWindow(const WindowDesc *desc, WindowNumber window_number) : Window() + ScenarioEditorLandscapeGenerationWindow(WindowDesc *desc, WindowNumber window_number) : Window(desc) { - this->CreateNestedTree(desc); + this->CreateNestedTree(); NWidgetStacked *show_desert = this->GetWidget(WID_ETT_SHOW_PLACE_DESERT); show_desert->SetDisplayedPlane(_settings_game.game_creation.landscape == LT_TROPIC ? 0 : SZSP_NONE); - this->FinishInitNested(desc, window_number); + this->FinishInitNested(window_number); this->last_user_action = WIDGET_LIST_END; } @@ -571,14 +571,6 @@ struct ScenarioEditorLandscapeGenerationWindow : Window { } while (--n); } - virtual EventState OnKeyPress(uint16 key, uint16 keycode) - { - int num = CheckHotkeyMatch(terraform_editor_hotkeys, keycode, this); - if (num == -1) return ES_NOT_HANDLED; - this->OnClick(Point(), num, 1); - return ES_HANDLED; - } - virtual void OnClick(Point pt, int widget, int click_count) { if (widget < WID_ETT_BUTTONS_START) return; @@ -723,27 +715,41 @@ struct ScenarioEditorLandscapeGenerationWindow : Window { DeleteWindowById(WC_BUILD_OBJECT, 0); } - static Hotkey terraform_editor_hotkeys[]; + static HotkeyList hotkeys; }; -Hotkey ScenarioEditorLandscapeGenerationWindow::terraform_editor_hotkeys[] = { - Hotkey('D' | WKC_GLOBAL_HOTKEY, "dynamite", WID_ETT_DEMOLISH), - Hotkey('Q' | WKC_GLOBAL_HOTKEY, "lower", WID_ETT_LOWER_LAND), - Hotkey('W' | WKC_GLOBAL_HOTKEY, "raise", WID_ETT_RAISE_LAND), - Hotkey('E' | WKC_GLOBAL_HOTKEY, "level", WID_ETT_LEVEL_LAND), - Hotkey('R', "rocky", WID_ETT_PLACE_ROCKS), - Hotkey('T', "desert", WID_ETT_PLACE_DESERT), - Hotkey('O', "object", WID_ETT_PLACE_OBJECT), - HOTKEY_LIST_END(ScenarioEditorLandscapeGenerationWindow) +/** + * Handler for global hotkeys of the ScenarioEditorLandscapeGenerationWindow. + * @param hotkey Hotkey + * @return ES_HANDLED if hotkey was accepted. + */ +static EventState TerraformToolbarEditorGlobalHotkeys(int hotkey) +{ + if (_game_mode != GM_EDITOR) return ES_NOT_HANDLED; + Window *w = ShowEditorTerraformToolbar(); + if (w == NULL) return ES_NOT_HANDLED; + return w->OnHotkey(hotkey); +} + +static Hotkey terraform_editor_hotkeys[] = { + Hotkey('D' | WKC_GLOBAL_HOTKEY, "dynamite", WID_ETT_DEMOLISH), + Hotkey('Q' | WKC_GLOBAL_HOTKEY, "lower", WID_ETT_LOWER_LAND), + Hotkey('W' | WKC_GLOBAL_HOTKEY, "raise", WID_ETT_RAISE_LAND), + Hotkey('E' | WKC_GLOBAL_HOTKEY, "level", WID_ETT_LEVEL_LAND), + Hotkey('R', "rocky", WID_ETT_PLACE_ROCKS), + Hotkey('T', "desert", WID_ETT_PLACE_DESERT), + Hotkey('O', "object", WID_ETT_PLACE_OBJECT), + HOTKEY_LIST_END }; -Hotkey *_terraform_editor_hotkeys = ScenarioEditorLandscapeGenerationWindow::terraform_editor_hotkeys; +HotkeyList ScenarioEditorLandscapeGenerationWindow::hotkeys("terraform_editor", terraform_editor_hotkeys, TerraformToolbarEditorGlobalHotkeys); -static const WindowDesc _scen_edit_land_gen_desc( - WDP_AUTO, 0, 0, +static WindowDesc _scen_edit_land_gen_desc( + WDP_AUTO, "toolbar_landscape_scen", 0, 0, WC_SCEN_LAND_GEN, WC_NONE, WDF_CONSTRUCTION, - _nested_scen_edit_land_gen_widgets, lengthof(_nested_scen_edit_land_gen_widgets) + _nested_scen_edit_land_gen_widgets, lengthof(_nested_scen_edit_land_gen_widgets), + &ScenarioEditorLandscapeGenerationWindow::hotkeys ); /** @@ -754,12 +760,3 @@ Window *ShowEditorTerraformToolbar() { return AllocateWindowDescFront(&_scen_edit_land_gen_desc, 0); } - -EventState TerraformToolbarEditorGlobalHotkeys(uint16 key, uint16 keycode) -{ - int num = CheckHotkeyMatch(_terraform_editor_hotkeys, keycode, NULL, true); - if (num == -1) return ES_NOT_HANDLED; - Window *w = ShowEditorTerraformToolbar(); - if (w == NULL) return ES_NOT_HANDLED; - return w->OnKeyPress(key, keycode); -} diff --git a/src/textbuf.cpp b/src/textbuf.cpp index fe32712dc..116d60ba8 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 retrive the current clipboard contents. + * Try to retrieve the current clipboard contents. * - * @note OS-specific funtion. - * @return True if some text could be retrived. + * @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; @@ -43,101 +47,69 @@ bool Textbuf::CanDelChar(bool backspace) } /** - * Get the next character that will be removed by DelChar. - * @param backspace if set, delete the character before the caret, - * otherwise, delete the character after it. - * @return the next character that will be removed by DelChar. - * @warning You should ensure Textbuf::CanDelChar returns true before calling this function. + * Delete a character from a textbuffer, either with 'Delete' or 'Backspace' + * The character is delete from the position the caret is at + * @param keycode Type of deletion, either WKC_BACKSPACE or WKC_DELETE + * @return Return true on successful change of Textbuf, or false otherwise */ -WChar Textbuf::GetNextDelChar(bool backspace) +bool Textbuf::DeleteChar(uint16 keycode) { - assert(this->CanDelChar(backspace)); + bool word = (keycode & WKC_CTRL) != 0; - const char *s; - if (backspace) { - s = Utf8PrevChar(this->buf + this->caretpos); - } else { - s = this->buf + this->caretpos; - } + keycode &= ~WKC_SPECIAL_KEYS; + if (keycode != WKC_BACKSPACE && keycode != WKC_DELETE) return false; - WChar c; - Utf8Decode(&c, s); - return c; -} + bool backspace = keycode == WKC_BACKSPACE; -/** - * Delete a character at the caret position in a text buf. - * @param backspace if set, delete the character before the caret, - * else delete the character after it. - * @warning You should ensure Textbuf::CanDelChar returns true before calling this function. - */ -void Textbuf::DelChar(bool backspace) -{ - assert(this->CanDelChar(backspace)); + if (!CanDelChar(backspace)) return false; - WChar c; char *s = this->buf + this->caretpos; - - if (backspace) s = Utf8PrevChar(s); - - uint16 len = (uint16)Utf8Decode(&c, s); - uint width = GetCharacterWidth(FS_NORMAL, c); - - this->pixels -= width; - if (backspace) { - this->caretpos -= len; - this->caretxoffs -= width; + uint16 len = 0; + + if (word) { + /* Delete a complete word. */ + if (backspace) { + /* Delete whitespace and word in front of the caret. */ + len = this->caretpos - (uint16)this->char_iter->Prev(StringIterator::ITER_WORD); + s -= len; + } else { + /* Delete word and following whitespace following the caret. */ + len = (uint16)this->char_iter->Next(StringIterator::ITER_WORD) - this->caretpos; + } + /* Update character count. */ + for (const char *ss = s; ss < s + len; Utf8Consume(&ss)) { + this->chars--; + } + } else { + /* Delete a single character. */ + if (backspace) { + /* Delete the last code point in front of the caret. */ + s = Utf8PrevChar(s); + WChar c; + len = (uint16)Utf8Decode(&c, s); + this->chars--; + } else { + /* Delete the complete character following the caret. */ + len = (uint16)this->char_iter->Next(StringIterator::ITER_CHARACTER) - this->caretpos; + /* Update character count. */ + for (const char *ss = s; ss < s + len; Utf8Consume(&ss)) { + this->chars--; + } + } } /* Move the remaining characters over the marker */ memmove(s, s + len, this->bytes - (s - this->buf) - len); this->bytes -= len; - this->chars--; -} - -/** - * Delete a character from a textbuffer, either with 'Delete' or 'Backspace' - * The character is delete from the position the caret is at - * @param delmode Type of deletion, either WKC_BACKSPACE or WKC_DELETE - * @return Return true on successful change of Textbuf, or false otherwise - */ -bool Textbuf::DeleteChar(int delmode) -{ - if (delmode == WKC_BACKSPACE || delmode == WKC_DELETE) { - bool backspace = delmode == WKC_BACKSPACE; - if (CanDelChar(backspace)) { - this->DelChar(backspace); - return true; - } - return false; - } - if (delmode == (WKC_CTRL | WKC_BACKSPACE) || delmode == (WKC_CTRL | WKC_DELETE)) { - bool backspace = delmode == (WKC_CTRL | WKC_BACKSPACE); + if (backspace) this->caretpos -= len; - if (!CanDelChar(backspace)) return false; - WChar c = this->GetNextDelChar(backspace); + this->UpdateStringIter(); + this->UpdateWidth(); + this->UpdateCaretPosition(); + this->UpdateMarkedText(); - /* Backspace: Delete left whitespaces. - * Delete: Delete right word. - */ - while (backspace ? IsWhitespace(c) : !IsWhitespace(c)) { - this->DelChar(backspace); - if (!this->CanDelChar(backspace)) return true; - c = this->GetNextDelChar(backspace); - } - /* Backspace: Delete left word. - * Delete: Delete right whitespaces. - */ - while (backspace ? !IsWhitespace(c) : IsWhitespace(c)) { - this->DelChar(backspace); - if (!this->CanDelChar(backspace)) return true; - c = this->GetNextDelChar(backspace); - } - return true; - } - - return false; + return true; } /** @@ -148,6 +120,8 @@ void Textbuf::DeleteAll() memset(this->buf, 0, this->max_bytes); this->bytes = this->chars = 1; this->pixels = this->caretpos = this->caretxoffs = 0; + this->markpos = this->markend = this->markxoffs = this->marklength = 0; + this->UpdateStringIter(); } /** @@ -159,189 +133,228 @@ void Textbuf::DeleteAll() */ bool Textbuf::InsertChar(WChar key) { - const byte charwidth = GetCharacterWidth(FS_NORMAL, key); uint16 len = (uint16)Utf8CharLen(key); if (this->bytes + len <= this->max_bytes && this->chars + 1 <= this->max_chars) { memmove(this->buf + this->caretpos + len, this->buf + this->caretpos, this->bytes - this->caretpos); Utf8Encode(this->buf + this->caretpos, key); this->chars++; - this->bytes += len; - this->pixels += charwidth; + this->bytes += len; + this->caretpos += len; - this->caretpos += len; - this->caretxoffs += charwidth; + this->UpdateStringIter(); + this->UpdateWidth(); + this->UpdateCaretPosition(); + this->UpdateMarkedText(); return true; } return false; } /** - * Insert a chunk of text from the clipboard onto the textbuffer. Get TEXT clipboard - * and append this up to the maximum length (either absolute or screenlength). If maxlength - * is zero, we don't care about the screenlength but only about the physical length of the string - * @return true on successful change of Textbuf, or false otherwise + * Insert a string into the text buffer. If maxwidth of the Textbuf is zero, + * we don't care about the visual-length but only about the physical + * length of the string. + * @param str String to insert. + * @param marked Replace the currently marked text with the new text. + * @param caret Move the caret to this point in the insertion string. + * @param insert_location Position at which to insert the string. + * @param replacement_end Replace all characters from #insert_location up to this location with the new string. + * @return True on successful change of Textbuf, or false otherwise. */ -bool Textbuf::InsertClipboard() +bool Textbuf::InsertString(const char *str, bool marked, const char *caret, const char *insert_location, const char *replacement_end) { - char utf8_buf[512]; + uint16 insertpos = (marked && this->marklength != 0) ? this->markpos : this->caretpos; + if (insert_location != NULL) { + insertpos = insert_location - this->buf; + if (insertpos > this->bytes) return false; + + if (replacement_end != NULL) { + this->DeleteText(insertpos, replacement_end - this->buf, str == NULL); + } + } else { + if (marked) this->DiscardMarkedText(str == NULL); + } - if (!GetClipboardContents(utf8_buf, lengthof(utf8_buf))) return false; + if (str == NULL) return false; - uint16 pixels = 0, bytes = 0, chars = 0; + uint16 bytes = 0, chars = 0; WChar c; - for (const char *ptr = utf8_buf; (c = Utf8Consume(&ptr)) != '\0';) { - if (!IsPrintable(c)) break; + for (const char *ptr = str; (c = Utf8Consume(&ptr)) != '\0';) { + if (!IsValidChar(c, this->afilter)) break; byte len = Utf8CharLen(c); if (this->bytes + bytes + len > this->max_bytes) break; if (this->chars + chars + 1 > this->max_chars) break; - byte char_pixels = GetCharacterWidth(FS_NORMAL, c); - - pixels += char_pixels; bytes += len; chars++; + + /* Move caret if needed. */ + if (ptr == caret) this->caretpos = insertpos + bytes; } if (bytes == 0) return false; - memmove(this->buf + this->caretpos + bytes, this->buf + this->caretpos, this->bytes - this->caretpos); - memcpy(this->buf + this->caretpos, utf8_buf, bytes); - this->pixels += pixels; - this->caretxoffs += pixels; + if (marked) { + this->markpos = insertpos; + this->markend = insertpos + bytes; + } + + memmove(this->buf + insertpos + bytes, this->buf + insertpos, this->bytes - insertpos); + memcpy(this->buf + insertpos, str, bytes); this->bytes += bytes; this->chars += chars; - this->caretpos += bytes; + if (!marked && caret == NULL) this->caretpos += bytes; assert(this->bytes <= this->max_bytes); assert(this->chars <= this->max_chars); this->buf[this->bytes - 1] = '\0'; // terminating zero + this->UpdateStringIter(); + this->UpdateWidth(); + this->UpdateCaretPosition(); + this->UpdateMarkedText(); + return true; } /** - * Checks if it is possible to move carret to the left - * @return true if the caret can be moved to the left, otherwise false. + * Insert a chunk of text from the clipboard onto the textbuffer. Get TEXT clipboard + * and append this up to the maximum length (either absolute or screenlength). If maxlength + * is zero, we don't care about the screenlength but only about the physical length of the string + * @return true on successful change of Textbuf, or false otherwise */ -bool Textbuf::CanMoveCaretLeft() +bool Textbuf::InsertClipboard() { - return this->caretpos != 0; + char utf8_buf[512]; + + if (!GetClipboardContents(utf8_buf, lastof(utf8_buf))) return false; + + return this->InsertString(utf8_buf, false); } /** - * Moves the caret to the left. - * @pre Ensure that Textbuf::CanMoveCaretLeft returns true - * @return The character under the caret. + * Delete a part of the text. + * @param from Start of the text to delete. + * @param to End of the text to delete. + * @param update Set to true if the internal state should be updated. */ -WChar Textbuf::MoveCaretLeft() +void Textbuf::DeleteText(uint16 from, uint16 to, bool update) { - assert(this->CanMoveCaretLeft()); + uint c = 0; + const char *s = this->buf + from; + while (s < this->buf + to) { + Utf8Consume(&s); + c++; + } - WChar c; - const char *s = Utf8PrevChar(this->buf + this->caretpos); - Utf8Decode(&c, s); - this->caretpos = s - this->buf; - this->caretxoffs -= GetCharacterWidth(FS_NORMAL, c); + /* Strip marked characters from buffer. */ + memmove(this->buf + from, this->buf + to, this->bytes - to); + this->bytes -= to - from; + this->chars -= c; + + /* Fixup caret if needed. */ + if (this->caretpos > from) { + if (this->caretpos <= to) { + this->caretpos = from; + } else { + this->caretpos -= to - from; + } + } - return c; + if (update) { + this->UpdateStringIter(); + this->UpdateCaretPosition(); + this->UpdateMarkedText(); + } } /** - * Checks if it is possible to move carret to the right - * @return true if the caret can be moved to the right, otherwise false. + * Discard any marked text. + * @param update Set to true if the internal state should be updated. */ -bool Textbuf::CanMoveCaretRight() +void Textbuf::DiscardMarkedText(bool update) { - return this->caretpos < this->bytes - 1; + if (this->markend == 0) return; + + this->DeleteText(this->markpos, this->markend, update); + this->markpos = this->markend = this->markxoffs = this->marklength = 0; } -/** - * Moves the caret to the right. - * @pre Ensure that Textbuf::CanMoveCaretRight returns true - * @return The character under the caret. - */ -WChar Textbuf::MoveCaretRight() +/** Update the character iter after the text has changed. */ +void Textbuf::UpdateStringIter() { - assert(this->CanMoveCaretRight()); + this->char_iter->SetString(this->buf); + size_t pos = this->char_iter->SetCurPosition(this->caretpos); + this->caretpos = pos == StringIterator::END ? 0 : (uint16)pos; +} - WChar c; - this->caretpos += (uint16)Utf8Decode(&c, this->buf + this->caretpos); - this->caretxoffs += GetCharacterWidth(FS_NORMAL, c); +/** Update pixel width of the text. */ +void Textbuf::UpdateWidth() +{ + this->pixels = GetStringBoundingBox(this->buf, FS_NORMAL).width; +} + +/** Update pixel position of the caret. */ +void Textbuf::UpdateCaretPosition() +{ + this->caretxoffs = this->chars > 1 ? GetCharPosInString(this->buf, this->buf + this->caretpos, FS_NORMAL).x : 0; +} - Utf8Decode(&c, this->buf + this->caretpos); - return c; +/** Update pixel positions of the marked text area. */ +void Textbuf::UpdateMarkedText() +{ + if (this->markend != 0) { + this->markxoffs = GetCharPosInString(this->buf, this->buf + this->markpos, FS_NORMAL).x; + this->marklength = GetCharPosInString(this->buf, this->buf + this->markend, FS_NORMAL).x - this->markxoffs; + } else { + this->markxoffs = this->marklength = 0; + } } /** * Handle text navigation with arrow keys left/right. - * This defines where the caret will blink and the next characer interaction will occur - * @param navmode Direction in which navigation occurs (WKC_CTRL |) WKC_LEFT, (WKC_CTRL |) WKC_RIGHT, WKC_END, WKC_HOME + * This defines where the caret will blink and the next character interaction will occur + * @param keycode Direction in which navigation occurs (WKC_CTRL |) WKC_LEFT, (WKC_CTRL |) WKC_RIGHT, WKC_END, WKC_HOME * @return Return true on successful change of Textbuf, or false otherwise */ -bool Textbuf::MovePos(int navmode) +bool Textbuf::MovePos(uint16 keycode) { - switch (navmode) { + switch (keycode) { case WKC_LEFT: - if (this->CanMoveCaretLeft()) { - this->MoveCaretLeft(); - return true; - } - break; - case WKC_CTRL | WKC_LEFT: { - if (!this->CanMoveCaretLeft()) break; - - /* Unconditionally move one char to the left. */ - WChar c = this->MoveCaretLeft(); - /* Consume left whitespaces. */ - while (IsWhitespace(c)) { - if (!this->CanMoveCaretLeft()) return true; - c = this->MoveCaretLeft(); - } - /* Consume left word. */ - while (!IsWhitespace(c)) { - if (!this->CanMoveCaretLeft()) return true; - c = this->MoveCaretLeft(); - } - /* Place caret at the begining of the left word. */ - this->MoveCaretRight(); + if (this->caretpos == 0) break; + + size_t pos = this->char_iter->Prev(keycode & WKC_CTRL ? StringIterator::ITER_WORD : StringIterator::ITER_CHARACTER); + if (pos == StringIterator::END) return true; + + this->caretpos = (uint16)pos; + this->UpdateCaretPosition(); return true; } case WKC_RIGHT: - if (this->CanMoveCaretRight()) { - this->MoveCaretRight(); - return true; - } - break; - case WKC_CTRL | WKC_RIGHT: { - if (!this->CanMoveCaretRight()) break; - - /* Unconditionally move one char to the right. */ - WChar c = this->MoveCaretRight(); - /* Continue to consume current word. */ - while (!IsWhitespace(c)) { - if (!this->CanMoveCaretRight()) return true; - c = this->MoveCaretRight(); - } - /* Consume right whitespaces. */ - while (IsWhitespace(c)) { - if (!this->CanMoveCaretRight()) return true; - c = this->MoveCaretRight(); - } + if (this->caretpos >= this->bytes - 1) break; + + size_t pos = this->char_iter->Next(keycode & WKC_CTRL ? StringIterator::ITER_WORD : StringIterator::ITER_CHARACTER); + if (pos == StringIterator::END) return true; + + this->caretpos = (uint16)pos; + this->UpdateCaretPosition(); return true; } case WKC_HOME: this->caretpos = 0; - this->caretxoffs = 0; + this->char_iter->SetCurPosition(this->caretpos); + this->UpdateCaretPosition(); return true; case WKC_END: this->caretpos = this->bytes - 1; - this->caretxoffs = this->pixels; + this->char_iter->SetCurPosition(this->caretpos); + this->UpdateCaretPosition(); return true; default: @@ -364,6 +377,9 @@ Textbuf::Textbuf(uint16 max_bytes, uint16 max_chars) assert(max_bytes != 0); assert(max_chars != 0); + this->char_iter = StringIterator::Create(); + + this->afilter = CS_ALPHANUMERAL; this->max_bytes = max_bytes; this->max_chars = max_chars == UINT16_MAX ? max_bytes : max_chars; this->caret = true; @@ -372,6 +388,7 @@ Textbuf::Textbuf(uint16 max_bytes, uint16 max_chars) Textbuf::~Textbuf() { + delete this->char_iter; free(this->buf); } @@ -391,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(); } @@ -402,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(); } @@ -417,21 +434,22 @@ void Textbuf::UpdateSize() { const char *buf = this->buf; - this->pixels = 0; this->chars = this->bytes = 1; // terminating zero WChar c; while ((c = Utf8Consume(&buf)) != '\0') { - this->pixels += GetCharacterWidth(FS_NORMAL, c); this->bytes += Utf8CharLen(c); this->chars++; } - assert(this->bytes <= this->max_bytes); assert(this->chars <= this->max_chars); this->caretpos = this->bytes - 1; - this->caretxoffs = this->pixels; + this->UpdateStringIter(); + this->UpdateWidth(); + this->UpdateMarkedText(); + + this->UpdateCaretPosition(); } /** @@ -449,3 +467,49 @@ bool Textbuf::HandleCaret() } return false; } + +HandleKeyPressResult Textbuf::HandleKeyPress(WChar key, uint16 keycode) +{ + bool edited = false; + + switch (keycode) { + case WKC_ESC: return HKPR_CANCEL; + + 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; + break; + + case WKC_BACKSPACE: case WKC_DELETE: + case WKC_CTRL | WKC_BACKSPACE: case WKC_CTRL | WKC_DELETE: + edited = this->DeleteChar(keycode); + break; + + case WKC_LEFT: case WKC_RIGHT: case WKC_END: case WKC_HOME: + case WKC_CTRL | WKC_LEFT: case WKC_CTRL | WKC_RIGHT: + this->MovePos(keycode); + break; + + default: + if (IsValidChar(key, this->afilter)) { + edited = this->InsertChar(key); + } else { + return HKPR_NOT_HANDLED; + } + break; + } + + return edited ? HKPR_EDITING : HKPR_CURSOR; +} diff --git a/src/textbuf_type.h b/src/textbuf_type.h index 8d38e8b8a..1d927b72d 100644 --- a/src/textbuf_type.h +++ b/src/textbuf_type.h @@ -14,9 +14,23 @@ #include "string_type.h" #include "strings_type.h" +#include "string_base.h" + +/** + * Return values for Textbuf::HandleKeypress + */ +enum HandleKeyPressResult +{ + HKPR_EDITING, ///< Textbuf content changed. + HKPR_CURSOR, ///< Non-text change, e.g. cursor position. + HKPR_CONFIRM, ///< Return or enter key pressed. + HKPR_CANCEL, ///< Escape key pressed. + HKPR_NOT_HANDLED, ///< Key does not affect editboxes. +}; /** Helper/buffer for input fields. */ struct Textbuf { + CharSetFilter afilter; ///< Allowed characters char * const buf; ///< buffer in which text is saved uint16 max_bytes; ///< the maximum size of the buffer in bytes (including terminating '\0') uint16 max_chars; ///< the maximum size of the buffer in characters (including terminating '\0') @@ -26,6 +40,10 @@ struct Textbuf { bool caret; ///< is the caret ("_") visible or not uint16 caretpos; ///< the current position of the caret in the buffer, in bytes uint16 caretxoffs; ///< the current position of the caret in pixels + uint16 markpos; ///< the start position of the marked area in the buffer, in bytes + uint16 markend; ///< the end position of the marked area in the buffer, in bytes + uint16 markxoffs; ///< the start position of the marked area in pixels + uint16 marklength; ///< the length of the marked area in pixels explicit Textbuf(uint16 max_bytes, uint16 max_chars = UINT16_MAX); ~Textbuf(); @@ -35,23 +53,32 @@ struct Textbuf { void CDECL Print(const char *format, ...) WARN_FORMAT(2, 3); void DeleteAll(); - bool DeleteChar(int delmode); - bool InsertChar(uint32 key); bool InsertClipboard(); - bool MovePos(int navmode); + + bool InsertChar(uint32 key); + bool InsertString(const char *str, bool marked, const char *caret = NULL, const char *insert_location = NULL, const char *replacement_end = NULL); + + bool DeleteChar(uint16 keycode); + bool MovePos(uint16 keycode); + + HandleKeyPressResult HandleKeyPress(WChar key, uint16 keycode); bool HandleCaret(); void UpdateSize(); + void DiscardMarkedText(bool update = true); + private: + StringIterator *char_iter; + bool CanDelChar(bool backspace); - WChar GetNextDelChar(bool backspace); - void DelChar(bool backspace); - bool CanMoveCaretLeft(); - WChar MoveCaretLeft(); - bool CanMoveCaretRight(); - WChar MoveCaretRight(); + void DeleteText(uint16 from, uint16 to, bool update); + + void UpdateStringIter(); + void UpdateWidth(); + void UpdateCaretPosition(); + void UpdateMarkedText(); }; #endif /* TEXTBUF_TYPE_H */ diff --git a/src/texteff.cpp b/src/texteff.cpp index 981453c10..03b564599 100644 --- a/src/texteff.cpp +++ b/src/texteff.cpp @@ -17,9 +17,12 @@ #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 + uint64 params_2; ///< second DParam parameter StringID string_id; ///< String to draw for the text effect, if INVALID_STRING_ID then it's not valid uint8 duration; ///< How long the text effect should stay, in ticks (applies only when mode == TE_RISING) TextEffectMode mode; ///< Type of text effect @@ -52,6 +55,7 @@ TextEffectID AddTextEffect(StringID msg, int center, int y, uint8 duration, Text te->string_id = msg; te->duration = duration; te->params_1 = GetDParam(0); + te->params_2 = GetDParam(1); te->mode = mode; /* Make sure we only dirty the new area */ @@ -68,6 +72,7 @@ void UpdateTextEffect(TextEffectID te_id, StringID msg) if (msg == te->string_id && GetDParam(0) == te->params_1) return; te->string_id = msg; te->params_1 = GetDParam(0); + te->params_2 = GetDParam(1); te->UpdatePosition(te->center, te->top, msg); } @@ -109,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); + ViewportAddString(dpi, ZOOM_LVL_OUT_8X, te, te->string_id, te->string_id - 1, 0, te->params_1, te->params_2); } } } diff --git a/src/texteff.hpp b/src/texteff.hpp index b9762c3fe..9ef74c171 100644 --- a/src/texteff.hpp +++ b/src/texteff.hpp @@ -41,6 +41,6 @@ void UpdateFillingPercent(TextEffectID te_id, uint8 percent, StringID colour); void HideFillingPercent(TextEffectID *te_id); void ShowCostOrIncomeAnimation(int x, int y, int z, Money cost); -void ShowFeederIncomeAnimation(int x, int y, int z, Money cost); +void ShowFeederIncomeAnimation(int x, int y, int z, Money transfer, Money income); #endif /* TEXTEFF_HPP */ diff --git a/src/textfile_gui.cpp b/src/textfile_gui.cpp index 91adc1239..ad6215af5 100644 --- a/src/textfile_gui.cpp +++ b/src/textfile_gui.cpp @@ -21,12 +21,15 @@ #include "table/strings.h" +#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), NWidget(WWT_PANEL, COLOUR_MAUVE, WID_TF_BACKGROUND), SetMinimalSize(200, 125), SetResize(1, 12), SetScrollbar(WID_TF_VSCROLLBAR), @@ -42,20 +45,23 @@ static const NWidgetPart _nested_textfile_widgets[] = { }; /** Window definition for the textfile window */ -static const WindowDesc _textfile_desc( - WDP_CENTER, 630, 460, +static WindowDesc _textfile_desc( + WDP_CENTER, "textfile", 630, 460, WC_TEXTFILE, WC_NONE, 0, _nested_textfile_widgets, lengthof(_nested_textfile_widgets) ); -TextfileWindow::TextfileWindow(TextfileType file_type) : Window(), file_type(file_type) +TextfileWindow::TextfileWindow(TextfileType file_type) : Window(&_textfile_desc), file_type(file_type) { - this->CreateNestedTree(&_textfile_desc); + this->CreateNestedTree(); this->vscroll = this->GetScrollbar(WID_TF_VSCROLLBAR); this->hscroll = this->GetScrollbar(WID_TF_HSCROLLBAR); - this->FinishInitNested(&_textfile_desc); + 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() @@ -63,12 +69,27 @@ TextfileWindow::TextfileWindow(TextfileType file_type) : Window(), file_type(fil 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. @@ -76,29 +97,60 @@ TextfileWindow::TextfileWindow(TextfileType file_type) : Window(), file_type(fil } } +/** 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; @@ -108,6 +160,8 @@ TextfileWindow::TextfileWindow(TextfileType file_type) : Window(), file_type(fil { this->vscroll->SetCapacityFromWidget(this, WID_TF_BACKGROUND, TOP_SPACING + BOTTOM_SPACING); this->hscroll->SetCapacityFromWidget(this, WID_TF_BACKGROUND); + + this->SetupScrollbars(); } /* virtual */ void TextfileWindow::Reset() @@ -135,12 +189,12 @@ TextfileWindow::TextfileWindow(TextfileType file_type) : Window(), file_type(fil /* virtual */ void TextfileWindow::SetFontNames(FreeTypeSettings *settings, const char *font_name) { #ifdef WITH_FREETYPE - strecpy(settings->mono_font, font_name, lastof(settings->mono_font)); + strecpy(settings->mono.font, font_name, lastof(settings->mono.font)); #endif /* WITH_FREETYPE */ } /** - * Loads the textfile text from file, and setup #lines, #max_length, and both scrollbars. + * Loads the textfile text from file and setup #lines. */ /* virtual */ void TextfileWindow::LoadTextfile(const char *textfile, Subdirectory dir) { @@ -182,16 +236,6 @@ TextfileWindow::TextfileWindow(TextfileType file_type) : Window(), file_type(fil } 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 } /** diff --git a/src/textfile_gui.h b/src/textfile_gui.h index a2d2af8f9..9495fa3f0 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 6d17fd853..77cf282da 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 @@ -560,11 +562,12 @@ static const control_point_list_t _curve_maps[] = { static void HeightMapCurves(uint level) { height_t ht[lengthof(_curve_maps)]; + MemSetT(ht, 0, lengthof(ht)); /* 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); + byte *c = AllocaM(byte, sx * sy); for (uint i = 0; i < sx * sy; i++) { c[i] = Random() % lengthof(_curve_maps); @@ -950,8 +953,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); } } diff --git a/src/thread/thread.h b/src/thread/thread.h index 26d209d2a..b944a53b9 100644 --- a/src/thread/thread.h +++ b/src/thread/thread.h @@ -40,7 +40,7 @@ class ThreadObject { /** * Create a thread; proc will be called as first function inside the thread, - * with optinal params. + * with optional params. * @param proc The procedure to call inside the thread. * @param param The params to give with 'proc'. * @param thread Place to store a pointer to the thread in. May be NULL. @@ -66,13 +66,19 @@ class ThreadMutex { /** * 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 @@ class ThreadMutex { 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 abf2cf0cc..cc6b2f9d3 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 67679bc81..afa799b23 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 903ea0ebe..93f04cac1 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. */ @@ -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 @@ class ThreadMutex_OS2 : public ThreadMutex { 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 11cd3accd..ce407fd94 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 @@ class ThreadMutex_pthread : public ThreadMutex { 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 @@ class ThreadMutex_pthread : public ThreadMutex { 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 1e7d0731e..c37baf7c3 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 @@ class ThreadMutex_Win32 : public ThreadMutex { 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 7dae7a1ca..966694bfb 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 017bb5c56..9855484df 100644 --- a/src/tile_map.cpp +++ b/src/tile_map.cpp @@ -12,6 +12,8 @@ #include "stdafx.h" #include "tile_map.h" +#include "safeguards.h" + /** * Return the slope of a given tile * @param tile Tile to compute slope of @@ -22,11 +24,7 @@ Slope GetTileSlope(TileIndex tile, int *h) { assert(tile < MapSize()); - uint x = TileX(tile); - uint y = TileY(tile); - - if (x == MapMaxX() || y == MapMaxY() || - ((x == 0 || y == 0) && _settings_game.construction.freeform_edges)) { + if (!IsInnerTile(tile)) { if (h != NULL) *h = TileHeight(tile); return SLOPE_FLAT; } @@ -62,6 +60,30 @@ Slope GetTileSlope(TileIndex tile, int *h) return (Slope)r; } +/** + * 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()); + + if (!IsInnerTile(tile)) { + if (h != NULL) *h = TileHeight(tile); + return true; + } + + 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; + + if (h != NULL) *h = z; + return true; +} + /** * Get bottom height of the tile * @param tile Tile to compute height of diff --git a/src/tile_map.h b/src/tile_map.h index 8dc4757ba..98863eb59 100644 --- a/src/tile_map.h +++ b/src/tile_map.h @@ -77,6 +77,23 @@ static inline TileType GetTileType(TileIndex tile) return (TileType)GB(_m[tile].type_height, 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); +} + /** * Set the type of a tile * @@ -95,7 +112,7 @@ 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)); + assert(IsInnerTile(tile) == (type != MP_VOID)); SB(_m[tile].type_height, 4, 4, type); } @@ -105,8 +122,8 @@ static inline void SetTileType(TileIndex tile, TileType type) * This function checks if a tile got the given tiletype. * * @param tile The tile to check - * @param type The type to check agains - * @return true If the type matches agains the type of the tile + * @param type The type to check against + * @return true If the type matches against the type of the tile */ static inline bool IsTileType(TileIndex tile, TileType type) { @@ -169,7 +186,7 @@ static inline void SetTileOwner(TileIndex tile, Owner owner) * Checks if a tile belongs to the given owner * * @param tile The tile to check - * @param owner The owner to check agains + * @param owner The owner to check against * @return True if a tile belongs the the given owner */ static inline bool IsTileOwner(TileIndex tile, Owner owner) @@ -230,6 +247,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 diff --git a/src/tile_type.h b/src/tile_type.h index 8a476e980..34543eb93 100644 --- a/src/tile_type.h +++ b/src/tile_type.h @@ -52,7 +52,7 @@ enum TileType { * * In randomly generated maps: * TROPICZONE_DESERT: Generated everywhere, if there is neither water nor mountains (TileHeight >= 4) in a certain distance from the tile. - * TROPICZONE_RAINFOREST: Genereated everywhere, if there is no desert in a certain distance from the tile. + * TROPICZONE_RAINFOREST: Generated everywhere, if there is no desert in a certain distance from the tile. * TROPICZONE_NORMAL: Everywhere else, i.e. between desert and rainforest and on sea (if you clear the water). * * In scenarios: diff --git a/src/tilearea.cpp b/src/tilearea.cpp index e6efd0559..ec3b9aafb 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,43 +128,71 @@ 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); } /** - * Move ourselves to the next tile in the rectange on the map. + * Move ourselves to the next tile in the rectangle on the map. */ TileIterator &DiagonalTileIterator::operator++() { diff --git a/src/tilearea_type.h b/src/tilearea_type.h index 4596514dd..45bfb3d4c 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 @@ class TileIterator { * 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) { } @@ -91,7 +124,7 @@ class TileIterator { } /** - * Move ourselves to the next tile in the rectange on the map. + * Move ourselves to the next tile in the rectangle on the map. */ virtual TileIterator& operator ++() = 0; @@ -113,12 +146,22 @@ class OrthogonalTileIterator : public TileIterator { * 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)); } /** - * Move ourselves to the next tile in the rectange on the map. + * Move ourselves to the next tile in the rectangle on the map. */ inline TileIterator& operator ++() { @@ -148,11 +191,29 @@ class DiagonalTileIterator : public TileIterator { uint base_y; ///< The base tile y coordinate from where the iterating happens. int a_cur; ///< The current (rotated) x coordinate of the iteration. int b_cur; ///< The current (rotated) y coordinate of the iteration. - int a_max; ///< The (rotated) x coordinats of the end of the iteration. + int a_max; ///< The (rotated) x coordinate of the end of the iteration. 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 166b817eb..c14b8b212 100644 --- a/src/timetable_cmd.cpp +++ b/src/timetable_cmd.cpp @@ -16,59 +16,72 @@ #include "window_func.h" #include "vehicle_base.h" #include "cmd_helper.h" +#include "core/sort_func.hpp" #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: NOT_REACHED(); } + v->MarkSeparationInvalid(); } SetWindowDirty(WC_VEHICLE_TIMETABLE, v->index); } @@ -104,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); @@ -125,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); @@ -138,13 +151,19 @@ 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); + if (wait_time != order->GetWaitTime() || (wait_time > 0 && !order->IsWaitTimetabled())) { + ChangeTimetable(v, order_number, wait_time, MTF_WAIT_TIME, wait_time > 0); + } + if (travel_time != order->GetTravelTime() || (travel_time > 0 && !order->IsTravelTimetabled())) { + ChangeTimetable(v, order_number, travel_time, MTF_TRAVEL_TIME, travel_time > 0); + } + if (max_speed != order->GetMaxSpeed()) { + ChangeTimetable(v, order_number, max_speed, MTF_TRAVEL_SPEED, max_speed != UINT16_MAX); + } } return CommandCost(); @@ -165,7 +184,7 @@ CommandCost CmdSetVehicleOnTime(TileIndex tile, DoCommandFlag flags, uint32 p1, VehicleID veh = GB(p1, 0, 20); Vehicle *v = Vehicle::GetIfValid(veh); - if (v == NULL || !v->IsPrimaryVehicle()) return CMD_ERROR; + if (v == NULL || !v->IsPrimaryVehicle() || v->orders.list == NULL) return CMD_ERROR; CommandCost ret = CheckOwnership(v->owner); if (ret.Failed()) return ret; @@ -178,19 +197,63 @@ CommandCost CmdSetVehicleOnTime(TileIndex tile, DoCommandFlag flags, uint32 p1, return CommandCost(); } +/** + * Order vehicles based on their timetable. The vehicles will be sorted in order + * they would reach the first station. + * + * @param ap First Vehicle pointer. + * @param bp Second Vehicle pointer. + * @return Comparison value. + */ +static int CDECL VehicleTimetableSorter(Vehicle * const *ap, Vehicle * const *bp) +{ + const Vehicle *a = *ap; + const Vehicle *b = *bp; + + VehicleOrderID a_order = a->cur_real_order_index; + VehicleOrderID b_order = b->cur_real_order_index; + int j = (int)b_order - (int)a_order; + + /* Are we currently at an ordered station (un)loading? */ + bool a_load = a->current_order.IsType(OT_LOADING) && a->current_order.GetNonStopType() != ONSF_STOP_EVERYWHERE; + bool b_load = b->current_order.IsType(OT_LOADING) && b->current_order.GetNonStopType() != ONSF_STOP_EVERYWHERE; + + /* If the current order is not loading at the ordered station, decrease the order index by one since we have + * not yet arrived at the station (and thus the timetable entry; still in the travelling of the previous one). + * Since the ?_order variables are unsigned the -1 will flow under and place the vehicles going to order #0 at + * the begin of the list with vehicles arriving at #0. */ + if (!a_load) a_order--; + if (!b_load) b_order--; + + /* First check the order index that accounted for loading, then just the raw one. */ + int i = (int)b_order - (int)a_order; + if (i != 0) return i; + if (j != 0) return j; + + /* Look at the time we spent in this order; the higher, the closer to its destination. */ + i = b->current_order_time - a->current_order_time; + if (i != 0) return i; + + /* If all else is equal, use some unique index to sort it the same way. */ + return b->unitnumber - a->unitnumber; +} + /** * Set the start date of the timetable. * @param tile Not used. * @param flags Operation to perform. - * @param p1 Vehicle id. + * @param p2 Various bitstuffed elements + * - p2 = (bit 0-19) - Vehicle ID. + * - p2 = (bit 20) - Set to 1 to set timetable start for all vehicles sharing this order * @param p2 The timetable start date. * @param text Not used. * @return The error or cost of the operation. */ CommandCost CmdSetTimetableStart(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) { + bool timetable_all = HasBit(p1, 20); Vehicle *v = Vehicle::GetIfValid(GB(p1, 0, 20)); - if (v == NULL || !v->IsPrimaryVehicle()) return CMD_ERROR; + if (v == NULL || !v->IsPrimaryVehicle() || v->orders.list == NULL) return CMD_ERROR; CommandCost ret = CheckOwnership(v->owner); if (ret.Failed()) return ret; @@ -200,13 +263,39 @@ CommandCost CmdSetTimetableStart(TileIndex tile, DoCommandFlag flags, uint32 p1, if (start_date < 0 || start_date > MAX_DAY) return CMD_ERROR; if (start_date - _date > 15 * DAYS_IN_LEAP_YEAR) return CMD_ERROR; if (_date - start_date > DAYS_IN_LEAP_YEAR) return CMD_ERROR; + if (timetable_all && !v->orders.list->IsCompleteTimetable()) return CMD_ERROR; if (flags & DC_EXEC) { - v->lateness_counter = 0; - ClrBit(v->vehicle_flags, VF_TIMETABLE_STARTED); - v->timetable_start = start_date; + SmallVector vehs; + + if (timetable_all) { + for (Vehicle *w = v->orders.list->GetFirstSharedVehicle(); w != NULL; w = w->NextShared()) { + *vehs.Append() = w; + } + } else { + *vehs.Append() = v; + } + + int total_duration = v->orders.list->GetTimetableTotalDuration(); + int num_vehs = vehs.Length(); + + if (num_vehs >= 2) { + QSortT(vehs.Begin(), vehs.Length(), &VehicleTimetableSorter); + } + + int base = vehs.FindIndex(v); + + for (Vehicle **viter = vehs.Begin(); viter != vehs.End(); viter++) { + int idx = (viter - vehs.Begin()) - base; + Vehicle *w = *viter; + + w->lateness_counter = 0; + ClrBit(w->vehicle_flags, VF_TIMETABLE_STARTED); + /* Do multiplication, then division to reduce rounding errors. */ + w->timetable_start = start_date + idx * total_duration / num_vehs / DAY_TICKS; + SetWindowDirty(WC_VEHICLE_TIMETABLE, w->index); + } - SetWindowDirty(WC_VEHICLE_TIMETABLE, v->index); } return CommandCost(); @@ -231,7 +320,7 @@ CommandCost CmdAutofillTimetable(TileIndex tile, DoCommandFlag flags, uint32 p1, VehicleID veh = GB(p1, 0, 20); Vehicle *v = Vehicle::GetIfValid(veh); - if (v == NULL || !v->IsPrimaryVehicle()) return CMD_ERROR; + if (v == NULL || !v->IsPrimaryVehicle() || v->orders.list == NULL) return CMD_ERROR; CommandCost ret = CheckOwnership(v->owner); if (ret.Failed()) return ret; @@ -267,6 +356,33 @@ CommandCost CmdAutofillTimetable(TileIndex tile, DoCommandFlag flags, uint32 p1, return CommandCost(); } +/** + * Set new separation parameters + * @param tile Not used. + * @param flags Operation to perform. + * @param p1 Order lit id. + * @param p2 + * - p2 = (bit 0-2) - Separation mode (@see TTSepMode) + * - p2 = (bit 3-31) - Separation parameter (Unused if #TTS_MODE_OFF | #TTS_MODE_AUTO, + * Number of vehicles if #TTS_MODE_MAN_N, separation delay in ticks if #TTS_MODE_MAN_T). + * @param text Not used. + * @return The error or cost of the operation. + */ +CommandCost CmdReinitSeparation(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) +{ + Vehicle *v = Vehicle::GetIfValid(GB(p1, 0, 20)); + if (v == NULL || !v->IsPrimaryVehicle()) return CMD_ERROR; + + CommandCost ret = CheckOwnership(v->owner); + if (ret.Failed()) return ret; + + if (flags & DC_EXEC) { + v->SetSepSettings((TTSepMode)GB(p2,0,3), GB(p2,3,29)); + } + + return CommandCost(); +} + /** * Update the timetable for the vehicle. * @param v The vehicle to update the timetable for. @@ -274,7 +390,6 @@ 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; @@ -307,42 +422,48 @@ 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); + if (travelling && (!v->current_order.IsWaitTimetabled() || + (autofilling && !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.SetWaitTime(0); + } - 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 (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); + /* 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.GetWaitTime())) { + /* 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 || !v->current_order.IsTravelTimetabled())) { + ChangeTimetable(v, v->cur_real_order_index, time_to_set, MTF_TRAVEL_TIME, autofilling); + } else if (!travelling && (autofilling || !v->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 ? v->current_order.GetTimetabledTravel() : + v->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 7fc8da483..3e40f7bb8 100644 --- a/src/timetable_gui.cpp +++ b/src/timetable_gui.cpp @@ -29,6 +29,19 @@ #include "table/sprites.h" #include "table/strings.h" +#include "widgets/dropdown_func.h" + +#include "safeguards.h" + +/** Entries for mode selection dropdown list. Order must be identical to the one in #TTSepMode */ +static const StringID TimetableSeparationDropdownOptions[6] = { + STR_TTSEPARATION_AUTO, + STR_TTSEPARATION_OFF, + STR_TTSEPARATION_MAN_TIME, + STR_TTSEPARATION_MAN_NUM, + STR_TTSEPARATION_BUFFERED_AUTO, + INVALID_STRING_ID, +}; /** Container for the arrival/departure dates of a vehicle */ struct TimetableArrivalDeparture { @@ -53,18 +66,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 +77,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 +120,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 +142,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; } } @@ -157,23 +161,26 @@ static void ChangeTimetableStartCallback(const Window *w, Date date) struct TimetableWindow : Window { int sel_index; - const Vehicle *vehicle; ///< Vehicle monitored by the window. - bool show_expected; ///< Whether we show expected arrival or scheduled - uint deparr_time_width; ///< The width of the departure/arrival time - uint deparr_abbr_width; ///< The width of the departure/arrival abbreviation + const Vehicle *vehicle; ///< Vehicle monitored by the window. + bool show_expected; ///< Whether we show expected arrival or scheduled + uint deparr_time_width; ///< The width of the departure/arrival time + uint deparr_abbr_width; ///< The width of the departure/arrival abbreviation Scrollbar *vscroll; bool query_is_speed_query; ///< The currently open query window is a speed query and not a time query. + TTSepSettings new_sep_settings; ///< Contains new separation settings. + VehicleTimetableWidgets query_widget; ///< Required to determinate source of input query - TimetableWindow(const WindowDesc *desc, WindowNumber window_number) : - Window(), + TimetableWindow(WindowDesc *desc, WindowNumber window_number) : + Window(desc), sel_index(-1), vehicle(Vehicle::Get(window_number)), show_expected(true) { - this->CreateNestedTree(desc); + this->new_sep_settings = (vehicle->orders.list != NULL) ? vehicle->orders.list->GetSepSettings() : TTSepSettings(); + this->CreateNestedTree(); this->vscroll = this->GetScrollbar(WID_VT_SCROLLBAR); this->UpdateSelectionStates(); - this->FinishInitNested(desc, window_number); + this->FinishInitNested(window_number); this->owner = this->vehicle->owner; } @@ -200,7 +207,7 @@ struct TimetableWindow : Window { { switch (widget) { case WID_VT_ARRIVAL_DEPARTURE_PANEL: - SetDParamMaxValue(0, MAX_YEAR * DAYS_IN_YEAR); + SetDParamMaxValue(0, MAX_YEAR * DAYS_IN_YEAR, 0, FS_SMALL); this->deparr_time_width = GetStringBoundingBox(STR_JUST_DATE_TINY).width; this->deparr_abbr_width = max(GetStringBoundingBox(STR_TIMETABLE_ARRIVAL_ABBREVIATION).width, GetStringBoundingBox(STR_TIMETABLE_DEPARTURE_ABBREVIATION).width); size->width = WD_FRAMERECT_LEFT + this->deparr_abbr_width + 10 + this->deparr_time_width + WD_FRAMERECT_RIGHT; @@ -328,9 +335,9 @@ struct TimetableWindow : Window { this->SetWidgetDisabledState(WID_VT_CLEAR_SPEED, disable_speed); this->SetWidgetDisabledState(WID_VT_SHARED_ORDER_LIST, !v->IsOrderListShared()); - this->EnableWidget(WID_VT_START_DATE); - this->EnableWidget(WID_VT_RESET_LATENESS); - this->EnableWidget(WID_VT_AUTOFILL); + this->SetWidgetDisabledState(WID_VT_START_DATE, v->orders.list == NULL); + this->SetWidgetDisabledState(WID_VT_RESET_LATENESS, v->orders.list == NULL); + this->SetWidgetDisabledState(WID_VT_AUTOFILL, v->orders.list == NULL); } else { this->DisableWidget(WID_VT_START_DATE); this->DisableWidget(WID_VT_CHANGE_TIME); @@ -344,6 +351,20 @@ struct TimetableWindow : Window { this->SetWidgetLoweredState(WID_VT_AUTOFILL, HasBit(v->vehicle_flags, VF_AUTOFILL_TIMETABLE)); + bool b; + + if(this->vehicle->orders.list != NULL) { + b = !(_settings_game.order.automatic_timetable_separation && this->vehicle->orders.list->IsCompleteTimetable()); + } else { + b = false; + } + this->SetWidgetsDisabledState(b, WID_VT_TTSEP_SET_PARAMETER, WID_VT_TTSEP_MODE_DROPDOWN, WIDGET_LIST_END); + + /* We can only set parameters if we're in one of the manual modes. */ + bool enabled_state = (this->new_sep_settings.mode == TTS_MODE_MAN_N) || (this->new_sep_settings.mode == TTS_MODE_MAN_T); + + this->SetWidgetDisabledState(WID_VT_TTSEP_SET_PARAMETER, !enabled_state); + this->DrawWidgets(); } @@ -352,6 +373,8 @@ struct TimetableWindow : Window { switch (widget) { case WID_VT_CAPTION: SetDParam(0, this->vehicle->index); break; case WID_VT_EXPECTED: SetDParam(0, this->show_expected ? STR_TIMETABLE_EXPECTED : STR_TIMETABLE_SCHEDULED); break; + case WID_VT_TTSEP_MODE_DROPDOWN: SetDParam(0, TimetableSeparationDropdownOptions[this->new_sep_settings.mode]); break; + case WID_VT_TTSEP_SET_PARAMETER: SetDParam(0, (this->new_sep_settings.mode == TTS_MODE_MAN_N) ? STR_TTSEPARATION_SET_NUM : STR_TTSEPARATION_SET_TIME); break; } } @@ -396,13 +419,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 +480,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; @@ -494,6 +529,75 @@ struct TimetableWindow : Window { } break; } + + case WID_VT_TTSEP_PANEL_TEXT: { + int y = r.top + WD_FRAMERECT_TOP; // Represents the current vertical position + const int left_border = r.left + WD_FRAMERECT_LEFT; // Represents the left border of the separation display frame + const int right_border = r.right - WD_FRAMERECT_RIGHT; // Represents the right border of the separation display frame. + + /* If separation is inactive, we can stop here. */ + if (!_settings_game.order.automatic_timetable_separation || (this->vehicle->orders.list == NULL)) + break; + + /* If the new mode is OFF... */ + if (this->new_sep_settings.mode == TTS_MODE_OFF) { + /* ... skip description lines. */ + int offset = _settings_client.gui.timetable_in_ticks ? GetStringBoundingBox(STR_TTSEPARATION_REQ_TIME_DESC_TICKS).height + : GetStringBoundingBox(STR_TTSEPARATION_REQ_TIME_DESC_DAYS).height; + + y = y + GetStringBoundingBox(STR_TTSEPARATION_REQ_NUM_DESC).height + offset; + + } else { + /* If separation hasn't just been switched off, we need to draw various description lines. + * The first line is the amount of separation which is either saved in the stuct or must + * be calculated on the fly. + */ + uint64 par; + if (this->new_sep_settings.mode == TTS_MODE_MAN_T || this->new_sep_settings.mode == TTS_MODE_AUTO) { + par = this->new_sep_settings.sep_ticks; + } else { + par = this->vehicle->orders.list->GetTimetableTotalDuration() / this->new_sep_settings.num_veh; + } + + /* Depending on the setting for time displays, set up and draw either tick or days string. */ + if (_settings_client.gui.timetable_in_ticks) { + SetDParam(0, par); + DrawString(left_border, right_border, y, STR_TTSEPARATION_REQ_TIME_DESC_TICKS, TC_BLACK); + + y += GetStringBoundingBox(STR_TTSEPARATION_REQ_TIME_DESC_TICKS).height; + } else { + SetDParam(0, par / DAY_TICKS); + DrawString(left_border, right_border, y, STR_TTSEPARATION_REQ_TIME_DESC_DAYS, TC_BLACK); + + y += GetStringBoundingBox(STR_TTSEPARATION_REQ_TIME_DESC_DAYS).height; + } + + /* Print either the chosen amount of vehicles (when in MAN_N mode) or the calculated result... */ + if (this->new_sep_settings.mode == TTS_MODE_MAN_N || this->new_sep_settings.mode == TTS_MODE_AUTO) { + par = this->new_sep_settings.num_veh; + } else { + par = this->vehicle->orders.list->GetTimetableTotalDuration() / this->new_sep_settings.sep_ticks; + } + + SetDParam(0, par); + DrawString(left_border, right_border, y, STR_TTSEPARATION_REQ_NUM_DESC, TC_BLACK); + + y += GetStringBoundingBox(STR_TTSEPARATION_REQ_NUM_DESC).height; + } + + /* If separation is switched on at all... */ + if(this->vehicle->orders.list->IsSeparationOn()) + { + /* ... set displayed status to either "Running" or "Initializing" */ + SetDParam(0, (this->vehicle->orders.list->IsSeparationValid()) ? STR_TTSEPARATION_STATUS_RUNNING : STR_TTSEPARATION_STATUS_INIT); + } else { + /* If separation is switched off, show this instead. */ + SetDParam(0, STR_TTSEPARATION_STATUS_OFF); + } + + /* Print status description. */ + DrawStringMultiLine(left_border, right_border, y, r.bottom - WD_FRAMERECT_BOTTOM, STR_TTSEPARATION_STATUS_DESC); + } } } @@ -518,14 +622,13 @@ struct TimetableWindow : Window { case WID_VT_TIMETABLE_PANEL: { // Main panel. int selected = GetOrderFromTimetableWndPt(pt.y, v); - this->DeleteChildWindows(); this->sel_index = (selected == INVALID_ORDER || selected == this->sel_index) ? -1 : selected; break; } case WID_VT_START_DATE: // Change the date that the timetable starts. - ShowSetDateWindow(this, v->index, _date, _cur_year, _cur_year + 15, ChangeTimetableStartCallback); + ShowSetDateWindow(this, v->index | (v->orders.list->IsCompleteTimetable() && _ctrl_pressed ? 1U << 20 : 0), _date, _cur_year, _cur_year + 15, ChangeTimetableStartCallback); break; case WID_VT_CHANGE_TIME: { // "Wait For" button. @@ -538,7 +641,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) { @@ -547,8 +650,9 @@ struct TimetableWindow : Window { } } + this->query_widget = WID_VT_CHANGE_TIME; 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 +665,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; } } @@ -603,16 +707,41 @@ struct TimetableWindow : Window { case WID_VT_SHARED_ORDER_LIST: ShowVehicleListWindow(v); break; + + case WID_VT_TTSEP_MODE_DROPDOWN: { + ShowDropDownMenu(this, TimetableSeparationDropdownOptions, this->new_sep_settings.mode, WID_VT_TTSEP_MODE_DROPDOWN, 0, 0); + break; + } + + case WID_VT_TTSEP_SET_PARAMETER: { + this->query_widget = WID_VT_TTSEP_SET_PARAMETER; + SetDParam(0, (this->new_sep_settings.mode == TTS_MODE_MAN_N) ? this->new_sep_settings.num_veh : this->new_sep_settings.sep_ticks); + ShowQueryString(STR_JUST_INT, STR_TIMETABLE_CHANGE_TIME, 31, this, CS_NUMERAL, QSF_NONE); + break; + } } this->SetDirty(); } + virtual void OnDropdownSelect(int widget, int index) + { + assert(widget == WID_VT_TTSEP_MODE_DROPDOWN); + + this->new_sep_settings = this->vehicle->orders.list->GetSepSettings(); + this->new_sep_settings.mode = (TTSepMode)index; + this->vehicle->orders.list->SetSepSettings(this->new_sep_settings); + this->InvalidateData(); + } + virtual void OnQueryTextFinished(char *str) { - if (str == NULL) return; + if(str == NULL || StrEmpty(str)) + return; - const Vehicle *v = this->vehicle; + switch(this->query_widget) { + case WID_VT_CHANGE_TIME: { + const Vehicle *v = this->vehicle; uint32 p1 = PackTimetableArgs(v, this->sel_index, this->query_is_speed_query); @@ -625,7 +754,40 @@ struct TimetableWindow : Window { uint32 p2 = minu(val, UINT16_MAX); - DoCommandP(0, p1, p2, CMD_CHANGE_TIMETABLE | CMD_MSG(STR_ERROR_CAN_T_TIMETABLE_VEHICLE)); + DoCommandP(0, p1, p2, CMD_CHANGE_TIMETABLE | CMD_MSG(STR_ERROR_CAN_T_TIMETABLE_VEHICLE)); + break; + } + case WID_VT_TTSEP_SET_PARAMETER: { + int value = atoi(str); + + switch (this->new_sep_settings.mode) + { + case TTS_MODE_AUTO: + case TTS_MODE_BUFFERED_AUTO: + case TTS_MODE_OFF: + break; + + case TTS_MODE_MAN_N: + this->new_sep_settings.num_veh = Clamp(value, 1, 65535); + break; + + case TTS_MODE_MAN_T: + this->new_sep_settings.sep_ticks = Clamp(value, 1, 65535); + break; + + default: + NOT_REACHED(); + break; + } + + this->vehicle->orders.list->SetSepSettings(this->new_sep_settings); + this->InvalidateData(); + break; + } + default: + NOT_REACHED(); + break; + } } virtual void OnResize() @@ -650,6 +812,7 @@ static const NWidgetPart _nested_timetable_widgets[] = { NWidget(WWT_CAPTION, COLOUR_GREY, WID_VT_CAPTION), SetDataTip(STR_TIMETABLE_TITLE, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_VT_ORDER_VIEW), SetMinimalSize(61, 14), SetDataTip( STR_TIMETABLE_ORDER_VIEW, STR_TIMETABLE_ORDER_VIEW_TOOLTIP), NWidget(WWT_SHADEBOX, COLOUR_GREY), + NWidget(WWT_DEFSIZEBOX, COLOUR_GREY), NWidget(WWT_STICKYBOX, COLOUR_GREY), EndContainer(), NWidget(NWID_HORIZONTAL), @@ -658,6 +821,13 @@ static const NWidgetPart _nested_timetable_widgets[] = { NWidget(WWT_PANEL, COLOUR_GREY, WID_VT_ARRIVAL_DEPARTURE_PANEL), SetMinimalSize(110, 0), SetFill(0, 1), SetDataTip(STR_NULL, STR_TIMETABLE_TOOLTIP), SetScrollbar(WID_VT_SCROLLBAR), EndContainer(), EndContainer(), NWidget(NWID_VSCROLLBAR, COLOUR_GREY, WID_VT_SCROLLBAR), + NWidget(WWT_PANEL, COLOUR_GREY), + NWidget(WWT_FRAME, COLOUR_GREY), SetDataTip(STR_TTSEPARATION_SETTINGS_DESC, STR_NULL), SetPadding(3), + NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_VT_TTSEP_MODE_DROPDOWN), SetDataTip(STR_JUST_STRING, STR_TIMETABLE_TOOLTIP), + NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_VT_TTSEP_SET_PARAMETER), SetFill(1, 0), SetDataTip(STR_TTSEPARATION_SET_XX, STR_TIMETABLE_TOOLTIP), + NWidget(WWT_PANEL,COLOUR_GREY, WID_VT_TTSEP_PANEL_TEXT), SetFill(1,1), SetResize(0,1), SetMinimalSize(0,44), EndContainer(), + EndContainer(), + EndContainer(), EndContainer(), NWidget(WWT_PANEL, COLOUR_GREY, WID_VT_SUMMARY_PANEL), SetMinimalSize(400, 22), SetResize(1, 0), EndContainer(), NWidget(NWID_HORIZONTAL), @@ -689,8 +859,8 @@ static const NWidgetPart _nested_timetable_widgets[] = { EndContainer(), }; -static const WindowDesc _timetable_desc( - WDP_AUTO, 400, 130, +static WindowDesc _timetable_desc( + WDP_AUTO, "view_vehicle_timetable", 400, 130, WC_VEHICLE_TIMETABLE, WC_VEHICLE_VIEW, WDF_CONSTRUCTION, _nested_timetable_widgets, lengthof(_nested_timetable_widgets) diff --git a/src/toolbar_gui.cpp b/src/toolbar_gui.cpp index 7cb18de3d..c3f2a6e7b 100644 --- a/src/toolbar_gui.cpp +++ b/src/toolbar_gui.cpp @@ -38,10 +38,14 @@ #include "smallmap_gui.h" #include "graph_gui.h" #include "textbuf_gui.h" +#include "linkgraph/linkgraph_gui.h" #include "newgrf_debug.h" #include "hotkeys.h" #include "engine_base.h" #include "highscore.h" +#include "game/game.hpp" +#include "goal_base.h" +#include "story_base.h" #include "widgets/toolbar_widget.h" @@ -49,6 +53,8 @@ #include "network/network_gui.h" #include "network/network_func.h" +#include "safeguards.h" + RailType _last_built_railtype; RoadType _last_built_roadtype; @@ -159,49 +165,77 @@ class DropDownListCompanyItem : public DropDownListItem { /** * Pop up a generic text only menu. + * @param w Toolbar + * @param widget Toolbar button + * @param list List of items + * @param def Default item + */ +static void PopupMainToolbMenu(Window *w, int widget, DropDownList *list, int def) +{ + ShowDropDownList(w, list, def, widget, 0, true, true); + if (_settings_client.sound.click_beep) SndPlayFx(SND_15_BEEP); +} + +/** + * Pop up a generic text only menu. + * @param w Toolbar + * @param widget Toolbar button + * @param string String for the first item in the menu + * @param count Number of items in the menu */ 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); } - ShowDropDownList(w, list, 0, widget, 140, true, true); - if (_settings_client.sound.click_beep) SndPlayFx(SND_15_BEEP); + PopupMainToolbMenu(w, widget, list, 0); } /** Enum for the Company Toolbar's network related buttons */ 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)); } - ShowDropDownList(w, list, _local_company == COMPANY_SPECTATOR ? CTMN_CLIENT_LIST : (int)_local_company, widget, 240, true, true); - if (_settings_client.sound.click_beep) SndPlayFx(SND_15_BEEP); + PopupMainToolbMenu(w, widget, list, _local_company == COMPANY_SPECTATOR ? CTMN_CLIENT_LIST : (int)_local_company); } @@ -272,24 +306,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, 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); @@ -319,7 +353,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; @@ -409,21 +443,32 @@ static CallBackFunction MenuClickSaveLoad(int index = 0) enum MapMenuEntries { MME_SHOW_SMALLMAP = 0, MME_SHOW_EXTRAVIEWPORTS, + MME_SHOW_LINKGRAPH, MME_SHOW_SIGNLISTS, - MME_SHOW_TOWNDIRECTORY, ///< This entry is only used in Editor mode - MME_MENUCOUNT_NORMAL = 3, - MME_MENUCOUNT_EDITOR = 4, + MME_SHOW_TOWNDIRECTORY, + MME_SHOW_INDUSTRYDIRECTORY, }; static CallBackFunction ToolbarMapClick(Window *w) { - PopupMainToolbMenu(w, WID_TN_SMALL_MAP, STR_MAP_MENU_MAP_OF_WORLD, MME_MENUCOUNT_NORMAL); + DropDownList *list = new DropDownList(); + *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; } static CallBackFunction ToolbarScenMapTownDir(Window *w) { - PopupMainToolbMenu(w, WID_TE_SMALL_MAP, STR_MAP_MENU_MAP_OF_WORLD, MME_MENUCOUNT_EDITOR); + DropDownList *list = new DropDownList(); + *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; } @@ -438,8 +483,10 @@ static CallBackFunction MenuClickMap(int index) switch (index) { case MME_SHOW_SMALLMAP: ShowSmallMap(); break; case MME_SHOW_EXTRAVIEWPORTS: ShowExtraViewPortWindow(); break; + case MME_SHOW_LINKGRAPH: ShowLinkGraphLegend(); break; case MME_SHOW_SIGNLISTS: ShowSignList(); break; - case MME_SHOW_TOWNDIRECTORY: if (_game_mode == GM_EDITOR) ShowTownDirectory(); break; + case MME_SHOW_TOWNDIRECTORY: ShowTownDirectory(); break; + case MME_SHOW_INDUSTRYDIRECTORY: ShowIndustryDirectory(); break; } return CBF_NONE; } @@ -473,7 +520,7 @@ static CallBackFunction MenuClickTown(int index) static CallBackFunction ToolbarSubsidiesClick(Window *w) { - PopupMainToolbMenu(w, WID_TN_SUBSIDIES, STR_SUBSIDIES_MENU_SUBSIDIES, 2); + PopupMainToolbMenu(w, WID_TN_SUBSIDIES, STR_SUBSIDIES_MENU_SUBSIDIES, 1); return CBF_NONE; } @@ -487,7 +534,6 @@ static CallBackFunction MenuClickSubsidies(int index) { switch (index) { case 0: ShowSubsidiesList(); break; - case 1: ShowGoalsList(); break; } return CBF_NONE; } @@ -536,7 +582,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; } @@ -578,6 +624,46 @@ static CallBackFunction MenuClickCompany(int index) return CBF_NONE; } +/* --- Story button menu --- */ + +static CallBackFunction ToolbarStoryClick(Window *w) +{ + PopupMainCompanyToolbMenu(w, WID_TN_STORY, 0, true); + return CBF_NONE; +} + +/** + * Handle click on the entry in the Story menu + * + * @param index CompanyID to show story book for + * @return #CBF_NONE + */ +static CallBackFunction MenuClickStory(int index) +{ + ShowStoryBook(index == CTMN_SPECTATOR ? INVALID_COMPANY : (CompanyID)index); + return CBF_NONE; +} + +/* --- Goal button menu --- */ + +static CallBackFunction ToolbarGoalClick(Window *w) +{ + PopupMainCompanyToolbMenu(w, WID_TN_GOAL, 0, true); + return CBF_NONE; +} + +/** + * Handle click on the entry in the Goal menu + * + * @param index CompanyID to show story book for + * @return #CBF_NONE + */ +static CallBackFunction MenuClickGoal(int index) +{ + ShowGoalsList(index == CTMN_SPECTATOR ? INVALID_COMPANY : (CompanyID)index); + return CBF_NONE; +} + /* --- Graphs button menu --- */ static CallBackFunction ToolbarGraphsClick(Window *w) @@ -627,7 +713,7 @@ static CallBackFunction MenuClickLeague(int index) switch (index) { case 0: ShowCompanyLeagueTable(); break; case 1: ShowPerformanceRatingDetail(); break; - case 2: ShowHighscoreTable(); break; + case 2: ShowHighscoreTable(); break; } return CBF_NONE; } @@ -801,7 +887,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; @@ -809,7 +895,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); @@ -980,14 +1066,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); } } @@ -1026,6 +1112,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. @@ -1085,8 +1184,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; @@ -1099,8 +1197,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; @@ -1181,27 +1278,27 @@ static MenuClickedProc * const _menu_clicked_procs[] = { MenuClickStations, // 7 MenuClickFinances, // 8 MenuClickCompany, // 9 - MenuClickGraphs, // 10 - MenuClickLeague, // 11 - MenuClickIndustry, // 12 - MenuClickShowTrains, // 13 - MenuClickShowRoad, // 14 - MenuClickShowShips, // 15 - MenuClickShowAir, // 16 - MenuClickMap, // 17 - NULL, // 18 - MenuClickBuildRail, // 19 - MenuClickBuildRoad, // 20 - MenuClickBuildWater, // 21 - MenuClickBuildAir, // 22 - MenuClickForest, // 23 - MenuClickMusicWindow, // 24 - MenuClickNewspaper, // 25 - MenuClickHelp, // 26 + MenuClickStory, // 10 + MenuClickGoal, // 11 + MenuClickGraphs, // 12 + MenuClickLeague, // 13 + MenuClickIndustry, // 14 + MenuClickShowTrains, // 15 + MenuClickShowRoad, // 16 + MenuClickShowShips, // 17 + MenuClickShowAir, // 18 + MenuClickMap, // 19 + NULL, // 20 + MenuClickBuildRail, // 21 + MenuClickBuildRoad, // 22 + MenuClickBuildWater, // 23 + MenuClickBuildAir, // 24 + MenuClickForest, // 25 + MenuClickMusicWindow, // 26 + MenuClickNewspaper, // 27 + MenuClickHelp, // 28 }; -int16 *_preferred_toolbar_size = NULL; ///< Pointer to the default size for the main toolbar. - /** Full blown container to make it behave exactly as we want :) */ class NWidgetToolbarContainer : public NWidgetContainer { bool visible[WID_TN_END]; ///< The visible headers @@ -1253,7 +1350,7 @@ class NWidgetToolbarContainer : public NWidgetContainer { child_wid->current_x = child_wid->smallest_x; } } - *_preferred_toolbar_size = nbuttons * this->smallest_x; + w->window_desc->default_width = nbuttons * this->smallest_x; } void AssignSizePosition(SizingType sizing, uint x, uint y, uint given_width, uint given_height, bool rtl) @@ -1364,33 +1461,37 @@ 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, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 27, - 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 24, 25, 26, 27, + 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, }; static const byte arrange15[] = { - 0, 1, 4, 13, 14, 15, 16, 19, 20, 21, 22, 23, 17, 18, 27, - 0, 2, 4, 3, 5, 6, 7, 8, 9, 10, 12, 24, 25, 26, 27, + 0, 1, 4, 15, 16, 17, 18, 21, 22, 23, 24, 25, 19, 20, 29, + 0, 2, 4, 3, 5, 6, 7, 8, 9, 12, 14, 26, 27, 28, 29, }; static const byte arrange16[] = { - 0, 1, 2, 4, 13, 14, 15, 16, 19, 20, 21, 22, 23, 17, 18, 27, - 0, 1, 3, 5, 6, 7, 8, 9, 10, 12, 24, 25, 26, 17, 18, 27, + 0, 1, 2, 4, 15, 16, 17, 18, 21, 22, 23, 24, 25, 19, 20, 29, + 0, 1, 3, 5, 6, 7, 8, 9, 12, 14, 26, 27, 28, 19, 20, 29, }; static const byte arrange17[] = { - 0, 1, 2, 4, 6, 13, 14, 15, 16, 19, 20, 21, 22, 23, 17, 18, 27, - 0, 1, 3, 4, 6, 5, 7, 8, 9, 10, 12, 24, 25, 26, 17, 18, 27, + 0, 1, 2, 4, 6, 15, 16, 17, 18, 21, 22, 23, 24, 25, 19, 20, 29, + 0, 1, 3, 4, 6, 5, 7, 8, 9, 12, 14, 26, 27, 28, 19, 20, 29, }; static const byte arrange18[] = { - 0, 1, 2, 4, 5, 6, 7, 8, 9, 12, 19, 20, 21, 22, 23, 17, 18, 27, - 0, 1, 3, 4, 5, 6, 7, 10, 13, 14, 15, 16, 24, 25, 26, 17, 18, 27, + 0, 1, 2, 4, 5, 6, 7, 8, 9, 14, 21, 22, 23, 24, 25, 19, 20, 29, + 0, 1, 3, 4, 5, 6, 7, 12, 15, 16, 17, 18, 26, 27, 28, 19, 20, 29, }; static const byte arrange19[] = { - 0, 1, 2, 4, 5, 6, 13, 14, 15, 16, 19, 20, 21, 22, 23, 24, 17, 18, 27, - 0, 1, 3, 4, 7, 8, 9, 10, 12, 25, 19, 20, 21, 22, 23, 26, 17, 18, 27, + 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, + 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 }; /* If at least BIGGEST_ARRANGEMENT fit, just spread all the buttons nicely */ @@ -1402,7 +1503,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; @@ -1425,21 +1526,21 @@ class NWidgetScenarioToolbarContainer : public NWidgetToolbarContainer { assert(i < lengthof(this->panel_widths)); this->panel_widths[i++] = child_wid->current_x; - *_preferred_toolbar_size += child_wid->current_x; + w->window_desc->default_width += child_wid->current_x; } } /* virtual */ const byte *GetButtonArrangement(uint &width, uint &arrangable_count, uint &button_count, uint &spacer_count) const { static const byte arrange_all[] = { - 0, 1, 2, 3, 4, 18, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 24, 26, + 0, 1, 2, 3, 4, 18, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 26, 28, }; static const byte arrange_nopanel[] = { - 0, 1, 2, 3, 18, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 24, 26, + 0, 1, 2, 3, 18, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 26, 28, }; static const byte arrange_switch[] = { - 18, 8, 11, 12, 13, 14, 15, 16, 17, 27, - 0, 1, 2, 3, 18, 9, 10, 24, 26, 27, + 18, 8, 11, 12, 13, 14, 15, 16, 17, 29, + 0, 1, 2, 3, 18, 9, 10, 26, 28, 29, }; /* If we can place all buttons *and* the panels, show them. */ @@ -1486,6 +1587,8 @@ static ToolbarButtonProc * const _toolbar_button_procs[] = { ToolbarStationsClick, ToolbarFinancesClick, ToolbarCompaniesClick, + ToolbarStoryClick, + ToolbarGoalClick, ToolbarGraphsClick, ToolbarLeagueClick, ToolbarIndustryClick, @@ -1518,6 +1621,8 @@ enum MainToolbarHotkeys { MTHK_STATIONS, MTHK_FINANCES, MTHK_COMPANIES, + MTHK_STORY, + MTHK_GOAL, MTHK_GRAPHS, MTHK_LEAGUE, MTHK_INDUSTRIES, @@ -1549,9 +1654,9 @@ enum MainToolbarHotkeys { struct MainToolbarWindow : Window { CallBackFunction last_started_action; ///< Last started user action. - MainToolbarWindow(const WindowDesc *desc) : Window() + MainToolbarWindow(WindowDesc *desc) : Window(desc) { - this->InitNested(desc, 0); + this->InitNested(0); this->last_started_action = CBF_NONE; CLRBITS(this->flags, WF_WHITE_BORDER); @@ -1570,6 +1675,9 @@ struct MainToolbarWindow : Window { /* 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, 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)); @@ -1587,9 +1695,9 @@ struct MainToolbarWindow : Window { if (cbf != CBF_NONE) this->last_started_action = cbf; } - virtual EventState OnKeyPress(uint16 key, uint16 keycode) + virtual EventState OnHotkey(int hotkey) { - switch (CheckHotkeyMatch(maintoolbar_hotkeys, keycode, this)) { + switch (hotkey) { case MTHK_PAUSE: ToolbarPauseClick(this); break; case MTHK_FASTFORWARD: ToolbarFastForwardClick(this); break; case MTHK_SETTINGS: ShowGameOptions(); break; @@ -1601,6 +1709,8 @@ struct MainToolbarWindow : Window { case MTHK_STATIONS: ShowCompanyStations(_local_company); break; case MTHK_FINANCES: ShowCompanyFinances(_local_company); break; case MTHK_COMPANIES: ShowCompany(_local_company); break; + case MTHK_STORY: ShowStoryBook(_local_company); break; + case MTHK_GOAL: ShowGoalsList(_local_company); break; case MTHK_GRAPHS: ShowOperatingProfitGraph(); break; case MTHK_LEAGUE: ShowCompanyLeagueTable(); break; case MTHK_INDUSTRIES: ShowBuildIndustryWindow(); break; @@ -1684,7 +1794,7 @@ struct MainToolbarWindow : Window { if (FindWindowById(WC_MAIN_WINDOW, 0) != NULL) HandleZoomMessage(this, FindWindowById(WC_MAIN_WINDOW, 0)->viewport, WID_TN_ZOOM_IN, WID_TN_ZOOM_OUT); } - static Hotkey maintoolbar_hotkeys[]; + static HotkeyList hotkeys; }; const uint16 _maintoolbar_pause_keys[] = {WKC_F1, WKC_PAUSE, 0}; @@ -1692,48 +1802,50 @@ const uint16 _maintoolbar_zoomin_keys[] = {WKC_NUM_PLUS, WKC_EQUALS, WKC_SHIFT | const uint16 _maintoolbar_zoomout_keys[] = {WKC_NUM_MINUS, WKC_MINUS, WKC_SHIFT | WKC_MINUS, WKC_SHIFT | WKC_F6, 0}; const uint16 _maintoolbar_smallmap_keys[] = {WKC_F4, 'M', 0}; -Hotkey MainToolbarWindow::maintoolbar_hotkeys[] = { - Hotkey(_maintoolbar_pause_keys, "pause", MTHK_PAUSE), - Hotkey((uint16)0, "fastforward", MTHK_FASTFORWARD), - Hotkey(WKC_F2, "settings", MTHK_SETTINGS), - Hotkey(WKC_F3, "saveload", MTHK_SAVEGAME), - Hotkey((uint16)0, "load_game", MTHK_LOADGAME), - Hotkey(_maintoolbar_smallmap_keys, "smallmap", MTHK_SMALLMAP), - Hotkey(WKC_F5, "town_list", MTHK_TOWNDIRECTORY), - Hotkey(WKC_F6, "subsidies", MTHK_SUBSIDIES), - Hotkey(WKC_F7, "station_list", MTHK_STATIONS), - Hotkey(WKC_F8, "finances", MTHK_FINANCES), - Hotkey(WKC_F9, "companies", MTHK_COMPANIES), - Hotkey(WKC_F10, "graphs", MTHK_GRAPHS), - Hotkey(WKC_F11, "league", MTHK_LEAGUE), - Hotkey(WKC_F12, "industry_list", MTHK_INDUSTRIES), - Hotkey(WKC_SHIFT | WKC_F1, "train_list", MTHK_TRAIN_LIST), - Hotkey(WKC_SHIFT | WKC_F2, "roadveh_list", MTHK_ROADVEH_LIST), - Hotkey(WKC_SHIFT | WKC_F3, "ship_list", MTHK_SHIP_LIST), - Hotkey(WKC_SHIFT | WKC_F4, "aircraft_list", MTHK_AIRCRAFT_LIST), - Hotkey(_maintoolbar_zoomin_keys, "zoomin", MTHK_ZOOM_IN), - Hotkey(_maintoolbar_zoomout_keys, "zoomout", MTHK_ZOOM_OUT), - Hotkey(WKC_SHIFT | WKC_F7, "build_rail", MTHK_BUILD_RAIL), - Hotkey(WKC_SHIFT | WKC_F8, "build_road", MTHK_BUILD_ROAD), - Hotkey(WKC_SHIFT | WKC_F9, "build_docks", MTHK_BUILD_DOCKS), - Hotkey(WKC_SHIFT | WKC_F10, "build_airport", MTHK_BUILD_AIRPORT), - Hotkey(WKC_SHIFT | WKC_F11, "build_trees", MTHK_BUILD_TREES), - Hotkey(WKC_SHIFT | WKC_F12, "music", MTHK_MUSIC), - Hotkey((uint16)0, "ai_debug", MTHK_AI_DEBUG), - Hotkey(WKC_CTRL | 'S', "small_screenshot", MTHK_SMALL_SCREENSHOT), - Hotkey(WKC_CTRL | 'P', "zoomedin_screenshot", MTHK_ZOOMEDIN_SCREENSHOT), - Hotkey(WKC_CTRL | 'D', "defaultzoom_screenshot", MTHK_DEFAULTZOOM_SCREENSHOT), - Hotkey((uint16)0, "giant_screenshot", MTHK_GIANT_SCREENSHOT), - Hotkey(WKC_CTRL | WKC_ALT | 'C', "cheats", MTHK_CHEATS), - Hotkey('L', "terraform", MTHK_TERRAFORM), - Hotkey('V', "extra_viewport", MTHK_EXTRA_VIEWPORT), +static Hotkey maintoolbar_hotkeys[] = { + Hotkey(_maintoolbar_pause_keys, "pause", MTHK_PAUSE), + Hotkey((uint16)0, "fastforward", MTHK_FASTFORWARD), + Hotkey(WKC_F2, "settings", MTHK_SETTINGS), + Hotkey(WKC_F3, "saveload", MTHK_SAVEGAME), + Hotkey((uint16)0, "load_game", MTHK_LOADGAME), + Hotkey(_maintoolbar_smallmap_keys, "smallmap", MTHK_SMALLMAP), + Hotkey(WKC_F5, "town_list", MTHK_TOWNDIRECTORY), + Hotkey(WKC_F6, "subsidies", MTHK_SUBSIDIES), + Hotkey(WKC_F7, "station_list", MTHK_STATIONS), + Hotkey(WKC_F8, "finances", MTHK_FINANCES), + Hotkey(WKC_F9, "companies", MTHK_COMPANIES), + Hotkey((uint16)0, "story_book", MTHK_STORY), + Hotkey((uint16)0, "goal_list", MTHK_GOAL), + Hotkey(WKC_F10, "graphs", MTHK_GRAPHS), + Hotkey(WKC_F11, "league", MTHK_LEAGUE), + Hotkey(WKC_F12, "industry_list", MTHK_INDUSTRIES), + Hotkey(WKC_SHIFT | WKC_F1, "train_list", MTHK_TRAIN_LIST), + Hotkey(WKC_SHIFT | WKC_F2, "roadveh_list", MTHK_ROADVEH_LIST), + Hotkey(WKC_SHIFT | WKC_F3, "ship_list", MTHK_SHIP_LIST), + Hotkey(WKC_SHIFT | WKC_F4, "aircraft_list", MTHK_AIRCRAFT_LIST), + Hotkey(_maintoolbar_zoomin_keys, "zoomin", MTHK_ZOOM_IN), + Hotkey(_maintoolbar_zoomout_keys, "zoomout", MTHK_ZOOM_OUT), + Hotkey(WKC_SHIFT | WKC_F7, "build_rail", MTHK_BUILD_RAIL), + Hotkey(WKC_SHIFT | WKC_F8, "build_road", MTHK_BUILD_ROAD), + Hotkey(WKC_SHIFT | WKC_F9, "build_docks", MTHK_BUILD_DOCKS), + Hotkey(WKC_SHIFT | WKC_F10, "build_airport", MTHK_BUILD_AIRPORT), + Hotkey(WKC_SHIFT | WKC_F11, "build_trees", MTHK_BUILD_TREES), + Hotkey(WKC_SHIFT | WKC_F12, "music", MTHK_MUSIC), + Hotkey((uint16)0, "ai_debug", MTHK_AI_DEBUG), + Hotkey(WKC_CTRL | 'S', "small_screenshot", MTHK_SMALL_SCREENSHOT), + Hotkey(WKC_CTRL | 'P', "zoomedin_screenshot", MTHK_ZOOMEDIN_SCREENSHOT), + Hotkey(WKC_CTRL | 'D', "defaultzoom_screenshot", MTHK_DEFAULTZOOM_SCREENSHOT), + Hotkey((uint16)0, "giant_screenshot", MTHK_GIANT_SCREENSHOT), + Hotkey(WKC_CTRL | WKC_ALT | 'C', "cheats", MTHK_CHEATS), + Hotkey('L', "terraform", MTHK_TERRAFORM), + Hotkey('V', "extra_viewport", MTHK_EXTRA_VIEWPORT), #ifdef ENABLE_NETWORK - Hotkey((uint16)0, "client_list", MTHK_CLIENT_LIST), + Hotkey((uint16)0, "client_list", MTHK_CLIENT_LIST), #endif - Hotkey((uint16)0, "sign_list", MTHK_SIGN_LIST), - HOTKEY_LIST_END(MainToolbarWindow) + Hotkey((uint16)0, "sign_list", MTHK_SIGN_LIST), + HOTKEY_LIST_END }; -Hotkey *_maintoolbar_hotkeys = MainToolbarWindow::maintoolbar_hotkeys; +HotkeyList MainToolbarWindow::hotkeys("maintoolbar", maintoolbar_hotkeys); static NWidgetBase *MakeMainToolbar(int *biggest_index) { @@ -1749,6 +1861,8 @@ static NWidgetBase *MakeMainToolbar(int *biggest_index) SPR_IMG_COMPANY_LIST, // WID_TN_STATIONS SPR_IMG_COMPANY_FINANCE, // WID_TN_FINANCES SPR_IMG_COMPANY_GENERAL, // WID_TN_COMPANIES + SPR_IMG_STORY_BOOK, // WID_TN_STORY + SPR_IMG_GOAL, // WID_TN_GOAL SPR_IMG_GRAPHS, // WID_TN_GRAPHS SPR_IMG_COMPANY_LEAGUE, // WID_TN_LEAGUE SPR_IMG_INDUSTRY, // WID_TN_INDUSTRIES @@ -1772,7 +1886,7 @@ static NWidgetBase *MakeMainToolbar(int *biggest_index) NWidgetMainToolbarContainer *hor = new NWidgetMainToolbarContainer(); for (uint i = 0; i < WID_TN_END; i++) { switch (i) { - case 4: case 8: case 13: case 17: case 19: case 24: hor->Add(new NWidgetSpacer(0, 0)); break; + case 4: case 8: case 15: case 19: case 21: case 26: hor->Add(new NWidgetSpacer(0, 0)); break; } hor->Add(new NWidgetLeaf(i == WID_TN_SAVE ? WWT_IMGBTN_2 : WWT_IMGBTN, COLOUR_GREY, i, toolbar_button_sprites[i], STR_TOOLBAR_TOOLTIP_PAUSE_GAME + i)); } @@ -1786,10 +1900,11 @@ static const NWidgetPart _nested_toolbar_normal_widgets[] = { }; static WindowDesc _toolb_normal_desc( - WDP_MANUAL, 640, 22, + WDP_MANUAL, NULL, 640, 22, WC_MAIN_TOOLBAR, WC_NONE, WDF_NO_FOCUS, - _nested_toolbar_normal_widgets, lengthof(_nested_toolbar_normal_widgets) + _nested_toolbar_normal_widgets, lengthof(_nested_toolbar_normal_widgets), + &MainToolbarWindow::hotkeys ); @@ -1820,6 +1935,8 @@ static ToolbarButtonProc * const _scen_toolbar_button_procs[] = { NULL, NULL, NULL, + NULL, + NULL, ToolbarMusicClick, NULL, ToolbarHelpClick, @@ -1854,9 +1971,9 @@ enum MainToolbarEditorHotkeys { struct ScenarioEditorToolbarWindow : Window { CallBackFunction last_started_action; ///< Last started user action. - ScenarioEditorToolbarWindow(const WindowDesc *desc) : Window() + ScenarioEditorToolbarWindow(WindowDesc *desc) : Window(desc) { - this->InitNested(desc, 0); + this->InitNested(0); this->last_started_action = CBF_NONE; CLRBITS(this->flags, WF_WHITE_BORDER); @@ -1925,10 +2042,10 @@ struct ScenarioEditorToolbarWindow : Window { if (_settings_client.sound.click_beep) SndPlayFx(SND_15_BEEP); } - virtual EventState OnKeyPress(uint16 key, uint16 keycode) + virtual EventState OnHotkey(int hotkey) { CallBackFunction cbf = CBF_NONE; - switch (CheckHotkeyMatch(scenedit_maintoolbar_hotkeys, keycode, this)) { + switch (hotkey) { case MTEHK_PAUSE: ToolbarPauseClick(this); break; case MTEHK_FASTFORWARD: ToolbarFastForwardClick(this); break; case MTEHK_SETTINGS: ShowGameOptions(); break; @@ -2015,41 +2132,40 @@ 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(); } - static Hotkey scenedit_maintoolbar_hotkeys[]; + static HotkeyList hotkeys; }; -Hotkey ScenarioEditorToolbarWindow::scenedit_maintoolbar_hotkeys[] = { - Hotkey(_maintoolbar_pause_keys, "pause", MTEHK_PAUSE), - Hotkey((uint16)0, "fastforward", MTEHK_FASTFORWARD), - Hotkey(WKC_F2, "settings", MTEHK_SETTINGS), - Hotkey(WKC_F3, "saveload", MTEHK_SAVEGAME), - Hotkey(WKC_F4, "gen_land", MTEHK_GENLAND), - Hotkey(WKC_F5, "gen_town", MTEHK_GENTOWN), - Hotkey(WKC_F6, "gen_industry", MTEHK_GENINDUSTRY), - Hotkey(WKC_F7, "build_road", MTEHK_BUILD_ROAD), - Hotkey(WKC_F8, "build_docks", MTEHK_BUILD_DOCKS), - Hotkey(WKC_F9, "build_trees", MTEHK_BUILD_TREES), - Hotkey(WKC_F10, "build_sign", MTEHK_SIGN), - Hotkey(WKC_F11, "music", MTEHK_MUSIC), - Hotkey(WKC_F12, "land_info", MTEHK_LANDINFO), - Hotkey(WKC_CTRL | 'S', "small_screenshot", MTEHK_SMALL_SCREENSHOT), - Hotkey(WKC_CTRL | 'P', "zoomedin_screenshot", MTEHK_ZOOMEDIN_SCREENSHOT), - Hotkey(WKC_CTRL | 'D', "defaultzoom_screenshot", MTEHK_DEFAULTZOOM_SCREENSHOT), - Hotkey((uint16)0, "giant_screenshot", MTEHK_GIANT_SCREENSHOT), - Hotkey(_maintoolbar_zoomin_keys, "zoomin", MTEHK_ZOOM_IN), - Hotkey(_maintoolbar_zoomout_keys, "zoomout", MTEHK_ZOOM_OUT), - Hotkey('L', "terraform", MTEHK_TERRAFORM), - Hotkey('M', "smallmap", MTEHK_SMALLMAP), - Hotkey('V', "extra_viewport", MTEHK_EXTRA_VIEWPORT), - HOTKEY_LIST_END(ScenarioEditorToolbarWindow) +static Hotkey scenedit_maintoolbar_hotkeys[] = { + Hotkey(_maintoolbar_pause_keys, "pause", MTEHK_PAUSE), + Hotkey((uint16)0, "fastforward", MTEHK_FASTFORWARD), + Hotkey(WKC_F2, "settings", MTEHK_SETTINGS), + Hotkey(WKC_F3, "saveload", MTEHK_SAVEGAME), + Hotkey(WKC_F4, "gen_land", MTEHK_GENLAND), + Hotkey(WKC_F5, "gen_town", MTEHK_GENTOWN), + Hotkey(WKC_F6, "gen_industry", MTEHK_GENINDUSTRY), + Hotkey(WKC_F7, "build_road", MTEHK_BUILD_ROAD), + Hotkey(WKC_F8, "build_docks", MTEHK_BUILD_DOCKS), + Hotkey(WKC_F9, "build_trees", MTEHK_BUILD_TREES), + Hotkey(WKC_F10, "build_sign", MTEHK_SIGN), + Hotkey(WKC_F11, "music", MTEHK_MUSIC), + Hotkey(WKC_F12, "land_info", MTEHK_LANDINFO), + Hotkey(WKC_CTRL | 'S', "small_screenshot", MTEHK_SMALL_SCREENSHOT), + Hotkey(WKC_CTRL | 'P', "zoomedin_screenshot", MTEHK_ZOOMEDIN_SCREENSHOT), + Hotkey(WKC_CTRL | 'D', "defaultzoom_screenshot", MTEHK_DEFAULTZOOM_SCREENSHOT), + Hotkey((uint16)0, "giant_screenshot", MTEHK_GIANT_SCREENSHOT), + Hotkey(_maintoolbar_zoomin_keys, "zoomin", MTEHK_ZOOM_IN), + Hotkey(_maintoolbar_zoomout_keys, "zoomout", MTEHK_ZOOM_OUT), + Hotkey('L', "terraform", MTEHK_TERRAFORM), + Hotkey('M', "smallmap", MTEHK_SMALLMAP), + Hotkey('V', "extra_viewport", MTEHK_EXTRA_VIEWPORT), + HOTKEY_LIST_END }; -Hotkey *_scenedit_maintoolbar_hotkeys = ScenarioEditorToolbarWindow::scenedit_maintoolbar_hotkeys; +HotkeyList ScenarioEditorToolbarWindow::hotkeys("scenedit_maintoolbar", scenedit_maintoolbar_hotkeys); static const NWidgetPart _nested_toolb_scen_inner_widgets[] = { NWidget(WWT_IMGBTN, COLOUR_GREY, WID_TE_PAUSE), SetDataTip(SPR_IMG_PAUSE, STR_TOOLBAR_TOOLTIP_PAUSE_GAME), @@ -2095,10 +2211,11 @@ static const NWidgetPart _nested_toolb_scen_widgets[] = { }; static WindowDesc _toolb_scen_desc( - WDP_MANUAL, 640, 22, + WDP_MANUAL, NULL, 640, 22, WC_MAIN_TOOLBAR, WC_NONE, WDF_NO_FOCUS, - _nested_toolb_scen_widgets, lengthof(_nested_toolb_scen_widgets) + _nested_toolb_scen_widgets, lengthof(_nested_toolb_scen_widgets), + &ScenarioEditorToolbarWindow::hotkeys ); /** Allocate the toolbar. */ @@ -2108,10 +2225,8 @@ void AllocateToolbar() _last_built_roadtype = ROADTYPE_ROAD; if (_game_mode == GM_EDITOR) { - _preferred_toolbar_size = &_toolb_scen_desc.default_width; new ScenarioEditorToolbarWindow(&_toolb_scen_desc); } else { - _preferred_toolbar_size = &_toolb_normal_desc.default_width; new MainToolbarWindow(&_toolb_normal_desc); } } diff --git a/src/toolbar_gui.h b/src/toolbar_gui.h index 1d5390048..d3eba5b27 100644 --- a/src/toolbar_gui.h +++ b/src/toolbar_gui.h @@ -16,6 +16,4 @@ void AllocateToolbar(); void ToggleBoundingBoxes(); void ToggleDirtyBlocks(); -extern int16 *_preferred_toolbar_size; - #endif /* TOOLBAR_GUI_H */ diff --git a/src/town.h b/src/town.h index 2bb1fa95f..42495971e 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 @@ -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. }; @@ -209,7 +206,7 @@ enum TownActions { TACT_BUILD_STATUE = 0x10, ///< Build a statue. TACT_FUND_BUILDINGS = 0x20, ///< Fund new buildings. TACT_BUY_RIGHTS = 0x40, ///< Buy exclusive transport rights. - TACT_BRIBE = 0x80, ///< Try to bribe the counsil. + TACT_BRIBE = 0x80, ///< Try to bribe the council. TACT_COUNT = 8, ///< Number of available town actions. diff --git a/src/town_cmd.cpp b/src/town_cmd.cpp index e186a8733..1c6a01eae 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. @@ -283,7 +285,7 @@ static Foundation GetFoundation_Town(TileIndex tile, Slope tileh) /** * Animate a tile for a town * Only certain houses can be animated - * The newhouses animation superseeds regular ones + * The newhouses animation supersedes regular ones * @param tile TileIndex of the house to animate */ static void AnimateTile_Town(TileIndex tile) @@ -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) { @@ -374,8 +394,8 @@ void UpdateAllTownVirtCoords() /** * Change the towns population - * @param t Town which polulation has changed - * @param mod polulation change (can be positive or negative) + * @param t Town which population has changed + * @param mod population change (can be positive or negative) */ static void ChangePopulation(Town *t, int mod) { @@ -510,7 +530,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 +778,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)) { @@ -804,9 +824,9 @@ static RoadBits GetTownRoadBits(TileIndex tile) * Assuming a road from (tile - TileOffsByDiagDir(dir)) to tile, * is there a parallel road left or right of it within distance dist_multi? * - * @param tile curent tile + * @param tile current tile * @param dir target direction - * @param dist_multi distance multiplyer + * @param dist_multi distance multiplayer * @return true if there is a parallel road */ static bool IsNeighborRoadTile(TileIndex tile, const DiagDirection dir, uint dist_multi) @@ -1173,7 +1193,7 @@ static void GrowTownInTile(TileIndex *tile_ptr, RoadBits cur_rb, DiagDirection t } else if (target_dir < DIAGDIR_END && !(cur_rb & DiagDirToRoadBits(ReverseDiagDir(target_dir)))) { /* Continue building on a partial road. - * Should be allways OK, so we only generate + * Should be always OK, so we only generate * the fitting RoadBits */ _grow_town_result = GROWTH_SEARCH_STOPPED; @@ -1317,7 +1337,7 @@ 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; } @@ -1411,7 +1431,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 +1594,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 +1641,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 +1687,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 +1702,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 +1716,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 +1795,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; @@ -1847,7 +1870,10 @@ static Town *CreateRandomTown(uint attempts, uint32 townnameparts, TownSize size /* if the population is still 0 at the point, then the * placement is so bad it couldn't grow at all */ if (t->cache.population > 0) return t; + + Backup cur_company(_current_company, OWNER_TOWN, FILE_LINE); CommandCost rc = DoCommand(t->xy, t->index, 0, DC_EXEC, CMD_DELETE_TOWN); + cur_company.Restore(); assert(rc.Succeeded()); /* We already know that we can allocate a single town when @@ -1874,7 +1900,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); @@ -1885,11 +1913,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. @@ -2188,13 +2218,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 */ @@ -2221,7 +2251,7 @@ static bool BuildTownHouse(Town *t, TileIndex tile) while (probability_max > 0) { /* Building a multitile building can change the location of tile. * The building would still be built partially on that tile, but - * its nothern tile would be elsewere. However, if the callback + * its northern tile would be elsewhere. However, if the callback * fails we would be basing further work from the changed tile. * So a next 1x1 tile building could be built on the wrong tile. */ tile = baseTile; @@ -2418,7 +2448,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); @@ -2459,7 +2489,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); @@ -2495,7 +2525,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); } @@ -2507,21 +2537,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); } @@ -2629,7 +2672,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 { @@ -2699,7 +2742,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); @@ -2807,11 +2850,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(); @@ -2859,7 +2903,7 @@ static CommandCost TownActionBribe(Town *t, DoCommandFlag flags) } } - /* only show errormessage to the executing player. All errors are handled command.c + /* only show error message to the executing player. All errors are handled command.c * but this is special, because it can only 'fail' on a DC_EXEC */ if (IsLocalCompany()) ShowErrorMessage(STR_ERROR_BRIBE_FAILED, INVALID_STRING_ID, WL_INFO); @@ -3006,7 +3050,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; @@ -3029,7 +3073,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; } @@ -3075,7 +3119,7 @@ static void UpdateTownGrowRate(Town *t) t->grow_counter = m; } - SetBit(t->flags, TOWN_IS_FUNDED); + SetBit(t->flags, TOWN_IS_GROWING); SetWindowDirty(WC_TOWN_VIEW, t->index); } @@ -3372,7 +3416,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 9b09025f5..a2ac0bafe 100644 --- a/src/town_gui.cpp +++ b/src/town_gui.cpp @@ -31,11 +31,14 @@ #include "townname_func.h" #include "core/geometry_func.hpp" #include "genworld.h" +#include "widgets/dropdown_func.h" #include "widgets/town_widget.h" #include "table/strings.h" +#include "safeguards.h" + typedef GUIList GUITownList; static const NWidgetPart _nested_town_authority_widgets[] = { @@ -43,6 +46,7 @@ static const NWidgetPart _nested_town_authority_widgets[] = { NWidget(WWT_CLOSEBOX, COLOUR_BROWN), NWidget(WWT_CAPTION, COLOUR_BROWN, WID_TA_CAPTION), SetDataTip(STR_LOCAL_AUTHORITY_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), NWidget(WWT_SHADEBOX, COLOUR_BROWN), + NWidget(WWT_DEFSIZEBOX, COLOUR_BROWN), NWidget(WWT_STICKYBOX, COLOUR_BROWN), EndContainer(), NWidget(WWT_PANEL, COLOUR_BROWN, WID_TA_RATING_INFO), SetMinimalSize(317, 92), SetResize(1, 1), EndContainer(), @@ -87,10 +91,10 @@ struct TownAuthorityWindow : Window { } public: - TownAuthorityWindow(const WindowDesc *desc, WindowNumber window_number) : Window(), sel_index(-1), displayed_actions_on_previous_painting(0) + TownAuthorityWindow(WindowDesc *desc, WindowNumber window_number) : Window(desc), sel_index(-1), displayed_actions_on_previous_painting(0) { this->town = Town::Get(window_number); - this->InitNested(desc, window_number); + this->InitNested(window_number); this->vscroll = this->GetScrollbar(WID_TA_SCROLLBAR); this->vscroll->SetCapacity((this->GetWidget(WID_TA_COMMAND_LIST)->current_y - WD_FRAMERECT_TOP - WD_FRAMERECT_BOTTOM) / FONT_HEIGHT_NORMAL); } @@ -279,8 +283,8 @@ struct TownAuthorityWindow : Window { } }; -static const WindowDesc _town_authority_desc( - WDP_AUTO, 317, 222, +static WindowDesc _town_authority_desc( + WDP_AUTO, "view_town_authority", 317, 222, WC_TOWN_AUTHORITY, WC_NONE, 0, _nested_town_authority_widgets, lengthof(_nested_town_authority_widgets) @@ -300,14 +304,14 @@ struct TownViewWindow : Window { public: static const int WID_TV_HEIGHT_NORMAL = 150; - TownViewWindow(const WindowDesc *desc, WindowNumber window_number) : Window() + TownViewWindow(WindowDesc *desc, WindowNumber window_number) : Window(desc) { - this->CreateNestedTree(desc); + this->CreateNestedTree(); this->town = Town::Get(window_number); if (this->town->larger_town) this->GetWidget(WID_TV_CAPTION)->widget_data = STR_TOWN_VIEW_CITY_CAPTION; - this->FinishInitNested(desc, window_number); + this->FinishInitNested(window_number); this->flags |= WF_DISABLE_VP_SCROLL; NWidgetViewport *nvp = this->GetWidget(WID_TV_VIEWPORT); @@ -386,7 +390,7 @@ struct TownViewWindow : Window { 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 { @@ -531,6 +535,7 @@ static const NWidgetPart _nested_town_game_view_widgets[] = { NWidget(WWT_CLOSEBOX, COLOUR_BROWN), NWidget(WWT_CAPTION, COLOUR_BROWN, WID_TV_CAPTION), SetDataTip(STR_TOWN_VIEW_TOWN_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), NWidget(WWT_SHADEBOX, COLOUR_BROWN), + NWidget(WWT_DEFSIZEBOX, COLOUR_BROWN), NWidget(WWT_STICKYBOX, COLOUR_BROWN), EndContainer(), NWidget(WWT_PANEL, COLOUR_BROWN), @@ -549,8 +554,8 @@ static const NWidgetPart _nested_town_game_view_widgets[] = { EndContainer(), }; -static const WindowDesc _town_game_view_desc( - WDP_AUTO, 260, TownViewWindow::WID_TV_HEIGHT_NORMAL, +static WindowDesc _town_game_view_desc( + WDP_AUTO, "view_town", 260, TownViewWindow::WID_TV_HEIGHT_NORMAL, WC_TOWN_VIEW, WC_NONE, 0, _nested_town_game_view_widgets, lengthof(_nested_town_game_view_widgets) @@ -562,6 +567,7 @@ static const NWidgetPart _nested_town_editor_view_widgets[] = { NWidget(WWT_CAPTION, COLOUR_BROWN, WID_TV_CAPTION), SetDataTip(STR_TOWN_VIEW_TOWN_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), NWidget(WWT_PUSHTXTBTN, COLOUR_BROWN, WID_TV_CHANGE_NAME), SetMinimalSize(76, 14), SetDataTip(STR_BUTTON_RENAME, STR_TOWN_VIEW_RENAME_TOOLTIP), NWidget(WWT_SHADEBOX, COLOUR_BROWN), + NWidget(WWT_DEFSIZEBOX, COLOUR_BROWN), NWidget(WWT_STICKYBOX, COLOUR_BROWN), EndContainer(), NWidget(WWT_PANEL, COLOUR_BROWN), @@ -580,8 +586,8 @@ static const NWidgetPart _nested_town_editor_view_widgets[] = { EndContainer(), }; -static const WindowDesc _town_editor_view_desc( - WDP_AUTO, 260, TownViewWindow::WID_TV_HEIGHT_NORMAL, +static WindowDesc _town_editor_view_desc( + WDP_AUTO, "view_town_scen", 260, TownViewWindow::WID_TV_HEIGHT_NORMAL, WC_TOWN_VIEW, WC_NONE, 0, _nested_town_editor_view_widgets, lengthof(_nested_town_editor_view_widgets) @@ -601,13 +607,15 @@ static const NWidgetPart _nested_town_directory_widgets[] = { NWidget(WWT_CLOSEBOX, COLOUR_BROWN), NWidget(WWT_CAPTION, COLOUR_BROWN), SetDataTip(STR_TOWN_DIRECTORY_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), NWidget(WWT_SHADEBOX, COLOUR_BROWN), + NWidget(WWT_DEFSIZEBOX, COLOUR_BROWN), NWidget(WWT_STICKYBOX, COLOUR_BROWN), EndContainer(), NWidget(NWID_HORIZONTAL), NWidget(NWID_VERTICAL), NWidget(NWID_HORIZONTAL), - NWidget(WWT_PUSHTXTBTN, COLOUR_BROWN, WID_TD_SORT_NAME), SetMinimalSize(99, 12), SetDataTip(STR_SORT_BY_CAPTION_NAME, STR_TOOLTIP_SORT_ORDER), SetFill(1, 0), - NWidget(WWT_PUSHTXTBTN, COLOUR_BROWN, WID_TD_SORT_POPULATION), SetMinimalSize(97, 12), SetDataTip(STR_SORT_BY_CAPTION_POPULATION, STR_TOOLTIP_SORT_ORDER), SetFill(1, 0), + NWidget(WWT_TEXTBTN, COLOUR_BROWN, WID_TD_SORT_ORDER), SetDataTip(STR_BUTTON_SORT_BY, STR_TOOLTIP_SORT_ORDER), + NWidget(WWT_DROPDOWN, COLOUR_BROWN, WID_TD_SORT_CRITERIA), SetDataTip(STR_JUST_STRING, STR_TOOLTIP_SORT_CRITERIA), + NWidget(WWT_PANEL, COLOUR_BROWN), SetResize(1, 0), EndContainer(), EndContainer(), NWidget(WWT_PANEL, COLOUR_BROWN, WID_TD_LIST), SetMinimalSize(196, 0), SetDataTip(0x0, STR_TOWN_DIRECTORY_LIST_TOOLTIP), SetFill(1, 0), SetResize(0, 10), SetScrollbar(WID_TD_SCROLLBAR), EndContainer(), @@ -630,6 +638,7 @@ struct TownDirectoryWindow : public Window { static const Town *last_town; /* Constants for sorting towns */ + static const StringID sorter_names[]; static GUITownList::SortFunction * const sorter_funcs[]; GUITownList towns; @@ -653,6 +662,7 @@ struct TownDirectoryWindow : public Window { /* Always sort the towns. */ this->last_town = NULL; this->towns.Sort(); + this->SetWidgetDirty(WID_TD_LIST); // Force repaint of the displayed towns. } /** Sort by town name */ @@ -668,7 +678,7 @@ struct TownDirectoryWindow : public Window { /* If 'b' is the same town as in the last round, use the cached value * We do this to speed stuff up ('b' is called with the same value a lot of - * times after eachother) */ + * times after each other) */ if (tb != last_town) { last_town = tb; SetDParam(0, tb->index); @@ -678,16 +688,38 @@ struct TownDirectoryWindow : public Window { return strnatcmp(buf, buf_cache); // Sort by name (natural sorting). } - /** Sort by population */ + /** Sort by population (default descending, as big towns are of the most interest). */ static int CDECL TownPopulationSorter(const Town * const *a, const Town * const *b) { - return (*a)->cache.population - (*b)->cache.population; + uint32 a_population = (*a)->cache.population; + uint32 b_population = (*b)->cache.population; + if (a_population == b_population) return TownDirectoryWindow::TownNameSorter(a, b); + return (a_population < b_population) ? -1 : 1; + } + + /** Sort by town rating */ + static int CDECL TownRatingSorter(const Town * const *a, const Town * const *b) + { + int before = TownDirectoryWindow::last_sorting.order ? 1 : -1; // Value to get 'a' before 'b'. + + /* Towns without rating are always after towns with rating. */ + if (HasBit((*a)->have_ratings, _local_company)) { + if (HasBit((*b)->have_ratings, _local_company)) { + int16 a_rating = (*a)->ratings[_local_company]; + int16 b_rating = (*b)->ratings[_local_company]; + if (a_rating == b_rating) return TownDirectoryWindow::TownNameSorter(a, b); + return (a_rating < b_rating) ? -1 : 1; + } + return before; + } + if (HasBit((*b)->have_ratings, _local_company)) return -before; + return -before * TownDirectoryWindow::TownNameSorter(a, b); // Sort unrated towns always on ascending town name. } public: - TownDirectoryWindow(const WindowDesc *desc) : Window() + TownDirectoryWindow(WindowDesc *desc) : Window(desc) { - this->CreateNestedTree(desc); + this->CreateNestedTree(); this->vscroll = this->GetScrollbar(WID_TD_SCROLLBAR); @@ -696,28 +728,27 @@ struct TownDirectoryWindow : public Window { this->towns.ForceRebuild(); this->BuildSortTownList(); - this->FinishInitNested(desc, 0); - } - - ~TownDirectoryWindow() - { - this->last_sorting = this->towns.GetListing(); + this->FinishInitNested(0); } virtual void SetStringParameters(int widget) const { - if (widget == WID_TD_WORLD_POPULATION) SetDParam(0, GetWorldPopulation()); + switch (widget) { + case WID_TD_WORLD_POPULATION: + SetDParam(0, GetWorldPopulation()); + break; + + case WID_TD_SORT_CRITERIA: + SetDParam(0, TownDirectoryWindow::sorter_names[this->towns.SortType()]); + break; + } } virtual void DrawWidget(const Rect &r, int widget) const { switch (widget) { - case WID_TD_SORT_NAME: - if (this->towns.SortType() == 0) this->DrawSortButtonState(widget, this->towns.IsDescSortOrder() ? SBS_DOWN : SBS_UP); - break; - - case WID_TD_SORT_POPULATION: - if (this->towns.SortType() != 0) this->DrawSortButtonState(widget, this->towns.IsDescSortOrder() ? SBS_DOWN : SBS_UP); + case WID_TD_SORT_ORDER: + this->DrawSortButtonState(widget, this->towns.IsDescSortOrder() ? SBS_DOWN : SBS_UP); break; case WID_TD_LIST: { @@ -764,14 +795,23 @@ struct TownDirectoryWindow : public Window { virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) { switch (widget) { - case WID_TD_SORT_NAME: - case WID_TD_SORT_POPULATION: { + 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.height += padding.height; *size = maxdim(*size, d); break; } + case WID_TD_SORT_CRITERIA: { + Dimension d = {0, 0}; + for (uint i = 0; TownDirectoryWindow::sorter_names[i] != INVALID_STRING_ID; i++) { + d = maxdim(d, GetStringBoundingBox(TownDirectoryWindow::sorter_names[i])); + } + d.width += padding.width; + d.height += padding.height; + *size = maxdim(*size, d); + break; + } case WID_TD_LIST: { Dimension d = GetStringBoundingBox(STR_TOWN_DIRECTORY_NONE); for (uint i = 0; i < this->towns.Length(); i++) { @@ -807,24 +847,22 @@ struct TownDirectoryWindow : public Window { virtual void OnClick(Point pt, int widget, int click_count) { switch (widget) { - case WID_TD_SORT_NAME: // Sort by Name ascending/descending - if (this->towns.SortType() == 0) { + case WID_TD_SORT_ORDER: // Click on sort order button + if (this->towns.SortType() != 2) { // A different sort than by rating. this->towns.ToggleSortOrder(); + this->last_sorting = this->towns.GetListing(); // Store new sorting order. } else { - this->towns.SetSortType(0); + /* Some parts are always sorted ascending on name. */ + this->last_sorting.order = !this->last_sorting.order; + this->towns.SetListing(this->last_sorting); + this->towns.ForceResort(); + this->towns.Sort(); } - this->BuildSortTownList(); this->SetDirty(); break; - case WID_TD_SORT_POPULATION: // Sort by Population ascending/descending - if (this->towns.SortType() == 1) { - this->towns.ToggleSortOrder(); - } else { - this->towns.SetSortType(1); - } - this->BuildSortTownList(); - this->SetDirty(); + case WID_TD_SORT_CRITERIA: // Click on sort criteria dropdown + ShowDropDownMenu(this, TownDirectoryWindow::sorter_names, this->towns.SortType(), WID_TD_SORT_CRITERIA, 0, 0); break; case WID_TD_LIST: { // Click on Town Matrix @@ -843,6 +881,17 @@ struct TownDirectoryWindow : public Window { } } + virtual void OnDropdownSelect(int widget, int index) + { + if (widget != WID_TD_SORT_CRITERIA) return; + + if (this->towns.SortType() != index) { + this->towns.SetSortType(index); + this->last_sorting = this->towns.GetListing(); // Store new sorting order. + this->BuildSortTownList(); + } + } + virtual void OnPaint() { if (this->towns.NeedRebuild()) this->BuildSortTownList(); @@ -879,14 +928,23 @@ struct TownDirectoryWindow : public Window { Listing TownDirectoryWindow::last_sorting = {false, 0}; const Town *TownDirectoryWindow::last_town = NULL; -/* Available town directory sorting functions */ +/** Names of the sorting functions. */ +const StringID TownDirectoryWindow::sorter_names[] = { + STR_SORT_BY_NAME, + STR_SORT_BY_POPULATION, + STR_SORT_BY_RATING, + INVALID_STRING_ID +}; + +/** Available town directory sorting functions. */ GUITownList::SortFunction * const TownDirectoryWindow::sorter_funcs[] = { &TownNameSorter, &TownPopulationSorter, + &TownRatingSorter, }; -static const WindowDesc _town_directory_desc( - WDP_AUTO, 208, 202, +static WindowDesc _town_directory_desc( + WDP_AUTO, "list_towns", 208, 202, WC_TOWN_DIRECTORY, WC_NONE, 0, _nested_town_directory_widgets, lengthof(_nested_town_directory_widgets) @@ -902,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(); } @@ -989,13 +1047,14 @@ struct FoundTownWindow : Window { TownNameParams params; ///< Town name parameters public: - FoundTownWindow(const WindowDesc *desc, WindowNumber window_number) : + FoundTownWindow(WindowDesc *desc, WindowNumber window_number) : + Window(desc), town_size(TSZ_MEDIUM), town_layout(_settings_game.economy.town_layout), townname_editbox(MAX_LENGTH_TOWN_NAME_CHARS * MAX_CHAR_LENGTH, MAX_LENGTH_TOWN_NAME_CHARS), params(_settings_game.game_creation.town_name) { - this->InitNested(desc, window_number); + this->InitNested(window_number); this->querystrings[WID_TF_TOWN_NAME_EDITBOX] = &this->townname_editbox; this->RandomTownName(); this->UpdateButtons(true); @@ -1125,8 +1184,8 @@ struct FoundTownWindow : Window { } }; -static const WindowDesc _found_town_desc( - WDP_AUTO, 160, 162, +static WindowDesc _found_town_desc( + WDP_AUTO, "build_town", 160, 162, WC_FOUND_TOWN, WC_NONE, WDF_CONSTRUCTION, _nested_found_town_widgets, lengthof(_nested_found_town_widgets) diff --git a/src/town_map.h b/src/town_map.h index eb7ddb8d2..41505871d 100644 --- a/src/town_map.h +++ b/src/town_map.h @@ -175,7 +175,7 @@ static inline void SetHouseCompleted(TileIndex t, bool status) /** * Gets the building stage of a house * Since the stage is used for determining what sprite to use, - * if the house is complete (and that stage no longuer is available), + * if the house is complete (and that stage no longer is available), * fool the system by returning the TOWN_HOUSE_COMPLETE (3), * thus showing a beautiful complete house. * @param t the tile of the house to get the building stage of diff --git a/src/townname.cpp b/src/townname.cpp index 644a6030d..f3a4e5cbb 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; @@ -157,7 +171,7 @@ static inline uint32 SeedModChance(byte shift_by, int max, uint32 seed) * than SeedChance(), which is absolutely horrible in that. If * you do not believe me, try with i.e. the Czech town names, * compare the words (nicely visible on prefixes) generated by - * SeedChance() and SeedModChance(). Do not get dicouraged by the + * SeedChance() and SeedModChance(). Do not get discouraged by the * never-use-modulo myths, which hold true only for the linear * congruential generators (and Random() isn't such a generator). * --pasky @@ -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. } diff --git a/src/townname_func.h b/src/townname_func.h index 092556978..409993e42 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 8a4b12b8b..0177294d9 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 a497dd499..689679237 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; @@ -113,7 +152,7 @@ static inline Track RemoveFirstTrack(TrackBits *tracks) /** * Removes first Trackdir from TrackdirBits and returns it * - * This function searchs for the first bit in the TrackdirBits parameter, + * This function searches for the first bit in the TrackdirBits parameter, * remove this bit from the parameter and returns the fnound bit as * Trackdir value. It returns INVALID_TRACKDIR if the trackdirs is * TRACKDIR_BIT_NONE or INVALID_TRACKDIR_BIT. This is basically used in a @@ -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 valie 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]; } @@ -422,12 +442,14 @@ static inline DiagDirection TrackdirToExitdir(Trackdir trackdir) * direction which the DiagDirection is pointing. But this will be INVALID_TRACKDIR * if the DiagDirection is pointing 'away' the track. * - * @param track The track to applie an direction on - * @param diagdir The DiagDirection to applie on + * @param track The track to apply an direction on + * @param diagdir The DiagDirection to apply on * @return The resulting track direction or INVALID_TRACKDIR if not possible. */ 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]; } @@ -442,7 +464,7 @@ static inline Trackdir TrackExitdirToTrackdir(Track track, DiagDirection diagdir * you follow the DiagDirection and then turn by 45 deg left or right on the * next tile. The new direction on the new track will be the returning Trackdir * value. If the parameters makes no sense like the track TRACK_UPPER and the - * diraction DIAGDIR_NE (target track cannot be reached) this function returns + * direction DIAGDIR_NE (target track cannot be reached) this function returns * INVALID_TRACKDIR. * * @param track The target track @@ -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]; } @@ -524,7 +554,7 @@ static inline TrackdirBits DiagdirReachesTrackdirs(DiagDirection diagdir) * This will obviously include 90 degree turns, since no * information is available about the exact angle of entering * - * @param diagdir The joining irection + * @param diagdir The joining direction * @return The tracks which can be used * @see DiagdirReachesTrackdirs */ @@ -541,11 +571,12 @@ 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)]; } /* Note that there is no direct table for this function (there used to be), - * but it uses two simpeler tables to achieve the result */ + * but it uses two simpler tables to achieve the result */ /** * Maps a trackdir to all trackdirs that make 90 deg turns with it. @@ -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)); } @@ -609,7 +643,7 @@ static inline bool TracksOverlap(TrackBits bits) /** * Check if a given track is contained within or overlaps some other tracks. * - * @param tracks Tracks to be testet against + * @param tracks Tracks to be tested against * @param track The track to test * @return true if the track is already in the tracks or overlaps the tracks. */ @@ -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 fda6e3031..280d59ebd 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" @@ -37,10 +39,24 @@ enum VehicleRailFlags { enum TrainForceProceeding { TFP_NONE = 0, ///< Normal operation. TFP_STUCK = 1, ///< Proceed till next signal, but ignore being stuck till then. This includes force leaving depots. - TFP_SIGNAL = 2, ///< Ignore next signal, after the signal ignore being stucked. + TFP_SIGNAL = 2, ///< Ignore next signal, after the signal ignore being stuck. }; 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(); @@ -199,7 +215,7 @@ struct Train FINAL : public GroundVehicle { */ inline uint16 GetWeight() const { - uint16 weight = (CargoSpec::Get(this->cargo_type)->weight * this->cargo.Count() * FreightWagonMult(this->cargo_type)) / 16; + uint16 weight = (CargoSpec::Get(this->cargo_type)->weight * this->cargo.StoredCount() * FreightWagonMult(this->cargo_type)) / 16; /* Vehicle weight is not added for articulated parts. */ if (!this->IsArticulatedPart()) { diff --git a/src/train_cmd.cpp b/src/train_cmd.cpp index 2e1b43125..30ec1143d 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; @@ -200,7 +208,16 @@ void Train::ConsistChanged(bool same_length) } } - u->cargo_cap = e_u->DetermineCapacity(u); + uint16 new_cap = e_u->DetermineCapacity(u); + 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) */ @@ -219,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(); @@ -243,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); } } @@ -371,10 +391,11 @@ int Train::GetCurveSpeedLimit() const */ int Train::GetCurrentMaxSpeed() const { - if (_settings_game.vehicle.train_acceleration_model == AM_ORIGINAL) return min(this->gcache.cached_max_track_speed, this->current_order.max_speed); + int max_speed = _settings_game.vehicle.train_acceleration_model == AM_ORIGINAL ? + this->gcache.cached_max_track_speed : + this->tcache.cached_max_curve_speed; - int max_speed = this->tcache.cached_max_curve_speed; - if (IsRailStationTile(this->tile)) { + if (_settings_game.vehicle.train_acceleration_model == AM_REALISTIC && IsRailStationTile(this->tile)) { StationID sid = GetStationIndex(this->tile); if (this->current_order.ShouldStopAtStation(this, sid)) { int station_ahead; @@ -400,7 +421,7 @@ int Train::GetCurrentMaxSpeed() const } for (const Train *u = this; u != NULL; u = u->Next()) { - if (u->track == TRACK_BIT_DEPOT) { + if (_settings_game.vehicle.train_acceleration_model == AM_REALISTIC && u->track == TRACK_BIT_DEPOT) { max_speed = min(max_speed, 61); break; } @@ -411,14 +432,14 @@ 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); } /** Update acceleration of the train from the cached power and weight. */ void Train::UpdateAcceleration() { - assert(this->IsFrontEngine()); + assert(this->IsFrontEngine() || this->IsFreeWagon()); uint power = this->gcache.cached_power; uint weight = this->gcache.cached_weight; @@ -451,6 +472,7 @@ int Train::GetDisplayImageWidth(Point *offset) const 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,9 +496,10 @@ 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.Count() >= this->cargo_cap / 2U) sprite += _wagon_full_adder[spritenum]; + if (this->cargo.StoredCount() >= this->cargo_cap / 2U) sprite += _wagon_full_adder[spritenum]; return sprite; } @@ -605,6 +628,7 @@ static CommandCost CmdBuildRailWagon(TileIndex tile, DoCommandFlag flags, const v->cargo_type = e->GetDefaultCargoType(); v->cargo_cap = rvi->capacity; + v->refit_cap = 0; v->railtype = rvi->railtype; @@ -619,7 +643,7 @@ static CommandCost CmdBuildRailWagon(TileIndex tile, DoCommandFlag flags, const _new_vehicle_id = v->index; VehicleUpdatePosition(v); - v->First()->ConsistChanged(false); + v->First()->ConsistChanged(CCF_ARRANGE); UpdateTrainGroupID(v->First()); CheckConsistencyOfArticulatedVehicle(v); @@ -672,6 +696,7 @@ static void AddRearEngineToMultiheadedTrain(Train *v) u->cargo_type = v->cargo_type; u->cargo_subtype = v->cargo_subtype; u->cargo_cap = v->cargo_cap; + u->refit_cap = v->refit_cap; u->railtype = v->railtype; u->engine_type = v->engine_type; u->build_year = v->build_year; @@ -724,7 +749,9 @@ CommandCost CmdBuildRailVehicle(TileIndex tile, DoCommandFlag flags, const Engin v->spritenum = rvi->image_index; v->cargo_type = e->GetDefaultCargoType(); v->cargo_cap = rvi->capacity; + v->refit_cap = 0; v->last_station_visited = INVALID_STATION; + v->last_loading_station = INVALID_STATION; v->engine_type = e->index; v->gcache.first_engine = INVALID_ENGINE; // needs to be set before first callback @@ -736,13 +763,14 @@ CommandCost CmdBuildRailVehicle(TileIndex tile, DoCommandFlag flags, const Engin v->railtype = rvi->railtype; _new_vehicle_id = v->index; - v->service_interval = Company::Get(_current_company)->settings.vehicle.servint_trains; + v->SetServiceInterval(Company::Get(_current_company)->settings.vehicle.servint_trains); v->date_of_last_service = _date; v->build_year = _cur_year; v->cur_image = SPR_IMG_QUERY; v->random_bits = VehicleRandomBits(); if (e->flags & ENGINE_EXCLUSIVE_PREVIEW) SetBit(v->vehicle_flags, VF_BUILT_AS_PROTOTYPE); + v->SetServiceIntervalIsPercent(Company::Get(_current_company)->settings.vehicle.servint_ispercent); v->group_id = DEFAULT_GROUP; @@ -757,7 +785,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 @@ -1103,7 +1131,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. */ @@ -1209,8 +1237,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. */ @@ -1266,6 +1296,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 @@ -1295,6 +1326,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); @@ -1320,9 +1354,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); @@ -1373,9 +1404,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); } @@ -1807,7 +1835,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); @@ -1891,7 +1919,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); @@ -2754,7 +2782,8 @@ void Train::MarkDirty() { Train *v = this; do { - v->UpdateViewport(false, false); + v->colourmap = PAL_NONE; + v->UpdateViewport(true, false); } while ((v = v->Next()) != NULL); /* need to update acceleration and cached values since the goods on the train changed. */ @@ -2774,7 +2803,7 @@ int Train::UpdateSpeed() switch (_settings_game.vehicle.train_acceleration_model) { default: NOT_REACHED(); case AM_ORIGINAL: - return this->DoUpdateSpeed(this->acceleration * (this->GetAccelerationStatus() == AS_BRAKE ? -4 : 2), 0, min(this->gcache.cached_max_track_speed, this->current_order.max_speed)); + return this->DoUpdateSpeed(this->acceleration * (this->GetAccelerationStatus() == AS_BRAKE ? -4 : 2), 0, this->GetCurrentMaxSpeed()); case AM_REALISTIC: return this->DoUpdateSpeed(this->GetAcceleration(), this->GetAccelerationStatus() == AS_BRAKE ? 0 : 2, this->GetCurrentMaxSpeed()); @@ -2810,6 +2839,7 @@ static void TrainEnterStation(Train *v, StationID station) v->BeginLoading(); + TriggerStationRandomisation(st, v->tile, SRT_TRAIN_ARRIVES); TriggerStationAnimation(st, v->tile, SAT_TRAIN_ARRIVES); } @@ -3136,8 +3166,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; @@ -3184,7 +3215,7 @@ bool TrainController(Train *v, Vehicle *nomove, bool reverse) } goto reverse_train_direction; } else { - TryReserveRailTrack(gp.new_tile, TrackBitsToTrack(chosen_track)); + TryReserveRailTrack(gp.new_tile, TrackBitsToTrack(chosen_track), false); } } else { /* The wagon is active, simply follow the prev vehicle. */ @@ -3251,7 +3282,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; @@ -3277,7 +3308,7 @@ bool TrainController(Train *v, Vehicle *nomove, bool reverse) /* If we are approaching a crossing that is reserved, play the sound now. */ TileIndex crossing = TrainApproachingCrossingTile(v); - if (crossing != INVALID_TILE && HasCrossingReservation(crossing) && _settings_client.sound.new_year) SndPlayTileFx(SND_0E_LEVEL_CROSSING, crossing); + if (crossing != INVALID_TILE && HasCrossingReservation(crossing) && _settings_client.sound.ambient) SndPlayTileFx(SND_0E_LEVEL_CROSSING, crossing); /* Always try to extend the reservation when entering a tile. */ CheckNextTrainTile(v); @@ -3417,12 +3448,13 @@ 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) { SetWindowDirty(WC_VEHICLE_DEPOT, first->tile); } + v->last_station_visited = first->last_station_visited; // for PreDestructor } /* 'v' shouldn't be accessed after it has been deleted */ @@ -3893,7 +3925,7 @@ bool Train::Tick() } /** - * Check whether a train needs serivce, and if so, find a depot or service it. + * Check whether a train needs service, and if so, find a depot or service it. * @return v %Train to check. */ static void CheckIfTrainNeedsService(Train *v) diff --git a/src/train_gui.cpp b/src/train_gui.cpp index 7888b0d65..a89ade3cf 100644 --- a/src/train_gui.cpp +++ b/src/train_gui.cpp @@ -18,6 +18,8 @@ #include "table/strings.h" +#include "safeguards.h" + /** * Callback for building wagons. * @param result The result of the command. @@ -33,8 +35,7 @@ void CcBuildWagon(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p const Vehicle *found = NULL; const Train *t; FOR_ALL_TRAINS(t) { - if (t->IsFrontEngine() && t->tile == tile && - t->track == TRACK_BIT_DEPOT) { + if (t->IsFrontEngine() && t->tile == tile && t->IsStoppedInDepot()) { if (found != NULL) return; // must be exactly one. found = t; } @@ -163,7 +164,7 @@ struct CargoSummaryItem { uint amount; ///< Amount that is carried StationID source; ///< One of the source stations - /** Used by CargoSummary::Find() and similiar functions */ + /** Used by CargoSummary::Find() and similar functions */ inline bool operator != (const CargoSummaryItem &other) const { return this->cargo != other.cargo || this->subtype != other.subtype; @@ -216,12 +217,12 @@ static void TrainDetailsInfoTab(const Vehicle *v, int left, int right, int y) if (RailVehInfo(v->engine_type)->railveh_type == RAILVEH_WAGON) { SetDParam(0, v->engine_type); SetDParam(1, v->value); - DrawString(left, right, y, STR_VEHICLE_DETAILS_TRAIN_WAGON_VALUE, TC_FROMSTRING, SA_LEFT | SA_STRIP); + DrawString(left, right, y, STR_VEHICLE_DETAILS_TRAIN_WAGON_VALUE); } else { SetDParam(0, v->engine_type); SetDParam(1, v->build_year); SetDParam(2, v->value); - DrawString(left, right, y, STR_VEHICLE_DETAILS_TRAIN_ENGINE_BUILT_AND_VALUE, TC_FROMSTRING, SA_LEFT | SA_STRIP); + DrawString(left, right, y, STR_VEHICLE_DETAILS_TRAIN_ENGINE_BUILT_AND_VALUE); } } @@ -251,7 +252,7 @@ static void TrainDetailsCapacityTab(const CargoSummaryItem *item, int left, int } /** - * Collects the cargo transportet + * Collects the cargo transported * @param v Vehicle to process * @param summary Space for the result */ @@ -277,7 +278,7 @@ static void GetCargoSummaryOfArticulatedVehicle(const Train *v, CargoSummary *su } item->capacity += v->cargo_cap; - item->amount += v->cargo.Count(); + item->amount += v->cargo.StoredCount(); if (item->source == INVALID_STATION) item->source = v->cargo.Source(); } while ((v = v->Next()) != NULL && v->IsArticulatedPart()); } @@ -312,11 +313,11 @@ int GetTrainDetailsWndVScroll(VehicleID veh_id, TrainDetailsWindowTabs det_tab) CargoArray act_cargo; CargoArray max_cargo; for (const Vehicle *v = Vehicle::Get(veh_id); v != NULL; v = v->Next()) { - act_cargo[v->cargo_type] += v->cargo.Count(); + act_cargo[v->cargo_type] += v->cargo.StoredCount(); max_cargo[v->cargo_type] += v->cargo_cap; } - /* Set scroll-amount seperately from counting, as to not compute num double + /* Set scroll-amount separately from counting, as to not compute num double * for more carriages of the same type */ for (CargoID i = 0; i < NUM_CARGO; i++) { @@ -425,7 +426,7 @@ void DrawTrainDetails(const Train *v, int left, int right, int y, int vscroll_po Money feeder_share = 0; for (const Vehicle *u = v; u != NULL; u = u->Next()) { - act_cargo[u->cargo_type] += u->cargo.Count(); + act_cargo[u->cargo_type] += u->cargo.StoredCount(); max_cargo[u->cargo_type] += u->cargo_cap; feeder_share += u->cargo.FeederShare(); } diff --git a/src/transparency_gui.cpp b/src/transparency_gui.cpp index f47bbc591..4bad2b056 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. @@ -28,9 +30,9 @@ byte _display_opt; ///< What do we want to draw/do? class TransparenciesWindow : public Window { public: - TransparenciesWindow(const WindowDesc *desc, int window_number) : Window() + TransparenciesWindow(WindowDesc *desc, int window_number) : Window(desc) { - this->InitNested(desc, window_number); + this->InitNested(window_number); } virtual void OnPaint() @@ -102,7 +104,7 @@ class TransparenciesWindow : public Window } } - virtual Point OnInitialPosition(const WindowDesc *desc, int16 sm_width, int16 sm_height, int window_number) + virtual Point OnInitialPosition(int16 sm_width, int16 sm_height, int window_number) { Point pt = GetToolbarAlignedWindowPosition(sm_width); pt.y += 2 * (sm_height - this->GetWidget(WID_TT_BUTTONS)->current_y); @@ -141,13 +143,13 @@ static const NWidgetPart _nested_transparency_widgets[] = { NWidget(WWT_IMGBTN, COLOUR_DARK_GREEN, WID_TT_LOADING), SetMinimalSize(22, 22), SetFill(0, 1), SetDataTip(SPR_IMG_TRAINLIST, STR_TRANSPARENT_LOADING_TOOLTIP), NWidget(WWT_PANEL, COLOUR_DARK_GREEN), SetFill(1, 1), EndContainer(), EndContainer(), - /* Panel with 'inivisibility' buttons. */ + /* Panel with 'invisibility' buttons. */ NWidget(WWT_PANEL, COLOUR_DARK_GREEN, WID_TT_BUTTONS), SetMinimalSize(219, 13), SetDataTip(0x0, STR_TRANSPARENT_INVISIBLE_TOOLTIP), EndContainer(), }; -static const WindowDesc _transparency_desc( - WDP_MANUAL, 0, 0, +static WindowDesc _transparency_desc( + WDP_MANUAL, "toolbar_transparency", 0, 0, WC_TRANSPARENCY_TOOLBAR, WC_NONE, 0, _nested_transparency_widgets, lengthof(_nested_transparency_widgets) diff --git a/src/tree_cmd.cpp b/src/tree_cmd.cpp index c30609e78..4fcda82d8 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 3a69da124..f21eeaef2 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 */ @@ -52,9 +54,9 @@ class BuildTreesWindow : public Window TreeType tree_to_plant; ///< Tree number to plant, \c TREE_INVALID for a random tree. public: - BuildTreesWindow(const WindowDesc *desc, WindowNumber window_number) : Window() + BuildTreesWindow(WindowDesc *desc, WindowNumber window_number) : Window(desc) { - this->InitNested(desc, window_number); + this->InitNested(window_number); ResetObjectToPlace(); } @@ -100,11 +102,6 @@ class BuildTreesWindow : public Window } } - 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; @@ -238,8 +235,8 @@ static const NWidgetPart _nested_build_trees_widgets[] = { EndContainer(), }; -static const WindowDesc _build_trees_desc( - WDP_AUTO, 0, 0, +static WindowDesc _build_trees_desc( + WDP_AUTO, "build_tree", 0, 0, WC_BUILD_TREES, WC_NONE, WDF_CONSTRUCTION, _nested_build_trees_widgets, lengthof(_nested_build_trees_widgets) diff --git a/src/tree_map.h b/src/tree_map.h index 53e6bc427..105eb8dca 100644 --- a/src/tree_map.h +++ b/src/tree_map.h @@ -27,7 +27,7 @@ enum TreeType { TREE_TEMPERATE = 0x00, ///< temperate tree TREE_SUB_ARCTIC = 0x0C, ///< tree on a sub_arctic landscape TREE_RAINFOREST = 0x14, ///< tree on the 'green part' on a sub-tropical map - TREE_CACTUS = 0x1B, ///< a catus for the 'desert part' on a sub-tropical map + TREE_CACTUS = 0x1B, ///< a cactus for the 'desert part' on a sub-tropical map TREE_SUB_TROPICAL = 0x1C, ///< tree on a sub-tropical map, non-rainforest, non-desert TREE_TOYLAND = 0x20, ///< tree on a toyland map TREE_INVALID = 0xFF, ///< An invalid tree @@ -104,7 +104,7 @@ static inline TreeGround GetTreeGround(TileIndex t) * tile. So this function returns the density of a tile for sub arctic * and sub tropical games. This means for sub arctic the type of snowline * (0 to 3 for all 4 types of snowtiles) and for sub tropical the value - * 3 for a desert (and 0 for non-desert). The functionname is not read as + * 3 for a desert (and 0 for non-desert). The function name is not read as * "get the tree density of a tile" but "get the density of a tile which got trees". * * @param t The tile to get the 'density' diff --git a/src/tunnel_map.cpp b/src/tunnel_map.cpp index 7639fa949..4e6d5a7e1 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/tunnelbridge_cmd.cpp b/src/tunnelbridge_cmd.cpp index 3a53bb8c2..9bb96538d 100644 --- a/src/tunnelbridge_cmd.cpp +++ b/src/tunnelbridge_cmd.cpp @@ -10,7 +10,7 @@ /** * @file tunnelbridge_cmd.cpp * This file deals with tunnels and bridges (non-gui stuff) - * @todo seperate this file into two + * @todo separate this file into two */ #include "stdafx.h" @@ -44,6 +44,8 @@ #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. @@ -61,7 +63,7 @@ void ResetBridges() } } - /* Then, wipe out current bidges */ + /* Then, wipe out current bridges */ memset(&_bridge, 0, sizeof(_bridge)); /* And finally, reinstall default data */ memcpy(&_bridge, &_orig_bridge, sizeof(_orig_bridge)); @@ -91,8 +93,8 @@ int CalcBridgeLenCostFactor(int length) /** * Get the foundation for a bridge. * @param tileh The slope to build the bridge on. - * @param axis The axis of the bridge entrace. - * @return The foundatiton required. + * @param axis The axis of the bridge entrance. + * @return The foundation required. */ Foundation GetBridgeFoundation(Slope tileh, Axis axis) { @@ -295,6 +297,7 @@ CommandCost CmdBuildBridge(TileIndex end_tile, DoCommandFlag flags, uint32 p1, u CommandCost cost(EXPENSES_CONSTRUCTION); Owner owner; + bool is_new_owner; if (IsBridgeTile(tile_start) && IsBridgeTile(tile_end) && GetOtherBridgeEnd(tile_start) == tile_end && GetTunnelBridgeTransportType(tile_start) == transport_type) { @@ -305,9 +308,10 @@ CommandCost CmdBuildBridge(TileIndex end_tile, DoCommandFlag flags, uint32 p1, u return_cmd_error(STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST); } - /* Do not replace town bridges with lower speed bridges. */ + /* Do not replace town bridges with lower speed bridges, unless in scenario editor. */ if (!(flags & DC_QUERY_COST) && IsTileOwner(tile_start, OWNER_TOWN) && - GetBridgeSpec(bridge_type)->speed < GetBridgeSpec(GetBridgeType(tile_start))->speed) { + GetBridgeSpec(bridge_type)->speed < GetBridgeSpec(GetBridgeType(tile_start))->speed && + _game_mode != GM_EDITOR) { Town *t = ClosestTownFromTile(tile_start, UINT_MAX); if (t == NULL) { @@ -324,13 +328,17 @@ CommandCost CmdBuildBridge(TileIndex end_tile, DoCommandFlag flags, uint32 p1, u } /* Do not allow replacing another company's bridges. */ - if (!IsTileOwner(tile_start, company) && !IsTileOwner(tile_start, OWNER_TOWN)) { + if (!IsTileOwner(tile_start, company) && !IsTileOwner(tile_start, OWNER_TOWN) && !IsTileOwner(tile_start, OWNER_NONE)) { return_cmd_error(STR_ERROR_AREA_IS_OWNED_BY_ANOTHER); } cost.AddCost((bridge_len + 1) * _price[PR_CLEAR_BRIDGE]); // The cost of clearing the current bridge. owner = GetTileOwner(tile_start); + /* If bridge belonged to bankrupt company, it has a new owner now */ + is_new_owner = (owner == OWNER_NONE); + if (is_new_owner) owner = company; + switch (transport_type) { case TRANSPORT_RAIL: /* Keep the reservation, the path stays valid. */ @@ -431,12 +439,13 @@ CommandCost CmdBuildBridge(TileIndex end_tile, DoCommandFlag flags, uint32 p1, u if (flags & DC_EXEC) { /* We do this here because when replacing a bridge with another * type calling SetBridgeMiddle isn't needed. After all, the - * tile alread has the has_bridge_above bits set. */ + * tile already has the has_bridge_above bits set. */ SetBridgeMiddle(tile, direction); } } owner = company; + is_new_owner = true; } /* do the drill? */ @@ -446,29 +455,40 @@ CommandCost CmdBuildBridge(TileIndex end_tile, DoCommandFlag flags, uint32 p1, u Company *c = Company::GetIfValid(owner); switch (transport_type) { case TRANSPORT_RAIL: - /* Add to company infrastructure count if building a new bridge. */ - if (!IsBridgeTile(tile_start) && c != NULL) c->infrastructure.rail[railtype] += (bridge_len + 2) * TUNNELBRIDGE_TRACKBIT_FACTOR; + /* Add to company infrastructure count if required. */ + if (is_new_owner && c != NULL) c->infrastructure.rail[railtype] += (bridge_len + 2) * TUNNELBRIDGE_TRACKBIT_FACTOR; MakeRailBridgeRamp(tile_start, owner, bridge_type, dir, railtype); MakeRailBridgeRamp(tile_end, owner, bridge_type, ReverseDiagDir(dir), railtype); SetTunnelBridgeReservation(tile_start, pbs_reservation); SetTunnelBridgeReservation(tile_end, pbs_reservation); break; - case TRANSPORT_ROAD: + case TRANSPORT_ROAD: { + RoadTypes prev_roadtypes = IsBridgeTile(tile_start) ? GetRoadTypes(tile_start) : ROADTYPES_NONE; + if (is_new_owner) { + /* Also give unowned present roadtypes to new owner */ + if (HasBit(prev_roadtypes, ROADTYPE_ROAD) && GetRoadOwner(tile_start, ROADTYPE_ROAD) == OWNER_NONE) ClrBit(prev_roadtypes, ROADTYPE_ROAD); + if (HasBit(prev_roadtypes, ROADTYPE_TRAM) && GetRoadOwner(tile_start, ROADTYPE_TRAM) == OWNER_NONE) ClrBit(prev_roadtypes, ROADTYPE_TRAM); + } if (c != NULL) { /* Add all new road types to the company infrastructure counter. */ RoadType new_rt; - FOR_EACH_SET_ROADTYPE(new_rt, roadtypes ^ (IsBridgeTile(tile_start) ? GetRoadTypes(tile_start) : ROADTYPES_NONE)) { + 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; } } - MakeRoadBridgeRamp(tile_start, owner, bridge_type, dir, roadtypes); - MakeRoadBridgeRamp(tile_end, owner, bridge_type, ReverseDiagDir(dir), roadtypes); + 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); + 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; + } case TRANSPORT_WATER: - if (!IsBridgeTile(tile_start) && c != NULL) c->infrastructure.water += (bridge_len + 2) * TUNNELBRIDGE_TRACKBIT_FACTOR; + if (is_new_owner && c != NULL) c->infrastructure.water += (bridge_len + 2) * TUNNELBRIDGE_TRACKBIT_FACTOR; MakeAqueductBridgeRamp(tile_start, owner, dir); MakeAqueductBridgeRamp(tile_end, owner, ReverseDiagDir(dir)); break; @@ -591,7 +611,7 @@ CommandCost CmdBuildTunnel(TileIndex start_tile, DoCommandFlag flags, uint32 p1, TileIndex end_tile = start_tile; - /* Tile shift coeficient. Will decrease for very long tunnels to avoid exponential growth of price*/ + /* Tile shift coefficient. Will decrease for very long tunnels to avoid exponential growth of price*/ int tiles_coef = 3; /* Number of tiles from start of tunnel */ int tiles = 0; @@ -662,7 +682,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) { @@ -711,7 +731,8 @@ static inline CommandCost CheckAllowRemoveTunnelBridge(TileIndex tile) if (HasBit(rts, ROADTYPE_TRAM)) tram_owner = GetRoadOwner(tile, ROADTYPE_TRAM); /* We can remove unowned road and if the town allows it */ - if (road_owner == OWNER_TOWN && !(_settings_game.construction.extra_dynamite || _cheats.magic_bulldozer.value)) { + if (road_owner == OWNER_TOWN && _current_company != OWNER_TOWN && !(_settings_game.construction.extra_dynamite || _cheats.magic_bulldozer.value)) { + /* Town does not allow */ return CheckTileOwnership(tile); } if (road_owner == OWNER_NONE || road_owner == OWNER_TOWN) road_owner = _current_company; @@ -1076,7 +1097,7 @@ static void DrawBridgeTramBits(int x, int y, int z, int offset, bool overlay, bo /** * Draws a tunnel of bridge tile. - * For tunnels, this is rather simple, as you only needa draw the entrance. + * For tunnels, this is rather simple, as you only need to draw the entrance. * Bridges are a bit more complex. base_offset is where the sprite selection comes into play * and it works a bit like a bitmask.

      For bridge heads: * @param ti TileInfo of the structure to draw @@ -1204,10 +1225,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; @@ -1545,6 +1565,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; } } @@ -1555,7 +1577,7 @@ static void TileLoop_TunnelBridge(TileIndex tile) switch (_settings_game.game_creation.landscape) { case LT_ARCTIC: { /* As long as we do not have a snow density, we want to use the density - * from the entry endge. For tunnels this is the lowest point for bridges the highest point. + * from the entry edge. For tunnels this is the lowest point for bridges the highest point. * (Independent of foundations) */ int z = IsBridge(tile) ? GetTileMaxZ(tile) : GetTileZ(tile); if (snow_or_desert != (z > GetSnowLine())) { diff --git a/src/tunnelbridge_map.h b/src/tunnelbridge_map.h index ff3a36aac..0f7f17b3a 100644 --- a/src/tunnelbridge_map.h +++ b/src/tunnelbridge_map.h @@ -23,7 +23,7 @@ * Bridge: Get the direction pointing onto the bridge * @param t The tile to analyze * @pre IsTileType(t, MP_TUNNELBRIDGE) - * @return the above mentionned direction + * @return the above mentioned direction */ static inline DiagDirection GetTunnelBridgeDirection(TileIndex t) { diff --git a/src/vehicle.cpp b/src/vehicle.cpp index 27b5e4b30..75c040879 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; @@ -87,14 +91,24 @@ bool Vehicle::NeedsAutorenewing(const Company *c, bool use_renew_setting) const return true; } +/** + * Service a vehicle and all subsequent vehicles in the consist + * + * @param *v The vehicle or vehicle chain being serviced + */ void VehicleServiceInDepot(Vehicle *v) { - v->date_of_last_service = _date; - v->breakdowns_since_last_service = 0; - v->reliability = v->GetEngine()->reliability; - /* Prevent vehicles from breaking down directly after exiting the depot. */ - v->breakdown_chance /= 4; + assert(v != NULL); SetWindowDirty(WC_VEHICLE_DETAILS, v->index); // ensure that last service date and reliability are updated + + do { + v->date_of_last_service = _date; + v->breakdowns_since_last_service = 0; + v->reliability = v->GetEngine()->reliability; + /* Prevent vehicles from breaking down directly after exiting the depot. */ + v->breakdown_chance /= 4; + v = v->Next(); + } while (v != NULL && v->HasEngineType()); } /** @@ -111,9 +125,9 @@ bool Vehicle::NeedsServicing() const /* Are we ready for the next service cycle? */ const Company *c = Company::Get(this->owner); - if (c->settings.vehicle.servint_ispercent ? - (this->reliability >= this->GetEngine()->reliability * (100 - this->service_interval) / 100) : - (this->date_of_last_service + this->service_interval >= _date)) { + if (this->ServiceIntervalIsPercent() ? + (this->reliability >= this->GetEngine()->reliability * (100 - this->GetServiceInterval()) / 100) : + (this->date_of_last_service + this->GetServiceInterval() >= _date)) { return false; } @@ -167,9 +181,9 @@ bool Vehicle::NeedsServicing() const } /** - * Checks if the current order should be interupted for a service-in-depot-order. + * Checks if the current order should be interrupted for a service-in-depot order. * @see NeedsServicing() - * @return true if the current order should be interupted. + * @return true if the current order should be interrupted. */ bool Vehicle::NeedsAutomaticServicing() const { @@ -189,7 +203,8 @@ uint Vehicle::Crash(bool flooded) if (this->IsPrimaryVehicle()) this->vehstatus |= VS_STOPPED; /* crash all wagons, and count passengers */ for (Vehicle *v = this; v != NULL; v = v->Next()) { - if (IsCargoInClass(v->cargo_type, CC_PASSENGERS)) pass += v->cargo.Count(); + /* 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); } @@ -206,6 +221,17 @@ uint Vehicle::Crash(bool flooded) return RandomRange(pass + 1); // Randomise deceased passengers. } +/** Marks the separation of this vehicle's order list invalid. */ +void Vehicle::MarkSeparationInvalid() +{ + if (this->orders.list != NULL) this->orders.list->MarkSeparationInvalid(); +} + +/** Sets new separation settings for this vehicle's shared orders. */ +void Vehicle::SetSepSettings(TTSepMode Mode, uint Parameter) +{ + if (this->orders.list != NULL) this->orders.list->SetSepSettings(Mode, Parameter); +} /** * Displays a "NewGrf Bug" error message for a engine, and pauses the game if not networking. @@ -269,6 +295,8 @@ Vehicle::Vehicle(VehicleType type) this->first = this; this->colourmap = PAL_NONE; this->cargo_age_counter = 1; + this->last_station_visited = INVALID_STATION; + this->last_loading_station = INVALID_STATION; } /** @@ -720,10 +748,11 @@ void Vehicle::PreDestructor() if (CleaningPool()) return; if (Station::IsValidID(this->last_station_visited)) { - Station::Get(this->last_station_visited)->loading_vehicles.remove(this); + Station *st = Station::Get(this->last_station_visited); + st->loading_vehicles.remove(this); HideFillingPercent(&this->fill_percent_te_id); - + this->CancelReservation(INVALID_STATION, st); delete this->cargo_payment; } @@ -769,7 +798,7 @@ void Vehicle::PreDestructor() } InvalidateWindowClassesData(GetWindowClassForVehicleType(this->type), 0); - this->cargo.Truncate(0); + this->cargo.Truncate(); DeleteVehicleOrders(this); DeleteDepotHighlightOfVehicle(this); @@ -836,8 +865,13 @@ static void RunVehicleDayProc() if ((v->day_counter & 0x1F) == 0 && v->HasEngineType()) { uint16 callback = GetVehicleCallback(CBID_VEHICLE_32DAY_CALLBACK, 0, 0, v->engine_type, v); if (callback != CALLBACK_FAILED) { - if (HasBit(callback, 0)) TriggerVehicle(v, VEHICLE_TRIGGER_CALLBACK_32); // Trigger vehicle trigger 10 - if (HasBit(callback, 1)) v->colourmap = PAL_NONE; + if (HasBit(callback, 0)) { + TriggerVehicle(v, VEHICLE_TRIGGER_CALLBACK_32); // Trigger vehicle trigger 10 + } + + /* After a vehicle trigger, the graphics and properties of the vehicle could change. + * Note: MarkDirty also invalidates the palette, which is the meaning of bit 1. So, nothing special there. */ + if (callback != 0) v->First()->MarkDirty(); if (callback & ~3) ErrorUnknownCallbackResult(v->GetGRFID(), CBID_VEHICLE_32DAY_CALLBACK, callback); } @@ -873,7 +907,9 @@ void CallVehicleTicks() case VEH_TRAIN: case VEH_ROAD: case VEH_AIRCRAFT: - case VEH_SHIP: + case VEH_SHIP: { + Vehicle *front = v->First(); + if (v->vcache.cached_cargo_age_period != 0) { v->cargo_age_counter = min(v->cargo_age_counter, v->vcache.cached_cargo_age_period); if (--v->cargo_age_counter == 0) { @@ -882,16 +918,46 @@ void CallVehicleTicks() } } - if (v->type == VEH_TRAIN && Train::From(v)->IsWagon()) continue; - if (v->type == VEH_AIRCRAFT && v->subtype != AIR_HELICOPTER) continue; - if (v->type == VEH_ROAD && !RoadVehicle::From(v)->IsFrontEngine()) continue; + /* Do not play any sound when crashed */ + if (front->vehstatus & VS_CRASHED) continue; + + /* Do not play any sound when in depot or tunnel */ + if (v->vehstatus & VS_HIDDEN) continue; - v->motion_counter += v->cur_speed; + /* Do not play any sound when stopped */ + if ((front->vehstatus & VS_STOPPED) && (front->type != VEH_TRAIN || front->cur_speed == 0)) continue; + + /* Check vehicle type specifics */ + switch (v->type) { + case VEH_TRAIN: + if (Train::From(v)->IsWagon()) continue; + break; + + case VEH_ROAD: + if (!RoadVehicle::From(v)->IsFrontEngine()) continue; + break; + + case VEH_AIRCRAFT: + if (!Aircraft::From(v)->IsNormalAircraft()) continue; + break; + + default: + break; + } + + v->motion_counter += front->cur_speed; /* Play a running sound if the motion counter passes 256 (Do we not skip sounds?) */ - if (GB(v->motion_counter, 0, 8) < v->cur_speed) PlayVehicleSound(v, VSE_RUNNING); + if (GB(v->motion_counter, 0, 8) < front->cur_speed) PlayVehicleSound(v, VSE_RUNNING); - /* Play an alterate running sound every 16 ticks */ - if (GB(v->tick_counter, 0, 4) == 0) PlayVehicleSound(v, v->cur_speed > 0 ? VSE_RUNNING_16 : VSE_STOPPED_16); + /* Play an alternating running sound every 16 ticks */ + if (GB(v->tick_counter, 0, 4) == 0) { + /* Play running sound when speed > 0 and not braking */ + bool running = (front->cur_speed > 0) && !(front->vehstatus & (VS_STOPPED | VS_TRAIN_SLOWING)); + PlayVehicleSound(v, running ? VSE_RUNNING_16 : VSE_STOPPED_16); + } + + break; + } } } @@ -1251,12 +1317,12 @@ uint8 CalcPercentVehicleFilled(const Vehicle *front, StringID *colour) /* Count up max and used */ for (const Vehicle *v = front; v != NULL; v = v->Next()) { - count += v->cargo.Count(); + count += v->cargo.StoredCount(); max += v->cargo_cap; if (v->cargo_cap != 0 && colour != NULL) { unloading += HasBit(v->vehicle_flags, VF_CARGO_UNLOADING) ? 1 : 0; loading |= !order_no_load && - (order_full_load || HasBit(st->goods[v->cargo_type].acceptance_pickup, GoodsEntry::GES_PICKUP)) && + (order_full_load || st->goods[v->cargo_type].HasRating()) && !HasBit(v->vehicle_flags, VF_LOADING_FINISHED) && !HasBit(v->vehicle_flags, VF_STOP_LOADING); cars++; } @@ -1302,7 +1368,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; } @@ -1340,27 +1406,27 @@ void VehicleEnterDepot(Vehicle *v) VehicleServiceInDepot(v); + /* After a vehicle trigger, the graphics and properties of the vehicle could change. */ TriggerVehicle(v, VEHICLE_TRIGGER_DEPOT); + v->MarkDirty(); if (v->current_order.IsType(OT_GOTO_DEPOT)) { 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() | t.GetRefitSubtype() << 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()) { @@ -1378,21 +1444,27 @@ 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 + * before the stop to the station after the stop can't be predicted + * we shouldn't construct it when the vehicle visits the next stop. */ + v->last_loading_station = INVALID_STATION; if (v->owner == _local_company) { SetDParam(0, v->index); AddVehicleAdviceNewsItem(STR_NEWS_TRAIN_IS_WAITING + v->type, v->index); } AI::NewEvent(v->owner, new ScriptEventVehicleWaitingInDepot(v->index)); + v->MarkSeparationInvalid(); } + v->current_order.MakeDummy(); } } @@ -1769,7 +1841,7 @@ static PaletteID GetEngineColourMap(EngineID engine_type, CompanyID company, Eng uint16 callback = GetVehicleCallback(CBID_VEHICLE_COLOUR_MAPPING, 0, 0, engine_type, v); /* Failure means "use the default two-colour" */ if (callback != CALLBACK_FAILED) { - assert_compile(PAL_NONE == 0); // Returning 0x4000 (resp. 0xC000) conincidences with default value (PAL_NONE) + assert_compile(PAL_NONE == 0); // Returning 0x4000 (resp. 0xC000) coincidences with default value (PAL_NONE) map = GB(callback, 0, 14); /* If bit 14 is set, then the company colours are applied to the * map else it's returned as-is. */ @@ -1844,9 +1916,9 @@ void Vehicle::DeleteUnreachedImplicitOrders() if (this->cur_implicit_order_index == this->cur_real_order_index) break; if (order->IsType(OT_IMPLICIT)) { - /* Delete order effectively deletes order, so get the next before deleting it. */ - order = order->next; DeleteOrder(this, this->cur_implicit_order_index); + /* DeleteOrder does various magic with order_indices, so resync 'order' with 'cur_implicit_order_index' */ + order = this->GetOrder(this->cur_implicit_order_index); } else { /* Skip non-implicit orders, e.g. service-orders */ order = order->next; @@ -1886,13 +1958,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 */ @@ -1902,18 +1973,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) { @@ -1926,9 +2007,9 @@ void Vehicle::BeginLoading() const Order *order = this->GetOrder(this->cur_implicit_order_index); while (!order->IsType(OT_IMPLICIT) || order->GetDestination() != this->last_station_visited) { if (order->IsType(OT_IMPLICIT)) { - /* Delete order effectively deletes order, so get the next before deleting it. */ - order = order->next; DeleteOrder(this, this->cur_implicit_order_index); + /* DeleteOrder does various magic with order_indices, so resync 'order' with 'cur_implicit_order_index' */ + order = this->GetOrder(this->cur_implicit_order_index); } else { /* Skip non-implicit orders, e.g. service-orders */ order = order->next; @@ -1943,7 +2024,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); @@ -1960,7 +2043,21 @@ void Vehicle::BeginLoading() this->current_order.MakeLoading(false); } - Station::Get(this->last_station_visited)->loading_vehicles.push_back(this); + if (this->last_loading_station != INVALID_STATION && + this->last_loading_station != this->last_station_visited && + ((this->current_order.GetLoadType() & OLFB_NO_LOAD) == 0 || + (this->current_order.GetUnloadType() & OUFB_NO_UNLOAD) == 0)) { + IncreaseStats(Station::Get(this->last_loading_station), this, this->last_station_visited); + } + /* If all requirements for separation are met, we can initialize it. */ + if (_settings_game.order.automatic_timetable_separation + && this->IsOrderListShared() + && this->orders.list->IsCompleteTimetable() + && (this->cur_real_order_index == 0)) { + + if (!this->orders.list->IsSeparationValid()) this->orders.list->InitializeSeparation(); + this->lateness_counter = this->orders.list->SeparateVehicle(); + } PrepareUnload(this); @@ -1974,6 +2071,24 @@ void Vehicle::BeginLoading() this->MarkDirty(); } +/** + * Return all reserved cargo packets to the station and reset all packets + * staged for transfer. + * @param st the station where the reserved packets should go. + */ +void Vehicle::CancelReservation(StationID next, Station *st) +{ + for (Vehicle *v = this; v != NULL; v = v->next) { + VehicleCargoList &cargo = v->cargo; + if (cargo.ActionCount(VehicleCargoList::MTA_LOAD) > 0) { + DEBUG(misc, 1, "cancelling cargo reservation"); + cargo.Return(UINT_MAX, &st->goods[v->cargo_type].cargo, next); + cargo.SetTransferLoadPlace(st->xy); + } + cargo.KeepAll(); + } +} + /** * Perform all actions when leaving a station. * @pre this->current_order.IsType(OT_LOADING) @@ -1987,20 +2102,51 @@ void Vehicle::LeaveStation() /* Only update the timetable if the vehicle was supposed to stop here. */ if (this->current_order.GetNonStopType() != ONSF_STOP_EVERYWHERE) UpdateVehicleTimetable(this, false); + if ((this->current_order.GetLoadType() & OLFB_NO_LOAD) == 0 || + (this->current_order.GetUnloadType() & OUFB_NO_UNLOAD) == 0) { + if (this->current_order.CanLeaveWithCargo(this->last_loading_station != INVALID_STATION)) { + /* Refresh next hop stats to make sure we've done that at least once + * during the stop and that refit_cap == cargo_cap for each vehicle in + * the consist. */ + this->ResetRefitCaps(); + 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; + } else { + /* if the vehicle couldn't load and had to unload or transfer everything + * set the last loading station to invalid as it will leave empty. */ + this->last_loading_station = INVALID_STATION; + } + } + this->current_order.MakeLeaveStation(); Station *st = Station::Get(this->last_station_visited); + this->CancelReservation(INVALID_STATION, st); st->loading_vehicles.remove(this); HideFillingPercent(&this->fill_percent_te_id); if (this->type == VEH_TRAIN && !(this->vehstatus & VS_CRASHED)) { /* Trigger station animation (trains only) */ - if (IsTileType(this->tile, MP_STATION)) TriggerStationAnimation(st, this->tile, SAT_TRAIN_DEPARTS); + if (IsTileType(this->tile, MP_STATION)) { + TriggerStationRandomisation(st, this->tile, SRT_TRAIN_DEPARTS); + TriggerStationAnimation(st, this->tile, SAT_TRAIN_DEPARTS); + } SetBit(Train::From(this)->flags, VRF_LEAVING_STATION); } + + this->MarkDirty(); } +/** + * Reset all refit_cap in the consist to cargo_cap. + */ +void Vehicle::ResetRefitCaps() +{ + for (Vehicle *v = this; v != NULL; v = v->Next()) v->refit_cap = v->cargo_cap; +} /** * Handle the loading of the vehicle; when not it skips through dummy @@ -2011,7 +2157,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; @@ -2038,6 +2184,34 @@ void Vehicle::HandleLoading(bool mode) this->IncrementImplicitOrderIndex(); } +/** + * Get a map of cargoes and free capacities in the consist. + * @param capacities Map to be filled with cargoes and capacities. + */ +void Vehicle::GetConsistFreeCapacities(SmallMap &capacities) const +{ + for (const Vehicle *v = this; v != NULL; v = v->Next()) { + if (v->cargo_cap == 0) continue; + SmallPair *pair = capacities.Find(v->cargo_type); + if (pair == capacities.End()) { + pair = capacities.Append(); + pair->first = v->cargo_type; + pair->second = v->cargo_cap - v->cargo.StoredCount(); + } else { + pair->second += v->cargo_cap - v->cargo.StoredCount(); + } + } +} + +uint Vehicle::GetConsistTotalCapacity() const +{ + uint result = 0; + for (const Vehicle *v = this; v != NULL; v = v->Next()) { + result += v->cargo_cap; + } + return result; +} + /** * Send this vehicle to the depot using the given command(s). * @param flags the command flags (like execute and such). @@ -2092,7 +2266,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); } @@ -2221,9 +2395,9 @@ void Vehicle::ShowVisualEffect() const } max_speed = min(max_speed, t->gcache.cached_max_track_speed); - max_speed = min(max_speed, this->current_order.max_speed); + max_speed = min(max_speed, this->current_order.GetMaxSpeed()); } - if (this->type == VEH_ROAD || this->type == VEH_SHIP) max_speed = min(max_speed, this->current_order.max_speed * 2); + if (this->type == VEH_ROAD || this->type == VEH_SHIP) max_speed = min(max_speed, this->current_order.GetMaxSpeed() * 2); const Vehicle *v = this; @@ -2303,7 +2477,7 @@ void Vehicle::ShowVisualEffect() const /* 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 - * reaching its max. speed, quarter by quarter of it, chance decreases untill the usuall 2,22% at train's top speed. + * reaching its max. speed, quarter by quarter of it, chance decreases until the usual 2,22% at train's top speed. * REGULATION: * - 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 && @@ -2372,6 +2546,7 @@ void Vehicle::AddToShared(Vehicle *shared_chain) if (this->next_shared != NULL) this->next_shared->previous_shared = this; shared_chain->orders.list->AddVehicle(this); + shared_chain->orders.list->MarkSeparationInvalid(); } /** @@ -2384,6 +2559,7 @@ void Vehicle::RemoveFromShared() bool were_first = (this->FirstShared() == this); VehicleListIdentifier vli(VL_SHARED_ORDERS, this->type, this->owner, this->FirstShared()->index); + this->orders.list->MarkSeparationInvalid(); this->orders.list->RemoveVehicle(this); if (!were_first) { diff --git a/src/vehicle_base.h b/src/vehicle_base.h index ab06695e2..25c81ca98 100644 --- a/src/vehicle_base.h +++ b/src/vehicle_base.h @@ -12,6 +12,7 @@ #ifndef VEHICLE_BASE_H #define VEHICLE_BASE_H +#include "core/smallmap_type.hpp" #include "track_type.h" #include "command_type.h" #include "order_base.h" @@ -22,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 { @@ -45,6 +48,8 @@ enum VehicleFlags { VF_AUTOFILL_PRES_WAIT_TIME, ///< Whether non-destructive auto-fill should preserve waiting times VF_STOP_LOADING, ///< Don't load anymore during the next load cycle. VF_PATHFINDER_LOST, ///< Vehicle's pathfinder is lost. + VF_SERVINT_IS_CUSTOM, ///< Service interval is custom. + VF_SERVINT_IS_PERCENT, ///< Service interval is percent. }; /** Bit numbers used to indicate which of the #NewGRFCache values are valid. */ @@ -53,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. }; @@ -63,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. }; @@ -121,15 +128,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(); @@ -209,10 +231,12 @@ struct Vehicle : VehiclePool::PoolItem<&_vehicle_pool>, BaseVehicle, BaseConsist byte waiting_triggers; ///< Triggers to be yet matched before rerandomizing the random bits. StationID last_station_visited; ///< The last station we stopped at. + StationID last_loading_station; ///< Last station the vehicle has stopped at and could possibly leave from with any cargo loaded. CargoID cargo_type; ///< type of cargo this vehicle is carrying byte cargo_subtype; ///< Used for livery refits (NewGRF variations) uint16 cargo_cap; ///< total capacity + uint16 refit_cap; ///< Capacity left over from before last refit. VehicleCargoList cargo; ///< The cargo this vehicle is carrying uint16 cargo_age_counter; ///< Ticks till cargo is aged next. @@ -242,6 +266,7 @@ struct Vehicle : VehiclePool::PoolItem<&_vehicle_pool>, BaseVehicle, BaseConsist virtual ~Vehicle(); void BeginLoading(); + void CancelReservation(StationID next, Station *st); void LeaveStation(); GroundVehicleCache *GetGroundVehicleCache(); @@ -254,6 +279,10 @@ struct Vehicle : VehiclePool::PoolItem<&_vehicle_pool>, BaseVehicle, BaseConsist void HandleLoading(bool mode = false); + void GetConsistFreeCapacities(SmallMap &capacities) const; + + uint GetConsistTotalCapacity() const; + /** * Marks the vehicles to be redrawn and updates cached variables * @@ -594,6 +623,17 @@ struct Vehicle : VehiclePool::PoolItem<&_vehicle_pool>, BaseVehicle, BaseConsist */ inline VehicleOrderID GetNumManualOrders() const { return (this->orders.list == NULL) ? 0 : this->orders.list->GetNumManualOrders(); } + /** + * Get the next station the vehicle will stop at. + * @return ID of the next station the vehicle will stop at or INVALID_STATION. + */ + inline StationIDStack GetNextStoppingStation() const + { + return (this->orders.list == NULL) ? INVALID_STATION : this->orders.list->GetNextStoppingStation(this); + } + + void ResetRefitCaps(); + /** * 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), @@ -645,6 +685,18 @@ struct Vehicle : VehiclePool::PoolItem<&_vehicle_pool>, BaseVehicle, BaseConsist void UpdateVisualEffect(bool allow_power_change = true); void ShowVisualEffect() const; + inline uint16 GetServiceInterval() const { return this->service_interval; } + + inline void SetServiceInterval(uint16 interval) { this->service_interval = interval; } + + inline bool ServiceIntervalIsCustom() const { return HasBit(this->vehicle_flags, VF_SERVINT_IS_CUSTOM); } + + inline bool ServiceIntervalIsPercent() const { return HasBit(this->vehicle_flags, VF_SERVINT_IS_PERCENT); } + + inline void SetServiceIntervalIsCustom(bool on) { SB(this->vehicle_flags, VF_SERVINT_IS_CUSTOM, 1, on); } + + inline void SetServiceIntervalIsPercent(bool on) { SB(this->vehicle_flags, VF_SERVINT_IS_PERCENT, 1, on); } + private: /** * Advance cur_real_order_index to the next real order. @@ -747,6 +799,8 @@ struct Vehicle : VehiclePool::PoolItem<&_vehicle_pool>, BaseVehicle, BaseConsist bool HasEngineType() const; bool HasDepotOrder() const; void HandlePathfindingResult(bool path_found); + void MarkSeparationInvalid(); + void SetSepSettings(TTSepMode Mode, uint Parameter); /** * Check if the vehicle is a front engine. diff --git a/src/vehicle_cmd.cpp b/src/vehicle_cmd.cpp index f0a0428dd..fa97437e4 100644 --- a/src/vehicle_cmd.cpp +++ b/src/vehicle_cmd.cpp @@ -30,9 +30,12 @@ #include "order_backup.h" #include "ship.h" #include "newgrf.h" +#include "company_base.h" #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), @@ -84,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); @@ -287,6 +283,7 @@ struct RefitResult { Vehicle *v; ///< Vehicle to refit uint capacity; ///< New capacity of vehicle uint mail_capacity; ///< New mail capacity of aircraft + byte subtype; ///< cargo subtype to refit to }; /** @@ -296,7 +293,7 @@ struct RefitResult { * @param only_this Whether to only refit this vehicle, or to check the rest of them. * @param num_vehicles Number of vehicles to refit (not counting articulated parts). Zero means the whole chain. * @param new_cid Cargotype to refit to - * @param new_subtype Cargo subtype to refit to + * @param new_subtype Cargo subtype to refit to. 0xFF means to try keeping the same subtype according to GetBestFittingSubType(). * @param flags Command flags * @param auto_refit Refitting is done as automatic refitting outside a depot. * @return Refit cost. @@ -319,7 +316,11 @@ static CommandCost RefitVehicle(Vehicle *v, bool only_this, uint8 num_vehicles, refit_result.Clear(); v->InvalidateNewGRFCacheOfChain(); + byte actual_subtype = new_subtype; for (; v != NULL; v = (only_this ? NULL : v->Next())) { + /* Reset actual_subtype for every new vehicle */ + if (!v->IsArticulatedPart()) actual_subtype = new_subtype; + if (v->type == VEH_TRAIN && !vehicles_to_refit.Contains(v->index) && !only_this) continue; const Engine *e = v->GetEngine(); @@ -330,12 +331,17 @@ static CommandCost RefitVehicle(Vehicle *v, bool only_this, uint8 num_vehicles, bool refittable = HasBit(e->info.refit_mask, new_cid) && (!auto_refit || HasBit(e->info.misc_flags, EF_AUTO_REFIT)); if (!refittable && v->cargo_type != new_cid) continue; + /* Determine best fitting subtype if requested */ + if (actual_subtype == 0xFF) { + actual_subtype = GetBestFittingSubType(v, v, new_cid); + } + /* Back up the vehicle's cargo type */ CargoID temp_cid = v->cargo_type; byte temp_subtype = v->cargo_subtype; if (refittable) { v->cargo_type = new_cid; - v->cargo_subtype = new_subtype; + v->cargo_subtype = actual_subtype; } uint16 mail_capacity = 0; @@ -351,7 +357,7 @@ static CommandCost RefitVehicle(Vehicle *v, bool only_this, uint8 num_vehicles, v->cargo_subtype = temp_subtype; bool auto_refit_allowed; - CommandCost refit_cost = GetRefitCost(v, v->engine_type, new_cid, new_subtype, &auto_refit_allowed); + CommandCost refit_cost = GetRefitCost(v, v->engine_type, new_cid, actual_subtype, &auto_refit_allowed); if (auto_refit && !auto_refit_allowed) { /* Sorry, auto-refitting not allowed, subtract the cargo amount again from the total. */ total_capacity -= amount; @@ -379,20 +385,23 @@ static CommandCost RefitVehicle(Vehicle *v, bool only_this, uint8 num_vehicles, result->v = v; result->capacity = amount; result->mail_capacity = mail_capacity; + result->subtype = actual_subtype; } if (flags & DC_EXEC) { /* Store the result */ for (RefitResult *result = refit_result.Begin(); result != refit_result.End(); result++) { Vehicle *u = result->v; - u->cargo.Truncate((u->cargo_type == new_cid) ? result->capacity : 0); + u->refit_cap = (u->cargo_type == new_cid) ? min(result->capacity, u->refit_cap) : 0; + if (u->cargo.TotalCount() > u->refit_cap) u->cargo.Truncate(u->cargo.TotalCount() - u->refit_cap); u->cargo_type = new_cid; u->cargo_cap = result->capacity; - u->cargo_subtype = new_subtype; + u->cargo_subtype = result->subtype; if (u->type == VEH_AIRCRAFT) { Vehicle *w = u->Next(); + w->refit_cap = min(w->refit_cap, result->mail_capacity); w->cargo_cap = result->mail_capacity; - w->cargo.Truncate(result->mail_capacity); + if (w->cargo.TotalCount() > w->refit_cap) w->cargo.Truncate(w->cargo.TotalCount() - w->refit_cap); } } } @@ -412,7 +421,7 @@ static CommandCost RefitVehicle(Vehicle *v, bool only_this, uint8 num_vehicles, * - p2 = (bit 0-4) - New cargo type to refit to. * - p2 = (bit 6) - Automatic refitting. * - p2 = (bit 7) - Refit only this vehicle. Used only for cloning vehicles. - * - p2 = (bit 8-15) - New cargo subtype to refit to. + * - p2 = (bit 8-15) - New cargo subtype to refit to. 0xFF means to try keeping the same subtype according to GetBestFittingSubType(). * - p2 = (bit 16-23) - Number of vehicles to refit (not counting articulated parts). Zero means all vehicles. * Only used if "refit only this vehicle" is false. * @param text unused @@ -433,11 +442,12 @@ CommandCost CmdRefitVehicle(TileIndex tile, DoCommandFlag flags, uint32 p1, uint if (ret.Failed()) return ret; bool auto_refit = HasBit(p2, 6); + bool free_wagon = v->type == VEH_TRAIN && Train::From(front)->IsFreeWagon(); // used by autoreplace/renew /* Don't allow shadows and such to be refitted. */ if (v != front && (v->type == VEH_SHIP || v->type == VEH_AIRCRAFT)) return CMD_ERROR; /* Allow auto-refitting only during loading and normal refitting only in a depot. */ - if ((!auto_refit || !front->current_order.IsType(OT_LOADING)) && !front->IsStoppedInDepot()) return_cmd_error(STR_ERROR_TRAIN_MUST_BE_STOPPED_INSIDE_DEPOT + front->type); + if (!free_wagon && (!auto_refit || !front->current_order.IsType(OT_LOADING)) && !front->IsStoppedInDepot()) return_cmd_error(STR_ERROR_TRAIN_MUST_BE_STOPPED_INSIDE_DEPOT + front->type); if (front->vehstatus & VS_CRASHED) return_cmd_error(STR_ERROR_VEHICLE_IS_DESTROYED); /* Check cargo */ @@ -455,7 +465,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); @@ -464,22 +474,23 @@ CommandCost CmdRefitVehicle(TileIndex tile, DoCommandFlag flags, uint32 p1, uint case VEH_SHIP: v->InvalidateNewGRFCacheOfChain(); - v->colourmap = PAL_NONE; // invalidate vehicle colour map Ship::From(v)->UpdateCache(); break; case VEH_AIRCRAFT: v->InvalidateNewGRFCacheOfChain(); - v->colourmap = PAL_NONE; // invalidate vehicle colour map UpdateAircraftCache(Aircraft::From(v), true); break; default: NOT_REACHED(); } + front->MarkDirty(); - InvalidateWindowData(WC_VEHICLE_DETAILS, front->index); + if (!free_wagon) { + InvalidateWindowData(WC_VEHICLE_DETAILS, front->index); + InvalidateWindowClassesData(GetWindowClassForVehicleType(v->type), 0); + } SetWindowDirty(WC_VEHICLE_DEPOT, front->tile); - InvalidateWindowClassesData(GetWindowClassForVehicleType(v->type), 0); } else { /* Always invalidate the cache; querycost might have filled it. */ v->InvalidateNewGRFCacheOfChain(); @@ -564,6 +575,8 @@ CommandCost CmdStartStopVehicle(TileIndex tile, DoCommandFlag flags, uint32 p1, SetWindowWidgetDirty(WC_VEHICLE_VIEW, v->index, WID_VV_START_STOP); SetWindowDirty(WC_VEHICLE_DEPOT, v->tile); SetWindowClassesDirty(GetWindowClassForVehicleType(v->type)); + + v->MarkSeparationInvalid(); } return CommandCost(); } @@ -740,7 +753,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; } } @@ -842,6 +855,8 @@ CommandCost CmdCloneVehicle(TileIndex tile, DoCommandFlag flags, uint32 p1, uint /* this is a front engine or not a train. */ w_front = w; w->service_interval = v->service_interval; + w->SetServiceIntervalIsCustom(v->ServiceIntervalIsCustom()); + w->SetServiceIntervalIsPercent(v->ServiceIntervalIsPercent()); } w_rear = w; // trains needs to know the last car in the train, so they can add more in next loop } @@ -1016,7 +1031,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(); } @@ -1030,7 +1045,10 @@ CommandCost CmdRenameVehicle(TileIndex tile, DoCommandFlag flags, uint32 p1, uin * @param tile unused * @param flags type of operation * @param p1 vehicle ID that is being service-interval-changed - * @param p2 new service interval + * @param p2 bitmask + * - p2 = (bit 0-15) - new service interval + * - p2 = (bit 16) - service interval is custom flag + * - p2 = (bit 17) - service interval is percentage flag * @param text unused * @return the cost of this operation or an error */ @@ -1042,11 +1060,22 @@ CommandCost CmdChangeServiceInt(TileIndex tile, DoCommandFlag flags, uint32 p1, CommandCost ret = CheckOwnership(v->owner); if (ret.Failed()) return ret; - uint16 serv_int = GetServiceIntervalClamped(p2, v->owner); // Double check the service interval from the user-input - if (serv_int != p2) return CMD_ERROR; + const Company *company = Company::Get(v->owner); + bool iscustom = HasBit(p2, 16); + bool ispercent = iscustom ? HasBit(p2, 17) : company->settings.vehicle.servint_ispercent; + + uint16 serv_int; + if (iscustom) { + serv_int = GB(p2, 0, 16); + if (serv_int != GetServiceIntervalClamped(serv_int, ispercent)) return CMD_ERROR; + } else { + serv_int = CompanyServiceInterval(company, v->type); + } if (flags & DC_EXEC) { - v->service_interval = serv_int; + v->SetServiceInterval(serv_int); + v->SetServiceIntervalIsCustom(iscustom); + v->SetServiceIntervalIsPercent(ispercent); SetWindowDirty(WC_VEHICLE_DETAILS, v->index); } diff --git a/src/vehicle_func.h b/src/vehicle_func.h index 758ad8305..757f1b6e6 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); diff --git a/src/vehicle_gui.cpp b/src/vehicle_gui.cpp index 554745e1d..16813cea5 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; @@ -156,13 +158,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; @@ -251,15 +253,11 @@ byte GetBestFittingSubType(Vehicle *v_from, Vehicle *v_for, CargoID dest_cargo_t /* Make sure we don't pick up anything cached. */ v->First()->InvalidateNewGRFCache(); v->InvalidateNewGRFCache(); - uint16 callback = GetVehicleCallback(CBID_VEHICLE_CARGO_SUFFIX, 0, 0, v->engine_type, v); - if (callback != CALLBACK_FAILED) { - if (callback > 0x400) ErrorUnknownCallbackResult(v->GetGRFID(), CBID_VEHICLE_CARGO_SUFFIX, callback); - if (callback >= 0x400 || (v->GetGRF()->grf_version < 8 && callback == 0xFF)) callback = CALLBACK_FAILED; - } - if (callback == CALLBACK_FAILED) break; + StringID subtype = GetCargoSubtypeText(v); + if (subtype == STR_EMPTY) break; - if (!subtypes.Contains(GetCargoSubtypeText(v))) continue; + if (!subtypes.Contains(subtype)) continue; /* We found something matching. */ ret_refit_cyc = refit_cyc; @@ -286,8 +284,7 @@ byte GetBestFittingSubType(Vehicle *v_from, Vehicle *v_for, CargoID dest_cargo_t struct RefitOption { CargoID cargo; ///< Cargo to refit to byte subtype; ///< Subcargo to use - uint16 value; ///< GRF-local String to display for the cargo - const Engine *engine; ///< Engine for which to resolve #value + StringID string; ///< GRF-local String to display for the cargo /** * Inequality operator for #RefitOption. @@ -296,7 +293,7 @@ struct RefitOption { */ inline bool operator != (const RefitOption &other) const { - return other.cargo != this->cargo || other.value != this->value; + return other.cargo != this->cargo || other.string != this->string; } /** @@ -306,7 +303,7 @@ struct RefitOption { */ inline bool operator == (const RefitOption &other) const { - return other.cargo == this->cargo && other.value == this->value; + return other.cargo == this->cargo && other.string == this->string; } }; @@ -321,31 +318,54 @@ typedef SmallVector SubtypeList; ///< List of refit subtypes as * @param delta Step height in caller window * @param r Rectangle of the matrix widget. */ -static void DrawVehicleRefitWindow(const SubtypeList list[NUM_CARGO], int sel, uint pos, uint rows, uint delta, const Rect &r) +static void DrawVehicleRefitWindow(const SubtypeList list[NUM_CARGO], const int sel[2], uint pos, uint rows, uint delta, const Rect &r) { uint y = r.top + WD_MATRIX_TOP; uint current = 0; + bool rtl = _current_text_dir == TD_RTL; + uint iconwidth = max(GetSpriteSize(SPR_CIRCLE_FOLDED).width, GetSpriteSize(SPR_CIRCLE_UNFOLDED).width); + uint iconheight = GetSpriteSize(SPR_CIRCLE_FOLDED).height; + int linecolour = _colour_gradient[COLOUR_ORANGE][4]; + + int iconleft = rtl ? r.right - WD_MATRIX_RIGHT - iconwidth : r.left + WD_MATRIX_LEFT; + int iconcenter = rtl ? r.right - WD_MATRIX_RIGHT - iconwidth / 2 : r.left + WD_MATRIX_LEFT + iconwidth / 2; + int iconinner = rtl ? r.right - WD_MATRIX_RIGHT - iconwidth : r.left + WD_MATRIX_LEFT + iconwidth; + + int textleft = r.left + WD_MATRIX_LEFT + (rtl ? 0 : iconwidth + 4); + int textright = r.right - WD_MATRIX_RIGHT - (rtl ? iconwidth + 4 : 0); + /* Draw the list of subtypes for each cargo, and find the selected refit option (by its position). */ for (uint i = 0; current < pos + rows && i < NUM_CARGO; i++) { for (uint j = 0; current < pos + rows && j < list[i].Length(); j++) { + const RefitOption &refit = list[i][j]; + + /* Hide subtypes if sel[0] does not match */ + if (sel[0] != (int)i && refit.subtype != 0xFF) continue; + /* Refit options with a position smaller than pos don't have to be drawn. */ if (current < pos) { current++; continue; } - TextColour colour = (sel == (int)current) ? TC_WHITE : TC_BLACK; - const RefitOption refit = list[i][j]; + if (list[i].Length() > 1) { + if (refit.subtype != 0xFF) { + /* Draw tree lines */ + int ycenter = y + FONT_HEIGHT_NORMAL / 2; + GfxDrawLine(iconcenter, y - WD_MATRIX_TOP, iconcenter, j == list[i].Length() - 1 ? ycenter : y - WD_MATRIX_TOP + delta - 1, linecolour); + GfxDrawLine(iconcenter, ycenter, iconinner, ycenter, linecolour); + } else { + /* Draw expand/collapse icon */ + DrawSprite(sel[0] == (int)i ? SPR_CIRCLE_UNFOLDED : SPR_CIRCLE_FOLDED, PAL_NONE, iconleft, y + (FONT_HEIGHT_NORMAL - iconheight) / 2); + } + } + + TextColour colour = (sel[0] == (int)i && (uint)sel[1] == j) ? TC_WHITE : TC_BLACK; /* Get the cargo name. */ SetDParam(0, CargoSpec::Get(refit.cargo)->name); - /* If the callback succeeded, draw the cargo suffix. */ - if (refit.value != CALLBACK_FAILED && refit.value < 0x400) { - SetDParam(1, GetGRFStringID(refit.engine->GetGRFID(), 0xD000 + refit.value)); - DrawString(r.left + WD_MATRIX_LEFT, r.right - WD_MATRIX_RIGHT, y, STR_JUST_STRING_SPACE_STRING, colour); - } else { - DrawString(r.left + WD_MATRIX_LEFT, r.right - WD_MATRIX_RIGHT, y, STR_JUST_STRING, colour); - } + SetDParam(1, refit.string); + DrawString(textleft, textright, y, STR_JUST_STRING_STRING, colour); y += delta; current++; @@ -355,7 +375,7 @@ static void DrawVehicleRefitWindow(const SubtypeList list[NUM_CARGO], int sel, u /** Refit cargo window. */ struct RefitWindow : public Window { - int sel; ///< Index in refit options, \c -1 if nothing is selected. + int sel[2]; ///< Index in refit options, sel[0] == -1 if nothing is selected. RefitOption *cargo; ///< Refit option selected by #sel. SubtypeList list[NUM_CARGO]; ///< List of refit subtypes available for each sorted cargo. VehicleOrderID order; ///< If not #INVALID_VEH_ORDER_ID, selection is part of a refit order (rather than execute directly). @@ -405,8 +425,20 @@ struct RefitWindow : public Window { continue; } - /* Check the vehicle's callback mask for cargo suffixes */ - if (HasBit(callback_mask, CBM_VEHICLE_CARGO_SUFFIX)) { + bool first_vehicle = this->list[current_index].Length() == 0; + if (first_vehicle) { + /* Keeping the current subtype is always an option. It also serves as the option in case of no subtypes */ + RefitOption *option = this->list[current_index].Append(); + option->cargo = cid; + option->subtype = 0xFF; + option->string = STR_EMPTY; + } + + /* Check the vehicle's callback mask for cargo suffixes. + * This is not supported for ordered refits, since subtypes only have a meaning + * for a specific vehicle at a specific point in time, which conflicts with shared orders, + * autoreplace, autorenew, clone, order restoration, ... */ + if (this->order == INVALID_VEH_ORDER_ID && HasBit(callback_mask, CBM_VEHICLE_CARGO_SUFFIX)) { /* Make a note of the original cargo type. It has to be * changed to test the cargo & subtype... */ CargoID temp_cargo = v->cargo_type; @@ -420,20 +452,42 @@ struct RefitWindow : public Window { /* Make sure we don't pick up anything cached. */ v->First()->InvalidateNewGRFCache(); v->InvalidateNewGRFCache(); - uint16 callback = GetVehicleCallback(CBID_VEHICLE_CARGO_SUFFIX, 0, 0, v->engine_type, v); - if (callback != CALLBACK_FAILED) { - if (callback > 0x400) ErrorUnknownCallbackResult(v->GetGRFID(), CBID_VEHICLE_CARGO_SUFFIX, callback); - if (callback >= 0x400 || (v->GetGRF()->grf_version < 8 && callback == 0xFF)) callback = CALLBACK_FAILED; + StringID subtype = GetCargoSubtypeText(v); + + if (first_vehicle) { + /* Append new subtype (don't add duplicates though) */ + if (subtype == STR_EMPTY) break; + + RefitOption option; + option.cargo = cid; + option.subtype = refit_cyc; + option.string = subtype; + this->list[current_index].Include(option); + } else { + /* Intersect the subtypes of earlier vehicles with the subtypes of this vehicle */ + if (subtype == STR_EMPTY) { + /* No more subtypes for this vehicle, delete all subtypes >= refit_cyc */ + SubtypeList &l = this->list[current_index]; + /* 0xFF item is in front, other subtypes are sorted. So just truncate the list in the right spot */ + for (uint i = 1; i < l.Length(); i++) { + if (l[i].subtype >= refit_cyc) { + l.Resize(i); + break; + } + } + break; + } else { + /* Check whether the subtype matches with the subtype of earlier vehicles. */ + uint pos = 1; + SubtypeList &l = this->list[current_index]; + while (pos < l.Length() && l[pos].subtype != refit_cyc) pos++; + if (pos < l.Length() && l[pos].string != subtype) { + /* String mismatch, remove item keeping the order */ + l.ErasePreservingOrder(pos); + } + } } - if (refit_cyc != 0 && callback == CALLBACK_FAILED) break; - - RefitOption option; - option.cargo = cid; - option.subtype = refit_cyc; - option.value = callback; - option.engine = v->GetEngine(); - this->list[current_index].Include(option); } /* Reset the vehicle's cargo type */ @@ -443,51 +497,87 @@ struct RefitWindow : public Window { /* And make sure we haven't tainted the cache */ v->First()->InvalidateNewGRFCache(); v->InvalidateNewGRFCache(); - } else { - /* No cargo suffix callback -- use no subtype */ - RefitOption option; - option.cargo = cid; - option.subtype = 0; - option.value = CALLBACK_FAILED; - option.engine = NULL; - this->list[current_index].Include(option); } current_index++; } } while (v->IsGroundVehicle() && (v = v->Next()) != NULL); + } + + /** + * Refresh scrollbar after selection changed + */ + void RefreshScrollbar() + { + uint scroll_row = 0; + uint row = 0; - int scroll_size = 0; for (uint i = 0; i < NUM_CARGO; i++) { - scroll_size += (this->list[i].Length()); + for (uint j = 0; j < this->list[i].Length(); j++) { + const RefitOption &refit = this->list[i][j]; + + /* Hide subtypes if sel[0] does not match */ + if (this->sel[0] != (int)i && refit.subtype != 0xFF) continue; + + if (this->sel[0] == (int)i && (uint)this->sel[1] == j) scroll_row = row; + + row++; + } } - this->vscroll->SetCount(scroll_size); + + this->vscroll->SetCount(row); + if (scroll_row < row) this->vscroll->ScrollTowards(scroll_row); } /** - * Gets the #RefitOption placed in the selected index. - * @return Pointer to the #RefitOption currently in use. + * Select a row. + * @param click_row Clicked row */ - RefitOption *GetRefitOption() + void SetSelection(uint click_row) { - if (this->sel < 0) return NULL; - int subtype = 0; - for (uint i = 0; subtype <= this->sel && i < NUM_CARGO; i++) { - for (uint j = 0; subtype <= this->sel && j < this->list[i].Length(); j++) { - if (subtype == this->sel) { - return &this->list[i][j]; + uint row = 0; + + for (uint i = 0; i < NUM_CARGO; i++) { + for (uint j = 0; j < this->list[i].Length(); j++) { + const RefitOption &refit = this->list[i][j]; + + /* Hide subtypes if sel[0] does not match */ + if (this->sel[0] != (int)i && refit.subtype != 0xFF) continue; + + if (row == click_row) { + this->sel[0] = i; + this->sel[1] = j; + return; } - subtype++; + + row++; } } - return NULL; + this->sel[0] = -1; + this->sel[1] = 0; } - RefitWindow(const WindowDesc *desc, const Vehicle *v, VehicleOrderID order, bool auto_refit) : Window() + /** + * Gets the #RefitOption placed in the selected index. + * @return Pointer to the #RefitOption currently in use. + */ + RefitOption *GetRefitOption() + { + if (this->sel[0] < 0) return NULL; + + SubtypeList &l = this->list[this->sel[0]]; + if ((uint)this->sel[1] >= l.Length()) return NULL; + + return &l[this->sel[1]]; + } + + RefitWindow(WindowDesc *desc, const Vehicle *v, VehicleOrderID order, bool auto_refit) : Window(desc) { - this->sel = -1; + this->sel[0] = -1; + this->sel[1] = 0; this->auto_refit = auto_refit; - this->CreateNestedTree(desc); + this->order = order; + this->CreateNestedTree(); this->vscroll = this->GetScrollbar(WID_VR_SCROLLBAR); this->hscroll = (v->IsGroundVehicle() ? this->GetScrollbar(WID_VR_HSCROLLBAR) : NULL); @@ -499,11 +589,10 @@ struct RefitWindow : public Window { this->GetWidget(WID_VR_SHOW_HSCROLLBAR)->SetDisplayedPlane(v->IsGroundVehicle() ? 0 : SZSP_HORIZONTAL); this->GetWidget(WID_VR_VEHICLE_PANEL_DISPLAY)->tool_tip = (v->type == VEH_TRAIN) ? STR_REFIT_SELECT_VEHICLES_TOOLTIP : STR_NULL; - this->FinishInitNested(desc, v->index); + this->FinishInitNested(v->index); this->owner = v->owner; - this->order = order; - this->SetWidgetDisabledState(WID_VR_REFIT, this->sel == -1); + this->SetWidgetDisabledState(WID_VR_REFIT, this->sel[0] < 0); } virtual void OnInit() @@ -514,24 +603,22 @@ struct RefitWindow : public Window { /* Rebuild the refit list */ this->BuildRefitList(); - this->sel = -1; + this->sel[0] = -1; + this->sel[1] = 0; this->cargo = NULL; - int current = 0; for (uint i = 0; this->cargo == NULL && i < NUM_CARGO; i++) { for (uint j = 0; j < list[i].Length(); j++) { if (list[i][j] == current_refit_option) { - this->sel = current; + this->sel[0] = i; + this->sel[1] = j; this->cargo = &list[i][j]; - this->vscroll->ScrollTowards(current); break; } - current++; } } - this->SetWidgetDisabledState(WID_VR_REFIT, this->sel == -1); - /* If the selected refit option was not found, scroll the window to the initial position. */ - if (this->sel == -1) this->vscroll->ScrollTowards(0); + this->SetWidgetDisabledState(WID_VR_REFIT, this->sel[0] < 0); + this->RefreshScrollbar(); } else { /* Rebuild the refit list */ this->OnInvalidateData(VIWD_CONSIST_CHANGED); @@ -745,6 +832,7 @@ struct RefitWindow : public Window { case 1: // A new cargo has been selected. if (!gui_scope) break; this->cargo = GetRefitOption(); + this->RefreshScrollbar(); break; } } @@ -830,9 +918,8 @@ struct RefitWindow : public Window { } case WID_VR_MATRIX: { // listbox - this->sel = this->vscroll->GetScrolledRowFromWidget(pt.y, this, WID_VR_MATRIX); - if (this->sel == INT_MAX) this->sel = -1; - this->SetWidgetDisabledState(WID_VR_REFIT, this->sel == -1); + this->SetSelection(this->vscroll->GetScrolledRowFromWidget(pt.y, this, WID_VR_MATRIX)); + this->SetWidgetDisabledState(WID_VR_REFIT, this->sel[0] < 0); this->InvalidateData(1); if (click_count == 1) break; @@ -847,7 +934,7 @@ struct RefitWindow : public Window { bool delete_window = this->selected_vehicle == v->index && this->num_vehicles == UINT8_MAX; if (DoCommandP(v->tile, this->selected_vehicle, this->cargo->cargo | this->cargo->subtype << 8 | this->num_vehicles << 16, GetCmdRefitVeh(v)) && delete_window) delete this; } else { - if (DoCommandP(v->tile, v->index, this->cargo->cargo | this->cargo->subtype << 8 | this->order << 16, CMD_ORDER_REFIT)) delete this; + if (DoCommandP(v->tile, v->index, this->cargo->cargo | this->order << 16, CMD_ORDER_REFIT)) delete this; } } break; @@ -885,7 +972,6 @@ struct RefitWindow : public Window { this->vehicle_width = GetVehicleWidth(Vehicle::Get(this->window_number), EIT_IN_DETAILS); this->vscroll->SetCapacityFromWidget(this, WID_VR_MATRIX); if (this->hscroll != NULL) this->hscroll->SetCapacityFromWidget(this, WID_VR_VEHICLE_PANEL_DISPLAY); - this->GetWidget(WID_VR_MATRIX)->widget_data = (this->vscroll->GetCapacity() << MAT_ROW_START) + (1 << MAT_COL_START); } }; @@ -893,6 +979,7 @@ static const NWidgetPart _nested_vehicle_refit_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_GREY), NWidget(WWT_CAPTION, COLOUR_GREY, WID_VR_CAPTION), SetDataTip(STR_REFIT_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_DEFSIZEBOX, COLOUR_GREY), EndContainer(), /* Vehicle display + scrollbar. */ NWidget(NWID_VERTICAL), @@ -904,7 +991,7 @@ static const NWidgetPart _nested_vehicle_refit_widgets[] = { NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_VR_SELECT_HEADER), SetDataTip(STR_REFIT_TITLE, STR_NULL), SetResize(1, 0), /* Matrix + scrollbar. */ NWidget(NWID_HORIZONTAL), - NWidget(WWT_MATRIX, COLOUR_GREY, WID_VR_MATRIX), SetMinimalSize(228, 112), SetResize(1, 14), SetFill(1, 1), SetDataTip(0x801, STR_NULL), SetScrollbar(WID_VR_SCROLLBAR), + NWidget(WWT_MATRIX, COLOUR_GREY, WID_VR_MATRIX), SetMinimalSize(228, 112), SetResize(1, 14), SetFill(1, 1), SetMatrixDataTip(1, 0, STR_NULL), SetScrollbar(WID_VR_SCROLLBAR), NWidget(NWID_VSCROLLBAR, COLOUR_GREY, WID_VR_SCROLLBAR), EndContainer(), NWidget(WWT_PANEL, COLOUR_GREY, WID_VR_INFO), SetMinimalTextLines(2, WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM), SetResize(1, 0), EndContainer(), @@ -914,8 +1001,8 @@ static const NWidgetPart _nested_vehicle_refit_widgets[] = { EndContainer(), }; -static const WindowDesc _vehicle_refit_desc( - WDP_AUTO, 240, 174, +static WindowDesc _vehicle_refit_desc( + WDP_AUTO, "view_vehicle_refit", 240, 174, WC_VEHICLE_REFIT, WC_VEHICLE_VIEW, WDF_CONSTRUCTION, _nested_vehicle_refit_widgets, lengthof(_nested_vehicle_refit_widgets) @@ -924,7 +1011,7 @@ static const WindowDesc _vehicle_refit_desc( /** * Show the refit window for a vehicle * @param *v The vehicle to show the refit window for - * @param order of the vehicle ( ? ) + * @param order of the vehicle to assign refit to, or INVALID_VEH_ORDER_ID to refit the vehicle now * @param parent the parent window of the refit window * @param auto_refit Choose cargo for auto-refitting */ @@ -1034,7 +1121,7 @@ static int CDECL VehicleCargoSorter(const Vehicle * const *a, const Vehicle * co const Vehicle *v; CargoArray diff; - /* Append the cargo of the connected weagons */ + /* Append the cargo of the connected waggons */ for (v = *a; v != NULL; v = v->Next()) diff[v->cargo_type] += v->cargo_cap; for (v = *b; v != NULL; v = v->Next()) diff[v->cargo_type] -= v->cargo_cap; @@ -1068,7 +1155,7 @@ static int CDECL VehicleModelSorter(const Vehicle * const *a, const Vehicle * co return (r != 0) ? r : VehicleNumberSorter(a, b); } -/** Sort vehciles by their value */ +/** Sort vehicles by their value */ static int CDECL VehicleValueSorter(const Vehicle * const *a, const Vehicle * const *b) { const Vehicle *u; @@ -1150,6 +1237,7 @@ static const NWidgetPart _nested_vehicle_list[] = { NWidget(WWT_CLOSEBOX, COLOUR_GREY), NWidget(WWT_CAPTION, COLOUR_GREY, WID_VL_CAPTION), NWidget(WWT_SHADEBOX, COLOUR_GREY), + NWidget(WWT_DEFSIZEBOX, COLOUR_GREY), NWidget(WWT_STICKYBOX, COLOUR_GREY), EndContainer(), @@ -1161,7 +1249,7 @@ static const NWidgetPart _nested_vehicle_list[] = { EndContainer(), NWidget(NWID_HORIZONTAL), - NWidget(WWT_MATRIX, COLOUR_GREY, WID_VL_LIST), SetMinimalSize(248, 0), SetFill(1, 0), SetResize(1, 1), SetScrollbar(WID_VL_SCROLLBAR), + NWidget(WWT_MATRIX, COLOUR_GREY, WID_VL_LIST), SetMinimalSize(248, 0), SetFill(1, 0), SetResize(1, 1), SetMatrixDataTip(1, 0, STR_NULL), SetScrollbar(WID_VL_SCROLLBAR), NWidget(NWID_VSCROLLBAR, COLOUR_GREY, WID_VL_SCROLLBAR), EndContainer(), @@ -1336,7 +1424,7 @@ struct VehicleListWindow : public BaseVehicleListWindow { }; public: - VehicleListWindow(const WindowDesc *desc, WindowNumber window_number) : BaseVehicleListWindow(window_number) + VehicleListWindow(WindowDesc *desc, WindowNumber window_number) : BaseVehicleListWindow(desc, window_number) { /* Set up sorting. Make the window-specific _sorting variable * point to the correct global _sorting struct so we are freed @@ -1349,7 +1437,7 @@ struct VehicleListWindow : public BaseVehicleListWindow { default: NOT_REACHED(); } - this->CreateNestedTree(desc); + this->CreateNestedTree(); this->vscroll = this->GetScrollbar(WID_VL_SCROLLBAR); @@ -1368,10 +1456,8 @@ struct VehicleListWindow : public BaseVehicleListWindow { this->GetWidget(WID_VL_CAPTION)->widget_data = STR_VEHICLE_LIST_TRAIN_CAPTION + this->vli.vtype; } - this->FinishInitNested(desc, window_number); + this->FinishInitNested(window_number); if (this->vli.company != OWNER_NONE) this->owner = this->vli.company; - - if (this->vli.vtype == VEH_TRAIN) ResizeWindow(this, 65, 0); } ~VehicleListWindow() @@ -1584,7 +1670,6 @@ struct VehicleListWindow : public BaseVehicleListWindow { virtual void OnResize() { this->vscroll->SetCapacityFromWidget(this, WID_VL_LIST); - this->GetWidget(WID_VL_LIST)->widget_data = (this->vscroll->GetCapacity() << MAT_ROW_START) + (1 << MAT_COL_START); } /** @@ -1611,19 +1696,31 @@ struct VehicleListWindow : public BaseVehicleListWindow { } }; -static WindowDesc _vehicle_list_desc( - WDP_AUTO, 260, 246, +static WindowDesc _vehicle_list_other_desc( + WDP_AUTO, "list_vehicles", 260, 246, WC_INVALID, WC_NONE, 0, _nested_vehicle_list, lengthof(_nested_vehicle_list) ); -static void ShowVehicleListWindowLocal(CompanyID company, VehicleListType vlt, VehicleType vehicle_type, uint16 unique_number) +static WindowDesc _vehicle_list_train_desc( + WDP_AUTO, "list_vehicles_train", 325, 246, + WC_TRAINS_LIST, WC_NONE, + 0, + _nested_vehicle_list, lengthof(_nested_vehicle_list) +); + +static void ShowVehicleListWindowLocal(CompanyID company, VehicleListType vlt, VehicleType vehicle_type, uint32 unique_number) { if (!Company::IsValidID(company) && company != OWNER_NONE) return; - _vehicle_list_desc.cls = GetWindowClassForVehicleType(vehicle_type); - AllocateWindowDescFront(&_vehicle_list_desc, VehicleListIdentifier(vlt, vehicle_type, company, unique_number).Pack()); + WindowNumber num = VehicleListIdentifier(vlt, vehicle_type, company, unique_number).Pack(); + if (vehicle_type == VEH_TRAIN) { + AllocateWindowDescFront(&_vehicle_list_train_desc, num); + } else { + _vehicle_list_other_desc.cls = GetWindowClassForVehicleType(vehicle_type); + AllocateWindowDescFront(&_vehicle_list_other_desc, num); + } } void ShowVehicleListWindow(CompanyID company, VehicleType vehicle_type) @@ -1647,7 +1744,6 @@ void ShowVehicleListWindow(const Vehicle *v) void ShowVehicleListWindow(CompanyID company, VehicleType vehicle_type, StationID station) { - _vehicle_list_desc.flags &= ~WDF_CONSTRUCTION; ShowVehicleListWindowLocal(company, VL_STATION_LIST, vehicle_type, station); } @@ -1678,6 +1774,7 @@ static const NWidgetPart _nested_nontrain_vehicle_details_widgets[] = { NWidget(WWT_CAPTION, COLOUR_GREY, WID_VD_CAPTION), SetDataTip(STR_VEHICLE_DETAILS_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_VD_RENAME_VEHICLE), SetMinimalSize(40, 0), SetMinimalTextLines(1, WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM + 2), SetDataTip(STR_VEHICLE_NAME_BUTTON, STR_NULL /* filled in later */), NWidget(WWT_SHADEBOX, COLOUR_GREY), + NWidget(WWT_DEFSIZEBOX, COLOUR_GREY), NWidget(WWT_STICKYBOX, COLOUR_GREY), EndContainer(), NWidget(WWT_PANEL, COLOUR_GREY, WID_VD_TOP_DETAILS), SetMinimalSize(405, 42), SetResize(1, 0), EndContainer(), @@ -1687,6 +1784,8 @@ static const NWidgetPart _nested_nontrain_vehicle_details_widgets[] = { SetDataTip(AWV_DECREASE, STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP), NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_VD_INCREASE_SERVICING_INTERVAL), SetFill(0, 1), SetDataTip(AWV_INCREASE, STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP), + NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_VD_SERVICE_INTERVAL_DROPDOWN), SetFill(0, 1), + SetDataTip(STR_EMPTY, STR_SERVICE_INTERVAL_DROPDOWN_TOOLTIP), NWidget(WWT_PANEL, COLOUR_GREY, WID_VD_SERVICING_INTERVAL), SetFill(1, 1), SetResize(1, 0), EndContainer(), NWidget(WWT_RESIZEBOX, COLOUR_GREY), EndContainer(), @@ -1699,11 +1798,12 @@ static const NWidgetPart _nested_train_vehicle_details_widgets[] = { NWidget(WWT_CAPTION, COLOUR_GREY, WID_VD_CAPTION), SetDataTip(STR_VEHICLE_DETAILS_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_VD_RENAME_VEHICLE), SetMinimalSize(40, 0), SetMinimalTextLines(1, WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM + 2), SetDataTip(STR_VEHICLE_NAME_BUTTON, STR_NULL /* filled in later */), NWidget(WWT_SHADEBOX, COLOUR_GREY), + NWidget(WWT_DEFSIZEBOX, COLOUR_GREY), NWidget(WWT_STICKYBOX, COLOUR_GREY), EndContainer(), NWidget(WWT_PANEL, COLOUR_GREY, WID_VD_TOP_DETAILS), SetResize(1, 0), SetMinimalSize(405, 42), EndContainer(), NWidget(NWID_HORIZONTAL), - NWidget(WWT_MATRIX, COLOUR_GREY, WID_VD_MATRIX), SetResize(1, 1), SetMinimalSize(393, 45), SetDataTip(0x701, STR_NULL), SetFill(1, 0), SetScrollbar(WID_VD_SCROLLBAR), + NWidget(WWT_MATRIX, COLOUR_GREY, WID_VD_MATRIX), SetResize(1, 1), SetMinimalSize(393, 45), SetMatrixDataTip(1, 0, STR_NULL), SetFill(1, 0), SetScrollbar(WID_VD_SCROLLBAR), NWidget(NWID_VSCROLLBAR, COLOUR_GREY, WID_VD_SCROLLBAR), EndContainer(), NWidget(NWID_HORIZONTAL), @@ -1711,6 +1811,8 @@ static const NWidgetPart _nested_train_vehicle_details_widgets[] = { SetDataTip(AWV_DECREASE, STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP), NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_VD_INCREASE_SERVICING_INTERVAL), SetFill(0, 1), SetDataTip(AWV_INCREASE, STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP), + NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_VD_SERVICE_INTERVAL_DROPDOWN), SetFill(0, 1), + SetDataTip(STR_EMPTY, STR_SERVICE_INTERVAL_DROPDOWN_TOOLTIP), NWidget(WWT_PANEL, COLOUR_GREY, WID_VD_SERVICING_INTERVAL), SetFill(1, 1), SetResize(1, 0), EndContainer(), EndContainer(), NWidget(NWID_HORIZONTAL), @@ -1733,19 +1835,26 @@ extern void DrawRoadVehDetails(const Vehicle *v, int left, int right, int y); extern void DrawShipDetails(const Vehicle *v, int left, int right, int y); extern void DrawAircraftDetails(const Aircraft *v, int left, int right, int y); +static StringID _service_interval_dropdown[] = { + STR_VEHICLE_DETAILS_DEFAULT, + STR_VEHICLE_DETAILS_DAYS, + STR_VEHICLE_DETAILS_PERCENT, + INVALID_STRING_ID, +}; + /** Class for managing the vehicle details window. */ struct VehicleDetailsWindow : Window { TrainDetailsWindowTabs tab; ///< For train vehicles: which tab is displayed. Scrollbar *vscroll; /** Initialize a newly created vehicle details window */ - VehicleDetailsWindow(const WindowDesc *desc, WindowNumber window_number) : Window() + VehicleDetailsWindow(WindowDesc *desc, WindowNumber window_number) : Window(desc) { const Vehicle *v = Vehicle::Get(window_number); - this->CreateNestedTree(desc); + this->CreateNestedTree(); this->vscroll = (v->type == VEH_TRAIN ? this->GetScrollbar(WID_VD_SCROLLBAR) : NULL); - this->FinishInitNested(desc, window_number); + this->FinishInitNested(window_number); this->GetWidget(WID_VD_RENAME_VEHICLE)->tool_tip = STR_VEHICLE_DETAILS_TRAIN_RENAME + v->type; @@ -1848,6 +1957,16 @@ struct VehicleDetailsWindow : Window { size->height = 4 * resize->height; break; + case WID_VD_SERVICE_INTERVAL_DROPDOWN: { + StringID *strs = _service_interval_dropdown; + while (*strs != INVALID_STRING_ID) { + *size = maxdim(*size, GetStringBoundingBox(*strs++)); + } + size->width += padding.width; + size->height = FONT_HEIGHT_NORMAL + WD_DROPDOWNTEXT_TOP + WD_DROPDOWNTEXT_BOTTOM; + break; + } + case WID_VD_SERVICING_INTERVAL: SetDParamMaxValue(0, MAX_SERVINT_DAYS); // Roughly the maximum interval SetDParamMaxValue(1, MAX_YEAR * DAYS_IN_YEAR); // Roughly the maximum year @@ -1981,10 +2100,10 @@ struct VehicleDetailsWindow : Window { case WID_VD_SERVICING_INTERVAL: /* Draw service interval text */ - SetDParam(0, v->service_interval); + SetDParam(0, v->GetServiceInterval()); SetDParam(1, v->date_of_last_service); DrawString(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_RIGHT, r.top + (r.bottom - r.top + 1 - FONT_HEIGHT_NORMAL) / 2, - Company::Get(v->owner)->settings.vehicle.servint_ispercent ? STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT : STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS); + v->ServiceIntervalIsPercent() ? STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT : STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS); break; } } @@ -2007,6 +2126,11 @@ struct VehicleDetailsWindow : Window { WID_VD_DECREASE_SERVICING_INTERVAL, WIDGET_LIST_END); + StringID str = v->ServiceIntervalIsCustom() ? + (v->ServiceIntervalIsPercent() ? STR_VEHICLE_DETAILS_PERCENT : STR_VEHICLE_DETAILS_DAYS) : + STR_VEHICLE_DETAILS_DEFAULT; + this->GetWidget(WID_VD_SERVICE_INTERVAL_DROPDOWN)->widget_data = str; + this->DrawWidgets(); } @@ -2027,10 +2151,16 @@ struct VehicleDetailsWindow : Window { const Vehicle *v = Vehicle::Get(this->window_number); mod = (widget == WID_VD_DECREASE_SERVICING_INTERVAL) ? -mod : mod; - mod = GetServiceIntervalClamped(mod + v->service_interval, v->owner); - if (mod == v->service_interval) return; + mod = GetServiceIntervalClamped(mod + v->GetServiceInterval(), v->ServiceIntervalIsPercent()); + if (mod == v->GetServiceInterval()) return; + + DoCommandP(v->tile, v->index, mod | (1 << 16) | (v->ServiceIntervalIsPercent() << 17), CMD_CHANGE_SERVICE_INT | CMD_MSG(STR_ERROR_CAN_T_CHANGE_SERVICING)); + break; + } - DoCommandP(v->tile, v->index, mod, CMD_CHANGE_SERVICE_INT | CMD_MSG(STR_ERROR_CAN_T_CHANGE_SERVICING)); + case WID_VD_SERVICE_INTERVAL_DROPDOWN: { + const Vehicle *v = Vehicle::Get(this->window_number); + ShowDropDownMenu(this, _service_interval_dropdown, v->ServiceIntervalIsCustom() ? (v->ServiceIntervalIsPercent() ? 2 : 1) : 0, widget, 0, 0); break; } @@ -2052,6 +2182,20 @@ struct VehicleDetailsWindow : Window { } } + virtual void OnDropdownSelect(int widget, int index) + { + switch (widget) { + case WID_VD_SERVICE_INTERVAL_DROPDOWN: { + const Vehicle *v = Vehicle::Get(this->window_number); + bool iscustom = index != 0; + bool ispercent = iscustom ? (index == 2) : Company::Get(v->owner)->settings.vehicle.servint_ispercent; + uint16 interval = GetServiceIntervalClamped(v->GetServiceInterval(), ispercent); + DoCommandP(v->tile, v->index, interval | (iscustom << 16) | (ispercent << 17), CMD_CHANGE_SERVICE_INT | CMD_MSG(STR_ERROR_CAN_T_CHANGE_SERVICING)); + break; + } + } + } + virtual void OnQueryTextFinished(char *str) { if (str == NULL) return; @@ -2064,22 +2208,21 @@ struct VehicleDetailsWindow : Window { NWidgetCore *nwi = this->GetWidget(WID_VD_MATRIX); if (nwi != NULL) { this->vscroll->SetCapacityFromWidget(this, WID_VD_MATRIX); - nwi->widget_data = (this->vscroll->GetCapacity() << MAT_ROW_START) + (1 << MAT_COL_START); } } }; /** Vehicle details window descriptor. */ -static const WindowDesc _train_vehicle_details_desc( - WDP_AUTO, 405, 178, +static WindowDesc _train_vehicle_details_desc( + WDP_AUTO, "view_vehicle_details_train", 405, 178, WC_VEHICLE_DETAILS, WC_VEHICLE_VIEW, 0, _nested_train_vehicle_details_widgets, lengthof(_nested_train_vehicle_details_widgets) ); /** Vehicle details window descriptor for other vehicles than a train. */ -static const WindowDesc _nontrain_vehicle_details_desc( - WDP_AUTO, 405, 113, +static WindowDesc _nontrain_vehicle_details_desc( + WDP_AUTO, "view_vehicle_details", 405, 113, WC_VEHICLE_DETAILS, WC_VEHICLE_VIEW, 0, _nested_nontrain_vehicle_details_widgets, lengthof(_nested_nontrain_vehicle_details_widgets) @@ -2103,6 +2246,7 @@ static const NWidgetPart _nested_vehicle_view_widgets[] = { NWidget(WWT_CAPTION, COLOUR_GREY, WID_VV_CAPTION), SetDataTip(STR_VEHICLE_VIEW_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), NWidget(WWT_DEBUGBOX, COLOUR_GREY), NWidget(WWT_SHADEBOX, COLOUR_GREY), + NWidget(WWT_DEFSIZEBOX, COLOUR_GREY), NWidget(WWT_STICKYBOX, COLOUR_GREY), EndContainer(), NWidget(NWID_HORIZONTAL), @@ -2137,8 +2281,8 @@ static const NWidgetPart _nested_vehicle_view_widgets[] = { }; /** Vehicle view window descriptor for all vehicles but trains. */ -static const WindowDesc _vehicle_view_desc( - WDP_AUTO, 250, 116, +static WindowDesc _vehicle_view_desc( + WDP_AUTO, "view_vehicle", 250, 116, WC_VEHICLE_VIEW, WC_NONE, 0, _nested_vehicle_view_widgets, lengthof(_nested_vehicle_view_widgets) @@ -2148,8 +2292,8 @@ static const WindowDesc _vehicle_view_desc( * Vehicle view window descriptor for trains. Only minimum_height and * default_height are different for train view. */ -static const WindowDesc _train_view_desc( - WDP_AUTO, 250, 134, +static WindowDesc _train_view_desc( + WDP_AUTO, "view_vehicle_train", 250, 134, WC_VEHICLE_VIEW, WC_NONE, 0, _nested_vehicle_view_widgets, lengthof(_nested_vehicle_view_widgets) @@ -2285,9 +2429,9 @@ struct VehicleViewWindow : Window { } public: - VehicleViewWindow(const WindowDesc *desc, WindowNumber window_number) : Window() + VehicleViewWindow(WindowDesc *desc, WindowNumber window_number) : Window(desc) { - this->CreateNestedTree(desc); + this->CreateNestedTree(); /* Sprites for the 'send to depot' button indexed by vehicle type. */ static const SpriteID vehicle_view_goto_depot_sprites[] = { @@ -2323,7 +2467,7 @@ struct VehicleViewWindow : Window { default: NOT_REACHED(); } - this->FinishInitNested(desc, window_number); + this->FinishInitNested(window_number); this->owner = v->owner; this->GetWidget(WID_VV_VIEWPORT)->InitializeViewport(this, this->window_number | (1 << 31), _vehicle_view_zoom_levels[v->type]); @@ -2348,6 +2492,10 @@ struct VehicleViewWindow : Window { { 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; @@ -2433,7 +2581,7 @@ struct VehicleViewWindow : Window { SetDParam(2, v->GetDisplaySpeed()); if (v->current_order.GetDepotActionType() & ODATFB_NEAREST_DEPOT) { /* This case *only* happens when multiple nearest depot orders - * follow eachother (including an order list only one order: a + * follow each other (including an order list only one order: a * nearest depot order) and there are no reachable depots. * It is primarily to guard for the case that there is no * depot with index 0, which would be used as fallback for @@ -2477,9 +2625,16 @@ struct VehicleViewWindow : Window { } } - /* 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) diff --git a/src/vehicle_gui_base.h b/src/vehicle_gui_base.h index e4f6ccc76..1c03f7b34 100644 --- a/src/vehicle_gui_base.h +++ b/src/vehicle_gui_base.h @@ -38,7 +38,7 @@ struct BaseVehicleListWindow : public Window { static const StringID vehicle_sorter_names[]; static GUIVehicleList::SortFunction * const vehicle_sorter_funcs[]; - BaseVehicleListWindow(WindowNumber wno) : Window(), vli(wno) + BaseVehicleListWindow(WindowDesc *desc, WindowNumber wno) : Window(desc), vli(wno) { this->vehicles.SetSortFuncs(this->vehicle_sorter_funcs); } diff --git a/src/vehiclelist.cpp b/src/vehiclelist.cpp index b15f05571..7e42b25aa 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 73c3de6b7..03bfb0774 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. */ diff --git a/src/video/allegro_v.cpp b/src/video/allegro_v.cpp index e225b05fd..c75bcfb2e 100644 --- a/src/video/allegro_v.cpp +++ b/src/video/allegro_v.cpp @@ -27,9 +27,11 @@ #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 userful. */ + * be triggered, so rereplace the signals and make the debugger useful. */ #include #endif @@ -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(); @@ -304,7 +306,7 @@ static const VkMapping _vk_mapping[] = { AS(KEY_TILDE, WKC_BACKQUOTE), }; -static uint32 ConvertAllegroKeyIntoMy() +static uint32 ConvertAllegroKeyIntoMy(WChar *character) { int scancode; int unicode = ureadkey(&scancode); @@ -326,7 +328,9 @@ static uint32 ConvertAllegroKeyIntoMy() DEBUG(driver, 0, "Scancode character pressed %u", scancode); DEBUG(driver, 0, "Unicode character pressed %u", unicode); #endif - return (key << 16) + unicode; + + *character = unicode; + return key; } static const uint LEFT_BUTTON = 0; @@ -414,7 +418,9 @@ static void PollEvent() if ((key_shifts & KB_ALT_FLAG) && (key[KEY_ENTER] || key[KEY_F])) { ToggleFullScreen(!_fullscreen); } else if (keypressed()) { - HandleKeypress(ConvertAllegroKeyIntoMy()); + WChar character; + uint keycode = ConvertAllegroKeyIntoMy(&character); + HandleKeypress(keycode, character); } } @@ -438,7 +444,7 @@ const char *VideoDriver_Allegro::Start(const char * const *parm) #if defined _DEBUG /* Allegro replaces SEGV/ABRT signals meaning that the debugger will never - * be triggered, so rereplace the signals and make the debugger userful. */ + * be triggered, so rereplace the signals and make the debugger useful. */ signal(SIGABRT, NULL); signal(SIGSEGV, NULL); #endif diff --git a/src/video/allegro_v.h b/src/video/allegro_v.h index da95269ce..a770635da 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 @@ class VideoDriver_Allegro: public VideoDriver { }; /** 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 a27b3c204..86085da62 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); @@ -50,18 +50,21 @@ class VideoDriver_Cocoa: public VideoDriver { */ /* virtual */ bool AfterBlitterChange(); + /** + * An edit box lost the input focus. Abort character compositing if necessary. + */ + /* virtual */ void EditBoxLostFocus(); + /** Return driver name * @return driver name */ /* 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(); } }; @@ -134,7 +137,7 @@ class CocoaSubdriver { virtual bool IsFullscreen() = 0; /** Toggle between fullscreen and windowed mode - * @return whether switch was successfull + * @return whether switch was successful */ virtual bool ToggleFullscreen() { return false; }; @@ -180,7 +183,7 @@ class CocoaSubdriver { virtual void SetPortAlphaOpaque() { return; }; /** Whether the window was successfully resized - * @return whether the window was succesfully resized + * @return whether the window was successfully resized */ virtual bool WindowResized() { return false; }; }; @@ -227,7 +230,17 @@ uint QZ_ListModes(OTTD_Point *modes, uint max_modes, CGDirectDisplayID display_i @end /** Subclass of NSView to fix Quartz rendering and mouse awareness */ -@interface OTTD_CocoaView : NSView { +@interface OTTD_CocoaView : NSView +#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5 +# if MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4 + +# else + +# endif /* MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4 */ +#else + +#endif /* MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5 */ +{ CocoaSubdriver *driver; NSTrackingRectTag trackingtag; } @@ -253,6 +266,7 @@ uint QZ_ListModes(OTTD_Point *modes, uint max_modes, CGDirectDisplayID display_i - (void)setDriver:(CocoaSubdriver*)drv; - (BOOL)windowShouldClose:(id)sender; +- (void)windowDidEnterFullScreen:(NSNotification *)aNotification; @end diff --git a/src/video/cocoa/cocoa_v.mm b/src/video/cocoa/cocoa_v.mm index 9045f3262..5665abb5b 100644 --- a/src/video/cocoa/cocoa_v.mm +++ b/src/video/cocoa/cocoa_v.mm @@ -33,6 +33,8 @@ #include "../../blitter/factory.hpp" #include "../../fileio_func.h" #include "../../gfx_func.h" +#include "../../window_func.h" +#include "../../window_gui.h" #import /* for MAXPATHLEN */ @@ -56,22 +58,50 @@ @interface OTTDMain : NSObject CocoaSubdriver *_cocoa_subdriver = NULL; +static NSString *OTTDMainLaunchGameEngine = @"ottdmain_launch_game_engine"; /** * The main class of the application, the application's delegate. */ @implementation OTTDMain +/** + * Stop the game engine. Must be called on main thread. + */ +- (void)stopEngine +{ + [ NSApp stop:self ]; + + /* Send an empty event to return from the run loop. Without that, application is stuck waiting for an event. */ + NSEvent *event = [ NSEvent otherEventWithType:NSApplicationDefined location:NSMakePoint(0, 0) modifierFlags:0 timestamp:0.0 windowNumber:0 context:nil subtype:0 data1:0 data2:0 ]; + [ NSApp postEvent:event atStart:YES ]; +} + +/** + * Start the game loop. + */ +- (void)launchGameEngine: (NSNotification*) note +{ + /* Setup cursor for the current _game_mode. */ + [ _cocoa_subdriver->cocoaview resetCursorRects ]; + + /* Hand off to main application code. */ + QZ_GameLoop(); + + /* We are done, thank you for playing. */ + [ self performSelectorOnMainThread:@selector(stopEngine) withObject:nil waitUntilDone:FALSE ]; +} + /** * Called when the internal event loop has just started running. */ - (void) applicationDidFinishLaunching: (NSNotification*) note { - /* Hand off to main application code */ - QZ_GameLoop(); + /* Add a notification observer so we can restart the game loop later on if necessary. */ + [ [ NSNotificationCenter defaultCenter ] addObserver:self selector:@selector(launchGameEngine:) name:OTTDMainLaunchGameEngine object:nil ]; - /* We're done, thank you for playing */ - [ NSApp stop:_ottd_main ]; + /* Start game loop. */ + [ [ NSNotificationCenter defaultCenter ] postNotificationName:OTTDMainLaunchGameEngine object:nil ]; } /** @@ -79,11 +109,18 @@ - (void) applicationDidFinishLaunching: (NSNotification*) note */ - (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication*) sender { - HandleExitGameRequest(); return NSTerminateCancel; // NSTerminateLater ? } + +/** + * Remove ourself as a notification observer. + */ +- (void)unregisterObserver +{ + [ [ NSNotificationCenter defaultCenter ] removeObserver:self ]; +} @end /** @@ -91,7 +128,7 @@ - (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication*) sende */ static void setApplicationMenu() { - NSString *appName = @"OTTD"; + NSString *appName = @"OpenTTD"; NSMenu *appleMenu = [ [ NSMenu alloc ] initWithTitle:appName ]; /* Add menu items */ @@ -188,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. * @@ -222,7 +333,7 @@ void QZ_GameSizeChanged() _screen.dst_ptr = _cocoa_subdriver->GetPixelBuffer(); _fullscreen = _cocoa_subdriver->IsFullscreen(); - BlitterFactoryBase::GetCurrentBlitter()->PostResize(); + BlitterFactory::GetCurrentBlitter()->PostResize(); GameSizeChanged(); } @@ -284,18 +395,15 @@ void QZ_GameSizeChanged() /* 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 */ @@ -303,7 +411,7 @@ void QZ_GameSizeChanged() 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 */ @@ -311,7 +419,7 @@ void QZ_GameSizeChanged() 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; } @@ -326,6 +434,8 @@ void QZ_GameSizeChanged() { if (!_cocoa_video_started) return; + [ _ottd_main unregisterObserver ]; + delete _cocoa_subdriver; _cocoa_subdriver = NULL; @@ -351,7 +461,7 @@ void QZ_GameSizeChanged() 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) { @@ -385,7 +495,11 @@ void QZ_GameSizeChanged() */ void VideoDriver_Cocoa::MainLoop() { - /* Start the main event loop */ + /* Restart game loop if it was already running (e.g. after bootstrapping), + * otherwise this call is a no-op. */ + [ [ NSNotificationCenter defaultCenter ] postNotificationName:OTTDMainLaunchGameEngine object:nil ]; + + /* Start the main event loop. */ [ NSApp run ]; } @@ -400,7 +514,7 @@ void QZ_GameSizeChanged() { 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(); @@ -425,7 +539,7 @@ void QZ_GameSizeChanged() 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; @@ -453,6 +567,22 @@ void QZ_GameSizeChanged() return this->ChangeResolution(_screen.width, _screen.height); } +/** + * An edit box lost the input focus. Abort character compositing if necessary. + */ +void VideoDriver_Cocoa::EditBoxLostFocus() +{ + if (_cocoa_subdriver != NULL) { + 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); +} + /** * Catch asserts prior to initialization of the videodriver. * @@ -467,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; } @@ -491,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; } @@ -548,8 +678,8 @@ - (void)setDriver:(CocoaSubdriver*)drv driver = drv; } /** - * Minimize the window - */ + * Minimize the window + */ - (void)miniaturize:(id)sender { /* make the alpha channel opaque so anim won't have holes in it */ @@ -608,18 +738,12 @@ - (void)appDidHide:(NSNotification*)note - (void)appWillUnhide:(NSNotification*)note { driver->SetPortAlphaOpaque (); - - /* save current visible surface */ - [ self cacheImageInRect:[ driver->cocoaview frame ] ]; } /** * Unhide and restore display plane and re-activate driver */ - (void)appDidUnhide:(NSNotification*)note { - /* restore cached image, since it may not be current, post expose event too */ - [ self restoreCachedImage ]; - driver->active = true; } /** @@ -644,6 +768,43 @@ - (id)initWithContentRect:(NSRect)contentRect styleMask:(NSUInteger)styleMask ba +/** + * Count the number of UTF-16 code points in a range of an UTF-8 string. + * @param from Start of the range. + * @param to End of the range. + * @return Number of UTF-16 code points in the range. + */ +static NSUInteger CountUtf16Units(const char *from, const char *to) +{ + NSUInteger i = 0; + + while (from < to) { + WChar c; + size_t len = Utf8Decode(&c, from); + i += len < 4 ? 1 : 2; // Watch for surrogate pairs. + from += len; + } + + return i; +} + +/** + * Advance an UTF-8 string by a number of equivalent UTF-16 code points. + * @param str UTF-8 string. + * @param count Number of UTF-16 code points to advance the string by. + * @return Advanced string pointer. + */ +static const char *Utf8AdvanceByUtf16Units(const char *str, NSUInteger count) +{ + for (NSUInteger i = 0; i < count && *str != '\0'; ) { + WChar c; + size_t len = Utf8Decode(&c, str); + i += len < 4 ? 1 : 2; // Watch for surrogates. + str += len; + } + + return str; +} @implementation OTTD_CocoaView /** @@ -708,7 +869,7 @@ - (void)resetCursorRects [ super resetCursorRects ]; [ self clearTrackingRect ]; [ self setTrackingRect ]; - [ self addCursorRect:[ self bounds ] cursor:[ NSCursor clearCocoaCursor ] ]; + [ self addCursorRect:[ self bounds ] cursor:(_game_mode == GM_BOOTSTRAP ? [ NSCursor arrowCursor ] : [ NSCursor clearCocoaCursor ]) ]; } /** * Prepare for moving the application window @@ -739,6 +900,200 @@ - (void)mouseExited:(NSEvent *)theEvent if (_cocoa_subdriver != NULL) UndrawMouseCursor(); _cursor.in_window = false; } + + +/** Insert the given text at the given range. */ +- (void)insertText:(id)aString replacementRange:(NSRange)replacementRange +{ + if (!EditBoxInGlobalFocus()) return; + + NSString *s = [ aString isKindOfClass:[ NSAttributedString class ] ] ? [ aString string ] : (NSString *)aString; + + const char *insert_point = NULL; + const char *replace_range = NULL; + if (replacementRange.location != NSNotFound) { + /* Calculate the part to be replaced. */ + insert_point = Utf8AdvanceByUtf16Units(_focused_window->GetFocusedText(), replacementRange.location); + replace_range = Utf8AdvanceByUtf16Units(insert_point, replacementRange.length); + } + + HandleTextInput(NULL, true); + HandleTextInput([ s UTF8String ], false, NULL, insert_point, replace_range); +} + +/** Insert the given text at the caret. */ +- (void)insertText:(id)aString +{ + [ self insertText:aString replacementRange:NSMakeRange(NSNotFound, 0) ]; +} + +/** Set a new marked text and reposition the caret. */ +- (void)setMarkedText:(id)aString selectedRange:(NSRange)selRange replacementRange:(NSRange)replacementRange +{ + if (!EditBoxInGlobalFocus()) return; + + NSString *s = [ aString isKindOfClass:[ NSAttributedString class ] ] ? [ aString string ] : (NSString *)aString; + + const char *utf8 = [ s UTF8String ]; + if (utf8 != NULL) { + const char *insert_point = NULL; + const char *replace_range = NULL; + if (replacementRange.location != NSNotFound) { + /* Calculate the part to be replaced. */ + NSRange marked = [ self markedRange ]; + insert_point = Utf8AdvanceByUtf16Units(_focused_window->GetFocusedText(), replacementRange.location + (marked.location != NSNotFound ? marked.location : 0u)); + replace_range = Utf8AdvanceByUtf16Units(insert_point, replacementRange.length); + } + + /* Convert caret index into a pointer in the UTF-8 string. */ + const char *selection = Utf8AdvanceByUtf16Units(utf8, selRange.location); + + HandleTextInput(utf8, true, selection, insert_point, replace_range); + } +} + +/** Set a new marked text and reposition the caret. */ +- (void)setMarkedText:(id)aString selectedRange:(NSRange)selRange +{ + [ self setMarkedText:aString selectedRange:selRange replacementRange:NSMakeRange(NSNotFound, 0) ]; +} + +/** Unmark the current marked text. */ +- (void)unmarkText +{ + HandleTextInput(NULL, true); +} + +/** Get the caret position. */ +- (NSRange)selectedRange +{ + if (!EditBoxInGlobalFocus()) return NSMakeRange(NSNotFound, 0); + + NSUInteger start = CountUtf16Units(_focused_window->GetFocusedText(), _focused_window->GetCaret()); + return NSMakeRange(start, 0); +} + +/** Get the currently marked range. */ +- (NSRange)markedRange +{ + if (!EditBoxInGlobalFocus()) return NSMakeRange(NSNotFound, 0); + + size_t mark_len; + const char *mark = _focused_window->GetMarkedText(&mark_len); + if (mark != NULL) { + NSUInteger start = CountUtf16Units(_focused_window->GetFocusedText(), mark); + NSUInteger len = CountUtf16Units(mark, mark + mark_len); + + return NSMakeRange(start, len); + } + + return NSMakeRange(NSNotFound, 0); +} + +/** Is any text marked? */ +- (BOOL)hasMarkedText +{ + if (!EditBoxInGlobalFocus()) return NO; + + size_t len; + return _focused_window->GetMarkedText(&len) != NULL; +} + +/** Get a string corresponding to the given range. */ +- (NSAttributedString *)attributedSubstringForProposedRange:(NSRange)theRange actualRange:(NSRangePointer)actualRange +{ + if (!EditBoxInGlobalFocus()) return nil; + + NSString *s = [ NSString stringWithUTF8String:_focused_window->GetFocusedText() ]; + NSRange valid_range = NSIntersectionRange(NSMakeRange(0, [ s length ]), theRange); + + if (actualRange != NULL) *actualRange = valid_range; + if (valid_range.length == 0) return nil; + + return [ [ [ NSAttributedString alloc ] initWithString:[ s substringWithRange:valid_range ] ] autorelease ]; +} + +/** Get a string corresponding to the given range. */ +- (NSAttributedString *)attributedSubstringFromRange:(NSRange)theRange +{ + return [ self attributedSubstringForProposedRange:theRange actualRange:NULL ]; +} + +/** Get the current edit box string. */ +- (NSAttributedString *)attributedString +{ + if (!EditBoxInGlobalFocus()) return [ [ [ NSAttributedString alloc ] initWithString:@"" ] autorelease ]; + + return [ [ [ NSAttributedString alloc ] initWithString:[ NSString stringWithUTF8String:_focused_window->GetFocusedText() ] ] autorelease ]; +} + +/** Get the character that is rendered at the given point. */ +- (NSUInteger)characterIndexForPoint:(NSPoint)thePoint +{ + if (!EditBoxInGlobalFocus()) return NSNotFound; + + NSPoint view_pt = [ self convertPoint:[ [ self window ] convertScreenToBase:thePoint ] fromView:nil ]; + + Point pt = { (int)view_pt.x, (int)[ self frame ].size.height - (int)view_pt.y }; + + const char *ch = _focused_window->GetTextCharacterAtPosition(pt); + if (ch == NULL) return NSNotFound; + + return CountUtf16Units(_focused_window->GetFocusedText(), ch); +} + +/** Get the bounding rect for the given range. */ +- (NSRect)firstRectForCharacterRange:(NSRange)aRange +{ + if (!EditBoxInGlobalFocus()) return NSMakeRect(0, 0, 0, 0); + + /* Convert range to UTF-8 string pointers. */ + const char *start = Utf8AdvanceByUtf16Units(_focused_window->GetFocusedText(), aRange.location); + const char *end = aRange.length != 0 ? Utf8AdvanceByUtf16Units(_focused_window->GetFocusedText(), aRange.location + aRange.length) : start; + + /* Get the bounding rect for the text range.*/ + Rect r = _focused_window->GetTextBoundingRect(start, end); + NSRect view_rect = NSMakeRect(_focused_window->left + r.left, [ self frame ].size.height - _focused_window->top - r.bottom, r.right - r.left, r.bottom - r.top); + +#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7 + if ([ [ self window ] respondsToSelector:@selector(convertRectToScreen:) ]) { + return [ [ self window ] convertRectToScreen:[ self convertRect:view_rect toView:nil ] ]; + } +#endif + + NSRect window_rect = [ self convertRect:view_rect toView:nil ]; + NSPoint origin = [ [ self window ] convertBaseToScreen:window_rect.origin ]; + return NSMakeRect(origin.x, origin.y, window_rect.size.width, window_rect.size.height); +} + +/** Get the bounding rect for the given range. */ +- (NSRect)firstRectForCharacterRange:(NSRange)aRange actualRange:(NSRangePointer)actualRange +{ + return [ self firstRectForCharacterRange:aRange ]; +} + +/** Get all string attributes that we can process for marked text. */ +- (NSArray*)validAttributesForMarkedText +{ + return [ NSArray array ]; +} + +/** Identifier for this text input instance. */ +#if MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_5 +- (long)conversationIdentifier +#else +- (NSInteger)conversationIdentifier +#endif +{ + return 0; +} + +/** Invoke the selector if we implement it. */ +- (void)doCommandBySelector:(SEL)aSelector +{ + if ([ self respondsToSelector:aSelector ]) [ self performSelector:aSelector ]; +} + @end @@ -776,6 +1131,14 @@ - (void)windowDidResignMain:(NSNotification*)aNotification { driver->active = false; } +/** Window entered fullscreen mode (10.7). */ +- (void)windowDidEnterFullScreen:(NSNotification *)aNotification +{ + NSPoint loc = [ driver->cocoaview convertPoint:[ [ aNotification object ] mouseLocationOutsideOfEventStream ] fromView:nil ]; + BOOL inside = ([ driver->cocoaview hitTest:loc ] == driver->cocoaview); + + if (inside) [ driver->cocoaview mouseEntered:NULL ]; +} @end diff --git a/src/video/cocoa/event.mm b/src/video/cocoa/event.mm index e9753fdc7..78785f8d0 100644 --- a/src/video/cocoa/event.mm +++ b/src/video/cocoa/event.mm @@ -34,7 +34,9 @@ #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" #import /* gettimeofday */ @@ -58,11 +60,28 @@ static unsigned int _current_mods; static bool _tab_is_down; static bool _emulating_right_button; +#if (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5) +static float _current_magnification; +#endif #ifdef _DEBUG static uint32 _tEvent; #endif +/* 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 && MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_6) +static const NSUInteger NSEventTypeMagnify = 30; +static const NSUInteger NSEventTypeEndGesture = 20; + +@interface NSEvent () +/* This message is valid for events of type NSEventTypeMagnify, on 10.5.2 or later */ +- (CGFloat)magnification WEAK_IMPORT_ATTRIBUTE; +@end +#endif + + static uint32 GetTick() { struct timeval tim; @@ -91,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: @@ -250,11 +269,13 @@ static uint32 QZ_MapKey(unsigned short sym) if (_current_mods & NSAlternateKeyMask) key |= WKC_ALT; if (_current_mods & NSCommandKeyMask) key |= (_settings_client.gui.right_mouse_btn_emulation != RMBE_CONTROL ? WKC_META : WKC_CTRL); - return key << 16; + 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; @@ -266,18 +287,38 @@ 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; } if (down) { - uint32 pressed_key = QZ_MapKey(keycode) | unicode; - HandleKeypress(pressed_key); + uint32 pressed_key = QZ_MapKey(keycode); + + static bool console = false; + + if (pressed_key == WKC_BACKQUOTE && 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() || ((pressed_key & ~WKC_SPECIAL_KEYS) <= WKC_TAB) || 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) @@ -382,7 +423,6 @@ static bool QZ_PollEvent() NSString *chars; NSPoint pt; - NSText *fieldEditor; switch ([ event type ]) { case NSMouseMoved: case NSOtherMouseDragged: @@ -499,17 +539,19 @@ static bool QZ_PollEvent() break; } - fieldEditor = [[ event window ] fieldEditor:YES forObject:nil ]; - [ fieldEditor setString:@"" ]; - [ fieldEditor interpretKeyEvents: [ NSArray arrayWithObject:event ] ]; - - chars = [ event characters ]; - if ([ chars length ] == 0) { - QZ_KeyEvent([ event keyCode ], 0, YES); + if (EditBoxInGlobalFocus()) { + if (QZ_KeyEvent([ event keyCode ], 0, YES)) { + [ _cocoa_subdriver->cocoaview interpretKeyEvents:[ NSArray arrayWithObject:event ] ]; + } } else { - QZ_KeyEvent([ event keyCode ], [ chars characterAtIndex:0 ], YES); - for (uint i = 1; i < [ chars length ]; i++) { - QZ_KeyEvent(0, [ chars characterAtIndex:i ], YES); + 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); + } } } break; @@ -542,6 +584,38 @@ static bool QZ_PollEvent() _cursor.v_wheel -= (int)([ event deltaY ] * 5 * _settings_client.gui.scrollwheel_multiplier); break; +#if (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5) + case NSEventTypeMagnify: + /* Pinch open or close gesture. */ + _current_magnification += [ event magnification ] * 5.0f; + + while (_current_magnification >= 1.0f) { + _current_magnification -= 1.0f; + _cursor.wheel++; + HandleMouseEvents(); + } + while (_current_magnification <= -1.0f) { + _current_magnification += 1.0f; + _cursor.wheel--; + HandleMouseEvents(); + } + break; + + case NSEventTypeEndGesture: + /* Gesture ended. */ + _current_magnification = 0.0f; + break; +#endif + + case NSCursorUpdate: + case NSMouseEntered: + case NSMouseExited: + /* Catch these events if the cursor is dragging. During dragging, we reset + * the mouse position programmatically, which would trigger OS X to show + * the default arrow cursor if the events are propagated. */ + if (_cursor.fix_at) break; + /* FALL THROUGH */ + default: [ NSApp sendEvent:event ]; } diff --git a/src/video/cocoa/fullscreen.mm b/src/video/cocoa/fullscreen.mm index c8148edfc..4d2b1c588 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 @@ -74,81 +76,7 @@ - (void) setFrame:(NSRect)frame } @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 @@ -313,7 +241,7 @@ bool SetVideoMode(int w, int h, int bpp) * disable until a replacement can be found. */ if (MacOSVersionIsAtLeast(10, 7, 0)) { this->window_buffer = NULL; - this->window_pitch = NULL; + this->window_pitch = 0; } else { #if (MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_7) this->window_buffer = CGDisplayBaseAddress(this->display_id); @@ -357,7 +285,7 @@ bool SetVideoMode(int w, int h, int bpp) this->UpdatePalette(0, 256); - /* Move the mouse cursor to approx the same location */ + /* Move the mouse cursor to approx. the same location */ CGPoint display_mouseLocation; display_mouseLocation.x = mouseLocation.x * this->device_width; display_mouseLocation.y = this->device_height - (mouseLocation.y * this->device_height); @@ -592,4 +520,5 @@ virtual bool IsActive() 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 5d45dcbab..c93a1f6fb 100644 --- a/src/video/cocoa/wnd_quartz.mm +++ b/src/video/cocoa/wnd_quartz.mm @@ -34,6 +34,13 @@ #include "../../core/math_func.hpp" #include "../../gfx_func.h" +/* On some old versions of MAC OS this may not be defined. + * Those versions generally only produce code for PPC. So it should be safe to + * set this to 0. */ +#ifndef kCGBitmapByteOrder32Host +#define kCGBitmapByteOrder32Host 0 +#endif + /** * Important notice regarding all modifications!!!!!!! * There are certain limitations because the file is objective C++. @@ -50,7 +57,7 @@ - (void)setDriver:(WindowQuartzSubdriver*)drv; - (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. @@ -144,7 +151,7 @@ - (void)drawRect:(NSRect)invalidRect /* Calculate total area we are blitting */ uint32 blitArea = 0; for (int n = 0; n < dirtyRectCount; n++) { - blitArea += dirtyRects[n].size.width * dirtyRects[n].size.height; + blitArea += (uint32)(dirtyRects[n].size.width * dirtyRects[n].size.height); } /* @@ -240,12 +247,12 @@ - (void)drawRect:(NSRect)invalidRect */ bool WindowQuartzSubdriver::ToggleFullscreen() { -#if (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7) - [this->window toggleFullScreen:this->window]; - return true; -#else + if ([ this->window respondsToSelector:@selector(toggleFullScreen:) ]) { + [ this->window performSelector:@selector(toggleFullScreen:) withObject:this->window ]; + return true; + } + return false; -#endif } bool WindowQuartzSubdriver::SetVideoMode(int width, int height, int bpp) @@ -280,26 +287,27 @@ - (void)drawRect:(NSRect)invalidRect return false; } +#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5 /* Add built in full-screen support when available (OS X 10.7 and higher) * This code actually compiles for 10.5 and later, but only makes sense in conjunction * with the quartz fullscreen support as found only in 10.7 and later */ -#if (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7) if ([this->window respondsToSelector:@selector(toggleFullScreen:)]) { - /* Constants needed to build on pre-10.7 systems. Source: NSWindow documentation. */ +#if MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_7 + /* Constants needed to build on pre-10.7 SDKs. Source: NSWindow documentation. */ const int NSWindowCollectionBehaviorFullScreenPrimary = 1 << 7; const int NSWindowFullScreenButton = 7; +#endif - NSWindowCollectionBehavior behavior = [this->window collectionBehavior]; + NSWindowCollectionBehavior behavior = [ this->window collectionBehavior ]; behavior |= NSWindowCollectionBehaviorFullScreenPrimary; - [window setCollectionBehavior:behavior]; + [ this->window setCollectionBehavior:behavior ]; - NSButton* fullscreenButton = - [this->window standardWindowButton:NSWindowFullScreenButton]; - [fullscreenButton setAction:@selector(toggleFullScreen:)]; - [fullscreenButton setTarget:this->window]; + NSButton* fullscreenButton = [ this->window standardWindowButton:NSWindowFullScreenButton ]; + [ fullscreenButton setAction:@selector(toggleFullScreen:) ]; + [ fullscreenButton setTarget:this->window ]; - [this->window setCollectionBehavior: NSWindowCollectionBehaviorFullScreenPrimary]; + [ this->window setCollectionBehavior: NSWindowCollectionBehaviorFullScreenPrimary ]; } #endif @@ -327,10 +335,10 @@ - (void)drawRect:(NSRect)invalidRect [ this->window setContentSize:contentRect.size ]; /* Ensure frame height - title bar height >= view height */ - contentRect.size.height = Clamp(height, 0, [ this->window frame ].size.height - 22 /* 22 is the height of title bar of window*/); + contentRect.size.height = Clamp(height, 0, (int)[ this->window frame ].size.height - 22 /* 22 is the height of title bar of window*/); if (this->cocoaview != nil) { - height = contentRect.size.height; + height = (int)contentRect.size.height; [ this->cocoaview setFrameSize:contentRect.size ]; } } @@ -513,8 +521,21 @@ - (void)drawRect:(NSRect)invalidRect NSPoint WindowQuartzSubdriver::GetMouseLocation(NSEvent *event) { - NSPoint pt = [ event locationInWindow ]; - pt = [ this->cocoaview convertPoint:pt fromView:nil ]; + NSPoint pt; + + if ( [ event window ] == nil) { +#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7 + if ([ this->cocoaview respondsToSelector:@selector(convertRectFromScreen:) ]) { + pt = [ this->cocoaview convertPoint:[ [ this->cocoaview window ] convertRectFromScreen:NSMakeRect([ event locationInWindow ].x, [ event locationInWindow ].y, 0, 0) ].origin fromView:nil ]; + } + else +#endif + { + pt = [ this->cocoaview convertPoint:[ [ this->cocoaview window ] convertScreenToBase:[ event locationInWindow ] ] fromView:nil ]; + } + } else { + pt = [ event locationInWindow ]; + } pt.y = this->window_height - pt.y; @@ -548,8 +569,8 @@ - (void)drawRect:(NSRect)invalidRect NSRect newframe = [ this->cocoaview frame ]; - this->window_width = newframe.size.width; - this->window_height = newframe.size.height; + this->window_width = (int)newframe.size.width; + this->window_height = (int)newframe.size.height; /* Create Core Graphics Context */ free(this->window_buffer); diff --git a/src/video/cocoa/wnd_quickdraw.mm b/src/video/cocoa/wnd_quickdraw.mm index 97dfac7d5..df10d8773 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. @@ -158,7 +158,7 @@ this->GetDeviceInfo(); if (bpp > this->device_depth) { - DEBUG(driver, 0, "Cannot use a blitter with a higer screen depth than the display when running in windowed mode."); + DEBUG(driver, 0, "Cannot use a blitter with a higher screen depth than the display when running in windowed mode."); this->setup = false; return false; } diff --git a/src/video/dedicated_v.cpp b/src/video/dedicated_v.cpp index cdc598339..bfe853e9a 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 */ @@ -237,15 +242,13 @@ static void DedicatedHandleKeyInput() #if defined(UNIX) || defined(__OS2__) || defined(PSP) if (fgets(input_line, lengthof(input_line), stdin) == NULL) return; #else - /* Handle console input, and singal console thread, it can accept input again */ + /* Handle console input, and signal console thread, it can accept input again */ assert_compile(lengthof(_win_console_thread_buffer) <= lengthof(input_line)); strecpy(input_line, _win_console_thread_buffer, lastof(input_line)); 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 7d449d159..0c1477d66 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 @@ class VideoDriver_Dedicated: public VideoDriver { }; /** 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 6fdb87648..5037814e5 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 9bc26c4ef..9e04e177e 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 @@ class VideoDriver_Null: public VideoDriver { }; /** 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 34d31212e..d59ab20d4 100644 --- a/src/video/sdl_v.cpp +++ b/src/video/sdl_v.cpp @@ -26,9 +26,12 @@ #include "sdl_v.h" #include +#include "../safeguards.h" + static FVideoDriver_SDL iFVideoDriver_SDL; static SDL_Surface *_sdl_screen; +static SDL_Surface *_sdl_realscreen; static bool _all_modes; /** Whether the drawing is/may be done in a separate thread. */ @@ -44,6 +47,8 @@ static Palette _local_palette; #define MAX_DIRTY_RECTS 100 static SDL_Rect _dirty_rects[MAX_DIRTY_RECTS]; static int _num_dirty_rects; +static int _use_hwpalette; +static int _requested_hwpalette; /* Did we request a HWPALETTE for the current video mode? */ void VideoDriver_SDL::MakeDirty(int left, int top, int width, int height) { @@ -56,7 +61,7 @@ void VideoDriver_SDL::MakeDirty(int left, int top, int width, int height) _num_dirty_rects++; } -static void UpdatePalette() +static void UpdatePalette(bool init = false) { SDL_Color pal[256]; @@ -68,6 +73,45 @@ static void UpdatePalette() } SDL_CALL SDL_SetColors(_sdl_screen, pal, _local_palette.first_dirty, _local_palette.count_dirty); + + if (_sdl_screen != _sdl_realscreen && init) { + /* When using a shadow surface, also set our palette on the real screen. This lets SDL + * allocate as much colors (or approximations) as + * possible, instead of using only the default SDL + * palette. This allows us to get more colors exactly + * right and might allow using better approximations for + * other colors. + * + * Note that colors allocations are tried in-order, so + * this favors colors further up into the palette. Also + * note that if two colors from the same animation + * sequence are approximated using the same color, that + * animation will stop working. + * + * Since changing the system palette causes the colours + * to change right away, and allocations might + * drastically change, we can't use this for animation, + * since that could cause weird coloring between the + * palette change and the blitting below, so we only set + * the real palette during initialisation. + */ + SDL_CALL SDL_SetColors(_sdl_realscreen, pal, _local_palette.first_dirty, _local_palette.count_dirty); + } + + if (_sdl_screen != _sdl_realscreen && !init) { + /* We're not using real hardware palette, but are letting SDL + * approximate the palette during shadow -> screen copy. To + * change the palette, we need to recopy the entire screen. + * + * Note that this operation can slow down the rendering + * considerably, especially since changing the shadow + * palette will need the next blit to re-detect the + * best mapping of shadow palette colors to real palette + * colors from scratch. + */ + SDL_CALL SDL_BlitSurface(_sdl_screen, NULL, _sdl_realscreen, NULL); + SDL_CALL SDL_UpdateRect(_sdl_realscreen, 0, 0, 0, 0); + } } static void InitPalette() @@ -75,13 +119,13 @@ static void InitPalette() _local_palette = _cur_palette; _local_palette.first_dirty = 0; _local_palette.count_dirty = 256; - UpdatePalette(); + UpdatePalette(true); } 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: @@ -109,9 +153,17 @@ static void DrawSurfaceToScreen() _num_dirty_rects = 0; if (n > MAX_DIRTY_RECTS) { - SDL_CALL SDL_UpdateRect(_sdl_screen, 0, 0, 0, 0); + if (_sdl_screen != _sdl_realscreen) { + SDL_CALL SDL_BlitSurface(_sdl_screen, NULL, _sdl_realscreen, NULL); + } + SDL_CALL SDL_UpdateRect(_sdl_realscreen, 0, 0, 0, 0); } else { - SDL_CALL SDL_UpdateRects(_sdl_screen, n, _dirty_rects); + if (_sdl_screen != _sdl_realscreen) { + for (int i = 0; i < n; i++) { + SDL_CALL SDL_BlitSurface(_sdl_screen, &_dirty_rects[i], _sdl_realscreen, &_dirty_rects[i]); + } + } + SDL_CALL SDL_UpdateRects(_sdl_realscreen, n, _dirty_rects); } } @@ -216,11 +268,12 @@ static void GetAvailableVideoMode(uint *w, uint *h) #define SDL_LoadBMP(file) SDL_LoadBMP_RW(SDL_CALL SDL_RWFromFile(file, "rb"), 1) #endif -static bool CreateMainSurface(uint w, uint h) +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); @@ -229,7 +282,7 @@ static bool 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) { @@ -242,12 +295,96 @@ static bool CreateMainSurface(uint w, uint h) } } + if (_use_hwpalette == 2) { + /* Default is to autodetect when to use SDL_HWPALETTE. + * In this case, SDL_HWPALETTE is only used for 8bpp + * blitters in fullscreen. + * + * When using an 8bpp blitter on a 8bpp system in + * windowed mode with SDL_HWPALETTE, OpenTTD will claim + * the system palette, making all other applications + * get the wrong colours. In this case, we're better of + * trying to approximate the colors we need using system + * colors, using a shadow surface (see below). + * + * On a 32bpp system, SDL_HWPALETTE is ignored, so it + * doesn't matter what we do. + * + * When using a 32bpp blitter on a 8bpp system, setting + * SDL_HWPALETTE messes up rendering (at least on X11), + * so we don't do that. In this case, SDL takes care of + * color approximation using its own shadow surface + * (which we can't force in 8bpp on 8bpp mode, + * unfortunately). + */ + want_hwpalette = bpp == 8 && _fullscreen && _support8bpp == S8BPP_HARDWARE; + } else { + /* User specified a value manually */ + want_hwpalette = _use_hwpalette; + } + + if (want_hwpalette) DEBUG(driver, 1, "SDL: requesting hardware palete"); + + /* Free any previously allocated shadow surface */ + if (_sdl_screen != NULL && _sdl_screen != _sdl_realscreen) SDL_CALL SDL_FreeSurface(_sdl_screen); + + if (_sdl_realscreen != NULL) { + if (_requested_hwpalette != want_hwpalette) { + /* SDL (at least the X11 driver), reuses the + * same window and palette settings when the bpp + * (and a few flags) are the same. Since we need + * to hwpalette value to change (in particular + * when switching between fullscreen and + * windowed), we restart the entire video + * subsystem to force creating a new window. + */ + DEBUG(driver, 0, "SDL: Restarting SDL video subsystem, to force hwpalette change"); + SDL_CALL SDL_QuitSubSystem(SDL_INIT_VIDEO); + SDL_CALL SDL_InitSubSystem(SDL_INIT_VIDEO); + ClaimMousePointer(); + SetupKeyboard(); + } + } + /* Remember if we wanted a hwpalette. We can't reliably query + * SDL for the SDL_HWPALETTE flag, since it might get set even + * though we didn't ask for it (when SDL creates a shadow + * surface, for example). */ + _requested_hwpalette = want_hwpalette; + /* DO NOT CHANGE TO HWSURFACE, IT DOES NOT WORK */ - newscreen = SDL_CALL SDL_SetVideoMode(w, h, bpp, SDL_SWSURFACE | SDL_HWPALETTE | (_fullscreen ? SDL_FULLSCREEN : SDL_RESIZABLE)); + newscreen = SDL_CALL SDL_SetVideoMode(w, h, bpp, SDL_SWSURFACE | (want_hwpalette ? SDL_HWPALETTE : 0) | (_fullscreen ? SDL_FULLSCREEN : SDL_RESIZABLE)); if (newscreen == NULL) { DEBUG(driver, 0, "SDL: Couldn't allocate a window to draw on"); return false; } + _sdl_realscreen = newscreen; + + if (bpp == 8 && (_sdl_realscreen->flags & SDL_HWPALETTE) != SDL_HWPALETTE) { + /* Using an 8bpp blitter, if we didn't get a hardware + * palette (most likely because we didn't request one, + * see above), we'll have to set up a shadow surface to + * render on. + * + * Our palette will be applied to this shadow surface, + * while the real screen surface will use the shared + * system palette (which will partly contain our colors, + * but most likely will not have enough free color cells + * for all of our colors). SDL can use these two + * palettes at blit time to approximate colors used in + * the shadow surface using system colors automatically. + * + * Note that when using an 8bpp blitter on a 32bpp + * system, SDL will create an internal shadow surface. + * This shadow surface will have SDL_HWPALLETE set, so + * we won't create a second shadow surface in this case. + */ + DEBUG(driver, 1, "SDL: using shadow surface"); + newscreen = SDL_CALL SDL_CreateRGBSurface(SDL_SWSURFACE, w, h, bpp, 0, 0, 0, 0); + if (newscreen == NULL) { + DEBUG(driver, 0, "SDL: Couldn't allocate a shadow surface to draw on"); + return false; + } + } /* Delay drawing for this cycle; the next cycle will redraw the whole screen */ _num_dirty_rects = 0; @@ -258,7 +395,12 @@ static bool CreateMainSurface(uint w, uint h) _screen.dst_ptr = newscreen->pixels; _sdl_screen = newscreen; - Blitter *blitter = BlitterFactoryBase::GetCurrentBlitter(); + /* When in full screen, we will always have the mouse cursor + * within the window, even though SDL does not give us the + * appropriate event to know this. */ + if (_fullscreen) _cursor.in_window = true; + + Blitter *blitter = BlitterFactory::GetCurrentBlitter(); blitter->PostResize(); InitPalette(); @@ -269,14 +411,14 @@ static bool 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(); @@ -355,7 +497,7 @@ static const VkMapping _vk_mapping[] = { AS(SDLK_PERIOD, WKC_PERIOD) }; -static uint32 ConvertSdlKeyIntoMy(SDL_keysym *sym) +static uint ConvertSdlKeyIntoMy(SDL_keysym *sym, WChar *character) { const VkMapping *map; uint key = 0; @@ -391,10 +533,11 @@ static uint32 ConvertSdlKeyIntoMy(SDL_keysym *sym) if (sym->mod & KMOD_CTRL) key |= WKC_CTRL; if (sym->mod & KMOD_ALT) key |= WKC_ALT; - return (key << 16) + sym->unicode; + *character = sym->unicode; + return key; } -static int PollEvent() +int VideoDriver_SDL::PollEvent() { SDL_Event ev; @@ -477,7 +620,9 @@ static int PollEvent() (ev.key.keysym.sym == SDLK_RETURN || ev.key.keysym.sym == SDLK_f)) { ToggleFullScreen(!_fullscreen); } else { - HandleKeypress(ConvertSdlKeyIntoMy(&ev.key.keysym)); + WChar character; + uint keycode = ConvertSdlKeyIntoMy(&ev.key.keysym, &character); + HandleKeypress(keycode, character); } break; @@ -501,6 +646,7 @@ static int PollEvent() const char *VideoDriver_SDL::Start(const char * const *parm) { char buf[30]; + _use_hwpalette = GetDriverParamInt(parm, "hw_palette", 2); const char *s = SdlOpen(SDL_INIT_VIDEO); if (s != NULL) return s; @@ -514,15 +660,19 @@ const char *VideoDriver_SDL::Start(const char * const *parm) DEBUG(driver, 1, "SDL: using driver '%s'", buf); MarkWholeScreenDirty(); - - SDL_CALL SDL_EnableKeyRepeat(SDL_DEFAULT_REPEAT_DELAY, SDL_DEFAULT_REPEAT_INTERVAL); - SDL_CALL SDL_EnableUNICODE(1); + SetupKeyboard(); _draw_threaded = GetDriverParam(parm, "no_threads") == NULL && GetDriverParam(parm, "no_thread") == NULL; return NULL; } +void VideoDriver_SDL::SetupKeyboard() +{ + SDL_CALL SDL_EnableKeyRepeat(SDL_DEFAULT_REPEAT_DELAY, SDL_DEFAULT_REPEAT_INTERVAL); + SDL_CALL SDL_EnableUNICODE(1); +} + void VideoDriver_SDL::Stop() { SdlClose(SDL_INIT_VIDEO); @@ -555,6 +705,7 @@ void VideoDriver_SDL::MainLoop() if (!_draw_threaded) { _draw_mutex->EndCritical(); delete _draw_mutex; + _draw_mutex = NULL; } else { /* Wait till the draw mutex has started itself. */ _draw_mutex->WaitForSignal(); @@ -620,28 +771,28 @@ void VideoDriver_SDL::MainLoop() #endif if (old_ctrl_pressed != _ctrl_pressed) HandleCtrlChanged(); - /* The gameloop is the part that can run asynchroniously. The rest + /* The gameloop is the part that can run asynchronously. The rest * except sleeping can't. */ - if (_draw_threaded) _draw_mutex->EndCritical(); + if (_draw_mutex != NULL) _draw_mutex->EndCritical(); GameLoop(); - if (_draw_threaded) _draw_mutex->BeginCritical(); + if (_draw_mutex != NULL) _draw_mutex->BeginCritical(); UpdateWindows(); _local_palette = _cur_palette; } else { /* Release the thread while sleeping */ - if (_draw_threaded) _draw_mutex->EndCritical(); + if (_draw_mutex != NULL) _draw_mutex->EndCritical(); CSleep(1); - if (_draw_threaded) _draw_mutex->BeginCritical(); + if (_draw_mutex != NULL) _draw_mutex->BeginCritical(); NetworkDrawChatMessage(); DrawMouseCursor(); } /* End of the critical part. */ - if (_draw_threaded && !HasModalProgress()) { + if (_draw_mutex != NULL && !HasModalProgress()) { _draw_mutex->SendSignal(); } else { /* Oh, we didn't have threads, then just draw unthreaded */ @@ -650,7 +801,7 @@ void VideoDriver_SDL::MainLoop() } } - if (_draw_threaded) { + if (_draw_mutex != NULL) { _draw_continue = false; /* Sending signal if there is no thread blocked * is very valid and results in noop */ @@ -660,32 +811,42 @@ void VideoDriver_SDL::MainLoop() delete _draw_mutex; delete _draw_thread; + + _draw_mutex = NULL; + _draw_thread = NULL; } } bool VideoDriver_SDL::ChangeResolution(int w, int h) { - if (_draw_threaded) _draw_mutex->BeginCritical(); + if (_draw_mutex != NULL) _draw_mutex->BeginCritical(true); bool ret = CreateMainSurface(w, h); - if (_draw_threaded) _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 e4df2a30a..730f82b93 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); @@ -34,15 +34,17 @@ class VideoDriver_SDL: public VideoDriver { /* virtual */ bool ClaimMousePointer(); /* virtual */ const char *GetName() const { return "sdl"; } +private: + int PollEvent(); + bool CreateMainSurface(uint w, uint h); + void SetupKeyboard(); }; /** 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 306fe2803..916044d35 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. @@ -73,28 +73,20 @@ class VideoDriver: public Driver { { return true; } -}; - -/** 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); } + /** + * An edit box lost the input focus. Abort character compositing if necessary. + */ + virtual void EditBoxLostFocus() {} /** - * 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 2caa839fa..a7487bfb5 100644 --- a/src/video/win32_v.cpp +++ b/src/video/win32_v.cpp @@ -21,8 +21,18 @@ #include "../texteff.hpp" #include "../thread/thread.h" #include "../progress.h" +#include "../window_gui.h" +#include "../window_func.h" #include "win32_v.h" #include +#include + +#include "../safeguards.h" + +/* Missing define in MinGW headers. */ +#ifndef MAPVK_VK_TO_CHAR +#define MAPVK_VK_TO_CHAR (2) +#endif static struct { HWND main_wnd; @@ -42,10 +52,9 @@ static struct { bool _force_full_redraw; bool _window_maximize; uint _display_hz; -uint _fullscreen_bpp; static Dimension _bck_resolution; -#if !defined(UNICODE) -uint _codepage; +#if !defined(WINCE) || _WIN32_WCE >= 0x400 +DWORD _imm_props; #endif /** Whether the drawing is/may be done in a separate thread. */ @@ -54,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. */ @@ -181,15 +192,9 @@ static void ClientSizeChanged(int w, int h) _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(); - } } } @@ -203,7 +208,6 @@ int RedrawScreenDebug() HBITMAP old_bmp; HPALETTE old_palette; - _screen.dst_ptr = _wnd.buffer_bits; UpdateWindows(); dc = GetDC(_wnd.main_wnd); @@ -267,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; } @@ -349,10 +351,10 @@ bool VideoDriver_Win32::MakeWindow(bool full_screen) } } - BlitterFactoryBase::GetCurrentBlitter()->PostResize(); + BlitterFactory::GetCurrentBlitter()->PostResize(); GameSizeChanged(); // invalidate all windows, force redraw - return true; // the request succedded + return true; // the request succeeded } /** Do palette animation and blit to the window. */ @@ -363,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: @@ -393,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(); @@ -429,6 +427,215 @@ static void PaintWindowThread(void *) _draw_thread->Exit(); } +/** Forward key presses to the window system. */ +static LRESULT HandleCharMsg(uint keycode, WChar charcode) +{ +#if !defined(UNICODE) + static char prev_char = 0; + + char input[2] = {(char)charcode, 0}; + int input_len = 1; + + if (prev_char != 0) { + /* We stored a lead byte previously, combine it with this byte. */ + input[0] = prev_char; + input[1] = (char)charcode; + input_len = 2; + } else if (IsDBCSLeadByte(charcode)) { + /* We got a lead byte, store and exit. */ + prev_char = charcode; + return 0; + } + prev_char = 0; + + wchar_t w[2]; // Can get up to two code points as a result. + int len = MultiByteToWideChar(CP_ACP, 0, input, input_len, w, 2); + switch (len) { + case 1: // Normal unicode character. + charcode = w[0]; + break; + + case 2: // Got an UTF-16 surrogate pair back. + charcode = Utf16DecodeSurrogate(w[0], w[1]); + break; + + default: // Some kind of error. + DEBUG(driver, 1, "Invalid DBCS character sequence encountered, dropping input"); + charcode = 0; + break; + } +#else + static WChar prev_char = 0; + + /* Did we get a lead surrogate? If yes, store and exit. */ + if (Utf16IsLeadSurrogate(charcode)) { + if (prev_char != 0) DEBUG(driver, 1, "Got two UTF-16 lead surrogates, dropping the first one"); + prev_char = charcode; + return 0; + } + + /* Stored lead surrogate and incoming trail surrogate? Combine and forward to input handling. */ + if (prev_char != 0) { + if (Utf16IsTrailSurrogate(charcode)) { + charcode = Utf16DecodeSurrogate(prev_char, charcode); + } else { + DEBUG(driver, 1, "Got an UTF-16 lead surrogate without a trail surrogate, dropping the lead surrogate"); + } + } + prev_char = 0; +#endif /* UNICODE */ + + HandleKeypress(keycode, charcode); + + return 0; +} + +#if !defined(WINCE) || _WIN32_WCE >= 0x400 +/** Should we draw the composition string ourself, i.e is this a normal IME? */ +static bool DrawIMECompositionString() +{ + return (_imm_props & IME_PROP_AT_CARET) && !(_imm_props & IME_PROP_SPECIAL_UI); +} + +/** Set position of the composition window to the caret position. */ +static void SetCompositionPos(HWND hwnd) +{ + HIMC hIMC = ImmGetContext(hwnd); + if (hIMC != NULL) { + COMPOSITIONFORM cf; + cf.dwStyle = CFS_POINT; + + if (EditBoxInGlobalFocus()) { + /* Get caret position. */ + Point pt = _focused_window->GetCaretPosition(); + cf.ptCurrentPos.x = _focused_window->left + pt.x; + cf.ptCurrentPos.y = _focused_window->top + pt.y; + } else { + cf.ptCurrentPos.x = 0; + cf.ptCurrentPos.y = 0; + } + ImmSetCompositionWindow(hIMC, &cf); + } + ImmReleaseContext(hwnd, hIMC); +} + +/** Set the position of the candidate window. */ +static void SetCandidatePos(HWND hwnd) +{ + HIMC hIMC = ImmGetContext(hwnd); + if (hIMC != NULL) { + CANDIDATEFORM cf; + cf.dwIndex = 0; + cf.dwStyle = CFS_EXCLUDE; + + if (EditBoxInGlobalFocus()) { + Point pt = _focused_window->GetCaretPosition(); + cf.ptCurrentPos.x = _focused_window->left + pt.x; + cf.ptCurrentPos.y = _focused_window->top + pt.y; + if (_focused_window->window_class == WC_CONSOLE) { + cf.rcArea.left = _focused_window->left; + cf.rcArea.top = _focused_window->top; + cf.rcArea.right = _focused_window->left + _focused_window->width; + cf.rcArea.bottom = _focused_window->top + _focused_window->height; + } else { + cf.rcArea.left = _focused_window->left + _focused_window->nested_focus->pos_x; + cf.rcArea.top = _focused_window->top + _focused_window->nested_focus->pos_y; + cf.rcArea.right = cf.rcArea.left + _focused_window->nested_focus->current_x; + cf.rcArea.bottom = cf.rcArea.top + _focused_window->nested_focus->current_y; + } + } else { + cf.ptCurrentPos.x = 0; + cf.ptCurrentPos.y = 0; + SetRectEmpty(&cf.rcArea); + } + ImmSetCandidateWindow(hIMC, &cf); + } + ImmReleaseContext(hwnd, hIMC); +} + +/** Handle WM_IME_COMPOSITION messages. */ +static LRESULT HandleIMEComposition(HWND hwnd, WPARAM wParam, LPARAM lParam) +{ + HIMC hIMC = ImmGetContext(hwnd); + + if (hIMC != NULL) { + if (lParam & GCS_RESULTSTR) { + /* Read result string from the IME. */ + LONG len = ImmGetCompositionString(hIMC, GCS_RESULTSTR, NULL, 0); // Length is always in bytes, even in UNICODE build. + TCHAR *str = (TCHAR *)_alloca(len + sizeof(TCHAR)); + len = ImmGetCompositionString(hIMC, GCS_RESULTSTR, str, len); + str[len / sizeof(TCHAR)] = '\0'; + + /* Transmit text to windowing system. */ + if (len > 0) { + HandleTextInput(NULL, true); // Clear marked string. + HandleTextInput(FS2OTTD(str)); + } + SetCompositionPos(hwnd); + + /* Don't pass the result string on to the default window proc. */ + lParam &= ~(GCS_RESULTSTR | GCS_RESULTCLAUSE | GCS_RESULTREADCLAUSE | GCS_RESULTREADSTR); + } + + if ((lParam & GCS_COMPSTR) && DrawIMECompositionString()) { + /* Read composition string from the IME. */ + LONG len = ImmGetCompositionString(hIMC, GCS_COMPSTR, NULL, 0); // Length is always in bytes, even in UNICODE build. + TCHAR *str = (TCHAR *)_alloca(len + sizeof(TCHAR)); + len = ImmGetCompositionString(hIMC, GCS_COMPSTR, str, len); + str[len / sizeof(TCHAR)] = '\0'; + + if (len > 0) { + static char utf8_buf[1024]; + convert_from_fs(str, utf8_buf, lengthof(utf8_buf)); + + /* Convert caret position from bytes in the input string to a position in the UTF-8 encoded string. */ + LONG caret_bytes = ImmGetCompositionString(hIMC, GCS_CURSORPOS, NULL, 0); + const char *caret = utf8_buf; + for (const TCHAR *c = str; *c != '\0' && *caret != '\0' && caret_bytes > 0; c++, caret_bytes--) { + /* Skip DBCS lead bytes or leading surrogates. */ +#ifdef UNICODE + if (Utf16IsLeadSurrogate(*c)) { +#else + if (IsDBCSLeadByte(*c)) { +#endif + c++; + caret_bytes--; + } + Utf8Consume(&caret); + } + + HandleTextInput(utf8_buf, true, caret); + } else { + HandleTextInput(NULL, true); + } + + lParam &= ~(GCS_COMPSTR | GCS_COMPATTR | GCS_COMPCLAUSE | GCS_CURSORPOS | GCS_DELTASTART); + } + } + ImmReleaseContext(hwnd, hIMC); + + return lParam != 0 ? DefWindowProc(hwnd, WM_IME_COMPOSITION, wParam, lParam) : 0; +} + +/** Clear the current composition string. */ +static void CancelIMEComposition(HWND hwnd) +{ + HIMC hIMC = ImmGetContext(hwnd); + if (hIMC != NULL) ImmNotifyIME(hIMC, NI_COMPOSITIONSTR, CPS_CANCEL, 0); + ImmReleaseContext(hwnd, hIMC); + /* Clear any marked string from the current edit box. */ + HandleTextInput(NULL, true); +} + +#else + +static bool DrawIMECompositionString() { return false; } +static void SetCompositionPos(HWND hwnd) {} +static void SetCandidatePos(HWND hwnd) {} +static void CancelIMEComposition(HWND hwnd) {} + +#endif /* !defined(WINCE) || _WIN32_WCE >= 0x400 */ + static LRESULT CALLBACK WndProcGdi(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { static uint32 keycode = 0; @@ -438,6 +645,10 @@ static LRESULT CALLBACK WndProcGdi(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lP switch (msg) { case WM_CREATE: SetTimer(hwnd, TID_POLLMOUSE, MOUSE_POLL_DELAY, (TIMERPROC)TrackMouseTimerProc); + SetCompositionPos(hwnd); +#if !defined(WINCE) || _WIN32_WCE >= 0x400 + _imm_props = ImmGetProperty(GetKeyboardLayout(0), IGP_PROPERTY); +#endif break; case WM_ENTERSIZEMOVE: @@ -534,8 +745,6 @@ 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) { @@ -563,16 +772,44 @@ static LRESULT CALLBACK WndProcGdi(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lP return 0; } -#if !defined(UNICODE) - case WM_INPUTLANGCHANGE: { - TCHAR locale[6]; - LCID lcid = GB(lParam, 0, 16); +#if !defined(WINCE) || _WIN32_WCE >= 0x400 + case WM_INPUTLANGCHANGE: + _imm_props = ImmGetProperty(GetKeyboardLayout(0), IGP_PROPERTY); + break; - int len = GetLocaleInfo(lcid, LOCALE_IDEFAULTANSICODEPAGE, locale, lengthof(locale)); - if (len != 0) _codepage = _ttoi(locale); - return 1; - } -#endif /* UNICODE */ + case WM_IME_SETCONTEXT: + /* Don't show the composition window if we draw the string ourself. */ + if (DrawIMECompositionString()) lParam &= ~ISC_SHOWUICOMPOSITIONWINDOW; + break; + + case WM_IME_STARTCOMPOSITION: + SetCompositionPos(hwnd); + if (DrawIMECompositionString()) return 0; + break; + + case WM_IME_COMPOSITION: + return HandleIMEComposition(hwnd, wParam, lParam); + + case WM_IME_ENDCOMPOSITION: + /* Clear any pending composition string. */ + HandleTextInput(NULL, true); + if (DrawIMECompositionString()) return 0; + break; + + case WM_IME_NOTIFY: + if (wParam == IMN_OPENCANDIDATE) SetCandidatePos(hwnd); + break; + +#if !defined(UNICODE) + case WM_IME_CHAR: + if (GB(wParam, 8, 8) != 0) { + /* DBCS character, send lead byte first. */ + HandleCharMsg(0, GB(wParam, 8, 8)); + } + HandleCharMsg(0, GB(wParam, 0, 8)); + return 0; +#endif +#endif case WM_DEADCHAR: console = GB(lParam, 16, 8) == 41; @@ -589,31 +826,50 @@ static LRESULT CALLBACK WndProcGdi(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lP return 0; } -#if !defined(UNICODE) - wchar_t w; - int len = MultiByteToWideChar(_codepage, 0, (char*)&charcode, 1, &w, 1); - charcode = len == 1 ? w : 0; -#endif /* UNICODE */ + /* IMEs and other input methods sometimes send a WM_CHAR without a WM_KEYDOWN, + * clear the keycode so a previous WM_KEYDOWN doesn't become 'stuck'. */ + uint cur_keycode = keycode; + keycode = 0; - /* No matter the keyboard layout, we will map the '~' to the console */ - scancode = scancode == 41 ? (int)WKC_BACKQUOTE : keycode; - HandleKeypress(GB(charcode, 0, 16) | (scancode << 16)); - return 0; + return HandleCharMsg(cur_keycode, charcode); } case WM_KEYDOWN: { - keycode = MapWindowsKey(wParam); + /* No matter the keyboard layout, we will map the '~' to the console. */ + uint scancode = GB(lParam, 16, 8); + keycode = scancode == 41 ? (uint)WKC_BACKQUOTE : MapWindowsKey(wParam); /* Silently drop all messages handled by WM_CHAR. */ MSG msg; if (PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE)) { - if (msg.message == WM_CHAR && GB(lParam, 16, 8) == GB(msg.lParam, 16, 8)) { + if ((msg.message == WM_CHAR || msg.message == WM_DEADCHAR) && GB(lParam, 16, 8) == GB(msg.lParam, 16, 8)) { return 0; } } - HandleKeypress(0 | (keycode << 16)); - return 0; + uint charcode = MapVirtualKey(wParam, MAPVK_VK_TO_CHAR); + + /* No character translation? */ + if (charcode == 0) { + HandleKeypress(keycode, 0); + return 0; + } + + /* Is the console key a dead key? If yes, ignore the first key down event. */ + if (HasBit(charcode, 31) && !console) { + if (scancode == 41) { + console = true; + return 0; + } + } + console = false; + + /* IMEs and other input methods sometimes send a WM_CHAR without a WM_KEYDOWN, + * clear the keycode so a previous WM_KEYDOWN doesn't become 'stuck'. */ + uint cur_keycode = keycode; + keycode = 0; + + return HandleCharMsg(cur_keycode, LOWORD(charcode)); } case WM_SYSKEYDOWN: // user presses F10 or Alt, both activating the title-menu @@ -627,11 +883,11 @@ static LRESULT CALLBACK WndProcGdi(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lP return 0; // do nothing case VK_F10: // F10, ignore activation of menu - HandleKeypress(MapWindowsKey(wParam) << 16); + HandleKeypress(MapWindowsKey(wParam), 0); return 0; default: // ALT in combination with something else - HandleKeypress(MapWindowsKey(wParam) << 16); + HandleKeypress(MapWindowsKey(wParam), 0); break; } break; @@ -728,6 +984,7 @@ static LRESULT CALLBACK WndProcGdi(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lP case WM_SETFOCUS: _wnd.has_focus = true; + SetCompositionPos(hwnd); break; case WM_KILLFOCUS: @@ -745,7 +1002,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); @@ -788,7 +1045,7 @@ static bool AllocateDibSection(int w, int h, bool force) { BITMAPINFO *bi; HDC dc; - int bpp = BlitterFactoryBase::GetCurrentBlitter()->GetScreenDepth(); + int bpp = BlitterFactory::GetCurrentBlitter()->GetScreenDepth(); w = max(w, 64); h = max(h, 64); @@ -797,9 +1054,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); @@ -808,7 +1062,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); @@ -818,6 +1072,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; } @@ -845,11 +1104,14 @@ static void FindResolutions() uint i; DEVMODEA dm; + /* Check modes for the relevant fullscreen bpp */ + int 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; @@ -946,24 +1208,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(); } } } @@ -976,7 +1238,8 @@ void VideoDriver_Win32::MainLoop() while (PeekMessage(&mesg, NULL, 0, 0, PM_REMOVE)) { InteractiveRandom(); // randomness - TranslateMessage(&mesg); + /* Convert key messages to char messages if we want text input. */ + if (EditBoxInGlobalFocus()) TranslateMessage(&mesg); DispatchMessage(&mesg); } if (_exit_game) return; @@ -1030,7 +1293,6 @@ void VideoDriver_Win32::MainLoop() if (_force_full_redraw) MarkWholeScreenDirty(); - _screen.dst_ptr = _wnd.buffer_bits; UpdateWindows(); CheckPaletteAnim(); } else { @@ -1044,7 +1306,6 @@ void VideoDriver_Win32::MainLoop() Sleep(1); if (_draw_threaded) _draw_mutex->BeginCritical(); - _screen.dst_ptr = _wnd.buffer_bits; NetworkDrawChatMessage(); DrawMouseCursor(); } @@ -1058,6 +1319,7 @@ void VideoDriver_Win32::MainLoop() _draw_mutex->EndCritical(); _draw_thread->Join(); + CloseHandle(_draw_thread_initialized); delete _draw_mutex; delete _draw_thread; } @@ -1065,20 +1327,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 0706c0ee7..21d59185b 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); @@ -33,18 +33,18 @@ class VideoDriver_Win32: public VideoDriver { /* virtual */ bool ClaimMousePointer(); + /* virtual */ void EditBoxLostFocus(); + /* virtual */ const char *GetName() const { return "win32"; } bool MakeWindow(bool full_screen); }; /** 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 011064f2a..d1eb8f449 100644 --- a/src/viewport.cpp +++ b/src/viewport.cpp @@ -45,10 +45,14 @@ #include "window_func.h" #include "tilehighlight_func.h" #include "window_gui.h" +#include "linkgraph/linkgraph_gui.h" +#include "viewport_sprite_sorter.h" #include "table/strings.h" #include "table/palettes.h" +#include "safeguards.h" + Point _tile_fract_coords; struct StringSpriteToDraw { @@ -77,29 +81,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. @@ -121,7 +102,6 @@ enum SpriteCombineMode { typedef SmallVector TileSpriteToDrawVector; typedef SmallVector StringSpriteToDrawVector; typedef SmallVector ParentSpriteToDrawVector; -typedef SmallVector ParentSpriteToSortVector; typedef SmallVector ChildScreenSpriteToDrawVector; /** Data structure storing rendering information */ @@ -153,6 +133,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) { @@ -164,6 +145,9 @@ static Point MapXYZToViewport(const ViewPort *vp, int x, int y, int z) void DeleteWindowViewport(Window *w) { + if (w->viewport == NULL) return; + + delete w->viewport->overlay; free(w->viewport); w->viewport = NULL; } @@ -218,6 +202,8 @@ void InitializeWindowViewport(Window *w, int x, int y, vp->dest_scrollpos_x = pt.x; vp->dest_scrollpos_y = pt.y; + vp->overlay = NULL; + w->viewport = vp; vp->virtual_left = 0;//pt.x; vp->virtual_top = 0;//pt.y; @@ -1051,7 +1037,7 @@ static void ViewportAddLandscape() /* determine size of area */ { Point pt = RemapCoords(x, y, 241); - width = (_vd.dpi.left + _vd.dpi.width - pt.x + 95 * ZOOM_LVL_BASE) >> (6 + ZOOM_LVL_SHIFT); + 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; } @@ -1282,6 +1268,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) { @@ -1382,7 +1374,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); @@ -1399,22 +1391,8 @@ static void ViewportDrawDirtyBlocks() } while (--bottom > 0); } -static void ViewportDrawStrings(DrawPixelInfo *dpi, const StringSpriteToDrawVector *sstdv) +static void ViewportDrawStrings(ZoomLevel zoom, const StringSpriteToDrawVector *sstdv) { - DrawPixelInfo dp; - ZoomLevel zoom; - - _cur_dpi = &dp; - dp = *dpi; - - zoom = dp.zoom; - dp.zoom = ZOOM_LVL_NORMAL; - - dp.left = UnScaleByZoom(dp.left, zoom); - dp.top = UnScaleByZoom(dp.top, zoom); - dp.width = UnScaleByZoom(dp.width, zoom); - dp.height = UnScaleByZoom(dp.height, zoom); - const StringSpriteToDraw *ssend = sstdv->End(); for (const StringSpriteToDraw *ss = sstdv->Begin(); ss != ssend; ++ss) { TextColour colour = TC_BLACK; @@ -1431,17 +1409,14 @@ static void ViewportDrawStrings(DrawPixelInfo *dpi, const StringSpriteToDrawVect /* 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 transparant 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 'tranparent 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 @@ -1473,7 +1448,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); @@ -1491,13 +1466,32 @@ 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); if (_draw_dirty_blocks) ViewportDrawDirtyBlocks(); - if (_vd.string_sprites_to_draw.Length() != 0) ViewportDrawStrings(&_vd.dpi, &_vd.string_sprites_to_draw); + DrawPixelInfo dp = _vd.dpi; + ZoomLevel zoom = _vd.dpi.zoom; + dp.zoom = ZOOM_LVL_NORMAL; + dp.width = UnScaleByZoom(dp.width, zoom); + dp.height = UnScaleByZoom(dp.height, zoom); + _cur_dpi = &dp; + + 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) { + /* 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; @@ -1613,6 +1607,7 @@ void UpdateViewportPosition(Window *w) int delta_x = w->viewport->dest_scrollpos_x - w->viewport->scrollpos_x; int delta_y = w->viewport->dest_scrollpos_y - w->viewport->scrollpos_y; + bool update_overlay = false; if (delta_x != 0 || delta_y != 0) { if (_settings_client.gui.smooth_scroll) { int max_scroll = ScaleByMapSize1D(512 * ZOOM_LVL_BASE); @@ -1623,11 +1618,14 @@ void UpdateViewportPosition(Window *w) w->viewport->scrollpos_x = w->viewport->dest_scrollpos_x; w->viewport->scrollpos_y = w->viewport->dest_scrollpos_y; } + update_overlay = (w->viewport->scrollpos_x == w->viewport->dest_scrollpos_x && + w->viewport->scrollpos_y == w->viewport->dest_scrollpos_y); } ClampViewportToMap(vp, w->viewport->scrollpos_x, w->viewport->scrollpos_y); SetViewportPosition(w, w->viewport->scrollpos_x, w->viewport->scrollpos_y); + if (update_overlay) RebuildViewportOverlay(w); } } @@ -1726,7 +1724,7 @@ static void SetSelectionTilesDirty() int x_size = _thd.size.x; int y_size = _thd.size.y; - if (!_thd.diagonal) { // Selecting in a straigth rectangle (or a single square) + if (!_thd.diagonal) { // Selecting in a straight rectangle (or a single square) int x_start = _thd.pos.x; int y_start = _thd.pos.y; @@ -1987,6 +1985,15 @@ bool HandleViewportClicked(const ViewPort *vp, int x, int y) return result; } +void RebuildViewportOverlay(Window *w) +{ + if (w->viewport->overlay != NULL && + w->viewport->overlay->GetCompanyMask() != 0 && + w->viewport->overlay->GetCargoMask() != 0) { + w->viewport->overlay->RebuildCache(); + w->SetDirty(); + } +} /** * Scrolls the viewport in a window to a given location. @@ -2010,6 +2017,7 @@ bool ScrollWindowTo(int x, int y, int z, Window *w, bool instant) if (instant) { w->viewport->scrollpos_x = pt.x; w->viewport->scrollpos_y = pt.y; + RebuildViewportOverlay(w); } w->viewport->dest_scrollpos_x = pt.x; @@ -2966,3 +2974,41 @@ void ResetObjectToPlace() { SetObjectToPlace(SPR_CURSOR_MOUSE, PAL_NONE, HT_NONE, WC_MAIN_WINDOW, 0); } + +Point GetViewportStationMiddle(const ViewPort *vp, const Station *st) +{ + int x = TileX(st->xy) * TILE_SIZE; + int y = TileY(st->xy) * TILE_SIZE; + int z = GetSlopePixelZ(Clamp(x, 0, MapSizeX() * TILE_SIZE - 1), Clamp(y, 0, MapSizeY() * TILE_SIZE - 1)); + + Point p = RemapCoords(x, y, z); + p.x = UnScaleByZoom(p.x - vp->virtual_left, vp->zoom) + vp->left; + 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 dba28bb9e..7d86dda98 100644 --- a/src/viewport_func.h +++ b/src/viewport_func.h @@ -16,6 +16,7 @@ #include "viewport_type.h" #include "window_type.h" #include "tile_type.h" +#include "station_type.h" static const int TILE_HEIGHT_STEP = 50; ///< One Z unit tile height difference is displayed as 50m. @@ -67,6 +68,8 @@ void ViewportDoDraw(const ViewPort *vp, int left, int top, int right, int bottom bool ScrollWindowToTile(TileIndex tile, Window *w, bool instant = false); bool ScrollWindowTo(int x, int y, int z, Window *w, bool instant = false); +void RebuildViewportOverlay(Window *w); + bool ScrollMainWindowToTile(TileIndex tile, bool instant = false); bool ScrollMainWindowTo(int x, int y, int z = -1, bool instant = false); @@ -76,4 +79,6 @@ extern Point _tile_fract_coords; void MarkTileDirtyByTile(TileIndex tile); +Point GetViewportStationMiddle(const ViewPort *vp, const Station *st); + #endif /* VIEWPORT_FUNC_H */ diff --git a/src/viewport_gui.cpp b/src/viewport_gui.cpp index 661ee0557..90b0e1468 100644 --- a/src/viewport_gui.cpp +++ b/src/viewport_gui.cpp @@ -22,12 +22,15 @@ #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), NWidget(WWT_CLOSEBOX, COLOUR_GREY), NWidget(WWT_CAPTION, COLOUR_GREY, WID_EV_CAPTION), SetDataTip(STR_EXTRA_VIEW_PORT_TITLE, 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), @@ -51,9 +54,9 @@ static const NWidgetPart _nested_extra_view_port_widgets[] = { class ExtraViewportWindow : public Window { public: - ExtraViewportWindow(const WindowDesc *desc, int window_number, TileIndex tile) : Window() + ExtraViewportWindow(WindowDesc *desc, int window_number, TileIndex tile) : Window(desc) { - this->InitNested(desc, window_number); + this->InitNested(window_number); NWidgetViewport *nvp = this->GetWidget(WID_EV_VIEWPORT); nvp->InitializeViewport(this, 0, ZOOM_LVL_VIEWPORT); @@ -153,8 +156,8 @@ class ExtraViewportWindow : public Window { } }; -static const WindowDesc _extra_view_port_desc( - WDP_AUTO, 300, 268, +static WindowDesc _extra_view_port_desc( + WDP_AUTO, "extra_viewport", 300, 268, WC_EXTRA_VIEW_PORT, WC_NONE, 0, _nested_extra_view_port_widgets, lengthof(_nested_extra_view_port_widgets) diff --git a/src/viewport_sprite_sorter.h b/src/viewport_sprite_sorter.h new file mode 100644 index 000000000..19b903e15 --- /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 000000000..05a7f8aa1 --- /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 2c29c83b3..800c8b495 100644 --- a/src/viewport_type.h +++ b/src/viewport_type.h @@ -15,6 +15,8 @@ #include "zoom_type.h" #include "strings_type.h" +class LinkGraphOverlay; + /** * Data structure for viewport, display of a part of the world */ @@ -30,9 +32,10 @@ struct ViewPort { int virtual_height; ///< height << zoom ZoomLevel zoom; ///< The zoom level of the viewport. + LinkGraphOverlay *overlay; }; -/** Margings for the viewport sign */ +/** Margins for the viewport sign */ enum ViewportSignMargin { VPSM_LEFT = 1, ///< Left margin VPSM_RIGHT = 1, ///< Right margin @@ -82,7 +85,7 @@ enum ViewportPlaceMethod { VPM_X_LIMITED = 7, ///< Drag only in X axis with limited size VPM_Y_LIMITED = 8, ///< Drag only in Y axis with limited size VPM_RAILDIRS = 0x40, ///< all rail directions - VPM_SIGNALDIRS = 0x80, ///< similiar to VMP_RAILDIRS, but with different cursor + VPM_SIGNALDIRS = 0x80, ///< similar to VMP_RAILDIRS, but with different cursor }; DECLARE_ENUM_AS_BIT_SET(ViewportPlaceMethod) diff --git a/src/void_cmd.cpp b/src/void_cmd.cpp index cd8d9caa6..ea918b96a 100644 --- a/src/void_cmd.cpp +++ b/src/void_cmd.cpp @@ -17,6 +17,8 @@ #include "table/strings.h" #include "table/sprites.h" +#include "safeguards.h" + static void DrawTile_Void(TileInfo *ti) { DrawGroundSprite(SPR_SHADOW_CELL, PAL_NONE); diff --git a/src/water.h b/src/water.h index 1e8152f73..cb7237fc7 100644 --- a/src/water.h +++ b/src/water.h @@ -41,6 +41,8 @@ void MakeWaterKeepingClass(TileIndex tile, Owner o); bool RiverModifyDesertZone(TileIndex tile, void *data); +bool IsWateredTile(TileIndex tile, Direction from); + /** * Calculates the maintenance cost of a number of canal tiles. * @param num Number of canal tiles. diff --git a/src/water_cmd.cpp b/src/water_cmd.cpp index 580ffa4d5..7b5272a41 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). */ @@ -110,7 +112,7 @@ CommandCost CmdBuildShipDepot(TileIndex tile, DoCommandFlag flags, uint32 p1, ui if ((MayHaveBridgeAbove(tile) && IsBridgeAbove(tile)) || (MayHaveBridgeAbove(tile2) && 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); } @@ -161,7 +163,9 @@ void MakeWaterKeepingClass(TileIndex tile, Owner o) /* Autoslope might turn an originally canal or river tile into land */ int z; - if (GetTileSlope(tile, &z) != SLOPE_FLAT) { + Slope slope = GetTileSlope(tile, &z); + + if (slope != SLOPE_FLAT) { if (wc == WATER_CLASS_CANAL) { /* If we clear the canal, we have to remove it from the infrastructure count as well. */ Company *c = Company::GetIfValid(o); @@ -169,8 +173,14 @@ void MakeWaterKeepingClass(TileIndex tile, Owner o) c->infrastructure.water--; DirtyCompanyInfrastructureWindows(c->index); } + /* Sloped canals are locks and no natural water remains whatever the slope direction */ + wc = WATER_CLASS_INVALID; + } + + /* Only river water should be restored on appropriate slopes. Other water would be invalid on slopes */ + if (wc != WATER_CLASS_RIVER || GetInclinedSlopeDirection(slope) == INVALID_DIAGDIR) { + wc = WATER_CLASS_INVALID; } - wc = WATER_CLASS_INVALID; } if (wc == WATER_CLASS_SEA && z > 0) { @@ -262,7 +272,7 @@ static CommandCost DoBuildLock(TileIndex tile, DiagDirection dir, DoCommandFlag 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); } @@ -275,7 +285,7 @@ static CommandCost DoBuildLock(TileIndex tile, DiagDirection dir, DoCommandFlag 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); } @@ -411,9 +421,11 @@ CommandCost CmdBuildCanal(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 /* can't make water of water! */ if (IsTileType(tile, MP_WATER) && (!IsTileOwner(tile, OWNER_WATER) || wc == WATER_CLASS_SEA)) continue; + bool water = IsWaterTile(tile); ret = DoCommand(tile, 0, 0, flags | DC_FORCE_CLEAR_TILE, CMD_LANDSCAPE_CLEAR); if (ret.Failed()) return ret; - cost.AddCost(ret); + + if (!water) cost.AddCost(ret); if (flags & DC_EXEC) { switch (wc) { @@ -538,7 +550,7 @@ static CommandCost ClearTile_Water(TileIndex tile, DoCommandFlag flags) * @return true iff the tile is water in the view of 'from'. * */ -static bool IsWateredTile(TileIndex tile, Direction from) +bool IsWateredTile(TileIndex tile, Direction from) { switch (GetTileType(tile)) { case MP_WATER: @@ -580,7 +592,7 @@ static 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. @@ -596,6 +608,8 @@ static bool IsWateredTile(TileIndex tile, Direction from) case MP_TUNNELBRIDGE: return GetTunnelBridgeTransportType(tile) == TRANSPORT_WATER && ReverseDiagDir(GetTunnelBridgeDirection(tile)) == DirToDiagDir(from); + case MP_VOID: return true; // consider map border as water, esp. for rivers + default: return false; } } @@ -1153,6 +1167,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; @@ -1228,7 +1245,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/waypoint.cpp b/src/waypoint.cpp index 9500aba82..857f8ba87 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 c97c6089c..8d544a3b9 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 35d7745c7..3c2701270 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. */ @@ -289,7 +291,7 @@ CommandCost CmdBuildBuoy(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 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 (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 cd50a9ca8..3400a7df4 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: @@ -52,18 +54,18 @@ struct WaypointWindow : Window { * @param desc The description of the window. * @param window_number The window number, in this case the waypoint's ID. */ - WaypointWindow(const WindowDesc *desc, WindowNumber window_number) : Window() + WaypointWindow(WindowDesc *desc, WindowNumber window_number) : Window(desc) { this->wp = Waypoint::Get(window_number); this->vt = (wp->string_id == STR_SV_STNAME_WAYPOINT) ? VEH_TRAIN : VEH_SHIP; - this->CreateNestedTree(desc); + this->CreateNestedTree(); if (this->vt == VEH_TRAIN) { this->GetWidget(WID_W_SHOW_VEHICLES)->SetDataTip(STR_TRAIN, STR_STATION_VIEW_SCHEDULED_TRAINS_TOOLTIP); this->GetWidget(WID_W_CENTER_VIEW)->tool_tip = STR_WAYPOINT_VIEW_CENTER_TOOLTIP; this->GetWidget(WID_W_RENAME)->tool_tip = STR_WAYPOINT_VIEW_CHANGE_WAYPOINT_NAME; } - this->FinishInitNested(desc, window_number); + this->FinishInitNested(window_number); if (this->wp->owner != OWNER_NONE) this->owner = this->wp->owner; this->flags |= WF_DISABLE_VP_SCROLL; @@ -154,6 +156,7 @@ static const NWidgetPart _nested_waypoint_view_widgets[] = { NWidget(WWT_CLOSEBOX, COLOUR_GREY), NWidget(WWT_CAPTION, COLOUR_GREY, WID_W_CAPTION), SetDataTip(STR_WAYPOINT_VIEW_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), @@ -170,8 +173,8 @@ static const NWidgetPart _nested_waypoint_view_widgets[] = { }; /** The description of the waypoint view. */ -static const WindowDesc _waypoint_view_desc( - WDP_AUTO, 260, 118, +static WindowDesc _waypoint_view_desc( + WDP_AUTO, "view_waypoint", 260, 118, WC_WAYPOINT_VIEW, WC_NONE, 0, _nested_waypoint_view_widgets, lengthof(_nested_waypoint_view_widgets) diff --git a/src/widget.cpp b/src/widget.cpp index 6ebb5b17b..77d163c81 100644 --- a/src/widget.cpp +++ b/src/widget.cpp @@ -24,6 +24,8 @@ #include "table/strings.h" #include "table/palettes.h" +#include "safeguards.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. @@ -147,7 +149,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); } /** @@ -175,6 +179,8 @@ int GetWidgetFromPos(const Window *w, int x, int y) */ void DrawFrameRect(int left, int top, int right, int bottom, Colours colour, FrameFlags flags) { + assert(colour < COLOUR_END); + uint dark = _colour_gradient[colour][3]; uint medium_dark = _colour_gradient[colour][5]; uint medium_light = _colour_gradient[colour][6]; @@ -268,16 +274,30 @@ static inline void DrawInset(const Rect &r, Colours colour, StringID str) * @param colour Colour of the background. * @param clicked Matrix is rendered lowered. * @param data Data of the widget, number of rows and columns of the widget. + * @param resize_x Matrix resize unit size. + * @param resize_y Matrix resize unit size. */ -static inline void DrawMatrix(const Rect &r, Colours colour, bool clicked, uint16 data) +static inline void DrawMatrix(const Rect &r, Colours colour, bool clicked, uint16 data, uint resize_x, uint resize_y) { DrawFrameRect(r.left, r.top, r.right, r.bottom, colour, (clicked) ? FR_LOWERED : FR_NONE); int num_columns = GB(data, MAT_COL_START, MAT_COL_BITS); // Lower 8 bits of the widget data: Number of columns in the matrix. - int column_width = (r.right - r.left + 1) / num_columns; // Width of a single column in the matrix. + int column_width; // Width of a single column in the matrix. + if (num_columns == 0) { + column_width = resize_x; + num_columns = (r.right - r.left + 1) / column_width; + } else { + column_width = (r.right - r.left + 1) / num_columns; + } int num_rows = GB(data, MAT_ROW_START, MAT_ROW_BITS); // Upper 8 bits of the widget data: Number of rows in the matrix. - int row_height = (r.bottom - r.top + 1) / num_rows; // Height of a single row in the matrix. + int row_height; // Height of a single row in the matrix. + if (num_rows == 0) { + row_height = resize_y; + num_rows = (r.bottom - r.top + 1) / row_height; + } else { + row_height = (r.bottom - r.top + 1) / num_rows; + } int col = _colour_gradient[colour & 0xF][6]; @@ -458,6 +478,18 @@ static inline void DrawStickyBox(const Rect &r, Colours colour, bool clicked) DrawSprite((clicked) ? SPR_PIN_UP : SPR_PIN_DOWN, PAL_NONE, r.left + WD_STICKYBOX_LEFT + clicked, r.top + WD_STICKYBOX_TOP + clicked); } +/** + * Draw a defsize box. + * @param r Rectangle of the box. + * @param colour Colour of the defsize box. + * @param clicked Box is lowered. + */ +static inline void DrawDefSizeBox(const Rect &r, Colours colour, bool clicked) +{ + DrawFrameRect(r.left, r.top, r.right, r.bottom, colour, (clicked) ? FR_LOWERED : FR_NONE); + DrawSprite(SPR_WINDOW_DEFSIZE, PAL_NONE, r.left + WD_DEFSIZEBOX_LEFT + clicked, r.top + WD_DEFSIZEBOX_TOP + clicked); +} + /** * Draw a NewGRF debug box. * @param r Rectangle of the box. @@ -499,7 +531,7 @@ static inline void DrawCloseBox(const Rect &r, Colours colour, StringID str) { 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 + WD_CLOSEBOX_LEFT, r.right - WD_CLOSEBOX_RIGHT, r.top + WD_CLOSEBOX_TOP, str, TC_FROMSTRING, SA_HOR_CENTER); + DrawString(r.left, r.right, r.top + WD_CLOSEBOX_TOP, str, TC_FROMSTRING, SA_HOR_CENTER); } /** @@ -539,16 +571,18 @@ 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; + 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); + DrawString(r.right - dd_width + (clicked_dropdown ? 2 : 1), 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 - 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); + DrawString(r.left + (clicked_dropdown ? 2 : 1), r.left + dd_width, r.top + (clicked_dropdown ? 2 : 1), DOWNARROW, TC_BLACK, SA_HOR_CENTER); + 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); } } @@ -633,7 +667,7 @@ void Window::DrawSortButtonState(int widget, SortButtonState state) const *

        *
      • #NWidgetHorizontal for organizing child widgets in a (horizontal) row. The row switches order depending on the language setting (thus supporting * right-to-left languages), - *
      • #NWidgetHorizontalLTR for organizing child widgets in a (horizontal) row, always in the same order. All childs below this container will also + *
      • #NWidgetHorizontalLTR for organizing child widgets in a (horizontal) row, always in the same order. All children below this container will also * never swap order. *
      • #NWidgetVertical for organizing child widgets underneath each other. *
      • #NWidgetMatrix for organizing child widgets in a matrix form. @@ -820,7 +854,7 @@ void NWidgetResizeBase::AssignSizePosition(SizingType sizing, uint x, uint y, ui * @param fill_x Default horizontal filling. * @param fill_y Default vertical filling. * @param widget_data Data component of the widget. @see Widget::data - * @param tool_tip Tool tip of the widget. @see Widget::tootips + * @param tool_tip Tool tip of the widget. @see Widget::tooltips */ NWidgetCore::NWidgetCore(WidgetType tp, Colours colour, uint fill_x, uint fill_y, uint32 widget_data, StringID tool_tip) : NWidgetResizeBase(tp, fill_x, fill_y) { @@ -1087,7 +1121,7 @@ NWidgetHorizontal::NWidgetHorizontal(NWidContainerFlags flags) : NWidgetPIPConta void NWidgetHorizontal::SetupSmallestSize(Window *w, bool init_array) { - this->smallest_x = 0; // Sum of minimal size of all childs. + this->smallest_x = 0; // Sum of minimal size of all children. this->smallest_y = 0; // Biggest child. this->fill_x = 0; // smallest non-zero child widget fill step. this->fill_y = 1; // smallest common child fill step. @@ -1103,19 +1137,19 @@ void NWidgetHorizontal::SetupSmallestSize(Window *w, bool init_array) max_vert_fill = max(max_vert_fill, child_wid->GetVerticalStepSize(ST_SMALLEST)); this->smallest_y = max(this->smallest_y, child_wid->smallest_y + child_wid->padding_top + child_wid->padding_bottom); } - /* 1b. Make the container higher if needed to accomadate all childs nicely. */ + /* 1b. Make the container higher if needed to accommodate all children nicely. */ uint max_smallest = this->smallest_y + 3 * max_vert_fill; // Upper limit to computing smallest height. uint cur_height = this->smallest_y; for (;;) { for (NWidgetBase *child_wid = this->head; child_wid != NULL; child_wid = child_wid->next) { uint step_size = child_wid->GetVerticalStepSize(ST_SMALLEST); uint child_height = child_wid->smallest_y + child_wid->padding_top + child_wid->padding_bottom; - if (step_size > 1 && child_height < cur_height) { // Small step sizes or already fitting childs are not interesting. + if (step_size > 1 && child_height < cur_height) { // Small step sizes or already fitting children are not interesting. uint remainder = (cur_height - child_height) % step_size; if (remainder > 0) { // Child did not fit entirely, widen the container. cur_height += step_size - remainder; assert(cur_height < max_smallest); // Safeguard against infinite height expansion. - /* Remaining childs will adapt to the new cur_height, thus speeding up the computation. */ + /* Remaining children will adapt to the new cur_height, thus speeding up the computation. */ } } } @@ -1128,7 +1162,7 @@ void NWidgetHorizontal::SetupSmallestSize(Window *w, bool init_array) if (child_wid->fill_x == 1) child_wid->smallest_x = longest; } } - /* 3. Move PIP space to the childs, compute smallest, fill, and resize values of the container. */ + /* 3. Move PIP space to the children, compute smallest, fill, and resize values of the container. */ if (this->head != NULL) this->head->padding_left += this->pip_pre; for (NWidgetBase *child_wid = this->head; child_wid != NULL; child_wid = child_wid->next) { if (child_wid->next != NULL) { @@ -1169,9 +1203,9 @@ void NWidgetHorizontal::AssignSizePosition(SizingType sizing, uint x, uint y, ui this->StoreSizePosition(sizing, x, y, given_width, given_height); - /* In principle, the additional horizontal space is distributed evenly over the available resizable childs. Due to step sizes, this may not always be feasible. - * To make resizing work as good as possible, first childs with biggest step sizes are done. These may get less due to rounding down. - * This additional space is then given to childs with smaller step sizes. This will give a good result when resize steps of each child is a multiple + /* In principle, the additional horizontal space is distributed evenly over the available resizable children. Due to step sizes, this may not always be feasible. + * To make resizing work as good as possible, first children with biggest step sizes are done. These may get less due to rounding down. + * This additional space is then given to children with smaller step sizes. This will give a good result when resize steps of each child is a multiple * of the child with the smallest non-zero stepsize. * * Since child sizes are computed out of order, positions cannot be calculated until all sizes are known. That means it is not possible to compute the child @@ -1180,8 +1214,10 @@ void NWidgetHorizontal::AssignSizePosition(SizingType sizing, uint x, uint y, ui * then we call the child. */ - /* First loop: Find biggest stepsize, find number of childs that want a piece of the pie, handle vertical size for all childs, handle horizontal size for non-resizing childs. */ - int num_changing_childs = 0; // Number of childs that can change size. + /* First loop: Find biggest stepsize, find number of children that want a piece of the pie, handle vertical size for all children, + * handle horizontal size for non-resizing children. + */ + int num_changing_childs = 0; // Number of children that can change size. uint biggest_stepsize = 0; for (NWidgetBase *child_wid = this->head; child_wid != NULL; child_wid = child_wid->next) { uint hor_step = child_wid->GetHorizontalStepSize(sizing); @@ -1196,7 +1232,7 @@ void NWidgetHorizontal::AssignSizePosition(SizingType sizing, uint x, uint y, ui child_wid->current_y = ComputeMaxSize(child_wid->smallest_y, given_height - child_wid->padding_top - child_wid->padding_bottom, vert_step); } - /* Second loop: Allocate the additional horizontal space over the resizing childs, starting with the biggest resize steps. */ + /* Second loop: Allocate the additional horizontal space over the resizing children, starting with the biggest resize steps. */ while (biggest_stepsize > 0) { uint next_biggest_stepsize = 0; for (NWidgetBase *child_wid = this->head; child_wid != NULL; child_wid = child_wid->next) { @@ -1217,17 +1253,18 @@ void NWidgetHorizontal::AssignSizePosition(SizingType sizing, uint x, uint y, ui assert(num_changing_childs == 0); /* Third loop: Compute position and call the child. */ - uint position = 0; // Place to put next child relative to origin of the container. - NWidgetBase *child_wid = rtl ? this->tail : this->head; + uint position = rtl ? this->current_x : 0; // Place to put next child relative to origin of the container. + NWidgetBase *child_wid = this->head; while (child_wid != NULL) { uint child_width = child_wid->current_x; - uint child_x = x + position + (rtl ? child_wid->padding_right : 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); - position += child_width + child_wid->padding_right + child_wid->padding_left; + uint padded_child_width = child_width + child_wid->padding_right + child_wid->padding_left; + position = rtl ? position - padded_child_width : position + padded_child_width; - child_wid = rtl ? child_wid->prev : child_wid->next; + child_wid = child_wid->next; } } @@ -1250,7 +1287,7 @@ NWidgetVertical::NWidgetVertical(NWidContainerFlags flags) : NWidgetPIPContainer void NWidgetVertical::SetupSmallestSize(Window *w, bool init_array) { this->smallest_x = 0; // Biggest child. - this->smallest_y = 0; // Sum of minimal size of all childs. + this->smallest_y = 0; // Sum of minimal size of all children. this->fill_x = 1; // smallest common child fill step. this->fill_y = 0; // smallest non-zero child widget fill step. this->resize_x = 1; // smallest common child resize step. @@ -1265,32 +1302,32 @@ void NWidgetVertical::SetupSmallestSize(Window *w, bool init_array) max_hor_fill = max(max_hor_fill, child_wid->GetHorizontalStepSize(ST_SMALLEST)); this->smallest_x = max(this->smallest_x, child_wid->smallest_x + child_wid->padding_left + child_wid->padding_right); } - /* 1b. Make the container wider if needed to accomadate all childs nicely. */ + /* 1b. Make the container wider if needed to accommodate all children nicely. */ uint max_smallest = this->smallest_x + 3 * max_hor_fill; // Upper limit to computing smallest height. uint cur_width = this->smallest_x; for (;;) { for (NWidgetBase *child_wid = this->head; child_wid != NULL; child_wid = child_wid->next) { uint step_size = child_wid->GetHorizontalStepSize(ST_SMALLEST); uint child_width = child_wid->smallest_x + child_wid->padding_left + child_wid->padding_right; - if (step_size > 1 && child_width < cur_width) { // Small step sizes or already fitting childs are not interesting. + if (step_size > 1 && child_width < cur_width) { // Small step sizes or already fitting children are not interesting. uint remainder = (cur_width - child_width) % step_size; if (remainder > 0) { // Child did not fit entirely, widen the container. cur_width += step_size - remainder; assert(cur_width < max_smallest); // Safeguard against infinite width expansion. - /* Remaining childs will adapt to the new cur_width, thus speeding up the computation. */ + /* Remaining children will adapt to the new cur_width, thus speeding up the computation. */ } } } if (this->smallest_x == cur_width) break; this->smallest_x = cur_width; // Smallest width got changed, try again. } - /* 2. For containers that must maintain equal width, extend child minimal size. */ + /* 2. For containers that must maintain equal width, extend children minimal size. */ if (this->flags & NC_EQUALSIZE) { for (NWidgetBase *child_wid = this->head; child_wid != NULL; child_wid = child_wid->next) { if (child_wid->fill_y == 1) child_wid->smallest_y = highest; } } - /* 3. Move PIP space to the childs, compute smallest, fill, and resize values of the container. */ + /* 3. Move PIP space to the child, compute smallest, fill, and resize values of the container. */ if (this->head != NULL) this->head->padding_top += this->pip_pre; for (NWidgetBase *child_wid = this->head; child_wid != NULL; child_wid = child_wid->next) { if (child_wid->next != NULL) { @@ -1331,12 +1368,12 @@ void NWidgetVertical::AssignSizePosition(SizingType sizing, uint x, uint y, uint this->StoreSizePosition(sizing, x, y, given_width, given_height); - /* Like the horizontal container, the vertical container also distributes additional height evenly, starting with the childs with the biggest resize steps. + /* Like the horizontal container, the vertical container also distributes additional height evenly, starting with the children with the biggest resize steps. * It also stores computed widths and heights into current_x and current_y values of the child. */ - /* First loop: Find biggest stepsize, find number of childs that want a piece of the pie, handle horizontal size for all childs, handle vertical size for non-resizing childs. */ - int num_changing_childs = 0; // Number of childs that can change size. + /* First loop: Find biggest stepsize, find number of children that want a piece of the pie, handle horizontal size for all children, handle vertical size for non-resizing child. */ + int num_changing_childs = 0; // Number of children that can change size. uint biggest_stepsize = 0; for (NWidgetBase *child_wid = this->head; child_wid != NULL; child_wid = child_wid->next) { uint vert_step = child_wid->GetVerticalStepSize(sizing); @@ -1351,7 +1388,7 @@ void NWidgetVertical::AssignSizePosition(SizingType sizing, uint x, uint y, uint child_wid->current_x = ComputeMaxSize(child_wid->smallest_x, given_width - child_wid->padding_left - child_wid->padding_right, hor_step); } - /* Second loop: Allocate the additional vertical space over the resizing childs, starting with the biggest resize steps. */ + /* Second loop: Allocate the additional vertical space over the resizing children, starting with the biggest resize steps. */ while (biggest_stepsize > 0) { uint next_biggest_stepsize = 0; for (NWidgetBase *child_wid = this->head; child_wid != NULL; child_wid = child_wid->next) { @@ -1466,7 +1503,8 @@ void NWidgetMatrix::SetCount(int count) * and post spacing "offsets". */ count = CeilDiv(count, this->sb->IsVertical() ? this->widgets_x : this->widgets_y); count *= (this->sb->IsVertical() ? this->head->smallest_y : this->head->smallest_x) + this->pip_inter; - count += -this->pip_inter + this->pip_pre + this->pip_post; // We counted an inter too much in the multiplication above + if (count > 0) count -= this->pip_inter; // We counted an inter too much in the multiplication above + count += this->pip_pre + this->pip_post; this->sb->SetCount(count); this->sb->SetCapacity(this->sb->IsVertical() ? this->current_y : this->current_x); this->sb->SetStepSize(this->sb->IsVertical() ? this->widget_h : this->widget_w); @@ -1492,7 +1530,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}; @@ -1548,24 +1588,26 @@ NWidgetCore *NWidgetMatrix::GetWidgetFromPos(int x, int y) int start_x, start_y, base_offs_x, base_offs_y; this->GetScrollOffsets(start_x, start_y, base_offs_x, base_offs_y); - /* Swap the x offset around for RTL, so it'll behave like LTR for RTL as well. */ bool rtl = _current_text_dir == TD_RTL; - if (rtl) base_offs_x -= (this->widgets_x - 1) * this->widget_w; - int widget_col = (x - base_offs_x - (int)this->pip_pre - (int)this->pos_x) / this->widget_w; + int widget_col = (rtl ? + -x + (int)this->pip_post + (int)this->pos_x + base_offs_x + (int)this->widget_w - 1 - (int)this->pip_inter : + x - (int)this->pip_pre - (int)this->pos_x - base_offs_x + ) / this->widget_w; + int widget_row = (y - base_offs_y - (int)this->pip_pre - (int)this->pos_y) / this->widget_h; - if (widget_row * this->widgets_x + widget_col >= this->count) return NULL; + int sub_wid = (widget_row + start_y) * this->widgets_x + start_x + widget_col; + if (sub_wid >= this->count) return NULL; NWidgetCore *child = dynamic_cast(this->head); + assert(child != NULL); child->AssignSizePosition(ST_RESIZE, - this->pos_x + this->pip_pre + widget_col * this->widget_w + base_offs_x, + 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, child->smallest_x, child->smallest_y, rtl); - /* "Undo" the RTL swap here to get the right widget index. */ - if (rtl) widget_col = this->widgets_x - widget_col - 1; - SB(child->index, 16, 16, (widget_row + start_y) * this->widgets_x + widget_col + start_x); + SB(child->index, 16, 16, sub_wid); return child->GetWidgetFromPos(x, y); } @@ -1576,14 +1618,15 @@ NWidgetCore *NWidgetMatrix::GetWidgetFromPos(int x, int y) GfxFillRect(this->pos_x, this->pos_y, this->pos_x + this->current_x - 1, this->pos_y + this->current_y - 1, _colour_gradient[this->colour & 0xF][5]); /* Set up a clipping area for the previews. */ + bool rtl = _current_text_dir == TD_RTL; DrawPixelInfo tmp_dpi; - if (!FillDrawPixelInfo(&tmp_dpi, this->pos_x + this->pip_pre, this->pos_y + this->pip_pre, this->current_x - this->pip_pre - this->pip_post, this->current_y - this->pip_pre - this->pip_post)) return; + if (!FillDrawPixelInfo(&tmp_dpi, this->pos_x + (rtl ? this->pip_post : this->pip_pre), this->pos_y + this->pip_pre, this->current_x - this->pip_pre - this->pip_post, this->current_y - this->pip_pre - this->pip_post)) return; DrawPixelInfo *old_dpi = _cur_dpi; _cur_dpi = &tmp_dpi; /* Get the appropriate offsets so we can draw the right widgets. */ NWidgetCore *child = dynamic_cast(this->head); - bool rtl = _current_text_dir == TD_RTL; + 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); @@ -1619,28 +1662,28 @@ NWidgetCore *NWidgetMatrix::GetWidgetFromPos(int x, int y) /** * Get the different offsets that are influenced by scrolling. - * @param [out] start_x The start position in columns, + * @param [out] start_x The start position in columns (index of the left-most column, swapped in RTL). * @param [out] start_y The start position in rows. - * @param [out] base_offs_x The base horizontal offset in pixels. - * @param [out] base_offs_y The base vertical offset in pixels. + * @param [out] base_offs_x The base horizontal offset in pixels (X position of the column \a start_x). + * @param [out] base_offs_y The base vertical offset in pixels (Y position of the column \a start_y). */ void NWidgetMatrix::GetScrollOffsets(int &start_x, int &start_y, int &base_offs_x, int &base_offs_y) { - base_offs_x = 0; + base_offs_x = _current_text_dir == TD_RTL ? this->widget_w * (this->widgets_x - 1) : 0; base_offs_y = 0; start_x = 0; start_y = 0; if (this->sb != NULL) { if (this->sb->IsVertical()) { start_y = this->sb->GetPosition() / this->widget_h; - base_offs_y = -this->sb->GetPosition() + start_y * this->widget_h; - if (_current_text_dir == TD_RTL) base_offs_x = this->pip_pre + this->widget_w * (this->widgets_x - 1) - this->pip_inter; + base_offs_y += -this->sb->GetPosition() + start_y * this->widget_h; } else { start_x = this->sb->GetPosition() / this->widget_w; + int sub_x = this->sb->GetPosition() - start_x * this->widget_w; if (_current_text_dir == TD_RTL) { - base_offs_x = this->sb->GetCapacity() + this->sb->GetPosition() - (start_x + 1) * this->widget_w + this->pip_inter - this->pip_post - this->pip_pre; + base_offs_x += sub_x; } else { - base_offs_x = -this->sb->GetPosition() + start_x * this->widget_w; + base_offs_x -= sub_x; } } } @@ -1672,7 +1715,7 @@ NWidgetBackground::~NWidgetBackground() * @param nwid Nested widget to add to the background widget. * * Unless a child container has been given in the constructor, a parent behaves as a vertical container. - * You can add several childs to it, and they are put underneath each other. + * You can add several children to it, and they are put underneath each other. */ void NWidgetBackground::Add(NWidgetBase *nwid) { @@ -2028,18 +2071,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::stickybox_dimension = {0, 0}; -Dimension NWidgetLeaf::resizebox_dimension = {0, 0}; -Dimension NWidgetLeaf::closebox_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::dropdown_dimension = {0, 0}; /** * Nested leaf widget. @@ -2051,7 +2098,7 @@ Dimension NWidgetLeaf::closebox_dimension = {0, 0}; */ NWidgetLeaf::NWidgetLeaf(WidgetType tp, Colours colour, int index, uint16 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_DEBUGBOX || tp == WWT_STICKYBOX || tp == WWT_CLOSEBOX); + 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->SetResize(0, 0); @@ -2077,10 +2124,12 @@ NWidgetLeaf::NWidgetLeaf(WidgetType tp, Colours colour, int index, uint16 data, this->SetFill(0, 0); break; - case WWT_EDITBOX: - this->SetMinimalSize(10, 0); + 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); this->SetFill(0, 0); break; + } case WWT_CAPTION: this->SetFill(1, 0); @@ -2107,6 +2156,12 @@ NWidgetLeaf::NWidgetLeaf(WidgetType tp, Colours colour, int index, uint16 data, this->SetDataTip(STR_NULL, STR_TOOLTIP_DEBUG); break; + case WWT_DEFSIZEBOX: + this->SetFill(0, 0); + this->SetMinimalSize(WD_DEFSIZEBOX_TOP, WD_CAPTION_HEIGHT); + this->SetDataTip(STR_NULL, STR_TOOLTIP_DEFSIZE); + break; + case WWT_RESIZEBOX: this->SetFill(0, 0); this->SetMinimalSize(WD_RESIZEBOX_WIDTH, 12); @@ -2192,6 +2247,19 @@ void NWidgetLeaf::SetupSmallestSize(Window *w, bool init_array) size = maxdim(size, NWidgetLeaf::stickybox_dimension); break; } + + case WWT_DEFSIZEBOX: { + static const Dimension extra = {WD_DEFSIZEBOX_LEFT + WD_DEFSIZEBOX_RIGHT, WD_DEFSIZEBOX_TOP + WD_DEFSIZEBOX_BOTTOM}; + padding = &extra; + if (NWidgetLeaf::defsizebox_dimension.width == 0) { + NWidgetLeaf::defsizebox_dimension = GetSpriteSize(SPR_WINDOW_DEFSIZE); + NWidgetLeaf::defsizebox_dimension.width += extra.width; + NWidgetLeaf::defsizebox_dimension.height += extra.height; + } + size = maxdim(size, NWidgetLeaf::defsizebox_dimension); + break; + } + case WWT_RESIZEBOX: { static const Dimension extra = {WD_RESIZEBOX_LEFT + WD_RESIZEBOX_RIGHT, WD_RESIZEBOX_TOP + WD_RESIZEBOX_BOTTOM}; padding = &extra; @@ -2278,8 +2346,14 @@ 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; @@ -2349,6 +2423,7 @@ void NWidgetLeaf::Draw(const Window *w) default: NOT_REACHED(); } DrawImageButtons(r, WWT_PUSHIMGBTN, this->colour, clicked, sprite); + break; } case WWT_LABEL: @@ -2362,7 +2437,7 @@ void NWidgetLeaf::Draw(const Window *w) break; case WWT_MATRIX: - DrawMatrix(r, this->colour, clicked, this->widget_data); + DrawMatrix(r, this->colour, clicked, this->widget_data, this->resize_x, this->resize_y); break; case WWT_EDITBOX: { @@ -2390,6 +2465,11 @@ void NWidgetLeaf::Draw(const Window *w) DrawStickyBox(r, this->colour, !!(w->flags & WF_STICKY)); break; + case WWT_DEFSIZEBOX: + assert(this->widget_data == 0); + DrawDefSizeBox(r, this->colour, clicked); + break; + case WWT_RESIZEBOX: assert(this->widget_data == 0); DrawResizeBox(r, this->colour, this->pos_x < (uint)(w->width / 2), !!(w->flags & WF_SIZING)); @@ -2759,6 +2839,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; @@ -2782,7 +2863,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); @@ -2794,7 +2875,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 495c5267d..6d8b32bc9 100644 --- a/src/widget_type.h +++ b/src/widget_type.h @@ -60,9 +60,11 @@ enum WidgetType { WWT_FRAME, ///< Frame WWT_CAPTION, ///< Window caption (window title between closebox and stickybox) - WWT_SHADEBOX, ///< Shade box (at top-right of a window, between caption and stickybox) - WWT_STICKYBOX, ///< Sticky box (normally at top-right of a window) - WWT_DEBUGBOX, ///< NewGRF debug box (between shade box and caption) + WWT_DEBUGBOX, ///< NewGRF debug box (at top-right of a window, between WWT_CAPTION and WWT_SHADEBOX) + WWT_SHADEBOX, ///< Shade box (at top-right of a window, between WWT_DEBUGBOX and WWT_DEFSIZEBOX) + WWT_DEFSIZEBOX, ///< Default window size box (at top-right of a window, between WWT_SHADEBOX and WWT_STICKYBOX) + WWT_STICKYBOX, ///< Sticky box (at top-right of a window, after WWT_DEFSIZEBOX) + WWT_RESIZEBOX, ///< Resize box (normally at bottom-right of a window) WWT_CLOSEBOX, ///< Close box (at top-left of a window) WWT_DROPDOWN, ///< Drop down list @@ -179,9 +181,9 @@ class NWidgetBase : public ZeroedMemoryAllocator { NWidgetBase *prev; ///< Pointer to previous widget in container. Managed by parent container widget. uint8 padding_top; ///< Paddings added to the top of the widget. Managed by parent container widget. - uint8 padding_right; ///< Paddings added to the right of the widget. Managed by parent container widget. + uint8 padding_right; ///< Paddings added to the right of the widget. Managed by parent container widget. (parent container may swap this with padding_left for RTL) uint8 padding_bottom; ///< Paddings added to the bottom of the widget. Managed by parent container widget. - uint8 padding_left; ///< Paddings added to the left of the widget. Managed by parent container widget. + uint8 padding_left; ///< Paddings added to the left of the widget. Managed by parent container widget. (parent container may swap this with padding_right for RTL) protected: inline void StoreSizePosition(SizingType sizing, uint x, uint y, uint given_width, uint given_height); @@ -308,7 +310,7 @@ class NWidgetCore : public NWidgetResizeBase { /** * Highlight the widget or not. - * @param higlighted Widget must be highlighted (blink). + * @param highlight_colour Widget must be highlighted (blink). */ inline void NWidgetCore::SetHighlighted(TextColour highlight_colour) { @@ -775,9 +777,12 @@ class NWidgetLeaf : public NWidgetCore { 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. + static Dimension defsizebox_dimension; ///< Cached size of a defsizebox widget. static Dimension stickybox_dimension; ///< Cached size of a stickybox widget. static Dimension resizebox_dimension; ///< Cached size of a resizebox widget. static Dimension closebox_dimension; ///< Cached size of a closebox widget. @@ -830,7 +835,7 @@ static inline uint ComputeMaxSize(uint base, uint max_space, uint step) * the child widgets (it has no meaning for the compiler but it makes the widget parts easier to read). * Below the last child widget, use an #EndContainer part. This part should be aligned with the #NWidget part that started the container. * - * - Stacked widgets #NWidgetStacked map each of their childs onto the same space. It behaves like a container, except there is no pre/inter/post space, + * - Stacked widgets #NWidgetStacked map each of their children onto the same space. It behaves like a container, except there is no pre/inter/post space, * so the widget does not support #SetPIP. #SetPadding is allowed though. * Like the other container widgets, below the last child widgets, a #EndContainer part should be used to denote the end of the stacked widget. * @@ -1017,6 +1022,18 @@ static inline NWidgetPart SetDataTip(uint16 data, StringID tip) return part; } +/** + * Widget part function for setting the data and tooltip of WWT_MATRIX widgets + * @param cols Number of columns. \c 0 means to use draw columns with width according to the resize step size. + * @param rows Number of rows. \c 0 means to use draw rows with height according to the resize step size. + * @param tip Tooltip of the widget. + * @ingroup NestedWidgetParts + */ +static inline NWidgetPart SetMatrixDataTip(uint8 cols, uint8 rows, StringID tip) +{ + return SetDataTip((rows << MAT_ROW_START) | (cols << MAT_COL_START), tip); +} + /** * Widget part function for setting additional space around a widget. * Parameters start above the widget, and are specified in clock-wise direction. @@ -1071,7 +1088,7 @@ static inline NWidgetPart SetPIP(uint8 pre, uint8 inter, uint8 post) /** * Attach a scrollbar to a widget. * The scrollbar is controlled when using the mousewheel on the widget. - * Multipe widgets can refer to the same scrollbar to make the mousewheel work in all of them. + * Multiple widgets can refer to the same scrollbar to make the mousewheel work in all of them. * @param index Widget index of the scrollbar. * @ingroup NestedWidgetParts */ diff --git a/src/widgets/ai_widget.h b/src/widgets/ai_widget.h index 76b22b8b4..b6ef02fa5 100644 --- a/src/widgets/ai_widget.h +++ b/src/widgets/ai_widget.h @@ -60,7 +60,7 @@ enum AIDebugWidgets { WID_AID_SCRIPT_GAME, ///< Game Script button. WID_AID_RELOAD_TOGGLE, ///< Reload button. WID_AID_LOG_PANEL, ///< Panel where the log is in. - WID_AID_SCROLLBAR, ///< Scrollbar of the log pannel. + WID_AID_SCROLLBAR, ///< Scrollbar of the log panel. WID_AID_COMPANY_BUTTON_START, ///< Buttons in the VIEW. WID_AID_COMPANY_BUTTON_END = WID_AID_COMPANY_BUTTON_START + MAX_COMPANIES - 1, ///< Last possible button in the VIEW. WID_AID_BREAK_STRING_WIDGETS, ///< The panel to handle the breaking on string. diff --git a/src/widgets/autoreplace_widget.h b/src/widgets/autoreplace_widget.h index 5e610a7da..a302eea29 100644 --- a/src/widgets/autoreplace_widget.h +++ b/src/widgets/autoreplace_widget.h @@ -20,7 +20,7 @@ enum ReplaceVehicleWidgets { WID_RV_LEFT_MATRIX, ///< The matrix on the left. WID_RV_LEFT_SCROLLBAR, ///< The scrollbar for the matrix on the left. WID_RV_RIGHT_MATRIX, ///< The matrix on the right. - WID_RV_RIGHT_SCROLLBAR, ///< The scrollbar for the matrxi on the right. + WID_RV_RIGHT_SCROLLBAR, ///< The scrollbar for the matrix on the right. WID_RV_LEFT_DETAILS, ///< Details of the entry on the left. WID_RV_RIGHT_DETAILS, ///< Details of the entry on the right. diff --git a/src/widgets/dropdown.cpp b/src/widgets/dropdown.cpp index dd2349965..e83772799 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(), @@ -90,8 +79,8 @@ static const NWidgetPart _nested_dropdown_menu_widgets[] = { EndContainer(), }; -const WindowDesc _dropdown_desc( - WDP_MANUAL, 0, 0, +static WindowDesc _dropdown_desc( + WDP_MANUAL, NULL, 0, 0, WC_DROPDOWN_MENU, WC_NONE, 0, _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,11 +113,14 @@ 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) : Window() + 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(&_dropdown_desc); + this->CreateNestedTree(); this->vscroll = this->GetScrollbar(WID_DM_SCROLL); @@ -142,19 +134,19 @@ struct DropdownWindow : Window { this->GetWidget(WID_DM_SHOW_SCROLL)->SetDisplayedPlane(scroll ? 0 : SZSP_NONE); - this->FinishInitNested(&_dropdown_desc, 0); + this->FinishInitNested(0); CLRBITS(this->flags, WF_WHITE_BORDER); /* 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; @@ -180,10 +172,10 @@ 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(const WindowDesc *desc, int16 sm_width, int16 sm_height, int window_number) + virtual Point OnInitialPosition(int16 sm_width, int16 sm_height, int window_number) { return this->position; } @@ -204,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; @@ -227,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); @@ -342,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); @@ -352,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; @@ -385,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; @@ -415,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. */ @@ -452,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 diabled 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) @@ -462,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; } @@ -487,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 b923445bb..b65d4557b 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 @@ class DropDownListStringItem : public DropDownListItem { 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 @@ class DropDownListCharStringItem : public DropDownListStringItem { /** * 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 10727f103..2048851ff 100644 --- a/src/widgets/genworld_widget.h +++ b/src/widgets/genworld_widget.h @@ -25,9 +25,6 @@ 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_START_DATE_DOWN, ///< Decrease start year. diff --git a/src/widgets/goal_widget.h b/src/widgets/goal_widget.h index 2db6021c3..388930a10 100644 --- a/src/widgets/goal_widget.h +++ b/src/widgets/goal_widget.h @@ -15,8 +15,9 @@ /** Widgets of the #GoalListWindow class. */ enum GoalListWidgets { - WID_GL_PANEL, ///< Panel of the window. - WID_GL_SCROLLBAR, ///< Scrollbar of the panel. + WID_GOAL_CAPTION, ///< Caption of the window. + WID_GOAL_LIST, ///< Goal list. + WID_GOAL_SCROLLBAR, ///< Scrollbar of the goal list. }; /** Widgets of the #GoalQuestionWindow class. */ diff --git a/src/widgets/link_graph_legend_widget.h b/src/widgets/link_graph_legend_widget.h new file mode 100644 index 000000000..9537b896d --- /dev/null +++ b/src/widgets/link_graph_legend_widget.h @@ -0,0 +1,36 @@ +/* $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 link_graph_legend_widget.h Types related to the linkgraph_legend widgets. */ + +#ifndef WIDGETS_LINKGRAPH_LEGEND_WIDGET_H +#define WIDGETS_LINKGRAPH_LEGEND_WIDGET_H + +#include "../cargo_type.h" + +/** Widgets of the WC_LINKGRAPH_LEGEND. */ + +enum LinkGraphLegendWidgets { + WID_LGL_CAPTION, ///< Caption widget. + WID_LGL_SATURATION, ///< Saturation legend. + WID_LGL_SATURATION_FIRST, + WID_LGL_SATURATION_LAST = WID_LGL_SATURATION_FIRST + 11, + WID_LGL_COMPANIES, ///< Company selection widget. + WID_LGL_COMPANY_FIRST, + WID_LGL_COMPANY_LAST = WID_LGL_COMPANY_FIRST + MAX_COMPANIES - 1, + WID_LGL_COMPANIES_ALL, + WID_LGL_COMPANIES_NONE, + WID_LGL_CARGOES, ///< Cargo selection widget. + WID_LGL_CARGO_FIRST, + WID_LGL_CARGO_LAST = WID_LGL_CARGO_FIRST + NUM_CARGO - 1, + WID_LGL_CARGOES_ALL, + WID_LGL_CARGOES_NONE, +}; + +#endif /* WIDGETS_LINKGRAPH_LEGEND_WIDGET_H */ diff --git a/src/widgets/misc_widget.h b/src/widgets/misc_widget.h index a54e83035..a6dd081a9 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/network_content_widget.h b/src/widgets/network_content_widget.h index d90afb3d4..e659743d4 100644 --- a/src/widgets/network_content_widget.h +++ b/src/widgets/network_content_widget.h @@ -45,6 +45,7 @@ enum NetworkContentListWidgets { WID_NCL_DOWNLOAD, ///< 'Download' button. WID_NCL_SEL_ALL_UPDATE, ///< #NWID_SELECTION widget for select all/update buttons.. + WID_NCL_SEARCH_EXTERNAL, ///< Search external sites for missing NewGRF. }; #endif /* WIDGETS_NETWORK_CONTENT_WIDGET_H */ diff --git a/src/widgets/newgrf_debug_widget.h b/src/widgets/newgrf_debug_widget.h index af24549c1..b719bcfc5 100644 --- a/src/widgets/newgrf_debug_widget.h +++ b/src/widgets/newgrf_debug_widget.h @@ -16,6 +16,9 @@ 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. }; diff --git a/src/widgets/newgrf_widget.h b/src/widgets/newgrf_widget.h index 878dcb891..271b6669a 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/osk_widget.h b/src/widgets/osk_widget.h index 6eb977ff6..25cd928a8 100644 --- a/src/widgets/osk_widget.h +++ b/src/widgets/osk_widget.h @@ -19,7 +19,7 @@ enum OnScreenKeyboardWidgets { WID_OSK_CANCEL, ///< Cancel key. WID_OSK_OK, ///< Ok key. WID_OSK_BACKSPACE, ///< Backspace key. - WID_OSK_SPECIAL, ///< Special key (at keyborads often used for tab key). + WID_OSK_SPECIAL, ///< Special key (at keyboards often used for tab key). WID_OSK_CAPS, ///< Capslock key. WID_OSK_SHIFT, ///< Shift(lock) key. WID_OSK_SPACE, ///< Space bar. diff --git a/src/widgets/rail_widget.h b/src/widgets/rail_widget.h index a8b933b83..f977f4480 100644 --- a/src/widgets/rail_widget.h +++ b/src/widgets/rail_widget.h @@ -12,7 +12,7 @@ #ifndef WIDGETS_RAIL_WIDGET_H #define WIDGETS_RAIL_WIDGET_H -/** Widgets of the #BuildRailToolbarWindow ckass. */ +/** Widgets of the #BuildRailToolbarWindow class. */ enum RailToolbarWidgets { /* Name starts with RA instead of R, because of collision with RoadToolbarWidgets */ WID_RAT_CAPTION, ///< Caption of the window. @@ -64,6 +64,7 @@ enum BuildRailStationWidgets { WID_BRAS_IMAGE, ///< Panel used at each cell of the matrix. WID_BRAS_MATRIX_SCROLL, ///< Scrollbar of the matrix widget. + WID_BRAS_SHOW_NEWST_DEFSIZE, ///< Selection for default-size button for newstation. WID_BRAS_SHOW_NEWST_ADDITIONS, ///< Selection for newstation class selection list. WID_BRAS_SHOW_NEWST_MATRIX, ///< Selection for newstation image matrix. WID_BRAS_SHOW_NEWST_RESIZE, ///< Selection for panel and resize at bottom right for newstation. @@ -98,10 +99,10 @@ enum BuildSignalWidgets { /** Widgets of the #BuildRailDepotWindow class. */ enum BuildRailDepotWidgets { /* Name starts with BRA instead of BR, because of collision with BuildRoadDepotWidgets */ - WID_BRAD_DEPOT_NE, ///< Build a depot with the entrace in the north east. - WID_BRAD_DEPOT_SE, ///< Build a depot with the entrace in the south east. - WID_BRAD_DEPOT_SW, ///< Build a depot with the entrace in the south west. - WID_BRAD_DEPOT_NW, ///< Build a depot with the entrace in the north west. + WID_BRAD_DEPOT_NE, ///< Build a depot with the entrance in the north east. + WID_BRAD_DEPOT_SE, ///< Build a depot with the entrance in the south east. + WID_BRAD_DEPOT_SW, ///< Build a depot with the entrance in the south west. + WID_BRAD_DEPOT_NW, ///< Build a depot with the entrance in the north west. }; /** Widgets of the #BuildRailWaypointWindow class. */ diff --git a/src/widgets/settings_widget.h b/src/widgets/settings_widget.h index baebdace5..a9015b1ee 100644 --- a/src/widgets/settings_widget.h +++ b/src/widgets/settings_widget.h @@ -23,7 +23,6 @@ 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_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 +44,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 }; @@ -55,8 +55,8 @@ enum CustomCurrencyWidgets { WID_CC_RATE_DOWN, ///< Down button. WID_CC_RATE_UP, ///< Up button. WID_CC_RATE, ///< Rate of currency. - WID_CC_SEPARATOR_EDIT, ///< Seperator edit button. - WID_CC_SEPARATOR, ///< Current seperator. + WID_CC_SEPARATOR_EDIT, ///< Separator edit button. + WID_CC_SEPARATOR, ///< Current separator. WID_CC_PREFIX_EDIT, ///< Prefix edit button. WID_CC_PREFIX, ///< Current prefix. WID_CC_SUFFIX_EDIT, ///< Suffix edit button. diff --git a/src/widgets/smallmap_widget.h b/src/widgets/smallmap_widget.h index 6476b8f1b..0b1daea03 100644 --- a/src/widgets/smallmap_widget.h +++ b/src/widgets/smallmap_widget.h @@ -18,11 +18,13 @@ enum SmallMapWidgets { WID_SM_MAP_BORDER, ///< Border around the smallmap. WID_SM_MAP, ///< Panel containing the smallmap. WID_SM_LEGEND, ///< Bottom panel to display smallmap legends. + WID_SM_BLANK, ///< Empty button as placeholder. WID_SM_ZOOM_IN, ///< Button to zoom in one step. WID_SM_ZOOM_OUT, ///< Button to zoom out one step. WID_SM_CONTOUR, ///< Button to select the contour view (height map). WID_SM_VEHICLES, ///< Button to select the vehicles view. WID_SM_INDUSTRIES, ///< Button to select the industries view. + WID_SM_LINKSTATS, ///< Button to select the link stats view. WID_SM_ROUTES, ///< Button to select the routes view. WID_SM_VEGETATION, ///< Button to select the vegetation view. WID_SM_OWNERS, ///< Button to select the owners view. diff --git a/src/widgets/station_widget.h b/src/widgets/station_widget.h index e33565ea1..82fe392e3 100644 --- a/src/widgets/station_widget.h +++ b/src/widgets/station_widget.h @@ -15,6 +15,10 @@ /** Widgets of the #StationViewWindow class. */ enum StationViewWidgets { WID_SV_CAPTION, ///< Caption of the window. + WID_SV_SORT_ORDER, ///< 'Sort order' button + WID_SV_SORT_BY, ///< 'Sort by' button + WID_SV_GROUP, ///< label for "group by" + WID_SV_GROUP_BY, ///< 'Group by' button WID_SV_WAITING, ///< List of waiting cargo. WID_SV_SCROLLBAR, ///< Scrollbar. WID_SV_ACCEPT_RATING_LIST, ///< List of accepted cargoes / rating of cargoes. diff --git a/src/widgets/story_widget.h b/src/widgets/story_widget.h new file mode 100644 index 000000000..139b6d2d6 --- /dev/null +++ b/src/widgets/story_widget.h @@ -0,0 +1,26 @@ + +/* $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 story_widget.h Types related to the story widgets. */ + +#ifndef WIDGETS_STORY_WIDGET_H +#define WIDGETS_STORY_WIDGET_H + +/** Widgets of the #GoalListWindow class. */ +enum StoryBookWidgets { + WID_SB_CAPTION, ///< Caption of the window. + WID_SB_SEL_PAGE, ///< Page selector. + WID_SB_PAGE_PANEL,///< Page body. + WID_SB_SCROLLBAR, ///< Scrollbar of the goal list. + WID_SB_PREV_PAGE, ///< Prev button. + WID_SB_NEXT_PAGE, ///< Next button. +}; + +#endif /* WIDGETS_STORY_WIDGET_H */ diff --git a/src/widgets/terraform_widget.h b/src/widgets/terraform_widget.h index 7429f41ea..7f8a4c4d1 100644 --- a/src/widgets/terraform_widget.h +++ b/src/widgets/terraform_widget.h @@ -21,7 +21,7 @@ enum TerraformToolbarWidgets { WID_TT_LEVEL_LAND, ///< Level land button. WID_TT_DEMOLISH, ///< Demolish aka dynamite button. WID_TT_BUY_LAND, ///< Buy land button. - WID_TT_PLANT_TREES, ///< Plant trees button (note: opens seperate window, no place-push-button). + WID_TT_PLANT_TREES, ///< Plant trees button (note: opens separate window, no place-push-button). WID_TT_PLACE_SIGN, ///< Place sign button. WID_TT_PLACE_OBJECT, ///< Place object button. }; diff --git a/src/widgets/timetable_widget.h b/src/widgets/timetable_widget.h index 09beb6167..cce1533c4 100644 --- a/src/widgets/timetable_widget.h +++ b/src/widgets/timetable_widget.h @@ -31,6 +31,9 @@ enum VehicleTimetableWidgets { WID_VT_EXPECTED_SELECTION, ///< Disable/hide the expected selection button. WID_VT_CHANGE_SPEED, ///< Change speed limit button. WID_VT_CLEAR_SPEED, ///< Clear speed limit button. + WID_VT_TTSEP_MODE_DROPDOWN, ///< Select separation mode dropdown + WID_VT_TTSEP_SET_PARAMETER, ///< Set the separation parameter (time / number) + WID_VT_TTSEP_PANEL_TEXT ///< Panel area for separation info text }; #endif /* WIDGETS_TIMETABLE_WIDGET_H */ diff --git a/src/widgets/toolbar_widget.h b/src/widgets/toolbar_widget.h index a65674e64..6ede3ad63 100644 --- a/src/widgets/toolbar_widget.h +++ b/src/widgets/toolbar_widget.h @@ -24,6 +24,8 @@ enum ToolbarNormalWidgets { WID_TN_STATIONS, ///< Station menu. WID_TN_FINANCES, ///< Finance menu. WID_TN_COMPANIES, ///< Company menu. + WID_TN_STORY, ///< Story menu. + WID_TN_GOAL, ///< Goal menu. WID_TN_GRAPHS, ///< Graph menu. WID_TN_LEAGUE, ///< Company league menu. WID_TN_INDUSTRIES, ///< Industry menu. diff --git a/src/widgets/town_widget.h b/src/widgets/town_widget.h index 2f2a97e6d..4f5443c36 100644 --- a/src/widgets/town_widget.h +++ b/src/widgets/town_widget.h @@ -14,8 +14,8 @@ /** Widgets of the #TownDirectoryWindow class. */ enum TownDirectoryWidgets { - WID_TD_SORT_NAME, ///< Sort by town name. - WID_TD_SORT_POPULATION, ///< Sort by town population. + WID_TD_SORT_ORDER, ///< Direction of sort dropdown. + WID_TD_SORT_CRITERIA, ///< Criteria of sort dropdown. WID_TD_LIST, ///< List of towns. WID_TD_SCROLLBAR, ///< Scrollbar for the town list. WID_TD_WORLD_POPULATION, ///< The world's population. diff --git a/src/widgets/vehicle_widget.h b/src/widgets/vehicle_widget.h index ac15d652d..a0902dab4 100644 --- a/src/widgets/vehicle_widget.h +++ b/src/widgets/vehicle_widget.h @@ -49,6 +49,7 @@ enum VehicleDetailsWidgets { WID_VD_TOP_DETAILS, ///< Panel with generic details. WID_VD_INCREASE_SERVICING_INTERVAL, ///< Increase the servicing interval. WID_VD_DECREASE_SERVICING_INTERVAL, ///< Decrease the servicing interval. + WID_VD_SERVICE_INTERVAL_DROPDOWN, ///< Dropdown to select default/days/percent service interval. WID_VD_SERVICING_INTERVAL, ///< Information about the servicing interval. WID_VD_MIDDLE_DETAILS, ///< Details for non-trains. WID_VD_MATRIX, ///< List of details for trains. @@ -56,7 +57,7 @@ enum VehicleDetailsWidgets { WID_VD_DETAILS_CARGO_CARRIED, ///< Show carried cargo per part of the train. WID_VD_DETAILS_TRAIN_VEHICLES, ///< Show all parts of the train with their description. WID_VD_DETAILS_CAPACITY_OF_EACH, ///< Show the capacity of all train parts. - WID_VD_DETAILS_TOTAL_CARGO, ///< Show the capacity and carried cargo amounts aggregrated per cargo of the train. + WID_VD_DETAILS_TOTAL_CARGO, ///< Show the capacity and carried cargo amounts aggregated per cargo of the train. }; /** Widgets of the #VehicleListWindow class. */ diff --git a/src/window.cpp b/src/window.cpp index c50c02253..5b3511573 100644 --- a/src/window.cpp +++ b/src/window.cpp @@ -27,12 +27,17 @@ #include "widgets/dropdown_func.h" #include "strings_func.h" #include "settings_type.h" +#include "settings_func.h" +#include "ini_type.h" #include "newgrf_debug.h" #include "hotkeys.h" #include "toolbar_gui.h" #include "statusbar_gui.h" #include "error.h" #include "game/game.hpp" +#include "video/video_driver.hpp" + +#include "safeguards.h" /** Values for _settings_client.gui.auto_scrolling */ enum ViewportAutoscrolling { @@ -72,23 +77,94 @@ bool _mouse_hovering; ///< The mouse is hovering over the same point. SpecialMouseMode _special_mouse_mode; ///< Mode of the mouse. +/** + * List of all WindowDescs. + * This is a pointer to ensure initialisation order with the various static WindowDesc instances. + */ +static SmallVector *_window_descs = NULL; + +/** Config file to store WindowDesc */ +char *_windows_file; + /** Window description constructor. */ -WindowDesc::WindowDesc(WindowPosition def_pos, int16 def_width, int16 def_height, +WindowDesc::WindowDesc(WindowPosition def_pos, const char *ini_key, int16 def_width, int16 def_height, WindowClass window_class, WindowClass parent_class, uint32 flags, - const NWidgetPart *nwid_parts, int16 nwid_length) : + 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), flags(flags), nwid_parts(nwid_parts), - nwid_length(nwid_length) + nwid_length(nwid_length), + hotkeys(hotkeys), + pref_sticky(false), + pref_width(0), + pref_height(0) { + if (_window_descs == NULL) _window_descs = new SmallVector(); + *_window_descs->Append() = this; } WindowDesc::~WindowDesc() { + _window_descs->Erase(_window_descs->Find(this)); +} + +/** + * Load all WindowDesc settings from _windows_file. + */ +void WindowDesc::LoadFromConfig() +{ + IniFile *ini = new IniFile(); + ini->LoadFromDisk(_windows_file, BASE_DIR); + for (WindowDesc **it = _window_descs->Begin(); it != _window_descs->End(); ++it) { + if ((*it)->ini_key == NULL) continue; + IniLoadWindowSettings(ini, (*it)->ini_key, *it); + } + delete ini; +} + +/** + * Sort WindowDesc by ini_key. + */ +static int CDECL DescSorter(WindowDesc * const *a, WindowDesc * const *b) +{ + if ((*a)->ini_key != NULL && (*b)->ini_key != NULL) return strcmp((*a)->ini_key, (*b)->ini_key); + return ((*b)->ini_key != NULL ? 1 : 0) - ((*a)->ini_key != NULL ? 1 : 0); +} + +/** + * Save all WindowDesc settings to _windows_file. + */ +void WindowDesc::SaveToConfig() +{ + /* Sort the stuff to get a nice ini file on first write */ + QSortT(_window_descs->Begin(), _window_descs->Length(), DescSorter); + + IniFile *ini = new IniFile(); + ini->LoadFromDisk(_windows_file, BASE_DIR); + for (WindowDesc **it = _window_descs->Begin(); it != _window_descs->End(); ++it) { + if ((*it)->ini_key == NULL) continue; + IniSaveWindowSettings(ini, (*it)->ini_key, *it); + } + ini->SaveToDisk(_windows_file); + delete ini; +} + +/** + * Read default values from WindowDesc configuration an apply them to the window. + */ +void Window::ApplyDefaults() +{ + if (this->nested_root != NULL && this->nested_root->GetWidgetOfType(WWT_STICKYBOX) != NULL) { + if (this->window_desc->pref_sticky) this->flags |= WF_STICKY; + } else { + /* There is no stickybox; clear the preference in case someone tried to be funny */ + this->window_desc->pref_sticky = false; + } } /** @@ -194,13 +270,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); } @@ -249,6 +321,89 @@ QueryString *Window::GetQueryString(uint widnum) return query != this->querystrings.End() ? query->second : NULL; } +/** + * Get the current input text if an edit box has the focus. + * @return The currently focused input text or NULL if no input focused. + */ +/* virtual */ const char *Window::GetFocusedText() const +{ + if (this->nested_focus != NULL && this->nested_focus->type == WWT_EDITBOX) { + return this->GetQueryString(this->nested_focus->index)->GetText(); + } + + return NULL; +} + +/** + * Get the string at the caret if an edit box has the focus. + * @return The text at the caret or NULL if no edit box is focused. + */ +/* virtual */ const char *Window::GetCaret() const +{ + if (this->nested_focus != NULL && this->nested_focus->type == WWT_EDITBOX) { + return this->GetQueryString(this->nested_focus->index)->GetCaret(); + } + + return NULL; +} + +/** + * Get the range of the currently marked input text. + * @param[out] length Length of the marked text. + * @return Pointer to the start of the marked text or NULL if no text is marked. + */ +/* virtual */ const char *Window::GetMarkedText(size_t *length) const +{ + if (this->nested_focus != NULL && this->nested_focus->type == WWT_EDITBOX) { + return this->GetQueryString(this->nested_focus->index)->GetMarkedText(length); + } + + return NULL; +} + +/** + * Get the current caret position if an edit box has the focus. + * @return Top-left location of the caret, relative to the window. + */ +/* virtual */ Point Window::GetCaretPosition() const +{ + if (this->nested_focus != NULL && this->nested_focus->type == WWT_EDITBOX) { + return this->GetQueryString(this->nested_focus->index)->GetCaretPosition(this, this->nested_focus->index); + } + + Point pt = {0, 0}; + return pt; +} + +/** + * Get the bounding rectangle for a text range if an edit box has the focus. + * @param from Start of the string range. + * @param to End of the string range. + * @return Rectangle encompassing the string range, relative to the window. + */ +/* virtual */ Rect Window::GetTextBoundingRect(const char *from, const char *to) const +{ + if (this->nested_focus != NULL && this->nested_focus->type == WWT_EDITBOX) { + return this->GetQueryString(this->nested_focus->index)->GetBoundingRect(this, this->nested_focus->index, from, to); + } + + Rect r = {0, 0, 0, 0}; + return r; +} + +/** + * Get the character that is rendered at a position by the focused edit box. + * @param pt The position to test. + * @return Pointer to the character at the position or NULL if no character is at the position. + */ +/* virtual */ const char *Window::GetTextCharacterAtPosition(const Point &pt) const +{ + if (this->nested_focus != NULL && this->nested_focus->type == WWT_EDITBOX) { + return this->GetQueryString(this->nested_focus->index)->GetCharAtPosition(this, this->nested_focus->index, pt); + } + + return NULL; +} /** * Set the window that has the focus @@ -277,7 +432,7 @@ void SetFocusedWindow(Window *w) * has a edit box as focused widget, or if a console is focused. * @return returns true if an edit box is in global focus or if the focused window is a console, else false */ -static bool EditBoxInGlobalFocus() +bool EditBoxInGlobalFocus() { if (_focused_window == NULL) return false; @@ -293,6 +448,8 @@ static bool EditBoxInGlobalFocus() void Window::UnfocusFocusedWidget() { if (this->nested_focus != NULL) { + 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); this->nested_focus = NULL; @@ -315,11 +472,20 @@ 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) VideoDriver::GetInstance()->EditBoxLostFocus(); } this->nested_focus = this->GetWidget(widget_index); return true; } +/** + * Called when window looses focus + */ +void Window::OnFocusLost() +{ + if (this->nested_focus != NULL && this->nested_focus->type == WWT_EDITBOX) VideoDriver::GetInstance()->EditBoxLostFocus(); +} + /** * Sets the enabled/disabled status of a list of widgets. * By default, widgets are enabled. @@ -375,6 +541,13 @@ void Window::RaiseButtons(bool autoraise) this->SetWidgetDirty(i); } } + + /* Special widgets without widget index */ + NWidgetCore *wid = this->nested_root != NULL ? (NWidgetCore*)this->nested_root->GetWidgetOfType(WWT_DEFSIZEBOX) : NULL; + if (wid != NULL) { + wid->SetLowered(false); + wid->SetDirty(this); + } } /** @@ -389,6 +562,31 @@ void Window::SetWidgetDirty(byte widget_index) const this->nested_array[widget_index]->SetDirty(this); } +/** + * A hotkey has been pressed. + * @param hotkey Hotkey index, by default a widget index of a button or editbox. + * @return #ES_HANDLED if the key press has been handled, and the hotkey is not unavailable for some reason. + */ +EventState Window::OnHotkey(int hotkey) +{ + if (hotkey < 0) return ES_NOT_HANDLED; + + NWidgetCore *nw = this->GetWidget(hotkey); + if (nw == NULL || nw->IsDisabled()) return ES_NOT_HANDLED; + + if (nw->type == WWT_EDITBOX) { + if (this->IsShaded()) return ES_NOT_HANDLED; + + /* Focus editbox */ + this->SetFocusedWidget(hotkey); + SetFocusedWindow(this); + } else { + /* Click button */ + this->OnClick(Point(), hotkey, 1); + } + return ES_HANDLED; +} + /** * Do all things to make a button look clicked and mark it to be * unclicked in a few ticks. @@ -419,11 +617,10 @@ static void DispatchLeftClickEvent(Window *w, int x, int y, int click_count) bool focused_widget_changed = false; /* If clicked on a window that previously did dot have focus */ if (_focused_window != w && // We already have focus, right? - (w->desc_flags & WDF_NO_FOCUS) == 0 && // Don't lose focus to toolbars + (w->window_desc->flags & WDF_NO_FOCUS) == 0 && // Don't lose focus to toolbars 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 @@ -484,6 +681,29 @@ static void DispatchLeftClickEvent(Window *w, int x, int y, int click_count) nw->SetDirty(w); return; + case WWT_DEFSIZEBOX: { + if (_ctrl_pressed) { + w->window_desc->pref_width = w->width; + w->window_desc->pref_height = w->height; + } else { + int16 def_width = max(min(w->window_desc->GetDefaultWidth(), _screen.width), w->nested_root->smallest_x); + int16 def_height = max(min(w->window_desc->GetDefaultHeight(), _screen.height - 50), w->nested_root->smallest_y); + + int dx = (w->resize.step_width == 0) ? 0 : def_width - w->width; + int dy = (w->resize.step_height == 0) ? 0 : def_height - w->height; + /* dx and dy has to go by step.. calculate it. + * The cast to int is necessary else dx/dy are implicitly casted to unsigned int, which won't work. */ + if (w->resize.step_width > 1) dx -= dx % (int)w->resize.step_width; + if (w->resize.step_height > 1) dy -= dy % (int)w->resize.step_height; + ResizeWindow(w, dx, dy, false); + } + + nw->SetLowered(true); + nw->SetDirty(w); + w->SetTimeout(); + break; + } + case WWT_DEBUGBOX: w->ShowNewGRFInspectWindow(); break; @@ -496,6 +716,7 @@ static void DispatchLeftClickEvent(Window *w, int x, int y, int click_count) case WWT_STICKYBOX: w->flags ^= WF_STICKY; nw->SetDirty(w); + if (_ctrl_pressed) w->window_desc->pref_sticky = (w->flags & WF_STICKY) != 0; return; default: @@ -675,7 +896,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(); } @@ -764,6 +985,7 @@ void Window::SetShaded(bool make_shaded) int desired = make_shaded ? SZSP_HORIZONTAL : 0; if (this->shade_select->shown_plane != desired) { if (make_shaded) { + if (this->nested_focus != NULL) this->UnfocusFocusedWidget(); this->unshaded_size.width = this->width; this->unshaded_size.height = this->height; this->shade_select->SetDisplayedPlane(desired); @@ -823,7 +1045,10 @@ Window::~Window() if (_last_scroll_window == this) _last_scroll_window = NULL; /* Make sure we don't try to access this window as the focused window when it doesn't exist anymore. */ - if (_focused_window == this) _focused_window = NULL; + if (_focused_window == this) { + this->OnFocusLost(); + _focused_window = NULL; + } this->DeleteChildWindows(); @@ -1042,6 +1267,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: @@ -1162,16 +1388,15 @@ static void BringWindowToFront(Window *w) * @pre If nested widgets are used (\a widget is \c NULL), #nested_root and #nested_array_size must be initialized. * In addition, #nested_array is either \c NULL, or already initialized. */ -void Window::InitializeData(const WindowDesc *desc, WindowNumber window_number) +void Window::InitializeData(WindowNumber window_number) { /* Set up window properties; some of them are needed to set up smallest size below */ - this->window_class = desc->cls; + this->window_class = this->window_desc->cls; this->SetWhiteBorder(); - if (desc->default_pos == WDP_CENTER) this->flags |= WF_CENTERED; + if (this->window_desc->default_pos == WDP_CENTER) this->flags |= WF_CENTERED; this->owner = INVALID_OWNER; this->nested_focus = NULL; this->window_number = window_number; - this->desc_flags = desc->flags; this->OnInit(); /* Initialize nested widget tree. */ @@ -1450,8 +1675,8 @@ static Point LocalGetWindowPlacement(const WindowDesc *desc, int16 sm_width, int Point pt; const Window *w; - int16 default_width = max(desc->default_width, sm_width); - int16 default_height = max(desc->default_height, sm_height); + int16 default_width = max(desc->GetDefaultWidth(), sm_width); + int16 default_height = max(desc->GetDefaultHeight(), sm_height); if (desc->parent_cls != 0 /* WC_MAIN_WINDOW */ && (w = FindWindowById(desc->parent_cls, window_number)) != NULL && @@ -1489,23 +1714,22 @@ static Point LocalGetWindowPlacement(const WindowDesc *desc, int16 sm_width, int return pt; } -/* virtual */ Point Window::OnInitialPosition(const WindowDesc *desc, int16 sm_width, int16 sm_height, int window_number) +/* virtual */ Point Window::OnInitialPosition(int16 sm_width, int16 sm_height, int window_number) { - return LocalGetWindowPlacement(desc, sm_width, sm_height, window_number); + return LocalGetWindowPlacement(this->window_desc, sm_width, sm_height, window_number); } /** * Perform the first part of the initialization of a nested widget tree. * Construct a nested widget tree in #nested_root, and optionally fill the #nested_array array to provide quick access to the uninitialized widgets. * This is mainly useful for setting very basic properties. - * @param desc Window description. * @param fill_nested Fill the #nested_array (enabling is expensive!). * @note Filling the nested array requires an additional traversal through the nested widget tree, and is best performed by #FinishInitNested rather than here. */ -void Window::CreateNestedTree(const WindowDesc *desc, bool fill_nested) +void Window::CreateNestedTree(bool fill_nested) { int biggest_index = -1; - this->nested_root = MakeWindowNWidgetTree(desc->nwid_parts, desc->nwid_length, &biggest_index, &this->shade_select); + this->nested_root = MakeWindowNWidgetTree(this->window_desc->nwid_parts, this->window_desc->nwid_length, &biggest_index, &this->shade_select); this->nested_array_size = (uint)(biggest_index + 1); if (fill_nested) { @@ -1516,30 +1740,32 @@ void Window::CreateNestedTree(const WindowDesc *desc, bool fill_nested) /** * Perform the second part of the initialization of a nested widget tree. - * @param desc Window description. * @param window_number Number of the new window. */ -void Window::FinishInitNested(const WindowDesc *desc, WindowNumber window_number) +void Window::FinishInitNested(WindowNumber window_number) { - this->InitializeData(desc, window_number); - Point pt = this->OnInitialPosition(desc, this->nested_root->smallest_x, this->nested_root->smallest_y, window_number); + this->InitializeData(window_number); + this->ApplyDefaults(); + Point pt = this->OnInitialPosition(this->nested_root->smallest_x, this->nested_root->smallest_y, window_number); this->InitializePositionSize(pt.x, pt.y, this->nested_root->smallest_x, this->nested_root->smallest_y); - this->FindWindowPlacementAndResize(desc->default_width, desc->default_height); + this->FindWindowPlacementAndResize(this->window_desc->GetDefaultWidth(), this->window_desc->GetDefaultHeight()); } /** * Perform complete initialization of the #Window with nested widgets, to allow use. - * @param desc Window description. * @param window_number Number of the new window. */ -void Window::InitNested(const WindowDesc *desc, WindowNumber window_number) +void Window::InitNested(WindowNumber window_number) { - this->CreateNestedTree(desc, false); - this->FinishInitNested(desc, window_number); + this->CreateNestedTree(false); + this->FinishInitNested(window_number); } -/** Empty constructor, initialization has been moved to #InitNested() called from the constructor of the derived class. */ -Window::Window() : scrolling_scrollbar(-1) +/** + * Empty constructor, initialization has been moved to #InitNested() called from the constructor of the derived class. + * @param desc The description of the window. + */ +Window::Window(WindowDesc *desc) : window_desc(desc), scrolling_scrollbar(-1) { } @@ -2212,7 +2438,7 @@ static bool MaybeBringWindowToFront(Window *w) Window *u; FOR_ALL_WINDOWS_FROM_BACK_FROM(u, w->z_front) { /* A modal child will prevent the activation of the parent window */ - if (u->parent == w && (u->desc_flags & WDF_MODAL)) { + if (u->parent == w && (u->window_desc->flags & WDF_MODAL)) { u->SetWhiteBorder(); u->SetDirty(); return false; @@ -2248,28 +2474,26 @@ static bool MaybeBringWindowToFront(Window *w) * @return #ES_HANDLED if the key press has been handled and no other * window should receive the event. */ -EventState Window::HandleEditBoxKey(int wid, uint16 key, uint16 keycode) +EventState Window::HandleEditBoxKey(int wid, WChar key, uint16 keycode) { - EventState state = ES_NOT_HANDLED; - QueryString *query = this->GetQueryString(wid); - if (query == NULL) return state; + if (query == NULL) return ES_NOT_HANDLED; int action = QueryString::ACTION_NOTHING; - switch (query->HandleEditBoxKey(this, wid, key, keycode, state)) { - case HEBR_EDITING: + switch (query->text.HandleKeyPress(key, keycode)) { + case HKPR_EDITING: this->SetWidgetDirty(wid); this->OnEditboxChanged(wid); break; - case HEBR_CURSOR: + case HKPR_CURSOR: this->SetWidgetDirty(wid); /* For the OSK also invalidate the parent window */ if (this->window_class == WC_OSK) this->InvalidateData(); break; - case HEBR_CONFIRM: + case HKPR_CONFIRM: if (this->window_class == WC_OSK) { this->OnClick(Point(), WID_OSK_OK, 1); } else if (query->ok_button >= 0) { @@ -2279,7 +2503,7 @@ EventState Window::HandleEditBoxKey(int wid, uint16 key, uint16 keycode) } break; - case HEBR_CANCEL: + case HKPR_CANCEL: if (this->window_class == WC_OSK) { this->OnClick(Point(), WID_OSK_CANCEL, 1); } else if (query->cancel_button >= 0) { @@ -2289,6 +2513,9 @@ EventState Window::HandleEditBoxKey(int wid, uint16 key, uint16 keycode) } break; + case HKPR_NOT_HANDLED: + return ES_NOT_HANDLED; + default: break; } @@ -2298,32 +2525,34 @@ EventState Window::HandleEditBoxKey(int wid, uint16 key, uint16 keycode) break; case QueryString::ACTION_CLEAR: - query->text.DeleteAll(); - this->SetWidgetDirty(wid); - this->OnEditboxChanged(wid); + if (query->text.bytes <= 1) { + /* If already empty, unfocus instead */ + this->UnfocusFocusedWidget(); + } else { + query->text.DeleteAll(); + this->SetWidgetDirty(wid); + this->OnEditboxChanged(wid); + } break; default: break; } - return state; + return ES_HANDLED; } /** * Handle keyboard input. - * @param raw_key Lower 8 bits contain the ASCII character, the higher 16 bits the keycode + * @param keycode Virtual keycode of the key. + * @param key Unicode character of the key. */ -void HandleKeypress(uint32 raw_key) +void HandleKeypress(uint keycode, WChar key) { /* World generation is multithreaded and messes with companies. * But there is no company related window open anyway, so _current_company is not used. */ assert(HasModalProgress() || IsLocalCompany()); - /* Setup event */ - uint16 key = GB(raw_key, 0, 16); - uint16 keycode = GB(raw_key, 16, 16); - /* * The Unicode standard defines an area called the private use area. Code points in this * area are reserved for private use and thus not portable between systems. For instance, @@ -2352,12 +2581,22 @@ void HandleKeypress(uint32 raw_key) Window *w; FOR_ALL_WINDOWS_FROM_FRONT(w) { if (w->window_class == WC_MAIN_TOOLBAR) continue; + if (w->window_desc->hotkeys != NULL) { + int hotkey = w->window_desc->hotkeys->CheckMatch(keycode); + if (hotkey >= 0 && w->OnHotkey(hotkey) == ES_HANDLED) return; + } if (w->OnKeyPress(key, keycode) == ES_HANDLED) return; } w = FindWindowById(WC_MAIN_TOOLBAR, 0); /* When there is no toolbar w is null, check for that */ - if (w != NULL && w->OnKeyPress(key, keycode) == ES_HANDLED) return; + if (w != NULL) { + if (w->window_desc->hotkeys != NULL) { + int hotkey = w->window_desc->hotkeys->CheckMatch(keycode); + if (hotkey >= 0 && w->OnHotkey(hotkey) == ES_HANDLED) return; + } + if (w->OnKeyPress(key, keycode) == ES_HANDLED) return; + } HandleGlobalHotkeys(key, keycode); } @@ -2374,6 +2613,35 @@ void HandleCtrlChanged() } } +/** + * Insert a text string at the cursor position into the edit box widget. + * @param wid Edit box widget. + * @param str Text string to insert. + */ +/* virtual */ void Window::InsertTextString(int wid, const char *str, bool marked, const char *caret, const char *insert_location, const char *replacement_end) +{ + QueryString *query = this->GetQueryString(wid); + if (query == NULL) return; + + if (query->text.InsertString(str, marked, caret, insert_location, replacement_end) || marked) { + this->SetWidgetDirty(wid); + this->OnEditboxChanged(wid); + } +} + +/** + * Handle text input. + * @param str Text string to input. + * @param marked Is the input a marked composition string from an IME? + * @param caret Move the caret to this point in the insertion string. + */ +void HandleTextInput(const char *str, bool marked, const char *caret, const char *insert_location, const char *replacement_end) +{ + if (!EditBoxInGlobalFocus()) return; + + _focused_window->InsertTextString(_focused_window->window_class == WC_CONSOLE ? 0 : _focused_window->nested_focus->index, str, marked, caret, insert_location, replacement_end); +} + /** * Local counter that is incremented each time an mouse input event is detected. * The counter is used to stop auto-scrolling. @@ -2475,7 +2743,7 @@ static void HandleKeyScrolling() { /* * Check that any of the dirkeys is pressed and that the focused window - * dont has an edit-box as focused widget. + * doesn't have an edit-box as focused widget. */ if (_dirkeys && !EditBoxInGlobalFocus()) { int factor = _shift_pressed ? 50 : 10; @@ -2636,7 +2904,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(); @@ -2806,7 +3074,7 @@ void SetWindowClassesDirty(WindowClass cls) /** * Mark this window's data as invalid (in need of re-computing) * @param data The data to invalidate with - * @param gui_scope Whether the funtion is called from GUI scope. + * @param gui_scope Whether the function is called from GUI scope. */ void Window::InvalidateData(int data, bool gui_scope) { @@ -2974,7 +3242,7 @@ void DeleteConstructionWindows() * as deleting this window could cascade in deleting (many) others * anywhere in the z-array */ FOR_ALL_WINDOWS_FROM_BACK(w) { - if (w->desc_flags & WDF_CONSTRUCTION) { + if (w->window_desc->flags & WDF_CONSTRUCTION) { delete w; goto restart_search; } @@ -3071,7 +3339,7 @@ int PositionNewsMessage(Window *w) /** * (Re)position network chat window at the screen. * @param w Window structure of the network chat window, may also be \c NULL. - * @return X coordinate of left edge of the repositioned network chat winodw. + * @return X coordinate of left edge of the repositioned network chat window. */ int PositionNetworkChatWindow(Window *w) { @@ -3108,25 +3376,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, *_preferred_toolbar_size) - w->width, 0, false); + ResizeWindow(w, min(neww, w->window_desc->default_width) - w->width, 0, false); top = w->top; left = PositionMainToolbar(w); // changes toolbar orientation @@ -3138,7 +3397,7 @@ void RelocateAllWindows(int neww, int newh) break; case WC_STATUS_BAR: - ResizeWindow(w, min(neww, *_preferred_statusbar_size) - w->width, 0, false); + ResizeWindow(w, min(neww, w->window_desc->default_width) - w->width, 0, false); top = newh - w->height; left = PositionStatusbar(w); diff --git a/src/window_func.h b/src/window_func.h index 704885b9a..453b88978 100644 --- a/src/window_func.h +++ b/src/window_func.h @@ -14,6 +14,7 @@ #include "window_type.h" #include "company_type.h" +#include "core/geometry_type.hpp" Window *FindWindowById(WindowClass cls, WindowNumber number); Window *FindWindowByClass(WindowClass cls); @@ -52,4 +53,7 @@ void SetWindowClassesDirty(WindowClass cls); void DeleteWindowById(WindowClass cls, WindowNumber number, bool force = true); void DeleteWindowByClass(WindowClass cls); +bool EditBoxInGlobalFocus(); +Point GetCaretPosition(); + #endif /* WINDOW_FUNC_H */ diff --git a/src/window_gui.h b/src/window_gui.h index 6cd218793..bf8500f0f 100644 --- a/src/window_gui.h +++ b/src/window_gui.h @@ -19,12 +19,7 @@ #include "widget_type.h" #include "core/smallvec_type.hpp" #include "core/smallmap_type.hpp" - -/** State of handling an event. */ -enum EventState { - ES_HANDLED, ///< The passed event is handled. - ES_NOT_HANDLED, ///< The passed event is not handled. -}; +#include "string_type.h" /** * Flags to describe the look of the frame @@ -106,6 +101,13 @@ enum WidgetDrawDistances { WD_DEBUGBOX_TOP = 3, ///< Top offset of debug sprite. WD_DEBUGBOX_BOTTOM = 3, ///< Bottom offset of debug sprite. + /* WWT_DEFSIZEBOX */ + WD_DEFSIZEBOX_WIDTH = 12, ///< Width of a standard defsize box widget. + WD_DEFSIZEBOX_LEFT = 2, ///< Left offset of defsize sprite. + WD_DEFSIZEBOX_RIGHT = 2, ///< Right offset of defsize sprite. + WD_DEFSIZEBOX_TOP = 3, ///< Top offset of defsize sprite. + WD_DEFSIZEBOX_BOTTOM = 3, ///< Bottom offset of defsize sprite. + /* WWT_RESIZEBOX */ WD_RESIZEBOX_WIDTH = 12, ///< Width of a resize box widget. WD_RESIZEBOX_LEFT = 3, ///< Left offset of resize sprite. @@ -130,7 +132,7 @@ 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. @@ -160,25 +162,46 @@ enum WindowPosition { Point GetToolbarAlignedWindowPosition(int window_width); +struct HotkeyList; + /** * High level window description */ struct WindowDesc : ZeroedMemoryAllocator { - WindowDesc(WindowPosition default_pos, int16 def_width, int16 def_height, + WindowDesc(WindowPosition default_pos, const char *ini_key, int16 def_width, int16 def_height, WindowClass window_class, WindowClass parent_class, uint32 flags, - const NWidgetPart *nwid_parts, int16 nwid_length); + const NWidgetPart *nwid_parts, int16 nwid_length, HotkeyList *hotkeys = NULL); ~WindowDesc(); - WindowPosition default_pos; ///< Prefered position of the window. @see WindowPosition() - int16 default_width; ///< Prefered initial width of the window. - int16 default_height; ///< Prefered initial height of the window. + 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. uint32 flags; ///< Flags. @see WindowDefaultFlag const NWidgetPart *nwid_parts; ///< Nested widget parts describing the window. int16 nwid_length; ///< Length of the #nwid_parts array. + HotkeyList *hotkeys; ///< Hotkeys for the window. + + bool pref_sticky; ///< Preferred stickyness. + 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; } + + static void LoadFromConfig(); + static void SaveToConfig(); + +private: + /** + * Dummy private copy constructor to prevent compilers from + * copying the structure, which fails due to _window_descs. + */ + WindowDesc(const WindowDesc &other); }; /** @@ -248,14 +271,14 @@ struct QueryString; */ struct Window : ZeroedMemoryAllocator { protected: - void InitializeData(const WindowDesc *desc, WindowNumber window_number); + 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); SmallVector scheduled_invalidation_data; ///< Data of scheduled OnInvalidateData() calls. public: - Window(); + Window(WindowDesc *desc); virtual ~Window(); @@ -279,12 +302,13 @@ struct Window : ZeroedMemoryAllocator { { } + WindowDesc *window_desc; ///< Window description WindowFlags flags; ///< Window flags WindowClass window_class; ///< Window class WindowNumber window_number; ///< Window number within the window class uint8 timeout_timer; ///< Timer value of the WF_TIMEOUT for flags. - uint8 white_border_timer; ///< Timervalue of the WF_WHITE_BORDER for flags. + uint8 white_border_timer; ///< Timer value of the WF_WHITE_BORDER for flags. int left; ///< x position of left edge of the window int top; ///< y position of top edge of the window @@ -296,7 +320,6 @@ struct Window : ZeroedMemoryAllocator { Owner owner; ///< The owner of the content shown in this window. Company colour is acquired from this variable. ViewportData *viewport; ///< Pointer to viewport data, if present. - uint32 desc_flags; ///< Window/widgets default flags setting. @see WindowDefaultFlag const NWidgetCore *nested_focus; ///< Currently focused nested widget, or \c NULL if no nested widget has focus. SmallMap querystrings; ///< QueryString associated to WWT_EDITBOX widgets. NWidgetBase *nested_root; ///< Root of the nested tree. @@ -322,9 +345,16 @@ struct Window : ZeroedMemoryAllocator { const QueryString *GetQueryString(uint widnum) const; QueryString *GetQueryString(uint widnum); - void InitNested(const WindowDesc *desc, WindowNumber number = 0); - void CreateNestedTree(const WindowDesc *desc, bool fill_nested = true); - void FinishInitNested(const WindowDesc *desc, WindowNumber window_number = 0); + virtual const char *GetFocusedText() const; + virtual const char *GetCaret() const; + virtual const char *GetMarkedText(size_t *length) const; + virtual Point GetCaretPosition() const; + virtual Rect GetTextBoundingRect(const char *from, const char *to) const; + virtual const char *GetTextCharacterAtPosition(const Point &pt) const; + + void InitNested(WindowNumber number = 0); + void CreateNestedTree(bool fill_nested = true); + void FinishInitNested(WindowNumber window_number = 0); /** * Set the timeout flag of the window and initiate the timer. @@ -465,7 +495,8 @@ struct Window : ZeroedMemoryAllocator { void UnfocusFocusedWidget(); bool SetFocusedWidget(int widget_index); - EventState HandleEditBoxKey(int wid, uint16 key, uint16 keycode); + EventState HandleEditBoxKey(int wid, WChar key, uint16 keycode); + virtual void InsertTextString(int wid, const char *str, bool marked, const char *caret, const char *insert_location, const char *replacement_end); void HandleButtonClick(byte widget); int GetRowFromWidget(int clickpos, int widget, int padding, int line_height = -1) const; @@ -504,15 +535,16 @@ struct Window : ZeroedMemoryAllocator { */ virtual void OnInit() { } + virtual void ApplyDefaults(); + /** * Compute the initial position of the window. - * @param *desc The pointer to the WindowDesc of the window to create. * @param sm_width Smallest width of the window. * @param sm_height Smallest height of the window. * @param window_number The window number of the new window. * @return Initial position of the top-left corner of the window. */ - virtual Point OnInitialPosition(const WindowDesc *desc, int16 sm_width, int16 sm_height, int window_number); + virtual Point OnInitialPosition(int16 sm_width, int16 sm_height, int window_number); /** * The window must be repainted. @@ -558,10 +590,7 @@ struct Window : ZeroedMemoryAllocator { */ virtual void OnFocus() {} - /** - * Called when window looses focus - */ - virtual void OnFocusLost() {} + virtual void OnFocusLost(); /** * A key has been pressed. @@ -570,7 +599,9 @@ struct Window : ZeroedMemoryAllocator { * @return #ES_HANDLED if the key press has been handled and no other * window should receive the event. */ - virtual EventState OnKeyPress(uint16 key, uint16 keycode) { return ES_NOT_HANDLED; } + virtual EventState OnKeyPress(WChar key, uint16 keycode) { return ES_NOT_HANDLED; } + + virtual EventState OnHotkey(int hotkey); /** * The state of the control key has changed @@ -805,7 +836,7 @@ inline const NWID *Window::GetWidget(uint widnum) const class PickerWindowBase : public Window { public: - PickerWindowBase(Window *parent) : Window() + PickerWindowBase(WindowDesc *desc, Window *parent) : Window(desc) { this->parent = parent; } @@ -823,7 +854,7 @@ Window *FindWindowFromPt(int x, int y); * @return see Window pointer of the newly created window */ template -Wcls *AllocateWindowDescFront(const WindowDesc *desc, int window_number) +Wcls *AllocateWindowDescFront(WindowDesc *desc, int window_number) { if (BringWindowToFrontById(desc->cls, window_number)) return NULL; return new Wcls(desc, window_number); diff --git a/src/window_type.h b/src/window_type.h index c69e44cd0..a8a8128f5 100644 --- a/src/window_type.h +++ b/src/window_type.h @@ -284,6 +284,11 @@ enum WindowClass { */ WC_GOALS_LIST, + /** + * Story book; %Window numbers: + * - CompanyID = #StoryBookWidgets + */ + WC_STORY_BOOK, /** * Station list; %Window numbers: @@ -664,6 +669,18 @@ enum WindowClass { */ WC_SPRITE_ALIGNER, + /** + * Linkgraph legend; %Window numbers: + * - 0 = #LinkGraphWidgets + */ + WC_LINKGRAPH_LEGEND, + + /** + * Save preset; %Window numbers: + * - 0 = #SavePresetWidgets + */ + WC_SAVE_PRESET, + WC_INVALID = 0xFFFF, ///< Invalid window. }; @@ -680,4 +697,10 @@ struct Window; /** Number to differentiate different windows of the same class */ typedef int32 WindowNumber; +/** State of handling an event. */ +enum EventState { + ES_HANDLED, ///< The passed event is handled. + ES_NOT_HANDLED, ///< The passed event is not handled. +}; + #endif /* WINDOW_TYPE_H */ diff --git a/src/zoom_func.h b/src/zoom_func.h index aa4bf3d69..5f1bf830d 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,8 @@ 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; } #endif /* ZOOM_FUNC_H */
    0   
      -
    • 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
      -
    • +
    • 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)
    • m6 bits 7..6 : Possibility of a bridge above, in the direction specified
    • m6 bits 1..0 : Tropic zone definition
    • -
    • m7: animation counter +
    • m7: animation counter
    XXXX XXXX XXXX XXXX OOOO XXXX OOOO XXXXXXOX OXXXXXOX OOXX XXOO OOXX OOOO OOOO
    XXXX OOOO OOOO OOOO ~~~~ ~XXXOOXX XXXXOOXX XOXX XXOX XXXX
    OOOO OOOO XOOX XXXX XXOO OOXXXXXX XOXXXXXX XXXX
    bridge ramp