diff options
229 files changed, 7002 insertions, 5796 deletions
diff --git a/.clang-format b/.clang-format index dc7380ffd..0db8ab167 100644 --- a/.clang-format +++ b/.clang-format @@ -29,3 +29,4 @@ AlignAfterOpenBracket: DontAlign ContinuationIndentWidth: 16 ConstructorInitializerIndentWidth: 16 BreakConstructorInitializers: AfterColon +AlwaysBreakTemplateDeclarations: Yes diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a3cc92a8e..ae24dc574 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -124,7 +124,7 @@ jobs: - name: Install deps run: | source ./util/ci/common.sh - install_linux_deps clang-9 + install_linux_deps --old-irr clang-9 - name: Build prometheus-cpp run: | @@ -212,7 +212,10 @@ jobs: msvc: name: VS 2019 ${{ matrix.config.arch }}-${{ matrix.type }} - runs-on: windows-2019 + runs-on: windows-2019 + #### Disabled due to Irrlicht switch + if: false + #### Disabled due to Irrlicht switch env: VCPKG_VERSION: 0bf3923f9fab4001c00f0f429682a0853b5749e0 # 2020.11 diff --git a/.github/workflows/cpp_lint.yml b/.github/workflows/cpp_lint.yml index 1f97d105a..2bd884c7a 100644 --- a/.github/workflows/cpp_lint.yml +++ b/.github/workflows/cpp_lint.yml @@ -24,20 +24,21 @@ on: - '.github/workflows/**.yml' jobs: - clang_format: - runs-on: ubuntu-18.04 - steps: - - uses: actions/checkout@v2 - - name: Install clang-format - run: | - sudo apt-get install clang-format-9 -qyy - - name: Run clang-format - run: | - source ./util/ci/lint.sh - perform_lint - env: - CLANG_FORMAT: clang-format-9 +# clang_format: +# runs-on: ubuntu-18.04 +# steps: +# - uses: actions/checkout@v2 +# - name: Install clang-format +# run: | +# sudo apt-get install clang-format-9 -qyy +# +# - name: Run clang-format +# run: | +# source ./util/ci/clang-format.sh +# check_format +# env: +# CLANG_FORMAT: clang-format-9 clang_tidy: runs-on: ubuntu-18.04 diff --git a/.gitignore b/.gitignore index 52f8bc4f4..d951f2222 100644 --- a/.gitignore +++ b/.gitignore @@ -86,8 +86,7 @@ src/test_config.h src/cmake_config.h src/cmake_config_githash.h src/unittest/test_world/world.mt -src/lua/build/ -locale/ +/locale/ .directory *.cbp *.layout diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 0441aeaa1..39ff576cf 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -9,16 +9,24 @@ stages: - deploy variables: + IRRLICHT_TAG: "1.9.0mt0" MINETEST_GAME_REPO: "https://github.com/minetest/minetest_game.git" CONTAINER_IMAGE: registry.gitlab.com/$CI_PROJECT_PATH .build_template: stage: build + before_script: + - apt-get update + - apt-get -y install build-essential git cmake libpng-dev libjpeg-dev libxxf86vm-dev libgl1-mesa-dev libsqlite3-dev libleveldb-dev libogg-dev libvorbis-dev libopenal-dev libcurl4-gnutls-dev libfreetype6-dev zlib1g-dev libgmp-dev libjsoncpp-dev script: + - git clone https://github.com/minetest/irrlicht -b $IRRLICHT_TAG + - cd irrlicht + - cmake . -DBUILD_SHARED_LIBS=OFF + - make -j2 + - cd .. - mkdir cmakebuild - - mkdir -p artifact/minetest/usr/ - cd cmakebuild - - cmake -DCMAKE_INSTALL_PREFIX=../artifact/minetest/usr/ -DCMAKE_BUILD_TYPE=Release -DRUN_IN_PLACE=FALSE -DENABLE_GETTEXT=TRUE -DENABLE_SYSTEM_JSONCPP=TRUE -DBUILD_SERVER=TRUE .. + - cmake -DIRRLICHT_LIBRARY=$PWD/../irrlicht/lib/Linux/libIrrlicht.a -DIRRLICHT_INCLUDE_DIR=$PWD/../irrlicht/include -DCMAKE_INSTALL_PREFIX=../artifact/minetest/usr/ -DCMAKE_BUILD_TYPE=Release -DRUN_IN_PLACE=FALSE -DENABLE_GETTEXT=TRUE -DBUILD_SERVER=TRUE .. - make -j2 - make install artifacts: @@ -30,7 +38,7 @@ variables: .debpkg_template: stage: package before_script: - - apt-get update -y + - apt-get update - apt-get install -y git - mkdir -p build/deb/minetest/DEBIAN/ - cp misc/debpkg-control build/deb/minetest/DEBIAN/control @@ -39,6 +47,7 @@ variables: - git clone $MINETEST_GAME_REPO build/deb/minetest/usr/share/minetest/games/minetest_game - rm -rf build/deb/minetest/usr/share/minetest/games/minetest/.git - sed -i 's/DATEPLACEHOLDER/'$(date +%y.%m.%d)'/g' build/deb/minetest/DEBIAN/control + - sed -i 's/JPEG_PLACEHOLDER/'$JPEG_PKG'/g' build/deb/minetest/DEBIAN/control - sed -i 's/LEVELDB_PLACEHOLDER/'$LEVELDB_PKG'/g' build/deb/minetest/DEBIAN/control - cd build/deb/ && dpkg-deb -b minetest/ && mv minetest.deb ../../ artifacts: @@ -49,7 +58,7 @@ variables: .debpkg_install: stage: deploy before_script: - - apt-get update -y + - apt-get update script: - apt-get install -y ./*.deb - minetest --version @@ -63,9 +72,6 @@ variables: build:debian-9: extends: .build_template image: debian:9 - before_script: - - apt-get update -y - - apt-get -y install build-essential libirrlicht-dev cmake libbz2-dev libpng-dev libjpeg-dev libxxf86vm-dev libgl1-mesa-dev libsqlite3-dev libogg-dev libvorbis-dev libopenal-dev libcurl4-gnutls-dev libfreetype6-dev zlib1g-dev libgmp-dev libjsoncpp-dev package:debian-9: extends: .debpkg_template @@ -74,6 +80,7 @@ package:debian-9: - build:debian-9 variables: LEVELDB_PKG: libleveldb1v5 + JPEG_PKG: libjpeg62-turbo deploy:debian-9: extends: .debpkg_install @@ -86,9 +93,6 @@ deploy:debian-9: build:debian-10: extends: .build_template image: debian:10 - before_script: - - apt-get update -y - - apt-get -y install build-essential libirrlicht-dev cmake libbz2-dev libpng-dev libjpeg-dev libxxf86vm-dev libgl1-mesa-dev libsqlite3-dev libogg-dev libvorbis-dev libopenal-dev libcurl4-gnutls-dev libfreetype6-dev zlib1g-dev libgmp-dev libjsoncpp-dev package:debian-10: extends: .debpkg_template @@ -97,6 +101,7 @@ package:debian-10: - build:debian-10 variables: LEVELDB_PKG: libleveldb1d + JPEG_PKG: libjpeg62-turbo deploy:debian-10: extends: .debpkg_install @@ -113,9 +118,6 @@ deploy:debian-10: build:ubuntu-16.04: extends: .build_template image: ubuntu:xenial - before_script: - - apt-get update -y - - apt-get -y install build-essential libirrlicht-dev cmake libbz2-dev libpng-dev libjpeg-dev libxxf86vm-dev libgl1-mesa-dev libsqlite3-dev libogg-dev libvorbis-dev libopenal-dev libcurl4-gnutls-dev libfreetype6-dev zlib1g-dev libgmp-dev libjsoncpp-dev package:ubuntu-16.04: extends: .debpkg_template @@ -124,6 +126,7 @@ package:ubuntu-16.04: - build:ubuntu-16.04 variables: LEVELDB_PKG: libleveldb1v5 + JPEG_PKG: libjpeg-turbo8 deploy:ubuntu-16.04: extends: .debpkg_install @@ -136,9 +139,6 @@ deploy:ubuntu-16.04: build:ubuntu-18.04: extends: .build_template image: ubuntu:bionic - before_script: - - apt-get update -y - - apt-get -y install build-essential libirrlicht-dev cmake libbz2-dev libpng-dev libjpeg-dev libxxf86vm-dev libgl1-mesa-dev libsqlite3-dev libogg-dev libvorbis-dev libopenal-dev libcurl4-gnutls-dev libfreetype6-dev zlib1g-dev libgmp-dev libjsoncpp-dev package:ubuntu-18.04: extends: .debpkg_template @@ -147,6 +147,7 @@ package:ubuntu-18.04: - build:ubuntu-18.04 variables: LEVELDB_PKG: libleveldb1v5 + JPEG_PKG: libjpeg-turbo8 deploy:ubuntu-18.04: extends: .debpkg_install @@ -163,7 +164,7 @@ build:fedora-28: extends: .build_template image: fedora:28 before_script: - - dnf -y install make automake gcc gcc-c++ kernel-devel cmake libcurl-devel openal-soft-devel libvorbis-devel libXxf86vm-devel libogg-devel freetype-devel mesa-libGL-devel zlib-devel jsoncpp-devel irrlicht-devel gmp-devel sqlite-devel luajit-devel leveldb-devel ncurses-devel spatialindex-devel + - dnf -y install make git gcc gcc-c++ kernel-devel cmake libjpeg-devel libpng-devel libcurl-devel openal-soft-devel libvorbis-devel libXxf86vm-devel libogg-devel freetype-devel mesa-libGL-devel zlib-devel jsoncpp-devel gmp-devel sqlite-devel luajit-devel leveldb-devel ncurses-devel spatialindex-devel ## ## MinGW for Windows @@ -172,7 +173,7 @@ build:fedora-28: .generic_win_template: image: ubuntu:bionic before_script: - - apt-get update -y + - apt-get update - apt-get install -y wget xz-utils unzip git cmake gettext - wget -nv http://minetest.kitsunemimi.pw/mingw-w64-${WIN_ARCH}_9.2.0_ubuntu18.04.tar.xz -O mingw.tar.xz - tar -xaf mingw.tar.xz -C /usr @@ -183,13 +184,13 @@ build:fedora-28: artifacts: expire_in: 1h paths: - - build/minetest/_build/* + - _build/* .package_win_template: extends: .generic_win_template stage: package script: - - unzip build/minetest/_build/minetest-*.zip + - unzip _build/minetest-*.zip - cp -p /usr/${WIN_ARCH}-w64-mingw32/bin/libgcc*.dll minetest-*-win*/bin/ - cp -p /usr/${WIN_ARCH}-w64-mingw32/bin/libstdc++*.dll minetest-*-win*/bin/ - cp -p /usr/${WIN_ARCH}-w64-mingw32/bin/libwinpthread*.dll minetest-*-win*/bin/ @@ -201,7 +202,7 @@ build:fedora-28: build:win32: extends: .build_win_template script: - - ./util/buildbot/buildwin32.sh build + - EXISTING_MINETEST_DIR=$PWD ./util/buildbot/buildwin32.sh build variables: WIN_ARCH: "i686" @@ -216,7 +217,7 @@ package:win32: build:win64: extends: .build_win_template script: - - ./util/buildbot/buildwin64.sh build + - EXISTING_MINETEST_DIR=$PWD ./util/buildbot/buildwin64.sh build variables: WIN_ARCH: "x86_64" @@ -1,33 +1,67 @@ +# Documentation: https://git-scm.com/docs/git-check-mailmap#_mapping_authors + 0gb.us <0gb.us@0gb.us> <us_0gb@laptop-0gb-us.0gb.us> -Calinou <calinou9999@gmail.com> <calinou9999spam@gmail.com> -Perttu Ahola <celeron55@gmail.com> celeron55 <celeron55@gmail.com> +Calinou <calinou@opmbx.org> <calinou9999@gmail.com> +Calinou <calinou@opmbx.org> <calinou9999spam@gmail.com> +Perttu Ahola <celeron55@gmail.com> Perttu Ahola <celeron55@gmail.com> celeron55 <celeron55@armada.(none)> -Craig Robbins <kde.psych@gmail.com> <crobbins@localhost.localdomain> +Zeno- <kde.psych@gmail.com> +Zeno- <kde.psych@gmail.com> <crobbins@localhost.localdomain> +Diego MartÃnez <kaeza@users.sf.net> Diego MartÃnez <kaeza@users.sf.net> <lkaezadl3@gmail.com> +Ilya Zhuravlev <zhuravlevilya@ya.ru> Ilya Zhuravlev <zhuravlevilya@ya.ru> <whatever@xyz.is> kwolekr <kwolekr@minetest.net> <mirrorisim@gmail.com> -PilzAdam <pilzadam@minetest.net> PilzAdam <adam-k@outlook.com> -PilzAdam <pilzadam@minetest.net> Pilz Adam <PilzAdam@gmx.de> -PilzAdam <pilzadam@minetest.net> PilzAdam <PilzAdam@gmx.de> +PilzAdam <pilzadam@minetest.net> <adam-k@outlook.com> +PilzAdam <pilzadam@minetest.net> <PilzAdam@gmx.de> proller <proller@github.com> <proler@github.com> proller <proller@github.com> <proler@gmail.com> RealBadAngel <maciej.kasatkin@o2.pl> <mk@realbadangel.pl> RealBadAngel <maciej.kasatkin@o2.pl> <maciej.kasatkin@yahoo.com> Selat <LongExampleTestName@gmail.com> <LongExampletestName@gmail.com> ShadowNinja <shadowninja@minetest.net> ShadowNinja <noreply@gmail.com> -Shen Zheyu <arsdragonfly@gmail.com> arsdragonfly <arsdragonfly@gmail.com> -Pavel Elagin <elagin.pasha@gmail.com> elagin <elagin.pasha@gmail.com> -Esteban I. Ruiz Moreno <exio4.com@gmail.com> Esteban I. RM <exio4.com@gmail.com> -manuel duarte <ffrogger0@yahoo.com> manuel joaquim <ffrogger0@yahoo.com> -manuel duarte <ffrogger0@yahoo.com> sweetbomber <ffrogger _zero_ at yahoo dot com> -Diego MartÃnez <kaeza@users.sf.net> kaeza <kaeza@users.sf.net> -Diego MartÃnez <kaeza@users.sf.net> Diego Martinez <kaeza@users.sf.net> -Lord James <neftali_dtctv@hotmail.com> Lord89James <neftali_dtctv@hotmail.com> -BlockMen <nmuelll@web.de> Block Men <nmuelll@web.de> -sfan5 <sfan5@live.de> Sfan5 <sfan5@live.de> -DannyDark <the_skeleton_of_a_child@yahoo.co.uk> dannydark <the_skeleton_of_a_child@yahoo.co.uk> -Ilya Pavlov <TTChangeTheWorld@gmail.com> Ilya <TTChangeTheWorld@gmail.com> -Ilya Zhuravlev <zhuravlevilya@ya.ru> xyzz <zhuravlevilya@ya.ru> +Esteban I. Ruiz Moreno <exio4.com@gmail.com> +Esteban I. Ruiz Moreno <exio4.com@gmail.com> <me@exio4.xyz> +Lord James <neftali_dtctv@hotmail.com> +BlockMen <nmuelll@web.de> +sfan5 <sfan5@live.de> +DannyDark <the_skeleton_of_a_child@yahoo.co.uk> +Ilya Pavlov <TTChangeTheWorld@gmail.com> sapier <Sapier at GMX dot net> sapier <sapier AT gmx DOT net> sapier <Sapier at GMX dot net> sapier <sapier at gmx dot net> - +SmallJoker <SmallJoker@users.noreply.github.com> <mk939@ymail.com> +Loïc Blot <nerzhul@users.noreply.github.com> +Loïc Blot <nerzhul@users.noreply.github.com> <loic.blot@unix-experience.fr> +numzero <numzer0@yandex.ru> Vitaliy <numzer0@yandex.ru> +numzero <numzer0@yandex.ru> <silverunicorn2011@yandex.ru> +Jean-Patrick Guerrero <kilbith@users.noreply.github.com> +Jean-Patrick Guerrero <kilbith@users.noreply.github.com> <jeanpatrick.guerrero@gmail.com> +HybridDog <3192173+HybridDog@users.noreply.github.com> <ovvv@web.de> +srfqi <muhammadrifqipriyosusanto@gmail.com> +Dániel Juhász <juhdanad@gmail.com> +rubenwardy <rw@rubenwardy.com> +rubenwardy <rw@rubenwardy.com> <rubenwardy@gmail.com> +Paul Ouellette <oue.paul18@gmail.com> +Vanessa Dannenberg <vanessa.e.dannenberg@gmail.com> <vanessaezekowitz@gmail.com> +ClobberXD <ClobberXD@gmail.com> +ClobberXD <ClobberXD@gmail.com> <ClobberXD@protonmail.com> +ClobberXD <ClobberXD@gmail.com> <36130650+ClobberXD@users.noreply.github.com> +Auke Kok <sofar+github@foo-projects.org> +Auke Kok <sofar+github@foo-projects.org> <sofar@foo-projects.org> +Desour <vorunbekannt75@web.de> +Nathanaël Courant <Ekdohibs@users.noreply.github.com> <nathanael.courant@laposte.net> +Ezhh <owlecho@live.com> +paramat <paramat@users.noreply.github.com> +paramat <paramat@users.noreply.github.com> <mat.gregory@virginmedia.com> +lhofhansl <lhofhansl@yahoo.com> <larsh@apache.org> +red-001 <red-001@outlook.ie> <red-001@openmailbox.org> +Wuzzy <wuzzy2@mail.ru> <Wuzzy2@mail.ru> +Wuzzy <wuzzy2@mail.ru> <almikes@aol.com> +Jordach <jordach.snelling@gmail.com> +MoNTE48 <MoNTE48@mail.ua> +v-rob <robinsonvincent89@gmail.com> +v-rob <robinsonvincent89@gmail.com> <31123645+v-rob@users.noreply.github.com> +EvidenceB <49488517+EvidenceBKidscode@users.noreply.github.com> +gregorycu <gregory.currie@gmail.com> +Rogier <rogier777@gmail.com> +Rogier <rogier777@gmail.com> <Rogier-5@users.noreply.github.com> diff --git a/CMakeLists.txt b/CMakeLists.txt index 2549bd25d..e4bda3afb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,7 +1,5 @@ cmake_minimum_required(VERSION 3.5) -cmake_policy(SET CMP0025 OLD) - # This can be read from ${PROJECT_NAME} after project() is called project(minetest) set(PROJECT_NAME_CAPITALIZED "Minetest") @@ -12,7 +10,7 @@ set(CLANG_MINIMUM_VERSION "3.4") # Also remember to set PROTOCOL_VERSION in network/networkprotocol.h when releasing set(VERSION_MAJOR 5) -set(VERSION_MINOR 4) +set(VERSION_MINOR 5) set(VERSION_PATCH 0) set(VERSION_EXTRA "" CACHE STRING "Stuff to append to version string") @@ -61,6 +59,29 @@ set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/Modules/") # This is done here so that relative search paths are more reasonable find_package(Irrlicht) +if(BUILD_CLIENT AND NOT IRRLICHT_FOUND) + message(FATAL_ERROR "Irrlicht is required to build the client, but it was not found.") +elseif(IRRLICHT_INCLUDE_DIR STREQUAL "") + message(FATAL_ERROR "Irrlicht headers are required to build the server, but none found.") +endif() + +include(CheckSymbolExists) +set(CMAKE_REQUIRED_INCLUDES ${IRRLICHT_INCLUDE_DIR}) +unset(HAS_FORKED_IRRLICHT CACHE) +check_symbol_exists(IRRLICHT_VERSION_MT "IrrCompileConfig.h" HAS_FORKED_IRRLICHT) +if(NOT HAS_FORKED_IRRLICHT) + string(CONCAT EXPLANATION_MSG + "Irrlicht found, but it is not Minetest's Irrlicht fork. " + "The Minetest team has forked Irrlicht to make their own customizations. " + "It can be found here: https://github.com/minetest/irrlicht") + if(BUILD_CLIENT) + message(FATAL_ERROR "${EXPLANATION_MSG}\n" + "Building the client with upstream Irrlicht is no longer possible.") + else() + message(WARNING "${EXPLANATION_MSG}\n" + "The server can still be built with upstream Irrlicht but this is DISCOURAGED.") + endif() +endif() # Installation @@ -169,7 +190,6 @@ install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/games/devtest" DESTINATION "${SHA if(BUILD_CLIENT) install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/client/shaders" DESTINATION "${SHAREDIR}/client") install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/textures/base/pack" DESTINATION "${SHAREDIR}/textures/base") - install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/fonts" DESTINATION "${SHAREDIR}") if(RUN_IN_PLACE) install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/clientmods" DESTINATION "${SHAREDIR}") install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/client/serverlist" DESTINATION "${SHAREDIR}/client") @@ -204,8 +224,8 @@ find_package(GMP REQUIRED) find_package(Json REQUIRED) find_package(Lua REQUIRED) -# JsonCPP doesn't compile well on GCC 4.8 -if(NOT ENABLE_SYSTEM_JSONCPP) +# JsonCpp doesn't compile well on GCC 4.8 +if(NOT USE_SYSTEM_JSONCPP) set(GCC_MINIMUM_VERSION "4.9") endif() @@ -214,7 +234,7 @@ if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") message(FATAL_ERROR "Insufficient gcc version, found ${CMAKE_CXX_COMPILER_VERSION}. " "Version ${GCC_MINIMUM_VERSION} or higher is required.") endif() -elseif(CMAKE_CXX_COMPILER_ID STREQUAL "Clang") +elseif(CMAKE_CXX_COMPILER_ID MATCHES "(Apple)?Clang") if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS "${CLANG_MINIMUM_VERSION}") message(FATAL_ERROR "Insufficient clang version, found ${CMAKE_CXX_COMPILER_VERSION}. " "Version ${CLANG_MINIMUM_VERSION} or higher is required.") diff --git a/Dockerfile b/Dockerfile index 871ca9825..33eba64ca 100644 --- a/Dockerfile +++ b/Dockerfile @@ -51,7 +51,7 @@ RUN mkdir build && \ FROM alpine:3.11 -RUN apk add --no-cache sqlite-libs curl gmp libstdc++ libgcc libpq luajit && \ +RUN apk add --no-cache sqlite-libs curl gmp libstdc++ libgcc libpq luajit jsoncpp && \ adduser -D minetest --uid 30000 -h /var/lib/minetest && \ chown -R minetest:minetest /var/lib/minetest diff --git a/LICENSE.txt b/LICENSE.txt index 9b8ee851a..2d1c0c795 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -14,6 +14,9 @@ https://www.apache.org/licenses/LICENSE-2.0.html Textures by Zughy are under CC BY-SA 4.0 https://creativecommons.org/licenses/by-sa/4.0/ +textures/base/pack/server_public.png is under CC-BY 4.0, taken from Twitter's Twemoji set +https://creativecommons.org/licenses/by/4.0/ + Authors of media files ----------------------- Everything not listed in here: @@ -39,10 +42,10 @@ erlehmann: misc/minetest.svg textures/base/pack/logo.png -JRottm +JRottm: textures/base/pack/player_marker.png -srifqi +srifqi: textures/base/pack/chat_hide_btn.png textures/base/pack/chat_show_btn.png textures/base/pack/joystick_bg.png @@ -58,6 +61,9 @@ Zughy: textures/base/pack/cdb_update.png textures/base/pack/cdb_viewonline.png +appgurueu: + textures/base/pack/server_incompatible.png + License of Minetest source code ------------------------------- @@ -31,10 +31,10 @@ Table of Contents Further documentation ---------------------- -- Website: http://minetest.net/ -- Wiki: http://wiki.minetest.net/ -- Developer wiki: http://dev.minetest.net/ -- Forum: http://forum.minetest.net/ +- Website: https://minetest.net/ +- Wiki: https://wiki.minetest.net/ +- Developer wiki: https://dev.minetest.net/ +- Forum: https://forum.minetest.net/ - GitHub: https://github.com/minetest/minetest/ - [doc/](doc/) directory of source distribution @@ -68,7 +68,7 @@ Some can be changed in the key config dialog in the settings tab. | P | Enable/disable pitch move mode | | J | Enable/disable fast mode (needs fast privilege) | | H | Enable/disable noclip mode (needs noclip privilege) | -| E | Move fast in fast mode | +| E | Aux1 (Move fast in fast mode. Games may add special features) | | C | Cycle through camera modes | | V | Cycle through minimap modes | | Shift + V | Change minimap orientation | @@ -134,7 +134,7 @@ Compiling |------------|---------|------------| | GCC | 4.9+ | Can be replaced with Clang 3.4+ | | CMake | 2.6+ | | -| Irrlicht | 1.7.3+ | | +| Irrlicht | - | Custom version required, see https://github.com/minetest/irrlicht | | SQLite3 | 3.0+ | | | LuaJIT | 2.0+ | Bundled Lua 5.1 is used if not present | | GMP | 5.0.0+ | Bundled mini-GMP is used if not present | @@ -142,19 +142,19 @@ Compiling For Debian/Ubuntu users: - sudo apt install g++ make libc6-dev libirrlicht-dev cmake libbz2-dev libpng-dev libjpeg-dev libxxf86vm-dev libgl1-mesa-dev libsqlite3-dev libogg-dev libvorbis-dev libopenal-dev libcurl4-gnutls-dev libfreetype6-dev zlib1g-dev libgmp-dev libjsoncpp-dev + sudo apt install g++ make libc6-dev cmake libpng-dev libjpeg-dev libxxf86vm-dev libgl1-mesa-dev libsqlite3-dev libogg-dev libvorbis-dev libopenal-dev libcurl4-gnutls-dev libfreetype6-dev zlib1g-dev libgmp-dev libjsoncpp-dev For Fedora users: - sudo dnf install make automake gcc gcc-c++ kernel-devel cmake libcurl-devel openal-soft-devel libvorbis-devel libXxf86vm-devel libogg-devel freetype-devel mesa-libGL-devel zlib-devel jsoncpp-devel irrlicht-devel bzip2-libs gmp-devel sqlite-devel luajit-devel leveldb-devel ncurses-devel doxygen spatialindex-devel bzip2-devel + sudo dnf install make automake gcc gcc-c++ kernel-devel cmake libcurl-devel openal-soft-devel libvorbis-devel libXxf86vm-devel libogg-devel freetype-devel mesa-libGL-devel zlib-devel jsoncpp-devel gmp-devel sqlite-devel luajit-devel leveldb-devel ncurses-devel spatialindex-devel For Arch users: - sudo pacman -S base-devel libcurl-gnutls cmake libxxf86vm irrlicht libpng sqlite libogg libvorbis openal freetype2 jsoncpp gmp luajit leveldb ncurses + sudo pacman -S base-devel libcurl-gnutls cmake libxxf86vm libpng sqlite libogg libvorbis openal freetype2 jsoncpp gmp luajit leveldb ncurses For Alpine users: - sudo apk add build-base irrlicht-dev cmake bzip2-dev libpng-dev jpeg-dev libxxf86vm-dev mesa-dev sqlite-dev libogg-dev libvorbis-dev openal-soft-dev curl-dev freetype-dev zlib-dev gmp-dev jsoncpp-dev luajit-dev + sudo apk add build-base cmake libpng-dev jpeg-dev libxxf86vm-dev mesa-dev sqlite-dev libogg-dev libvorbis-dev openal-soft-dev curl-dev freetype-dev zlib-dev gmp-dev jsoncpp-dev luajit-dev #### Download @@ -209,8 +209,8 @@ Run it: - You can disable the client build by specifying `-DBUILD_CLIENT=FALSE`. - You can select between Release and Debug build by `-DCMAKE_BUILD_TYPE=<Debug or Release>`. - Debug build is slower, but gives much more useful output in a debugger. -- If you build a bare server you don't need to have Irrlicht installed. - - In that case use `-DIRRLICHT_SOURCE_DIR=/the/irrlicht/source`. +- If you build a bare server you don't need to have the Irrlicht library installed. + - In that case use `-DIRRLICHT_INCLUDE_DIR=/some/where/irrlicht/include`. ### CMake options @@ -238,7 +238,7 @@ General options and their default values: ENABLE_LUAJIT=ON - Build with LuaJIT (much faster than non-JIT Lua) ENABLE_PROMETHEUS=OFF - Build with Prometheus metrics exporter (listens on tcp/30000 by default) ENABLE_SYSTEM_GMP=ON - Use GMP from system (much faster than bundled mini-gmp) - ENABLE_SYSTEM_JSONCPP=OFF - Use JsonCPP from system + ENABLE_SYSTEM_JSONCPP=ON - Use JsonCPP from system OPENGL_GL_PREFERENCE=LEGACY - Linux client build only; See CMake Policy CMP0072 for reference RUN_IN_PLACE=FALSE - Create a portable install (worlds, settings etc. in current directory) USE_GPROF=FALSE - Enable profiling using GProf @@ -246,8 +246,6 @@ General options and their default values: Library specific options: - BZIP2_INCLUDE_DIR - Linux only; directory where bzlib.h is located - BZIP2_LIBRARY - Linux only; path to libbz2.a/libbz2.so CURL_DLL - Only if building with cURL on Windows; path to libcurl.dll CURL_INCLUDE_DIR - Only if building with cURL; directory where curl.h is located CURL_LIBRARY - Only if building with cURL; path to libcurl.a/libcurl.so/libcurl.lib @@ -257,8 +255,7 @@ Library specific options: FREETYPE_INCLUDE_DIR_ft2build - Only if building with FreeType 2; directory that contains ft2build.h FREETYPE_LIBRARY - Only if building with FreeType 2; path to libfreetype.a/libfreetype.so/freetype.lib FREETYPE_DLL - Only if building with FreeType 2 on Windows; path to libfreetype.dll - GETTEXT_DLL - Only when building with gettext on Windows; path to libintl3.dll - GETTEXT_ICONV_DLL - Only when building with gettext on Windows; path to libiconv2.dll + GETTEXT_DLL - Only when building with gettext on Windows; paths to libintl + libiconv DLLs GETTEXT_INCLUDE_DIR - Only when building with gettext; directory that contains iconv.h GETTEXT_LIBRARY - Only when building with gettext on Windows; path to libintl.dll.a GETTEXT_MSGFMT - Only when building with gettext; path to msgfmt/msgfmt.exe @@ -276,7 +273,6 @@ Library specific options: SPATIAL_LIBRARY - Only when building with LibSpatial; path to libspatialindex_c.so/spatialindex-32.lib LUA_INCLUDE_DIR - Only if you want to use LuaJIT; directory where luajit.h is located LUA_LIBRARY - Only if you want to use LuaJIT; path to libluajit.a/libluajit.so - MINGWM10_DLL - Only if compiling with MinGW; path to mingwm10.dll OGG_DLL - Only if building with sound on Windows; path to libogg.dll OGG_INCLUDE_DIR - Only if building with sound; directory that contains an ogg directory which contains ogg.h OGG_LIBRARY - Only if building with sound; path to libogg.a/libogg.so/libogg.dll.a @@ -287,9 +283,8 @@ Library specific options: OPENGLES2_LIBRARY - Only if building with GLES; path to libGLESv2.a/libGLESv2.so SQLITE3_INCLUDE_DIR - Directory that contains sqlite3.h SQLITE3_LIBRARY - Path to libsqlite3.a/libsqlite3.so/sqlite3.lib - VORBISFILE_DLL - Only if building with sound on Windows; path to libvorbisfile-3.dll VORBISFILE_LIBRARY - Only if building with sound; path to libvorbisfile.a/libvorbisfile.so/libvorbisfile.dll.a - VORBIS_DLL - Only if building with sound on Windows; path to libvorbis-0.dll + VORBIS_DLL - Only if building with sound on Windows; paths to vorbis DLLs VORBIS_INCLUDE_DIR - Only if building with sound; directory that contains a directory vorbis with vorbisenc.h inside VORBIS_LIBRARY - Only if building with sound; path to libvorbis.a/libvorbis.so/libvorbis.dll.a XXF86VM_LIBRARY - Only on Linux; path to libXXf86vm.a/libXXf86vm.so @@ -314,9 +309,10 @@ It is highly recommended to use vcpkg as package manager. After you successfully built vcpkg you can easily install the required libraries: ```powershell -vcpkg install irrlicht zlib curl[winssl] openal-soft libvorbis libogg sqlite3 freetype luajit gmp jsoncpp --triplet x64-windows +vcpkg install zlib curl[winssl] openal-soft libvorbis libogg sqlite3 freetype luajit gmp jsoncpp --triplet x64-windows ``` +- **Note that you currently need to build irrlicht on your own** - `curl` is optional, but required to read the serverlist, `curl[winssl]` is required to use the content store. - `openal-soft`, `libvorbis` and `libogg` are optional, but required to use sound. - `freetype` is optional, it allows true-type font rendering. @@ -354,7 +350,7 @@ This is outdated and not recommended. Follow the instructions on https://dev.min Run the following script in PowerShell: ```powershell -cmake . -G"Visual Studio 15 2017 Win64" -DCMAKE_TOOLCHAIN_FILE=D:/vcpkg/scripts/buildsystems/vcpkg.cmake -DCMAKE_BUILD_TYPE=Release -DENABLE_GETTEXT=OFF -DENABLE_CURSES=OFF -DENABLE_SYSTEM_JSONCPP=ON +cmake . -G"Visual Studio 15 2017 Win64" -DCMAKE_TOOLCHAIN_FILE=D:/vcpkg/scripts/buildsystems/vcpkg.cmake -DCMAKE_BUILD_TYPE=Release -DENABLE_GETTEXT=OFF -DENABLE_CURSES=OFF cmake --build . --config Release ``` Make sure that the right compiler is selected and the path to the vcpkg toolchain is correct. diff --git a/build/android/build.gradle b/build/android/build.gradle index 61b24caab..3ba51a4bb 100644 --- a/build/android/build.gradle +++ b/build/android/build.gradle @@ -1,10 +1,10 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. project.ext.set("versionMajor", 5) // Version Major -project.ext.set("versionMinor", 4) // Version Minor +project.ext.set("versionMinor", 5) // Version Minor project.ext.set("versionPatch", 0) // Version Patch project.ext.set("versionExtra", "-dev") // Version Extra -project.ext.set("versionCode", 30) // Android Version Code +project.ext.set("versionCode", 32) // Android Version Code // NOTE: +2 after each release! // +1 for ARM and +1 for ARM64 APK's, because // each APK must have a larger `versionCode` than the previous diff --git a/build/android/icons/aux1_btn.svg b/build/android/icons/aux1_btn.svg new file mode 100644 index 000000000..e0ee97c0c --- /dev/null +++ b/build/android/icons/aux1_btn.svg @@ -0,0 +1,143 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + inkscape:export-ydpi="24.000002" + inkscape:export-xdpi="24.000002" + inkscape:export-filename="/home/stu/Desktop/icons/png/aux_btn.png" + sodipodi:docname="aux_btn.svg" + inkscape:version="1.0 (4035a4fb49, 2020-05-01)" + id="svg8" + version="1.1" + viewBox="0 0 135.46666 135.46667" + height="512" + width="512"> + <defs + id="defs2" /> + <sodipodi:namedview + inkscape:document-rotation="0" + inkscape:snap-bbox-midpoints="true" + inkscape:snap-others="true" + inkscape:snap-object-midpoints="false" + inkscape:snap-to-guides="true" + inkscape:snap-bbox="true" + showguides="true" + inkscape:snap-page="true" + inkscape:snap-grids="false" + inkscape:pagecheckerboard="false" + inkscape:window-maximized="1" + inkscape:window-y="31" + inkscape:window-x="0" + inkscape:window-height="1024" + inkscape:window-width="1920" + units="px" + showgrid="true" + inkscape:current-layer="layer2" + inkscape:document-units="mm" + inkscape:cy="212.91276" + inkscape:cx="201.43176" + inkscape:zoom="1.4633894" + inkscape:pageshadow="2" + inkscape:pageopacity="0" + borderopacity="1.0" + bordercolor="#666666" + pagecolor="#404040" + id="base"> + <inkscape:grid + empopacity="0.25098039" + empcolor="#40ff40" + opacity="0.1254902" + color="#40ff40" + empspacing="4" + spacingy="0.26458333" + spacingx="0.26458333" + id="grid16" + type="xygrid" /> + </sodipodi:namedview> + <metadata + id="metadata5"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title /> + <cc:license + rdf:resource="http://creativecommons.org/licenses/by-sa/4.0/" /> + </cc:Work> + <cc:License + rdf:about="http://creativecommons.org/licenses/by-sa/4.0/"> + <cc:permits + rdf:resource="http://creativecommons.org/ns#Reproduction" /> + <cc:permits + rdf:resource="http://creativecommons.org/ns#Distribution" /> + <cc:requires + rdf:resource="http://creativecommons.org/ns#Notice" /> + <cc:requires + rdf:resource="http://creativecommons.org/ns#Attribution" /> + <cc:permits + rdf:resource="http://creativecommons.org/ns#DerivativeWorks" /> + <cc:requires + rdf:resource="http://creativecommons.org/ns#ShareAlike" /> + </cc:License> + </rdf:RDF> + </metadata> + <g + style="display:inline" + inkscape:label="Layer 2" + id="layer2" + inkscape:groupmode="layer"> + <path + inkscape:connector-curvature="0" + id="path7055" + d="" + style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + inkscape:connector-curvature="0" + id="path7035" + d="" + style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + inkscape:connector-curvature="0" + id="path7005" + d="" + style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + inkscape:connector-curvature="0" + id="path5127" + d="" + style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <text + transform="scale(1.0078883,0.99217343)" + id="text4716" + y="85.59491" + x="67.78315" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:48.4785px;line-height:1.25;font-family:'Bitstream Vera Sans';-inkscape-font-specification:'Bitstream Vera Sans';text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#d9d9d9;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + xml:space="preserve"><tspan + style="fill:#d9d9d9;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + y="85.59491" + x="67.78315" + id="tspan4714" + sodipodi:role="line">Aux1</tspan></text> + <flowRoot + transform="scale(0.26458333)" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:1.25;font-family:'Bitstream Vera Sans';-inkscape-font-specification:'Bitstream Vera Sans';text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:none;fill-opacity:1;stroke:#ffffff;stroke-opacity:1" + id="flowRoot4718" + xml:space="preserve"><flowRegion + style="fill:none;fill-opacity:1;stroke:#ffffff;stroke-opacity:1" + id="flowRegion4720"><rect + style="fill:none;fill-opacity:1;stroke:#ffffff;stroke-opacity:1" + y="124.10143" + x="264.65997" + height="136.37059" + width="157.5838" + id="rect4722" /></flowRegion><flowPara + id="flowPara4724" /></flowRoot> + </g> +</svg> diff --git a/build/android/icons/aux_btn.svg b/build/android/icons/aux_btn.svg deleted file mode 100644 index 6bbefff67..000000000 --- a/build/android/icons/aux_btn.svg +++ /dev/null @@ -1,411 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="512" - height="512" - viewBox="0 0 135.46666 135.46667" - version="1.1" - id="svg8" - inkscape:version="0.92.1 r15371" - sodipodi:docname="aux_btn.svg" - inkscape:export-filename="/home/stu/Desktop/icons/png/aux_btn.png" - inkscape:export-xdpi="24.000002" - inkscape:export-ydpi="24.000002"> - <defs - id="defs2"> - <filter - style="color-interpolation-filters:sRGB;" - inkscape:label="Colorize" - id="filter4628"> - <feComposite - in2="SourceGraphic" - operator="arithmetic" - k1="0" - k2="1" - result="composite1" - id="feComposite4614" /> - <feColorMatrix - in="composite1" - values="1" - type="saturate" - result="colormatrix1" - id="feColorMatrix4616" /> - <feFlood - flood-opacity="1" - flood-color="rgb(158,0,0)" - result="flood1" - id="feFlood4618" /> - <feBlend - in="flood1" - in2="colormatrix1" - mode="multiply" - result="blend1" - id="feBlend4620" /> - <feBlend - in2="blend1" - mode="screen" - result="blend2" - id="feBlend4622" /> - <feColorMatrix - in="blend2" - values="1" - type="saturate" - result="colormatrix2" - id="feColorMatrix4624" /> - <feComposite - in="colormatrix2" - in2="SourceGraphic" - operator="in" - k2="1" - result="composite2" - id="feComposite4626" /> - </filter> - <filter - style="color-interpolation-filters:sRGB;" - inkscape:label="Sharpen More" - id="filter5109" - inkscape:menu="Image Effects" - inkscape:menu-tooltip="Sharpen edges and boundaries within the object, force=0.3"> - <feComposite - in2="SourceGraphic" - operator="arithmetic" - k1="0" - k2="1" - result="composite1" - id="feComposite5095" /> - <feColorMatrix - in="composite1" - values="1" - type="saturate" - result="colormatrix1" - id="feColorMatrix5097" /> - <feFlood - flood-opacity="1" - flood-color="rgb(158,67,0)" - result="flood1" - id="feFlood5099" /> - <feBlend - in="flood1" - in2="colormatrix1" - mode="multiply" - result="blend1" - id="feBlend5101" /> - <feBlend - in2="blend1" - mode="screen" - result="blend2" - id="feBlend5103" /> - <feColorMatrix - in="blend2" - values="1" - type="saturate" - result="colormatrix2" - id="feColorMatrix5105" /> - <feComposite - in="colormatrix2" - in2="SourceGraphic" - operator="in" - k2="1" - result="fbSourceGraphic" - id="feComposite5107" /> - <feColorMatrix - result="fbSourceGraphicAlpha" - in="fbSourceGraphic" - values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0" - id="feColorMatrix5111" /> - <feComposite - in2="fbSourceGraphic" - id="feComposite5113" - operator="arithmetic" - k1="0" - k2="1" - result="composite1" - in="fbSourceGraphic" /> - <feColorMatrix - id="feColorMatrix5115" - in="composite1" - values="1" - type="saturate" - result="colormatrix1" /> - <feFlood - id="feFlood5117" - flood-opacity="1" - flood-color="rgb(158,0,0)" - result="flood1" /> - <feBlend - in2="colormatrix1" - id="feBlend5119" - in="flood1" - mode="multiply" - result="blend1" /> - <feBlend - in2="blend1" - id="feBlend5121" - mode="screen" - result="blend2" /> - <feColorMatrix - id="feColorMatrix5123" - in="blend2" - values="1" - type="saturate" - result="colormatrix2" /> - <feComposite - in2="fbSourceGraphic" - id="feComposite5125" - in="colormatrix2" - operator="in" - k2="1" - result="fbSourceGraphic" /> - <feColorMatrix - result="fbSourceGraphicAlpha" - in="fbSourceGraphic" - values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0" - id="feColorMatrix7007" /> - <feConvolveMatrix - id="feConvolveMatrix7009" - order="3 3" - kernelMatrix="0 -0.15 0 -0.15 1.6 -0.15 0 -0.15 0" - divisor="1" - in="fbSourceGraphic" - targetX="1" - targetY="1" - result="fbSourceGraphic" /> - <feColorMatrix - result="fbSourceGraphicAlpha" - in="fbSourceGraphic" - values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0" - id="feColorMatrix7011" /> - <feConvolveMatrix - id="feConvolveMatrix7013" - targetY="1" - targetX="1" - in="fbSourceGraphic" - divisor="1" - kernelMatrix="0 -0.3 0 -0.3 2.2 -0.3 0 -0.3 0" - order="3 3" - result="result1" /> - <feBlend - in2="fbSourceGraphic" - id="feBlend7015" - mode="normal" - result="result2" /> - </filter> - <marker - style="overflow:visible" - refY="0.0" - refX="0.0" - orient="auto" - id="DistanceX"> - <path - id="path7410" - style="stroke:#000000; stroke-width:0.5" - d="M 3,-3 L -3,3 M 0,-5 L 0,5" /> - </marker> - <pattern - y="0" - x="0" - width="8" - patternUnits="userSpaceOnUse" - id="Hatch" - height="8"> - <path - id="path7413" - stroke-width="0.25" - stroke="#000000" - linecap="square" - d="M8 4 l-4,4" /> - <path - id="path7415" - stroke-width="0.25" - stroke="#000000" - linecap="square" - d="M6 2 l-4,4" /> - <path - id="path7417" - stroke-width="0.25" - stroke="#000000" - linecap="square" - d="M4 0 l-4,4" /> - </pattern> - <symbol - id="*Model_Space" /> - <symbol - id="*Paper_Space" /> - <symbol - id="*Paper_Space0" /> - <filter - style="color-interpolation-filters:sRGB;" - inkscape:label="Colorize" - id="filter4883"> - <feComposite - in2="SourceGraphic" - operator="arithmetic" - k1="0" - k2="1" - result="composite1" - id="feComposite4869" /> - <feColorMatrix - in="composite1" - values="1" - type="saturate" - result="colormatrix1" - id="feColorMatrix4871" /> - <feFlood - flood-opacity="1" - flood-color="rgb(158,21,0)" - result="flood1" - id="feFlood4873" /> - <feBlend - in="flood1" - in2="colormatrix1" - mode="multiply" - result="blend1" - id="feBlend4875" /> - <feBlend - in2="blend1" - mode="screen" - result="blend2" - id="feBlend4877" /> - <feColorMatrix - in="blend2" - values="1" - type="saturate" - result="colormatrix2" - id="feColorMatrix4879" /> - <feComposite - in="colormatrix2" - in2="SourceGraphic" - operator="in" - k2="1" - result="composite2" - id="feComposite4881" /> - </filter> - </defs> - <sodipodi:namedview - id="base" - pagecolor="#404040" - bordercolor="#666666" - borderopacity="1.0" - inkscape:pageopacity="0" - inkscape:pageshadow="2" - inkscape:zoom="0.98994949" - inkscape:cx="-341.34157" - inkscape:cy="210.02973" - inkscape:document-units="mm" - inkscape:current-layer="layer2" - showgrid="true" - units="px" - inkscape:window-width="1920" - inkscape:window-height="1023" - inkscape:window-x="0" - inkscape:window-y="34" - inkscape:window-maximized="1" - inkscape:pagecheckerboard="false" - inkscape:snap-grids="false" - inkscape:snap-page="true" - showguides="true" - inkscape:snap-bbox="true" - inkscape:snap-to-guides="true" - inkscape:snap-object-midpoints="false" - inkscape:snap-others="true" - inkscape:snap-bbox-midpoints="true"> - <inkscape:grid - type="xygrid" - id="grid16" - spacingx="0.26458333" - spacingy="0.26458333" - empspacing="4" - color="#40ff40" - opacity="0.1254902" - empcolor="#40ff40" - empopacity="0.25098039" /> - </sodipodi:namedview> - <metadata - id="metadata5"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:title></dc:title> - <cc:license - rdf:resource="http://creativecommons.org/licenses/by-sa/4.0/" /> - </cc:Work> - <cc:License - rdf:about="http://creativecommons.org/licenses/by-sa/4.0/"> - <cc:permits - rdf:resource="http://creativecommons.org/ns#Reproduction" /> - <cc:permits - rdf:resource="http://creativecommons.org/ns#Distribution" /> - <cc:requires - rdf:resource="http://creativecommons.org/ns#Notice" /> - <cc:requires - rdf:resource="http://creativecommons.org/ns#Attribution" /> - <cc:permits - rdf:resource="http://creativecommons.org/ns#DerivativeWorks" /> - <cc:requires - rdf:resource="http://creativecommons.org/ns#ShareAlike" /> - </cc:License> - </rdf:RDF> - </metadata> - <g - inkscape:groupmode="layer" - id="layer2" - inkscape:label="Layer 2" - style="display:inline"> - <path - style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - d="" - id="path7055" - inkscape:connector-curvature="0" /> - <path - style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - d="" - id="path7035" - inkscape:connector-curvature="0" /> - <path - style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - d="" - id="path7005" - inkscape:connector-curvature="0" /> - <path - style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - d="" - id="path5127" - inkscape:connector-curvature="0" /> - <text - xml:space="preserve" - style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:48.47851181px;line-height:1.25;font-family:'Bitstream Vera Sans';-inkscape-font-specification:'Bitstream Vera Sans';text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#d9d9d9;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - x="67.78315" - y="85.59491" - id="text4716" - transform="scale(1.0078883,0.99217343)"><tspan - sodipodi:role="line" - id="tspan4714" - x="67.78315" - y="85.59491" - style="fill:#d9d9d9;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1">AUX</tspan></text> - <flowRoot - xml:space="preserve" - id="flowRoot4718" - style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:1.25;font-family:'Bitstream Vera Sans';-inkscape-font-specification:'Bitstream Vera Sans';text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:none;fill-opacity:1;stroke:#ffffff;stroke-opacity:1" - transform="scale(0.26458333)"><flowRegion - id="flowRegion4720" - style="fill:none;fill-opacity:1;stroke:#ffffff;stroke-opacity:1"><rect - id="rect4722" - width="157.5838" - height="136.37059" - x="264.65997" - y="124.10143" - style="fill:none;fill-opacity:1;stroke:#ffffff;stroke-opacity:1" /></flowRegion><flowPara - id="flowPara4724" /></flowRoot> </g> -</svg> diff --git a/builtin/client/chatcommands.lua b/builtin/client/chatcommands.lua index 0e8d4dd03..a563a6627 100644 --- a/builtin/client/chatcommands.lua +++ b/builtin/client/chatcommands.lua @@ -1,6 +1,5 @@ -- Minetest: builtin/client/chatcommands.lua - core.register_on_sending_chat_message(function(message) if message:sub(1,2) == ".." then return false @@ -8,7 +7,7 @@ core.register_on_sending_chat_message(function(message) local first_char = message:sub(1,1) if first_char == "/" or first_char == "." then - core.display_chat_message(core.gettext("issued command: ") .. message) + core.display_chat_message(core.gettext("Issued command: ") .. message) end if first_char ~= "." then @@ -19,7 +18,7 @@ core.register_on_sending_chat_message(function(message) param = param or "" if not cmd then - core.display_chat_message(core.gettext("-!- Empty command")) + core.display_chat_message("-!- " .. core.gettext("Empty command.")) return true end @@ -36,7 +35,7 @@ core.register_on_sending_chat_message(function(message) core.display_chat_message(result) end else - core.display_chat_message(core.gettext("-!- Invalid command: ") .. cmd) + core.display_chat_message("-!- " .. core.gettext("Invalid command: ") .. cmd) end return true @@ -66,7 +65,7 @@ core.register_chatcommand("clear_chat_queue", { description = core.gettext("Clear the out chat queue"), func = function(param) core.clear_out_chat_queue() - return true, core.gettext("The out chat queue is now empty") + return true, core.gettext("The out chat queue is now empty.") end, }) diff --git a/builtin/client/death_formspec.lua b/builtin/client/death_formspec.lua index e755ac5c1..7df0cbd75 100644 --- a/builtin/client/death_formspec.lua +++ b/builtin/client/death_formspec.lua @@ -2,7 +2,7 @@ -- handled by the engine. core.register_on_death(function() - core.display_chat_message("You died.") + core.display_chat_message(core.gettext("You died.")) local formspec = "size[11,5.5]bgcolor[#320000b4;true]" .. "label[4.85,1.35;" .. fgettext("You died") .. "]button_exit[4,3;3,0.5;btn_respawn;".. fgettext("Respawn") .."]" diff --git a/builtin/common/chatcommands.lua b/builtin/common/chatcommands.lua index 52edda659..c945e7bdb 100644 --- a/builtin/common/chatcommands.lua +++ b/builtin/common/chatcommands.lua @@ -1,5 +1,9 @@ -- Minetest: builtin/common/chatcommands.lua +-- For server-side translations (if INIT == "game") +-- Otherwise, use core.gettext +local S = core.get_translator("__builtin") + core.registered_chatcommands = {} function core.register_chatcommand(cmd, def) @@ -29,25 +33,12 @@ function core.override_chatcommand(name, redefinition) core.registered_chatcommands[name] = chatcommand end -local cmd_marker = "/" - -local function gettext(...) - return ... -end - -local function gettext_replace(text, replace) - return text:gsub("$1", replace) -end - - -if INIT == "client" then - cmd_marker = "." - gettext = core.gettext - gettext_replace = fgettext_ne -end - local function do_help_cmd(name, param) local function format_help_line(cmd, def) + local cmd_marker = "/" + if INIT == "client" then + cmd_marker = "." + end local msg = core.colorize("#00ffff", cmd_marker .. cmd) if def.params and def.params ~= "" then msg = msg .. " " .. def.params @@ -65,9 +56,21 @@ local function do_help_cmd(name, param) end end table.sort(cmds) - return true, gettext("Available commands: ") .. table.concat(cmds, " ") .. "\n" - .. gettext_replace("Use '$1help <cmd>' to get more information," - .. " or '$1help all' to list everything.", cmd_marker) + local msg + if INIT == "game" then + msg = S("Available commands: @1", + table.concat(cmds, " ")) .. "\n" + .. S("Use '/help <cmd>' to get more " + .. "information, or '/help all' to list " + .. "everything.") + else + msg = core.gettext("Available commands: ") + .. table.concat(cmds, " ") .. "\n" + .. core.gettext("Use '.help <cmd>' to get more " + .. "information, or '.help all' to list " + .. "everything.") + end + return true, msg elseif param == "all" then local cmds = {} for cmd, def in pairs(core.registered_chatcommands) do @@ -76,19 +79,31 @@ local function do_help_cmd(name, param) end end table.sort(cmds) - return true, gettext("Available commands:").."\n"..table.concat(cmds, "\n") + local msg + if INIT == "game" then + msg = S("Available commands:") + else + msg = core.gettext("Available commands:") + end + return true, msg.."\n"..table.concat(cmds, "\n") elseif INIT == "game" and param == "privs" then local privs = {} for priv, def in pairs(core.registered_privileges) do privs[#privs + 1] = priv .. ": " .. def.description end table.sort(privs) - return true, "Available privileges:\n"..table.concat(privs, "\n") + return true, S("Available privileges:").."\n"..table.concat(privs, "\n") else local cmd = param local def = core.registered_chatcommands[cmd] if not def then - return false, gettext("Command not available: ")..cmd + local msg + if INIT == "game" then + msg = S("Command not available: @1", cmd) + else + msg = core.gettext("Command not available: ") .. cmd + end + return false, msg else return true, format_help_line(cmd, def) end @@ -97,16 +112,16 @@ end if INIT == "client" then core.register_chatcommand("help", { - params = gettext("[all | <cmd>]"), - description = gettext("Get help for commands"), + params = core.gettext("[all | <cmd>]"), + description = core.gettext("Get help for commands"), func = function(param) return do_help_cmd(nil, param) end, }) else core.register_chatcommand("help", { - params = "[all | privs | <cmd>]", - description = "Get help for commands or list privileges", + params = S("[all | privs | <cmd>]"), + description = S("Get help for commands or list privileges"), func = do_help_cmd, }) end diff --git a/builtin/common/information_formspecs.lua b/builtin/common/information_formspecs.lua index 8afa5bc87..e814b4c43 100644 --- a/builtin/common/information_formspecs.lua +++ b/builtin/common/information_formspecs.lua @@ -20,7 +20,8 @@ local LIST_FORMSPEC_DESCRIPTION = [[ button_exit[5,7;3,1;quit;%s] ]] -local formspec_escape = core.formspec_escape +local F = core.formspec_escape +local S = core.get_translator("__builtin") local check_player_privs = core.check_player_privs @@ -51,22 +52,23 @@ core.after(0, load_mod_command_tree) local function build_chatcommands_formspec(name, sel, copy) local rows = {} - rows[1] = "#FFF,0,Command,Parameters" + rows[1] = "#FFF,0,"..F(S("Command"))..","..F(S("Parameters")) - local description = "For more information, click on any entry in the list.\n" .. - "Double-click to copy the entry to the chat history." + local description = S("For more information, click on " + .. "any entry in the list.").. "\n" .. + S("Double-click to copy the entry to the chat history.") for i, data in ipairs(mod_cmds) do - rows[#rows + 1] = COLOR_BLUE .. ",0," .. formspec_escape(data[1]) .. "," + rows[#rows + 1] = COLOR_BLUE .. ",0," .. F(data[1]) .. "," for j, cmds in ipairs(data[2]) do local has_priv = check_player_privs(name, cmds[2].privs) rows[#rows + 1] = ("%s,1,%s,%s"):format( has_priv and COLOR_GREEN or COLOR_GRAY, - cmds[1], formspec_escape(cmds[2].params)) + cmds[1], F(cmds[2].params)) if sel == #rows then description = cmds[2].description if copy then - core.chat_send_player(name, ("Command: %s %s"):format( + core.chat_send_player(name, S("Command: @1 @2", core.colorize("#0FF", "/" .. cmds[1]), cmds[2].params)) end end @@ -74,9 +76,9 @@ local function build_chatcommands_formspec(name, sel, copy) end return LIST_FORMSPEC_DESCRIPTION:format( - "Available commands: (see also: /help <cmd>)", + F(S("Available commands: (see also: /help <cmd>)")), table.concat(rows, ","), sel or 0, - description, "Close" + F(description), F(S("Close")) ) end @@ -91,19 +93,19 @@ local function build_privs_formspec(name) table.sort(privs, function(a, b) return a[1] < b[1] end) local rows = {} - rows[1] = "#FFF,0,Privilege,Description" + rows[1] = "#FFF,0,"..F(S("Privilege"))..","..F(S("Description")) local player_privs = core.get_player_privs(name) for i, data in ipairs(privs) do rows[#rows + 1] = ("%s,0,%s,%s"):format( player_privs[data[1]] and COLOR_GREEN or COLOR_GRAY, - data[1], formspec_escape(data[2].description)) + data[1], F(data[2].description)) end return LIST_FORMSPEC:format( - "Available privileges:", + F(S("Available privileges:")), table.concat(rows, ","), - "Close" + F(S("Close")) ) end @@ -115,7 +117,7 @@ core.register_on_player_receive_fields(function(player, formname, fields) return end - local event = minetest.explode_table_event(fields.list) + local event = core.explode_table_event(fields.list) if event.type ~= "INV" then local name = player:get_player_name() core.show_formspec(name, "__builtin:help_cmds", diff --git a/builtin/fstk/tabview.lua b/builtin/fstk/tabview.lua index 3715e231b..424d329fb 100644 --- a/builtin/fstk/tabview.lua +++ b/builtin/fstk/tabview.lua @@ -58,26 +58,20 @@ end -------------------------------------------------------------------------------- local function get_formspec(self) - local formspec = "" + if self.hidden or (self.parent ~= nil and self.parent.hidden) then + return "" + end + local tab = self.tablist[self.last_tab_index] - if not self.hidden and (self.parent == nil or not self.parent.hidden) then + local content, prepend = tab.get_formspec(self, tab.name, tab.tabdata, tab.tabsize) - if self.parent == nil then - local tsize = self.tablist[self.last_tab_index].tabsize or - {width=self.width, height=self.height} - formspec = formspec .. - string.format("size[%f,%f,%s]",tsize.width,tsize.height, - dump(self.fixed_size)) - end - formspec = formspec .. self:tab_header() - formspec = formspec .. - self.tablist[self.last_tab_index].get_formspec( - self, - self.tablist[self.last_tab_index].name, - self.tablist[self.last_tab_index].tabdata, - self.tablist[self.last_tab_index].tabsize - ) + if self.parent == nil and not prepend then + local tsize = tab.tabsize or {width=self.width, height=self.height} + prepend = string.format("size[%f,%f,%s]", tsize.width, tsize.height, + dump(self.fixed_size)) end + + local formspec = (prepend or "") .. self:tab_header() .. content return formspec end @@ -97,14 +91,9 @@ local function handle_buttons(self,fields) return true end - if self.tablist[self.last_tab_index].button_handler ~= nil then - return - self.tablist[self.last_tab_index].button_handler( - self, - fields, - self.tablist[self.last_tab_index].name, - self.tablist[self.last_tab_index].tabdata - ) + local tab = self.tablist[self.last_tab_index] + if tab.button_handler ~= nil then + return tab.button_handler(self, fields, tab.name, tab.tabdata) end return false @@ -122,14 +111,9 @@ local function handle_events(self,event) return true end - if self.tablist[self.last_tab_index].evt_handler ~= nil then - return - self.tablist[self.last_tab_index].evt_handler( - self, - event, - self.tablist[self.last_tab_index].name, - self.tablist[self.last_tab_index].tabdata - ) + local tab = self.tablist[self.last_tab_index] + if tab.evt_handler ~= nil then + return tab.evt_handler(self, event, tab.name, tab.tabdata) end return false diff --git a/builtin/game/chat.lua b/builtin/game/chat.lua index 945707623..bf2d7851e 100644 --- a/builtin/game/chat.lua +++ b/builtin/game/chat.lua @@ -1,5 +1,7 @@ -- Minetest: builtin/game/chat.lua +local S = core.get_translator("__builtin") + -- Helper function that implements search and replace without pattern matching -- Returns the string and a boolean indicating whether or not the string was modified local function safe_gsub(s, replace, with) @@ -45,6 +47,8 @@ end core.chatcommands = core.registered_chatcommands -- BACKWARDS COMPATIBILITY +local msg_time_threshold = + tonumber(core.settings:get("chatcommand_msg_time_threshold")) or 0.1 core.register_on_chat_message(function(name, message) if message:sub(1,1) ~= "/" then return @@ -52,7 +56,7 @@ core.register_on_chat_message(function(name, message) local cmd, param = string.match(message, "^/([^ ]+) *(.*)") if not cmd then - core.chat_send_player(name, "-!- Empty command") + core.chat_send_player(name, "-!- "..S("Empty command.")) return true end @@ -65,15 +69,17 @@ core.register_on_chat_message(function(name, message) local cmd_def = core.registered_chatcommands[cmd] if not cmd_def then - core.chat_send_player(name, "-!- Invalid command: " .. cmd) + core.chat_send_player(name, "-!- "..S("Invalid command: @1", cmd)) return true end local has_privs, missing_privs = core.check_player_privs(name, cmd_def.privs) if has_privs then core.set_last_run_mod(cmd_def.mod_origin) + local t_before = minetest.get_us_time() local success, result = cmd_def.func(name, param) + local delay = (minetest.get_us_time() - t_before) / 1000000 if success == false and result == nil then - core.chat_send_player(name, "-!- Invalid command usage") + core.chat_send_player(name, "-!- "..S("Invalid command usage.")) local help_def = core.registered_chatcommands["help"] if help_def then local _, helpmsg = help_def.func(name, cmd) @@ -81,13 +87,26 @@ core.register_on_chat_message(function(name, message) core.chat_send_player(name, helpmsg) end end - elseif result then - core.chat_send_player(name, result) + else + if delay > msg_time_threshold then + -- Show how much time it took to execute the command + if result then + result = result .. + minetest.colorize("#f3d2ff", " (%.5g s)"):format(delay) + else + result = minetest.colorize("#f3d2ff", + "Command execution took %.5f s"):format(delay) + end + end + if result then + core.chat_send_player(name, result) + end end else - core.chat_send_player(name, "You don't have permission" - .. " to run this command (missing privileges: " - .. table.concat(missing_privs, ", ") .. ")") + core.chat_send_player(name, + S("You don't have permission to run this command " + .. "(missing privileges: @1).", + table.concat(missing_privs, ", "))) end return true -- Handled chat message end) @@ -107,12 +126,13 @@ local function parse_range_str(player_name, str) if args[1] == "here" then p1, p2 = core.get_player_radius_area(player_name, tonumber(args[2])) if p1 == nil then - return false, "Unable to get player " .. player_name .. " position" + return false, S("Unable to get position of player @1.", player_name) end else p1, p2 = core.string_to_area(str) if p1 == nil then - return false, "Incorrect area format. Expected: (x1,y1,z1) (x2,y2,z2)" + return false, S("Incorrect area format. " + .. "Expected: (x1,y1,z1) (x2,y2,z2)") end end @@ -123,9 +143,9 @@ end -- Chat commands -- core.register_chatcommand("me", { - params = "<action>", - description = "Show chat action (e.g., '/me orders a pizza' displays" - .. " '<player name> orders a pizza')", + params = S("<action>"), + description = S("Show chat action (e.g., '/me orders a pizza' " + .. "displays '<player name> orders a pizza')"), privs = {shout=true}, func = function(name, param) core.chat_send_all("* " .. name .. " " .. param) @@ -134,43 +154,44 @@ core.register_chatcommand("me", { }) core.register_chatcommand("admin", { - description = "Show the name of the server owner", + description = S("Show the name of the server owner"), func = function(name) local admin = core.settings:get("name") if admin then - return true, "The administrator of this server is " .. admin .. "." + return true, S("The administrator of this server is @1.", admin) else - return false, "There's no administrator named in the config file." + return false, S("There's no administrator named " + .. "in the config file.") end end, }) core.register_chatcommand("privs", { - params = "[<name>]", - description = "Show privileges of yourself or another player", + params = S("[<name>]"), + description = S("Show privileges of yourself or another player"), func = function(caller, param) param = param:trim() local name = (param ~= "" and param or caller) if not core.player_exists(name) then - return false, "Player " .. name .. " does not exist." + return false, S("Player @1 does not exist.", name) end - return true, "Privileges of " .. name .. ": " - .. core.privs_to_string( - core.get_player_privs(name), ", ") + return true, S("Privileges of @1: @2", name, + core.privs_to_string( + core.get_player_privs(name), ", ")) end, }) core.register_chatcommand("haspriv", { - params = "<privilege>", - description = "Return list of all online players with privilege.", + params = S("<privilege>"), + description = S("Return list of all online players with privilege"), privs = {basic_privs = true}, func = function(caller, param) param = param:trim() if param == "" then - return false, "Invalid parameters (see /help haspriv)" + return false, S("Invalid parameters (see /help haspriv).") end if not core.registered_privileges[param] then - return false, "Unknown privilege!" + return false, S("Unknown privilege!") end local privs = core.string_to_privs(param) local players_with_priv = {} @@ -180,19 +201,20 @@ core.register_chatcommand("haspriv", { table.insert(players_with_priv, player_name) end end - return true, "Players online with the \"" .. param .. "\" privilege: " .. - table.concat(players_with_priv, ", ") + return true, S("Players online with the \"@1\" privilege: @2", + param, + table.concat(players_with_priv, ", ")) end }) local function handle_grant_command(caller, grantname, grantprivstr) local caller_privs = core.get_player_privs(caller) if not (caller_privs.privs or caller_privs.basic_privs) then - return false, "Your privileges are insufficient." + return false, S("Your privileges are insufficient.") end if not core.get_auth_handler().get_auth(grantname) then - return false, "Player " .. grantname .. " does not exist." + return false, S("Player @1 does not exist.", grantname) end local grantprivs = core.string_to_privs(grantprivstr) if grantprivstr == "all" then @@ -204,10 +226,10 @@ local function handle_grant_command(caller, grantname, grantprivstr) core.string_to_privs(core.settings:get("basic_privs") or "interact,shout") for priv, _ in pairs(grantprivs) do if not basic_privs[priv] and not caller_privs.privs then - return false, "Your privileges are insufficient." + return false, S("Your privileges are insufficient.") end if not core.registered_privileges[priv] then - privs_unknown = privs_unknown .. "Unknown privilege: " .. priv .. "\n" + privs_unknown = privs_unknown .. S("Unknown privilege: @1", priv) .. "\n" end privs[priv] = true end @@ -221,33 +243,33 @@ local function handle_grant_command(caller, grantname, grantprivstr) core.set_player_privs(grantname, privs) core.log("action", caller..' granted ('..core.privs_to_string(grantprivs, ', ')..') privileges to '..grantname) if grantname ~= caller then - core.chat_send_player(grantname, caller - .. " granted you privileges: " - .. core.privs_to_string(grantprivs, ' ')) + core.chat_send_player(grantname, + S("@1 granted you privileges: @2", caller, + core.privs_to_string(grantprivs, ' '))) end - return true, "Privileges of " .. grantname .. ": " - .. core.privs_to_string( - core.get_player_privs(grantname), ' ') + return true, S("Privileges of @1: @2", grantname, + core.privs_to_string( + core.get_player_privs(grantname), ' ')) end core.register_chatcommand("grant", { - params = "<name> (<privilege> | all)", - description = "Give privileges to player", + params = S("<name> (<privilege> | all)"), + description = S("Give privileges to player"), func = function(name, param) local grantname, grantprivstr = string.match(param, "([^ ]+) (.+)") if not grantname or not grantprivstr then - return false, "Invalid parameters (see /help grant)" + return false, S("Invalid parameters (see /help grant).") end return handle_grant_command(name, grantname, grantprivstr) end, }) core.register_chatcommand("grantme", { - params = "<privilege> | all", - description = "Grant privileges to yourself", + params = S("<privilege> | all"), + description = S("Grant privileges to yourself"), func = function(name, param) if param == "" then - return false, "Invalid parameters (see /help grantme)" + return false, S("Invalid parameters (see /help grantme).") end return handle_grant_command(name, name, param) end, @@ -256,11 +278,11 @@ core.register_chatcommand("grantme", { local function handle_revoke_command(caller, revokename, revokeprivstr) local caller_privs = core.get_player_privs(caller) if not (caller_privs.privs or caller_privs.basic_privs) then - return false, "Your privileges are insufficient." + return false, S("Your privileges are insufficient.") end if not core.get_auth_handler().get_auth(revokename) then - return false, "Player " .. revokename .. " does not exist." + return false, S("Player @1 does not exist.", revokename) end local revokeprivs = core.string_to_privs(revokeprivstr) @@ -269,7 +291,7 @@ local function handle_revoke_command(caller, revokename, revokeprivstr) core.string_to_privs(core.settings:get("basic_privs") or "interact,shout") for priv, _ in pairs(revokeprivs) do if not basic_privs[priv] and not caller_privs.privs then - return false, "Your privileges are insufficient." + return false, S("Your privileges are insufficient.") end end @@ -292,43 +314,43 @@ local function handle_revoke_command(caller, revokename, revokeprivstr) ..core.privs_to_string(revokeprivs, ', ') ..') privileges from '..revokename) if revokename ~= caller then - core.chat_send_player(revokename, caller - .. " revoked privileges from you: " - .. core.privs_to_string(revokeprivs, ' ')) + core.chat_send_player(revokename, + S("@1 revoked privileges from you: @2", caller, + core.privs_to_string(revokeprivs, ' '))) end - return true, "Privileges of " .. revokename .. ": " - .. core.privs_to_string( - core.get_player_privs(revokename), ' ') + return true, S("Privileges of @1: @2", revokename, + core.privs_to_string( + core.get_player_privs(revokename), ' ')) end core.register_chatcommand("revoke", { - params = "<name> (<privilege> | all)", - description = "Remove privileges from player", + params = S("<name> (<privilege> | all)"), + description = S("Remove privileges from player"), privs = {}, func = function(name, param) local revokename, revokeprivstr = string.match(param, "([^ ]+) (.+)") if not revokename or not revokeprivstr then - return false, "Invalid parameters (see /help revoke)" + return false, S("Invalid parameters (see /help revoke).") end return handle_revoke_command(name, revokename, revokeprivstr) end, }) core.register_chatcommand("revokeme", { - params = "<privilege> | all", - description = "Revoke privileges from yourself", + params = S("<privilege> | all"), + description = S("Revoke privileges from yourself"), privs = {}, func = function(name, param) if param == "" then - return false, "Invalid parameters (see /help revokeme)" + return false, S("Invalid parameters (see /help revokeme).") end return handle_revoke_command(name, name, param) end, }) core.register_chatcommand("setpassword", { - params = "<name> <password>", - description = "Set player's password", + params = S("<name> <password>"), + description = S("Set player's password"), privs = {password=true}, func = function(name, param) local toname, raw_password = string.match(param, "^([^ ]+) +(.+)$") @@ -338,207 +360,197 @@ core.register_chatcommand("setpassword", { end if not toname then - return false, "Name field required" + return false, S("Name field required.") end - local act_str_past, act_str_pres + local msg_chat, msg_log, msg_ret if not raw_password then core.set_player_password(toname, "") - act_str_past = "cleared" - act_str_pres = "clears" + msg_chat = S("Your password was cleared by @1.", name) + msg_log = name .. " clears password of " .. toname .. "." + msg_ret = S("Password of player \"@1\" cleared.", toname) else core.set_player_password(toname, core.get_password_hash(toname, raw_password)) - act_str_past = "set" - act_str_pres = "sets" + msg_chat = S("Your password was set by @1.", name) + msg_log = name .. " sets password of " .. toname .. "." + msg_ret = S("Password of player \"@1\" set.", toname) end if toname ~= name then - core.chat_send_player(toname, "Your password was " - .. act_str_past .. " by " .. name) + core.chat_send_player(toname, msg_chat) end - core.log("action", name .. " " .. act_str_pres .. - " password of " .. toname .. ".") + core.log("action", msg_log) - return true, "Password of player \"" .. toname .. "\" " .. act_str_past + return true, msg_ret end, }) core.register_chatcommand("clearpassword", { - params = "<name>", - description = "Set empty password for a player", + params = S("<name>"), + description = S("Set empty password for a player"), privs = {password=true}, func = function(name, param) local toname = param if toname == "" then - return false, "Name field required" + return false, S("Name field required.") end core.set_player_password(toname, '') core.log("action", name .. " clears password of " .. toname .. ".") - return true, "Password of player \"" .. toname .. "\" cleared" + return true, S("Password of player \"@1\" cleared.", toname) end, }) core.register_chatcommand("auth_reload", { params = "", - description = "Reload authentication data", + description = S("Reload authentication data"), privs = {server=true}, func = function(name, param) local done = core.auth_reload() - return done, (done and "Done." or "Failed.") + return done, (done and S("Done.") or S("Failed.")) end, }) core.register_chatcommand("remove_player", { - params = "<name>", - description = "Remove a player's data", + params = S("<name>"), + description = S("Remove a player's data"), privs = {server=true}, func = function(name, param) local toname = param if toname == "" then - return false, "Name field required" + return false, S("Name field required.") end local rc = core.remove_player(toname) if rc == 0 then core.log("action", name .. " removed player data of " .. toname .. ".") - return true, "Player \"" .. toname .. "\" removed." + return true, S("Player \"@1\" removed.", toname) elseif rc == 1 then - return true, "No such player \"" .. toname .. "\" to remove." + return true, S("No such player \"@1\" to remove.", toname) elseif rc == 2 then - return true, "Player \"" .. toname .. "\" is connected, cannot remove." + return true, S("Player \"@1\" is connected, cannot remove.", toname) end - return false, "Unhandled remove_player return code " .. rc .. "" + return false, S("Unhandled remove_player return code @1.", tostring(rc)) end, }) -core.register_chatcommand("teleport", { - params = "<X>,<Y>,<Z> | <to_name> | (<name> <X>,<Y>,<Z>) | (<name> <to_name>)", - description = "Teleport to position or player", - privs = {teleport=true}, - func = function(name, param) - -- Returns (pos, true) if found, otherwise (pos, false) - local function find_free_position_near(pos) - local tries = { - {x=1,y=0,z=0}, - {x=-1,y=0,z=0}, - {x=0,y=0,z=1}, - {x=0,y=0,z=-1}, - } - for _, d in ipairs(tries) do - local p = {x = pos.x+d.x, y = pos.y+d.y, z = pos.z+d.z} - local n = core.get_node_or_nil(p) - if n and n.name then - local def = core.registered_nodes[n.name] - if def and not def.walkable then - return p, true - end - end + +-- pos may be a non-integer position +local function find_free_position_near(pos) + local tries = { + {x=1, y=0, z=0}, + {x=-1, y=0, z=0}, + {x=0, y=0, z=1}, + {x=0, y=0, z=-1}, + } + for _, d in ipairs(tries) do + local p = vector.add(pos, d) + local n = core.get_node_or_nil(p) + if n then + local def = core.registered_nodes[n.name] + if def and not def.walkable then + return p end - return pos, false end + end + return pos +end + +-- Teleports player <name> to <p> if possible +local function teleport_to_pos(name, p) + local lm = 31000 + if p.x < -lm or p.x > lm or p.y < -lm or p.y > lm + or p.z < -lm or p.z > lm then + return false, S("Cannot teleport out of map bounds!") + end + local teleportee = core.get_player_by_name(name) + if not teleportee then + return false, S("Cannot get player with name @1.", name) + end + if teleportee:get_attach() then + return false, S("Cannot teleport, @1 " .. + "is attached to an object!", name) + end + teleportee:set_pos(p) + return true, S("Teleporting @1 to @2.", name, core.pos_to_string(p, 1)) +end + +-- Teleports player <name> next to player <target_name> if possible +local function teleport_to_player(name, target_name) + if name == target_name then + return false, S("One does not teleport to oneself.") + end + local teleportee = core.get_player_by_name(name) + if not teleportee then + return false, S("Cannot get teleportee with name @1.", name) + end + if teleportee:get_attach() then + return false, S("Cannot teleport, @1 " .. + "is attached to an object!", name) + end + local target = core.get_player_by_name(target_name) + if not target then + return false, S("Cannot get target player with name @1.", target_name) + end + local p = find_free_position_near(target:get_pos()) + teleportee:set_pos(p) + return true, S("Teleporting @1 to @2 at @3.", name, target_name, + core.pos_to_string(p, 1)) +end +core.register_chatcommand("teleport", { + params = S("<X>,<Y>,<Z> | <to_name> | <name> <X>,<Y>,<Z> | <name> <to_name>"), + description = S("Teleport to position or player"), + privs = {teleport=true}, + func = function(name, param) local p = {} - p.x, p.y, p.z = string.match(param, "^([%d.-]+)[, ] *([%d.-]+)[, ] *([%d.-]+)$") - p.x = tonumber(p.x) - p.y = tonumber(p.y) - p.z = tonumber(p.z) + p.x, p.y, p.z = param:match("^([%d.-]+)[, ] *([%d.-]+)[, ] *([%d.-]+)$") + p = vector.apply(p, tonumber) if p.x and p.y and p.z then - - local lm = 31000 - if p.x < -lm or p.x > lm or p.y < -lm or p.y > lm or p.z < -lm or p.z > lm then - return false, "Cannot teleport out of map bounds!" - end - local teleportee = core.get_player_by_name(name) - if teleportee then - if teleportee:get_attach() then - return false, "Can't teleport, you're attached to an object!" - end - teleportee:set_pos(p) - return true, "Teleporting to "..core.pos_to_string(p) - end + return teleport_to_pos(name, p) end local target_name = param:match("^([^ ]+)$") - local teleportee = core.get_player_by_name(name) - - p = nil if target_name then - local target = core.get_player_by_name(target_name) - if target then - p = target:get_pos() - end - end - - if teleportee and p then - if teleportee:get_attach() then - return false, "Can't teleport, you're attached to an object!" - end - p = find_free_position_near(p) - teleportee:set_pos(p) - return true, "Teleporting to " .. target_name - .. " at "..core.pos_to_string(p) + return teleport_to_player(name, target_name) end - if not core.check_player_privs(name, {bring=true}) then - return false, "You don't have permission to teleport other players (missing bring privilege)" - end + local has_bring_priv = core.check_player_privs(name, {bring=true}) + local missing_bring_msg = S("You don't have permission to teleport " .. + "other players (missing privilege: @1).", "bring") - teleportee = nil - p = {} local teleportee_name teleportee_name, p.x, p.y, p.z = param:match( "^([^ ]+) +([%d.-]+)[, ] *([%d.-]+)[, ] *([%d.-]+)$") - p.x, p.y, p.z = tonumber(p.x), tonumber(p.y), tonumber(p.z) - if teleportee_name then - teleportee = core.get_player_by_name(teleportee_name) - end - if teleportee and p.x and p.y and p.z then - if teleportee:get_attach() then - return false, "Can't teleport, player is attached to an object!" + p = vector.apply(p, tonumber) + if teleportee_name and p.x and p.y and p.z then + if not has_bring_priv then + return false, missing_bring_msg end - teleportee:set_pos(p) - return true, "Teleporting " .. teleportee_name - .. " to " .. core.pos_to_string(p) + return teleport_to_pos(teleportee_name, p) end - teleportee = nil - p = nil teleportee_name, target_name = string.match(param, "^([^ ]+) +([^ ]+)$") - if teleportee_name then - teleportee = core.get_player_by_name(teleportee_name) - end - if target_name then - local target = core.get_player_by_name(target_name) - if target then - p = target:get_pos() + if teleportee_name and target_name then + if not has_bring_priv then + return false, missing_bring_msg end - end - if teleportee and p then - if teleportee:get_attach() then - return false, "Can't teleport, player is attached to an object!" - end - p = find_free_position_near(p) - teleportee:set_pos(p) - return true, "Teleporting " .. teleportee_name - .. " to " .. target_name - .. " at " .. core.pos_to_string(p) + return teleport_to_player(teleportee_name, target_name) end - return false, 'Invalid parameters ("' .. param - .. '") or player not found (see /help teleport)' + return false end, }) core.register_chatcommand("set", { - params = "([-n] <name> <value>) | <name>", - description = "Set or read server configuration setting", + params = S("([-n] <name> <value>) | <name>"), + description = S("Set or read server configuration setting"), privs = {server=true}, func = function(name, param) local arg, setname, setvalue = string.match(param, "(-[n]) ([^ ]+) (.+)") @@ -550,22 +562,23 @@ core.register_chatcommand("set", { setname, setvalue = string.match(param, "([^ ]+) (.+)") if setname and setvalue then if not core.settings:get(setname) then - return false, "Failed. Use '/set -n <name> <value>' to create a new setting." + return false, S("Failed. Use '/set -n <name> <value>' " + .. "to create a new setting.") end core.settings:set(setname, setvalue) - return true, setname .. " = " .. setvalue + return true, S("@1 = @2", setname, setvalue) end setname = string.match(param, "([^ ]+)") if setname then setvalue = core.settings:get(setname) if not setvalue then - setvalue = "<not set>" + setvalue = S("<not set>") end - return true, setname .. " = " .. setvalue + return true, S("@1 = @2", setname, setvalue) end - return false, "Invalid parameters (see /help set)." + return false, S("Invalid parameters (see /help set).") end, }) @@ -578,26 +591,27 @@ local function emergeblocks_callback(pos, action, num_calls_remaining, ctx) if ctx.current_blocks == ctx.total_blocks then core.chat_send_player(ctx.requestor_name, - string.format("Finished emerging %d blocks in %.2fms.", - ctx.total_blocks, (os.clock() - ctx.start_time) * 1000)) + S("Finished emerging @1 blocks in @2ms.", + ctx.total_blocks, + string.format("%.2f", (os.clock() - ctx.start_time) * 1000))) end end local function emergeblocks_progress_update(ctx) if ctx.current_blocks ~= ctx.total_blocks then core.chat_send_player(ctx.requestor_name, - string.format("emergeblocks update: %d/%d blocks emerged (%.1f%%)", + S("emergeblocks update: @1/@2 blocks emerged (@3%)", ctx.current_blocks, ctx.total_blocks, - (ctx.current_blocks / ctx.total_blocks) * 100)) + string.format("%.1f", (ctx.current_blocks / ctx.total_blocks) * 100))) core.after(2, emergeblocks_progress_update, ctx) end end core.register_chatcommand("emergeblocks", { - params = "(here [<radius>]) | (<pos1> <pos2>)", - description = "Load (or, if nonexistent, generate) map blocks " - .. "contained in area pos1 to pos2 (<pos1> and <pos2> must be in parentheses)", + params = S("(here [<radius>]) | (<pos1> <pos2>)"), + description = S("Load (or, if nonexistent, generate) map blocks contained in " + .. "area pos1 to pos2 (<pos1> and <pos2> must be in parentheses)"), privs = {server=true}, func = function(name, param) local p1, p2 = parse_range_str(name, param) @@ -615,15 +629,15 @@ core.register_chatcommand("emergeblocks", { core.emerge_area(p1, p2, emergeblocks_callback, context) core.after(2, emergeblocks_progress_update, context) - return true, "Started emerge of area ranging from " .. - core.pos_to_string(p1, 1) .. " to " .. core.pos_to_string(p2, 1) + return true, S("Started emerge of area ranging from @1 to @2.", + core.pos_to_string(p1, 1), core.pos_to_string(p2, 1)) end, }) core.register_chatcommand("deleteblocks", { - params = "(here [<radius>]) | (<pos1> <pos2>)", - description = "Delete map blocks contained in area pos1 to pos2 " - .. "(<pos1> and <pos2> must be in parentheses)", + params = S("(here [<radius>]) | (<pos1> <pos2>)"), + description = S("Delete map blocks contained in area pos1 to pos2 " + .. "(<pos1> and <pos2> must be in parentheses)"), privs = {server=true}, func = function(name, param) local p1, p2 = parse_range_str(name, param) @@ -632,18 +646,20 @@ core.register_chatcommand("deleteblocks", { end if core.delete_area(p1, p2) then - return true, "Successfully cleared area ranging from " .. - core.pos_to_string(p1, 1) .. " to " .. core.pos_to_string(p2, 1) + return true, S("Successfully cleared area " + .. "ranging from @1 to @2.", + core.pos_to_string(p1, 1), core.pos_to_string(p2, 1)) else - return false, "Failed to clear one or more blocks in area" + return false, S("Failed to clear one or more " + .. "blocks in area.") end end, }) core.register_chatcommand("fixlight", { - params = "(here [<radius>]) | (<pos1> <pos2>)", - description = "Resets lighting in the area between pos1 and pos2 " - .. "(<pos1> and <pos2> must be in parentheses)", + params = S("(here [<radius>]) | (<pos1> <pos2>)"), + description = S("Resets lighting in the area between pos1 and pos2 " + .. "(<pos1> and <pos2> must be in parentheses)"), privs = {server = true}, func = function(name, param) local p1, p2 = parse_range_str(name, param) @@ -652,17 +668,18 @@ core.register_chatcommand("fixlight", { end if core.fix_light(p1, p2) then - return true, "Successfully reset light in the area ranging from " .. - core.pos_to_string(p1, 1) .. " to " .. core.pos_to_string(p2, 1) + return true, S("Successfully reset light in the area " + .. "ranging from @1 to @2.", + core.pos_to_string(p1, 1), core.pos_to_string(p2, 1)) else - return false, "Failed to load one or more blocks in area" + return false, S("Failed to load one or more blocks in area.") end end, }) core.register_chatcommand("mods", { params = "", - description = "List mods installed on the server", + description = S("List mods installed on the server"), privs = {}, func = function(name, param) return true, table.concat(core.get_modnames(), ", ") @@ -674,117 +691,136 @@ local function handle_give_command(cmd, giver, receiver, stackstring) .. ', stackstring="' .. stackstring .. '"') local itemstack = ItemStack(stackstring) if itemstack:is_empty() then - return false, "Cannot give an empty item" + return false, S("Cannot give an empty item.") elseif (not itemstack:is_known()) or (itemstack:get_name() == "unknown") then - return false, "Cannot give an unknown item" + return false, S("Cannot give an unknown item.") -- Forbid giving 'ignore' due to unwanted side effects elseif itemstack:get_name() == "ignore" then - return false, "Giving 'ignore' is not allowed" + return false, S("Giving 'ignore' is not allowed.") end local receiverref = core.get_player_by_name(receiver) if receiverref == nil then - return false, receiver .. " is not a known player" + return false, S("@1 is not a known player.", receiver) end local leftover = receiverref:get_inventory():add_item("main", itemstack) local partiality if leftover:is_empty() then - partiality = "" + partiality = nil elseif leftover:get_count() == itemstack:get_count() then - partiality = "could not be " + partiality = false else - partiality = "partially " + partiality = true end -- The actual item stack string may be different from what the "giver" -- entered (e.g. big numbers are always interpreted as 2^16-1). stackstring = itemstack:to_string() + local msg + if partiality == true then + msg = S("@1 partially added to inventory.", stackstring) + elseif partiality == false then + msg = S("@1 could not be added to inventory.", stackstring) + else + msg = S("@1 added to inventory.", stackstring) + end if giver == receiver then - local msg = "%q %sadded to inventory." - return true, msg:format(stackstring, partiality) + return true, msg else - core.chat_send_player(receiver, ("%q %sadded to inventory.") - :format(stackstring, partiality)) - local msg = "%q %sadded to %s's inventory." - return true, msg:format(stackstring, partiality, receiver) + core.chat_send_player(receiver, msg) + local msg_other + if partiality == true then + msg_other = S("@1 partially added to inventory of @2.", + stackstring, receiver) + elseif partiality == false then + msg_other = S("@1 could not be added to inventory of @2.", + stackstring, receiver) + else + msg_other = S("@1 added to inventory of @2.", + stackstring, receiver) + end + return true, msg_other end end core.register_chatcommand("give", { - params = "<name> <ItemString> [<count> [<wear>]]", - description = "Give item to player", + params = S("<name> <ItemString> [<count> [<wear>]]"), + description = S("Give item to player"), privs = {give=true}, func = function(name, param) local toname, itemstring = string.match(param, "^([^ ]+) +(.+)$") if not toname or not itemstring then - return false, "Name and ItemString required" + return false, S("Name and ItemString required.") end return handle_give_command("/give", name, toname, itemstring) end, }) core.register_chatcommand("giveme", { - params = "<ItemString> [<count> [<wear>]]", - description = "Give item to yourself", + params = S("<ItemString> [<count> [<wear>]]"), + description = S("Give item to yourself"), privs = {give=true}, func = function(name, param) local itemstring = string.match(param, "(.+)$") if not itemstring then - return false, "ItemString required" + return false, S("ItemString required.") end return handle_give_command("/giveme", name, name, itemstring) end, }) core.register_chatcommand("spawnentity", { - params = "<EntityName> [<X>,<Y>,<Z>]", - description = "Spawn entity at given (or your) position", + params = S("<EntityName> [<X>,<Y>,<Z>]"), + description = S("Spawn entity at given (or your) position"), privs = {give=true, interact=true}, func = function(name, param) local entityname, p = string.match(param, "^([^ ]+) *(.*)$") if not entityname then - return false, "EntityName required" + return false, S("EntityName required.") end core.log("action", ("%s invokes /spawnentity, entityname=%q") :format(name, entityname)) local player = core.get_player_by_name(name) if player == nil then core.log("error", "Unable to spawn entity, player is nil") - return false, "Unable to spawn entity, player is nil" + return false, S("Unable to spawn entity, player is nil.") end if not core.registered_entities[entityname] then - return false, "Cannot spawn an unknown entity" + return false, S("Cannot spawn an unknown entity.") end if p == "" then p = player:get_pos() else p = core.string_to_pos(p) if p == nil then - return false, "Invalid parameters ('" .. param .. "')" + return false, S("Invalid parameters (@1).", param) end end p.y = p.y + 1 local obj = core.add_entity(p, entityname) - local msg = obj and "%q spawned." or "%q failed to spawn." - return true, msg:format(entityname) + if obj then + return true, S("@1 spawned.", entityname) + else + return true, S("@1 failed to spawn.", entityname) + end end, }) core.register_chatcommand("pulverize", { params = "", - description = "Destroy item in hand", + description = S("Destroy item in hand"), func = function(name, param) local player = core.get_player_by_name(name) if not player then core.log("error", "Unable to pulverize, no player.") - return false, "Unable to pulverize, no player." + return false, S("Unable to pulverize, no player.") end local wielded_item = player:get_wielded_item() if wielded_item:is_empty() then - return false, "Unable to pulverize, no item in hand." + return false, S("Unable to pulverize, no item in hand.") end core.log("action", name .. " pulverized \"" .. wielded_item:get_name() .. " " .. wielded_item:get_count() .. "\"") player:set_wielded_item(nil) - return true, "An item was pulverized." + return true, S("An item was pulverized.") end, }) @@ -800,14 +836,15 @@ core.register_on_punchnode(function(pos, node, puncher) end) core.register_chatcommand("rollback_check", { - params = "[<range>] [<seconds>] [<limit>]", - description = "Check who last touched a node or a node near it" - .. " within the time specified by <seconds>. Default: range = 0," - .. " seconds = 86400 = 24h, limit = 5. Set <seconds> to inf for no time limit", + params = S("[<range>] [<seconds>] [<limit>]"), + description = S("Check who last touched a node or a node near it " + .. "within the time specified by <seconds>. " + .. "Default: range = 0, seconds = 86400 = 24h, limit = 5. " + .. "Set <seconds> to inf for no time limit"), privs = {rollback=true}, func = function(name, param) if not core.settings:get_bool("enable_rollback_recording") then - return false, "Rollback functions are disabled." + return false, S("Rollback functions are disabled.") end local range, seconds, limit = param:match("(%d+) *(%d*) *(%d*)") @@ -815,30 +852,30 @@ core.register_chatcommand("rollback_check", { seconds = tonumber(seconds) or 86400 limit = tonumber(limit) or 5 if limit > 100 then - return false, "That limit is too high!" + return false, S("That limit is too high!") end core.rollback_punch_callbacks[name] = function(pos, node, puncher) local name = puncher:get_player_name() - core.chat_send_player(name, "Checking " .. core.pos_to_string(pos) .. "...") + core.chat_send_player(name, S("Checking @1 ...", core.pos_to_string(pos))) local actions = core.rollback_get_node_actions(pos, range, seconds, limit) if not actions then - core.chat_send_player(name, "Rollback functions are disabled") + core.chat_send_player(name, S("Rollback functions are disabled.")) return end local num_actions = #actions if num_actions == 0 then - core.chat_send_player(name, "Nobody has touched" - .. " the specified location in " - .. seconds .. " seconds") + core.chat_send_player(name, + S("Nobody has touched the specified " + .. "location in @1 seconds.", + seconds)) return end local time = os.time() for i = num_actions, 1, -1 do local action = actions[i] core.chat_send_player(name, - ("%s %s %s -> %s %d seconds ago.") - :format( + S("@1 @2 @3 -> @4 @5 seconds ago.", core.pos_to_string(action.pos), action.actor, action.oldnode.name, @@ -847,110 +884,123 @@ core.register_chatcommand("rollback_check", { end end - return true, "Punch a node (range=" .. range .. ", seconds=" - .. seconds .. "s, limit=" .. limit .. ")" + return true, S("Punch a node (range=@1, seconds=@2, limit=@3).", + range, seconds, limit) end, }) core.register_chatcommand("rollback", { - params = "(<name> [<seconds>]) | (:<actor> [<seconds>])", - description = "Revert actions of a player. Default for <seconds> is 60. Set <seconds> to inf for no time limit", + params = S("(<name> [<seconds>]) | (:<actor> [<seconds>])"), + description = S("Revert actions of a player. " + .. "Default for <seconds> is 60. " + .. "Set <seconds> to inf for no time limit"), privs = {rollback=true}, func = function(name, param) if not core.settings:get_bool("enable_rollback_recording") then - return false, "Rollback functions are disabled." + return false, S("Rollback functions are disabled.") end local target_name, seconds = string.match(param, ":([^ ]+) *(%d*)") + local rev_msg if not target_name then local player_name player_name, seconds = string.match(param, "([^ ]+) *(%d*)") if not player_name then - return false, "Invalid parameters. See /help rollback" - .. " and /help rollback_check." + return false, S("Invalid parameters. " + .. "See /help rollback and " + .. "/help rollback_check.") end + seconds = tonumber(seconds) or 60 target_name = "player:"..player_name + rev_msg = S("Reverting actions of player '@1' since @2 seconds.", + player_name, seconds) + else + seconds = tonumber(seconds) or 60 + rev_msg = S("Reverting actions of @1 since @2 seconds.", + target_name, seconds) end - seconds = tonumber(seconds) or 60 - core.chat_send_player(name, "Reverting actions of " - .. target_name .. " since " - .. seconds .. " seconds.") + core.chat_send_player(name, rev_msg) local success, log = core.rollback_revert_actions_by( target_name, seconds) local response = "" if #log > 100 then - response = "(log is too long to show)\n" + response = S("(log is too long to show)").."\n" else for _, line in pairs(log) do response = response .. line .. "\n" end end - response = response .. "Reverting actions " - .. (success and "succeeded." or "FAILED.") + if success then + response = response .. S("Reverting actions succeeded.") + else + response = response .. S("Reverting actions FAILED.") + end return success, response end, }) core.register_chatcommand("status", { - description = "Show server status", + description = S("Show server status"), func = function(name, param) local status = core.get_server_status(name, false) if status and status ~= "" then return true, status end - return false, "This command was disabled by a mod or game" + return false, S("This command was disabled by a mod or game.") end, }) core.register_chatcommand("time", { - params = "[<0..23>:<0..59> | <0..24000>]", - description = "Show or set time of day", + params = S("[<0..23>:<0..59> | <0..24000>]"), + description = S("Show or set time of day"), privs = {}, func = function(name, param) if param == "" then local current_time = math.floor(core.get_timeofday() * 1440) local minutes = current_time % 60 local hour = (current_time - minutes) / 60 - return true, ("Current time is %d:%02d"):format(hour, minutes) + return true, S("Current time is @1:@2.", + string.format("%d", hour), + string.format("%02d", minutes)) end local player_privs = core.get_player_privs(name) if not player_privs.settime then - return false, "You don't have permission to run this command " .. - "(missing privilege: settime)." + return false, S("You don't have permission to run " + .. "this command (missing privilege: @1).", "settime") end local hour, minute = param:match("^(%d+):(%d+)$") if not hour then local new_time = tonumber(param) if not new_time then - return false, "Invalid time." + return false, S("Invalid time.") end -- Backward compatibility. core.set_timeofday((new_time % 24000) / 24000) core.log("action", name .. " sets time to " .. new_time) - return true, "Time of day changed." + return true, S("Time of day changed.") end hour = tonumber(hour) minute = tonumber(minute) if hour < 0 or hour > 23 then - return false, "Invalid hour (must be between 0 and 23 inclusive)." + return false, S("Invalid hour (must be between 0 and 23 inclusive).") elseif minute < 0 or minute > 59 then - return false, "Invalid minute (must be between 0 and 59 inclusive)." + return false, S("Invalid minute (must be between 0 and 59 inclusive).") end core.set_timeofday((hour * 60 + minute) / 1440) core.log("action", ("%s sets time to %d:%02d"):format(name, hour, minute)) - return true, "Time of day changed." + return true, S("Time of day changed.") end, }) core.register_chatcommand("days", { - description = "Show day count since world creation", + description = S("Show day count since world creation"), func = function(name, param) - return true, "Current day is " .. core.get_day_count() + return true, S("Current day is @1.", core.get_day_count()) end }) core.register_chatcommand("shutdown", { - params = "[<delay_in_seconds> | -1] [reconnect] [<message>]", - description = "Shutdown server (-1 cancels a delayed shutdown)", + params = S("[<delay_in_seconds> | -1] [reconnect] [<message>]"), + description = S("Shutdown server (-1 cancels a delayed shutdown)"), privs = {server=true}, func = function(name, param) local delay, reconnect, message @@ -963,7 +1013,7 @@ core.register_chatcommand("shutdown", { if delay == 0 then core.log("action", name .. " shuts down server") - core.chat_send_all("*** Server shutting down (operator request).") + core.chat_send_all("*** "..S("Server shutting down (operator request).")) end core.request_shutdown(message:trim(), core.is_yes(reconnect), delay) return true @@ -971,65 +1021,65 @@ core.register_chatcommand("shutdown", { }) core.register_chatcommand("ban", { - params = "[<name>]", - description = "Ban the IP of a player or show the ban list", + params = S("[<name>]"), + description = S("Ban the IP of a player or show the ban list"), privs = {ban=true}, func = function(name, param) if param == "" then local ban_list = core.get_ban_list() if ban_list == "" then - return true, "The ban list is empty." + return true, S("The ban list is empty.") else - return true, "Ban list: " .. ban_list + return true, S("Ban list: @1", ban_list) end end if not core.get_player_by_name(param) then - return false, "Player is not online." + return false, S("Player is not online.") end if not core.ban_player(param) then - return false, "Failed to ban player." + return false, S("Failed to ban player.") end local desc = core.get_ban_description(param) core.log("action", name .. " bans " .. desc .. ".") - return true, "Banned " .. desc .. "." + return true, S("Banned @1.", desc) end, }) core.register_chatcommand("unban", { - params = "<name> | <IP_address>", - description = "Remove IP ban belonging to a player/IP", + params = S("<name> | <IP_address>"), + description = S("Remove IP ban belonging to a player/IP"), privs = {ban=true}, func = function(name, param) if not core.unban_player_or_ip(param) then - return false, "Failed to unban player/IP." + return false, S("Failed to unban player/IP.") end core.log("action", name .. " unbans " .. param) - return true, "Unbanned " .. param + return true, S("Unbanned @1.", param) end, }) core.register_chatcommand("kick", { - params = "<name> [<reason>]", - description = "Kick a player", + params = S("<name> [<reason>]"), + description = S("Kick a player"), privs = {kick=true}, func = function(name, param) local tokick, reason = param:match("([^ ]+) (.+)") tokick = tokick or param if not core.kick_player(tokick, reason) then - return false, "Failed to kick player " .. tokick + return false, S("Failed to kick player @1.", tokick) end local log_reason = "" if reason then log_reason = " with reason \"" .. reason .. "\"" end core.log("action", name .. " kicks " .. tokick .. log_reason) - return true, "Kicked " .. tokick + return true, S("Kicked @1.", tokick) end, }) core.register_chatcommand("clearobjects", { - params = "[full | quick]", - description = "Clear all objects in world", + params = S("[full | quick]"), + description = S("Clear all objects in world"), privs = {server=true}, func = function(name, param) local options = {} @@ -1038,45 +1088,44 @@ core.register_chatcommand("clearobjects", { elseif param == "full" then options.mode = "full" else - return false, "Invalid usage, see /help clearobjects." + return false, S("Invalid usage, see /help clearobjects.") end - core.log("action", name .. " clears all objects (" + core.log("action", name .. " clears objects (" .. options.mode .. " mode).") - core.chat_send_all("Clearing all objects. This may take a long time." - .. " You may experience a timeout. (by " - .. name .. ")") + if options.mode == "full" then + core.chat_send_all(S("Clearing all objects. This may take a long time. " + .. "You may experience a timeout. (by @1)", name)) + end core.clear_objects(options) core.log("action", "Object clearing done.") - core.chat_send_all("*** Cleared all objects.") + core.chat_send_all("*** "..S("Cleared all objects.")) return true end, }) core.register_chatcommand("msg", { - params = "<name> <message>", - description = "Send a direct message to a player", + params = S("<name> <message>"), + description = S("Send a direct message to a player"), privs = {shout=true}, func = function(name, param) local sendto, message = param:match("^(%S+)%s(.+)$") if not sendto then - return false, "Invalid usage, see /help msg." + return false, S("Invalid usage, see /help msg.") end if not core.get_player_by_name(sendto) then - return false, "The player " .. sendto - .. " is not online." + return false, S("The player @1 is not online.", sendto) end core.log("action", "DM from " .. name .. " to " .. sendto .. ": " .. message) - core.chat_send_player(sendto, "DM from " .. name .. ": " - .. message) - return true, "Message sent." + core.chat_send_player(sendto, S("DM from @1: @2", name, message)) + return true, S("Message sent.") end, }) core.register_chatcommand("last-login", { - params = "[<name>]", - description = "Get the last login time of a player or yourself", + params = S("[<name>]"), + description = S("Get the last login time of a player or yourself"), func = function(name, param) if param == "" then param = name @@ -1084,25 +1133,27 @@ core.register_chatcommand("last-login", { local pauth = core.get_auth_handler().get_auth(param) if pauth and pauth.last_login and pauth.last_login ~= -1 then -- Time in UTC, ISO 8601 format - return true, param.."'s last login time was " .. - os.date("!%Y-%m-%dT%H:%M:%SZ", pauth.last_login) + return true, S("@1's last login time was @2.", + param, + os.date("!%Y-%m-%dT%H:%M:%SZ", pauth.last_login)) end - return false, param.."'s last login time is unknown" + return false, S("@1's last login time is unknown.", param) end, }) core.register_chatcommand("clearinv", { - params = "[<name>]", - description = "Clear the inventory of yourself or another player", + params = S("[<name>]"), + description = S("Clear the inventory of yourself or another player"), func = function(name, param) local player if param and param ~= "" and param ~= name then if not core.check_player_privs(name, {server=true}) then - return false, "You don't have permission" - .. " to clear another player's inventory (missing privilege: server)" + return false, S("You don't have permission to " + .. "clear another player's inventory " + .. "(missing privilege: @1).", "server") end player = core.get_player_by_name(param) - core.chat_send_player(param, name.." cleared your inventory.") + core.chat_send_player(param, S("@1 cleared your inventory.", name)) else player = core.get_player_by_name(name) end @@ -1112,25 +1163,25 @@ core.register_chatcommand("clearinv", { player:get_inventory():set_list("craft", {}) player:get_inventory():set_list("craftpreview", {}) core.log("action", name.." clears "..player:get_player_name().."'s inventory") - return true, "Cleared "..player:get_player_name().."'s inventory." + return true, S("Cleared @1's inventory.", player:get_player_name()) else - return false, "Player must be online to clear inventory!" + return false, S("Player must be online to clear inventory!") end end, }) local function handle_kill_command(killer, victim) if core.settings:get_bool("enable_damage") == false then - return false, "Players can't be killed, damage has been disabled." + return false, S("Players can't be killed, damage has been disabled.") end local victimref = core.get_player_by_name(victim) if victimref == nil then - return false, string.format("Player %s is not online.", victim) + return false, S("Player @1 is not online.", victim) elseif victimref:get_hp() <= 0 then if killer == victim then - return false, "You are already dead." + return false, S("You are already dead.") else - return false, string.format("%s is already dead.", victim) + return false, S("@1 is already dead.", victim) end end if not killer == victim then @@ -1138,12 +1189,12 @@ local function handle_kill_command(killer, victim) end -- Kill victim victimref:set_hp(0) - return true, string.format("%s has been killed.", victim) + return true, S("@1 has been killed.", victim) end core.register_chatcommand("kill", { - params = "[<name>]", - description = "Kill player or yourself", + params = S("[<name>]"), + description = S("Kill player or yourself"), privs = {server=true}, func = function(name, param) return handle_kill_command(name, param == "" and name or param) diff --git a/builtin/game/item.lua b/builtin/game/item.lua index 881aff52e..b68177c22 100644 --- a/builtin/game/item.lua +++ b/builtin/game/item.lua @@ -678,7 +678,7 @@ end -- Item definition defaults -- -local default_stack_max = tonumber(minetest.settings:get("default_stack_max")) or 99 +local default_stack_max = tonumber(core.settings:get("default_stack_max")) or 99 core.nodedef_default = { -- Item properties diff --git a/builtin/game/knockback.lua b/builtin/game/knockback.lua index b5c4cbc5a..a937aa186 100644 --- a/builtin/game/knockback.lua +++ b/builtin/game/knockback.lua @@ -42,5 +42,5 @@ core.register_on_punchplayer(function(player, hitter, time_from_last_punch, tool return -- barely noticeable, so don't even send end - player:add_player_velocity(kdir) + player:add_velocity(kdir) end) diff --git a/builtin/game/misc.lua b/builtin/game/misc.lua index b8c5e16a9..fcb86146d 100644 --- a/builtin/game/misc.lua +++ b/builtin/game/misc.lua @@ -1,5 +1,7 @@ -- Minetest: builtin/misc.lua +local S = core.get_translator("__builtin") + -- -- Misc. API functions -- @@ -42,15 +44,15 @@ end function core.send_join_message(player_name) if not core.is_singleplayer() then - core.chat_send_all("*** " .. player_name .. " joined the game.") + core.chat_send_all("*** " .. S("@1 joined the game.", player_name)) end end function core.send_leave_message(player_name, timed_out) - local announcement = "*** " .. player_name .. " left the game." + local announcement = "*** " .. S("@1 left the game.", player_name) if timed_out then - announcement = announcement .. " (timed out)" + announcement = "*** " .. S("@1 left the game (timed out).", player_name) end core.chat_send_all(announcement) end diff --git a/builtin/game/privileges.lua b/builtin/game/privileges.lua index c7417d2f4..aee32a34e 100644 --- a/builtin/game/privileges.lua +++ b/builtin/game/privileges.lua @@ -1,5 +1,7 @@ -- Minetest: builtin/privileges.lua +local S = core.get_translator("__builtin") + -- -- Privileges -- @@ -15,7 +17,7 @@ function core.register_privilege(name, param) def.give_to_admin = def.give_to_singleplayer end if def.description == nil then - def.description = "(no description)" + def.description = S("(no description)") end end local def @@ -28,69 +30,69 @@ function core.register_privilege(name, param) core.registered_privileges[name] = def end -core.register_privilege("interact", "Can interact with things and modify the world") -core.register_privilege("shout", "Can speak in chat") -core.register_privilege("basic_privs", "Can modify 'shout' and 'interact' privileges") -core.register_privilege("privs", "Can modify privileges") +core.register_privilege("interact", S("Can interact with things and modify the world")) +core.register_privilege("shout", S("Can speak in chat")) +core.register_privilege("basic_privs", S("Can modify 'shout' and 'interact' privileges")) +core.register_privilege("privs", S("Can modify privileges")) core.register_privilege("teleport", { - description = "Can teleport self", + description = S("Can teleport self"), give_to_singleplayer = false, }) core.register_privilege("bring", { - description = "Can teleport other players", + description = S("Can teleport other players"), give_to_singleplayer = false, }) core.register_privilege("settime", { - description = "Can set the time of day using /time", + description = S("Can set the time of day using /time"), give_to_singleplayer = false, }) core.register_privilege("server", { - description = "Can do server maintenance stuff", + description = S("Can do server maintenance stuff"), give_to_singleplayer = false, give_to_admin = true, }) core.register_privilege("protection_bypass", { - description = "Can bypass node protection in the world", + description = S("Can bypass node protection in the world"), give_to_singleplayer = false, }) core.register_privilege("ban", { - description = "Can ban and unban players", + description = S("Can ban and unban players"), give_to_singleplayer = false, give_to_admin = true, }) core.register_privilege("kick", { - description = "Can kick players", + description = S("Can kick players"), give_to_singleplayer = false, give_to_admin = true, }) core.register_privilege("give", { - description = "Can use /give and /giveme", + description = S("Can use /give and /giveme"), give_to_singleplayer = false, }) core.register_privilege("password", { - description = "Can use /setpassword and /clearpassword", + description = S("Can use /setpassword and /clearpassword"), give_to_singleplayer = false, give_to_admin = true, }) core.register_privilege("fly", { - description = "Can use fly mode", + description = S("Can use fly mode"), give_to_singleplayer = false, }) core.register_privilege("fast", { - description = "Can use fast mode", + description = S("Can use fast mode"), give_to_singleplayer = false, }) core.register_privilege("noclip", { - description = "Can fly through solid nodes using noclip mode", + description = S("Can fly through solid nodes using noclip mode"), give_to_singleplayer = false, }) core.register_privilege("rollback", { - description = "Can use the rollback functionality", + description = S("Can use the rollback functionality"), give_to_singleplayer = false, }) core.register_privilege("debug", { - description = "Allows enabling various debug options that may affect gameplay", + description = S("Allows enabling various debug options that may affect gameplay"), give_to_singleplayer = false, give_to_admin = true, }) diff --git a/builtin/game/register.lua b/builtin/game/register.lua index b006957e9..c07535855 100644 --- a/builtin/game/register.lua +++ b/builtin/game/register.lua @@ -1,5 +1,7 @@ -- Minetest: builtin/misc_register.lua +local S = core.get_translator("__builtin") + -- -- Make raw registration functions inaccessible to anyone except this file -- @@ -118,10 +120,6 @@ function core.register_item(name, itemdef) end itemdef.name = name - -- default short_description to first line of description - itemdef.short_description = itemdef.short_description or - (itemdef.description or ""):gsub("\n.*","") - -- Apply defaults and add to registered_* table if itemdef.type == "node" then -- Use the nodebox as selection box if it's not set manually @@ -330,7 +328,7 @@ end core.register_item(":unknown", { type = "none", - description = "Unknown Item", + description = S("Unknown Item"), inventory_image = "unknown_item.png", on_place = core.item_place, on_secondary_use = core.item_secondary_use, @@ -340,7 +338,7 @@ core.register_item(":unknown", { }) core.register_node(":air", { - description = "Air", + description = S("Air"), inventory_image = "air.png", wield_image = "air.png", drawtype = "airlike", @@ -357,7 +355,7 @@ core.register_node(":air", { }) core.register_node(":ignore", { - description = "Ignore", + description = S("Ignore"), inventory_image = "ignore.png", wield_image = "ignore.png", drawtype = "airlike", @@ -370,11 +368,12 @@ core.register_node(":ignore", { air_equivalent = true, drop = "", groups = {not_in_creative_inventory=1}, + node_placement_prediction = "", on_place = function(itemstack, placer, pointed_thing) core.chat_send_player( placer:get_player_name(), core.colorize("#FF0000", - "You can't place 'ignore' nodes!")) + S("You can't place 'ignore' nodes!"))) return "" end, }) diff --git a/builtin/game/statbars.lua b/builtin/game/statbars.lua index d192029c5..db5087a16 100644 --- a/builtin/game/statbars.lua +++ b/builtin/game/statbars.lua @@ -84,8 +84,8 @@ local function update_builtin_statbars(player) end if hud.id_breathbar and (not show_breathbar or breath == breath_max) then - minetest.after(1, function(player_name, breath_bar) - local player = minetest.get_player_by_name(player_name) + core.after(1, function(player_name, breath_bar) + local player = core.get_player_by_name(player_name) if player then player:hud_remove(breath_bar) end diff --git a/builtin/init.lua b/builtin/init.lua index 75bb3db85..89b1fdc64 100644 --- a/builtin/init.lua +++ b/builtin/init.lua @@ -39,9 +39,20 @@ if INIT == "game" then assert(not core.get_http_api) elseif INIT == "mainmenu" then local mm_script = core.settings:get("main_menu_script") + local custom_loaded = false if mm_script and mm_script ~= "" then - dofile(mm_script) - else + local testfile = io.open(mm_script, "r") + if testfile then + testfile:close() + dofile(mm_script) + custom_loaded = true + core.log("info", "Loaded custom main menu script: "..mm_script) + else + core.log("error", "Failed to load custom main menu script: "..mm_script) + core.log("info", "Falling back to default main menu script") + end + end + if not custom_loaded then dofile(core.get_mainmenu_path() .. DIR_DELIM .. "init.lua") end elseif INIT == "async" then diff --git a/builtin/locale/__builtin.de.tr b/builtin/locale/__builtin.de.tr new file mode 100644 index 000000000..eaadf611b --- /dev/null +++ b/builtin/locale/__builtin.de.tr @@ -0,0 +1,225 @@ +# textdomain: __builtin +Empty command.=Leerer Befehl. +Invalid command: @1=Ungültiger Befehl: @1 +Invalid command usage.=Ungültige Befehlsverwendung. +You don't have permission to run this command (missing privileges: @1).=Sie haben keine Erlaubnis, diesen Befehl auszuführen (fehlende Privilegien: @1). +Unable to get position of player @1.=Konnte Position vom Spieler @1 nicht ermitteln. +Incorrect area format. Expected: (x1,y1,z1) (x2,y2,z2)=Ungültiges Gebietsformat. Erwartet: (x1,y1,z1) (x2,y2,z2) +<action>=<Aktion> +Show chat action (e.g., '/me orders a pizza' displays '<player name> orders a pizza')=Chataktion zeigen (z.B. wird „/me isst Pizza“ zu „<Spielername> isst Pizza“) +Show the name of the server owner=Den Namen des Servereigentümers zeigen +The administrator of this server is @1.=Der Administrator dieses Servers ist @1. +There's no administrator named in the config file.=In der Konfigurationsdatei wurde kein Administrator angegeben. +[<name>]=[<Name>] +Show privileges of yourself or another player=Ihre eigenen Privilegien oder die eines anderen Spielers anzeigen +Player @1 does not exist.=Spieler @1 existiert nicht. +Privileges of @1: @2=Privilegien von @1: @2 +<privilege>=<Privileg> +Return list of all online players with privilege=Liste aller Spieler mit einem Privileg ausgeben +Invalid parameters (see /help haspriv).=Ungültige Parameter (siehe „/help haspriv“). +Unknown privilege!=Unbekanntes Privileg! +Players online with the "@1" privilege: @2=Derzeit online spielende Spieler mit dem „@1“-Privileg: @2 +Your privileges are insufficient.=Ihre Privilegien sind unzureichend. +Unknown privilege: @1=Unbekanntes Privileg: @1 +@1 granted you privileges: @2=@1 gewährte Ihnen Privilegien: @2 +<name> (<privilege> | all)=<Name> (<Privileg> | all) +Give privileges to player=Privileg an Spieler vergeben +Invalid parameters (see /help grant).=Ungültige Parameter (siehe „/help grant“). +<privilege> | all=<Privileg> | all +Grant privileges to yourself=Privilegien an Ihnen selbst vergeben +Invalid parameters (see /help grantme).=Ungültige Parameter (siehe „/help grantme“). +@1 revoked privileges from you: @2=@1 entfernte Privilegien von Ihnen: @2 +Remove privileges from player=Privilegien von Spieler entfernen +Invalid parameters (see /help revoke).=Ungültige Parameter (siehe „/help revoke“). +Revoke privileges from yourself=Privilegien von Ihnen selbst entfernen +Invalid parameters (see /help revokeme).=Ungültige Parameter (siehe „/help revokeme“). +<name> <password>=<Name> <Passwort> +Set player's password=Passwort von Spieler setzen +Name field required.=Namensfeld benötigt. +Your password was cleared by @1.=Ihr Passwort wurde von @1 geleert. +Password of player "@1" cleared.=Passwort von Spieler „@1“ geleert. +Your password was set by @1.=Ihr Passwort wurde von @1 gesetzt. +Password of player "@1" set.=Passwort von Spieler „@1“ gesetzt. +<name>=<Name> +Set empty password for a player=Leeres Passwort für einen Spieler setzen +Reload authentication data=Authentifizierungsdaten erneut laden +Done.=Fertig. +Failed.=Fehlgeschlagen. +Remove a player's data=Daten eines Spielers löschen +Player "@1" removed.=Spieler „@1“ gelöscht. +No such player "@1" to remove.=Es gibt keinen Spieler „@1“, der gelöscht werden könnte. +Player "@1" is connected, cannot remove.=Spieler „@1“ ist verbunden, er kann nicht gelöscht werden. +Unhandled remove_player return code @1.=Nicht berücksichtigter remove_player-Rückgabewert @1. +Cannot teleport out of map bounds!=Eine Teleportation außerhalb der Kartengrenzen ist nicht möglich! +Cannot get player with name @1.=Spieler mit Namen @1 kann nicht gefunden werden. +Cannot teleport, @1 is attached to an object!=Teleportation nicht möglich, @1 ist an einem Objekt befestigt! +Teleporting @1 to @2.=Teleportation von @1 nach @2 +One does not teleport to oneself.=Man teleportiert sich doch nicht zu sich selbst. +Cannot get teleportee with name @1.=Der zu teleportierende Spieler mit Namen @1 kann nicht gefunden werden. +Cannot get target player with name @1.=Zielspieler mit Namen @1 kann nicht gefunden werden. +Teleporting @1 to @2 at @3.=Teleportation von @1 zu @2 bei @3 +<X>,<Y>,<Z> | <to_name> | <name> <X>,<Y>,<Z> | <name> <to_name>=<X>,<Y>,<Z> | <zu_Name> | <Name> <X>,<Y>,<Z> | <Name> <zu_Name> +Teleport to position or player=Zu Position oder Spieler teleportieren +You don't have permission to teleport other players (missing privilege: @1).=Sie haben nicht die Erlaubnis, andere Spieler zu teleportieren (fehlendes Privileg: @1). +([-n] <name> <value>) | <name>=([-n] <Name> <Wert>) | <Name> +Set or read server configuration setting=Serverkonfigurationseinstellung setzen oder lesen +Failed. Use '/set -n <name> <value>' to create a new setting.=Fehlgeschlagen. Benutzen Sie „/set -n <Name> <Wert>“, um eine neue Einstellung zu erstellen. +@1 @= @2=@1 @= @2 +<not set>=<nicht gesetzt> +Invalid parameters (see /help set).=Ungültige Parameter (siehe „/help set“). +Finished emerging @1 blocks in @2ms.=Fertig mit Erzeugung von @1 Blöcken in @2 ms. +emergeblocks update: @1/@2 blocks emerged (@3%)=emergeblocks-Update: @1/@2 Kartenblöcke geladen (@3%) +(here [<radius>]) | (<pos1> <pos2>)=(here [<Radius>]) | (<Pos1> <Pos2>) +Load (or, if nonexistent, generate) map blocks contained in area pos1 to pos2 (<pos1> and <pos2> must be in parentheses)=Lade (oder, wenn nicht existent, generiere) Kartenblöcke im Gebiet zwischen Pos1 und Pos2 (<Pos1> und <Pos2> müssen in Klammern stehen) +Started emerge of area ranging from @1 to @2.=Start des Ladevorgangs des Gebiets zwischen @1 und @2. +Delete map blocks contained in area pos1 to pos2 (<pos1> and <pos2> must be in parentheses)=Kartenblöcke innerhalb des Gebiets zwischen Pos1 und Pos2 löschen (<Pos1> und <Pos2> müssen in Klammern stehen) +Successfully cleared area ranging from @1 to @2.=Gebiet zwischen @1 und @2 erfolgreich geleert. +Failed to clear one or more blocks in area.=Fehlgeschlagen: Ein oder mehrere Kartenblöcke im Gebiet konnten nicht geleert werden. +Resets lighting in the area between pos1 and pos2 (<pos1> and <pos2> must be in parentheses)=Setzt das Licht im Gebiet zwischen Pos1 und Pos2 zurück (<Pos1> und <Pos2> müssen in Klammern stehen) +Successfully reset light in the area ranging from @1 to @2.=Das Licht im Gebiet zwischen @1 und @2 wurde erfolgreich zurückgesetzt. +Failed to load one or more blocks in area.=Fehlgeschlagen: Ein oder mehrere Kartenblöcke im Gebiet konnten nicht geladen werden. +List mods installed on the server=Installierte Mods auf dem Server auflisten +Cannot give an empty item.=Ein leerer Gegenstand kann nicht gegeben werden. +Cannot give an unknown item.=Ein unbekannter Gegenstand kann nicht gegeben werden. +Giving 'ignore' is not allowed.=„ignore“ darf nicht gegeben werden. +@1 is not a known player.=@1 ist kein bekannter Spieler. +@1 partially added to inventory.=@1 teilweise ins Inventar eingefügt. +@1 could not be added to inventory.=@1 konnte nicht ins Inventar eingefügt werden. +@1 added to inventory.=@1 zum Inventar hinzugefügt. +@1 partially added to inventory of @2.=@1 teilweise ins Inventar von @2 eingefügt. +@1 could not be added to inventory of @2.=@1 konnte nicht ins Inventar von @2 eingefügt werden. +@1 added to inventory of @2.=@1 ins Inventar von @2 eingefügt. +<name> <ItemString> [<count> [<wear>]]=<Name> <ItemString> [<Anzahl> [<Abnutzung>]] +Give item to player=Gegenstand an Spieler geben +Name and ItemString required.=Name und ItemString benötigt. +<ItemString> [<count> [<wear>]]=<ItemString> [<Anzahl> [<Abnutzung>]] +Give item to yourself=Gegenstand Ihnen selbst geben +ItemString required.=ItemString benötigt. +<EntityName> [<X>,<Y>,<Z>]=<EntityName> [<X>,<Y>,<Z>] +Spawn entity at given (or your) position=Entity an angegebener (oder Ihrer eigenen) Position spawnen +EntityName required.=EntityName benötigt. +Unable to spawn entity, player is nil.=Entity konnte nicht gespawnt werden, Spieler ist nil. +Cannot spawn an unknown entity.=Ein unbekanntes Entity kann nicht gespawnt werden. +Invalid parameters (@1).=Ungültige Parameter (@1). +@1 spawned.=@1 gespawnt. +@1 failed to spawn.=@1 konnte nicht gespawnt werden. +Destroy item in hand=Gegenstand in der Hand zerstören +Unable to pulverize, no player.=Konnte nicht pulverisieren, kein Spieler. +Unable to pulverize, no item in hand.=Konnte nicht pulverisieren, kein Gegenstand in der Hand. +An item was pulverized.=Ein Gegenstand wurde pulverisiert. +[<range>] [<seconds>] [<limit>]=[<Reichweite>] [<Sekunden>] [<Limit>] +Check who last touched a node or a node near it within the time specified by <seconds>. Default: range @= 0, seconds @= 86400 @= 24h, limit @= 5. Set <seconds> to inf for no time limit=Überprüfen, wer als letztes einen Node oder einen Node in der Nähe innerhalb der in <Sekunden> angegebenen Zeitspanne angefasst hat. Standard: Reichweite @= 0, Sekunden @= 86400 @= 24h, Limit @= 5. <Sekunden> auf „inf“ setzen, um Zeitlimit zu deaktivieren. +Rollback functions are disabled.=Rollback-Funktionen sind deaktiviert. +That limit is too high!=Dieses Limit ist zu hoch! +Checking @1 ...=Überprüfe @1 ... +Nobody has touched the specified location in @1 seconds.=Niemand hat die angegebene Position seit @1 Sekunden angefasst. +@1 @2 @3 -> @4 @5 seconds ago.=@1 @2 @3 -> @4 vor @5 Sekunden. +Punch a node (range@=@1, seconds@=@2, limit@=@3).=Hauen Sie einen Node (Reichweite@=@1, Sekunden@=@2, Limit@=@3). +(<name> [<seconds>]) | (:<actor> [<seconds>])=(<Name> [<Sekunden>]) | (:<Akteur> [<Sekunden>]) +Revert actions of a player. Default for <seconds> is 60. Set <seconds> to inf for no time limit=Aktionen eines Spielers zurückrollen. Standard für <Sekunden> ist 60. <Sekunden> auf „inf“ setzen, um Zeitlimit zu deaktivieren +Invalid parameters. See /help rollback and /help rollback_check.=Ungültige Parameter. Siehe /help rollback und /help rollback_check. +Reverting actions of player '@1' since @2 seconds.=Die Aktionen des Spielers „@1“ seit @2 Sekunden werden rückgängig gemacht. +Reverting actions of @1 since @2 seconds.=Die Aktionen von @1 seit @2 Sekunden werden rückgängig gemacht. +(log is too long to show)=(Protokoll ist zu lang für die Anzeige) +Reverting actions succeeded.=Die Aktionen wurden erfolgreich rückgängig gemacht. +Reverting actions FAILED.=FEHLGESCHLAGEN: Die Aktionen konnten nicht rückgängig gemacht werden. +Show server status=Serverstatus anzeigen +This command was disabled by a mod or game.=Dieser Befehl wurde von einer Mod oder einem Spiel deaktiviert. +[<0..23>:<0..59> | <0..24000>]=[<0..23>:<0..59> | <0..24000>] +Show or set time of day=Tageszeit anzeigen oder setzen +Current time is @1:@2.=Es ist jetzt @1:@2 Uhr. +You don't have permission to run this command (missing privilege: @1).=Sie haben nicht die Erlaubnis, diesen Befehl auszuführen (fehlendes Privileg: @1). +Invalid time.=Ungültige Zeit. +Time of day changed.=Tageszeit geändert. +Invalid hour (must be between 0 and 23 inclusive).=Ungültige Stunde (muss zwischen 0 und 23 inklusive liegen). +Invalid minute (must be between 0 and 59 inclusive).=Ungültige Minute (muss zwischen 0 und 59 inklusive liegen). +Show day count since world creation=Anzahl Tage seit der Erschaffung der Welt anzeigen +Current day is @1.=Aktueller Tag ist @1. +[<delay_in_seconds> | -1] [reconnect] [<message>]=[<Verzögerung_in_Sekunden> | -1] [reconnect] [<Nachricht>] +Shutdown server (-1 cancels a delayed shutdown)=Server herunterfahren (-1 bricht einen verzögerten Abschaltvorgang ab) +Server shutting down (operator request).=Server wird heruntergefahren (Betreiberanfrage). +Ban the IP of a player or show the ban list=Die IP eines Spielers verbannen oder die Bannliste anzeigen +The ban list is empty.=Die Bannliste ist leer. +Ban list: @1=Bannliste: @1 +Player is not online.=Spieler ist nicht online. +Failed to ban player.=Konnte Spieler nicht verbannen. +Banned @1.=@1 verbannt. +<name> | <IP_address>=<Name> | <IP_Adresse> +Remove IP ban belonging to a player/IP=Einen IP-Bann auf einen Spieler zurücknehmen +Failed to unban player/IP.=Konnte Bann auf Spieler/IP nicht zurücknehmen. +Unbanned @1.=Bann auf @1 zurückgenommen. +<name> [<reason>]=<Name> [<Grund>] +Kick a player=Spieler hinauswerfen +Failed to kick player @1.=Spieler @1 konnte nicht hinausgeworfen werden. +Kicked @1.=@1 hinausgeworfen. +[full | quick]=[full | quick] +Clear all objects in world=Alle Objekte in der Welt löschen +Invalid usage, see /help clearobjects.=Ungültige Verwendung, siehe /help clearobjects. +Clearing all objects. This may take a long time. You may experience a timeout. (by @1)=Lösche alle Objekte. Dies kann eine lange Zeit dauern. Eine Netzwerkzeitüberschreitung könnte für Sie auftreten. (von @1) +Objects cleared.=Objekte gelöscht. +Cleared all objects.=Alle Objekte gelöscht. +<name> <message>=<Name> <Nachricht> +Send a direct message to a player=Eine Direktnachricht an einen Spieler senden +Invalid usage, see /help msg.=Ungültige Verwendung, siehe /help msg. +The player @1 is not online.=Der Spieler @1 ist nicht online. +DM from @1: @2=DN von @1: @2 +Message sent.=Nachricht gesendet. +Get the last login time of a player or yourself=Den letzten Loginzeitpunkt eines Spielers oder Ihren eigenen anfragen +@1's last login time was @2.=Letzter Loginzeitpunkt von @1 war @2. +@1's last login time is unknown.=Letzter Loginzeitpunkt von @1 ist unbekannt. +Clear the inventory of yourself or another player=Das Inventar von Ihnen oder einem anderen Spieler leeren +You don't have permission to clear another player's inventory (missing privilege: @1).=Sie haben nicht die Erlaubnis, das Inventar eines anderen Spielers zu leeren (fehlendes Privileg: @1). +@1 cleared your inventory.=@1 hat Ihr Inventar geleert. +Cleared @1's inventory.=Inventar von @1 geleert. +Player must be online to clear inventory!=Spieler muss online sein, um das Inventar leeren zu können! +Players can't be killed, damage has been disabled.=Spieler können nicht getötet werden, Schaden ist deaktiviert. +Player @1 is not online.=Spieler @1 ist nicht online. +You are already dead.=Sie sind schon tot. +@1 is already dead.=@1 ist bereits tot. +@1 has been killed.=@1 wurde getötet. +Kill player or yourself=Einen Spieler oder Sie selbst töten +Available commands: @1=Verfügbare Befehle: @1 +Use '/help <cmd>' to get more information, or '/help all' to list everything.=„/help <Befehl>“ benutzen, um mehr Informationen zu erhalten, oder „/help all“, um alles aufzulisten. +Available commands:=Verfügbare Befehle: +Command not available: @1=Befehl nicht verfügbar: @1 +[all | privs | <cmd>]=[all | privs | <Befehl>] +Get help for commands or list privileges=Hilfe für Befehle erhalten oder Privilegien auflisten +Available privileges:=Verfügbare Privilegien: +Command=Befehl +Parameters=Parameter +For more information, click on any entry in the list.=Für mehr Informationen klicken Sie auf einen beliebigen Eintrag in der Liste. +Double-click to copy the entry to the chat history.=Doppelklicken, um den Eintrag in die Chathistorie einzufügen. +Command: @1 @2=Befehl: @1 @2 +Available commands: (see also: /help <cmd>)=Verfügbare Befehle: (siehe auch: /help <Befehl>) +Close=Schließen +Privilege=Privileg +Description=Beschreibung +print [<filter>] | dump [<filter>] | save [<format> [<filter>]] | reset=print [<Filter>] | dump [<Filter>] | save [<Format> [<Filter>]] +Handle the profiler and profiling data=Den Profiler und Profilingdaten verwalten +Statistics written to action log.=Statistiken zum Aktionsprotokoll geschrieben. +Statistics were reset.=Statistiken wurden zurückgesetzt. +Usage: @1=Verwendung: @1 +Format can be one of txt, csv, lua, json, json_pretty (structures may be subject to change).=Format kann entweder „txt“, „csv“, „lua“, „json“ oder „json_pretty“ sein (die Struktur kann sich in Zukunft ändern). +(no description)=(keine Beschreibung) +Can interact with things and modify the world=Kann mit Dingen interagieren und die Welt verändern +Can speak in chat=Kann im Chat sprechen +Can modify 'shout' and 'interact' privileges=Kann die „shout“- und „interact“-Privilegien anpassen +Can modify privileges=Kann Privilegien anpassen +Can teleport self=Kann sich selbst teleportieren +Can teleport other players=Kann andere Spieler teleportieren +Can set the time of day using /time=Kann die Tageszeit mit /time setzen +Can do server maintenance stuff=Kann Serverwartungsdinge machen +Can bypass node protection in the world=Kann den Schutz auf Blöcken in der Welt umgehen +Can ban and unban players=Kann Spieler verbannen und entbannen +Can kick players=Kann Spieler hinauswerfen +Can use /give and /giveme=Kann /give und /giveme benutzen +Can use /setpassword and /clearpassword=Kann /setpassword und /clearpassword benutzen +Can use fly mode=Kann den Flugmodus benutzen +Can use fast mode=Kann den Schnellmodus benutzen +Can fly through solid nodes using noclip mode=Kann durch feste Blöcke mit dem Geistmodus fliegen +Can use the rollback functionality=Kann die Rollback-Funktionalität benutzen +Allows enabling various debug options that may affect gameplay=Erlaubt die Aktivierung diverser Debugoptionen, die das Spielgeschehen beeinflussen könnten +Unknown Item=Unbekannter Gegenstand +Air=Luft +Ignore=Ignorieren +You can't place 'ignore' nodes!=Sie können keine „ignore“-Blöcke platzieren! diff --git a/builtin/locale/__builtin.it.tr b/builtin/locale/__builtin.it.tr new file mode 100644 index 000000000..94bc870c8 --- /dev/null +++ b/builtin/locale/__builtin.it.tr @@ -0,0 +1,224 @@ +# textdomain: __builtin +Empty command.=Comando vuoto. +Invalid command: @1=Comando non valido: @1 +Invalid command usage.=Utilizzo del comando non valido. +You don't have permission to run this command (missing privileges: @1).=Non hai il permesso di eseguire questo comando (privilegi mancanti: @1). +Unable to get position of player @1.=Impossibile ottenere la posizione del giocatore @1. +Incorrect area format. Expected: (x1,y1,z1) (x2,y2,z2)=Formato dell'area non corretto. Richiesto: (x1,y1,z1) (x2,y2,z2) +<action>=<azione> +Show chat action (e.g., '/me orders a pizza' displays '<player name> orders a pizza')=Mostra un'azione in chat (es. `/me ordina una pizza` mostra `<nome giocatore> ordina una pizza`) +Show the name of the server owner=Mostra il nome del proprietario del server +The administrator of this server is @1.=L'amministratore di questo server è @1. +There's no administrator named in the config file.=Non c'è nessun amministratore nel file di configurazione. +[<name>]=[<nome>] +Show privileges of yourself or another player=Mostra i privilegi propri o di un altro giocatore +Player @1 does not exist.=Il giocatore @1 non esiste. +Privileges of @1: @2=Privilegi di @1: @2 +<privilege>=<privilegio> +Return list of all online players with privilege=Ritorna una lista di tutti i giocatori connessi col tale privilegio +Invalid parameters (see /help haspriv).=Parametri non validi (vedi /help haspriv). +Unknown privilege!=Privilegio sconosciuto! +Players online with the "@1" privilege: @2=Giocatori connessi con il privilegio "@1": @2 +Your privileges are insufficient.=I tuoi privilegi sono insufficienti. +Unknown privilege: @1=Privilegio sconosciuto: @1 +@1 granted you privileges: @2=@1 ti ha assegnato i seguenti privilegi: @2 +<name> (<privilege> | all)=<nome> (<privilegio> | all) +Give privileges to player=Dà privilegi al giocatore +Invalid parameters (see /help grant).=Parametri non validi (vedi /help grant). +<privilege> | all=<privilegio> | all +Grant privileges to yourself=Assegna dei privilegi a te stessÇ +Invalid parameters (see /help grantme).=Parametri non validi (vedi /help grantme). +@1 revoked privileges from you: @2=@1 ti ha revocato i seguenti privilegi: @2 +Remove privileges from player=Rimuove privilegi dal giocatore +Invalid parameters (see /help revoke).=Parametri non validi (vedi /help revoke). +Revoke privileges from yourself=Revoca privilegi a te stessÇ +Invalid parameters (see /help revokeme).=Parametri non validi (vedi /help revokeme). +<name> <password>=<nome> <password> +Set player's password=Imposta la password del giocatore +Name field required.=Campo "nome" richiesto. +Your password was cleared by @1.=La tua password è stata resettata da @1. +Password of player "@1" cleared.=Password del giocatore "@1" resettata. +Your password was set by @1.=La tua password è stata impostata da @1. +Password of player "@1" set.=Password del giocatore "@1" impostata. +<name>=<nome> +Set empty password for a player=Imposta una password vuota a un giocatore +Reload authentication data=Ricarica i dati d'autenticazione +Done.=Fatto. +Failed.=Errore. +Remove a player's data=Rimuove i dati di un giocatore +Player "@1" removed.=Giocatore "@1" rimosso. +No such player "@1" to remove.=Non è presente nessun giocatore "@1" da rimuovere. +Player "@1" is connected, cannot remove.=Il giocatore "@1" è connesso, non può essere rimosso. +Unhandled remove_player return code @1.=Codice ritornato da remove_player non gestito (@1). +Cannot teleport out of map bounds!=Non ci si può teletrasportare fuori dai limiti della mappa! +Cannot get player with name @1.=Impossibile trovare il giocatore chiamato @1. +Cannot teleport, @1 is attached to an object!=Impossibile teletrasportare, @1 è attaccato a un oggetto! +Teleporting @1 to @2.=Teletrasportando @1 da @2. +One does not teleport to oneself.=Non ci si può teletrasportare su se stessi. +Cannot get teleportee with name @1.=Impossibile trovare il giocatore chiamato @1 per il teletrasporto +Cannot get target player with name @1.=Impossibile trovare il giocatore chiamato @1 per il teletrasporto +Teleporting @1 to @2 at @3.=Teletrasportando @1 da @2 a @3 +<X>,<Y>,<Z> | <to_name> | <name> <X>,<Y>,<Z> | <name> <to_name>=<X>,<Y>,<Z> | <da_nome> | <nome> <X>,<Y>,<Z> | <nome> <da_nome> +Teleport to position or player=Teletrasporta a una posizione o da un giocatore +You don't have permission to teleport other players (missing privilege: @1).=Non hai il permesso di teletrasportare altri giocatori (privilegio mancante: @1). +([-n] <name> <value>) | <name>=([-n] <nome> <valore>) | <nome> +Set or read server configuration setting=Imposta o ottieni le configurazioni del server +Failed. Use '/set -n <name> <value>' to create a new setting.=Errore. Usa 'set -n <nome> <valore>' per creare una nuova impostazione +@1 @= @2=@1 @= @2 +<not set>=<non impostato> +Invalid parameters (see /help set).=Parametri non validi (vedi /help set). +Finished emerging @1 blocks in @2ms.=Finito di emergere @1 blocchi in @2ms +emergeblocks update: @1/@2 blocks emerged (@3%)=aggiornamento emergeblocks: @1/@2 blocchi emersi (@3%) +(here [<radius>]) | (<pos1> <pos2>)=(here [<raggio>]) | (<pos1> <pos2>) +Load (or, if nonexistent, generate) map blocks contained in area pos1 to pos2 (<pos1> and <pos2> must be in parentheses)=Carica (o, se non esiste, genera) blocchi mappa contenuti nell'area tra pos1 e pos2 (<pos1> e <pos2> vanno tra parentesi) +Started emerge of area ranging from @1 to @2.=Iniziata emersione dell'area tra @1 e @2. +Delete map blocks contained in area pos1 to pos2 (<pos1> and <pos2> must be in parentheses)=Cancella i blocchi mappa contenuti nell'area tra pos1 e pos2 (<pos1> e <pos2> vanno tra parentesi) +Successfully cleared area ranging from @1 to @2.=Area tra @1 e @2 ripulita con successo. +Failed to clear one or more blocks in area.=Errore nel ripulire uno o più blocchi mappa nell'area +Resets lighting in the area between pos1 and pos2 (<pos1> and <pos2> must be in parentheses)=Reimposta l'illuminazione nell'area tra pos1 e po2 (<pos1> e <pos2> vanno tra parentesi) +Successfully reset light in the area ranging from @1 to @2.=Luce nell'area tra @1 e @2 reimpostata con successo. +Failed to load one or more blocks in area.=Errore nel caricare uno o più blocchi mappa nell'area. +List mods installed on the server=Elenca le mod installate nel server +Cannot give an empty item.=Impossibile dare un oggetto vuoto. +Cannot give an unknown item.=Impossibile dare un oggetto sconosciuto. +Giving 'ignore' is not allowed.=Non è permesso dare 'ignore'. +@1 is not a known player.=@1 non è un giocatore conosciuto. +@1 partially added to inventory.=@1 parzialmente aggiunto all'inventario. +@1 could not be added to inventory.=@1 non può essere aggiunto all'inventario. +@1 added to inventory.=@1 aggiunto all'inventario. +@1 partially added to inventory of @2.=@1 parzialmente aggiunto all'inventario di @2. +@1 could not be added to inventory of @2.=Non è stato possibile aggiungere @1 all'inventario di @2. +@1 added to inventory of @2.=@1 aggiunto all'inventario di @2. +<name> <ItemString> [<count> [<wear>]]=<nome> <NomeOggetto> [<quantità > [<usura>]] +Give item to player=Dà oggetti ai giocatori +Name and ItemString required.=Richiesti nome e NomeOggetto. +<ItemString> [<count> [<wear>]]=<NomeOggetto> [<quantità > [<usura>]] +Give item to yourself=Dà oggetti a te stessÇ +ItemString required.=Richiesto NomeOggetto. +<EntityName> [<X>,<Y>,<Z>]=<NomeEntità > [<X>,<Y>,<Z>] +Spawn entity at given (or your) position=Genera un'entità alla data coordinata (o la tua) +EntityName required.=Richiesto NomeEntità +Unable to spawn entity, player is nil.=Impossibile generare l'entità , il giocatore è nil. +Cannot spawn an unknown entity.=Impossibile generare un'entità sconosciuta. +Invalid parameters (@1).=Parametri non validi (@1). +@1 spawned.=Generata entità @1. +@1 failed to spawn.=Errore nel generare @1 +Destroy item in hand=Distrugge l'oggetto in mano +Unable to pulverize, no player.=Impossibile polverizzare, nessun giocatore. +Unable to pulverize, no item in hand.=Impossibile polverizzare, nessun oggetto in mano. +An item was pulverized.=Un oggetto è stato polverizzato. +[<range>] [<seconds>] [<limit>]=[<raggio>] [<secondi>] [<limite>] +Check who last touched a node or a node near it within the time specified by <seconds>. Default: range @= 0, seconds @= 86400 @= 24h, limit @= 5. Set <seconds> to inf for no time limit=Controlla chi è l'ultimo giocatore che ha toccato un nodo o un nodo nelle sue vicinanze, negli ultimi secondi indicati. Di base: raggio @= 0, secondi @= 86400 @= 24h, limite @= 5. +Rollback functions are disabled.=Le funzioni di rollback sono disabilitate. +That limit is too high!=Il limite è troppo alto! +Checking @1 ...=Controllando @1 ... +Nobody has touched the specified location in @1 seconds.=Nessuno ha toccato il punto specificato negli ultimi @1 secondi. +@1 @2 @3 -> @4 @5 seconds ago.=@1 @2 @3 -> @4 @5 secondi fa. +Punch a node (range@=@1, seconds@=@2, limit@=@3).=Colpisce un nodo (raggio@=@1, secondi@=@2, limite@=@3) +(<name> [<seconds>]) | (:<actor> [<seconds>])=(<nome> [<secondi>]) | (:<attore> [<secondi>]) +Revert actions of a player. Default for <seconds> is 60. Set <seconds> to inf for no time limit=Riavvolge le azioni di un giocatore. Di base, <secondi> è 60. Imposta <secondi> a inf per nessun limite di tempo +Invalid parameters. See /help rollback and /help rollback_check.=Parametri non validi. Vedi /help rollback e /help rollback_check. +Reverting actions of player '@1' since @2 seconds.=Riavvolge le azioni del giocatore '@1' avvenute negli ultimi @2 secondi. +Reverting actions of @1 since @2 seconds.=Riavvolge le azioni di @1 avvenute negli ultimi @2 secondi. +(log is too long to show)=(il log è troppo lungo per essere mostrato) +Reverting actions succeeded.=Riavvolgimento azioni avvenuto con successo. +Reverting actions FAILED.=Errore nel riavvolgere le azioni. +Show server status=Mostra lo stato del server +This command was disabled by a mod or game.=Questo comando è stato disabilitato da una mod o dal gioco. +[<0..23>:<0..59> | <0..24000>]=[<0..23>:<0..59> | <0..24000>] +Show or set time of day=Mostra o imposta l'orario della giornata +Current time is @1:@2.=Orario corrente: @1:@2. +You don't have permission to run this command (missing privilege: @1).=Non hai il permesso di eseguire questo comando (privilegio mancante: @1) +Invalid time.=Orario non valido. +Time of day changed.=Orario della giornata cambiato. +Invalid hour (must be between 0 and 23 inclusive).=Ora non valida (deve essere tra 0 e 23 inclusi) +Invalid minute (must be between 0 and 59 inclusive).=Minuto non valido (deve essere tra 0 e 59 inclusi) +Show day count since world creation=Mostra il conteggio dei giorni da quando il mondo è stato creato +Current day is @1.=Giorno attuale: @1. +[<delay_in_seconds> | -1] [reconnect] [<message>]=[<ritardo_in_secondi> | -1] [reconnect] [<messaggio>] +Shutdown server (-1 cancels a delayed shutdown)=Arresta il server (-1 annulla un arresto programmato) +Server shutting down (operator request).=Arresto del server in corso (per richiesta dell'operatore) +Ban the IP of a player or show the ban list=Bandisce l'IP del giocatore o mostra la lista di quelli banditi +The ban list is empty.=La lista banditi è vuota. +Ban list: @1=Lista banditi: @1 +Player is not online.=Il giocatore non è connesso. +Failed to ban player.=Errore nel bandire il giocatore. +Banned @1.=@1 banditÇ. +<name> | <IP_address>=<nome> | <indirizzo_IP> +Remove IP ban belonging to a player/IP=Perdona l'IP appartenente a un giocatore/IP +Failed to unban player/IP.=Errore nel perdonare il giocatore/IP +Unbanned @1.=@1 perdonatÇ +<name> [<reason>]=<nome> [<ragione>] +Kick a player=Caccia un giocatore +Failed to kick player @1.=Errore nel cacciare il giocatore @1. +Kicked @1.=@1 cacciatÇ. +[full | quick]=[full | quick] +Clear all objects in world=Elimina tutti gli oggetti/entità nel mondo +Invalid usage, see /help clearobjects.=Uso incorretto, vedi /help clearobjects. +Clearing all objects. This may take a long time. You may experience a timeout. (by @1)=Eliminando tutti gli oggetti/entità . Questo potrebbe richiedere molto tempo e farti eventualmente crashare. (di @1) +Cleared all objects.=Tutti gli oggetti sono stati eliminati. +<name> <message>=<nome> <messaggio> +Send a direct message to a player=Invia un messaggio privato al giocatore +Invalid usage, see /help msg.=Uso incorretto, vedi /help msg +The player @1 is not online.=Il giocatore @1 non è connesso. +DM from @1: @2=Messaggio privato da @1: @2 +Message sent.=Messaggio inviato. +Get the last login time of a player or yourself=Ritorna l'ultimo accesso di un giocatore o di te stessÇ +@1's last login time was @2.=L'ultimo accesso di @1 è avvenuto il @2 +@1's last login time is unknown.=L'ultimo accesso di @1 non è conosciuto +Clear the inventory of yourself or another player=Svuota l'inventario tuo o di un altro giocatore +You don't have permission to clear another player's inventory (missing privilege: @1).=Non hai il permesso di svuotare l'inventario di un altro giocatore (privilegio mancante: @1). +@1 cleared your inventory.=@1 ha svuotato il tuo inventario. +Cleared @1's inventory.=L'inventario di @1 è stato svuotato. +Player must be online to clear inventory!=Il giocatore deve essere connesso per svuotarne l'inventario! +Players can't be killed, damage has been disabled.=I giocatori non possono essere uccisi, il danno è disabilitato. +Player @1 is not online.=Il giocatore @1 non è connesso. +You are already dead.=Sei già mortÇ. +@1 is already dead.=@1 è già mortÇ. +@1 has been killed.=@1 è stato uccisÇ. +Kill player or yourself=Uccide un giocatore o te stessÇ +Available commands: @1=Comandi disponibili: @1 +Use '/help <cmd>' to get more information, or '/help all' to list everything.=Usa '/help <comando>' per ottenere più informazioni, o '/help all' per elencare tutti i comandi. +Available commands:=Comandi disponibili: +Command not available: @1=Comando non disponibile: @1 +[all | privs | <cmd>]=[all | privs | <comando>] +Get help for commands or list privileges=Richiama la finestra d'aiuto dei comandi o dei privilegi +Available privileges:=Privilegi disponibili: +Command=Comando +Parameters=Parametri +For more information, click on any entry in the list.=Per più informazioni, clicca su una qualsiasi voce dell'elenco. +Double-click to copy the entry to the chat history.=Doppio click per copiare la voce nella cronologia della chat. +Command: @1 @2=Comando: @1 @2 +Available commands: (see also: /help <cmd>)=Comandi disponibili: (vedi anche /help <comando>) +Close=Chiudi +Privilege=Privilegio +Description=Descrizione +print [<filter>] | dump [<filter>] | save [<format> [<filter>]] | reset=print [<filtro>] | dump [<filtro>] | save [<formato> [<filtro>]] | reset +Handle the profiler and profiling data=Gestisce il profiler e i dati da esso elaborati +Statistics written to action log.=Statistiche scritte nel log delle azioni. +Statistics were reset.=Le statistiche sono state resettate. +Usage: @1=Utilizzo: @1 +Format can be one of txt, csv, lua, json, json_pretty (structures may be subject to change).=I formati supportati sono txt, csv, lua, json e json_pretty (le strutture potrebbero essere soggetti a cambiamenti). +(no description)=(nessuna descrizione) +Can interact with things and modify the world=Si può interagire con le cose e modificare il mondo +Can speak in chat=Si può parlare in chat +Can modify 'shout' and 'interact' privileges=Si possono modificare i privilegi 'shout' e 'interact' +Can modify privileges=Si possono modificare i privilegi +Can teleport self=Si può teletrasportare se stessз +Can teleport other players=Si possono teletrasportare gli altri giocatori +Can set the time of day using /time=Si può impostate l'orario della giornata tramite /time +Can do server maintenance stuff=Si possono eseguire operazioni di manutenzione del server +Can bypass node protection in the world=Si può aggirare la protezione dei nodi nel mondo +Can ban and unban players=Si possono bandire e perdonare i giocatori +Can kick players=Si possono cacciare i giocatori +Can use /give and /giveme=Si possono usare /give e /give me +Can use /setpassword and /clearpassword=Si possono usare /setpassword e /clearpassword +Can use fly mode=Si può usare la modalità volo +Can use fast mode=Si può usare la modalità rapida +Can fly through solid nodes using noclip mode=Si può volare attraverso i nodi solidi con la modalità incorporea +Can use the rollback functionality=Si può usare la funzione di rollback +Allows enabling various debug options that may affect gameplay=Permette di abilitare varie opzioni di debug che potrebbero influenzare l'esperienza di gioco +Unknown Item=Oggetto sconosciuto +Air=Aria +Ignore=Ignora +You can't place 'ignore' nodes!=Non puoi piazzare nodi 'ignore'! diff --git a/builtin/locale/template.txt b/builtin/locale/template.txt new file mode 100644 index 000000000..c5ace1a2f --- /dev/null +++ b/builtin/locale/template.txt @@ -0,0 +1,224 @@ +# textdomain: __builtin +Empty command.= +Invalid command: @1= +Invalid command usage.= +You don't have permission to run this command (missing privileges: @1).= +Unable to get position of player @1.= +Incorrect area format. Expected: (x1,y1,z1) (x2,y2,z2)= +<action>= +Show chat action (e.g., '/me orders a pizza' displays '<player name> orders a pizza')= +Show the name of the server owner= +The administrator of this server is @1.= +There's no administrator named in the config file.= +[<name>]= +Show privileges of yourself or another player= +Player @1 does not exist.= +Privileges of @1: @2= +<privilege>= +Return list of all online players with privilege= +Invalid parameters (see /help haspriv).= +Unknown privilege!= +Players online with the "@1" privilege: @2= +Your privileges are insufficient.= +Unknown privilege: @1= +@1 granted you privileges: @2= +<name> (<privilege> | all)= +Give privileges to player= +Invalid parameters (see /help grant).= +<privilege> | all= +Grant privileges to yourself= +Invalid parameters (see /help grantme).= +@1 revoked privileges from you: @2= +Remove privileges from player= +Invalid parameters (see /help revoke).= +Revoke privileges from yourself= +Invalid parameters (see /help revokeme).= +<name> <password>= +Set player's password= +Name field required.= +Your password was cleared by @1.= +Password of player "@1" cleared.= +Your password was set by @1.= +Password of player "@1" set.= +<name>= +Set empty password for a player= +Reload authentication data= +Done.= +Failed.= +Remove a player's data= +Player "@1" removed.= +No such player "@1" to remove.= +Player "@1" is connected, cannot remove.= +Unhandled remove_player return code @1.= +Cannot teleport out of map bounds!= +Cannot get player with name @1.= +Cannot teleport, @1 is attached to an object!= +Teleporting @1 to @2.= +One does not teleport to oneself.= +Cannot get teleportee with name @1.= +Cannot get target player with name @1.= +Teleporting @1 to @2 at @3.= +<X>,<Y>,<Z> | <to_name> | <name> <X>,<Y>,<Z> | <name> <to_name>= +Teleport to position or player= +You don't have permission to teleport other players (missing privilege: @1).= +([-n] <name> <value>) | <name>= +Set or read server configuration setting= +Failed. Use '/set -n <name> <value>' to create a new setting.= +@1 @= @2= +<not set>= +Invalid parameters (see /help set).= +Finished emerging @1 blocks in @2ms.= +emergeblocks update: @1/@2 blocks emerged (@3%)= +(here [<radius>]) | (<pos1> <pos2>)= +Load (or, if nonexistent, generate) map blocks contained in area pos1 to pos2 (<pos1> and <pos2> must be in parentheses)= +Started emerge of area ranging from @1 to @2.= +Delete map blocks contained in area pos1 to pos2 (<pos1> and <pos2> must be in parentheses)= +Successfully cleared area ranging from @1 to @2.= +Failed to clear one or more blocks in area.= +Resets lighting in the area between pos1 and pos2 (<pos1> and <pos2> must be in parentheses)= +Successfully reset light in the area ranging from @1 to @2.= +Failed to load one or more blocks in area.= +List mods installed on the server= +Cannot give an empty item.= +Cannot give an unknown item.= +Giving 'ignore' is not allowed.= +@1 is not a known player.= +@1 partially added to inventory.= +@1 could not be added to inventory.= +@1 added to inventory.= +@1 partially added to inventory of @2.= +@1 could not be added to inventory of @2.= +@1 added to inventory of @2.= +<name> <ItemString> [<count> [<wear>]]= +Give item to player= +Name and ItemString required.= +<ItemString> [<count> [<wear>]]= +Give item to yourself= +ItemString required.= +<EntityName> [<X>,<Y>,<Z>]= +Spawn entity at given (or your) position= +EntityName required.= +Unable to spawn entity, player is nil.= +Cannot spawn an unknown entity.= +Invalid parameters (@1).= +@1 spawned.= +@1 failed to spawn.= +Destroy item in hand= +Unable to pulverize, no player.= +Unable to pulverize, no item in hand.= +An item was pulverized.= +[<range>] [<seconds>] [<limit>]= +Check who last touched a node or a node near it within the time specified by <seconds>. Default: range @= 0, seconds @= 86400 @= 24h, limit @= 5. Set <seconds> to inf for no time limit= +Rollback functions are disabled.= +That limit is too high!= +Checking @1 ...= +Nobody has touched the specified location in @1 seconds.= +@1 @2 @3 -> @4 @5 seconds ago.= +Punch a node (range@=@1, seconds@=@2, limit@=@3).= +(<name> [<seconds>]) | (:<actor> [<seconds>])= +Revert actions of a player. Default for <seconds> is 60. Set <seconds> to inf for no time limit= +Invalid parameters. See /help rollback and /help rollback_check.= +Reverting actions of player '@1' since @2 seconds.= +Reverting actions of @1 since @2 seconds.= +(log is too long to show)= +Reverting actions succeeded.= +Reverting actions FAILED.= +Show server status= +This command was disabled by a mod or game.= +[<0..23>:<0..59> | <0..24000>]= +Show or set time of day= +Current time is @1:@2.= +You don't have permission to run this command (missing privilege: @1).= +Invalid time.= +Time of day changed.= +Invalid hour (must be between 0 and 23 inclusive).= +Invalid minute (must be between 0 and 59 inclusive).= +Show day count since world creation= +Current day is @1.= +[<delay_in_seconds> | -1] [reconnect] [<message>]= +Shutdown server (-1 cancels a delayed shutdown)= +Server shutting down (operator request).= +Ban the IP of a player or show the ban list= +The ban list is empty.= +Ban list: @1= +Player is not online.= +Failed to ban player.= +Banned @1.= +<name> | <IP_address>= +Remove IP ban belonging to a player/IP= +Failed to unban player/IP.= +Unbanned @1.= +<name> [<reason>]= +Kick a player= +Failed to kick player @1.= +Kicked @1.= +[full | quick]= +Clear all objects in world= +Invalid usage, see /help clearobjects.= +Clearing all objects. This may take a long time. You may experience a timeout. (by @1)= +Cleared all objects.= +<name> <message>= +Send a direct message to a player= +Invalid usage, see /help msg.= +The player @1 is not online.= +DM from @1: @2= +Message sent.= +Get the last login time of a player or yourself= +@1's last login time was @2.= +@1's last login time is unknown.= +Clear the inventory of yourself or another player= +You don't have permission to clear another player's inventory (missing privilege: @1).= +@1 cleared your inventory.= +Cleared @1's inventory.= +Player must be online to clear inventory!= +Players can't be killed, damage has been disabled.= +Player @1 is not online.= +You are already dead.= +@1 is already dead.= +@1 has been killed.= +Kill player or yourself= +Available commands: @1= +Use '/help <cmd>' to get more information, or '/help all' to list everything.= +Available commands:= +Command not available: @1= +[all | privs | <cmd>]= +Get help for commands or list privileges= +Available privileges:= +Command= +Parameters= +For more information, click on any entry in the list.= +Double-click to copy the entry to the chat history.= +Command: @1 @2= +Available commands: (see also: /help <cmd>)= +Close= +Privilege= +Description= +print [<filter>] | dump [<filter>] | save [<format> [<filter>]] | reset= +Handle the profiler and profiling data= +Statistics written to action log.= +Statistics were reset.= +Usage: @1= +Format can be one of txt, csv, lua, json, json_pretty (structures may be subject to change).= +(no description)= +Can interact with things and modify the world= +Can speak in chat= +Can modify 'shout' and 'interact' privileges= +Can modify privileges= +Can teleport self= +Can teleport other players= +Can set the time of day using /time= +Can do server maintenance stuff= +Can bypass node protection in the world= +Can ban and unban players= +Can kick players= +Can use /give and /giveme= +Can use /setpassword and /clearpassword= +Can use fly mode= +Can use fast mode= +Can fly through solid nodes using noclip mode= +Can use the rollback functionality= +Allows enabling various debug options that may affect gameplay= +Unknown Item= +Air= +Ignore= +You can't place 'ignore' nodes!= diff --git a/builtin/mainmenu/common.lua b/builtin/mainmenu/common.lua index cd896f9ec..6db351048 100644 --- a/builtin/mainmenu/common.lua +++ b/builtin/mainmenu/common.lua @@ -14,14 +14,11 @@ --You should have received a copy of the GNU Lesser General Public License along --with this program; if not, write to the Free Software Foundation, Inc., --51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. --------------------------------------------------------------------------------- + -- Global menu data --------------------------------------------------------------------------------- menudata = {} --------------------------------------------------------------------------------- -- Local cached values --------------------------------------------------------------------------------- local min_supp_proto, max_supp_proto function common_update_cached_supp_proto() @@ -29,14 +26,12 @@ function common_update_cached_supp_proto() max_supp_proto = core.get_max_supp_proto() end common_update_cached_supp_proto() --------------------------------------------------------------------------------- + -- Menu helper functions --------------------------------------------------------------------------------- --------------------------------------------------------------------------------- local function render_client_count(n) - if n > 99 then return '99+' - elseif n >= 0 then return tostring(n) + if n > 999 then return '99+' + elseif n >= 0 then return tostring(n) else return '?' end end @@ -50,21 +45,7 @@ local function configure_selected_world_params(idx) end end --------------------------------------------------------------------------------- -function image_column(tooltip, flagname) - return "image,tooltip=" .. core.formspec_escape(tooltip) .. "," .. - "0=" .. core.formspec_escape(defaulttexturedir .. "blank.png") .. "," .. - "1=" .. core.formspec_escape(defaulttexturedir .. - (flagname and "server_flags_" .. flagname .. ".png" or "blank.png")) .. "," .. - "2=" .. core.formspec_escape(defaulttexturedir .. "server_ping_4.png") .. "," .. - "3=" .. core.formspec_escape(defaulttexturedir .. "server_ping_3.png") .. "," .. - "4=" .. core.formspec_escape(defaulttexturedir .. "server_ping_2.png") .. "," .. - "5=" .. core.formspec_escape(defaulttexturedir .. "server_ping_1.png") -end - - --------------------------------------------------------------------------------- -function render_serverlist_row(spec, is_favorite) +function render_serverlist_row(spec) local text = "" if spec.name then text = text .. core.formspec_escape(spec.name:trim()) @@ -75,31 +56,29 @@ function render_serverlist_row(spec, is_favorite) end end - local grey_out = not is_server_protocol_compat(spec.proto_min, spec.proto_max) + local grey_out = not spec.is_compatible - local details - if is_favorite then - details = "1," - else - details = "0," - end + local details = {} - if spec.ping then - local ping = spec.ping * 1000 - if ping <= 50 then - details = details .. "2," - elseif ping <= 100 then - details = details .. "3," - elseif ping <= 250 then - details = details .. "4," + if spec.lag or spec.ping then + local lag = (spec.lag or 0) * 1000 + (spec.ping or 0) * 250 + if lag <= 125 then + table.insert(details, "1") + elseif lag <= 175 then + table.insert(details, "2") + elseif lag <= 250 then + table.insert(details, "3") else - details = details .. "5," + table.insert(details, "4") end else - details = details .. "0," + table.insert(details, "0") end - if spec.clients and spec.clients_max then + table.insert(details, ",") + + local color = (grey_out and "#aaaaaa") or ((spec.is_favorite and "#ddddaa") or "#ffffff") + if spec.clients and (spec.clients_max or 0) > 0 then local clients_percent = 100 * spec.clients / spec.clients_max -- Choose a color depending on how many clients are connected @@ -110,38 +89,35 @@ function render_serverlist_row(spec, is_favorite) elseif clients_percent <= 60 then clients_color = '#a1e587' -- 0-60%: green elseif clients_percent <= 90 then clients_color = '#ffdc97' -- 60-90%: yellow elseif clients_percent == 100 then clients_color = '#dd5b5b' -- full server: red (darker) - else clients_color = '#ffba97' -- 90-100%: orange + else clients_color = '#ffba97' -- 90-100%: orange end - details = details .. clients_color .. ',' .. - render_client_count(spec.clients) .. ',/,' .. - render_client_count(spec.clients_max) .. ',' - - elseif grey_out then - details = details .. '#aaaaaa,?,/,?,' + table.insert(details, clients_color) + table.insert(details, render_client_count(spec.clients) .. " / " .. + render_client_count(spec.clients_max)) else - details = details .. ',?,/,?,' + table.insert(details, color) + table.insert(details, "?") end if spec.creative then - details = details .. "1," - else - details = details .. "0," - end - - if spec.damage then - details = details .. "1," + table.insert(details, "1") -- creative icon else - details = details .. "0," + table.insert(details, "0") end if spec.pvp then - details = details .. "1," + table.insert(details, "2") -- pvp icon + elseif spec.damage then + table.insert(details, "1") -- heart icon else - details = details .. "0," + table.insert(details, "0") end - return details .. (grey_out and '#aaaaaa,' or ',') .. text + table.insert(details, color) + table.insert(details, text) + + return table.concat(details, ",") end -------------------------------------------------------------------------------- @@ -150,14 +126,13 @@ os.tempfolder = function() return temp .. DIR_DELIM .. "MT_" .. math.random(0, 10000) end --------------------------------------------------------------------------------- os.tmpname = function() local path = os.tempfolder() io.open(path, "w"):close() return path end - -------------------------------------------------------------------------------- + function menu_render_worldlist() local retval = "" local current_worldlist = menudata.worldlist:get_list() @@ -171,7 +146,6 @@ function menu_render_worldlist() return retval end --------------------------------------------------------------------------------- function menu_handle_key_up_down(fields, textlist, settingname) local oldidx, newidx = core.get_textlist_index(textlist), 1 if fields.key_up or fields.key_down then @@ -188,7 +162,6 @@ function menu_handle_key_up_down(fields, textlist, settingname) return false end --------------------------------------------------------------------------------- function text2textlist(xpos, ypos, width, height, tl_name, textlen, text, transparency) local textlines = core.wrap_text(text, textlen, true) local retval = "textlist[" .. xpos .. "," .. ypos .. ";" .. width .. @@ -206,7 +179,6 @@ function text2textlist(xpos, ypos, width, height, tl_name, textlen, text, transp return retval end --------------------------------------------------------------------------------- function is_server_protocol_compat(server_proto_min, server_proto_max) if (not server_proto_min) or (not server_proto_max) then -- There is no info. Assume the best and act as if we would be compatible. @@ -214,7 +186,7 @@ function is_server_protocol_compat(server_proto_min, server_proto_max) end return min_supp_proto <= server_proto_max and max_supp_proto >= server_proto_min end --------------------------------------------------------------------------------- + function is_server_protocol_compat_or_error(server_proto_min, server_proto_max) if not is_server_protocol_compat(server_proto_min, server_proto_max) then local server_prot_ver_info, client_prot_ver_info @@ -242,7 +214,7 @@ function is_server_protocol_compat_or_error(server_proto_min, server_proto_max) return true end --------------------------------------------------------------------------------- + function menu_worldmt(selected, setting, value) local world = menudata.worldlist:get_list()[selected] if world then diff --git a/builtin/mainmenu/dlg_config_world.lua b/builtin/mainmenu/dlg_config_world.lua index 2cf70c9c9..9bdf92a74 100644 --- a/builtin/mainmenu/dlg_config_world.lua +++ b/builtin/mainmenu/dlg_config_world.lua @@ -74,7 +74,7 @@ local function get_formspec(data) "label[1.75,0;" .. data.worldspec.name .. "]" if mod.is_modpack or mod.type == "game" then - local info = minetest.formspec_escape( + local info = core.formspec_escape( core.get_content_info(mod.path).description) if info == "" then if mod.is_modpack then diff --git a/builtin/mainmenu/dlg_contentstore.lua b/builtin/mainmenu/dlg_contentstore.lua index 7328f3358..b0736a4fd 100644 --- a/builtin/mainmenu/dlg_contentstore.lua +++ b/builtin/mainmenu/dlg_contentstore.lua @@ -15,7 +15,7 @@ --with this program; if not, write to the Free Software Foundation, Inc., --51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -if not minetest.get_http_api then +if not core.get_http_api then function create_store_dlg() return messagebox("store", fgettext("ContentDB is not available when Minetest was compiled without cURL")) @@ -27,7 +27,7 @@ end -- before the package list is ordered based on installed state. local store = { packages = {}, packages_full = {}, packages_full_unordered = {} } -local http = minetest.get_http_api() +local http = core.get_http_api() -- Screenshot local screenshot_dir = core.get_cache_path() .. DIR_DELIM .. "cdb" @@ -152,7 +152,7 @@ local function start_install(package) end local function queue_download(package) - local max_concurrent_downloads = tonumber(minetest.settings:get("contentdb_max_concurrent_downloads")) + local max_concurrent_downloads = tonumber(core.settings:get("contentdb_max_concurrent_downloads")) if number_downloading < max_concurrent_downloads then start_install(package) else @@ -320,7 +320,7 @@ function install_dialog.get_formspec() selected_game_idx = i end - games[i] = minetest.formspec_escape(games[i].name) + games[i] = core.formspec_escape(games[i].name) end local selected_game = pkgmgr.games[selected_game_idx] @@ -331,7 +331,7 @@ function install_dialog.get_formspec() local formatted_deps = {} for _, dep in pairs(install_dialog.dependencies) do formatted_deps[#formatted_deps + 1] = "#fff" - formatted_deps[#formatted_deps + 1] = minetest.formspec_escape(dep.name) + formatted_deps[#formatted_deps + 1] = core.formspec_escape(dep.name) if dep.installed then formatted_deps[#formatted_deps + 1] = "#ccf" formatted_deps[#formatted_deps + 1] = fgettext("Already installed") @@ -402,7 +402,7 @@ function install_dialog.handle_submit(this, fields) end if fields.will_install_deps ~= nil then - install_dialog.will_install_deps = minetest.is_yes(fields.will_install_deps) + install_dialog.will_install_deps = core.is_yes(fields.will_install_deps) return true end @@ -553,7 +553,7 @@ function store.load() end end - local timeout = tonumber(minetest.settings:get("curl_file_download_timeout")) + local timeout = tonumber(core.settings:get("curl_file_download_timeout")) local response = http.fetch_sync({ url = url, timeout = timeout }) if not response.succeeded then return @@ -793,8 +793,8 @@ function store.get_formspec(dlgdata) -- title formspec[#formspec + 1] = "label[1.875,0.1;" formspec[#formspec + 1] = core.formspec_escape( - minetest.colorize(mt_color_green, package.title) .. - minetest.colorize("#BFBFBF", " by " .. package.author)) + core.colorize(mt_color_green, package.title) .. + core.colorize("#BFBFBF", " by " .. package.author)) formspec[#formspec + 1] = "]" -- buttons diff --git a/builtin/mainmenu/dlg_create_world.lua b/builtin/mainmenu/dlg_create_world.lua index 5931496c1..1938747fe 100644 --- a/builtin/mainmenu/dlg_create_world.lua +++ b/builtin/mainmenu/dlg_create_world.lua @@ -443,7 +443,7 @@ local function create_world_buttonhandler(this, fields) end if fields["mgv6_biomes"] then - local entry = minetest.formspec_escape(fields["mgv6_biomes"]) + local entry = core.formspec_escape(fields["mgv6_biomes"]) for b=1, #mgv6_biomes do if entry == mgv6_biomes[b][1] then local ftable = core.settings:get_flags("mgv6_spflags") diff --git a/builtin/mainmenu/pkgmgr.lua b/builtin/mainmenu/pkgmgr.lua index bfb5d269a..787936e31 100644 --- a/builtin/mainmenu/pkgmgr.lua +++ b/builtin/mainmenu/pkgmgr.lua @@ -90,7 +90,7 @@ local function load_texture_packs(txtpath, retval) retval[#retval + 1] = { name = item, author = conf:get("author"), - release = tonumber(conf:get("release") or "0"), + release = tonumber(conf:get("release")) or 0, list_name = name, type = "txp", path = path, @@ -135,7 +135,7 @@ function get_mods(path,retval,modpack) -- Read from config toadd.name = name toadd.author = mod_conf.author - toadd.release = tonumber(mod_conf.release or "0") + toadd.release = tonumber(mod_conf.release) or 0 toadd.path = prefix toadd.type = "mod" @@ -413,18 +413,7 @@ function pkgmgr.is_modpack_entirely_enabled(data, name) end ---------- toggles or en/disables a mod or modpack and its dependencies -------- -function pkgmgr.enable_mod(this, toset) - local list = this.data.list:get_list() - local mod = list[this.data.selected_mod] - - -- Game mods can't be enabled or disabled - if mod.is_game_content then - return - end - - local toggled_mods = {} - - local enabled_mods = {} +local function toggle_mod_or_modpack(list, toggled_mods, enabled_mods, toset, mod) if not mod.is_modpack then -- Toggle or en/disable the mod if toset == nil then @@ -443,23 +432,29 @@ function pkgmgr.enable_mod(this, toset) -- interleaved unsupported for i = 1, #list do if list[i].modpack == mod.name then - if toset == nil then - toset = not list[i].enabled - end - if list[i].enabled ~= toset then - list[i].enabled = toset - toggled_mods[#toggled_mods+1] = list[i].name - end - if toset then - enabled_mods[list[i].name] = true - end + toggle_mod_or_modpack(list, toggled_mods, enabled_mods, toset, list[i]) end end end +end + +function pkgmgr.enable_mod(this, toset) + local list = this.data.list:get_list() + local mod = list[this.data.selected_mod] + + -- Game mods can't be enabled or disabled + if mod.is_game_content then + return + end + + local toggled_mods = {} + local enabled_mods = {} + toggle_mod_or_modpack(list, toggled_mods, enabled_mods, toset, mod) + if not toset then -- Mod(s) were disabled, so no dependencies need to be enabled table.sort(toggled_mods) - minetest.log("info", "Following mods were disabled: " .. + core.log("info", "Following mods were disabled: " .. table.concat(toggled_mods, ", ")) return end @@ -496,7 +491,7 @@ function pkgmgr.enable_mod(this, toset) enabled_mods[name] = true local mod_to_enable = list[mod_ids[name]] if not mod_to_enable then - minetest.log("warning", "Mod dependency \"" .. name .. + core.log("warning", "Mod dependency \"" .. name .. "\" not found!") else if mod_to_enable.enabled == false then @@ -517,7 +512,7 @@ function pkgmgr.enable_mod(this, toset) -- Log the list of enabled mods table.sort(toggled_mods) - minetest.log("info", "Following mods were enabled: " .. + core.log("info", "Following mods were enabled: " .. table.concat(toggled_mods, ", ")) end diff --git a/builtin/mainmenu/serverlistmgr.lua b/builtin/mainmenu/serverlistmgr.lua index d98736e54..9876d8ac5 100644 --- a/builtin/mainmenu/serverlistmgr.lua +++ b/builtin/mainmenu/serverlistmgr.lua @@ -47,6 +47,15 @@ function serverlistmgr.sync() }} end + local serverlist_url = core.settings:get("serverlist_url") or "" + if not core.get_http_api or serverlist_url == "" then + serverlistmgr.servers = {{ + name = fgettext("Public server list is disabled"), + description = "" + }} + return + end + if public_downloading then return end diff --git a/builtin/mainmenu/tab_content.lua b/builtin/mainmenu/tab_content.lua index 336730bf4..fb7f121f8 100644 --- a/builtin/mainmenu/tab_content.lua +++ b/builtin/mainmenu/tab_content.lua @@ -146,10 +146,25 @@ local function get_formspec(tabview, name, tabdata) end -------------------------------------------------------------------------------- +local function handle_doubleclick(pkg) + if pkg.type == "txp" then + if core.settings:get("texture_path") == pkg.path then + core.settings:set("texture_path", "") + else + core.settings:set("texture_path", pkg.path) + end + packages = nil + end +end + +-------------------------------------------------------------------------------- local function handle_buttons(tabview, fields, tabname, tabdata) if fields["pkglist"] ~= nil then local event = core.explode_table_event(fields["pkglist"]) tabdata.selected_pkg = event.row + if event.type == "DCL" then + handle_doubleclick(packages:get_list()[tabdata.selected_pkg]) + end return true end diff --git a/builtin/mainmenu/tab_credits.lua b/builtin/mainmenu/tab_credits.lua index 075274798..a34dd58bb 100644 --- a/builtin/mainmenu/tab_credits.lua +++ b/builtin/mainmenu/tab_credits.lua @@ -23,28 +23,37 @@ local core_developers = { "Nathanaël Courant (Nore/Ekdohibs) <nore@mesecons.net>", "Loic Blot (nerzhul/nrz) <loic.blot@unix-experience.fr>", "paramat", - "Auke Kok (sofar) <sofar@foo-projects.org>", "Andrew Ward (rubenwardy) <rw@rubenwardy.com>", "Krock/SmallJoker <mk939@ymail.com>", "Lars Hofhansl <larsh@apache.org>", + "Pierre-Yves Rollo <dev@pyrollo.com>", + "v-rob <robinsonvincent89@gmail.com>", } +-- For updating active/previous contributors, see the script in ./util/gather_git_credits.py + local active_contributors = { - "Hugues Ross [Formspecs]", + "Wuzzy [devtest game, visual corrections]", + "Zughy [Visual improvements, various fixes]", "Maksim (MoNTE48) [Android]", - "DS [Formspecs]", - "pyrollo [Formspecs: Hypertext]", - "v-rob [Formspecs]", - "Jordach [set_sky]", - "random-geek [Formspecs]", - "Wuzzy [Pathfinder, builtin, translations]", - "ANAND (ClobberXD) [Fixes, per-player FOV]", - "Warr1024 [Fixes]", - "Paul Ouellette (pauloue) [Fixes, Script API]", - "Jean-Patrick G (kilbith) <jeanpatrick.guerrero@gmail.com> [Audiovisuals]", - "HybridDog [Script API]", + "numzero [Graphics and rendering]", + "appgurueu [Various internal fixes]", + "Desour [Formspec and vector API changes]", + "HybridDog [Rendering fixes and documentation]", + "Hugues Ross [Graphics-related improvements]", + "ANAND (ClobberXD) [Mouse buttons rebinding]", + "luk3yx [Fixes]", + "hecks [Audiovisuals, Lua API]", + "LoneWolfHT [Object crosshair, documentation fixes]", + "Lejo [Server-related improvements]", + "EvidenceB [Compass HUD element]", + "Paul Ouellette (pauloue) [Lua API, documentation]", + "TheTermos [Collision detection, physics]", + "David CARLIER [Unix & Haiku build fixes]", "dcbrwn [Object shading]", - "srifqi [Fixes]", + "Elias Fleckenstein [API features/fixes]", + "Jean-Patrick Guerrero (kilbith) [model element, visual fixes]", + "k.h.lai [Memory leak fixes, documentation]", } local previous_core_developers = { @@ -60,30 +69,23 @@ local previous_core_developers = { "sapier", "Zeno", "ShadowNinja <shadowninja@minetest.net>", + "Auke Kok (sofar) <sofar@foo-projects.org>", } local previous_contributors = { "Nils Dagsson Moskopp (erlehmann) <nils@dieweltistgarnichtso.net> [Minetest Logo]", - "Dániel Juhász (juhdanad) <juhdanad@gmail.com>", "red-001 <red-001@outlook.ie>", - "numberZero [Audiovisuals: meshgen]", "Giuseppe Bilotta", + "Dániel Juhász (juhdanad) <juhdanad@gmail.com>", "MirceaKitsune <mirceakitsune@gmail.com>", "Constantin Wenger (SpeedProg)", "Ciaran Gultnieks (CiaranG)", "stujones11 [Android UX improvements]", - "Jeija <jeija@mesecons.net> [HTTP, particles]", - "Vincent Glize (Dumbeldor) [Cleanups, CSM APIs]", - "Ben Deutsch [Rendering, Fixes, SQLite auth]", - "TeTpaAka [Hand overriding, nametag colors]", - "Rui [Sound Pitch]", - "Duane Robertson <duane@duanerobertson.com> [MGValleys]", - "Raymoo [Tool Capabilities]", "Rogier <rogier777@gmail.com> [Fixes]", "Gregory Currie (gregorycu) [optimisation]", - "TriBlade9 <triblade9@mail.com> [Audiovisuals]", - "T4im [Profiler]", - "Jurgen Doser (doserj) <jurgen.doser@gmail.com>", + "srifqi [Fixes]", + "JacobF", + "Jeija <jeija@mesecons.net> [HTTP, particles]", } local function buildCreditList(source) diff --git a/builtin/mainmenu/tab_online.lua b/builtin/mainmenu/tab_online.lua index e6748ed88..fb7409864 100644 --- a/builtin/mainmenu/tab_online.lua +++ b/builtin/mainmenu/tab_online.lua @@ -15,17 +15,50 @@ --with this program; if not, write to the Free Software Foundation, Inc., --51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. --------------------------------------------------------------------------------- +local function get_sorted_servers() + local servers = { + fav = {}, + public = {}, + incompatible = {} + } + + local favs = serverlistmgr.get_favorites() + local taken_favs = {} + local result = menudata.search_result or serverlistmgr.servers + for _, server in ipairs(result) do + server.is_favorite = false + for index, fav in ipairs(favs) do + if server.address == fav.address and server.port == fav.port then + taken_favs[index] = true + server.is_favorite = true + break + end + end + server.is_compatible = is_server_protocol_compat(server.proto_min, server.proto_max) + if server.is_favorite then + table.insert(servers.fav, server) + elseif server.is_compatible then + table.insert(servers.public, server) + else + table.insert(servers.incompatible, server) + end + end + + if not menudata.search_result then + for index, fav in ipairs(favs) do + if not taken_favs[index] then + table.insert(servers.fav, fav) + end + end + end + + return servers +end + local function get_formspec(tabview, name, tabdata) -- Update the cached supported proto info, -- it may have changed after a change by the settings menu. common_update_cached_supp_proto() - local selected - if menudata.search_result then - selected = menudata.search_result[tabdata.selected] - else - selected = serverlistmgr.servers[tabdata.selected] - end if not tabdata.search_for then tabdata.search_for = "" @@ -33,128 +66,221 @@ local function get_formspec(tabview, name, tabdata) local retval = -- Search - "field[0.15,0.075;5.91,1;te_search;;" .. core.formspec_escape(tabdata.search_for) .. "]" .. - "image_button[5.63,-.165;.83,.83;" .. core.formspec_escape(defaulttexturedir .. "search.png") .. ";btn_mp_search;]" .. - "image_button[6.3,-.165;.83,.83;" .. core.formspec_escape(defaulttexturedir .. "clear.png") .. ";btn_mp_clear;]" .. - "image_button[6.97,-.165;.83,.83;" .. core.formspec_escape(defaulttexturedir .. "refresh.png") - .. ";btn_mp_refresh;]" .. + "field[0.25,0.25;7,0.75;te_search;;" .. core.formspec_escape(tabdata.search_for) .. "]" .. + "container[7.25,0.25]" .. + "image_button[0,0;0.75,0.75;" .. core.formspec_escape(defaulttexturedir .. "search.png") .. ";btn_mp_search;]" .. + "image_button[0.75,0;0.75,0.75;" .. core.formspec_escape(defaulttexturedir .. "clear.png") .. ";btn_mp_clear;]" .. + "image_button[1.5,0;0.75,0.75;" .. core.formspec_escape(defaulttexturedir .. "refresh.png") .. ";btn_mp_refresh;]" .. + "tooltip[btn_mp_clear;" .. fgettext("Clear") .. "]" .. + "tooltip[btn_mp_search;" .. fgettext("Search") .. "]" .. + "tooltip[btn_mp_refresh;" .. fgettext("Refresh") .. "]" .. + "container_end[]" .. + + "container[9.75,0]" .. + "box[0,0;5.75,7;#666666]" .. -- Address / Port - "label[7.75,-0.25;" .. fgettext("Address / Port") .. "]" .. - "field[8,0.65;3.25,0.5;te_address;;" .. + "label[0.25,0.35;" .. fgettext("Address") .. "]" .. + "label[4.25,0.35;" .. fgettext("Port") .. "]" .. + "field[0.25,0.5;4,0.75;te_address;;" .. core.formspec_escape(core.settings:get("address")) .. "]" .. - "field[11.1,0.65;1.4,0.5;te_port;;" .. + "field[4.25,0.5;1.25,0.75;te_port;;" .. core.formspec_escape(core.settings:get("remote_port")) .. "]" .. -- Name / Password - "label[7.75,0.95;" .. fgettext("Name / Password") .. "]" .. - "field[8,1.85;2.9,0.5;te_name;;" .. + "label[0.25,1.55;" .. fgettext("Name") .. "]" .. + "label[3,1.55;" .. fgettext("Password") .. "]" .. + "field[0.25,1.75;2.75,0.75;te_name;;" .. core.formspec_escape(core.settings:get("name")) .. "]" .. - "pwdfield[10.73,1.85;1.77,0.5;te_pwd;]" .. + "pwdfield[3,1.75;2.5,0.75;te_pwd;]" .. -- Description Background - "box[7.73,2.25;4.25,2.6;#999999]".. + "label[0.25,2.75;" .. fgettext("Server Description") .. "]" .. + "box[0.25,3;5.25,2.75;#999999]".. -- Connect - "button[9.88,4.9;2.3,1;btn_mp_connect;" .. fgettext("Connect") .. "]" + "button[3,6;2.5,0.75;btn_mp_connect;" .. fgettext("Connect") .. "]" - if tabdata.selected and selected then + if tabdata.selected then if gamedata.fav then - retval = retval .. "button[7.73,4.9;2.3,1;btn_delete_favorite;" .. + retval = retval .. "button[0.25,6;2.5,0.75;btn_delete_favorite;" .. fgettext("Del. Favorite") .. "]" end - if selected.description then - retval = retval .. "textarea[8.1,2.3;4.23,2.9;;;" .. - core.formspec_escape((gamedata.serverdescription or ""), true) .. "]" + if gamedata.serverdescription then + retval = retval .. "textarea[0.25,3;5.25,2.75;;;" .. + core.formspec_escape(gamedata.serverdescription) .. "]" end end - --favorites + retval = retval .. "container_end[]" + + -- Table retval = retval .. "tablecolumns[" .. - image_column(fgettext("Favorite"), "favorite") .. ";" .. - image_column(fgettext("Ping")) .. ",padding=0.25;" .. - "color,span=3;" .. - "text,align=right;" .. -- clients - "text,align=center,padding=0.25;" .. -- "/" - "text,align=right,padding=0.25;" .. -- clients_max - image_column(fgettext("Creative mode"), "creative") .. ",padding=1;" .. - image_column(fgettext("Damage enabled"), "damage") .. ",padding=0.25;" .. - --~ PvP = Player versus Player - image_column(fgettext("PvP enabled"), "pvp") .. ",padding=0.25;" .. + "image,tooltip=" .. fgettext("Ping") .. "," .. + "0=" .. core.formspec_escape(defaulttexturedir .. "blank.png") .. "," .. + "1=" .. core.formspec_escape(defaulttexturedir .. "server_ping_4.png") .. "," .. + "2=" .. core.formspec_escape(defaulttexturedir .. "server_ping_3.png") .. "," .. + "3=" .. core.formspec_escape(defaulttexturedir .. "server_ping_2.png") .. "," .. + "4=" .. core.formspec_escape(defaulttexturedir .. "server_ping_1.png") .. "," .. + "5=" .. core.formspec_escape(defaulttexturedir .. "server_favorite.png") .. "," .. + "6=" .. core.formspec_escape(defaulttexturedir .. "server_public.png") .. "," .. + "7=" .. core.formspec_escape(defaulttexturedir .. "server_incompatible.png") .. ";" .. "color,span=1;" .. - "text,padding=1]" .. - "table[-0.15,0.6;7.75,5.15;favorites;" - - if menudata.search_result then - local favs = serverlistmgr.get_favorites() - for i = 1, #menudata.search_result do - local server = menudata.search_result[i] - for fav_id = 1, #favs do - if server.address == favs[fav_id].address and - server.port == favs[fav_id].port then - server.is_favorite = true - end - end - - if i ~= 1 then - retval = retval .. "," - end - - retval = retval .. render_serverlist_row(server, server.is_favorite) - end - elseif #serverlistmgr.servers > 0 then - local favs = serverlistmgr.get_favorites() - if #favs > 0 then - for i = 1, #favs do - for j = 1, #serverlistmgr.servers do - if serverlistmgr.servers[j].address == favs[i].address and - serverlistmgr.servers[j].port == favs[i].port then - table.insert(serverlistmgr.servers, i, table.remove(serverlistmgr.servers, j)) - end - end - if favs[i].address ~= serverlistmgr.servers[i].address then - table.insert(serverlistmgr.servers, i, favs[i]) - end + "text,align=inline;".. + "color,span=1;" .. + "text,align=inline,width=4.25;" .. + "image,tooltip=" .. fgettext("Creative mode") .. "," .. + "0=" .. core.formspec_escape(defaulttexturedir .. "blank.png") .. "," .. + "1=" .. core.formspec_escape(defaulttexturedir .. "server_flags_creative.png") .. "," .. + "align=inline,padding=0.25,width=1.5;" .. + --~ PvP = Player versus Player + "image,tooltip=" .. fgettext("Damage / PvP") .. "," .. + "0=" .. core.formspec_escape(defaulttexturedir .. "blank.png") .. "," .. + "1=" .. core.formspec_escape(defaulttexturedir .. "server_flags_damage.png") .. "," .. + "2=" .. core.formspec_escape(defaulttexturedir .. "server_flags_pvp.png") .. "," .. + "align=inline,padding=0.25,width=1.5;" .. + "color,align=inline,span=1;" .. + "text,align=inline,padding=1]" .. + "table[0.25,1;9.25,5.75;servers;" + + local servers = get_sorted_servers() + + local dividers = { + fav = "5,#ffff00," .. fgettext("Favorites") .. ",,,0,0,,", + public = "6,#4bdd42," .. fgettext("Public Servers") .. ",,,0,0,,", + incompatible = "7,"..mt_color_grey.."," .. fgettext("Incompatible Servers") .. ",,,0,0,," + } + local order = {"fav", "public", "incompatible"} + + tabdata.lookup = {} -- maps row number to server + local rows = {} + for _, section in ipairs(order) do + local section_servers = servers[section] + if next(section_servers) ~= nil then + rows[#rows + 1] = dividers[section] + for _, server in ipairs(section_servers) do + tabdata.lookup[#rows + 1] = server + rows[#rows + 1] = render_serverlist_row(server) end end - - retval = retval .. render_serverlist_row(serverlistmgr.servers[1], (#favs > 0)) - for i = 2, #serverlistmgr.servers do - retval = retval .. "," .. render_serverlist_row(serverlistmgr.servers[i], (i <= #favs)) - end end + retval = retval .. table.concat(rows, ",") + if tabdata.selected then retval = retval .. ";" .. tabdata.selected .. "]" else retval = retval .. ";0]" end - return retval + return retval, "size[15.5,7,false]real_coordinates[true]" end -------------------------------------------------------------------------------- -local function main_button_handler(tabview, fields, name, tabdata) - local serverlist = menudata.search_result or serverlistmgr.servers +local function search_server_list(input) + menudata.search_result = nil + if #serverlistmgr.servers < 2 then + return + end + + -- setup the keyword list + local keywords = {} + for word in input:gmatch("%S+") do + word = word:gsub("(%W)", "%%%1") + table.insert(keywords, word) + end + + if #keywords == 0 then + return + end + + menudata.search_result = {} + + -- Search the serverlist + local search_result = {} + for i = 1, #serverlistmgr.servers do + local server = serverlistmgr.servers[i] + local found = 0 + for k = 1, #keywords do + local keyword = keywords[k] + if server.name then + local sername = server.name:lower() + local _, count = sername:gsub(keyword, keyword) + found = found + count * 4 + end + + if server.description then + local desc = server.description:lower() + local _, count = desc:gsub(keyword, keyword) + found = found + count * 2 + end + end + if found > 0 then + local points = (#serverlistmgr.servers - i) / 5 + found + server.points = points + table.insert(search_result, server) + end + end + + if #search_result == 0 then + return + end + + table.sort(search_result, function(a, b) + return a.points > b.points + end) + menudata.search_result = search_result +end + +local function set_selected_server(tabdata, idx, server) + -- reset selection + if idx == nil or server == nil then + tabdata.selected = nil + + core.settings:set("address", "") + core.settings:set("remote_port", "30000") + return + end + + local address = server.address + local port = server.port + gamedata.serverdescription = server.description + + gamedata.fav = false + for _, fav in ipairs(serverlistmgr.get_favorites()) do + if address == fav.address and port == fav.port then + gamedata.fav = true + break + end + end + + if address and port then + core.settings:set("address", address) + core.settings:set("remote_port", port) + end + tabdata.selected = idx +end + +local function main_button_handler(tabview, fields, name, tabdata) if fields.te_name then gamedata.playername = fields.te_name core.settings:set("name", fields.te_name) end - if fields.favorites then - local event = core.explode_table_event(fields.favorites) - local fav = serverlist[event.row] + if fields.servers then + local event = core.explode_table_event(fields.servers) + local server = tabdata.lookup[event.row] - if event.type == "DCL" then - if event.row <= #serverlist then + if server then + if event.type == "DCL" then if not is_server_protocol_compat_or_error( - fav.proto_min, fav.proto_max) then + server.proto_min, server.proto_max) then return true end - gamedata.address = fav.address - gamedata.port = fav.port + gamedata.address = server.address + gamedata.port = server.port gamedata.playername = fields.te_name gamedata.selected_world = 0 @@ -162,84 +288,32 @@ local function main_button_handler(tabview, fields, name, tabdata) gamedata.password = fields.te_pwd end - gamedata.servername = fav.name - gamedata.serverdescription = fav.description + gamedata.servername = server.name + gamedata.serverdescription = server.description if gamedata.address and gamedata.port then core.settings:set("address", gamedata.address) core.settings:set("remote_port", gamedata.port) core.start() end + return true end - return true - end - - if event.type == "CHG" then - if event.row <= #serverlist then - gamedata.fav = false - local favs = serverlistmgr.get_favorites() - local address = fav.address - local port = fav.port - gamedata.serverdescription = fav.description - - for i = 1, #favs do - if fav.address == favs[i].address and - fav.port == favs[i].port then - gamedata.fav = true - end - end - - if address and port then - core.settings:set("address", address) - core.settings:set("remote_port", port) - end - tabdata.selected = event.row - end - return true - end - end - - if fields.key_up or fields.key_down then - local fav_idx = core.get_table_index("favorites") - local fav = serverlist[fav_idx] - - if fav_idx then - if fields.key_up and fav_idx > 1 then - fav_idx = fav_idx - 1 - elseif fields.key_down and fav_idx < #serverlistmgr.servers then - fav_idx = fav_idx + 1 + if event.type == "CHG" then + set_selected_server(tabdata, event.row, server) + return true end - else - fav_idx = 1 - end - - if not serverlistmgr.servers or not fav then - tabdata.selected = 0 - return true - end - - local address = fav.address - local port = fav.port - gamedata.serverdescription = fav.description - if address and port then - core.settings:set("address", address) - core.settings:set("remote_port", port) end - - tabdata.selected = fav_idx - return true end if fields.btn_delete_favorite then - local current_favorite = core.get_table_index("favorites") - if not current_favorite then return end - - serverlistmgr.delete_favorite(serverlistmgr.servers[current_favorite]) - serverlistmgr.sync() - tabdata.selected = nil - - core.settings:set("address", "") - core.settings:set("remote_port", "30000") + local idx = core.get_table_index("servers") + if not idx then return end + local server = tabdata.lookup[idx] + if not server then return end + + serverlistmgr.delete_favorite(server) + -- the server at [idx+1] will be at idx once list is refreshed + set_selected_server(tabdata, idx, tabdata.lookup[idx+1]) return true end @@ -250,63 +324,13 @@ local function main_button_handler(tabview, fields, name, tabdata) end if fields.btn_mp_search or fields.key_enter_field == "te_search" then - tabdata.selected = 1 - local input = fields.te_search:lower() tabdata.search_for = fields.te_search - - if #serverlistmgr.servers < 2 then - return true - end - - menudata.search_result = {} - - -- setup the keyword list - local keywords = {} - for word in input:gmatch("%S+") do - word = word:gsub("(%W)", "%%%1") - table.insert(keywords, word) + search_server_list(fields.te_search:lower()) + if menudata.search_result then + -- first server in row 2 due to header + set_selected_server(tabdata, 2, menudata.search_result[1]) end - if #keywords == 0 then - menudata.search_result = nil - return true - end - - -- Search the serverlist - local search_result = {} - for i = 1, #serverlistmgr.servers do - local server = serverlistmgr.servers[i] - local found = 0 - for k = 1, #keywords do - local keyword = keywords[k] - if server.name then - local sername = server.name:lower() - local _, count = sername:gsub(keyword, keyword) - found = found + count * 4 - end - - if server.description then - local desc = server.description:lower() - local _, count = desc:gsub(keyword, keyword) - found = found + count * 2 - end - end - if found > 0 then - local points = (#serverlistmgr.servers - i) / 5 + found - server.points = points - table.insert(search_result, server) - end - end - if #search_result > 0 then - table.sort(search_result, function(a, b) - return a.points > b.points - end) - menudata.search_result = search_result - local first_server = search_result[1] - core.settings:set("address", first_server.address) - core.settings:set("remote_port", first_server.port) - gamedata.serverdescription = first_server.description - end return true end @@ -322,20 +346,22 @@ local function main_button_handler(tabview, fields, name, tabdata) gamedata.address = fields.te_address gamedata.port = tonumber(fields.te_port) gamedata.selected_world = 0 - local fav_idx = core.get_table_index("favorites") - local fav = serverlist[fav_idx] - if fav_idx and fav_idx <= #serverlist and - fav.address == gamedata.address and - fav.port == gamedata.port then + local idx = core.get_table_index("servers") + local server = idx and tabdata.lookup[idx] + + set_selected_server(tabdata) - serverlistmgr.add_favorite(fav) + if server and server.address == gamedata.address and + server.port == gamedata.port then - gamedata.servername = fav.name - gamedata.serverdescription = fav.description + serverlistmgr.add_favorite(server) + + gamedata.servername = server.name + gamedata.serverdescription = server.description if not is_server_protocol_compat_or_error( - fav.proto_min, fav.proto_max) then + server.proto_min, server.proto_max) then return true end else @@ -354,6 +380,7 @@ local function main_button_handler(tabview, fields, name, tabdata) core.start() return true end + return false end @@ -362,7 +389,6 @@ local function on_change(type, old_tab, new_tab) serverlistmgr.sync() end --------------------------------------------------------------------------------- return { name = "online", caption = fgettext("Join Game"), diff --git a/builtin/profiler/init.lua b/builtin/profiler/init.lua index a0033d752..7f63dfaea 100644 --- a/builtin/profiler/init.lua +++ b/builtin/profiler/init.lua @@ -15,6 +15,8 @@ --with this program; if not, write to the Free Software Foundation, Inc., --51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +local S = core.get_translator("__builtin") + local function get_bool_default(name, default) local val = core.settings:get_bool(name) if val == nil then @@ -40,9 +42,9 @@ function profiler.init_chatcommand() instrumentation.init_chatcommand() end - local param_usage = "print [filter] | dump [filter] | save [format [filter]] | reset" + local param_usage = S("print [<filter>] | dump [<filter>] | save [<format> [<filter>]] | reset") core.register_chatcommand("profiler", { - description = "handle the profiler and profiling data", + description = S("Handle the profiler and profiling data"), params = param_usage, privs = { server=true }, func = function(name, param) @@ -51,21 +53,19 @@ function profiler.init_chatcommand() if command == "dump" then core.log("action", reporter.print(sampler.profile, arg0)) - return true, "Statistics written to action log" + return true, S("Statistics written to action log.") elseif command == "print" then return true, reporter.print(sampler.profile, arg0) elseif command == "save" then return reporter.save(sampler.profile, args[1] or "txt", args[2]) elseif command == "reset" then sampler.reset() - return true, "Statistics were reset" + return true, S("Statistics were reset.") end - return false, string.format( - "Usage: %s\n" .. - "Format can be one of txt, csv, lua, json, json_pretty (structures may be subject to change).", - param_usage - ) + return false, + S("Usage: @1", param_usage) .. "\n" .. + S("Format can be one of txt, csv, lua, json, json_pretty (structures may be subject to change).") end }) diff --git a/builtin/profiler/reporter.lua b/builtin/profiler/reporter.lua index fed47a36b..5928a3718 100644 --- a/builtin/profiler/reporter.lua +++ b/builtin/profiler/reporter.lua @@ -15,6 +15,10 @@ --with this program; if not, write to the Free Software Foundation, Inc., --51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +local S = core.get_translator("__builtin") +-- Note: In this file, only messages are translated +-- but not the table itself, to keep it simple. + local DIR_DELIM, LINE_DELIM = DIR_DELIM, "\n" local table, unpack, string, pairs, io, os = table, unpack, string, pairs, io, os local rep, sprintf, tonumber = string.rep, string.format, tonumber @@ -104,11 +108,11 @@ local TxtFormatter = Formatter:new { end, format = function(self, filter) local profile = self.profile - self:print("Values below show absolute/relative times spend per server step by the instrumented function.") - self:print("A total of %d samples were taken", profile.stats_total.samples) + self:print(S("Values below show absolute/relative times spend per server step by the instrumented function.")) + self:print(S("A total of @1 sample(s) were taken.", profile.stats_total.samples)) if filter then - self:print("The output is limited to '%s'", filter) + self:print(S("The output is limited to '@1'.", filter)) end self:print() @@ -259,19 +263,18 @@ function reporter.save(profile, format, filter) local output, io_err = io.open(path, "w") if not output then - return false, "Saving of profile failed with: " .. io_err + return false, S("Saving of profile failed: @1", io_err) end local content, err = serialize_profile(profile, format, filter) if not content then output:close() - return false, "Saving of profile failed with: " .. err + return false, S("Saving of profile failed: @1", err) end output:write(content) output:close() - local logmessage = "Profile saved to " .. path - core.log("action", logmessage) - return true, logmessage + core.log("action", "Profile saved to " .. path) + return true, S("Profile saved to @1", path) end return reporter diff --git a/builtin/settingtypes.txt b/builtin/settingtypes.txt index 8b6227b37..75efe64da 100644 --- a/builtin/settingtypes.txt +++ b/builtin/settingtypes.txt @@ -75,7 +75,7 @@ free_move (Flying) bool false # If enabled, makes move directions relative to the player's pitch when flying or swimming. pitch_move (Pitch move mode) bool false -# Fast movement (via the "special" key). +# Fast movement (via the "Aux1" key). # This requires the "fast" privilege on the server. fast_move (Fast movement) bool false @@ -99,14 +99,14 @@ invert_mouse (Invert mouse) bool false # Mouse sensitivity multiplier. mouse_sensitivity (Mouse sensitivity) float 0.2 -# If enabled, "special" key instead of "sneak" key is used for climbing down and +# If enabled, "Aux1" key instead of "Sneak" key is used for climbing down and # descending. -aux1_descends (Special key for climbing/descending) bool false +aux1_descends (Aux1 key for climbing/descending) bool false # Double-tapping the jump key toggles fly mode. doubletap_jump (Double tap jump for fly) bool false -# If disabled, "special" key is used to fly fast if both fly and fast mode are +# If disabled, "Aux1" key is used to fly fast if both fly and fast mode are # enabled. always_fly_fast (Always fly and fast) bool true @@ -135,9 +135,9 @@ touchscreen_threshold (Touch screen threshold) int 20 0 100 # If disabled, virtual joystick will center to first-touch's position. fixed_virtual_joystick (Fixed virtual joystick) bool false -# (Android) Use virtual joystick to trigger "aux" button. -# If enabled, virtual joystick will also tap "aux" button when out of main circle. -virtual_joystick_triggers_aux (Virtual joystick triggers aux button) bool false +# (Android) Use virtual joystick to trigger "Aux1" button. +# If enabled, virtual joystick will also tap "Aux1" button when out of main circle. +virtual_joystick_triggers_aux1 (Virtual joystick triggers Aux1 button) bool false # Enable joysticks enable_joysticks (Enable joysticks) bool false @@ -199,7 +199,7 @@ keymap_inventory (Inventory key) key KEY_KEY_I # Key for moving fast in fast mode. # See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3 -keymap_special1 (Special key) key KEY_KEY_E +keymap_aux1 (Aux1 key) key KEY_KEY_E # Key for opening the chat window. # See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3 @@ -451,6 +451,10 @@ keymap_decrease_viewing_range_min (View range decrease key) key - [**Basic] +# Whether nametag backgrounds should be shown by default. +# Mods may still set a background. +show_nametag_backgrounds (Show nametag backgrounds by default) bool true + # Enable vertex buffer objects. # This should greatly improve graphics performance. enable_vbo (VBO) bool true @@ -1132,6 +1136,10 @@ enable_rollback_recording (Rollback recording) bool false # @name, @message, @timestamp (optional) chat_message_format (Chat message format) string <@name> @message +# If the execution of a chat command takes longer than this specified time in +# seconds, add the time information to the chat command message +chatcommand_msg_time_threshold (Chat command time message threshold) float 0.1 + # A message to be displayed to all clients when the server shuts down. kick_msg_shutdown (Shutdown message) string Server shutting down. diff --git a/client/shaders/3d_interlaced_merge/opengl_fragment.glsl b/client/shaders/3d_interlaced_merge/opengl_fragment.glsl index 7cba61b39..6d3ae5093 100644 --- a/client/shaders/3d_interlaced_merge/opengl_fragment.glsl +++ b/client/shaders/3d_interlaced_merge/opengl_fragment.glsl @@ -6,7 +6,7 @@ uniform sampler2D textureFlags; #define rightImage normalTexture #define maskImage textureFlags -varying mediump vec2 varTexCoord; +varying mediump vec4 varTexCoord; void main(void) { diff --git a/client/shaders/3d_interlaced_merge/opengl_vertex.glsl b/client/shaders/3d_interlaced_merge/opengl_vertex.glsl index 860049481..224b7d183 100644 --- a/client/shaders/3d_interlaced_merge/opengl_vertex.glsl +++ b/client/shaders/3d_interlaced_merge/opengl_vertex.glsl @@ -1,4 +1,4 @@ -varying mediump vec2 varTexCoord; +varying mediump vec4 varTexCoord; void main(void) { diff --git a/clientmods/preview/mod.conf b/clientmods/preview/mod.conf new file mode 100644 index 000000000..4e56ec293 --- /dev/null +++ b/clientmods/preview/mod.conf @@ -0,0 +1 @@ +name = preview diff --git a/cmake/Modules/FindGMP.cmake b/cmake/Modules/FindGMP.cmake index 7b45f16c7..190b7c548 100644 --- a/cmake/Modules/FindGMP.cmake +++ b/cmake/Modules/FindGMP.cmake @@ -12,8 +12,6 @@ if(ENABLE_SYSTEM_GMP) else() message (STATUS "Detecting GMP from system failed.") endif() -else() - message (STATUS "Detecting GMP from system disabled! (ENABLE_SYSTEM_GMP=0)") endif() if(NOT USE_SYSTEM_GMP) diff --git a/cmake/Modules/FindGettextLib.cmake b/cmake/Modules/FindGettextLib.cmake index 529452a4a..b7681827c 100644 --- a/cmake/Modules/FindGettextLib.cmake +++ b/cmake/Modules/FindGettextLib.cmake @@ -42,15 +42,6 @@ if(WIN32) NAMES ${GETTEXT_LIB_NAMES} PATHS "${CUSTOM_GETTEXT_PATH}/lib" DOC "GetText library") - find_file(GETTEXT_DLL - NAMES libintl.dll intl.dll libintl3.dll intl3.dll - PATHS "${CUSTOM_GETTEXT_PATH}/bin" "${CUSTOM_GETTEXT_PATH}/lib" - DOC "gettext *intl*.dll") - find_file(GETTEXT_ICONV_DLL - NAMES libiconv2.dll - PATHS "${CUSTOM_GETTEXT_PATH}/bin" "${CUSTOM_GETTEXT_PATH}/lib" - DOC "gettext *iconv*.lib") - set(GETTEXT_REQUIRED_VARS ${GETTEXT_REQUIRED_VARS} GETTEXT_DLL GETTEXT_ICONV_DLL) endif(WIN32) diff --git a/cmake/Modules/FindIrrlicht.cmake b/cmake/Modules/FindIrrlicht.cmake index 6f361e829..8296de685 100644 --- a/cmake/Modules/FindIrrlicht.cmake +++ b/cmake/Modules/FindIrrlicht.cmake @@ -1,44 +1,11 @@ mark_as_advanced(IRRLICHT_LIBRARY IRRLICHT_INCLUDE_DIR IRRLICHT_DLL) -set(IRRLICHT_SOURCE_DIR "" CACHE PATH "Path to irrlicht source directory (optional)") +# Find include directory and libraries -# Find include directory - -if(NOT IRRLICHT_SOURCE_DIR STREQUAL "") - set(IRRLICHT_SOURCE_DIR_INCLUDE - "${IRRLICHT_SOURCE_DIR}/include" - ) - - set(IRRLICHT_LIBRARY_NAMES libIrrlicht.a Irrlicht Irrlicht.lib) - - if(WIN32) - if(MSVC) - set(IRRLICHT_SOURCE_DIR_LIBS "${IRRLICHT_SOURCE_DIR}/lib/Win32-visualstudio") - set(IRRLICHT_LIBRARY_NAMES Irrlicht.lib) - else() - set(IRRLICHT_SOURCE_DIR_LIBS "${IRRLICHT_SOURCE_DIR}/lib/Win32-gcc") - set(IRRLICHT_LIBRARY_NAMES libIrrlicht.a libIrrlicht.dll.a) - endif() - else() - set(IRRLICHT_SOURCE_DIR_LIBS "${IRRLICHT_SOURCE_DIR}/lib/Linux") - set(IRRLICHT_LIBRARY_NAMES libIrrlicht.a) - endif() - - find_path(IRRLICHT_INCLUDE_DIR NAMES irrlicht.h - PATHS - ${IRRLICHT_SOURCE_DIR_INCLUDE} - NO_DEFAULT_PATH - ) - - find_library(IRRLICHT_LIBRARY NAMES ${IRRLICHT_LIBRARY_NAMES} - PATHS - ${IRRLICHT_SOURCE_DIR_LIBS} - NO_DEFAULT_PATH - ) - -else() +if(TRUE) find_path(IRRLICHT_INCLUDE_DIR NAMES irrlicht.h + DOC "Path to the directory with Irrlicht includes" PATHS /usr/local/include/irrlicht /usr/include/irrlicht @@ -46,7 +13,8 @@ else() PATH_SUFFIXES "include/irrlicht" ) - find_library(IRRLICHT_LIBRARY NAMES libIrrlicht.so libIrrlicht.a Irrlicht + find_library(IRRLICHT_LIBRARY NAMES libIrrlicht Irrlicht + DOC "Path to the Irrlicht library file" PATHS /usr/local/lib /usr/lib @@ -54,19 +22,14 @@ else() ) endif() +# Users will likely need to edit these +mark_as_advanced(CLEAR IRRLICHT_LIBRARY IRRLICHT_INCLUDE_DIR) # On Windows, find the DLL for installation if(WIN32) # If VCPKG_APPLOCAL_DEPS is ON, dll's are automatically handled by VCPKG if(NOT VCPKG_APPLOCAL_DEPS) - if(MSVC) - set(IRRLICHT_COMPILER "VisualStudio") - else() - set(IRRLICHT_COMPILER "gcc") - endif() find_file(IRRLICHT_DLL NAMES Irrlicht.dll - PATHS - "${IRRLICHT_SOURCE_DIR}/bin/Win32-${IRRLICHT_COMPILER}" DOC "Path of the Irrlicht dll (for installation)" ) endif() diff --git a/cmake/Modules/FindJson.cmake b/cmake/Modules/FindJson.cmake index a5e9098f8..cce2d387f 100644 --- a/cmake/Modules/FindJson.cmake +++ b/cmake/Modules/FindJson.cmake @@ -1,26 +1,25 @@ -# Look for JSONCPP if asked to. -# We use a bundled version by default because some distros ship versions of -# JSONCPP that cause segfaults and other memory errors when we link with them. -# See https://github.com/minetest/minetest/issues/1793 +# Look for JsonCpp, with fallback to bundeled version mark_as_advanced(JSON_LIBRARY JSON_INCLUDE_DIR) -option(ENABLE_SYSTEM_JSONCPP "Enable using a system-wide JSONCPP. May cause segfaults and other memory errors!" FALSE) +option(ENABLE_SYSTEM_JSONCPP "Enable using a system-wide JsonCpp" TRUE) +set(USE_SYSTEM_JSONCPP FALSE) if(ENABLE_SYSTEM_JSONCPP) find_library(JSON_LIBRARY NAMES jsoncpp) find_path(JSON_INCLUDE_DIR json/allocator.h PATH_SUFFIXES jsoncpp) - include(FindPackageHandleStandardArgs) - find_package_handle_standard_args(Json DEFAULT_MSG JSON_LIBRARY JSON_INCLUDE_DIR) - - if(JSON_FOUND) - message(STATUS "Using system JSONCPP library.") + if(JSON_LIBRARY AND JSON_INCLUDE_DIR) + message(STATUS "Using JsonCpp provided by system.") + set(USE_SYSTEM_JSONCPP TRUE) endif() endif() -if(NOT JSON_FOUND) - message(STATUS "Using bundled JSONCPP library.") +if(NOT USE_SYSTEM_JSONCPP) + message(STATUS "Using bundled JsonCpp library.") set(JSON_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/lib/jsoncpp) set(JSON_LIBRARY jsoncpp) add_subdirectory(lib/jsoncpp) endif() + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(Json DEFAULT_MSG JSON_LIBRARY JSON_INCLUDE_DIR) diff --git a/doc/client_lua_api.txt b/doc/client_lua_api.txt index 098596481..c2c552440 100644 --- a/doc/client_lua_api.txt +++ b/doc/client_lua_api.txt @@ -1,4 +1,4 @@ -Minetest Lua Client Modding API Reference 5.4.0 +Minetest Lua Client Modding API Reference 5.5.0 ================================================ * More information at <http://www.minetest.net/> * Developer Wiki: <http://dev.minetest.net/> diff --git a/doc/lua_api.txt b/doc/lua_api.txt index 7b7825614..737a690f6 100644 --- a/doc/lua_api.txt +++ b/doc/lua_api.txt @@ -256,6 +256,9 @@ Subfolders with names starting with `_` or `.` are ignored. If a subfolder contains a media file with the same name as a media file in one of its parents, the parent's file is used. +Although it is discouraged, a mod can overwrite a media file of any mod that it +depends on by supplying a file with an equal name. + Naming conventions ------------------ @@ -2296,7 +2299,7 @@ Elements * `frame duration`: Milliseconds between each frame. `0` means the frames don't advance. * `frame start` (Optional): The index of the frame to start on. Default `1`. -### `model[<X>,<Y>;<W>,<H>;<name>;<mesh>;<textures>;<rotation X,Y>;<continuous>;<mouse control>;<frame loop range>]` +### `model[<X>,<Y>;<W>,<H>;<name>;<mesh>;<textures>;<rotation X,Y>;<continuous>;<mouse control>;<frame loop range>;<animation speed>]` * Show a mesh model. * `name`: Element name that can be used for styling @@ -2310,6 +2313,7 @@ Elements * `frame loop range` (Optional): Range of the animation frames. * Defaults to the full range of all available frames. * Syntax: `<begin>,<end>` +* `animation speed` (Optional): Sets the animation speed. Default 0 FPS. ### `item_image[<X>,<Y>;<W>,<H>;<item name>]` @@ -2675,7 +2679,7 @@ Elements * `span=<value>`: number of following columns to affect (default: infinite). -### `style[<selector 1>,<selector 2>;<prop1>;<prop2>;...]` +### `style[<selector 1>,<selector 2>,...;<prop1>;<prop2>;...]` * Set the style for the element(s) matching `selector` by name. * `selector` can be one of: @@ -2688,7 +2692,7 @@ Elements * See [Styling Formspecs]. -### `style_type[<selector 1>,<selector 2>;<prop1>;<prop2>;...]` +### `style_type[<selector 1>,<selector 2>,...;<prop1>;<prop2>;...]` * Set the style for the element(s) matching `selector` by type. * `selector` can be one of: @@ -2761,10 +2765,10 @@ Styling Formspecs Formspec elements can be themed using the style elements: - style[<name 1>,<name 2>;<prop1>;<prop2>;...] - style[<name 1>:<state>,<name 2>:<state>;<prop1>;<prop2>;...] - style_type[<type 1>,<type 2>;<prop1>;<prop2>;...] - style_type[<type 1>:<state>,<type 2>:<state>;<prop1>;<prop2>;...] + style[<name 1>,<name 2>,...;<prop1>;<prop2>;...] + style[<name 1>:<state>,<name 2>:<state>,...;<prop1>;<prop2>;...] + style_type[<type 1>,<type 2>,...;<prop1>;<prop2>;...] + style_type[<type 1>:<state>,<type 2>:<state>,...;<prop1>;<prop2>;...] Where a prop is: @@ -3265,7 +3269,6 @@ Helper functions * returns true when the passed number represents NaN. * `minetest.get_us_time()` * returns time with microsecond precision. May not return wall time. - * This value might overflow on certain 32-bit systems! * `table.copy(table)`: returns a table * returns a deep copy of `table` * `table.indexof(list, val)`: returns the smallest numerical index containing @@ -6039,18 +6042,18 @@ an itemstring, a table or `nil`. stack). * `set_metadata(metadata)`: (DEPRECATED) Returns true. * `get_description()`: returns the description shown in inventory list tooltips. - * The engine uses the same as this function for item descriptions. + * The engine uses this when showing item descriptions in tooltips. * Fields for finding the description, in order: * `description` in item metadata (See [Item Metadata].) * `description` in item definition * item name -* `get_short_description()`: returns the short description. +* `get_short_description()`: returns the short description or nil. * Unlike the description, this does not include new lines. - * The engine uses the same as this function for short item descriptions. * Fields for finding the short description, in order: * `short_description` in item metadata (See [Item Metadata].) * `short_description` in item definition - * first line of the description (See `get_description()`.) + * first line of the description (From item meta or def, see `get_description()`.) + * Returns nil if none of the above are set * `clear()`: removes all items from the stack, making it empty. * `replace(item)`: replace the contents of this stack. * `item` can also be an itemstring or table. @@ -6274,15 +6277,21 @@ object you are working with still exists. * `get_nametag_attributes()` * returns a table with the attributes of the nametag of an object * { - color = {a=0..255, r=0..255, g=0..255, b=0..255}, text = "", + color = {a=0..255, r=0..255, g=0..255, b=0..255}, + bgcolor = {a=0..255, r=0..255, g=0..255, b=0..255}, } * `set_nametag_attributes(attributes)` * sets the attributes of the nametag of an object * `attributes`: { - color = ColorSpec, text = "My Nametag", + color = ColorSpec, + -- ^ Text color + bgcolor = ColorSpec or false, + -- ^ Sets background color of nametag + -- `false` will cause the background to be set automatically based on user settings + -- Default: false } #### Lua entity only (no-op for other objects) @@ -6956,9 +6965,13 @@ Player properties need to be saved manually. -- For all other objects, a nil or empty string removes the nametag. -- To hide a nametag, set its color alpha to zero. That will disable it entirely. - nametag_color = <ColorSpec>, - -- Sets color of nametag + -- Sets text color of nametag + + nametag_bgcolor = <ColorSpec>, + -- Sets background color of nametag + -- `false` will cause the background to be set automatically based on user settings. + -- Default: false infotext = "", -- By default empty, text to be shown when pointed at object @@ -7171,8 +7184,9 @@ Used by `minetest.register_node`, `minetest.register_craftitem`, and short_description = "Steel Axe", -- Must not contain new lines. - -- Defaults to the first line of description. - -- See also: `get_short_description` in [`ItemStack`] + -- Defaults to nil. + -- Use an [`ItemStack`] to get the short description, eg: + -- ItemStack(itemname):get_short_description() groups = {}, -- key = name, value = rating; rating = 1..3. diff --git a/doc/menu_lua_api.txt b/doc/menu_lua_api.txt index b3975bc1d..90ec527b0 100644 --- a/doc/menu_lua_api.txt +++ b/doc/menu_lua_api.txt @@ -1,4 +1,4 @@ -Minetest Lua Mainmenu API Reference 5.4.0 +Minetest Lua Mainmenu API Reference 5.5.0 ========================================= Introduction diff --git a/games/devtest/mods/basenodes/textures/default_dirt.png b/games/devtest/mods/basenodes/textures/default_dirt.png Binary files differindex 58670305d..aa75bffb6 100644 --- a/games/devtest/mods/basenodes/textures/default_dirt.png +++ b/games/devtest/mods/basenodes/textures/default_dirt.png diff --git a/games/devtest/mods/basenodes/textures/dirt_with_grass/info.txt b/games/devtest/mods/basenodes/textures/dirt_with_grass/info.txt deleted file mode 100644 index 8db21ed9c..000000000 --- a/games/devtest/mods/basenodes/textures/dirt_with_grass/info.txt +++ /dev/null @@ -1,3 +0,0 @@ -This is for testing loading textures from subfolders. -If it works correctly, the default_grass_side.png file in this folder is used but -default_grass.png is not overwritten by the file in this folder. diff --git a/games/devtest/mods/basenodes/textures/info.txt b/games/devtest/mods/basenodes/textures/info.txt new file mode 100644 index 000000000..2d4ef7efa --- /dev/null +++ b/games/devtest/mods/basenodes/textures/info.txt @@ -0,0 +1,7 @@ + +The dirt_with_grass folder is for testing loading textures from subfolders. +If it works correctly, the default_grass_side.png file in the folder is used but +default_grass.png is not overwritten by the file in the folder. + +default_dirt.png should be overwritten by the default_dirt.png in the unittests +mod which depends on basenodes. diff --git a/games/devtest/mods/chest/init.lua b/games/devtest/mods/chest/init.lua index fc92bfdd1..5798c13e7 100644 --- a/games/devtest/mods/chest/init.lua +++ b/games/devtest/mods/chest/init.lua @@ -23,6 +23,18 @@ minetest.register_node("chest:chest", { local inv = meta:get_inventory() return inv:is_empty("main") end, + allow_metadata_inventory_put = function(pos, listname, index, stack, player) + minetest.chat_send_player(player:get_player_name(), "Allow put: " .. stack:to_string()) + return stack:get_count() + end, + allow_metadata_inventory_take = function(pos, listname, index, stack, player) + minetest.chat_send_player(player:get_player_name(), "Allow take: " .. stack:to_string()) + return stack:get_count() + end, + on_metadata_inventory_put = function(pos, listname, index, stack, player) + minetest.chat_send_player(player:get_player_name(), "On put: " .. stack:to_string()) + end, + on_metadata_inventory_take = function(pos, listname, index, stack, player) + minetest.chat_send_player(player:get_player_name(), "On take: " .. stack:to_string()) + end, }) - - diff --git a/games/devtest/mods/experimental/commands.lua b/games/devtest/mods/experimental/commands.lua index 132b08b0b..8bfa467e1 100644 --- a/games/devtest/mods/experimental/commands.lua +++ b/games/devtest/mods/experimental/commands.lua @@ -215,5 +215,5 @@ minetest.register_chatcommand("test_place_nodes", { }) core.register_on_chatcommand(function(name, command, params) - minetest.log("caught command '"..command.."', issued by '"..name.."'. Parameters: '"..params.."'") + minetest.log("action", "caught command '"..command.."', issued by '"..name.."'. Parameters: '"..params.."'") end) diff --git a/games/devtest/mods/testentities/visuals.lua b/games/devtest/mods/testentities/visuals.lua index e3b758329..e382ec44c 100644 --- a/games/devtest/mods/testentities/visuals.lua +++ b/games/devtest/mods/testentities/visuals.lua @@ -103,23 +103,35 @@ minetest.register_entity("testentities:nametag", { on_activate = function(self, staticdata) if staticdata ~= "" then - self.color = minetest.deserialize(staticdata).color + local data = minetest.deserialize(staticdata) + self.color = data.color + self.bgcolor = data.bgcolor else self.color = { r = math.random(0, 255), g = math.random(0, 255), b = math.random(0, 255), } + + if math.random(0, 10) > 5 then + self.bgcolor = { + r = math.random(0, 255), + g = math.random(0, 255), + b = math.random(0, 255), + a = math.random(0, 255), + } + end end assert(self.color) self.object:set_properties({ nametag = tostring(math.random(1000, 10000)), nametag_color = self.color, + nametag_bgcolor = self.bgcolor, }) end, get_staticdata = function(self) - return minetest.serialize({ color = self.color }) + return minetest.serialize({ color = self.color, bgcolor = self.bgcolor }) end, }) diff --git a/games/devtest/mods/testformspec/formspec.lua b/games/devtest/mods/testformspec/formspec.lua index 2a2bdad60..501b5e354 100644 --- a/games/devtest/mods/testformspec/formspec.lua +++ b/games/devtest/mods/testformspec/formspec.lua @@ -362,20 +362,51 @@ Number] animated_image[5.5,0.5;5,2;;testformspec_animation.png;4;100] animated_image[5.5,2.75;5,2;;testformspec_animation.jpg;4;100] + ]], + + -- Model + [[ + formspec_version[3] + size[12,13] style[m1;bgcolor=black] - model[0.5,6;4,4;m1;testformspec_character.b3d;testformspec_character.png] - model[5,6;4,4;m2;testformspec_chest.obj;default_chest_top.png,default_chest_top.png,default_chest_side.png,default_chest_side.png,default_chest_front.png,default_chest_inside.png;30,1;true;true] + style[m2;bgcolor=black] + label[5,1;all defaults] + label[5,5.1;angle = 0, 180 +continuous = false +mouse control = false +frame loop range = 0,30] + label[5,9.2;continuous = true +mouse control = true] + model[0.5,0.1;4,4;m1;testformspec_character.b3d;testformspec_character.png] + model[0.5,4.2;4,4;m2;testformspec_character.b3d;testformspec_character.png;0,180;false;false;0,30] + model[0.5,8.3;4,4;m3;testformspec_chest.obj;default_chest_top.png,default_chest_top.png,default_chest_side.png,default_chest_side.png,default_chest_front.png,default_chest_inside.png;30,1;true;true] ]], -- Scroll containers "formspec_version[3]size[12,13]" .. scroll_fs, + + -- Sound + [[ + formspec_version[3] + size[12,13] + style[snd_btn;sound=soundstuff_mono] + style[snd_ibtn;sound=soundstuff_mono] + style[snd_drp;sound=soundstuff_mono] + style[snd_chk;sound=soundstuff_mono] + style[snd_tab;sound=soundstuff_mono] + button[0.5,0.5;2,1;snd_btn;Sound] + image_button[0.5,2;2,1;testformspec_item.png;snd_ibtn;Sound] + dropdown[0.5,4;4;snd_drp;Sound,Two,Three;] + checkbox[0.5,5.5.5;snd_chk;Sound;] + tabheader[0.5,7;8,0.65;snd_tab;Soundtab1,Soundtab2,Soundtab3;1;false;false] + ]], } local function show_test_formspec(pname, page_id) page_id = page_id or 2 - local fs = pages[page_id] .. "tabheader[0,0;8,0.65;maintabs;Real Coord,Styles,Noclip,Hypertext,Tabs,Invs,Anim,ScrollC;" .. page_id .. ";false;false]" + local fs = pages[page_id] .. "tabheader[0,0;8,0.65;maintabs;Real Coord,Styles,Noclip,Hypertext,Tabs,Invs,Anim,Model,ScrollC,Sound;" .. page_id .. ";false;false]" minetest.show_formspec(pname, "testformspec:formspec", fs) end diff --git a/games/devtest/mods/testtools/README.md b/games/devtest/mods/testtools/README.md index 9cfe29ea4..a1eb95ed7 100644 --- a/games/devtest/mods/testtools/README.md +++ b/games/devtest/mods/testtools/README.md @@ -33,6 +33,13 @@ Usage: * Punch node: Make it fall * Place: Try to teleport up to 2 units upwards, then make it fall +## Node Meta Editor +Edit and view metadata of nodes. + +Usage: + +* Punch: Open node metadata editor + ## Entity Rotator Changes the entity rotation (with `set_rotation`). @@ -90,6 +97,13 @@ Usage: * Place: Increase move distance * Sneak+place: Decrease move distance +## Children Getter +Shows list of objects that are attached to an object (aka "children") in chat. + +Usage: +* Punch object: Show children of punched object +* Punch air: Show your own children + ## Entity Visual Scaler Change visual size of entities @@ -97,3 +111,10 @@ Usage: * Punch entity to increase visual size * Sneak+punch entity to decrease visual size + +## Light Tool +Show light level of node. + +Usage: +* Punch: Show light info of node in front of the punched node's side +* Place: Show light info of the node that you touched diff --git a/games/devtest/mods/testtools/init.lua b/games/devtest/mods/testtools/init.lua index d578b264a..1041acdeb 100644 --- a/games/devtest/mods/testtools/init.lua +++ b/games/devtest/mods/testtools/init.lua @@ -3,8 +3,6 @@ local F = minetest.formspec_escape dofile(minetest.get_modpath("testtools") .. "/light.lua") --- TODO: Add a Node Metadata tool - minetest.register_tool("testtools:param2tool", { description = S("Param2 Tool") .."\n".. S("Modify param2 value of nodes") .."\n".. @@ -111,25 +109,6 @@ minetest.register_tool("testtools:node_setter", { end, }) -minetest.register_on_player_receive_fields(function(player, formname, fields) - if formname == "testtools:node_setter" then - local playername = player:get_player_name() - local witem = player:get_wielded_item() - if witem:get_name() == "testtools:node_setter" then - if fields.nodename and fields.param2 then - local param2 = tonumber(fields.param2) - if not param2 then - return - end - local meta = witem:get_meta() - meta:set_string("node", fields.nodename) - meta:set_int("node_param2", param2) - player:set_wielded_item(witem) - end - end - end -end) - minetest.register_tool("testtools:remover", { description = S("Remover") .."\n".. S("Punch: Remove pointed node or object"), @@ -634,6 +613,54 @@ minetest.register_tool("testtools:object_attacher", { end, }) +local function print_object(obj) + if obj:is_player() then + return "player '"..obj:get_player_name().."'" + elseif obj:get_luaentity() then + return "LuaEntity '"..obj:get_luaentity().name.."'" + else + return "object" + end +end + +minetest.register_tool("testtools:children_getter", { + description = S("Children Getter") .."\n".. + S("Shows list of objects attached to object") .."\n".. + S("Punch object to show its 'children'") .."\n".. + S("Punch air to show your own 'children'"), + inventory_image = "testtools_children_getter.png", + groups = { testtool = 1, disable_repair = 1 }, + on_use = function(itemstack, user, pointed_thing) + if user and user:is_player() then + local name = user:get_player_name() + local selected_object + local self_name + if pointed_thing.type == "object" then + selected_object = pointed_thing.ref + elseif pointed_thing.type == "nothing" then + selected_object = user + else + return + end + self_name = print_object(selected_object) + local children = selected_object:get_children() + local ret = "" + for c=1, #children do + ret = ret .. "* " .. print_object(children[c]) + if c < #children then + ret = ret .. "\n" + end + end + if ret == "" then + ret = S("No children attached to @1.", self_name) + else + ret = S("Children of @1:", self_name) .. "\n" .. ret + end + minetest.chat_send_player(user:get_player_name(), ret) + end + end, +}) + -- Use loadstring to parse param as a Lua value local function use_loadstring(param, player) -- For security reasons, require 'server' priv, just in case @@ -666,6 +693,68 @@ local function use_loadstring(param, player) return true, errOrResult end +-- Node Meta Editor +local node_meta_posses = {} +local node_meta_latest_keylist = {} + +local function show_node_meta_formspec(user, pos, key, value, keylist) + local textlist + if keylist then + textlist = "textlist[0,0.5;2.5,6.5;keylist;"..keylist.."]" + else + textlist = "" + end + minetest.show_formspec(user:get_player_name(), + "testtools:node_meta_editor", + "size[15,9]".. + "label[0,0;"..F(S("Current keys:")).."]".. + textlist.. + "field[3,0.5;12,1;key;"..F(S("Key"))..";"..F(key).."]".. + "textarea[3,1.5;12,6;value;"..F(S("Value (use empty value to delete key)"))..";"..F(value).."]".. + "button[0,8;3,1;get;"..F(S("Get value")).."]".. + "button[4,8;3,1;set;"..F(S("Set value")).."]".. + "label[0,7.2;"..F(S("pos = @1", minetest.pos_to_string(pos))).."]") +end + +local function get_node_meta_keylist(meta, playername, escaped) + local keys = {} + local ekeys = {} + local mtable = meta:to_table() + for k,_ in pairs(mtable.fields) do + table.insert(keys, k) + if escaped then + table.insert(ekeys, F(k)) + else + table.insert(ekeys, k) + end + end + if playername then + node_meta_latest_keylist[playername] = keys + end + return table.concat(ekeys, ",") +end + +minetest.register_tool("testtools:node_meta_editor", { + description = S("Node Meta Editor") .. "\n" .. + S("Place: Edit node metadata"), + inventory_image = "testtools_node_meta_editor.png", + groups = { testtool = 1, disable_repair = 1 }, + on_place = function(itemstack, user, pointed_thing) + if pointed_thing.type ~= "node" then + return itemstack + end + if not user:is_player() then + return itemstack + end + local pos = pointed_thing.under + node_meta_posses[user:get_player_name()] = pos + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + show_node_meta_formspec(user, pos, "", "", get_node_meta_keylist(meta, user:get_player_name(), true)) + return itemstack + end, +}) + minetest.register_on_player_receive_fields(function(player, formname, fields) if not (player and player:is_player()) then return @@ -728,5 +817,70 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) editor_formspec(name, selected_objects[name], prop_to_string(props[key]), sel) return end + elseif formname == "testtools:node_setter" then + local playername = player:get_player_name() + local witem = player:get_wielded_item() + if witem:get_name() == "testtools:node_setter" then + if fields.nodename and fields.param2 then + local param2 = tonumber(fields.param2) + if not param2 then + return + end + local meta = witem:get_meta() + meta:set_string("node", fields.nodename) + meta:set_int("node_param2", param2) + player:set_wielded_item(witem) + end + end + elseif formname == "testtools:node_meta_editor" then + local name = player:get_player_name() + local pos = node_meta_posses[name] + if fields.keylist then + local evnt = minetest.explode_textlist_event(fields.keylist) + if evnt.type == "DCL" or evnt.type == "CHG" then + local keylist_table = node_meta_latest_keylist[name] + if not pos then + return + end + local meta = minetest.get_meta(pos) + if not keylist_table then + return + end + if #keylist_table == 0 then + return + end + local key = keylist_table[evnt.index] + local value = meta:get_string(key) + local keylist_escaped = {} + for k,v in pairs(keylist_table) do + keylist_escaped[k] = F(v) + end + local keylist = table.concat(keylist_escaped, ",") + show_node_meta_formspec(player, pos, key, value, keylist) + return + end + elseif fields.key and fields.key ~= "" and fields.value then + if not pos then + return + end + local meta = minetest.get_meta(pos) + if fields.get then + local value = meta:get_string(fields.key) + show_node_meta_formspec(player, pos, fields.key, value, + get_node_meta_keylist(meta, name, true)) + return + elseif fields.set then + meta:set_string(fields.key, fields.value) + show_node_meta_formspec(player, pos, fields.key, fields.value, + get_node_meta_keylist(meta, name, true)) + return + end + end end end) + +minetest.register_on_leaveplayer(function(player) + local name = player:get_player_name() + node_meta_latest_keylist[name] = nil + node_meta_posses[name] = nil +end) diff --git a/games/devtest/mods/testtools/light.lua b/games/devtest/mods/testtools/light.lua index a9458ca6b..afca9a489 100644 --- a/games/devtest/mods/testtools/light.lua +++ b/games/devtest/mods/testtools/light.lua @@ -1,22 +1,37 @@ local S = minetest.get_translator("testtools") -minetest.register_tool("testtools:lighttool", { - description = S("Light tool"), - inventory_image = "testtools_lighttool.png", - groups = { testtool = 1, disable_repair = 1 }, - on_use = function(itemstack, user, pointed_thing) - local pos = pointed_thing.above +local function get_func(is_place) + return function(itemstack, user, pointed_thing) + local pos + if is_place then + pos = pointed_thing.under + else + pos = pointed_thing.above + end if pointed_thing.type ~= "node" or not pos then return end local node = minetest.get_node(pos) + local pstr = minetest.pos_to_string(pos) local time = minetest.get_timeofday() local sunlight = minetest.get_natural_light(pos) local artificial = minetest.get_artificial_light(node.param1) - local message = ("param1 0x%02x | time %.5f | sunlight %d | artificial %d") - :format(node.param1, time, sunlight, artificial) + local message = ("pos=%s | param1=0x%02x | " .. + "sunlight=%d | artificial=%d | timeofday=%.5f" ) + :format(pstr, node.param1, sunlight, artificial, time) minetest.chat_send_player(user:get_player_name(), message) end +end + +minetest.register_tool("testtools:lighttool", { + description = S("Light Tool") .. "\n" .. + S("Show light values of node") .. "\n" .. + S("Punch: Light of node above touched node") .. "\n" .. + S("Place: Light of touched node itself"), + inventory_image = "testtools_lighttool.png", + groups = { testtool = 1, disable_repair = 1 }, + on_use = get_func(false), + on_place = get_func(true), }) diff --git a/games/devtest/mods/testtools/textures/testtools_children_getter.png b/games/devtest/mods/testtools/textures/testtools_children_getter.png Binary files differnew file mode 100644 index 000000000..b7fa34025 --- /dev/null +++ b/games/devtest/mods/testtools/textures/testtools_children_getter.png diff --git a/games/devtest/mods/testtools/textures/testtools_node_meta_editor.png b/games/devtest/mods/testtools/textures/testtools_node_meta_editor.png Binary files differnew file mode 100644 index 000000000..89eafd65c --- /dev/null +++ b/games/devtest/mods/testtools/textures/testtools_node_meta_editor.png diff --git a/games/devtest/mods/unittests/itemdescription.lua b/games/devtest/mods/unittests/itemdescription.lua index 1d0826545..d6ee6551a 100644 --- a/games/devtest/mods/unittests/itemdescription.lua +++ b/games/devtest/mods/unittests/itemdescription.lua @@ -26,15 +26,22 @@ minetest.register_chatcommand("item_description", { }) function unittests.test_short_desc() + local function get_short_description(item) + return ItemStack(item):get_short_description() + end + local stack = ItemStack("unittests:colorful_pick") assert(stack:get_short_description() == "Colorful Pickaxe") - assert(stack:get_short_description() == minetest.registered_items["unittests:colorful_pick"].short_description) + assert(get_short_description("unittests:colorful_pick") == "Colorful Pickaxe") + assert(minetest.registered_items["unittests:colorful_pick"].short_description == nil) assert(stack:get_description() == full_description) assert(stack:get_description() == minetest.registered_items["unittests:colorful_pick"].description) stack:get_meta():set_string("description", "Hello World") - assert(stack:get_short_description() == "Colorful Pickaxe") + assert(stack:get_short_description() == "Hello World") assert(stack:get_description() == "Hello World") + assert(get_short_description(stack) == "Hello World") + assert(get_short_description("unittests:colorful_pick") == "Colorful Pickaxe") stack:get_meta():set_string("short_description", "Foo Bar") assert(stack:get_short_description() == "Foo Bar") diff --git a/games/devtest/mods/unittests/mod.conf b/games/devtest/mods/unittests/mod.conf index 0d5e3c959..fa94e01a6 100644 --- a/games/devtest/mods/unittests/mod.conf +++ b/games/devtest/mods/unittests/mod.conf @@ -1,2 +1,3 @@ name = unittests description = Adds automated unit tests for the engine +depends = basenodes diff --git a/games/devtest/mods/unittests/textures/default_dirt.png b/games/devtest/mods/unittests/textures/default_dirt.png Binary files differnew file mode 100644 index 000000000..58670305d --- /dev/null +++ b/games/devtest/mods/unittests/textures/default_dirt.png diff --git a/minetest.conf.example b/minetest.conf.example index 524ef6334..1e9f6b2d9 100644 --- a/minetest.conf.example +++ b/minetest.conf.example @@ -515,6 +515,11 @@ ### Basic +# Whether nametag backgrounds should be shown by default. +# Mods may still set a background. +# type: bool +# show_nametag_backgrounds = true + # Enable vertex buffer objects. # This should greatly improve graphics performance. # type: bool @@ -1310,7 +1315,7 @@ # type: bool # enable_damage = false -# Enable creative mode for new created maps. +# Enable creative mode for all players # type: bool # creative_mode = false diff --git a/misc/Info.plist b/misc/Info.plist index 1498ee474..0491d2fc1 100644 --- a/misc/Info.plist +++ b/misc/Info.plist @@ -8,7 +8,13 @@ <string>minetest</string> <key>CFBundleIconFile</key> <string>minetest-icon.icns</string> + <key>CFBundleName</key> + <string>Minetest</string> + <key>CFBundleDisplayName</key> + <string>Minetest</string> <key>CFBundleIdentifier</key> <string>net.minetest.minetest</string> + <key>NSHighResolutionCapable</key> + <false/> </dict> </plist> diff --git a/misc/debpkg-control b/misc/debpkg-control index 30dc94088..1fef17fd9 100644 --- a/misc/debpkg-control +++ b/misc/debpkg-control @@ -2,8 +2,8 @@ Section: games Priority: extra Standards-Version: 3.6.2 Package: minetest-staging -Version: 0.4.15-DATEPLACEHOLDER -Depends: libc6, libcurl3-gnutls, libfreetype6, libirrlicht1.8, libjsoncpp1, LEVELDB_PLACEHOLDER, liblua5.1-0, libluajit-5.1-2, libopenal1, libsqlite3-0, libstdc++6, libvorbisfile3, libx11-6, zlib1g +Version: 5.4.0-DATEPLACEHOLDER +Depends: libc6, libcurl3-gnutls, libfreetype6, libgl1, JPEG_PLACEHOLDER, libjsoncpp1, LEVELDB_PLACEHOLDER, libopenal1, libpng16-16, libsqlite3-0, libstdc++6, libvorbisfile3, libx11-6, libxxf86vm1, zlib1g Maintainer: Loic Blot <loic.blot@unix-experience.fr> Homepage: https://www.minetest.net/ Vcs-Git: https://github.com/minetest/minetest.git @@ -12,15 +12,12 @@ Architecture: amd64 Build-Depends: cmake, gettext, - libbz2-dev, libcurl4-gnutls-dev, libfreetype6-dev, - libglu1-mesa-dev, - libirrlicht-dev (>= 1.7.0), + libgl1-mesa-dev, libjpeg-dev, libjsoncpp-dev, libleveldb-dev, - libluajit-5.1-dev | liblua5.1-dev, libogg-dev, libopenal-dev, libpng-dev, @@ -28,7 +25,7 @@ Build-Depends: libvorbis-dev, libx11-dev, zlib1g-dev -Description: Multiplayer infinite-world block sandbox (server) +Description: Multiplayer infinite-world block sandbox game Minetest is a minecraft-inspired game written from scratch and licensed under the LGPL (version 2.1 or later). It supports both survival and creative modes along with multiplayer support, dynamic lighting, and an "infinite" map diff --git a/misc/net.minetest.minetest.appdata.xml b/misc/net.minetest.minetest.appdata.xml index c177c3713..0e5397b37 100644 --- a/misc/net.minetest.minetest.appdata.xml +++ b/misc/net.minetest.minetest.appdata.xml @@ -62,6 +62,6 @@ <translation type="gettext">minetest</translation> <update_contact>sfan5@live.de</update_contact> <releases> - <release date="2020-07-09" version="5.3.0"/> + <release date="2021-02-23" version="5.4.0"/> </releases> </component> diff --git a/po/ar/minetest.po b/po/ar/minetest.po index 530715a6d..1ab09c2bd 100644 --- a/po/ar/minetest.po +++ b/po/ar/minetest.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: minetest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-01-30 21:13+0100\n" +"POT-Creation-Date: 2021-02-23 19:03+0100\n" "PO-Revision-Date: 2020-10-29 16:26+0000\n" "Last-Translator: abidin toumi <abidin24@disroot.org>\n" "Language-Team: Arabic <https://hosted.weblate.org/projects/minetest/minetest/" @@ -707,6 +707,11 @@ msgid "Loading..." msgstr "ÙŠØÙ…Ù„..." #: builtin/mainmenu/serverlistmgr.lua +#, fuzzy +msgid "Public server list is disabled" +msgstr "البرمجة النصية للعميل معطلة" + +#: builtin/mainmenu/serverlistmgr.lua msgid "Try reenabling public serverlist and check your internet connection." msgstr "جرب إعادة تمكين قائمة الØÙˆØ§Ø¯Ù… العامة وتØÙ‚Ù‚ من إتصالك بالانترنت." @@ -2934,7 +2939,7 @@ msgid "Enable console window" msgstr "" #: src/settings_translation_file.cpp -msgid "Enable creative mode for new created maps." +msgid "Enable creative mode for all players" msgstr "" #: src/settings_translation_file.cpp @@ -5636,6 +5641,10 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp +msgid "Show nametag backgrounds by default" +msgstr "" + +#: src/settings_translation_file.cpp msgid "Shutdown message" msgstr "" @@ -6309,6 +6318,12 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp +msgid "" +"Whether nametag backgrounds should be shown by default.\n" +"Mods may still set a background." +msgstr "" + +#: src/settings_translation_file.cpp msgid "Whether node texture animations should be desynchronized per mapblock." msgstr "" diff --git a/po/be/minetest.po b/po/be/minetest.po index a10e7f28c..8b597ca4b 100644 --- a/po/be/minetest.po +++ b/po/be/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Belarusian (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-01-30 21:13+0100\n" +"POT-Creation-Date: 2021-02-23 19:03+0100\n" "PO-Revision-Date: 2019-11-19 23:04+0000\n" "Last-Translator: Viktar Vauchkevich <victorenator@gmail.com>\n" "Language-Team: Belarusian <https://hosted.weblate.org/projects/minetest/" @@ -725,6 +725,11 @@ msgid "Loading..." msgstr "Загрузка…" #: builtin/mainmenu/serverlistmgr.lua +#, fuzzy +msgid "Public server list is disabled" +msgstr "КліентÑÐºÑ–Ñ Ð¼Ð°Ð´Ñ‹Ñ„Ñ–ÐºÐ°Ñ†Ñ‹Ñ– выключаныÑ" + +#: builtin/mainmenu/serverlistmgr.lua msgid "Try reenabling public serverlist and check your internet connection." msgstr "" "ПаÑпрабуйце паўторна ўключыць ÑÐ¿Ñ–Ñ Ð¿ÑƒÐ±Ð»Ñ–Ñ‡Ð½Ñ‹Ñ… Ñервераў Ñ– праверце злучÑнне з " @@ -3005,7 +3010,8 @@ msgid "Enable console window" msgstr "Уключаць акно канÑолі" #: src/settings_translation_file.cpp -msgid "Enable creative mode for new created maps." +#, fuzzy +msgid "Enable creative mode for all players" msgstr "Уключыць творчы Ñ€Ñжым Ð´Ð»Ñ Ð½Ð¾Ð²Ñ‹Ñ… мап." #: src/settings_translation_file.cpp @@ -6267,6 +6273,10 @@ msgstr "" "ПаÑÐ»Ñ Ð·Ð¼ÐµÐ½Ñ‹ мовы патрÑбна перазапуÑціць гульню." #: src/settings_translation_file.cpp +msgid "Show nametag backgrounds by default" +msgstr "" + +#: src/settings_translation_file.cpp msgid "Shutdown message" msgstr "Паведамленне аб выключÑнні" @@ -7075,6 +7085,12 @@ msgstr "" "Ð¿Ð°Ð´Ñ‡Ð°Ñ ÐºÐ°Ð¼Ð¿Ñ–Ð»Ñцыі." #: src/settings_translation_file.cpp +msgid "" +"Whether nametag backgrounds should be shown by default.\n" +"Mods may still set a background." +msgstr "" + +#: src/settings_translation_file.cpp msgid "Whether node texture animations should be desynchronized per mapblock." msgstr "" "Ці павінна быць паміж блокамі мапы дÑÑÑ–Ð½Ñ…Ñ€Ð°Ð½Ñ–Ð·Ð°Ñ†Ñ‹Ñ Ð°Ð½Ñ–Ð¼Ð°Ñ†Ñ‹Ñ– Ñ‚ÑкÑтур блокаў." diff --git a/po/bg/minetest.po b/po/bg/minetest.po index d6f284757..62011a94a 100644 --- a/po/bg/minetest.po +++ b/po/bg/minetest.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: minetest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-01-30 21:13+0100\n" +"POT-Creation-Date: 2021-02-23 19:03+0100\n" "PO-Revision-Date: 2020-08-04 04:41+0000\n" "Last-Translator: atomicbeef <teddyg522@gmail.com>\n" "Language-Team: Bulgarian <https://hosted.weblate.org/projects/minetest/" @@ -710,6 +710,10 @@ msgid "Loading..." msgstr "Зарежда..." #: builtin/mainmenu/serverlistmgr.lua +msgid "Public server list is disabled" +msgstr "" + +#: builtin/mainmenu/serverlistmgr.lua msgid "Try reenabling public serverlist and check your internet connection." msgstr "" "Опитай да включиш Ð¿ÑƒÐ±Ð»Ð¸Ñ‡Ð½Ð¸Ñ ÑпиÑък на Ñървъри отново и Ñи провай интернет " @@ -1109,7 +1113,7 @@ msgstr "" #. When in doubt, test your translation. #: src/client/fontengine.cpp msgid "needs_fallback_font" -msgstr "" +msgstr "no" #: src/client/game.cpp msgid "" @@ -1940,7 +1944,7 @@ msgstr "" #. language code (e.g. "de" for German). #: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp msgid "LANG_CODE" -msgstr "" +msgstr "bg" #: src/settings_translation_file.cpp msgid "" @@ -2849,7 +2853,7 @@ msgid "Enable console window" msgstr "" #: src/settings_translation_file.cpp -msgid "Enable creative mode for new created maps." +msgid "Enable creative mode for all players" msgstr "" #: src/settings_translation_file.cpp @@ -5551,6 +5555,10 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp +msgid "Show nametag backgrounds by default" +msgstr "" + +#: src/settings_translation_file.cpp msgid "Shutdown message" msgstr "" @@ -6224,6 +6232,12 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp +msgid "" +"Whether nametag backgrounds should be shown by default.\n" +"Mods may still set a background." +msgstr "" + +#: src/settings_translation_file.cpp msgid "Whether node texture animations should be desynchronized per mapblock." msgstr "" diff --git a/po/ca/minetest.po b/po/ca/minetest.po index c0f126b83..f9aecf265 100644 --- a/po/ca/minetest.po +++ b/po/ca/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Catalan (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-01-30 21:13+0100\n" +"POT-Creation-Date: 2021-02-23 19:03+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: Catalan <https://hosted.weblate.org/projects/minetest/" @@ -754,6 +754,10 @@ msgid "Loading..." msgstr "Carregant ..." #: builtin/mainmenu/serverlistmgr.lua +msgid "Public server list is disabled" +msgstr "" + +#: builtin/mainmenu/serverlistmgr.lua msgid "Try reenabling public serverlist and check your internet connection." msgstr "" "Intenta tornar a habilitar la llista de servidors públics i comprovi la seva " @@ -3051,7 +3055,7 @@ msgid "Enable console window" msgstr "" #: src/settings_translation_file.cpp -msgid "Enable creative mode for new created maps." +msgid "Enable creative mode for all players" msgstr "" #: src/settings_translation_file.cpp @@ -6026,6 +6030,10 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp +msgid "Show nametag backgrounds by default" +msgstr "" + +#: src/settings_translation_file.cpp msgid "Shutdown message" msgstr "" @@ -6719,6 +6727,12 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp +msgid "" +"Whether nametag backgrounds should be shown by default.\n" +"Mods may still set a background." +msgstr "" + +#: src/settings_translation_file.cpp msgid "Whether node texture animations should be desynchronized per mapblock." msgstr "" diff --git a/po/cs/minetest.po b/po/cs/minetest.po index 62cba7656..1bb3a4336 100644 --- a/po/cs/minetest.po +++ b/po/cs/minetest.po @@ -2,9 +2,9 @@ msgid "" msgstr "" "Project-Id-Version: Czech (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-01-30 21:13+0100\n" -"PO-Revision-Date: 2020-11-08 06:26+0000\n" -"Last-Translator: Janar Leas <janarleas+ubuntuone@googlemail.com>\n" +"POT-Creation-Date: 2021-02-23 19:03+0100\n" +"PO-Revision-Date: 2021-02-03 04:31+0000\n" +"Last-Translator: VÃt Skalický <vit.skalicky@email.cz>\n" "Language-Team: Czech <https://hosted.weblate.org/projects/minetest/minetest/" "cs/>\n" "Language: cs\n" @@ -12,7 +12,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -"X-Generator: Weblate 4.3.2\n" +"X-Generator: Weblate 4.5-dev\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" @@ -24,7 +24,7 @@ msgstr "ZemÅ™el jsi" #: builtin/fstk/dialog.lua builtin/fstk/ui.lua src/gui/modalMenu.cpp msgid "OK" -msgstr "" +msgstr "OK" #: builtin/fstk/ui.lua msgid "An error occurred in a Lua script:" @@ -108,7 +108,7 @@ msgstr "" #: builtin/mainmenu/dlg_config_world.lua msgid "Find More Mods" -msgstr "" +msgstr "NajÃt vÃce modů" #: builtin/mainmenu/dlg_config_world.lua msgid "Mod:" @@ -153,7 +153,7 @@ msgstr "zapnuto" #: builtin/mainmenu/dlg_contentstore.lua msgid "\"$1\" already exists. Would you like to overwrite it?" -msgstr "" +msgstr "\"$1\" již existuje. Chcete jej pÅ™epsat?" #: builtin/mainmenu/dlg_contentstore.lua msgid "$1 and $2 dependencies will be installed." @@ -161,18 +161,19 @@ msgstr "" #: builtin/mainmenu/dlg_contentstore.lua msgid "$1 by $2" -msgstr "" +msgstr "$1 od $2" #: builtin/mainmenu/dlg_contentstore.lua msgid "" "$1 downloading,\n" "$2 queued" msgstr "" +"$1 se stahuje,\n" +"$2 Äeká ve frontÄ›" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "$1 downloading..." -msgstr "Nahrávám..." +msgstr "$1 se stahuje..." #: builtin/mainmenu/dlg_contentstore.lua msgid "$1 required dependencies could not be found." @@ -720,6 +721,11 @@ msgid "Loading..." msgstr "Nahrávám..." #: builtin/mainmenu/serverlistmgr.lua +#, fuzzy +msgid "Public server list is disabled" +msgstr "Uživatelské skripty nejsou povoleny" + +#: builtin/mainmenu/serverlistmgr.lua msgid "Try reenabling public serverlist and check your internet connection." msgstr "" "Zkuste znovu povolit seznam veÅ™ejných serverů a zkontrolujte své internetové " @@ -3008,7 +3014,8 @@ msgid "Enable console window" msgstr "Povolit konzolové okno" #: src/settings_translation_file.cpp -msgid "Enable creative mode for new created maps." +#, fuzzy +msgid "Enable creative mode for all players" msgstr "Zapnout kreativnà mód pro nové mapy." #: src/settings_translation_file.cpp @@ -6123,6 +6130,10 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp +msgid "Show nametag backgrounds by default" +msgstr "" + +#: src/settings_translation_file.cpp msgid "Shutdown message" msgstr "Zpráva o vypnutÃ" @@ -6813,6 +6824,12 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp +msgid "" +"Whether nametag backgrounds should be shown by default.\n" +"Mods may still set a background." +msgstr "" + +#: src/settings_translation_file.cpp msgid "Whether node texture animations should be desynchronized per mapblock." msgstr "" diff --git a/po/da/minetest.po b/po/da/minetest.po index efa336141..5a11a9779 100644 --- a/po/da/minetest.po +++ b/po/da/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Danish (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-01-30 21:13+0100\n" +"POT-Creation-Date: 2021-02-23 19:03+0100\n" "PO-Revision-Date: 2020-03-31 10:14+0000\n" "Last-Translator: sfan5 <sfan5@live.de>\n" "Language-Team: Danish <https://hosted.weblate.org/projects/minetest/minetest/" @@ -729,6 +729,10 @@ msgid "Loading..." msgstr "Indlæser..." #: builtin/mainmenu/serverlistmgr.lua +msgid "Public server list is disabled" +msgstr "" + +#: builtin/mainmenu/serverlistmgr.lua msgid "Try reenabling public serverlist and check your internet connection." msgstr "" "Prøv at slÃ¥ den offentlige serverliste fra og til, og tjek din internet " @@ -3022,7 +3026,8 @@ msgid "Enable console window" msgstr "Aktivér konsolvindue" #: src/settings_translation_file.cpp -msgid "Enable creative mode for new created maps." +#, fuzzy +msgid "Enable creative mode for all players" msgstr "Aktivér kreativ tilstand for nyoprettede kort." #: src/settings_translation_file.cpp @@ -6254,6 +6259,10 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp +msgid "Show nametag backgrounds by default" +msgstr "" + +#: src/settings_translation_file.cpp msgid "Shutdown message" msgstr "Nedlukningsbesked" @@ -6949,6 +6958,12 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp +msgid "" +"Whether nametag backgrounds should be shown by default.\n" +"Mods may still set a background." +msgstr "" + +#: src/settings_translation_file.cpp msgid "Whether node texture animations should be desynchronized per mapblock." msgstr "" diff --git a/po/de/minetest.po b/po/de/minetest.po index 0a202df74..484c4707f 100644 --- a/po/de/minetest.po +++ b/po/de/minetest.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: German (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-01-30 21:13+0100\n" -"PO-Revision-Date: 2020-06-15 22:41+0000\n" +"POT-Creation-Date: 2021-02-23 19:03+0100\n" +"PO-Revision-Date: 2021-02-13 08:50+0000\n" "Last-Translator: Wuzzy <almikes@aol.com>\n" "Language-Team: German <https://hosted.weblate.org/projects/minetest/minetest/" "de/>\n" @@ -12,7 +12,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.1\n" +"X-Generator: Weblate 4.5-dev\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" @@ -52,11 +52,11 @@ msgstr "Protokollversion stimmt nicht überein. " #: builtin/mainmenu/common.lua msgid "Server enforces protocol version $1. " -msgstr "Server erfordert Protokollversion $1. " +msgstr "Der Server erfordert Protokollversion $1. " #: builtin/mainmenu/common.lua msgid "Server supports protocol versions between $1 and $2. " -msgstr "Server unterstützt Protokollversionen zwischen $1 und $2. " +msgstr "Der Server unterstützt die Protokollversionen von $1 bis $2. " #: builtin/mainmenu/common.lua msgid "We only support protocol version $1." @@ -103,8 +103,8 @@ msgid "" "Failed to enable mod \"$1\" as it contains disallowed characters. Only " "characters [a-z0-9_] are allowed." msgstr "" -"Fehler beim Aktivieren der Mod „$1“, da sie unerlaubte Zeichen enthält. Nur " -"die folgenden Zeichen sind erlaubt: [a-z0-9_]." +"Die Mod „$1“ konnte nicht aktiviert werden, da sie unzulässige Zeichen " +"enthält. Nur die folgenden Zeichen sind erlaubt: [a-z0-9_]." #: builtin/mainmenu/dlg_config_world.lua msgid "Find More Mods" @@ -124,7 +124,7 @@ msgstr "Keine Spielbeschreibung verfügbar." #: builtin/mainmenu/dlg_config_world.lua msgid "No hard dependencies" -msgstr "Keine harten Abhängigkeiten" +msgstr "Keine notwendigen Abhängigkeiten" #: builtin/mainmenu/dlg_config_world.lua msgid "No modpack description provided." @@ -145,7 +145,7 @@ msgstr "Speichern" #: builtin/mainmenu/dlg_config_world.lua msgid "World:" -msgstr "Welt:" +msgstr "Weltname:" #: builtin/mainmenu/dlg_config_world.lua msgid "enabled" @@ -153,52 +153,51 @@ msgstr "Aktiviert" #: builtin/mainmenu/dlg_contentstore.lua msgid "\"$1\" already exists. Would you like to overwrite it?" -msgstr "" +msgstr "„$1“ existiert bereits. Wollen Sie es überschreiben?" #: builtin/mainmenu/dlg_contentstore.lua msgid "$1 and $2 dependencies will be installed." -msgstr "" +msgstr "$1 und $2 Abhängigkeiten werden installiert." #: builtin/mainmenu/dlg_contentstore.lua msgid "$1 by $2" -msgstr "" +msgstr "$1 von $2" #: builtin/mainmenu/dlg_contentstore.lua msgid "" "$1 downloading,\n" "$2 queued" msgstr "" +"$1 laden herunter,\n" +"$2 warten" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "$1 downloading..." -msgstr "Herunterladen …" +msgstr "$1 laden herunter…" #: builtin/mainmenu/dlg_contentstore.lua msgid "$1 required dependencies could not be found." -msgstr "" +msgstr "$1 benötigte Abhängigkeiten konnten nicht gefunden werden." #: builtin/mainmenu/dlg_contentstore.lua msgid "$1 will be installed, and $2 dependencies will be skipped." -msgstr "" +msgstr "$1 wird installiert und $2 Abhängigkeiten werden übersprungen." #: builtin/mainmenu/dlg_contentstore.lua msgid "All packages" msgstr "Alle Pakete" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "Already installed" -msgstr "Taste bereits in Benutzung" +msgstr "Bereits installiert" #: builtin/mainmenu/dlg_contentstore.lua msgid "Back to Main Menu" msgstr "Zurück zum Hauptmenü" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "Base Game:" -msgstr "Spiel hosten" +msgstr "Basis-Spiel:" #: builtin/mainmenu/dlg_contentstore.lua msgid "ContentDB is not available when Minetest was compiled without cURL" @@ -223,14 +222,12 @@ msgid "Install" msgstr "Installieren" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "Install $1" -msgstr "Installieren" +msgstr "$1 installieren" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "Install missing dependencies" -msgstr "Optionale Abhängigkeiten:" +msgstr "Fehlende Abhängigkeiten installieren" #: builtin/mainmenu/dlg_contentstore.lua #: builtin/mainmenu/dlg_settings_advanced.lua @@ -239,33 +236,31 @@ msgstr "Mods" #: builtin/mainmenu/dlg_contentstore.lua msgid "No packages could be retrieved" -msgstr "Es konnten keine Pakete empfangen werden" +msgstr "Es konnten keine Pakete abgerufen werden" #: builtin/mainmenu/dlg_contentstore.lua msgid "No results" msgstr "Keine Treffer" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "No updates" -msgstr "Aktualisieren" +msgstr "Keine Updates" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "Not found" -msgstr "Ton verstummen" +msgstr "Nicht gefunden" #: builtin/mainmenu/dlg_contentstore.lua msgid "Overwrite" -msgstr "" +msgstr "Überschreiben" #: builtin/mainmenu/dlg_contentstore.lua msgid "Please check that the base game is correct." -msgstr "" +msgstr "Bitte prüfen Sie, ob das Basis-Spiel korrekt ist." #: builtin/mainmenu/dlg_contentstore.lua msgid "Queued" -msgstr "" +msgstr "Eingereiht" #: builtin/mainmenu/dlg_contentstore.lua msgid "Texture packs" @@ -281,11 +276,11 @@ msgstr "Aktualisieren" #: builtin/mainmenu/dlg_contentstore.lua msgid "Update All [$1]" -msgstr "" +msgstr "Alle aktualisieren [$1]" #: builtin/mainmenu/dlg_contentstore.lua msgid "View more information in a web browser" -msgstr "" +msgstr "Mehr Informationen im Webbrowser anschauen" #: builtin/mainmenu/dlg_create_world.lua msgid "A world named \"$1\" already exists" @@ -378,7 +373,7 @@ msgstr "Seen" #: builtin/mainmenu/dlg_create_world.lua msgid "Low humidity and high heat causes shallow or dry rivers" msgstr "" -"Niedrige Luftfeuchtigkeit und hohe Hitze erzeugen seichte oder " +"Niedrige Luftfeuchtigkeit und große Wärme erzeugen seichte oder " "ausgetrocknete Flüsse" #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp @@ -399,7 +394,7 @@ msgstr "Berge" #: builtin/mainmenu/dlg_create_world.lua msgid "Mud flow" -msgstr "Schlammfließen" +msgstr "Erosion" #: builtin/mainmenu/dlg_create_world.lua msgid "Network of tunnels and caves" @@ -411,11 +406,11 @@ msgstr "Kein Spiel ausgewählt" #: builtin/mainmenu/dlg_create_world.lua msgid "Reduces heat with altitude" -msgstr "Reduziert Hitze mit der Höhe" +msgstr "Reduziert die Wärme mit der Höhe" #: builtin/mainmenu/dlg_create_world.lua msgid "Reduces humidity with altitude" -msgstr "Reduziert Luftfeuchte mit der Höhe" +msgstr "Reduziert Luftfeuchtigkeit mit der Höhe" #: builtin/mainmenu/dlg_create_world.lua msgid "Rivers" @@ -423,12 +418,12 @@ msgstr "Flüsse" #: builtin/mainmenu/dlg_create_world.lua msgid "Sea level rivers" -msgstr "Flüsse am Meeresspiegel" +msgstr "Flüsse auf Meeresspiegelhöhe" #: builtin/mainmenu/dlg_create_world.lua #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Seed" -msgstr "Seed" +msgstr "Startwert (Seed)" #: builtin/mainmenu/dlg_create_world.lua msgid "Smooth transition between biomes" @@ -439,13 +434,13 @@ msgid "" "Structures appearing on the terrain (no effect on trees and jungle grass " "created by v6)" msgstr "" -"Gebäude, die auf dem Gelände auftauchen (keine Wirkung auf von v6 erzeugte " -"Bäume u. Dschungelgras)" +"Strukturen, die auf dem Gelände auftauchen (keine Wirkung auf von v6 " +"erzeugte Bäume u. Dschungelgras)" #: builtin/mainmenu/dlg_create_world.lua msgid "Structures appearing on the terrain, typically trees and plants" msgstr "" -"Gebäude, die auf dem Gelände auftauchen, üblicherweise Bäume und Pflanzen" +"Strukturen, die auf dem Gelände auftauchen, üblicherweise Bäume und Pflanzen" #: builtin/mainmenu/dlg_create_world.lua msgid "Temperate, Desert" @@ -489,7 +484,7 @@ msgstr "Es sind keine Spiele installiert." #: builtin/mainmenu/dlg_delete_content.lua msgid "Are you sure you want to delete \"$1\"?" -msgstr "Sind Sie sich sicher, dass Sie „$1“ löschen wollen?" +msgstr "Sind Sie sicher, dass „$1“ gelöscht werden soll?" #: builtin/mainmenu/dlg_delete_content.lua #: builtin/mainmenu/dlg_delete_world.lua builtin/mainmenu/tab_local.lua @@ -499,7 +494,7 @@ msgstr "Entfernen" #: builtin/mainmenu/dlg_delete_content.lua msgid "pkgmgr: failed to delete \"$1\"" -msgstr "pkgmgr: Fehler beim Löschen von „$1“" +msgstr "pkgmgr: Fehler beim Entfernen von „$1“" #: builtin/mainmenu/dlg_delete_content.lua msgid "pkgmgr: invalid path \"$1\"" @@ -507,7 +502,7 @@ msgstr "pkgmgr: Ungültiger Pfad „$1“" #: builtin/mainmenu/dlg_delete_world.lua msgid "Delete World \"$1\"?" -msgstr "Welt „$1“ löschen?" +msgstr "Die Welt „$1“ löschen?" #: builtin/mainmenu/dlg_rename_modpack.lua msgid "Accept" @@ -547,7 +542,7 @@ msgstr "Deaktiviert" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Edit" -msgstr "Ändern" +msgstr "Bearbeiten" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Enabled" @@ -599,7 +594,7 @@ msgstr "Datei auswählen" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Show technical names" -msgstr "Technische Namen zeigen" +msgstr "Techn. Bezeichnung zeigen" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "The value must be at least $1." @@ -670,12 +665,12 @@ msgstr "Fehler bei der Installation von $1 nach $2" #: builtin/mainmenu/pkgmgr.lua msgid "Install Mod: Unable to find real mod name for: $1" -msgstr "Mod installieren: Echter Modname für $1 konnte nicht gefunden werden" +msgstr "Modinstallation: Richtiger Modname für $1 konnte nicht gefunden werden" #: builtin/mainmenu/pkgmgr.lua msgid "Install Mod: Unable to find suitable folder name for modpack $1" msgstr "" -"Mod installieren: Geeigneter Verzeichnisname für Modpack $1 konnte nicht " +"Modinstallation: Geeigneter Verzeichnisname für Modpack $1 konnte nicht " "gefunden werden" #: builtin/mainmenu/pkgmgr.lua @@ -693,33 +688,38 @@ msgstr "Keine gültige Mod oder Modpack gefunden" #: builtin/mainmenu/pkgmgr.lua msgid "Unable to install a $1 as a texture pack" -msgstr "Fehler bei der Installation von $1 als Texturenpaket" +msgstr "Fehler bei der Texturenpaket-Installation von $1" #: builtin/mainmenu/pkgmgr.lua msgid "Unable to install a game as a $1" -msgstr "Fehler bei der Installation eines Spiels als $1" +msgstr "Fehler bei der Spiel-Installation von $1" #: builtin/mainmenu/pkgmgr.lua msgid "Unable to install a mod as a $1" -msgstr "Fehler bei der Installation einer Mod als $1" +msgstr "Fehler bei der Mod-Installation von $1" #: builtin/mainmenu/pkgmgr.lua msgid "Unable to install a modpack as a $1" -msgstr "Fehler bei der Installation eines Modpacks als $1" +msgstr "Fehler bei der Modpack-Installation von $1" #: builtin/mainmenu/serverlistmgr.lua src/client/game.cpp msgid "Loading..." msgstr "Lädt …" #: builtin/mainmenu/serverlistmgr.lua +#, fuzzy +msgid "Public server list is disabled" +msgstr "Clientseitige Skripte sind deaktiviert" + +#: builtin/mainmenu/serverlistmgr.lua msgid "Try reenabling public serverlist and check your internet connection." msgstr "" -"Versuchen Sie, die öffentliche Serverliste neu zu laden und prüfen Sie Ihre " +"Versuchen Sie die öffentliche Serverliste neu zu laden und prüfen Sie Ihre " "Internetverbindung." #: builtin/mainmenu/tab_content.lua msgid "Browse online content" -msgstr "Online-Inhalte durchsuchen" +msgstr "Onlineinhalte durchsuchen" #: builtin/mainmenu/tab_content.lua msgid "Content" @@ -770,15 +770,16 @@ msgid "Credits" msgstr "Mitwirkende" #: builtin/mainmenu/tab_credits.lua -#, fuzzy msgid "Open User Data Directory" -msgstr "Verzeichnis auswählen" +msgstr "Benutzerdatenverzeichnis öffnen" #: builtin/mainmenu/tab_credits.lua msgid "" "Opens the directory that contains user-provided worlds, games, mods,\n" "and texture packs in a file manager / explorer." msgstr "" +"Öffnet das Verzeichnis, welches die Welten, Spiele, Mods und\n" +"Texturenpakete des Benutzers enthält, im Datei-Manager." #: builtin/mainmenu/tab_credits.lua msgid "Previous Contributors" @@ -790,7 +791,7 @@ msgstr "Ehemalige Hauptentwickler" #: builtin/mainmenu/tab_local.lua msgid "Announce Server" -msgstr "Server ankündigen" +msgstr "Server veröffentlichen" #: builtin/mainmenu/tab_local.lua msgid "Bind Address" @@ -814,11 +815,11 @@ msgstr "Server hosten" #: builtin/mainmenu/tab_local.lua msgid "Install games from ContentDB" -msgstr "Spiele von ContentDB installieren" +msgstr "Spiele aus ContentDB installieren" #: builtin/mainmenu/tab_local.lua msgid "Name" -msgstr "" +msgstr "Name" #: builtin/mainmenu/tab_local.lua msgid "New" @@ -829,9 +830,8 @@ msgid "No world created or selected!" msgstr "Keine Welt angegeben oder ausgewählt!" #: builtin/mainmenu/tab_local.lua -#, fuzzy msgid "Password" -msgstr "Neues Passwort" +msgstr "Passwort" #: builtin/mainmenu/tab_local.lua msgid "Play Game" @@ -842,9 +842,8 @@ msgid "Port" msgstr "Port" #: builtin/mainmenu/tab_local.lua -#, fuzzy msgid "Select Mods" -msgstr "Welt wählen:" +msgstr "Mods auswählen" #: builtin/mainmenu/tab_local.lua msgid "Select World:" @@ -925,7 +924,7 @@ msgstr "Kantenglättung:" #: builtin/mainmenu/tab_settings.lua msgid "Autosave Screen Size" -msgstr "Monitorgröße automatisch merken" +msgstr "Fenstergröße merken" #: builtin/mainmenu/tab_settings.lua msgid "Bilinear Filter" @@ -933,7 +932,7 @@ msgstr "Bilinearer Filter" #: builtin/mainmenu/tab_settings.lua src/client/game.cpp msgid "Change Keys" -msgstr "Tasten ändern" +msgstr "Tastenbelegung" #: builtin/mainmenu/tab_settings.lua msgid "Connected Glass" @@ -957,11 +956,11 @@ msgstr "Kein Filter" #: builtin/mainmenu/tab_settings.lua msgid "No Mipmap" -msgstr "Keine Mipmap" +msgstr "Kein Mipmapping" #: builtin/mainmenu/tab_settings.lua msgid "Node Highlighting" -msgstr "Blöcke leuchten" +msgstr "Blöcke aufhellen" #: builtin/mainmenu/tab_settings.lua msgid "Node Outlining" @@ -996,9 +995,8 @@ msgid "Shaders" msgstr "Shader" #: builtin/mainmenu/tab_settings.lua -#, fuzzy msgid "Shaders (experimental)" -msgstr "Schwebeländer (experimentell)" +msgstr "Shader (experimentell)" #: builtin/mainmenu/tab_settings.lua msgid "Shaders (unavailable)" @@ -1018,11 +1016,11 @@ msgstr "Texturierung:" #: builtin/mainmenu/tab_settings.lua msgid "To enable shaders the OpenGL driver needs to be used." -msgstr "Um Shader zu benutzen, muss der OpenGL-Treiber benutzt werden." +msgstr "Um Shader zu aktivieren, muss der OpenGL-Treiber genutzt werden." #: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp msgid "Tone Mapping" -msgstr "Tone-Mapping" +msgstr "Dynamikkompression" #: builtin/mainmenu/tab_settings.lua msgid "Touchthreshold: (px)" @@ -1078,7 +1076,7 @@ msgstr "Spiel konnte nicht gefunden oder geladen werden: \"" #: src/client/clientlauncher.cpp msgid "Invalid gamespec." -msgstr "Ungültige Spielspezif." +msgstr "Ungültige Spielspezifikationen" #: src/client/clientlauncher.cpp msgid "Main Menu" @@ -1090,7 +1088,7 @@ msgstr "Keine Welt ausgewählt und keine Adresse angegeben. Nichts zu tun." #: src/client/clientlauncher.cpp msgid "Player name too long." -msgstr "Spielername zu lang." +msgstr "Der Spielername ist zu lang." #: src/client/clientlauncher.cpp msgid "Please choose a name!" @@ -1098,7 +1096,7 @@ msgstr "Bitte wählen Sie einen Namen!" #: src/client/clientlauncher.cpp msgid "Provided password file failed to open: " -msgstr "Fehler beim öffnen der ausgewählten Passwort-Datei: " +msgstr "Fehler beim Öffnen der angegebenen Passwortdatei: " #: src/client/clientlauncher.cpp msgid "Provided world path doesn't exist: " @@ -1122,7 +1120,7 @@ msgid "" "Check debug.txt for details." msgstr "" "\n" -"Siehe debug.txt für Details." +"Für mehr Details siehe debug.txt." #: src/client/game.cpp msgid "- Address: " @@ -1198,7 +1196,7 @@ msgid "Continue" msgstr "Weiter" #: src/client/game.cpp -#, fuzzy, c-format +#, c-format msgid "" "Controls:\n" "- %s: move forwards\n" @@ -1221,12 +1219,12 @@ msgstr "" "- %s: Nach links\n" "- %s: Nach rechts\n" "- %s: Springen/klettern\n" +"- %s: Graben/Schlagen\n" +"- %s: Bauen/Benutzen\n" "- %s: Kriechen/runter\n" "- %s: Gegenstand wegwerfen\n" "- %s: Inventar\n" "- Maus: Drehen/Umschauen\n" -"- Maus links: Graben/Schlagen\n" -"- Maus rechts: Bauen/Benutzen\n" "- Mausrad: Gegenstand wählen\n" "- %s: Chat\n" @@ -1248,7 +1246,7 @@ msgstr "Debug-Infos angezeigt" #: src/client/game.cpp msgid "Debug info, profiler graph, and wireframe hidden" -msgstr "Debug-Infos, Profiler-Graph und Drahtmodell verborgen" +msgstr "Debug-Infos, Profiler und Drahtgitter deaktiviert" #: src/client/game.cpp msgid "" @@ -1288,7 +1286,7 @@ msgstr "Unbegrenzte Sichtweite aktiviert" #: src/client/game.cpp msgid "Exit to Menu" -msgstr "Hauptmenü" +msgstr "Zum Hauptmenü" #: src/client/game.cpp msgid "Exit to OS" @@ -1340,7 +1338,7 @@ msgstr "Gehosteter Server" #: src/client/game.cpp msgid "Item definitions..." -msgstr "Gegenstands-Definitionen …" +msgstr "Gegenstandsdefinitionen …" #: src/client/game.cpp msgid "KiB/s" @@ -1400,7 +1398,7 @@ msgstr "Entfernter Server" #: src/client/game.cpp msgid "Resolving address..." -msgstr "Löse Adresse auf …" +msgstr "Adressauflösung …" #: src/client/game.cpp msgid "Shutting down..." @@ -1416,7 +1414,7 @@ msgstr "Tonlautstärke" #: src/client/game.cpp msgid "Sound muted" -msgstr "Ton verstummt" +msgstr "Ton stummgeschaltet" #: src/client/game.cpp msgid "Sound system is disabled" @@ -1428,7 +1426,7 @@ msgstr "Tonsystem ist in diesem Build nicht unterstützt" #: src/client/game.cpp msgid "Sound unmuted" -msgstr "Ton nicht mehr verstummt" +msgstr "Ton nicht mehr stumm" #: src/client/game.cpp #, c-format @@ -1452,7 +1450,7 @@ msgstr "Lautstärke auf %d%% gesetzt" #: src/client/game.cpp msgid "Wireframe shown" -msgstr "Drahtmodell angezeigt" +msgstr "Drahtmodell aktiv" #: src/client/game.cpp msgid "Zoom currently disabled by game or mod" @@ -1755,19 +1753,18 @@ msgid "Minimap hidden" msgstr "Übersichtskarte verborgen" #: src/client/minimap.cpp -#, fuzzy, c-format +#, c-format msgid "Minimap in radar mode, Zoom x%d" -msgstr "Übersichtskarte im Radarmodus, Zoom ×1" +msgstr "Übersichtskarte im Radarmodus, Zoom ×%d" #: src/client/minimap.cpp -#, fuzzy, c-format +#, c-format msgid "Minimap in surface mode, Zoom x%d" -msgstr "Übersichtskarte im Bodenmodus, Zoom ×1" +msgstr "Übersichtskarte im Bodenmodus, Zoom ×%d" #: src/client/minimap.cpp -#, fuzzy msgid "Minimap in texture mode" -msgstr "Minimale Texturengröße" +msgstr "Übersichtskarte im Texturmodus" #: src/gui/guiConfirmRegistration.cpp src/gui/guiPasswordChange.cpp msgid "Passwords do not match!" @@ -2087,7 +2084,7 @@ msgstr "3-Dimensionaler-Modus" #: src/settings_translation_file.cpp msgid "3D mode parallax strength" -msgstr "3D-Modus-Parallaxstärke" +msgstr "3-D-Modus-Parallaxstärke" #: src/settings_translation_file.cpp msgid "3D noise defining giant caverns." @@ -2109,7 +2106,7 @@ msgid "" "to be adjusted, as floatland tapering functions best when this noise has\n" "a value range of approximately -2.0 to 2.0." msgstr "" -"3D-Rauschen, das die Form von Schwebeländern definiert.\n" +"3-D-Rauschen, das die Form von Schwebeländern definiert.\n" "Falls vom Standardwert verschieden, müsste der Rauschwert „Skalierung“\n" "(standardmäßig 0.7) evtl. angepasst werden, da die Schwebeland-\n" "zuspitzung am Besten funktioniert, wenn dieses Rauschen\n" @@ -2188,7 +2185,7 @@ msgstr "ABM-Intervall" #: src/settings_translation_file.cpp msgid "ABM time budget" -msgstr "" +msgstr "ABM-Zeitbudget" #: src/settings_translation_file.cpp msgid "Absolute limit of queued blocks to emerge" @@ -2699,7 +2696,7 @@ msgstr "ContentDB: Schwarze Liste" #: src/settings_translation_file.cpp msgid "ContentDB Max Concurrent Downloads" -msgstr "" +msgstr "ContentDB Max. gleichzeitige Downloads" #: src/settings_translation_file.cpp msgid "ContentDB URL" @@ -2768,11 +2765,12 @@ msgid "Crosshair alpha" msgstr "Fadenkreuzundurchsichtigkeit" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Crosshair alpha (opaqueness, between 0 and 255).\n" "Also controls the object crosshair color" -msgstr "Fadenkreuzundurchsichtigkeit (Wert zwischen 0 und 255)." +msgstr "" +"Fadenkreuzundurchsichtigkeit (Wert zwischen 0 und 255).\n" +"Gilt auch für das Objektfadenkreuz" #: src/settings_translation_file.cpp msgid "Crosshair color" @@ -2783,6 +2781,8 @@ msgid "" "Crosshair color (R,G,B).\n" "Also controls the object crosshair color" msgstr "" +"Fadenkreuzfarbe (R,G,B).\n" +"Gilt auch für das Objektfadenkreuz" #: src/settings_translation_file.cpp msgid "DPI" @@ -2970,9 +2970,8 @@ msgid "Desynchronize block animation" msgstr "Blockanimationen desynchronisieren" #: src/settings_translation_file.cpp -#, fuzzy msgid "Dig key" -msgstr "Rechtstaste" +msgstr "Grabetaste" #: src/settings_translation_file.cpp msgid "Digging particles" @@ -3039,7 +3038,8 @@ msgid "Enable console window" msgstr "Konsolenfenster aktivieren" #: src/settings_translation_file.cpp -msgid "Enable creative mode for new created maps." +#, fuzzy +msgid "Enable creative mode for all players" msgstr "Kreativmodus für neu erstellte Karten aktivieren." #: src/settings_translation_file.cpp @@ -3147,7 +3147,7 @@ msgid "" "appearance of high dynamic range images. Mid-range contrast is slightly\n" "enhanced, highlights and shadows are gradually compressed." msgstr "" -"Aktiviert filmisches Tone-Mapping wie in Hables „Uncharted 2“.\n" +"Aktiviert filmische Dynamikkompression wie in Hables „Uncharted 2“.\n" "Simuliert die Tonkurve von fotografischem Film und wie dies das Aussehen\n" "von „High Dynamic Range“-Bildern annähert. Mittlerer Kontrast wird leicht\n" "verstärkt, aufleuchtende Bereiche und Schatten werden graduell komprimiert." @@ -3204,9 +3204,10 @@ msgstr "" "geeignet." #: src/settings_translation_file.cpp -#, fuzzy msgid "FPS when unfocused or paused" -msgstr "Maximale Bildwiederholrate, während das Spiel pausiert ist." +msgstr "" +"Maximale Bildwiederholrate, während das Spiel pausiert oder nicht fokussiert " +"ist" #: src/settings_translation_file.cpp msgid "FSAA" @@ -3287,7 +3288,7 @@ msgstr "Fülltiefenrauschen" #: src/settings_translation_file.cpp msgid "Filmic tone mapping" -msgstr "Filmisches Tone-Mapping" +msgstr "Filmische Dynamikkompression" #: src/settings_translation_file.cpp msgid "" @@ -3604,7 +3605,6 @@ msgid "HUD toggle key" msgstr "Taste zum Umschalten des HUD" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Handling for deprecated Lua API calls:\n" "- none: Do not log deprecated calls\n" @@ -3612,12 +3612,12 @@ msgid "" "- error: abort on usage of deprecated call (suggested for mod developers)." msgstr "" "Handhabung für veraltete Lua-API-Aufrufe:\n" -"- legacy: Versuchen, altes Verhalten zu imitieren (Standard für Release).\n" -"- log: Imitieren, und den Backtrace des veralteten Funktionsaufrufs " +"- none: Veraltete Aufrufe nicht protokollieren.\n" +"- log: Imitieren und den Backtrace des veralteten Funktionsaufrufs " "protokollieren\n" -" (Standard für Debug).\n" +" (Standard).\n" "- error: Bei Verwendung eines veralteten Funktionsaufrufs abbrechen\n" -" (empfohlen für Mod- Entwickler)." +" (empfohlen für Mod-Entwickler)." #: src/settings_translation_file.cpp msgid "" @@ -4159,9 +4159,8 @@ msgid "Joystick button repetition interval" msgstr "Joystick-Button-Wiederholungsrate" #: src/settings_translation_file.cpp -#, fuzzy msgid "Joystick deadzone" -msgstr "Joystick-Typ" +msgstr "Joystick-Totbereich" #: src/settings_translation_file.cpp msgid "Joystick frustum sensitivity" @@ -4266,13 +4265,12 @@ msgstr "" "html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Key for digging.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Taste zum Springen.\n" +"Taste zum Graben.\n" "Siehe http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" @@ -4419,13 +4417,12 @@ msgstr "" "html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Key for placing.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Taste zum Springen.\n" +"Taste zum Bauen.\n" "Siehe http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" @@ -5201,11 +5198,11 @@ msgstr "Macht alle Flüssigkeiten undurchsichtig" #: src/settings_translation_file.cpp msgid "Map Compression Level for Disk Storage" -msgstr "" +msgstr "Kartenkompressionsstufe für Festspeicher" #: src/settings_translation_file.cpp msgid "Map Compression Level for Network Transfer" -msgstr "" +msgstr "Kartenkompressionsstufe für Netzwerkverkehr" #: src/settings_translation_file.cpp msgid "Map directory" @@ -5392,9 +5389,10 @@ msgid "Maximum FPS" msgstr "Maximale Bildwiederholrate" #: src/settings_translation_file.cpp -#, fuzzy msgid "Maximum FPS when the window is not focused, or when the game is paused." -msgstr "Maximale Bildwiederholrate, während das Spiel pausiert ist." +msgstr "" +"Maximale Bildwiederholrate, während das Fenster nicht fokussiert oder das " +"Spiel pausiert ist." #: src/settings_translation_file.cpp msgid "Maximum forceloaded blocks" @@ -5458,6 +5456,9 @@ msgid "" "be queued.\n" "This should be lower than curl_parallel_limit." msgstr "" +"Maximale Anzahl an gleichzeitigen Downloads. Weitere werden in einer " +"Warteschlange eingereiht.\n" +"Dies sollte niedriger als das curl_parallel_limit sein." #: src/settings_translation_file.cpp msgid "Maximum number of forceloaded mapblocks." @@ -5887,14 +5888,12 @@ msgid "Pitch move mode" msgstr "Nick-Bewegungsmodus" #: src/settings_translation_file.cpp -#, fuzzy msgid "Place key" -msgstr "Flugtaste" +msgstr "Bautaste" #: src/settings_translation_file.cpp -#, fuzzy msgid "Place repetition interval" -msgstr "Rechtsklick-Wiederholungsrate" +msgstr "Bauen-Wiederholungsrate" #: src/settings_translation_file.cpp msgid "" @@ -6125,7 +6124,7 @@ msgstr "Runde Übersichtskarte" #: src/settings_translation_file.cpp msgid "Safe digging and placing" -msgstr "Sicheres graben und bauen" +msgstr "Sicheres Graben und Bauen" #: src/settings_translation_file.cpp msgid "Sandy beaches occur when np_beach exceeds this value." @@ -6383,15 +6382,19 @@ msgid "Show entity selection boxes" msgstr "Entity-Auswahlboxen zeigen" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Show entity selection boxes\n" "A restart is required after changing this." msgstr "" -"Setzt die Sprache. Leer lassen, um Systemsprache zu verwenden.\n" +"Entityauswahlboxen zeigen\n" "Nach Änderung ist ein Neustart erforderlich." #: src/settings_translation_file.cpp +#, fuzzy +msgid "Show nametag backgrounds by default" +msgstr "Schrift standardmäßig fett" + +#: src/settings_translation_file.cpp msgid "Shutdown message" msgstr "Herunterfahrnachricht" @@ -6547,7 +6550,7 @@ msgstr "Stufenbergsausbreitungsrauschen" #: src/settings_translation_file.cpp msgid "Strength of 3D mode parallax." -msgstr "Stärke von 3D-Modus-Parallax." +msgstr "Stärke von 3-D-Modus-Parallax." #: src/settings_translation_file.cpp msgid "" @@ -6673,9 +6676,8 @@ msgid "The URL for the content repository" msgstr "Die URL für den Inhaltespeicher" #: src/settings_translation_file.cpp -#, fuzzy msgid "The deadzone of the joystick" -msgstr "Die Kennung des zu verwendeten Joysticks" +msgstr "Der Totbereich des Joysticks" #: src/settings_translation_file.cpp msgid "" @@ -6751,7 +6753,6 @@ msgstr "" "konfiguriert werden." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "The rendering back-end for Irrlicht.\n" "A restart is required after changing this.\n" @@ -6764,10 +6765,10 @@ msgstr "" "Ein Neustart ist erforderlich, wenn dies geändert wird.\n" "Anmerkung: Auf Android belassen Sie dies bei OGLES1, wenn Sie sich unsicher " "sind.\n" -"Die App könnte sonst unfähig sein, zu starten.\n" -"Auf anderen Plattformen wird OpelGL empfohlen, dies ist momentan der " -"einzige\n" -"Treiber mit Shader-Unterstützung." +"Die App könnte sonst nicht mehr starten.\n" +"Auf anderen Plattformen wird OpenGL empfohlen.\n" +"Shader werden unter OpenGL (nur Desktop) und OGLES2 (experimentell) " +"unterstützt." #: src/settings_translation_file.cpp msgid "" @@ -6807,6 +6808,8 @@ msgid "" "The time budget allowed for ABMs to execute on each step\n" "(as a fraction of the ABM Interval)" msgstr "" +"Das erlaubte Zeitbudget für ABM-Ausführung jeden Schritt\n" +"(als Bruchteil des ABM-Intervalls)" #: src/settings_translation_file.cpp msgid "" @@ -6817,14 +6820,12 @@ msgstr "" "wenn eine Joystick-Tastenkombination gedrückt gehalten wird." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "The time in seconds it takes between repeated node placements when holding\n" "the place button." msgstr "" -"Die Zeit in Sekunden, in dem Rechtsklicks wiederholt werden, wenn die " -"rechte\n" -"Maustaste gedrückt gehalten wird." +"Die Zeit in Sekunden, in dem die Blockplatzierung wiederholt wird, wenn\n" +"die Bautaste gedrückt gehalten wird." #: src/settings_translation_file.cpp msgid "The type of joystick" @@ -7001,6 +7002,15 @@ msgid "" "If set to 0, MSAA is disabled.\n" "A restart is required after changing this option." msgstr "" +"Multi-Sample-Antialiasing (MSAA) benutzen, um Blockecken zu glätten.\n" +"Dieser Algorithmus glättet das 3-D-Sichtfeld während das Bild scharf " +"bleibt,\n" +"beeinträchtigt jedoch nicht die Textureninnenflächen\n" +"(was sich insbesondere bei transparenten Texturen bemerkbar macht).\n" +"Sichtbare Lücken erscheinen zwischen Blöcken, wenn Shader ausgeschaltet " +"sind.\n" +"Wenn der Wert auf 0 steht, ist MSAA deaktiviert.\n" +"Ein Neustart ist erforderlich, nachdem diese Option geändert worden ist." #: src/settings_translation_file.cpp msgid "Use trilinear filtering when scaling textures." @@ -7246,6 +7256,12 @@ msgstr "" "benutzt." #: src/settings_translation_file.cpp +msgid "" +"Whether nametag backgrounds should be shown by default.\n" +"Mods may still set a background." +msgstr "" + +#: src/settings_translation_file.cpp msgid "Whether node texture animations should be desynchronized per mapblock." msgstr "" "Ob Blocktexturanimationen pro Kartenblock desynchronisiert sein sollten." @@ -7411,6 +7427,12 @@ msgid "" "9 - best compression, slowest\n" "(levels 1-3 use Zlib's \"fast\" method, 4-9 use the normal method)" msgstr "" +"ZLib-Kompressionsniveau für Kartenblöcke im Festspeicher.\n" +"-1 - Zlib-Standard-Kompressionsniveau\n" +"0 - keine Kompression, am schnellsten\n" +"9 - beste Kompression, am langsamsten\n" +"(Niveaus 1-3 verwenden Zlibs „schnelles“ Verfahren, 4-9 das normale " +"Verfahren)" #: src/settings_translation_file.cpp msgid "" @@ -7420,6 +7442,12 @@ msgid "" "9 - best compression, slowest\n" "(levels 1-3 use Zlib's \"fast\" method, 4-9 use the normal method)" msgstr "" +"ZLib-Kompressionsniveau für Kartenblöcke, die zu Clients gesendet werden.\n" +"-1 - Zlib-Standard-Kompressionsniveau\n" +"0 - keine Kompression, am schnellsten\n" +"9 - beste Kompression, am langsamsten\n" +"(Niveaus 1-3 verwenden Zlibs „schnelles“ Verfahren, 4-9 das normale " +"Verfahren)" #: src/settings_translation_file.cpp msgid "cURL file download timeout" diff --git a/po/dv/minetest.po b/po/dv/minetest.po index 6182c0de3..4c4b53954 100644 --- a/po/dv/minetest.po +++ b/po/dv/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Dhivehi (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-01-30 21:13+0100\n" +"POT-Creation-Date: 2021-02-23 19:03+0100\n" "PO-Revision-Date: 2019-11-10 15:04+0000\n" "Last-Translator: Krock <mk939@ymail.com>\n" "Language-Team: Dhivehi <https://hosted.weblate.org/projects/minetest/" @@ -715,6 +715,10 @@ msgid "Loading..." msgstr "ÞÞ¯Þ‘Þ°ÞˆÞ¦Þ‚Þ©..." #: builtin/mainmenu/serverlistmgr.lua +msgid "Public server list is disabled" +msgstr "" + +#: builtin/mainmenu/serverlistmgr.lua msgid "Try reenabling public serverlist and check your internet connection." msgstr "Þ•Þ¦Þ„Þ°ÞÞ¨Þ†Þ° ÞÞ§ÞˆÞ¦Þƒ ÞÞ¨ÞÞ°Þ“Þª Þ‡Þ¦ÞÞªÞ‚Þ° Þ–Þ¦Þ‡Þ°ÞÞ¦ÞˆÞ§.Þ‡Þ¦Þ‹Þ¨ Þ‡Þ¨Þ‚Þ°Þ“Þ¦Þ‚Þ¬Þ“Þ° Þ†Þ¦Þ‚Þ¬Þ†Þ°ÞÞ¦Þ‚Þ° Þ—Þ¬Þ†Þ°Þ†ÞªÞƒÞ¦Þ‡Þ°ÞˆÞ§." @@ -2888,7 +2892,7 @@ msgid "Enable console window" msgstr "" #: src/settings_translation_file.cpp -msgid "Enable creative mode for new created maps." +msgid "Enable creative mode for all players" msgstr "" #: src/settings_translation_file.cpp @@ -5599,6 +5603,10 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp +msgid "Show nametag backgrounds by default" +msgstr "" + +#: src/settings_translation_file.cpp msgid "Shutdown message" msgstr "" @@ -6272,6 +6280,12 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp +msgid "" +"Whether nametag backgrounds should be shown by default.\n" +"Mods may still set a background." +msgstr "" + +#: src/settings_translation_file.cpp msgid "Whether node texture animations should be desynchronized per mapblock." msgstr "" diff --git a/po/el/minetest.po b/po/el/minetest.po index c9a8fa9d7..b9b6182bf 100644 --- a/po/el/minetest.po +++ b/po/el/minetest.po @@ -2,9 +2,9 @@ msgid "" msgstr "" "Project-Id-Version: Greek (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-01-30 21:13+0100\n" -"PO-Revision-Date: 2020-11-10 14:28+0000\n" -"Last-Translator: sfan5 <sfan5@live.de>\n" +"POT-Creation-Date: 2021-02-23 19:03+0100\n" +"PO-Revision-Date: 2021-02-13 08:50+0000\n" +"Last-Translator: Michalis <michalisntovas@yahoo.gr>\n" "Language-Team: Greek <https://hosted.weblate.org/projects/minetest/minetest/" "el/>\n" "Language: el\n" @@ -12,7 +12,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.4-dev\n" +"X-Generator: Weblate 4.5-dev\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" @@ -75,7 +75,7 @@ msgstr "ΥποστηÏίζουμε τις εκδόσεις Ï€ÏωτοκόλλωΠ#: src/gui/guiConfirmRegistration.cpp src/gui/guiKeyChangeMenu.cpp #: src/gui/guiPasswordChange.cpp msgid "Cancel" -msgstr "Ματαίωση" +msgstr "ΆκυÏο" #: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_contentstore.lua #: builtin/mainmenu/tab_content.lua @@ -693,6 +693,10 @@ msgid "Loading..." msgstr "ΦόÏτωση..." #: builtin/mainmenu/serverlistmgr.lua +msgid "Public server list is disabled" +msgstr "" + +#: builtin/mainmenu/serverlistmgr.lua msgid "Try reenabling public serverlist and check your internet connection." msgstr "" "Δοκιμάστε να ενεÏγοποιήσετε ξανά τη δημόσια λίστα διακομιστών και ελÎγξτε τη " @@ -2831,7 +2835,7 @@ msgid "Enable console window" msgstr "" #: src/settings_translation_file.cpp -msgid "Enable creative mode for new created maps." +msgid "Enable creative mode for all players" msgstr "" #: src/settings_translation_file.cpp @@ -5533,6 +5537,10 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp +msgid "Show nametag backgrounds by default" +msgstr "" + +#: src/settings_translation_file.cpp msgid "Shutdown message" msgstr "" @@ -6206,6 +6214,12 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp +msgid "" +"Whether nametag backgrounds should be shown by default.\n" +"Mods may still set a background." +msgstr "" + +#: src/settings_translation_file.cpp msgid "Whether node texture animations should be desynchronized per mapblock." msgstr "" diff --git a/po/eo/minetest.po b/po/eo/minetest.po index 94f786a45..64db5dd71 100644 --- a/po/eo/minetest.po +++ b/po/eo/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Esperanto (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-01-30 21:13+0100\n" +"POT-Creation-Date: 2021-02-23 19:03+0100\n" "PO-Revision-Date: 2020-07-17 08:41+0000\n" "Last-Translator: Tirifto <tirifto@posteo.cz>\n" "Language-Team: Esperanto <https://hosted.weblate.org/projects/minetest/" @@ -709,6 +709,11 @@ msgid "Loading..." msgstr "Enlegante…" #: builtin/mainmenu/serverlistmgr.lua +#, fuzzy +msgid "Public server list is disabled" +msgstr "Klient-flanka skriptado malÅaltita" + +#: builtin/mainmenu/serverlistmgr.lua msgid "Try reenabling public serverlist and check your internet connection." msgstr "" "Provu reÅalti la publikan liston de serviloj kaj kontroli vian retkonekton." @@ -3000,7 +3005,8 @@ msgid "Enable console window" msgstr "Åœalti konzolan fenestron" #: src/settings_translation_file.cpp -msgid "Enable creative mode for new created maps." +#, fuzzy +msgid "Enable creative mode for all players" msgstr "Åœalti krean reÄimon por novaj mapoj." #: src/settings_translation_file.cpp @@ -6264,6 +6270,11 @@ msgstr "" "Rerulo necesas post la ÅanÄo." #: src/settings_translation_file.cpp +#, fuzzy +msgid "Show nametag backgrounds by default" +msgstr "Implice grasa tiparo" + +#: src/settings_translation_file.cpp msgid "Shutdown message" msgstr "Ferma mesaÄo" @@ -7054,6 +7065,12 @@ msgstr "" "MalÅaltite, ĉi tio anstataÅe uzigas tiparojn bitbildajn kaj XML-vektorajn." #: src/settings_translation_file.cpp +msgid "" +"Whether nametag backgrounds should be shown by default.\n" +"Mods may still set a background." +msgstr "" + +#: src/settings_translation_file.cpp msgid "Whether node texture animations should be desynchronized per mapblock." msgstr "Ĉu teksturaj movbildoj de monderoj malsamtempiÄu en ĉiu mondopeco." diff --git a/po/es/minetest.po b/po/es/minetest.po index 61d444026..4d26f2b5c 100644 --- a/po/es/minetest.po +++ b/po/es/minetest.po @@ -2,9 +2,9 @@ msgid "" msgstr "" "Project-Id-Version: Spanish (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-01-30 21:13+0100\n" -"PO-Revision-Date: 2020-12-24 05:29+0000\n" -"Last-Translator: cypMon <randalchem@protonmail.com>\n" +"POT-Creation-Date: 2021-02-23 19:03+0100\n" +"PO-Revision-Date: 2021-02-05 09:40+0000\n" +"Last-Translator: j45 minetest <j45minetest@gmail.com>\n" "Language-Team: Spanish <https://hosted.weblate.org/projects/minetest/" "minetest/es/>\n" "Language: es\n" @@ -12,7 +12,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.4.1-dev\n" +"X-Generator: Weblate 4.5-dev\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" @@ -153,52 +153,51 @@ msgstr "activado" #: builtin/mainmenu/dlg_contentstore.lua msgid "\"$1\" already exists. Would you like to overwrite it?" -msgstr "" +msgstr "\"$1\" ya existe. Quieres remplazarlo?" #: builtin/mainmenu/dlg_contentstore.lua msgid "$1 and $2 dependencies will be installed." -msgstr "" +msgstr "Las dependencias $1 y $2 serán instaladas." #: builtin/mainmenu/dlg_contentstore.lua msgid "$1 by $2" -msgstr "" +msgstr "$1 por $2" #: builtin/mainmenu/dlg_contentstore.lua msgid "" "$1 downloading,\n" "$2 queued" msgstr "" +"$1 descargando,\n" +"$2 en espera" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "$1 downloading..." -msgstr "Descargando..." +msgstr "$1 descargando..." #: builtin/mainmenu/dlg_contentstore.lua msgid "$1 required dependencies could not be found." -msgstr "" +msgstr "$1 dependencias requeridas no se encuentran." #: builtin/mainmenu/dlg_contentstore.lua msgid "$1 will be installed, and $2 dependencies will be skipped." -msgstr "" +msgstr "$1 serán instalados, y $2 dependencias serán ignoradas." #: builtin/mainmenu/dlg_contentstore.lua msgid "All packages" msgstr "Todos los paquetes" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "Already installed" -msgstr "La tecla ya se está utilizando" +msgstr "Ya está instalado" #: builtin/mainmenu/dlg_contentstore.lua msgid "Back to Main Menu" msgstr "Volver al menú principal" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "Base Game:" -msgstr "Hospedar juego" +msgstr "Juego Base:" #: builtin/mainmenu/dlg_contentstore.lua msgid "ContentDB is not available when Minetest was compiled without cURL" @@ -223,14 +222,12 @@ msgid "Install" msgstr "Instalar" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "Install $1" -msgstr "Instalar" +msgstr "Instalar $1" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "Install missing dependencies" -msgstr "Dependencias opcionales:" +msgstr "Instalar dependencias faltantes" #: builtin/mainmenu/dlg_contentstore.lua #: builtin/mainmenu/dlg_settings_advanced.lua @@ -246,26 +243,24 @@ msgid "No results" msgstr "Sin resultados" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "No updates" -msgstr "Actualizar" +msgstr "No hay actualizaciones" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "Not found" -msgstr "Silenciar sonido" +msgstr "No encontrado" #: builtin/mainmenu/dlg_contentstore.lua msgid "Overwrite" -msgstr "" +msgstr "Sobreescribir" #: builtin/mainmenu/dlg_contentstore.lua msgid "Please check that the base game is correct." -msgstr "" +msgstr "Por favor verifica que el juego base está bien." #: builtin/mainmenu/dlg_contentstore.lua msgid "Queued" -msgstr "" +msgstr "En cola" #: builtin/mainmenu/dlg_contentstore.lua msgid "Texture packs" @@ -281,11 +276,11 @@ msgstr "Actualizar" #: builtin/mainmenu/dlg_contentstore.lua msgid "Update All [$1]" -msgstr "" +msgstr "Actualizar Todo [$1]" #: builtin/mainmenu/dlg_contentstore.lua msgid "View more information in a web browser" -msgstr "" +msgstr "Ver más información en un navegador web" #: builtin/mainmenu/dlg_create_world.lua msgid "A world named \"$1\" already exists" @@ -711,6 +706,11 @@ msgid "Loading..." msgstr "Cargando..." #: builtin/mainmenu/serverlistmgr.lua +#, fuzzy +msgid "Public server list is disabled" +msgstr "El Scripting en el lado del cliente está desactivado" + +#: builtin/mainmenu/serverlistmgr.lua msgid "Try reenabling public serverlist and check your internet connection." msgstr "" "Intente rehabilitar la lista de servidores públicos y verifique su conexión " @@ -769,15 +769,16 @@ msgid "Credits" msgstr "Créditos" #: builtin/mainmenu/tab_credits.lua -#, fuzzy msgid "Open User Data Directory" -msgstr "Seleccionar carpeta" +msgstr "Abrir Directorio de Datos de Usuario" #: builtin/mainmenu/tab_credits.lua msgid "" "Opens the directory that contains user-provided worlds, games, mods,\n" "and texture packs in a file manager / explorer." msgstr "" +"Abre el directorio que contiene los mundos, juegos, mods, y paquetes de\n" +"textura, del usuario, en un gestor / explorador de archivos." #: builtin/mainmenu/tab_credits.lua msgid "Previous Contributors" @@ -817,7 +818,7 @@ msgstr "Instalar juegos desde ContentDB" #: builtin/mainmenu/tab_local.lua msgid "Name" -msgstr "" +msgstr "Nombre" #: builtin/mainmenu/tab_local.lua msgid "New" @@ -828,9 +829,8 @@ msgid "No world created or selected!" msgstr "¡No se ha dado un nombre al mundo o no se ha seleccionado uno!" #: builtin/mainmenu/tab_local.lua -#, fuzzy msgid "Password" -msgstr "Contraseña nueva" +msgstr "Contraseña" #: builtin/mainmenu/tab_local.lua msgid "Play Game" @@ -841,9 +841,8 @@ msgid "Port" msgstr "Puerto" #: builtin/mainmenu/tab_local.lua -#, fuzzy msgid "Select Mods" -msgstr "Selecciona un mundo:" +msgstr "Selecciona Mods" #: builtin/mainmenu/tab_local.lua msgid "Select World:" @@ -995,9 +994,8 @@ msgid "Shaders" msgstr "Sombreadores" #: builtin/mainmenu/tab_settings.lua -#, fuzzy msgid "Shaders (experimental)" -msgstr "Tierras flotantes (experimental)" +msgstr "Sombreadores (experimental)" #: builtin/mainmenu/tab_settings.lua msgid "Shaders (unavailable)" @@ -1199,7 +1197,7 @@ msgid "Continue" msgstr "Continuar" #: src/client/game.cpp -#, fuzzy, c-format +#, c-format msgid "" "Controls:\n" "- %s: move forwards\n" @@ -1222,12 +1220,12 @@ msgstr "" "- %s: moverse a la izquierda\n" "- %s: moverse a la derecha\n" "- %s: saltar/escalar\n" -"- %s: agacharse/bajar\n" +"- %s: excavar/golpear\n" +"- %s: colocar/usar\n" +"- %s: a hurtadillas/bajar\n" "- %s: soltar objeto\n" "- %s: inventario\n" "- Ratón: girar/mirar\n" -"- Ratón izq.: cavar/golpear\n" -"- Ratón der.: colocar/usar\n" "- Rueda del ratón: elegir objeto\n" "- %s: chat\n" @@ -1756,19 +1754,18 @@ msgid "Minimap hidden" msgstr "Minimapa oculto" #: src/client/minimap.cpp -#, fuzzy, c-format +#, c-format msgid "Minimap in radar mode, Zoom x%d" -msgstr "Minimapa en modo radar, Zoom x1" +msgstr "Minimapa en modo radar, Zoom x%d" #: src/client/minimap.cpp -#, fuzzy, c-format +#, c-format msgid "Minimap in surface mode, Zoom x%d" -msgstr "Minimapa en modo superficie, Zoom x1" +msgstr "Minimapa en modo superficie, Zoom x%d" #: src/client/minimap.cpp -#, fuzzy msgid "Minimap in texture mode" -msgstr "Minimapa en modo superficie, Zoom x1" +msgstr "Minimapa en modo textura" #: src/gui/guiConfirmRegistration.cpp src/gui/guiPasswordChange.cpp msgid "Passwords do not match!" @@ -2182,7 +2179,7 @@ msgstr "Intervalo ABM" #: src/settings_translation_file.cpp msgid "ABM time budget" -msgstr "" +msgstr "LÃmite de tiempo para MBA" #: src/settings_translation_file.cpp msgid "Absolute limit of queued blocks to emerge" @@ -2694,7 +2691,7 @@ msgstr "Lista negra de banderas de ContentDB" #: src/settings_translation_file.cpp msgid "ContentDB Max Concurrent Downloads" -msgstr "" +msgstr "Descargas máximas simultáneas para ContentDB" #: src/settings_translation_file.cpp msgid "ContentDB URL" @@ -2764,11 +2761,12 @@ msgid "Crosshair alpha" msgstr "Opacidad del punto de mira" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Crosshair alpha (opaqueness, between 0 and 255).\n" "Also controls the object crosshair color" -msgstr "Alfa del punto de mira (opacidad, entre 0 y 255)." +msgstr "" +"Alfa del punto de mira (opacidad, entre 0 y 255).\n" +"También controla el color del objeto punto de mira." #: src/settings_translation_file.cpp msgid "Crosshair color" @@ -2779,6 +2777,8 @@ msgid "" "Crosshair color (R,G,B).\n" "Also controls the object crosshair color" msgstr "" +"Color del punto de mira (R,G,B).\n" +"También controla el color del objeto punto de mira" #: src/settings_translation_file.cpp msgid "DPI" @@ -2963,9 +2963,8 @@ msgid "Desynchronize block animation" msgstr "Desincronizar la animación de los bloques" #: src/settings_translation_file.cpp -#, fuzzy msgid "Dig key" -msgstr "Tecla derecha" +msgstr "Tecla Excavar" #: src/settings_translation_file.cpp msgid "Digging particles" @@ -3033,7 +3032,8 @@ msgid "Enable console window" msgstr "Habilitar la ventana de la consola" #: src/settings_translation_file.cpp -msgid "Enable creative mode for new created maps." +#, fuzzy +msgid "Enable creative mode for all players" msgstr "Habilitar el modo creativo para los nuevos mapas creados." #: src/settings_translation_file.cpp @@ -5397,12 +5397,11 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Maximum FPS" -msgstr "FPS máximos" +msgstr "FPS máximo" #: src/settings_translation_file.cpp -#, fuzzy msgid "Maximum FPS when the window is not focused, or when the game is paused." -msgstr "FPS máximos cuando el juego está pausado." +msgstr "FPS máximo cuando el juego está pausado." #: src/settings_translation_file.cpp msgid "Maximum forceloaded blocks" @@ -6000,7 +5999,7 @@ msgstr "Ruido de rÃo" #: src/settings_translation_file.cpp msgid "River size" -msgstr "" +msgstr "Tamaño del rÃo" #: src/settings_translation_file.cpp #, fuzzy @@ -6275,6 +6274,11 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp +#, fuzzy +msgid "Show nametag backgrounds by default" +msgstr "Fuente en negrita por defecto" + +#: src/settings_translation_file.cpp msgid "Shutdown message" msgstr "" @@ -6960,6 +6964,12 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp +msgid "" +"Whether nametag backgrounds should be shown by default.\n" +"Mods may still set a background." +msgstr "" + +#: src/settings_translation_file.cpp msgid "Whether node texture animations should be desynchronized per mapblock." msgstr "" diff --git a/po/et/minetest.po b/po/et/minetest.po index bfb8fbcd5..5feb9be60 100644 --- a/po/et/minetest.po +++ b/po/et/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Estonian (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-01-30 21:13+0100\n" +"POT-Creation-Date: 2021-02-23 19:03+0100\n" "PO-Revision-Date: 2020-12-05 15:29+0000\n" "Last-Translator: Janar Leas <janar.leas@gmail.com>\n" "Language-Team: Estonian <https://hosted.weblate.org/projects/minetest/" @@ -705,6 +705,11 @@ msgid "Loading..." msgstr "Laadimine..." #: builtin/mainmenu/serverlistmgr.lua +#, fuzzy +msgid "Public server list is disabled" +msgstr "Kliendipoolne skriptimine on keelatud" + +#: builtin/mainmenu/serverlistmgr.lua msgid "Try reenabling public serverlist and check your internet connection." msgstr "" "Proovi lubada uuesti avalike serverite loend ja kontrolli oma Interneti " @@ -2881,7 +2886,7 @@ msgid "Enable console window" msgstr "" #: src/settings_translation_file.cpp -msgid "Enable creative mode for new created maps." +msgid "Enable creative mode for all players" msgstr "" #: src/settings_translation_file.cpp @@ -5593,6 +5598,10 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp +msgid "Show nametag backgrounds by default" +msgstr "" + +#: src/settings_translation_file.cpp msgid "Shutdown message" msgstr "" @@ -6266,6 +6275,12 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp +msgid "" +"Whether nametag backgrounds should be shown by default.\n" +"Mods may still set a background." +msgstr "" + +#: src/settings_translation_file.cpp msgid "Whether node texture animations should be desynchronized per mapblock." msgstr "" diff --git a/po/eu/minetest.po b/po/eu/minetest.po index fe0233120..d639a79ed 100644 --- a/po/eu/minetest.po +++ b/po/eu/minetest.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: minetest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-01-30 21:13+0100\n" -"PO-Revision-Date: 2020-10-18 21:26+0000\n" +"POT-Creation-Date: 2021-02-23 19:03+0100\n" +"PO-Revision-Date: 2021-02-23 15:50+0000\n" "Last-Translator: Osoitz <oelkoro@gmail.com>\n" "Language-Team: Basque <https://hosted.weblate.org/projects/minetest/minetest/" "eu/>\n" @@ -17,7 +17,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.3.1-dev\n" +"X-Generator: Weblate 4.5\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" @@ -113,7 +113,7 @@ msgstr "" #: builtin/mainmenu/dlg_config_world.lua msgid "Find More Mods" -msgstr "" +msgstr "Mod gehiago aurkitu" #: builtin/mainmenu/dlg_config_world.lua msgid "Mod:" @@ -158,11 +158,11 @@ msgstr "gaituta" #: builtin/mainmenu/dlg_contentstore.lua msgid "\"$1\" already exists. Would you like to overwrite it?" -msgstr "" +msgstr "\"$1\" existitzen da. Gainidatzi egin nahi al duzu?" #: builtin/mainmenu/dlg_contentstore.lua msgid "$1 and $2 dependencies will be installed." -msgstr "" +msgstr "$1 et $2 mendekotasunak instalatuko dira." #: builtin/mainmenu/dlg_contentstore.lua msgid "$1 by $2" @@ -173,19 +173,21 @@ msgid "" "$1 downloading,\n" "$2 queued" msgstr "" +"$1 deskargatzen,\n" +"$2 ilaran" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "$1 downloading..." -msgstr "Kargatzen..." +msgstr "$1 deskargatzen..." #: builtin/mainmenu/dlg_contentstore.lua msgid "$1 required dependencies could not be found." -msgstr "" +msgstr "$1-ek behar dituen mendekotasunak ezin dira aurkitu." #: builtin/mainmenu/dlg_contentstore.lua msgid "$1 will be installed, and $2 dependencies will be skipped." msgstr "" +"$1 instalatua izango da, eta $2-ren mendekotasunak baztertu egingo dira." #: builtin/mainmenu/dlg_contentstore.lua msgid "All packages" @@ -193,25 +195,23 @@ msgstr "Pakete guztiak" #: builtin/mainmenu/dlg_contentstore.lua msgid "Already installed" -msgstr "" +msgstr "Instalaturik jada" #: builtin/mainmenu/dlg_contentstore.lua msgid "Back to Main Menu" msgstr "Itzuli menu nagusira" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "Base Game:" -msgstr "Joko ostalaria" +msgstr "Oinarri jokoa:" #: builtin/mainmenu/dlg_contentstore.lua msgid "ContentDB is not available when Minetest was compiled without cURL" -msgstr "" +msgstr "ContentDB ez dago erabilgarri Minetest cURL gabe konpilatzean" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "Downloading..." -msgstr "Kargatzen..." +msgstr "Deskargatzen..." #: builtin/mainmenu/dlg_contentstore.lua msgid "Failed to download $1" @@ -227,14 +227,12 @@ msgid "Install" msgstr "Instalatu" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "Install $1" -msgstr "Instalatu" +msgstr "$1 Instalatu" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "Install missing dependencies" -msgstr "Aukerako mendekotasunak:" +msgstr "Falta diren mendekotasunak instalatu" #: builtin/mainmenu/dlg_contentstore.lua #: builtin/mainmenu/dlg_settings_advanced.lua @@ -250,29 +248,28 @@ msgid "No results" msgstr "Emaitzarik ez" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "No updates" -msgstr "Eguneratu" +msgstr "Eguneraketarik ez" #: builtin/mainmenu/dlg_contentstore.lua msgid "Not found" -msgstr "" +msgstr "Ez da aurkitu" #: builtin/mainmenu/dlg_contentstore.lua msgid "Overwrite" -msgstr "" +msgstr "Gainidatzi" #: builtin/mainmenu/dlg_contentstore.lua msgid "Please check that the base game is correct." -msgstr "" +msgstr "Mesedez, egiaztatu oinarri jokoa zuzena dela." #: builtin/mainmenu/dlg_contentstore.lua msgid "Queued" -msgstr "" +msgstr "Ilaran" #: builtin/mainmenu/dlg_contentstore.lua msgid "Texture packs" -msgstr "" +msgstr "testura paketeak" #: builtin/mainmenu/dlg_contentstore.lua msgid "Uninstall" @@ -284,11 +281,11 @@ msgstr "Eguneratu" #: builtin/mainmenu/dlg_contentstore.lua msgid "Update All [$1]" -msgstr "" +msgstr "Guztia eguneratu [$1]" #: builtin/mainmenu/dlg_contentstore.lua msgid "View more information in a web browser" -msgstr "" +msgstr "Ikusi informazio gehiago web nabigatzailean" #: builtin/mainmenu/dlg_create_world.lua msgid "A world named \"$1\" already exists" @@ -296,40 +293,39 @@ msgstr "Badago \"$1\" izeneko mundu bat" #: builtin/mainmenu/dlg_create_world.lua msgid "Additional terrain" -msgstr "" +msgstr "Lurrazal gehigarria" #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp msgid "Altitude chill" -msgstr "" +msgstr "Garaierako hotza" #: builtin/mainmenu/dlg_create_world.lua msgid "Altitude dry" -msgstr "" +msgstr "Garaierako lehortasuna" #: builtin/mainmenu/dlg_create_world.lua msgid "Biome blending" -msgstr "" +msgstr "Bioma nahasketa" #: builtin/mainmenu/dlg_create_world.lua msgid "Biomes" -msgstr "" +msgstr "Biomak" #: builtin/mainmenu/dlg_create_world.lua msgid "Caverns" -msgstr "" +msgstr "Leizeak" #: builtin/mainmenu/dlg_create_world.lua msgid "Caves" -msgstr "" +msgstr "Leizeak" #: builtin/mainmenu/dlg_create_world.lua msgid "Create" msgstr "Sortu" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Decorations" -msgstr "Informazioa:" +msgstr "Apaingarriak" #: builtin/mainmenu/dlg_create_world.lua msgid "Download a game, such as Minetest Game, from minetest.net" @@ -342,11 +338,11 @@ msgstr "Deskargatu minetest.net zerbitzaritik" #: builtin/mainmenu/dlg_create_world.lua msgid "Dungeons" -msgstr "" +msgstr "Leotzak" #: builtin/mainmenu/dlg_create_world.lua msgid "Flat terrain" -msgstr "" +msgstr "Lurrazal laua" #: builtin/mainmenu/dlg_create_world.lua msgid "Floating landmasses in the sky" @@ -362,27 +358,29 @@ msgstr "Jolasa" #: builtin/mainmenu/dlg_create_world.lua msgid "Generate non-fractal terrain: Oceans and underground" -msgstr "" +msgstr "Lurrazal ez fraktalak sortu: Ozeanoak eta lurpekoak" #: builtin/mainmenu/dlg_create_world.lua msgid "Hills" -msgstr "" +msgstr "Mendiak" #: builtin/mainmenu/dlg_create_world.lua msgid "Humid rivers" -msgstr "" +msgstr "Erreka hezeak" #: builtin/mainmenu/dlg_create_world.lua msgid "Increases humidity around rivers" -msgstr "" +msgstr "Hezetasuna areagotu erreka inguruetan" #: builtin/mainmenu/dlg_create_world.lua msgid "Lakes" -msgstr "" +msgstr "Lakuak" #: builtin/mainmenu/dlg_create_world.lua msgid "Low humidity and high heat causes shallow or dry rivers" msgstr "" +"Hezetasun baxuak eta bero handiak sakonera gutxikoak edo lehorrak diren " +"ibaiak sortzen dituzte" #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp msgid "Mapgen" @@ -390,7 +388,7 @@ msgstr "Mapa sortzailea" #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp msgid "Mapgen flags" -msgstr "" +msgstr "Mapgen banderatxoak" #: builtin/mainmenu/dlg_create_world.lua msgid "Mapgen-specific flags" @@ -713,6 +711,10 @@ msgid "Loading..." msgstr "Kargatzen..." #: builtin/mainmenu/serverlistmgr.lua +msgid "Public server list is disabled" +msgstr "" + +#: builtin/mainmenu/serverlistmgr.lua msgid "Try reenabling public serverlist and check your internet connection." msgstr "" "Saia zaitez zerbitzari publikoen zerrenda birgaitzen eta egiazta ezazu zure " @@ -740,7 +742,7 @@ msgstr "Instalaturiko paketeak:" #: builtin/mainmenu/tab_content.lua msgid "No dependencies." -msgstr "Menpekotasunik gabe." +msgstr "Mendekotasunik gabe." #: builtin/mainmenu/tab_content.lua msgid "No package description available" @@ -973,11 +975,11 @@ msgstr "" #: builtin/mainmenu/tab_settings.lua msgid "Opaque Leaves" -msgstr "" +msgstr "Hosto opakoak" #: builtin/mainmenu/tab_settings.lua msgid "Opaque Water" -msgstr "" +msgstr "Ur opakoa" #: builtin/mainmenu/tab_settings.lua msgid "Particles" @@ -1215,11 +1217,11 @@ msgstr "" #: src/client/game.cpp msgid "Creating client..." -msgstr "" +msgstr "Bezeroa sortzen..." #: src/client/game.cpp msgid "Creating server..." -msgstr "" +msgstr "Zerbitzaria sortzen..." #: src/client/game.cpp msgid "Debug info and profiler graph hidden" @@ -2856,7 +2858,8 @@ msgid "Enable console window" msgstr "" #: src/settings_translation_file.cpp -msgid "Enable creative mode for new created maps." +#, fuzzy +msgid "Enable creative mode for all players" msgstr "Gaitu sormen modua mapa sortu berrietan." #: src/settings_translation_file.cpp @@ -5603,6 +5606,10 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp +msgid "Show nametag backgrounds by default" +msgstr "" + +#: src/settings_translation_file.cpp msgid "Shutdown message" msgstr "" @@ -6282,6 +6289,12 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp +msgid "" +"Whether nametag backgrounds should be shown by default.\n" +"Mods may still set a background." +msgstr "" + +#: src/settings_translation_file.cpp msgid "Whether node texture animations should be desynchronized per mapblock." msgstr "" diff --git a/po/fi/minetest.po b/po/fi/minetest.po index 25002febd..57682ebba 100644 --- a/po/fi/minetest.po +++ b/po/fi/minetest.po @@ -7,9 +7,9 @@ msgid "" msgstr "" "Project-Id-Version: minetest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-01-30 21:13+0100\n" -"PO-Revision-Date: 2020-07-11 13:41+0000\n" -"Last-Translator: Niko Kivinen <niko.pet.kivinen@gmail.com>\n" +"POT-Creation-Date: 2021-02-23 19:03+0100\n" +"PO-Revision-Date: 2021-02-01 05:52+0000\n" +"Last-Translator: Tviljan <virallinen@gmail.com>\n" "Language-Team: Finnish <https://hosted.weblate.org/projects/minetest/" "minetest/fi/>\n" "Language: fi\n" @@ -17,7 +17,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.2-dev\n" +"X-Generator: Weblate 4.5-dev\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" @@ -37,7 +37,7 @@ msgstr "" #: builtin/fstk/ui.lua msgid "An error occurred:" -msgstr "" +msgstr "Tapahtui virhe:" #: builtin/fstk/ui.lua msgid "Main menu" @@ -698,6 +698,10 @@ msgid "Loading..." msgstr "Ladataan..." #: builtin/mainmenu/serverlistmgr.lua +msgid "Public server list is disabled" +msgstr "" + +#: builtin/mainmenu/serverlistmgr.lua msgid "Try reenabling public serverlist and check your internet connection." msgstr "" @@ -1094,7 +1098,7 @@ msgstr "" #. When in doubt, test your translation. #: src/client/fontengine.cpp msgid "needs_fallback_font" -msgstr "" +msgstr "no" #: src/client/game.cpp msgid "" @@ -1925,7 +1929,7 @@ msgstr "" #. language code (e.g. "de" for German). #: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp msgid "LANG_CODE" -msgstr "" +msgstr "fi" #: src/settings_translation_file.cpp msgid "" @@ -2834,7 +2838,7 @@ msgid "Enable console window" msgstr "" #: src/settings_translation_file.cpp -msgid "Enable creative mode for new created maps." +msgid "Enable creative mode for all players" msgstr "" #: src/settings_translation_file.cpp @@ -5536,6 +5540,10 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp +msgid "Show nametag backgrounds by default" +msgstr "" + +#: src/settings_translation_file.cpp msgid "Shutdown message" msgstr "" @@ -6209,6 +6217,12 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp +msgid "" +"Whether nametag backgrounds should be shown by default.\n" +"Mods may still set a background." +msgstr "" + +#: src/settings_translation_file.cpp msgid "Whether node texture animations should be desynchronized per mapblock." msgstr "" diff --git a/po/fr/minetest.po b/po/fr/minetest.po index a6201c240..98478e035 100644 --- a/po/fr/minetest.po +++ b/po/fr/minetest.po @@ -2,9 +2,9 @@ msgid "" msgstr "" "Project-Id-Version: French (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-01-30 21:13+0100\n" -"PO-Revision-Date: 2020-10-25 19:26+0000\n" -"Last-Translator: William Desportes <williamdes@wdes.fr>\n" +"POT-Creation-Date: 2021-02-23 19:03+0100\n" +"PO-Revision-Date: 2021-02-01 05:52+0000\n" +"Last-Translator: cafou <weblate@ptitux.org>\n" "Language-Team: French <https://hosted.weblate.org/projects/minetest/minetest/" "fr/>\n" "Language: fr\n" @@ -12,7 +12,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 4.3.2-dev\n" +"X-Generator: Weblate 4.5-dev\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" @@ -177,11 +177,11 @@ msgstr "Chargement..." #: builtin/mainmenu/dlg_contentstore.lua msgid "$1 required dependencies could not be found." -msgstr "" +msgstr "Les dépendances nécessaires à 1 $ n'ont pas pu être trouvées." #: builtin/mainmenu/dlg_contentstore.lua msgid "$1 will be installed, and $2 dependencies will be skipped." -msgstr "" +msgstr "$1 sera installé, et les dépendances de $2 seront ignorées." #: builtin/mainmenu/dlg_contentstore.lua msgid "All packages" @@ -257,7 +257,7 @@ msgstr "Couper le son" #: builtin/mainmenu/dlg_contentstore.lua msgid "Overwrite" -msgstr "" +msgstr "Écraser" #: builtin/mainmenu/dlg_contentstore.lua msgid "Please check that the base game is correct." @@ -265,7 +265,7 @@ msgstr "" #: builtin/mainmenu/dlg_contentstore.lua msgid "Queued" -msgstr "" +msgstr "En file d'attente" #: builtin/mainmenu/dlg_contentstore.lua msgid "Texture packs" @@ -285,7 +285,7 @@ msgstr "" #: builtin/mainmenu/dlg_contentstore.lua msgid "View more information in a web browser" -msgstr "" +msgstr "Voir plus d'informations dans un navigateur web" #: builtin/mainmenu/dlg_create_world.lua msgid "A world named \"$1\" already exists" @@ -713,6 +713,11 @@ msgid "Loading..." msgstr "Chargement..." #: builtin/mainmenu/serverlistmgr.lua +#, fuzzy +msgid "Public server list is disabled" +msgstr "Les scripts côté client sont désactivés" + +#: builtin/mainmenu/serverlistmgr.lua msgid "Try reenabling public serverlist and check your internet connection." msgstr "" "Essayez de rechargez la liste des serveurs publics et vérifiez votre " @@ -780,6 +785,9 @@ msgid "" "Opens the directory that contains user-provided worlds, games, mods,\n" "and texture packs in a file manager / explorer." msgstr "" +"Ouvre le répertoire qui contient les mondes fournis par les utilisateurs, " +"les jeux, les mods,\n" +"et des paquets de textures dans un gestionnaire de fichiers." #: builtin/mainmenu/tab_credits.lua msgid "Previous Contributors" @@ -819,7 +827,7 @@ msgstr "Installer à partir de ContentDB" #: builtin/mainmenu/tab_local.lua msgid "Name" -msgstr "" +msgstr "Nom" #: builtin/mainmenu/tab_local.lua msgid "New" @@ -2689,7 +2697,7 @@ msgstr "Drapeaux ContentDB en liste noire" #: src/settings_translation_file.cpp msgid "ContentDB Max Concurrent Downloads" -msgstr "" +msgstr "Maximum de téléchargement en parallèle pour ContentDB" #: src/settings_translation_file.cpp msgid "ContentDB URL" @@ -3027,7 +3035,8 @@ msgid "Enable console window" msgstr "Activer la console" #: src/settings_translation_file.cpp -msgid "Enable creative mode for new created maps." +#, fuzzy +msgid "Enable creative mode for all players" msgstr "Activer le mode créatif pour les cartes nouvellement créées." #: src/settings_translation_file.cpp @@ -6349,6 +6358,11 @@ msgstr "" "Un redémarrage du jeu est nécessaire pour prendre effet." #: src/settings_translation_file.cpp +#, fuzzy +msgid "Show nametag backgrounds by default" +msgstr "La police est en gras par défaut" + +#: src/settings_translation_file.cpp msgid "Shutdown message" msgstr "Message d'arrêt du serveur" @@ -7202,6 +7216,12 @@ msgstr "" "remplacement." #: src/settings_translation_file.cpp +msgid "" +"Whether nametag backgrounds should be shown by default.\n" +"Mods may still set a background." +msgstr "" + +#: src/settings_translation_file.cpp msgid "Whether node texture animations should be desynchronized per mapblock." msgstr "Détermine la désynchronisation des textures animées par mapblock." diff --git a/po/gd/minetest.po b/po/gd/minetest.po index 5d1d6d534..e7147d3b5 100644 --- a/po/gd/minetest.po +++ b/po/gd/minetest.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: minetest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-01-30 21:13+0100\n" +"POT-Creation-Date: 2021-02-23 19:03+0100\n" "PO-Revision-Date: 2020-06-22 17:56+0000\n" "Last-Translator: GunChleoc <fios@foramnagaidhlig.net>\n" "Language-Team: Gaelic <https://hosted.weblate.org/projects/minetest/minetest/" @@ -702,6 +702,10 @@ msgid "Loading..." msgstr "" #: builtin/mainmenu/serverlistmgr.lua +msgid "Public server list is disabled" +msgstr "" + +#: builtin/mainmenu/serverlistmgr.lua msgid "Try reenabling public serverlist and check your internet connection." msgstr "" @@ -2881,7 +2885,7 @@ msgid "Enable console window" msgstr "" #: src/settings_translation_file.cpp -msgid "Enable creative mode for new created maps." +msgid "Enable creative mode for all players" msgstr "" #: src/settings_translation_file.cpp @@ -5807,6 +5811,10 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp +msgid "Show nametag backgrounds by default" +msgstr "" + +#: src/settings_translation_file.cpp msgid "Shutdown message" msgstr "" @@ -6511,6 +6519,12 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp +msgid "" +"Whether nametag backgrounds should be shown by default.\n" +"Mods may still set a background." +msgstr "" + +#: src/settings_translation_file.cpp msgid "Whether node texture animations should be desynchronized per mapblock." msgstr "" diff --git a/po/gl/minetest.po b/po/gl/minetest.po index 43c9df64d..6f5b479bc 100644 --- a/po/gl/minetest.po +++ b/po/gl/minetest.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: minetest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-01-30 21:13+0100\n" +"POT-Creation-Date: 2021-02-23 19:03+0100\n" "PO-Revision-Date: 2020-07-08 20:47+0000\n" "Last-Translator: sfan5 <sfan5@live.de>\n" "Language-Team: Galician <https://hosted.weblate.org/projects/minetest/" @@ -697,6 +697,10 @@ msgid "Loading..." msgstr "" #: builtin/mainmenu/serverlistmgr.lua +msgid "Public server list is disabled" +msgstr "" + +#: builtin/mainmenu/serverlistmgr.lua msgid "Try reenabling public serverlist and check your internet connection." msgstr "" @@ -2833,7 +2837,7 @@ msgid "Enable console window" msgstr "" #: src/settings_translation_file.cpp -msgid "Enable creative mode for new created maps." +msgid "Enable creative mode for all players" msgstr "" #: src/settings_translation_file.cpp @@ -5535,6 +5539,10 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp +msgid "Show nametag backgrounds by default" +msgstr "" + +#: src/settings_translation_file.cpp msgid "Shutdown message" msgstr "" @@ -6208,6 +6216,12 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp +msgid "" +"Whether nametag backgrounds should be shown by default.\n" +"Mods may still set a background." +msgstr "" + +#: src/settings_translation_file.cpp msgid "Whether node texture animations should be desynchronized per mapblock." msgstr "" diff --git a/po/he/minetest.po b/po/he/minetest.po index bc0a9e5dc..2bfb5e711 100644 --- a/po/he/minetest.po +++ b/po/he/minetest.po @@ -2,9 +2,9 @@ msgid "" msgstr "" "Project-Id-Version: Hebrew (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-01-30 21:13+0100\n" -"PO-Revision-Date: 2021-01-08 17:32+0000\n" -"Last-Translator: Omer I.S. <omeritzicschwartz@gmail.com>\n" +"POT-Creation-Date: 2021-02-23 19:03+0100\n" +"PO-Revision-Date: 2021-02-17 22:50+0000\n" +"Last-Translator: Yossi Cohen <cohenyossi81@gmail.com>\n" "Language-Team: Hebrew <https://hosted.weblate.org/projects/minetest/minetest/" "he/>\n" "Language: he\n" @@ -13,11 +13,11 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=4; plural=(n == 1) ? 0 : ((n == 2) ? 1 : ((n > 10 && " "n % 10 == 0) ? 2 : 3));\n" -"X-Generator: Weblate 4.4.1-dev\n" +"X-Generator: Weblate 4.5\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" -msgstr "×œ×§×•× ×œ×ª×—×™×™×”" +msgstr "הזדמן" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "You died" @@ -45,7 +45,7 @@ msgstr "התחברות מחדש" #: builtin/fstk/ui.lua msgid "The server has requested a reconnect:" -msgstr "השרת מבקש שתתחבר מחדש:" +msgstr "השרת מבקש התחברות מחדש:" #: builtin/mainmenu/common.lua msgid "Protocol version mismatch. " @@ -100,12 +100,11 @@ msgid "Enable modpack" msgstr "הפעלת ערכת המודי×" #: builtin/mainmenu/dlg_config_world.lua -#, fuzzy msgid "" "Failed to enable mod \"$1\" as it contains disallowed characters. Only " "characters [a-z0-9_] are allowed." msgstr "" -"×˜×¢×™× ×ª המוד \"1$\" × ×›×©×œ×” מכיוון ×©×”×•× ×ž×›×™×œ ×ª×•×•×™× ×œ× ×—×•×§×™×™×. רק ×”×ª×•×•×™× [a-" +"הפעלת המוד \"1$\" × ×›×©×œ×” מכיוון ×©×”×•× ×ž×›×™×œ ×ª×•×•×™× ×œ× ×—×•×§×™×™×. רק ×”×ª×•×•×™× [a-" "z0-9_] מותרי×." #: builtin/mainmenu/dlg_config_world.lua @@ -126,11 +125,11 @@ msgstr "×œ× ×¡×•×¤×§ תי×ור משחק." #: builtin/mainmenu/dlg_config_world.lua msgid "No hard dependencies" -msgstr "×ין תלויות קשות" +msgstr "×œ×œ× ×ª×œ×•×™×•×ª קשות" #: builtin/mainmenu/dlg_config_world.lua msgid "No modpack description provided." -msgstr "" +msgstr "×œ× ×¡×•×¤×§ תי×ור לחבילת המוד." #: builtin/mainmenu/dlg_config_world.lua msgid "No optional dependencies" @@ -138,7 +137,7 @@ msgstr "×ין תלויות רשות" #: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_content.lua msgid "Optional dependencies:" -msgstr "תלויות רשות:" +msgstr "תלויות ××•×¤×¦×™×•× ×ליות:" #: builtin/mainmenu/dlg_config_world.lua #: builtin/mainmenu/dlg_settings_advanced.lua src/gui/guiKeyChangeMenu.cpp @@ -155,34 +154,35 @@ msgstr "מופעל" #: builtin/mainmenu/dlg_contentstore.lua msgid "\"$1\" already exists. Would you like to overwrite it?" -msgstr "" +msgstr "\"$1\" כבר ×§×™×™×. ×”×× ×ª×¨×¦×” להחליף ×ותו?" #: builtin/mainmenu/dlg_contentstore.lua msgid "$1 and $2 dependencies will be installed." -msgstr "" +msgstr "התלויות $1 ו $2 ×™×•×ª×§× ×•." #: builtin/mainmenu/dlg_contentstore.lua msgid "$1 by $2" -msgstr "" +msgstr "$1 ליד $2" #: builtin/mainmenu/dlg_contentstore.lua msgid "" "$1 downloading,\n" "$2 queued" msgstr "" +"$1 מוריד,\n" +"$2 ממתין" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "$1 downloading..." -msgstr "כעת בהורדה..." +msgstr "$1 כעת בהורדה..." #: builtin/mainmenu/dlg_contentstore.lua msgid "$1 required dependencies could not be found." -msgstr "" +msgstr "×œ× × ×™×ª×Ÿ ×œ×ž×¦×•× ×ª×œ×•×ª חובה של $1." #: builtin/mainmenu/dlg_contentstore.lua msgid "$1 will be installed, and $2 dependencies will be skipped." -msgstr "" +msgstr "$1 יותקן ו $2 תלויות שידולגו." #: builtin/mainmenu/dlg_contentstore.lua msgid "All packages" @@ -190,20 +190,19 @@ msgstr "כל החבילות" #: builtin/mainmenu/dlg_contentstore.lua msgid "Already installed" -msgstr "" +msgstr "כבר מותקן" #: builtin/mainmenu/dlg_contentstore.lua msgid "Back to Main Menu" msgstr "חזרה לתפריט הר×שי" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "Base Game:" -msgstr "הסתר משחק" +msgstr "משחק בסיסי:" #: builtin/mainmenu/dlg_contentstore.lua msgid "ContentDB is not available when Minetest was compiled without cURL" -msgstr "" +msgstr "בסיס × ×ª×•× ×™ התוכן ×œ× ×–×ž×™×Ÿ ×›×שר ×ž×™×™× ×˜×¡×˜ מקומפל בלי cUrl" #: builtin/mainmenu/dlg_contentstore.lua msgid "Downloading..." @@ -223,14 +222,12 @@ msgid "Install" msgstr "×”×ª×§× ×”" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "Install $1" -msgstr "×”×ª×§× ×”" +msgstr "×”×ª×§× ×ª $1" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "Install missing dependencies" -msgstr "תלויות רשות:" +msgstr "מתקין תלויות חסרות" #: builtin/mainmenu/dlg_contentstore.lua #: builtin/mainmenu/dlg_settings_advanced.lua @@ -239,37 +236,35 @@ msgstr "מודי×" #: builtin/mainmenu/dlg_contentstore.lua msgid "No packages could be retrieved" -msgstr "" +msgstr "×œ× × ×™×ª×Ÿ ×œ×”×‘×™× ×ת החבילות" #: builtin/mainmenu/dlg_contentstore.lua msgid "No results" msgstr "×ין תוצ×ות" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "No updates" -msgstr "עדכון" +msgstr "×ין ×¢×“×›×•× ×™×" #: builtin/mainmenu/dlg_contentstore.lua msgid "Not found" -msgstr "" +msgstr "×œ× × ×ž×¦×" #: builtin/mainmenu/dlg_contentstore.lua msgid "Overwrite" -msgstr "" +msgstr "דרוס" #: builtin/mainmenu/dlg_contentstore.lua msgid "Please check that the base game is correct." -msgstr "" +msgstr "×× × ×‘×“×•×§ שמשחק הבסיס תקין." #: builtin/mainmenu/dlg_contentstore.lua msgid "Queued" -msgstr "" +msgstr "× ×›× ×¡ לתור" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "Texture packs" -msgstr "חבילות מרק×" +msgstr "חבילות טקסטורה (מרק×)" #: builtin/mainmenu/dlg_contentstore.lua msgid "Uninstall" @@ -281,11 +276,11 @@ msgstr "עדכון" #: builtin/mainmenu/dlg_contentstore.lua msgid "Update All [$1]" -msgstr "" +msgstr "עדכן הכל [$1]" #: builtin/mainmenu/dlg_contentstore.lua msgid "View more information in a web browser" -msgstr "" +msgstr "צפה במידע × ×•×¡×£ בדפדפן ×”××™× ×˜×¨× ×˜" #: builtin/mainmenu/dlg_create_world.lua msgid "A world named \"$1\" already exists" @@ -293,31 +288,31 @@ msgstr "כבר ×§×™×™× ×¢×•×œ× ×‘×©× \"$1\"" #: builtin/mainmenu/dlg_create_world.lua msgid "Additional terrain" -msgstr "" +msgstr "שטח × ×•×¡×£" #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp msgid "Altitude chill" -msgstr "" +msgstr "קור בגבהי×" #: builtin/mainmenu/dlg_create_world.lua msgid "Altitude dry" -msgstr "" +msgstr "יובש בגבהי×" #: builtin/mainmenu/dlg_create_world.lua msgid "Biome blending" -msgstr "" +msgstr "מיזוג ×‘×™×•×ž×™× (×קולוגי)" #: builtin/mainmenu/dlg_create_world.lua msgid "Biomes" -msgstr "ביומות" +msgstr "×‘×™×•×ž×™× (צמחיה ×קולוגית)" #: builtin/mainmenu/dlg_create_world.lua msgid "Caverns" -msgstr "" +msgstr "מערות (טבעיות בחלקן מו×רות)" #: builtin/mainmenu/dlg_create_world.lua msgid "Caves" -msgstr "מערות" +msgstr "מערות (×œ×œ× ×ור שמש)" #: builtin/mainmenu/dlg_create_world.lua msgid "Create" @@ -325,7 +320,7 @@ msgstr "יצירה" #: builtin/mainmenu/dlg_create_world.lua msgid "Decorations" -msgstr "" +msgstr "קישוטי×" #: builtin/mainmenu/dlg_create_world.lua msgid "Download a game, such as Minetest Game, from minetest.net" @@ -337,7 +332,7 @@ msgstr "הורד ×חד מ×תר minetest.net" #: builtin/mainmenu/dlg_create_world.lua msgid "Dungeons" -msgstr "" +msgstr "מבוכי×" #: builtin/mainmenu/dlg_create_world.lua msgid "Flat terrain" @@ -345,11 +340,11 @@ msgstr "×¢×•×œ× ×©×˜×•×—" #: builtin/mainmenu/dlg_create_world.lua msgid "Floating landmasses in the sky" -msgstr "" +msgstr "גושי ×דמה ×¦×¤×™× ×‘×©×ž×™×" #: builtin/mainmenu/dlg_create_world.lua msgid "Floatlands (experimental)" -msgstr "" +msgstr "×דמה צפה (× ×¡×™×•× ×™)" #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp msgid "Game" @@ -357,19 +352,19 @@ msgstr "משחק" #: builtin/mainmenu/dlg_create_world.lua msgid "Generate non-fractal terrain: Oceans and underground" -msgstr "" +msgstr "צור שטח ×œ× ×¤×¨×§×˜×œ×™: ××•×§×™×™× ×•×¡×™× ×•×ª×ª קרקעי" #: builtin/mainmenu/dlg_create_world.lua msgid "Hills" -msgstr "" +msgstr "גבעות" #: builtin/mainmenu/dlg_create_world.lua msgid "Humid rivers" -msgstr "" +msgstr "× ×”×¨×•×ª לחי×" #: builtin/mainmenu/dlg_create_world.lua msgid "Increases humidity around rivers" -msgstr "" +msgstr "הגברת הלחות בסביבת × ×”×¨×•×ª" #: builtin/mainmenu/dlg_create_world.lua msgid "Lakes" @@ -377,20 +372,19 @@ msgstr "×גמי×" #: builtin/mainmenu/dlg_create_world.lua msgid "Low humidity and high heat causes shallow or dry rivers" -msgstr "" +msgstr "לחות × ×ž×•×›×” ×•×—×•× ×’×‘×•×” ×’×•×¨×ž×™× ×œ× ×”×¨×•×ª ×¨×“×•×“×™× ×ו יבשי×" #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp msgid "Mapgen" -msgstr "×ž× ×•×¢ מפות" +msgstr "×ž× ×•×¢ (מחולל) מפות" #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp msgid "Mapgen flags" -msgstr "" +msgstr "×פשרויות ×ž× ×•×¢ מפות" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Mapgen-specific flags" -msgstr "×ž× ×•×¢ מפות" +msgstr "×פשרויות ספציפיות ×œ×ž× ×•×¢ מפות" #: builtin/mainmenu/dlg_create_world.lua msgid "Mountains" @@ -398,11 +392,11 @@ msgstr "הרי×" #: builtin/mainmenu/dlg_create_world.lua msgid "Mud flow" -msgstr "" +msgstr "זרימת בוץ" #: builtin/mainmenu/dlg_create_world.lua msgid "Network of tunnels and caves" -msgstr "" +msgstr "רשת מערות ומחילות" #: builtin/mainmenu/dlg_create_world.lua msgid "No game selected" @@ -410,11 +404,11 @@ msgstr "×œ× × ×‘×—×¨ משחק" #: builtin/mainmenu/dlg_create_world.lua msgid "Reduces heat with altitude" -msgstr "" +msgstr "הפחתה ×‘×—×•× ×‘×’×•×‘×” רב" #: builtin/mainmenu/dlg_create_world.lua msgid "Reduces humidity with altitude" -msgstr "" +msgstr "הפחתת הלחות בגובה רב" #: builtin/mainmenu/dlg_create_world.lua msgid "Rivers" @@ -422,7 +416,7 @@ msgstr "× ×”×¨×•×ª" #: builtin/mainmenu/dlg_create_world.lua msgid "Sea level rivers" -msgstr "" +msgstr "× ×”×¨×•×ª בגובה ×¤× ×™ ×”×™×" #: builtin/mainmenu/dlg_create_world.lua #: builtin/mainmenu/dlg_settings_advanced.lua @@ -431,45 +425,45 @@ msgstr "זרע" #: builtin/mainmenu/dlg_create_world.lua msgid "Smooth transition between biomes" -msgstr "" +msgstr "מעבר חלק בין ×זורי ××§×œ×™× ×©×•× ×™×" #: builtin/mainmenu/dlg_create_world.lua msgid "" "Structures appearing on the terrain (no effect on trees and jungle grass " "created by v6)" -msgstr "" +msgstr "×ž×‘× ×™× ×”×ž×•×¤×™×¢×™× ×‘×©×˜×— (×ין השפעה על ×¢×¦×™× ×•×¢×©×‘×™ ×’'×•× ×’×œ ×©× ×•×¦×¨×• על ידי v6)" #: builtin/mainmenu/dlg_create_world.lua msgid "Structures appearing on the terrain, typically trees and plants" -msgstr "" +msgstr "×ž×‘× ×™× ×”×ž×•×¤×™×¢×™× ×‘×©×˜×—, בדרך כלל ×¢×¦×™× ×•×¦×ž×—×™×" #: builtin/mainmenu/dlg_create_world.lua msgid "Temperate, Desert" -msgstr "" +msgstr "ממוזג, מדברי" #: builtin/mainmenu/dlg_create_world.lua msgid "Temperate, Desert, Jungle" -msgstr "" +msgstr "ממוזג, מדברי, ×’'×•× ×’×œ" #: builtin/mainmenu/dlg_create_world.lua msgid "Temperate, Desert, Jungle, Tundra, Taiga" -msgstr "" +msgstr "ממוזג, מדברי, ×’'×•× ×’×œ, ×˜×•× ×“×¨×”, טייגה" #: builtin/mainmenu/dlg_create_world.lua msgid "Terrain surface erosion" -msgstr "" +msgstr "סחף ×¤× ×™ השטח" #: builtin/mainmenu/dlg_create_world.lua msgid "Trees and jungle grass" -msgstr "" +msgstr "×¢×¦×™× ×•×“×©× ×©×œ ×’×³×•× ×’×œ" #: builtin/mainmenu/dlg_create_world.lua msgid "Vary river depth" -msgstr "" +msgstr "עומק × ×”×¨×•×ª ×ž×©×ª× ×”" #: builtin/mainmenu/dlg_create_world.lua msgid "Very large caverns deep in the underground" -msgstr "" +msgstr "מערות גדולות מ×וד עמוק מתחת ל×דמה" #: builtin/mainmenu/dlg_create_world.lua msgid "Warning: The Development Test is meant for developers." @@ -499,7 +493,7 @@ msgstr "pkgmgr: מחיקת \"$1\" × ×›×©×œ×”" #: builtin/mainmenu/dlg_delete_content.lua msgid "pkgmgr: invalid path \"$1\"" -msgstr "" +msgstr "pkgmgr: × ×ª×™×‘ ×œ× ×—×•×§×™ \"$1\"" #: builtin/mainmenu/dlg_delete_world.lua msgid "Delete World \"$1\"?" @@ -511,13 +505,15 @@ msgstr "הסכמה" #: builtin/mainmenu/dlg_rename_modpack.lua msgid "Rename Modpack:" -msgstr "×©×™× ×•×™ ×©× ×¢×¨×›×ª המודי×:" +msgstr "×©× ×” ×ת ×©× ×—×‘×™×œ×ª המודי×:" #: builtin/mainmenu/dlg_rename_modpack.lua msgid "" "This modpack has an explicit name given in its modpack.conf which will " "override any renaming here." msgstr "" +"ל- modpack (חבילת תוספות) ×–×” יש ×©× ×ž×¤×•×¨×© ×©× ×™×ª×Ÿ ב modpack.conf שלו ×שר יעקוף " +"כל ×©×™× ×•×™-×©× ×›×ן." #: builtin/mainmenu/dlg_settings_advanced.lua msgid "(No description of setting given)" @@ -525,7 +521,7 @@ msgstr "(×œ× × ×•×¡×£ תי×ור להגדרה)" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "2D Noise" -msgstr "" +msgstr "רעש דו-מיימדי" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "< Back to Settings page" @@ -533,7 +529,7 @@ msgstr "חזור לדף ההגדרות >" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Browse" -msgstr "עיון" +msgstr "דפדף" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Disabled" @@ -549,27 +545,27 @@ msgstr "מופעל" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Lacunarity" -msgstr "" +msgstr "מרווחיות" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Octaves" -msgstr "" +msgstr "×וקטבות" #: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp msgid "Offset" -msgstr "" +msgstr "היסט" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Persistance" -msgstr "" +msgstr "התמדה" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Please enter a valid integer." -msgstr "" +msgstr "×”×›× ×¡ מספר ×©×œ× ×—×•×§×™." #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Please enter a valid number." -msgstr "× × ×œ×”×–×™×Ÿ מספר תקין." +msgstr "×”×›× ×¡ מספר חוקי." #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Restore Default" @@ -577,7 +573,7 @@ msgstr "שחזור לברירת המחדל" #: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp msgid "Scale" -msgstr "" +msgstr "×§× ×” מידה" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Search" @@ -605,27 +601,27 @@ msgstr "הערך ×œ× ×™×›×•×œ להיות גדול מ־$1." #: builtin/mainmenu/dlg_settings_advanced.lua msgid "X" -msgstr "" +msgstr "X" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "X spread" -msgstr "" +msgstr "מרווחיות X" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Y" -msgstr "" +msgstr "Y" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Y spread" -msgstr "" +msgstr "מרווחיות Y" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Z" -msgstr "" +msgstr "Z" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Z spread" -msgstr "" +msgstr "מרווחיות Z" #. ~ "absvalue" is a noise parameter flag. #. It is short for "absolute value". @@ -633,14 +629,14 @@ msgstr "" #. main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "absvalue" -msgstr "" +msgstr "ערך מוחלט" #. ~ "defaults" is a noise parameter flag. #. It describes the default processing options #. for noise settings in main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "defaults" -msgstr "" +msgstr "ברירת מחדל" #. ~ "eased" is a noise parameter flag. #. It is used to make the map smoother and @@ -648,7 +644,7 @@ msgstr "" #. main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "eased" -msgstr "" +msgstr "החלקת ערכי×" #: builtin/mainmenu/pkgmgr.lua msgid "$1 (Enabled)" @@ -660,60 +656,65 @@ msgstr "$1 מודי×" #: builtin/mainmenu/pkgmgr.lua msgid "Failed to install $1 to $2" -msgstr "" +msgstr "×”×ª×§× ×ª $1 ×ל $2 × ×›×©×œ×”" #: builtin/mainmenu/pkgmgr.lua msgid "Install Mod: Unable to find real mod name for: $1" -msgstr "" +msgstr "×”×ª×§× ×ª מוד: ×œ× × ×™×ª×Ÿ ×œ×ž×¦×•× ×ת ×©× ×”×ž×•×“ ×”×מיתי עבור: $1" #: builtin/mainmenu/pkgmgr.lua msgid "Install Mod: Unable to find suitable folder name for modpack $1" -msgstr "" +msgstr "×”×ª×§× ×ª מוד: ×œ× × ×™×ª×Ÿ ×œ×ž×¦×•× ×©× ×ª×™×§×™×™×” מת××™× ×¢×‘×•×¨ חבילת ×”×ž×•×“×™× $1" #: builtin/mainmenu/pkgmgr.lua msgid "Install: Unsupported file type \"$1\" or broken archive" -msgstr "" +msgstr "×”×ª×§× ×”: סוג קובץ ×œ× × ×ª×ž×š \"$1\" ×ו שה×רכיב פגו×" #: builtin/mainmenu/pkgmgr.lua msgid "Install: file: \"$1\"" -msgstr "" +msgstr "×”×ª×§× ×”: מקובץ: \"$1\"" #: builtin/mainmenu/pkgmgr.lua msgid "Unable to find a valid mod or modpack" -msgstr "" +msgstr "×œ× × ×™×ª×Ÿ ×œ×ž×¦×•× ×ž×•×“/חבילת ×ž×•×“×™× ×ª×§×™× ×”" #: builtin/mainmenu/pkgmgr.lua msgid "Unable to install a $1 as a texture pack" -msgstr "" +msgstr "×œ× × ×™×ª×Ÿ להתקין $1 כחבילת טקסטורות" #: builtin/mainmenu/pkgmgr.lua msgid "Unable to install a game as a $1" -msgstr "" +msgstr "×œ× × ×™×ª×Ÿ להתקין משחק בתור $1" #: builtin/mainmenu/pkgmgr.lua msgid "Unable to install a mod as a $1" -msgstr "" +msgstr "×œ× × ×™×ª×Ÿ להתקין מוד בתור $1" #: builtin/mainmenu/pkgmgr.lua msgid "Unable to install a modpack as a $1" -msgstr "" +msgstr "×œ× × ×™×ª×Ÿ להתקין חבילת ×ž×•×“×™× ×‘×ª×•×¨ $1" #: builtin/mainmenu/serverlistmgr.lua src/client/game.cpp msgid "Loading..." msgstr "כעת ×‘×˜×¢×™× ×”..." #: builtin/mainmenu/serverlistmgr.lua +#, fuzzy +msgid "Public server list is disabled" +msgstr "×¡×§×¨×™×¤×˜×™× ×‘×¦×“ לקוח מבוטלי×" + +#: builtin/mainmenu/serverlistmgr.lua msgid "Try reenabling public serverlist and check your internet connection." msgstr "" "× × ×œ× ×¡×•×ª לצ×ת ×•×œ×”×™×›× ×¡ מחדש לרשימת ×”×©×¨×ª×™× ×•×œ×‘×“×•×§ ×ת החיבור שלך ל××™× ×˜×¨× ×˜." #: builtin/mainmenu/tab_content.lua msgid "Browse online content" -msgstr "" +msgstr "עיון בתוכן מקוון" #: builtin/mainmenu/tab_content.lua msgid "Content" -msgstr "" +msgstr "תוכן" #: builtin/mainmenu/tab_content.lua msgid "Disable Texture Pack" @@ -721,11 +722,11 @@ msgstr "השבתת חבילת המרק×" #: builtin/mainmenu/tab_content.lua msgid "Information:" -msgstr "" +msgstr "מידע:" #: builtin/mainmenu/tab_content.lua msgid "Installed Packages:" -msgstr "" +msgstr "חבילות ×ž×•×ª×§× ×•×ª:" #: builtin/mainmenu/tab_content.lua msgid "No dependencies." @@ -733,15 +734,15 @@ msgstr "×ין תלויות." #: builtin/mainmenu/tab_content.lua msgid "No package description available" -msgstr "" +msgstr "×ין תי×ור חבילה זמין" #: builtin/mainmenu/tab_content.lua msgid "Rename" -msgstr "×©×™× ×•×™ ש×" +msgstr "×©× ×” ש×" #: builtin/mainmenu/tab_content.lua msgid "Uninstall Package" -msgstr "" +msgstr "הסרת החבילה" #: builtin/mainmenu/tab_content.lua msgid "Use Texture Pack" @@ -749,42 +750,43 @@ msgstr "שימוש בחבילת המרק×" #: builtin/mainmenu/tab_credits.lua msgid "Active Contributors" -msgstr "" +msgstr "×ª×•×¨×ž×™× ×¤×¢×™×œ×™×" #: builtin/mainmenu/tab_credits.lua msgid "Core Developers" -msgstr "" +msgstr "×ž×¤×ª×—×™× ×¢×™×§×¨×™×™×" #: builtin/mainmenu/tab_credits.lua msgid "Credits" msgstr "תודות" #: builtin/mainmenu/tab_credits.lua -#, fuzzy msgid "Open User Data Directory" -msgstr "× × ×œ×‘×—×•×¨ תיקיה" +msgstr "× × ×œ×‘×—×•×¨ תיקיית משתמש" #: builtin/mainmenu/tab_credits.lua msgid "" "Opens the directory that contains user-provided worlds, games, mods,\n" "and texture packs in a file manager / explorer." msgstr "" +"פותח ×ת התיקייה המכילה עולמות, משחקי×, מודי×,\n" +"וחבילות טקסטורה ×‘×ž× ×”×œ קבצי×." #: builtin/mainmenu/tab_credits.lua msgid "Previous Contributors" -msgstr "" +msgstr "×ª×•×¨×ž×™× ×§×•×“×ž×™×" #: builtin/mainmenu/tab_credits.lua msgid "Previous Core Developers" -msgstr "" +msgstr "מפתחי ליבה קודמי×" #: builtin/mainmenu/tab_local.lua msgid "Announce Server" -msgstr "" +msgstr "הכרז על השרת" #: builtin/mainmenu/tab_local.lua msgid "Bind Address" -msgstr "" +msgstr "הצמד כתובת" #: builtin/mainmenu/tab_local.lua msgid "Creative Mode" @@ -795,9 +797,8 @@ msgid "Enable Damage" msgstr "ל×פשר חבלה" #: builtin/mainmenu/tab_local.lua -#, fuzzy msgid "Host Game" -msgstr "הסתר משחק" +msgstr "×ירוח משחק" #: builtin/mainmenu/tab_local.lua msgid "Host Server" @@ -805,11 +806,11 @@ msgstr "×כסון שרת" #: builtin/mainmenu/tab_local.lua msgid "Install games from ContentDB" -msgstr "" +msgstr "×”×ª×§× ×ª משחק מContentDB" #: builtin/mainmenu/tab_local.lua msgid "Name" -msgstr "" +msgstr "ש×" #: builtin/mainmenu/tab_local.lua msgid "New" @@ -820,23 +821,20 @@ msgid "No world created or selected!" msgstr "×ין ×¢×•×œ× ×©× ×•×¦×¨ ×ו × ×‘×—×¨!" #: builtin/mainmenu/tab_local.lua -#, fuzzy msgid "Password" -msgstr "ש×/סיסמה" +msgstr "סיסמה" #: builtin/mainmenu/tab_local.lua -#, fuzzy msgid "Play Game" -msgstr "התחל משחק" +msgstr "להתחיל לשחק" #: builtin/mainmenu/tab_local.lua msgid "Port" msgstr "פורט" #: builtin/mainmenu/tab_local.lua -#, fuzzy msgid "Select Mods" -msgstr "× × ×œ×‘×—×•×¨ עול×:" +msgstr "בחירת מודי×" #: builtin/mainmenu/tab_local.lua msgid "Select World:" @@ -844,12 +842,11 @@ msgstr "× × ×œ×‘×—×•×¨ עול×:" #: builtin/mainmenu/tab_local.lua msgid "Server Port" -msgstr "" +msgstr "פורט לשרת" #: builtin/mainmenu/tab_local.lua -#, fuzzy msgid "Start Game" -msgstr "הסתר משחק" +msgstr "התחלת המשחק" #: builtin/mainmenu/tab_online.lua msgid "Address / Port" @@ -865,15 +862,15 @@ msgstr "מצב יצירתי" #: builtin/mainmenu/tab_online.lua msgid "Damage enabled" -msgstr "החבלה מ×ופשרת" +msgstr "× ×–×§ מופעל" #: builtin/mainmenu/tab_online.lua msgid "Del. Favorite" -msgstr "" +msgstr "מחק מועדף" #: builtin/mainmenu/tab_online.lua msgid "Favorite" -msgstr "" +msgstr "מועדף" #: builtin/mainmenu/tab_online.lua msgid "Join Game" @@ -885,7 +882,7 @@ msgstr "ש×/סיסמה" #: builtin/mainmenu/tab_online.lua msgid "Ping" -msgstr "" +msgstr "×¤×™× ×’" #. ~ PvP = Player versus Player #: builtin/mainmenu/tab_online.lua @@ -894,19 +891,19 @@ msgstr "ל×פשר קרבות" #: builtin/mainmenu/tab_settings.lua msgid "2x" -msgstr "" +msgstr "x2" #: builtin/mainmenu/tab_settings.lua msgid "3D Clouds" -msgstr "" +msgstr "×¢× × ×™× ×ª×œ×ª מימדיי×" #: builtin/mainmenu/tab_settings.lua msgid "4x" -msgstr "" +msgstr "x4" #: builtin/mainmenu/tab_settings.lua msgid "8x" -msgstr "" +msgstr "x8" #: builtin/mainmenu/tab_settings.lua msgid "All Settings" @@ -914,64 +911,63 @@ msgstr "כל ההגדרות" #: builtin/mainmenu/tab_settings.lua msgid "Antialiasing:" -msgstr "" +msgstr "החלקת קצוות (AA):" #: builtin/mainmenu/tab_settings.lua msgid "Autosave Screen Size" -msgstr "" +msgstr "שמור ×וטומטית גודל מסך" #: builtin/mainmenu/tab_settings.lua msgid "Bilinear Filter" -msgstr "" +msgstr "פילטר ×‘×™×œ×™× ×רי" #: builtin/mainmenu/tab_settings.lua src/client/game.cpp msgid "Change Keys" -msgstr "" +msgstr "×©× ×” מקשי×" #: builtin/mainmenu/tab_settings.lua -#, fuzzy msgid "Connected Glass" -msgstr "התחבר" +msgstr "זכוכיות מחוברות" #: builtin/mainmenu/tab_settings.lua msgid "Fancy Leaves" -msgstr "" +msgstr "×¢×œ×™× ×ž×’× ×™×‘×™×" #: builtin/mainmenu/tab_settings.lua msgid "Mipmap" -msgstr "" +msgstr "מיפמ×פ" #: builtin/mainmenu/tab_settings.lua msgid "Mipmap + Aniso. Filter" -msgstr "" +msgstr "מיפמ×פ + פילטר ×× ×™×¡×•×˜×¨×•×¤×™" #: builtin/mainmenu/tab_settings.lua msgid "No Filter" -msgstr "" +msgstr "בלי פילטר" #: builtin/mainmenu/tab_settings.lua msgid "No Mipmap" -msgstr "" +msgstr "בלי מיפמ×פ" #: builtin/mainmenu/tab_settings.lua msgid "Node Highlighting" -msgstr "" +msgstr "הבלטת קוביות" #: builtin/mainmenu/tab_settings.lua msgid "Node Outlining" -msgstr "" +msgstr "הדגשת מסגרת קוביות" #: builtin/mainmenu/tab_settings.lua msgid "None" -msgstr "" +msgstr "לל×" #: builtin/mainmenu/tab_settings.lua msgid "Opaque Leaves" -msgstr "" +msgstr "×¢×œ×™× ×טומי×" #: builtin/mainmenu/tab_settings.lua msgid "Opaque Water" -msgstr "" +msgstr "×ž×™× ××˜×•×ž×™× ×œ×ור" #: builtin/mainmenu/tab_settings.lua msgid "Particles" @@ -979,7 +975,7 @@ msgstr "חלקיקי×" #: builtin/mainmenu/tab_settings.lua msgid "Screen:" -msgstr "" +msgstr "מסך:" #: builtin/mainmenu/tab_settings.lua msgid "Settings" @@ -987,103 +983,103 @@ msgstr "הגדרות" #: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp msgid "Shaders" -msgstr "" +msgstr "שיידרי×" #: builtin/mainmenu/tab_settings.lua msgid "Shaders (experimental)" -msgstr "" +msgstr "×©×™×™×“×¨×™× (× ×¡×™×•× ×™)" #: builtin/mainmenu/tab_settings.lua msgid "Shaders (unavailable)" -msgstr "" +msgstr "×©×™×™×“×¨×™× (×œ× ×–×ž×™× ×™×)" #: builtin/mainmenu/tab_settings.lua msgid "Simple Leaves" -msgstr "" +msgstr "×¢×œ×™× ×¤×©×•×˜×™×" #: builtin/mainmenu/tab_settings.lua msgid "Smooth Lighting" -msgstr "" +msgstr "החלקת ת×ורה" #: builtin/mainmenu/tab_settings.lua msgid "Texturing:" -msgstr "" +msgstr "טקסטורות:" #: builtin/mainmenu/tab_settings.lua msgid "To enable shaders the OpenGL driver needs to be used." -msgstr "" +msgstr "כדי ל×פשר ×©×™×™×“×¨×™× ×™×© להשתמש בדרייבר של OpenGL." #: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp msgid "Tone Mapping" -msgstr "" +msgstr "מיפוי ×’×•×•× ×™×" #: builtin/mainmenu/tab_settings.lua msgid "Touchthreshold: (px)" -msgstr "" +msgstr "סף × ×’×™×¢×”: (px)" #: builtin/mainmenu/tab_settings.lua msgid "Trilinear Filter" -msgstr "" +msgstr "פילטר תלת ×œ×™× ×רי" #: builtin/mainmenu/tab_settings.lua msgid "Waving Leaves" -msgstr "" +msgstr "×¢×œ×™× ×ž×ª× ×•×¤×¤×™×" #: builtin/mainmenu/tab_settings.lua msgid "Waving Liquids" -msgstr "" +msgstr "× ×•×–×œ×™× ×¢× ×’×œ×™×" #: builtin/mainmenu/tab_settings.lua msgid "Waving Plants" -msgstr "" +msgstr "×¦×ž×—×™× ×ž×ª× ×•×¢× ×¢×™×" #: src/client/client.cpp msgid "Connection timed out." -msgstr "" +msgstr "זמן ×”×ž×ª× ×” לחיבור ×זל." #: src/client/client.cpp msgid "Done!" -msgstr "" +msgstr "הסתיי×!" #: src/client/client.cpp msgid "Initializing nodes" -msgstr "" +msgstr "מ×תחל קוביות" #: src/client/client.cpp msgid "Initializing nodes..." -msgstr "" +msgstr "מ×תחל קוביות..." #: src/client/client.cpp msgid "Loading textures..." -msgstr "" +msgstr "טוען טקסטורות..." #: src/client/client.cpp msgid "Rebuilding shaders..." -msgstr "" +msgstr "×‘×•× ×” מחדש שיידרי×..." #: src/client/clientlauncher.cpp msgid "Connection error (timed out?)" -msgstr "" +msgstr "בעיה בחיבור (× ×’×ž×¨ זמן ×”×”×ž×ª× ×”?)" #: src/client/clientlauncher.cpp msgid "Could not find or load game \"" -msgstr "" +msgstr "×œ× ×ž×¦×œ×™×— ×œ×ž×¦×•× ×ו לטעון משחק \"" #: src/client/clientlauncher.cpp msgid "Invalid gamespec." -msgstr "" +msgstr "הגדרת משחק ×œ× ×ª×§×™× ×”." #: src/client/clientlauncher.cpp msgid "Main Menu" -msgstr "" +msgstr "תפריט ר×שי" #: src/client/clientlauncher.cpp msgid "No world selected and no address provided. Nothing to do." -msgstr "" +msgstr "×œ× × ×‘×—×¨ ×¢×•×œ× ×•×œ× × ×ª× ×” כתובת. ×œ× ×¢×•×©×” כלו×." #: src/client/clientlauncher.cpp msgid "Player name too long." -msgstr "" +msgstr "×©× ×”×©×—×§×Ÿ ×רוך מידי." #: src/client/clientlauncher.cpp msgid "Please choose a name!" @@ -1091,11 +1087,11 @@ msgstr "× × ×œ×‘×—×•×¨ ש×!" #: src/client/clientlauncher.cpp msgid "Provided password file failed to open: " -msgstr "" +msgstr "הסיסמה ×©× ×™×ª× ×” ×œ× ×¤×ª×—×”: " #: src/client/clientlauncher.cpp msgid "Provided world path doesn't exist: " -msgstr "" +msgstr "× ×ª×™×‘ ×”×¢×•×œ× ×©× ×™×ª×Ÿ ×œ× ×§×™×™×: " #. ~ DO NOT TRANSLATE THIS LITERALLY! #. This is a special string. Put either "no" or "yes" @@ -1114,6 +1110,8 @@ msgid "" "\n" "Check debug.txt for details." msgstr "" +"\n" +"בדוק ×ת debug.txt ×œ×¤×¨×˜×™× × ×•×¡×¤×™×." #: src/client/game.cpp msgid "- Address: " @@ -1129,7 +1127,7 @@ msgstr "- חבלה: " #: src/client/game.cpp msgid "- Mode: " -msgstr "" +msgstr "- מצב: " #: src/client/game.cpp msgid "- Port: " @@ -1142,54 +1140,54 @@ msgstr "- ציבורי: " #. ~ PvP = Player versus Player #: src/client/game.cpp msgid "- PvP: " -msgstr "" +msgstr "- קרב: " #: src/client/game.cpp msgid "- Server Name: " -msgstr "" +msgstr "- ×©× ×©×¨×ª: " #: src/client/game.cpp msgid "Automatic forward disabled" -msgstr "" +msgstr "התקדמות ×וטומטית קדימה מבוטלת" #: src/client/game.cpp msgid "Automatic forward enabled" -msgstr "" +msgstr "×ª× ×•×¢×” קדימה ×וטומטית מופעל" #: src/client/game.cpp msgid "Camera update disabled" -msgstr "" +msgstr "עדכון מצלמה מבוטל" #: src/client/game.cpp msgid "Camera update enabled" -msgstr "" +msgstr "עדכון מצלמה מופעל" #: src/client/game.cpp msgid "Change Password" -msgstr "" +msgstr "×©× ×” סיסמה" #: src/client/game.cpp msgid "Cinematic mode disabled" -msgstr "" +msgstr "מצב ×§×•×œ× ×•×¢×™ מבוטל" #: src/client/game.cpp msgid "Cinematic mode enabled" -msgstr "" +msgstr "מצב ×§×•×œ× ×•×¢×™ מופעל" #: src/client/game.cpp msgid "Client side scripting is disabled" -msgstr "" +msgstr "×¡×§×¨×™×¤×˜×™× ×‘×¦×“ לקוח מבוטלי×" #: src/client/game.cpp msgid "Connecting to server..." -msgstr "" +msgstr "מתחבר לשרת..." #: src/client/game.cpp msgid "Continue" -msgstr "" +msgstr "המשך" #: src/client/game.cpp -#, fuzzy, c-format +#, c-format msgid "" "Controls:\n" "- %s: move forwards\n" @@ -1211,35 +1209,35 @@ msgstr "" "- %s: כדי לזוז ×חורה\n" "- %s: כדי לזוז שמ×לה\n" "- %s: כדי לזוז ×™×ž×™× ×”\n" -"- %s: כדי לקפוץ ×ו לטפס\n" -"- %s: כדי להתכופף ×ו לרדת למטה\n" +"- %s: כדי לקפוץ ×ו לטפס למעלה\n" +"- %s: כדי לחפור ×ו לחבוט\n" +"- %s: כדי ×œ×”× ×™×— ×ו להשתמש\n" +"- %s: כדי להתכופף ×ו לטפס למטה\n" "- %s: כדי לזרוק פריט\n" "- %s: כדי לפתוח ×ת תיק החפצי×\n" "- עכבר: כדי להסתובב ×ו להסתכל\n" -"- לחצן שמ×לי בעכבר: כדי לחצוב ×ו להרביץ\n" -"- לחצן ×™×ž× ×™ בעכבר: כדי ×œ×”× ×™×— ×ו להשתמש\n" "- גלגלת העכבר: כדי לבחור פריט\n" "- %s: כדי לפתוח ×ת הצ׳×ט\n" #: src/client/game.cpp msgid "Creating client..." -msgstr "" +msgstr "יוצר לקוח..." #: src/client/game.cpp msgid "Creating server..." -msgstr "" +msgstr "יוצר שרת..." #: src/client/game.cpp msgid "Debug info and profiler graph hidden" -msgstr "" +msgstr "מידע דיב××’ וגרף פרופיילר מוסתר" #: src/client/game.cpp msgid "Debug info shown" -msgstr "" +msgstr "מידע דיב××’ מוצג" #: src/client/game.cpp msgid "Debug info, profiler graph, and wireframe hidden" -msgstr "" +msgstr "מידע דיב××’, גרף פרופיילר, ומצב שלד מוסתר" #: src/client/game.cpp msgid "" @@ -1256,18 +1254,30 @@ msgid "" "- touch&drag, tap 2nd finger\n" " --> place single item to slot\n" msgstr "" +"פקדי ברירת מחדל:\n" +"×œ× × ×¨××” תפריט:\n" +"- לחיצה בודדת: הפעלת כפתור\n" +"- הקשה כפולה: ×ž×§×•× / שימוש\n" +"- החלק ×צבע: הביט סביב\n" +"תפריט / מל××™ גלוי:\n" +"- לחיצה כפולה (בחוץ):\n" +"--> סגור\n" +"- ×ž×—×¡× ×™×ª מגע, חריץ מגע:\n" +"--> ×”×–×– ×ž×—×¡× ×™×ª\n" +"- ×’×¢ וגרור, הקש על ×”×צבע ×”×©× ×™×™×”\n" +"--> ×ž×§× ×¤×¨×™×˜ יחיד לחריץ\n" #: src/client/game.cpp msgid "Disabled unlimited viewing range" -msgstr "" +msgstr "ביטול טווח ר××™×” בלתי מוגבל" #: src/client/game.cpp msgid "Enabled unlimited viewing range" -msgstr "" +msgstr "הפעלת טווח ר××™×” בלתי מוגבל" #: src/client/game.cpp msgid "Exit to Menu" -msgstr "" +msgstr "יצי××” לתפריט" #: src/client/game.cpp msgid "Exit to OS" @@ -1275,40 +1285,39 @@ msgstr "יצי××” למערכת ההפעלה" #: src/client/game.cpp msgid "Fast mode disabled" -msgstr "" +msgstr "מצב מהיר מבוטל" #: src/client/game.cpp msgid "Fast mode enabled" -msgstr "" +msgstr "מצב מהיר מופעל" #: src/client/game.cpp msgid "Fast mode enabled (note: no 'fast' privilege)" -msgstr "" +msgstr "מצב מהיר מופעל (×©×™× ×œ×‘, ×ין הרש×ת 'fast')" #: src/client/game.cpp msgid "Fly mode disabled" -msgstr "" +msgstr "מצב תעופה מבוטל" #: src/client/game.cpp msgid "Fly mode enabled" -msgstr "מצב התעופה הופעל" +msgstr "מצב תעופה הופעל" #: src/client/game.cpp msgid "Fly mode enabled (note: no 'fly' privilege)" -msgstr "" +msgstr "מצב תעופה מופעל (×©×™× ×œ×‘, ×ין הרש×ת 'fly')" #: src/client/game.cpp msgid "Fog disabled" -msgstr "" +msgstr "ערפל מבוטל" #: src/client/game.cpp -#, fuzzy msgid "Fog enabled" -msgstr "מופעל" +msgstr "ערפל מופעל" #: src/client/game.cpp msgid "Game info:" -msgstr "" +msgstr "מידע על המשחק:" #: src/client/game.cpp msgid "Game paused" @@ -1316,75 +1325,75 @@ msgstr "המשחק הושהה" #: src/client/game.cpp msgid "Hosting server" -msgstr "" +msgstr "שרת מ×רח" #: src/client/game.cpp msgid "Item definitions..." -msgstr "" +msgstr "הגדרות פריט..." #: src/client/game.cpp msgid "KiB/s" -msgstr "" +msgstr "קילובייט/×©× ×™×”" #: src/client/game.cpp msgid "Media..." -msgstr "" +msgstr "מדיה..." #: src/client/game.cpp msgid "MiB/s" -msgstr "" +msgstr "מגהבייט/×©× ×™×”" #: src/client/game.cpp msgid "Minimap currently disabled by game or mod" -msgstr "" +msgstr "מיפמ×פ כרגע מבוטל ×¢\"×™ המשחק ×ו המוד" #: src/client/game.cpp msgid "Noclip mode disabled" -msgstr "" +msgstr "מעבר דרך קירות מבוטל" #: src/client/game.cpp msgid "Noclip mode enabled" -msgstr "" +msgstr "מעבר דרך קירות מופעל" #: src/client/game.cpp msgid "Noclip mode enabled (note: no 'noclip' privilege)" -msgstr "" +msgstr "מעבר דרך קירות מופעל (×©×™× ×œ×‘, ×ין הרש×ת 'noclip')" #: src/client/game.cpp msgid "Node definitions..." -msgstr "" +msgstr "הגדרות קוביה..." #: src/client/game.cpp msgid "Off" -msgstr "" +msgstr "מכובה" #: src/client/game.cpp msgid "On" -msgstr "" +msgstr "דולק" #: src/client/game.cpp msgid "Pitch move mode disabled" -msgstr "" +msgstr "×ª× ×•×¢×” לכיוון מבט מכובה" #: src/client/game.cpp msgid "Pitch move mode enabled" -msgstr "" +msgstr "×ª× ×•×¢×” לכיוון מבט מופעל" #: src/client/game.cpp msgid "Profiler graph shown" -msgstr "" +msgstr "גרף פרופיילר מוצג" #: src/client/game.cpp msgid "Remote server" -msgstr "" +msgstr "שרת מרוחק" #: src/client/game.cpp msgid "Resolving address..." -msgstr "" +msgstr "×ž×¤×¢× ×— כתובת..." #: src/client/game.cpp msgid "Shutting down..." -msgstr "" +msgstr "מכבה..." #: src/client/game.cpp msgid "Singleplayer" @@ -1392,149 +1401,148 @@ msgstr "שחקן יחיד" #: src/client/game.cpp msgid "Sound Volume" -msgstr "" +msgstr "×•×•×œ×™×•× ×©×ž×¢" #: src/client/game.cpp msgid "Sound muted" -msgstr "" +msgstr "שמע מושתק" #: src/client/game.cpp msgid "Sound system is disabled" -msgstr "" +msgstr "מערכת שמע ×œ× ×ž×•×¤×¢×œ×ª" #: src/client/game.cpp msgid "Sound system is not supported on this build" -msgstr "" +msgstr "מערכת שמע ×œ× × ×ª×ž×›×ª ×‘×‘× ×™×” ×”× ×•×›×—×™×ª" #: src/client/game.cpp msgid "Sound unmuted" -msgstr "" +msgstr "מערכת שמע מופעלת" #: src/client/game.cpp #, c-format msgid "Viewing range changed to %d" -msgstr "" +msgstr "טווח ר××™×” ×”×©×ª× ×” ל %d" #: src/client/game.cpp #, c-format msgid "Viewing range is at maximum: %d" -msgstr "" +msgstr "טווח ר××™×” ×”×’×™×¢ למקסימו×: %d" #: src/client/game.cpp #, c-format msgid "Viewing range is at minimum: %d" -msgstr "" +msgstr "טווח ר××™×” ×”×’×™×¢ ×œ×ž×™× ×™×ž×•×: %d" #: src/client/game.cpp #, c-format msgid "Volume changed to %d%%" -msgstr "" +msgstr "עוצמת שמע ×©×•× ×ª×” ל %d%%" #: src/client/game.cpp msgid "Wireframe shown" -msgstr "" +msgstr "מסגרת שלדית מוצגת" #: src/client/game.cpp msgid "Zoom currently disabled by game or mod" -msgstr "" +msgstr "×–×•× ×’×¨×’×¢ מבוטל על-ידי המשחק ×ו המוד" #: src/client/game.cpp msgid "ok" -msgstr "" +msgstr "×וקיי" #: src/client/gameui.cpp msgid "Chat hidden" -msgstr "" +msgstr "צ'×ט מוסתר" #: src/client/gameui.cpp msgid "Chat shown" -msgstr "" +msgstr "צ'×ט מוצג" #: src/client/gameui.cpp msgid "HUD hidden" -msgstr "" +msgstr "מידע-על-מסך מוסתר" #: src/client/gameui.cpp msgid "HUD shown" -msgstr "" +msgstr "מידע-על-מסך מוצג" #: src/client/gameui.cpp msgid "Profiler hidden" -msgstr "" +msgstr "פרופיילר מוסתר" #: src/client/gameui.cpp #, c-format msgid "Profiler shown (page %d of %d)" -msgstr "" +msgstr "פרופיילר מוצג (עמוד %d מתוך %d)" #: src/client/keycode.cpp msgid "Apps" -msgstr "" +msgstr "×פליקציות" #: src/client/keycode.cpp msgid "Backspace" -msgstr "" +msgstr "Backspace" #: src/client/keycode.cpp msgid "Caps Lock" -msgstr "" +msgstr "Caps Lock" #: src/client/keycode.cpp msgid "Clear" -msgstr "" +msgstr "× ×§×”" #: src/client/keycode.cpp msgid "Control" -msgstr "" +msgstr "×§×•× ×˜×¨×•×œ" #: src/client/keycode.cpp msgid "Down" -msgstr "" +msgstr "למטה" #: src/client/keycode.cpp msgid "End" -msgstr "" +msgstr "End" #: src/client/keycode.cpp msgid "Erase EOF" -msgstr "" +msgstr "מחק EOF" #: src/client/keycode.cpp msgid "Execute" -msgstr "" +msgstr "בצע" #: src/client/keycode.cpp msgid "Help" -msgstr "" +msgstr "עזרה" #: src/client/keycode.cpp msgid "Home" -msgstr "" +msgstr "Home" #: src/client/keycode.cpp -#, fuzzy msgid "IME Accept" -msgstr "קבל" +msgstr "קבל IME" #: src/client/keycode.cpp msgid "IME Convert" -msgstr "" +msgstr "המרת IME" #: src/client/keycode.cpp msgid "IME Escape" -msgstr "" +msgstr "יצי×ת IME" #: src/client/keycode.cpp msgid "IME Mode Change" -msgstr "" +msgstr "×©×™× ×•×™ מצב IME" #: src/client/keycode.cpp msgid "IME Nonconvert" -msgstr "" +msgstr "IME ×œ×œ× ×”×ž×¨×”" #: src/client/keycode.cpp msgid "Insert" -msgstr "" +msgstr "Insert" #: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp msgid "Left" @@ -1550,7 +1558,7 @@ msgstr "מקש Control השמ×לי" #: src/client/keycode.cpp msgid "Left Menu" -msgstr "" +msgstr "תפריט שמ×לי" #: src/client/keycode.cpp msgid "Left Shift" @@ -1563,91 +1571,91 @@ msgstr "מקש Windows השמ×לי" #. ~ Key name, common on Windows keyboards #: src/client/keycode.cpp msgid "Menu" -msgstr "" +msgstr "תפריט" #: src/client/keycode.cpp msgid "Middle Button" -msgstr "" +msgstr "כפתור ×מצעי" #: src/client/keycode.cpp msgid "Num Lock" -msgstr "" +msgstr "× ×¢×™×œ×” × ×•×ž×¨×™×ª" #: src/client/keycode.cpp msgid "Numpad *" -msgstr "" +msgstr "מקלדת × ×•×ž×¨×™×ª *" #: src/client/keycode.cpp msgid "Numpad +" -msgstr "" +msgstr "מקלדת × ×•×ž×¨×™×ª +" #: src/client/keycode.cpp msgid "Numpad -" -msgstr "" +msgstr "מקלדת × ×•×ž×¨×™×ª -" #: src/client/keycode.cpp msgid "Numpad ." -msgstr "" +msgstr "מקלדת × ×•×ž×¨×™×ª ." #: src/client/keycode.cpp msgid "Numpad /" -msgstr "" +msgstr "מקלדת × ×•×ž×¨×™×ª /" #: src/client/keycode.cpp msgid "Numpad 0" -msgstr "" +msgstr "מקלדת × ×•×ž×¨×™×ª 0" #: src/client/keycode.cpp msgid "Numpad 1" -msgstr "" +msgstr "מקלדת × ×•×ž×¨×™×ª 1" #: src/client/keycode.cpp msgid "Numpad 2" -msgstr "" +msgstr "מקלדת × ×•×ž×¨×™×ª 2" #: src/client/keycode.cpp msgid "Numpad 3" -msgstr "" +msgstr "מקלדת × ×•×ž×¨×™×ª 3" #: src/client/keycode.cpp msgid "Numpad 4" -msgstr "" +msgstr "מקלדת × ×•×ž×¨×™×ª 4" #: src/client/keycode.cpp msgid "Numpad 5" -msgstr "" +msgstr "מקלדת × ×•×ž×¨×™×ª 5" #: src/client/keycode.cpp msgid "Numpad 6" -msgstr "" +msgstr "מקלדת × ×•×ž×¨×™×ª 6" #: src/client/keycode.cpp msgid "Numpad 7" -msgstr "" +msgstr "מקלדת × ×•×ž×¨×™×ª 7" #: src/client/keycode.cpp msgid "Numpad 8" -msgstr "" +msgstr "מקלדת × ×•×ž×¨×™×ª 8" #: src/client/keycode.cpp msgid "Numpad 9" -msgstr "" +msgstr "מקלדת × ×•×ž×¨×™×ª 9" #: src/client/keycode.cpp msgid "OEM Clear" -msgstr "" +msgstr "× ×™×§×•×™ OME" #: src/client/keycode.cpp msgid "Page down" -msgstr "" +msgstr "Page down" #: src/client/keycode.cpp msgid "Page up" -msgstr "" +msgstr "Page up" #: src/client/keycode.cpp msgid "Pause" -msgstr "" +msgstr "Pause" #: src/client/keycode.cpp msgid "Play" @@ -1656,11 +1664,11 @@ msgstr "שחק" #. ~ "Print screen" key #: src/client/keycode.cpp msgid "Print" -msgstr "" +msgstr "PrintScreen" #: src/client/keycode.cpp msgid "Return" -msgstr "" +msgstr "Enter" #: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp msgid "Right" @@ -1676,7 +1684,7 @@ msgstr "מקש Control ×”×™×ž× ×™" #: src/client/keycode.cpp msgid "Right Menu" -msgstr "" +msgstr "תפריט ×™×ž× ×™" #: src/client/keycode.cpp msgid "Right Shift" @@ -1688,74 +1696,74 @@ msgstr "מקש Windows ×”×™×ž× ×™" #: src/client/keycode.cpp msgid "Scroll Lock" -msgstr "" +msgstr "Scroll Lock" #. ~ Key name #: src/client/keycode.cpp msgid "Select" -msgstr "" +msgstr "Select" #: src/client/keycode.cpp msgid "Shift" -msgstr "" +msgstr "Shift" #: src/client/keycode.cpp msgid "Sleep" -msgstr "" +msgstr "×©×™× ×”" #: src/client/keycode.cpp msgid "Snapshot" -msgstr "" +msgstr "×¦×™×œ×•× ×¨×’×¢×™" #: src/client/keycode.cpp msgid "Space" -msgstr "" +msgstr "רווח" #: src/client/keycode.cpp msgid "Tab" -msgstr "" +msgstr "Tab" #: src/client/keycode.cpp msgid "Up" -msgstr "" +msgstr "למעלה" #: src/client/keycode.cpp msgid "X Button 1" -msgstr "" +msgstr "X כפתור 1" #: src/client/keycode.cpp msgid "X Button 2" -msgstr "" +msgstr "X כפתור 2" #: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp msgid "Zoom" -msgstr "" +msgstr "זו×" #: src/client/minimap.cpp msgid "Minimap hidden" -msgstr "" +msgstr "מפה ×§×˜× ×” מוסתרת" #: src/client/minimap.cpp #, c-format msgid "Minimap in radar mode, Zoom x%d" -msgstr "" +msgstr "מפה ×§×˜× ×” במצב ר×דר, ×–×•× x %d" #: src/client/minimap.cpp #, c-format msgid "Minimap in surface mode, Zoom x%d" -msgstr "" +msgstr "מפה ×§×˜× ×” במצב שטח, ×–×•× x %d" #: src/client/minimap.cpp msgid "Minimap in texture mode" -msgstr "" +msgstr "מפה ×§×˜× ×” במצב טקסטורה" #: src/gui/guiConfirmRegistration.cpp src/gui/guiPasswordChange.cpp msgid "Passwords do not match!" -msgstr "" +msgstr "סיסמ×ות ×œ× ×ª×•×מות!" #: src/gui/guiConfirmRegistration.cpp msgid "Register and Join" -msgstr "" +msgstr "×”×¨×©× ×•×”×¦×˜×¨×£" #: src/gui/guiConfirmRegistration.cpp #, c-format @@ -1766,18 +1774,22 @@ msgid "" "Please retype your password and click 'Register and Join' to confirm account " "creation, or click 'Cancel' to abort." msgstr "" +"×תה עומד להצטרף לשרת ×–×” ×¢× ×”×©× \"%s\" ×‘×¤×¢× ×”×¨××©×•× ×”.\n" +"×× ×ª×ž×©×™×š, ייווצר חשבון חדש ב×מצעות ×ישוריך בשרת ×–×”.\n" +"×× × ×”×§×œ×“ מחדש ×ת הסיסמה שלך ולחץ על '×”×™×¨×©× ×•×”×¦×˜×¨×£' כדי ל×שר ×ת יצירת החשבון, " +"×ו לחץ על 'ביטול' כדי לבטל." #: src/gui/guiFormSpecMenu.cpp msgid "Proceed" -msgstr "" +msgstr "להמשיך" #: src/gui/guiKeyChangeMenu.cpp msgid "\"Special\" = climb down" -msgstr "" +msgstr "\"מיוחד\" = טפס למטה" #: src/gui/guiKeyChangeMenu.cpp msgid "Autoforward" -msgstr "" +msgstr "קדימה ×וטומטי" #: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp msgid "Automatic jumping" @@ -1789,27 +1801,27 @@ msgstr "×חורה" #: src/gui/guiKeyChangeMenu.cpp msgid "Change camera" -msgstr "" +msgstr "×©× ×” מצלמה" #: src/gui/guiKeyChangeMenu.cpp msgid "Chat" -msgstr "" +msgstr "צ'×ט" #: src/gui/guiKeyChangeMenu.cpp msgid "Command" -msgstr "" +msgstr "פקודה" #: src/gui/guiKeyChangeMenu.cpp msgid "Console" -msgstr "" +msgstr "×§×•× ×¡×•×œ×”" #: src/gui/guiKeyChangeMenu.cpp msgid "Dec. range" -msgstr "" +msgstr "הקטן טווח" #: src/gui/guiKeyChangeMenu.cpp msgid "Dec. volume" -msgstr "" +msgstr "×”× ×ž×š ווליו×" #: src/gui/guiKeyChangeMenu.cpp msgid "Double tap \"jump\" to toggle fly" @@ -1817,7 +1829,7 @@ msgstr "לחיצה כפולה על \"קפיצה\" כדי לכבות ×ו ×œ×”×“× #: src/gui/guiKeyChangeMenu.cpp msgid "Drop" -msgstr "" +msgstr "הפל" #: src/gui/guiKeyChangeMenu.cpp msgid "Forward" @@ -1825,15 +1837,15 @@ msgstr "קדימה" #: src/gui/guiKeyChangeMenu.cpp msgid "Inc. range" -msgstr "" +msgstr "הגדל טווח" #: src/gui/guiKeyChangeMenu.cpp msgid "Inc. volume" -msgstr "" +msgstr "הגבר ווליו×" #: src/gui/guiKeyChangeMenu.cpp msgid "Inventory" -msgstr "" +msgstr "תיק חפצי×" #: src/gui/guiKeyChangeMenu.cpp msgid "Jump" @@ -1841,113 +1853,113 @@ msgstr "קפיצה" #: src/gui/guiKeyChangeMenu.cpp msgid "Key already in use" -msgstr "" +msgstr "מקש כבר בשימוש" #: src/gui/guiKeyChangeMenu.cpp msgid "Keybindings. (If this menu screws up, remove stuff from minetest.conf)" -msgstr "" +msgstr "קישור ×ž×§×©×™× (×× ×”×ª×¤×¨×™×˜ מתקלקל, הסר ×“×‘×¨×™× ×žminetest.conf)" #: src/gui/guiKeyChangeMenu.cpp msgid "Local command" -msgstr "" +msgstr "פקודה מקומית" #: src/gui/guiKeyChangeMenu.cpp msgid "Mute" -msgstr "" +msgstr "השתק" #: src/gui/guiKeyChangeMenu.cpp msgid "Next item" -msgstr "" +msgstr "הפריט הב×" #: src/gui/guiKeyChangeMenu.cpp msgid "Prev. item" -msgstr "" +msgstr "הפריט הקוד×" #: src/gui/guiKeyChangeMenu.cpp msgid "Range select" -msgstr "" +msgstr "בחר טווח" #: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp msgid "Screenshot" -msgstr "" +msgstr "×¦×™×œ×•× ×ž×¡×š" #: src/gui/guiKeyChangeMenu.cpp msgid "Sneak" -msgstr "" +msgstr "התכופף" #: src/gui/guiKeyChangeMenu.cpp msgid "Special" -msgstr "" +msgstr "מיוחד" #: src/gui/guiKeyChangeMenu.cpp msgid "Toggle HUD" -msgstr "" +msgstr "מתג מידע על מסך" #: src/gui/guiKeyChangeMenu.cpp msgid "Toggle chat log" -msgstr "" +msgstr "מתג צ×'ט לוג" #: src/gui/guiKeyChangeMenu.cpp msgid "Toggle fast" -msgstr "" +msgstr "מתג מצב מהיר" #: src/gui/guiKeyChangeMenu.cpp msgid "Toggle fly" -msgstr "" +msgstr "מתג תעופה" #: src/gui/guiKeyChangeMenu.cpp msgid "Toggle fog" -msgstr "" +msgstr "מתג ערפל" #: src/gui/guiKeyChangeMenu.cpp msgid "Toggle minimap" -msgstr "" +msgstr "מתג מפה ×§×˜× ×”" #: src/gui/guiKeyChangeMenu.cpp msgid "Toggle noclip" -msgstr "" +msgstr "מתג מעבר דרך קירות" #: src/gui/guiKeyChangeMenu.cpp msgid "Toggle pitchmove" -msgstr "" +msgstr "מתג ×ª× ×•×¢×” לכיוון מבט" #: src/gui/guiKeyChangeMenu.cpp msgid "press key" -msgstr "" +msgstr "לחץ מקש" #: src/gui/guiPasswordChange.cpp msgid "Change" -msgstr "" +msgstr "×©× ×”" #: src/gui/guiPasswordChange.cpp msgid "Confirm Password" -msgstr "" +msgstr "×שר סיסמה" #: src/gui/guiPasswordChange.cpp msgid "New Password" -msgstr "" +msgstr "סיסמה חדשה" #: src/gui/guiPasswordChange.cpp msgid "Old Password" -msgstr "" +msgstr "סיסמה ×™×©× ×”" #: src/gui/guiVolumeChange.cpp msgid "Exit" -msgstr "" +msgstr "יצי××”" #: src/gui/guiVolumeChange.cpp msgid "Muted" -msgstr "" +msgstr "מושתק" #: src/gui/guiVolumeChange.cpp msgid "Sound Volume: " -msgstr "" +msgstr "עוצמת שמע: " #. ~ Imperative, as in "Enter/type in text". #. Don't forget the space. #: src/gui/modalMenu.cpp msgid "Enter " -msgstr "" +msgstr "×”×›× ×¡ " #. ~ DO NOT TRANSLATE THIS LITERALLY! #. This is a special string which needs to contain the translation's @@ -1961,6 +1973,8 @@ msgid "" "(Android) Fixes the position of virtual joystick.\n" "If disabled, virtual joystick will center to first-touch's position." msgstr "" +"(Android) מתקן ×ת ×”×ž×™×§×•× ×©×œ ×”×’'ויסטיק הווירטו×לי.\n" +"×× ×ž×•×©×‘×ª, ×”×’'ויסטיק הווירטו×לי יעמוד ×‘×ž×™×§×•× ×”×ž×’×¢ הר×שון." #: src/settings_translation_file.cpp msgid "" @@ -1968,6 +1982,9 @@ msgid "" "If enabled, virtual joystick will also tap \"aux\" button when out of main " "circle." msgstr "" +"(Android) השתמש בג'ויסטיק וירטו×לי כדי להפעיל ×ת כפתור \"aux\".\n" +"×× ×”×•× ×ž×•×¤×¢×œ, ×”×’'ויסטיק הווירטו×לי ילחץ ×’× ×¢×œ כפתור \"aux\" ×›×©×”×•× ×ž×—×•×¥ למעגל " +"הר×שי." #: src/settings_translation_file.cpp msgid "" @@ -1980,6 +1997,14 @@ msgid "" "situations.\n" "Range roughly -2 to 2. Multiply by 'scale' for offset in nodes." msgstr "" +"(X, Y, Z) היסט של פרקטל ממרכז עולמי ביחידות 'סק×לה'.\n" +"× ×™×ª×Ÿ להשתמש בה כדי להעביר × ×§×•×“×” רצויה ל (0, 0) כדי ליצור\n" +"× ×§×•×“×ª הופעה מת×ימה, ×ו כדי ל×פשר 'התקרבות' ×œ× ×§×•×“×” רצויה\n" +"על ידי הגדלת 'סק×לה'.\n" +"ברירת המחדל ×ž×›×•×•× ×ª ×œ× ×§×•×“×ª הופעה מת×ימה ×œ×ž× ×“×œ×‘×¨×•×˜\n" +"קבוצות ×¢× ×¤×¨×ž×˜×¨×™ ברירת מחדל, יתכן שיהיה צורך ×œ×©× ×•×ª ×–×ת\n" +"מצבי×.\n" +"טווח בערך -2 עד 2. הכפל ב×מצעות '×§× ×” מידה' עבור קיזוז בצמתי×." #: src/settings_translation_file.cpp msgid "" @@ -1991,56 +2016,65 @@ msgid "" "Default is for a vertically-squashed shape suitable for\n" "an island, set all 3 numbers equal for the raw shape." msgstr "" +"(X, Y, Z) סק×לה של פרקטל בצמתי×.\n" +"גודל הפרקטל בפועל ×™×”×™×” גדול פי 2 עד 3.\n" +"× ×™×ª×Ÿ להפוך ×ת ×”×ž×¡×¤×¨×™× ×”×œ×œ×• ×œ×’×“×•×œ×™× ×ž×וד, כך הפרקטל\n" +"×œ× ×¦×¨×™×š להשתלב בעול×.\n" +"הגדל ×ת ×לה ל\"התקרב \"לפרטי הפרקטל.\n" +"ברירת המחדל ×”×™× ×œ×¦×•×¨×” מעוכה ×× ×›×™×ª המת×ימה ל\n" +"××™, קבע ×ת כל 3 ×”×ž×¡×¤×¨×™× ×©×•×•×™× ×œ×¦×•×¨×” הגולמית." #: src/settings_translation_file.cpp msgid "2D noise that controls the shape/size of ridged mountains." -msgstr "" +msgstr "רעש דו-ממדי השולט על ×¦×•×¨×ª× / גודל ×”×”×¨×™× ×”×ž×—×•×¨×¦×™×." #: src/settings_translation_file.cpp msgid "2D noise that controls the shape/size of rolling hills." -msgstr "" +msgstr "רעש דו-ממדי השולט על ×¦×•×¨×ª× / גודל הגבעות ×”×ž×ª×•× ×•×ª." #: src/settings_translation_file.cpp msgid "2D noise that controls the shape/size of step mountains." -msgstr "" +msgstr "רעש דו-ממדי השולט על ×¦×•×¨×ª× / גודל ×”×”×¨×™× ×”× ×™×©××™×." #: src/settings_translation_file.cpp msgid "2D noise that controls the size/occurrence of ridged mountain ranges." -msgstr "" +msgstr "רעש דו-ממדי השולט על תדירות/ גודל רכסי ההרי×." #: src/settings_translation_file.cpp msgid "2D noise that controls the size/occurrence of rolling hills." -msgstr "" +msgstr "רעש דו-ממדי השולט על תדירות/גודל הגבעות ×”×ž×ª×•× ×•×ª." #: src/settings_translation_file.cpp msgid "2D noise that controls the size/occurrence of step mountain ranges." -msgstr "" +msgstr "רעש דו-ממדי השולט על תדירות/גודל רכסי ההרי×." #: src/settings_translation_file.cpp msgid "2D noise that locates the river valleys and channels." -msgstr "" +msgstr "רעש דו-ממדי שמ×תר ×ת עמקי ×”× ×”×¨×•×ª ותעלותיה×." #: src/settings_translation_file.cpp msgid "3D clouds" -msgstr "" +msgstr "×¢× × ×™× ×ª×œ×ª מימדיי×" #: src/settings_translation_file.cpp msgid "3D mode" -msgstr "" +msgstr "מצב תלת מימדי" #: src/settings_translation_file.cpp msgid "3D mode parallax strength" -msgstr "" +msgstr "חוזק פרלקסה במצב תלת ממדי" #: src/settings_translation_file.cpp msgid "3D noise defining giant caverns." -msgstr "" +msgstr "רעשי תלת מימד ×”×ž×’×“×™×¨×™× ×ž×¢×¨×•×ª ×¢× ×§." #: src/settings_translation_file.cpp msgid "" "3D noise defining mountain structure and height.\n" "Also defines structure of floatland mountain terrain." msgstr "" +"רעש תלת ממדי המגדיר ×ת ×ž×‘× ×” ×”×”×¨×™× ×•×’×•×‘×”×.\n" +"מגדיר ×’× ×ž×‘× ×” שטח ×”×¨×™× ×¦×¤×™×." #: src/settings_translation_file.cpp msgid "" @@ -2049,22 +2083,27 @@ msgid "" "to be adjusted, as floatland tapering functions best when this noise has\n" "a value range of approximately -2.0 to 2.0." msgstr "" +"רעש תלת ממדי מגדיר ×ž×‘× ×” של שטחי צף.\n" +"×× ×ž×©×ª× ×” מברירת המחדל, ייתכן ש\"סק×לת\" הרעש (0.7 כברירת מחדל) זקוקה\n" +"להיות מות×מת, מכיוון שההתפשטות של שטחי צף מתפקדת בצורה הטובה ביותר ×›×שר יש " +"לרעש ×–×”\n" +"טווח ×¢×¨×›×™× ×©×œ ×› -2.0 עד 2.0." #: src/settings_translation_file.cpp msgid "3D noise defining structure of river canyon walls." -msgstr "" +msgstr "×ž×‘× ×” מגדיר רעש תלת ממדי של קירות ×§× ×™×•×Ÿ ×”× ×”×¨." #: src/settings_translation_file.cpp msgid "3D noise defining terrain." -msgstr "" +msgstr "רעש תלת ממדי המגדיר שטח." #: src/settings_translation_file.cpp msgid "3D noise for mountain overhangs, cliffs, etc. Usually small variations." -msgstr "" +msgstr "רעש תלת ממדי ×œ×”×¨×™× ×ª×œ×•×™×™×, ×¦×•×§×™× ×•×›×•'בדרך כלל ורי×ציות ×§×˜× ×•×ª." #: src/settings_translation_file.cpp msgid "3D noise that determines number of dungeons per mapchunk." -msgstr "" +msgstr "רעש תלת ממדי הקובע ×ת מספר ×”×¦×™× ×•×§×™× ×‘× ×ª×— מפה." #: src/settings_translation_file.cpp msgid "" @@ -2079,56 +2118,68 @@ msgid "" "- pageflip: quadbuffer based 3d.\n" "Note that the interlaced mode requires shaders to be enabled." msgstr "" +"תמיכה בתלת מימד.\n" +"× ×ª×ž×š כרגע:\n" +"- לל×: ×ין פלט תלת-ממדי.\n" +"- ×× ×גליף: צבע צי×ן / ×ž×’× ×˜×” 3d.\n" +"- interlaced: תמיכה במסך קיטוב מבוסס מוזר / שווה\n" +"- topbottom: מסך מפוצל למעלה / למטה.\n" +"- צדדי: פיצול מסך ×–×” לצד ×–×”.\n" +"- תצוגת רוחב: 3D ×¢× ×¢×™× ×™×™× ×¦×•×œ×‘×•×ª\n" +"- pageflip: quadbuffer מבוסס 3d.\n" +"×©×™× ×œ×‘ שמצב interlaced מחייב הפעלת shaders." #: src/settings_translation_file.cpp msgid "" "A chosen map seed for a new map, leave empty for random.\n" "Will be overridden when creating a new world in the main menu." msgstr "" +"זרע מפה ×©× ×‘×—×¨ עבור מפה חדשה, הש×ר ריק ל×קר××™.\n" +"יבוטל בעת יצירת ×¢×•×œ× ×—×“×© בתפריט הר×שי." #: src/settings_translation_file.cpp msgid "A message to be displayed to all clients when the server crashes." -msgstr "" +msgstr "הודעה שתוצג ×‘×¤× ×™ כל הלקוחות ×›×שר השרת קורס." #: src/settings_translation_file.cpp msgid "A message to be displayed to all clients when the server shuts down." -msgstr "" +msgstr "הודעה שתוצג ×‘×¤× ×™ כל הלקוחות ×›×שר השרת יכבה." #: src/settings_translation_file.cpp msgid "ABM interval" -msgstr "" +msgstr "××™× ×˜×¨×•×•×œ ABM" #: src/settings_translation_file.cpp msgid "ABM time budget" -msgstr "" +msgstr "הקצ×ת זמן ABM" #: src/settings_translation_file.cpp msgid "Absolute limit of queued blocks to emerge" -msgstr "" +msgstr "מגבלה מוחלטת של ×‘×œ×•×§×™× ×‘×ª×•×¨ שיופיעו" #: src/settings_translation_file.cpp msgid "Acceleration in air" -msgstr "" +msgstr "ת×וצה ב×ויר" #: src/settings_translation_file.cpp msgid "Acceleration of gravity, in nodes per second per second." -msgstr "" +msgstr "×”×צת כוח הכבידה, בקוביות ×œ×©× ×™×™×” בריבוע." #: src/settings_translation_file.cpp msgid "Active Block Modifiers" -msgstr "" +msgstr "×ž×©× ×™×™ בלוק פעיל" #: src/settings_translation_file.cpp msgid "Active block management interval" -msgstr "" +msgstr "××™× ×˜×¨×•×•×œ × ×™×”×•×œ בלוק פעיל" #: src/settings_translation_file.cpp msgid "Active block range" -msgstr "" +msgstr "טווח בלוק פעיל" #: src/settings_translation_file.cpp msgid "Active object send range" -msgstr "" +msgstr "טווח שליחת ×ובייקט פעיל" #: src/settings_translation_file.cpp msgid "" @@ -2136,16 +2187,19 @@ msgid "" "Leave this blank to start a local server.\n" "Note that the address field in the main menu overrides this setting." msgstr "" +"כתובת להתחברות ×ליה.\n" +"הש×ר ×ת ×–×” ריק כדי להפעיל שרת מקומי.\n" +"×©×™× ×œ×‘ ששדה הכתובת בתפריט הר×שי עוקף הגדרה זו." #: src/settings_translation_file.cpp msgid "Adds particles when digging a node." -msgstr "" +msgstr "הוסף ×—×œ×§×™×§×™× ×›×©×—×•×¤×¨×™× ×‘×§×•×‘×™×”." #: src/settings_translation_file.cpp msgid "" "Adjust dpi configuration to your screen (non X11/Android only) e.g. for 4k " "screens." -msgstr "" +msgstr "הת×× ×ת תצורת dpi למסך שלך (×œ× X11 / Android בלבד) למשל. למסכי 4k." #: src/settings_translation_file.cpp #, c-format @@ -2156,10 +2210,15 @@ msgid "" "Value = 2.0 (can be higher depending on 'mgv7_np_floatland', always test\n" "to be sure) creates a solid floatland layer." msgstr "" +"מכוון ×ת הצפיפות של שכבת ×דמות צותף.\n" +"הגדל ×ת הערך כדי להגדיל ×ת הצפיפות. יכול להיות חיובי ×ו שלילי.\n" +"ערך = 0.0: 50% ×ž×”× ×¤×— ×”×•× ×©×˜×— צף.\n" +"ערך = 2.0 (יכול להיות גבוה יותר בהת×× ×œ- 'mgv7_np_floatland', בדוק תמיד\n" +"כדי להיות בטוח) יוצר שכבת צף מוצקה." #: src/settings_translation_file.cpp msgid "Advanced" -msgstr "" +msgstr "מתקד×" #: src/settings_translation_file.cpp msgid "" @@ -2169,60 +2228,67 @@ msgid "" "This only has significant effect on daylight and artificial\n" "light, it has very little effect on natural night light." msgstr "" +"×ž×©× ×” ×ת עקומת ×”×ור על ידי החלת 'תיקון גמ×' עליה.\n" +"×¢×¨×›×™× ×’×‘×•×”×™× ×”×•×¤×›×™× ×ת רמות ×”×ור ×”×מצעיות ×•×”×ª×—×ª×•× ×•×ª לבהירות יותר.\n" +"הערך '1.0' מש×יר ×ת עקומת ×”×ור ×œ×œ× ×©×™× ×•×™.\n" +"יש לכך השפעה משמעותית רק על ×ור ×™×•× ×•×ž×œ×כותי\n" +"×–×” משפיע מעט מ×וד על ×ור הלילה הטבעי." #: src/settings_translation_file.cpp msgid "Always fly and fast" -msgstr "" +msgstr "תמיד לעוף ומהר" #: src/settings_translation_file.cpp msgid "Ambient occlusion gamma" -msgstr "" +msgstr "×’×ž× ×—×¡×™×ž×” סביבתית" #: src/settings_translation_file.cpp msgid "Amount of messages a player may send per 10 seconds." -msgstr "" +msgstr "כמות ההודעות ששחקן עשוי לשלוח לכל 10 ×©× ×™×•×ª." #: src/settings_translation_file.cpp msgid "Amplifies the valleys." -msgstr "" +msgstr "מגביר ×ת העמקי×." #: src/settings_translation_file.cpp msgid "Anisotropic filtering" -msgstr "" +msgstr "פילטר ×× ×˜×™×¡×˜×¨×•×¤×™" #: src/settings_translation_file.cpp msgid "Announce server" -msgstr "" +msgstr "הכרזת שרת" #: src/settings_translation_file.cpp msgid "Announce to this serverlist." -msgstr "" +msgstr "הכרז לרשימת השרתי×." #: src/settings_translation_file.cpp msgid "Append item name" -msgstr "" +msgstr "הוסף ×©× ×¤×¨×™×˜" #: src/settings_translation_file.cpp msgid "Append item name to tooltip." -msgstr "" +msgstr "הוסף ×ת ×©× ×”×¤×¨×™×˜ לטיפ הכלי×." #: src/settings_translation_file.cpp msgid "Apple trees noise" -msgstr "" +msgstr "רעש עצי תפוחי×" #: src/settings_translation_file.cpp msgid "Arm inertia" -msgstr "" +msgstr "××™× ×¨×¦×™×” בזרוע" #: src/settings_translation_file.cpp msgid "" "Arm inertia, gives a more realistic movement of\n" "the arm when the camera moves." msgstr "" +"××™× ×¨×¦×™×” בזרוע, × ×•×ª× ×ª ×ª× ×•×¢×” מצי×ותית יותר של\n" +"הזרוע כשהמצלמה × ×¢×”." #: src/settings_translation_file.cpp msgid "Ask to reconnect after crash" -msgstr "" +msgstr "ש×ל ×”×× ×œ×”×ª×—×‘×¨ מחדש ל×חר קריסה" #: src/settings_translation_file.cpp msgid "" @@ -2238,26 +2304,34 @@ msgid "" "optimization.\n" "Stated in mapblocks (16 nodes)." msgstr "" +"במרחק ×–×” השרת יעשה ×ופטימיזציה ל×ילו ×‘×œ×•×§×™× × ×©×œ×—×™×\n" +"ללקוחות.\n" +"×¢×¨×›×™× ×§×˜× ×™× ×¢×©×•×™×™× ×œ×©×¤×¨ ×‘×™×¦×•×¢×™× ×¨×‘×•×ª, על חשבון גלוי\n" +"עיבוד תקלות (חלק ×ž×”×‘×œ×•×§×™× ×œ× ×™×•×¢×‘×¨×• מתחת ×œ×ž×™× ×•×‘×ž×¢×¨×•×ª,\n" +"כמו ×’× ×œ×¤×¢×ž×™× ×‘×™×‘×©×”).\n" +"הגדרת ערך ×–×” יותר מ- max_block_send_distance מבטלת ×–×ת\n" +"×ופטימיזציה.\n" +"מצוין במפה (16 קוביות)." #: src/settings_translation_file.cpp msgid "Automatic forward key" -msgstr "" +msgstr "מקש התקדמות ×וטומטית" #: src/settings_translation_file.cpp msgid "Automatically jump up single-node obstacles." -msgstr "" +msgstr "קפיצה ×וטומטית של ×ž×›×©×•×œ×™× ×‘×§×•×‘×™×” יחידה." #: src/settings_translation_file.cpp msgid "Automatically report to the serverlist." -msgstr "" +msgstr "דווח ×וטומטית לרשימת השרתי×." #: src/settings_translation_file.cpp msgid "Autosave screen size" -msgstr "" +msgstr "שמור ×וטומטית גודל מסך" #: src/settings_translation_file.cpp msgid "Autoscaling mode" -msgstr "" +msgstr "מצב סק×לה ×וטומטית (Autoscale)" #: src/settings_translation_file.cpp msgid "Backward key" @@ -2265,75 +2339,75 @@ msgstr "מקש התזוזה ×חורה" #: src/settings_translation_file.cpp msgid "Base ground level" -msgstr "" +msgstr "מפלס בסיס ×”×דמה" #: src/settings_translation_file.cpp msgid "Base terrain height." -msgstr "" +msgstr "גובה השטח." #: src/settings_translation_file.cpp msgid "Basic" -msgstr "" +msgstr "בסיסי" #: src/settings_translation_file.cpp msgid "Basic privileges" -msgstr "" +msgstr "הרש×ות בסיסיות" #: src/settings_translation_file.cpp msgid "Beach noise" -msgstr "" +msgstr "רעש חופי×" #: src/settings_translation_file.cpp msgid "Beach noise threshold" -msgstr "" +msgstr "סף רעש חופי×" #: src/settings_translation_file.cpp msgid "Bilinear filtering" -msgstr "" +msgstr "×¡×™× ×•×Ÿ ×‘×™×œ×™× ×רי" #: src/settings_translation_file.cpp msgid "Bind address" -msgstr "" +msgstr "הצמד כתובת" #: src/settings_translation_file.cpp msgid "Biome API temperature and humidity noise parameters" -msgstr "" +msgstr "פרמטרי רעש טמפרטורה ולחות של Biome API" #: src/settings_translation_file.cpp msgid "Biome noise" -msgstr "" +msgstr "רעש Biome" #: src/settings_translation_file.cpp msgid "Bits per pixel (aka color depth) in fullscreen mode." -msgstr "" +msgstr "×‘×™×˜×™× ×œ×¤×™×§×¡×œ (עומק צבע) במצב מסך מל×." #: src/settings_translation_file.cpp msgid "Block send optimize distance" -msgstr "" +msgstr "×ופטימיזצית שליחת בלוק" #: src/settings_translation_file.cpp msgid "Bold and italic font path" -msgstr "" +msgstr "× ×ª×™×‘ גופן עבה/מוטה" #: src/settings_translation_file.cpp msgid "Bold and italic monospace font path" -msgstr "" +msgstr "× ×ª×™×‘ גופן ×¢× ×ž×¨×•×•×— ×חיד עבה/מוטה" #: src/settings_translation_file.cpp msgid "Bold font path" -msgstr "" +msgstr "× ×ª×™×‘ גופן עבה" #: src/settings_translation_file.cpp msgid "Bold monospace font path" -msgstr "" +msgstr "× ×ª×™×‘ גופן מרווח ×חיד" #: src/settings_translation_file.cpp msgid "Build inside player" -msgstr "" +msgstr "×‘× ×” בתוך שחקן" #: src/settings_translation_file.cpp msgid "Builtin" -msgstr "" +msgstr "בילד×ין" #: src/settings_translation_file.cpp msgid "" @@ -2342,120 +2416,126 @@ msgid "" "Increasing can reduce artifacting on weaker GPUs.\n" "0.1 = Default, 0.25 = Good value for weaker tablets." msgstr "" +"מרחק מצלמה 'קרוב לקיר' בקוביות, בין 0 ל -0.25\n" +"עובד רק בפלטפורמות GLES. רוב ×”×ž×©×ª×ž×©×™× ×œ× ×™×¦×˜×¨×›×• ×œ×©× ×•×ª ×–×ת.\n" +"הגדלה יכולה להפחית ×—×¤×¦×™× ×¢×œ גרפי GPU ×—×œ×©×™× ×™×•×ª×¨.\n" +"0.1 = ברירת מחדל, 0.25 = ערך טוב לט××‘×œ×˜×™× ×—×œ×©×™× ×™×•×ª×¨." #: src/settings_translation_file.cpp msgid "Camera smoothing" -msgstr "" +msgstr "החלקת מצלמה" #: src/settings_translation_file.cpp msgid "Camera smoothing in cinematic mode" -msgstr "" +msgstr "החלקת מצלמה ומצב ×§×•×œ× ×•×¢×™" #: src/settings_translation_file.cpp msgid "Camera update toggle key" -msgstr "" +msgstr "מקש החלפת עדכון המצלמה" #: src/settings_translation_file.cpp msgid "Cave noise" -msgstr "" +msgstr "רעש מערות" #: src/settings_translation_file.cpp msgid "Cave noise #1" -msgstr "" +msgstr "רעש מערות #1" #: src/settings_translation_file.cpp msgid "Cave noise #2" -msgstr "" +msgstr "רעש מערות #2" #: src/settings_translation_file.cpp msgid "Cave width" -msgstr "" +msgstr "רוחב מערות" #: src/settings_translation_file.cpp msgid "Cave1 noise" -msgstr "" +msgstr "רעש מערה1" #: src/settings_translation_file.cpp msgid "Cave2 noise" -msgstr "" +msgstr "רעש מערה2" #: src/settings_translation_file.cpp msgid "Cavern limit" -msgstr "" +msgstr "גבול ×ž× ×”×¨×•×ª" #: src/settings_translation_file.cpp msgid "Cavern noise" -msgstr "" +msgstr "רעש ×ž× ×”×¨×•×ª" #: src/settings_translation_file.cpp msgid "Cavern taper" -msgstr "" +msgstr "מחדד מערות" #: src/settings_translation_file.cpp msgid "Cavern threshold" -msgstr "" +msgstr "סף מערות" #: src/settings_translation_file.cpp msgid "Cavern upper limit" -msgstr "" +msgstr "גבול עליון מערות" #: src/settings_translation_file.cpp msgid "" "Center of light curve boost range.\n" "Where 0.0 is minimum light level, 1.0 is maximum light level." msgstr "" +"טווח דחיפה של מרכז עקומת ×ור.\n" +"×›×שר 0.0 ×”×•× ×¨×ž×ª ×ור ×ž×™× ×™×ž×œ×™×ª, 1.0 ×”×•× ×¨×ž×ª ×ור מקסימלית." #: src/settings_translation_file.cpp msgid "Chat font size" -msgstr "" +msgstr "גודל גופן צ'×ט" #: src/settings_translation_file.cpp msgid "Chat key" -msgstr "" +msgstr "מקש צ'×ט" #: src/settings_translation_file.cpp msgid "Chat log level" -msgstr "" +msgstr "רמת לוג צ'×ט" #: src/settings_translation_file.cpp msgid "Chat message count limit" -msgstr "" +msgstr "הגבלת מספר הודעות צ'×ט" #: src/settings_translation_file.cpp msgid "Chat message format" -msgstr "" +msgstr "פורמט הודעות צ'×ט" #: src/settings_translation_file.cpp msgid "Chat message kick threshold" -msgstr "" +msgstr "סף בעיטה להודעות צ'×ט" #: src/settings_translation_file.cpp msgid "Chat message max length" -msgstr "" +msgstr "×ורך הודעת צ'×ט מקסימלי" #: src/settings_translation_file.cpp msgid "Chat toggle key" -msgstr "" +msgstr "מתג הפעלת צ'×ט" #: src/settings_translation_file.cpp msgid "Chatcommands" -msgstr "" +msgstr "פקודות צ'×ט" #: src/settings_translation_file.cpp msgid "Chunk size" -msgstr "" +msgstr "גודל חתיכה" #: src/settings_translation_file.cpp msgid "Cinematic mode" -msgstr "" +msgstr "מצב ×§×•×œ× ×•×¢×™" #: src/settings_translation_file.cpp msgid "Cinematic mode key" -msgstr "" +msgstr "מקש מצב ×§×•×œ× ×•×¢×™" #: src/settings_translation_file.cpp msgid "Clean transparent textures" -msgstr "" +msgstr "טקסטורות × ×§×™×•×ª ושקופות" #: src/settings_translation_file.cpp msgid "Client" @@ -2463,7 +2543,7 @@ msgstr "לקוח" #: src/settings_translation_file.cpp msgid "Client and Server" -msgstr "" +msgstr "שרת ולקוח" #: src/settings_translation_file.cpp #, fuzzy @@ -2867,7 +2947,7 @@ msgid "Enable console window" msgstr "" #: src/settings_translation_file.cpp -msgid "Enable creative mode for new created maps." +msgid "Enable creative mode for all players" msgstr "" #: src/settings_translation_file.cpp @@ -4922,7 +5002,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Mipmapping" -msgstr "" +msgstr "מיפמ××¤×™× ×’" #: src/settings_translation_file.cpp msgid "Mod channels" @@ -5576,6 +5656,10 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp +msgid "Show nametag backgrounds by default" +msgstr "" + +#: src/settings_translation_file.cpp msgid "Shutdown message" msgstr "" @@ -6124,37 +6208,39 @@ msgstr "" #: src/settings_translation_file.cpp msgid "View distance in nodes." -msgstr "" +msgstr "טווח ר××™×” בקוביות." #: src/settings_translation_file.cpp msgid "View range decrease key" -msgstr "" +msgstr "מקש ×”×§×˜× ×ª טווח ר××™×”" #: src/settings_translation_file.cpp msgid "View range increase key" -msgstr "" +msgstr "מקש הגדלת טוחח ר××™×”" #: src/settings_translation_file.cpp msgid "View zoom key" -msgstr "" +msgstr "מקש ×–×•× (משקפת)" #: src/settings_translation_file.cpp msgid "Viewing range" -msgstr "" +msgstr "טווח ר××™×”" #: src/settings_translation_file.cpp msgid "Virtual joystick triggers aux button" -msgstr "" +msgstr "מקש הפעלת ×’'ויסטיק וירטו×לי" #: src/settings_translation_file.cpp msgid "Volume" -msgstr "" +msgstr "ווליו×" #: src/settings_translation_file.cpp msgid "" "Volume of all sounds.\n" "Requires the sound system to be enabled." msgstr "" +"עוצמת הקול של כל הצלילי×.\n" +"דורש הפעלת מערכת הקול." #: src/settings_translation_file.cpp msgid "" @@ -6171,19 +6257,19 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Walking speed" -msgstr "" +msgstr "מהירות הליכה" #: src/settings_translation_file.cpp msgid "Walking, flying and climbing speed in fast mode, in nodes per second." -msgstr "" +msgstr "מהירות הליכה, טיסה וטיפוס במצב מהיר, בקוביות ×œ×©× ×™×™×”." #: src/settings_translation_file.cpp msgid "Water level" -msgstr "" +msgstr "מפלס המי×" #: src/settings_translation_file.cpp msgid "Water surface level of the world." -msgstr "" +msgstr "מפלס ×¤× ×™ ×”×ž×™× ×‘×¢×•×œ×." #: src/settings_translation_file.cpp msgid "Waving Nodes" @@ -6203,15 +6289,15 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Waving liquids wave speed" -msgstr "" +msgstr "מהירות גל של × ×•×–×œ×™× ×¢× ×’×œ×™×" #: src/settings_translation_file.cpp msgid "Waving liquids wavelength" -msgstr "" +msgstr "×ורך גל של × ×•×–×œ×™× ×¢× ×’×œ×™×" #: src/settings_translation_file.cpp msgid "Waving plants" -msgstr "" +msgstr "×¦×ž×—×™× ×ž×ª× ×•×¤×¤×™×" #: src/settings_translation_file.cpp msgid "" @@ -6249,6 +6335,12 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp +msgid "" +"Whether nametag backgrounds should be shown by default.\n" +"Mods may still set a background." +msgstr "" + +#: src/settings_translation_file.cpp msgid "Whether node texture animations should be desynchronized per mapblock." msgstr "" @@ -6287,7 +6379,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Width component of the initial window size." -msgstr "" +msgstr "רכיב רוחב של גודל החלון הר××©×•× ×™." #: src/settings_translation_file.cpp msgid "Width of the selection box lines around nodes." @@ -6323,25 +6415,25 @@ msgstr "" #: src/settings_translation_file.cpp msgid "World-aligned textures mode" -msgstr "" +msgstr "מצב טקסטורות מיושרות לעול×" #: src/settings_translation_file.cpp msgid "Y of flat ground." -msgstr "" +msgstr "Y לקרקע שטוחה." #: src/settings_translation_file.cpp msgid "" "Y of mountain density gradient zero level. Used to shift mountains " "vertically." -msgstr "" +msgstr "Y של צפיפות ×”×¨×™× ×©×™×¤×•×¢ רמת ×פס. משמש להעברת ×”×¨×™× ×× ×›×™×ª." #: src/settings_translation_file.cpp msgid "Y of upper limit of large caves." -msgstr "" +msgstr "Y של הגבול העליון של מערות גדולות." #: src/settings_translation_file.cpp msgid "Y-distance over which caverns expand to full size." -msgstr "" +msgstr "מרחק Y שעליו מתרחבות מערות לגודל מל×." #: src/settings_translation_file.cpp msgid "" @@ -6391,15 +6483,15 @@ msgstr "" #: src/settings_translation_file.cpp msgid "cURL file download timeout" -msgstr "" +msgstr "(cURL) זמן להורדה × ×’×ž×¨" #: src/settings_translation_file.cpp msgid "cURL parallel limit" -msgstr "" +msgstr "(cURL) מגבלה לפעולות במקביל" #: src/settings_translation_file.cpp msgid "cURL timeout" -msgstr "" +msgstr "(cURL) מגבלת זמן" #~ msgid "Configure" #~ msgstr "קביעת תצורה" diff --git a/po/hi/minetest.po b/po/hi/minetest.po index b0eccb70d..2c88b00f0 100644 --- a/po/hi/minetest.po +++ b/po/hi/minetest.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: minetest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-01-30 21:13+0100\n" +"POT-Creation-Date: 2021-02-23 19:03+0100\n" "PO-Revision-Date: 2020-10-06 14:26+0000\n" "Last-Translator: Eyekay49 <satvikpatwardhan@gmail.com>\n" "Language-Team: Hindi <https://hosted.weblate.org/projects/minetest/minetest/" @@ -706,6 +706,11 @@ msgid "Loading..." msgstr "लोड हो रहा है ..." #: builtin/mainmenu/serverlistmgr.lua +#, fuzzy +msgid "Public server list is disabled" +msgstr "कà¥à¤²à¤¾à¤‡à¤‚ट की तरफ से सà¥à¤•à¥à¤°à¤¿à¤ªà¥à¤Ÿ लगाना मना है" + +#: builtin/mainmenu/serverlistmgr.lua msgid "Try reenabling public serverlist and check your internet connection." msgstr "सारà¥à¤µà¤œà¤¨à¤¿à¤• सरà¥à¤µà¤° शृंखला (सरà¥à¤µà¤° लिसà¥à¤Ÿ) को 'हां' करें और इंटरनेट कनेकà¥à¤¶à¤¨ जांचें।" @@ -2880,7 +2885,7 @@ msgid "Enable console window" msgstr "" #: src/settings_translation_file.cpp -msgid "Enable creative mode for new created maps." +msgid "Enable creative mode for all players" msgstr "" #: src/settings_translation_file.cpp @@ -5595,6 +5600,10 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp +msgid "Show nametag backgrounds by default" +msgstr "" + +#: src/settings_translation_file.cpp msgid "Shutdown message" msgstr "" @@ -6270,6 +6279,12 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp +msgid "" +"Whether nametag backgrounds should be shown by default.\n" +"Mods may still set a background." +msgstr "" + +#: src/settings_translation_file.cpp msgid "Whether node texture animations should be desynchronized per mapblock." msgstr "" diff --git a/po/hu/minetest.po b/po/hu/minetest.po index 0f14b57da..090d92454 100644 --- a/po/hu/minetest.po +++ b/po/hu/minetest.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: Hungarian (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-01-30 21:13+0100\n" -"PO-Revision-Date: 2020-12-05 15:29+0000\n" +"POT-Creation-Date: 2021-02-23 19:03+0100\n" +"PO-Revision-Date: 2021-02-13 08:50+0000\n" "Last-Translator: Ãcs Zoltán <acszoltan111@gmail.com>\n" "Language-Team: Hungarian <https://hosted.weblate.org/projects/minetest/" "minetest/hu/>\n" @@ -12,7 +12,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.4-dev\n" +"X-Generator: Weblate 4.5-dev\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" @@ -168,6 +168,8 @@ msgid "" "$1 downloading,\n" "$2 queued" msgstr "" +"$1 letöltése,\n" +"$2 sorba állÃtva" #: builtin/mainmenu/dlg_contentstore.lua #, fuzzy @@ -256,7 +258,7 @@ msgstr "Hang némÃtása" #: builtin/mainmenu/dlg_contentstore.lua msgid "Overwrite" -msgstr "" +msgstr "FelülÃrás" #: builtin/mainmenu/dlg_contentstore.lua msgid "Please check that the base game is correct." @@ -264,7 +266,7 @@ msgstr "" #: builtin/mainmenu/dlg_contentstore.lua msgid "Queued" -msgstr "" +msgstr "SorbaállÃtva" #: builtin/mainmenu/dlg_contentstore.lua msgid "Texture packs" @@ -280,11 +282,11 @@ msgstr "FrissÃtés" #: builtin/mainmenu/dlg_contentstore.lua msgid "Update All [$1]" -msgstr "" +msgstr "Összes frissÃtése [$1]" #: builtin/mainmenu/dlg_contentstore.lua msgid "View more information in a web browser" -msgstr "" +msgstr "További információ megnyitása a böngészÅ‘ben" #: builtin/mainmenu/dlg_create_world.lua msgid "A world named \"$1\" already exists" @@ -711,6 +713,11 @@ msgid "Loading..." msgstr "Betöltés…" #: builtin/mainmenu/serverlistmgr.lua +#, fuzzy +msgid "Public server list is disabled" +msgstr "Kliens oldali szkriptek letiltva" + +#: builtin/mainmenu/serverlistmgr.lua msgid "Try reenabling public serverlist and check your internet connection." msgstr "" "Próbáld újra engedélyezni a nyilvános kiszolgálólistát, és ellenÅ‘rizd az " @@ -778,6 +785,9 @@ msgid "" "Opens the directory that contains user-provided worlds, games, mods,\n" "and texture packs in a file manager / explorer." msgstr "" +"Megnyitja a fájlkezelÅ‘ben / intézÅ‘ben azt a könyvtárat, amely a felhasználó " +"világait,\n" +"játékait, modjait, és textúráit tartalmazza." #: builtin/mainmenu/tab_credits.lua msgid "Previous Contributors" @@ -817,7 +827,7 @@ msgstr "Játékok telepÃtése ContentDB-rÅ‘l" #: builtin/mainmenu/tab_local.lua msgid "Name" -msgstr "" +msgstr "Név" #: builtin/mainmenu/tab_local.lua msgid "New" @@ -2969,7 +2979,8 @@ msgid "Enable console window" msgstr "Konzolablak engedélyezése" #: src/settings_translation_file.cpp -msgid "Enable creative mode for new created maps." +#, fuzzy +msgid "Enable creative mode for all players" msgstr "KreatÃv mód engedélyezése az újonnan létrehozott térképekhez." #: src/settings_translation_file.cpp @@ -6168,6 +6179,11 @@ msgstr "" "A változtatás után a játék újraindÃtása szükséges." #: src/settings_translation_file.cpp +#, fuzzy +msgid "Show nametag backgrounds by default" +msgstr "Félkövér betűtÃpus alapértelmezetten" + +#: src/settings_translation_file.cpp msgid "Shutdown message" msgstr "LeállÃtási üzenet" @@ -6879,6 +6895,12 @@ msgstr "" "támogatás." #: src/settings_translation_file.cpp +msgid "" +"Whether nametag backgrounds should be shown by default.\n" +"Mods may still set a background." +msgstr "" + +#: src/settings_translation_file.cpp msgid "Whether node texture animations should be desynchronized per mapblock." msgstr "" diff --git a/po/id/minetest.po b/po/id/minetest.po index 0343dc677..5f62541b5 100644 --- a/po/id/minetest.po +++ b/po/id/minetest.po @@ -2,9 +2,9 @@ msgid "" msgstr "" "Project-Id-Version: Indonesian (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-01-30 21:13+0100\n" -"PO-Revision-Date: 2021-01-08 17:32+0000\n" -"Last-Translator: Ferdinand Tampubolon <dnandz@gmail.com>\n" +"POT-Creation-Date: 2021-02-23 19:03+0100\n" +"PO-Revision-Date: 2021-02-23 15:50+0000\n" +"Last-Translator: Reza Almanda <rezaalmanda27@gmail.com>\n" "Language-Team: Indonesian <https://hosted.weblate.org/projects/minetest/" "minetest/id/>\n" "Language: id\n" @@ -12,7 +12,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 4.4.1-dev\n" +"X-Generator: Weblate 4.5\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" @@ -153,52 +153,51 @@ msgstr "dinyalakan" #: builtin/mainmenu/dlg_contentstore.lua msgid "\"$1\" already exists. Would you like to overwrite it?" -msgstr "" +msgstr "\"$1\" telah ada. Apakah Anda mau menimpanya?" #: builtin/mainmenu/dlg_contentstore.lua msgid "$1 and $2 dependencies will be installed." -msgstr "" +msgstr "Dependensi $1 dan $2 akan dipasang." #: builtin/mainmenu/dlg_contentstore.lua msgid "$1 by $2" -msgstr "" +msgstr "$1 oleh $2" #: builtin/mainmenu/dlg_contentstore.lua msgid "" "$1 downloading,\n" "$2 queued" msgstr "" +"$1 sedang diunduh,\n" +"$2 dalam antrean" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "$1 downloading..." -msgstr "Mengunduh..." +msgstr "$1 mengunduh..." #: builtin/mainmenu/dlg_contentstore.lua msgid "$1 required dependencies could not be found." -msgstr "" +msgstr "$1 membutuhkan dependensi yang tidak bisa ditemukan." #: builtin/mainmenu/dlg_contentstore.lua msgid "$1 will be installed, and $2 dependencies will be skipped." -msgstr "" +msgstr "$1 akan dipasang dan $2 dependensi akan dilewati." #: builtin/mainmenu/dlg_contentstore.lua msgid "All packages" msgstr "Semua paket" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "Already installed" -msgstr "Tombol telah terpakai" +msgstr "Telah terpasang" #: builtin/mainmenu/dlg_contentstore.lua msgid "Back to Main Menu" msgstr "Kembali ke menu utama" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "Base Game:" -msgstr "Host Permainan" +msgstr "Permainan Dasar:" #: builtin/mainmenu/dlg_contentstore.lua msgid "ContentDB is not available when Minetest was compiled without cURL" @@ -222,14 +221,12 @@ msgid "Install" msgstr "Pasang" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "Install $1" -msgstr "Pasang" +msgstr "Pasang $1" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "Install missing dependencies" -msgstr "Dependensi opsional:" +msgstr "Pasang dependensi yang belum ada" #: builtin/mainmenu/dlg_contentstore.lua #: builtin/mainmenu/dlg_settings_advanced.lua @@ -245,26 +242,24 @@ msgid "No results" msgstr "Tiada hasil" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "No updates" -msgstr "Perbarui" +msgstr "Tiada pembaruan" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "Not found" -msgstr "Bisukan suara" +msgstr "Tidak ditemukan" #: builtin/mainmenu/dlg_contentstore.lua msgid "Overwrite" -msgstr "" +msgstr "Timpa" #: builtin/mainmenu/dlg_contentstore.lua msgid "Please check that the base game is correct." -msgstr "" +msgstr "Harap pastikan bahwa permainan dasar telah sesuai." #: builtin/mainmenu/dlg_contentstore.lua msgid "Queued" -msgstr "" +msgstr "Diantrekan" #: builtin/mainmenu/dlg_contentstore.lua msgid "Texture packs" @@ -280,11 +275,11 @@ msgstr "Perbarui" #: builtin/mainmenu/dlg_contentstore.lua msgid "Update All [$1]" -msgstr "" +msgstr "Perbarui Semua [$1]" #: builtin/mainmenu/dlg_contentstore.lua msgid "View more information in a web browser" -msgstr "" +msgstr "Lihat informasi lebih lanjut di peramban web" #: builtin/mainmenu/dlg_create_world.lua msgid "A world named \"$1\" already exists" @@ -348,7 +343,7 @@ msgstr "Tanah mengambang di langit" #: builtin/mainmenu/dlg_create_world.lua msgid "Floatlands (experimental)" -msgstr "Floatland (uji coba)" +msgstr "Floatland (tahap percobaan)" #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp msgid "Game" @@ -707,6 +702,11 @@ msgid "Loading..." msgstr "Memuat..." #: builtin/mainmenu/serverlistmgr.lua +#, fuzzy +msgid "Public server list is disabled" +msgstr "Skrip sisi klien dimatikan" + +#: builtin/mainmenu/serverlistmgr.lua msgid "Try reenabling public serverlist and check your internet connection." msgstr "" "Coba nyalakan ulang daftar server publik dan periksa sambungan internet Anda." @@ -764,7 +764,6 @@ msgid "Credits" msgstr "Penghargaan" #: builtin/mainmenu/tab_credits.lua -#, fuzzy msgid "Open User Data Directory" msgstr "Pilih direktori" @@ -773,6 +772,8 @@ msgid "" "Opens the directory that contains user-provided worlds, games, mods,\n" "and texture packs in a file manager / explorer." msgstr "" +"Membuka direktori yang berisi dunia, permainan, mod, dan paket tekstur\n" +"dari pengguna dalam pengelola/penjelajah berkas." #: builtin/mainmenu/tab_credits.lua msgid "Previous Contributors" @@ -812,7 +813,7 @@ msgstr "Pasang permainan dari ContentDB" #: builtin/mainmenu/tab_local.lua msgid "Name" -msgstr "" +msgstr "Nama" #: builtin/mainmenu/tab_local.lua msgid "New" @@ -823,9 +824,8 @@ msgid "No world created or selected!" msgstr "Tiada dunia yang dibuat atau dipilih!" #: builtin/mainmenu/tab_local.lua -#, fuzzy msgid "Password" -msgstr "Kata sandi baru" +msgstr "Kata sandi" #: builtin/mainmenu/tab_local.lua msgid "Play Game" @@ -836,9 +836,8 @@ msgid "Port" msgstr "Porta" #: builtin/mainmenu/tab_local.lua -#, fuzzy msgid "Select Mods" -msgstr "Pilih Dunia:" +msgstr "Pilih Mod" #: builtin/mainmenu/tab_local.lua msgid "Select World:" @@ -990,9 +989,8 @@ msgid "Shaders" msgstr "Shader" #: builtin/mainmenu/tab_settings.lua -#, fuzzy msgid "Shaders (experimental)" -msgstr "Floatland (uji coba)" +msgstr "Shader (tahap percobaan)" #: builtin/mainmenu/tab_settings.lua msgid "Shaders (unavailable)" @@ -1016,7 +1014,7 @@ msgstr "Untuk menggunakan shader, pengandar OpenGL harus digunakan." #: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp msgid "Tone Mapping" -msgstr "Tone Mapping" +msgstr "Pemetaan Nada" #: builtin/mainmenu/tab_settings.lua msgid "Touchthreshold: (px)" @@ -1192,7 +1190,7 @@ msgid "Continue" msgstr "Lanjutkan" #: src/client/game.cpp -#, fuzzy, c-format +#, c-format msgid "" "Controls:\n" "- %s: move forwards\n" @@ -1215,12 +1213,12 @@ msgstr "" "- %s: geser kiri\n" "- %s: geser kanan\n" "- %s: lompat/panjat\n" +"- %s: gali/pukul\n" +"- %s: taruh/pakai\n" "- %s: menyelinap/turun\n" "- %s: jatuhkan barang\n" "- %s: inventaris\n" "- Tetikus: belok/lihat\n" -"- Klik kiri: gali/pukul\n" -"- Klik kanan: taruh/pakai\n" "- Roda tetikus: pilih barang\n" "- %s: obrolan\n" @@ -1749,19 +1747,18 @@ msgid "Minimap hidden" msgstr "Peta mini disembunyikan" #: src/client/minimap.cpp -#, fuzzy, c-format +#, c-format msgid "Minimap in radar mode, Zoom x%d" -msgstr "Peta mini mode radar, perbesaran 1x" +msgstr "Peta mini mode radar, perbesaran %dx" #: src/client/minimap.cpp -#, fuzzy, c-format +#, c-format msgid "Minimap in surface mode, Zoom x%d" -msgstr "Peta mini mode permukaan, perbesaran 1x" +msgstr "Peta mini mode permukaan, perbesaran %dx" #: src/client/minimap.cpp -#, fuzzy msgid "Minimap in texture mode" -msgstr "Ukuran tekstur minimum" +msgstr "Peta mini mode tekstur" #: src/gui/guiConfirmRegistration.cpp src/gui/guiPasswordChange.cpp msgid "Passwords do not match!" @@ -2161,7 +2158,7 @@ msgstr "Selang waktu ABM" #: src/settings_translation_file.cpp msgid "ABM time budget" -msgstr "" +msgstr "Anggaran waktu ABM" #: src/settings_translation_file.cpp msgid "Absolute limit of queued blocks to emerge" @@ -2224,7 +2221,7 @@ msgid "" msgstr "" "Sesuaikan kepadatan lapisan floatland.\n" "Tambahkan nilai untuk menambah kepadatan. Dapat positif atau negatif.\n" -"Nilai = 0.0: 50% volume adalah floatland.\n" +"Nilai = 0.0: 50% o volume adalah floatland.\n" "Nilai = 2.0 (dapat lebih tinggi tergantung 'mgv7_np_floatland', selalu uji\n" "terlebih dahulu) membuat lapisan floatland padat (penuh)." @@ -2618,8 +2615,8 @@ msgid "" "allow them to upload and download data to/from the internet." msgstr "" "Daftar yang dipisahkan dengan koma dari mod yang dibolehkan untuk\n" -"mengakses HTTP API, membolehkan mereka untuk mengunggah dan\n" -"mengunduh data ke/dari internet." +"mengakses HTTP API, membolehkan mereka untuk mengunggah dan mengunduh data " +"ke/dari internet." #: src/settings_translation_file.cpp msgid "" @@ -2627,7 +2624,7 @@ msgid "" "functions even when mod security is on (via request_insecure_environment())." msgstr "" "Daftar yang dengan dipisahkan koma dari mod terpercaya yang diperbolehkan\n" -"untuk mengakses fungsi yang tidak aman bahkan ketika mod security aktif\n" +"untuk mengakses fungsi yang tidak aman bahkan ketika mod security aktif " "(melalui request_insecure_environment())." #: src/settings_translation_file.cpp @@ -2664,7 +2661,7 @@ msgstr "Daftar Hitam Flag ContentDB" #: src/settings_translation_file.cpp msgid "ContentDB Max Concurrent Downloads" -msgstr "" +msgstr "Jumlah Maks Pengunduhan ContentDB Bersamaan" #: src/settings_translation_file.cpp msgid "ContentDB URL" @@ -2732,11 +2729,12 @@ msgid "Crosshair alpha" msgstr "Keburaman crosshair" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Crosshair alpha (opaqueness, between 0 and 255).\n" "Also controls the object crosshair color" -msgstr "Keburaman crosshair (keopakan, dari 0 sampai 255)." +msgstr "" +"Keburaman crosshair (keopakan, dari 0 sampai 255).\n" +"Juga mengatur warna crosshair objek" #: src/settings_translation_file.cpp msgid "Crosshair color" @@ -2747,6 +2745,8 @@ msgid "" "Crosshair color (R,G,B).\n" "Also controls the object crosshair color" msgstr "" +"Warna crosshair (R,G,B),\n" +"sekaligus mengatur warna crosshair objek" #: src/settings_translation_file.cpp msgid "DPI" @@ -2928,9 +2928,8 @@ msgid "Desynchronize block animation" msgstr "Putuskan sinkronasi animasi blok" #: src/settings_translation_file.cpp -#, fuzzy msgid "Dig key" -msgstr "Tombol kanan" +msgstr "Tombol gali" #: src/settings_translation_file.cpp msgid "Digging particles" @@ -2997,7 +2996,8 @@ msgid "Enable console window" msgstr "Gunakan jendela konsol" #: src/settings_translation_file.cpp -msgid "Enable creative mode for new created maps." +#, fuzzy +msgid "Enable creative mode for all players" msgstr "Gunakan mode kreatif pada peta baru." #: src/settings_translation_file.cpp @@ -3151,9 +3151,8 @@ msgstr "" "yang rata dan cocok untuk lapisan floatland padat (penuh)." #: src/settings_translation_file.cpp -#, fuzzy msgid "FPS when unfocused or paused" -msgstr "FPS (bingkai per detik) maksimum saat permainan dijeda." +msgstr "FPS (bingkai per detik) saat dijeda atau tidak difokuskan" #: src/settings_translation_file.cpp msgid "FSAA" @@ -3484,9 +3483,9 @@ msgid "" "and junglegrass, in all other mapgens this flag controls all decorations." msgstr "" "Atribut pembuatan peta global.\n" -"Dalam pembuat peta v6, flag \"decorations\" mengatur semua hiasan kecuali\n" -"pohon dan rumput rimba. Dalam pembuat peta lain, flag ini mengatur\n" -"semua dekorasi." +"Dalam pembuat peta v6, flag \"decorations\" mengatur semua hiasan, kecuali\n" +"pohon dan rumput rimba. Dalam pembuat peta lain, flag ini mengatur semua " +"dekorasi." #: src/settings_translation_file.cpp msgid "" @@ -3533,7 +3532,6 @@ msgid "HUD toggle key" msgstr "Tombol beralih HUD" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Handling for deprecated Lua API calls:\n" "- none: Do not log deprecated calls\n" @@ -3541,7 +3539,7 @@ msgid "" "- error: abort on usage of deprecated call (suggested for mod developers)." msgstr "" "Penanganan panggilan Lua API usang:\n" -"- legacy: (mencoba untuk) menyerupai aturan lawas (bawaan untuk rilis).\n" +"- none: jangan catat panggilan usang\n" "- log: menyerupai dan mencatat asal-usul panggilan usang (bawaan untuk " "awakutu).\n" "- error: batalkan penggunaan panggilan usang (disarankan untuk pengembang " @@ -3824,9 +3822,8 @@ msgid "" "If FPS would go higher than this, limit it by sleeping\n" "to not waste CPU power for no benefit." msgstr "" -"Jika FPS (bingkai per detik) lebih tinggi dari ini, akan\n" -"dibatasi dengan jeda agar tidak menghabiskan tenaga\n" -"CPU dengan percuma." +"Jika FPS (bingkai per detik) lebih tinggi daripada ini, akan dibatasi\n" +"dengan jeda agar tidak membuang tenaga CPU dengan percuma." #: src/settings_translation_file.cpp msgid "" @@ -3912,8 +3909,8 @@ msgid "" msgstr "" "Jika dinyalakan, Anda dapat menaruh blok pada posisi (kaki + ketinggian " "mata)\n" -"tempat Anda berdiri.\n" -"Ini berguna saat bekerja dengan kotak nodus (nodebox) dalam daerah sempit." +"tempat Anda berdiri. Ini berguna saat bekerja dengan kotak nodus (nodebox) " +"dalam daerah sempit." #: src/settings_translation_file.cpp msgid "" @@ -3988,8 +3985,7 @@ msgid "" "Instrument global callback functions on registration.\n" "(anything you pass to a minetest.register_*() function)" msgstr "" -"Melengkapi fungsi panggil balik (callback) global saat didaftarkan,\n" -"dengan perkakas.\n" +"Melengkapi fungsi panggil balik (callback) global saat didaftarkan.\n" "(semua yang dimasukkan ke fungsi minetest.register_*())" #: src/settings_translation_file.cpp @@ -4064,8 +4060,7 @@ msgstr "" "Perulangan fungsi rekursif.\n" "Menaikkan nilai ini menaikkan detail, tetapi juga menambah\n" "beban pemrosesan.\n" -"Saat perulangan = 20, pembuat peta ini memiliki beban yang\n" -"mirip dengan pembuat peta v7." +"Saat perulangan = 20, beban pembuat peta ini mirip dengan v7." #: src/settings_translation_file.cpp msgid "Joystick ID" @@ -4076,9 +4071,8 @@ msgid "Joystick button repetition interval" msgstr "Jarak penekanan tombol joystick terus-menerus" #: src/settings_translation_file.cpp -#, fuzzy msgid "Joystick deadzone" -msgstr "Jenis joystick" +msgstr "Zona mati joystick" #: src/settings_translation_file.cpp msgid "Joystick frustum sensitivity" @@ -4183,13 +4177,12 @@ msgstr "" "html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Key for digging.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Tombol untuk lompat.\n" +"Tombol untuk gali.\n" "Lihat http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" @@ -4336,13 +4329,12 @@ msgstr "" "html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Key for placing.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Tombol untuk lompat.\n" +"Tombol untuk taruh.\n" "Lihat http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" @@ -5111,11 +5103,11 @@ msgstr "Buat semua cairan buram" #: src/settings_translation_file.cpp msgid "Map Compression Level for Disk Storage" -msgstr "" +msgstr "Tingkat Kompresi Peta untuk Penyimpanan Diska" #: src/settings_translation_file.cpp msgid "Map Compression Level for Network Transfer" -msgstr "" +msgstr "Tingkat Kompresi Peta untuk Transfer Jaringan" #: src/settings_translation_file.cpp msgid "Map directory" @@ -5300,9 +5292,10 @@ msgid "Maximum FPS" msgstr "FPS (bingkai per detik) maksimum" #: src/settings_translation_file.cpp -#, fuzzy msgid "Maximum FPS when the window is not focused, or when the game is paused." -msgstr "FPS (bingkai per detik) maksimum saat permainan dijeda." +msgstr "" +"FPS (bingkai per detik) maksimum saat permainan dijeda atau saat jendela " +"tidak difokuskan." #: src/settings_translation_file.cpp msgid "Maximum forceloaded blocks" @@ -5364,6 +5357,9 @@ msgid "" "be queued.\n" "This should be lower than curl_parallel_limit." msgstr "" +"Jumlah maksimum pengunduhan bersamaan. Pengunduhan yang melebihi batas ini " +"akan\n" +"diantrekan. Nilai ini harus lebih rendah daripada curl_parallel_limit." #: src/settings_translation_file.cpp msgid "Maximum number of forceloaded mapblocks." @@ -5681,7 +5677,8 @@ msgid "" "formspec is\n" "open." msgstr "" -"Buka menu jeda saat jendela hilang fokus. Tidak menjeda jika formspec sedang " +"Buka menu jeda saat jendela hilang fokus. Tidak menjeda jika formspec " +"sedang \n" "dibuka." #: src/settings_translation_file.cpp @@ -5765,14 +5762,12 @@ msgid "Pitch move mode" msgstr "Mode gerak sesuai pandang" #: src/settings_translation_file.cpp -#, fuzzy msgid "Place key" -msgstr "Tombol terbang" +msgstr "Tombol taruh" #: src/settings_translation_file.cpp -#, fuzzy msgid "Place repetition interval" -msgstr "Jarak klik kanan berulang" +msgstr "Jeda waktu taruh berulang" #: src/settings_translation_file.cpp msgid "" @@ -5842,7 +5837,7 @@ msgstr "Profiling" #: src/settings_translation_file.cpp msgid "Prometheus listener address" -msgstr "" +msgstr "Alamat pendengar Prometheus" #: src/settings_translation_file.cpp msgid "" @@ -5851,6 +5846,10 @@ msgid "" "enable metrics listener for Prometheus on that address.\n" "Metrics can be fetch on http://127.0.0.1:30000/metrics" msgstr "" +"Alamat pendengar Prometheus.\n" +"Jika Minetest dikompilasi dengan pilihan ENABLE_PROMETHEUS dinyalakan,\n" +"ini menyalakan pendengar metrik untuk Prometheus pada alamat itu.\n" +"Metrik dapat diambil pada http://127.0.0.1:30000/metrics" #: src/settings_translation_file.cpp msgid "Proportion of large caves that contain liquid." @@ -6023,12 +6022,11 @@ msgid "" "edge pixels when images are scaled by non-integer sizes." msgstr "" "Perbesar/perkecil GUI sesuai pengguna.\n" -"Menggunakan filter nearest-neighbor-anti-alias untuk\n" -"perbesar/perkecil GUI.\n" +"Menggunakan filter nearest-neighbor-anti-alias untuk perbesar/perkecil GUI.\n" "Ini akan menghaluskan beberapa tepi kasar dan\n" "mencampurkan piksel-piksel saat diperkecil dengan\n" -"mengaburkan beberapa piksel tepi saat diperkecil dengan\n" -"skala bukan bilangan bulat." +"mengaburkan beberapa piksel tepi saat diperkecil dengan skala bukan bilangan " +"bulat." #: src/settings_translation_file.cpp msgid "Screen height" @@ -6251,15 +6249,19 @@ msgid "Show entity selection boxes" msgstr "Tampilkan kotak pilihan benda" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Show entity selection boxes\n" "A restart is required after changing this." msgstr "" -"Atur bahasa. Biarkan kosong untuk menggunakan bahasa sistem.\n" +"Tampilkan kotak pilihan entitas\n" "Dibutuhkan mulai ulang setelah mengganti ini." #: src/settings_translation_file.cpp +#, fuzzy +msgid "Show nametag backgrounds by default" +msgstr "Fon tebal bawaan" + +#: src/settings_translation_file.cpp msgid "Shutdown message" msgstr "Pesan saat server dimatikan" @@ -6277,7 +6279,8 @@ msgstr "" "PERINGATAN! Tidak ada untungnya dan berbahaya jika menaikkan\n" "nilai ini di atas 5.\n" "Mengecilkan nilai ini akan meningkatkan kekerapan gua dan dungeon.\n" -"Mengubah nilai ini untuk kegunaan khusus, membiarkannya disarankan." +"Mengubah nilai ini untuk kegunaan khusus, membiarkannya \n" +"disarankan." #: src/settings_translation_file.cpp msgid "" @@ -6442,6 +6445,16 @@ msgid "" "server-intensive extreme water flow and to avoid vast flooding of the\n" "world surface below." msgstr "" +"Tingkat permukaan peletakan air pada lapisan floatland padat.\n" +"Air tidak ditaruh secara bawaan dan akan ditaruh jika nilai ini diatur ke\n" +"atas 'mgv7_floatland_ymax' - 'mgv7_floatland_taper' (mulai dari\n" +"penirusan atas).\n" +"***PERINGATAN, POTENSI BAHAYA TERHADAP DUNIA DAN KINERJA SERVER***\n" +"Ketika penaruhan air dinyalakan, floatland wajib diatur dan diuji agar\n" +"berupa lapisan padat dengan mengatur 'mgv7_floatland_density' ke 2.0\n" +"(atau nilai wajib lainnya sesuai 'mgv7_np_floatland') untuk menghindari\n" +"aliran air ekstrem yang membebani server dan menghindari banjir\n" +"bandang di permukaan dunia bawah." #: src/settings_translation_file.cpp msgid "Synchronous SQLite" @@ -6520,9 +6533,8 @@ msgid "The URL for the content repository" msgstr "URL dari gudang konten" #: src/settings_translation_file.cpp -#, fuzzy msgid "The deadzone of the joystick" -msgstr "Identitas dari joystick yang digunakan" +msgstr "Zona mati joystick yang digunakan" #: src/settings_translation_file.cpp msgid "" @@ -6580,7 +6592,6 @@ msgstr "" "server Anda." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "The radius of the volume of blocks around every player that is subject to " "the\n" @@ -6590,14 +6601,13 @@ msgid "" "maintained.\n" "This should be configured together with active_object_send_range_blocks." msgstr "" -"Jari-jari ruang di sekitar pemain yang menjadi blok aktif, dalam blok peta\n" -"(16 nodus).\n" +"Jari-jari volume blok di sekitar pemain yang menjadi blok aktif, dalam\n" +"blok peta (16 nodus).\n" "Dalam blok aktif, objek dimuat dan ABM berjalan.\n" "Ini juga jangkauan minimum pengelolaan objek aktif (makhluk).\n" "Ini harus diatur bersama dengan active_object_range." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "The rendering back-end for Irrlicht.\n" "A restart is required after changing this.\n" @@ -6609,8 +6619,8 @@ msgstr "" "Penggambar untuk Irrlicht.\n" "Mulai ulang dibutuhkan setelah mengganti ini.\n" "Catatan: Pada Android, gunakan OGLES1 jika tidak yakin! Apl mungkin gagal\n" -"berjalan pada lainnya. Pada platform lain, OpenGL disarankan yang menjadi\n" -"satu-satunya pengandar yang mendukung shader untuk saat ini." +"berjalan untuk pilihan lainnya. Pada platform lain, OpenGL disarankan.\n" +"Shader didukung oleh OpenGL (khusus desktop) dan OGLES2 (tahap percobaan)" #: src/settings_translation_file.cpp msgid "" @@ -6648,6 +6658,8 @@ msgid "" "The time budget allowed for ABMs to execute on each step\n" "(as a fraction of the ABM Interval)" msgstr "" +"Anggaran waktu yang dibolehkan untuk ABM dalam menjalankan\n" +"tiap langkah (dalam pecahan dari jarak ABM)" #: src/settings_translation_file.cpp msgid "" @@ -6658,12 +6670,12 @@ msgstr "" "menekan terus-menerus kombinasi tombol joystick." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "The time in seconds it takes between repeated node placements when holding\n" "the place button." msgstr "" -"Jeda dalam detik antarklik kanan berulang saat menekan tombol kanan tetikus." +"Jeda dalam detik antar-penaruhan berulang saat menekan \n" +"tombol taruh." #: src/settings_translation_file.cpp msgid "The type of joystick" @@ -6815,9 +6827,8 @@ msgid "" "especially when using a high resolution texture pack.\n" "Gamma correct downscaling is not supported." msgstr "" -"Gunakan mip mapping untuk penyekalaan tekstur. Dapat sedikit\n" -"meningkatkan kinerja, terutama saat menggunakan paket tekstur\n" -"beresolusi tinggi.\n" +"Pakai mip mapping untuk penyekalaan tekstur. Bisa sedikit menaikkan\n" +"kinerja, terutama pada saat memakai paket tekstur beresolusi tinggi.\n" "Pengecilan dengan tepat gamma tidak didukung." #: src/settings_translation_file.cpp @@ -6830,6 +6841,13 @@ msgid "" "If set to 0, MSAA is disabled.\n" "A restart is required after changing this option." msgstr "" +"Pakai antialias multisampel (MSAA) untuk memperhalus tepian blok.\n" +"Algoritme ini memperhalus tampilan 3D sambil menjaga ketajaman gambar,\n" +"tetapi tidak memengaruhi tekstur bagian dalam (yang terlihat khususnya\n" +"dengan tekstur transparan).\n" +"Muncul spasi tampak di antara nodus ketika shader dimatikan.\n" +"Jika diatur 0, MSAA dimatikan.\n" +"Dibutuhkan mulai ulang setelah penggantian pengaturan ini." #: src/settings_translation_file.cpp msgid "Use trilinear filtering when scaling textures." @@ -7017,10 +7035,9 @@ msgid "" "filtered in software, but some images are generated directly\n" "to hardware (e.g. render-to-texture for nodes in inventory)." msgstr "" -"Saat gui_scaling_filter diatur ke true, semua gambar GUI harus\n" -"difilter dalam perangkat lunak, tetapi beberapa gambar dibuat\n" -"langsung ke perangkat keras (misal. render ke tekstur untuk nodus\n" -"dalam inventaris)." +"Saat gui_scaling_filter diatur ke true, semua gambar GUI harus difilter\n" +"dalam perangkat lunak, tetapi beberapa gambar dibuat langsung ke\n" +"perangkat keras (misal. render ke tekstur untuk nodus dalam inventaris)." #: src/settings_translation_file.cpp msgid "" @@ -7029,11 +7046,10 @@ msgid "" "to the old scaling method, for video drivers that don't\n" "properly support downloading textures back from hardware." msgstr "" -"Saat gui_scaling_filter_txr2img dibolehkan, salin gambar-gambar\n" -"tersebut dari perangkat keras ke perangkat lunak untuk perbesar/\n" -"perkecil. Saat tidak dibolehkan, kembali ke cara lama, untuk\n" -"pengandar video yang tidak mendukung pengunduhan tekstur dari\n" -"perangkat keras." +"Saat gui_scaling_filter_txr2img dibolehkan, salin gambar-gambar tersebut\n" +"dari perangkat keras ke perangkat lunak untuk perbesar/perkecil. Saat tidak\n" +"dibolehkan, kembali ke cara lama, untuk pengandar video yang tidak\n" +"mendukung pengunduhan tekstur dari perangkat keras." #: src/settings_translation_file.cpp msgid "" @@ -7068,6 +7084,12 @@ msgstr "" "Jika dimatikan, fon bitmap dan vektor XML akan dipakai." #: src/settings_translation_file.cpp +msgid "" +"Whether nametag backgrounds should be shown by default.\n" +"Mods may still set a background." +msgstr "" + +#: src/settings_translation_file.cpp msgid "Whether node texture animations should be desynchronized per mapblock." msgstr "Apakah animasi tekstur nodus harus tidak disinkronkan tiap blok peta." @@ -7171,8 +7193,8 @@ msgid "" "Y of mountain density gradient zero level. Used to shift mountains " "vertically." msgstr "" -"Titik acuan kemiringan kepadatan gunung pada sumbu Y.\n" -"Digunakan untuk menggeser gunung secara vertikal." +"Titik acuan kemiringan kepadatan gunung pada sumbu Y. Digunakan untuk " +"menggeser gunung secara vertikal." #: src/settings_translation_file.cpp msgid "Y of upper limit of large caves." @@ -7189,6 +7211,10 @@ msgid "" "For a solid floatland layer, this controls the height of hills/mountains.\n" "Must be less than or equal to half the distance between the Y limits." msgstr "" +"Jarak Y penirusan floatland dari padat sampai kosong.\n" +"Penirusan dimulai dari jarak ini sampai batas Y.\n" +"Untuk lapisan floatland padat, nilai ini mengatur tinggi bukit/gunung.\n" +"Nilai ini harus kurang dari atau sama dengan setengah jarak antarbatas Y." #: src/settings_translation_file.cpp msgid "Y-level of average terrain surface." @@ -7218,6 +7244,11 @@ msgid "" "9 - best compression, slowest\n" "(levels 1-3 use Zlib's \"fast\" method, 4-9 use the normal method)" msgstr "" +"Tingkat kompresi ZLib saat pengiriman blok peta kepada klien.\n" +"-1 - tingkat kompresi Zlib bawaan\n" +"0 - tanpa kompresi, tercepat\n" +"9 - kompresi terbaik, terlambat\n" +"(tingkat 1-3 pakai metode \"cepat\" Zlib, 4-9 pakai metode normal)" #: src/settings_translation_file.cpp msgid "" @@ -7227,6 +7258,11 @@ msgid "" "9 - best compression, slowest\n" "(levels 1-3 use Zlib's \"fast\" method, 4-9 use the normal method)" msgstr "" +"Tingkat kompresi ZLib saat penyimpanan blok peta kepada klien.\n" +"-1 - tingkat kompresi Zlib bawaan\n" +"0 - tanpa kompresi, tercepat\n" +"9 - kompresi terbaik, terlambat\n" +"(tingkat 1-3 pakai metode \"cepat\" Zlib, 4-9 pakai metode normal)" #: src/settings_translation_file.cpp msgid "cURL file download timeout" diff --git a/po/it/minetest.po b/po/it/minetest.po index 78f0d7503..897859222 100644 --- a/po/it/minetest.po +++ b/po/it/minetest.po @@ -2,9 +2,9 @@ msgid "" msgstr "" "Project-Id-Version: Italian (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-01-30 21:13+0100\n" -"PO-Revision-Date: 2020-12-07 09:22+0000\n" -"Last-Translator: Giov4 <brancacciogiovanni1@gmail.com>\n" +"POT-Creation-Date: 2021-02-23 19:03+0100\n" +"PO-Revision-Date: 2021-02-13 08:50+0000\n" +"Last-Translator: Jacques Lagrange <Jacques.Reads@gmail.com>\n" "Language-Team: Italian <https://hosted.weblate.org/projects/minetest/" "minetest/it/>\n" "Language: it\n" @@ -12,7 +12,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.4-dev\n" +"X-Generator: Weblate 4.5-dev\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" @@ -153,52 +153,51 @@ msgstr "abilitato" #: builtin/mainmenu/dlg_contentstore.lua msgid "\"$1\" already exists. Would you like to overwrite it?" -msgstr "" +msgstr "\"$1\" già esiste. Vuoi sovrascriverlo?" #: builtin/mainmenu/dlg_contentstore.lua msgid "$1 and $2 dependencies will be installed." -msgstr "" +msgstr "Le dipendenze $1 e $2 verranno installate." #: builtin/mainmenu/dlg_contentstore.lua msgid "$1 by $2" -msgstr "" +msgstr "$1 di $2" #: builtin/mainmenu/dlg_contentstore.lua msgid "" "$1 downloading,\n" "$2 queued" msgstr "" +"$1 in scaricamento,\n" +"$2 in coda" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "$1 downloading..." -msgstr "Scaricamento..." +msgstr "Scaricando $1..." #: builtin/mainmenu/dlg_contentstore.lua msgid "$1 required dependencies could not be found." -msgstr "" +msgstr "Le dipendeze richieste per $1 non sono state trovate." #: builtin/mainmenu/dlg_contentstore.lua msgid "$1 will be installed, and $2 dependencies will be skipped." -msgstr "" +msgstr "$1 verrà installato, e $2 dipendenze verranno ignorate." #: builtin/mainmenu/dlg_contentstore.lua msgid "All packages" msgstr "Tutti i pacchetti" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "Already installed" -msgstr "Tasto già usato" +msgstr "Già installato" #: builtin/mainmenu/dlg_contentstore.lua msgid "Back to Main Menu" msgstr "Torna al Menu Principale" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "Base Game:" -msgstr "Ospita un gioco" +msgstr "Gioco base:" #: builtin/mainmenu/dlg_contentstore.lua msgid "ContentDB is not available when Minetest was compiled without cURL" @@ -222,14 +221,12 @@ msgid "Install" msgstr "Installa" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "Install $1" -msgstr "Installa" +msgstr "Installa $1" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "Install missing dependencies" -msgstr "Dipendenze facoltative:" +msgstr "Installa le dipendenze mancanti" #: builtin/mainmenu/dlg_contentstore.lua #: builtin/mainmenu/dlg_settings_advanced.lua @@ -245,26 +242,24 @@ msgid "No results" msgstr "Nessun risultato" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "No updates" -msgstr "Aggiorna" +msgstr "Nessun aggiornamento" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "Not found" -msgstr "Silenzia audio" +msgstr "Non trovato" #: builtin/mainmenu/dlg_contentstore.lua msgid "Overwrite" -msgstr "" +msgstr "Sovrascrivi" #: builtin/mainmenu/dlg_contentstore.lua msgid "Please check that the base game is correct." -msgstr "" +msgstr "Per favore, controlla che il gioco base sia corretto." #: builtin/mainmenu/dlg_contentstore.lua msgid "Queued" -msgstr "" +msgstr "In coda" #: builtin/mainmenu/dlg_contentstore.lua msgid "Texture packs" @@ -280,11 +275,11 @@ msgstr "Aggiorna" #: builtin/mainmenu/dlg_contentstore.lua msgid "Update All [$1]" -msgstr "" +msgstr "Aggiornat tutti [$1]" #: builtin/mainmenu/dlg_contentstore.lua msgid "View more information in a web browser" -msgstr "" +msgstr "Visualizza ulteriori informazioni in un browser web" #: builtin/mainmenu/dlg_create_world.lua msgid "A world named \"$1\" already exists" @@ -708,6 +703,11 @@ msgid "Loading..." msgstr "Caricamento..." #: builtin/mainmenu/serverlistmgr.lua +#, fuzzy +msgid "Public server list is disabled" +msgstr "Scripting su lato client disabilitato" + +#: builtin/mainmenu/serverlistmgr.lua msgid "Try reenabling public serverlist and check your internet connection." msgstr "" "Prova a riabilitare l'elenco dei server pubblici e controlla la tua " @@ -766,15 +766,16 @@ msgid "Credits" msgstr "Riconoscimenti" #: builtin/mainmenu/tab_credits.lua -#, fuzzy msgid "Open User Data Directory" -msgstr "Scegli la cartella" +msgstr "Apri la cartella dei dati utente" #: builtin/mainmenu/tab_credits.lua msgid "" "Opens the directory that contains user-provided worlds, games, mods,\n" "and texture packs in a file manager / explorer." msgstr "" +"Apre la cartella che contiene mondi, giochi, mod e pacchetti \n" +"texture forniti dall'utente in un gestore di file / explorer." #: builtin/mainmenu/tab_credits.lua msgid "Previous Contributors" @@ -814,7 +815,7 @@ msgstr "Installa giochi da ContentDB" #: builtin/mainmenu/tab_local.lua msgid "Name" -msgstr "" +msgstr "Nome" #: builtin/mainmenu/tab_local.lua msgid "New" @@ -825,9 +826,8 @@ msgid "No world created or selected!" msgstr "Nessun mondo creato o selezionato!" #: builtin/mainmenu/tab_local.lua -#, fuzzy msgid "Password" -msgstr "Nuova password" +msgstr "Password" #: builtin/mainmenu/tab_local.lua msgid "Play Game" @@ -838,9 +838,8 @@ msgid "Port" msgstr "Porta" #: builtin/mainmenu/tab_local.lua -#, fuzzy msgid "Select Mods" -msgstr "Seleziona mondo:" +msgstr "Seleziona mod" #: builtin/mainmenu/tab_local.lua msgid "Select World:" @@ -992,9 +991,8 @@ msgid "Shaders" msgstr "Shaders" #: builtin/mainmenu/tab_settings.lua -#, fuzzy msgid "Shaders (experimental)" -msgstr "Terre fluttuanti (sperimentale)" +msgstr "Shader (sperimentali)" #: builtin/mainmenu/tab_settings.lua msgid "Shaders (unavailable)" @@ -1194,7 +1192,7 @@ msgid "Continue" msgstr "Continua" #: src/client/game.cpp -#, fuzzy, c-format +#, c-format msgid "" "Controls:\n" "- %s: move forwards\n" @@ -1216,13 +1214,13 @@ msgstr "" "- %s: arretra\n" "- %s: sinistra\n" "- %s: destra\n" -"- %s: salta/arrampica\n" +"- %s: salta/arrampicati\n" +"- %s: scava/colpisci\n" +"- %s: piazza/usa\n" "- %s: furtivo/scendi\n" -"- %s: butta oggetto\n" +"- %s: lascia oggetto\n" "- %s: inventario\n" "- Mouse: gira/guarda\n" -"- Mouse sx: scava/colpisci\n" -"- Mouse dx: piazza/usa\n" "- Rotella mouse: scegli oggetto\n" "- %s: chat\n" @@ -1751,19 +1749,18 @@ msgid "Minimap hidden" msgstr "Minimappa nascosta" #: src/client/minimap.cpp -#, fuzzy, c-format +#, c-format msgid "Minimap in radar mode, Zoom x%d" -msgstr "Minimappa in modalità radar, ingrandimento x1" +msgstr "Minimappa in modalità radar, ingrandimento x%d" #: src/client/minimap.cpp -#, fuzzy, c-format +#, c-format msgid "Minimap in surface mode, Zoom x%d" -msgstr "Minimappa in modalità superficie, ingrandimento x1" +msgstr "Minimappa in modalità superficie, ingrandimento x%d" #: src/client/minimap.cpp -#, fuzzy msgid "Minimap in texture mode" -msgstr "Dimensione minima della texture" +msgstr "Minimappa in modalità texture" #: src/gui/guiConfirmRegistration.cpp src/gui/guiPasswordChange.cpp msgid "Passwords do not match!" @@ -2173,7 +2170,7 @@ msgstr "Intervallo ABM" #: src/settings_translation_file.cpp msgid "ABM time budget" -msgstr "" +msgstr "Budget di tempo ABM" #: src/settings_translation_file.cpp msgid "Absolute limit of queued blocks to emerge" @@ -2684,7 +2681,7 @@ msgstr "Contenuti esclusi da ContentDB" #: src/settings_translation_file.cpp msgid "ContentDB Max Concurrent Downloads" -msgstr "" +msgstr "Massimi download contemporanei di ContentDB" #: src/settings_translation_file.cpp msgid "ContentDB URL" @@ -2754,11 +2751,12 @@ msgid "Crosshair alpha" msgstr "Trasparenza del mirino" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Crosshair alpha (opaqueness, between 0 and 255).\n" "Also controls the object crosshair color" -msgstr "Trasparenza del mirino (opacità , tra 0 e 255)." +msgstr "" +"Trasparenza del mirino (opacità , tra 0 e 255).\n" +"Controlla anche il colore del mirino dell'oggetto" #: src/settings_translation_file.cpp msgid "Crosshair color" @@ -2769,6 +2767,8 @@ msgid "" "Crosshair color (R,G,B).\n" "Also controls the object crosshair color" msgstr "" +"Colore del mirino (R,G,B).\n" +"Controlla anche il colore del mirino dell'oggetto" #: src/settings_translation_file.cpp msgid "DPI" @@ -2953,9 +2953,8 @@ msgid "Desynchronize block animation" msgstr "De-sincronizza l'animazione del blocco" #: src/settings_translation_file.cpp -#, fuzzy msgid "Dig key" -msgstr "Tasto des." +msgstr "Tasto scava" #: src/settings_translation_file.cpp msgid "Digging particles" @@ -3023,7 +3022,8 @@ msgid "Enable console window" msgstr "Attivare la finestra della console" #: src/settings_translation_file.cpp -msgid "Enable creative mode for new created maps." +#, fuzzy +msgid "Enable creative mode for all players" msgstr "Abilitare la modalità creativa per le nuove mappe create." #: src/settings_translation_file.cpp @@ -3187,9 +3187,8 @@ msgstr "" "pianure più piatte, adatti a uno strato solido di terre fluttuanti." #: src/settings_translation_file.cpp -#, fuzzy msgid "FPS when unfocused or paused" -msgstr "FPS massimi quando il gioco è in pausa." +msgstr "FPS quando il gioco è in pausa o in secondo piano" #: src/settings_translation_file.cpp msgid "FSAA" @@ -3583,20 +3582,18 @@ msgid "HUD toggle key" msgstr "Tasto di (dis)attivazione dell'HUD" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Handling for deprecated Lua API calls:\n" "- none: Do not log deprecated calls\n" "- log: mimic and log backtrace of deprecated call (default).\n" "- error: abort on usage of deprecated call (suggested for mod developers)." msgstr "" -"Gestione delle chiamate deprecate alle API Lua:\n" -"- legacy (ereditaria): (prova a) simulare il vecchio comportamento " -"(predefinito per i rilasci).\n" -"- log (registro): simula e registra la traccia della chiamata deprecata " -"(predefinito per il debug).\n" -"- error (errore): interrompere all'uso della chiamata deprecata (suggerito " -"per lo sviluppo di moduli)." +"Gestione delle chiamate API Lua deprecate:\n" +"- none (nessuno): non registra le chiamate obsolete\n" +"- log (registro): imita e registra il backtrace di una chiamata obsoleta " +"(impostazione predefinita).\n" +"- error (errore): interrompe l'utilizzo della chiamata deprecata " +"(consigliata per gli sviluppatori di mod)." #: src/settings_translation_file.cpp msgid "" @@ -4130,9 +4127,8 @@ msgid "Joystick button repetition interval" msgstr "Intervallo di ripetizione del pulsante del joystick" #: src/settings_translation_file.cpp -#, fuzzy msgid "Joystick deadzone" -msgstr "Tipo di joystick" +msgstr "Deadzone joystick" #: src/settings_translation_file.cpp msgid "Joystick frustum sensitivity" @@ -4237,14 +4233,13 @@ msgstr "" "html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Key for digging.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Tasto per saltare.\n" -"Si veda http://irrlicht.sourceforge.net/docu/namespaceirr." +"Tasto per scavare.\n" +"Vedi http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp @@ -4390,14 +4385,13 @@ msgstr "" "html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Key for placing.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Tasto per saltare.\n" -"Si veda http://irrlicht.sourceforge.net/docu/namespaceirr." +"Tasto per piazzare.\n" +"Vedi http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp @@ -5172,11 +5166,11 @@ msgstr "Rende opachi tutti i liquidi" #: src/settings_translation_file.cpp msgid "Map Compression Level for Disk Storage" -msgstr "" +msgstr "Livello di compressione della mappa per l'archiviazione su disco" #: src/settings_translation_file.cpp msgid "Map Compression Level for Network Transfer" -msgstr "" +msgstr "Livello di compressione della mappa per il trasferimento in rete" #: src/settings_translation_file.cpp msgid "Map directory" @@ -5367,9 +5361,10 @@ msgid "Maximum FPS" msgstr "FPS massimi" #: src/settings_translation_file.cpp -#, fuzzy msgid "Maximum FPS when the window is not focused, or when the game is paused." -msgstr "FPS massimi quando il gioco è in pausa." +msgstr "" +"FPS massimi quando la finestra è in secondo piano o quando il gioco è in " +"pausa." #: src/settings_translation_file.cpp msgid "Maximum forceloaded blocks" @@ -5433,6 +5428,9 @@ msgid "" "be queued.\n" "This should be lower than curl_parallel_limit." msgstr "" +"Numero massimo di download simultanei. I download che superano questo limite " +"verranno messi in coda.\n" +"Dovrebbe essere inferiore a curl_parallel_limit." #: src/settings_translation_file.cpp msgid "Maximum number of forceloaded mapblocks." @@ -5859,14 +5857,12 @@ msgid "Pitch move mode" msgstr "Modalità inclinazione movimento" #: src/settings_translation_file.cpp -#, fuzzy msgid "Place key" -msgstr "Tasto volo" +msgstr "Tasto piazza" #: src/settings_translation_file.cpp -#, fuzzy msgid "Place repetition interval" -msgstr "Intervallo di ripetizione del click destro" +msgstr "Intervallo di ripetizione per il piazzamento" #: src/settings_translation_file.cpp msgid "" @@ -6361,13 +6357,17 @@ msgid "Show entity selection boxes" msgstr "Mostrare le aree di selezione delle entità " #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Show entity selection boxes\n" "A restart is required after changing this." msgstr "" -"Imposta la Lingua. Lascia vuoto per usare la Lingua di sistema.\n" -"Dopo avere modificato questa impostazione è necessario il riavvio." +"Mostra la casella di selezione delle entità \n" +"È necessario riavviare dopo aver cambiato questo." + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Show nametag backgrounds by default" +msgstr "Carattere grassetto per impostazione predefinita" #: src/settings_translation_file.cpp msgid "Shutdown message" @@ -6653,9 +6653,8 @@ msgid "The URL for the content repository" msgstr "L'URL per il deposito dei contenuti" #: src/settings_translation_file.cpp -#, fuzzy msgid "The deadzone of the joystick" -msgstr "L'identificatore del joystick da usare" +msgstr "La deadzone del joystick" #: src/settings_translation_file.cpp msgid "" @@ -6730,7 +6729,6 @@ msgstr "" "active_object_send_range_blocks." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "The rendering back-end for Irrlicht.\n" "A restart is required after changing this.\n" @@ -6739,12 +6737,12 @@ msgid "" "On other platforms, OpenGL is recommended.\n" "Shaders are supported by OpenGL (desktop only) and OGLES2 (experimental)" msgstr "" -"Il motore di resa per Irrlicht.\n" +"Il back-end di rendering per Irrlicht.\n" "Dopo averlo cambiato è necessario un riavvio.\n" -"Nota: su Android, si resti con OGLES1 se incerti! Altrimenti l'app potrebbe " +"Nota: su Android, restare con OGLES1 se incerti! Altrimenti l'app potrebbe " "non partire.\n" -"Su altre piattaforme, si raccomanda OpenGL, ed è attualmente l'unico driver\n" -"con supporto degli shader." +"Su altre piattaforme, si raccomanda OpenGL\n" +"Le shader sono supportate da OpenGL (solo su desktop) e OGLES2 (sperimentale)" #: src/settings_translation_file.cpp msgid "" @@ -6786,6 +6784,8 @@ msgid "" "The time budget allowed for ABMs to execute on each step\n" "(as a fraction of the ABM Interval)" msgstr "" +"Il budget di tempo ha consentito agli ABM per eseguire ogni passaggio\n" +"(come frazione dell'intervallo ABM)" #: src/settings_translation_file.cpp msgid "" @@ -6796,13 +6796,13 @@ msgstr "" "si tiene premuta una combinazione di pulsanti del joystick." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "The time in seconds it takes between repeated node placements when holding\n" "the place button." msgstr "" -"Il tempo in secondi richiesto tra click destri ripetuti quando\n" -"si tiene premuto il tasto destro del mouse." +"Il tempo in secondi che intercorre tra il piazzamento dei nodi quando si " +"tiene\n" +"premuto il pulsante piazza." #: src/settings_translation_file.cpp msgid "The type of joystick" @@ -6977,6 +6977,15 @@ msgid "" "If set to 0, MSAA is disabled.\n" "A restart is required after changing this option." msgstr "" +"Utilizzare l'antialiasing multi-campione (MSAA) per smussare i bordi del " +"blocco.\n" +"Questo algoritmo uniforma la visualizzazione 3D mantenendo l'immagine " +"nitida,\n" +"ma non influenza l'interno delle texture\n" +"(che è particolarmente evidente con trame trasparenti).\n" +"Gli spazi visibili appaiono tra i nodi quando gli shader sono disabilitati.\n" +"Se impostato a 0, MSAA è disabilitato.\n" +"È necessario riavviare dopo aver modificato questa opzione." #: src/settings_translation_file.cpp msgid "Use trilinear filtering when scaling textures." @@ -7221,6 +7230,12 @@ msgstr "" "Se disabilitati, si utilizzano invece i caratteri bitmap e XML vettoriali." #: src/settings_translation_file.cpp +msgid "" +"Whether nametag backgrounds should be shown by default.\n" +"Mods may still set a background." +msgstr "" + +#: src/settings_translation_file.cpp msgid "Whether node texture animations should be desynchronized per mapblock." msgstr "" "Se le animazioni delle texture dei nodi dovrebbero essere asincrone per " @@ -7386,6 +7401,13 @@ msgid "" "9 - best compression, slowest\n" "(levels 1-3 use Zlib's \"fast\" method, 4-9 use the normal method)" msgstr "" +"Livello di compressione ZLib da utilizzare quando si salvano i blocchi mappa " +"su disco.\n" +"-1 - Livello di compressione predefinito di Zlib\n" +"0 - nessuna compressione, più veloce\n" +"9 - migliore compressione, più lenta\n" +"(i livelli 1-3 usano il metodo \"veloce\" di Zlib, 4-9 usano il metodo " +"normale)" #: src/settings_translation_file.cpp msgid "" @@ -7395,6 +7417,13 @@ msgid "" "9 - best compression, slowest\n" "(levels 1-3 use Zlib's \"fast\" method, 4-9 use the normal method)" msgstr "" +"Livello di compressione ZLib da utilizzare quando si inviano i blocchi mappa " +"al client.\n" +"-1 - Livello di compressione predefinito di Zlib\n" +"0 - nessuna compressione, più veloce\n" +"9 - migliore compressione, più lenta\n" +"(i livelli 1-3 usano il metodo \"veloce\" di Zlib, 4-9 usano il metodo " +"normale)" #: src/settings_translation_file.cpp msgid "cURL file download timeout" diff --git a/po/ja/minetest.po b/po/ja/minetest.po index ac2e2155f..c3a5e3522 100644 --- a/po/ja/minetest.po +++ b/po/ja/minetest.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: Japanese (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-01-30 21:13+0100\n" -"PO-Revision-Date: 2020-06-15 22:41+0000\n" +"POT-Creation-Date: 2021-02-23 19:03+0100\n" +"PO-Revision-Date: 2021-02-13 08:50+0000\n" "Last-Translator: BreadW <toshiharu.uno@gmail.com>\n" "Language-Team: Japanese <https://hosted.weblate.org/projects/minetest/" "minetest/ja/>\n" @@ -12,7 +12,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 4.1\n" +"X-Generator: Weblate 4.5-dev\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" @@ -80,7 +80,7 @@ msgstr "ã‚ャンセル" #: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_contentstore.lua #: builtin/mainmenu/tab_content.lua msgid "Dependencies:" -msgstr "ä¾å˜é–¢ä¿‚:" +msgstr "ä¾å˜Mod:" #: builtin/mainmenu/dlg_config_world.lua msgid "Disable all" @@ -116,7 +116,7 @@ msgstr "Mod:" #: builtin/mainmenu/dlg_config_world.lua msgid "No (optional) dependencies" -msgstr "(ä»»æ„)ä¾å˜é–¢ä¿‚ãªã—" +msgstr "(任æ„)ä¾å˜Modãªã—" #: builtin/mainmenu/dlg_config_world.lua msgid "No game description provided." @@ -124,7 +124,7 @@ msgstr "ゲームã®èª¬æ˜ŽãŒã‚りã¾ã›ã‚“。" #: builtin/mainmenu/dlg_config_world.lua msgid "No hard dependencies" -msgstr "ä¾å˜é–¢ä¿‚ãªã—" +msgstr "å¿…é ˆä¾å˜Modãªã—" #: builtin/mainmenu/dlg_config_world.lua msgid "No modpack description provided." @@ -132,11 +132,11 @@ msgstr "Modパックã®èª¬æ˜ŽãŒã‚りã¾ã›ã‚“。" #: builtin/mainmenu/dlg_config_world.lua msgid "No optional dependencies" -msgstr "ä»»æ„ä¾å˜é–¢ä¿‚ãªã—" +msgstr "ä»»æ„ä¾å˜Modãªã—" #: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_content.lua msgid "Optional dependencies:" -msgstr "ä»»æ„:" +msgstr "ä»»æ„ä¾å˜Mod:" #: builtin/mainmenu/dlg_config_world.lua #: builtin/mainmenu/dlg_settings_advanced.lua src/gui/guiKeyChangeMenu.cpp @@ -153,52 +153,51 @@ msgstr "有効" #: builtin/mainmenu/dlg_contentstore.lua msgid "\"$1\" already exists. Would you like to overwrite it?" -msgstr "" +msgstr "「$1ã€ã¯ã™ã§ã«å˜åœ¨ã—ã¾ã™ã€‚上書ãã—ã¾ã™ã‹ï¼Ÿ" #: builtin/mainmenu/dlg_contentstore.lua msgid "$1 and $2 dependencies will be installed." -msgstr "" +msgstr "$1 ã¨ä¾å˜Mod $2 ãŒã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•れã¾ã™ã€‚" #: builtin/mainmenu/dlg_contentstore.lua msgid "$1 by $2" -msgstr "" +msgstr "$1 by $2" #: builtin/mainmenu/dlg_contentstore.lua msgid "" "$1 downloading,\n" "$2 queued" msgstr "" +"$1 ダウンãƒãƒ¼ãƒ‰ä¸ã€\n" +"$2 ダウンãƒãƒ¼ãƒ‰å¾…機ä¸" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "$1 downloading..." -msgstr "ダウンãƒãƒ¼ãƒ‰ä¸..." +msgstr "$1 ダウンãƒãƒ¼ãƒ‰ä¸..." #: builtin/mainmenu/dlg_contentstore.lua msgid "$1 required dependencies could not be found." -msgstr "" +msgstr "$1 ã¤ã®å¿…è¦ãªä¾å˜ModãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸã€‚" #: builtin/mainmenu/dlg_contentstore.lua msgid "$1 will be installed, and $2 dependencies will be skipped." -msgstr "" +msgstr "$1 ãŒã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•れã€ä¾å˜Mod $2 ã¯ã‚¹ã‚ップã•れã¾ã™ã€‚" #: builtin/mainmenu/dlg_contentstore.lua msgid "All packages" msgstr "ã™ã¹ã¦" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "Already installed" -msgstr "ã‚ーãŒé‡è¤‡ã—ã¦ã„ã¾ã™" +msgstr "インストール済ã¿" #: builtin/mainmenu/dlg_contentstore.lua msgid "Back to Main Menu" -msgstr "ãƒ¡ã‚¤ãƒ³ãƒ¡ãƒ‹ãƒ¥ãƒ¼ã¸æˆ»ã‚‹" +msgstr "メインメニューã¸" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "Base Game:" -msgstr "ゲームホスト" +msgstr "基盤ゲーム:" #: builtin/mainmenu/dlg_contentstore.lua msgid "ContentDB is not available when Minetest was compiled without cURL" @@ -222,14 +221,12 @@ msgid "Install" msgstr "入手" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "Install $1" -msgstr "入手" +msgstr "$1 ã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "Install missing dependencies" -msgstr "ä»»æ„:" +msgstr "ä¸è¶³ä¾å˜Modインストール" #: builtin/mainmenu/dlg_contentstore.lua #: builtin/mainmenu/dlg_settings_advanced.lua @@ -245,26 +242,24 @@ msgid "No results" msgstr "何も見ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸ" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "No updates" -msgstr "æ›´æ–°" +msgstr "æ›´æ–°ãªã—" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "Not found" -msgstr "消音" +msgstr "見ã¤ã‹ã‚Šã¾ã›ã‚“" #: builtin/mainmenu/dlg_contentstore.lua msgid "Overwrite" -msgstr "" +msgstr "上書ã" #: builtin/mainmenu/dlg_contentstore.lua msgid "Please check that the base game is correct." -msgstr "" +msgstr "基盤ã¨ãªã‚‹ã‚²ãƒ¼ãƒ ãŒæ£ã—ã„ã‹ã©ã†ã‹ç¢ºèªã—ã¦ãã ã•ã„。" #: builtin/mainmenu/dlg_contentstore.lua msgid "Queued" -msgstr "" +msgstr "待機ä¸" #: builtin/mainmenu/dlg_contentstore.lua msgid "Texture packs" @@ -280,15 +275,15 @@ msgstr "æ›´æ–°" #: builtin/mainmenu/dlg_contentstore.lua msgid "Update All [$1]" -msgstr "" +msgstr "ã™ã¹ã¦æ›´æ–° [$1]" #: builtin/mainmenu/dlg_contentstore.lua msgid "View more information in a web browser" -msgstr "" +msgstr "Webブラウザã§è©³ç´°ã‚’見る" #: builtin/mainmenu/dlg_create_world.lua msgid "A world named \"$1\" already exists" -msgstr "ワールドå「$1ã€ã¯æ—¢ã«å˜åœ¨ã—ã¾ã™" +msgstr "ワールドå「$1ã€ã¯ã™ã§ã«å˜åœ¨ã—ã¾ã™" #: builtin/mainmenu/dlg_create_world.lua msgid "Additional terrain" @@ -704,6 +699,11 @@ msgid "Loading..." msgstr "èªã¿è¾¼ã¿ä¸..." #: builtin/mainmenu/serverlistmgr.lua +#, fuzzy +msgid "Public server list is disabled" +msgstr "クライアントå´ã®ã‚¹ã‚¯ãƒªãƒ—トã¯ç„¡åй" + +#: builtin/mainmenu/serverlistmgr.lua msgid "Try reenabling public serverlist and check your internet connection." msgstr "インターãƒãƒƒãƒˆæŽ¥ç¶šã‚’確èªã—ã€å…¬é–‹ã‚µãƒ¼ãƒä¸€è¦§ã‚’冿œ‰åŠ¹åŒ–ã—ã¦ãã ã•ã„。" @@ -729,7 +729,7 @@ msgstr "インストール済ã¿ã®ãƒ‘ッケージ:" #: builtin/mainmenu/tab_content.lua msgid "No dependencies." -msgstr "ä¾å˜ãªã—。" +msgstr "ä¾å˜Modãªã—。" #: builtin/mainmenu/tab_content.lua msgid "No package description available" @@ -760,15 +760,16 @@ msgid "Credits" msgstr "クレジット" #: builtin/mainmenu/tab_credits.lua -#, fuzzy msgid "Open User Data Directory" -msgstr "ディレクトリã®é¸æŠž" +msgstr "ディレクトリを開ã" #: builtin/mainmenu/tab_credits.lua msgid "" "Opens the directory that contains user-provided worlds, games, mods,\n" "and texture packs in a file manager / explorer." msgstr "" +"ファイルマãƒãƒ¼ã‚¸ãƒ£ãƒ¼/エクスプãƒãƒ¼ãƒ©ãƒ¼ã§ã€ãƒ¯ãƒ¼ãƒ«ãƒ‰ã€ã‚²ãƒ¼ãƒ ã€Modã€\n" +"ãŠã‚ˆã³ãƒ†ã‚¯ã‚¹ãƒãƒ£ãƒ‘ックをå«ã‚€ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚’é–‹ãã¾ã™ã€‚" #: builtin/mainmenu/tab_credits.lua msgid "Previous Contributors" @@ -788,7 +789,7 @@ msgstr "ãƒã‚¤ãƒ³ãƒ‰ã‚¢ãƒ‰ãƒ¬ã‚¹" #: builtin/mainmenu/tab_local.lua msgid "Creative Mode" -msgstr "クリエイティブモード" +msgstr "クリエイティブ" #: builtin/mainmenu/tab_local.lua msgid "Enable Damage" @@ -808,7 +809,7 @@ msgstr "コンテンツDBã‹ã‚‰ã‚²ãƒ¼ãƒ をインストール" #: builtin/mainmenu/tab_local.lua msgid "Name" -msgstr "" +msgstr "åå‰" #: builtin/mainmenu/tab_local.lua msgid "New" @@ -819,9 +820,8 @@ msgid "No world created or selected!" msgstr "ワールドãŒä½œæˆã¾ãŸã¯é¸æŠžã•れã¦ã„ã¾ã›ã‚“ï¼" #: builtin/mainmenu/tab_local.lua -#, fuzzy msgid "Password" -msgstr "æ–°ã—ã„パスワード" +msgstr "パスワード" #: builtin/mainmenu/tab_local.lua msgid "Play Game" @@ -832,9 +832,8 @@ msgid "Port" msgstr "ãƒãƒ¼ãƒˆ" #: builtin/mainmenu/tab_local.lua -#, fuzzy msgid "Select Mods" -msgstr "ãƒ¯ãƒ¼ãƒ«ãƒ‰ã‚’é¸æŠž:" +msgstr "Modã‚’é¸æŠž" #: builtin/mainmenu/tab_local.lua msgid "Select World:" @@ -915,7 +914,7 @@ msgstr "アンãƒã‚¨ã‚¤ãƒªã‚¢ã‚¹:" #: builtin/mainmenu/tab_settings.lua msgid "Autosave Screen Size" -msgstr "ç”»é¢ã®å¤§ãã•を自動ä¿å˜" +msgstr "大ãã•を自動ä¿å˜" #: builtin/mainmenu/tab_settings.lua msgid "Bilinear Filter" @@ -986,9 +985,8 @@ msgid "Shaders" msgstr "シェーダー" #: builtin/mainmenu/tab_settings.lua -#, fuzzy msgid "Shaders (experimental)" -msgstr "æµ®éŠå¤§é™¸ï¼ˆå®Ÿé¨“的)" +msgstr "シェーダー(実験的)" #: builtin/mainmenu/tab_settings.lua msgid "Shaders (unavailable)" @@ -1188,7 +1186,7 @@ msgid "Continue" msgstr "å†é–‹" #: src/client/game.cpp -#, fuzzy, c-format +#, c-format msgid "" "Controls:\n" "- %s: move forwards\n" @@ -1205,19 +1203,19 @@ msgid "" "- Mouse wheel: select item\n" "- %s: chat\n" msgstr "" -"æ“作:\n" +"æ“作方法:\n" "- %s: å‰é€²\n" "- %s: 後退\n" "- %s: 左移動\n" "- %s: å³ç§»å‹•\n" "- %s: ジャンプ/登る\n" +"- %s: 掘削/パンãƒ\n" +"- %s: è¨ç½®/使用\n" "- %s: スニーク/é™ã‚Šã‚‹\n" "- %s: アイテムをè½ã¨ã™\n" "- %s: インベントリ\n" "- マウス: 見回ã™\n" -"- 左クリック: 掘削/パンãƒ\n" -"- å³ã‚¯ãƒªãƒƒã‚¯: è¨ç½®/使用\n" -"- ホイール: ã‚¢ã‚¤ãƒ†ãƒ é¸æŠž\n" +"- マウスホイール: ã‚¢ã‚¤ãƒ†ãƒ é¸æŠž\n" "- %s: ãƒãƒ£ãƒƒãƒˆ\n" #: src/client/game.cpp @@ -1745,19 +1743,18 @@ msgid "Minimap hidden" msgstr "ミニマップ éžè¡¨ç¤º" #: src/client/minimap.cpp -#, fuzzy, c-format +#, c-format msgid "Minimap in radar mode, Zoom x%d" -msgstr "ミニマップ レーダーモードã€ã‚ºãƒ¼ãƒ x1" +msgstr "ミニマップ レーダーモードã€ã‚ºãƒ¼ãƒ x%d" #: src/client/minimap.cpp -#, fuzzy, c-format +#, c-format msgid "Minimap in surface mode, Zoom x%d" -msgstr "ミニマップ 表é¢ãƒ¢ãƒ¼ãƒ‰ã€ã‚ºãƒ¼ãƒ x1" +msgstr "ミニマップ 表é¢ãƒ¢ãƒ¼ãƒ‰ã€ã‚ºãƒ¼ãƒ x%d" #: src/client/minimap.cpp -#, fuzzy msgid "Minimap in texture mode" -msgstr "最å°ãƒ†ã‚¯ã‚¹ãƒãƒ£ã‚µã‚¤ã‚º" +msgstr "ミニマップ テクスãƒãƒ£ãƒ¢ãƒ¼ãƒ‰" #: src/gui/guiConfirmRegistration.cpp src/gui/guiPasswordChange.cpp msgid "Passwords do not match!" @@ -1829,7 +1826,7 @@ msgstr "音é‡ã‚’下ã’ã‚‹" #: src/gui/guiKeyChangeMenu.cpp msgid "Double tap \"jump\" to toggle fly" -msgstr "\"ジャンプ\"二度押ã—ã§é£›è¡Œãƒ¢ãƒ¼ãƒ‰åˆ‡æ›¿" +msgstr "\"ジャンプ\"2回ã§é£›è¡Œãƒ¢ãƒ¼ãƒ‰åˆ‡æ›¿" #: src/gui/guiKeyChangeMenu.cpp msgid "Drop" @@ -1862,7 +1859,7 @@ msgstr "ã‚ーãŒé‡è¤‡ã—ã¦ã„ã¾ã™" #: src/gui/guiKeyChangeMenu.cpp msgid "Keybindings. (If this menu screws up, remove stuff from minetest.conf)" msgstr "" -"ã‚ーè¨å®šã§ã™ã€‚ (ã“ã®ãƒ¡ãƒ‹ãƒ¥ãƒ¼ã§å¤±æ•—ã™ã‚‹å ´åˆã¯ã€minetest.confã‹ã‚‰è©²å½“ã™ã‚‹è¨å®šã‚’" +"ã‚ーè¨å®šã§ã™ã€‚ (ã“ã®ãƒ¡ãƒ‹ãƒ¥ãƒ¼ã§å¤±æ•—ã™ã‚‹å ´åˆã¯ minetest.conf ã‹ã‚‰è©²å½“ã™ã‚‹è¨å®šã‚’" "削除ã—ã¦ãã ã•ã„)" #: src/gui/guiKeyChangeMenu.cpp @@ -2155,7 +2152,7 @@ msgstr "ABMã®é–“éš”" #: src/settings_translation_file.cpp msgid "ABM time budget" -msgstr "" +msgstr "ABMã®æ™‚間予算" #: src/settings_translation_file.cpp msgid "Absolute limit of queued blocks to emerge" @@ -2656,7 +2653,7 @@ msgstr "コンテンツDBフラグã®ãƒ–ラックリスト" #: src/settings_translation_file.cpp msgid "ContentDB Max Concurrent Downloads" -msgstr "" +msgstr "コンテンツDBã®æœ€å¤§åŒæ™‚ダウンãƒãƒ¼ãƒ‰æ•°" #: src/settings_translation_file.cpp msgid "ContentDB URL" @@ -2720,24 +2717,27 @@ msgstr "クリエイティブ" #: src/settings_translation_file.cpp msgid "Crosshair alpha" -msgstr "照準線ã®é€éŽåº¦" +msgstr "åå—カーソルã®é€éŽåº¦" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Crosshair alpha (opaqueness, between 0 and 255).\n" "Also controls the object crosshair color" -msgstr "照準線ã®é€éŽ (ä¸é€æ˜Žã€0~255ã®é–“)。" +msgstr "" +"åå—カーソルã®é€éŽåº¦ï¼ˆä¸é€æ˜Žã€0~255ã®é–“)。\n" +"オブジェクトåå—カーソルã®è‰²ã‚‚制御" #: src/settings_translation_file.cpp msgid "Crosshair color" -msgstr "照準線ã®è‰²" +msgstr "åå—カーソルã®è‰²" #: src/settings_translation_file.cpp msgid "" "Crosshair color (R,G,B).\n" "Also controls the object crosshair color" msgstr "" +"åå—カーソルã®è‰²ï¼ˆR,G,B)。\n" +"オブジェクトåå—カーソルã®è‰²ã‚‚制御" #: src/settings_translation_file.cpp msgid "DPI" @@ -2881,7 +2881,7 @@ msgstr "ツールãƒãƒƒãƒ—を表示ã™ã‚‹ã¾ã§ã®é…å»¶ã€ãƒŸãƒªç§’ã§å®šã‚ã¾ #: src/settings_translation_file.cpp msgid "Deprecated Lua API handling" -msgstr "廃æ¢äºˆå®šã®Lua APIã®å‡¦ç†" +msgstr "éžæŽ¨å¥¨ã® Lua API ã®å‡¦ç†" #: src/settings_translation_file.cpp msgid "Depth below which you'll find giant caverns." @@ -2914,9 +2914,8 @@ msgid "Desynchronize block animation" msgstr "ブãƒãƒƒã‚¯ã®ã‚¢ãƒ‹ãƒ¡ãƒ¼ã‚·ãƒ§ãƒ³ã®éžåŒæœŸåŒ–" #: src/settings_translation_file.cpp -#, fuzzy msgid "Dig key" -msgstr "å³ã‚ー" +msgstr "掘削ã‚ー" #: src/settings_translation_file.cpp msgid "Digging particles" @@ -2983,7 +2982,8 @@ msgid "Enable console window" msgstr "コンソールウィンドウを有効化" #: src/settings_translation_file.cpp -msgid "Enable creative mode for new created maps." +#, fuzzy +msgid "Enable creative mode for all players" msgstr "æ–°ã—ã作æˆã•れãŸãƒžãƒƒãƒ—ã§ã‚¯ãƒªã‚¨ã‚¤ãƒ†ã‚£ãƒ–モードを有効ã«ã—ã¾ã™ã€‚" #: src/settings_translation_file.cpp @@ -3138,9 +3138,8 @@ msgstr "" "作æˆã—ã€å¯†ãªæµ®éŠå¤§é™¸å±¤ã«é©ã—ã¦ã„ã¾ã™ã€‚" #: src/settings_translation_file.cpp -#, fuzzy msgid "FPS when unfocused or paused" -msgstr "ãƒãƒ¼ã‚ºãƒ¡ãƒ‹ãƒ¥ãƒ¼ã§ã®æœ€å¤§FPS。" +msgstr "éžã‚¢ã‚¯ãƒ†ã‚£ãƒ–ã¾ãŸã¯ãƒãƒ¼ã‚ºãƒ¡ãƒ‹ãƒ¥ãƒ¼è¡¨ç¤ºä¸ã®FPS" #: src/settings_translation_file.cpp msgid "FSAA" @@ -3524,18 +3523,16 @@ msgid "HUD toggle key" msgstr "HUD表示切り替ãˆã‚ー" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Handling for deprecated Lua API calls:\n" "- none: Do not log deprecated calls\n" "- log: mimic and log backtrace of deprecated call (default).\n" "- error: abort on usage of deprecated call (suggested for mod developers)." msgstr "" -"廃æ¢äºˆå®šã®Lua API呼ã³å‡ºã—ã®å‡¦ç†:\n" -"- legacy: å¤ã„振る舞ã„を模倣ã™ã‚‹(試ã¿ã‚‹) (ãƒªãƒªãƒ¼ã‚¹ç‰ˆã®æ—¢å®šå€¤)。\n" -"- log: 廃æ¢äºˆå®šã®å‘¼ã³å‡ºã—を模倣ã—ã¦ãƒãƒƒã‚¯ãƒˆãƒ¬ãƒ¼ã‚¹ã‚’記録 (デãƒãƒƒã‚°ç‰ˆã®æ—¢å®š" -"値)。\n" -"- error: 廃æ¢äºˆå®šã®å‘¼ã³å‡ºã—ã®ä½¿ç”¨ã‚’䏿¢ã™ã‚‹ (Mod開発者å‘ã‘ã«æŽ¨å¥¨)。" +"éžæŽ¨å¥¨ã® Lua API 呼ã³å‡ºã—ã®å‡¦ç†ï¼š\n" +"- none: éžæŽ¨å¥¨ã®å‘¼ã³å‡ºã—を記録ã—ãªã„\n" +"- log: éžæŽ¨å¥¨ã®å‘¼ã³å‡ºã—ã®ãƒãƒƒã‚¯ãƒˆãƒ¬ãƒ¼ã‚¹ã‚’模倣ã—ã¦è¨˜éŒ²ã—ã¾ã™ï¼ˆæ—¢å®šå€¤ï¼‰ã€‚\n" +"- error: éžæŽ¨å¥¨ã®å‘¼ã³å‡ºã—ã®ä½¿ç”¨ã‚’䏿¢ã—ã¾ã™ï¼ˆModé–‹ç™ºè€…ã«æŽ¨å¥¨ï¼‰ã€‚" #: src/settings_translation_file.cpp msgid "" @@ -4057,9 +4054,8 @@ msgid "Joystick button repetition interval" msgstr "ジョイスティックボタンã®ç¹°ã‚Šè¿”ã—é–“éš”" #: src/settings_translation_file.cpp -#, fuzzy msgid "Joystick deadzone" -msgstr "ジョイスティックã®ç¨®é¡ž" +msgstr "ジョイスティックã®ãƒ‡ãƒƒãƒ‰ã‚¾ãƒ¼ãƒ³" #: src/settings_translation_file.cpp msgid "Joystick frustum sensitivity" @@ -4164,13 +4160,12 @@ msgstr "" "html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Key for digging.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"ジャンプã™ã‚‹ã‚ーã§ã™ã€‚\n" +"掘削ã™ã‚‹ã‚ーã§ã™ã€‚\n" "å‚ç…§ http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" @@ -4317,13 +4312,12 @@ msgstr "" "html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Key for placing.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"ジャンプã™ã‚‹ã‚ーã§ã™ã€‚\n" +"è¨ç½®ã™ã‚‹ã‚ーã§ã™ã€‚\n" "å‚ç…§ http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" @@ -5085,11 +5079,11 @@ msgstr "ã™ã¹ã¦ã®æ¶²ä½“ã‚’ä¸é€æ˜Žã«ã™ã‚‹" #: src/settings_translation_file.cpp msgid "Map Compression Level for Disk Storage" -msgstr "" +msgstr "ディスクストレージã®ãƒžãƒƒãƒ—圧縮レベル" #: src/settings_translation_file.cpp msgid "Map Compression Level for Network Transfer" -msgstr "" +msgstr "ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯è»¢é€ã®ãŸã‚ã®ãƒžãƒƒãƒ—圧縮レベル" #: src/settings_translation_file.cpp msgid "Map directory" @@ -5274,9 +5268,10 @@ msgid "Maximum FPS" msgstr "最大FPS" #: src/settings_translation_file.cpp -#, fuzzy msgid "Maximum FPS when the window is not focused, or when the game is paused." -msgstr "ãƒãƒ¼ã‚ºãƒ¡ãƒ‹ãƒ¥ãƒ¼ã§ã®æœ€å¤§FPS。" +msgstr "" +"ウィンドウã«ãƒ•ォーカスãŒåˆã£ã¦ã„ãªã„ã¨ãã€ã¾ãŸã¯ãƒãƒ¼ã‚ºãƒ¡ãƒ‹ãƒ¥ãƒ¼è¡¨ç¤ºä¸ã®æœ€å¤§" +"FPS。" #: src/settings_translation_file.cpp msgid "Maximum forceloaded blocks" @@ -5336,6 +5331,9 @@ msgid "" "be queued.\n" "This should be lower than curl_parallel_limit." msgstr "" +"åŒæ™‚ダウンãƒãƒ¼ãƒ‰ã®æœ€å¤§æ•°ã§ã™ã€‚ã“ã®åˆ¶é™ã‚’è¶…ãˆã‚‹ãƒ€ã‚¦ãƒ³ãƒãƒ¼ãƒ‰ã¯ã‚ューã«å…¥ã‚Œã‚‰ã‚Œ" +"ã¾ã™ã€‚\n" +"ã“れ㯠curl_parallel_limit よりも低ã„値ã§ãªã‘れã°ãªã‚Šã¾ã›ã‚“。" #: src/settings_translation_file.cpp msgid "Maximum number of forceloaded mapblocks." @@ -5744,14 +5742,12 @@ msgid "Pitch move mode" msgstr "ピッãƒç§»å‹•モード" #: src/settings_translation_file.cpp -#, fuzzy msgid "Place key" -msgstr "飛行ã‚ー" +msgstr "è¨ç½®ã‚ー" #: src/settings_translation_file.cpp -#, fuzzy msgid "Place repetition interval" -msgstr "å³ã‚¯ãƒªãƒƒã‚¯ç¹°ã‚Šè¿”ã—ã®é–“éš”" +msgstr "è¨ç½®ã®ç¹°ã‚Šè¿”ã—é–“éš”" #: src/settings_translation_file.cpp msgid "" @@ -6227,18 +6223,22 @@ msgstr "デãƒãƒƒã‚°æƒ…å ±ã‚’è¡¨ç¤º" #: src/settings_translation_file.cpp msgid "Show entity selection boxes" -msgstr "エンティティã®é¸æŠžãƒœãƒƒã‚¯ã‚¹ã‚’表示" +msgstr "エンティティã®é¸æŠžãƒœãƒƒã‚¯ã‚¹è¡¨ç¤º" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Show entity selection boxes\n" "A restart is required after changing this." msgstr "" -"言語をè¨å®šã—ã¦ãã ã•ã„。システム言語を使用ã™ã‚‹ã«ã¯ç©ºã®ã¾ã¾ã«ã—ã¾ã™ã€‚\n" +"エンティティã®é¸æŠžãƒœãƒƒã‚¯ã‚¹ã‚’表示\n" "変更後ã¯å†èµ·å‹•ãŒå¿…è¦ã§ã™ã€‚" #: src/settings_translation_file.cpp +#, fuzzy +msgid "Show nametag backgrounds by default" +msgstr "既定ã§å¤ªå—ã®ãƒ•ォント" + +#: src/settings_translation_file.cpp msgid "Shutdown message" msgstr "サーãƒçµ‚了時ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸" @@ -6509,9 +6509,8 @@ msgid "The URL for the content repository" msgstr "コンテンツリãƒã‚¸ãƒˆãƒªã®URL" #: src/settings_translation_file.cpp -#, fuzzy msgid "The deadzone of the joystick" -msgstr "使用ã™ã‚‹ã‚¸ãƒ§ã‚¤ã‚¹ãƒ†ã‚£ãƒƒã‚¯ã®è˜åˆ¥å" +msgstr "ジョイスティックã®ãƒ‡ãƒƒãƒ‰ã‚¾ãƒ¼ãƒ³" #: src/settings_translation_file.cpp msgid "" @@ -6582,7 +6581,6 @@ msgstr "" "ã“れ㯠active_object_send_range_blocks ã¨ä¸€ç·’ã«è¨å®šã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "The rendering back-end for Irrlicht.\n" "A restart is required after changing this.\n" @@ -6593,10 +6591,10 @@ msgid "" msgstr "" "Irrlichtã®ãƒ¬ãƒ³ãƒ€ãƒªãƒ³ã‚°ãƒãƒƒã‚¯ã‚¨ãƒ³ãƒ‰ã€‚\n" "変更後ã¯å†èµ·å‹•ãŒå¿…è¦ã§ã™ã€‚\n" -"メモ: Androidã§ã¯ã€ä¸æ˜Žãªå ´åˆã¯ OGLES1 を使用ã—ã¦ãã ã•ã„ï¼ \n" -"ãれ以外ã®å ´åˆã‚¢ãƒ—リã¯èµ·å‹•ã«å¤±æ•—ã™ã‚‹ã“ã¨ãŒã‚りã¾ã™ã€‚\n" -"ä»–ã®ãƒ—ラットフォームã§ã¯ã€OpenGL ãŒæŽ¨å¥¨ã•れã¦ãŠã‚Šã€ç¾åœ¨ãれãŒ\n" -"シェーダーをサãƒãƒ¼ãƒˆã™ã‚‹å”¯ä¸€ã®ãƒ‰ãƒ©ã‚¤ãƒã§ã™ã€‚" +"注æ„:Android ã®å ´åˆã€ã‚ˆãã‚ã‹ã‚‰ãªã„å ´åˆã¯ OGLES1 を使用ã—ã¦ãã ã•ã„ï¼\n" +"ãã†ã—ãªã„ã¨ã‚¢ãƒ—リã®èµ·å‹•ã«å¤±æ•—ã™ã‚‹ã“ã¨ãŒã‚りã¾ã™ã€‚\n" +"ãã®ä»–ã®ãƒ—ラットフォームã§ã¯ã€OpenGL ãŒæŽ¨å¥¨ã•れã¦ã„ã¾ã™ã€‚\n" +"シェーダー㯠OpenGL(デスクトップã®ã¿ï¼‰ã¨ OGLES2(実験的)ã§ã‚µãƒãƒ¼ãƒˆ" #: src/settings_translation_file.cpp msgid "" @@ -6629,6 +6627,8 @@ msgid "" "The time budget allowed for ABMs to execute on each step\n" "(as a fraction of the ABM Interval)" msgstr "" +"ABM ãŒå„ステップã§å®Ÿè¡Œã§ãる時間予算\n" +"(ABMé–“éš”ã®ä¸€éƒ¨ã¨ã—ã¦ï¼‰" #: src/settings_translation_file.cpp msgid "" @@ -6639,11 +6639,10 @@ msgstr "" "繰り返ã•れるイベントã®ç§’å˜ä½ã®é–“隔。" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "The time in seconds it takes between repeated node placements when holding\n" "the place button." -msgstr "マウスã®å³ãƒœã‚¿ãƒ³ã‚’押ã—ãŸã¾ã¾å³ã‚¯ãƒªãƒƒã‚¯ã‚’繰り返ã™ç§’å˜ä½ã®é–“隔。" +msgstr "è¨ç½®ãƒœã‚¿ãƒ³ã‚’押ã—ãŸã¾ã¾ãƒŽãƒ¼ãƒ‰ã®è¨ç½®ã‚’繰り返ã™ç§’å˜ä½ã®é–“隔。" #: src/settings_translation_file.cpp msgid "The type of joystick" @@ -6807,6 +6806,14 @@ msgid "" "If set to 0, MSAA is disabled.\n" "A restart is required after changing this option." msgstr "" +"マルãƒã‚µãƒ³ãƒ—ルアンãƒã‚¨ã‚¤ãƒªã‚¢ã‚¹ï¼ˆMSAA)を使用ã—ã¦ã€ãƒ–ãƒãƒƒã‚¯ã‚¨ãƒƒã‚¸ã‚’滑らã‹ã«ã—" +"ã¾ã™ã€‚\n" +"ã“ã®ã‚¢ãƒ«ã‚´ãƒªã‚ºãƒ ã¯ã€ç”»åƒã‚’鮮明ã«ä¿ã¡ãªãŒã‚‰3Dビューãƒãƒ¼ãƒˆã‚’滑らã‹ã«ã—ã¾ã™ã€‚\n" +"ã—ã‹ã—ã€ãれã¯ãƒ†ã‚¯ã‚¹ãƒãƒ£ã®å†…部ã«ã¯å½±éŸ¿ã—ã¾ã›ã‚“\n" +"(ã“れã¯ã€é€æ˜Žãªãƒ†ã‚¯ã‚¹ãƒãƒ£ã§ç‰¹ã«ç›®ç«‹ã¡ã¾ã™ï¼‰ã€‚\n" +"シェーダーを無効ã«ã™ã‚‹ã¨ã€ãƒŽãƒ¼ãƒ‰é–“ã«å¯è¦–スペースãŒè¡¨ç¤ºã•れã¾ã™ã€‚\n" +"0 ã«è¨å®šã™ã‚‹ã¨ã€MSAAã¯ç„¡åйã«ãªã‚Šã¾ã™ã€‚\n" +"ã“ã®ã‚ªãƒ—ションを変更ã—ãŸå ´åˆã€å†èµ·å‹•ãŒå¿…è¦ã§ã™ã€‚" #: src/settings_translation_file.cpp msgid "Use trilinear filtering when scaling textures." @@ -7044,6 +7051,12 @@ msgstr "" "ã™ã€‚" #: src/settings_translation_file.cpp +msgid "" +"Whether nametag backgrounds should be shown by default.\n" +"Mods may still set a background." +msgstr "" + +#: src/settings_translation_file.cpp msgid "Whether node texture animations should be desynchronized per mapblock." msgstr "" "ノードã®ãƒ†ã‚¯ã‚¹ãƒãƒ£ã®ã‚¢ãƒ‹ãƒ¡ãƒ¼ã‚·ãƒ§ãƒ³ã‚’マップブãƒãƒƒã‚¯ã”ã¨ã«éžåŒæœŸã«\n" @@ -7055,7 +7068,7 @@ msgid "" "Deprecated, use the setting player_transfer_distance instead." msgstr "" "プレイヤーãŒç¯„囲制é™ãªã—ã§ã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆã«è¡¨ç¤ºã•れるã‹ã©ã†ã‹ã§ã™ã€‚\n" -"廃æ¢äºˆå®šã€ä»£ã‚りã«è¨å®š player_transfer_distance を使用ã—ã¦ãã ã•ã„。" +"éžæŽ¨å¥¨ã€‚ä»£ã‚りã«è¨å®š player_transfer_distance を使用ã—ã¦ãã ã•ã„。" #: src/settings_translation_file.cpp msgid "Whether to allow players to damage and kill each other." @@ -7205,6 +7218,11 @@ msgid "" "9 - best compression, slowest\n" "(levels 1-3 use Zlib's \"fast\" method, 4-9 use the normal method)" msgstr "" +"マップブãƒãƒƒã‚¯ã‚’ディスクã«ä¿å˜ã™ã‚‹ã¨ãã«ä½¿ç”¨ã™ã‚‹ ZLib圧縮レベル。\n" +"-1 - Zlib ã®è¦å®šã®åœ§ç¸®ãƒ¬ãƒ™ãƒ«\n" +"0 - 圧縮ãªã—ã€æœ€é€Ÿ\n" +"9 - 最高ã®åœ§ç¸®ã€æœ€ã‚‚é…ã„\n" +"(レベル 1〜3 ã¯Zlibã®ã€Œé«˜é€Ÿã€æ–¹å¼ã‚’使用ã—ã€4〜9 ã¯é€šå¸¸æ–¹å¼ã‚’使用)" #: src/settings_translation_file.cpp msgid "" @@ -7214,6 +7232,11 @@ msgid "" "9 - best compression, slowest\n" "(levels 1-3 use Zlib's \"fast\" method, 4-9 use the normal method)" msgstr "" +"マップブãƒãƒƒã‚¯ã‚’クライアントã«é€ä¿¡ã™ã‚‹ã¨ãã«ä½¿ç”¨ã™ã‚‹ ZLib圧縮レベル。\n" +"-1 - Zlib ã®è¦å®šã®åœ§ç¸®ãƒ¬ãƒ™ãƒ«\n" +"0 - 圧縮ãªã—ã€æœ€é€Ÿ\n" +"9 - 最高ã®åœ§ç¸®ã€æœ€ã‚‚é…ã„\n" +"(レベル 1〜3 ã¯Zlibã®ã€Œé«˜é€Ÿã€æ–¹å¼ã‚’使用ã—ã€4〜9 ã¯é€šå¸¸æ–¹å¼ã‚’使用)" #: src/settings_translation_file.cpp msgid "cURL file download timeout" diff --git a/po/jbo/minetest.po b/po/jbo/minetest.po index ab7b25e3e..83ccdb9df 100644 --- a/po/jbo/minetest.po +++ b/po/jbo/minetest.po @@ -2,9 +2,9 @@ msgid "" msgstr "" "Project-Id-Version: Lojban (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-01-30 21:13+0100\n" -"PO-Revision-Date: 2020-03-15 18:36+0000\n" -"Last-Translator: Robin Townsend <iantownsend@disroot.org>\n" +"POT-Creation-Date: 2021-02-23 19:03+0100\n" +"PO-Revision-Date: 2021-02-13 08:50+0000\n" +"Last-Translator: Wuzzy <almikes@aol.com>\n" "Language-Team: Lojban <https://hosted.weblate.org/projects/minetest/minetest/" "jbo/>\n" "Language: jbo\n" @@ -12,7 +12,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 4.0-dev\n" +"X-Generator: Weblate 4.5-dev\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" @@ -24,7 +24,7 @@ msgstr ".i do morsi" #: builtin/fstk/dialog.lua builtin/fstk/ui.lua src/gui/modalMenu.cpp msgid "OK" -msgstr "" +msgstr "fitytu'i" #: builtin/fstk/ui.lua #, fuzzy @@ -80,7 +80,7 @@ msgstr "" #: src/gui/guiConfirmRegistration.cpp src/gui/guiKeyChangeMenu.cpp #: src/gui/guiPasswordChange.cpp msgid "Cancel" -msgstr "sisti" +msgstr "fitytoltu'i" #: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_contentstore.lua #: builtin/mainmenu/tab_content.lua @@ -321,7 +321,7 @@ msgstr "" #: builtin/mainmenu/dlg_create_world.lua msgid "Caves" -msgstr "" +msgstr "kevzda" #: builtin/mainmenu/dlg_create_world.lua msgid "Create" @@ -344,7 +344,7 @@ msgstr ".i ko kibycpa pa se kelci la'o zoi. minetest.net .zoi" #: builtin/mainmenu/dlg_create_world.lua msgid "Dungeons" -msgstr "" +msgstr "kevdi'u" #: builtin/mainmenu/dlg_create_world.lua msgid "Flat terrain" @@ -352,11 +352,12 @@ msgstr "" #: builtin/mainmenu/dlg_create_world.lua msgid "Floating landmasses in the sky" -msgstr "" +msgstr "lo tumla cu fulta lo tsani" #: builtin/mainmenu/dlg_create_world.lua +#, fuzzy msgid "Floatlands (experimental)" -msgstr "" +msgstr "fulta tumla" #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp msgid "Game" @@ -401,7 +402,7 @@ msgstr "" #: builtin/mainmenu/dlg_create_world.lua msgid "Mountains" -msgstr "" +msgstr "cmana" #: builtin/mainmenu/dlg_create_world.lua msgid "Mud flow" @@ -425,7 +426,7 @@ msgstr "" #: builtin/mainmenu/dlg_create_world.lua msgid "Rivers" -msgstr "" +msgstr "rirxe" #: builtin/mainmenu/dlg_create_world.lua msgid "Sea level rivers" @@ -433,9 +434,8 @@ msgstr "" #: builtin/mainmenu/dlg_create_world.lua #: builtin/mainmenu/dlg_settings_advanced.lua -#, fuzzy msgid "Seed" -msgstr "cunso jai krasi" +msgstr "cunso namcu" #: builtin/mainmenu/dlg_create_world.lua msgid "Smooth transition between biomes" @@ -714,6 +714,10 @@ msgid "Loading..." msgstr ".i ca'o samymo'i" #: builtin/mainmenu/serverlistmgr.lua +msgid "Public server list is disabled" +msgstr "" + +#: builtin/mainmenu/serverlistmgr.lua msgid "Try reenabling public serverlist and check your internet connection." msgstr "" ".i ko troci lo nu za'u re'u samymo'i lo liste be lo'i samse'u .i ko cipcta " @@ -807,7 +811,7 @@ msgstr "finti se kelci" #: builtin/mainmenu/tab_local.lua msgid "Enable Damage" -msgstr "" +msgstr "pilno lo selxai" #: builtin/mainmenu/tab_local.lua #, fuzzy @@ -835,9 +839,8 @@ msgid "No world created or selected!" msgstr ".i do no munje cu cupra ja cu cuxna" #: builtin/mainmenu/tab_local.lua -#, fuzzy msgid "Password" -msgstr "lo cnino lerpoijaspu" +msgstr "lo lerpoijaspu" #: builtin/mainmenu/tab_local.lua msgid "Play Game" @@ -866,7 +869,7 @@ msgstr "co'a kelci" #: builtin/mainmenu/tab_online.lua msgid "Address / Port" -msgstr "judri .i judrnporte" +msgstr "lo samjudri jo'u judrnporte" #: builtin/mainmenu/tab_online.lua msgid "Connect" @@ -894,7 +897,7 @@ msgstr "co'a kansa fi le ka kelci" #: builtin/mainmenu/tab_online.lua msgid "Name / Password" -msgstr "cmene .i lerpoijaspu" +msgstr "lo cmene .e lo lerpoijaspu" #: builtin/mainmenu/tab_online.lua msgid "Ping" @@ -910,9 +913,8 @@ msgid "2x" msgstr "" #: builtin/mainmenu/tab_settings.lua -#, fuzzy msgid "3D Clouds" -msgstr "le bliku dilnu" +msgstr "cibyca'u dilnu" #: builtin/mainmenu/tab_settings.lua msgid "4x" @@ -953,12 +955,10 @@ msgid "Fancy Leaves" msgstr "lo tolkli pezli" #: builtin/mainmenu/tab_settings.lua -#, fuzzy msgid "Mipmap" msgstr "lo puvrmipmepi" #: builtin/mainmenu/tab_settings.lua -#, fuzzy msgid "Mipmap + Aniso. Filter" msgstr "lo puvrmipmepi .e lo puvytolmanfyju'e" @@ -967,9 +967,8 @@ msgid "No Filter" msgstr "" #: builtin/mainmenu/tab_settings.lua -#, fuzzy msgid "No Mipmap" -msgstr "lo puvrmipmepi" +msgstr "" #: builtin/mainmenu/tab_settings.lua #, fuzzy @@ -991,14 +990,12 @@ msgid "Opaque Leaves" msgstr "lo tolkli pezli" #: builtin/mainmenu/tab_settings.lua -#, fuzzy msgid "Opaque Water" -msgstr "lo tolkli djacu" +msgstr "tolkli djacu" #: builtin/mainmenu/tab_settings.lua -#, fuzzy msgid "Particles" -msgstr "lo kantu" +msgstr "kantu" #: builtin/mainmenu/tab_settings.lua msgid "Screen:" @@ -1427,7 +1424,7 @@ msgstr "nonselkansa" #: src/client/game.cpp msgid "Sound Volume" -msgstr "" +msgstr "ni sance" #: src/client/game.cpp #, fuzzy @@ -1465,7 +1462,7 @@ msgstr "" #: src/client/game.cpp #, c-format msgid "Volume changed to %d%%" -msgstr "" +msgstr ".i fe lo ni sance cu cenba fi li %d ce'i" #: src/client/game.cpp msgid "Wireframe shown" @@ -1576,9 +1573,8 @@ msgid "Insert" msgstr "" #: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp -#, fuzzy msgid "Left" -msgstr "za'i zu'e muvdu" +msgstr "zu'e muvdu" #: src/client/keycode.cpp msgid "Left Button" @@ -1704,9 +1700,8 @@ msgid "Return" msgstr "" #: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp -#, fuzzy msgid "Right" -msgstr "za'i ri'u muvdu" +msgstr "ri'u muvdu" #: src/client/keycode.cpp msgid "Right Button" @@ -1829,9 +1824,8 @@ msgid "Automatic jumping" msgstr "" #: src/gui/guiKeyChangeMenu.cpp -#, fuzzy msgid "Backward" -msgstr "za'i ti'a muvdu" +msgstr "ti'a muvdu" #: src/gui/guiKeyChangeMenu.cpp #, fuzzy @@ -1856,21 +1850,19 @@ msgstr "" #: src/gui/guiKeyChangeMenu.cpp msgid "Dec. volume" -msgstr "" +msgstr "jdikygau lo ni sance" #: src/gui/guiKeyChangeMenu.cpp msgid "Double tap \"jump\" to toggle fly" msgstr "" #: src/gui/guiKeyChangeMenu.cpp -#, fuzzy msgid "Drop" -msgstr "mu'e falcru" +msgstr "falcru" #: src/gui/guiKeyChangeMenu.cpp -#, fuzzy msgid "Forward" -msgstr "za'i ca'u muvdu" +msgstr "ca'u muvdu" #: src/gui/guiKeyChangeMenu.cpp msgid "Inc. range" @@ -1878,7 +1870,7 @@ msgstr "" #: src/gui/guiKeyChangeMenu.cpp msgid "Inc. volume" -msgstr "" +msgstr "zengau lo ni sance" #: src/gui/guiKeyChangeMenu.cpp msgid "Inventory" @@ -2084,9 +2076,8 @@ msgid "2D noise that locates the river valleys and channels." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "3D clouds" -msgstr "le bliku dilnu" +msgstr "cibyca'u dilnu" #: src/settings_translation_file.cpp msgid "3D mode" @@ -2883,9 +2874,8 @@ msgid "Dig key" msgstr "za'i ri'u muvdu" #: src/settings_translation_file.cpp -#, fuzzy msgid "Digging particles" -msgstr "lo kantu" +msgstr "kakpa kantu" #: src/settings_translation_file.cpp #, fuzzy @@ -2945,7 +2935,7 @@ msgid "Enable console window" msgstr "" #: src/settings_translation_file.cpp -msgid "Enable creative mode for new created maps." +msgid "Enable creative mode for all players" msgstr "" #: src/settings_translation_file.cpp @@ -4998,7 +4988,6 @@ msgid "Minimum texture size" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mipmapping" msgstr "lo puvrmipmepi" @@ -5661,6 +5650,10 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp +msgid "Show nametag backgrounds by default" +msgstr "" + +#: src/settings_translation_file.cpp msgid "Shutdown message" msgstr "" @@ -6237,9 +6230,8 @@ msgid "Virtual joystick triggers aux button" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Volume" -msgstr "lo ni sance " +msgstr "lo ni sance" #: src/settings_translation_file.cpp msgid "" @@ -6346,6 +6338,12 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp +msgid "" +"Whether nametag backgrounds should be shown by default.\n" +"Mods may still set a background." +msgstr "" + +#: src/settings_translation_file.cpp msgid "Whether node texture animations should be desynchronized per mapblock." msgstr "" diff --git a/po/kk/minetest.po b/po/kk/minetest.po index f50ebcf3a..26fdf44e8 100644 --- a/po/kk/minetest.po +++ b/po/kk/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Kazakh (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-01-30 21:13+0100\n" +"POT-Creation-Date: 2021-02-23 19:03+0100\n" "PO-Revision-Date: 2020-09-09 01:23+0000\n" "Last-Translator: Fontan 030 <pomanfedurin@gmail.com>\n" "Language-Team: Kazakh <https://hosted.weblate.org/projects/minetest/minetest/" @@ -695,6 +695,10 @@ msgid "Loading..." msgstr "Жүктелуде..." #: builtin/mainmenu/serverlistmgr.lua +msgid "Public server list is disabled" +msgstr "" + +#: builtin/mainmenu/serverlistmgr.lua msgid "Try reenabling public serverlist and check your internet connection." msgstr "" @@ -2832,7 +2836,7 @@ msgid "Enable console window" msgstr "" #: src/settings_translation_file.cpp -msgid "Enable creative mode for new created maps." +msgid "Enable creative mode for all players" msgstr "" #: src/settings_translation_file.cpp @@ -5534,6 +5538,10 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp +msgid "Show nametag backgrounds by default" +msgstr "" + +#: src/settings_translation_file.cpp msgid "Shutdown message" msgstr "" @@ -6207,6 +6215,12 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp +msgid "" +"Whether nametag backgrounds should be shown by default.\n" +"Mods may still set a background." +msgstr "" + +#: src/settings_translation_file.cpp msgid "Whether node texture animations should be desynchronized per mapblock." msgstr "" diff --git a/po/kn/minetest.po b/po/kn/minetest.po index 74f40491e..d820e246c 100644 --- a/po/kn/minetest.po +++ b/po/kn/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Kannada (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-01-30 21:13+0100\n" +"POT-Creation-Date: 2021-02-23 19:03+0100\n" "PO-Revision-Date: 2021-01-02 07:29+0000\n" "Last-Translator: Tejaswi Hegde <tejaswihegde1@gmail.com>\n" "Language-Team: Kannada <https://hosted.weblate.org/projects/minetest/" @@ -714,6 +714,10 @@ msgid "Loading..." msgstr "ಲೋಡೠಆಗà³à²¤à³à²¤à²¿à²¦à³†..." #: builtin/mainmenu/serverlistmgr.lua +msgid "Public server list is disabled" +msgstr "" + +#: builtin/mainmenu/serverlistmgr.lua msgid "Try reenabling public serverlist and check your internet connection." msgstr "ಪಬà³à²²à²¿à²•ೠಸರà³à²µà²°à³à²²à²¿à²¸à³à²Ÿà³à²…ನà³à²¨à³ ರಿಎನೆಬಲೠಮಾಡಿ ಮತà³à²¤à³ ಅಂತರà³à²œà²¾à²² ಸಂಪರà³à²• ಪರಿಶೀಲಿಸಿ." @@ -2851,7 +2855,7 @@ msgid "Enable console window" msgstr "" #: src/settings_translation_file.cpp -msgid "Enable creative mode for new created maps." +msgid "Enable creative mode for all players" msgstr "" #: src/settings_translation_file.cpp @@ -5553,6 +5557,10 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp +msgid "Show nametag backgrounds by default" +msgstr "" + +#: src/settings_translation_file.cpp msgid "Shutdown message" msgstr "" @@ -6226,6 +6234,12 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp +msgid "" +"Whether nametag backgrounds should be shown by default.\n" +"Mods may still set a background." +msgstr "" + +#: src/settings_translation_file.cpp msgid "Whether node texture animations should be desynchronized per mapblock." msgstr "" diff --git a/po/ko/minetest.po b/po/ko/minetest.po index 1f17d56bb..d08dc7d72 100644 --- a/po/ko/minetest.po +++ b/po/ko/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Korean (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-01-30 21:13+0100\n" +"POT-Creation-Date: 2021-02-23 19:03+0100\n" "PO-Revision-Date: 2020-12-05 15:29+0000\n" "Last-Translator: HunSeongPark <gnstjd980831@naver.com>\n" "Language-Team: Korean <https://hosted.weblate.org/projects/minetest/minetest/" @@ -705,6 +705,11 @@ msgid "Loading..." msgstr "불러오는 중..." #: builtin/mainmenu/serverlistmgr.lua +#, fuzzy +msgid "Public server list is disabled" +msgstr "í´ë¼ì´ì–¸íЏ 스í¬ë¦½íŠ¸ê°€ 비활성화ë¨" + +#: builtin/mainmenu/serverlistmgr.lua msgid "Try reenabling public serverlist and check your internet connection." msgstr "ì¸í„°ë„· ì—°ê²°ì„ í™•ì¸í•œ 후 서버 목ë¡ì„ 새로 ê³ ì³ë³´ì„¸ìš”." @@ -2975,7 +2980,8 @@ msgid "Enable console window" msgstr "" #: src/settings_translation_file.cpp -msgid "Enable creative mode for new created maps." +#, fuzzy +msgid "Enable creative mode for all players" msgstr "새로 ë§Œë“ ë§µì—서 creative모드를 활성화시킵니다." #: src/settings_translation_file.cpp @@ -5980,6 +5986,10 @@ msgstr "" "ì„¤ì • ì ìš© 후 ìž¬ì‹œìž‘ì´ í•„ìš”í•©ë‹ˆë‹¤." #: src/settings_translation_file.cpp +msgid "Show nametag backgrounds by default" +msgstr "" + +#: src/settings_translation_file.cpp msgid "Shutdown message" msgstr "서버닫힘 메시지" @@ -6686,6 +6696,12 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp +msgid "" +"Whether nametag backgrounds should be shown by default.\n" +"Mods may still set a background." +msgstr "" + +#: src/settings_translation_file.cpp msgid "Whether node texture animations should be desynchronized per mapblock." msgstr "" diff --git a/po/ky/minetest.po b/po/ky/minetest.po index 9f7560702..91c6e11b8 100644 --- a/po/ky/minetest.po +++ b/po/ky/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Kyrgyz (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-01-30 21:13+0100\n" +"POT-Creation-Date: 2021-02-23 19:03+0100\n" "PO-Revision-Date: 2019-11-10 15:04+0000\n" "Last-Translator: Krock <mk939@ymail.com>\n" "Language-Team: Kyrgyz <https://hosted.weblate.org/projects/minetest/minetest/" @@ -721,6 +721,10 @@ msgid "Loading..." msgstr "Жүктөлүүдө..." #: builtin/mainmenu/serverlistmgr.lua +msgid "Public server list is disabled" +msgstr "" + +#: builtin/mainmenu/serverlistmgr.lua msgid "Try reenabling public serverlist and check your internet connection." msgstr "" @@ -2981,7 +2985,7 @@ msgid "Enable console window" msgstr "" #: src/settings_translation_file.cpp -msgid "Enable creative mode for new created maps." +msgid "Enable creative mode for all players" msgstr "" #: src/settings_translation_file.cpp @@ -5709,6 +5713,10 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp +msgid "Show nametag backgrounds by default" +msgstr "" + +#: src/settings_translation_file.cpp msgid "Shutdown message" msgstr "" @@ -6393,6 +6401,12 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp +msgid "" +"Whether nametag backgrounds should be shown by default.\n" +"Mods may still set a background." +msgstr "" + +#: src/settings_translation_file.cpp msgid "Whether node texture animations should be desynchronized per mapblock." msgstr "" diff --git a/po/lt/minetest.po b/po/lt/minetest.po index e9b9f97eb..98bcff78d 100644 --- a/po/lt/minetest.po +++ b/po/lt/minetest.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: Lithuanian (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-01-30 21:13+0100\n" -"PO-Revision-Date: 2020-09-23 07:41+0000\n" +"POT-Creation-Date: 2021-02-23 19:03+0100\n" +"PO-Revision-Date: 2021-02-23 15:50+0000\n" "Last-Translator: Kornelijus TvarijanaviÄius <kornelitvari@protonmail.com>\n" "Language-Team: Lithuanian <https://hosted.weblate.org/projects/minetest/" "minetest/lt/>\n" @@ -13,7 +13,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n" "%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Weblate 4.3-dev\n" +"X-Generator: Weblate 4.5\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" @@ -28,12 +28,10 @@ msgid "OK" msgstr "" #: builtin/fstk/ui.lua -#, fuzzy msgid "An error occurred in a Lua script:" -msgstr "Klaida įvyko Lua scenarijuje, tokiame kaip papildinys:" +msgstr "Ä®vyko klaida Lua skripte:" #: builtin/fstk/ui.lua -#, fuzzy msgid "An error occurred:" msgstr "Ä®vyko klaida:" @@ -67,7 +65,7 @@ msgstr "Mes palaikome tik $1 protokolo versijÄ…." #: builtin/mainmenu/common.lua msgid "We support protocol versions between version $1 and $2." -msgstr "Mes palaikome protokolo versijas nuo $1 iki $2." +msgstr "Mes palaikome protokolo versijas tarp $1 ir $2." #: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_contentstore.lua #: builtin/mainmenu/dlg_create_world.lua @@ -82,16 +80,14 @@ msgstr "AtÅ¡aukti" #: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_contentstore.lua #: builtin/mainmenu/tab_content.lua -#, fuzzy msgid "Dependencies:" -msgstr "Priklauso:" +msgstr "Priklauso nuo:" #: builtin/mainmenu/dlg_config_world.lua msgid "Disable all" msgstr "IÅ¡jungti visus papildinius" #: builtin/mainmenu/dlg_config_world.lua -#, fuzzy msgid "Disable modpack" msgstr "IÅ¡jungti papildinį" @@ -129,9 +125,8 @@ msgid "No game description provided." msgstr "Nepateiktas žaidimo apraÅ¡ymas." #: builtin/mainmenu/dlg_config_world.lua -#, fuzzy msgid "No hard dependencies" -msgstr "Priklauso:" +msgstr "NÄ—ra bÅ«tinų priklausomybių" #: builtin/mainmenu/dlg_config_world.lua msgid "No modpack description provided." @@ -177,9 +172,8 @@ msgid "" msgstr "" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "$1 downloading..." -msgstr "Ä®keliama..." +msgstr "$1 atsiunÄiama..." #: builtin/mainmenu/dlg_contentstore.lua msgid "$1 required dependencies could not be found." @@ -738,6 +732,10 @@ msgid "Loading..." msgstr "Ä®keliama..." #: builtin/mainmenu/serverlistmgr.lua +msgid "Public server list is disabled" +msgstr "" + +#: builtin/mainmenu/serverlistmgr.lua msgid "Try reenabling public serverlist and check your internet connection." msgstr "" "Pabandykite dar kart įjungti viešą serverių sÄ…rašą ir patikrinkite savo " @@ -2991,7 +2989,7 @@ msgid "Enable console window" msgstr "" #: src/settings_translation_file.cpp -msgid "Enable creative mode for new created maps." +msgid "Enable creative mode for all players" msgstr "" #: src/settings_translation_file.cpp @@ -5728,6 +5726,10 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp +msgid "Show nametag backgrounds by default" +msgstr "" + +#: src/settings_translation_file.cpp msgid "Shutdown message" msgstr "" @@ -6409,6 +6411,12 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp +msgid "" +"Whether nametag backgrounds should be shown by default.\n" +"Mods may still set a background." +msgstr "" + +#: src/settings_translation_file.cpp msgid "Whether node texture animations should be desynchronized per mapblock." msgstr "" diff --git a/po/lv/minetest.po b/po/lv/minetest.po index 2800f7eb5..e1b4de861 100644 --- a/po/lv/minetest.po +++ b/po/lv/minetest.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: minetest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-01-30 21:13+0100\n" +"POT-Creation-Date: 2021-02-23 19:03+0100\n" "PO-Revision-Date: 2020-07-12 17:41+0000\n" "Last-Translator: Uko Koknevics <TheZeus121@gmail.com>\n" "Language-Team: Latvian <https://hosted.weblate.org/projects/minetest/" @@ -714,6 +714,11 @@ msgid "Loading..." msgstr "IelÄde..." #: builtin/mainmenu/serverlistmgr.lua +#, fuzzy +msgid "Public server list is disabled" +msgstr "Klienta puses skriptēšana ir atspÄ“jota" + +#: builtin/mainmenu/serverlistmgr.lua msgid "Try reenabling public serverlist and check your internet connection." msgstr "" "Pamēģiniet atkÄrtoti ieslÄ“gt publisko serveru sarakstu un pÄrbaudiet " @@ -2894,7 +2899,7 @@ msgid "Enable console window" msgstr "" #: src/settings_translation_file.cpp -msgid "Enable creative mode for new created maps." +msgid "Enable creative mode for all players" msgstr "" #: src/settings_translation_file.cpp @@ -5602,6 +5607,10 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp +msgid "Show nametag backgrounds by default" +msgstr "" + +#: src/settings_translation_file.cpp msgid "Shutdown message" msgstr "" @@ -6275,6 +6284,12 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp +msgid "" +"Whether nametag backgrounds should be shown by default.\n" +"Mods may still set a background." +msgstr "" + +#: src/settings_translation_file.cpp msgid "Whether node texture animations should be desynchronized per mapblock." msgstr "" diff --git a/po/minetest.pot b/po/minetest.pot index 408995dc5..6b454cf16 100644 --- a/po/minetest.pot +++ b/po/minetest.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: minetest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-01-30 21:13+0100\n" +"POT-Creation-Date: 2021-02-23 19:03+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -698,6 +698,10 @@ msgstr "" msgid "Try reenabling public serverlist and check your internet connection." msgstr "" +#: builtin/mainmenu/serverlistmgr.lua +msgid "Public server list is disabled" +msgstr "" + #: builtin/mainmenu/tab_content.lua msgid "Installed Packages:" msgstr "" @@ -2960,6 +2964,16 @@ msgid "Basic" msgstr "" #: src/settings_translation_file.cpp +msgid "Show nametag backgrounds by default" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Whether nametag backgrounds should be shown by default.\n" +"Mods may still set a background." +msgstr "" + +#: src/settings_translation_file.cpp msgid "VBO" msgstr "" @@ -4426,7 +4440,7 @@ msgid "Creative" msgstr "" #: src/settings_translation_file.cpp -msgid "Enable creative mode for new created maps." +msgid "Enable creative mode for all players" msgstr "" #: src/settings_translation_file.cpp diff --git a/po/ms/minetest.po b/po/ms/minetest.po index 0ea9bf28a..d35e063cc 100644 --- a/po/ms/minetest.po +++ b/po/ms/minetest.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: Malay (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-01-30 21:13+0100\n" -"PO-Revision-Date: 2020-10-20 18:26+0000\n" +"POT-Creation-Date: 2021-02-23 19:03+0100\n" +"PO-Revision-Date: 2021-02-01 05:52+0000\n" "Last-Translator: Yaya - Nurul Azeera Hidayah @ Muhammad Nur Hidayat " "Yasuyoshi <translation@mnh48.moe>\n" "Language-Team: Malay <https://hosted.weblate.org/projects/minetest/minetest/" @@ -13,7 +13,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 4.3.1\n" +"X-Generator: Weblate 4.5-dev\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" @@ -154,52 +154,51 @@ msgstr "Dibolehkan" #: builtin/mainmenu/dlg_contentstore.lua msgid "\"$1\" already exists. Would you like to overwrite it?" -msgstr "" +msgstr "\"$1\" sudah wujud. Adakah anda ingin tulis gantinya?" #: builtin/mainmenu/dlg_contentstore.lua msgid "$1 and $2 dependencies will be installed." -msgstr "" +msgstr "Kebergantungan $1 dan $2 akan dipasangkan." #: builtin/mainmenu/dlg_contentstore.lua msgid "$1 by $2" -msgstr "" +msgstr "$1 oleh $2" #: builtin/mainmenu/dlg_contentstore.lua msgid "" "$1 downloading,\n" "$2 queued" msgstr "" +"$1 sedang muat turun,\n" +"$2 menunggu giliran" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "$1 downloading..." -msgstr "Memuat turun..." +msgstr "$1 memuat turun..." #: builtin/mainmenu/dlg_contentstore.lua msgid "$1 required dependencies could not be found." -msgstr "" +msgstr "$1 memerlukan kebergantungan yang tidak dijumpai." #: builtin/mainmenu/dlg_contentstore.lua msgid "$1 will be installed, and $2 dependencies will be skipped." -msgstr "" +msgstr "$1 akan dipasangkan, dan kebergantungan $2 akan dilangkau." #: builtin/mainmenu/dlg_contentstore.lua msgid "All packages" msgstr "Semua pakej" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "Already installed" -msgstr "Kekunci telah digunakan untuk fungsi lain" +msgstr "Sudah dipasang" #: builtin/mainmenu/dlg_contentstore.lua msgid "Back to Main Menu" msgstr "Kembali ke Menu Utama" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "Base Game:" -msgstr "Hos Permainan" +msgstr "Permainan Asas:" #: builtin/mainmenu/dlg_contentstore.lua msgid "ContentDB is not available when Minetest was compiled without cURL" @@ -223,14 +222,12 @@ msgid "Install" msgstr "Pasang" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "Install $1" -msgstr "Pasang" +msgstr "Pasang $1" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "Install missing dependencies" -msgstr "Kebergantungan pilihan:" +msgstr "Pasang kebergantungan yang hilang" #: builtin/mainmenu/dlg_contentstore.lua #: builtin/mainmenu/dlg_settings_advanced.lua @@ -246,26 +243,24 @@ msgid "No results" msgstr "Tiada hasil" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "No updates" -msgstr "Kemas kini" +msgstr "Tiada kemas kini" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "Not found" -msgstr "Bisukan bunyi" +msgstr "Tidak dijumpai" #: builtin/mainmenu/dlg_contentstore.lua msgid "Overwrite" -msgstr "" +msgstr "Tulis ganti" #: builtin/mainmenu/dlg_contentstore.lua msgid "Please check that the base game is correct." -msgstr "" +msgstr "Sila semak dan pastikan permainan asas itu betul." #: builtin/mainmenu/dlg_contentstore.lua msgid "Queued" -msgstr "" +msgstr "Menunggu giliran" #: builtin/mainmenu/dlg_contentstore.lua msgid "Texture packs" @@ -281,11 +276,11 @@ msgstr "Kemas kini" #: builtin/mainmenu/dlg_contentstore.lua msgid "Update All [$1]" -msgstr "" +msgstr "Kemas Kini Semua [$1]" #: builtin/mainmenu/dlg_contentstore.lua msgid "View more information in a web browser" -msgstr "" +msgstr "Lihat maklumat lanjut dalam pelayar sesawang" #: builtin/mainmenu/dlg_create_world.lua msgid "A world named \"$1\" already exists" @@ -706,6 +701,11 @@ msgid "Loading..." msgstr "Sedang memuatkan..." #: builtin/mainmenu/serverlistmgr.lua +#, fuzzy +msgid "Public server list is disabled" +msgstr "Skrip pihak klien dilumpuhkan" + +#: builtin/mainmenu/serverlistmgr.lua msgid "Try reenabling public serverlist and check your internet connection." msgstr "" "Cuba aktifkan semula senarai pelayan awam dan periksa sambungan internet " @@ -764,15 +764,16 @@ msgid "Credits" msgstr "Penghargaan" #: builtin/mainmenu/tab_credits.lua -#, fuzzy msgid "Open User Data Directory" -msgstr "Pilih direktori" +msgstr "Buka Direktori Data Pengguna" #: builtin/mainmenu/tab_credits.lua msgid "" "Opens the directory that contains user-provided worlds, games, mods,\n" "and texture packs in a file manager / explorer." msgstr "" +"Membuka direktori yang mengandungi dunia, permainan, mods, dan pek\n" +"tekstur yang disediakan oleh pengguna, dalam pengurus / pelayar fail." #: builtin/mainmenu/tab_credits.lua msgid "Previous Contributors" @@ -812,7 +813,7 @@ msgstr "Pasangkan permainan daripada ContentDB" #: builtin/mainmenu/tab_local.lua msgid "Name" -msgstr "" +msgstr "Nama" #: builtin/mainmenu/tab_local.lua msgid "New" @@ -823,9 +824,8 @@ msgid "No world created or selected!" msgstr "Tiada dunia dicipta atau dipilih!" #: builtin/mainmenu/tab_local.lua -#, fuzzy msgid "Password" -msgstr "Kata Laluan Baru" +msgstr "Kata Laluan" #: builtin/mainmenu/tab_local.lua msgid "Play Game" @@ -836,9 +836,8 @@ msgid "Port" msgstr "Port" #: builtin/mainmenu/tab_local.lua -#, fuzzy msgid "Select Mods" -msgstr "Pilih Dunia:" +msgstr "Pilih Mods" #: builtin/mainmenu/tab_local.lua msgid "Select World:" @@ -990,9 +989,8 @@ msgid "Shaders" msgstr "Pembayang" #: builtin/mainmenu/tab_settings.lua -#, fuzzy msgid "Shaders (experimental)" -msgstr "Tanah terapung (dalam ujikaji)" +msgstr "Pembayang (dalam ujikaji)" #: builtin/mainmenu/tab_settings.lua msgid "Shaders (unavailable)" @@ -1193,7 +1191,7 @@ msgid "Continue" msgstr "Teruskan" #: src/client/game.cpp -#, fuzzy, c-format +#, c-format msgid "" "Controls:\n" "- %s: move forwards\n" @@ -1210,18 +1208,18 @@ msgid "" "- Mouse wheel: select item\n" "- %s: chat\n" msgstr "" -"Kawalan:\n" +"Controls:\n" "- %s: bergerak ke depan\n" "- %s: bergerak ke belakang\n" "- %s: bergerak ke kiri\n" "- %s: bergerak ke kanan\n" "- %s: lompat/naik atas\n" +"- %s: gali/ketuk\n" +"- %s: letak/guna\n" "- %s: selinap/turun bawah\n" "- %s: jatuhkan item\n" "- %s: inventori\n" "- Tetikus: pusing/lihat sekeliling\n" -"- Tetikus kiri: gali/ketuk\n" -"- Tetikus kanan: letak/guna\n" "- Roda tetikus: pilih item\n" "- %s: sembang\n" @@ -1752,19 +1750,18 @@ msgid "Minimap hidden" msgstr "Peta mini disembunyikan" #: src/client/minimap.cpp -#, fuzzy, c-format +#, c-format msgid "Minimap in radar mode, Zoom x%d" -msgstr "Peta mini dalam mod radar, Zum 1x" +msgstr "Peta mini dalam mod radar, Zum x%d" #: src/client/minimap.cpp -#, fuzzy, c-format +#, c-format msgid "Minimap in surface mode, Zoom x%d" -msgstr "Peta mini dalam mod permukaan, Zum 1x" +msgstr "Peta mini dalam mod permukaan, Zum x%d" #: src/client/minimap.cpp -#, fuzzy msgid "Minimap in texture mode" -msgstr "Saiz tekstur minimum" +msgstr "Peta mini dalam mod tekstur" #: src/gui/guiConfirmRegistration.cpp src/gui/guiPasswordChange.cpp msgid "Passwords do not match!" @@ -2164,11 +2161,11 @@ msgstr "Selang masa ABM" #: src/settings_translation_file.cpp msgid "ABM time budget" -msgstr "" +msgstr "Peruntukan masa ABM" #: src/settings_translation_file.cpp msgid "Absolute limit of queued blocks to emerge" -msgstr "Had mutlak untuk blok dibarisgilirkan untuk timbul" +msgstr "Had mutlak untuk blok menunggu giliran untuk timbul" #: src/settings_translation_file.cpp msgid "Acceleration in air" @@ -2671,7 +2668,7 @@ msgstr "Senarai Hitam Bendera ContentDB" #: src/settings_translation_file.cpp msgid "ContentDB Max Concurrent Downloads" -msgstr "" +msgstr "Muat Turun Serempak Maksimum ContentDB" #: src/settings_translation_file.cpp msgid "ContentDB URL" @@ -2740,11 +2737,12 @@ msgid "Crosshair alpha" msgstr "Nilai alfa rerambut silang" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Crosshair alpha (opaqueness, between 0 and 255).\n" "Also controls the object crosshair color" -msgstr "Nilai alfa rerambut silang (kelegapan, antara 0 dan 255)." +msgstr "" +"Nilai alfa rerambut silang (kelegapan, antara 0 dan 255).\n" +"Juga mengawal warna rerambut silang objek" #: src/settings_translation_file.cpp msgid "Crosshair color" @@ -2755,6 +2753,8 @@ msgid "" "Crosshair color (R,G,B).\n" "Also controls the object crosshair color" msgstr "" +"Warna rerambut silang (R,G,B).\n" +"Juga mengawal warna rerambut silang objek" #: src/settings_translation_file.cpp msgid "DPI" @@ -2939,9 +2939,8 @@ msgid "Desynchronize block animation" msgstr "Menyahsegerakkan animasi blok" #: src/settings_translation_file.cpp -#, fuzzy msgid "Dig key" -msgstr "Kekunci ke kanan" +msgstr "Kekunci gali" #: src/settings_translation_file.cpp msgid "Digging particles" @@ -3009,7 +3008,8 @@ msgid "Enable console window" msgstr "Membolehkan tetingkap konsol" #: src/settings_translation_file.cpp -msgid "Enable creative mode for new created maps." +#, fuzzy +msgid "Enable creative mode for all players" msgstr "Membolehkan mod kreatif untuk peta baru dicipta." #: src/settings_translation_file.cpp @@ -3166,9 +3166,8 @@ msgstr "" "bahagian tanah yang lebih rata, sesuai untuk lapisan tanah terapung pejal." #: src/settings_translation_file.cpp -#, fuzzy msgid "FPS when unfocused or paused" -msgstr "Bingkai per saat (FPS) maksima apabila permainan dijedakan." +msgstr "Bingkai per saat (FPS) apabila permainan hilang fokus atau dijedakan" #: src/settings_translation_file.cpp msgid "FSAA" @@ -3561,7 +3560,6 @@ msgid "HUD toggle key" msgstr "Kekunci menogol papar pandu (HUD)" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Handling for deprecated Lua API calls:\n" "- none: Do not log deprecated calls\n" @@ -3569,11 +3567,10 @@ msgid "" "- error: abort on usage of deprecated call (suggested for mod developers)." msgstr "" "Cara pengendalian panggilan API Lua yang terkecam:\n" -"- legacy: (cuba untuk) meniru tingkah laku yang lama (lalai untuk " -"terbitan).\n" -"- log: meniru dan menulis log runut balik kesemua panggilan terkecam " -"(lalai untuk nyahpepijat).\n" -"- error: gugurkan penggunaan panggilan terkecam (dicadangkan untuk " +"- none: Jangan log panggilan terkecam\n" +"- log: meniru dan menulis log runut balik bagi panggilan terkecam " +"(lalai).\n" +"- error: gugurkan penggunaan panggilan terkecam (digalakkan untuk " "pembangun mods)." #: src/settings_translation_file.cpp @@ -4106,9 +4103,8 @@ msgid "Joystick button repetition interval" msgstr "Selang masa pengulangan butang kayu bedik" #: src/settings_translation_file.cpp -#, fuzzy msgid "Joystick deadzone" -msgstr "Jenis kayu bedik" +msgstr "Zon mati kayu bedik" #: src/settings_translation_file.cpp msgid "Joystick frustum sensitivity" @@ -4213,13 +4209,12 @@ msgstr "" "html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Key for digging.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Kekunci untuk melompat.\n" +"Kekunci untuk menggali.\n" "Lihat http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" @@ -4366,13 +4361,12 @@ msgstr "" "html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Key for placing.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Kekunci untuk melompat.\n" +"Kekunci untuk meletak.\n" "Lihat http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" @@ -5143,11 +5137,11 @@ msgstr "Buatkan semua cecair menjadi legap" #: src/settings_translation_file.cpp msgid "Map Compression Level for Disk Storage" -msgstr "" +msgstr "Tahap Pemampatan Peta untuk Simpanan Cakera" #: src/settings_translation_file.cpp msgid "Map Compression Level for Network Transfer" -msgstr "" +msgstr "Tahap Pemampatan Peta untuk Pemindahan Rangkaian" #: src/settings_translation_file.cpp msgid "Map directory" @@ -5332,9 +5326,10 @@ msgid "Maximum FPS" msgstr "FPS maksima" #: src/settings_translation_file.cpp -#, fuzzy msgid "Maximum FPS when the window is not focused, or when the game is paused." -msgstr "Bingkai per saat (FPS) maksima apabila permainan dijedakan." +msgstr "" +"Bingkai per saat (FPS) maksimum apabila tetingkap tidak difokuskan, atau " +"apabila permainan dijedakan." #: src/settings_translation_file.cpp msgid "Maximum forceloaded blocks" @@ -5372,14 +5367,14 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Maximum number of blocks that can be queued for loading." -msgstr "Jumlah maksimum blok yang boleh dibaris gilirkan untuk dimuatkan." +msgstr "Jumlah maksimum blok yang boleh menunggu giliran untuk dimuatkan." #: src/settings_translation_file.cpp msgid "" "Maximum number of blocks to be queued that are to be generated.\n" "This limit is enforced per player." msgstr "" -"Jumlah maksimum blok untuk dibarisgilirkan untuk dijana.\n" +"Jumlah maksimum blok untuk menunggu giliran untuk dijana.\n" "Had ini dikuatkuasakan per pemain." #: src/settings_translation_file.cpp @@ -5387,7 +5382,7 @@ msgid "" "Maximum number of blocks to be queued that are to be loaded from file.\n" "This limit is enforced per player." msgstr "" -"Jumlah maksimum blok untuk dibarisgilirkan untuk dimuatkan daripada fail.\n" +"Jumlah maksimum blok untuk menunggu giliran untuk dimuatkan daripada fail.\n" "Had ini dikuatkuasakan per pemain." #: src/settings_translation_file.cpp @@ -5396,6 +5391,9 @@ msgid "" "be queued.\n" "This should be lower than curl_parallel_limit." msgstr "" +"Jumlah maksimum muat turun serempak. Muat turun melebihi had ini akan " +"ditunggu giliran.\n" +"Ini mestilah lebih rendah dari curl_parallel_limit." #: src/settings_translation_file.cpp msgid "Maximum number of forceloaded mapblocks." @@ -5809,14 +5807,12 @@ msgid "Pitch move mode" msgstr "Mod pergerakan pic" #: src/settings_translation_file.cpp -#, fuzzy msgid "Place key" -msgstr "Kekunci terbang" +msgstr "Kekunci letak" #: src/settings_translation_file.cpp -#, fuzzy msgid "Place repetition interval" -msgstr "Selang pengulangan klik kanan" +msgstr "Selang pengulangan perbuatan letak" #: src/settings_translation_file.cpp msgid "" @@ -6304,13 +6300,17 @@ msgid "Show entity selection boxes" msgstr "Tunjukkan kotak pemilihan entiti" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Show entity selection boxes\n" "A restart is required after changing this." msgstr "" -"Menetapkan bahasa. Biarkan kosong untuk menggunakan bahasa sistem.\n" -"Sebuah mula semula diperlukan selepas menukar tetapan ini." +"Tunjuk kotak pemilihan entiti\n" +"Anda perlu mulakan semula selepas mengubah tetapan ini." + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Show nametag backgrounds by default" +msgstr "Fon tebal secara lalainya" #: src/settings_translation_file.cpp msgid "Shutdown message" @@ -6595,9 +6595,8 @@ msgid "The URL for the content repository" msgstr "URL untuk repositori kandungan" #: src/settings_translation_file.cpp -#, fuzzy msgid "The deadzone of the joystick" -msgstr "Pengenal pasti kayu bedik yang digunakan" +msgstr "Zon mati bagi kayu bedik yang digunakan" #: src/settings_translation_file.cpp msgid "" @@ -6670,7 +6669,6 @@ msgstr "" "(active_object_send_range_blocks)." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "The rendering back-end for Irrlicht.\n" "A restart is required after changing this.\n" @@ -6681,12 +6679,10 @@ msgid "" msgstr "" "Terjemahan bahagian belakang untuk Irrlicht.\n" "Anda perlu memulakan semula selepas mengubah tetapan ini.\n" -"Nota: Di Android, kekalkan dengan OGLES1 jika tidak pasti! Aplikasi mungkin " -"tidak\n" -"boleh dimulakan jika menggunakan tetapan lain. Di platform lain, OpenGL " -"disyorkan,\n" -"dan ia ialah satu-satunya pemacu yang mempunyai sokongan pembayang ketika " -"ini." +"Nota: Di Android, kekalkan dengan OGLES1 jika tidak pasti! Apl mungkin gagal " +"dimulakan jika ditukar.\n" +"Di platform lain, OpenGL digalakkan.\n" +"Pembayang disokong oleh OpenGL (komputer sahaja) dan OGLES2 (dalam ujikaji)" #: src/settings_translation_file.cpp msgid "" @@ -6725,6 +6721,8 @@ msgid "" "The time budget allowed for ABMs to execute on each step\n" "(as a fraction of the ABM Interval)" msgstr "" +"Peruntukan masa yang dibenarkan untuk ABM dilakukan di setiap langkah\n" +"(sebagai pecahan dari selang masa ABM)" #: src/settings_translation_file.cpp msgid "" @@ -6735,14 +6733,12 @@ msgstr "" "apabila menekan kombinasi butang kayu bedik." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "The time in seconds it takes between repeated node placements when holding\n" "the place button." msgstr "" -"Jumlah masa dalam saat diambil untuk melakukan klik kanan yang berulang " -"apabila\n" -"pemain menekan butang tetikus kanan tanpa melepaskannya." +"Jumlah masa dalam saat diambil untuk meletakan nod yang berulang apabila\n" +"pemain menekan butang letak tanpa melepaskannya." #: src/settings_translation_file.cpp msgid "The type of joystick" @@ -6909,6 +6905,14 @@ msgid "" "If set to 0, MSAA is disabled.\n" "A restart is required after changing this option." msgstr "" +"Gunakan antialias pelbagai sampel (MSAA) untuk melembutkan sisi bongkah.\n" +"Algoritma ini melembutkan port pandangan 3D sambil mengekalkan ketajaman " +"imej,\n" +"tetapi ia tidak memberi kesan bahagian dalam sesuatu tekstur\n" +"(yang mana ia tampak lebih nyata dengan tekstur lutsinar).\n" +"Ruangan kosong akan kelihatan di antara nod apabila pembayang dilumpuhkan.\n" +"Jika ditetapkan ke 0, MSAA akan dilumpuhkan.\n" +"Anda perlu mulakan semula selepas mengubah pilihan ini." #: src/settings_translation_file.cpp msgid "Use trilinear filtering when scaling textures." @@ -7139,7 +7143,8 @@ msgstr "" "saiz tekstur minima untuk tekstur penyesuai-naikkan; nilai lebih tinggi " "tampak\n" "lebih tajam, tetapi memerlukan memori yang lebih banyak. Nilai kuasa 2\n" -"disyorkan. Menetapkan nilai ini lebih tinggi dari 1 tidak akan menampakkan\n" +"digalakkan. Menetapkan nilai ini lebih tinggi dari 1 tidak akan " +"menampakkan\n" "kesan yang nyata melainkan tapisan bilinear/trilinear/anisotropik " "dibolehkan.\n" "Ini juga digunakan sebagai saiz tekstur nod asas untuk autopenyesuaian\n" @@ -7156,6 +7161,12 @@ msgstr "" "digunakan." #: src/settings_translation_file.cpp +msgid "" +"Whether nametag backgrounds should be shown by default.\n" +"Mods may still set a background." +msgstr "" + +#: src/settings_translation_file.cpp msgid "Whether node texture animations should be desynchronized per mapblock." msgstr "" "Sama ada animasi tekstur nod perlu dinyahsegerakkan pada setiap blok peta." @@ -7319,6 +7330,11 @@ msgid "" "9 - best compression, slowest\n" "(levels 1-3 use Zlib's \"fast\" method, 4-9 use the normal method)" msgstr "" +"Tahap pemampatan ZLib untuk digunakan apabila menyimpan blokpeta ke cakera.\n" +"-1 - tahap pemampatan lalai Zlib\n" +"0 - tiada pemampatan, paling laju\n" +"9 - pemampatan terbaik, paling lambat\n" +"(tahap 1-3 menggunakan kaedah \"fast\" Zlib, 4-9 menggunakan kaedah biasa)" #: src/settings_translation_file.cpp msgid "" @@ -7328,6 +7344,12 @@ msgid "" "9 - best compression, slowest\n" "(levels 1-3 use Zlib's \"fast\" method, 4-9 use the normal method)" msgstr "" +"Tahap pemampatan ZLib untuk digunakan apabila menghantar blokpeta kepada " +"klien.\n" +"-1 - tahap pemampatan lalai Zlib\n" +"0 - tiada pemampatan, paling laju\n" +"9 - pemampatan terbaik, paling lambat\n" +"(tahap 1-3 menggunakan kaedah \"fast\" Zlib, 4-9 menggunakan kaedah biasa)" #: src/settings_translation_file.cpp msgid "cURL file download timeout" diff --git a/po/ms_Arab/minetest.po b/po/ms_Arab/minetest.po index 2520856c3..42d758b7d 100644 --- a/po/ms_Arab/minetest.po +++ b/po/ms_Arab/minetest.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: minetest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-01-30 21:13+0100\n" +"POT-Creation-Date: 2021-02-23 19:03+0100\n" "PO-Revision-Date: 2020-10-20 18:26+0000\n" "Last-Translator: Yaya - Nurul Azeera Hidayah @ Muhammad Nur Hidayat " "Yasuyoshi <translation@mnh48.moe>\n" @@ -711,6 +711,11 @@ msgid "Loading..." msgstr "Ø³Ø¯Ú Ù…Ù…ÙˆØ§ØªÚ©Ù†..." #: builtin/mainmenu/serverlistmgr.lua +#, fuzzy +msgid "Public server list is disabled" +msgstr "سکريڤ ڤيهق کليئن دلومڤوهکن" + +#: builtin/mainmenu/serverlistmgr.lua msgid "Try reenabling public serverlist and check your internet connection." msgstr "چوب اکتيÙÚ©Ù† سمولا سناراي ڤلاين عوام ÙØ§Ù† ڤريقسا Ø³Ù…Ø¨ÙˆÚ Ù† اينترنيت اندا." @@ -2948,7 +2953,8 @@ msgid "Enable console window" msgstr "ممبوليهکن ØªØªÙŠÚ Ú©Ú¤ کونسول" #: src/settings_translation_file.cpp -msgid "Enable creative mode for new created maps." +#, fuzzy +msgid "Enable creative mode for all players" msgstr "ممبوليهکن مود کرياتي٠اونتوق ڤتا بارو دچيڤتا." #: src/settings_translation_file.cpp @@ -6030,6 +6036,11 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp +#, fuzzy +msgid "Show nametag backgrounds by default" +msgstr "Ùون تبل سچارا لالايڽ" + +#: src/settings_translation_file.cpp msgid "Shutdown message" msgstr "ميسيج ڤنوتوڤن" @@ -6798,6 +6809,12 @@ msgstr "" "دکومڤيل برسام. جيک دلومڤوهکن⹠Ùون ڤتا بيت دان Ûيکتور XML اکن دݢوناکن." #: src/settings_translation_file.cpp +msgid "" +"Whether nametag backgrounds should be shown by default.\n" +"Mods may still set a background." +msgstr "" + +#: src/settings_translation_file.cpp msgid "Whether node texture animations should be desynchronized per mapblock." msgstr "سام اد انيماسي تيکستور نود ڤرلو دڽهسݢرقکن ڤد ستياڤ بلوک ڤتا." diff --git a/po/nb/minetest.po b/po/nb/minetest.po index b3d6ae154..3762509a4 100644 --- a/po/nb/minetest.po +++ b/po/nb/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Norwegian BokmÃ¥l (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-01-30 21:13+0100\n" +"POT-Creation-Date: 2021-02-23 19:03+0100\n" "PO-Revision-Date: 2021-01-10 01:32+0000\n" "Last-Translator: Allan Nordhøy <epost@anotheragency.no>\n" "Language-Team: Norwegian BokmÃ¥l <https://hosted.weblate.org/projects/" @@ -703,6 +703,11 @@ msgid "Loading..." msgstr "Laster..." #: builtin/mainmenu/serverlistmgr.lua +#, fuzzy +msgid "Public server list is disabled" +msgstr "Skripting er slÃ¥tt av pÃ¥ klientside" + +#: builtin/mainmenu/serverlistmgr.lua msgid "Try reenabling public serverlist and check your internet connection." msgstr "" "Prøv Ã¥ aktivere offentlig tjenerliste pÃ¥ nytt og sjekk Internettforbindelsen " @@ -2974,7 +2979,8 @@ msgid "Enable console window" msgstr "Skru pÃ¥ konsollvindu" #: src/settings_translation_file.cpp -msgid "Enable creative mode for new created maps." +#, fuzzy +msgid "Enable creative mode for all players" msgstr "Skru pÃ¥ kreativt modusfor nye opprettede kart." #: src/settings_translation_file.cpp @@ -5888,6 +5894,11 @@ msgstr "" "Krever omstart etter endring." #: src/settings_translation_file.cpp +#, fuzzy +msgid "Show nametag backgrounds by default" +msgstr "Fet skrifttype som forvalg" + +#: src/settings_translation_file.cpp msgid "Shutdown message" msgstr "Beskjed ved avslutning" @@ -6587,6 +6598,12 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp +msgid "" +"Whether nametag backgrounds should be shown by default.\n" +"Mods may still set a background." +msgstr "" + +#: src/settings_translation_file.cpp msgid "Whether node texture animations should be desynchronized per mapblock." msgstr "" diff --git a/po/nl/minetest.po b/po/nl/minetest.po index f2efafdc9..f1982536a 100644 --- a/po/nl/minetest.po +++ b/po/nl/minetest.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: Dutch (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-01-30 21:13+0100\n" -"PO-Revision-Date: 2021-01-25 20:32+0000\n" +"POT-Creation-Date: 2021-02-23 19:03+0100\n" +"PO-Revision-Date: 2021-02-01 05:52+0000\n" "Last-Translator: eol <joshua.de.clercq@gmail.com>\n" "Language-Team: Dutch <https://hosted.weblate.org/projects/minetest/minetest/" "nl/>\n" @@ -153,52 +153,52 @@ msgstr "aangeschakeld" #: builtin/mainmenu/dlg_contentstore.lua msgid "\"$1\" already exists. Would you like to overwrite it?" -msgstr "" +msgstr "\"$1\" bestaat al. Wilt u het overschrijven ?" #: builtin/mainmenu/dlg_contentstore.lua msgid "$1 and $2 dependencies will be installed." -msgstr "" +msgstr "Afhankelijkheden $1 en $2 zullen geïnstalleerd worden." #: builtin/mainmenu/dlg_contentstore.lua msgid "$1 by $2" -msgstr "" +msgstr "$1 door $2" #: builtin/mainmenu/dlg_contentstore.lua msgid "" "$1 downloading,\n" "$2 queued" msgstr "" +"$1 is aan het downloaden,\n" +"$2 is ingepland" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "$1 downloading..." -msgstr "Downloaden..." +msgstr "$1 is aan het downloaden..." #: builtin/mainmenu/dlg_contentstore.lua msgid "$1 required dependencies could not be found." -msgstr "" +msgstr "$1 benodigde afhankelijkheden werden niet gevonden." #: builtin/mainmenu/dlg_contentstore.lua msgid "$1 will be installed, and $2 dependencies will be skipped." msgstr "" +"$1 zal worden geïnstalleerd, en $2 afhankelijkheden worden overgeslagen." #: builtin/mainmenu/dlg_contentstore.lua msgid "All packages" msgstr "Alle pakketten" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "Already installed" -msgstr "Toets is al in gebruik" +msgstr "Reeds geïnstalleerd" #: builtin/mainmenu/dlg_contentstore.lua msgid "Back to Main Menu" msgstr "Terug naar hoofdmenu" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "Base Game:" -msgstr "Spel Hosten" +msgstr "Basis Spel:" #: builtin/mainmenu/dlg_contentstore.lua msgid "ContentDB is not available when Minetest was compiled without cURL" @@ -223,14 +223,12 @@ msgid "Install" msgstr "Installeren" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "Install $1" -msgstr "Installeren" +msgstr "Installeer $1" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "Install missing dependencies" -msgstr "Optionele afhankelijkheden:" +msgstr "Installeer ontbrekende afhankelijkheden" #: builtin/mainmenu/dlg_contentstore.lua #: builtin/mainmenu/dlg_settings_advanced.lua @@ -246,26 +244,24 @@ msgid "No results" msgstr "Geen resultaten" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "No updates" -msgstr "Update" +msgstr "Geen updates" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "Not found" -msgstr "Geluid dempen" +msgstr "Niet gevonden" #: builtin/mainmenu/dlg_contentstore.lua msgid "Overwrite" -msgstr "" +msgstr "Overschrijven" #: builtin/mainmenu/dlg_contentstore.lua msgid "Please check that the base game is correct." -msgstr "" +msgstr "Controleer of het basis spel correct is, aub." #: builtin/mainmenu/dlg_contentstore.lua msgid "Queued" -msgstr "" +msgstr "Ingepland" #: builtin/mainmenu/dlg_contentstore.lua msgid "Texture packs" @@ -281,11 +277,11 @@ msgstr "Update" #: builtin/mainmenu/dlg_contentstore.lua msgid "Update All [$1]" -msgstr "" +msgstr "Allemaal bijwerken [$1]" #: builtin/mainmenu/dlg_contentstore.lua msgid "View more information in a web browser" -msgstr "" +msgstr "Bekijk meer informatie in een webbrowser" #: builtin/mainmenu/dlg_create_world.lua msgid "A world named \"$1\" already exists" @@ -710,6 +706,11 @@ msgid "Loading..." msgstr "Laden..." #: builtin/mainmenu/serverlistmgr.lua +#, fuzzy +msgid "Public server list is disabled" +msgstr "Client-side scripting is uitgeschakeld" + +#: builtin/mainmenu/serverlistmgr.lua msgid "Try reenabling public serverlist and check your internet connection." msgstr "" "Probeer de publieke serverlijst opnieuw in te schakelen en controleer de " @@ -768,15 +769,16 @@ msgid "Credits" msgstr "Credits" #: builtin/mainmenu/tab_credits.lua -#, fuzzy msgid "Open User Data Directory" -msgstr "Selecteer map" +msgstr "Open de gebruikersdatamap" #: builtin/mainmenu/tab_credits.lua msgid "" "Opens the directory that contains user-provided worlds, games, mods,\n" "and texture packs in a file manager / explorer." msgstr "" +"Open de map die de door de gebruiker aangeleverde werelden, spellen, mods\n" +"en textuur pakketten bevat in een bestandsbeheer toepassing / verkenner." #: builtin/mainmenu/tab_credits.lua msgid "Previous Contributors" @@ -816,7 +818,7 @@ msgstr "Installeer spellen van ContentDB" #: builtin/mainmenu/tab_local.lua msgid "Name" -msgstr "" +msgstr "Naam" #: builtin/mainmenu/tab_local.lua msgid "New" @@ -827,9 +829,8 @@ msgid "No world created or selected!" msgstr "Geen wereldnaam opgegeven of geen wereld aangemaakt!" #: builtin/mainmenu/tab_local.lua -#, fuzzy msgid "Password" -msgstr "Nieuw wachtwoord" +msgstr "Wachtwoord" #: builtin/mainmenu/tab_local.lua msgid "Play Game" @@ -840,9 +841,8 @@ msgid "Port" msgstr "Poort" #: builtin/mainmenu/tab_local.lua -#, fuzzy msgid "Select Mods" -msgstr "Selecteer Wereld:" +msgstr "Selecteer Mods" #: builtin/mainmenu/tab_local.lua msgid "Select World:" @@ -994,9 +994,8 @@ msgid "Shaders" msgstr "Shaders" #: builtin/mainmenu/tab_settings.lua -#, fuzzy msgid "Shaders (experimental)" -msgstr "Zwevende eilanden (experimenteel)" +msgstr "Shaders (experimenteel)" #: builtin/mainmenu/tab_settings.lua msgid "Shaders (unavailable)" @@ -1196,7 +1195,7 @@ msgid "Continue" msgstr "Verder spelen" #: src/client/game.cpp -#, fuzzy, c-format +#, c-format msgid "" "Controls:\n" "- %s: move forwards\n" @@ -1219,12 +1218,12 @@ msgstr "" "-%s: ga naar links \n" "-%s: ga naar rechts \n" "-%s: springen / klimmen \n" +"-%s: graaf/duw\n" +"-%s: plaats/gebruik \n" "-%s: sluip / ga naar beneden \n" "-%s: drop item \n" "-%s: inventaris \n" "- Muis: draaien / kijken \n" -"- Muis links: graven / stoten \n" -"- Muis rechts: plaats / gebruik \n" "- Muiswiel: item selecteren \n" "-%s: chat\n" @@ -1753,19 +1752,18 @@ msgid "Minimap hidden" msgstr "Mini-kaart verborgen" #: src/client/minimap.cpp -#, fuzzy, c-format +#, c-format msgid "Minimap in radar mode, Zoom x%d" -msgstr "Mini-kaart in radar modus, Zoom x1" +msgstr "Mini-kaart in radar modus, Zoom x%d" #: src/client/minimap.cpp -#, fuzzy, c-format +#, c-format msgid "Minimap in surface mode, Zoom x%d" -msgstr "Minimap in oppervlaktemodus, Zoom x1" +msgstr "Minimap in oppervlaktemodus, Zoom x%d" #: src/client/minimap.cpp -#, fuzzy msgid "Minimap in texture mode" -msgstr "Minimale textuur-grootte" +msgstr "Minimap textuur modus" #: src/gui/guiConfirmRegistration.cpp src/gui/guiPasswordChange.cpp msgid "Passwords do not match!" @@ -2176,7 +2174,7 @@ msgstr "Interval voor ABM's" #: src/settings_translation_file.cpp msgid "ABM time budget" -msgstr "" +msgstr "ABM tijd budget" #: src/settings_translation_file.cpp msgid "Absolute limit of queued blocks to emerge" @@ -2688,7 +2686,7 @@ msgstr "ContentDB optie: verborgen pakketten lijst" #: src/settings_translation_file.cpp msgid "ContentDB Max Concurrent Downloads" -msgstr "" +msgstr "ContentDB Maximum Gelijktijdige Downloads" #: src/settings_translation_file.cpp msgid "ContentDB URL" @@ -2759,11 +2757,12 @@ msgid "Crosshair alpha" msgstr "Draadkruis-alphawaarde" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Crosshair alpha (opaqueness, between 0 and 255).\n" "Also controls the object crosshair color" -msgstr "Draadkruis-alphawaarde. (ondoorzichtigheid; tussen 0 en 255)." +msgstr "" +"Draadkruis-alphawaarde (ondoorzichtigheid; tussen 0 en 255).\n" +"Controleert ook het object draadkruis kleur" #: src/settings_translation_file.cpp msgid "Crosshair color" @@ -2774,6 +2773,8 @@ msgid "" "Crosshair color (R,G,B).\n" "Also controls the object crosshair color" msgstr "" +"Draadkruis kleur (R,G,B).\n" +"Controleert ook het object draadkruis kleur" #: src/settings_translation_file.cpp msgid "DPI" @@ -2956,9 +2957,8 @@ msgid "Desynchronize block animation" msgstr "Textuur-animaties niet synchroniseren" #: src/settings_translation_file.cpp -#, fuzzy msgid "Dig key" -msgstr "Toets voor rechts" +msgstr "Toets voor graven" #: src/settings_translation_file.cpp msgid "Digging particles" @@ -3025,7 +3025,8 @@ msgid "Enable console window" msgstr "Schakel het console venster in" #: src/settings_translation_file.cpp -msgid "Enable creative mode for new created maps." +#, fuzzy +msgid "Enable creative mode for all players" msgstr "Schakel creatieve modus in voor nieuwe kaarten." #: src/settings_translation_file.cpp @@ -3186,9 +3187,8 @@ msgstr "" "platte laaglanden, geschikt voor een solide zwevende eilanden laag." #: src/settings_translation_file.cpp -#, fuzzy msgid "FPS when unfocused or paused" -msgstr "Maximum FPS als het spel gepauzeerd is." +msgstr "FPS als het spel gepauzeerd of niet gefocussed is" #: src/settings_translation_file.cpp msgid "FSAA" @@ -3583,20 +3583,18 @@ msgid "HUD toggle key" msgstr "HUD aan/uitschakelen toets" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Handling for deprecated Lua API calls:\n" "- none: Do not log deprecated calls\n" "- log: mimic and log backtrace of deprecated call (default).\n" "- error: abort on usage of deprecated call (suggested for mod developers)." msgstr "" -"Behandeling van verouderde lua api aanroepen:\n" -"- legacy: (probeer) het oude gedrag na te bootsen\n" -" (standaard voor een 'release' versie).\n" -"- log: boots het oude gedrag na, en log een backtrace van de aanroep\n" -" (standaard voor een 'debug' versie).\n" -"- error: stop de server bij gebruik van een verouderde aanroep\n" -" (aanbevolen voor mod ontwikkelaars)." +"Behandeling van verouderde Lua API aanroepen:\n" +"- none: log geen verouderde aanroepen\n" +"- log: boots het oude gedrag na, en log een backtrace van de aanroep " +"(standaard voor een 'debug' versie).\n" +"- error: stop de server bij gebruik van een verouderde aanroep " +"(aanbevolen voor mod ontwikkelaars)." #: src/settings_translation_file.cpp msgid "" @@ -4131,9 +4129,8 @@ msgid "Joystick button repetition interval" msgstr "Joystick-knop herhalingsinterval" #: src/settings_translation_file.cpp -#, fuzzy msgid "Joystick deadzone" -msgstr "Joystick type" +msgstr "Joystick dode zone" #: src/settings_translation_file.cpp msgid "Joystick frustum sensitivity" @@ -4238,13 +4235,12 @@ msgstr "" "html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Key for digging.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Toets voor springen.\n" +"Toets voor graven.\n" "Zie http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" @@ -4391,13 +4387,12 @@ msgstr "" "html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Key for placing.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Toets voor springen.\n" +"Toets voor plaatsen.\n" "Zie http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" @@ -5171,11 +5166,11 @@ msgstr "Maak alle vloeistoffen ondoorzichtig" #: src/settings_translation_file.cpp msgid "Map Compression Level for Disk Storage" -msgstr "" +msgstr "Map compressie niveau voor het bewaren op de harde schijf" #: src/settings_translation_file.cpp msgid "Map Compression Level for Network Transfer" -msgstr "" +msgstr "Map compressie niveau voor netwerk transfert" #: src/settings_translation_file.cpp msgid "Map directory" @@ -5363,9 +5358,10 @@ msgid "Maximum FPS" msgstr "Maximum FPS" #: src/settings_translation_file.cpp -#, fuzzy msgid "Maximum FPS when the window is not focused, or when the game is paused." -msgstr "Maximum FPS als het spel gepauzeerd is." +msgstr "" +"Maximum FPS als het venster niet gefocussed is, of wanneer het spel " +"gepauzeerd is." #: src/settings_translation_file.cpp msgid "Maximum forceloaded blocks" @@ -5429,6 +5425,9 @@ msgid "" "be queued.\n" "This should be lower than curl_parallel_limit." msgstr "" +"Maximaal aantal gelijktijdige downloads. Downloads die deze limiet " +"overschrijden zullen in de wachtrij geplaats worden.\n" +"Deze instelling zou lager moeten zijn dan curl_parallel_limit." #: src/settings_translation_file.cpp msgid "Maximum number of forceloaded mapblocks." @@ -5867,14 +5866,12 @@ msgid "Pitch move mode" msgstr "Pitch beweeg modus" #: src/settings_translation_file.cpp -#, fuzzy msgid "Place key" -msgstr "Vliegen toets" +msgstr "Plaats toets" #: src/settings_translation_file.cpp -#, fuzzy msgid "Place repetition interval" -msgstr "Rechts-klik herhalingsinterval" +msgstr "Plaats (Rechts-klik) herhalingsinterval" #: src/settings_translation_file.cpp msgid "" @@ -6357,13 +6354,17 @@ msgid "Show entity selection boxes" msgstr "Toon selectie-box voor objecten" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Show entity selection boxes\n" "A restart is required after changing this." msgstr "" -"Stel de taal in. De systeem-taal wordt gebruikt indien leeg.\n" -"Een herstart is noodzakelijk om de nieuwe taal te activeren." +"Toon selectievakjes voor entiteiten\n" +"Een herstart is noodzakelijk om de wijziging te activeren." + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Show nametag backgrounds by default" +msgstr "Standaard vetgedrukt" #: src/settings_translation_file.cpp msgid "Shutdown message" @@ -6649,9 +6650,8 @@ msgid "The URL for the content repository" msgstr "De URL voor de inhoudsrepository" #: src/settings_translation_file.cpp -#, fuzzy msgid "The deadzone of the joystick" -msgstr "De identificatie van de stuurknuppel die u gebruikt" +msgstr "De dode zone van de stuurknuppel die u gebruikt" #: src/settings_translation_file.cpp msgid "" @@ -6727,7 +6727,6 @@ msgstr "" "Dit moet samen met active_object_send_range_blocks worden geconfigureerd." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "The rendering back-end for Irrlicht.\n" "A restart is required after changing this.\n" @@ -6740,8 +6739,9 @@ msgstr "" "Na het wijzigen hiervan is een herstart vereist. \n" "Opmerking: op Android, blijf bij OGLES1 als je het niet zeker weet! Anders " "start de app mogelijk niet. \n" -"Op andere platforms wordt OpenGL aanbevolen en het is de enige driver met \n" -"shader-ondersteuning momenteel." +"Op andere platformen wordt OpenGL aanbevolen.\n" +"OpenGL (alleen op desktop pc) en OGLES2 (experimenteel), zijn de enige " +"drivers met shader-ondersteuning momenteel" #: src/settings_translation_file.cpp msgid "" @@ -6779,6 +6779,8 @@ msgid "" "The time budget allowed for ABMs to execute on each step\n" "(as a fraction of the ABM Interval)" msgstr "" +"Het tijdsbudget dat toegestaan wordt aan ABM's om elke stap uit te voeren\n" +"(als een deel van het ABM interval)" #: src/settings_translation_file.cpp msgid "" @@ -6789,12 +6791,12 @@ msgstr "" " ingedrukt gehouden wordt." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "The time in seconds it takes between repeated node placements when holding\n" "the place button." msgstr "" -"De tijd in seconden tussen herhaalde rechts-klikken als de rechter muisknop\n" +"De tijd in seconden tussen herhaalde rechts-klikken als de plaats knop " +"(rechter muisknop)\n" "ingedrukt gehouden wordt." #: src/settings_translation_file.cpp @@ -6968,6 +6970,14 @@ msgid "" "If set to 0, MSAA is disabled.\n" "A restart is required after changing this option." msgstr "" +"Gebruik multi-sample anti-aliasing (MSAA) om de randen van de blokken glad " +"te maken.\n" +"Dit algoritme maakt de 3D viewport glad en houdt intussen het beeld scherp,\n" +"zonder de binnenkant van de texturen te wijzigen\n" +"(wat erg opvalt bij transparante texturen)\n" +"Zichtbare ruimtes verschijnen tussen nodes als de shaders uitgezet zijn.\n" +"Als de waarde op 0 staat, is MSAA uitgeschakeld.\n" +"Een herstart is nodig om deze wijziging te laten functioneren." #: src/settings_translation_file.cpp msgid "Use trilinear filtering when scaling textures." @@ -7210,6 +7220,12 @@ msgstr "" "worden." #: src/settings_translation_file.cpp +msgid "" +"Whether nametag backgrounds should be shown by default.\n" +"Mods may still set a background." +msgstr "" + +#: src/settings_translation_file.cpp msgid "Whether node texture animations should be desynchronized per mapblock." msgstr "Node-animaties in wereldblokken niet synchroniseren." @@ -7377,6 +7393,12 @@ msgid "" "9 - best compression, slowest\n" "(levels 1-3 use Zlib's \"fast\" method, 4-9 use the normal method)" msgstr "" +"Zlib compressie niveau om mapblokken op de harde schijf te bewaren.\n" +"-1: Zlib's standaard compressie niveau\n" +"0: geen compressie, snelst\n" +"9: maximale compressie, traagst\n" +"(niveau's 1 tot 3 gebruiken Zlib's snelle methode, 4 tot 9 gebruiken de " +"normale methode)" #: src/settings_translation_file.cpp msgid "" @@ -7386,6 +7408,12 @@ msgid "" "9 - best compression, slowest\n" "(levels 1-3 use Zlib's \"fast\" method, 4-9 use the normal method)" msgstr "" +"Zlib compressie niveau om mapblokken te versturen naar de client.\n" +"-1: Zlib's standaard compressie niveau\n" +"0: geen compressie, snelst\n" +"9: maximale compressie, traagst\n" +"(niveau's 1 tot 3 gebruiken Zlib's snelle methode, 4 tot 9 gebruiken de " +"normale methode)" #: src/settings_translation_file.cpp msgid "cURL file download timeout" diff --git a/po/nn/minetest.po b/po/nn/minetest.po index 2968d5a1a..4ad47fbf8 100644 --- a/po/nn/minetest.po +++ b/po/nn/minetest.po @@ -2,9 +2,9 @@ msgid "" msgstr "" "Project-Id-Version: Norwegian Nynorsk (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-01-30 21:13+0100\n" -"PO-Revision-Date: 2021-01-10 01:32+0000\n" -"Last-Translator: Allan Nordhøy <epost@anotheragency.no>\n" +"POT-Creation-Date: 2021-02-23 19:03+0100\n" +"PO-Revision-Date: 2021-02-20 05:50+0000\n" +"Last-Translator: Tor Egil Hoftun Kvæstad <toregilhk@hotmail.com>\n" "Language-Team: Norwegian Nynorsk <https://hosted.weblate.org/projects/" "minetest/minetest/nn/>\n" "Language: nn\n" @@ -12,7 +12,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.4.1-dev\n" +"X-Generator: Weblate 4.5\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" @@ -24,12 +24,11 @@ msgstr "Du døydde" #: builtin/fstk/dialog.lua builtin/fstk/ui.lua src/gui/modalMenu.cpp msgid "OK" -msgstr "" +msgstr "OK" #: builtin/fstk/ui.lua -#, fuzzy msgid "An error occurred in a Lua script:" -msgstr "Ein feil har skjedd med eit Lua manus, slik som ein mod:" +msgstr "Ein feil oppstod i eit LUA-skript:" #: builtin/fstk/ui.lua msgid "An error occurred:" @@ -41,11 +40,11 @@ msgstr "Hovudmeny" #: builtin/fstk/ui.lua msgid "Reconnect" -msgstr "Kople attende sambandet" +msgstr "Kople til igjen" #: builtin/fstk/ui.lua msgid "The server has requested a reconnect:" -msgstr "Tenarmaskinen ber om Ã¥ fÃ¥ forbindelsen attende:" +msgstr "Tenaren har førespurt Ã¥ kople til igjen:" #: builtin/mainmenu/common.lua msgid "Protocol version mismatch. " @@ -53,19 +52,19 @@ msgstr "Protkoll versjon bommert. " #: builtin/mainmenu/common.lua msgid "Server enforces protocol version $1. " -msgstr "Tenarmaskinen krevjar protokoll versjon $1. " +msgstr "Tenaren krev protokoll versjon $1. " #: builtin/mainmenu/common.lua msgid "Server supports protocol versions between $1 and $2. " -msgstr "Tenarmaskinen støttar protokoll versjonar mellom $1 og $2. " +msgstr "Tenaren støtter protokollversjonar mellom $1 og $2. " #: builtin/mainmenu/common.lua msgid "We only support protocol version $1." -msgstr "Vi støttar berre protokoll versjon $1." +msgstr "Me støtter berre protokoll versjon $1." #: builtin/mainmenu/common.lua msgid "We support protocol versions between version $1 and $2." -msgstr "Vi støttar protokoll versjonar mellom $1 og $2." +msgstr "Me støtter protokollversjonar mellom $1 og $2." #: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_contentstore.lua #: builtin/mainmenu/dlg_create_world.lua @@ -85,62 +84,59 @@ msgstr "Avhengigheiter:" #: builtin/mainmenu/dlg_config_world.lua msgid "Disable all" -msgstr "Deaktiver allt" +msgstr "Deaktiver alt" #: builtin/mainmenu/dlg_config_world.lua msgid "Disable modpack" -msgstr "Deaktivere modifikasjons-pakka" +msgstr "Deaktiver modifikasjonspakken" #: builtin/mainmenu/dlg_config_world.lua msgid "Enable all" -msgstr "Aktiver allt" +msgstr "Aktiver alt" #: builtin/mainmenu/dlg_config_world.lua msgid "Enable modpack" -msgstr "Aktiver modifikasjons-pakka" +msgstr "Aktiver modifikasjonspakken" #: builtin/mainmenu/dlg_config_world.lua msgid "" "Failed to enable mod \"$1\" as it contains disallowed characters. Only " "characters [a-z0-9_] are allowed." msgstr "" -"FÃ¥fengt Ã¥ aktivere modifikasjon \"$1\" sia den innehald ugyldige teikn. " -"Berre teikna [a-z0-9_] e tillaten." +"Klarte ikkje Ã¥ aktivere modifikasjon «$1», dÃ¥ den inneheld ugyldige teikn. " +"Berre teikna [a-z0-9_] er tillatne." #: builtin/mainmenu/dlg_config_world.lua msgid "Find More Mods" -msgstr "" +msgstr "Finn fleire modifikasjonar" #: builtin/mainmenu/dlg_config_world.lua msgid "Mod:" msgstr "Modifikasjon:" #: builtin/mainmenu/dlg_config_world.lua -#, fuzzy msgid "No (optional) dependencies" -msgstr "Valgbare avhengigheiter:" +msgstr "Ingen (valfrie) avhengigheiter" #: builtin/mainmenu/dlg_config_world.lua msgid "No game description provided." msgstr "Ikkje nokon spill skildring e sørgja for." #: builtin/mainmenu/dlg_config_world.lua -#, fuzzy msgid "No hard dependencies" -msgstr "Ikkje nokon avhengigheiter." +msgstr "Ingen obligatoriske avhengigheiter" #: builtin/mainmenu/dlg_config_world.lua msgid "No modpack description provided." msgstr "Ikkje noko modifikasjons-pakke skildring e sørgja for." #: builtin/mainmenu/dlg_config_world.lua -#, fuzzy msgid "No optional dependencies" -msgstr "Valgbare avhengigheiter:" +msgstr "Ingen valfrie avhengigheiter" #: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_content.lua msgid "Optional dependencies:" -msgstr "Valgbare avhengigheiter:" +msgstr "Valfrie avhengigheiter:" #: builtin/mainmenu/dlg_config_world.lua #: builtin/mainmenu/dlg_settings_advanced.lua src/gui/guiKeyChangeMenu.cpp @@ -149,19 +145,19 @@ msgstr "Lagre" #: builtin/mainmenu/dlg_config_world.lua msgid "World:" -msgstr "Verda:" +msgstr "Verd:" #: builtin/mainmenu/dlg_config_world.lua msgid "enabled" -msgstr "Aktivert" +msgstr "aktivert" #: builtin/mainmenu/dlg_contentstore.lua msgid "\"$1\" already exists. Would you like to overwrite it?" -msgstr "" +msgstr "«$1» eksisterer allereie. Vil du overskrive den?" #: builtin/mainmenu/dlg_contentstore.lua msgid "$1 and $2 dependencies will be installed." -msgstr "" +msgstr "$1 og $2 avhengigheiter vil verte installerte." #: builtin/mainmenu/dlg_contentstore.lua msgid "$1 by $2" @@ -174,39 +170,36 @@ msgid "" msgstr "" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "$1 downloading..." -msgstr "Laster ned..." +msgstr "$1 lastar ned …" #: builtin/mainmenu/dlg_contentstore.lua msgid "$1 required dependencies could not be found." -msgstr "" +msgstr "$1 obligatoriske avhengigheiter vart ikkje funne." #: builtin/mainmenu/dlg_contentstore.lua msgid "$1 will be installed, and $2 dependencies will be skipped." -msgstr "" +msgstr "$1 vil verte installert, og $2 avhengigheiter vil verte hoppa over." #: builtin/mainmenu/dlg_contentstore.lua msgid "All packages" msgstr "Alle pakker" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "Already installed" -msgstr "Knapp er allereie i bruk" +msgstr "Allereie installert" #: builtin/mainmenu/dlg_contentstore.lua msgid "Back to Main Menu" msgstr "Attende til hovudmeny" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "Base Game:" -msgstr "Bli husvert" +msgstr "Basisspel:" #: builtin/mainmenu/dlg_contentstore.lua msgid "ContentDB is not available when Minetest was compiled without cURL" -msgstr "" +msgstr "ContentDB er ikkje tilgjengeleg nÃ¥r Minetest vart kompilert utan cURL" #: builtin/mainmenu/dlg_contentstore.lua #, fuzzy @@ -215,7 +208,7 @@ msgstr "Laster ned..." #: builtin/mainmenu/dlg_contentstore.lua msgid "Failed to download $1" -msgstr "FÃ¥fengt Ã¥ laste ned $1" +msgstr "Klarte ikkje Ã¥ laste ned $1" #: builtin/mainmenu/dlg_contentstore.lua #: builtin/mainmenu/dlg_settings_advanced.lua @@ -227,44 +220,41 @@ msgid "Install" msgstr "Installer" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "Install $1" -msgstr "Installer" +msgstr "Installer $1" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "Install missing dependencies" -msgstr "Valgbare avhengigheiter:" +msgstr "Installer manglande avhengigheiter" #: builtin/mainmenu/dlg_contentstore.lua #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Mods" -msgstr "Modder" +msgstr "Modifikasjonar" #: builtin/mainmenu/dlg_contentstore.lua msgid "No packages could be retrieved" -msgstr "Ikkje nokon pakkar kunne bli henta" +msgstr "Ingen pakkar kunne verte henta" #: builtin/mainmenu/dlg_contentstore.lua msgid "No results" -msgstr "Ikkje noko resultat" +msgstr "Ingen resultat" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "No updates" -msgstr "Oppdater" +msgstr "Ingen oppdateringar" #: builtin/mainmenu/dlg_contentstore.lua msgid "Not found" -msgstr "" +msgstr "Ikkje funnen" #: builtin/mainmenu/dlg_contentstore.lua msgid "Overwrite" -msgstr "" +msgstr "Overskriv" #: builtin/mainmenu/dlg_contentstore.lua msgid "Please check that the base game is correct." -msgstr "" +msgstr "Ver venleg Ã¥ sjekke at basisspelet er korrekt." #: builtin/mainmenu/dlg_contentstore.lua msgid "Queued" @@ -284,19 +274,19 @@ msgstr "Oppdater" #: builtin/mainmenu/dlg_contentstore.lua msgid "Update All [$1]" -msgstr "" +msgstr "Oppdater alt [$1]" #: builtin/mainmenu/dlg_contentstore.lua msgid "View more information in a web browser" -msgstr "" +msgstr "SjÃ¥ meir informasjon i ein nettlesar" #: builtin/mainmenu/dlg_create_world.lua msgid "A world named \"$1\" already exists" -msgstr "Ein verd med namnet \"$1\" finns allereie" +msgstr "Ein verd med namnet «$1» eksisterer allereie" #: builtin/mainmenu/dlg_create_world.lua msgid "Additional terrain" -msgstr "" +msgstr "Ytterlegare terreng" #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp msgid "Altitude chill" @@ -312,11 +302,11 @@ msgstr "" #: builtin/mainmenu/dlg_create_world.lua msgid "Biomes" -msgstr "" +msgstr "Biom" #: builtin/mainmenu/dlg_create_world.lua msgid "Caverns" -msgstr "" +msgstr "Holer" #: builtin/mainmenu/dlg_create_world.lua #, fuzzy @@ -328,17 +318,16 @@ msgid "Create" msgstr "Skap" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Decorations" -msgstr "Informasjon:" +msgstr "Dekorasjonar" #: builtin/mainmenu/dlg_create_world.lua msgid "Download a game, such as Minetest Game, from minetest.net" -msgstr "Last ned eit spel, sÃ¥nn som Minetest spellet, ifrÃ¥ minetest.net" +msgstr "Last ned eit spel, slik som Minetest-spelet, frÃ¥ minetest.net" #: builtin/mainmenu/dlg_create_world.lua msgid "Download one from minetest.net" -msgstr "Last eit ned pÃ¥ minetest.net" +msgstr "Last ned eit frÃ¥ minetest.net" #: builtin/mainmenu/dlg_create_world.lua msgid "Dungeons" @@ -346,15 +335,15 @@ msgstr "" #: builtin/mainmenu/dlg_create_world.lua msgid "Flat terrain" -msgstr "" +msgstr "Flatt terreng" #: builtin/mainmenu/dlg_create_world.lua msgid "Floating landmasses in the sky" -msgstr "" +msgstr "Svevande landmassar pÃ¥ himmelen" #: builtin/mainmenu/dlg_create_world.lua msgid "Floatlands (experimental)" -msgstr "" +msgstr "Flyteland (eksperimentell)" #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp msgid "Game" @@ -362,11 +351,11 @@ msgstr "Spel" #: builtin/mainmenu/dlg_create_world.lua msgid "Generate non-fractal terrain: Oceans and underground" -msgstr "" +msgstr "Generer ikkjefraktalterreng: Hav og undergrunn" #: builtin/mainmenu/dlg_create_world.lua msgid "Hills" -msgstr "" +msgstr "Haugar" #: builtin/mainmenu/dlg_create_world.lua msgid "Humid rivers" @@ -374,15 +363,15 @@ msgstr "" #: builtin/mainmenu/dlg_create_world.lua msgid "Increases humidity around rivers" -msgstr "" +msgstr "Aukar fuktigheita rundt elver" #: builtin/mainmenu/dlg_create_world.lua msgid "Lakes" -msgstr "" +msgstr "Sjøar" #: builtin/mainmenu/dlg_create_world.lua msgid "Low humidity and high heat causes shallow or dry rivers" -msgstr "" +msgstr "LÃ¥g fuktigheit og høg temperatur fører til grunne eller tørre elver" #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp msgid "Mapgen" @@ -398,15 +387,15 @@ msgstr "" #: builtin/mainmenu/dlg_create_world.lua msgid "Mountains" -msgstr "" +msgstr "Fjell" #: builtin/mainmenu/dlg_create_world.lua msgid "Mud flow" -msgstr "" +msgstr "Leireflyt" #: builtin/mainmenu/dlg_create_world.lua msgid "Network of tunnels and caves" -msgstr "" +msgstr "Nettverk av tunellar og holer" #: builtin/mainmenu/dlg_create_world.lua msgid "No game selected" @@ -422,11 +411,11 @@ msgstr "" #: builtin/mainmenu/dlg_create_world.lua msgid "Rivers" -msgstr "" +msgstr "Elver" #: builtin/mainmenu/dlg_create_world.lua msgid "Sea level rivers" -msgstr "" +msgstr "Elver pÃ¥ havnivÃ¥" #: builtin/mainmenu/dlg_create_world.lua #: builtin/mainmenu/dlg_settings_advanced.lua @@ -449,15 +438,15 @@ msgstr "" #: builtin/mainmenu/dlg_create_world.lua msgid "Temperate, Desert" -msgstr "" +msgstr "Temperert, Ørken" #: builtin/mainmenu/dlg_create_world.lua msgid "Temperate, Desert, Jungle" -msgstr "" +msgstr "Temperert, Ørken, Jungel" #: builtin/mainmenu/dlg_create_world.lua msgid "Temperate, Desert, Jungle, Tundra, Taiga" -msgstr "" +msgstr "Temperert, Ørken, Jungel, Tundra, Taiga" #: builtin/mainmenu/dlg_create_world.lua msgid "Terrain surface erosion" @@ -465,15 +454,15 @@ msgstr "" #: builtin/mainmenu/dlg_create_world.lua msgid "Trees and jungle grass" -msgstr "" +msgstr "Tre og jungelgras" #: builtin/mainmenu/dlg_create_world.lua msgid "Vary river depth" -msgstr "" +msgstr "Varier elvedjupne" #: builtin/mainmenu/dlg_create_world.lua msgid "Very large caverns deep in the underground" -msgstr "" +msgstr "Svært store holer djupt i undergrunnen" #: builtin/mainmenu/dlg_create_world.lua #, fuzzy @@ -490,7 +479,7 @@ msgstr "Du har ikkje installert noko spel." #: builtin/mainmenu/dlg_delete_content.lua msgid "Are you sure you want to delete \"$1\"?" -msgstr "Er du sikker pÃ¥ at du har lyst til Ã¥ slette \"$1\"?" +msgstr "Er du sikker pÃ¥ at du vil slette «$1»?" #: builtin/mainmenu/dlg_delete_content.lua #: builtin/mainmenu/dlg_delete_world.lua builtin/mainmenu/tab_local.lua @@ -500,23 +489,23 @@ msgstr "Slett" #: builtin/mainmenu/dlg_delete_content.lua msgid "pkgmgr: failed to delete \"$1\"" -msgstr "pkgmgr: sletting av \"$1\" gjekk ikkje" +msgstr "pkgmgr: klarte ikkje Ã¥ slette «$1»" #: builtin/mainmenu/dlg_delete_content.lua msgid "pkgmgr: invalid path \"$1\"" -msgstr "pkgmgr: ugyldig rute \"$1\"" +msgstr "pkgmgr: ugyldig sti «$1»" #: builtin/mainmenu/dlg_delete_world.lua msgid "Delete World \"$1\"?" -msgstr "Slett verd \"$1\"?" +msgstr "Slett verd «$1»?" #: builtin/mainmenu/dlg_rename_modpack.lua msgid "Accept" -msgstr "Akseptér" +msgstr "Aksepter" #: builtin/mainmenu/dlg_rename_modpack.lua msgid "Rename Modpack:" -msgstr "Omdøp Modpakka:" +msgstr "Døyp om modifikasjonspakken:" #: builtin/mainmenu/dlg_rename_modpack.lua msgid "" @@ -532,11 +521,11 @@ msgstr "(Ikkje nokon skildring gjeven)" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "2D Noise" -msgstr "To-dimensjonal lyd" +msgstr "2D-støy" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "< Back to Settings page" -msgstr "< Attende til innstillingar" +msgstr "< Tilbake til innstillingssida" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Browse" @@ -592,11 +581,11 @@ msgstr "Søk" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Select directory" -msgstr "Velje ein mappe" +msgstr "Vel katalog" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Select file" -msgstr "Velje eit dokument" +msgstr "Vel fil" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Show technical names" @@ -604,11 +593,11 @@ msgstr "Vis tekniske namn" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "The value must be at least $1." -msgstr "Verdien mÃ¥ i det minste være $1." +msgstr "Verdien mÃ¥ minst vere $1." #: builtin/mainmenu/dlg_settings_advanced.lua msgid "The value must not be larger than $1." -msgstr "Verdien mÃ¥ ikkje være høgare enn $1." +msgstr "Verdien mÃ¥ ikkje vere større enn $1." #: builtin/mainmenu/dlg_settings_advanced.lua msgid "X" @@ -647,7 +636,7 @@ msgstr "Absolutt verdi" #. for noise settings in main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "defaults" -msgstr "Standard" +msgstr "standardar" #. ~ "eased" is a noise parameter flag. #. It is used to make the map smoother and @@ -663,35 +652,37 @@ msgstr "$1 (Aktivert)" #: builtin/mainmenu/pkgmgr.lua msgid "$1 mods" -msgstr "$1 modder" +msgstr "$1 modifikasjonar" #: builtin/mainmenu/pkgmgr.lua msgid "Failed to install $1 to $2" -msgstr "Funka ikkje Ã¥ installere $1 til $2" +msgstr "Klarte ikkje Ã¥ installere $1 til $2" #: builtin/mainmenu/pkgmgr.lua msgid "Install Mod: Unable to find real mod name for: $1" msgstr "" -"Installer modifikasjon: Funka ikkje Ã¥ finne eit ekte modifikasjons namn for: " -"$1" +"Installer modifikasjon: Klarte ikkje Ã¥ finne det reelle modifikasjonsnamnet " +"for: $1" #: builtin/mainmenu/pkgmgr.lua msgid "Install Mod: Unable to find suitable folder name for modpack $1" msgstr "" -"Installer Modifikasjon: Funka ikkje Ã¥ finne ein passande for modpakke $1" +"Installer modifikasjon: Klarte ikkje Ã¥ finne ein passande katalog for " +"modifikasjonspakke $1" #: builtin/mainmenu/pkgmgr.lua +#, fuzzy msgid "Install: Unsupported file type \"$1\" or broken archive" msgstr "" "Installer: Ikkje-støtta dokument type \"$1\" eller sÃ¥ funker ikkje arkivet" #: builtin/mainmenu/pkgmgr.lua msgid "Install: file: \"$1\"" -msgstr "Installer: dokument: \"$1\"" +msgstr "Installer: fil: «$1»" #: builtin/mainmenu/pkgmgr.lua msgid "Unable to find a valid mod or modpack" -msgstr "Funka ikkje Ã¥ finne ein gyldig modifikasjon eller mod-pakke" +msgstr "Klarte ikkje Ã¥ finne ein gyldig modifikasjon eller modifikasjonspakke" #: builtin/mainmenu/pkgmgr.lua msgid "Unable to install a $1 as a texture pack" @@ -711,9 +702,15 @@ msgstr "Funka ikkje Ã¥ installere mod-pakka som ein $1" #: builtin/mainmenu/serverlistmgr.lua src/client/game.cpp msgid "Loading..." -msgstr "Laster ned..." +msgstr "Lastar …" + +#: builtin/mainmenu/serverlistmgr.lua +#, fuzzy +msgid "Public server list is disabled" +msgstr "Klient side-skildring er av" #: builtin/mainmenu/serverlistmgr.lua +#, fuzzy msgid "Try reenabling public serverlist and check your internet connection." msgstr "" "Forsøkje Ã¥ kople attende den offentlege tenarmaskin-lista og sjekk sambands " @@ -729,7 +726,7 @@ msgstr "Innhald" #: builtin/mainmenu/tab_content.lua msgid "Disable Texture Pack" -msgstr "Deaktivér tekstur pakke" +msgstr "Deaktiver teksturpakke" #: builtin/mainmenu/tab_content.lua msgid "Information:" @@ -737,15 +734,15 @@ msgstr "Informasjon:" #: builtin/mainmenu/tab_content.lua msgid "Installed Packages:" -msgstr "Installer pakker:" +msgstr "Installerte pakker:" #: builtin/mainmenu/tab_content.lua msgid "No dependencies." -msgstr "Ikkje nokon avhengigheiter." +msgstr "Ingen avhengigheiter." #: builtin/mainmenu/tab_content.lua msgid "No package description available" -msgstr "Ikkje nokon pakke skildring tilgjengelig" +msgstr "Inga pakkeskildring tilgjengeleg" #: builtin/mainmenu/tab_content.lua msgid "Rename" @@ -757,15 +754,15 @@ msgstr "Avinstallér pakka" #: builtin/mainmenu/tab_content.lua msgid "Use Texture Pack" -msgstr "Bruk tekstur pakke" +msgstr "Bruk teksturpakke" #: builtin/mainmenu/tab_credits.lua msgid "Active Contributors" -msgstr "Aktive bidragere" +msgstr "Aktive bidragsytarar" #: builtin/mainmenu/tab_credits.lua msgid "Core Developers" -msgstr "Kjerne-utviklere" +msgstr "Kjerne-utviklarar" #: builtin/mainmenu/tab_credits.lua msgid "Credits" @@ -784,11 +781,11 @@ msgstr "" #: builtin/mainmenu/tab_credits.lua msgid "Previous Contributors" -msgstr "Førre bidragere" +msgstr "Tidlegare bidragsytarar" #: builtin/mainmenu/tab_credits.lua msgid "Previous Core Developers" -msgstr "Førre kjerne-utviklere" +msgstr "Tidlegare kjerne-utviklarar" #: builtin/mainmenu/tab_local.lua msgid "Announce Server" @@ -807,20 +804,22 @@ msgid "Enable Damage" msgstr "Aktivér skading" #: builtin/mainmenu/tab_local.lua +#, fuzzy msgid "Host Game" msgstr "Bli husvert" #: builtin/mainmenu/tab_local.lua +#, fuzzy msgid "Host Server" msgstr "Bli tenarmaskin's vert" #: builtin/mainmenu/tab_local.lua msgid "Install games from ContentDB" -msgstr "" +msgstr "Installer spel frÃ¥ ContentDB" #: builtin/mainmenu/tab_local.lua msgid "Name" -msgstr "" +msgstr "Namn" #: builtin/mainmenu/tab_local.lua msgid "New" @@ -828,12 +827,11 @@ msgstr "Ny" #: builtin/mainmenu/tab_local.lua msgid "No world created or selected!" -msgstr "Ikkje noko verd skapt eller valgt!" +msgstr "Inga verd skapt eller valt!" #: builtin/mainmenu/tab_local.lua -#, fuzzy msgid "Password" -msgstr "Nytt passord" +msgstr "Passord" #: builtin/mainmenu/tab_local.lua msgid "Play Game" @@ -844,9 +842,8 @@ msgid "Port" msgstr "Port" #: builtin/mainmenu/tab_local.lua -#, fuzzy msgid "Select Mods" -msgstr "Vel verd:" +msgstr "Vel modifikasjonar" #: builtin/mainmenu/tab_local.lua msgid "Select World:" @@ -854,7 +851,7 @@ msgstr "Vel verd:" #: builtin/mainmenu/tab_local.lua msgid "Server Port" -msgstr "Tenarmaskin port" +msgstr "Tenarport" #: builtin/mainmenu/tab_local.lua msgid "Start Game" @@ -862,7 +859,7 @@ msgstr "Start spel" #: builtin/mainmenu/tab_online.lua msgid "Address / Port" -msgstr "Stad/port" +msgstr "Adresse / port" #: builtin/mainmenu/tab_online.lua msgid "Connect" @@ -926,6 +923,7 @@ msgid "Antialiasing:" msgstr "Kantutjemning:" #: builtin/mainmenu/tab_settings.lua +#, fuzzy msgid "Autosave Screen Size" msgstr "Automatisk sjerm størrelse" @@ -962,10 +960,12 @@ msgid "No Mipmap" msgstr "Ingen Mipkart" #: builtin/mainmenu/tab_settings.lua +#, fuzzy msgid "Node Highlighting" msgstr "Knute-fremheving" #: builtin/mainmenu/tab_settings.lua +#, fuzzy msgid "Node Outlining" msgstr "Knute-utlinjing" @@ -983,17 +983,18 @@ msgstr "Ugjennomsiktig vatn" #: builtin/mainmenu/tab_settings.lua msgid "Particles" -msgstr "Partikkler" +msgstr "Partiklar" #: builtin/mainmenu/tab_settings.lua msgid "Screen:" -msgstr "Sjerm:" +msgstr "Skjerm:" #: builtin/mainmenu/tab_settings.lua msgid "Settings" msgstr "Innstillingar" #: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +#, fuzzy msgid "Shaders" msgstr "Dybdeskaper" @@ -1003,6 +1004,7 @@ msgid "Shaders (experimental)" msgstr "Dybdeskaper (ikkje tilgjengelig)" #: builtin/mainmenu/tab_settings.lua +#, fuzzy msgid "Shaders (unavailable)" msgstr "Dybdeskaper (ikkje tilgjengelig)" @@ -1019,10 +1021,12 @@ msgid "Texturing:" msgstr "Teksturering:" #: builtin/mainmenu/tab_settings.lua +#, fuzzy msgid "To enable shaders the OpenGL driver needs to be used." msgstr "For Ã¥ aktivere skumrings-effekt sÃ¥ mÃ¥ OpenGL driveren være i bruk." #: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +#, fuzzy msgid "Tone Mapping" msgstr "Tone kartlegging" @@ -1035,6 +1039,7 @@ msgid "Trilinear Filter" msgstr "Tri-lineær filtréring" #: builtin/mainmenu/tab_settings.lua +#, fuzzy msgid "Waving Leaves" msgstr "Raslende lauv" @@ -1044,6 +1049,7 @@ msgid "Waving Liquids" msgstr "Raslende lauv" #: builtin/mainmenu/tab_settings.lua +#, fuzzy msgid "Waving Plants" msgstr "Raslende planter" @@ -1061,23 +1067,24 @@ msgstr "Førebur noder" #: src/client/client.cpp msgid "Initializing nodes..." -msgstr "Førebur node..." +msgstr "Førebur nodar …" #: src/client/client.cpp msgid "Loading textures..." -msgstr "Lastar teksturar..." +msgstr "Lastar teksturar …" #: src/client/client.cpp +#, fuzzy msgid "Rebuilding shaders..." msgstr "Gjennbygger dybdeskaper..." #: src/client/clientlauncher.cpp msgid "Connection error (timed out?)" -msgstr "Kopling gikk galen (Tidsavbrott?)" +msgstr "Tilkoplingsfeil (Tidsavbrot?)" #: src/client/clientlauncher.cpp msgid "Could not find or load game \"" -msgstr "Kunne ikkje finne eller ha i gang spelet \"" +msgstr "Kunne ikkje finne eller laste spelet \"" #: src/client/clientlauncher.cpp msgid "Invalid gamespec." @@ -1088,8 +1095,9 @@ msgid "Main Menu" msgstr "Hovudmeny" #: src/client/clientlauncher.cpp +#, fuzzy msgid "No world selected and no address provided. Nothing to do." -msgstr "Ingen verd valgt og ikkje nokon adresse valg. Ikkje noko Ã¥ gjere." +msgstr "Inga verd er vald og ikkje nokon adresse valg. Ikkje noko Ã¥ gjere." #: src/client/clientlauncher.cpp msgid "Player name too long." @@ -1097,13 +1105,15 @@ msgstr "Spelarnamn for langt." #: src/client/clientlauncher.cpp msgid "Please choose a name!" -msgstr "Ver vennleg og velje eit anna namn!" +msgstr "Ver venleg Ã¥ velje eit namn!" #: src/client/clientlauncher.cpp +#, fuzzy msgid "Provided password file failed to open: " msgstr "Passord dokumentet du ga gÃ¥r ikkje an Ã¥ Ã¥pne: " #: src/client/clientlauncher.cpp +#, fuzzy msgid "Provided world path doesn't exist: " msgstr "Verds-ruta du ga finnes ikkje: " @@ -1132,6 +1142,7 @@ msgid "- Address: " msgstr "- Adresse: " #: src/client/game.cpp +#, fuzzy msgid "- Creative Mode: " msgstr "- Gude løyving: " @@ -1158,7 +1169,7 @@ msgstr "- Spelar mot spelar (PvP): " #: src/client/game.cpp msgid "- Server Name: " -msgstr "- Tenarmaskin namn: " +msgstr "- Tenarnamn: " #: src/client/game.cpp msgid "Automatic forward disabled" @@ -1198,10 +1209,10 @@ msgstr "Kopler til tenarmaskin..." #: src/client/game.cpp msgid "Continue" -msgstr "Fortsetja" +msgstr "Fortset" #: src/client/game.cpp -#, fuzzy, c-format +#, c-format msgid "" "Controls:\n" "- %s: move forwards\n" @@ -1219,19 +1230,19 @@ msgid "" "- %s: chat\n" msgstr "" "Styring:\n" -"- %s: Framsteg\n" -"- %s: Baksteg\n" -"- %s: Sidesteg mot venstre\n" -"- %s: Sidesteg mot høyre\n" -"- %s: hopp/klatre\n" -"- %s: snike seg rundt/bøye seg\n" -"- %s: slipp gjennstand\n" +"- %s: gÃ¥ framover\n" +"- %s: gÃ¥ bakover\n" +"- %s: gÃ¥ mot venstre\n" +"- %s: gÃ¥ mot høgre\n" +"- %s: hopp/klatre opp\n" +"- %s: grav/slÃ¥\n" +"- %s: plasser/nytt\n" +"- %s: snik/klatre ned\n" +"- %s: slepp ting\n" "- %s: inventar\n" -"- Datamus: snu seg/sjÃ¥ rundt\n" -"- Datamus, venstre klikk: grave/slÃ¥\n" -"- Datamus, høgre klikk: plassér/bruk\n" -"- Datamus, skrolle-hjul: select item\n" -"- %s: skravlerør\n" +"- Mus: snu deg/sjÃ¥\n" +"- Musehjul: vel ting\n" +"- %s: nettprat\n" #: src/client/game.cpp msgid "Creating client..." @@ -1424,7 +1435,7 @@ msgstr "Lyd e dempa" #: src/client/game.cpp msgid "Sound system is disabled" -msgstr "" +msgstr "Lydsystemet er slÃ¥tt av" #: src/client/game.cpp msgid "Sound system is not supported on this build" @@ -1759,14 +1770,14 @@ msgid "Minimap hidden" msgstr "Minikart er gøymt" #: src/client/minimap.cpp -#, fuzzy, c-format +#, c-format msgid "Minimap in radar mode, Zoom x%d" -msgstr "Minikart i radar modus, Zoom x1" +msgstr "Minikart i radarmodus, Zoom x%d" #: src/client/minimap.cpp -#, fuzzy, c-format +#, c-format msgid "Minimap in surface mode, Zoom x%d" -msgstr "Minikart i overflate modus, Zoom x1" +msgstr "Minikart i overflatemodus, Zoom x%d" #: src/client/minimap.cpp #, fuzzy @@ -2054,11 +2065,11 @@ msgstr "" #: src/settings_translation_file.cpp msgid "3D clouds" -msgstr "" +msgstr "3D-skyer" #: src/settings_translation_file.cpp msgid "3D mode" -msgstr "" +msgstr "3D-modus" #: src/settings_translation_file.cpp msgid "3D mode parallax strength" @@ -2066,13 +2077,15 @@ msgstr "" #: src/settings_translation_file.cpp msgid "3D noise defining giant caverns." -msgstr "" +msgstr "3D-støy som definerer gigantiske holer." #: src/settings_translation_file.cpp msgid "" "3D noise defining mountain structure and height.\n" "Also defines structure of floatland mountain terrain." msgstr "" +"3D-støy som definerer fjellstruktur og -høgde.\n" +"Definerer og strukturen pÃ¥ fjellterreng for flyteland." #: src/settings_translation_file.cpp msgid "" @@ -2088,7 +2101,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "3D noise defining terrain." -msgstr "" +msgstr "3D-støy som definerer terreng." #: src/settings_translation_file.cpp msgid "3D noise for mountain overhangs, cliffs, etc. Usually small variations." @@ -2120,11 +2133,12 @@ msgstr "" #: src/settings_translation_file.cpp msgid "A message to be displayed to all clients when the server crashes." -msgstr "" +msgstr "Ein beskjed som skal visast til alle klientane nÃ¥r tenaren kræsjar." #: src/settings_translation_file.cpp msgid "A message to be displayed to all clients when the server shuts down." msgstr "" +"Ein beskjed som skal visast til alle klientane nÃ¥r tenaren vert slÃ¥tt av." #: src/settings_translation_file.cpp msgid "ABM interval" @@ -2140,11 +2154,11 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Acceleration in air" -msgstr "" +msgstr "Akselerasjon i luft" #: src/settings_translation_file.cpp msgid "Acceleration of gravity, in nodes per second per second." -msgstr "" +msgstr "Gravitasjonsakselerasjon, i nodar per sekund per sekund." #: src/settings_translation_file.cpp msgid "Active Block Modifiers" @@ -2191,7 +2205,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Advanced" -msgstr "" +msgstr "Avansert" #: src/settings_translation_file.cpp msgid "" @@ -2212,11 +2226,11 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Amount of messages a player may send per 10 seconds." -msgstr "" +msgstr "Antal meldingar ein spelar kan sende per 10 sekund." #: src/settings_translation_file.cpp msgid "Amplifies the valleys." -msgstr "" +msgstr "Forsterkar dalane." #: src/settings_translation_file.cpp msgid "Anisotropic filtering" @@ -2281,7 +2295,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Automatically report to the serverlist." -msgstr "" +msgstr "Rapporter automatisk til tenarlista." #: src/settings_translation_file.cpp msgid "Autosave screen size" @@ -2289,7 +2303,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Autoscaling mode" -msgstr "" +msgstr "Autoskaleringsmodus" #: src/settings_translation_file.cpp msgid "Backward key" @@ -2305,11 +2319,11 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Basic" -msgstr "" +msgstr "Basis" #: src/settings_translation_file.cpp msgid "Basic privileges" -msgstr "" +msgstr "Basisprivilegium" #: src/settings_translation_file.cpp msgid "Beach noise" @@ -2365,7 +2379,7 @@ msgstr "Bygg intern spelar" #: src/settings_translation_file.cpp msgid "Builtin" -msgstr "" +msgstr "Innebygd" #: src/settings_translation_file.cpp msgid "" @@ -2439,11 +2453,11 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Chat font size" -msgstr "" +msgstr "Tekststørrelse for nettprat" #: src/settings_translation_file.cpp msgid "Chat key" -msgstr "" +msgstr "Nettpratstast" #: src/settings_translation_file.cpp msgid "Chat log level" @@ -2491,11 +2505,11 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Client" -msgstr "" +msgstr "Klient" #: src/settings_translation_file.cpp msgid "Client and Server" -msgstr "" +msgstr "Klient og tenar" #: src/settings_translation_file.cpp msgid "Client modding" @@ -2511,15 +2525,15 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Climbing speed" -msgstr "" +msgstr "Klatrefart" #: src/settings_translation_file.cpp msgid "Cloud radius" -msgstr "" +msgstr "Skyradius" #: src/settings_translation_file.cpp msgid "Clouds" -msgstr "" +msgstr "Skyer" #: src/settings_translation_file.cpp msgid "Clouds are a client side effect." @@ -2527,11 +2541,11 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Clouds in menu" -msgstr "" +msgstr "Skyer i meny" #: src/settings_translation_file.cpp msgid "Colored fog" -msgstr "" +msgstr "Farga tÃ¥ke" #: src/settings_translation_file.cpp msgid "" @@ -2594,7 +2608,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "ContentDB URL" -msgstr "" +msgstr "URL til ContentDB" #: src/settings_translation_file.cpp msgid "Continuous forward" @@ -2638,11 +2652,11 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Crash message" -msgstr "" +msgstr "Kræsjmelding" #: src/settings_translation_file.cpp msgid "Creative" -msgstr "" +msgstr "Kreativ" #: src/settings_translation_file.cpp msgid "Crosshair alpha" @@ -2698,29 +2712,31 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Default acceleration" -msgstr "" +msgstr "Standard akselerasjon" #: src/settings_translation_file.cpp msgid "Default game" -msgstr "" +msgstr "Standard spel" #: src/settings_translation_file.cpp msgid "" "Default game when creating a new world.\n" "This will be overridden when creating a world from the main menu." msgstr "" +"Standard spel nÃ¥r du lagar ei ny verd.\n" +"Dette vil verte overstyrt nÃ¥r du lagar ei verd frÃ¥ hovudmenyen." #: src/settings_translation_file.cpp msgid "Default password" -msgstr "" +msgstr "Standard passord" #: src/settings_translation_file.cpp msgid "Default privileges" -msgstr "" +msgstr "Standard privilegium" #: src/settings_translation_file.cpp msgid "Default report format" -msgstr "" +msgstr "Standard rapportformat" #: src/settings_translation_file.cpp msgid "Default stack size" @@ -2895,7 +2911,7 @@ msgid "Enable console window" msgstr "" #: src/settings_translation_file.cpp -msgid "Enable creative mode for new created maps." +msgid "Enable creative mode for all players" msgstr "" #: src/settings_translation_file.cpp @@ -5597,6 +5613,10 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp +msgid "Show nametag backgrounds by default" +msgstr "" + +#: src/settings_translation_file.cpp msgid "Shutdown message" msgstr "" @@ -6274,6 +6294,12 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp +msgid "" +"Whether nametag backgrounds should be shown by default.\n" +"Mods may still set a background." +msgstr "" + +#: src/settings_translation_file.cpp msgid "Whether node texture animations should be desynchronized per mapblock." msgstr "" diff --git a/po/pl/minetest.po b/po/pl/minetest.po index e8d3b20f3..4c5d166e8 100644 --- a/po/pl/minetest.po +++ b/po/pl/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Polish (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-01-30 21:13+0100\n" +"POT-Creation-Date: 2021-02-23 19:03+0100\n" "PO-Revision-Date: 2020-12-27 00:29+0000\n" "Last-Translator: Atrate <Atrate@protonmail.com>\n" "Language-Team: Polish <https://hosted.weblate.org/projects/minetest/minetest/" @@ -722,6 +722,11 @@ msgid "Loading..." msgstr "Åadowanie..." #: builtin/mainmenu/serverlistmgr.lua +#, fuzzy +msgid "Public server list is disabled" +msgstr "Skryptowanie po stronie klienta jest wyłączone" + +#: builtin/mainmenu/serverlistmgr.lua msgid "Try reenabling public serverlist and check your internet connection." msgstr "" "Spróbuj ponownie włączyć publicznÄ… listÄ™ serwerów i sprawdź swoje połączenie " @@ -3031,7 +3036,8 @@ msgid "Enable console window" msgstr "Odblokuj okno konsoli" #: src/settings_translation_file.cpp -msgid "Enable creative mode for new created maps." +#, fuzzy +msgid "Enable creative mode for all players" msgstr "Zezwól na tryb kreatywny dla nowo powstaÅ‚ych map." #: src/settings_translation_file.cpp @@ -6389,6 +6395,10 @@ msgstr "" "Wymagany restart po zmianie ustawienia." #: src/settings_translation_file.cpp +msgid "Show nametag backgrounds by default" +msgstr "" + +#: src/settings_translation_file.cpp msgid "Shutdown message" msgstr "Komunikat zamkniÄ™cia serwera" @@ -7181,6 +7191,12 @@ msgstr "" "wspierajÄ…ca takie czcionki." #: src/settings_translation_file.cpp +msgid "" +"Whether nametag backgrounds should be shown by default.\n" +"Mods may still set a background." +msgstr "" + +#: src/settings_translation_file.cpp msgid "Whether node texture animations should be desynchronized per mapblock." msgstr "OkreÅ›l kiedy animacje tekstur na blok powinny być niesynchronizowane." diff --git a/po/pt/minetest.po b/po/pt/minetest.po index e79a3841d..78c46b6d8 100644 --- a/po/pt/minetest.po +++ b/po/pt/minetest.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: Portuguese (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-01-30 21:13+0100\n" -"PO-Revision-Date: 2020-12-10 19:29+0000\n" +"POT-Creation-Date: 2021-02-23 19:03+0100\n" +"PO-Revision-Date: 2021-02-23 15:50+0000\n" "Last-Translator: ssantos <ssantos@web.de>\n" "Language-Team: Portuguese <https://hosted.weblate.org/projects/minetest/" "minetest/pt/>\n" @@ -12,7 +12,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 4.4-dev\n" +"X-Generator: Weblate 4.5\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" @@ -154,52 +154,51 @@ msgstr "ativado" #: builtin/mainmenu/dlg_contentstore.lua msgid "\"$1\" already exists. Would you like to overwrite it?" -msgstr "" +msgstr "\"$1\" já existe. Gostaria de sobrescrevê-lo?" #: builtin/mainmenu/dlg_contentstore.lua msgid "$1 and $2 dependencies will be installed." -msgstr "" +msgstr "As dependências de $1 e $2 serão instaladas." #: builtin/mainmenu/dlg_contentstore.lua msgid "$1 by $2" -msgstr "" +msgstr "$1 por $2" #: builtin/mainmenu/dlg_contentstore.lua msgid "" "$1 downloading,\n" "$2 queued" msgstr "" +"A descarregar $1,\n" +"$2 na fila" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "$1 downloading..." -msgstr "A descarregar..." +msgstr "A descarregar $1..." #: builtin/mainmenu/dlg_contentstore.lua msgid "$1 required dependencies could not be found." -msgstr "" +msgstr "$1 dependências necessárias não foram encontradas." #: builtin/mainmenu/dlg_contentstore.lua msgid "$1 will be installed, and $2 dependencies will be skipped." -msgstr "" +msgstr "$1 serão instalados e $2 dependências serão ignoradas." #: builtin/mainmenu/dlg_contentstore.lua msgid "All packages" msgstr "Todos os pacotes" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "Already installed" -msgstr "Tecla já em uso" +msgstr "Já instalado" #: builtin/mainmenu/dlg_contentstore.lua msgid "Back to Main Menu" msgstr "Voltar ao menu principal" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "Base Game:" -msgstr "Hospedar Jogo" +msgstr "Jogo base:" #: builtin/mainmenu/dlg_contentstore.lua msgid "ContentDB is not available when Minetest was compiled without cURL" @@ -223,14 +222,12 @@ msgid "Install" msgstr "Instalar" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "Install $1" -msgstr "Instalar" +msgstr "Instalar $1" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "Install missing dependencies" -msgstr "Dependências opcionais:" +msgstr "Instalar dependências ausentes" #: builtin/mainmenu/dlg_contentstore.lua #: builtin/mainmenu/dlg_settings_advanced.lua @@ -246,26 +243,24 @@ msgid "No results" msgstr "Sem resultados" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "No updates" -msgstr "Atualizar" +msgstr "Sem atualizações" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "Not found" -msgstr "Mutar som" +msgstr "Não encontrado" #: builtin/mainmenu/dlg_contentstore.lua msgid "Overwrite" -msgstr "" +msgstr "Sobrescrever" #: builtin/mainmenu/dlg_contentstore.lua msgid "Please check that the base game is correct." -msgstr "" +msgstr "Verifique se o jogo base está correto." #: builtin/mainmenu/dlg_contentstore.lua msgid "Queued" -msgstr "" +msgstr "Enfileirado" #: builtin/mainmenu/dlg_contentstore.lua msgid "Texture packs" @@ -281,11 +276,11 @@ msgstr "Atualizar" #: builtin/mainmenu/dlg_contentstore.lua msgid "Update All [$1]" -msgstr "" +msgstr "Atualizar tudo [$1]" #: builtin/mainmenu/dlg_contentstore.lua msgid "View more information in a web browser" -msgstr "" +msgstr "Exibir mais informações num navegador da Web" #: builtin/mainmenu/dlg_create_world.lua msgid "A world named \"$1\" already exists" @@ -709,6 +704,11 @@ msgid "Loading..." msgstr "A carregar..." #: builtin/mainmenu/serverlistmgr.lua +#, fuzzy +msgid "Public server list is disabled" +msgstr "O scripting de cliente está desativado" + +#: builtin/mainmenu/serverlistmgr.lua msgid "Try reenabling public serverlist and check your internet connection." msgstr "" "Tente recarregar a lista de servidores públicos e verifique a sua ligação à " @@ -767,15 +767,16 @@ msgid "Credits" msgstr "Méritos" #: builtin/mainmenu/tab_credits.lua -#, fuzzy msgid "Open User Data Directory" -msgstr "Selecione o diretório" +msgstr "Abrir o diretório de dados do utilizador" #: builtin/mainmenu/tab_credits.lua msgid "" "Opens the directory that contains user-provided worlds, games, mods,\n" "and texture packs in a file manager / explorer." msgstr "" +"Abre o diretório que contém mundos, jogos, mods fornecidos pelo utilizador,\n" +"e pacotes de textura num gestor de ficheiros / explorador." #: builtin/mainmenu/tab_credits.lua msgid "Previous Contributors" @@ -815,7 +816,7 @@ msgstr "Instalar jogos do ContentDB" #: builtin/mainmenu/tab_local.lua msgid "Name" -msgstr "" +msgstr "Nome" #: builtin/mainmenu/tab_local.lua msgid "New" @@ -826,9 +827,8 @@ msgid "No world created or selected!" msgstr "Nenhum mundo criado ou seleccionado!" #: builtin/mainmenu/tab_local.lua -#, fuzzy msgid "Password" -msgstr "Palavra-passe nova" +msgstr "Palavra-passe" #: builtin/mainmenu/tab_local.lua msgid "Play Game" @@ -839,9 +839,8 @@ msgid "Port" msgstr "Porta" #: builtin/mainmenu/tab_local.lua -#, fuzzy msgid "Select Mods" -msgstr "Seleccionar Mundo:" +msgstr "Selecionar mods" #: builtin/mainmenu/tab_local.lua msgid "Select World:" @@ -993,9 +992,8 @@ msgid "Shaders" msgstr "Sombras" #: builtin/mainmenu/tab_settings.lua -#, fuzzy msgid "Shaders (experimental)" -msgstr "Terrenos flutuantes (experimental)" +msgstr "Shaders (experimental)" #: builtin/mainmenu/tab_settings.lua msgid "Shaders (unavailable)" @@ -1195,7 +1193,7 @@ msgid "Continue" msgstr "Continuar" #: src/client/game.cpp -#, fuzzy, c-format +#, c-format msgid "" "Controls:\n" "- %s: move forwards\n" @@ -1215,15 +1213,15 @@ msgstr "" "Controles:\n" "- %s: mover para a frente\n" "- %s: mover para trás\n" -"- %s: mover à esquerda\n" -"- %s: mover-se para a direita\n" +"- %s: mover para a esquerda\n" +"- %s: mover para a direita\n" "- %s: saltar/escalar\n" +"- %s: cavar/socar\n" +"- %s: colocar/usar\n" "- %s: esgueirar/descer\n" "- %s: soltar item\n" "- %s: inventário\n" "- Rato: virar/ver\n" -"- Rato à esquerda: escavar/dar soco\n" -"- Rato direito: posicionar/usar\n" "- Roda do rato: selecionar item\n" "- %s: bate-papo\n" @@ -1752,19 +1750,18 @@ msgid "Minimap hidden" msgstr "Minimapa escondido" #: src/client/minimap.cpp -#, fuzzy, c-format +#, c-format msgid "Minimap in radar mode, Zoom x%d" -msgstr "Minimapa em modo radar, zoom 1x" +msgstr "Minimapa em modo radar, ampliação %dx" #: src/client/minimap.cpp -#, fuzzy, c-format +#, c-format msgid "Minimap in surface mode, Zoom x%d" -msgstr "Minimapa em modo de superfÃcie, zoom 1x" +msgstr "Minimapa em modo de superfÃcie, ampliação %dx" #: src/client/minimap.cpp -#, fuzzy msgid "Minimap in texture mode" -msgstr "Tamanho mÃnimo da textura" +msgstr "Minimapa em modo de textura" #: src/gui/guiConfirmRegistration.cpp src/gui/guiPasswordChange.cpp msgid "Passwords do not match!" @@ -2170,7 +2167,7 @@ msgstr "Intervalo do ABM" #: src/settings_translation_file.cpp msgid "ABM time budget" -msgstr "" +msgstr "Orçamento de tempo do ABM" #: src/settings_translation_file.cpp msgid "Absolute limit of queued blocks to emerge" @@ -2676,7 +2673,7 @@ msgstr "Lista negra de flags do ContentDB" #: src/settings_translation_file.cpp msgid "ContentDB Max Concurrent Downloads" -msgstr "" +msgstr "Máximo de descargas simultâneas de ContentDB" #: src/settings_translation_file.cpp msgid "ContentDB URL" @@ -3013,7 +3010,8 @@ msgid "Enable console window" msgstr "Ativar janela de console" #: src/settings_translation_file.cpp -msgid "Enable creative mode for new created maps." +#, fuzzy +msgid "Enable creative mode for all players" msgstr "Ativar modo criativo para mundos novos." #: src/settings_translation_file.cpp @@ -6308,6 +6306,11 @@ msgstr "" "Apos mudar isso uma reinicialização é necessária." #: src/settings_translation_file.cpp +#, fuzzy +msgid "Show nametag backgrounds by default" +msgstr "Fonte em negrito por predefinição" + +#: src/settings_translation_file.cpp msgid "Shutdown message" msgstr "Mensagem de desligamento" @@ -7121,6 +7124,12 @@ msgstr "" "compilado." #: src/settings_translation_file.cpp +msgid "" +"Whether nametag backgrounds should be shown by default.\n" +"Mods may still set a background." +msgstr "" + +#: src/settings_translation_file.cpp msgid "Whether node texture animations should be desynchronized per mapblock." msgstr "" "Determina se animações das texturas dos cubos devem ser dessincronizadas " diff --git a/po/pt_BR/minetest.po b/po/pt_BR/minetest.po index 811834c6b..295a59bc5 100644 --- a/po/pt_BR/minetest.po +++ b/po/pt_BR/minetest.po @@ -2,9 +2,9 @@ msgid "" msgstr "" "Project-Id-Version: Portuguese (Brazil) (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-01-30 21:13+0100\n" -"PO-Revision-Date: 2021-01-22 03:32+0000\n" -"Last-Translator: Ronoaldo Pereira <ronoaldo@gmail.com>\n" +"POT-Creation-Date: 2021-02-23 19:03+0100\n" +"PO-Revision-Date: 2021-02-23 15:50+0000\n" +"Last-Translator: Victor Barcelos Lacerda <victornuti.1@gmail.com>\n" "Language-Team: Portuguese (Brazil) <https://hosted.weblate.org/projects/" "minetest/minetest/pt_BR/>\n" "Language: pt_BR\n" @@ -12,7 +12,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 4.5-dev\n" +"X-Generator: Weblate 4.5\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" @@ -60,11 +60,11 @@ msgstr "O servidor suporta versões de protocolo entre $1 e $2. " #: builtin/mainmenu/common.lua msgid "We only support protocol version $1." -msgstr "Nós apenas suportamos a versão de protocolo $1." +msgstr "Suportamos apenas o protocolo de versão $1." #: builtin/mainmenu/common.lua msgid "We support protocol versions between version $1 and $2." -msgstr "Nós suportamos as versões de protocolo entre $1 e $2 ." +msgstr "Suportamos protocolos com versões entre $1 e $2." #: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_contentstore.lua #: builtin/mainmenu/dlg_create_world.lua @@ -125,7 +125,7 @@ msgstr "Nenhuma descrição de jogo disponÃvel." #: builtin/mainmenu/dlg_config_world.lua msgid "No hard dependencies" -msgstr "Sem dependências rÃgidas" +msgstr "Sem dependências" #: builtin/mainmenu/dlg_config_world.lua msgid "No modpack description provided." @@ -154,52 +154,51 @@ msgstr "habilitado" #: builtin/mainmenu/dlg_contentstore.lua msgid "\"$1\" already exists. Would you like to overwrite it?" -msgstr "" +msgstr "\"$1\" já existe. Gostaria de sobrescrevê-lo?" #: builtin/mainmenu/dlg_contentstore.lua msgid "$1 and $2 dependencies will be installed." -msgstr "" +msgstr "As dependências $1 e $2 serão instaladas." #: builtin/mainmenu/dlg_contentstore.lua msgid "$1 by $2" -msgstr "" +msgstr "$1 por $2" #: builtin/mainmenu/dlg_contentstore.lua msgid "" "$1 downloading,\n" "$2 queued" msgstr "" +"$1 baixando,\n" +"$2 na fila" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "$1 downloading..." -msgstr "Baixando..." +msgstr "$1 baixando..." #: builtin/mainmenu/dlg_contentstore.lua msgid "$1 required dependencies could not be found." -msgstr "" +msgstr "$1 dependências obrigatórias não puderam ser encontradas." #: builtin/mainmenu/dlg_contentstore.lua msgid "$1 will be installed, and $2 dependencies will be skipped." -msgstr "" +msgstr "$1 será instalado, e $2 dependências serão ignoradas." #: builtin/mainmenu/dlg_contentstore.lua msgid "All packages" msgstr "Todos os pacotes" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "Already installed" -msgstr "Essa tecla já está em uso" +msgstr "Já instalado" #: builtin/mainmenu/dlg_contentstore.lua msgid "Back to Main Menu" msgstr "Voltar ao menu principal" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "Base Game:" -msgstr "Criar Jogo" +msgstr "Jogo Base:" #: builtin/mainmenu/dlg_contentstore.lua msgid "ContentDB is not available when Minetest was compiled without cURL" @@ -211,7 +210,7 @@ msgstr "Baixando..." #: builtin/mainmenu/dlg_contentstore.lua msgid "Failed to download $1" -msgstr "Falhou em baixar $1" +msgstr "Falha ao baixar $1" #: builtin/mainmenu/dlg_contentstore.lua #: builtin/mainmenu/dlg_settings_advanced.lua @@ -223,14 +222,12 @@ msgid "Install" msgstr "Instalar" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "Install $1" -msgstr "Instalar" +msgstr "Instalar $1" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "Install missing dependencies" -msgstr "Dependências opcionais:" +msgstr "Instalar dependências ausentes" #: builtin/mainmenu/dlg_contentstore.lua #: builtin/mainmenu/dlg_settings_advanced.lua @@ -239,33 +236,31 @@ msgstr "Modulos (Mods)" #: builtin/mainmenu/dlg_contentstore.lua msgid "No packages could be retrieved" -msgstr "Nenhum pacote pode ser recuperado" +msgstr "Nenhum pacote pôde ser recuperado" #: builtin/mainmenu/dlg_contentstore.lua msgid "No results" msgstr "Sem resultados" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "No updates" -msgstr "Atualizar" +msgstr "Sem atualizações" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "Not found" -msgstr "Mutar som" +msgstr "Não encontrado" #: builtin/mainmenu/dlg_contentstore.lua msgid "Overwrite" -msgstr "" +msgstr "Sobrescrever" #: builtin/mainmenu/dlg_contentstore.lua msgid "Please check that the base game is correct." -msgstr "" +msgstr "Verifique se o jogo base está correto." #: builtin/mainmenu/dlg_contentstore.lua msgid "Queued" -msgstr "" +msgstr "Na fila" #: builtin/mainmenu/dlg_contentstore.lua msgid "Texture packs" @@ -281,11 +276,11 @@ msgstr "Atualizar" #: builtin/mainmenu/dlg_contentstore.lua msgid "Update All [$1]" -msgstr "" +msgstr "Atualizar tudo [$1]" #: builtin/mainmenu/dlg_contentstore.lua msgid "View more information in a web browser" -msgstr "" +msgstr "Veja mais informações em um navegador da web" #: builtin/mainmenu/dlg_create_world.lua msgid "A world named \"$1\" already exists" @@ -297,15 +292,15 @@ msgstr "Terreno adicional" #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp msgid "Altitude chill" -msgstr "Frio de altitude" +msgstr "Altitude fria" #: builtin/mainmenu/dlg_create_world.lua msgid "Altitude dry" -msgstr "Frio de altitude" +msgstr "Altitude seca" #: builtin/mainmenu/dlg_create_world.lua msgid "Biome blending" -msgstr "Harmonização do bioma" +msgstr "Transição de bioma" #: builtin/mainmenu/dlg_create_world.lua msgid "Biomes" @@ -333,7 +328,7 @@ msgstr "Baixe um jogo, como Minetest Game, do site minetest.net" #: builtin/mainmenu/dlg_create_world.lua msgid "Download one from minetest.net" -msgstr "Baixe um apartir do site minetest.net" +msgstr "Baixe um a partir do site minetest.net" #: builtin/mainmenu/dlg_create_world.lua msgid "Dungeons" @@ -345,7 +340,7 @@ msgstr "Terreno plano" #: builtin/mainmenu/dlg_create_world.lua msgid "Floating landmasses in the sky" -msgstr "Ilhas flutuantes" +msgstr "Ilhas flutuantes no céu" #: builtin/mainmenu/dlg_create_world.lua msgid "Floatlands (experimental)" @@ -361,7 +356,7 @@ msgstr "Gera terrenos não fractais: Oceanos e subterrâneos" #: builtin/mainmenu/dlg_create_world.lua msgid "Hills" -msgstr "Montanhas" +msgstr "Colinas" #: builtin/mainmenu/dlg_create_world.lua msgid "Humid rivers" @@ -385,11 +380,11 @@ msgstr "Gerador de mapa" #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp msgid "Mapgen flags" -msgstr "Flags do gerador de mundo" +msgstr "Opções do gerador de mapas" #: builtin/mainmenu/dlg_create_world.lua msgid "Mapgen-specific flags" -msgstr "Parâmetros especÃficos do gerador de mundo V5" +msgstr "Parâmetros especÃficos do gerador de mapas" #: builtin/mainmenu/dlg_create_world.lua msgid "Mountains" @@ -409,11 +404,11 @@ msgstr "Nenhum jogo selecionado" #: builtin/mainmenu/dlg_create_world.lua msgid "Reduces heat with altitude" -msgstr "Reduz calor com altitude" +msgstr "Reduz calor com a altitude" #: builtin/mainmenu/dlg_create_world.lua msgid "Reduces humidity with altitude" -msgstr "Reduz humidade com altitude" +msgstr "Reduz humidade com a altitude" #: builtin/mainmenu/dlg_create_world.lua msgid "Rivers" @@ -426,7 +421,7 @@ msgstr "Rios ao nÃvel do mar" #: builtin/mainmenu/dlg_create_world.lua #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Seed" -msgstr "Seed" +msgstr "Semente (Seed)" #: builtin/mainmenu/dlg_create_world.lua msgid "Smooth transition between biomes" @@ -454,11 +449,11 @@ msgstr "Temperado, Deserto, Selva" #: builtin/mainmenu/dlg_create_world.lua msgid "Temperate, Desert, Jungle, Tundra, Taiga" -msgstr "Temperado, Deserto, Selva, Tundra, Floresta Boreal" +msgstr "Temperado, Deserto, Selva, Tundra, Taiga" #: builtin/mainmenu/dlg_create_world.lua msgid "Terrain surface erosion" -msgstr "Altura da erosão de terreno" +msgstr "Erosão na superfÃcie do terreno" #: builtin/mainmenu/dlg_create_world.lua msgid "Trees and jungle grass" @@ -466,16 +461,15 @@ msgstr "Ãrvores e relva da selva" #: builtin/mainmenu/dlg_create_world.lua msgid "Vary river depth" -msgstr "Rios profundos" +msgstr "Variar altura dos rios" #: builtin/mainmenu/dlg_create_world.lua msgid "Very large caverns deep in the underground" -msgstr "Cavernas bastante profundas" +msgstr "Cavernas muito grandes nas profundezas do subsolo" #: builtin/mainmenu/dlg_create_world.lua msgid "Warning: The Development Test is meant for developers." -msgstr "" -"Aviso: O game \"minimal development test\" apenas serve para desenvolvedores." +msgstr "Aviso: O jogo Development Test é projetado para desenvolvedores." #: builtin/mainmenu/dlg_create_world.lua msgid "World name" @@ -513,7 +507,7 @@ msgstr "Aceitar" #: builtin/mainmenu/dlg_rename_modpack.lua msgid "Rename Modpack:" -msgstr "Renomear pacote de módulos:" +msgstr "Renomear Modpack:" #: builtin/mainmenu/dlg_rename_modpack.lua msgid "" @@ -521,7 +515,7 @@ msgid "" "override any renaming here." msgstr "" "Esse modpack possui um nome explÃcito em seu modpack.conf que vai " -"sobrescrever qualquer renomeio aqui." +"sobrescrever qualquer nome aqui." #: builtin/mainmenu/dlg_settings_advanced.lua msgid "(No description of setting given)" @@ -569,7 +563,7 @@ msgstr "Persistência" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Please enter a valid integer." -msgstr "Por favor insira um inteiro válido." +msgstr "Por favor, insira um inteiro válido." #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Please enter a valid number." @@ -577,7 +571,7 @@ msgstr "Por favor, insira um número válido." #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Restore Default" -msgstr "Restaurar para o padrão" +msgstr "Restaurar Padrão" #: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp msgid "Scale" @@ -644,7 +638,7 @@ msgstr "valor absoluto" #. for noise settings in main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "defaults" -msgstr "Padrões" +msgstr "padrão" #. ~ "eased" is a noise parameter flag. #. It is used to make the map smoother and @@ -660,34 +654,33 @@ msgstr "$1 (Habilitado)" #: builtin/mainmenu/pkgmgr.lua msgid "$1 mods" -msgstr "$1 módulos" +msgstr "$1 mods" #: builtin/mainmenu/pkgmgr.lua msgid "Failed to install $1 to $2" -msgstr "Não foi possÃvel instalar $1 para $2" +msgstr "Não foi possÃvel instalar $1 em $2" #: builtin/mainmenu/pkgmgr.lua msgid "Install Mod: Unable to find real mod name for: $1" -msgstr "" -"Instalação de módulo: não foi possÃvel encontrar o nome real do módulo: $1" +msgstr "Instalação de mod: não foi possÃvel encontrar o nome real do mod: $1" #: builtin/mainmenu/pkgmgr.lua msgid "Install Mod: Unable to find suitable folder name for modpack $1" msgstr "" -"Instalação do Mod: não foi possÃvel encontrar o nome da pasta adequado para " +"Instalação de mod: não foi possÃvel encontrar o nome da pasta adequado para " "o modpack $1" #: builtin/mainmenu/pkgmgr.lua msgid "Install: Unsupported file type \"$1\" or broken archive" -msgstr "Instalar: Tipo de arquivo \"$1\" não suportado ou corrompido" +msgstr "Instalação: Tipo de arquivo \"$1\" não suportado ou corrompido" #: builtin/mainmenu/pkgmgr.lua msgid "Install: file: \"$1\"" -msgstr "Instalar: arquivo: \"$1\"" +msgstr "Instalação: arquivo: \"$1\"" #: builtin/mainmenu/pkgmgr.lua msgid "Unable to find a valid mod or modpack" -msgstr "Incapaz de encontrar um módulo ou modpack válido" +msgstr "Incapaz de encontrar um mod ou modpack válido" #: builtin/mainmenu/pkgmgr.lua msgid "Unable to install a $1 as a texture pack" @@ -699,7 +692,7 @@ msgstr "Não foi possÃvel instalar um jogo como um $1" #: builtin/mainmenu/pkgmgr.lua msgid "Unable to install a mod as a $1" -msgstr "Não foi possÃvel instalar um módulo como um $1" +msgstr "Não foi possÃvel instalar um mod como um $1" #: builtin/mainmenu/pkgmgr.lua msgid "Unable to install a modpack as a $1" @@ -710,10 +703,15 @@ msgid "Loading..." msgstr "Carregando..." #: builtin/mainmenu/serverlistmgr.lua +#, fuzzy +msgid "Public server list is disabled" +msgstr "Scripting de cliente está desabilitado" + +#: builtin/mainmenu/serverlistmgr.lua msgid "Try reenabling public serverlist and check your internet connection." msgstr "" -"Tente reabilitar a lista de servidores públicos e verifique sua conexão com " -"a internet." +"Tente reativar a lista de servidores públicos e verifique sua conexão com a " +"internet." #: builtin/mainmenu/tab_content.lua msgid "Browse online content" @@ -725,7 +723,7 @@ msgstr "Conteúdo" #: builtin/mainmenu/tab_content.lua msgid "Disable Texture Pack" -msgstr "Desabilitar pacote de texturas" +msgstr "Desabilitar Pacote de Texturas" #: builtin/mainmenu/tab_content.lua msgid "Information:" @@ -733,7 +731,7 @@ msgstr "Informação:" #: builtin/mainmenu/tab_content.lua msgid "Installed Packages:" -msgstr "Pacotes instalados:" +msgstr "Pacotes Instalados:" #: builtin/mainmenu/tab_content.lua msgid "No dependencies." @@ -741,7 +739,7 @@ msgstr "Sem dependências." #: builtin/mainmenu/tab_content.lua msgid "No package description available" -msgstr "Nenhuma descrição do pacote disponÃvel" +msgstr "Nenhuma descrição de pacote disponÃvel" #: builtin/mainmenu/tab_content.lua msgid "Rename" @@ -749,66 +747,67 @@ msgstr "Renomear" #: builtin/mainmenu/tab_content.lua msgid "Uninstall Package" -msgstr "Desinstalar o pacote" +msgstr "Desinstalar Pacote" #: builtin/mainmenu/tab_content.lua msgid "Use Texture Pack" -msgstr "Usar pacote de texturas" +msgstr "Usar Pacote de Texturas" #: builtin/mainmenu/tab_credits.lua msgid "Active Contributors" -msgstr "Colaboradores ativos" +msgstr "Colaboradores Ativos" #: builtin/mainmenu/tab_credits.lua msgid "Core Developers" -msgstr "Desenvolvedores principais" +msgstr "Desenvolvedores Principais" #: builtin/mainmenu/tab_credits.lua msgid "Credits" msgstr "Créditos" #: builtin/mainmenu/tab_credits.lua -#, fuzzy msgid "Open User Data Directory" -msgstr "Selecione o diretório" +msgstr "Abrir diretório de dados do usuário" #: builtin/mainmenu/tab_credits.lua msgid "" "Opens the directory that contains user-provided worlds, games, mods,\n" "and texture packs in a file manager / explorer." msgstr "" +"Abre o diretório que contém mundos, jogos, mods fornecidos pelo usuário,\n" +"e pacotes de textura em um gerenciador / navegador de arquivos." #: builtin/mainmenu/tab_credits.lua msgid "Previous Contributors" -msgstr "Colaboradores anteriores" +msgstr "Colaboradores Anteriores" #: builtin/mainmenu/tab_credits.lua msgid "Previous Core Developers" -msgstr "Desenvolvedores principais anteriores" +msgstr "Desenvolvedores Principais Anteriores" #: builtin/mainmenu/tab_local.lua msgid "Announce Server" -msgstr "Anunciar servidor" +msgstr "Anunciar Servidor" #: builtin/mainmenu/tab_local.lua msgid "Bind Address" -msgstr "Endereço de Bind" +msgstr "Endereço" #: builtin/mainmenu/tab_local.lua msgid "Creative Mode" -msgstr "Modo criativo" +msgstr "Modo Criativo" #: builtin/mainmenu/tab_local.lua msgid "Enable Damage" -msgstr "Habilitar dano" +msgstr "Habilitar Dano" #: builtin/mainmenu/tab_local.lua msgid "Host Game" -msgstr "Criar Jogo" +msgstr "Hospedar Jogo" #: builtin/mainmenu/tab_local.lua msgid "Host Server" -msgstr "Criar Servidor" +msgstr "Hospedar Servidor" #: builtin/mainmenu/tab_local.lua msgid "Install games from ContentDB" @@ -816,7 +815,7 @@ msgstr "Instalar jogos do ContentDB" #: builtin/mainmenu/tab_local.lua msgid "Name" -msgstr "" +msgstr "Nome" #: builtin/mainmenu/tab_local.lua msgid "New" @@ -827,9 +826,8 @@ msgid "No world created or selected!" msgstr "Nenhum mundo criado ou selecionado!" #: builtin/mainmenu/tab_local.lua -#, fuzzy msgid "Password" -msgstr "Nova senha" +msgstr "Senha" #: builtin/mainmenu/tab_local.lua msgid "Play Game" @@ -840,9 +838,8 @@ msgid "Port" msgstr "Porta" #: builtin/mainmenu/tab_local.lua -#, fuzzy msgid "Select Mods" -msgstr "Selecione um mundo:" +msgstr "Selecione Mods" #: builtin/mainmenu/tab_local.lua msgid "Select World:" @@ -850,11 +847,11 @@ msgstr "Selecione um mundo:" #: builtin/mainmenu/tab_local.lua msgid "Server Port" -msgstr "Porta do servidor" +msgstr "Porta do Servidor" #: builtin/mainmenu/tab_local.lua msgid "Start Game" -msgstr "Iniciar o jogo" +msgstr "Iniciar Jogo" #: builtin/mainmenu/tab_online.lua msgid "Address / Port" @@ -874,15 +871,15 @@ msgstr "Dano habilitado" #: builtin/mainmenu/tab_online.lua msgid "Del. Favorite" -msgstr "Deletar Favorito" +msgstr "Rem. Favorito" #: builtin/mainmenu/tab_online.lua msgid "Favorite" -msgstr "Favoritos" +msgstr "Favorito" #: builtin/mainmenu/tab_online.lua msgid "Join Game" -msgstr "Juntar-se ao jogo" +msgstr "Entrar em um Jogo" #: builtin/mainmenu/tab_online.lua msgid "Name / Password" @@ -919,7 +916,7 @@ msgstr "Todas as configurações" #: builtin/mainmenu/tab_settings.lua msgid "Antialiasing:" -msgstr "Antialiasing:" +msgstr "Anti-aliasing:" #: builtin/mainmenu/tab_settings.lua msgid "Autosave Screen Size" @@ -994,9 +991,8 @@ msgid "Shaders" msgstr "Sombreadores" #: builtin/mainmenu/tab_settings.lua -#, fuzzy msgid "Shaders (experimental)" -msgstr "Ilhas flutuantes (experimental)" +msgstr "Sombreadores (experimental)" #: builtin/mainmenu/tab_settings.lua msgid "Shaders (unavailable)" @@ -1093,7 +1089,7 @@ msgstr "Nome de jogador muito longo." #: src/client/clientlauncher.cpp msgid "Please choose a name!" -msgstr "Por favor escolha um nome!" +msgstr "Por favor, escolha um nome!" #: src/client/clientlauncher.cpp msgid "Provided password file failed to open: " @@ -1101,7 +1097,7 @@ msgstr "Arquivo de senha fornecido falhou em abrir : " #: src/client/clientlauncher.cpp msgid "Provided world path doesn't exist: " -msgstr "O caminho do mundo providenciado não existe. " +msgstr "Caminho informado para o mundo não existe: " #. ~ DO NOT TRANSLATE THIS LITERALLY! #. This is a special string. Put either "no" or "yes" @@ -1129,7 +1125,7 @@ msgstr "- Endereço: " #: src/client/game.cpp msgid "- Creative Mode: " -msgstr "Modo Criativo: " +msgstr "- Modo Criativo: " #: src/client/game.cpp msgid "- Damage: " @@ -1197,7 +1193,7 @@ msgid "Continue" msgstr "Continuar" #: src/client/game.cpp -#, fuzzy, c-format +#, c-format msgid "" "Controls:\n" "- %s: move forwards\n" @@ -1215,32 +1211,19 @@ msgid "" "- %s: chat\n" msgstr "" "Controles:\n" -"\n" -"- %s1: andar para frente\n" -"\n" -"- %s2: andar para trás\n" -"\n" -"- %s3: andar para a esquerda\n" -"\n" -"-%s4: andar para a direita\n" -"\n" -"- %s5: pular/escalar\n" -"\n" -"- %s6: esgueirar/descer\n" -"\n" -"- %s7: soltar item\n" -"\n" -"- %s8: inventário\n" -"\n" +"- %s: mover para frente\n" +"- %s: mover para trás\n" +"- %s: mover para esquerda\n" +"- %s: mover para direita\n" +"- %s: pular/subir\n" +"- %s: cavar/socar\n" +"- %s: colocar/usar\n" +"- %s: andar furtivamente/descer\n" +"- %s: soltar item\n" +"- %s: inventário\n" "- Mouse: virar/olhar\n" -"\n" -"- Botão esquerdo do mouse: cavar/dar soco\n" -"\n" -"- Botão direito do mouse: colocar/usar\n" -"\n" "- Roda do mouse: selecionar item\n" -"\n" -"- %s9: bate-papo\n" +"- %s: bate-papo\n" #: src/client/game.cpp msgid "Creating client..." @@ -1316,7 +1299,7 @@ msgstr "Modo rápido habilitado" #: src/client/game.cpp msgid "Fast mode enabled (note: no 'fast' privilege)" -msgstr "Modo rápido habilitado(note: sem privilégio 'fast')" +msgstr "Modo rápido habilitado (nota: sem o privilégio 'fast')" #: src/client/game.cpp msgid "Fly mode disabled" @@ -1432,11 +1415,11 @@ msgstr "Som mutado" #: src/client/game.cpp msgid "Sound system is disabled" -msgstr "Som do sistema está desativado" +msgstr "Sistema de som está desativado" #: src/client/game.cpp msgid "Sound system is not supported on this build" -msgstr "Som do sistema não é suportado nesta versão" +msgstr "Sistema de som não é suportado nesta versão" #: src/client/game.cpp msgid "Sound unmuted" @@ -1767,19 +1750,18 @@ msgid "Minimap hidden" msgstr "Minimapa escondido" #: src/client/minimap.cpp -#, fuzzy, c-format +#, c-format msgid "Minimap in radar mode, Zoom x%d" -msgstr "Minimapa em modo radar, zoom 1x" +msgstr "Minimapa em modo radar, Zoom %dx" #: src/client/minimap.cpp -#, fuzzy, c-format +#, c-format msgid "Minimap in surface mode, Zoom x%d" -msgstr "Minimapa em modo de superfÃcie, zoom 1x" +msgstr "Minimapa em modo de superfÃcie, Zoom %dx" #: src/client/minimap.cpp -#, fuzzy msgid "Minimap in texture mode" -msgstr "Tamanho mÃnimo da textura" +msgstr "Minimapa em modo de textura" #: src/gui/guiConfirmRegistration.cpp src/gui/guiPasswordChange.cpp msgid "Passwords do not match!" @@ -1889,11 +1871,11 @@ msgstr "" #: src/gui/guiKeyChangeMenu.cpp msgid "Local command" -msgstr "Comandos de Local" +msgstr "Comando local" #: src/gui/guiKeyChangeMenu.cpp msgid "Mute" -msgstr "Mutar" +msgstr "Mudo" #: src/gui/guiKeyChangeMenu.cpp msgid "Next item" @@ -2066,7 +2048,7 @@ msgstr "RuÃdo 2D que controla o formato/tamanho de colinas." #: src/settings_translation_file.cpp msgid "2D noise that controls the shape/size of step mountains." -msgstr "RuÃdo 2D que controla o formato/tamanho de montanhas de etapa." +msgstr "RuÃdo 2D que controla o formato/tamanho de montanhas de caminhada." #: src/settings_translation_file.cpp msgid "2D noise that controls the size/occurrence of ridged mountain ranges." @@ -2078,7 +2060,9 @@ msgstr "2D noise que controla o tamanho/ocorrência de colinas." #: src/settings_translation_file.cpp msgid "2D noise that controls the size/occurrence of step mountain ranges." -msgstr "RuÃdo 2D que controla o tamanho/ocorrência de montanhas de passo." +msgstr "" +"RuÃdo 2D que controla o tamanho/ocorrência de intervalos de montanhas de " +"caminhar." #: src/settings_translation_file.cpp msgid "2D noise that locates the river valleys and channels." @@ -2098,14 +2082,14 @@ msgstr "Força de paralaxe do modo 3D" #: src/settings_translation_file.cpp msgid "3D noise defining giant caverns." -msgstr "barulho 3D que define cavernas gigantes." +msgstr "RuÃdo 3D que define cavernas gigantes." #: src/settings_translation_file.cpp msgid "" "3D noise defining mountain structure and height.\n" "Also defines structure of floatland mountain terrain." msgstr "" -"barulho 3D que define estrutura de montanha e altura.\n" +"RuÃdo 3D que define estrutura de montanha e altura.\n" "Também define a estrutura do terreno da montanha das ilhas flutuantes." #: src/settings_translation_file.cpp @@ -2190,7 +2174,7 @@ msgstr "Intervalo do ABM" #: src/settings_translation_file.cpp msgid "ABM time budget" -msgstr "" +msgstr "Alocação de tempo do ABM" #: src/settings_translation_file.cpp msgid "Absolute limit of queued blocks to emerge" @@ -2314,7 +2298,7 @@ msgstr "Concatenar nome do item a descrição." #: src/settings_translation_file.cpp msgid "Apple trees noise" -msgstr "Barulho das Ãrvores de Macieira" +msgstr "RuÃdo de Ãrvores de Macieira" #: src/settings_translation_file.cpp msgid "Arm inertia" @@ -2401,11 +2385,11 @@ msgstr "Privilégios básicos" #: src/settings_translation_file.cpp msgid "Beach noise" -msgstr "barulho de praia" +msgstr "RuÃdo de praias" #: src/settings_translation_file.cpp msgid "Beach noise threshold" -msgstr "Limitar o barulho da praia" +msgstr "Limiar do ruÃdo de praias." #: src/settings_translation_file.cpp msgid "Bilinear filtering" @@ -2484,15 +2468,15 @@ msgstr "Tecla para alternar atualização da câmera" #: src/settings_translation_file.cpp msgid "Cave noise" -msgstr "Barulho nas caverna" +msgstr "RuÃdo de cavernas" #: src/settings_translation_file.cpp msgid "Cave noise #1" -msgstr "Barulho na caverna #1" +msgstr "RuÃdo de cavernas #1" #: src/settings_translation_file.cpp msgid "Cave noise #2" -msgstr "Barulho na caverna #2" +msgstr "RuÃdo de cavernas #2" #: src/settings_translation_file.cpp msgid "Cave width" @@ -2500,11 +2484,11 @@ msgstr "Largura da caverna" #: src/settings_translation_file.cpp msgid "Cave1 noise" -msgstr "Barulho na caverna1" +msgstr "RuÃdos de Cave1" #: src/settings_translation_file.cpp msgid "Cave2 noise" -msgstr "Barulho na caverna2" +msgstr "RuÃdos de Cave2" #: src/settings_translation_file.cpp msgid "Cavern limit" @@ -2512,7 +2496,7 @@ msgstr "Limite da caverna" #: src/settings_translation_file.cpp msgid "Cavern noise" -msgstr "Barulho da caverna" +msgstr "RuÃdo de cavernas" #: src/settings_translation_file.cpp msgid "Cavern taper" @@ -2531,6 +2515,8 @@ msgid "" "Center of light curve boost range.\n" "Where 0.0 is minimum light level, 1.0 is maximum light level." msgstr "" +"Centro da faixa de aumento da curva de luz.\n" +"Onde 0.0 é o nÃvel mÃnimo de luz, 1.0 é o nÃvel máximo de luz." #: src/settings_translation_file.cpp msgid "Chat font size" @@ -2698,7 +2684,7 @@ msgstr "Lista negra de flags do ContentDB" #: src/settings_translation_file.cpp msgid "ContentDB Max Concurrent Downloads" -msgstr "" +msgstr "Máximo de downloads simultâneos de ContentDB" #: src/settings_translation_file.cpp msgid "ContentDB URL" @@ -2766,11 +2752,12 @@ msgid "Crosshair alpha" msgstr "Alpha do cursor" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Crosshair alpha (opaqueness, between 0 and 255).\n" "Also controls the object crosshair color" -msgstr "Alpha do cursor (o quanto ele é opaco, nÃveis entre 0 e 255)." +msgstr "" +"Alpha do cursor (o quanto ele é opaco, nÃveis entre 0 e 255).\n" +"Também controla a cor da cruz do objeto" #: src/settings_translation_file.cpp msgid "Crosshair color" @@ -2781,6 +2768,8 @@ msgid "" "Crosshair color (R,G,B).\n" "Also controls the object crosshair color" msgstr "" +"Cor da cruz (R, G, B).\n" +"Também controla a cor da cruz do objeto" #: src/settings_translation_file.cpp msgid "DPI" @@ -2945,8 +2934,8 @@ msgid "" "Description of server, to be displayed when players join and in the " "serverlist." msgstr "" -"Descrição do servidor, a ser exibida quando os jogadores se se conectarem e " -"na lista de servidores." +"Descrição do servidor, a ser exibida quando os jogadores se conectarem e na " +"lista de servidores." #: src/settings_translation_file.cpp msgid "Desert noise threshold" @@ -2965,9 +2954,8 @@ msgid "Desynchronize block animation" msgstr "Dessincronizar animação do bloco" #: src/settings_translation_file.cpp -#, fuzzy msgid "Dig key" -msgstr "Tecla direita" +msgstr "Tecla para escavar" #: src/settings_translation_file.cpp msgid "Digging particles" @@ -3034,7 +3022,8 @@ msgid "Enable console window" msgstr "Habilitar janela de console" #: src/settings_translation_file.cpp -msgid "Enable creative mode for new created maps." +#, fuzzy +msgid "Enable creative mode for all players" msgstr "Habilitar modo criativo para mundos novos." #: src/settings_translation_file.cpp @@ -3184,11 +3173,18 @@ msgid "" "Values < 1.0 (for example 0.25) create a more defined surface level with\n" "flatter lowlands, suitable for a solid floatland layer." msgstr "" +"Expoente de estreitamento das ilhas flutuantes. Altera o comportamento de " +"afilamento.\n" +"Valor = 1.0 cria um afunilamento linear uniforme.\n" +"Valores> 1.0 criam um estreitamento suave adequado para as ilhas flutuantes\n" +"padrão (separadas).\n" +"Valores <1.0 (por exemplo 0.25) criam um nÃvel de superfÃcie mais definido " +"com\n" +"planÃcies mais planas, adequadas para uma camada sólida de ilhas flutuantes." #: src/settings_translation_file.cpp -#, fuzzy msgid "FPS when unfocused or paused" -msgstr "Máximo FPS quando o jogo é pausado." +msgstr "FPS quando o jogo é pausado ou perde o foco" #: src/settings_translation_file.cpp msgid "FSAA" @@ -3203,9 +3199,8 @@ msgid "Fall bobbing factor" msgstr "Fator de balanço em queda" #: src/settings_translation_file.cpp -#, fuzzy msgid "Fallback font path" -msgstr "Fonte Alternativa" +msgstr "Fonte reserva" #: src/settings_translation_file.cpp msgid "Fallback font shadow" @@ -3306,39 +3301,32 @@ msgid "Fixed virtual joystick" msgstr "Joystick virtual fixo" #: src/settings_translation_file.cpp -#, fuzzy msgid "Floatland density" -msgstr "Densidade da Ilha Flutuante montanhosa" +msgstr "Densidade das terras flutuantes" #: src/settings_translation_file.cpp -#, fuzzy msgid "Floatland maximum Y" -msgstr "Y máximo da dungeon" +msgstr "Y máximo das terras flutuantes" #: src/settings_translation_file.cpp -#, fuzzy msgid "Floatland minimum Y" -msgstr "Y mÃnimo da dungeon" +msgstr "Y mÃnimo das terras flutuantes" #: src/settings_translation_file.cpp -#, fuzzy msgid "Floatland noise" -msgstr "RuÃdo base de Ilha Flutuante" +msgstr "RuÃdo das terras flutuantes" #: src/settings_translation_file.cpp -#, fuzzy msgid "Floatland taper exponent" -msgstr "Expoente de terras flutuantes montanhosas" +msgstr "Expoente de conicidade das ilhas flutuantes" #: src/settings_translation_file.cpp -#, fuzzy msgid "Floatland tapering distance" -msgstr "RuÃdo base de Ilha Flutuante" +msgstr "Distância de afilamento da ilha flutuante" #: src/settings_translation_file.cpp -#, fuzzy msgid "Floatland water level" -msgstr "NÃvel de água" +msgstr "NÃvel de água da ilha flutuante" #: src/settings_translation_file.cpp msgid "Fly key" @@ -3362,11 +3350,11 @@ msgstr "Tecla de comutação de névoa" #: src/settings_translation_file.cpp msgid "Font bold by default" -msgstr "" +msgstr "Fonte em negrito por padrão" #: src/settings_translation_file.cpp msgid "Font italic by default" -msgstr "" +msgstr "Fonte em itálico por padrão" #: src/settings_translation_file.cpp msgid "Font shadow" @@ -3382,21 +3370,24 @@ msgstr "Tamanho da fonte" #: src/settings_translation_file.cpp msgid "Font size of the default font in point (pt)." -msgstr "" +msgstr "Tamanho da fonte padrão em pontos (pt)." #: src/settings_translation_file.cpp msgid "Font size of the fallback font in point (pt)." -msgstr "" +msgstr "Tamanho da fonte reserva em pontos (pt)." #: src/settings_translation_file.cpp msgid "Font size of the monospace font in point (pt)." -msgstr "" +msgstr "Tamanho da fonte de largura fixa em pontos (pt)." #: src/settings_translation_file.cpp msgid "" "Font size of the recent chat text and chat prompt in point (pt).\n" "Value 0 will use the default font size." msgstr "" +"Tamanho da fonte do texto de bate-papo recente e do prompt do bate-papo em " +"pontos (pt).\n" +"O valor 0 irá utilizar o tamanho padrão de fonte." #: src/settings_translation_file.cpp msgid "" @@ -3404,6 +3395,9 @@ msgid "" "placeholders:\n" "@name, @message, @timestamp (optional)" msgstr "" +"Formato das mensagem de bate-papo dos jogadores. Os textos abaixo são " +"palavras-chave válidas:\n" +"@name, @message, @timestamp (opcional)" #: src/settings_translation_file.cpp msgid "Format of screenshots." @@ -3532,18 +3526,20 @@ msgstr "" "todas as decorações." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Gradient of light curve at maximum light level.\n" "Controls the contrast of the highest light levels." -msgstr "Curva gradiente de iluminaçao no nÃvel de luz maximo." +msgstr "" +"Gradiente da curva de luz no nÃvel de luz máximo.\n" +"Controla o contraste dos nÃveis de luz mais altos." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Gradient of light curve at minimum light level.\n" "Controls the contrast of the lowest light levels." -msgstr "Curva gradiente de iluminação no nÃvel de luz mÃnimo." +msgstr "" +"Gradiente da curva de luz no nÃvel de luz mÃnimo.\n" +"Controla o contraste dos nÃveis de luz mais baixos." #: src/settings_translation_file.cpp msgid "Graphics" @@ -3574,7 +3570,6 @@ msgid "HUD toggle key" msgstr "Tecla de comutação HUD" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Handling for deprecated Lua API calls:\n" "- none: Do not log deprecated calls\n" @@ -3582,9 +3577,9 @@ msgid "" "- error: abort on usage of deprecated call (suggested for mod developers)." msgstr "" "Lidando com funções obsoletas da API Lua:\n" -"-...legacy: (tenta) imitar o comportamento antigo (padrão para release).\n" -"-...log: Imita e gera log das funções obsoletas (padrão para debug).\n" -"-...error: Aborta quando chama uma função obsoleta (sugerido para " +"-...none: não registra funções obsoletas.\n" +"-...log: imita e registra as funções obsoletas chamadas (padrão).\n" +"-...error: aborta quando chama uma função obsoleta (sugerido para " "desenvolvedores de mods)." #: src/settings_translation_file.cpp @@ -3619,7 +3614,7 @@ msgstr "RuÃdo de altura" #: src/settings_translation_file.cpp msgid "Height select noise" -msgstr "Parâmetros de ruido de seleção de altura do gerador de mundo v6" +msgstr "Parâmetros de ruido de seleção de altura" #: src/settings_translation_file.cpp msgid "High-precision FPU" @@ -3627,11 +3622,11 @@ msgstr "FPU de alta precisão" #: src/settings_translation_file.cpp msgid "Hill steepness" -msgstr "Esparsamento das colinas no gerador de mundo plano" +msgstr "Inclinação dos morros" #: src/settings_translation_file.cpp msgid "Hill threshold" -msgstr "Threshold das colinas no gerador de mundo plano" +msgstr "Limite das colinas no gerador de mundo plano" #: src/settings_translation_file.cpp msgid "Hilliness1 noise" @@ -3658,18 +3653,24 @@ msgid "" "Horizontal acceleration in air when jumping or falling,\n" "in nodes per second per second." msgstr "" +"Aceleração horizontal no ar ao saltar ou cair,\n" +"em nós por segundo por segundo." #: src/settings_translation_file.cpp msgid "" "Horizontal and vertical acceleration in fast mode,\n" "in nodes per second per second." msgstr "" +"Aceleração horizontal e vertical no modo rápido,\n" +"em nós por segundo por segundo." #: src/settings_translation_file.cpp msgid "" "Horizontal and vertical acceleration on ground or when climbing,\n" "in nodes per second per second." msgstr "" +"Aceleração horizontal e vertical no solo ou ao escalar,\n" +"em nós por segundo por segundo." #: src/settings_translation_file.cpp msgid "Hotbar next key" @@ -3817,6 +3818,9 @@ msgid "" "If negative, liquid waves will move backwards.\n" "Requires waving liquids to be enabled." msgstr "" +"A velocidade com que as ondas lÃquidas se movem. Maior = mais rápido.\n" +"Se negativo, as ondas lÃquidas se moverão para trás.\n" +"Requer que a ondulação de lÃquidos esteja ativada." #: src/settings_translation_file.cpp msgid "" @@ -3957,6 +3961,12 @@ msgid "" "deleting an older debug.txt.1 if it exists.\n" "debug.txt is only moved if this setting is positive." msgstr "" +"Se o tamanho do arquivo debug.txt exceder o número de megabytes " +"especificado\n" +"nesta configuração quando ele for aberto, o arquivo é movido para debug." +"txt.1,\n" +"excluindo um debug.txt.1 mais antigo, se houver.\n" +"debug.txt só é movido se esta configuração for positiva." #: src/settings_translation_file.cpp msgid "If this is set, players will always (re)spawn at the given position." @@ -3994,15 +4004,15 @@ msgstr "Tecla de aumentar volume" #: src/settings_translation_file.cpp msgid "Initial vertical speed when jumping, in nodes per second." -msgstr "" +msgstr "Velocidade vertical inicial ao saltar, em nós por segundo." #: src/settings_translation_file.cpp msgid "" "Instrument builtin.\n" "This is usually only needed by core/builtin contributors" msgstr "" -"Monitoração imbutida.\n" -"Isto é usualmente apenas nessesário por contribuidores core/builtin" +"Monitoração embutida.\n" +"Isto é necessário apenas por contribuidores core/builtin" #: src/settings_translation_file.cpp msgid "Instrument chatcommands on registration." @@ -4063,14 +4073,12 @@ msgid "Invert vertical mouse movement." msgstr "Inverta o movimento vertical do mouse." #: src/settings_translation_file.cpp -#, fuzzy msgid "Italic font path" -msgstr "Caminho de fonte monoespaçada" +msgstr "Caminho da fonte em itálico" #: src/settings_translation_file.cpp -#, fuzzy msgid "Italic monospace font path" -msgstr "Caminho de fonte monoespaçada" +msgstr "Caminho da fonte em itálico monoespaçada" #: src/settings_translation_file.cpp msgid "Item entity TTL" @@ -4102,9 +4110,8 @@ msgid "Joystick button repetition interval" msgstr "Intervalo de repetição do botão do Joystick" #: src/settings_translation_file.cpp -#, fuzzy msgid "Joystick deadzone" -msgstr "Tipo do Joystick" +msgstr "\"Zona morta\" do joystick" #: src/settings_translation_file.cpp msgid "Joystick frustum sensitivity" @@ -4202,18 +4209,17 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Tecla para diminuir o alcance de visão.\n" +"Tecla para diminuir o volume.\n" "Consulte http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Key for digging.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Tecla para pular. \n" +"Tecla para escavar. \n" "Consulte http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" @@ -4243,7 +4249,7 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Tecla para aumentar o alcance de visão.\n" +"Tecla para aumentar o volume.\n" "Consulte http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" @@ -4315,7 +4321,7 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Tecla para pular. \n" +"Tecla para por o som em mudo. \n" "Consulte http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" @@ -4360,13 +4366,12 @@ msgstr "" "html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Key for placing.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Tecla para pular. \n" +"Tecla para colocar objetos. \n" "Consulte http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" @@ -4928,15 +4933,15 @@ msgstr "Profundidade de cavernas grandes" #: src/settings_translation_file.cpp msgid "Large cave maximum number" -msgstr "" +msgstr "Número máximo de cavernas grandes" #: src/settings_translation_file.cpp msgid "Large cave minimum number" -msgstr "" +msgstr "Número mÃnimo de cavernas grandes" #: src/settings_translation_file.cpp msgid "Large cave proportion flooded" -msgstr "" +msgstr "Proporção inundada de cavernas grandes" #: src/settings_translation_file.cpp msgid "Large chat console key" @@ -4972,13 +4977,12 @@ msgstr "" "geralmente atualizados em rede." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Length of liquid waves.\n" "Requires waving liquids to be enabled." msgstr "" -"Definido como true habilita balanço folhas.\n" -"Requer sombreadores serem ativados." +"Comprimento das ondas lÃquidas.\n" +"Requer que a ondulação de lÃquidos esteja ativada." #: src/settings_translation_file.cpp msgid "Length of time between Active Block Modifier (ABM) execution cycles" @@ -5013,34 +5017,28 @@ msgstr "" "- verbose" #: src/settings_translation_file.cpp -#, fuzzy msgid "Light curve boost" -msgstr "Aumento leve da curva de luz" +msgstr "Aumento da curva de luz" #: src/settings_translation_file.cpp -#, fuzzy msgid "Light curve boost center" -msgstr "Centro do aumento leve da curva de luz" +msgstr "Centro do aumento da curva de luz" #: src/settings_translation_file.cpp -#, fuzzy msgid "Light curve boost spread" -msgstr "Extensão do aumento leve da curva de luz" +msgstr "Extensão do aumento da curva de luz" #: src/settings_translation_file.cpp -#, fuzzy msgid "Light curve gamma" -msgstr "Aumento leve da curva de luz" +msgstr "Gamma da curva de luz" #: src/settings_translation_file.cpp -#, fuzzy msgid "Light curve high gradient" -msgstr "Aumento leve da curva de luz" +msgstr "Gradiente alto da curva de luz" #: src/settings_translation_file.cpp -#, fuzzy msgid "Light curve low gradient" -msgstr "Centro do aumento leve da curva de luz" +msgstr "Gradiente baixo da curva de luz" #: src/settings_translation_file.cpp msgid "" @@ -5084,9 +5082,8 @@ msgid "Liquid queue purge time" msgstr "Tempo para limpar a lista de espera para a atualização de lÃquidos" #: src/settings_translation_file.cpp -#, fuzzy msgid "Liquid sinking" -msgstr "Velocidade do afundamento de liquido" +msgstr "Afundamento do lÃquido" #: src/settings_translation_file.cpp msgid "Liquid update interval in seconds." @@ -5119,9 +5116,8 @@ msgid "Lower Y limit of dungeons." msgstr "Menor limite Y de dungeons." #: src/settings_translation_file.cpp -#, fuzzy msgid "Lower Y limit of floatlands." -msgstr "Menor limite Y de dungeons." +msgstr "Menor limite Y de ilhas flutuantes." #: src/settings_translation_file.cpp msgid "Main menu script" @@ -5144,11 +5140,11 @@ msgstr "Torna todos os lÃquidos opacos" #: src/settings_translation_file.cpp msgid "Map Compression Level for Disk Storage" -msgstr "" +msgstr "NÃvel de Compressão de Mapa no Armazenamento em Disco" #: src/settings_translation_file.cpp msgid "Map Compression Level for Network Transfer" -msgstr "" +msgstr "NÃvel de Compressão do Mapa na Transferência em Rede" #: src/settings_translation_file.cpp msgid "Map directory" @@ -5159,23 +5155,22 @@ msgid "Map generation attributes specific to Mapgen Carpathian." msgstr "Atributos de geração de mapa especÃficos ao gerador Carpathian." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Map generation attributes specific to Mapgen Flat.\n" "Occasional lakes and hills can be added to the flat world." msgstr "" -"Atributos de geração de mapas especÃficos para o gerador de mundo plano.\n" +"Atributos de geração de mapas especÃficos para o Gerador de mundo Plano.\n" "Lagos e colinas ocasionalmente podem ser adicionados ao mundo plano." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Map generation attributes specific to Mapgen Fractal.\n" "'terrain' enables the generation of non-fractal terrain:\n" "ocean, islands and underground." msgstr "" -"Atributos de geração de mapa especÃficos ao gerador V7.\n" -"'ridges' habilitam os rios." +"Atributos de geração de mapas especÃficos para o Gerador de mundo Fractal.\n" +"'terreno' permite a geração de terreno não fractal:\n" +"oceano, ilhas e subterrâneos." #: src/settings_translation_file.cpp msgid "" @@ -5190,7 +5185,7 @@ msgstr "" "'altitude_chill':Reduz o calor com a altitude.\n" "'humid_rivers':Aumenta a umidade em volta dos rios.\n" "'profundidade_variada_rios': Se habilitado, baixa umidade e alto calor faz " -"com que que rios se tornem mais rasos e eventualmente sumam.\n" +"com que rios se tornem mais rasos e eventualmente sumam.\n" "'altitude_dry': Reduz a umidade com a altitude." #: src/settings_translation_file.cpp @@ -5198,28 +5193,29 @@ msgid "Map generation attributes specific to Mapgen v5." msgstr "Atributos de geração de mapa especÃficos ao gerador V5." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Map generation attributes specific to Mapgen v6.\n" "The 'snowbiomes' flag enables the new 5 biome system.\n" "When the 'snowbiomes' flag is enabled jungles are automatically enabled and\n" "the 'jungles' flag is ignored." msgstr "" -"Atributos de geração de mapas especÃfico para o gerador de mundo v6.\n" -" O 'snowbiomes' flag habilita o novo sistema de bioma 5.\n" -"Quando o sistema de novo bioma estiver habilitado, selvas são " -"automaticamente habilitadas e a flag 'jungles' é ignorada." +"Atributos de geração de mapas especÃficos para Gerador de mapas v6.\n" +"A opção 'snowbiomes' habilita o novo sistema de 5 biomas.\n" +"Quando a opção 'snowbiomes' está ativada, as selvas são ativadas " +"automaticamente e\n" +"a opção 'jungles' é ignorada." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Map generation attributes specific to Mapgen v7.\n" "'ridges': Rivers.\n" "'floatlands': Floating land masses in the atmosphere.\n" "'caverns': Giant caves deep underground." msgstr "" -"Atributos de geração de mapa especÃficos ao gerador V7.\n" -"'ridges' habilitam os rios." +"Atributos de geração de mapas especÃficos para Gerador de mapas v7.\n" +"'ridges': rios.\n" +"'floatlands': massas de terra flutuantes na atmosfera.\n" +"'caverns': cavernas gigantes no subsolo." #: src/settings_translation_file.cpp msgid "Map generation limit" @@ -5268,9 +5264,8 @@ msgid "Mapgen Fractal" msgstr "Gerador de mundo Fractal" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen Fractal specific flags" -msgstr "Flags especÃficas do gerador de mundo plano" +msgstr "Opções especÃficas do Gerador de mapas Fractal" #: src/settings_translation_file.cpp msgid "Mapgen V5" @@ -5337,9 +5332,9 @@ msgid "Maximum FPS" msgstr "FPS máximo" #: src/settings_translation_file.cpp -#, fuzzy msgid "Maximum FPS when the window is not focused, or when the game is paused." -msgstr "Máximo FPS quando o jogo é pausado." +msgstr "" +"FPS máximo quando a janela não está com foco, ou quando o jogo é pausado." #: src/settings_translation_file.cpp msgid "Maximum forceloaded blocks" @@ -5351,17 +5346,19 @@ msgstr "Largura máxima da hotbar" #: src/settings_translation_file.cpp msgid "Maximum limit of random number of large caves per mapchunk." -msgstr "" +msgstr "Limite máximo do número aleatório de cavernas grandes por mapchunk." #: src/settings_translation_file.cpp msgid "Maximum limit of random number of small caves per mapchunk." -msgstr "" +msgstr "Limite máximo do número aleatório de cavernas pequenas por mapchunk." #: src/settings_translation_file.cpp msgid "" "Maximum liquid resistance. Controls deceleration when entering liquid at\n" "high speed." msgstr "" +"Resistência lÃquida máxima. Controla desaceleração ao entrar num lÃquido\n" +"em alta velocidade." #: src/settings_translation_file.cpp msgid "" @@ -5379,25 +5376,22 @@ msgstr "" "Número máximo de blocos que podem ser enfileirados para o carregamento." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Maximum number of blocks to be queued that are to be generated.\n" "This limit is enforced per player." msgstr "" -"Número máximo de blocos para serem enfileirados que estão a ser gerados.\n" -"Definido em branco para uma quantidade apropriada ser escolhida " -"automaticamente." +"Número máximo de blocos para serem enfileirado, dos que estão para ser " +"gerados.\n" +"Esse limite é forçado para cada jogador." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Maximum number of blocks to be queued that are to be loaded from file.\n" "This limit is enforced per player." msgstr "" -"Número máximo de blocos para ser enfileirado que serão carregados do " -"arquivo.\n" -"Definido em branco para uma quantidade apropriada ser escolhida " -"automaticamente." +"Número máximo de blocos para serem enfileirado, dos que estão para ser " +"carregados do arquivo.\n" +"Esse limite é forçado para cada jogador." #: src/settings_translation_file.cpp msgid "" @@ -5405,6 +5399,9 @@ msgid "" "be queued.\n" "This should be lower than curl_parallel_limit." msgstr "" +"Número máximo de downloads paralelos. Downloads excedendo esse limite " +"esperarão numa fila.\n" +"Deve ser menor que curl_parallel_limit." #: src/settings_translation_file.cpp msgid "Maximum number of forceloaded mapblocks." @@ -5501,7 +5498,7 @@ msgstr "Método usado para destacar o objeto selecionado." #: src/settings_translation_file.cpp msgid "Minimal level of logging to be written to chat." -msgstr "" +msgstr "NÃvel mÃnimo de registro a ser impresso no chat." #: src/settings_translation_file.cpp msgid "Minimap" @@ -5516,13 +5513,12 @@ msgid "Minimap scan height" msgstr "Altura de escaneamento do minimapa" #: src/settings_translation_file.cpp -#, fuzzy msgid "Minimum limit of random number of large caves per mapchunk." -msgstr "RuÃdo 3D que determina o número de cavernas por pedaço de mapa." +msgstr "Limite mÃnimo do número aleatório de grandes cavernas por mapchunk." #: src/settings_translation_file.cpp msgid "Minimum limit of random number of small caves per mapchunk." -msgstr "" +msgstr "Limite mÃnimo do número aleatório de cavernas pequenas por mapchunk." #: src/settings_translation_file.cpp msgid "Minimum texture size" @@ -5593,19 +5589,17 @@ msgid "Mute sound" msgstr "Mutar som" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Name of map generator to be used when creating a new world.\n" "Creating a world in the main menu will override this.\n" "Current mapgens in a highly unstable state:\n" "- The optional floatlands of v7 (disabled by default)." msgstr "" -"Nome do gerador de mapa usando quando criar um novo mundo.\n" -"Criar um mundo no menu principal vai sobrescrever isto.\n" -"Geradores de mapa estáveis atualmente:\n" -"v5, v6, v7(exceto terras flutuantes), singlenode.\n" -"'estável' significa que a forma do terreno em um mundo existente não será " -"alterado no futuro. Note que biomas definidos por jogos ainda podem mudar." +"Nome do gerador de mapas a ser usado ao criar um novo mundo.\n" +"Criar um mundo no menu principal substituirá isso.\n" +"Geradores de mapa atuais em um estado altamente instável:\n" +"- A opção de ilhas flutuantes do Gerador de mapas de v7 (desabilitado por " +"padrão)." #: src/settings_translation_file.cpp msgid "" @@ -5626,9 +5620,8 @@ msgstr "" "servidores." #: src/settings_translation_file.cpp -#, fuzzy msgid "Near plane" -msgstr "plano próximo" +msgstr "Plano próximo" #: src/settings_translation_file.cpp msgid "Network" @@ -5671,7 +5664,6 @@ msgid "Number of emerge threads" msgstr "Número de seguimentos de emersão" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Number of emerge threads to use.\n" "Value 0:\n" @@ -5684,17 +5676,19 @@ msgid "" "processes, especially in singleplayer and/or when running Lua code in\n" "'on_generated'. For many users the optimum setting may be '1'." msgstr "" -"Número de thread emergentes para usar.\n" -"Vazio ou valor 0:\n" -"- Seleção automática. O número de threads emergentes será 'número de " -"processadores - 2', com limite mÃnimo de 1.\n" +"Número de threads de emersão a serem usadas.\n" +"Valor 0:\n" +"- Seleção automática. O número de threads de emersão será\n" +"- 'número de processadores - 2', com um limite inferior de 1.\n" "Qualquer outro valor:\n" -"- Especifica o número de threads emergentes com limite mÃnimo de 1.\n" -"Alerta: aumentando o número de threads emergentes aumenta a velocidade do " -"gerador, mas pode prejudicar o desemepenho interferindo com outros " -"processos, especialmente in singleplayer e/ou quando executando código lua " -"em 'on_generated'.\n" -"Para muitos usuários a opção mais recomendada é 1." +"- Especifica o número de threads de emersão, com um limite inferior de 1.\n" +"AVISO: Aumentar o número de threads de emersão aumenta a velocidade do motor " +"de\n" +"geração de mapas, mas isso pode prejudicar o desempenho do jogo, " +"interferindo com outros\n" +"processos, especialmente em singleplayer e / ou ao executar código Lua em " +"eventos\n" +"'on_generated'. Para muitos usuários, a configuração ideal pode ser '1'." #: src/settings_translation_file.cpp msgid "" @@ -5718,12 +5712,12 @@ msgstr "LÃquidos Opacos" #: src/settings_translation_file.cpp msgid "" "Opaqueness (alpha) of the shadow behind the default font, between 0 and 255." -msgstr "" +msgstr "Opacidade (alpha) das sombras atrás da fonte padrão, entre 0 e 255." #: src/settings_translation_file.cpp msgid "" "Opaqueness (alpha) of the shadow behind the fallback font, between 0 and 255." -msgstr "" +msgstr "Opacidade (alpha) da sombra atrás da fonte alternativa, entre 0 e 255." #: src/settings_translation_file.cpp msgid "" @@ -5742,12 +5736,20 @@ msgid "" "This font will be used for certain languages or if the default font is " "unavailable." msgstr "" +"Caminho da fonte alternativa.\n" +"Se a configuração \"freetype\" estiver ativa: Deve ser uma fonte TrueType.\n" +"Se a configuração \"freetype\" não estiver ativa: Deve ser uma fonte bitmap " +"ou de vetores XML.\n" +"Essa fonte será usada por certas lÃnguas ou se a padrão não estiver " +"disponÃvel." #: src/settings_translation_file.cpp msgid "" "Path to save screenshots at. Can be an absolute or relative path.\n" "The folder will be created if it doesn't already exist." msgstr "" +"Caminho para salvar capturas de tela. Pode ser absoluto ou relativo.\n" +"A pasta será criada se já não existe." #: src/settings_translation_file.cpp msgid "" @@ -5770,6 +5772,11 @@ msgid "" "If “freetype†setting is disabled: Must be a bitmap or XML vectors font.\n" "The fallback font will be used if the font cannot be loaded." msgstr "" +"Caminho para a fonte padrão.\n" +"Se a configuração \"freetype\" estiver ativa: Deve ser uma fonte TrueType.\n" +"Se a configuração \"freetype\" não estiver ativa: Deve ser uma fonte bitmap " +"ou de vetores XML.\n" +"A fonte alternativa será usada se não for possÃvel carregar essa." #: src/settings_translation_file.cpp msgid "" @@ -5778,6 +5785,11 @@ msgid "" "If “freetype†setting is disabled: Must be a bitmap or XML vectors font.\n" "This font is used for e.g. the console and profiler screen." msgstr "" +"Caminho para a fonte monoespaçada.\n" +"Se a configuração \"freetype\" estiver ativa: Deve ser uma fonte TrueType.\n" +"Se a configuração \"freetype\" não estiver ativa: Deve ser uma fonte bitmap " +"ou de vetores XML.\n" +"Essa fonte será usada, por exemplo, no console e na tela de depuração." #: src/settings_translation_file.cpp msgid "Pause on lost window focus" @@ -5786,11 +5798,11 @@ msgstr "Pausa quando o foco da janela é perdido" #: src/settings_translation_file.cpp msgid "Per-player limit of queued blocks load from disk" msgstr "" +"Limite de blocos na fila de espera de carregamento do disco por jogador" #: src/settings_translation_file.cpp -#, fuzzy msgid "Per-player limit of queued blocks to generate" -msgstr "Limite de filas emerge para gerar" +msgstr "Limite por jogador de blocos enfileirados para gerar" #: src/settings_translation_file.cpp msgid "Physics" @@ -5805,14 +5817,12 @@ msgid "Pitch move mode" msgstr "Modo movimento pitch" #: src/settings_translation_file.cpp -#, fuzzy msgid "Place key" -msgstr "Tecla de voar" +msgstr "Tecla de colocar" #: src/settings_translation_file.cpp -#, fuzzy msgid "Place repetition interval" -msgstr "Intervalo de repetição do clique direito" +msgstr "Intervalo de repetição da ação colocar" #: src/settings_translation_file.cpp msgid "" @@ -5882,7 +5892,7 @@ msgstr "Analizando" #: src/settings_translation_file.cpp msgid "Prometheus listener address" -msgstr "" +msgstr "Endereço do Prometheus" #: src/settings_translation_file.cpp msgid "" @@ -5891,10 +5901,14 @@ msgid "" "enable metrics listener for Prometheus on that address.\n" "Metrics can be fetch on http://127.0.0.1:30000/metrics" msgstr "" +"Endereço do Prometheus\n" +"Se o minetest for compilado com a opção ENABLE_PROMETHEUS ativa,\n" +"habilita a obtenção de métricas do Prometheus neste endereço.\n" +"As métricas podem ser obtidas em http://127.0.0.1:30000/metrics" #: src/settings_translation_file.cpp msgid "Proportion of large caves that contain liquid." -msgstr "" +msgstr "Proporção de cavernas grandes que contém lÃquido." #: src/settings_translation_file.cpp msgid "" @@ -5923,9 +5937,8 @@ msgid "Recent Chat Messages" msgstr "Mensagens de chat recentes" #: src/settings_translation_file.cpp -#, fuzzy msgid "Regular font path" -msgstr "Diretorio de reporte" +msgstr "Caminho da fonte regular" #: src/settings_translation_file.cpp msgid "Remote media" @@ -5998,14 +6011,12 @@ msgid "Right key" msgstr "Tecla direita" #: src/settings_translation_file.cpp -#, fuzzy msgid "River channel depth" -msgstr "Profundidade do Rio" +msgstr "Profundidade do canal do rio" #: src/settings_translation_file.cpp -#, fuzzy msgid "River channel width" -msgstr "Profundidade do Rio" +msgstr "Largura do canal do rio" #: src/settings_translation_file.cpp msgid "River depth" @@ -6020,9 +6031,8 @@ msgid "River size" msgstr "Tamanho do Rio" #: src/settings_translation_file.cpp -#, fuzzy msgid "River valley width" -msgstr "Profundidade do Rio" +msgstr "Largura do vale do rio" #: src/settings_translation_file.cpp msgid "Rollback recording" @@ -6138,7 +6148,6 @@ msgid "Selection box width" msgstr "Largura da caixa de seleção" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Selects one of 18 fractal types.\n" "1 = 4D \"Roundy\" Mandelbrot set.\n" @@ -6231,31 +6240,28 @@ msgstr "" "clientes." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Set to true to enable waving leaves.\n" "Requires shaders to be enabled." msgstr "" -"Definido como true habilita balanço folhas.\n" -"Requer sombreadores serem ativados." +"Definido como true habilita o balanço das folhas.\n" +"Requer que os sombreadores estejam ativados." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Set to true to enable waving liquids (like water).\n" "Requires shaders to be enabled." msgstr "" -"Definido como true permite ondulação da água.\n" -"Requer sombreadores seres ativados." +"Definido como true permite ondulação de lÃquidos (como a água).\n" +"Requer que os sombreadores estejam ativados." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Set to true to enable waving plants.\n" "Requires shaders to be enabled." msgstr "" "Definido como true permite balanço de plantas.\n" -"Requer sombreadores serem ativados." +"Requer que os sombreadores estejam ativados." #: src/settings_translation_file.cpp msgid "Shader path" @@ -6273,18 +6279,20 @@ msgstr "" "Só funcionam com o modo de vÃdeo OpenGL." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Shadow offset (in pixels) of the default font. If 0, then shadow will not be " "drawn." -msgstr "Fonte de compensador de sombra, se 0 então sombra não será desenhada." +msgstr "" +"Distância (em pixels) da sombra da fonte padrão. Se 0, então a sombra não " +"será desenhada." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Shadow offset (in pixels) of the fallback font. If 0, then shadow will not " "be drawn." -msgstr "Fonte de compensador de sombra, se 0 então sombra não será desenhada." +msgstr "" +"Distância (em pixels) da sombra da fonte de backup. Se 0, então nenhuma " +"sombra será desenhada." #: src/settings_translation_file.cpp msgid "Shape of the minimap. Enabled = round, disabled = square." @@ -6299,13 +6307,17 @@ msgid "Show entity selection boxes" msgstr "Mostrar as caixas de seleção entidades" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Show entity selection boxes\n" "A restart is required after changing this." msgstr "" -"Defina o idioma. Deixe vazio para usar a linguagem do sistema.\n" -"Apos mudar isso uma reinicialização é necessária." +"Mostrar caixas de seleção de entidades\n" +"É necessário reiniciar após alterar isso." + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Show nametag backgrounds by default" +msgstr "Fonte em negrito por padrão" #: src/settings_translation_file.cpp msgid "Shutdown message" @@ -6346,11 +6358,11 @@ msgstr "Inclinação e preenchimento trabalham juntos para modificar as alturas. #: src/settings_translation_file.cpp msgid "Small cave maximum number" -msgstr "" +msgstr "Número máximo de cavernas pequenas" #: src/settings_translation_file.cpp msgid "Small cave minimum number" -msgstr "" +msgstr "Número mÃnimo de cavernas pequenas" #: src/settings_translation_file.cpp msgid "Small-scale humidity variation for blending biomes on borders." @@ -6393,7 +6405,7 @@ msgstr "Velocidade da furtividade" #: src/settings_translation_file.cpp msgid "Sneaking speed, in nodes per second." -msgstr "" +msgstr "Velocidade ao esgueirar-se, em nós (blocos) por segundo." #: src/settings_translation_file.cpp msgid "Sound" @@ -6426,16 +6438,19 @@ msgid "" "Note that mods or games may explicitly set a stack for certain (or all) " "items." msgstr "" +"Especifica o tamanho padrão da pilha de nós, items e ferramentas.\n" +"Note que mods e games talvez definam explicitamente um tamanho para certos " +"(ou todos) os itens." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Spread of light curve boost range.\n" "Controls the width of the range to be boosted.\n" "Standard deviation of the light curve boost Gaussian." msgstr "" -"Extensão do aumento médio da curva da luz.\n" -"Desvio padrão do aumento médio gaussiano." +"Ampliação da faixa de aumento da curva de luz.\n" +"Controla a largura do intervalo a ser aumentado.\n" +"O desvio padrão da gaussiana do aumento da curva de luz." #: src/settings_translation_file.cpp msgid "Static spawnpoint" @@ -6454,9 +6469,8 @@ msgid "Step mountain spread noise" msgstr "Extensão do ruÃdo da montanha de passo" #: src/settings_translation_file.cpp -#, fuzzy msgid "Strength of 3D mode parallax." -msgstr "Intensidade de paralaxe." +msgstr "Força da paralaxe do modo 3D." #: src/settings_translation_file.cpp msgid "" @@ -6464,6 +6478,9 @@ msgid "" "The 3 'boost' parameters define a range of the light\n" "curve that is boosted in brightness." msgstr "" +"Aumento da força da curva de luz.\n" +"Os 3 parâmetros de 'aumento' definem uma faixa\n" +"da curva de luz que é aumentada em brilho." #: src/settings_translation_file.cpp msgid "Strict protocol checking" @@ -6486,6 +6503,21 @@ msgid "" "server-intensive extreme water flow and to avoid vast flooding of the\n" "world surface below." msgstr "" +"NÃvel de superfÃcie de água opcional colocada em uma camada sólida de " +"flutuação.\n" +"A água está desativada por padrão e só será colocada se este valor for " +"definido\n" +"acima de 'mgv7_floatland_ymax' - 'mgv7_floatland_taper' (o inÃcio do\n" +"afilamento superior).\n" +"*** AVISO, POTENCIAL PERIGO PARA OS MUNDOS E DESEMPENHO DO SERVIDOR ***:\n" +"Ao habilitar a colocação de água, as áreas flutuantes devem ser configuradas " +"e testadas\n" +"para ser uma camada sólida, definindo 'mgv7_floatland_density' para 2.0 (ou " +"outro\n" +"valor necessário dependendo de 'mgv7_np_floatland'), para evitar\n" +"fluxo de água extremo intensivo do servidor e para evitar grandes inundações " +"do\n" +"superfÃcie do mundo abaixo." #: src/settings_translation_file.cpp msgid "Synchronous SQLite" @@ -6565,9 +6597,8 @@ msgid "The URL for the content repository" msgstr "A url para o repositório de conteúdo" #: src/settings_translation_file.cpp -#, fuzzy msgid "The deadzone of the joystick" -msgstr "O identificador do joystick para usar" +msgstr "A zona morta do joystick" #: src/settings_translation_file.cpp msgid "" @@ -6605,6 +6636,11 @@ msgid "" "Default is 1.0 (1/2 node).\n" "Requires waving liquids to be enabled." msgstr "" +"A altura máxima da superfÃcie de lÃquidos com ondas.\n" +"4.0 = Altura da onda é dois nós.\n" +"0.0 = Onda nem se move.\n" +"O padrão é 1.0 (meio nó).\n" +"Requer ondas em lÃquidos habilitada." #: src/settings_translation_file.cpp msgid "The network interface that the server listens on." @@ -6620,7 +6656,6 @@ msgstr "" "servidor e dos modificadores." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "The radius of the volume of blocks around every player that is subject to " "the\n" @@ -6630,14 +6665,14 @@ msgid "" "maintained.\n" "This should be configured together with active_object_send_range_blocks." msgstr "" -"O raio do volume de blocos em volta de cada jogador que é sujeito a coisas " -"de bloco ativo, em mapblocks (16 nós).\n" -"Em blocos ativos, objetos são carregados e ABMs executam.\n" -"Isto é também o alcançe mÃnimo em que objetos ativos(mobs) são mantidos.\n" -"Isto deve ser configurado junto com o alcance_objeto_ativo." +"O raio do volume dos blocos em torno de cada jogador que está sujeito ao\n" +"material de bloco ativo, declarado em mapblocks (16 nós).\n" +"Nos blocos ativos, os objetos são carregados e os ABMs executados.\n" +"Este também é o intervalo mÃnimo no qual os objetos ativos (mobs) são " +"mantidos.\n" +"Isso deve ser configurado junto com active_object_send_range_blocks." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "The rendering back-end for Irrlicht.\n" "A restart is required after changing this.\n" @@ -6646,12 +6681,12 @@ msgid "" "On other platforms, OpenGL is recommended.\n" "Shaders are supported by OpenGL (desktop only) and OGLES2 (experimental)" msgstr "" -"Renderizador de fundo para o irrlight.\n" -"Uma reinicialização é necessária após alterar isso.\n" -"Note: no android, use o OGLES1 caso em dúvida! O aplicativo pode falhar ao " -"abrir em outro caso.\n" -"Em outras plataformas, OpenGL é recomendo, e é o único driver com suporte a " -"sombreamento atualmente." +"O back-end de renderização para Irrlicht.\n" +"É necessário reiniciar após alterar isso.\n" +"Nota: No Android, use OGLES1 se não tiver certeza! O aplicativo pode falhar " +"ao iniciar de outra forma.\n" +"Em outras plataformas, OpenGL é recomendado.\n" +"Shaders são suportados por OpenGL (somente desktop) e OGLES2 (experimental)" #: src/settings_translation_file.cpp msgid "" @@ -6691,6 +6726,8 @@ msgid "" "The time budget allowed for ABMs to execute on each step\n" "(as a fraction of the ABM Interval)" msgstr "" +"O tempo disponÃvel permitido para ABMs executarem em cada passo (como uma " +"fração do intervalo do ABM)" #: src/settings_translation_file.cpp msgid "" @@ -6701,13 +6738,12 @@ msgstr "" "quando pressionando uma combinação de botão no joystick." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "The time in seconds it takes between repeated node placements when holding\n" "the place button." msgstr "" -"O tempo em segundos entre repetidos cliques direitos ao segurar o botão " -"direito do mouse." +"O tempo em segundos que leva entre as colocações de nó repetidas ao segurar\n" +"o botão de colocar." #: src/settings_translation_file.cpp msgid "The type of joystick" @@ -6787,7 +6823,6 @@ msgid "Trilinear filtering" msgstr "Filtragem tri-linear" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "True = 256\n" "False = 128\n" @@ -6810,7 +6845,6 @@ msgid "Undersampling" msgstr "Subamostragem" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Undersampling is similar to using a lower screen resolution, but it applies\n" "to the game world only, keeping the GUI intact.\n" @@ -6818,10 +6852,12 @@ msgid "" "image.\n" "Higher values result in a less detailed image." msgstr "" -"A subamostragem é semelhante ao uso de resolução de tela menor, mas se " -"aplica apenas ao mundo do jogo, mantendo a GUI (Interface Gráfica do " -"Usuário) intacta. Deve dar um aumento significativo no desempenho ao custo " -"de uma imagem menos detalhada." +"A subamostragem é semelhante a usar uma resolução de tela inferior, mas se " +"aplica\n" +"apenas para o mundo do jogo, mantendo a GUI intacta.\n" +"Deve dar um aumento significativo de desempenho ao custo de uma imagem menos " +"detalhada.\n" +"Valores mais altos resultam em uma imagem menos detalhada." #: src/settings_translation_file.cpp msgid "Unlimited player transfer distance" @@ -6836,9 +6872,8 @@ msgid "Upper Y limit of dungeons." msgstr "Limite topo Y de dungeons." #: src/settings_translation_file.cpp -#, fuzzy msgid "Upper Y limit of floatlands." -msgstr "Limite topo Y de dungeons." +msgstr "Limite máximo Y para as ilhas flutuantes." #: src/settings_translation_file.cpp msgid "Use 3D cloud look instead of flat." @@ -6877,6 +6912,16 @@ msgid "" "If set to 0, MSAA is disabled.\n" "A restart is required after changing this option." msgstr "" +"Use o anti-serrilhamento de várias amostras (MSAA) para suavizar as bordas " +"do bloco.\n" +"Este algoritmo suaviza a janela de visualização 3D enquanto mantém a imagem " +"nÃtida,\n" +"mas não afeta o interior das texturas\n" +"(que é especialmente perceptÃvel com texturas transparentes).\n" +"Espaços visÃveis aparecem entre os nós quando os sombreadores são " +"desativados.\n" +"Se definido como 0, MSAA é desativado.\n" +"É necessário reiniciar após alterar esta opção." #: src/settings_translation_file.cpp msgid "Use trilinear filtering when scaling textures." @@ -6945,7 +6990,7 @@ msgstr "Controla o esparsamento/altura das colinas." #: src/settings_translation_file.cpp msgid "Vertical climbing speed, in nodes per second." -msgstr "" +msgstr "Velocidade vertical de escalda, em nós por segundo." #: src/settings_translation_file.cpp msgid "Vertical screen synchronization." @@ -6990,13 +7035,12 @@ msgid "Volume" msgstr "Volume do som" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Volume of all sounds.\n" "Requires the sound system to be enabled." msgstr "" -"Ativar mapeamento de oclusão de paralaxe.\n" -"Requer shaders a serem ativados." +"Volume de todos os sons.\n" +"Requer que o sistema de som esteja ativado." #: src/settings_translation_file.cpp msgid "" @@ -7013,7 +7057,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Walking and flying speed, in nodes per second." -msgstr "" +msgstr "Velocidade do andar e voar, em nós por segundo." #: src/settings_translation_file.cpp msgid "Walking speed" @@ -7022,6 +7066,7 @@ msgstr "Velocidade de caminhada" #: src/settings_translation_file.cpp msgid "Walking, flying and climbing speed in fast mode, in nodes per second." msgstr "" +"Velocidade do caminhar, voar e escalar no modo rápido, em nós por segundo." #: src/settings_translation_file.cpp msgid "Water level" @@ -7040,22 +7085,18 @@ msgid "Waving leaves" msgstr "Balanço das árvores" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving liquids" -msgstr "Nós que balancam" +msgstr "LÃquidos ondulantes" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving liquids wave height" -msgstr "Altura de balanço da água" +msgstr "Altura da onda nos lÃquidos ondulantes" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving liquids wave speed" msgstr "Velocidade de balanço da água" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving liquids wavelength" msgstr "Comprimento de balanço da água" @@ -7111,14 +7152,20 @@ msgstr "" "texturas." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Whether FreeType fonts are used, requires FreeType support to be compiled " "in.\n" "If disabled, bitmap and XML vectors fonts are used instead." msgstr "" -"Se forem utilizadas fontes freetype, requer suporte a freetype para ser " -"compilado." +"Se as fontes FreeType são usadas, requer que suporte FreeType tenha sido " +"compilado.\n" +"Se desativado, fontes de bitmap e de vetores XML são usadas em seu lugar." + +#: src/settings_translation_file.cpp +msgid "" +"Whether nametag backgrounds should be shown by default.\n" +"Mods may still set a background." +msgstr "" #: src/settings_translation_file.cpp msgid "Whether node texture animations should be desynchronized per mapblock." @@ -7159,6 +7206,10 @@ msgid "" "In-game, you can toggle the mute state with the mute key or by using the\n" "pause menu." msgstr "" +"Quando mutar os sons. Você pode mutar os sons a qualquer hora, a não ser\n" +"que o sistema de som esteja desabilitado (enable_sound=false).\n" +"No jogo, você pode habilitar o estado de mutado com o botão de mutar\n" +"ou usando o menu de pausa." #: src/settings_translation_file.cpp msgid "" @@ -7245,6 +7296,12 @@ msgid "" "For a solid floatland layer, this controls the height of hills/mountains.\n" "Must be less than or equal to half the distance between the Y limits." msgstr "" +"Distância de Y sobre a qual as ilhas flutuantes diminuem de densidade total " +"para nenhuma densidade.\n" +"O afunilamento começa nesta distância do limite Y.\n" +"Para uma ilha flutuante sólida, isso controla a altura das colinas / " +"montanhas.\n" +"Deve ser menor ou igual a metade da distância entre os limites Y." #: src/settings_translation_file.cpp msgid "Y-level of average terrain surface." @@ -7274,6 +7331,12 @@ msgid "" "9 - best compression, slowest\n" "(levels 1-3 use Zlib's \"fast\" method, 4-9 use the normal method)" msgstr "" +"NÃvel de compressão ZLib a ser usada ao salvar mapblocks no disco.\n" +"-1 - NÃvel de compressão padrão do Zlib\n" +"0 - Nenhuma compressão; o mais rápido\n" +"9 - Melhor compressão; o mais devagar\n" +"(nÃveis 1-3 usam método \"rápido\" do Zlib, enquanto que 4-9 usam método " +"normal)" #: src/settings_translation_file.cpp msgid "" @@ -7283,6 +7346,12 @@ msgid "" "9 - best compression, slowest\n" "(levels 1-3 use Zlib's \"fast\" method, 4-9 use the normal method)" msgstr "" +"NÃvel de compressão ZLib a ser usada ao mandar mapblocks para o cliente.\n" +"-1 - NÃvel de compressão padrão do Zlib\n" +"0 - Nenhuma compressão; o mais rápido\n" +"9 - Melhor compressão; o mais devagar\n" +"(nÃveis 1-3 usam método \"rápido\" do Zlib, enquanto que 4-9 usam método " +"normal)" #: src/settings_translation_file.cpp msgid "cURL file download timeout" diff --git a/po/ro/minetest.po b/po/ro/minetest.po index ba54a3f65..48ad46e2c 100644 --- a/po/ro/minetest.po +++ b/po/ro/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Romanian (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-01-30 21:13+0100\n" +"POT-Creation-Date: 2021-02-23 19:03+0100\n" "PO-Revision-Date: 2020-11-24 11:29+0000\n" "Last-Translator: Nicolae Crefelean <kneekoo@yahoo.com>\n" "Language-Team: Romanian <https://hosted.weblate.org/projects/minetest/" @@ -708,6 +708,11 @@ msgid "Loading..." msgstr "Se încarcă..." #: builtin/mainmenu/serverlistmgr.lua +#, fuzzy +msgid "Public server list is disabled" +msgstr "Scripturile din partea clientului sunt dezactivate" + +#: builtin/mainmenu/serverlistmgr.lua msgid "Try reenabling public serverlist and check your internet connection." msgstr "" "ÃŽncercaÈ›i să activaÈ›i lista de servere publică È™i să vă verificaÈ›i " @@ -2984,7 +2989,7 @@ msgid "Enable console window" msgstr "" #: src/settings_translation_file.cpp -msgid "Enable creative mode for new created maps." +msgid "Enable creative mode for all players" msgstr "" #: src/settings_translation_file.cpp @@ -5688,6 +5693,10 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp +msgid "Show nametag backgrounds by default" +msgstr "" + +#: src/settings_translation_file.cpp msgid "Shutdown message" msgstr "" @@ -6361,6 +6370,12 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp +msgid "" +"Whether nametag backgrounds should be shown by default.\n" +"Mods may still set a background." +msgstr "" + +#: src/settings_translation_file.cpp msgid "Whether node texture animations should be desynchronized per mapblock." msgstr "" diff --git a/po/ru/minetest.po b/po/ru/minetest.po index c2211caed..9f78a12da 100644 --- a/po/ru/minetest.po +++ b/po/ru/minetest.po @@ -2,9 +2,9 @@ msgid "" msgstr "" "Project-Id-Version: Russian (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-01-30 21:13+0100\n" -"PO-Revision-Date: 2020-11-14 18:28+0000\n" -"Last-Translator: Andrei Stepanov <adem4ik@gmail.com>\n" +"POT-Creation-Date: 2021-02-23 19:03+0100\n" +"PO-Revision-Date: 2021-02-13 08:50+0000\n" +"Last-Translator: Ertu (Er2, Err) <er2official@outlook.com>\n" "Language-Team: Russian <https://hosted.weblate.org/projects/minetest/" "minetest/ru/>\n" "Language: ru\n" @@ -13,7 +13,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" -"X-Generator: Weblate 4.4-dev\n" +"X-Generator: Weblate 4.5-dev\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" @@ -154,52 +154,51 @@ msgstr "включено" #: builtin/mainmenu/dlg_contentstore.lua msgid "\"$1\" already exists. Would you like to overwrite it?" -msgstr "" +msgstr "\"$1\" уже ÑущеÑтвует. ПерезапиÑать?" #: builtin/mainmenu/dlg_contentstore.lua msgid "$1 and $2 dependencies will be installed." -msgstr "" +msgstr "ЗавиÑимоÑти $1 и $2 будут уÑтановлены." #: builtin/mainmenu/dlg_contentstore.lua msgid "$1 by $2" -msgstr "" +msgstr "$1 из $2" #: builtin/mainmenu/dlg_contentstore.lua msgid "" "$1 downloading,\n" "$2 queued" msgstr "" +"$1 ÑкачиваетÑÑ,\n" +"$2 в очереди" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "$1 downloading..." -msgstr "Загрузка..." +msgstr "$1 ÑкачиваетÑÑ…" #: builtin/mainmenu/dlg_contentstore.lua msgid "$1 required dependencies could not be found." -msgstr "" +msgstr "Ðе удалоÑÑŒ найти требуемые завиÑимоÑти $1." #: builtin/mainmenu/dlg_contentstore.lua msgid "$1 will be installed, and $2 dependencies will be skipped." -msgstr "" +msgstr "Будет уÑтановлен $1, а завиÑимоÑти $2 будут пропущены." #: builtin/mainmenu/dlg_contentstore.lua msgid "All packages" msgstr "Ð’Ñе дополнениÑ" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "Already installed" -msgstr "Клавиша уже иÑпользуетÑÑ" +msgstr "Уже уÑтановлено" #: builtin/mainmenu/dlg_contentstore.lua msgid "Back to Main Menu" msgstr "Ðазад в главное меню" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "Base Game:" -msgstr "Играть (хоÑÑ‚)" +msgstr "Ð‘Ð°Ð·Ð¾Ð²Ð°Ñ Ð¸Ð³Ñ€Ð°:" #: builtin/mainmenu/dlg_contentstore.lua msgid "ContentDB is not available when Minetest was compiled without cURL" @@ -223,14 +222,12 @@ msgid "Install" msgstr "УÑтановить" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "Install $1" -msgstr "УÑтановить" +msgstr "УÑтановить $1" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "Install missing dependencies" -msgstr "ÐеобÑзательные завиÑимоÑти:" +msgstr "УÑтановить недоÑтающие завиÑимоÑти" #: builtin/mainmenu/dlg_contentstore.lua #: builtin/mainmenu/dlg_settings_advanced.lua @@ -246,26 +243,24 @@ msgid "No results" msgstr "Ðичего не найдено" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "No updates" -msgstr "Обновить" +msgstr "Ðет обновлений" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "Not found" -msgstr "Заглушить звук" +msgstr "Ðе найдено" #: builtin/mainmenu/dlg_contentstore.lua msgid "Overwrite" -msgstr "" +msgstr "ПерезапиÑать" #: builtin/mainmenu/dlg_contentstore.lua msgid "Please check that the base game is correct." -msgstr "" +msgstr "ПожалуйÑта, убедитеÑÑŒ, что Ð±Ð°Ð·Ð¾Ð²Ð°Ñ Ð¸Ð³Ñ€Ð° верна." #: builtin/mainmenu/dlg_contentstore.lua msgid "Queued" -msgstr "" +msgstr "Ð’ очереди" #: builtin/mainmenu/dlg_contentstore.lua msgid "Texture packs" @@ -281,11 +276,11 @@ msgstr "Обновить" #: builtin/mainmenu/dlg_contentstore.lua msgid "Update All [$1]" -msgstr "" +msgstr "Обновить вÑе [$1]" #: builtin/mainmenu/dlg_contentstore.lua msgid "View more information in a web browser" -msgstr "" +msgstr "ПоÑмотреть дополнительную информацию в веб-браузере" #: builtin/mainmenu/dlg_create_world.lua msgid "A world named \"$1\" already exists" @@ -710,6 +705,11 @@ msgid "Loading..." msgstr "Загрузка..." #: builtin/mainmenu/serverlistmgr.lua +#, fuzzy +msgid "Public server list is disabled" +msgstr "КлиентÑкие моды отключены" + +#: builtin/mainmenu/serverlistmgr.lua msgid "Try reenabling public serverlist and check your internet connection." msgstr "" "Попробуйте обновить ÑпиÑок публичных Ñерверов и проверьте ÑвÑзь Ñ Ð˜Ð½Ñ‚ÐµÑ€Ð½ÐµÑ‚Ð¾Ð¼." @@ -767,15 +767,16 @@ msgid "Credits" msgstr "БлагодарноÑти" #: builtin/mainmenu/tab_credits.lua -#, fuzzy msgid "Open User Data Directory" -msgstr "Выбрать каталог" +msgstr "Открыть каталог данных пользователÑ" #: builtin/mainmenu/tab_credits.lua msgid "" "Opens the directory that contains user-provided worlds, games, mods,\n" "and texture packs in a file manager / explorer." msgstr "" +"Открывает каталог, Ñодержащий пользовательÑкие миры, игры, моды,\n" +"и пакеты текÑтур в файловом менеджере / проводнике." #: builtin/mainmenu/tab_credits.lua msgid "Previous Contributors" @@ -815,7 +816,7 @@ msgstr "УÑтановить игры из ContentDB" #: builtin/mainmenu/tab_local.lua msgid "Name" -msgstr "" +msgstr "ИмÑ" #: builtin/mainmenu/tab_local.lua msgid "New" @@ -826,9 +827,8 @@ msgid "No world created or selected!" msgstr "Мир не Ñоздан или не выбран!" #: builtin/mainmenu/tab_local.lua -#, fuzzy msgid "Password" -msgstr "Ðовый пароль" +msgstr "Пароль" #: builtin/mainmenu/tab_local.lua msgid "Play Game" @@ -839,9 +839,8 @@ msgid "Port" msgstr "Порт" #: builtin/mainmenu/tab_local.lua -#, fuzzy msgid "Select Mods" -msgstr "Выберите мир:" +msgstr "Выберите моды" #: builtin/mainmenu/tab_local.lua msgid "Select World:" @@ -993,9 +992,8 @@ msgid "Shaders" msgstr "Шейдеры" #: builtin/mainmenu/tab_settings.lua -#, fuzzy msgid "Shaders (experimental)" -msgstr "ПарÑщие оÑтрова (ÑкÑпериментальный)" +msgstr "Шейдеры (ÑкÑпериментально)" #: builtin/mainmenu/tab_settings.lua msgid "Shaders (unavailable)" @@ -1195,7 +1193,7 @@ msgid "Continue" msgstr "Продолжить" #: src/client/game.cpp -#, fuzzy, c-format +#, c-format msgid "" "Controls:\n" "- %s: move forwards\n" @@ -1753,17 +1751,16 @@ msgid "Minimap hidden" msgstr "Миникарта Ñкрыта" #: src/client/minimap.cpp -#, fuzzy, c-format +#, c-format msgid "Minimap in radar mode, Zoom x%d" -msgstr "Миникарта в режиме радара, увеличение x1" +msgstr "Миникарта в режиме радара, увеличение x%d" #: src/client/minimap.cpp -#, fuzzy, c-format +#, c-format msgid "Minimap in surface mode, Zoom x%d" -msgstr "Миникарта в поверхноÑтном режиме, увеличение x1" +msgstr "Миникарта в поверхноÑтном режиме, увеличение x%d" #: src/client/minimap.cpp -#, fuzzy msgid "Minimap in texture mode" msgstr "Минимальный размер текÑтуры" @@ -2678,7 +2675,7 @@ msgstr "Чёрный ÑпиÑок флагов ContentDB" #: src/settings_translation_file.cpp msgid "ContentDB Max Concurrent Downloads" -msgstr "" +msgstr "МакÑимальное количеÑтво одновременных загрузок ContentDB" #: src/settings_translation_file.cpp msgid "ContentDB URL" @@ -2747,11 +2744,12 @@ msgid "Crosshair alpha" msgstr "ПрозрачноÑть перекреÑтиÑ" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Crosshair alpha (opaqueness, between 0 and 255).\n" "Also controls the object crosshair color" -msgstr "ПрозрачноÑть прицела (от 0 (прозрачно) до 255 (непрозрачно))." +msgstr "" +"ПрозрачноÑть прицела (от 0 (прозрачно) до 255 (непрозрачно)).\n" +"Также контролирует цвет перекреÑÑ‚Ð¸Ñ Ð¾Ð±ÑŠÐµÐºÑ‚Ð°" #: src/settings_translation_file.cpp msgid "Crosshair color" @@ -2762,6 +2760,8 @@ msgid "" "Crosshair color (R,G,B).\n" "Also controls the object crosshair color" msgstr "" +"Цвет прицела (R, G, B).\n" +"Также контролирует цвет перекреÑÑ‚Ð¸Ñ Ð¾Ð±ÑŠÐµÐºÑ‚Ð°" #: src/settings_translation_file.cpp msgid "DPI" @@ -2947,9 +2947,8 @@ msgid "Desynchronize block animation" msgstr "РаÑÑÐ¸Ð½Ñ…Ñ€Ð¾Ð½Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð°Ð½Ð¸Ð¼Ð°Ñ†Ð¸Ð¸ блоков" #: src/settings_translation_file.cpp -#, fuzzy msgid "Dig key" -msgstr "ÐŸÑ€Ð°Ð²Ð°Ñ ÐºÐ»Ð°Ð²Ð¸ÑˆÐ° меню" +msgstr "Кнопка копать" #: src/settings_translation_file.cpp msgid "Digging particles" @@ -3016,7 +3015,8 @@ msgid "Enable console window" msgstr "Включить окно конÑоли" #: src/settings_translation_file.cpp -msgid "Enable creative mode for new created maps." +#, fuzzy +msgid "Enable creative mode for all players" msgstr "Включить творчеÑкий режим Ð´Ð»Ñ Ð²Ð½Ð¾Ð²ÑŒ Ñозданных карт." #: src/settings_translation_file.cpp @@ -3173,7 +3173,6 @@ msgstr "" "Ñ Ð±Ð¾Ð»ÐµÐµ плоÑкими низинами, подходит Ð´Ð»Ñ Ð¼Ð°ÑÑивного ÑƒÑ€Ð¾Ð²Ð½Ñ Ð¿Ð°Ñ€Ñщих оÑтровов." #: src/settings_translation_file.cpp -#, fuzzy msgid "FPS when unfocused or paused" msgstr "МакÑимум кадровой чаÑтоты при паузе." @@ -3557,7 +3556,6 @@ msgid "HUD toggle key" msgstr "Клавиша Ð¿ÐµÑ€ÐµÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ð¸Ð³Ñ€Ð¾Ð²Ð¾Ð³Ð¾ интерфейÑа" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Handling for deprecated Lua API calls:\n" "- none: Do not log deprecated calls\n" @@ -3565,8 +3563,7 @@ msgid "" "- error: abort on usage of deprecated call (suggested for mod developers)." msgstr "" "Обработка уÑтаревших вызовов Lua API:\n" -"- legacy: (пытатьÑÑ) имитировать прежнее поведение (по умолчанию Ð´Ð»Ñ " -"релиза).\n" +"- none: не запиÑывать уÑтаревшие вызовы\n" "- log: имитировать и журналировать уÑтаревшие вызовы (по умолчанию Ð´Ð»Ñ " "отладки).\n" "- error: прерывание при иÑпользовании уÑтаревших вызовов (рекомендовано " @@ -4086,9 +4083,8 @@ msgid "Joystick button repetition interval" msgstr "Интервал повторного клика кнопкой джойÑтика" #: src/settings_translation_file.cpp -#, fuzzy msgid "Joystick deadzone" -msgstr "Тип джойÑтика" +msgstr "ÐœÐµÑ€Ñ‚Ð²Ð°Ñ Ð·Ð¾Ð½Ð° джойÑтика" #: src/settings_translation_file.cpp msgid "Joystick frustum sensitivity" @@ -4193,13 +4189,12 @@ msgstr "" "html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Key for digging.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Клавиша прыжка.\n" +"Клавиша копаниÑ.\n" "См. http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" @@ -5124,11 +5119,11 @@ msgstr "Сделать вÑе жидкоÑти непрозрачными" #: src/settings_translation_file.cpp msgid "Map Compression Level for Disk Storage" -msgstr "" +msgstr "Уровень ÑÐ¶Ð°Ñ‚Ð¸Ñ ÐºÐ°Ñ€Ñ‚Ñ‹ Ð´Ð»Ñ Ð´Ð¸Ñкового хранилища" #: src/settings_translation_file.cpp msgid "Map Compression Level for Network Transfer" -msgstr "" +msgstr "Уровень ÑÐ¶Ð°Ñ‚Ð¸Ñ ÐºÐ°Ñ€Ñ‚Ñ‹ Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ´Ð°Ñ‡Ð¸ по Ñети" #: src/settings_translation_file.cpp msgid "Map directory" @@ -5313,9 +5308,9 @@ msgid "Maximum FPS" msgstr "МакÑимум кадровой чаÑтоты (FPS)" #: src/settings_translation_file.cpp -#, fuzzy msgid "Maximum FPS when the window is not focused, or when the game is paused." -msgstr "МакÑимум кадровой чаÑтоты при паузе." +msgstr "" +"МакÑимальный FPS, когда окно не ÑфокуÑировано, или когда игра приоÑтановлена." #: src/settings_translation_file.cpp msgid "Maximum forceloaded blocks" @@ -5382,6 +5377,9 @@ msgid "" "be queued.\n" "This should be lower than curl_parallel_limit." msgstr "" +"МакÑимальное количеÑтво одновременных загрузок. Загрузки, превышающие Ñтот " +"лимит, будут поÑтавлены в очередь.\n" +"Ðто должно быть меньше curl_parallel_limit." #: src/settings_translation_file.cpp msgid "Maximum number of forceloaded mapblocks." @@ -6293,6 +6291,11 @@ msgstr "" "Требует перезапуÑка поÑле изменениÑ." #: src/settings_translation_file.cpp +#, fuzzy +msgid "Show nametag backgrounds by default" +msgstr "Стандартный жирный шрифт" + +#: src/settings_translation_file.cpp msgid "Shutdown message" msgstr "Сообщение о выключении" @@ -6574,9 +6577,8 @@ msgid "The URL for the content repository" msgstr "ÐÐ´Ñ€ÐµÑ Ñетевого репозиториÑ" #: src/settings_translation_file.cpp -#, fuzzy msgid "The deadzone of the joystick" -msgstr "Идентификатор иÑпользуемого джойÑтика" +msgstr "ÐœÐµÑ€Ñ‚Ð²Ð°Ñ Ð·Ð¾Ð½Ð° джойÑтика" #: src/settings_translation_file.cpp msgid "" @@ -6890,6 +6892,15 @@ msgid "" "If set to 0, MSAA is disabled.\n" "A restart is required after changing this option." msgstr "" +"ИÑпользуйте многовыборочное Ñглаживание (MSAA) Ð´Ð»Ñ ÑÐ³Ð»Ð°Ð¶Ð¸Ð²Ð°Ð½Ð¸Ñ ÐºÑ€Ð°ÐµÐ² " +"блоков.\n" +"Ðтот алгоритм Ñглаживает облаÑть проÑмотра 3D, ÑохранÑÑ Ñ€ÐµÐ·ÐºÐ¾Ñть " +"изображениÑ,\n" +"но Ñто не влиÑет на внутренноÑти текÑтур\n" +"(что оÑобенно заметно на прозрачных текÑтурах).\n" +"Когда шейдеры отключены, между узлами поÑвлÑÑŽÑ‚ÑÑ Ð²Ð¸Ð´Ð¸Ð¼Ñ‹Ðµ пробелы.\n" +"ЕÑли уÑтановлено значение 0, MSAA отключено.\n" +"ПоÑле Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñтой опции требуетÑÑ Ð¿ÐµÑ€ÐµÐ·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ°." #: src/settings_translation_file.cpp msgid "Use trilinear filtering when scaling textures." @@ -7129,6 +7140,12 @@ msgstr "" "ЕÑли отключено, иÑпользуютÑÑ Ñ€Ð°Ñтровые и XML-векторные изображениÑ." #: src/settings_translation_file.cpp +msgid "" +"Whether nametag backgrounds should be shown by default.\n" +"Mods may still set a background." +msgstr "" + +#: src/settings_translation_file.cpp msgid "Whether node texture animations should be desynchronized per mapblock." msgstr "" "ОпределÑет необходимоÑть раÑÑинхронизации анимации текÑтур нод между блоками " @@ -7286,6 +7303,12 @@ msgid "" "9 - best compression, slowest\n" "(levels 1-3 use Zlib's \"fast\" method, 4-9 use the normal method)" msgstr "" +"Уровень ÑÐ¶Ð°Ñ‚Ð¸Ñ ZLib Ð´Ð»Ñ Ð¸ÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ñ€Ð¸ Ñохранении картографичеÑких блоков " +"на диÑке.\n" +"-1 - уровень ÑÐ¶Ð°Ñ‚Ð¸Ñ Zlib по умолчанию\n" +"0 - без компреÑÑора, Ñамый быÑтрый\n" +"9 - лучшее Ñжатие, Ñамое медленное\n" +"(уровни 1-3 иÑпользуют \"быÑтрый\" метод Zlib, 4-9 иÑпользуют обычный метод)" #: src/settings_translation_file.cpp msgid "" @@ -7295,6 +7318,11 @@ msgid "" "9 - best compression, slowest\n" "(levels 1-3 use Zlib's \"fast\" method, 4-9 use the normal method)" msgstr "" +"Уровень ÑÐ¶Ð°Ñ‚Ð¸Ñ ZLib Ð´Ð»Ñ Ð¸ÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ñ€Ð¸ отправке блоков карты клиенту.\n" +"-1 - уровень ÑÐ¶Ð°Ñ‚Ð¸Ñ Zlib по умолчанию\n" +"0 - без компреÑÑора, Ñамый быÑтрый\n" +"9 - лучшее Ñжатие, Ñамое медленное\n" +"(уровни 1-3 иÑпользуют \"быÑтрый\" метод Zlib, 4-9 иÑпользуют обычный метод)" #: src/settings_translation_file.cpp msgid "cURL file download timeout" diff --git a/po/sk/minetest.po b/po/sk/minetest.po index 3c4009c00..c8249c0f0 100644 --- a/po/sk/minetest.po +++ b/po/sk/minetest.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: minetest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-01-30 21:13+0100\n" -"PO-Revision-Date: 2020-11-17 08:28+0000\n" +"POT-Creation-Date: 2021-02-23 19:03+0100\n" +"PO-Revision-Date: 2021-02-13 08:50+0000\n" "Last-Translator: Marian <daretmavi@gmail.com>\n" "Language-Team: Slovak <https://hosted.weblate.org/projects/minetest/minetest/" "sk/>\n" @@ -17,7 +17,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -"X-Generator: Weblate 4.4-dev\n" +"X-Generator: Weblate 4.5-dev\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" @@ -158,52 +158,51 @@ msgstr "aktÃvne" #: builtin/mainmenu/dlg_contentstore.lua msgid "\"$1\" already exists. Would you like to overwrite it?" -msgstr "" +msgstr "\"$1\" už exituje. Chcel by si ho prepÃsaÅ¥?" #: builtin/mainmenu/dlg_contentstore.lua msgid "$1 and $2 dependencies will be installed." -msgstr "" +msgstr "Závislosti $1 a $2 budú nainÅ¡talované." #: builtin/mainmenu/dlg_contentstore.lua msgid "$1 by $2" -msgstr "" +msgstr "$1 od $2" #: builtin/mainmenu/dlg_contentstore.lua msgid "" "$1 downloading,\n" "$2 queued" msgstr "" +"$1 sÅ¥ahujem,\n" +"$2 Äaká v rade" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "$1 downloading..." -msgstr "SÅ¥ahujem..." +msgstr "$1 sÅ¥ahujem..." #: builtin/mainmenu/dlg_contentstore.lua msgid "$1 required dependencies could not be found." -msgstr "" +msgstr "$1 požadované závislosti nie je možné nájsÅ¥." #: builtin/mainmenu/dlg_contentstore.lua msgid "$1 will be installed, and $2 dependencies will be skipped." -msgstr "" +msgstr "$1 bude nainÅ¡talovaný, a $2 závislosti budú preskoÄené." #: builtin/mainmenu/dlg_contentstore.lua msgid "All packages" msgstr "VÅ¡etky balÃÄky" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "Already installed" -msgstr "Klávesa sa už použÃva" +msgstr "Už je nainÅ¡talované" #: builtin/mainmenu/dlg_contentstore.lua msgid "Back to Main Menu" msgstr "Naspäť do hlavného menu" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "Base Game:" -msgstr "HosÅ¥uj hru" +msgstr "Základná hra:" #: builtin/mainmenu/dlg_contentstore.lua msgid "ContentDB is not available when Minetest was compiled without cURL" @@ -227,14 +226,12 @@ msgid "Install" msgstr "InÅ¡taluj" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "Install $1" -msgstr "InÅ¡taluj" +msgstr "InÅ¡taluj $1" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "Install missing dependencies" -msgstr "Voliteľné závislosti:" +msgstr "NainÅ¡taluj chýbajúce závislosti" #: builtin/mainmenu/dlg_contentstore.lua #: builtin/mainmenu/dlg_settings_advanced.lua @@ -250,26 +247,24 @@ msgid "No results" msgstr "Bez výsledku" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "No updates" -msgstr "Aktualizuj" +msgstr "Bez aktualizáciÃ" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "Not found" -msgstr "StÃÅ¡ hlasitosÅ¥" +msgstr "Nenájdené" #: builtin/mainmenu/dlg_contentstore.lua msgid "Overwrite" -msgstr "" +msgstr "PrepÃÅ¡" #: builtin/mainmenu/dlg_contentstore.lua msgid "Please check that the base game is correct." -msgstr "" +msgstr "ProsÃm skontroluj Äi je základná hra v poriadku." #: builtin/mainmenu/dlg_contentstore.lua msgid "Queued" -msgstr "" +msgstr "ÄŒaká v rade" #: builtin/mainmenu/dlg_contentstore.lua msgid "Texture packs" @@ -285,11 +280,11 @@ msgstr "Aktualizuj" #: builtin/mainmenu/dlg_contentstore.lua msgid "Update All [$1]" -msgstr "" +msgstr "Aktualizuj vÅ¡etky [$1]" #: builtin/mainmenu/dlg_contentstore.lua msgid "View more information in a web browser" -msgstr "" +msgstr "Pozri si viac informácià vo webovom prehliadaÄi" #: builtin/mainmenu/dlg_create_world.lua msgid "A world named \"$1\" already exists" @@ -715,6 +710,11 @@ msgid "Loading..." msgstr "Nahrávam..." #: builtin/mainmenu/serverlistmgr.lua +#, fuzzy +msgid "Public server list is disabled" +msgstr "Skriptovanie na strane klienta je zakázané" + +#: builtin/mainmenu/serverlistmgr.lua msgid "Try reenabling public serverlist and check your internet connection." msgstr "" "Skús znova povoliÅ¥ verejný zoznam serverov a skontroluj internetové " @@ -773,15 +773,16 @@ msgid "Credits" msgstr "PoÄakovanie" #: builtin/mainmenu/tab_credits.lua -#, fuzzy msgid "Open User Data Directory" -msgstr "Zvoľ adresár" +msgstr "Otvor adresár s užÃvateľskými dátami" #: builtin/mainmenu/tab_credits.lua msgid "" "Opens the directory that contains user-provided worlds, games, mods,\n" "and texture packs in a file manager / explorer." msgstr "" +"Otvor adresár, ktorý obsahuje svety, hry, mody a textúry\n" +"od užÃvateľov v správcovi/prieskumnÃkovi súborov." #: builtin/mainmenu/tab_credits.lua msgid "Previous Contributors" @@ -821,7 +822,7 @@ msgstr "InÅ¡taluj hry z ContentDB" #: builtin/mainmenu/tab_local.lua msgid "Name" -msgstr "" +msgstr "Meno" #: builtin/mainmenu/tab_local.lua msgid "New" @@ -832,9 +833,8 @@ msgid "No world created or selected!" msgstr "Nie je vytvorený ani zvolený svet!" #: builtin/mainmenu/tab_local.lua -#, fuzzy msgid "Password" -msgstr "Staré heslo" +msgstr "Heslo" #: builtin/mainmenu/tab_local.lua msgid "Play Game" @@ -845,9 +845,8 @@ msgid "Port" msgstr "Port" #: builtin/mainmenu/tab_local.lua -#, fuzzy msgid "Select Mods" -msgstr "Zvoľ si svet:" +msgstr "Zvoľ mody" #: builtin/mainmenu/tab_local.lua msgid "Select World:" @@ -999,9 +998,8 @@ msgid "Shaders" msgstr "Shadery" #: builtin/mainmenu/tab_settings.lua -#, fuzzy msgid "Shaders (experimental)" -msgstr "Lietajúce krajiny (experimentálne)" +msgstr "Shadery (experimentálne)" #: builtin/mainmenu/tab_settings.lua msgid "Shaders (unavailable)" @@ -1201,7 +1199,7 @@ msgid "Continue" msgstr "PokraÄuj" #: src/client/game.cpp -#, fuzzy, c-format +#, c-format msgid "" "Controls:\n" "- %s: move forwards\n" @@ -1224,12 +1222,12 @@ msgstr "" "- %s: pohyb doľava\n" "- %s: pohyb doprava\n" "- %s: skoÄ/vylez\n" +"- %s: kop/udri\n" +"- %s: polož/použi\n" "- %s: zakrádaj sa/choÄ dole\n" -"- %s: polož vec\n" +"- %s: odhoÄ vec\n" "- %s: inventár\n" "- MyÅ¡: otoÄ sa/obzeraj sa\n" -"- MyÅ¡, ľavé tlaÄÃtko: kopaj/udri\n" -"- MyÅ¡, pravé tlaÄÃtko: polož/použi\n" "- MyÅ¡ koliesko: zvoľ si vec\n" "- %s: komunikácia\n" @@ -1759,19 +1757,18 @@ msgid "Minimap hidden" msgstr "Minimapa je skrytá" #: src/client/minimap.cpp -#, fuzzy, c-format +#, c-format msgid "Minimap in radar mode, Zoom x%d" -msgstr "Minimapa v radarovom režime, priblÞenie x1" +msgstr "Minimapa v radarovom režime, priblÞenie x%d" #: src/client/minimap.cpp -#, fuzzy, c-format +#, c-format msgid "Minimap in surface mode, Zoom x%d" -msgstr "Minimapa v povrchovom režime, priblÞenie x1" +msgstr "Minimapa v povrchovom režime, priblÞenie x%d" #: src/client/minimap.cpp -#, fuzzy msgid "Minimap in texture mode" -msgstr "Minimálna veľkosÅ¥ textúry" +msgstr "Minimapa v móde textúry" #: src/gui/guiConfirmRegistration.cpp src/gui/guiPasswordChange.cpp msgid "Passwords do not match!" @@ -2171,7 +2168,7 @@ msgstr "ABM interval" #: src/settings_translation_file.cpp msgid "ABM time budget" -msgstr "" +msgstr "Vyhradená doba ABM" #: src/settings_translation_file.cpp msgid "Absolute limit of queued blocks to emerge" @@ -2674,7 +2671,7 @@ msgstr "ÄŒierna listina prÃznakov z ContentDB" #: src/settings_translation_file.cpp msgid "ContentDB Max Concurrent Downloads" -msgstr "" +msgstr "ContentDB Maximum súbežných sÅ¥ahovanÃ" #: src/settings_translation_file.cpp msgid "ContentDB URL" @@ -2742,11 +2739,12 @@ msgid "Crosshair alpha" msgstr "PriehľadnosÅ¥ zameriavaÄa" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Crosshair alpha (opaqueness, between 0 and 255).\n" "Also controls the object crosshair color" -msgstr "PriehľadnosÅ¥ zameriavaÄa (nepriehľadnosÅ¥, medzi 0 a 255)." +msgstr "" +"PriehľadnosÅ¥ zameriavaÄa (nepriehľadnosÅ¥, medzi 0 a 255).\n" +"Tiež nastavuje farbu objektu zameriavaÄa" #: src/settings_translation_file.cpp msgid "Crosshair color" @@ -2757,6 +2755,8 @@ msgid "" "Crosshair color (R,G,B).\n" "Also controls the object crosshair color" msgstr "" +"Farba zameriavaÄa (R,G,B).\n" +"Nastavuje farbu objektu zameriavaÄa" #: src/settings_translation_file.cpp msgid "DPI" @@ -2937,9 +2937,8 @@ msgid "Desynchronize block animation" msgstr "Nesynchronizuj animáciu blokov" #: src/settings_translation_file.cpp -#, fuzzy msgid "Dig key" -msgstr "TlaÄidlo Vpravo" +msgstr "TlaÄidlo Kopanie" #: src/settings_translation_file.cpp msgid "Digging particles" @@ -3006,7 +3005,8 @@ msgid "Enable console window" msgstr "Aktivuj okno konzoly" #: src/settings_translation_file.cpp -msgid "Enable creative mode for new created maps." +#, fuzzy +msgid "Enable creative mode for all players" msgstr "Aktivuj kreatÃvny režim pre novo vytvorené mapy." #: src/settings_translation_file.cpp @@ -3161,9 +3161,8 @@ msgstr "" "rovnejÅ¡Ãmi nÞinami, vhodné ako pevná základná vrstva lietajúcej pevniny." #: src/settings_translation_file.cpp -#, fuzzy msgid "FPS when unfocused or paused" -msgstr "Maximálne FPS, ak je hra pozastavená." +msgstr "FPS ak je hra nezameraná, alebo pozastavená" #: src/settings_translation_file.cpp msgid "FSAA" @@ -3554,7 +3553,6 @@ msgid "HUD toggle key" msgstr "TlaÄidlo PrepÃnanie HUD" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Handling for deprecated Lua API calls:\n" "- none: Do not log deprecated calls\n" @@ -3562,9 +3560,8 @@ msgid "" "- error: abort on usage of deprecated call (suggested for mod developers)." msgstr "" "Spracovanie zastaralých Lua API volanÃ:\n" -"- legacy: (skús to) napodobni staré správanie (Å¡tandard pre release).\n" -"- log: napodobni log backtrace zastaralého volania (Å¡tandard pre " -"debug).\n" +"- none: Zastarané funkcie neukladaj do logu\n" +"- log: napodobni log backtrace zastaralého volania (Å¡tandardne).\n" "- error: preruÅ¡ spracovanie zastaralého volania (odporúÄané pre vývojárov " "rozÅ¡ÃrenÃ)." @@ -4086,9 +4083,8 @@ msgid "Joystick button repetition interval" msgstr "Interval opakovania tlaÄidla joysticku" #: src/settings_translation_file.cpp -#, fuzzy msgid "Joystick deadzone" -msgstr "Typ joysticku" +msgstr "MÅ•tva zóna joysticku" #: src/settings_translation_file.cpp msgid "Joystick frustum sensitivity" @@ -4193,13 +4189,12 @@ msgstr "" "html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Key for digging.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"TlaÄidlo pre skákanie.\n" +"TlaÄidlo pre kopanie.\n" "ViÄ. http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" @@ -4346,13 +4341,12 @@ msgstr "" "html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Key for placing.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"TlaÄidlo pre skákanie.\n" +"TlaÄidlo pre pokladanie.\n" "ViÄ. http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" @@ -5124,11 +5118,11 @@ msgstr "VÅ¡etky tekutiny budú nepriehľadné" #: src/settings_translation_file.cpp msgid "Map Compression Level for Disk Storage" -msgstr "" +msgstr "Úroveň kompresie mapy pre diskové úložisko" #: src/settings_translation_file.cpp msgid "Map Compression Level for Network Transfer" -msgstr "" +msgstr "Úroveň kompresie mapy pre sieÅ¥ový prenos" #: src/settings_translation_file.cpp msgid "Map directory" @@ -5313,9 +5307,9 @@ msgid "Maximum FPS" msgstr "Maximálne FPS" #: src/settings_translation_file.cpp -#, fuzzy msgid "Maximum FPS when the window is not focused, or when the game is paused." -msgstr "Maximálne FPS, ak je hra pozastavená." +msgstr "" +"Maximálne FPS, ak je hra nie je v aktuálnom okne, alebo je pozastavená." #: src/settings_translation_file.cpp msgid "Maximum forceloaded blocks" @@ -5379,6 +5373,9 @@ msgid "" "be queued.\n" "This should be lower than curl_parallel_limit." msgstr "" +"Maximálny poÄet súÄasných sÅ¥ahovanÃ. SÅ¥ahovania presahujúce tento limit budú " +"ÄakaÅ¥ v rade.\n" +"Mal by byÅ¥ nižšà ako curl_parallel_limit." #: src/settings_translation_file.cpp msgid "Maximum number of forceloaded mapblocks." @@ -5786,14 +5783,12 @@ msgid "Pitch move mode" msgstr "Režim pohybu podľa sklonu" #: src/settings_translation_file.cpp -#, fuzzy msgid "Place key" -msgstr "TlaÄidlo Lietanie" +msgstr "TlaÄidlo na pokladanie" #: src/settings_translation_file.cpp -#, fuzzy msgid "Place repetition interval" -msgstr "Interval opakovania pravého kliknutia" +msgstr "Interval opakovania pokladania" #: src/settings_translation_file.cpp msgid "" @@ -6273,15 +6268,19 @@ msgid "Show entity selection boxes" msgstr "Zobraz obrys bytosti" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Show entity selection boxes\n" "A restart is required after changing this." msgstr "" -"Nastav jazyk. Ponechaj prázdne pre systémové nastavenie.\n" +"Zobraz obrysy bytosti\n" "Po zmene je požadovaný reÅ¡tart." #: src/settings_translation_file.cpp +#, fuzzy +msgid "Show nametag backgrounds by default" +msgstr "Å tandardne tuÄné pÃsmo" + +#: src/settings_translation_file.cpp msgid "Shutdown message" msgstr "Správa pri vypÃnanÃ" @@ -6555,9 +6554,8 @@ msgid "The URL for the content repository" msgstr "Webová adresa (URL) k úložisku doplnkov" #: src/settings_translation_file.cpp -#, fuzzy msgid "The deadzone of the joystick" -msgstr "Identifikátor joysticku na použitie" +msgstr "MÅ•tva zóna joysticku" #: src/settings_translation_file.cpp msgid "" @@ -6631,7 +6629,6 @@ msgstr "" "Malo by to byÅ¥ konfigurované spolu s active_object_send_range_blocks." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "The rendering back-end for Irrlicht.\n" "A restart is required after changing this.\n" @@ -6642,10 +6639,10 @@ msgid "" msgstr "" "Renderovacà back-end pre Irrlicht.\n" "Po zmene je vyžadovaný reÅ¡tart.\n" -"Poznámka: Na Androidw, ak si nie si istý, ponechaj OGLES1! Aplikácia by " +"Poznámka: Na Androide, ak si nie si istý, ponechaj OGLES1! Aplikácia by " "nemusela naÅ¡tartovaÅ¥.\n" -"Na iných platformách, sa odporúÄa OpenGL, a je to aktuálne jediný ovládaÄ\n" -"s podporou shaderov." +"Na iných platformách, sa odporúÄa OpenGL.\n" +"Shadery sú podporované v OpenGL (len pre desktop) a v OGLES2 (experimentálne)" #: src/settings_translation_file.cpp msgid "" @@ -6682,6 +6679,8 @@ msgid "" "The time budget allowed for ABMs to execute on each step\n" "(as a fraction of the ABM Interval)" msgstr "" +"Vyhradená doba pre ABM na vykonanie v každom kroku\n" +"(ako zlomok ABM imtervalu)" #: src/settings_translation_file.cpp msgid "" @@ -6692,13 +6691,12 @@ msgstr "" "pri stlaÄenej kombinácià tlaÄidiel na joysticku." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "The time in seconds it takes between repeated node placements when holding\n" "the place button." msgstr "" -"ÄŒas v sekundách pre zopakovanie pravého kliknutia v prÃpade\n" -"držania pravého tlaÄÃtka myÅ¡i." +"ÄŒas v sekundách pre opakované položenie kocky\n" +"ak je držané tlaÄÃtko pokladania." #: src/settings_translation_file.cpp msgid "The type of joystick" @@ -6862,6 +6860,13 @@ msgid "" "If set to 0, MSAA is disabled.\n" "A restart is required after changing this option." msgstr "" +"Použi multi-sample antialiasing (MSAA) pre zjemnenie hrán blokov.\n" +"Tento algoritmus zjemnà 3D vzhľad zatiaľ Äo zachová ostrosÅ¥ obrazu,\n" +"ale neovplyvnà vnútro textúr\n" +"(Äo je obzvlášť viditeľné pri priesvitných textúrach).\n" +"Ak sú shadery zakázané, objavia sa viditeľné medzery medzi kockami.\n" +"Ak sú nastavené na 0, MSAA je zakázané.\n" +"Po zmene tohto nastavenia je požadovaný reÅ¡tart." #: src/settings_translation_file.cpp msgid "Use trilinear filtering when scaling textures." @@ -7098,6 +7103,12 @@ msgstr "" "Ak je zakázané, budú použité bitmapové a XML vektorové pÃsma." #: src/settings_translation_file.cpp +msgid "" +"Whether nametag backgrounds should be shown by default.\n" +"Mods may still set a background." +msgstr "" + +#: src/settings_translation_file.cpp msgid "Whether node texture animations should be desynchronized per mapblock." msgstr "ÄŒi sa nemá animácia textúry kocky synchronizovaÅ¥." @@ -7253,6 +7264,12 @@ msgid "" "9 - best compression, slowest\n" "(levels 1-3 use Zlib's \"fast\" method, 4-9 use the normal method)" msgstr "" +"Úroveň kompresie ZLib použÃvaný pri ukladanà blokov mapy na disk.\n" +"-1 - predvolená úroveň kompresie Zlib\n" +"0 - bez kompresie, najrýchlejÅ¡ie\n" +"9 - najlepÅ¡ia kompresia, najpomalÅ¡ie\n" +"(pre úrovne 1-3 použÃva Zlib \"rýchlu\" metódu, pre 4-9 použÃva normálnu " +"metódu)" #: src/settings_translation_file.cpp msgid "" @@ -7262,6 +7279,12 @@ msgid "" "9 - best compression, slowest\n" "(levels 1-3 use Zlib's \"fast\" method, 4-9 use the normal method)" msgstr "" +"Úroveň kompresie ZLib použÃvaný pri posielanà blokov mapy klientom.\n" +"-1 - predvolená úroveň kompresie Zlib\n" +"0 - bez kompresie, najrýchlejÅ¡ie\n" +"9 - najlepÅ¡ia kompresia, najpomalÅ¡ie\n" +"(pre úrovne 1-3 použÃva Zlib \"rýchlu\" metódu, pre 4-9 použÃva normálnu " +"metódu)" #: src/settings_translation_file.cpp msgid "cURL file download timeout" diff --git a/po/sl/minetest.po b/po/sl/minetest.po index 2b9b0e188..a67ac9c65 100644 --- a/po/sl/minetest.po +++ b/po/sl/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Slovenian (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-01-30 21:13+0100\n" +"POT-Creation-Date: 2021-02-23 19:03+0100\n" "PO-Revision-Date: 2020-09-30 19:41+0000\n" "Last-Translator: Iztok Bajcar <iztok.bajcar@gmail.com>\n" "Language-Team: Slovenian <https://hosted.weblate.org/projects/minetest/" @@ -726,6 +726,11 @@ msgid "Loading..." msgstr "Poteka nalaganje ..." #: builtin/mainmenu/serverlistmgr.lua +#, fuzzy +msgid "Public server list is disabled" +msgstr "Skriptiranje s strani odjemalca je onemogoÄeno" + +#: builtin/mainmenu/serverlistmgr.lua msgid "Try reenabling public serverlist and check your internet connection." msgstr "" "Morda je treba ponovno omogoÄiti javni seznam strežnikov oziroma preveriti " @@ -3011,7 +3016,8 @@ msgid "Enable console window" msgstr "" #: src/settings_translation_file.cpp -msgid "Enable creative mode for new created maps." +#, fuzzy +msgid "Enable creative mode for all players" msgstr "OmogoÄi ustvarjalni naÄin za novo ustvarjene svetove." #: src/settings_translation_file.cpp @@ -5748,6 +5754,10 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp +msgid "Show nametag backgrounds by default" +msgstr "" + +#: src/settings_translation_file.cpp msgid "Shutdown message" msgstr "" @@ -6431,6 +6441,12 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp +msgid "" +"Whether nametag backgrounds should be shown by default.\n" +"Mods may still set a background." +msgstr "" + +#: src/settings_translation_file.cpp msgid "Whether node texture animations should be desynchronized per mapblock." msgstr "" diff --git a/po/sr_Cyrl/minetest.po b/po/sr_Cyrl/minetest.po index 6c6c3a9df..5223e55e2 100644 --- a/po/sr_Cyrl/minetest.po +++ b/po/sr_Cyrl/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Serbian (cyrillic) (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-01-30 21:13+0100\n" +"POT-Creation-Date: 2021-02-23 19:03+0100\n" "PO-Revision-Date: 2020-07-08 20:47+0000\n" "Last-Translator: sfan5 <sfan5@live.de>\n" "Language-Team: Serbian (cyrillic) <https://hosted.weblate.org/projects/" @@ -752,6 +752,10 @@ msgid "Loading..." msgstr "Учитавање..." #: builtin/mainmenu/serverlistmgr.lua +msgid "Public server list is disabled" +msgstr "" + +#: builtin/mainmenu/serverlistmgr.lua msgid "Try reenabling public serverlist and check your internet connection." msgstr "" "Покушајте да поновно укључите лиÑту Ñервера и проверите вашу интернет " @@ -3029,7 +3033,7 @@ msgid "Enable console window" msgstr "" #: src/settings_translation_file.cpp -msgid "Enable creative mode for new created maps." +msgid "Enable creative mode for all players" msgstr "" #: src/settings_translation_file.cpp @@ -5773,6 +5777,10 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp +msgid "Show nametag backgrounds by default" +msgstr "" + +#: src/settings_translation_file.cpp msgid "Shutdown message" msgstr "" @@ -6454,6 +6462,12 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp +msgid "" +"Whether nametag backgrounds should be shown by default.\n" +"Mods may still set a background." +msgstr "" + +#: src/settings_translation_file.cpp msgid "Whether node texture animations should be desynchronized per mapblock." msgstr "" diff --git a/po/sr_Latn/minetest.po b/po/sr_Latn/minetest.po index 8fab135b3..7c5ad11fc 100644 --- a/po/sr_Latn/minetest.po +++ b/po/sr_Latn/minetest.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: minetest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-01-30 21:13+0100\n" +"POT-Creation-Date: 2021-02-23 19:03+0100\n" "PO-Revision-Date: 2020-08-15 23:32+0000\n" "Last-Translator: Milos <milosfilic97@gmail.com>\n" "Language-Team: Serbian (latin) <https://hosted.weblate.org/projects/minetest/" @@ -706,6 +706,10 @@ msgid "Loading..." msgstr "Ucitavanje..." #: builtin/mainmenu/serverlistmgr.lua +msgid "Public server list is disabled" +msgstr "" + +#: builtin/mainmenu/serverlistmgr.lua msgid "Try reenabling public serverlist and check your internet connection." msgstr "" "Pokusajte ponovo omoguciti javnu listu servera i proverite vasu internet " @@ -1105,7 +1109,7 @@ msgstr "" #. When in doubt, test your translation. #: src/client/fontengine.cpp msgid "needs_fallback_font" -msgstr "" +msgstr "no" #: src/client/game.cpp msgid "" @@ -1936,7 +1940,7 @@ msgstr "" #. language code (e.g. "de" for German). #: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp msgid "LANG_CODE" -msgstr "" +msgstr "sr_Latn" #: src/settings_translation_file.cpp msgid "" @@ -2845,7 +2849,7 @@ msgid "Enable console window" msgstr "" #: src/settings_translation_file.cpp -msgid "Enable creative mode for new created maps." +msgid "Enable creative mode for all players" msgstr "" #: src/settings_translation_file.cpp @@ -5547,6 +5551,10 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp +msgid "Show nametag backgrounds by default" +msgstr "" + +#: src/settings_translation_file.cpp msgid "Shutdown message" msgstr "" @@ -6220,6 +6228,12 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp +msgid "" +"Whether nametag backgrounds should be shown by default.\n" +"Mods may still set a background." +msgstr "" + +#: src/settings_translation_file.cpp msgid "Whether node texture animations should be desynchronized per mapblock." msgstr "" diff --git a/po/sv/minetest.po b/po/sv/minetest.po index 079a88256..e608d85e2 100644 --- a/po/sv/minetest.po +++ b/po/sv/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Swedish (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-01-30 21:13+0100\n" +"POT-Creation-Date: 2021-02-23 19:03+0100\n" "PO-Revision-Date: 2020-03-31 10:14+0000\n" "Last-Translator: sfan5 <sfan5@live.de>\n" "Language-Team: Swedish <https://hosted.weblate.org/projects/minetest/" @@ -734,6 +734,10 @@ msgid "Loading..." msgstr "Laddar..." #: builtin/mainmenu/serverlistmgr.lua +msgid "Public server list is disabled" +msgstr "" + +#: builtin/mainmenu/serverlistmgr.lua msgid "Try reenabling public serverlist and check your internet connection." msgstr "" "Försök Ã¥teraktivera allmän serverlista och kolla din internetanslutning." @@ -3035,7 +3039,7 @@ msgid "Enable console window" msgstr "" #: src/settings_translation_file.cpp -msgid "Enable creative mode for new created maps." +msgid "Enable creative mode for all players" msgstr "" #: src/settings_translation_file.cpp @@ -5771,6 +5775,10 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp +msgid "Show nametag backgrounds by default" +msgstr "" + +#: src/settings_translation_file.cpp msgid "Shutdown message" msgstr "" @@ -6453,6 +6461,12 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp +msgid "" +"Whether nametag backgrounds should be shown by default.\n" +"Mods may still set a background." +msgstr "" + +#: src/settings_translation_file.cpp msgid "Whether node texture animations should be desynchronized per mapblock." msgstr "" diff --git a/po/sw/minetest.po b/po/sw/minetest.po index 79c837878..d0fffcb91 100644 --- a/po/sw/minetest.po +++ b/po/sw/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Swahili (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-01-30 21:13+0100\n" +"POT-Creation-Date: 2021-02-23 19:03+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: Swahili <https://hosted.weblate.org/projects/minetest/" @@ -755,6 +755,10 @@ msgid "Loading..." msgstr "Inapakia..." #: builtin/mainmenu/serverlistmgr.lua +msgid "Public server list is disabled" +msgstr "" + +#: builtin/mainmenu/serverlistmgr.lua msgid "Try reenabling public serverlist and check your internet connection." msgstr "Jaribu reenabling serverlist umma na Kagua muunganisho wako wa tovuti." @@ -3072,7 +3076,7 @@ msgid "Enable console window" msgstr "" #: src/settings_translation_file.cpp -msgid "Enable creative mode for new created maps." +msgid "Enable creative mode for all players" msgstr "" #: src/settings_translation_file.cpp @@ -6353,6 +6357,10 @@ msgstr "" "Kuanza upya inahitajika baada ya kubadilisha hii." #: src/settings_translation_file.cpp +msgid "Show nametag backgrounds by default" +msgstr "" + +#: src/settings_translation_file.cpp msgid "Shutdown message" msgstr "Uzimaji ujumbe" @@ -7125,6 +7133,12 @@ msgstr "" "katika." #: src/settings_translation_file.cpp +msgid "" +"Whether nametag backgrounds should be shown by default.\n" +"Mods may still set a background." +msgstr "" + +#: src/settings_translation_file.cpp msgid "Whether node texture animations should be desynchronized per mapblock." msgstr "Kama fundo unamu uhuishaji lazima desynchronized kwa mapblock." diff --git a/po/th/minetest.po b/po/th/minetest.po index 0a5c905da..06e322f79 100644 --- a/po/th/minetest.po +++ b/po/th/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Thai (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-01-30 21:13+0100\n" +"POT-Creation-Date: 2021-02-23 19:03+0100\n" "PO-Revision-Date: 2020-07-08 08:41+0000\n" "Last-Translator: TZTarzan <khunsatyptiphan@gmail.com>\n" "Language-Team: Thai <https://hosted.weblate.org/projects/minetest/minetest/" @@ -713,6 +713,11 @@ msgid "Loading..." msgstr "à¸à¸³à¸¥à¸±à¸‡à¹‚หลด..." #: builtin/mainmenu/serverlistmgr.lua +#, fuzzy +msgid "Public server list is disabled" +msgstr "à¸à¸²à¸£à¹€à¸‚ียนสคริปต์à¸à¸±à¹ˆà¸‡à¹„คลเà¸à¹‡à¸™à¸•์ถูà¸à¸›à¸´à¸”ใช้งาน" + +#: builtin/mainmenu/serverlistmgr.lua msgid "Try reenabling public serverlist and check your internet connection." msgstr "ลà¸à¸‡à¹€à¸›à¸´à¸”ใช้งานเซิร์ฟเวà¸à¸£à¹Œà¸¥à¸´à¸ªà¸•์สาธารณะà¸à¸µà¸à¸„รั้งà¹à¸¥à¸°à¸•รวจสà¸à¸šà¸à¸²à¸£à¹€à¸Šà¸·à¹ˆà¸à¸¡à¸•่à¸à¸à¸´à¸™à¹€à¸—à¸à¸£à¹Œà¹€à¸™à¹‡à¸•" @@ -2966,7 +2971,8 @@ msgid "Enable console window" msgstr "เปิดใช้งานหน้าต่างคà¸à¸™à¹‚ซล" #: src/settings_translation_file.cpp -msgid "Enable creative mode for new created maps." +#, fuzzy +msgid "Enable creative mode for all players" msgstr "เปิดใช้งานโหมดสร้างสรรค์สำหรับà¹à¸œà¸™à¸—ี่ที่สร้างขึ้นใหม่." #: src/settings_translation_file.cpp @@ -5997,6 +6003,10 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp +msgid "Show nametag backgrounds by default" +msgstr "" + +#: src/settings_translation_file.cpp msgid "Shutdown message" msgstr "ข้à¸à¸„วามปิดเครื่à¸à¸‡" @@ -6750,6 +6760,12 @@ msgstr "" "หาà¸à¸›à¸´à¸”ใช้งาน ฟà¸à¸™à¸•์บิตà¹à¸¡à¸›à¹à¸¥à¸°à¹€à¸à¹‡à¸à¸‹à¹Œà¹€à¸à¹‡à¸¡à¹à¸à¸¥à¹€à¸§à¸à¹€à¸•à¸à¸£à¹Œà¸ˆà¸°à¹ƒà¸Šà¹‰à¹à¸—น" #: src/settings_translation_file.cpp +msgid "" +"Whether nametag backgrounds should be shown by default.\n" +"Mods may still set a background." +msgstr "" + +#: src/settings_translation_file.cpp msgid "Whether node texture animations should be desynchronized per mapblock." msgstr "ระบุว่าควรสร้างà¸à¸²à¸£à¸‹à¸´à¸‡à¹‚ครไนซ์ภาพเคลื่à¸à¸™à¹„หวพื้นผิวขà¸à¸‡à¹‚หนดต่à¸à¹à¸¡à¹‡à¸›à¸šà¸¥à¹‡à¸à¸à¸«à¸£à¸·à¸à¹„ม่" diff --git a/po/tr/minetest.po b/po/tr/minetest.po index 3b4aec62c..a2311124b 100644 --- a/po/tr/minetest.po +++ b/po/tr/minetest.po @@ -2,9 +2,9 @@ msgid "" msgstr "" "Project-Id-Version: Turkish (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-01-30 21:13+0100\n" -"PO-Revision-Date: 2020-06-15 22:41+0000\n" -"Last-Translator: monolifed <monolifed@protonmail.com>\n" +"POT-Creation-Date: 2021-02-23 19:03+0100\n" +"PO-Revision-Date: 2021-02-13 08:50+0000\n" +"Last-Translator: OÄŸuz Ersen <oguzersen@protonmail.com>\n" "Language-Team: Turkish <https://hosted.weblate.org/projects/minetest/" "minetest/tr/>\n" "Language: tr\n" @@ -12,7 +12,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.1\n" +"X-Generator: Weblate 4.5-dev\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" @@ -153,52 +153,51 @@ msgstr "etkin" #: builtin/mainmenu/dlg_contentstore.lua msgid "\"$1\" already exists. Would you like to overwrite it?" -msgstr "" +msgstr "\"$1\" zaten var.DeÄŸiÅŸtirilsin mi?" #: builtin/mainmenu/dlg_contentstore.lua msgid "$1 and $2 dependencies will be installed." -msgstr "" +msgstr "$ 1 ve $ 2 destek dosyaları yüklenecek." #: builtin/mainmenu/dlg_contentstore.lua msgid "$1 by $2" -msgstr "" +msgstr "$1 'e $2" #: builtin/mainmenu/dlg_contentstore.lua msgid "" "$1 downloading,\n" "$2 queued" msgstr "" +"$1 indiriliyor,\n" +"$2 sırada" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "$1 downloading..." -msgstr "İndiriliyor..." +msgstr "$1 indiriliyor..." #: builtin/mainmenu/dlg_contentstore.lua msgid "$1 required dependencies could not be found." -msgstr "" +msgstr "$1 için destek dosyaları bulanamadı." #: builtin/mainmenu/dlg_contentstore.lua msgid "$1 will be installed, and $2 dependencies will be skipped." -msgstr "" +msgstr "$1 indirilecek, ve $2 destek dosyaları atlanacak." #: builtin/mainmenu/dlg_contentstore.lua msgid "All packages" msgstr "Tüm paketler" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "Already installed" -msgstr "TuÅŸ zaten kullanımda" +msgstr "Zaten kuruldu" #: builtin/mainmenu/dlg_contentstore.lua msgid "Back to Main Menu" msgstr "Ana Menüye Dön" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "Base Game:" -msgstr "Oyun Barındır" +msgstr "Yerel oyun:" #: builtin/mainmenu/dlg_contentstore.lua msgid "ContentDB is not available when Minetest was compiled without cURL" @@ -222,14 +221,12 @@ msgid "Install" msgstr "Kur" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "Install $1" -msgstr "Kur" +msgstr "$1 kur" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "Install missing dependencies" -msgstr "İsteÄŸe baÄŸlı bağımlılıklar:" +msgstr "Eksik bağımlılıkları kur" #: builtin/mainmenu/dlg_contentstore.lua #: builtin/mainmenu/dlg_settings_advanced.lua @@ -245,26 +242,24 @@ msgid "No results" msgstr "Sonuç yok" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "No updates" -msgstr "Güncelle" +msgstr "Güncelleme yok" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "Not found" -msgstr "Sesi kapat" +msgstr "Bulunamadı" #: builtin/mainmenu/dlg_contentstore.lua msgid "Overwrite" -msgstr "" +msgstr "Üzerine yaz" #: builtin/mainmenu/dlg_contentstore.lua msgid "Please check that the base game is correct." -msgstr "" +msgstr "Lütfen asıl oyunun doÄŸru olup olmadığını gözden geçirin." #: builtin/mainmenu/dlg_contentstore.lua msgid "Queued" -msgstr "" +msgstr "Sıraya alındı" #: builtin/mainmenu/dlg_contentstore.lua msgid "Texture packs" @@ -280,11 +275,11 @@ msgstr "Güncelle" #: builtin/mainmenu/dlg_contentstore.lua msgid "Update All [$1]" -msgstr "" +msgstr "Hepsini güncelle [$1]" #: builtin/mainmenu/dlg_contentstore.lua msgid "View more information in a web browser" -msgstr "" +msgstr "Tarayıcı'da daha fazla bilgi edinin" #: builtin/mainmenu/dlg_create_world.lua msgid "A world named \"$1\" already exists" @@ -705,6 +700,11 @@ msgid "Loading..." msgstr "Yükleniyor..." #: builtin/mainmenu/serverlistmgr.lua +#, fuzzy +msgid "Public server list is disabled" +msgstr "İstemci tarafı betik devre dışı" + +#: builtin/mainmenu/serverlistmgr.lua msgid "Try reenabling public serverlist and check your internet connection." msgstr "" "Açık sunucu listesini tekrar etkinleÅŸtirmeyi deneyin ve internet " @@ -763,15 +763,16 @@ msgid "Credits" msgstr "Hakkında" #: builtin/mainmenu/tab_credits.lua -#, fuzzy msgid "Open User Data Directory" -msgstr "Dizin seç" +msgstr "Kullanıcı Veri Dizinini Aç" #: builtin/mainmenu/tab_credits.lua msgid "" "Opens the directory that contains user-provided worlds, games, mods,\n" "and texture packs in a file manager / explorer." msgstr "" +"Bir dosya yöneticisi / gezgininde kullanıcı tarafından saÄŸlanan dünyaları,\n" +"oyunları, modları ve doku paketlerini içeren dizini açar." #: builtin/mainmenu/tab_credits.lua msgid "Previous Contributors" @@ -811,7 +812,7 @@ msgstr "ContentDB'den oyunlar yükle" #: builtin/mainmenu/tab_local.lua msgid "Name" -msgstr "" +msgstr "Ad" #: builtin/mainmenu/tab_local.lua msgid "New" @@ -822,9 +823,8 @@ msgid "No world created or selected!" msgstr "Dünya seçilmedi ya da yaratılmadı!" #: builtin/mainmenu/tab_local.lua -#, fuzzy msgid "Password" -msgstr "Yeni Åžifre" +msgstr "Parola" #: builtin/mainmenu/tab_local.lua msgid "Play Game" @@ -835,9 +835,8 @@ msgid "Port" msgstr "Port" #: builtin/mainmenu/tab_local.lua -#, fuzzy msgid "Select Mods" -msgstr "Dünya Seç:" +msgstr "Mod seçin" #: builtin/mainmenu/tab_local.lua msgid "Select World:" @@ -881,7 +880,7 @@ msgstr "Oyuna Katıl" #: builtin/mainmenu/tab_online.lua msgid "Name / Password" -msgstr "Ad / Åžifre" +msgstr "Ad / Parola" #: builtin/mainmenu/tab_online.lua msgid "Ping" @@ -989,9 +988,8 @@ msgid "Shaders" msgstr "Gölgelemeler" #: builtin/mainmenu/tab_settings.lua -#, fuzzy msgid "Shaders (experimental)" -msgstr "Yüzenkaralar (deneysel)" +msgstr "Gölgelendirme (deneysel)" #: builtin/mainmenu/tab_settings.lua msgid "Shaders (unavailable)" @@ -1091,7 +1089,7 @@ msgstr "Lütfen bir ad seçin!" #: src/client/clientlauncher.cpp msgid "Provided password file failed to open: " -msgstr "SaÄŸlanan ÅŸifre dosyası açılamadı: " +msgstr "SaÄŸlanan parola dosyası açılamadı: " #: src/client/clientlauncher.cpp msgid "Provided world path doesn't exist: " @@ -1168,7 +1166,7 @@ msgstr "Kamera güncelleme etkin" #: src/client/game.cpp msgid "Change Password" -msgstr "Åžifre deÄŸiÅŸtir" +msgstr "Parola deÄŸiÅŸtir" #: src/client/game.cpp msgid "Cinematic mode disabled" @@ -1191,7 +1189,7 @@ msgid "Continue" msgstr "Devam et" #: src/client/game.cpp -#, fuzzy, c-format +#, c-format msgid "" "Controls:\n" "- %s: move forwards\n" @@ -1214,12 +1212,12 @@ msgstr "" "- %s: sola hareket\n" "- %s: saÄŸa hareket\n" "- %s: zıpla/tırman\n" +"- %s: kaz/vur\n" +"- %s: yerleÅŸtir/kullan\n" "- %s: sız/aÅŸağı in\n" "- %s: ögeyi at\n" "- %s: envanter\n" "- Fare: dön/bak\n" -"- Sol fare: kaz/vur\n" -"- SaÄŸ fare: yerleÅŸtir/kullan\n" "- Fare tekerleÄŸi: öge seç\n" "- %s: sohbet\n" @@ -1748,23 +1746,22 @@ msgid "Minimap hidden" msgstr "Mini harita gizli" #: src/client/minimap.cpp -#, fuzzy, c-format +#, c-format msgid "Minimap in radar mode, Zoom x%d" -msgstr "Radar kipinde mini harita, YakınlaÅŸtırma x1" +msgstr "Radar kipinde mini harita, YakınlaÅŸtırma x%d" #: src/client/minimap.cpp -#, fuzzy, c-format +#, c-format msgid "Minimap in surface mode, Zoom x%d" -msgstr "Yüzey kipinde mini harita, YakınlaÅŸtırma x1" +msgstr "Yüzey kipinde mini harita, YakınlaÅŸtırma x%d" #: src/client/minimap.cpp -#, fuzzy msgid "Minimap in texture mode" -msgstr "Minimum doku boyutu" +msgstr "Doku kipinde mini harita" #: src/gui/guiConfirmRegistration.cpp src/gui/guiPasswordChange.cpp msgid "Passwords do not match!" -msgstr "Åžifreler aynı deÄŸil!" +msgstr "Parolalar eÅŸleÅŸmiyor!" #: src/gui/guiConfirmRegistration.cpp msgid "Register and Join" @@ -1782,7 +1779,7 @@ msgstr "" "Bu sunucuya \"%s\" adıyla ilk kez katılmak üzeresiniz.\n" "Devam ederseniz, kimlik bilgilerinizi kullanarak yeni bir hesap bu sunucuda " "oluÅŸturulur.\n" -"Lütfen ÅŸifrenizi tekrar yazın ve hesap oluÅŸturmayı onaylamak için 'Kayıt Ol " +"Lütfen parolanızı tekrar yazın ve hesap oluÅŸturmayı onaylamak için 'Kayıt Ol " "ve Katıl' düğmesini tıklayın veya iptal etmek için 'İptal'i tıklayın." #: src/gui/guiFormSpecMenu.cpp @@ -1939,15 +1936,15 @@ msgstr "DeÄŸiÅŸtir" #: src/gui/guiPasswordChange.cpp msgid "Confirm Password" -msgstr "Åžifreyi DoÄŸrulayın" +msgstr "Parolayı DoÄŸrula" #: src/gui/guiPasswordChange.cpp msgid "New Password" -msgstr "Yeni Åžifre" +msgstr "Yeni Parola" #: src/gui/guiPasswordChange.cpp msgid "Old Password" -msgstr "Eski Åžifre" +msgstr "Eski Parola" #: src/gui/guiVolumeChange.cpp msgid "Exit" @@ -2158,7 +2155,7 @@ msgstr "ABM aralığı" #: src/settings_translation_file.cpp msgid "ABM time budget" -msgstr "" +msgstr "ABM zаman gideri" #: src/settings_translation_file.cpp msgid "Absolute limit of queued blocks to emerge" @@ -2663,7 +2660,7 @@ msgstr "ContentDB: Kara Liste" #: src/settings_translation_file.cpp msgid "ContentDB Max Concurrent Downloads" -msgstr "" +msgstr "ContentDB aşırı eÅŸzamanlı indirmeler" #: src/settings_translation_file.cpp msgid "ContentDB URL" @@ -2732,11 +2729,12 @@ msgid "Crosshair alpha" msgstr "Artı saydamlığı" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Crosshair alpha (opaqueness, between 0 and 255).\n" "Also controls the object crosshair color" -msgstr "Artı saydamlığı (solukluk, 0 ile 255 arasında)." +msgstr "" +"Artı saydamlığı (solukluk, 0 ile 255 arasında).\n" +"Ayrıca nesne artı rengini de denetler" #: src/settings_translation_file.cpp msgid "Crosshair color" @@ -2747,6 +2745,8 @@ msgid "" "Crosshair color (R,G,B).\n" "Also controls the object crosshair color" msgstr "" +"Artı rengi (R,G,B).\n" +"Ayrıca nesne artı rengini de deÄŸiÅŸtirir" #: src/settings_translation_file.cpp msgid "DPI" @@ -2798,7 +2798,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Default password" -msgstr "Öntanımlı ÅŸifre" +msgstr "Öntanımlı parola" #: src/settings_translation_file.cpp msgid "Default privileges" @@ -2931,9 +2931,8 @@ msgid "Desynchronize block animation" msgstr "Blok animasyonlarını eÅŸzamansız yap" #: src/settings_translation_file.cpp -#, fuzzy msgid "Dig key" -msgstr "SaÄŸ tuÅŸ" +msgstr "Kazma tuÅŸu" #: src/settings_translation_file.cpp msgid "Digging particles" @@ -2945,7 +2944,7 @@ msgstr "Hile önleme devre dışı" #: src/settings_translation_file.cpp msgid "Disallow empty passwords" -msgstr "BoÅŸ ÅŸifrelere izin verme" +msgstr "BoÅŸ parolalara izin verme" #: src/settings_translation_file.cpp msgid "Domain name of server, to be displayed in the serverlist." @@ -3000,7 +2999,8 @@ msgid "Enable console window" msgstr "Konsol penceresini etkinleÅŸtir" #: src/settings_translation_file.cpp -msgid "Enable creative mode for new created maps." +#, fuzzy +msgid "Enable creative mode for all players" msgstr "Yeni yaratılan haritalar için yaratıcı kipi etkinleÅŸtir." #: src/settings_translation_file.cpp @@ -3155,9 +3155,8 @@ msgstr "" "seviyesi oluÅŸturur: katı bir yüzenkara katmanı için uygundur." #: src/settings_translation_file.cpp -#, fuzzy msgid "FPS when unfocused or paused" -msgstr "Oyun duraklatıldığında maksimum FPS." +msgstr "Odaklanmadığında veya duraklatıldığında FPS" #: src/settings_translation_file.cpp msgid "FSAA" @@ -3543,18 +3542,17 @@ msgid "HUD toggle key" msgstr "HUD açma/kapama tuÅŸu" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Handling for deprecated Lua API calls:\n" "- none: Do not log deprecated calls\n" "- log: mimic and log backtrace of deprecated call (default).\n" "- error: abort on usage of deprecated call (suggested for mod developers)." msgstr "" -"Kullanım dışı lua API çaÄŸrılarının ele alınması:\n" -"- legacy: (eski) Eski davranış taklit etmeye çalışır (öntanımlı).\n" -"- log: (günlük) kullanım dışı çaÄŸrıları taklit eder ve günlükler (hata " -"ayıklama için öntanımlı).\n" -"- error: (hata) kullanım dışı çaÄŸrıların kullanımını iptal eder (mod " +"Kullanım dışı Lua API çaÄŸrılarının ele alınması:\n" +"- none: (yok) kullanım dışı çaÄŸrıları günlüğe kaydetmez.\n" +"- log: (günlük) kullanım dışı çaÄŸrıları taklit eder ve geri izlemesini " +"günlüğe kaydeder (öntanımlı).\n" +"- error: (hata) kullanım dışı çaÄŸrılar kullanıldığında iptal eder (mod " "geliÅŸtiricileri için önerilen)." #: src/settings_translation_file.cpp @@ -3910,7 +3908,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "If enabled, new players cannot join with an empty password." -msgstr "EtkinleÅŸtirilirse, yeni oyuncular boÅŸ bir ÅŸifre ile katılamaz." +msgstr "EtkinleÅŸtirilirse, yeni oyuncular boÅŸ bir parola ile katılamaz." #: src/settings_translation_file.cpp msgid "" @@ -4078,9 +4076,8 @@ msgid "Joystick button repetition interval" msgstr "Joystick düğmesi tekrarlama aralığı" #: src/settings_translation_file.cpp -#, fuzzy msgid "Joystick deadzone" -msgstr "Joystick türü" +msgstr "Joystick ölü bölgesi" #: src/settings_translation_file.cpp msgid "Joystick frustum sensitivity" @@ -4185,13 +4182,12 @@ msgstr "" "html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Key for digging.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Zıplama tuÅŸu.\n" +"Kazma tuÅŸu.\n" "Bakın: http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" @@ -4338,13 +4334,12 @@ msgstr "" "html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Key for placing.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Zıplama tuÅŸu.\n" +"YerleÅŸtirme tuÅŸu.\n" "Bakın: http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" @@ -5112,11 +5107,11 @@ msgstr "Tüm sıvıları opak yapar" #: src/settings_translation_file.cpp msgid "Map Compression Level for Disk Storage" -msgstr "" +msgstr "Hafıza deposu için harita sıkıştırma düzeyi" #: src/settings_translation_file.cpp msgid "Map Compression Level for Network Transfer" -msgstr "" +msgstr "AÄŸ aktarma hızı için harita sıkıştırma düzeyi" #: src/settings_translation_file.cpp msgid "Map directory" @@ -5302,9 +5297,8 @@ msgid "Maximum FPS" msgstr "Maksimum FPS" #: src/settings_translation_file.cpp -#, fuzzy msgid "Maximum FPS when the window is not focused, or when the game is paused." -msgstr "Oyun duraklatıldığında maksimum FPS." +msgstr "Pencere odaklanmadığında veya oyun duraklatıldığında en yüksek FPS." #: src/settings_translation_file.cpp msgid "Maximum forceloaded blocks" @@ -5366,6 +5360,9 @@ msgid "" "be queued.\n" "This should be lower than curl_parallel_limit." msgstr "" +"En yüksek eÅŸzamanlı indirme sayısı.Bu sınırı aÅŸan indirmeler sıraya " +"alınacaktır.\n" +"Bu curl_parallel_limit den daha az olmalıdır." #: src/settings_translation_file.cpp msgid "Maximum number of forceloaded mapblocks." @@ -5598,7 +5595,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "New users need to input this password." -msgstr "Yeni kullanıcıların bu ÅŸifreyi girmesi gerekir." +msgstr "Yeni kullanıcıların bu parolayı girmesi gerekir." #: src/settings_translation_file.cpp msgid "Noclip" @@ -5772,14 +5769,12 @@ msgid "Pitch move mode" msgstr "EÄŸim hareket kipi" #: src/settings_translation_file.cpp -#, fuzzy msgid "Place key" -msgstr "Uçma tuÅŸu" +msgstr "YerleÅŸtirme tuÅŸu" #: src/settings_translation_file.cpp -#, fuzzy msgid "Place repetition interval" -msgstr "SaÄŸ tık tekrarlama aralığı" +msgstr "YerleÅŸtirme tekrarlama aralığı" #: src/settings_translation_file.cpp msgid "" @@ -6261,13 +6256,17 @@ msgid "Show entity selection boxes" msgstr "Varlık seçim kutularını göster" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Show entity selection boxes\n" "A restart is required after changing this." msgstr "" -"Dili ayarlayın. Sistem dilini kullanmak için boÅŸ bırakın.\n" -"Bunu deÄŸiÅŸtirdikten sonra yeniden baÅŸlatmak gerekir." +"Varlık seçim kutularını göster.\n" +"Bunu deÄŸiÅŸtirdikten sonra yeniden baÅŸlatma gerekir." + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Show nametag backgrounds by default" +msgstr "Öntanımlı kalın yazı tipi" #: src/settings_translation_file.cpp msgid "Shutdown message" @@ -6541,9 +6540,8 @@ msgid "The URL for the content repository" msgstr "İçerik deposu için URL" #: src/settings_translation_file.cpp -#, fuzzy msgid "The deadzone of the joystick" -msgstr "Kullanılacak joystick'in tanımlayıcısı" +msgstr "Joystick ölü bölgesi" #: src/settings_translation_file.cpp msgid "" @@ -6617,7 +6615,6 @@ msgstr "" "Bu active_object_send_range_blocks ile birlikte ayarlanmalıdır." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "The rendering back-end for Irrlicht.\n" "A restart is required after changing this.\n" @@ -6627,10 +6624,12 @@ msgid "" "Shaders are supported by OpenGL (desktop only) and OGLES2 (experimental)" msgstr "" "Irrlicht için iÅŸleme arka ucu.\n" -"Bunu deÄŸiÅŸtirdikten sonra tekrar baÅŸlatma gerekir.\n" -"Not: Android'de, emin deÄŸilseniz OGLES1 kullanın! BaÅŸka türlü, uygulama\n" -"baÅŸlayamayabilir. DiÄŸer platformlarda, OpenGL önerilir ve ÅŸu anda gölgeleme\n" -"desteÄŸi olan tek sürücüdür." +"Bunu deÄŸiÅŸtirdikten sonra yeniden baÅŸlatma gerekir.\n" +"Not: Android'de, emin deÄŸilseniz OGLES1 kullanın! BaÅŸka türlü, uygulama " +"baÅŸlayamayabilir.\n" +"DiÄŸer platformlarda, OpenGL önerilir.\n" +"Gölgelendiriciler OpenGL (yalnızca masaüstü) ve OGLES2 (deneysel) tarafından " +"desteklenmektedir" #: src/settings_translation_file.cpp msgid "" @@ -6669,6 +6668,8 @@ msgid "" "The time budget allowed for ABMs to execute on each step\n" "(as a fraction of the ABM Interval)" msgstr "" +"ABM'lerin her adımda yürütülmesi için izin verilen zaman gideri\n" +"(ABM aralığının bir parçası olarak)" #: src/settings_translation_file.cpp msgid "" @@ -6679,14 +6680,13 @@ msgstr "" "cinsinden tekrar eden olaylar arasında geçen süre." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "The time in seconds it takes between repeated node placements when holding\n" "the place button." msgstr "" -"SaÄŸ fare tuÅŸuna basılı tutarken tekrar eden saÄŸ tıklar arasında saniye " -"cinsinden\n" -"geçen süre." +"YerleÅŸtirme tuÅŸuna basılı tutarken tekrarlanan düğüm yerleÅŸimleri arasında " +"geçen\n" +"saniye cinsinden süre." #: src/settings_translation_file.cpp msgid "The type of joystick" @@ -6854,6 +6854,14 @@ msgid "" "If set to 0, MSAA is disabled.\n" "A restart is required after changing this option." msgstr "" +"Öbek/Küme kenarlarını düzeltmek için çok örnekli düzgünleÅŸtirmeyi(anti-" +"aliasing) kullanın.\n" +"Bu iÅŸlem görüntüyü keskinleÅŸtirirken 3 boyutlu görüş alanını düzeltir.\n" +"ama doku(texture) içindeki görüntüyü etkilemez.\n" +"(Saydam dokularda etkisi daha belirgindir)\n" +"Gölgelendirme kapalı ise düğüm arası(nod) boÅŸluk görülür.\n" +"0'da ise düzgünleÅŸtirme kapalıdır.\n" +"Ayarları deÄŸiÅŸtirdikten sonra yenileme gereklidir." #: src/settings_translation_file.cpp msgid "Use trilinear filtering when scaling textures." @@ -7093,6 +7101,12 @@ msgstr "" "Devre dışı kılınırsa, yerine bitmap ve XML vektör yazı tipleri kullanılır." #: src/settings_translation_file.cpp +msgid "" +"Whether nametag backgrounds should be shown by default.\n" +"Mods may still set a background." +msgstr "" + +#: src/settings_translation_file.cpp msgid "Whether node texture animations should be desynchronized per mapblock." msgstr "" "Harita bloÄŸu başına nod doku animasyonlarının eÅŸzamansız yapılıp " @@ -7256,6 +7270,11 @@ msgid "" "9 - best compression, slowest\n" "(levels 1-3 use Zlib's \"fast\" method, 4-9 use the normal method)" msgstr "" +"Harita kütlerini diske kaydederken kullanılacak ZLib sıkıştırma düzeyi.\n" +"-1 - Zlib'in varsayılan sıkıştırma düzeyi\n" +"0 - hiçbir sıkıştırma yok, en hızlı\n" +"9 - en iyi sıkıştırma, en yavaÅŸ\n" +"(seviye 1-3, Zlib'in \"hızlı\" , 4-9 sıradan yöntemi kullanır)" #: src/settings_translation_file.cpp msgid "" @@ -7265,6 +7284,12 @@ msgid "" "9 - best compression, slowest\n" "(levels 1-3 use Zlib's \"fast\" method, 4-9 use the normal method)" msgstr "" +"Harita kütlerini istemciye(client) gönderirken kullanılacak ZLib sıkıştırma " +"düzeyi.\n" +"-1 - Zlib'in varsayılan sıkıştırma düzeyi\n" +"0 - hiçbir sıkıştırma yok, en hızlı\n" +"9 - en iyi sıkıştırma, en yavaÅŸ\n" +"(seviye 1-3, Zlib'in \"hızlı\" , 4-9 sıradan yöntemi kullanır)" #: src/settings_translation_file.cpp msgid "cURL file download timeout" diff --git a/po/uk/minetest.po b/po/uk/minetest.po index 043cb2fdd..81b100511 100644 --- a/po/uk/minetest.po +++ b/po/uk/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Ukrainian (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-01-30 21:13+0100\n" +"POT-Creation-Date: 2021-02-23 19:03+0100\n" "PO-Revision-Date: 2020-10-25 19:26+0000\n" "Last-Translator: Nick Naumenko <mykola.naumenko@protonmail.com>\n" "Language-Team: Ukrainian <https://hosted.weblate.org/projects/minetest/" @@ -708,6 +708,11 @@ msgid "Loading..." msgstr "ЗавантаженнÑ..." #: builtin/mainmenu/serverlistmgr.lua +#, fuzzy +msgid "Public server list is disabled" +msgstr "КлієнтоÑторонні Ñкрипти на клієнті вимкнено" + +#: builtin/mainmenu/serverlistmgr.lua msgid "Try reenabling public serverlist and check your internet connection." msgstr "" "Спробуйте оновити ÑпиÑок публічних Ñерверів та перевірте Ñвоє Інтернет-" @@ -2939,7 +2944,7 @@ msgid "Enable console window" msgstr "" #: src/settings_translation_file.cpp -msgid "Enable creative mode for new created maps." +msgid "Enable creative mode for all players" msgstr "" #: src/settings_translation_file.cpp @@ -5660,6 +5665,10 @@ msgstr "" "Потрібен перезапуÑк піÑÐ»Ñ Ñ†Ñ–Ñ”Ñ— зміни." #: src/settings_translation_file.cpp +msgid "Show nametag backgrounds by default" +msgstr "" + +#: src/settings_translation_file.cpp msgid "Shutdown message" msgstr "" @@ -6337,6 +6346,12 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp +msgid "" +"Whether nametag backgrounds should be shown by default.\n" +"Mods may still set a background." +msgstr "" + +#: src/settings_translation_file.cpp msgid "Whether node texture animations should be desynchronized per mapblock." msgstr "" diff --git a/po/vi/minetest.po b/po/vi/minetest.po index 3a5ae4862..1238015ec 100644 --- a/po/vi/minetest.po +++ b/po/vi/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Vietnamese (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-01-30 21:13+0100\n" +"POT-Creation-Date: 2021-02-23 19:03+0100\n" "PO-Revision-Date: 2020-06-13 21:08+0000\n" "Last-Translator: darkcloudcat <leducthn@gmail.com>\n" "Language-Team: Vietnamese <https://hosted.weblate.org/projects/minetest/" @@ -700,6 +700,10 @@ msgid "Loading..." msgstr "Äang tải..." #: builtin/mainmenu/serverlistmgr.lua +msgid "Public server list is disabled" +msgstr "" + +#: builtin/mainmenu/serverlistmgr.lua msgid "Try reenabling public serverlist and check your internet connection." msgstr "" "Hãy thá» kÃch hoạt lại danh sách máy chá»§ công cá»™ng và kiểm tra kết nối " @@ -2838,7 +2842,7 @@ msgid "Enable console window" msgstr "" #: src/settings_translation_file.cpp -msgid "Enable creative mode for new created maps." +msgid "Enable creative mode for all players" msgstr "" #: src/settings_translation_file.cpp @@ -5540,6 +5544,10 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp +msgid "Show nametag backgrounds by default" +msgstr "" + +#: src/settings_translation_file.cpp msgid "Shutdown message" msgstr "" @@ -6213,6 +6221,12 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp +msgid "" +"Whether nametag backgrounds should be shown by default.\n" +"Mods may still set a background." +msgstr "" + +#: src/settings_translation_file.cpp msgid "Whether node texture animations should be desynchronized per mapblock." msgstr "" diff --git a/po/zh_CN/minetest.po b/po/zh_CN/minetest.po index f1cf938ac..aa816e11d 100644 --- a/po/zh_CN/minetest.po +++ b/po/zh_CN/minetest.po @@ -2,9 +2,9 @@ msgid "" msgstr "" "Project-Id-Version: Chinese (Simplified) (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-01-30 21:13+0100\n" -"PO-Revision-Date: 2021-01-24 16:19+0000\n" -"Last-Translator: AISS <cretaceous@mail.ee>\n" +"POT-Creation-Date: 2021-02-23 19:03+0100\n" +"PO-Revision-Date: 2021-01-20 15:10+0000\n" +"Last-Translator: ZhiZe-ZG <qi_wang_zz@outlook.com>\n" "Language-Team: Chinese (Simplified) <https://hosted.weblate.org/projects/" "minetest/minetest/zh_Hans/>\n" "Language: zh_CN\n" @@ -700,6 +700,11 @@ msgid "Loading..." msgstr "载入ä¸..." #: builtin/mainmenu/serverlistmgr.lua +#, fuzzy +msgid "Public server list is disabled" +msgstr "客户端脚本已ç¦ç”¨" + +#: builtin/mainmenu/serverlistmgr.lua msgid "Try reenabling public serverlist and check your internet connection." msgstr "请å°è¯•釿–°å¯ç”¨å…¬å…±æœåŠ¡å™¨åˆ—è¡¨å¹¶æ£€æŸ¥æ‚¨çš„ç½‘ç»œè¿žæŽ¥ã€‚" @@ -2206,10 +2211,10 @@ msgid "" "to be sure) creates a solid floatland layer." msgstr "" "调整悬空岛层的密度。\n" -"增大数值å¯å¢žåŠ å¯†åº¦ï¼Œå¯ä»¥æ˜¯æ£å€¼æˆ–负值。\n" -"值=0.0:50% o的体积是平原。\n" -"值 = 2.0 (å¯ä»¥æ›´é«˜ï¼Œå–决于'mgv7_np_floatland'。\n" -"总是测试以确ä¿ï¼Œåˆ›å»ºä¸€ä¸ªåšå®žçš„æ‚¬ç©ºå²›å±‚。" +"å¢žåŠ å€¼ä»¥å¢žåŠ å¯†åº¦ã€‚å¯ä»¥æ˜¯æ£å€¼æˆ–负值。\n" +"值ç‰äºŽ0.0, 容积的50%是floatland。\n" +"值ç‰äºŽ2.0 ,(å¯ä»¥æ›´é«˜ï¼Œå–决于 'mgv7_np_floatland' ,始终测试以确定)\n" +"创建一个åšå®žçš„æ‚¬ç©ºå²›å±‚。" #: src/settings_translation_file.cpp msgid "Advanced" @@ -2970,7 +2975,8 @@ msgid "Enable console window" msgstr "å¯ç”¨æŽ§åˆ¶å°çª—å£" #: src/settings_translation_file.cpp -msgid "Enable creative mode for new created maps." +#, fuzzy +msgid "Enable creative mode for all players" msgstr "为新建地图å¯ç”¨åˆ›é€ 模å¼ã€‚" #: src/settings_translation_file.cpp @@ -3116,10 +3122,9 @@ msgid "" "flatter lowlands, suitable for a solid floatland layer." msgstr "" "悬空岛锥度的指数,更改锥度的行为。\n" -"值ç‰äºŽ1.0 ,创建一个统一的,线性锥度。\n" -"值大于1.0 ,创建一个平滑的ã€åˆé€‚的锥度,\n" -"默认分隔的悬空岛。\n" -"值å°äºŽ1.0,(例如0.25)创建一个带有平å¦ä½Žåœ°çš„æ›´åŠ è½®å»“åˆ†æ˜Žçš„è¡¨é¢çº§åˆ«ã€‚\n" +"值ç‰äºŽ1.0,创建一个统一的,线性锥度。\n" +"值大于1.0,创建一个平滑的ã€åˆé€‚的锥度,默认分隔的悬空岛。\n" +"值å°äºŽ1.0,(例如0.25)创建一个带有平å¦ä½Žåœ°çš„æ›´åŠ è½®å»“åˆ†æ˜Žçš„è¡¨é¢çº§åˆ«ï¼Œ\n" "适用于固体悬空岛层。" #: src/settings_translation_file.cpp @@ -3877,8 +3882,8 @@ msgid "" "limited\n" "to this distance from the player to the node." msgstr "" -"如果客户端modæ–¹å—范围é™åˆ¶å¯ç”¨ï¼Œé™åˆ¶get_node至玩家。\n" -"到方å—çš„è·ç¦»ã€‚" +"如果客户端modæ–¹å—范围é™åˆ¶å¯ç”¨ï¼Œé™åˆ¶get_node至玩家\n" +"到方å—çš„è·ç¦»" #: src/settings_translation_file.cpp msgid "" @@ -6189,6 +6194,11 @@ msgstr "" "å˜æ›´åŽé¡»é‡æ–°å¯åŠ¨ã€‚" #: src/settings_translation_file.cpp +#, fuzzy +msgid "Show nametag backgrounds by default" +msgstr "默认粗体" + +#: src/settings_translation_file.cpp msgid "Shutdown message" msgstr "关闿¶ˆæ¯" @@ -6444,46 +6454,38 @@ msgid "" "this option allows enforcing it for certain node types. Note though that\n" "that is considered EXPERIMENTAL and may not work properly." msgstr "" -"节点上的纹ç†å¯ä»¥ä¸Žè¯¥èŠ‚ç‚¹å¯¹é½ï¼Œä¹Ÿå¯ä»¥ä¸Žä¸–界对é½ã€‚\n" -"å‰ä¸€ç§æ¨¡å¼é€‚åˆæœºå™¨ï¼Œå®¶å…·ç‰æ›´å¥½çš„东西,而\n" -"åŽè€…ä½¿æ¥¼æ¢¯å’Œå¾®åŒºå—æ›´é€‚åˆå‘¨å›´çŽ¯å¢ƒã€‚\n" -"但是,由于这ç§å¯èƒ½æ€§æ˜¯æ–°çš„ï¼Œå› æ¤è¾ƒæ—§çš„æœåŠ¡å™¨å¯èƒ½ä¸ä¼šä½¿ç”¨ï¼Œ\n" -"æ¤é€‰é¡¹å…许对æŸäº›èŠ‚ç‚¹ç±»åž‹å¼ºåˆ¶å®žæ–½ã€‚ 注æ„尽管\n" -"被认为是实验性的,å¯èƒ½æ— 法æ£å¸¸å·¥ä½œã€‚" #: src/settings_translation_file.cpp +#, fuzzy msgid "The URL for the content repository" msgstr "内容å˜å‚¨åº“çš„ URL" #: src/settings_translation_file.cpp -#, fuzzy msgid "The deadzone of the joystick" -msgstr "è¦ä½¿ç”¨çš„æ“çºµæ†çš„æ ‡è¯†ç¬¦" +msgstr "" #: src/settings_translation_file.cpp msgid "" "The default format in which profiles are being saved,\n" "when calling `/profiler save [format]` without format." msgstr "" -"ä¿å˜é…ç½®æ–‡ä»¶çš„é»˜è®¤æ ¼å¼ï¼Œ\n" -"调用`/profiler save[format]`æ—¶ä¸å¸¦æ ¼å¼ã€‚" #: src/settings_translation_file.cpp msgid "The depth of dirt or other biome filler node." -msgstr "泥土深度或其他生物群系过滤节点。" +msgstr "泥土深度或其他生物群系过滤节点" #: src/settings_translation_file.cpp msgid "" "The file path relative to your worldpath in which profiles will be saved to." -msgstr "é…置文件将ä¿å˜åˆ°ï¼Œæ‚¨çš„世界路径的文件路径。" +msgstr "" #: src/settings_translation_file.cpp msgid "The identifier of the joystick to use" -msgstr "è¦ä½¿ç”¨çš„æ“çºµæ†çš„æ ‡è¯†ç¬¦" +msgstr "" #: src/settings_translation_file.cpp msgid "The length in pixels it takes for touch screen interaction to start." -msgstr "开始触摸å±äº¤äº’所需的长度(以åƒç´ 为å•ä½ï¼‰ã€‚" +msgstr "" #: src/settings_translation_file.cpp msgid "" @@ -6493,11 +6495,6 @@ msgid "" "Default is 1.0 (1/2 node).\n" "Requires waving liquids to be enabled." msgstr "" -"波浪状液体表é¢çš„æœ€å¤§é«˜åº¦ã€‚\n" -"4.0 =波高是两个节点。\n" -"0.0 =波形完全ä¸ç§»åŠ¨ã€‚\n" -"默认值为1.0(1/2节点)。\n" -"需è¦å¯ç”¨æ³¢çŠ¶æ¶²ä½“ã€‚" #: src/settings_translation_file.cpp msgid "The network interface that the server listens on." @@ -6521,14 +6518,8 @@ msgid "" "maintained.\n" "This should be configured together with active_object_send_range_blocks." msgstr "" -"æ¯ä¸ªçŽ©å®¶å‘¨å›´çš„æ–¹å—体积的åŠå¾„å—制于\n" -"活动å—内容,以mapblock(16个节点)表示。\n" -"在活动å—ä¸ï¼Œå°†åŠ è½½å¯¹è±¡å¹¶è¿è¡ŒABM。\n" -"è¿™ä¹Ÿæ˜¯ä¿æŒæ´»åŠ¨å¯¹è±¡ï¼ˆç”Ÿç‰©ï¼‰çš„æœ€å°èŒƒå›´ã€‚\n" -"这应该与active_object_send_range_blocks一起é…置。" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "The rendering back-end for Irrlicht.\n" "A restart is required after changing this.\n" @@ -6537,19 +6528,12 @@ msgid "" "On other platforms, OpenGL is recommended.\n" "Shaders are supported by OpenGL (desktop only) and OGLES2 (experimental)" msgstr "" -"Irrlicht的渲染åŽç«¯ã€‚\n" -"更改æ¤è®¾ç½®åŽéœ€è¦é‡æ–°å¯åŠ¨ã€‚\n" -"注æ„:在Android上,如果ä¸ç¡®å®šï¼Œè¯·åšæŒä½¿ç”¨OGLES1ï¼ åº”ç”¨å¯èƒ½æ— 法å¯åŠ¨ï¼Œå¦åˆ™ã€‚\n" -"在其他平å°ä¸Šï¼Œå»ºè®®ä½¿ç”¨OpenGL,它是唯一具有以下功能的驱动程åºã€‚\n" -"ç›®å‰æ”¯æŒç€è‰²å™¨ã€‚" #: src/settings_translation_file.cpp msgid "" "The sensitivity of the joystick axes for moving the\n" "ingame view frustum around." msgstr "" -"æ“纵æ†è½´çš„çµæ•度,用于移动\n" -"在游æˆä¸æŸ¥çœ‹å‘¨å›´ frustum。" #: src/settings_translation_file.cpp msgid "" @@ -6558,10 +6542,6 @@ msgid "" "setting is 0.25 to 4.0 inclusive. If the value is out of range it will be\n" "set to the nearest valid value." msgstr "" -"èŠ‚ç‚¹çŽ¯å¢ƒé®æŒ¡é˜´å½±çš„强度(暗度)。\n" -"越低越暗,越高越亮。该值的有效范围是\n" -"0.25至4.0(å«ï¼‰ã€‚如果该值超出范围,则为\n" -"设置为最接近的有效值。" #: src/settings_translation_file.cpp msgid "" @@ -6569,9 +6549,6 @@ msgid "" "capacity until an attempt is made to decrease its size by dumping old queue\n" "items. A value of 0 disables the functionality." msgstr "" -"液体波动å¯èƒ½å¢žé•¿è¶…过处ç†èƒ½åŠ›çš„æ—¶é—´(以秒为å•ä½)。\n" -"å°è¯•通过旧液体波动项æ¥å‡å°‘其大å°ã€‚\n" -"数值为0å°†ç¦ç”¨è¯¥åŠŸèƒ½ã€‚" #: src/settings_translation_file.cpp msgid "" @@ -6584,21 +6561,16 @@ msgid "" "The time in seconds it takes between repeated events\n" "when holding down a joystick button combination." msgstr "" -"æŒ‰ä½æ“çºµæ‰‹æŸ„æŒ‰é’®ç»„åˆæ—¶ï¼Œ\n" -"é‡å¤äº‹ä»¶ä¹‹é—´çš„æ—¶é—´ï¼ˆä»¥ç§’为å•ä½ï¼‰ã€‚" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "The time in seconds it takes between repeated node placements when holding\n" "the place button." msgstr "" -"按ä½é¼ æ ‡å³é”®æ—¶ä¸¤æ¬¡é‡å¤å•击之间所花费的时间(以秒为å•ä½ï¼‰\n" -"é¼ æ ‡æŒ‰é’®ã€‚" #: src/settings_translation_file.cpp msgid "The type of joystick" -msgstr "手柄类型" +msgstr "" #: src/settings_translation_file.cpp msgid "" @@ -6611,8 +6583,9 @@ msgstr "" "å·²å¯ç”¨â€œ altitude_dryâ€ã€‚" #: src/settings_translation_file.cpp +#, fuzzy msgid "Third of 4 2D noises that together define hill/mountain range height." -msgstr "å››ç§2D波状定义了,频率,幅度,噪声,颜色。" +msgstr "定义tunnels的最åˆ2个3D噪音。" #: src/settings_translation_file.cpp msgid "" @@ -6645,8 +6618,6 @@ msgid "" "This determines how long they are slowed down after placing or removing a " "node." msgstr "" -"为了å‡å°‘延迟,当一个玩家æ£åœ¨æž„建æŸä¸ªä¸œè¥¿æ—¶ï¼Œé˜»å¡žä¼ è¾“ä¼šå‡æ…¢ã€‚\n" -"è¿™å†³å®šäº†æ”¾ç½®æˆ–åˆ é™¤èŠ‚ç‚¹åŽå®ƒä»¬çš„é€Ÿåº¦å‡æ…¢çš„æ—¶é—´ã€‚" #: src/settings_translation_file.cpp msgid "Toggle camera mode key" @@ -6687,8 +6658,9 @@ msgid "URL to the server list displayed in the Multiplayer Tab." msgstr "显示在“多人游æˆâ€é€‰é¡¹å¡ä¸çš„æœåŠ¡å™¨åˆ—è¡¨çš„URL。" #: src/settings_translation_file.cpp +#, fuzzy msgid "Undersampling" -msgstr "采集" +msgstr "æ¬ é‡‡æ ·" #: src/settings_translation_file.cpp msgid "" @@ -6698,10 +6670,6 @@ msgid "" "image.\n" "Higher values result in a less detailed image." msgstr "" -"采集类似于使用较低的å±å¹•分辨率,但是它适用\n" -"ä»…é™äºŽæ¸¸æˆä¸–ç•Œï¼Œä¿æŒGUI完整。\n" -"它应该以ä¸é‚£ä¹ˆè¯¦ç»†çš„图åƒä¸ºä»£ä»·æ˜¾ç€æé«˜æ€§èƒ½ã€‚\n" -"较高的值会导致图åƒä¸å¤ªæ¸…晰。" #: src/settings_translation_file.cpp msgid "Unlimited player transfer distance" @@ -6724,16 +6692,17 @@ msgid "Use 3D cloud look instead of flat." msgstr "使用 3D äº‘å½©ï¼Œè€Œä¸æ˜¯çœ‹èµ·æ¥æ˜¯å¹³é¢çš„。" #: src/settings_translation_file.cpp +#, fuzzy msgid "Use a cloud animation for the main menu background." msgstr "主èœå•背景使用云动画。" #: src/settings_translation_file.cpp msgid "Use anisotropic filtering when viewing at textures from an angle." -msgstr "从æŸä¸ªè§’åº¦æŸ¥çœ‹çº¹ç†æ—¶ä½¿ç”¨å„å‘异性过滤。" +msgstr "" #: src/settings_translation_file.cpp msgid "Use bilinear filtering when scaling textures." -msgstr "ç¼©æ”¾çº¹ç†æ—¶ä½¿ç”¨åŒçº¿æ€§è¿‡æ»¤ã€‚" +msgstr "" #: src/settings_translation_file.cpp msgid "" @@ -6741,9 +6710,6 @@ msgid "" "especially when using a high resolution texture pack.\n" "Gamma correct downscaling is not supported." msgstr "" -"使用mipæ˜ å°„ç¼©æ”¾çº¹ç†ã€‚å¯èƒ½ä¼šç¨å¾®æé«˜æ€§èƒ½ï¼Œ\n" -"尤其是使用高分辨率纹ç†åŒ…时。\n" -"䏿”¯æŒGammaæ ¡æ£ç¼©å°ã€‚" #: src/settings_translation_file.cpp msgid "" @@ -6758,7 +6724,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Use trilinear filtering when scaling textures." -msgstr "ç¼©æ”¾çº¹ç†æ—¶ä½¿ç”¨ä¸‰çº¿è¿‡æ»¤ã€‚" +msgstr "" #: src/settings_translation_file.cpp msgid "VBO" @@ -6773,8 +6739,9 @@ msgid "Valley depth" msgstr "山谷深度" #: src/settings_translation_file.cpp +#, fuzzy msgid "Valley fill" -msgstr "山谷填塞" +msgstr "山谷弥漫" #: src/settings_translation_file.cpp msgid "Valley profile" @@ -6794,35 +6761,32 @@ msgstr "最大山体高度的å˜åŒ–(以节点为å•ä½ï¼‰ã€‚" #: src/settings_translation_file.cpp msgid "Variation of number of caves." -msgstr "æ´žç©´æ•°é‡çš„å˜åŒ–。" +msgstr "æ´žå£æ•°é‡çš„å˜åŒ–。" #: src/settings_translation_file.cpp msgid "" "Variation of terrain vertical scale.\n" "When noise is < -0.55 terrain is near-flat." msgstr "" -"地形垂直比例的å˜åŒ–。\n" -"当比例< -0.55 地形接近平å¦ã€‚" #: src/settings_translation_file.cpp msgid "Varies depth of biome surface nodes." -msgstr "改å˜ç”Ÿç‰©ç¾¤è½è¡¨é¢æ–¹å—的深度。" +msgstr "" #: src/settings_translation_file.cpp msgid "" "Varies roughness of terrain.\n" "Defines the 'persistence' value for terrain_base and terrain_alt noises." msgstr "" -"改å˜åœ°å½¢çš„粗糙度。\n" -"定义 terrain_baseå’Œterrain_alt光影的“æŒä¹…性â€å€¼ã€‚" #: src/settings_translation_file.cpp +#, fuzzy msgid "Varies steepness of cliffs." msgstr "控制山丘的å¡åº¦/高度。" #: src/settings_translation_file.cpp msgid "Vertical climbing speed, in nodes per second." -msgstr "垂直爬å‡é€Ÿåº¦ï¼Œä»¥èŠ‚ç‚¹/秒表示。" +msgstr "" #: src/settings_translation_file.cpp msgid "Vertical screen synchronization." @@ -6833,6 +6797,7 @@ msgid "Video driver" msgstr "视频驱动程åº" #: src/settings_translation_file.cpp +#, fuzzy msgid "View bobbing factor" msgstr "范围摇动" @@ -6858,13 +6823,14 @@ msgstr "å¯è§†èŒƒå›´" #: src/settings_translation_file.cpp msgid "Virtual joystick triggers aux button" -msgstr "虚拟æ“纵手柄触å‘辅助按钮" +msgstr "" #: src/settings_translation_file.cpp msgid "Volume" msgstr "音é‡" #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Volume of all sounds.\n" "Requires the sound system to be enabled." @@ -6880,11 +6846,6 @@ msgid "" "Has no effect on 3D fractals.\n" "Range roughly -2 to 2." msgstr "" -"生æˆçš„ 4D 分形 3D 切片的 W åæ ‡ã€‚\n" -"确定生æˆçš„ 4D 形状的 3D 切片。\n" -"更改分形的形状。\n" -"对 3D 分形没有影å“。\n" -"范围大约 -2 到 2。" #: src/settings_translation_file.cpp msgid "Walking and flying speed, in nodes per second." @@ -6903,8 +6864,9 @@ msgid "Water level" msgstr "æ°´ä½" #: src/settings_translation_file.cpp +#, fuzzy msgid "Water surface level of the world." -msgstr "地表水é¢é«˜åº¦ã€‚" +msgstr "世界水平é¢çº§åˆ«ã€‚" #: src/settings_translation_file.cpp msgid "Waving Nodes" @@ -6940,9 +6902,6 @@ msgid "" "filtered in software, but some images are generated directly\n" "to hardware (e.g. render-to-texture for nodes in inventory)." msgstr "" -"当gui_scaling_filter为 true 时,所有 GUI æ˜ åƒéƒ½éœ€è¦\n" -"在软件ä¸è¿‡æ»¤ï¼Œä½†ä¸€äº›å›¾åƒæ˜¯ç›´æŽ¥ç”Ÿæˆçš„\n" -"硬件(例如,库å˜ä¸æè´¨çš„æ¸²æŸ“到纹ç†ï¼‰ã€‚" #: src/settings_translation_file.cpp msgid "" @@ -6951,10 +6910,6 @@ msgid "" "to the old scaling method, for video drivers that don't\n" "properly support downloading textures back from hardware." msgstr "" -"当gui_scaling_filter_txr2img为 true 时,å¤åˆ¶è¿™äº›å›¾åƒ\n" -"从硬件到软件进行扩展。 当 false 时,回退\n" -"到旧的缩放方法,对于ä¸\n" -"æ£ç¡®æ”¯æŒä»Žç¡¬ä»¶ä¸‹è½½çº¹ç†ã€‚" #: src/settings_translation_file.cpp msgid "" @@ -6968,15 +6923,6 @@ msgid "" "This is also used as the base node texture size for world-aligned\n" "texture autoscaling." msgstr "" -"使用åŒçº¿æ€§/三线性/å„å‘异性滤镜时,低分辨率纹ç†ã€‚\n" -"å¯ä»¥è¢«æ¨¡ç³ŠåŒ–ï¼Œå› æ¤å¯ä»¥ä½¿ç”¨æœ€è¿‘的邻居自动对其进行放大。\n" -"æ’值以ä¿ç•™æ¸…æ™°åƒç´ 。 设置最å°çº¹ç†å¤§å°ã€‚\n" -"用于高档纹ç†ï¼› è¾ƒé«˜çš„å€¼çœ‹èµ·æ¥æ›´é”åˆ©ï¼Œä½†éœ€è¦æ›´å¤šã€‚\n" -"记忆。 建议使用2的幂。 å°†æ¤å€¼è®¾ç½®ä¸ºå¤§äºŽ1å¯èƒ½ä¸ä¼šã€‚\n" -"除éžåŒçº¿æ€§/三线性/å„å‘异性过滤是。\n" -"å·²å¯ç”¨ã€‚\n" -"这也用作与世界对é½çš„基本æè´¨çº¹ç†å¤§å°ã€‚\n" -"纹ç†è‡ªåŠ¨ç¼©æ”¾ã€‚" #: src/settings_translation_file.cpp msgid "" @@ -6984,24 +6930,26 @@ msgid "" "in.\n" "If disabled, bitmap and XML vectors fonts are used instead." msgstr "" -"是å¦ä½¿ç”¨ FreeType å—体,都需è¦åœ¨ ä¸ç¼–译 FreeType 支æŒã€‚\n" -"如果ç¦ç”¨ï¼Œåˆ™ä½¿ç”¨ä½å›¾å’Œ XML 矢é‡å—体。" + +#: src/settings_translation_file.cpp +msgid "" +"Whether nametag backgrounds should be shown by default.\n" +"Mods may still set a background." +msgstr "" #: src/settings_translation_file.cpp msgid "Whether node texture animations should be desynchronized per mapblock." -msgstr "节点纹ç†åŠ¨ç”»æ˜¯å¦åº”按地图å—ä¸åŒæ¥ã€‚" +msgstr "" #: src/settings_translation_file.cpp msgid "" "Whether players are shown to clients without any range limit.\n" "Deprecated, use the setting player_transfer_distance instead." msgstr "" -"çŽ©å®¶æ˜¯å¦æ˜¾ç¤ºç»™å®¢æˆ·ç«¯æ²¡æœ‰ä»»ä½•范围é™åˆ¶ã€‚\n" -"已弃用,请player_transfer_distance设置。" #: src/settings_translation_file.cpp msgid "Whether to allow players to damage and kill each other." -msgstr "是å¦å…è®¸çŽ©å®¶äº’ç›¸ä¼¤å®³å’Œæ€æ»ã€‚" +msgstr "" #: src/settings_translation_file.cpp msgid "" @@ -7022,10 +6970,6 @@ msgid "" "In-game, you can toggle the mute state with the mute key or by using the\n" "pause menu." msgstr "" -"是å¦å°†å£°éŸ³é™éŸ³ã€‚您å¯éšæ—¶å–æ¶ˆé™éŸ³å£°éŸ³ï¼Œé™¤éž\n" -"音å“系统已ç¦ç”¨ï¼ˆenable_sound=false)。\n" -"在游æˆä¸ï¼Œæ‚¨å¯ä»¥ä½¿ç”¨é™éŸ³é”®åˆ‡æ¢é™éŸ³çжæ€ï¼Œæˆ–者使用\n" -"æš‚åœèœå•。" #: src/settings_translation_file.cpp msgid "" @@ -7037,8 +6981,9 @@ msgid "Width component of the initial window size." msgstr "åˆå§‹çª—å£å¤§å°çš„宽度。" #: src/settings_translation_file.cpp +#, fuzzy msgid "Width of the selection box lines around nodes." -msgstr "节点周围的选择框线的宽度。" +msgstr "结点周围的选择框的线宽。" #: src/settings_translation_file.cpp msgid "" @@ -7046,8 +6991,6 @@ msgid "" "background.\n" "Contains the same information as the file debug.txt (default name)." msgstr "" -"仅适用于 Windows 系统:在命令行ä¸çª—å£ä¸å¯åЍ Minetest。\n" -"与 debug.txt(默认å称)文件包å«ç›¸åŒçš„调试信æ¯ã€‚" #: src/settings_translation_file.cpp msgid "" @@ -7070,16 +7013,10 @@ msgid "" "See also texture_min_size.\n" "Warning: This option is EXPERIMENTAL!" msgstr "" -"世界对é½çš„纹ç†å¯ä»¥ç¼©æ”¾ä»¥è·¨è¶Šå¤šä¸ªèŠ‚ç‚¹ã€‚ 然而,\n" -"æœåС噍å¯èƒ½ä¸ä¼šåŒæ„您想è¦çš„请求,特别是如果您使用\n" -"专门设计的纹ç†åŒ…ï¼› 使用æ¤é€‰é¡¹ï¼Œå®¢æˆ·ç«¯å°è¯•\n" -"æ ¹æ®çº¹ç†å¤§å°è‡ªåŠ¨ç¡®å®šæ¯”ä¾‹ã€‚\n" -"å¦è¯·å‚è§texture_min_size。\n" -"è¦å‘Šï¼šæ¤é€‰é¡¹æ˜¯å®žéªŒæ€§çš„ï¼" #: src/settings_translation_file.cpp msgid "World-aligned textures mode" -msgstr "世界对é½çº¹ç†æ¨¡å¼" +msgstr "" #: src/settings_translation_file.cpp msgid "Y of flat ground." @@ -7089,15 +7026,16 @@ msgstr "平地的 Y。" msgid "" "Y of mountain density gradient zero level. Used to shift mountains " "vertically." -msgstr "Y的山地密度梯度为零。用于垂直移动山脉。" +msgstr "" #: src/settings_translation_file.cpp +#, fuzzy msgid "Y of upper limit of large caves." -msgstr "å¤§åž‹éšæœºæ´žç©´çš„Yåæ ‡æœ€å¤§å€¼ã€‚" +msgstr "å¤§åž‹éšæœºæ´žç©´çš„Y轴最大值。" #: src/settings_translation_file.cpp msgid "Y-distance over which caverns expand to full size." -msgstr "洞穴扩大到最大尺寸的Yè½´è·ç¦»ã€‚" +msgstr "" #: src/settings_translation_file.cpp msgid "" @@ -7106,22 +7044,18 @@ msgid "" "For a solid floatland layer, this controls the height of hills/mountains.\n" "Must be less than or equal to half the distance between the Y limits." msgstr "" -"æ‚¬ç©ºå²›ä»Žæœ€å¤§å¯†åº¦åˆ°æ— å¯†åº¦åŒºåŸŸçš„Y è½´è·ç¦»ã€‚\n" -"锥形从 Y 轴界é™å¼€å§‹ã€‚\n" -"对于实心浮地图层,这控制山/山的高度。\n" -"å¿…é¡»å°äºŽæˆ–ç‰äºŽ Y é™åˆ¶ä¹‹é—´ä¸€åŠçš„è·ç¦»ã€‚" #: src/settings_translation_file.cpp msgid "Y-level of average terrain surface." -msgstr "地表平å‡Yåæ ‡ã€‚" +msgstr "" #: src/settings_translation_file.cpp msgid "Y-level of cavern upper limit." -msgstr "洞穴上é™çš„Yåæ ‡ã€‚" +msgstr "" #: src/settings_translation_file.cpp msgid "Y-level of higher terrain that creates cliffs." -msgstr "å½¢æˆæ‚¬å´–的更高地形的Yåæ ‡ã€‚" +msgstr "" #: src/settings_translation_file.cpp msgid "Y-level of lower terrain and seabed." diff --git a/po/zh_TW/minetest.po b/po/zh_TW/minetest.po index 598777a62..99332e226 100644 --- a/po/zh_TW/minetest.po +++ b/po/zh_TW/minetest.po @@ -2,9 +2,9 @@ msgid "" msgstr "" "Project-Id-Version: Chinese (Traditional) (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-01-30 21:13+0100\n" -"PO-Revision-Date: 2021-01-24 16:19+0000\n" -"Last-Translator: AISS <cretaceous@mail.ee>\n" +"POT-Creation-Date: 2021-02-23 19:03+0100\n" +"PO-Revision-Date: 2020-12-24 05:29+0000\n" +"Last-Translator: Man Ho Yiu <yiufamily.hh@gmail.com>\n" "Language-Team: Chinese (Traditional) <https://hosted.weblate.org/projects/" "minetest/minetest/zh_Hant/>\n" "Language: zh_TW\n" @@ -12,7 +12,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 4.5-dev\n" +"X-Generator: Weblate 4.4.1-dev\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" @@ -23,6 +23,7 @@ msgid "You died" msgstr "您已æ»äº¡" #: builtin/fstk/dialog.lua builtin/fstk/ui.lua src/gui/modalMenu.cpp +#, fuzzy msgid "OK" msgstr "OK" @@ -199,10 +200,12 @@ msgid "Base Game:" msgstr "主æŒéŠæˆ²" #: builtin/mainmenu/dlg_contentstore.lua +#, fuzzy msgid "ContentDB is not available when Minetest was compiled without cURL" msgstr "在沒有cURL的情æ³ä¸‹ç·¨è¯Minetest時,ContentDBä¸å¯ç”¨" #: builtin/mainmenu/dlg_contentstore.lua +#, fuzzy msgid "Downloading..." msgstr "æ£åœ¨è¼‰å…¥..." @@ -248,9 +251,8 @@ msgid "No updates" msgstr "æ›´æ–°" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "Not found" -msgstr "éœéŸ³" +msgstr "" #: builtin/mainmenu/dlg_contentstore.lua msgid "Overwrite" @@ -289,6 +291,7 @@ msgid "A world named \"$1\" already exists" msgstr "å為「$1ã€çš„世界已å˜åœ¨" #: builtin/mainmenu/dlg_create_world.lua +#, fuzzy msgid "Additional terrain" msgstr "其他地形" @@ -297,23 +300,24 @@ msgid "Altitude chill" msgstr "寒冷海拔" #: builtin/mainmenu/dlg_create_world.lua +#, fuzzy msgid "Altitude dry" msgstr "寒冷海拔" #: builtin/mainmenu/dlg_create_world.lua #, fuzzy msgid "Biome blending" -msgstr "生物群è½" +msgstr "生物雜訊" #: builtin/mainmenu/dlg_create_world.lua #, fuzzy msgid "Biomes" -msgstr "生物群è½" +msgstr "生物雜訊" #: builtin/mainmenu/dlg_create_world.lua #, fuzzy msgid "Caverns" -msgstr "æ´žç©´" +msgstr "洞穴雜訊" #: builtin/mainmenu/dlg_create_world.lua #, fuzzy @@ -363,7 +367,7 @@ msgstr "éŠæˆ²" #: builtin/mainmenu/dlg_create_world.lua msgid "Generate non-fractal terrain: Oceans and underground" -msgstr "ç”Ÿæˆæ›²ç·šæˆ–幾何地形:海洋和地下" +msgstr "" #: builtin/mainmenu/dlg_create_world.lua msgid "Hills" @@ -421,11 +425,11 @@ msgstr "æœªé¸æ“‡éŠæˆ²" #: builtin/mainmenu/dlg_create_world.lua msgid "Reduces heat with altitude" -msgstr "隨海拔é™ä½Žç†±é‡" +msgstr "" #: builtin/mainmenu/dlg_create_world.lua msgid "Reduces humidity with altitude" -msgstr "濕度隨海拔å‡é«˜è€Œé™ä½Ž" +msgstr "" #: builtin/mainmenu/dlg_create_world.lua #, fuzzy @@ -463,11 +467,11 @@ msgstr "æº«å¸¶æ²™æ¼ " #: builtin/mainmenu/dlg_create_world.lua msgid "Temperate, Desert, Jungle" -msgstr "æº«å¸¶ã€æ²™æ¼ ã€å¢æž—" +msgstr "" #: builtin/mainmenu/dlg_create_world.lua msgid "Temperate, Desert, Jungle, Tundra, Taiga" -msgstr "æº«å¸¶ï¼Œæ²™æ¼ ï¼Œå¢æž—,苔原,é‡è‘‰æž—" +msgstr "" #: builtin/mainmenu/dlg_create_world.lua #, fuzzy @@ -476,7 +480,7 @@ msgstr "地形基礎高度" #: builtin/mainmenu/dlg_create_world.lua msgid "Trees and jungle grass" -msgstr "æ¨¹æœ¨å’Œå¢æž—è‰" +msgstr "" #: builtin/mainmenu/dlg_create_world.lua #, fuzzy @@ -567,7 +571,7 @@ msgstr "已啟用" #: builtin/mainmenu/dlg_settings_advanced.lua #, fuzzy msgid "Lacunarity" -msgstr "空隙" +msgstr "Lacunarity" #: builtin/mainmenu/dlg_settings_advanced.lua #, fuzzy @@ -723,6 +727,11 @@ msgid "Loading..." msgstr "æ£åœ¨è¼‰å…¥..." #: builtin/mainmenu/serverlistmgr.lua +#, fuzzy +msgid "Public server list is disabled" +msgstr "å·²åœç”¨ç”¨æˆ¶ç«¯æŒ‡ä»¤ç¨¿" + +#: builtin/mainmenu/serverlistmgr.lua msgid "Try reenabling public serverlist and check your internet connection." msgstr "è«‹å˜—è©¦é‡æ–°å•Ÿç”¨å…¬å…±ä¼ºæœå™¨æ¸…單並檢查您的網際網路連線。" @@ -1999,13 +2008,12 @@ msgstr "" "如åœç”¨ï¼Œè™›æ“¬æ–æ¡¿å°‡æœƒç½®ä¸æ–¼ç¬¬ä¸€å€‹è§¸ç¢°çš„ä½ç½®ã€‚" #: src/settings_translation_file.cpp +#, fuzzy msgid "" "(Android) Use virtual joystick to trigger \"aux\" button.\n" "If enabled, virtual joystick will also tap \"aux\" button when out of main " "circle." -msgstr "" -"(Android)使用虛擬æ“縱桿觸發“auxâ€æŒ‰éˆ•。\n" -"å¦‚æžœå•Ÿç”¨ï¼Œå‰‡è™›æ“¬éŠæˆ²æ¡¿ä¹Ÿæœƒåœ¨é›¢é–‹ä¸»åœ“時點擊“auxâ€æŒ‰éˆ•。" +msgstr "(Android) ä½¿ç”¨è™›æ“¬æ–æ¡¿è§¸ç™¼ \"aux\" 按éµã€‚\n" #: src/settings_translation_file.cpp #, fuzzy @@ -2020,16 +2028,11 @@ msgid "" "Range roughly -2 to 2. Multiply by 'scale' for offset in nodes." msgstr "" "在「比例尺ã€ä¸å–®ä½çš„ (X,Y,Z) å移。\n" -"å¯ç”¨æ–¼å°‡æ‰€éœ€é»žç§»å‹•到(0, 0)以創建一個。\n" -"åˆé©çš„生æˆé»žï¼Œæˆ–å…è¨±â€œæ”¾å¤§â€æ‰€éœ€çš„點。\n" -"通éŽå¢žåŠ â€œè¦æ¨¡â€ä¾†ç¢ºå®šã€‚\n" -"默èªå€¼å·²èª¿æ•´ç‚ºMandelbrotåˆé©çš„生æˆé»žã€‚\n" -"è¨ç½®é»˜èªåƒæ•¸ï¼Œå¯èƒ½éœ€è¦æ›´æ”¹å…¶ä»–åƒæ•¸ã€‚\n" -"情æ³ã€‚\n" -"範åœå¤§ç´„在 -2 至 2 間。乘以“比例â€å¯å¾—出節點的å移值。" +"用於移動é©åˆçš„低地生æˆå€åŸŸé è¿‘ (0, 0)。\n" +"é è¨å€¼é©åˆæ›¼å¾·åšé›†åˆï¼Œè‹¥è¦ç”¨æ–¼æœ±åˆ©äºžé›†åˆå‰‡å¿…é ˆä¿®æ”¹ã€‚\n" +"範åœå¤§ç´„在 -2 至 2 間。乘以節點的å移值。" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "(X,Y,Z) scale of fractal in nodes.\n" "Actual fractal size will be 2 to 3 times larger.\n" @@ -2039,13 +2042,6 @@ msgid "" "Default is for a vertically-squashed shape suitable for\n" "an island, set all 3 numbers equal for the raw shape." msgstr "" -"節點的分形幾何的(X,Y,Z)比例。\n" -"實際分形大å°å°‡æ˜¯2到3å€ã€‚\n" -"這些數å—å¯ä»¥åšå¾—很大,分形確實。\n" -"ä¸å¿…驿‡‰ä¸–界。\n" -"å¢žåŠ é€™äº›ä»¥â€œæ”¾å¤§â€åˆ°åˆ†å½¢çš„細節。\n" -"默èªç‚ºé©åˆæ–¼åž‚直壓æ‰çš„形狀。\n" -"一個島,將所有3個數å—è¨ç½®ç‚ºåŽŸå§‹å½¢ç‹€ç›¸ç‰ã€‚" #: src/settings_translation_file.cpp msgid "2D noise that controls the shape/size of ridged mountains." @@ -2109,10 +2105,6 @@ msgid "" "to be adjusted, as floatland tapering functions best when this noise has\n" "a value range of approximately -2.0 to 2.0." msgstr "" -"3D噪è²å®šç¾©äº†æµ®åœ°çµæ§‹ã€‚\n" -"如果更改為默èªå€¼ï¼Œå‰‡å¯èƒ½éœ€è¦å™ªè²â€œæ¯”例â€ï¼ˆé»˜èªå€¼ç‚º0.7)。\n" -"需è¦é€²è¡Œèª¿æ•´ï¼Œå› 為當噪音é”到。\n" -"值範åœç´„為-2.0到2.0。" #: src/settings_translation_file.cpp msgid "3D noise defining structure of river canyon walls." @@ -2236,11 +2228,6 @@ msgid "" "Value = 2.0 (can be higher depending on 'mgv7_np_floatland', always test\n" "to be sure) creates a solid floatland layer." msgstr "" -"調整浮游性地層的密度.\n" -"å¢žåŠ å€¼ä»¥å¢žåŠ å¯†åº¦. å¯ä»¥æ˜¯æ£éºµé‚„æ˜¯è² éºµçš„ã€‚\n" -"價值=0.0:50% oçš„é«”ç©æ˜¯æµ®éŠåœ°ã€‚\n" -"值2.0(å¯ä»¥æ›´é«˜ï¼Œå–決於“mgv7_np_floatlandâ€ï¼Œç¸½æ˜¯æ¸¬è©¦ã€‚\n" -"è‚¯å®šï¼‰å‰µé€ ä¸€å€‹å›ºé«”æµ®æ¸¸æ€§åœ°å±¤ã€‚" #: src/settings_translation_file.cpp msgid "Advanced" @@ -2254,11 +2241,6 @@ msgid "" "This only has significant effect on daylight and artificial\n" "light, it has very little effect on natural night light." msgstr "" -"通éŽå°å…¶æ‡‰ç”¨â€œgamma correctionâ€ä¾†æ›´æ”¹å…‰æ›²ç·šã€‚\n" -"較高的值å¯ä½¿ä¸ç‰å’Œè¼ƒä½Žçš„光照水平更亮。\n" -"值“ 1.0â€ä½¿å…‰æ›²ç·šä¿æŒä¸è®Šã€‚\n" -"é€™åƒ…å°æ—¥å…‰å’Œäººé€ 光有é‡å¤§å½±éŸ¿ã€‚\n" -"光線,å°è‡ªç„¶çš„夜光影響很å°ã€‚" #: src/settings_translation_file.cpp msgid "Always fly and fast" @@ -2270,7 +2252,7 @@ msgstr "環境é®è”½å…‰" #: src/settings_translation_file.cpp msgid "Amount of messages a player may send per 10 seconds." -msgstr "çŽ©å®¶æ¯ 10 秒能傳é€çš„訊æ¯é‡ã€‚" +msgstr "çŽ©å®¶æ¯ 10 秒能傳é€çš„訊æ¯é‡" #: src/settings_translation_file.cpp msgid "Amplifies the valleys." @@ -2310,15 +2292,14 @@ msgstr "慣性手臂" msgid "" "Arm inertia, gives a more realistic movement of\n" "the arm when the camera moves." -msgstr "" -"æ‰‹è‡‚æ…£æ€§ï¼Œä½¿å‹•ä½œæ›´åŠ é€¼çœŸã€‚\n" -"相機移動時的手臂。" +msgstr "慣性手臂,當相機移動時æä¾›æ›´åŠ çœŸå¯¦çš„æ‰‹è‡‚é‹å‹•。" #: src/settings_translation_file.cpp msgid "Ask to reconnect after crash" msgstr "è©¢å•æ˜¯å¦åœ¨ç•¶æ©Ÿå¾Œé‡æ–°é€£ç·š" #: src/settings_translation_file.cpp +#, fuzzy msgid "" "At this distance the server will aggressively optimize which blocks are sent " "to\n" @@ -2332,14 +2313,11 @@ msgid "" "optimization.\n" "Stated in mapblocks (16 nodes)." msgstr "" -"在這樣的è·é›¢ä¸‹ï¼Œä¼ºæœå™¨å°‡ç©æ¥µæœ€ä½³åŒ–。\n" -"那些è¦å‚³é€çµ¦ç”¨æˆ¶ç«¯çš„æ–¹å¡Šã€‚\n" -"較å°çš„值å¯èƒ½æœƒæå‡æ•ˆèƒ½ã€‚\n" -"但代價是一些å¯è¦‹çš„彩ç¾å•題。\n" -"(有一些在水ä¸èˆ‡æ´žç©´ä¸çš„æ–¹å¡Šå°‡ä¸æœƒè¢«å½©ç¾ï¼Œ\n" -"ä»¥åŠæœ‰æ™‚在陸地上)。\n" +"在這樣的è·é›¢ä¸‹ï¼Œä¼ºæœå™¨å°‡ç©æ¥µæœ€ä½³åŒ–那些è¦å‚³é€çµ¦ç”¨æˆ¶ç«¯çš„æ–¹å¡Šã€‚\n" +"較å°çš„值å¯èƒ½æœƒæå‡æ•ˆèƒ½ï¼Œä½†ä»£åƒ¹æ˜¯ä¸€äº›å¯è¦‹çš„彩ç¾å•題。\n" +"(有一些在水ä¸èˆ‡æ´žç©´ä¸çš„æ–¹å¡Šå°‡ä¸æœƒè¢«å½©ç¾ï¼Œä»¥åŠæœ‰æ™‚在陸地上)\n" "å°‡æ¤å€¼è¨å®šç‚ºå¤§æ–¼ max_block_send_distance 將會åœç”¨é€™å€‹æœ€ä½³åŒ–。\n" -"在地圖å€å¡Šä¸é¡¯ç¤ºï¼ˆ16 個節點)。" +"在地圖å€å¡Šä¸é¡¯ç¤ºï¼ˆ16 個節點)" #: src/settings_translation_file.cpp #, fuzzy @@ -2347,9 +2325,8 @@ msgid "Automatic forward key" msgstr "å‰é€²éµ" #: src/settings_translation_file.cpp -#, fuzzy msgid "Automatically jump up single-node obstacles." -msgstr "自動跳éŽå–®ç¯€é»žéšœç¤™ç‰©ã€‚" +msgstr "" #: src/settings_translation_file.cpp #, fuzzy @@ -2361,9 +2338,8 @@ msgid "Autosave screen size" msgstr "自動儲å˜è¦–窗大å°" #: src/settings_translation_file.cpp -#, fuzzy msgid "Autoscaling mode" -msgstr "自動縮放模å¼" +msgstr "" #: src/settings_translation_file.cpp msgid "Backward key" @@ -2375,8 +2351,9 @@ msgid "Base ground level" msgstr "地é¢é«˜åº¦" #: src/settings_translation_file.cpp +#, fuzzy msgid "Base terrain height." -msgstr "基礎地形高度。" +msgstr "基礎地形高度" #: src/settings_translation_file.cpp msgid "Basic" @@ -2449,17 +2426,12 @@ msgid "Builtin" msgstr "內建" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Camera 'near clipping plane' distance in nodes, between 0 and 0.25\n" "Only works on GLES platforms. Most users will not need to change this.\n" "Increasing can reduce artifacting on weaker GPUs.\n" "0.1 = Default, 0.25 = Good value for weaker tablets." msgstr "" -"相機在節點附近的“剪切平é¢é™„è¿‘â€è·é›¢ï¼Œä»‹æ–¼0到0.25之間\n" -"僅é©ç”¨æ–¼GLESå¹³å°ã€‚ 大多數用戶ä¸éœ€è¦æ›´æ”¹æ¤è¨ç½®ã€‚\n" -"å¢žåŠ å¯ä»¥æ¸›å°‘較弱GPU上的å½å½±ã€‚\n" -"0.1 =默èªå€¼ï¼Œ0.25 =å°æ–¼è¼ƒå¼±çš„å¹³æ¿é›»è…¦ä¾†èªªæ˜¯å¥½çš„值。" #: src/settings_translation_file.cpp msgid "Camera smoothing" @@ -2523,8 +2495,6 @@ msgid "" "Center of light curve boost range.\n" "Where 0.0 is minimum light level, 1.0 is maximum light level." msgstr "" -"光線曲線推進範åœä¸å¿ƒã€‚\n" -"0.0是最低光水平, 1.0是最高光水平." #: src/settings_translation_file.cpp #, fuzzy @@ -2598,9 +2568,8 @@ msgid "Client side modding restrictions" msgstr "用戶端修改" #: src/settings_translation_file.cpp -#, fuzzy msgid "Client side node lookup range restriction" -msgstr "客戶端節點查找範åœé™åˆ¶" +msgstr "" #: src/settings_translation_file.cpp msgid "Climbing speed" @@ -2627,7 +2596,6 @@ msgid "Colored fog" msgstr "彩色迷霧" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Comma-separated list of flags to hide in the content repository.\n" "\"nonfree\" can be used to hide packages which do not qualify as 'free " @@ -2637,12 +2605,6 @@ msgid "" "These flags are independent from Minetest versions,\n" "so see a full list at https://content.minetest.net/help/content_flags/" msgstr "" -"以逗號分隔的標誌列表,以隱è—在內容å˜å„²åº«ä¸ã€‚\n" -"“ nonfreeâ€å¯ç”¨æ–¼éš±è—ä¸ç¬¦åˆâ€œå…費軟件â€è³‡æ ¼çš„軟件包,\n" -"由自由軟件基金會定義。\n" -"您還å¯ä»¥æŒ‡å®šå…§å®¹åˆ†ç´šã€‚\n" -"這些標誌ç¨ç«‹æ–¼Minetest版本,\n" -"å› æ¤è«‹è¨ªå•https://content.minetest.net/help/content_flags/查看完整列表" #: src/settings_translation_file.cpp msgid "" @@ -2689,9 +2651,8 @@ msgid "Console height" msgstr "終端機高度" #: src/settings_translation_file.cpp -#, fuzzy msgid "ContentDB Flag Blacklist" -msgstr "ContentDB標誌黑å單列表" +msgstr "" #: src/settings_translation_file.cpp msgid "ContentDB Max Concurrent Downloads" @@ -2717,18 +2678,18 @@ msgid "Controls" msgstr "控制" #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Controls length of day/night cycle.\n" "Examples:\n" "72 = 20min, 360 = 4min, 1 = 24hour, 0 = day/night/whatever stays unchanged." msgstr "" "控制日ï¼å¤œå¾ªç’°çš„長度。\n" -"範例:\n" -"72 = 20分é˜ï¼Œ360 = 4分é˜ï¼Œ1 = 24å°æ™‚,0 = æ—¥ï¼å¤œï¼ä¸€åˆ‡ä¿æŒä¸è®Šã€‚" +"範例:72 = 20分é˜ï¼Œ360 = 4分é˜ï¼Œ1 = 24å°æ™‚,0 = æ—¥ï¼å¤œï¼ä¸€åˆ‡ä¿æŒä¸è®Šã€‚" #: src/settings_translation_file.cpp msgid "Controls sinking speed in liquid." -msgstr "控制液體的下沉速度。" +msgstr "" #: src/settings_translation_file.cpp msgid "Controls steepness/depth of lake depressions." @@ -2739,15 +2700,11 @@ msgid "Controls steepness/height of hills." msgstr "æŽ§åˆ¶å±±ä¸˜çš„é™¡åº¦ï¼æ·±åº¦ã€‚" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Controls width of tunnels, a smaller value creates wider tunnels.\n" "Value >= 10.0 completely disables generation of tunnels and avoids the\n" "intensive noise calculations." msgstr "" -"控制隧é“的寬度,較å°çš„值將創建較寬的隧é“。\n" -"值> = 10.0完全ç¦ç”¨äº†éš§é“的生æˆï¼Œä¸¦é¿å…了\n" -"密集的噪è²è¨ˆç®—。" #: src/settings_translation_file.cpp msgid "Crash message" @@ -2805,7 +2762,7 @@ msgstr "éŸ³é‡æ¸›å°‘éµ" #: src/settings_translation_file.cpp msgid "Decrease this to increase liquid resistance to movement." -msgstr "æ¸›å°æ¤å€¼å¯å¢žåŠ æ¶²é«”çš„é‹å‹•阻力。" +msgstr "" #: src/settings_translation_file.cpp msgid "Dedicated server step" @@ -3017,8 +2974,6 @@ msgid "" "Enable IPv6 support (for both client and server).\n" "Required for IPv6 connections to work at all." msgstr "" -"啟用IPv6支æŒï¼ˆé‡å°å®¢æˆ¶ç«¯å’Œæœå‹™å™¨ï¼‰ã€‚\n" -"IPv6連接需è¦å®ƒã€‚" #: src/settings_translation_file.cpp msgid "" @@ -3033,7 +2988,8 @@ msgid "Enable console window" msgstr "啟用終端機視窗" #: src/settings_translation_file.cpp -msgid "Enable creative mode for new created maps." +#, fuzzy +msgid "Enable creative mode for all players" msgstr "ç‚ºæ–°å»ºç«‹çš„åœ°åœ–å•Ÿç”¨å‰µé€ æ¨¡å¼ã€‚" #: src/settings_translation_file.cpp @@ -3042,8 +2998,9 @@ msgid "Enable joysticks" msgstr "å•Ÿç”¨æ–æ¡¿" #: src/settings_translation_file.cpp +#, fuzzy msgid "Enable mod channels support." -msgstr "啟用Mod Channels支æŒã€‚" +msgstr "啟用 mod 安全性" #: src/settings_translation_file.cpp msgid "Enable mod security" @@ -3059,15 +3016,13 @@ msgstr "啟用隨機使用者輸入(僅供測試使用)。" #: src/settings_translation_file.cpp msgid "Enable register confirmation" -msgstr "啟用註冊確èª" +msgstr "" #: src/settings_translation_file.cpp msgid "" "Enable register confirmation when connecting to server.\n" "If disabled, new account will be registered automatically." msgstr "" -"連接到æœå‹™å™¨æ™‚啟用註冊確èªã€‚\n" -"如果ç¦ç”¨ï¼Œæ–°å¸³æˆ¶å°‡è‡ªå‹•註冊。" #: src/settings_translation_file.cpp msgid "" @@ -3105,8 +3060,6 @@ msgid "" "Enable vertex buffer objects.\n" "This should greatly improve graphics performance." msgstr "" -"啟用最好圖形緩è¡.\n" -"這將大大æé«˜åœ–形性能。" #: src/settings_translation_file.cpp msgid "" @@ -3128,17 +3081,12 @@ msgstr "" "ç•¶ bind_address 被è¨å®šæ™‚將會被忽略。" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Enables Hable's 'Uncharted 2' filmic tone mapping.\n" "Simulates the tone curve of photographic film and how this approximates the\n" "appearance of high dynamic range images. Mid-range contrast is slightly\n" "enhanced, highlights and shadows are gradually compressed." msgstr "" -"啟用Hable的“Uncharted 2â€é›»å½±è‰²èª¿æ˜ 射。\n" -"模擬æ”å½±è† ç‰‡çš„è‰²èª¿æ›²ç·šï¼Œ\n" -"以åŠå®ƒå¦‚何近似高動態範åœåœ–åƒçš„外觀。\n" -"䏿ª”å°æ¯”åº¦ç•¥å¾®å¢žå¼·ï¼Œé«˜å…‰å’Œé™°å½±é€æ¼¸å£“縮。" #: src/settings_translation_file.cpp msgid "Enables animation of inventory items." @@ -3159,10 +3107,6 @@ msgid "" "sound controls will be non-functional.\n" "Changing this setting requires a restart." msgstr "" -"啟用è²éŸ³ç³»çµ±ã€‚\n" -"如果ç¦ç”¨ï¼Œå‰‡å°‡å®Œå…¨ç¦ç”¨æ‰€æœ‰è²éŸ³ä»¥åŠéŠæˆ²ä¸çš„æ‰€æœ‰è²éŸ³ã€‚\n" -"è²éŸ³æŽ§ä»¶å°‡ä¸èµ·ä½œç”¨ã€‚\n" -"更改æ¤è¨ç½®éœ€è¦é‡æ–°å•Ÿå‹•。" #: src/settings_translation_file.cpp msgid "Engine profiling data print interval" @@ -3181,12 +3125,6 @@ msgid "" "Values < 1.0 (for example 0.25) create a more defined surface level with\n" "flatter lowlands, suitable for a solid floatland layer." msgstr "" -"逿¼¸ç¸®å°çš„æŒ‡æ•¸ã€‚ æ›´æ”¹é€æ¼¸è®Šç´°çš„行為。\n" -"值= 1.0會創建å‡å‹»çš„線性éŒåº¦ã€‚\n" -"值> 1.0會創建é©åˆæ–¼é»˜èªåˆ†éš”的平滑éŒå½¢\n" -"浮地。\n" -"值<1.0(例如0.25)å¯ä½¿ç”¨\n" -"å¹³å¦çš„低地,é©ç”¨æ–¼å …固的浮éŠåœ°å±¤ã€‚" #: src/settings_translation_file.cpp #, fuzzy @@ -3256,13 +3194,13 @@ msgid "Field of view in degrees." msgstr "以度計算的視野。" #: src/settings_translation_file.cpp +#, fuzzy msgid "" "File in client/serverlist/ that contains your favorite servers displayed in " "the\n" "Multiplayer Tab." msgstr "" -"在 用戶端/伺æœå™¨æ¸…å–®/ ä¸çš„æª”案包å«äº†é¡¯ç¤ºåœ¨ã€‚\n" -"å¤šäººéŠæˆ²åˆ†é 䏿‚¨æœ€æ„›çš„伺æœå™¨ã€‚" +"在 用戶端/伺æœå™¨æ¸…å–®/ ä¸çš„æª”案包å«äº†é¡¯ç¤ºåœ¨å¤šäººéŠæˆ²åˆ†é 䏿‚¨æœ€æ„›çš„伺æœå™¨ã€‚" #: src/settings_translation_file.cpp #, fuzzy @@ -3307,9 +3245,8 @@ msgid "Fixed map seed" msgstr "固定的地圖種å" #: src/settings_translation_file.cpp -#, fuzzy msgid "Fixed virtual joystick" -msgstr "å›ºå®šè™›æ“¬éŠæˆ²æ¡¿" +msgstr "" #: src/settings_translation_file.cpp #, fuzzy @@ -3368,11 +3305,11 @@ msgstr "霧氣切æ›éµ" #: src/settings_translation_file.cpp msgid "Font bold by default" -msgstr "å—體默èªç‚ºç²—é«”" +msgstr "" #: src/settings_translation_file.cpp msgid "Font italic by default" -msgstr "å—體默èªç‚ºæ–œé«”" +msgstr "" #: src/settings_translation_file.cpp msgid "Font shadow" @@ -3387,28 +3324,22 @@ msgid "Font size" msgstr "å—型大å°" #: src/settings_translation_file.cpp -#, fuzzy msgid "Font size of the default font in point (pt)." -msgstr "默èªå—體的å—體大å°ï¼Œä»¥(pt)為單ä½ã€‚" +msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Font size of the fallback font in point (pt)." -msgstr "後備å—體的å—體大å°ï¼Œä»¥(pt)為單ä½ã€‚" +msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Font size of the monospace font in point (pt)." -msgstr "以点为å•ä½çš„å•ç©ºæ ¼å—体的å—体大å°ï¼Œä»¥(pt)為單ä½ã€‚" +msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Font size of the recent chat text and chat prompt in point (pt).\n" "Value 0 will use the default font size." msgstr "" -"最近的èŠå¤©æ–‡æœ¬å’ŒèŠå¤©æç¤ºçš„å—體大å°,以(pt)為單ä½ã€‚\n" -"值0將使用默èªå—體大å°ã€‚" #: src/settings_translation_file.cpp msgid "" @@ -3425,19 +3356,19 @@ msgstr "èž¢å¹•æˆªåœ–çš„æ ¼å¼ã€‚" #: src/settings_translation_file.cpp msgid "Formspec Default Background Color" -msgstr "Formspec默èªèƒŒæ™¯è‰²" +msgstr "" #: src/settings_translation_file.cpp msgid "Formspec Default Background Opacity" -msgstr "Formspec默èªèƒŒæ™¯ä¸é€æ˜Žåº¦" +msgstr "" #: src/settings_translation_file.cpp msgid "Formspec Full-Screen Background Color" -msgstr "Formspecå…¨å±èƒŒæ™¯è‰²" +msgstr "" #: src/settings_translation_file.cpp msgid "Formspec Full-Screen Background Opacity" -msgstr "Formspecå…¨å±èƒŒæ™¯ä¸é€æ˜Žåº¦" +msgstr "" #: src/settings_translation_file.cpp #, fuzzy @@ -3492,7 +3423,6 @@ msgid "" msgstr "è¦æŠŠå¤šé çš„å€å¡Šé€åˆ°ç”¨æˆ¶ç«¯ï¼Œä»¥åœ°åœ–å€å¡Šè¨ˆç®—(16 個節點)。" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "From how far clients know about objects, stated in mapblocks (16 nodes).\n" "\n" @@ -3500,11 +3430,6 @@ msgid "" "to maintain active objects up to this distance in the direction the\n" "player is looking. (This can avoid mobs suddenly disappearing from view)" msgstr "" -"客戶端了解å°è±¡çš„程度,以mapblocks(16個節點)表示。\n" -"\n" -"å°‡æ¤å€¼è¨ç½®ç‚ºå¤§æ–¼active_block_range也會導致æœå‹™å™¨ã€‚\n" -"使活動物體在以下方å‘ä¸Šä¿æŒæ¤è·é›¢ã€‚\n" -"玩家æ£åœ¨å°‹æ‰¾ã€‚ (這å¯ä»¥é¿å…å°æ€ªçªç„¶å¾žè¦–ç·šä¸æ¶ˆå¤±ï¼‰" #: src/settings_translation_file.cpp msgid "Full screen" @@ -3542,26 +3467,22 @@ msgid "" "and junglegrass, in all other mapgens this flag controls all decorations." msgstr "" "全域地圖產生屬性。\n" -"在 Mapgen v6 ä¸ï¼Œã€Œdecorationsã€æ——標控制所有除了樹木。\n" +"在 Mapgen v6 ä¸ï¼Œã€Œdecorationsã€æ——標控制所有除了樹木\n" "èˆ‡å¢æž—以外的è£é£¾ï¼Œåœ¨å…¶ä»–所有的 mapgen ä¸ï¼Œé€™å€‹æ——標控制所有è£é£¾ã€‚\n" -"未在旗標å—䏲䏿Œ‡å®šçš„æ——æ¨™å°‡ä¸æœƒè‡ªé è¨å€¼ä¿®æ”¹\n" -"以「noã€é–‹é 的旗標å—串將會用於明確的åœç”¨å®ƒå€‘" +"未在旗標å—䏲䏿Œ‡å®šçš„æ——æ¨™å°‡ä¸æœƒè‡ªé è¨å€¼ä¿®æ”¹ã€‚\n" +"以「noã€é–‹é 的旗標å—串將會用於明確的åœç”¨å®ƒå€‘。" #: src/settings_translation_file.cpp msgid "" "Gradient of light curve at maximum light level.\n" "Controls the contrast of the highest light levels." msgstr "" -"最大光水平下的光曲線漸變。\n" -"æŽ§åˆ¶æœ€é«˜äº®åº¦çš„å°æ¯”度。" #: src/settings_translation_file.cpp msgid "" "Gradient of light curve at minimum light level.\n" "Controls the contrast of the lowest light levels." msgstr "" -"最å°å…‰æ°´å¹³ä¸‹çš„光曲線漸變。\n" -"æŽ§åˆ¶æœ€ä½Žäº®åº¦çš„å°æ¯”度。" #: src/settings_translation_file.cpp msgid "Graphics" @@ -3675,24 +3596,18 @@ msgid "" "Horizontal acceleration in air when jumping or falling,\n" "in nodes per second per second." msgstr "" -"è·³èºæˆ–å¢œè½æ™‚空氣ä¸çš„æ°´å¹³åŠ é€Ÿåº¦ï¼Œ\n" -"以æ¯ç§’節點數為單ä½ã€‚" #: src/settings_translation_file.cpp msgid "" "Horizontal and vertical acceleration in fast mode,\n" "in nodes per second per second." msgstr "" -"快速模å¼ä¸‹çš„æ°´å¹³å’Œåž‚ç›´åŠ é€Ÿåº¦ï¼Œ\n" -"以æ¯ç§’節點數為單ä½ã€‚" #: src/settings_translation_file.cpp msgid "" "Horizontal and vertical acceleration on ground or when climbing,\n" "in nodes per second per second." msgstr "" -"åœ¨åœ°é¢æˆ–æ”€çˆ¬æ™‚çš„æ°´å¹³å’Œåž‚ç›´åŠ é€Ÿåº¦ï¼Œ\n" -"以æ¯ç§’節點數為單ä½ã€‚" #: src/settings_translation_file.cpp msgid "Hotbar next key" @@ -3833,7 +3748,7 @@ msgstr "å¿«æ·åˆ—第 9 個槽的按éµ" #: src/settings_translation_file.cpp #, fuzzy msgid "How deep to make rivers." -msgstr "æ²³æµæ·±åº¦ã€‚" +msgstr "æ²³æµå¤šæ·±" #: src/settings_translation_file.cpp msgid "" @@ -3841,9 +3756,6 @@ msgid "" "If negative, liquid waves will move backwards.\n" "Requires waving liquids to be enabled." msgstr "" -"液體波將移動多快。 Higher = faster。\n" -"å¦‚æžœç‚ºè² ï¼Œå‰‡æ¶²é«”æ³¢å°‡å‘後移動。\n" -"需è¦å•Ÿç”¨æ³¢ç‹€æ¶²é«”。" #: src/settings_translation_file.cpp msgid "" @@ -3856,7 +3768,7 @@ msgstr "" #: src/settings_translation_file.cpp #, fuzzy msgid "How wide to make rivers." -msgstr "æ²³æµå¯¬åº¦ã€‚" +msgstr "æ²³æµå¤šå¯¬" #: src/settings_translation_file.cpp msgid "Humidity blend noise" @@ -3892,9 +3804,7 @@ msgid "" "If disabled, \"special\" key is used to fly fast if both fly and fast mode " "are\n" "enabled." -msgstr "" -"è‹¥åœç”¨ï¼Œåœ¨é£›è¡Œèˆ‡å¿«é€Ÿæ¨¡å¼çš†å•Ÿç”¨æ™‚,\n" -"「specialã€éµå°‡ç”¨æ–¼å¿«é€Ÿé£›è¡Œã€‚" +msgstr "è‹¥åœç”¨ï¼Œåœ¨é£›è¡Œèˆ‡å¿«é€Ÿæ¨¡å¼çš†å•Ÿç”¨æ™‚,「使用ã€éµå°‡ç”¨æ–¼å¿«é€Ÿé£›è¡Œã€‚" #: src/settings_translation_file.cpp msgid "" @@ -3924,9 +3834,7 @@ msgid "" "If enabled, \"special\" key instead of \"sneak\" key is used for climbing " "down and\n" "descending." -msgstr "" -"若啟用,å‘下爬與下é™å°‡ä½¿ç”¨ã€‚\n" -"「specialã€éµè€Œéžã€Œsneakã€éµã€‚" +msgstr "若啟用,å‘下爬與下é™å°‡ä½¿ç”¨ã€Œä½¿ç”¨ã€éµè€Œéžã€Œæ½›è¡Œã€éµã€‚" #: src/settings_translation_file.cpp msgid "" @@ -3949,50 +3857,38 @@ msgstr "" "åªåœ¨æ‚¨çŸ¥é“您在幹嘛時æ‰å•Ÿç”¨é€™å€‹é¸é …。" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "If enabled, makes move directions relative to the player's pitch when flying " "or swimming." msgstr "" -"如果啟用,則在飛行或游泳時。\n" -"ç›¸å°æ–¼çŽ©å®¶çš„ä¿¯ä»°æ–¹å‘åšå‡ºç§»å‹•æ–¹å‘。" #: src/settings_translation_file.cpp msgid "If enabled, new players cannot join with an empty password." msgstr "è‹¥å•Ÿç”¨ï¼Œæ–°çŽ©å®¶å°‡ç„¡æ³•ä»¥ç©ºå¯†ç¢¼åŠ å…¥ã€‚" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "If enabled, you can place blocks at the position (feet + eye level) where " "you stand.\n" "This is helpful when working with nodeboxes in small areas." msgstr "" -"若啟用,您å¯ä»¥åœ¨æ‚¨ç«™ç«‹çš„ä½ç½®ï¼ˆè…³èˆ‡çœ¼ç›çš„高度)放置方塊。\n" -"當在å°å€åŸŸè£¡èˆ‡ç¯€é»žç›’一åŒå·¥ä½œæ™‚éžå¸¸æœ‰ç”¨ã€‚" +"若啟用,您å¯ä»¥åœ¨æ‚¨ç«™ç«‹çš„ä½ç½®ï¼ˆè…³èˆ‡çœ¼ç›çš„高度)放置方塊。當在å°å€åŸŸè£¡èˆ‡ç¯€é»žç›’" +"一åŒå·¥ä½œæ™‚éžå¸¸æœ‰ç”¨ã€‚" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "If the CSM restriction for node range is enabled, get_node calls are " "limited\n" "to this distance from the player to the node." msgstr "" -"如果啟用了節點範åœçš„CSMé™åˆ¶ï¼Œå‰‡get_node調用將å—到é™åˆ¶\n" -"從玩家到節點的這個è·é›¢ã€‚" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "If the file size of debug.txt exceeds the number of megabytes specified in\n" "this setting when it is opened, the file is moved to debug.txt.1,\n" "deleting an older debug.txt.1 if it exists.\n" "debug.txt is only moved if this setting is positive." msgstr "" -"如果debug.txt的文件大å°è¶…éŽåœ¨ä¸æŒ‡å®šçš„å…†å—節數\n" -"打開æ¤è¨ç½®å¾Œï¼Œæ–‡ä»¶å°‡ç§»è‡³debug.txt.1,\n" -"刪除較舊的debug.txt.1(如果å˜åœ¨ï¼‰ã€‚\n" -"僅當æ¤è¨ç½®ç‚ºæ£æ™‚ï¼Œæ‰æœƒç§»å‹•debug.txt。" #: src/settings_translation_file.cpp msgid "If this is set, players will always (re)spawn at the given position." @@ -4024,7 +3920,7 @@ msgstr "æé«˜éŸ³é‡éµ" #: src/settings_translation_file.cpp msgid "Initial vertical speed when jumping, in nodes per second." -msgstr "è·³èºæ™‚çš„åˆå§‹åž‚直速度,以æ¯ç§’節點數為單ä½ã€‚" +msgstr "" #: src/settings_translation_file.cpp msgid "" @@ -4107,17 +4003,12 @@ msgid "Iterations" msgstr "è¿ä»£" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Iterations of the recursive function.\n" "Increasing this increases the amount of fine detail, but also\n" "increases processing load.\n" "At iterations = 20 this mapgen has a similar load to mapgen V7." msgstr "" -"éžæ¸å‡½æ•¸çš„è¿ä»£ã€‚\n" -"å¢žåŠ å®ƒæœƒå¢žåŠ ç´°ç¯€çš„æ•¸é‡ï¼Œè€Œä¸”。\n" -"å¢žåŠ è™•ç†è² è·ã€‚\n" -"è¿ä»£æ¬¡æ•¸iterations = 20時,æ¤mapgençš„è² è¼‰èˆ‡mapgen V7相似。" #: src/settings_translation_file.cpp msgid "Joystick ID" @@ -4142,6 +4033,7 @@ msgid "Joystick type" msgstr "æ–æ¡¿é¡žåž‹" #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Julia set only.\n" "W component of hypercomplex constant.\n" @@ -4149,11 +4041,9 @@ msgid "" "Has no effect on 3D fractals.\n" "Range roughly -2 to 2." msgstr "" -"è´è¶åªè¨ç½®è´è¶ã€‚\n" -"超複雜常數的W分é‡ã€‚\n" -"改變分形的形狀。\n" -"å°3D分形沒有影響。\n" -"範åœç´„為-2至2。" +"僅朱利亞集åˆï¼šå¯äº¤æ›è¶…複數的 W å…ƒç´ æ±ºå®šäº† 朱利亞形狀。\n" +"在 3D 碎形上沒有效果。\n" +"範åœç´„在 -2 至 2 間。" #: src/settings_translation_file.cpp #, fuzzy @@ -4163,10 +4053,9 @@ msgid "" "Alters the shape of the fractal.\n" "Range roughly -2 to 2." msgstr "" -"è´è¶åªè¨ç½®è´è¶ã€‚\n" -"超複雜常數的X分é‡ã€‚\n" -"改變分形的形狀。\n" -"範åœç´„為-2至2。" +"僅朱利亞集åˆï¼šå¯äº¤æ›è¶…複數的 X å…ƒç´ æ±ºå®šäº† 朱利亞形狀。\n" +"在 3D 碎形上沒有效果。\n" +"範åœç´„在 -2 至 2 間。" #: src/settings_translation_file.cpp #, fuzzy @@ -4176,8 +4065,7 @@ msgid "" "Alters the shape of the fractal.\n" "Range roughly -2 to 2." msgstr "" -"è´è¶åªè¨ç½®è´è¶\n" -"å¯äº¤æ›è¶…複數的 Y å…ƒç´ æ±ºå®šäº† è´è¶å½¢ç‹€ã€‚\n" +"僅朱利亞集åˆï¼šå¯äº¤æ›è¶…複數的 Y å…ƒç´ æ±ºå®šäº† 朱利亞形狀。\n" "在 3D 碎形上沒有效果。\n" "範åœç´„在 -2 至 2 間。" @@ -4189,8 +4077,7 @@ msgid "" "Alters the shape of the fractal.\n" "Range roughly -2 to 2." msgstr "" -"è´è¶è¨ç½®ã€‚\n" -"å¯äº¤æ›è¶…複數的 Z å…ƒç´ æ±ºå®šäº† è´è¶å½¢ç‹€ã€‚\n" +"僅朱利亞集åˆï¼šå¯äº¤æ›è¶…複數的 Z å…ƒç´ æ±ºå®šäº† 朱利亞形狀。\n" "在 3D 碎形上沒有效果。\n" "範åœç´„在 -2 至 2 間。" @@ -4308,7 +4195,6 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "將玩家往後方移動的按éµã€‚\n" -"åœ¨æ´»èºæ™‚,還會ç¦ç”¨è‡ªå‹•。\n" "請見 http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" @@ -4938,9 +4824,8 @@ msgstr "" "html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp -#, fuzzy msgid "Kick players who sent more than X messages per 10 seconds." -msgstr "踢æ¯10秒發é€è¶…éŽXæ¢ä¿¡æ¯çš„玩家。" +msgstr "" #: src/settings_translation_file.cpp msgid "Lake steepness" @@ -4960,11 +4845,11 @@ msgstr "大型洞穴深度" #: src/settings_translation_file.cpp msgid "Large cave maximum number" -msgstr "大洞穴最大數é‡" +msgstr "" #: src/settings_translation_file.cpp msgid "Large cave minimum number" -msgstr "å¤§æ´žç©´æœ€å°æ•¸é‡" +msgstr "" #: src/settings_translation_file.cpp msgid "Large cave proportion flooded" @@ -5000,9 +4885,7 @@ msgid "" "Length of a server tick and the interval at which objects are generally " "updated over\n" "network." -msgstr "" -"伺æœå™¨ tick 的長度與相關物件的間隔,\n" -"通常é€éŽç¶²è·¯æ›´æ–°ã€‚" +msgstr "伺æœå™¨ tick 的長度與相關物件的間隔通常é€éŽç¶²è·¯æ›´æ–°ã€‚" #: src/settings_translation_file.cpp #, fuzzy @@ -5049,28 +4932,27 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Light curve boost" -msgstr "光曲線增強" +msgstr "" #: src/settings_translation_file.cpp msgid "Light curve boost center" -msgstr "光曲線æå‡ä¸å¿ƒ" +msgstr "" #: src/settings_translation_file.cpp msgid "Light curve boost spread" -msgstr "光曲線增強擴散" +msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Light curve gamma" -msgstr "光線曲線伽瑪" +msgstr "" #: src/settings_translation_file.cpp msgid "Light curve high gradient" -msgstr "光曲線高漸變度" +msgstr "" #: src/settings_translation_file.cpp msgid "Light curve low gradient" -msgstr "光曲線低漸變度" +msgstr "" #: src/settings_translation_file.cpp msgid "" @@ -5182,17 +5064,19 @@ msgid "Map directory" msgstr "地圖目錄" #: src/settings_translation_file.cpp -#, fuzzy msgid "Map generation attributes specific to Mapgen Carpathian." -msgstr "Mapgen Carpathian特有的属性地图生æˆã€‚" +msgstr "" #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Map generation attributes specific to Mapgen Flat.\n" "Occasional lakes and hills can be added to the flat world." msgstr "" -"專用於 Mapgen Flat 的地圖生æˆå±¬æ€§ã€‚\n" -"å¯èƒ½æœƒæœ‰å°‘數的湖泊或是丘陵會在æ‰å¹³çš„世界ä¸ç”Ÿæˆã€‚" +"專用於 Mapgen flat 的地圖生æˆå±¬æ€§ã€‚\n" +"å¯èƒ½æœƒæœ‰å°‘數的湖泊或是丘陵會在æ‰å¹³çš„世界ä¸ç”Ÿæˆã€‚\n" +"未在旗標å—䏲䏿Œ‡å®šçš„æ——æ¨™å°‡ä¸æœƒè‡ªé è¨å€¼ä¿®æ”¹ã€‚\n" +"以「noã€é–‹é 的旗標å—串將會用於明確的åœç”¨å®ƒå€‘。" #: src/settings_translation_file.cpp #, fuzzy @@ -5201,12 +5085,12 @@ msgid "" "'terrain' enables the generation of non-fractal terrain:\n" "ocean, islands and underground." msgstr "" -"Mapgen Fractal特有的地圖生æˆå±¬æ€§ã€‚\n" -"“terrainâ€å¯ç”Ÿæˆéžå¹¾ä½•地形:\n" -"海洋,島嶼和地下。" +"專用於 Mapgen flat 的地圖生æˆå±¬æ€§ã€‚\n" +"å¯èƒ½æœƒæœ‰å°‘數的湖泊或是丘陵會在æ‰å¹³çš„世界ä¸ç”Ÿæˆã€‚\n" +"未在旗標å—䏲䏿Œ‡å®šçš„æ——æ¨™å°‡ä¸æœƒè‡ªé è¨å€¼ä¿®æ”¹ã€‚\n" +"以「noã€é–‹é 的旗標å—串將會用於明確的åœç”¨å®ƒå€‘。" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Map generation attributes specific to Mapgen Valleys.\n" "'altitude_chill': Reduces heat with altitude.\n" @@ -5215,17 +5099,10 @@ msgid "" "to become shallower and occasionally dry.\n" "'altitude_dry': Reduces humidity with altitude." msgstr "" -"Mapgen Valleys 山谷特有的地圖生æˆå±¬æ€§ã€‚\n" -"'altitude_chill':隨高度é™ä½Žç†±é‡ã€‚\n" -"'humid_rivers'ï¼šå¢žåŠ æ²³æµå‘¨åœçš„æ¿•度。\n" -"'vary_river_depth'ï¼šå¦‚æžœå•Ÿç”¨ï¼Œä½Žæ¿•åº¦å’Œé«˜ç†±é‡æœƒå°Žè‡´æ²³æµ\n" -"變淺,å¶çˆ¾è®Šä¹¾ã€‚\n" -"'altitude_dry':隨著海拔高度é™ä½Žæ¿•度。" #: src/settings_translation_file.cpp -#, fuzzy msgid "Map generation attributes specific to Mapgen v5." -msgstr "Mapgen v5特有的地圖生æˆå±¬æ€§ã€‚" +msgstr "" #: src/settings_translation_file.cpp #, fuzzy @@ -5235,10 +5112,12 @@ msgid "" "When the 'snowbiomes' flag is enabled jungles are automatically enabled and\n" "the 'jungles' flag is ignored." msgstr "" -"Mapgen v6特有的地圖生æˆå±¬æ€§ã€‚\n" -"“ snowbiomesâ€æ¨™èªŒå•Ÿç”¨äº†æ–°çš„5個生物群è½ç³»çµ±ã€‚\n" -"啟用“ snowbiomesâ€æ¨™èªŒæ™‚ï¼Œæœƒè‡ªå‹•å•Ÿç”¨å¢æž—並。\n" -"â€œå¢æž—â€æ¨™èªŒå°‡è¢«å¿½ç•¥ã€‚" +"專用於 Mapgen v6 的地圖生æˆå±¬æ€§ã€‚\n" +"'snowbiomes' 旗標啟用了五個新的生態系。\n" +"ç•¶æ–°çš„ç”Ÿæ…‹ç³»å•Ÿç”¨æ™‚ï¼Œå¢æž—生態系會自動啟用,\n" +"而 'jungles' 會被忽略。\n" +"未在旗標å—䏲䏿Œ‡å®šçš„æ——æ¨™å°‡ä¸æœƒè‡ªé è¨å€¼ä¿®æ”¹ã€‚\n" +"以「noã€é–‹é 的旗標å—串將會用於明確的åœç”¨å®ƒå€‘。" #: src/settings_translation_file.cpp #, fuzzy @@ -5394,30 +5273,24 @@ msgstr "å¿«æ·åˆ—最大寬度" #: src/settings_translation_file.cpp msgid "Maximum limit of random number of large caves per mapchunk." -msgstr "æ¯å€‹åœ°åœ–塊的大洞穴隨機數的最大é™åˆ¶ã€‚" +msgstr "" #: src/settings_translation_file.cpp msgid "Maximum limit of random number of small caves per mapchunk." -msgstr "æ¯å€‹åœ°åœ–å¡Šéš¨æ©Ÿå°æ´žæ•¸çš„æœ€å¤§é™åˆ¶ã€‚" +msgstr "" #: src/settings_translation_file.cpp msgid "" "Maximum liquid resistance. Controls deceleration when entering liquid at\n" "high speed." msgstr "" -"最大液體阻力。控制進入液體時的減速\n" -"高速。" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Maximum number of blocks that are simultaneously sent per client.\n" "The maximum total count is calculated dynamically:\n" "max_total = ceil((#clients + max_users) * per_client / 4)" msgstr "" -"æ¯å€‹å®¢æˆ¶ç«¯åŒæ™‚發é€çš„æœ€å¤§å¡Šæ•¸ã€‚\n" -"最大總數是動態計算的:\n" -"max_total = ceil((#clients + max_users)* per_client / 4)" #: src/settings_translation_file.cpp msgid "Maximum number of blocks that can be queued for loading." @@ -5500,18 +5373,14 @@ msgid "Maximum simultaneous block sends per client" msgstr "æ¯å€‹ç”¨æˆ¶ç«¯æœ€å¤§åŒæ™‚傳é€å€å¡Šæ•¸" #: src/settings_translation_file.cpp -#, fuzzy msgid "Maximum size of the out chat queue" -msgstr "輸出èŠå¤©éšŠåˆ—的最大大å°" +msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Maximum size of the out chat queue.\n" "0 to disable queueing and -1 to make the queue size unlimited." msgstr "" -"輸出èŠå¤©éšŠåˆ—的最大大å°ã€‚\n" -"0表示ç¦ç”¨æŽ’隊,-1表示隊列大å°ä¸å—é™åˆ¶ã€‚" #: src/settings_translation_file.cpp msgid "Maximum time in ms a file download (e.g. a mod download) may take." @@ -5542,9 +5411,8 @@ msgid "Method used to highlight selected object." msgstr "用於çªé¡¯ç‰©ä»¶çš„æ–¹æ³•。" #: src/settings_translation_file.cpp -#, fuzzy msgid "Minimal level of logging to be written to chat." -msgstr "è¦å¯«å…¥èŠå¤©è¨˜éŒ„的最低級別。" +msgstr "" #: src/settings_translation_file.cpp msgid "Minimap" @@ -5560,11 +5428,11 @@ msgstr "è¿·ä½ åœ°åœ–æŽƒæé«˜åº¦" #: src/settings_translation_file.cpp msgid "Minimum limit of random number of large caves per mapchunk." -msgstr "æ¯å€‹åœ°åœ–塊的大洞穴隨機數的最å°é™åˆ¶ã€‚" +msgstr "" #: src/settings_translation_file.cpp msgid "Minimum limit of random number of small caves per mapchunk." -msgstr "æ¯å€‹åœ°åœ–å¡Šéš¨æ©Ÿå°æ´žæ•¸çš„æœ€å°é™åˆ¶ã€‚" +msgstr "" #: src/settings_translation_file.cpp #, fuzzy @@ -5576,9 +5444,8 @@ msgid "Mipmapping" msgstr "æ˜ å°„è²¼åœ–" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mod channels" -msgstr "Mod 清單" +msgstr "" #: src/settings_translation_file.cpp msgid "Modifies the size of the hudbar elements." @@ -5635,7 +5502,7 @@ msgstr "éœéŸ³æŒ‰éµ" #: src/settings_translation_file.cpp msgid "Mute sound" -msgstr "éœéŸ³" +msgstr "" #: src/settings_translation_file.cpp msgid "" @@ -5730,7 +5597,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Online Content Repository" -msgstr "在線內容å˜å„²åº«" +msgstr "" #: src/settings_translation_file.cpp msgid "Opaque liquids" @@ -5739,22 +5606,19 @@ msgstr "ä¸é€æ˜Žæ¶²é«”" #: src/settings_translation_file.cpp msgid "" "Opaqueness (alpha) of the shadow behind the default font, between 0 and 255." -msgstr "默èªå—體後é¢çš„陰影的ä¸é€æ˜Žï¼ˆalpha),介於0å’Œ255之間。" +msgstr "" #: src/settings_translation_file.cpp msgid "" "Opaqueness (alpha) of the shadow behind the fallback font, between 0 and 255." -msgstr "後備å—體後é¢çš„陰影的ä¸é€æ˜Žåº¦ï¼ˆalpha),介於0å’Œ255之間。" +msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Open the pause menu when the window's focus is lost. Does not pause if a " "formspec is\n" "open." msgstr "" -"當窗å£ç„¦é»žä¸Ÿå¤±æ™‚,打開“暫åœâ€èœå–®ã€‚如果formspec是\n" -"打開的。" #: src/settings_translation_file.cpp msgid "" @@ -5764,18 +5628,12 @@ msgid "" "This font will be used for certain languages or if the default font is " "unavailable." msgstr "" -"後備å—體的路徑。\n" -"如果啟用“freetypeâ€è¨ç½®ï¼šå¿…é ˆæ˜¯TrueTypeå—體。\n" -"如果“freetypeâ€è¨ç½®è¢«ç¦ç”¨ï¼šå¿…é ˆæ˜¯ä½åœ–或XML矢é‡å—體。\n" -"æ¤å—體將用於æŸäº›èªžè¨€æˆ–默èªå—é«”ä¸å¯ç”¨æ™‚。" #: src/settings_translation_file.cpp msgid "" "Path to save screenshots at. Can be an absolute or relative path.\n" "The folder will be created if it doesn't already exist." msgstr "" -"ä¿å˜æˆªåœ–的路徑。å¯ä»¥æ˜¯çµ•å°è·¯å¾‘或相å°è·¯å¾‘。\n" -"如果文件夾尚ä¸å˜åœ¨ï¼Œå‰‡å°‡å‰µå»ºè©²æ–‡ä»¶å¤¾ã€‚" #: src/settings_translation_file.cpp msgid "" @@ -5794,27 +5652,18 @@ msgid "" "If “freetype†setting is disabled: Must be a bitmap or XML vectors font.\n" "The fallback font will be used if the font cannot be loaded." msgstr "" -"默èªå—體的路徑。\n" -"如果啟用“freetypeâ€è¨ç½®ï¼šå¿…é ˆæ˜¯TrueTypeå—體。\n" -"如果“freetypeâ€è¨ç½®è¢«ç¦ç”¨ï¼šå¿…é ˆæ˜¯ä½åœ–或XML矢é‡å—體。\n" -"å¦‚æžœç„¡æ³•åŠ è¼‰å—體,將使用後備å—體。" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Path to the monospace font.\n" "If “freetype†setting is enabled: Must be a TrueType font.\n" "If “freetype†setting is disabled: Must be a bitmap or XML vectors font.\n" "This font is used for e.g. the console and profiler screen." msgstr "" -"ç‰å¯¬å—體的路徑。\n" -"如果啟用了“ freetypeâ€è¨ç½®ï¼šå¿…é ˆç‚ºTrueTypeå—體。\n" -"如果ç¦ç”¨äº†â€œ freetypeâ€è¨ç½®ï¼šå¿…é ˆç‚ºä½åœ–或XML矢é‡å—體。\n" -"該å—體用於例如 控制å°å’ŒæŽ¢æŸ¥å™¨å±å¹•。" #: src/settings_translation_file.cpp msgid "Pause on lost window focus" -msgstr "窗å£ç„¦é»žä¸Ÿå¤±æ™‚æš«åœ" +msgstr "" #: src/settings_translation_file.cpp msgid "Per-player limit of queued blocks load from disk" @@ -5836,7 +5685,7 @@ msgstr "飛行按éµ" #: src/settings_translation_file.cpp msgid "Pitch move mode" -msgstr "俯仰移動模å¼" +msgstr "" #: src/settings_translation_file.cpp #, fuzzy @@ -5882,20 +5731,17 @@ msgid "" "Prevent digging and placing from repeating when holding the mouse buttons.\n" "Enable this when you dig or place too often by accident." msgstr "" -"按ä½é¼ 標按鈕時,é¿å…é‡è¤‡æŒ–掘和放置。\n" -"當您æ„外挖掘或放置éŽå¤šæ™‚,請啟用æ¤åŠŸèƒ½ã€‚" #: src/settings_translation_file.cpp msgid "Prevent mods from doing insecure things like running shell commands." msgstr "é¿å… mod åšå‡ºä¸å®‰å…¨çš„èˆ‰å‹•ï¼Œåƒæ˜¯åŸ·è¡Œ shell 指令ç‰ã€‚" #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Print the engine's profiling data in regular intervals (in seconds).\n" "0 = disable. Useful for developers." -msgstr "" -"引擎性能資料å°å‡ºé–“隔的秒數。\n" -"0 = åœç”¨ã€‚å°é–‹ç™¼è€…有用。" +msgstr "引擎性能資料å°å‡ºé–“隔的秒數。0 = åœç”¨ã€‚å°é–‹ç™¼è€…有用。" #: src/settings_translation_file.cpp msgid "Privileges that players with basic_privs can grant" @@ -5939,8 +5785,9 @@ msgstr "" "大於 26 çš„å€¼å°‡æœƒåœ¨é›²çš„è§’è½æœ‰éŠ³è§’çš„ç”¢ç”Ÿã€‚" #: src/settings_translation_file.cpp +#, fuzzy msgid "Raises terrain to make valleys around the rivers." -msgstr "抬高地形,使河æµå‘¨åœå½¢æˆå±±è°·ã€‚" +msgstr "æå‡åœ°å½¢ä»¥è®“山谷在河æµå‘¨åœ" #: src/settings_translation_file.cpp msgid "Random input" @@ -5996,16 +5843,6 @@ msgid "" "csm_restriction_noderange)\n" "READ_PLAYERINFO: 32 (disable get_player_names call client-side)" msgstr "" -"é™åˆ¶å°æœå‹™å™¨ä¸ŠæŸäº›å®¢æˆ¶ç«¯åŠŸèƒ½çš„è¨ªå•。\n" -"組åˆä¸‹é¢çš„å—節標誌以é™åˆ¶å®¢æˆ¶ç«¯åŠŸèƒ½ï¼Œæˆ–è¨ç½®ç‚º0\n" -"ç„¡é™åˆ¶ï¼š\n" -"LOAD_CLIENT_MODS:1(ç¦ç”¨åŠ è¼‰å®¢æˆ¶ç«¯æä¾›çš„mod)\n" -"CHAT_MESSAGES:2(在客戶端ç¦ç”¨send_chat_message調用)\n" -"READ_ITEMDEFS:4(ç¦ç”¨get_item_def調用客戶端)\n" -"READ_NODEDEFS:8(ç¦ç”¨get_node_def調用客戶端)\n" -"LOOKUP_NODES_LIMIT:16(é™åˆ¶get_node調用客戶端到\n" -"csm_restriction_noderange)\n" -"READ_PLAYERINFO:32(ç¦ç”¨get_player_names調用客戶端)" #: src/settings_translation_file.cpp msgid "Ridge mountain spread noise" @@ -6085,9 +5922,8 @@ msgid "Save the map received by the client on disk." msgstr "ç”±ç”¨æˆ¶ç«¯å„²å˜æŽ¥æ”¶åˆ°çš„åœ°åœ–åˆ°ç£ç¢Ÿä¸Šã€‚" #: src/settings_translation_file.cpp -#, fuzzy msgid "Save window size automatically when modified." -msgstr "修改時自動ä¿å˜çª—å£å¤§å°ã€‚" +msgstr "" #: src/settings_translation_file.cpp msgid "Saving map received from server" @@ -6294,14 +6130,14 @@ msgid "Shader path" msgstr "著色器路徑" #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Shaders allow advanced visual effects and may increase performance on some " "video\n" "cards.\n" "This only works with the OpenGL video backend." msgstr "" -"著色器讓您å¯ä»¥æœ‰é€²éšŽè¦–覺效果並å¯èƒ½æœƒåœ¨æŸäº›é¡¯ç¤ºå¡ä¸Šï¼Œ\n" -"增強效能。\n" +"著色器讓您å¯ä»¥æœ‰é€²éšŽè¦–覺效果並å¯èƒ½æœƒåœ¨æŸäº›é¡¯ç¤ºå¡ä¸Šå¢žå¼·æ•ˆèƒ½ã€‚\n" "這僅在 OpenGL 視訊後端上æ‰èƒ½é‹ä½œã€‚" #: src/settings_translation_file.cpp @@ -6340,6 +6176,10 @@ msgstr "" "è®Šæ›´å¾Œå¿…é ˆé‡æ–°å•Ÿå‹•以使其生效。" #: src/settings_translation_file.cpp +msgid "Show nametag backgrounds by default" +msgstr "" + +#: src/settings_translation_file.cpp msgid "Shutdown message" msgstr "關閉訊æ¯" @@ -6368,16 +6208,17 @@ msgid "Slice w" msgstr "切片 w" #: src/settings_translation_file.cpp +#, fuzzy msgid "Slope and fill work together to modify the heights." -msgstr "å¡åº¦èˆ‡å¡«å……一åŒé‹ä½œä¾†ä¿®æ”¹é«˜åº¦ã€‚" +msgstr "å¡åº¦èˆ‡å¡«å……一åŒé‹ä½œä¾†ä¿®æ”¹é«˜åº¦" #: src/settings_translation_file.cpp msgid "Small cave maximum number" -msgstr "å°æ´žç©´æœ€å¤§æ•¸é‡" +msgstr "" #: src/settings_translation_file.cpp msgid "Small cave minimum number" -msgstr "å°æ´žç©´æœ€å°æ•¸é‡" +msgstr "" #: src/settings_translation_file.cpp msgid "Small-scale humidity variation for blending biomes on borders." @@ -6417,9 +6258,8 @@ msgid "Sneaking speed" msgstr "走路速度" #: src/settings_translation_file.cpp -#, fuzzy msgid "Sneaking speed, in nodes per second." -msgstr "潛行速度,以æ¯ç§’節點數為單ä½ã€‚" +msgstr "" #: src/settings_translation_file.cpp msgid "Sound" @@ -6448,25 +6288,18 @@ msgstr "" "沒有在其ä¸çš„æª”æ¡ˆå°‡æœƒä»¥å¹³å¸¸çš„æ–¹å¼æŠ“å–。" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Specifies the default stack size of nodes, items and tools.\n" "Note that mods or games may explicitly set a stack for certain (or all) " "items." msgstr "" -"指定節點ã€é …和工具的默èªå †æ£§å¤§å°ã€‚\n" -"請注æ„,mods或gameså¯ä»¥é¡¯å¼åœ°ç‚ºæŸäº›ï¼ˆæˆ–æ‰€æœ‰ï¼‰é …ç›®è¨ç½®å †æ£§ã€‚" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Spread of light curve boost range.\n" "Controls the width of the range to be boosted.\n" "Standard deviation of the light curve boost Gaussian." msgstr "" -"傳æ’光曲線增強範åœã€‚\n" -"控制è¦å¢žåŠ ç¯„åœçš„寬度。\n" -"光曲線的標準å差增強了高斯。" #: src/settings_translation_file.cpp msgid "Static spawnpoint" @@ -6492,15 +6325,11 @@ msgid "Strength of 3D mode parallax." msgstr "視差強度。" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Strength of light curve boost.\n" "The 3 'boost' parameters define a range of the light\n" "curve that is boosted in brightness." msgstr "" -"光強度曲線增強。\n" -"3個“ boostâ€åƒæ•¸å®šç¾©å…‰æºçš„範åœ\n" -"äº®åº¦å¢žåŠ çš„æ›²ç·šã€‚" #: src/settings_translation_file.cpp msgid "Strict protocol checking" @@ -6508,7 +6337,7 @@ msgstr "åš´æ ¼å”è°æª¢æŸ¥" #: src/settings_translation_file.cpp msgid "Strip color codes" -msgstr "帶é¡è‰²ä»£ç¢¼" +msgstr "" #: src/settings_translation_file.cpp msgid "" @@ -6523,16 +6352,6 @@ msgid "" "server-intensive extreme water flow and to avoid vast flooding of the\n" "world surface below." msgstr "" -"放置在固態漂浮é¢ä¸Šçš„å¯é¸æ°´çš„表é¢é«˜åº¦ã€‚\n" -"é»˜èªæƒ…æ³ä¸‹ç¦ç”¨æ°´ï¼Œä¸¦ä¸”僅在è¨ç½®äº†æ¤å€¼å¾Œæ‰æ”¾ç½®æ°´\n" -"到'mgv7_floatland_ymax'-'mgv7_floatland_taper'(\n" -"ä¸Šéƒ¨é€æ¼¸è®Šç´°ï¼‰ã€‚\n" -"***è¦å‘Šï¼Œå¯èƒ½å±å®³ä¸–界和æœå‹™å™¨æ€§èƒ½***:\n" -"å•Ÿç”¨æ°´ä½æ™‚ï¼Œå¿…é ˆå°æµ®åœ°é€²è¡Œé…置和測試\n" -"通éŽå°‡'mgv7_floatland_density'è¨ç½®ç‚º2.0(或其他\n" -"æ‰€éœ€çš„å€¼å–æ±ºæ–¼â€œ mgv7_np_floatlandâ€ï¼‰ï¼Œä»¥é¿å…\n" -"æœå‹™å™¨å¯†é›†çš„æ¥µç«¯æ°´æµï¼Œä¸¦é¿å…大釿´ªæ°´\n" -"下é¢çš„世界表é¢ã€‚" #: src/settings_translation_file.cpp msgid "Synchronous SQLite" @@ -6592,7 +6411,6 @@ msgid "Texture path" msgstr "æè³ªè·¯å¾‘" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Textures on a node may be aligned either to the node or to the world.\n" "The former mode suits better things like machines, furniture, etc., while\n" @@ -6601,16 +6419,10 @@ msgid "" "this option allows enforcing it for certain node types. Note though that\n" "that is considered EXPERIMENTAL and may not work properly." msgstr "" -"節點上的紋ç†å¯ä»¥èˆ‡ç¯€é»žå°é½Šï¼Œä¹Ÿå¯ä»¥èˆ‡ä¸–界å°é½Šã€‚\n" -"å‰ä¸€ç¨®æ¨¡å¼é©åˆæ©Ÿå™¨ï¼Œå®¶å…·ç‰æ›´å¥½çš„æ±è¥¿ï¼Œè€Œ\n" -"後者使樓梯和微å€å¡Šæ›´é©åˆå‘¨åœç’°å¢ƒã€‚\n" -"但是,由於這種å¯èƒ½æ€§æ˜¯æ–°çš„ï¼Œå› æ¤è¼ƒèˆŠçš„æœå‹™å™¨å¯èƒ½ä¸æœƒä½¿ç”¨ï¼Œ\n" -"æ¤é¸é …å…è¨±å°æŸäº›ç¯€é»žé¡žåž‹å¼·åˆ¶å¯¦æ–½ã€‚ 注æ„儘管\n" -"被èªç‚ºæ˜¯å¯¦é©—性的,å¯èƒ½ç„¡æ³•æ£å¸¸å·¥ä½œã€‚" #: src/settings_translation_file.cpp msgid "The URL for the content repository" -msgstr "內容å˜å„²åº«çš„URL" +msgstr "" #: src/settings_translation_file.cpp #, fuzzy @@ -6626,8 +6438,9 @@ msgstr "" "當呼å«ã€Œ/profiler save [æ ¼å¼]ã€ä½†ä¸åŒ…嫿 ¼å¼æ™‚。" #: src/settings_translation_file.cpp +#, fuzzy msgid "The depth of dirt or other biome filler node." -msgstr "塵土或其他填充物的深度。" +msgstr "塵土或其他填充物的深度" #: src/settings_translation_file.cpp msgid "" @@ -6650,11 +6463,6 @@ msgid "" "Default is 1.0 (1/2 node).\n" "Requires waving liquids to be enabled." msgstr "" -"波動液體表é¢çš„æœ€å¤§é«˜åº¦ã€‚\n" -"4.0 =波高是兩個節點。\n" -"0.0 =波形完全ä¸ç§»å‹•。\n" -"默èªå€¼ç‚º1.0(1/2節點)。\n" -"需è¦å•Ÿç”¨æ³¢ç‹€æ¶²é«”。" #: src/settings_translation_file.cpp msgid "The network interface that the server listens on." @@ -6669,7 +6477,6 @@ msgstr "" "åœ¨éŠæˆ²ä¸è«‹è¦‹ /privs 以å–得在您的伺æœå™¨ä¸Šèˆ‡ mod è¨å®šçš„完整清單。" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "The radius of the volume of blocks around every player that is subject to " "the\n" @@ -6679,14 +6486,8 @@ msgid "" "maintained.\n" "This should be configured together with active_object_send_range_blocks." msgstr "" -"æ¯å€‹çީ家呍åœçš„æ–¹å¡Šé«”ç©çš„åŠå¾‘å—制於。\n" -"活動塊內容,以地图å—(16個節點)表示。\n" -"在活動塊ä¸ï¼Œå°‡åŠ è¼‰å°è±¡ä¸¦é‹è¡ŒABM。\n" -"é€™ä¹Ÿæ˜¯ä¿æŒæ´»å‹•å°è±¡ï¼ˆç”Ÿç‰©ï¼‰çš„æœ€å°ç¯„åœã€‚\n" -"這應該與active_object_send_range_blocks一起é…置。" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "The rendering back-end for Irrlicht.\n" "A restart is required after changing this.\n" @@ -6695,11 +6496,6 @@ msgid "" "On other platforms, OpenGL is recommended.\n" "Shaders are supported by OpenGL (desktop only) and OGLES2 (experimental)" msgstr "" -"Irrlicht的渲染後端。\n" -"更改æ¤è¨ç½®å¾Œéœ€è¦é‡æ–°å•Ÿå‹•。\n" -"注æ„:在Android上,如果ä¸ç¢ºå®šï¼Œè«‹å …æŒä½¿ç”¨OGLES1ï¼ æ‡‰ç”¨å¯èƒ½ç„¡æ³•啟動,å¦å‰‡ã€‚\n" -"在其他平å°ä¸Šï¼Œå»ºè°ä½¿ç”¨OpenGL,它是唯一具有以下功能的驅動程åºã€‚\n" -"ç›®å‰æ”¯æŒè‘—色器。" #: src/settings_translation_file.cpp msgid "" @@ -6750,9 +6546,7 @@ msgstr "" msgid "" "The time in seconds it takes between repeated node placements when holding\n" "the place button." -msgstr "" -"ç•¶æŒ‰ä½æ»‘é¼ å³éµæ™‚,\n" -"é‡è¦†å³éµé»žé¸çš„間隔以秒計。" +msgstr "ç•¶æŒ‰ä½æ»‘é¼ å³éµæ™‚,é‡è¦†å³éµé»žé¸çš„間隔以秒計。" #: src/settings_translation_file.cpp msgid "The type of joystick" @@ -6764,9 +6558,6 @@ msgid "" "enabled. Also the vertical distance over which humidity drops by 10 if\n" "'altitude_dry' is enabled." msgstr "" -"如果'altitude_chill'為,則熱é‡ä¸‹é™20的垂直è·é›¢\n" -"已啟用。 如果濕度下é™çš„垂直è·é›¢ä¹Ÿæ˜¯10\n" -"已啟用“ altitude_dryâ€ã€‚" #: src/settings_translation_file.cpp msgid "Third of 4 2D noises that together define hill/mountain range height." @@ -6782,7 +6573,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Time of day when a new world is started, in millihours (0-23999)." -msgstr "新世界開始的一天的時間,以毫秒為單ä½ï¼ˆ0-23999)。" +msgstr "" #: src/settings_translation_file.cpp msgid "Time send interval" @@ -6851,6 +6642,7 @@ msgid "Undersampling" msgstr "Undersampling" #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Undersampling is similar to using a lower screen resolution, but it applies\n" "to the game world only, keeping the GUI intact.\n" @@ -6858,8 +6650,7 @@ msgid "" "image.\n" "Higher values result in a less detailed image." msgstr "" -"Undersampling 類似於較低的螢幕解æžåº¦ï¼Œ\n" -"但其,\n" +"Undersampling 類似於較低的螢幕解æžåº¦ï¼Œä½†å…¶\n" "僅é©ç”¨æ–¼éŠæˆ²ä¸–ç•Œï¼Œä¿æŒåœ–形使用者介é¢å®Œå¥½ç„¡æã€‚\n" "它應該有顯著的效能æå‡ï¼Œä»£åƒ¹æ˜¯ç´°ç¯€è¼ƒå·®çš„圖片。" @@ -6897,15 +6688,11 @@ msgid "Use bilinear filtering when scaling textures." msgstr "當縮放æè³ªæ™‚ä½¿ç”¨é›™ç·šæ€§éŽæ¿¾ã€‚" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Use mip mapping to scale textures. May slightly increase performance,\n" "especially when using a high resolution texture pack.\n" "Gamma correct downscaling is not supported." msgstr "" -"使用Mipæ˜ å°„ç¸®æ”¾ç´‹ç†ã€‚ å¯èƒ½æœƒç¨å¾®æé«˜æ€§èƒ½ï¼Œ\n" -"尤其是在使用高分辨率紋ç†åŒ…時。\n" -"䏿”¯æŒGammaæ£ç¢ºç¸®å°ã€‚" #: src/settings_translation_file.cpp msgid "" @@ -6988,9 +6775,8 @@ msgid "Varies steepness of cliffs." msgstr "懸崖å¡åº¦è®ŠåŒ–。" #: src/settings_translation_file.cpp -#, fuzzy msgid "Vertical climbing speed, in nodes per second." -msgstr "垂直爬å‡é€Ÿåº¦ï¼Œä»¥æ¯ç§’節點數為單ä½ã€‚" +msgstr "" #: src/settings_translation_file.cpp msgid "Vertical screen synchronization." @@ -7026,7 +6812,7 @@ msgstr "視野" #: src/settings_translation_file.cpp msgid "Virtual joystick triggers aux button" -msgstr "虛擬æ“縱桿觸發aux按鈕" +msgstr "" #: src/settings_translation_file.cpp msgid "Volume" @@ -7052,23 +6838,20 @@ msgid "" msgstr "" "4D 碎形生æˆçš„ 3D 切片的 W 座標。\n" "æ±ºå®šäº†æœƒç”Ÿæˆæ€Žæ¨£çš„ 4D 形狀的 3D 切片。\n" -"改變碎形的形狀。\n" "å° 3D 碎形沒有影響。\n" "範åœç´„在 -2 至 2 間。" #: src/settings_translation_file.cpp -#, fuzzy msgid "Walking and flying speed, in nodes per second." -msgstr "行走和飛行速度,以æ¯ç§’節點數為單ä½ã€‚" +msgstr "" #: src/settings_translation_file.cpp msgid "Walking speed" msgstr "走路速度" #: src/settings_translation_file.cpp -#, fuzzy msgid "Walking, flying and climbing speed in fast mode, in nodes per second." -msgstr "快速模å¼ä¸‹çš„行走,飛行和爬å‡é€Ÿåº¦ï¼Œä»¥æ¯ç§’節點數為單ä½ã€‚" +msgstr "" #: src/settings_translation_file.cpp msgid "Water level" @@ -7133,6 +6916,7 @@ msgstr "" "來軟體支æ´ä¸ä½³çš„顯示å¡é©…動程å¼ä½¿ç”¨ã€‚" #: src/settings_translation_file.cpp +#, fuzzy msgid "" "When using bilinear/trilinear/anisotropic filters, low-resolution textures\n" "can be blurred, so automatically upscale them with nearest-neighbor\n" @@ -7144,14 +6928,12 @@ msgid "" "This is also used as the base node texture size for world-aligned\n" "texture autoscaling." msgstr "" -"當使用雙線性ï¼ä¸‰ç·šæ€§ï¼å„å‘ç•°æ€§éŽæ¿¾å™¨æ™‚,低解æžåº¦æè³ªã€‚\n" -"會被模糊,所以會自動將大å°ç¸®æ”¾è‡³æœ€è¿‘的內æ’值。\n" -"以讓åƒç´ ä¿æŒæ¸…晰。這會è¨å®šæœ€å°æè³ªå¤§å°ã€‚\n" -"供放大æè³ªä½¿ç”¨ï¼›è¼ƒé«˜çš„值看起來較銳利,\n" -"ä½†éœ€è¦æ›´å¤šçš„記憶體。\n" -"建è°ç‚º 2 的次方。將這個值è¨å®šé«˜æ–¼ 1 䏿œƒã€‚\n" -"有任何視覺效果,\n" -"除éžé›™ç·šæ€§ï¼ä¸‰ç·šæ€§ï¼å„å‘ç•°æ€§éŽæ¿¾ã€‚\n" +"當使用雙線性ï¼ä¸‰ç·šæ€§ï¼å„å‘ç•°æ€§éŽæ¿¾å™¨æ™‚,低解æžåº¦æè³ª\n" +"會被模糊,所以會自動將大å°ç¸®æ”¾è‡³æœ€è¿‘的內æ’值\n" +"以讓åƒç´ ä¿æŒæ¸…晰。這會è¨å®šæœ€å°æè³ªå¤§å°\n" +"供放大æè³ªä½¿ç”¨ï¼›è¼ƒé«˜çš„å€¼çœ‹èµ·ä¾†è¼ƒéŠ³åˆ©ï¼Œä½†éœ€è¦æ›´å¤šçš„\n" +"記憶體。建è°ç‚º 2 的次方。將這個值è¨å®šé«˜æ–¼ 1 䏿œƒ\n" +"有任何視覺效果,除éžé›™ç·šæ€§ï¼ä¸‰ç·šæ€§ï¼å„å‘ç•°æ€§éŽæ¿¾\n" "已啟用。" #: src/settings_translation_file.cpp @@ -7160,9 +6942,13 @@ msgid "" "Whether FreeType fonts are used, requires FreeType support to be compiled " "in.\n" "If disabled, bitmap and XML vectors fonts are used instead." +msgstr "是å¦ä½¿ç”¨ freetype å—型,需è¦å°‡ freetype 支æ´ç·¨è¯é€²ä¾†ã€‚" + +#: src/settings_translation_file.cpp +msgid "" +"Whether nametag backgrounds should be shown by default.\n" +"Mods may still set a background." msgstr "" -"是å¦ä½¿ç”¨ freetype å—型,\n" -"需è¦å°‡ freetype 支æ´ç·¨è¯é€²ä¾†ã€‚" #: src/settings_translation_file.cpp msgid "Whether node texture animations should be desynchronized per mapblock." @@ -7199,10 +6985,6 @@ msgid "" "In-game, you can toggle the mute state with the mute key or by using the\n" "pause menu." msgstr "" -"是å¦éœéŸ³ã€‚ 您å¯ä»¥éš¨æ™‚å–æ¶ˆéœéŸ³ï¼Œé™¤éž\n" -"è²éŸ³ç³»çµ±å·²ç¦ç”¨ï¼ˆenable_sound = false)。\n" -"åœ¨éŠæˆ²ä¸ï¼Œæ‚¨å¯ä»¥ä½¿ç”¨éœéŸ³éµæˆ–通éŽä½¿ç”¨éœéŸ³éµä¾†åˆ‡æ›éœéŸ³ç‹€æ…‹\n" -"æš«åœèœå–®ã€‚" #: src/settings_translation_file.cpp msgid "" @@ -7360,19 +7142,6 @@ msgstr "cURL 逾時" #~ msgid "Bumpmapping" #~ msgstr "æ˜ å°„è²¼åœ–" -#~ msgid "" -#~ "Changes the main menu UI:\n" -#~ "- Full: Multiple singleplayer worlds, game choice, texture pack " -#~ "chooser, etc.\n" -#~ "- Simple: One singleplayer world, no game or texture pack choosers. May " -#~ "be\n" -#~ "necessary for smaller screens." -#~ msgstr "" -#~ "更改主èœå–®ç”¨æˆ¶ç•Œé¢ï¼š\n" -#~ "-å®Œæ•´ï¼šå¤šå€‹å–®äººéŠæˆ²ä¸–ç•Œï¼ŒéŠæˆ²é¸æ“‡ï¼Œç´‹ç†åŒ…鏿“‡å™¨ç‰ã€‚\n" -#~ "-ç°¡å–®ï¼šä¸€å€‹å–®äººéŠæˆ²ä¸–ç•Œï¼Œæ²’æœ‰éŠæˆ²æˆ–ç´‹ç†åŒ…鏿“‡å™¨ã€‚ 也許\n" -#~ "å°æ–¼è¼ƒå°çš„å±å¹•是必需的。" - #~ msgid "Config mods" #~ msgstr "è¨å®š Mod" diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 7bcf8d6c7..8a6eabccc 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -63,14 +63,13 @@ if(ENABLE_GETTEXT) if(GETTEXTLIB_FOUND) if(WIN32) message(STATUS "GetText library: ${GETTEXT_LIBRARY}") - message(STATUS "GetText DLL: ${GETTEXT_DLL}") - message(STATUS "GetText iconv DLL: ${GETTEXT_ICONV_DLL}") + message(STATUS "GetText DLL(s): ${GETTEXT_DLL}") endif() set(USE_GETTEXT TRUE) message(STATUS "GetText enabled; locales found: ${GETTEXT_AVAILABLE_LOCALES}") endif(GETTEXTLIB_FOUND) else() - mark_as_advanced(GETTEXT_ICONV_DLL GETTEXT_INCLUDE_DIR GETTEXT_LIBRARY GETTEXT_MSGFMT) + mark_as_advanced(GETTEXT_INCLUDE_DIR GETTEXT_LIBRARY GETTEXT_MSGFMT) message(STATUS "GetText disabled.") endif() @@ -268,8 +267,10 @@ if(WIN32) if(ENABLE_SOUND) set(OPENAL_DLL "" CACHE FILEPATH "Path to OpenAL32.dll for installation (optional)") set(OGG_DLL "" CACHE FILEPATH "Path to libogg.dll for installation (optional)") - set(VORBIS_DLL "" CACHE FILEPATH "Path to libvorbis.dll for installation (optional)") - set(VORBISFILE_DLL "" CACHE FILEPATH "Path to libvorbisfile.dll for installation (optional)") + set(VORBIS_DLL "" CACHE FILEPATH "Path to Vorbis DLLs for installation (optional)") + endif() + if(USE_GETTEXT) + set(GETTEXT_DLL "" CACHE FILEPATH "Path to Intl/Iconv DLLs for installation (optional)") endif() if(USE_LUAJIT) set(LUA_DLL "" CACHE FILEPATH "Path to luajit-5.1.dll for installation (optional)") @@ -295,7 +296,6 @@ else() endif(NOT HAIKU AND NOT APPLE) find_package(JPEG REQUIRED) - find_package(BZip2 REQUIRED) find_package(PNG REQUIRED) if(APPLE) find_library(CARBON_LIB Carbon REQUIRED) @@ -713,7 +713,7 @@ if(MSVC) # Flags that cannot be shared between cl and clang-cl # https://clang.llvm.org/docs/UsersManual.html#clang-cl - if(CMAKE_CXX_COMPILER_ID MATCHES "Clang") + if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fuse-ld=lld") # Disable pragma-pack warning @@ -731,7 +731,7 @@ else() else() set(RELEASE_WARNING_FLAGS "") endif() - if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang") + if(CMAKE_CXX_COMPILER_ID MATCHES "(Apple)?Clang") set(WARNING_FLAGS "${WARNING_FLAGS} -Wsign-compare") endif() @@ -768,7 +768,7 @@ else() else() set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} ${MATH_FLAGS}") endif() - endif(CMAKE_SYSTEM_NAME MATCHES "(Darwin|BSD|DragonFly)") + endif() set(CMAKE_CXX_FLAGS_SEMIDEBUG "-g -O1 -Wall ${WARNING_FLAGS} ${OTHER_FLAGS}") set(CMAKE_CXX_FLAGS_DEBUG "-g -O0 -Wall ${WARNING_FLAGS} ${OTHER_FLAGS}") @@ -805,7 +805,7 @@ if(WIN32) FILES_MATCHING PATTERN "*.dll") else() # Use the old-style way to install dll's - if(USE_SOUND) + if(BUILD_CLIENT AND USE_SOUND) if(OPENAL_DLL) install(FILES ${OPENAL_DLL} DESTINATION ${BINDIR}) endif() @@ -815,9 +815,6 @@ if(WIN32) if(VORBIS_DLL) install(FILES ${VORBIS_DLL} DESTINATION ${BINDIR}) endif() - if(VORBISFILE_DLL) - install(FILES ${VORBISFILE_DLL} DESTINATION ${BINDIR}) - endif() endif() if(CURL_DLL) install(FILES ${CURL_DLL} DESTINATION ${BINDIR}) @@ -825,7 +822,7 @@ if(WIN32) if(ZLIB_DLL) install(FILES ${ZLIB_DLL} DESTINATION ${BINDIR}) endif() - if(FREETYPE_DLL) + if(BUILD_CLIENT AND FREETYPE_DLL) install(FILES ${FREETYPE_DLL} DESTINATION ${BINDIR}) endif() if(SQLITE3_DLL) @@ -837,6 +834,12 @@ if(WIN32) if(LUA_DLL) install(FILES ${LUA_DLL} DESTINATION ${BINDIR}) endif() + if(BUILD_CLIENT AND IRRLICHT_DLL) + install(FILES ${IRRLICHT_DLL} DESTINATION ${BINDIR}) + endif() + if(BUILD_CLIENT AND USE_GETTEXT AND GETTEXT_DLL) + install(FILES ${GETTEXT_DLL} DESTINATION ${BINDIR}) + endif() endif() endif() @@ -864,6 +867,7 @@ if(BUILD_CLIENT) endforeach() endif() + # Install necessary fonts depending on configuration if(USE_FREETYPE) install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/../fonts" DESTINATION "${SHAREDIR}" FILES_MATCHING PATTERN "*.ttf" PATTERN "*.txt") @@ -871,22 +875,6 @@ if(BUILD_CLIENT) install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/../fonts" DESTINATION "${SHAREDIR}" FILES_MATCHING PATTERN "*.png" PATTERN "*.xml") endif() - - if(WIN32) - if(NOT VCPKG_APPLOCAL_DEPS) - if(DEFINED IRRLICHT_DLL) - install(FILES ${IRRLICHT_DLL} DESTINATION ${BINDIR}) - endif() - if(USE_GETTEXT) - if(DEFINED GETTEXT_DLL) - install(FILES ${GETTEXT_DLL} DESTINATION ${BINDIR}) - endif() - if(DEFINED GETTEXT_ICONV_DLL) - install(FILES ${GETTEXT_ICONV_DLL} DESTINATION ${BINDIR}) - endif() - endif() - endif() - endif() endif(BUILD_CLIENT) if(BUILD_SERVER) diff --git a/src/activeobjectmgr.h b/src/activeobjectmgr.h index 95e7d3344..aa0538e60 100644 --- a/src/activeobjectmgr.h +++ b/src/activeobjectmgr.h @@ -25,7 +25,8 @@ with this program; if not, write to the Free Software Foundation, Inc., class TestClientActiveObjectMgr; class TestServerActiveObjectMgr; -template <typename T> class ActiveObjectMgr +template <typename T> +class ActiveObjectMgr { friend class ::TestClientActiveObjectMgr; friend class ::TestServerActiveObjectMgr; diff --git a/src/client/camera.cpp b/src/client/camera.cpp index 9a08254b4..5158d0dd1 100644 --- a/src/client/camera.cpp +++ b/src/client/camera.cpp @@ -79,6 +79,7 @@ Camera::Camera(MapDrawControl &draw_control, Client *client): m_cache_fov = std::fmax(g_settings->getFloat("fov"), 45.0f); m_arm_inertia = g_settings->getBool("arm_inertia"); m_nametags.clear(); + m_show_nametag_backgrounds = g_settings->getBool("show_nametag_backgrounds"); } Camera::~Camera() @@ -663,7 +664,7 @@ void Camera::wield(const ItemStack &item) void Camera::drawWieldedTool(irr::core::matrix4* translation) { // Clear Z buffer so that the wielded tool stays in front of world geometry - m_wieldmgr->getVideoDriver()->clearZBuffer(); + m_wieldmgr->getVideoDriver()->clearBuffers(video::ECBF_DEPTH); // Draw the wielded node (in a separate scene manager) scene::ICameraSceneNode* cam = m_wieldmgr->getActiveCamera(); @@ -696,18 +697,14 @@ void Camera::drawNametags() v2u32 screensize = driver->getScreenSize(); for (const Nametag *nametag : m_nametags) { - if (nametag->nametag_color.getAlpha() == 0) { - // Enforce hiding nametag, - // because if freetype is enabled, a grey - // shadow can remain. - continue; - } - v3f pos = nametag->parent_node->getAbsolutePosition() + nametag->nametag_pos * BS; + // Nametags are hidden in GenericCAO::updateNametag() + + v3f pos = nametag->parent_node->getAbsolutePosition() + nametag->pos * BS; f32 transformed_pos[4] = { pos.X, pos.Y, pos.Z, 1.0f }; trans.multiplyWith1x4Matrix(transformed_pos); if (transformed_pos[3] > 0) { std::wstring nametag_colorless = - unescape_translate(utf8_to_wide(nametag->nametag_text)); + unescape_translate(utf8_to_wide(nametag->text)); core::dimension2d<u32> textsize = font->getDimension( nametag_colorless.c_str()); f32 zDiv = transformed_pos[3] == 0.0f ? 1.0f : @@ -720,26 +717,22 @@ void Camera::drawNametags() core::rect<s32> size(0, 0, textsize.Width, textsize.Height); core::rect<s32> bg_size(-2, 0, textsize.Width+2, textsize.Height); - video::SColor textColor = nametag->nametag_color; - - bool darkBackground = textColor.getLuminance() > 186; - video::SColor backgroundColor = darkBackground - ? video::SColor(50, 50, 50, 50) - : video::SColor(50, 255, 255, 255); - driver->draw2DRectangle(backgroundColor, bg_size + screen_pos); + auto bgcolor = nametag->getBgColor(m_show_nametag_backgrounds); + if (bgcolor.getAlpha() != 0) + driver->draw2DRectangle(bgcolor, bg_size + screen_pos); font->draw( - translate_string(utf8_to_wide(nametag->nametag_text)).c_str(), - size + screen_pos, textColor); + translate_string(utf8_to_wide(nametag->text)).c_str(), + size + screen_pos, nametag->textcolor); } } } Nametag *Camera::addNametag(scene::ISceneNode *parent_node, - const std::string &nametag_text, video::SColor nametag_color, - const v3f &pos) + const std::string &text, video::SColor textcolor, + Optional<video::SColor> bgcolor, const v3f &pos) { - Nametag *nametag = new Nametag(parent_node, nametag_text, nametag_color, pos); + Nametag *nametag = new Nametag(parent_node, text, textcolor, bgcolor, pos); m_nametags.push_back(nametag); return nametag; } diff --git a/src/client/camera.h b/src/client/camera.h index 16a1961be..6fd8d9aa7 100644 --- a/src/client/camera.h +++ b/src/client/camera.h @@ -25,27 +25,47 @@ with this program; if not, write to the Free Software Foundation, Inc., #include <ICameraSceneNode.h> #include <ISceneNode.h> #include <list> +#include "util/Optional.h" class LocalPlayer; struct MapDrawControl; class Client; class WieldMeshSceneNode; -struct Nametag { +struct Nametag +{ + scene::ISceneNode *parent_node; + std::string text; + video::SColor textcolor; + Optional<video::SColor> bgcolor; + v3f pos; + Nametag(scene::ISceneNode *a_parent_node, - const std::string &a_nametag_text, - const video::SColor &a_nametag_color, - const v3f &a_nametag_pos): + const std::string &text, + const video::SColor &textcolor, + const Optional<video::SColor> &bgcolor, + const v3f &pos): parent_node(a_parent_node), - nametag_text(a_nametag_text), - nametag_color(a_nametag_color), - nametag_pos(a_nametag_pos) + text(text), + textcolor(textcolor), + bgcolor(bgcolor), + pos(pos) { } - scene::ISceneNode *parent_node; - std::string nametag_text; - video::SColor nametag_color; - v3f nametag_pos; + + video::SColor getBgColor(bool use_fallback) const + { + if (bgcolor) + return bgcolor.value(); + else if (!use_fallback) + return video::SColor(0, 0, 0, 0); + else if (textcolor.getLuminance() > 186) + // Dark background for light text + return video::SColor(50, 50, 50, 50); + else + // Light background for dark text + return video::SColor(50, 255, 255, 255); + } }; enum CameraMode {CAMERA_MODE_FIRST, CAMERA_MODE_THIRD, CAMERA_MODE_THIRD_FRONT}; @@ -164,8 +184,8 @@ public: } Nametag *addNametag(scene::ISceneNode *parent_node, - const std::string &nametag_text, video::SColor nametag_color, - const v3f &pos); + const std::string &text, video::SColor textcolor, + Optional<video::SColor> bgcolor, const v3f &pos); void removeNametag(Nametag *nametag); @@ -245,4 +265,5 @@ private: bool m_arm_inertia; std::list<Nametag *> m_nametags; + bool m_show_nametag_backgrounds; }; diff --git a/src/client/client.cpp b/src/client/client.cpp index ef4a3cdfc..0486bc0a9 100644 --- a/src/client/client.cpp +++ b/src/client/client.cpp @@ -663,12 +663,15 @@ bool Client::loadMedia(const std::string &data, const std::string &filename, io::IFileSystem *irrfs = RenderingEngine::get_filesystem(); video::IVideoDriver *vdrv = RenderingEngine::get_video_driver(); +#if IRRLICHT_VERSION_MAJOR == 1 && IRRLICHT_VERSION_MINOR > 8 + io::IReadFile *rfile = irrfs->createMemoryReadFile( + data.c_str(), data.size(), "_tempreadfile"); +#else // Silly irrlicht's const-incorrectness Buffer<char> data_rw(data.c_str(), data.size()); - - // Create an irrlicht memory file io::IReadFile *rfile = irrfs->createMemoryReadFile( *data_rw, data_rw.getSize(), "_tempreadfile"); +#endif FATAL_ERROR_IF(!rfile, "Could not create irrlicht memory file."); @@ -1914,13 +1917,20 @@ scene::IAnimatedMesh* Client::getMesh(const std::string &filename, bool cache) // Create the mesh, remove it from cache and return it // This allows unique vertex colors and other properties for each instance +#if IRRLICHT_VERSION_MAJOR == 1 && IRRLICHT_VERSION_MINOR > 8 + io::IReadFile *rfile = RenderingEngine::get_filesystem()->createMemoryReadFile( + data.c_str(), data.size(), filename.c_str()); +#else Buffer<char> data_rw(data.c_str(), data.size()); // Const-incorrect Irrlicht - io::IReadFile *rfile = RenderingEngine::get_filesystem()->createMemoryReadFile( + io::IReadFile *rfile = RenderingEngine::get_filesystem()->createMemoryReadFile( *data_rw, data_rw.getSize(), filename.c_str()); +#endif FATAL_ERROR_IF(!rfile, "Could not create/open RAM file"); scene::IAnimatedMesh *mesh = RenderingEngine::get_scene_manager()->getMesh(rfile); rfile->drop(); + if (!mesh) + return nullptr; mesh->grab(); if (!cache) RenderingEngine::get_mesh_cache()->removeMesh(mesh); diff --git a/src/client/client.h b/src/client/client.h index 25a1b97ba..da7f8e8a1 100644 --- a/src/client/client.h +++ b/src/client/client.h @@ -412,12 +412,7 @@ public: inline bool checkCSMRestrictionFlag(CSMRestrictionFlags flag) const { - return m_csm_restriction_flags & flag; - } - - inline std::unordered_map<u32, u32> &getHUDTranslationMap() - { - return m_hud_server_to_client; + return m_csm_restriction_flags & 0; } bool joinModChannel(const std::string &channel) override; @@ -556,9 +551,6 @@ private: // Relation of client id to object id std::unordered_map<int, u16> m_sounds_to_objects; - // Map server hud ids to client hud ids - std::unordered_map<u32, u32> m_hud_server_to_client; - // Privileges std::unordered_set<std::string> m_privileges; diff --git a/src/client/clientevent.h b/src/client/clientevent.h index 9bd31efce..2215aecbd 100644 --- a/src/client/clientevent.h +++ b/src/client/clientevent.h @@ -52,6 +52,31 @@ enum ClientEventType : u8 CLIENTEVENT_MAX, }; +struct ClientEventHudAdd +{ + u32 server_id; + u8 type; + v2f pos, scale; + std::string name; + std::string text, text2; + u32 number, item, dir; + v2f align, offset; + v3f world_pos; + v2s32 size; + s16 z_index; +}; + +struct ClientEventHudChange +{ + u32 id; + HudElementStat stat; + v2f v2fdata; + std::string sdata; + u32 data; + v3f v3fdata; + v2s32 v2s32data; +}; + struct ClientEvent { ClientEventType type; @@ -93,38 +118,12 @@ struct ClientEvent { u32 id; } delete_particlespawner; - struct - { - u32 server_id; - u8 type; - v2f *pos; - std::string *name; - v2f *scale; - std::string *text; - u32 number; - u32 item; - u32 dir; - v2f *align; - v2f *offset; - v3f *world_pos; - v2s32 *size; - s16 z_index; - std::string *text2; - } hudadd; + ClientEventHudAdd *hudadd; struct { u32 id; } hudrm; - struct - { - u32 id; - HudElementStat stat; - v2f *v2fdata; - std::string *sdata; - u32 data; - v3f *v3fdata; - v2s32 *v2s32data; - } hudchange; + ClientEventHudChange *hudchange; SkyboxParams *set_sky; struct { diff --git a/src/client/clientmap.cpp b/src/client/clientmap.cpp index b9e0cc2ce..be8343009 100644 --- a/src/client/clientmap.cpp +++ b/src/client/clientmap.cpp @@ -165,6 +165,9 @@ void ClientMap::updateDrawList() v3s16 p_blocks_max; getBlocksInViewRange(cam_pos_nodes, &p_blocks_min, &p_blocks_max); + // Read the vision range, unless unlimited range is enabled. + float range = m_control.range_all ? 1e7 : m_control.wanted_range; + // Number of blocks currently loaded by the client u32 blocks_loaded = 0; // Number of blocks with mesh in rendering range @@ -182,6 +185,7 @@ void ClientMap::updateDrawList() occlusion_culling_enabled = false; } + // Uncomment to debug occluded blocks in the wireframe mode // TODO: Include this as a flag for an extended debugging setting //if (occlusion_culling_enabled && m_control.show_wireframe) @@ -218,32 +222,34 @@ void ClientMap::updateDrawList() continue; } - float range = 100000 * BS; - if (!m_control.range_all) - range = m_control.wanted_range * BS; + v3s16 block_coord = block->getPos(); + v3s16 block_position = block->getPosRelative() + MAP_BLOCKSIZE / 2; - float d = 0.0; - if (!isBlockInSight(block->getPos(), camera_position, - camera_direction, camera_fov, range, &d)) - continue; + // First, perform a simple distance check, with a padding of one extra block. + if (!m_control.range_all && + block_position.getDistanceFrom(cam_pos_nodes) > range + MAP_BLOCKSIZE) + continue; // Out of range, skip. + // Keep the block alive as long as it is in range. + block->resetUsageTimer(); blocks_in_range_with_mesh++; - /* - Occlusion culling - */ + // Frustum culling + float d = 0.0; + if (!isBlockInSight(block_coord, camera_position, + camera_direction, camera_fov, range * BS, &d)) + continue; + + // Occlusion culling if ((!m_control.range_all && d > m_control.wanted_range * BS) || (occlusion_culling_enabled && isBlockOccluded(block, cam_pos_nodes))) { blocks_occlusion_culled++; continue; } - // This block is in range. Reset usage timer. - block->resetUsageTimer(); - // Add to set block->refGrab(); - m_drawlist[block->getPos()] = block; + m_drawlist[block_coord] = block; sector_blocks_drawn++; } // foreach sectorblocks @@ -282,8 +288,6 @@ void ClientMap::renderMap(video::IVideoDriver* driver, s32 pass) const u32 daynight_ratio = m_client->getEnv().getDayNightRatio(); const v3f camera_position = m_camera_position; - const v3f camera_direction = m_camera_direction; - const f32 camera_fov = m_camera_fov; /* Get all blocks and draw all visible ones @@ -310,11 +314,10 @@ void ClientMap::renderMap(video::IVideoDriver* driver, s32 pass) if (!block->mesh) continue; - float d = 0.0; - if (!isBlockInSight(block->getPos(), camera_position, - camera_direction, camera_fov, 100000 * BS, &d)) - continue; - + v3f block_pos_r = intToFloat(block->getPosRelative() + MAP_BLOCKSIZE / 2, BS); + float d = camera_position.getDistanceFrom(block_pos_r); + d = MYMAX(0,d - BLOCK_MAX_RADIUS); + // Mesh animation if (pass == scene::ESNRP_SOLID) { //MutexAutoLock lock(block->mesh_mutex); diff --git a/src/client/content_cao.cpp b/src/client/content_cao.cpp index c65977b44..97ae9afc4 100644 --- a/src/client/content_cao.cpp +++ b/src/client/content_cao.cpp @@ -934,7 +934,7 @@ void GenericCAO::updateNametag() if (m_is_local_player) // No nametag for local player return; - if (m_prop.nametag.empty()) { + if (m_prop.nametag.empty() || m_prop.nametag_color.getAlpha() == 0) { // Delete nametag if (m_nametag) { m_client->getCamera()->removeNametag(m_nametag); @@ -952,12 +952,14 @@ void GenericCAO::updateNametag() if (!m_nametag) { // Add nametag m_nametag = m_client->getCamera()->addNametag(node, - m_prop.nametag, m_prop.nametag_color, pos); + m_prop.nametag, m_prop.nametag_color, + m_prop.nametag_bgcolor, pos); } else { // Update nametag - m_nametag->nametag_text = m_prop.nametag; - m_nametag->nametag_color = m_prop.nametag_color; - m_nametag->nametag_pos = pos; + m_nametag->text = m_prop.nametag; + m_nametag->textcolor = m_prop.nametag_color; + m_nametag->bgcolor = m_prop.nametag_bgcolor; + m_nametag->pos = pos; } } diff --git a/src/client/game.cpp b/src/client/game.cpp index 3c58fb46f..31c782c51 100644 --- a/src/client/game.cpp +++ b/src/client/game.cpp @@ -68,6 +68,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "util/pointedthing.h" #include "util/quicktune_shortcutter.h" #include "irrlicht_changes/static_text.h" +#include "irr_ptr.h" #include "version.h" #include "script/scripting_client.h" #include "hud.h" @@ -425,6 +426,7 @@ class GameGlobalShaderConstantSetter : public IShaderConstantSetter CachedPixelShaderSetting<float, 3> m_camera_offset_pixel; CachedPixelShaderSetting<float, 3> m_camera_offset_vertex; CachedPixelShaderSetting<SamplerLayer_t> m_base_texture; + CachedPixelShaderSetting<SamplerLayer_t> m_normal_texture; Client *m_client; public: @@ -458,6 +460,7 @@ public: m_camera_offset_pixel("cameraOffset"), m_camera_offset_vertex("cameraOffset"), m_base_texture("baseTexture"), + m_normal_texture("normalTexture"), m_client(client) { g_settings->registerChangedCallback("enable_fog", settingsCallback, this); @@ -545,8 +548,9 @@ public: m_camera_offset_pixel.set(camera_offset_array, services); m_camera_offset_vertex.set(camera_offset_array, services); - SamplerLayer_t base_tex = 0; + SamplerLayer_t base_tex = 0, normal_tex = 1; m_base_texture.set(&base_tex, services); + m_normal_texture.set(&normal_tex, services); } }; @@ -647,6 +651,8 @@ struct ClientEventHandler THE GAME ****************************************************************************/ +using PausedNodesList = std::vector<std::pair<irr_ptr<scene::IAnimatedMeshSceneNode>, float>>; + /* This is not intended to be a public class. If a public class becomes * desirable then it may be better to create another 'wrapper' class that * hides most of the stuff in this class (nothing in this class is required @@ -796,6 +802,9 @@ private: void showDeathFormspec(); void showPauseMenu(); + void pauseAnimation(); + void resumeAnimation(); + // ClientEvent handlers void handleClientEvent_None(ClientEvent *event, CameraOrientation *cam); void handleClientEvent_PlayerDamage(ClientEvent *event, CameraOrientation *cam); @@ -823,6 +832,8 @@ private: const NodeMetadata *meta); static const ClientEventHandler clientEventHandler[CLIENTEVENT_MAX]; + f32 getSensitivityScaleFactor() const; + InputHandler *input = nullptr; Client *client = nullptr; @@ -856,6 +867,9 @@ private: Hud *hud = nullptr; Minimap *mapper = nullptr; + // Map server hud ids to client hud ids + std::unordered_map<u32, u32> m_hud_server_to_client; + GameRunData runData; Flags m_flags; @@ -870,6 +884,7 @@ private: std::string *error_message; bool *reconnect_requested; scene::ISceneNode *skybox; + PausedNodesList paused_animated_nodes; bool simple_singleplayer_mode; /* End 'cache' */ @@ -2331,7 +2346,6 @@ void Game::checkZoomEnabled() m_game_ui->showTranslatedStatusText("Zoom currently disabled by game or mod"); } - void Game::updateCameraDirection(CameraOrientation *cam, float dtime) { if ((device->isWindowActive() && device->isWindowFocused() @@ -2367,6 +2381,18 @@ void Game::updateCameraDirection(CameraOrientation *cam, float dtime) } } +// Get the factor to multiply with sensitivity to get the same mouse/joystick +// responsiveness independently of FOV. +f32 Game::getSensitivityScaleFactor() const +{ + f32 fov_y = client->getCamera()->getFovY(); + + // Multiply by a constant such that it becomes 1.0 at 72 degree FOV and + // 16:9 aspect ratio to minimize disruption of existing sensitivity + // settings. + return tan(fov_y / 2.0f) * 1.3763818698f; +} + void Game::updateCameraOrientation(CameraOrientation *cam, float dtime) { #ifdef HAVE_TOUCHSCREENGUI @@ -2382,8 +2408,9 @@ void Game::updateCameraOrientation(CameraOrientation *cam, float dtime) dist.Y = -dist.Y; } - cam->camera_yaw -= dist.X * m_cache_mouse_sensitivity; - cam->camera_pitch += dist.Y * m_cache_mouse_sensitivity; + f32 sens_scale = getSensitivityScaleFactor(); + cam->camera_yaw -= dist.X * m_cache_mouse_sensitivity * sens_scale; + cam->camera_pitch += dist.Y * m_cache_mouse_sensitivity * sens_scale; if (dist.X != 0 || dist.Y != 0) input->setMousePos(center.X, center.Y); @@ -2392,7 +2419,8 @@ void Game::updateCameraOrientation(CameraOrientation *cam, float dtime) #endif if (m_cache_enable_joysticks) { - f32 c = m_cache_joystick_frustum_sensitivity * (1.f / 32767.f) * dtime; + f32 sens_scale = getSensitivityScaleFactor(); + f32 c = m_cache_joystick_frustum_sensitivity * (1.f / 32767.f) * dtime * sens_scale; cam->camera_yaw -= input->joystick.getAxisWithoutDead(JA_FRUSTUM_HORIZONTAL) * c; cam->camera_pitch += input->joystick.getAxisWithoutDead(JA_FRUSTUM_VERTICAL) * c; } @@ -2415,7 +2443,7 @@ void Game::updatePlayerControl(const CameraOrientation &cam) input->isKeyDown(KeyType::LEFT), input->isKeyDown(KeyType::RIGHT), isKeyDown(KeyType::JUMP), - isKeyDown(KeyType::SPECIAL1), + isKeyDown(KeyType::AUX1), isKeyDown(KeyType::SNEAK), isKeyDown(KeyType::ZOOM), isKeyDown(KeyType::DIG), @@ -2432,7 +2460,7 @@ void Game::updatePlayerControl(const CameraOrientation &cam) ( (u32)(isKeyDown(KeyType::LEFT) & 0x1) << 2) | ( (u32)(isKeyDown(KeyType::RIGHT) & 0x1) << 3) | ( (u32)(isKeyDown(KeyType::JUMP) & 0x1) << 4) | - ( (u32)(isKeyDown(KeyType::SPECIAL1) & 0x1) << 5) | + ( (u32)(isKeyDown(KeyType::AUX1) & 0x1) << 5) | ( (u32)(isKeyDown(KeyType::SNEAK) & 0x1) << 6) | ( (u32)(isKeyDown(KeyType::DIG) & 0x1) << 7) | ( (u32)(isKeyDown(KeyType::PLACE) & 0x1) << 8) | @@ -2481,6 +2509,9 @@ inline void Game::step(f32 *dtime) if (can_be_and_is_paused) { // This is for a singleplayer server *dtime = 0; // No time passes } else { + if (simple_singleplayer_mode && !paused_animated_nodes.empty()) + resumeAnimation(); + if (server) server->step(*dtime); @@ -2488,6 +2519,33 @@ inline void Game::step(f32 *dtime) } } +static void pauseNodeAnimation(PausedNodesList &paused, scene::ISceneNode *node) { + if (!node) + return; + for (auto &&child: node->getChildren()) + pauseNodeAnimation(paused, child); + if (node->getType() != scene::ESNT_ANIMATED_MESH) + return; + auto animated_node = static_cast<scene::IAnimatedMeshSceneNode *>(node); + float speed = animated_node->getAnimationSpeed(); + if (!speed) + return; + paused.push_back({grab(animated_node), speed}); + animated_node->setAnimationSpeed(0.0f); +} + +void Game::pauseAnimation() +{ + pauseNodeAnimation(paused_animated_nodes, smgr->getRootSceneNode()); +} + +void Game::resumeAnimation() +{ + for (auto &&pair: paused_animated_nodes) + pair.first->setAnimationSpeed(pair.second); + paused_animated_nodes.clear(); +} + const ClientEventHandler Game::clientEventHandler[CLIENTEVENT_MAX] = { {&Game::handleClientEvent_None}, {&Game::handleClientEvent_PlayerDamage}, @@ -2602,132 +2660,100 @@ void Game::handleClientEvent_HandleParticleEvent(ClientEvent *event, void Game::handleClientEvent_HudAdd(ClientEvent *event, CameraOrientation *cam) { LocalPlayer *player = client->getEnv().getLocalPlayer(); - auto &hud_server_to_client = client->getHUDTranslationMap(); - u32 server_id = event->hudadd.server_id; + u32 server_id = event->hudadd->server_id; // ignore if we already have a HUD with that ID - auto i = hud_server_to_client.find(server_id); - if (i != hud_server_to_client.end()) { - delete event->hudadd.pos; - delete event->hudadd.name; - delete event->hudadd.scale; - delete event->hudadd.text; - delete event->hudadd.align; - delete event->hudadd.offset; - delete event->hudadd.world_pos; - delete event->hudadd.size; - delete event->hudadd.text2; + auto i = m_hud_server_to_client.find(server_id); + if (i != m_hud_server_to_client.end()) { + delete event->hudadd; return; } HudElement *e = new HudElement; - e->type = (HudElementType)event->hudadd.type; - e->pos = *event->hudadd.pos; - e->name = *event->hudadd.name; - e->scale = *event->hudadd.scale; - e->text = *event->hudadd.text; - e->number = event->hudadd.number; - e->item = event->hudadd.item; - e->dir = event->hudadd.dir; - e->align = *event->hudadd.align; - e->offset = *event->hudadd.offset; - e->world_pos = *event->hudadd.world_pos; - e->size = *event->hudadd.size; - e->z_index = event->hudadd.z_index; - e->text2 = *event->hudadd.text2; - hud_server_to_client[server_id] = player->addHud(e); - - delete event->hudadd.pos; - delete event->hudadd.name; - delete event->hudadd.scale; - delete event->hudadd.text; - delete event->hudadd.align; - delete event->hudadd.offset; - delete event->hudadd.world_pos; - delete event->hudadd.size; - delete event->hudadd.text2; + e->type = static_cast<HudElementType>(event->hudadd->type); + e->pos = event->hudadd->pos; + e->name = event->hudadd->name; + e->scale = event->hudadd->scale; + e->text = event->hudadd->text; + e->number = event->hudadd->number; + e->item = event->hudadd->item; + e->dir = event->hudadd->dir; + e->align = event->hudadd->align; + e->offset = event->hudadd->offset; + e->world_pos = event->hudadd->world_pos; + e->size = event->hudadd->size; + e->z_index = event->hudadd->z_index; + e->text2 = event->hudadd->text2; + m_hud_server_to_client[server_id] = player->addHud(e); + + delete event->hudadd; } void Game::handleClientEvent_HudRemove(ClientEvent *event, CameraOrientation *cam) { LocalPlayer *player = client->getEnv().getLocalPlayer(); - HudElement *e = player->removeHud(event->hudrm.id); - delete e; + + auto i = m_hud_server_to_client.find(event->hudrm.id); + if (i != m_hud_server_to_client.end()) { + HudElement *e = player->removeHud(i->second); + delete e; + m_hud_server_to_client.erase(i); + } + } void Game::handleClientEvent_HudChange(ClientEvent *event, CameraOrientation *cam) { LocalPlayer *player = client->getEnv().getLocalPlayer(); - u32 id = event->hudchange.id; - HudElement *e = player->getHud(id); + HudElement *e = nullptr; - if (e == NULL) { - delete event->hudchange.v3fdata; - delete event->hudchange.v2fdata; - delete event->hudchange.sdata; - delete event->hudchange.v2s32data; + auto i = m_hud_server_to_client.find(event->hudchange->id); + if (i != m_hud_server_to_client.end()) { + e = player->getHud(i->second); + } + + if (e == nullptr) { + delete event->hudchange; return; } - switch (event->hudchange.stat) { - case HUD_STAT_POS: - e->pos = *event->hudchange.v2fdata; - break; +#define CASE_SET(statval, prop, dataprop) \ + case statval: \ + e->prop = event->hudchange->dataprop; \ + break - case HUD_STAT_NAME: - e->name = *event->hudchange.sdata; - break; + switch (event->hudchange->stat) { + CASE_SET(HUD_STAT_POS, pos, v2fdata); - case HUD_STAT_SCALE: - e->scale = *event->hudchange.v2fdata; - break; + CASE_SET(HUD_STAT_NAME, name, sdata); - case HUD_STAT_TEXT: - e->text = *event->hudchange.sdata; - break; + CASE_SET(HUD_STAT_SCALE, scale, v2fdata); - case HUD_STAT_NUMBER: - e->number = event->hudchange.data; - break; + CASE_SET(HUD_STAT_TEXT, text, sdata); - case HUD_STAT_ITEM: - e->item = event->hudchange.data; - break; + CASE_SET(HUD_STAT_NUMBER, number, data); - case HUD_STAT_DIR: - e->dir = event->hudchange.data; - break; + CASE_SET(HUD_STAT_ITEM, item, data); - case HUD_STAT_ALIGN: - e->align = *event->hudchange.v2fdata; - break; + CASE_SET(HUD_STAT_DIR, dir, data); - case HUD_STAT_OFFSET: - e->offset = *event->hudchange.v2fdata; - break; + CASE_SET(HUD_STAT_ALIGN, align, v2fdata); - case HUD_STAT_WORLD_POS: - e->world_pos = *event->hudchange.v3fdata; - break; + CASE_SET(HUD_STAT_OFFSET, offset, v2fdata); - case HUD_STAT_SIZE: - e->size = *event->hudchange.v2s32data; - break; + CASE_SET(HUD_STAT_WORLD_POS, world_pos, v3fdata); - case HUD_STAT_Z_INDEX: - e->z_index = event->hudchange.data; - break; + CASE_SET(HUD_STAT_SIZE, size, v2s32data); - case HUD_STAT_TEXT2: - e->text2 = *event->hudchange.sdata; - break; + CASE_SET(HUD_STAT_Z_INDEX, z_index, data); + + CASE_SET(HUD_STAT_TEXT2, text2, sdata); } - delete event->hudchange.v3fdata; - delete event->hudchange.v2fdata; - delete event->hudchange.sdata; - delete event->hudchange.v2s32data; +#undef CASE_SET + + delete event->hudchange; } void Game::handleClientEvent_SetSky(ClientEvent *event, CameraOrientation *cam) @@ -3279,7 +3305,8 @@ bool Game::nodePlacement(const ItemDefinition &selected_def, const ItemStack &selected_item, const v3s16 &nodepos, const v3s16 &neighbourpos, const PointedThing &pointed, const NodeMetadata *meta) { - std::string prediction = selected_def.node_placement_prediction; + const auto &prediction = selected_def.node_placement_prediction; + const NodeDefManager *nodedef = client->ndef(); ClientMap &map = client->getEnv().getClientMap(); MapNode node; @@ -3349,8 +3376,7 @@ bool Game::nodePlacement(const ItemDefinition &selected_def, if (!found) { errorstream << "Node placement prediction failed for " - << selected_def.name << " (places " - << prediction + << selected_def.name << " (places " << prediction << ") - Name not known" << std::endl; // Handle this as if prediction was empty // Report to server @@ -3361,9 +3387,14 @@ bool Game::nodePlacement(const ItemDefinition &selected_def, const ContentFeatures &predicted_f = nodedef->get(id); // Predict param2 for facedir and wallmounted nodes + // Compare core.item_place_node() for what the server does u8 param2 = 0; - if (predicted_f.param_type_2 == CPT2_WALLMOUNTED || + const u8 place_param2 = selected_def.place_param2; + + if (place_param2) { + param2 = place_param2; + } else if (predicted_f.param_type_2 == CPT2_WALLMOUNTED || predicted_f.param_type_2 == CPT2_COLORED_WALLMOUNTED) { v3s16 dir = nodepos - neighbourpos; @@ -3374,9 +3405,7 @@ bool Game::nodePlacement(const ItemDefinition &selected_def, } else { param2 = dir.Z < 0 ? 5 : 4; } - } - - if (predicted_f.param_type_2 == CPT2_FACEDIR || + } else if (predicted_f.param_type_2 == CPT2_FACEDIR || predicted_f.param_type_2 == CPT2_COLORED_FACEDIR) { v3s16 dir = nodepos - floatToInt(client->getEnv().getLocalPlayer()->getPosition(), BS); @@ -3387,11 +3416,9 @@ bool Game::nodePlacement(const ItemDefinition &selected_def, } } - assert(param2 <= 5); - - //Check attachment if node is in group attached_node - if (((ItemGroupList) predicted_f.groups)["attached_node"] != 0) { - static v3s16 wallmounted_dirs[8] = { + // Check attachment if node is in group attached_node + if (itemgroup_get(predicted_f.groups, "attached_node") != 0) { + const static v3s16 wallmounted_dirs[8] = { v3s16(0, 1, 0), v3s16(0, -1, 0), v3s16(1, 0, 0), @@ -3416,11 +3443,11 @@ bool Game::nodePlacement(const ItemDefinition &selected_def, } // Apply color - if ((predicted_f.param_type_2 == CPT2_COLOR + if (!place_param2 && (predicted_f.param_type_2 == CPT2_COLOR || predicted_f.param_type_2 == CPT2_COLORED_FACEDIR || predicted_f.param_type_2 == CPT2_COLORED_WALLMOUNTED)) { - const std::string &indexstr = selected_item.metadata.getString( - "palette_index", 0); + const auto &indexstr = selected_item.metadata. + getString("palette_index", 0); if (!indexstr.empty()) { s32 index = mystoi(indexstr); if (predicted_f.param_type_2 == CPT2_COLOR) { @@ -3460,11 +3487,10 @@ bool Game::nodePlacement(const ItemDefinition &selected_def, soundmaker->m_player_rightpunch_sound = selected_def.sound_place_failed; return false; } - } catch (InvalidPositionException &e) { + } catch (const InvalidPositionException &e) { errorstream << "Node placement prediction failed for " << selected_def.name << " (places " - << prediction - << ") - Position not loaded" << std::endl; + << prediction << ") - Position not loaded" << std::endl; soundmaker->m_player_rightpunch_sound = selected_def.sound_place_failed; return false; } @@ -4218,6 +4244,9 @@ void Game::showPauseMenu() fs_src, txt_dst, client->getFormspecPrepend(), sound); formspec->setFocus("btn_continue"); formspec->doPause = true; + + if (simple_singleplayer_mode) + pauseAnimation(); } /****************************************************************************/ diff --git a/src/client/guiscalingfilter.cpp b/src/client/guiscalingfilter.cpp index 406c096e6..8c565a52f 100644 --- a/src/client/guiscalingfilter.cpp +++ b/src/client/guiscalingfilter.cpp @@ -129,7 +129,7 @@ video::ITexture *guiScalingResizeCached(video::IVideoDriver *driver, #endif // Convert the scaled image back into a texture. - scaled = driver->addTexture(scalename, destimg, NULL); + scaled = driver->addTexture(scalename, destimg); destimg->drop(); g_txrCache[scalename] = scaled; diff --git a/src/client/hud.cpp b/src/client/hud.cpp index 46736b325..74c1828e3 100644 --- a/src/client/hud.cpp +++ b/src/client/hud.cpp @@ -950,7 +950,7 @@ void drawItemStack( if (imesh && imesh->mesh) { scene::IMesh *mesh = imesh->mesh; - driver->clearZBuffer(); + driver->clearBuffers(video::ECBF_DEPTH); s32 delta = 0; if (rotation_kind < IT_ROT_NONE) { MeshTimeInfo &ti = rotation_time_infos[rotation_kind]; diff --git a/src/client/inputhandler.cpp b/src/client/inputhandler.cpp index 608a405a8..b7e70fa6c 100644 --- a/src/client/inputhandler.cpp +++ b/src/client/inputhandler.cpp @@ -35,7 +35,7 @@ void KeyCache::populate() key[KeyType::LEFT] = getKeySetting("keymap_left"); key[KeyType::RIGHT] = getKeySetting("keymap_right"); key[KeyType::JUMP] = getKeySetting("keymap_jump"); - key[KeyType::SPECIAL1] = getKeySetting("keymap_special1"); + key[KeyType::AUX1] = getKeySetting("keymap_aux1"); key[KeyType::SNEAK] = getKeySetting("keymap_sneak"); key[KeyType::DIG] = getKeySetting("keymap_dig"); key[KeyType::PLACE] = getKeySetting("keymap_place"); @@ -113,17 +113,12 @@ bool MyEventReceiver::OnEvent(const SEvent &event) if (event.EventType == irr::EET_KEY_INPUT_EVENT) { const KeyPress &keyCode = event.KeyInput; if (keysListenedFor[keyCode]) { - // If the key is being held down then the OS may - // send a continuous stream of keydown events. - // In this case, we don't want to let this - // stream reach the application as it will cause - // certain actions to repeat constantly. if (event.KeyInput.PressedDown) { - if (!IsKeyDown(keyCode)) { - keyWasDown.set(keyCode); + if (!IsKeyDown(keyCode)) keyWasPressed.set(keyCode); - } + keyIsDown.set(keyCode); + keyWasDown.set(keyCode); } else { if (IsKeyDown(keyCode)) keyWasReleased.set(keyCode); @@ -224,7 +219,7 @@ void RandomInputHandler::step(float dtime) { static RandomInputHandlerSimData rnd_data[] = { { "keymap_jump", 0.0f, 40 }, - { "keymap_special1", 0.0f, 40 }, + { "keymap_aux1", 0.0f, 40 }, { "keymap_forward", 0.0f, 40 }, { "keymap_left", 0.0f, 40 }, { "keymap_dig", 0.0f, 30 }, diff --git a/src/client/inputhandler.h b/src/client/inputhandler.h index 7487bbdc7..1fb4cf0ec 100644 --- a/src/client/inputhandler.h +++ b/src/client/inputhandler.h @@ -201,7 +201,7 @@ private: // The current state of keys KeyList keyIsDown; - // Whether a key was down + // Like keyIsDown but only reset when that key is read KeyList keyWasDown; // Whether a key has just been pressed diff --git a/src/client/joystick_controller.cpp b/src/client/joystick_controller.cpp index f61ae4ae6..919db5315 100644 --- a/src/client/joystick_controller.cpp +++ b/src/client/joystick_controller.cpp @@ -79,7 +79,7 @@ JoystickLayout create_default_layout() // Accessible without any modifier pressed JLO_B_PB(KeyType::JUMP, bm | 1 << 0, 1 << 0); - JLO_B_PB(KeyType::SPECIAL1, bm | 1 << 1, 1 << 1); + JLO_B_PB(KeyType::AUX1, bm | 1 << 1, 1 << 1); // Accessible with start button not pressed, but four pressed // TODO find usage for button 0 @@ -126,11 +126,11 @@ JoystickLayout create_xbox_layout() // 4 Buttons JLO_B_PB(KeyType::JUMP, 1 << 0, 1 << 0); // A/green JLO_B_PB(KeyType::ESC, 1 << 1, 1 << 1); // B/red - JLO_B_PB(KeyType::SPECIAL1, 1 << 2, 1 << 2); // X/blue + JLO_B_PB(KeyType::AUX1, 1 << 2, 1 << 2); // X/blue JLO_B_PB(KeyType::INVENTORY, 1 << 3, 1 << 3); // Y/yellow // Analog Sticks - JLO_B_PB(KeyType::SPECIAL1, 1 << 11, 1 << 11); // left + JLO_B_PB(KeyType::AUX1, 1 << 11, 1 << 11); // left JLO_B_PB(KeyType::SNEAK, 1 << 12, 1 << 12); // right // Triggers diff --git a/src/client/keys.h b/src/client/keys.h index 60a7a3c45..9f90da6b8 100644 --- a/src/client/keys.h +++ b/src/client/keys.h @@ -32,7 +32,7 @@ public: LEFT, RIGHT, JUMP, - SPECIAL1, + AUX1, SNEAK, AUTOFORWARD, DIG, diff --git a/src/client/mapblock_mesh.cpp b/src/client/mapblock_mesh.cpp index d78a86b2d..167e1e3ec 100644 --- a/src/client/mapblock_mesh.cpp +++ b/src/client/mapblock_mesh.cpp @@ -404,7 +404,7 @@ static void getNodeVertexDirs(const v3s16 &dir, v3s16 *vertex_dirs) static void getNodeTextureCoords(v3f base, const v3f &scale, const v3s16 &dir, float *u, float *v) { - if (dir.X > 0 || dir.Y > 0 || dir.Z < 0) + if (dir.X > 0 || dir.Y != 0 || dir.Z < 0) base -= scale; if (dir == v3s16(0,0,1)) { *u = -base.X - 1; @@ -422,8 +422,8 @@ static void getNodeTextureCoords(v3f base, const v3f &scale, const v3s16 &dir, f *u = base.X + 1; *v = -base.Z - 2; } else if (dir == v3s16(0,-1,0)) { - *u = base.X; - *v = base.Z; + *u = base.X + 1; + *v = base.Z + 1; } } diff --git a/src/client/minimap.cpp b/src/client/minimap.cpp index c6ccf86e8..dd810ee0a 100644 --- a/src/client/minimap.cpp +++ b/src/client/minimap.cpp @@ -304,7 +304,7 @@ void Minimap::setModeIndex(size_t index) data->mode = m_modes[index]; m_current_mode_index = index; } else { - data->mode = MinimapModeDef{MINIMAP_TYPE_OFF, N_("Minimap hidden"), 0, 0, ""}; + data->mode = MinimapModeDef{MINIMAP_TYPE_OFF, gettext("Minimap hidden"), 0, 0, ""}; m_current_mode_index = 0; } @@ -330,25 +330,26 @@ void Minimap::addMode(MinimapModeDef mode) if (mode.label == "") { switch (mode.type) { case MINIMAP_TYPE_OFF: - mode.label = N_("Minimap hidden"); + mode.label = gettext("Minimap hidden"); break; case MINIMAP_TYPE_SURFACE: - mode.label = N_("Minimap in surface mode, Zoom x%d"); + mode.label = gettext("Minimap in surface mode, Zoom x%d"); if (mode.map_size > 0) zoom = 256 / mode.map_size; break; case MINIMAP_TYPE_RADAR: - mode.label = N_("Minimap in radar mode, Zoom x%d"); + mode.label = gettext("Minimap in radar mode, Zoom x%d"); if (mode.map_size > 0) zoom = 512 / mode.map_size; break; case MINIMAP_TYPE_TEXTURE: - mode.label = N_("Minimap in texture mode"); + mode.label = gettext("Minimap in texture mode"); break; default: break; } } + // else: Custom labels need mod-provided client-side translation if (zoom >= 0) { char label_buf[1024]; diff --git a/src/client/render/anaglyph.cpp b/src/client/render/anaglyph.cpp index 9ba4464a2..153e77400 100644 --- a/src/client/render/anaglyph.cpp +++ b/src/client/render/anaglyph.cpp @@ -40,7 +40,7 @@ void RenderingCoreAnaglyph::setupMaterial(int color_mask) void RenderingCoreAnaglyph::useEye(bool right) { RenderingCoreStereo::useEye(right); - driver->clearZBuffer(); + driver->clearBuffers(video::ECBF_DEPTH); setupMaterial(right ? video::ECP_GREEN | video::ECP_BLUE : video::ECP_RED); } diff --git a/src/client/render/interlaced.cpp b/src/client/render/interlaced.cpp index ce8e92f21..3f79a8eb5 100644 --- a/src/client/render/interlaced.cpp +++ b/src/client/render/interlaced.cpp @@ -35,7 +35,11 @@ void RenderingCoreInterlaced::initMaterial() IShaderSource *s = client->getShaderSource(); mat.UseMipMaps = false; mat.ZBuffer = false; +#if IRRLICHT_VERSION_MAJOR == 1 && IRRLICHT_VERSION_MINOR > 8 + mat.ZWriteEnable = video::EZW_OFF; +#else mat.ZWriteEnable = false; +#endif u32 shader = s->getShader("3d_interlaced_merge", TILE_MATERIAL_BASIC); mat.MaterialType = s->getShaderInfo(shader).material; for (int k = 0; k < 3; ++k) { diff --git a/src/client/renderingengine.cpp b/src/client/renderingengine.cpp index 99ff8c1ee..4f59bbae3 100644 --- a/src/client/renderingengine.cpp +++ b/src/client/renderingengine.cpp @@ -118,6 +118,8 @@ RenderingEngine::RenderingEngine(IEventReceiver *receiver) } SIrrlichtCreationParameters params = SIrrlichtCreationParameters(); + if (g_logger.getTraceEnabled()) + params.LoggingLevel = irr::ELL_DEBUG; params.DriverType = driverType; params.WindowSize = core::dimension2d<u32>(screen_w, screen_h); params.Bits = bits; @@ -325,9 +327,11 @@ static bool getWindowHandle(irr::video::IVideoDriver *driver, HWND &hWnd) const video::SExposedVideoData exposedData = driver->getExposedVideoData(); switch (driver->getDriverType()) { +#if IRRLICHT_VERSION_MAJOR == 1 && IRRLICHT_VERSION_MINOR < 9 case video::EDT_DIRECT3D8: hWnd = reinterpret_cast<HWND>(exposedData.D3D8.HWnd); break; +#endif case video::EDT_DIRECT3D9: hWnd = reinterpret_cast<HWND>(exposedData.D3D9.HWnd); break; diff --git a/src/client/shader.h b/src/client/shader.h index 38ab76704..49a563115 100644 --- a/src/client/shader.h +++ b/src/client/shader.h @@ -96,9 +96,10 @@ public: if (has_been_set && std::equal(m_sent, m_sent + count, value)) return; if (is_pixel) - services->setPixelShaderConstant(m_name, value, count); + services->setPixelShaderConstant(services->getPixelShaderConstantID(m_name), value, count); else - services->setVertexShaderConstant(m_name, value, count); + services->setVertexShaderConstant(services->getVertexShaderConstantID(m_name), value, count); + std::copy(value, value + count, m_sent); has_been_set = true; } diff --git a/src/client/sky.cpp b/src/client/sky.cpp index 3a40321dd..caf695e7a 100644 --- a/src/client/sky.cpp +++ b/src/client/sky.cpp @@ -39,12 +39,13 @@ static video::SMaterial baseMaterial() { video::SMaterial mat; mat.Lighting = false; -#if ENABLE_GLES +#if IRRLICHT_VERSION_MAJOR == 1 && IRRLICHT_VERSION_MINOR > 8 mat.ZBuffer = video::ECFN_DISABLED; + mat.ZWriteEnable = video::EZW_OFF; #else + mat.ZWriteEnable = false; mat.ZBuffer = video::ECFN_NEVER; #endif - mat.ZWriteEnable = false; mat.AntiAliasing = 0; mat.TextureLayer[0].TextureWrapU = video::ETC_CLAMP_TO_EDGE; mat.TextureLayer[0].TextureWrapV = video::ETC_CLAMP_TO_EDGE; diff --git a/src/client/sound_openal.cpp b/src/client/sound_openal.cpp index f4e61f93e..8dceeede6 100644 --- a/src/client/sound_openal.cpp +++ b/src/client/sound_openal.cpp @@ -671,8 +671,8 @@ public: alSourcei(sound->source_id, AL_SOURCE_RELATIVE, false); alSource3f(sound->source_id, AL_POSITION, pos.X, pos.Y, pos.Z); - alSource3f(sound->source_id, AL_VELOCITY, 0, 0, 0); - alSourcef(sound->source_id, AL_REFERENCE_DISTANCE, 30.0); + alSource3f(sound->source_id, AL_VELOCITY, 0.0f, 0.0f, 0.0f); + alSourcef(sound->source_id, AL_REFERENCE_DISTANCE, 10.0f); } bool updateSoundGain(int id, float gain) diff --git a/src/client/tile.cpp b/src/client/tile.cpp index aad956ada..7e3901247 100644 --- a/src/client/tile.cpp +++ b/src/client/tile.cpp @@ -837,17 +837,16 @@ static video::IImage *createInventoryCubeImage( image = scaled; } sanity_check(image->getPitch() == 4 * size); - return reinterpret_cast<u32 *>(image->lock()); + return reinterpret_cast<u32 *>(image->getData()); }; auto free_image = [] (video::IImage *image) -> void { - image->unlock(); image->drop(); }; video::IImage *result = driver->createImage(video::ECF_A8R8G8B8, {cube_size, cube_size}); sanity_check(result->getPitch() == 4 * cube_size); result->fill(video::SColor(0x00000000u)); - u32 *target = reinterpret_cast<u32 *>(result->lock()); + u32 *target = reinterpret_cast<u32 *>(result->getData()); // Draws single cube face // `shade_factor` is face brightness, in range [0.0, 1.0] @@ -906,7 +905,6 @@ static video::IImage *createInventoryCubeImage( {0, 5}, {1, 5}, }); - result->unlock(); return result; } @@ -2224,9 +2222,14 @@ video::SColor TextureSource::getTextureAverageColor(const std::string &name) video::IVideoDriver *driver = RenderingEngine::get_video_driver(); video::SColor c(0, 0, 0, 0); video::ITexture *texture = getTexture(name); + if (!texture) + return c; video::IImage *image = driver->createImage(texture, core::position2d<s32>(0, 0), texture->getOriginalSize()); + if (!image) + return c; + u32 total = 0; u32 tR = 0; u32 tG = 0; diff --git a/src/client/wieldmesh.cpp b/src/client/wieldmesh.cpp index ad583210a..387eb17c3 100644 --- a/src/client/wieldmesh.cpp +++ b/src/client/wieldmesh.cpp @@ -294,7 +294,7 @@ void WieldMeshSceneNode::setExtruded(const std::string &imagename, } material.setFlag(video::EMF_ANISOTROPIC_FILTER, m_anisotropic_filter); // mipmaps cause "thin black line" artifacts -#if (IRRLICHT_VERSION_MAJOR >= 1 && IRRLICHT_VERSION_MINOR >= 8) || IRRLICHT_VERSION_MAJOR >= 2 +#if (IRRLICHT_VERSION_MAJOR == 1 && IRRLICHT_VERSION_MINOR >= 8) || IRRLICHT_VERSION_MAJOR >= 2 material.setFlag(video::EMF_USE_MIP_MAPS, false); #endif if (m_enable_shaders) { @@ -303,23 +303,26 @@ void WieldMeshSceneNode::setExtruded(const std::string &imagename, } } -scene::SMesh *createSpecialNodeMesh(Client *client, content_t id, std::vector<ItemPartColor> *colors, const ContentFeatures &f) +static scene::SMesh *createSpecialNodeMesh(Client *client, MapNode n, + std::vector<ItemPartColor> *colors, const ContentFeatures &f) { MeshMakeData mesh_make_data(client, false); MeshCollector collector; mesh_make_data.setSmoothLighting(false); MapblockMeshGenerator gen(&mesh_make_data, &collector); - u8 param2 = 0; - if (f.param_type_2 == CPT2_WALLMOUNTED || + + if (n.getParam2()) { + // keep it + } else if (f.param_type_2 == CPT2_WALLMOUNTED || f.param_type_2 == CPT2_COLORED_WALLMOUNTED) { if (f.drawtype == NDT_TORCHLIKE) - param2 = 1; + n.setParam2(1); else if (f.drawtype == NDT_SIGNLIKE || f.drawtype == NDT_NODEBOX || f.drawtype == NDT_MESH) - param2 = 4; + n.setParam2(4); } - gen.renderSingle(id, param2); + gen.renderSingle(n.getContent(), n.getParam2()); colors->clear(); scene::SMesh *mesh = new scene::SMesh(); @@ -413,9 +416,12 @@ void WieldMeshSceneNode::setItem(const ItemStack &item, Client *client, bool che case NDT_LIQUID: setCube(f, def.wield_scale); break; - default: + default: { // Render non-trivial drawtypes like the actual node - mesh = createSpecialNodeMesh(client, id, &m_colors, f); + MapNode n(id); + n.setParam2(def.place_param2); + + mesh = createSpecialNodeMesh(client, n, &m_colors, f); changeToMesh(mesh); mesh->drop(); m_meshnode->setScale( @@ -423,6 +429,7 @@ void WieldMeshSceneNode::setItem(const ItemStack &item, Client *client, bool che / (BS * f.visual_scale)); break; } + } u32 material_count = m_meshnode->getMaterialCount(); for (u32 i = 0; i < material_count; ++i) { @@ -585,12 +592,16 @@ void getItemMesh(Client *client, const ItemStack &item, ItemMesh *result) result->buffer_colors.emplace_back(l0.has_color, l0.color); break; } - default: + default: { // Render non-trivial drawtypes like the actual node - mesh = createSpecialNodeMesh(client, id, &result->buffer_colors, f); + MapNode n(id); + n.setParam2(def.place_param2); + + mesh = createSpecialNodeMesh(client, n, &result->buffer_colors, f); scaleMesh(mesh, v3f(0.12, 0.12, 0.12)); break; } + } u32 mc = mesh->getMeshBufferCount(); for (u32 i = 0; i < mc; ++i) { diff --git a/src/content/mods.cpp b/src/content/mods.cpp index 95ab0290a..434004b29 100644 --- a/src/content/mods.cpp +++ b/src/content/mods.cpp @@ -28,6 +28,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "settings.h" #include "porting.h" #include "convert_json.h" +#include "script/common/c_internal.h" bool parseDependsString(std::string &dep, std::unordered_set<char> &symbols) { @@ -44,20 +45,24 @@ bool parseDependsString(std::string &dep, std::unordered_set<char> &symbols) return !dep.empty(); } -void parseModContents(ModSpec &spec) +static void log_mod_deprecation(const ModSpec &spec, const std::string &warning) { - // NOTE: this function works in mutual recursion with getModsInPath - Settings info; - info.readConfigFile((spec.path + DIR_DELIM + "mod.conf").c_str()); - - if (info.exists("name")) - spec.name = info.get("name"); + auto handling_mode = get_deprecated_handling_mode(); + if (handling_mode != DeprecatedHandlingMode::Ignore) { + std::ostringstream os; + os << warning << " (" << spec.name << " at " << spec.path << ")" << std::endl; - if (info.exists("author")) - spec.author = info.get("author"); + if (handling_mode == DeprecatedHandlingMode::Error) { + throw ModError(os.str()); + } else { + warningstream << os.str(); + } + } +} - if (info.exists("release")) - spec.release = info.getS32("release"); +void parseModContents(ModSpec &spec) +{ + // NOTE: this function works in mutual recursion with getModsInPath spec.depends.clear(); spec.optdepends.clear(); @@ -78,6 +83,20 @@ void parseModContents(ModSpec &spec) spec.modpack_content = getModsInPath(spec.path, true); } else { + Settings info; + info.readConfigFile((spec.path + DIR_DELIM + "mod.conf").c_str()); + + if (info.exists("name")) + spec.name = info.get("name"); + else + log_mod_deprecation(spec, "Mods not having a mod.conf file with the name is deprecated."); + + if (info.exists("author")) + spec.author = info.get("author"); + + if (info.exists("release")) + spec.release = info.getS32("release"); + // Attempt to load dependencies from mod.conf bool mod_conf_has_depends = false; if (info.exists("depends")) { @@ -109,6 +128,10 @@ void parseModContents(ModSpec &spec) std::vector<std::string> dependencies; std::ifstream is((spec.path + DIR_DELIM + "depends.txt").c_str()); + + if (is.good()) + log_mod_deprecation(spec, "depends.txt is deprecated, please use mod.conf instead."); + while (is.good()) { std::string dep; std::getline(is, dep); @@ -127,14 +150,10 @@ void parseModContents(ModSpec &spec) } } - if (info.exists("description")) { + if (info.exists("description")) spec.desc = info.get("description"); - } else { - std::ifstream is((spec.path + DIR_DELIM + "description.txt") - .c_str()); - spec.desc = std::string((std::istreambuf_iterator<char>(is)), - std::istreambuf_iterator<char>()); - } + else if (fs::ReadFile(spec.path + DIR_DELIM + "description.txt", spec.desc)) + log_mod_deprecation(spec, "description.txt is deprecated, please use mod.conf instead."); } } diff --git a/src/convert_json.cpp b/src/convert_json.cpp index c774aa002..e9ff1e56c 100644 --- a/src/convert_json.cpp +++ b/src/convert_json.cpp @@ -68,12 +68,17 @@ Json::Value fetchJsonValue(const std::string &url, return root; } -std::string fastWriteJson(const Json::Value &value) +void fastWriteJson(const Json::Value &value, std::ostream &to) { - std::ostringstream oss; Json::StreamWriterBuilder builder; builder["indentation"] = ""; std::unique_ptr<Json::StreamWriter> writer(builder.newStreamWriter()); - writer->write(value, &oss); + writer->write(value, &to); +} + +std::string fastWriteJson(const Json::Value &value) +{ + std::ostringstream oss; + fastWriteJson(value, oss); return oss.str(); } diff --git a/src/convert_json.h b/src/convert_json.h index d8825acdc..2c094a946 100644 --- a/src/convert_json.h +++ b/src/convert_json.h @@ -20,8 +20,11 @@ with this program; if not, write to the Free Software Foundation, Inc., #pragma once #include <json/json.h> +#include <ostream> Json::Value fetchJsonValue(const std::string &url, std::vector<std::string> *extra_headers); +void fastWriteJson(const Json::Value &value, std::ostream &to); + std::string fastWriteJson(const Json::Value &value); diff --git a/src/defaultsettings.cpp b/src/defaultsettings.cpp index 132e31d2b..d5bd56bc9 100644 --- a/src/defaultsettings.cpp +++ b/src/defaultsettings.cpp @@ -80,7 +80,7 @@ void set_default_settings() settings->setDefault("keymap_drop", "KEY_KEY_Q"); settings->setDefault("keymap_zoom", "KEY_KEY_Z"); settings->setDefault("keymap_inventory", "KEY_KEY_I"); - settings->setDefault("keymap_special1", "KEY_KEY_E"); + settings->setDefault("keymap_aux1", "KEY_KEY_E"); settings->setDefault("keymap_chat", "KEY_KEY_T"); settings->setDefault("keymap_cmd", "/"); settings->setDefault("keymap_cmd_local", "."); @@ -240,6 +240,7 @@ void set_default_settings() #endif settings->setDefault("enable_particles", "true"); settings->setDefault("arm_inertia", "true"); + settings->setDefault("show_nametag_backgrounds", "true"); settings->setDefault("enable_minimap", "true"); settings->setDefault("minimap_shape_round", "true"); @@ -466,7 +467,7 @@ void set_default_settings() settings->setDefault("touchtarget", "true"); settings->setDefault("touchscreen_threshold","20"); settings->setDefault("fixed_virtual_joystick", "false"); - settings->setDefault("virtual_joystick_triggers_aux", "false"); + settings->setDefault("virtual_joystick_triggers_aux1", "false"); settings->setDefault("smooth_lighting", "false"); settings->setDefault("max_simultaneous_block_sends_per_client", "10"); settings->setDefault("emergequeue_limit_diskonly", "16"); diff --git a/src/emerge.cpp b/src/emerge.cpp index e0dc5628e..32e7d9f24 100644 --- a/src/emerge.cpp +++ b/src/emerge.cpp @@ -113,13 +113,15 @@ EmergeParams::~EmergeParams() { infostream << "EmergeParams: destroying " << this << std::endl; // Delete everything that was cloned on creation of EmergeParams + delete biomegen; delete biomemgr; delete oremgr; delete decomgr; delete schemmgr; } -EmergeParams::EmergeParams(EmergeManager *parent, const BiomeManager *biomemgr, +EmergeParams::EmergeParams(EmergeManager *parent, const BiomeGen *biomegen, + const BiomeManager *biomemgr, const OreManager *oremgr, const DecorationManager *decomgr, const SchematicManager *schemmgr) : ndef(parent->ndef), @@ -129,6 +131,7 @@ EmergeParams::EmergeParams(EmergeManager *parent, const BiomeManager *biomemgr, biomemgr(biomemgr->clone()), oremgr(oremgr->clone()), decomgr(decomgr->clone()), schemmgr(schemmgr->clone()) { + this->biomegen = biomegen->clone(this->biomemgr); } //// @@ -143,6 +146,10 @@ EmergeManager::EmergeManager(Server *server) this->decomgr = new DecorationManager(server); this->schemmgr = new SchematicManager(server); + // initialized later + this->mgparams = nullptr; + this->biomegen = nullptr; + // Note that accesses to this variable are not synchronized. // This is because the *only* thread ever starting or stopping // EmergeThreads should be the ServerThread. @@ -240,9 +247,12 @@ void EmergeManager::initMapgens(MapgenParams *params) mgparams = params; + v3s16 csize = v3s16(1, 1, 1) * (params->chunksize * MAP_BLOCKSIZE); + biomegen = biomemgr->createBiomeGen(BIOMEGEN_ORIGINAL, params->bparams, csize); + for (u32 i = 0; i != m_threads.size(); i++) { - EmergeParams *p = new EmergeParams( - this, biomemgr, oremgr, decomgr, schemmgr); + EmergeParams *p = new EmergeParams(this, biomegen, + biomemgr, oremgr, decomgr, schemmgr); infostream << "EmergeManager: Created params " << p << " for thread " << i << std::endl; m_mapgens.push_back(Mapgen::createMapgen(params->mgtype, params, p)); diff --git a/src/emerge.h b/src/emerge.h index da845e243..aac3e7dd3 100644 --- a/src/emerge.h +++ b/src/emerge.h @@ -99,13 +99,15 @@ public: u32 gen_notify_on; const std::set<u32> *gen_notify_on_deco_ids; // shared + BiomeGen *biomegen; BiomeManager *biomemgr; OreManager *oremgr; DecorationManager *decomgr; SchematicManager *schemmgr; private: - EmergeParams(EmergeManager *parent, const BiomeManager *biomemgr, + EmergeParams(EmergeManager *parent, const BiomeGen *biomegen, + const BiomeManager *biomemgr, const OreManager *oremgr, const DecorationManager *decomgr, const SchematicManager *schemmgr); }; @@ -140,6 +142,8 @@ public: ~EmergeManager(); DISABLE_CLASS_COPY(EmergeManager); + const BiomeGen *getBiomeGen() const { return biomegen; } + // no usage restrictions const BiomeManager *getBiomeManager() const { return biomemgr; } const OreManager *getOreManager() const { return oremgr; } @@ -196,6 +200,7 @@ private: // Managers of various map generation-related components // Note that each Mapgen gets a copy(!) of these to work with + BiomeGen *biomegen; BiomeManager *biomemgr; OreManager *oremgr; DecorationManager *decomgr; diff --git a/src/gui/CMakeLists.txt b/src/gui/CMakeLists.txt index fdd36914a..5552cebea 100644 --- a/src/gui/CMakeLists.txt +++ b/src/gui/CMakeLists.txt @@ -23,7 +23,6 @@ set(gui_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/guiTable.cpp ${CMAKE_CURRENT_SOURCE_DIR}/guiHyperText.cpp ${CMAKE_CURRENT_SOURCE_DIR}/guiVolumeChange.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/intlGUIEditBox.cpp ${CMAKE_CURRENT_SOURCE_DIR}/modalMenu.cpp ${CMAKE_CURRENT_SOURCE_DIR}/profilergraph.cpp PARENT_SCOPE diff --git a/src/gui/guiButton.cpp b/src/gui/guiButton.cpp index b98e5de82..d6dbddf54 100644 --- a/src/gui/guiButton.cpp +++ b/src/gui/guiButton.cpp @@ -506,6 +506,13 @@ video::SColor GUIButton::getOverrideColor() const return OverrideColor;
}
+#if IRRLICHT_VERSION_MAJOR == 1 && IRRLICHT_VERSION_MINOR > 8
+video::SColor GUIButton::getActiveColor() const
+{
+ return video::SColor(0,0,0,0); // unused?
+}
+#endif
+
void GUIButton::enableOverrideColor(bool enable)
{
OverrideColorEnabled = enable;
diff --git a/src/gui/guiButton.h b/src/gui/guiButton.h index 4e1b04aac..834405f51 100644 --- a/src/gui/guiButton.h +++ b/src/gui/guiButton.h @@ -69,6 +69,12 @@ using namespace irr; class ISimpleTextureSource;
+#if (IRRLICHT_VERSION_MAJOR == 1 && IRRLICHT_VERSION_MINOR <= 8)
+#define OVERRIDE_19
+#else
+#define OVERRIDE_19 override
+#endif
+
class GUIButton : public gui::IGUIButton
{
public:
@@ -97,22 +103,27 @@ public: virtual gui::IGUIFont* getActiveFont() const override;
//! Sets another color for the button text.
- virtual void setOverrideColor(video::SColor color);
+ virtual void setOverrideColor(video::SColor color) OVERRIDE_19;
//! Gets the override color
- virtual video::SColor getOverrideColor(void) const;
+ virtual video::SColor getOverrideColor(void) const OVERRIDE_19;
+
+ #if IRRLICHT_VERSION_MAJOR == 1 && IRRLICHT_VERSION_MINOR > 8
+ //! Gets the currently used text color
+ virtual video::SColor getActiveColor() const override;
+ #endif
//! Sets if the button text should use the override color or the color in the gui skin.
- virtual void enableOverrideColor(bool enable);
+ virtual void enableOverrideColor(bool enable) OVERRIDE_19;
//! Checks if an override color is enabled
- virtual bool isOverrideColorEnabled(void) const;
+ virtual bool isOverrideColorEnabled(void) const OVERRIDE_19;
// PATCH
//! Sets an image which should be displayed on the button when it is in the given state.
virtual void setImage(gui::EGUI_BUTTON_IMAGE_STATE state,
video::ITexture* image=nullptr,
- const core::rect<s32>& sourceRect=core::rect<s32>(0,0,0,0));
+ const core::rect<s32>& sourceRect=core::rect<s32>(0,0,0,0)) OVERRIDE_19;
//! Sets an image which should be displayed on the button when it is in normal state.
virtual void setImage(video::ITexture* image=nullptr) override;
@@ -141,7 +152,7 @@ public: */
virtual void setSprite(gui::EGUI_BUTTON_STATE state, s32 index,
video::SColor color=video::SColor(255,255,255,255),
- bool loop=false, bool scale=false);
+ bool loop=false, bool scale=false) OVERRIDE_19;
#if (IRRLICHT_VERSION_MAJOR == 1 && IRRLICHT_VERSION_MINOR <= 8)
void setSprite(gui::EGUI_BUTTON_STATE state, s32 index, video::SColor color, bool loop) override {
@@ -150,16 +161,16 @@ public: #endif
//! Get the sprite-index for the given state or -1 when no sprite is set
- virtual s32 getSpriteIndex(gui::EGUI_BUTTON_STATE state) const;
+ virtual s32 getSpriteIndex(gui::EGUI_BUTTON_STATE state) const OVERRIDE_19;
//! Get the sprite color for the given state. Color is only used when a sprite is set.
- virtual video::SColor getSpriteColor(gui::EGUI_BUTTON_STATE state) const;
+ virtual video::SColor getSpriteColor(gui::EGUI_BUTTON_STATE state) const OVERRIDE_19;
//! Returns if the sprite in the given state does loop
- virtual bool getSpriteLoop(gui::EGUI_BUTTON_STATE state) const;
+ virtual bool getSpriteLoop(gui::EGUI_BUTTON_STATE state) const OVERRIDE_19;
//! Returns if the sprite in the given state is scaled
- virtual bool getSpriteScale(gui::EGUI_BUTTON_STATE state) const;
+ virtual bool getSpriteScale(gui::EGUI_BUTTON_STATE state) const OVERRIDE_19;
//! Sets if the button should behave like a push button. Which means it
//! can be in two states: Normal or Pressed. With a click on the button,
@@ -199,13 +210,13 @@ public: virtual bool isScalingImage() const override;
//! Get if the shift key was pressed in last EGET_BUTTON_CLICKED event
- virtual bool getClickShiftState() const
+ virtual bool getClickShiftState() const OVERRIDE_19
{
return ClickShiftState;
}
//! Get if the control key was pressed in last EGET_BUTTON_CLICKED event
- virtual bool getClickControlState() const
+ virtual bool getClickControlState() const OVERRIDE_19
{
return ClickControlState;
}
diff --git a/src/gui/guiChatConsole.cpp b/src/gui/guiChatConsole.cpp index 6330d95d4..fd92cf298 100644 --- a/src/gui/guiChatConsole.cpp +++ b/src/gui/guiChatConsole.cpp @@ -635,13 +635,7 @@ bool GUIChatConsole::OnEvent(const SEvent& event) prompt.nickCompletion(names, backwards); return true; } else if (!iswcntrl(event.KeyInput.Char) && !event.KeyInput.Control) { - #if defined(__linux__) && (IRRLICHT_VERSION_MAJOR == 1 && IRRLICHT_VERSION_MINOR < 9) - wchar_t wc = L'_'; - mbtowc( &wc, (char *) &event.KeyInput.Char, sizeof(event.KeyInput.Char) ); - prompt.input(wc); - #else - prompt.input(event.KeyInput.Char); - #endif + prompt.input(event.KeyInput.Char); return true; } } diff --git a/src/gui/guiConfirmRegistration.cpp b/src/gui/guiConfirmRegistration.cpp index 4a798c39b..4ca9a64ed 100644 --- a/src/gui/guiConfirmRegistration.cpp +++ b/src/gui/guiConfirmRegistration.cpp @@ -25,7 +25,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include <IGUIButton.h> #include <IGUIStaticText.h> #include <IGUIFont.h> -#include "intlGUIEditBox.h" +#include "guiEditBoxWithScrollbar.h" #include "porting.h" #include "gettext.h" @@ -109,10 +109,9 @@ void GUIConfirmRegistration::regenerateGui(v2u32 screensize) porting::mt_snprintf(info_text_buf, sizeof(info_text_buf), info_text_template.c_str(), m_playername.c_str()); - wchar_t *info_text_buf_wide = utf8_to_wide_c(info_text_buf); - gui::IGUIEditBox *e = new gui::intlGUIEditBox(info_text_buf_wide, true, - Environment, this, ID_intotext, rect2, false, true); - delete[] info_text_buf_wide; + std::wstring info_text_w = utf8_to_wide(info_text_buf); + gui::IGUIEditBox *e = new GUIEditBoxWithScrollBar(info_text_w.c_str(), + true, Environment, this, ID_intotext, rect2, false, true); e->drop(); e->setMultiLine(true); e->setWordWrap(true); diff --git a/src/gui/guiEditBox.cpp b/src/gui/guiEditBox.cpp index 79979dbc3..cd5a0868d 100644 --- a/src/gui/guiEditBox.cpp +++ b/src/gui/guiEditBox.cpp @@ -208,31 +208,10 @@ bool GUIEditBox::OnEvent(const SEvent &event) } } break; - case EET_KEY_INPUT_EVENT: { -#if (defined(__linux__) || defined(__FreeBSD__)) || defined(__DragonFly__) - // ################################################################ - // ValkaTR: - // This part is the difference from the original intlGUIEditBox - // It converts UTF-8 character into a UCS-2 (wchar_t) - wchar_t wc = L'_'; - mbtowc(&wc, (char *)&event.KeyInput.Char, - sizeof(event.KeyInput.Char)); - - // printf( "char: %lc (%u) \r\n", wc, wc ); - - SEvent irrevent(event); - irrevent.KeyInput.Char = wc; - // ################################################################ - - if (processKey(irrevent)) - return true; -#else + case EET_KEY_INPUT_EVENT: if (processKey(event)) return true; -#endif // defined(linux) - break; - } case EET_MOUSE_INPUT_EVENT: if (processMouse(event)) return true; diff --git a/src/gui/guiFormSpecMenu.cpp b/src/gui/guiFormSpecMenu.cpp index 5aa6dc9ae..fd35f2d84 100644 --- a/src/gui/guiFormSpecMenu.cpp +++ b/src/gui/guiFormSpecMenu.cpp @@ -65,7 +65,6 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "guiInventoryList.h" #include "guiItemImage.h" #include "guiScrollContainer.h" -#include "intlGUIEditBox.h" #include "guiHyperText.h" #include "guiScene.h" @@ -1547,21 +1546,13 @@ void GUIFormSpecMenu::createTextField(parserData *data, FieldSpec &spec, } gui::IGUIEditBox *e = nullptr; - static constexpr bool use_intl_edit_box = USE_FREETYPE && - IRRLICHT_VERSION_MAJOR == 1 && IRRLICHT_VERSION_MINOR < 9; - - if (use_intl_edit_box && g_settings->getBool("freetype")) { - e = new gui::intlGUIEditBox(spec.fdefault.c_str(), true, Environment, - data->current_parent, spec.fid, rect, is_editable, is_multiline); - } else { - if (is_multiline) { - e = new GUIEditBoxWithScrollBar(spec.fdefault.c_str(), true, Environment, - data->current_parent, spec.fid, rect, is_editable, true); - } else if (is_editable) { - e = Environment->addEditBox(spec.fdefault.c_str(), rect, true, - data->current_parent, spec.fid); - e->grab(); - } + if (is_multiline) { + e = new GUIEditBoxWithScrollBar(spec.fdefault.c_str(), true, Environment, + data->current_parent, spec.fid, rect, is_editable, true); + } else if (is_editable) { + e = Environment->addEditBox(spec.fdefault.c_str(), rect, true, + data->current_parent, spec.fid); + e->grab(); } auto style = getDefaultStyleForElement(is_multiline ? "textarea" : "field", spec.fname); @@ -2746,7 +2737,7 @@ void GUIFormSpecMenu::parseModel(parserData *data, const std::string &element) { std::vector<std::string> parts = split(element, ';'); - if (parts.size() < 5 || (parts.size() > 9 && + if (parts.size() < 5 || (parts.size() > 10 && m_formspec_version <= FORMSPEC_API_VERSION)) { errorstream << "Invalid model element (" << parts.size() << "): '" << element << "'" << std::endl; @@ -2754,8 +2745,8 @@ void GUIFormSpecMenu::parseModel(parserData *data, const std::string &element) } // Avoid length checks by resizing - if (parts.size() < 9) - parts.resize(9); + if (parts.size() < 10) + parts.resize(10); std::vector<std::string> v_pos = split(parts[0], ','); std::vector<std::string> v_geom = split(parts[1], ','); @@ -2766,6 +2757,7 @@ void GUIFormSpecMenu::parseModel(parserData *data, const std::string &element) bool inf_rotation = is_yes(parts[6]); bool mousectrl = is_yes(parts[7]) || parts[7].empty(); // default true std::vector<std::string> frame_loop = split(parts[8], ','); + std::string speed = unescape_string(parts[9]); MY_CHECKPOS("model", 0); MY_CHECKGEOM("model", 1); @@ -2825,6 +2817,7 @@ void GUIFormSpecMenu::parseModel(parserData *data, const std::string &element) } e->setFrameLoop(frame_loop_begin, frame_loop_end); + e->setAnimationSpeed(stof(speed)); auto style = getStyleForElement("model", spec.fname); e->setStyles(style); diff --git a/src/gui/guiKeyChangeMenu.cpp b/src/gui/guiKeyChangeMenu.cpp index 4dcb47779..84678b629 100644 --- a/src/gui/guiKeyChangeMenu.cpp +++ b/src/gui/guiKeyChangeMenu.cpp @@ -46,7 +46,7 @@ enum GUI_ID_KEY_BACKWARD_BUTTON, GUI_ID_KEY_LEFT_BUTTON, GUI_ID_KEY_RIGHT_BUTTON, - GUI_ID_KEY_USE_BUTTON, + GUI_ID_KEY_AUX1_BUTTON, GUI_ID_KEY_FLY_BUTTON, GUI_ID_KEY_FAST_BUTTON, GUI_ID_KEY_JUMP_BUTTON, @@ -177,7 +177,7 @@ void GUIKeyChangeMenu::regenerateGui(v2u32 screensize) { core::rect<s32> rect(0, 0, option_w, 30 * s); rect += topleft + v2s32(option_x, option_y); - const wchar_t *text = wgettext("\"Special\" = climb down"); + const wchar_t *text = wgettext("\"Aux1\" = climb down"); Environment->addCheckBox(g_settings->getBool("aux1_descends"), rect, this, GUI_ID_CB_AUX1_DESCENDS, text); delete[] text; @@ -416,7 +416,7 @@ void GUIKeyChangeMenu::init_keys() this->add_key(GUI_ID_KEY_BACKWARD_BUTTON, wgettext("Backward"), "keymap_backward"); this->add_key(GUI_ID_KEY_LEFT_BUTTON, wgettext("Left"), "keymap_left"); this->add_key(GUI_ID_KEY_RIGHT_BUTTON, wgettext("Right"), "keymap_right"); - this->add_key(GUI_ID_KEY_USE_BUTTON, wgettext("Special"), "keymap_special1"); + this->add_key(GUI_ID_KEY_AUX1_BUTTON, wgettext("Aux1"), "keymap_aux1"); this->add_key(GUI_ID_KEY_JUMP_BUTTON, wgettext("Jump"), "keymap_jump"); this->add_key(GUI_ID_KEY_SNEAK_BUTTON, wgettext("Sneak"), "keymap_sneak"); this->add_key(GUI_ID_KEY_DROP_BUTTON, wgettext("Drop"), "keymap_drop"); diff --git a/src/gui/guiScene.cpp b/src/gui/guiScene.cpp index 5f4c50b91..f0cfbec5e 100644 --- a/src/gui/guiScene.cpp +++ b/src/gui/guiScene.cpp @@ -34,9 +34,6 @@ GUIScene::GUIScene(gui::IGUIEnvironment *env, scene::ISceneManager *smgr, m_cam = m_smgr->addCameraSceneNode(0, v3f(0.f, 0.f, -100.f), v3f(0.f)); m_cam->setFOV(30.f * core::DEGTORAD); - scene::ILightSceneNode *light = m_smgr->addLightSceneNode(m_cam); - light->setRadius(1000.f); - m_smgr->getParameters()->setAttribute(scene::ALLOW_ZWRITE_ON_TRANSPARENT, true); } @@ -60,6 +57,7 @@ scene::IAnimatedMeshSceneNode *GUIScene::setMesh(scene::IAnimatedMesh *mesh) m_mesh = m_smgr->addAnimatedMeshSceneNode(mesh); m_mesh->setPosition(-m_mesh->getBoundingBox().getCenter()); m_mesh->animateJoints(); + return m_mesh; } @@ -73,10 +71,13 @@ void GUIScene::setTexture(u32 idx, video::ITexture *texture) material.setFlag(video::EMF_FOG_ENABLE, true); material.setFlag(video::EMF_BILINEAR_FILTER, false); material.setFlag(video::EMF_BACK_FACE_CULLING, false); + material.setFlag(video::EMF_ZWRITE_ENABLE, true); } void GUIScene::draw() { + m_driver->clearBuffers(video::ECBF_DEPTH); + // Control rotation speed based on time u64 new_time = porting::getTimeMs(); u64 dtime_ms = 0; @@ -161,6 +162,14 @@ void GUIScene::setFrameLoop(s32 begin, s32 end) m_mesh->setFrameLoop(begin, end); } +/** + * Sets the animation speed (FPS) for the mesh + */ +void GUIScene::setAnimationSpeed(f32 speed) +{ + m_mesh->setAnimationSpeed(speed); +} + /* Camera control functions */ inline void GUIScene::calcOptimalDistance() diff --git a/src/gui/guiScene.h b/src/gui/guiScene.h index 08eb7f350..0f5f3a891 100644 --- a/src/gui/guiScene.h +++ b/src/gui/guiScene.h @@ -37,6 +37,7 @@ public: void setTexture(u32 idx, video::ITexture *texture); void setBackgroundColor(const video::SColor &color) noexcept { m_bgcolor = color; }; void setFrameLoop(s32 begin, s32 end); + void setAnimationSpeed(f32 speed); void enableMouseControl(bool enable) noexcept { m_mouse_ctrl = enable; }; void setRotation(v2f rot) noexcept { m_custom_rot = rot; }; void enableContinuousRotation(bool enable) noexcept { m_inf_rot = enable; }; diff --git a/src/gui/intlGUIEditBox.cpp b/src/gui/intlGUIEditBox.cpp deleted file mode 100644 index 0f09ea746..000000000 --- a/src/gui/intlGUIEditBox.cpp +++ /dev/null @@ -1,626 +0,0 @@ -// 11.11.2011 11:11 ValkaTR -// -// This is a copy of intlGUIEditBox from the irrlicht, but with a -// fix in the OnEvent function, which doesn't allowed input of -// other keyboard layouts than latin-1 -// -// Characters like: ä ö ü õ Ñ‹ й ÑŽ Ñ ÑŠ â„– € ° ... -// -// This fix is only needed for linux, because of a bug -// in the CIrrDeviceLinux.cpp:1014-1015 of the irrlicht -// -// Also locale in the programm should not be changed to -// a "C", "POSIX" or whatever, it should be set to "", -// or XLookupString will return nothing for the international -// characters. -// -// From the "man setlocale": -// -// On startup of the main program, the portable "C" locale -// is selected as default. A program may be made -// portable to all locales by calling: -// -// setlocale(LC_ALL, ""); -// -// after program initialization.... -// - -// Copyright (C) 2002-2013 Nikolaus Gebhardt -// This file is part of the "Irrlicht Engine". -// For conditions of distribution and use, see copyright notice in irrlicht.h - -#include <util/numeric.h> -#include "intlGUIEditBox.h" - -#include "IGUISkin.h" -#include "IGUIEnvironment.h" -#include "IGUIFont.h" -#include "IVideoDriver.h" -//#include "irrlicht/os.cpp" -#include "porting.h" -//#include "Keycodes.h" -#include "log.h" - -/* - todo: - optional scrollbars - ctrl+left/right to select word - double click/ctrl click: word select + drag to select whole words, triple click to select line - optional? dragging selected text - numerical -*/ - -namespace irr -{ -namespace gui -{ - -//! constructor -intlGUIEditBox::intlGUIEditBox(const wchar_t* text, bool border, - IGUIEnvironment* environment, IGUIElement* parent, s32 id, - const core::rect<s32>& rectangle, bool writable, bool has_vscrollbar) - : GUIEditBox(environment, parent, id, rectangle, border, writable) -{ - #ifdef _DEBUG - setDebugName("intlintlGUIEditBox"); - #endif - - Text = text; - - if (Environment) - m_operator = Environment->getOSOperator(); - - if (m_operator) - m_operator->grab(); - - // this element can be tabbed to - setTabStop(true); - setTabOrder(-1); - - IGUISkin *skin = 0; - if (Environment) - skin = Environment->getSkin(); - if (m_border && skin) - { - m_frame_rect.UpperLeftCorner.X += skin->getSize(EGDS_TEXT_DISTANCE_X)+1; - m_frame_rect.UpperLeftCorner.Y += skin->getSize(EGDS_TEXT_DISTANCE_Y)+1; - m_frame_rect.LowerRightCorner.X -= skin->getSize(EGDS_TEXT_DISTANCE_X)+1; - m_frame_rect.LowerRightCorner.Y -= skin->getSize(EGDS_TEXT_DISTANCE_Y)+1; - } - - if (skin && has_vscrollbar) { - m_scrollbar_width = skin->getSize(gui::EGDS_SCROLLBAR_SIZE); - - if (m_scrollbar_width > 0) { - createVScrollBar(); - } - } - - breakText(); - - calculateScrollPos(); - setWritable(writable); -} - -//! Sets whether to draw the background -void intlGUIEditBox::setDrawBackground(bool draw) -{ -} - -void intlGUIEditBox::updateAbsolutePosition() -{ - core::rect<s32> oldAbsoluteRect(AbsoluteRect); - IGUIElement::updateAbsolutePosition(); - if ( oldAbsoluteRect != AbsoluteRect ) - { - breakText(); - } -} - - -//! draws the element and its children -void intlGUIEditBox::draw() -{ - if (!IsVisible) - return; - - const bool focus = Environment->hasFocus(this); - - IGUISkin* skin = Environment->getSkin(); - if (!skin) - return; - - m_frame_rect = AbsoluteRect; - - // draw the border - - if (m_border) - { - if (m_writable) { - skin->draw3DSunkenPane(this, skin->getColor(EGDC_WINDOW), - false, true, m_frame_rect, &AbsoluteClippingRect); - } - - m_frame_rect.UpperLeftCorner.X += skin->getSize(EGDS_TEXT_DISTANCE_X)+1; - m_frame_rect.UpperLeftCorner.Y += skin->getSize(EGDS_TEXT_DISTANCE_Y)+1; - m_frame_rect.LowerRightCorner.X -= skin->getSize(EGDS_TEXT_DISTANCE_X)+1; - m_frame_rect.LowerRightCorner.Y -= skin->getSize(EGDS_TEXT_DISTANCE_Y)+1; - } - - updateVScrollBar(); - core::rect<s32> localClipRect = m_frame_rect; - localClipRect.clipAgainst(AbsoluteClippingRect); - - // draw the text - - IGUIFont* font = m_override_font; - if (!m_override_font) - font = skin->getFont(); - - s32 cursorLine = 0; - s32 charcursorpos = 0; - - if (font) - { - if (m_last_break_font != font) - { - breakText(); - } - - // calculate cursor pos - - core::stringw *txtLine = &Text; - s32 startPos = 0; - - core::stringw s, s2; - - // get mark position - const bool ml = (!m_passwordbox && (m_word_wrap || m_multiline)); - const s32 realmbgn = m_mark_begin < m_mark_end ? m_mark_begin : m_mark_end; - const s32 realmend = m_mark_begin < m_mark_end ? m_mark_end : m_mark_begin; - const s32 hlineStart = ml ? getLineFromPos(realmbgn) : 0; - const s32 hlineCount = ml ? getLineFromPos(realmend) - hlineStart + 1 : 1; - const s32 lineCount = ml ? m_broken_text.size() : 1; - - // Save the override color information. - // Then, alter it if the edit box is disabled. - const bool prevOver = m_override_color_enabled; - const video::SColor prevColor = m_override_color; - - if (!Text.empty()) { - if (!IsEnabled && !m_override_color_enabled) - { - m_override_color_enabled = true; - m_override_color = skin->getColor(EGDC_GRAY_TEXT); - } - - for (s32 i=0; i < lineCount; ++i) - { - setTextRect(i); - - // clipping test - don't draw anything outside the visible area - core::rect<s32> c = localClipRect; - c.clipAgainst(m_current_text_rect); - if (!c.isValid()) - continue; - - // get current line - if (m_passwordbox) - { - if (m_broken_text.size() != 1) - { - m_broken_text.clear(); - m_broken_text.emplace_back(); - } - if (m_broken_text[0].size() != Text.size()) - { - m_broken_text[0] = Text; - for (u32 q = 0; q < Text.size(); ++q) - { - m_broken_text[0] [q] = m_passwordchar; - } - } - txtLine = &m_broken_text[0]; - startPos = 0; - } - else - { - txtLine = ml ? &m_broken_text[i] : &Text; - startPos = ml ? m_broken_text_positions[i] : 0; - } - - - // draw normal text - font->draw(txtLine->c_str(), m_current_text_rect, - m_override_color_enabled ? m_override_color : skin->getColor(EGDC_BUTTON_TEXT), - false, true, &localClipRect); - - // draw mark and marked text - if (focus && m_mark_begin != m_mark_end && i >= hlineStart && i < hlineStart + hlineCount) - { - - s32 mbegin = 0, mend = 0; - s32 lineStartPos = 0, lineEndPos = txtLine->size(); - - if (i == hlineStart) - { - // highlight start is on this line - s = txtLine->subString(0, realmbgn - startPos); - mbegin = font->getDimension(s.c_str()).Width; - - // deal with kerning - mbegin += font->getKerningWidth( - &((*txtLine)[realmbgn - startPos]), - realmbgn - startPos > 0 ? &((*txtLine)[realmbgn - startPos - 1]) : 0); - - lineStartPos = realmbgn - startPos; - } - if (i == hlineStart + hlineCount - 1) - { - // highlight end is on this line - s2 = txtLine->subString(0, realmend - startPos); - mend = font->getDimension(s2.c_str()).Width; - lineEndPos = (s32)s2.size(); - } - else - mend = font->getDimension(txtLine->c_str()).Width; - - m_current_text_rect.UpperLeftCorner.X += mbegin; - m_current_text_rect.LowerRightCorner.X = m_current_text_rect.UpperLeftCorner.X + mend - mbegin; - - // draw mark - skin->draw2DRectangle(this, skin->getColor(EGDC_HIGH_LIGHT), m_current_text_rect, &localClipRect); - - // draw marked text - s = txtLine->subString(lineStartPos, lineEndPos - lineStartPos); - - if (!s.empty()) - font->draw(s.c_str(), m_current_text_rect, - m_override_color_enabled ? m_override_color : skin->getColor(EGDC_HIGH_LIGHT_TEXT), - false, true, &localClipRect); - - } - } - - // Return the override color information to its previous settings. - m_override_color_enabled = prevOver; - m_override_color = prevColor; - } - - // draw cursor - - if (m_word_wrap || m_multiline) - { - cursorLine = getLineFromPos(m_cursor_pos); - txtLine = &m_broken_text[cursorLine]; - startPos = m_broken_text_positions[cursorLine]; - } - s = txtLine->subString(0,m_cursor_pos-startPos); - charcursorpos = font->getDimension(s.c_str()).Width + - font->getKerningWidth(L"_", m_cursor_pos-startPos > 0 ? &((*txtLine)[m_cursor_pos-startPos-1]) : 0); - - if (m_writable) { - if (focus && (porting::getTimeMs() - m_blink_start_time) % 700 < 350) { - setTextRect(cursorLine); - m_current_text_rect.UpperLeftCorner.X += charcursorpos; - - font->draw(L"_", m_current_text_rect, - m_override_color_enabled ? m_override_color : skin->getColor(EGDC_BUTTON_TEXT), - false, true, &localClipRect); - } - } - } - - // draw children - IGUIElement::draw(); -} - - -s32 intlGUIEditBox::getCursorPos(s32 x, s32 y) -{ - IGUIFont* font = getActiveFont(); - - const u32 lineCount = (m_word_wrap || m_multiline) ? m_broken_text.size() : 1; - - core::stringw *txtLine = NULL; - s32 startPos = 0; - u32 curr_line_idx = 0; - x += 3; - - for (; curr_line_idx < lineCount; ++curr_line_idx) { - setTextRect(curr_line_idx); - if (curr_line_idx == 0 && y < m_current_text_rect.UpperLeftCorner.Y) - y = m_current_text_rect.UpperLeftCorner.Y; - if (curr_line_idx == lineCount - 1 && y > m_current_text_rect.LowerRightCorner.Y) - y = m_current_text_rect.LowerRightCorner.Y; - - // is it inside this region? - if (y >= m_current_text_rect.UpperLeftCorner.Y && y <= m_current_text_rect.LowerRightCorner.Y) { - // we've found the clicked line - txtLine = (m_word_wrap || m_multiline) ? &m_broken_text[curr_line_idx] : &Text; - startPos = (m_word_wrap || m_multiline) ? m_broken_text_positions[curr_line_idx] : 0; - break; - } - } - - if (x < m_current_text_rect.UpperLeftCorner.X) - x = m_current_text_rect.UpperLeftCorner.X; - else if (x > m_current_text_rect.LowerRightCorner.X) - x = m_current_text_rect.LowerRightCorner.X; - - s32 idx = font->getCharacterFromPos(txtLine->c_str(), x - m_current_text_rect.UpperLeftCorner.X); - // Special handling for last line, if we are on limits, add 1 extra shift because idx - // will be the last char, not null char of the wstring - if (curr_line_idx == lineCount - 1 && x == m_current_text_rect.LowerRightCorner.X) - idx++; - - return rangelim(idx + startPos, 0, S32_MAX); -} - - -//! Breaks the single text line. -void intlGUIEditBox::breakText() -{ - IGUISkin* skin = Environment->getSkin(); - - if ((!m_word_wrap && !m_multiline) || !skin) - return; - - m_broken_text.clear(); // need to reallocate :/ - m_broken_text_positions.clear(); - - IGUIFont* font = m_override_font; - if (!m_override_font) - font = skin->getFont(); - - if (!font) - return; - - m_last_break_font = font; - - core::stringw line; - core::stringw word; - core::stringw whitespace; - s32 lastLineStart = 0; - s32 size = Text.size(); - s32 length = 0; - s32 elWidth = RelativeRect.getWidth() - m_scrollbar_width - 10; - wchar_t c; - - for (s32 i=0; i<size; ++i) - { - c = Text[i]; - bool lineBreak = false; - - if (c == L'\r') // Mac or Windows breaks - { - lineBreak = true; - c = ' '; - if (Text[i+1] == L'\n') // Windows breaks - { - Text.erase(i+1); - --size; - } - } - else if (c == L'\n') // Unix breaks - { - lineBreak = true; - c = ' '; - } - - // don't break if we're not a multi-line edit box - if (!m_multiline) - lineBreak = false; - - if (c == L' ' || c == 0 || i == (size-1)) - { - if (!word.empty()) { - // here comes the next whitespace, look if - // we can break the last word to the next line. - s32 whitelgth = font->getDimension(whitespace.c_str()).Width; - s32 worldlgth = font->getDimension(word.c_str()).Width; - - if (m_word_wrap && length + worldlgth + whitelgth > elWidth) - { - // break to next line - length = worldlgth; - m_broken_text.push_back(line); - m_broken_text_positions.push_back(lastLineStart); - lastLineStart = i - (s32)word.size(); - line = word; - } - else - { - // add word to line - line += whitespace; - line += word; - length += whitelgth + worldlgth; - } - - word = L""; - whitespace = L""; - } - - whitespace += c; - - // compute line break - if (lineBreak) - { - line += whitespace; - line += word; - m_broken_text.push_back(line); - m_broken_text_positions.push_back(lastLineStart); - lastLineStart = i+1; - line = L""; - word = L""; - whitespace = L""; - length = 0; - } - } - else - { - // yippee this is a word.. - word += c; - } - } - - line += whitespace; - line += word; - m_broken_text.push_back(line); - m_broken_text_positions.push_back(lastLineStart); -} - - -void intlGUIEditBox::setTextRect(s32 line) -{ - core::dimension2du d; - - IGUISkin* skin = Environment->getSkin(); - if (!skin) - return; - - IGUIFont* font = m_override_font ? m_override_font : skin->getFont(); - - if (!font) - return; - - // get text dimension - const u32 lineCount = (m_word_wrap || m_multiline) ? m_broken_text.size() : 1; - if (m_word_wrap || m_multiline) - { - d = font->getDimension(m_broken_text[line].c_str()); - } - else - { - d = font->getDimension(Text.c_str()); - d.Height = AbsoluteRect.getHeight(); - } - d.Height += font->getKerningHeight(); - - // justification - switch (m_halign) - { - case EGUIA_CENTER: - // align to h centre - m_current_text_rect.UpperLeftCorner.X = (m_frame_rect.getWidth()/2) - (d.Width/2); - m_current_text_rect.LowerRightCorner.X = (m_frame_rect.getWidth()/2) + (d.Width/2); - break; - case EGUIA_LOWERRIGHT: - // align to right edge - m_current_text_rect.UpperLeftCorner.X = m_frame_rect.getWidth() - d.Width; - m_current_text_rect.LowerRightCorner.X = m_frame_rect.getWidth(); - break; - default: - // align to left edge - m_current_text_rect.UpperLeftCorner.X = 0; - m_current_text_rect.LowerRightCorner.X = d.Width; - - } - - switch (m_valign) - { - case EGUIA_CENTER: - // align to v centre - m_current_text_rect.UpperLeftCorner.Y = - (m_frame_rect.getHeight()/2) - (lineCount*d.Height)/2 + d.Height*line; - break; - case EGUIA_LOWERRIGHT: - // align to bottom edge - m_current_text_rect.UpperLeftCorner.Y = - m_frame_rect.getHeight() - lineCount*d.Height + d.Height*line; - break; - default: - // align to top edge - m_current_text_rect.UpperLeftCorner.Y = d.Height*line; - break; - } - - m_current_text_rect.UpperLeftCorner.X -= m_hscroll_pos; - m_current_text_rect.LowerRightCorner.X -= m_hscroll_pos; - m_current_text_rect.UpperLeftCorner.Y -= m_vscroll_pos; - m_current_text_rect.LowerRightCorner.Y = m_current_text_rect.UpperLeftCorner.Y + d.Height; - - m_current_text_rect += m_frame_rect.UpperLeftCorner; - -} - -void intlGUIEditBox::calculateScrollPos() -{ - if (!m_autoscroll) - return; - - // calculate horizontal scroll position - s32 cursLine = getLineFromPos(m_cursor_pos); - setTextRect(cursLine); - - // don't do horizontal scrolling when wordwrap is enabled. - if (!m_word_wrap) - { - // get cursor position - IGUISkin* skin = Environment->getSkin(); - if (!skin) - return; - IGUIFont* font = m_override_font ? m_override_font : skin->getFont(); - if (!font) - return; - - core::stringw *txtLine = m_multiline ? &m_broken_text[cursLine] : &Text; - s32 cPos = m_multiline ? m_cursor_pos - m_broken_text_positions[cursLine] : m_cursor_pos; - - s32 cStart = m_current_text_rect.UpperLeftCorner.X + m_hscroll_pos + - font->getDimension(txtLine->subString(0, cPos).c_str()).Width; - - s32 cEnd = cStart + font->getDimension(L"_ ").Width; - - if (m_frame_rect.LowerRightCorner.X < cEnd) - m_hscroll_pos = cEnd - m_frame_rect.LowerRightCorner.X; - else if (m_frame_rect.UpperLeftCorner.X > cStart) - m_hscroll_pos = cStart - m_frame_rect.UpperLeftCorner.X; - else - m_hscroll_pos = 0; - - // todo: adjust scrollbar - } - - if (!m_word_wrap && !m_multiline) - return; - - // vertical scroll position - if (m_frame_rect.LowerRightCorner.Y < m_current_text_rect.LowerRightCorner.Y) - m_vscroll_pos += m_current_text_rect.LowerRightCorner.Y - m_frame_rect.LowerRightCorner.Y; // scrolling downwards - else if (m_frame_rect.UpperLeftCorner.Y > m_current_text_rect.UpperLeftCorner.Y) - m_vscroll_pos += m_current_text_rect.UpperLeftCorner.Y - m_frame_rect.UpperLeftCorner.Y; // scrolling upwards - - // todo: adjust scrollbar - if (m_vscrollbar) - m_vscrollbar->setPos(m_vscroll_pos); -} - - -//! Create a vertical scrollbar -void intlGUIEditBox::createVScrollBar() -{ - s32 fontHeight = 1; - - if (m_override_font) { - fontHeight = m_override_font->getDimension(L"").Height; - } else { - if (IGUISkin* skin = Environment->getSkin()) { - if (IGUIFont* font = skin->getFont()) { - fontHeight = font->getDimension(L"").Height; - } - } - } - - irr::core::rect<s32> scrollbarrect = m_frame_rect; - scrollbarrect.UpperLeftCorner.X += m_frame_rect.getWidth() - m_scrollbar_width; - m_vscrollbar = new GUIScrollBar(Environment, getParent(), -1, - scrollbarrect, false, true); - - m_vscrollbar->setVisible(false); - m_vscrollbar->setSmallStep(3 * fontHeight); - m_vscrollbar->setLargeStep(10 * fontHeight); -} - -} // end namespace gui -} // end namespace irr diff --git a/src/gui/intlGUIEditBox.h b/src/gui/intlGUIEditBox.h deleted file mode 100644 index 007fe1c93..000000000 --- a/src/gui/intlGUIEditBox.h +++ /dev/null @@ -1,68 +0,0 @@ -// Copyright (C) 2002-2013 Nikolaus Gebhardt -// This file is part of the "Irrlicht Engine". -// For conditions of distribution and use, see copyright notice in irrlicht.h - -#pragma once - -#include "IrrCompileConfig.h" -//#ifdef _IRR_COMPILE_WITH_GUI_ - -#include "guiEditBox.h" -#include "irrArray.h" -#include "IOSOperator.h" - -namespace irr -{ -namespace gui -{ - class intlGUIEditBox : public GUIEditBox - { - public: - - //! constructor - intlGUIEditBox(const wchar_t* text, bool border, IGUIEnvironment* environment, - IGUIElement* parent, s32 id, const core::rect<s32>& rectangle, - bool writable = true, bool has_vscrollbar = false); - - //! destructor - virtual ~intlGUIEditBox() {} - - //! Sets whether to draw the background - virtual void setDrawBackground(bool draw); - - virtual bool isDrawBackgroundEnabled() const { return true; } - - //! draws the element and its children - virtual void draw(); - - //! Updates the absolute position, splits text if required - virtual void updateAbsolutePosition(); - - virtual void setCursorChar(const wchar_t cursorChar) {} - - virtual wchar_t getCursorChar() const { return L'|'; } - - virtual void setCursorBlinkTime(u32 timeMs) {} - - virtual u32 getCursorBlinkTime() const { return 500; } - - protected: - //! Breaks the single text line. - virtual void breakText(); - //! sets the area of the given line - virtual void setTextRect(s32 line); - - //! calculates the current scroll position - void calculateScrollPos(); - - s32 getCursorPos(s32 x, s32 y); - - //! Create a vertical scrollbar - void createVScrollBar(); - }; - - -} // end namespace gui -} // end namespace irr - -//#endif // _IRR_COMPILE_WITH_GUI_ diff --git a/src/gui/touchscreengui.cpp b/src/gui/touchscreengui.cpp index e1a971462..78b18c2d9 100644 --- a/src/gui/touchscreengui.cpp +++ b/src/gui/touchscreengui.cpp @@ -40,7 +40,7 @@ const char **button_imagenames = (const char *[]) { "jump_btn.png", "down.png", "zoom.png", - "aux_btn.png" + "aux1_btn.png" }; const char **joystick_imagenames = (const char *[]) { @@ -80,8 +80,8 @@ static irr::EKEY_CODE id2keycode(touch_gui_button_id id) case zoom_id: key = "zoom"; break; - case special1_id: - key = "special1"; + case aux1_id: + key = "aux1"; break; case fly_id: key = "freemove"; @@ -425,7 +425,7 @@ TouchScreenGUI::TouchScreenGUI(IrrlichtDevice *device, IEventReceiver *receiver) m_touchscreen_threshold = g_settings->getU16("touchscreen_threshold"); m_fixed_joystick = g_settings->getBool("fixed_virtual_joystick"); - m_joystick_triggers_special1 = g_settings->getBool("virtual_joystick_triggers_aux"); + m_joystick_triggers_aux1 = g_settings->getBool("virtual_joystick_triggers_aux1"); m_screensize = m_device->getVideoDriver()->getScreenSize(); button_size = MYMIN(m_screensize.Y / 4.5f, porting::getDisplayDensity() * @@ -521,9 +521,9 @@ void TouchScreenGUI::init(ISimpleTextureSource *tsrc) m_screensize.Y - (3 * button_size)), L"z", false); - // init special1/aux button - if (!m_joystick_triggers_special1) - initButton(special1_id, + // init aux1 button + if (!m_joystick_triggers_aux1) + initButton(aux1_id, rect<s32>(m_screensize.X - (1.25 * button_size), m_screensize.Y - (2.5 * button_size), m_screensize.X - (0.25 * button_size), @@ -923,7 +923,7 @@ void TouchScreenGUI::translateEvent(const SEvent &event) } if (distance > button_size) { - m_joystick_status[j_special1] = true; + m_joystick_status[j_aux1] = true; // move joystick "button" s32 ndx = button_size * dx / distance - button_size / 2.0f; s32 ndy = button_size * dy / distance - button_size / 2.0f; @@ -1039,7 +1039,7 @@ bool TouchScreenGUI::doubleTapDetection() void TouchScreenGUI::applyJoystickStatus() { for (unsigned int i = 0; i < 5; i++) { - if (i == 4 && !m_joystick_triggers_special1) + if (i == 4 && !m_joystick_triggers_aux1) continue; SEvent translated{}; diff --git a/src/gui/touchscreengui.h b/src/gui/touchscreengui.h index 0349624fa..ad5abae87 100644 --- a/src/gui/touchscreengui.h +++ b/src/gui/touchscreengui.h @@ -39,7 +39,7 @@ typedef enum jump_id = 0, crunch_id, zoom_id, - special1_id, + aux1_id, after_last_element_id, settings_starter_id, rare_controls_starter_id, @@ -69,7 +69,7 @@ typedef enum j_backward, j_left, j_right, - j_special1 + j_aux1 } touch_gui_joystick_move_id; typedef enum @@ -217,7 +217,7 @@ private: // forward, backward, left, right touch_gui_button_id m_joystick_names[5] = { - forward_id, backward_id, left_id, right_id, special1_id}; + forward_id, backward_id, left_id, right_id, aux1_id}; bool m_joystick_status[5] = {false, false, false, false, false}; /* @@ -237,7 +237,7 @@ private: int m_joystick_id = -1; bool m_joystick_has_really_moved = false; bool m_fixed_joystick = false; - bool m_joystick_triggers_special1 = false; + bool m_joystick_triggers_aux1 = false; button_info *m_joystick_btn_off = nullptr; button_info *m_joystick_btn_bg = nullptr; button_info *m_joystick_btn_center = nullptr; diff --git a/src/inventorymanager.cpp b/src/inventorymanager.cpp index 635bd2e4b..1e81c1dbc 100644 --- a/src/inventorymanager.cpp +++ b/src/inventorymanager.cpp @@ -301,6 +301,7 @@ void IMoveAction::apply(InventoryManager *mgr, ServerActiveObject *player, IGame if (!list_to->getItem(dest_i).empty()) { to_i = dest_i; apply(mgr, player, gamedef); + assert(move_count <= count); count -= move_count; } } @@ -339,7 +340,7 @@ void IMoveAction::apply(InventoryManager *mgr, ServerActiveObject *player, IGame */ ItemStack src_item = list_from->getItem(from_i); - if (count > 0) + if (count > 0 && count < src_item.count) src_item.count = count; if (src_item.empty()) return; @@ -352,10 +353,12 @@ void IMoveAction::apply(InventoryManager *mgr, ServerActiveObject *player, IGame bool allow_swap = !list_to->itemFits(to_i, src_item, &restitem) && restitem.count == src_item.count && !caused_by_move_somewhere; + move_count = src_item.count - restitem.count; // Shift-click: Cannot fill this stack, proceed with next slot - if (caused_by_move_somewhere && restitem.count == src_item.count) + if (caused_by_move_somewhere && move_count == 0) { return; + } if (allow_swap) { // Swap will affect the entire stack if it can performed. @@ -384,9 +387,16 @@ void IMoveAction::apply(InventoryManager *mgr, ServerActiveObject *player, IGame src_can_take_count = dst_can_put_count = 0; } else { // Take from one inventory, put into another + int src_item_count = src_item.count; + if (caused_by_move_somewhere) + // When moving somewhere: temporarily use the actual movable stack + // size to ensure correct callback execution. + src_item.count = move_count; dst_can_put_count = allowPut(src_item, player); src_can_take_count = allowTake(src_item, player); - + if (caused_by_move_somewhere) + // Reset source item count + src_item.count = src_item_count; bool swap_expected = allow_swap; allow_swap = allow_swap && (src_can_take_count == -1 || src_can_take_count >= src_item.count) @@ -416,12 +426,17 @@ void IMoveAction::apply(InventoryManager *mgr, ServerActiveObject *player, IGame count = src_can_take_count; if (dst_can_put_count != -1 && count > dst_can_put_count) count = dst_can_put_count; + /* Limit according to source item count */ if (count > list_from->getItem(from_i).count) count = list_from->getItem(from_i).count; /* If no items will be moved, don't go further */ if (count == 0) { + if (caused_by_move_somewhere) + // Set move count to zero, as no items have been moved + move_count = 0; + // Undo client prediction. See 'clientApply' if (from_inv.type == InventoryLocation::PLAYER) list_from->setModified(); @@ -438,6 +453,7 @@ void IMoveAction::apply(InventoryManager *mgr, ServerActiveObject *player, IGame <<" list=\""<<to_list<<"\"" <<" i="<<to_i <<std::endl; + return; } @@ -455,6 +471,8 @@ void IMoveAction::apply(InventoryManager *mgr, ServerActiveObject *player, IGame bool did_swap = false; move_count = list_from->moveItem(from_i, list_to, to_i, count, allow_swap, &did_swap); + if (caused_by_move_somewhere) + count = old_count; assert(allow_swap == did_swap); // If source is infinite, reset it's stack @@ -503,8 +521,7 @@ void IMoveAction::apply(InventoryManager *mgr, ServerActiveObject *player, IGame << std::endl; // If we are inside the move somewhere loop, we don't need to report - // anything if nothing happened (perhaps we don't need to report - // anything for caused_by_move_somewhere == true, but this way its safer) + // anything if nothing happened if (caused_by_move_somewhere && move_count == 0) return; @@ -558,7 +575,15 @@ void IMoveAction::apply(InventoryManager *mgr, ServerActiveObject *player, IGame } mgr->setInventoryModified(from_inv); } else { + int src_item_count = src_item.count; + if (caused_by_move_somewhere) + // When moving somewhere: temporarily use the actual movable stack + // size to ensure correct callback execution. + src_item.count = move_count; onPutAndOnTake(src_item, player); + if (caused_by_move_somewhere) + // Reset source item count + src_item.count = src_item_count; if (did_swap) { // Item is now placed in source list src_item = list_from->getItem(from_i); diff --git a/src/irrlicht_changes/CGUITTFont.cpp b/src/irrlicht_changes/CGUITTFont.cpp index bd4e700de..960b2320a 100644 --- a/src/irrlicht_changes/CGUITTFont.cpp +++ b/src/irrlicht_changes/CGUITTFont.cpp @@ -103,7 +103,7 @@ video::IImage* SGUITTGlyph::createGlyphImage(const FT_Bitmap& bits, video::IVide // Load the monochrome data in. const u32 image_pitch = image->getPitch() / sizeof(u16); - u16* image_data = (u16*)image->lock(); + u16* image_data = (u16*)image->getData(); u8* glyph_data = bits.buffer; for (s32 y = 0; y < (s32)bits.rows; ++y) @@ -119,7 +119,6 @@ video::IImage* SGUITTGlyph::createGlyphImage(const FT_Bitmap& bits, video::IVide } image_data += image_pitch; } - image->unlock(); break; } @@ -133,7 +132,7 @@ video::IImage* SGUITTGlyph::createGlyphImage(const FT_Bitmap& bits, video::IVide // Load the grayscale data in. const float gray_count = static_cast<float>(bits.num_grays); const u32 image_pitch = image->getPitch() / sizeof(u32); - u32* image_data = (u32*)image->lock(); + u32* image_data = (u32*)image->getData(); u8* glyph_data = bits.buffer; for (s32 y = 0; y < (s32)bits.rows; ++y) { @@ -145,7 +144,6 @@ video::IImage* SGUITTGlyph::createGlyphImage(const FT_Bitmap& bits, video::IVide } glyph_data += bits.pitch; } - image->unlock(); break; } default: diff --git a/src/irrlicht_changes/static_text.cpp b/src/irrlicht_changes/static_text.cpp index bf61cd64e..a8cc33352 100644 --- a/src/irrlicht_changes/static_text.cpp +++ b/src/irrlicht_changes/static_text.cpp @@ -255,6 +255,12 @@ video::SColor StaticText::getOverrideColor() const return ColoredText.getDefaultColor(); } +#if IRRLICHT_VERSION_MAJOR == 1 && IRRLICHT_VERSION_MINOR > 8 +video::SColor StaticText::getActiveColor() const +{ + return getOverrideColor(); +} +#endif //! Sets if the static text should use the overide color or the //! color in the gui skin. diff --git a/src/irrlicht_changes/static_text.h b/src/irrlicht_changes/static_text.h index 1f111ea56..786129d57 100644 --- a/src/irrlicht_changes/static_text.h +++ b/src/irrlicht_changes/static_text.h @@ -140,6 +140,11 @@ namespace gui virtual video::SColor getOverrideColor() const; #endif + #if IRRLICHT_VERSION_MAJOR == 1 && IRRLICHT_VERSION_MINOR > 8 + //! Gets the currently used text color + virtual video::SColor getActiveColor() const; + #endif + //! Sets if the static text should use the overide color or the //! color in the gui skin. virtual void enableOverrideColor(bool enable); diff --git a/src/itemdef.cpp b/src/itemdef.cpp index 5fb1e4c47..d79d6b263 100644 --- a/src/itemdef.cpp +++ b/src/itemdef.cpp @@ -71,13 +71,11 @@ ItemDefinition& ItemDefinition::operator=(const ItemDefinition &def) stack_max = def.stack_max; usable = def.usable; liquids_pointable = def.liquids_pointable; - if(def.tool_capabilities) - { - tool_capabilities = new ToolCapabilities( - *def.tool_capabilities); - } + if (def.tool_capabilities) + tool_capabilities = new ToolCapabilities(*def.tool_capabilities); groups = def.groups; node_placement_prediction = def.node_placement_prediction; + place_param2 = def.place_param2; sound_place = def.sound_place; sound_place_failed = def.sound_place_failed; range = def.range; @@ -120,8 +118,8 @@ void ItemDefinition::reset() sound_place = SimpleSoundSpec(); sound_place_failed = SimpleSoundSpec(); range = -1; - node_placement_prediction = ""; + place_param2 = 0; } void ItemDefinition::serialize(std::ostream &os, u16 protocol_version) const @@ -166,6 +164,8 @@ void ItemDefinition::serialize(std::ostream &os, u16 protocol_version) const os << serializeString16(wield_overlay); os << serializeString16(short_description); + + os << place_param2; } void ItemDefinition::deSerialize(std::istream &is) @@ -219,6 +219,8 @@ void ItemDefinition::deSerialize(std::istream &is) // block to not need to increase the version. try { short_description = deSerializeString16(is); + + place_param2 = readU8(is); // 0 if missing } catch(SerializationError &e) {}; } diff --git a/src/itemdef.h b/src/itemdef.h index ebf0d3527..3e302840f 100644 --- a/src/itemdef.h +++ b/src/itemdef.h @@ -86,6 +86,7 @@ struct ItemDefinition // Server will update the precise end result a moment later. // "" = no prediction std::string node_placement_prediction; + u8 place_param2; /* Some helpful methods diff --git a/src/mapgen/mapgen.cpp b/src/mapgen/mapgen.cpp index e0dfd2d71..7984ff609 100644 --- a/src/mapgen/mapgen.cpp +++ b/src/mapgen/mapgen.cpp @@ -595,7 +595,8 @@ MapgenBasic::MapgenBasic(int mapgenid, MapgenParams *params, EmergeParams *emerg this->heightmap = new s16[csize.X * csize.Z]; //// Initialize biome generator - biomegen = m_bmgr->createBiomeGen(BIOMEGEN_ORIGINAL, params->bparams, csize); + biomegen = emerge->biomegen; + biomegen->assertChunkSize(csize); biomemap = biomegen->biomemap; //// Look up some commonly used content @@ -621,7 +622,6 @@ MapgenBasic::MapgenBasic(int mapgenid, MapgenParams *params, EmergeParams *emerg MapgenBasic::~MapgenBasic() { - delete biomegen; delete []heightmap; delete m_emerge; // destroying EmergeParams is our responsibility diff --git a/src/mapgen/mapgen_valleys.cpp b/src/mapgen/mapgen_valleys.cpp index c4234857e..80a99b1f0 100644 --- a/src/mapgen/mapgen_valleys.cpp +++ b/src/mapgen/mapgen_valleys.cpp @@ -57,7 +57,8 @@ FlagDesc flagdesc_mapgen_valleys[] = { MapgenValleys::MapgenValleys(MapgenValleysParams *params, EmergeParams *emerge) : MapgenBasic(MAPGEN_VALLEYS, params, emerge) { - // NOTE: MapgenValleys has a hard dependency on BiomeGenOriginal + FATAL_ERROR_IF(biomegen->getType() != BIOMEGEN_ORIGINAL, + "MapgenValleys has a hard dependency on BiomeGenOriginal"); m_bgen = (BiomeGenOriginal *)biomegen; spflags = params->spflags; diff --git a/src/mapgen/mg_biome.cpp b/src/mapgen/mg_biome.cpp index 610c38594..f08cc190f 100644 --- a/src/mapgen/mg_biome.cpp +++ b/src/mapgen/mg_biome.cpp @@ -101,71 +101,6 @@ BiomeManager *BiomeManager::clone() const return mgr; } - -// For BiomeGen type 'BiomeGenOriginal' -float BiomeManager::getHeatAtPosOriginal(v3s16 pos, NoiseParams &np_heat, - NoiseParams &np_heat_blend, u64 seed) const -{ - return - NoisePerlin2D(&np_heat, pos.X, pos.Z, seed) + - NoisePerlin2D(&np_heat_blend, pos.X, pos.Z, seed); -} - - -// For BiomeGen type 'BiomeGenOriginal' -float BiomeManager::getHumidityAtPosOriginal(v3s16 pos, NoiseParams &np_humidity, - NoiseParams &np_humidity_blend, u64 seed) const -{ - return - NoisePerlin2D(&np_humidity, pos.X, pos.Z, seed) + - NoisePerlin2D(&np_humidity_blend, pos.X, pos.Z, seed); -} - - -// For BiomeGen type 'BiomeGenOriginal' -const Biome *BiomeManager::getBiomeFromNoiseOriginal(float heat, - float humidity, v3s16 pos) const -{ - Biome *biome_closest = nullptr; - Biome *biome_closest_blend = nullptr; - float dist_min = FLT_MAX; - float dist_min_blend = FLT_MAX; - - for (size_t i = 1; i < getNumObjects(); i++) { - Biome *b = (Biome *)getRaw(i); - if (!b || - pos.Y < b->min_pos.Y || pos.Y > b->max_pos.Y + b->vertical_blend || - pos.X < b->min_pos.X || pos.X > b->max_pos.X || - pos.Z < b->min_pos.Z || pos.Z > b->max_pos.Z) - continue; - - float d_heat = heat - b->heat_point; - float d_humidity = humidity - b->humidity_point; - float dist = (d_heat * d_heat) + (d_humidity * d_humidity); - - if (pos.Y <= b->max_pos.Y) { // Within y limits of biome b - if (dist < dist_min) { - dist_min = dist; - biome_closest = b; - } - } else if (dist < dist_min_blend) { // Blend area above biome b - dist_min_blend = dist; - biome_closest_blend = b; - } - } - - const u64 seed = pos.Y + (heat + humidity) * 0.9f; - PcgRandom rng(seed); - - if (biome_closest_blend && dist_min_blend <= dist_min && - rng.range(0, biome_closest_blend->vertical_blend) >= - pos.Y - biome_closest_blend->max_pos.Y) - return biome_closest_blend; - - return (biome_closest) ? biome_closest : (Biome *)getRaw(BIOME_NONE); -} - - //////////////////////////////////////////////////////////////////////////////// void BiomeParamsOriginal::readParams(const Settings *settings) @@ -189,7 +124,7 @@ void BiomeParamsOriginal::writeParams(Settings *settings) const //////////////////////////////////////////////////////////////////////////////// BiomeGenOriginal::BiomeGenOriginal(BiomeManager *biomemgr, - BiomeParamsOriginal *params, v3s16 chunksize) + const BiomeParamsOriginal *params, v3s16 chunksize) { m_bmgr = biomemgr; m_params = params; @@ -224,17 +159,26 @@ BiomeGenOriginal::~BiomeGenOriginal() delete noise_humidity_blend; } -// Only usable in a mapgen thread -Biome *BiomeGenOriginal::calcBiomeAtPoint(v3s16 pos) const +BiomeGen *BiomeGenOriginal::clone(BiomeManager *biomemgr) const +{ + return new BiomeGenOriginal(biomemgr, m_params, m_csize); +} + +float BiomeGenOriginal::calcHeatAtPoint(v3s16 pos) const { - float heat = - NoisePerlin2D(&m_params->np_heat, pos.X, pos.Z, m_params->seed) + + return NoisePerlin2D(&m_params->np_heat, pos.X, pos.Z, m_params->seed) + NoisePerlin2D(&m_params->np_heat_blend, pos.X, pos.Z, m_params->seed); - float humidity = - NoisePerlin2D(&m_params->np_humidity, pos.X, pos.Z, m_params->seed) + +} + +float BiomeGenOriginal::calcHumidityAtPoint(v3s16 pos) const +{ + return NoisePerlin2D(&m_params->np_humidity, pos.X, pos.Z, m_params->seed) + NoisePerlin2D(&m_params->np_humidity_blend, pos.X, pos.Z, m_params->seed); +} - return calcBiomeFromNoise(heat, humidity, pos); +Biome *BiomeGenOriginal::calcBiomeAtPoint(v3s16 pos) const +{ + return calcBiomeFromNoise(calcHeatAtPoint(pos), calcHumidityAtPoint(pos), pos); } diff --git a/src/mapgen/mg_biome.h b/src/mapgen/mg_biome.h index be4cfea4d..c85afc3a0 100644 --- a/src/mapgen/mg_biome.h +++ b/src/mapgen/mg_biome.h @@ -97,6 +97,15 @@ public: virtual BiomeGenType getType() const = 0; + // Clone this BiomeGen and set a the new BiomeManager to be used by the copy + virtual BiomeGen *clone(BiomeManager *biomemgr) const = 0; + + // Check that the internal chunk size is what the mapgen expects, just to be sure. + inline void assertChunkSize(v3s16 expect) const + { + FATAL_ERROR_IF(m_csize != expect, "Chunk size mismatches"); + } + // Calculates the biome at the exact position provided. This function can // be called at any time, but may be less efficient than the latter methods, // depending on implementation. @@ -158,12 +167,18 @@ struct BiomeParamsOriginal : public BiomeParams { class BiomeGenOriginal : public BiomeGen { public: BiomeGenOriginal(BiomeManager *biomemgr, - BiomeParamsOriginal *params, v3s16 chunksize); + const BiomeParamsOriginal *params, v3s16 chunksize); virtual ~BiomeGenOriginal(); BiomeGenType getType() const { return BIOMEGEN_ORIGINAL; } + BiomeGen *clone(BiomeManager *biomemgr) const; + + // Slower, meant for Script API use + float calcHeatAtPoint(v3s16 pos) const; + float calcHumidityAtPoint(v3s16 pos) const; Biome *calcBiomeAtPoint(v3s16 pos) const; + void calcBiomeNoise(v3s16 pmin); biome_t *getBiomes(s16 *heightmap, v3s16 pmin); @@ -176,7 +191,7 @@ public: float *humidmap; private: - BiomeParamsOriginal *m_params; + const BiomeParamsOriginal *m_params; Noise *noise_heat; Noise *noise_humidity; @@ -229,14 +244,6 @@ public: virtual void clear(); - // For BiomeGen type 'BiomeGenOriginal' - float getHeatAtPosOriginal(v3s16 pos, NoiseParams &np_heat, - NoiseParams &np_heat_blend, u64 seed) const; - float getHumidityAtPosOriginal(v3s16 pos, NoiseParams &np_humidity, - NoiseParams &np_humidity_blend, u64 seed) const; - const Biome *getBiomeFromNoiseOriginal(float heat, float humidity, - v3s16 pos) const; - private: BiomeManager() {}; diff --git a/src/mapgen/mg_ore.h b/src/mapgen/mg_ore.h index a58fa9bfe..a757fa6d0 100644 --- a/src/mapgen/mg_ore.h +++ b/src/mapgen/mg_ore.h @@ -85,7 +85,7 @@ class OreScatter : public Ore { public: OreScatter() : Ore(false) {} - ObjDef *clone() const; + ObjDef *clone() const override; void generate(MMVManip *vm, int mapseed, u32 blockseed, v3s16 nmin, v3s16 nmax, biome_t *biomemap) override; @@ -95,7 +95,7 @@ class OreSheet : public Ore { public: OreSheet() : Ore(true) {} - ObjDef *clone() const; + ObjDef *clone() const override; u16 column_height_min; u16 column_height_max; @@ -107,7 +107,7 @@ public: class OrePuff : public Ore { public: - ObjDef *clone() const; + ObjDef *clone() const override; NoiseParams np_puff_top; NoiseParams np_puff_bottom; @@ -123,7 +123,7 @@ public: class OreBlob : public Ore { public: - ObjDef *clone() const; + ObjDef *clone() const override; OreBlob() : Ore(true) {} void generate(MMVManip *vm, int mapseed, u32 blockseed, @@ -132,7 +132,7 @@ public: class OreVein : public Ore { public: - ObjDef *clone() const; + ObjDef *clone() const override; float random_factor; Noise *noise2 = nullptr; @@ -147,7 +147,7 @@ public: class OreStratum : public Ore { public: - ObjDef *clone() const; + ObjDef *clone() const override; NoiseParams np_stratum_thickness; Noise *noise_stratum_thickness = nullptr; diff --git a/src/mapgen/mg_schematic.cpp b/src/mapgen/mg_schematic.cpp index e70e97e48..653bad4fe 100644 --- a/src/mapgen/mg_schematic.cpp +++ b/src/mapgen/mg_schematic.cpp @@ -76,10 +76,6 @@ void SchematicManager::clear() /////////////////////////////////////////////////////////////////////////////// -Schematic::Schematic() -= default; - - Schematic::~Schematic() { delete []schemdata; @@ -108,13 +104,19 @@ ObjDef *Schematic::clone() const void Schematic::resolveNodeNames() { + c_nodes.clear(); getIdsFromNrBacklog(&c_nodes, true, CONTENT_AIR); size_t bufsize = size.X * size.Y * size.Z; for (size_t i = 0; i != bufsize; i++) { content_t c_original = schemdata[i].getContent(); - content_t c_new = c_nodes[c_original]; - schemdata[i].setContent(c_new); + if (c_original >= c_nodes.size()) { + errorstream << "Corrupt schematic. name=\"" << name + << "\" at index " << i << std::endl; + c_original = 0; + } + // Unfold condensed ID layout to content_t + schemdata[i].setContent(c_nodes[c_original]); } } @@ -279,8 +281,7 @@ void Schematic::placeOnMap(ServerMap *map, v3s16 p, u32 flags, } -bool Schematic::deserializeFromMts(std::istream *is, - std::vector<std::string> *names) +bool Schematic::deserializeFromMts(std::istream *is) { std::istream &ss = *is; content_t cignore = CONTENT_IGNORE; @@ -312,6 +313,8 @@ bool Schematic::deserializeFromMts(std::istream *is, slice_probs[y] = (version >= 3) ? readU8(ss) : MTSCHEM_PROB_ALWAYS_OLD; //// Read node names + NodeResolver::reset(); + u16 nidmapcount = readU16(ss); for (int i = 0; i != nidmapcount; i++) { std::string name = deSerializeString16(ss); @@ -324,9 +327,12 @@ bool Schematic::deserializeFromMts(std::istream *is, have_cignore = true; } - names->push_back(name); + m_nodenames.push_back(name); } + // Prepare for node resolver + m_nnlistsizes.push_back(m_nodenames.size()); + //// Read node data size_t nodecount = size.X * size.Y * size.Z; @@ -358,9 +364,11 @@ bool Schematic::deserializeFromMts(std::istream *is, } -bool Schematic::serializeToMts(std::ostream *os, - const std::vector<std::string> &names) const +bool Schematic::serializeToMts(std::ostream *os) const { + // Nodes must not be resolved (-> condensed) + // checking here is not possible because "schemdata" might be temporary. + std::ostream &ss = *os; writeU32(ss, MTSCHEM_FILE_SIGNATURE); // signature @@ -370,9 +378,10 @@ bool Schematic::serializeToMts(std::ostream *os, for (int y = 0; y != size.Y; y++) // Y slice probabilities writeU8(ss, slice_probs[y]); - writeU16(ss, names.size()); // name count - for (size_t i = 0; i != names.size(); i++) - ss << serializeString16(names[i]); // node names + writeU16(ss, m_nodenames.size()); // name count + for (size_t i = 0; i != m_nodenames.size(); i++) { + ss << serializeString16(m_nodenames[i]); // node names + } // compressed bulk node data MapNode::serializeBulk(ss, SER_FMT_VER_HIGHEST_WRITE, @@ -382,8 +391,7 @@ bool Schematic::serializeToMts(std::ostream *os, } -bool Schematic::serializeToLua(std::ostream *os, - const std::vector<std::string> &names, bool use_comments, +bool Schematic::serializeToLua(std::ostream *os, bool use_comments, u32 indent_spaces) const { std::ostream &ss = *os; @@ -392,6 +400,9 @@ bool Schematic::serializeToLua(std::ostream *os, if (indent_spaces > 0) indent.assign(indent_spaces, ' '); + bool resolve_done = isResolveDone(); + FATAL_ERROR_IF(resolve_done && !m_ndef, "serializeToLua: NodeDefManager is required"); + //// Write header { ss << "schematic = {" << std::endl; @@ -436,9 +447,22 @@ bool Schematic::serializeToLua(std::ostream *os, u8 probability = schemdata[i].param1 & MTSCHEM_PROB_MASK; bool force_place = schemdata[i].param1 & MTSCHEM_FORCE_PLACE; - ss << indent << indent << "{" - << "name=\"" << names[schemdata[i].getContent()] - << "\", prob=" << (u16)probability * 2 + // After node resolving: real content_t, lookup using NodeDefManager + // Prior node resolving: condensed ID, lookup using m_nodenames + content_t c = schemdata[i].getContent(); + + ss << indent << indent << "{" << "name=\""; + + if (!resolve_done) { + // Prior node resolving (eg. direct schematic load) + FATAL_ERROR_IF(c >= m_nodenames.size(), "Invalid node list"); + ss << m_nodenames[c]; + } else { + // After node resolving (eg. biome decoration) + ss << m_ndef->get(c).name; + } + + ss << "\", prob=" << (u16)probability * 2 << ", param2=" << (u16)schemdata[i].param2; if (force_place) @@ -467,25 +491,24 @@ bool Schematic::loadSchematicFromFile(const std::string &filename, return false; } - size_t origsize = m_nodenames.size(); - if (!deserializeFromMts(&is, &m_nodenames)) - return false; + if (!m_ndef) + m_ndef = ndef; - m_nnlistsizes.push_back(m_nodenames.size() - origsize); + if (!deserializeFromMts(&is)) + return false; name = filename; if (replace_names) { - for (size_t i = origsize; i < m_nodenames.size(); i++) { - std::string &node_name = m_nodenames[i]; + for (std::string &node_name : m_nodenames) { StringMap::iterator it = replace_names->find(node_name); if (it != replace_names->end()) node_name = it->second; } } - if (ndef) - ndef->pendNodeResolve(this); + if (m_ndef) + m_ndef->pendNodeResolve(this); return true; } @@ -494,33 +517,26 @@ bool Schematic::loadSchematicFromFile(const std::string &filename, bool Schematic::saveSchematicToFile(const std::string &filename, const NodeDefManager *ndef) { - MapNode *orig_schemdata = schemdata; - std::vector<std::string> ndef_nodenames; - std::vector<std::string> *names; + Schematic *schem = this; - if (m_resolve_done && ndef == NULL) - ndef = m_ndef; + bool needs_condense = isResolveDone(); - if (ndef) { - names = &ndef_nodenames; + if (!m_ndef) + m_ndef = ndef; - u32 volume = size.X * size.Y * size.Z; - schemdata = new MapNode[volume]; - for (u32 i = 0; i != volume; i++) - schemdata[i] = orig_schemdata[i]; + if (needs_condense) { + if (!m_ndef) + return false; - generate_nodelist_and_update_ids(schemdata, volume, names, ndef); - } else { // otherwise, use the names we have on hand in the list - names = &m_nodenames; + schem = (Schematic *)this->clone(); + schem->condenseContentIds(); } std::ostringstream os(std::ios_base::binary); - bool status = serializeToMts(&os, *names); + bool status = schem->serializeToMts(&os); - if (ndef) { - delete []schemdata; - schemdata = orig_schemdata; - } + if (needs_condense) + delete schem; if (!status) return false; @@ -556,6 +572,10 @@ bool Schematic::getSchematicFromMap(Map *map, v3s16 p1, v3s16 p2) } delete vm; + + // Reset and mark as complete + NodeResolver::reset(true); + return true; } @@ -584,26 +604,29 @@ void Schematic::applyProbabilities(v3s16 p0, } -void generate_nodelist_and_update_ids(MapNode *nodes, size_t nodecount, - std::vector<std::string> *usednodes, const NodeDefManager *ndef) +void Schematic::condenseContentIds() { std::unordered_map<content_t, content_t> nodeidmap; content_t numids = 0; + // Reset node resolve fields + NodeResolver::reset(); + + size_t nodecount = size.X * size.Y * size.Z; for (size_t i = 0; i != nodecount; i++) { content_t id; - content_t c = nodes[i].getContent(); + content_t c = schemdata[i].getContent(); - std::unordered_map<content_t, content_t>::const_iterator it = nodeidmap.find(c); + auto it = nodeidmap.find(c); if (it == nodeidmap.end()) { id = numids; numids++; - usednodes->push_back(ndef->get(c).name); - nodeidmap.insert(std::make_pair(c, id)); + m_nodenames.push_back(m_ndef->get(c).name); + nodeidmap.emplace(std::make_pair(c, id)); } else { id = it->second; } - nodes[i].setContent(id); + schemdata[i].setContent(id); } } diff --git a/src/mapgen/mg_schematic.h b/src/mapgen/mg_schematic.h index 6b31251b6..5f64ea280 100644 --- a/src/mapgen/mg_schematic.h +++ b/src/mapgen/mg_schematic.h @@ -92,7 +92,7 @@ enum SchematicFormatType { class Schematic : public ObjDef, public NodeResolver { public: - Schematic(); + Schematic() = default; virtual ~Schematic(); ObjDef *clone() const; @@ -105,11 +105,9 @@ public: const NodeDefManager *ndef); bool getSchematicFromMap(Map *map, v3s16 p1, v3s16 p2); - bool deserializeFromMts(std::istream *is, std::vector<std::string> *names); - bool serializeToMts(std::ostream *os, - const std::vector<std::string> &names) const; - bool serializeToLua(std::ostream *os, const std::vector<std::string> &names, - bool use_comments, u32 indent_spaces) const; + bool deserializeFromMts(std::istream *is); + bool serializeToMts(std::ostream *os) const; + bool serializeToLua(std::ostream *os, bool use_comments, u32 indent_spaces) const; void blitToVManip(MMVManip *vm, v3s16 p, Rotation rot, bool force_place); bool placeOnVManip(MMVManip *vm, v3s16 p, u32 flags, Rotation rot, bool force_place); @@ -124,6 +122,10 @@ public: v3s16 size; MapNode *schemdata = nullptr; u8 *slice_probs = nullptr; + +private: + // Counterpart to the node resolver: Condense content_t to a sequential "m_nodenames" list + void condenseContentIds(); }; class SchematicManager : public ObjDefManager { @@ -151,5 +153,3 @@ private: Server *m_server; }; -void generate_nodelist_and_update_ids(MapNode *nodes, size_t nodecount, - std::vector<std::string> *usednodes, const NodeDefManager *ndef); diff --git a/src/network/clientpackethandler.cpp b/src/network/clientpackethandler.cpp index 65db02300..c8a160732 100644 --- a/src/network/clientpackethandler.cpp +++ b/src/network/clientpackethandler.cpp @@ -1041,9 +1041,6 @@ void Client::handleCommand_DeleteParticleSpawner(NetworkPacket* pkt) void Client::handleCommand_HudAdd(NetworkPacket* pkt) { - std::string datastring(pkt->getString(0), pkt->getSize()); - std::istringstream is(datastring, std::ios_base::binary); - u32 server_id; u8 type; v2f pos; @@ -1070,22 +1067,23 @@ void Client::handleCommand_HudAdd(NetworkPacket* pkt) } catch(PacketError &e) {}; ClientEvent *event = new ClientEvent(); - event->type = CE_HUDADD; - event->hudadd.server_id = server_id; - event->hudadd.type = type; - event->hudadd.pos = new v2f(pos); - event->hudadd.name = new std::string(name); - event->hudadd.scale = new v2f(scale); - event->hudadd.text = new std::string(text); - event->hudadd.number = number; - event->hudadd.item = item; - event->hudadd.dir = dir; - event->hudadd.align = new v2f(align); - event->hudadd.offset = new v2f(offset); - event->hudadd.world_pos = new v3f(world_pos); - event->hudadd.size = new v2s32(size); - event->hudadd.z_index = z_index; - event->hudadd.text2 = new std::string(text2); + event->type = CE_HUDADD; + event->hudadd = new ClientEventHudAdd(); + event->hudadd->server_id = server_id; + event->hudadd->type = type; + event->hudadd->pos = pos; + event->hudadd->name = name; + event->hudadd->scale = scale; + event->hudadd->text = text; + event->hudadd->number = number; + event->hudadd->item = item; + event->hudadd->dir = dir; + event->hudadd->align = align; + event->hudadd->offset = offset; + event->hudadd->world_pos = world_pos; + event->hudadd->size = size; + event->hudadd->z_index = z_index; + event->hudadd->text2 = text2; m_client_event_queue.push(event); } @@ -1095,16 +1093,10 @@ void Client::handleCommand_HudRemove(NetworkPacket* pkt) *pkt >> server_id; - auto i = m_hud_server_to_client.find(server_id); - if (i != m_hud_server_to_client.end()) { - int client_id = i->second; - m_hud_server_to_client.erase(i); - - ClientEvent *event = new ClientEvent(); - event->type = CE_HUDRM; - event->hudrm.id = client_id; - m_client_event_queue.push(event); - } + ClientEvent *event = new ClientEvent(); + event->type = CE_HUDRM; + event->hudrm.id = server_id; + m_client_event_queue.push(event); } void Client::handleCommand_HudChange(NetworkPacket* pkt) @@ -1131,19 +1123,17 @@ void Client::handleCommand_HudChange(NetworkPacket* pkt) else *pkt >> intdata; - std::unordered_map<u32, u32>::const_iterator i = m_hud_server_to_client.find(server_id); - if (i != m_hud_server_to_client.end()) { - ClientEvent *event = new ClientEvent(); - event->type = CE_HUDCHANGE; - event->hudchange.id = i->second; - event->hudchange.stat = (HudElementStat)stat; - event->hudchange.v2fdata = new v2f(v2fdata); - event->hudchange.v3fdata = new v3f(v3fdata); - event->hudchange.sdata = new std::string(sdata); - event->hudchange.data = intdata; - event->hudchange.v2s32data = new v2s32(v2s32data); - m_client_event_queue.push(event); - } + ClientEvent *event = new ClientEvent(); + event->type = CE_HUDCHANGE; + event->hudchange = new ClientEventHudChange(); + event->hudchange->id = server_id; + event->hudchange->stat = static_cast<HudElementStat>(stat); + event->hudchange->v2fdata = v2fdata; + event->hudchange->v3fdata = v3fdata; + event->hudchange->sdata = sdata; + event->hudchange->data = intdata; + event->hudchange->v2s32data = v2s32data; + m_client_event_queue.push(event); } void Client::handleCommand_HudSetFlags(NetworkPacket* pkt) diff --git a/src/network/serverpackethandler.cpp b/src/network/serverpackethandler.cpp index 270b8e01f..5b378a083 100644 --- a/src/network/serverpackethandler.cpp +++ b/src/network/serverpackethandler.cpp @@ -174,6 +174,16 @@ void Server::handleCommand_Init(NetworkPacket* pkt) return; } + RemotePlayer *player = m_env->getPlayer(playername); + + // If player is already connected, cancel + if (player && player->getPeerId() != PEER_ID_INEXISTENT) { + actionstream << "Server: Player with name \"" << playername << + "\" tried to connect, but player with same name is already connected" << std::endl; + DenyAccess(peer_id, SERVER_ACCESSDENIED_ALREADY_CONNECTED); + return; + } + m_clients.setPlayerName(peer_id, playername); //TODO (later) case insensitivity @@ -488,8 +498,12 @@ void Server::process_PlayerPos(RemotePlayer *player, PlayerSAO *playersao, pitch = modulo360f(pitch); yaw = wrapDegrees_0_360(yaw); - playersao->setBasePosition(position); - player->setSpeed(speed); + if (!playersao->isAttached()) { + // Only update player positions when moving freely + // to not interfere with attachment handling + playersao->setBasePosition(position); + player->setSpeed(speed); + } playersao->setLookPitch(pitch); playersao->setPlayerYaw(yaw); playersao->setFov(fov); @@ -622,21 +636,36 @@ void Server::handleCommand_InventoryAction(NetworkPacket* pkt) const bool player_has_interact = checkPriv(player->getName(), "interact"); - auto check_inv_access = [player, player_has_interact] ( + auto check_inv_access = [player, player_has_interact, this] ( const InventoryLocation &loc) -> bool { - if (loc.type == InventoryLocation::CURRENT_PLAYER) - return false; // Only used internally on the client, never sent - if (loc.type == InventoryLocation::PLAYER) { - // Allow access to own inventory in all cases - return loc.name == player->getName(); - } - if (!player_has_interact) { + // Players without interact may modify their own inventory + if (!player_has_interact && loc.type != InventoryLocation::PLAYER) { infostream << "Cannot modify foreign inventory: " << "No interact privilege" << std::endl; return false; } - return true; + + switch (loc.type) { + case InventoryLocation::CURRENT_PLAYER: + // Only used internally on the client, never sent + return false; + case InventoryLocation::PLAYER: + // Allow access to own inventory in all cases + return loc.name == player->getName(); + case InventoryLocation::NODEMETA: + { + // Check for out-of-range interaction + v3f node_pos = intToFloat(loc.p, BS); + v3f player_pos = player->getPlayerSAO()->getEyePosition(); + f32 d = player_pos.getDistanceFrom(node_pos); + return checkInteractDistance(player, d, "inventory"); + } + case InventoryLocation::DETACHED: + return getInventoryMgr()->checkDetachedInventoryAccess(loc, player->getName()); + default: + return false; + } }; /* @@ -656,18 +685,6 @@ void Server::handleCommand_InventoryAction(NetworkPacket* pkt) !check_inv_access(ma->to_inv)) return; - InventoryLocation *remote = ma->from_inv.type == InventoryLocation::PLAYER ? - &ma->to_inv : &ma->from_inv; - - // Check for out-of-range interaction - if (remote->type == InventoryLocation::NODEMETA) { - v3f node_pos = intToFloat(remote->p, BS); - v3f player_pos = player->getPlayerSAO()->getEyePosition(); - f32 d = player_pos.getDistanceFrom(node_pos); - if (!checkInteractDistance(player, d, "inventory")) - return; - } - /* Disable moving items out of craftpreview */ diff --git a/src/nodedef.cpp b/src/nodedef.cpp index 57d4c008f..8a1f6203b 100644 --- a/src/nodedef.cpp +++ b/src/nodedef.cpp @@ -1675,8 +1675,7 @@ bool NodeDefManager::nodeboxConnects(MapNode from, MapNode to, NodeResolver::NodeResolver() { - m_nodenames.reserve(16); - m_nnlistsizes.reserve(4); + reset(); } @@ -1779,3 +1778,16 @@ bool NodeResolver::getIdsFromNrBacklog(std::vector<content_t> *result_out, return success; } + +void NodeResolver::reset(bool resolve_done) +{ + m_nodenames.clear(); + m_nodenames_idx = 0; + m_nnlistsizes.clear(); + m_nnlistsizes_idx = 0; + + m_resolve_done = resolve_done; + + m_nodenames.reserve(16); + m_nnlistsizes.reserve(4); +} diff --git a/src/nodedef.h b/src/nodedef.h index 6fc20518d..3e77624eb 100644 --- a/src/nodedef.h +++ b/src/nodedef.h @@ -44,6 +44,9 @@ class ITextureSource; class IShaderSource; class IGameDef; class NodeResolver; +#if BUILD_UNITTESTS +class TestSchematic; +#endif enum ContentParamType { @@ -789,10 +792,13 @@ private: NodeDefManager *createNodeDefManager(); +// NodeResolver: Queue for node names which are then translated +// to content_t after the NodeDefManager was initialized class NodeResolver { public: NodeResolver(); virtual ~NodeResolver(); + // Callback which is run as soon NodeDefManager is ready virtual void resolveNodeNames() = 0; // required because this class is used as mixin for ObjDef @@ -804,12 +810,31 @@ public: bool getIdsFromNrBacklog(std::vector<content_t> *result_out, bool all_required = false, content_t c_fallback = CONTENT_IGNORE); - void nodeResolveInternal(); + inline bool isResolveDone() const { return m_resolve_done; } + void reset(bool resolve_done = false); - u32 m_nodenames_idx = 0; - u32 m_nnlistsizes_idx = 0; + // Vector containing all node names in the resolve "queue" std::vector<std::string> m_nodenames; + // Specifies the "set size" of node names which are to be processed + // this is used for getIdsFromNrBacklog + // TODO: replace or remove std::vector<size_t> m_nnlistsizes; + +protected: + friend class NodeDefManager; // m_ndef + const NodeDefManager *m_ndef = nullptr; + // Index of the next "m_nodenames" entry to resolve + u32 m_nodenames_idx = 0; + +private: +#if BUILD_UNITTESTS + // Unittest requires access to m_resolve_done + friend class TestSchematic; +#endif + void nodeResolveInternal(); + + // Index of the next "m_nnlistsizes" entry to process + u32 m_nnlistsizes_idx = 0; bool m_resolve_done = false; }; diff --git a/src/noise.cpp b/src/noise.cpp index e16564b05..a10efa3c4 100644 --- a/src/noise.cpp +++ b/src/noise.cpp @@ -369,7 +369,7 @@ float contour(float v) ///////////////////////// [ New noise ] //////////////////////////// -float NoisePerlin2D(NoiseParams *np, float x, float y, s32 seed) +float NoisePerlin2D(const NoiseParams *np, float x, float y, s32 seed) { float a = 0; float f = 1.0; @@ -395,7 +395,7 @@ float NoisePerlin2D(NoiseParams *np, float x, float y, s32 seed) } -float NoisePerlin3D(NoiseParams *np, float x, float y, float z, s32 seed) +float NoisePerlin3D(const NoiseParams *np, float x, float y, float z, s32 seed) { float a = 0; float f = 1.0; @@ -422,7 +422,7 @@ float NoisePerlin3D(NoiseParams *np, float x, float y, float z, s32 seed) } -Noise::Noise(NoiseParams *np_, s32 seed, u32 sx, u32 sy, u32 sz) +Noise::Noise(const NoiseParams *np_, s32 seed, u32 sx, u32 sy, u32 sz) { np = *np_; this->seed = seed; diff --git a/src/noise.h b/src/noise.h index 613879890..854781731 100644 --- a/src/noise.h +++ b/src/noise.h @@ -146,7 +146,7 @@ public: float *persist_buf = nullptr; float *result = nullptr; - Noise(NoiseParams *np, s32 seed, u32 sx, u32 sy, u32 sz=1); + Noise(const NoiseParams *np, s32 seed, u32 sx, u32 sy, u32 sz=1); ~Noise(); void setSize(u32 sx, u32 sy, u32 sz=1); @@ -192,8 +192,8 @@ private: }; -float NoisePerlin2D(NoiseParams *np, float x, float y, s32 seed); -float NoisePerlin3D(NoiseParams *np, float x, float y, float z, s32 seed); +float NoisePerlin2D(const NoiseParams *np, float x, float y, s32 seed); +float NoisePerlin3D(const NoiseParams *np, float x, float y, float z, s32 seed); inline float NoisePerlin2D_PO(NoiseParams *np, float x, float xoff, float y, float yoff, s32 seed) diff --git a/src/object_properties.cpp b/src/object_properties.cpp index f31773060..2eebc27d6 100644 --- a/src/object_properties.cpp +++ b/src/object_properties.cpp @@ -24,6 +24,8 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "util/basic_macros.h" #include <sstream> +static const video::SColor NULL_BGCOLOR{0, 1, 1, 1}; + ObjectProperties::ObjectProperties() { textures.emplace_back("unknown_object.png"); @@ -62,6 +64,13 @@ std::string ObjectProperties::dump() os << ", nametag=" << nametag; os << ", nametag_color=" << "\"" << nametag_color.getAlpha() << "," << nametag_color.getRed() << "," << nametag_color.getGreen() << "," << nametag_color.getBlue() << "\" "; + + if (nametag_bgcolor) + os << ", nametag_bgcolor=" << "\"" << nametag_color.getAlpha() << "," << nametag_color.getRed() + << "," << nametag_color.getGreen() << "," << nametag_color.getBlue() << "\" "; + else + os << ", nametag_bgcolor=null "; + os << ", selectionbox=" << PP(selectionbox.MinEdge) << "," << PP(selectionbox.MaxEdge); os << ", pointable=" << pointable; os << ", static_save=" << static_save; @@ -121,6 +130,13 @@ void ObjectProperties::serialize(std::ostream &os) const writeU8(os, shaded); writeU8(os, show_on_minimap); + if (!nametag_bgcolor) + writeARGB8(os, NULL_BGCOLOR); + else if (nametag_bgcolor.value().getAlpha() == 0) + writeARGB8(os, video::SColor(0, 0, 0, 0)); + else + writeARGB8(os, nametag_bgcolor.value()); + // Add stuff only at the bottom. // Never remove anything, because we don't want new versions of this } @@ -182,5 +198,11 @@ void ObjectProperties::deSerialize(std::istream &is) if (is.eof()) return; show_on_minimap = tmp; + + auto bgcolor = readARGB8(is); + if (bgcolor != NULL_BGCOLOR) + nametag_bgcolor = bgcolor; + else + nametag_bgcolor = nullopt; } catch (SerializationError &e) {} } diff --git a/src/object_properties.h b/src/object_properties.h index adb483527..db28eebfd 100644 --- a/src/object_properties.h +++ b/src/object_properties.h @@ -24,6 +24,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include <iostream> #include <map> #include <vector> +#include "util/Optional.h" struct ObjectProperties { @@ -53,6 +54,7 @@ struct ObjectProperties s8 glow = 0; std::string nametag = ""; video::SColor nametag_color = video::SColor(255, 255, 255, 255); + Optional<video::SColor> nametag_bgcolor = nullopt; f32 automatic_face_movement_max_rotation_per_sec = -1.0f; std::string infotext; //! For dropped items, this contains item information. diff --git a/src/porting.h b/src/porting.h index e4ebe36fd..93932e1d9 100644 --- a/src/porting.h +++ b/src/porting.h @@ -234,21 +234,21 @@ inline u64 getTimeMs() { struct timespec ts; os_get_clock(&ts); - return ts.tv_sec * 1000 + ts.tv_nsec / 1000000; + return ((u64) ts.tv_sec) * 1000LL + ((u64) ts.tv_nsec) / 1000000LL; } inline u64 getTimeUs() { struct timespec ts; os_get_clock(&ts); - return ts.tv_sec * 1000000 + ts.tv_nsec / 1000; + return ((u64) ts.tv_sec) * 1000000LL + ((u64) ts.tv_nsec) / 1000LL; } inline u64 getTimeNs() { struct timespec ts; os_get_clock(&ts); - return ts.tv_sec * 1000000000 + ts.tv_nsec; + return ((u64) ts.tv_sec) * 1000000000LL + ((u64) ts.tv_nsec); } #endif diff --git a/src/script/common/c_content.cpp b/src/script/common/c_content.cpp index ecab7baa1..eca0c89d1 100644 --- a/src/script/common/c_content.cpp +++ b/src/script/common/c_content.cpp @@ -119,6 +119,8 @@ void read_item_definition(lua_State* L, int index, // "" = no prediction getstringfield(L, index, "node_placement_prediction", def.node_placement_prediction); + + getintfield(L, index, "place_param2", def.place_param2); } /******************************************************************************/ @@ -140,8 +142,10 @@ void push_item_definition_full(lua_State *L, const ItemDefinition &i) lua_setfield(L, -2, "name"); lua_pushstring(L, i.description.c_str()); lua_setfield(L, -2, "description"); - lua_pushstring(L, i.short_description.c_str()); - lua_setfield(L, -2, "short_description"); + if (!i.short_description.empty()) { + lua_pushstring(L, i.short_description.c_str()); + lua_setfield(L, -2, "short_description"); + } lua_pushstring(L, type.c_str()); lua_setfield(L, -2, "type"); lua_pushstring(L, i.inventory_image.c_str()); @@ -310,6 +314,17 @@ void read_object_properties(lua_State *L, int index, prop->nametag_color = color; } lua_pop(L, 1); + lua_getfield(L, -1, "nametag_bgcolor"); + if (!lua_isnil(L, -1)) { + if (lua_toboolean(L, -1)) { + video::SColor color; + if (read_color(L, -1, &color)) + prop->nametag_bgcolor = color; + } else { + prop->nametag_bgcolor = nullopt; + } + } + lua_pop(L, 1); lua_getfield(L, -1, "automatic_face_movement_max_rotation_per_sec"); if (lua_isnumber(L, -1)) { @@ -401,6 +416,13 @@ void push_object_properties(lua_State *L, ObjectProperties *prop) lua_setfield(L, -2, "nametag"); push_ARGB8(L, prop->nametag_color); lua_setfield(L, -2, "nametag_color"); + if (prop->nametag_bgcolor) { + push_ARGB8(L, prop->nametag_bgcolor.value()); + lua_setfield(L, -2, "nametag_bgcolor"); + } else { + lua_pushboolean(L, false); + lua_setfield(L, -2, "nametag_bgcolor"); + } lua_pushnumber(L, prop->automatic_face_movement_max_rotation_per_sec); lua_setfield(L, -2, "automatic_face_movement_max_rotation_per_sec"); lua_pushlstring(L, prop->infotext.c_str(), prop->infotext.size()); diff --git a/src/script/common/helper.cpp b/src/script/common/helper.cpp index 488144790..fbf24e1b7 100644 --- a/src/script/common/helper.cpp +++ b/src/script/common/helper.cpp @@ -50,22 +50,26 @@ bool LuaHelper::isNaN(lua_State *L, int idx) /* * Read template functions */ -template <> bool LuaHelper::readParam(lua_State *L, int index) +template <> +bool LuaHelper::readParam(lua_State *L, int index) { return lua_toboolean(L, index) != 0; } -template <> s16 LuaHelper::readParam(lua_State *L, int index) +template <> +s16 LuaHelper::readParam(lua_State *L, int index) { return lua_tonumber(L, index); } -template <> int LuaHelper::readParam(lua_State *L, int index) +template <> +int LuaHelper::readParam(lua_State *L, int index) { return luaL_checkint(L, index); } -template <> float LuaHelper::readParam(lua_State *L, int index) +template <> +float LuaHelper::readParam(lua_State *L, int index) { if (isNaN(L, index)) throw LuaError("NaN value is not allowed."); @@ -73,7 +77,8 @@ template <> float LuaHelper::readParam(lua_State *L, int index) return (float)luaL_checknumber(L, index); } -template <> v2s16 LuaHelper::readParam(lua_State *L, int index) +template <> +v2s16 LuaHelper::readParam(lua_State *L, int index) { v2s16 p; CHECK_POS_TAB(index); @@ -88,7 +93,8 @@ template <> v2s16 LuaHelper::readParam(lua_State *L, int index) return p; } -template <> v2f LuaHelper::readParam(lua_State *L, int index) +template <> +v2f LuaHelper::readParam(lua_State *L, int index) { v2f p; CHECK_POS_TAB(index); @@ -103,7 +109,8 @@ template <> v2f LuaHelper::readParam(lua_State *L, int index) return p; } -template <> v3f LuaHelper::readParam(lua_State *L, int index) +template <> +v3f LuaHelper::readParam(lua_State *L, int index) { v3f p; CHECK_POS_TAB(index); @@ -122,7 +129,8 @@ template <> v3f LuaHelper::readParam(lua_State *L, int index) return p; } -template <> std::string LuaHelper::readParam(lua_State *L, int index) +template <> +std::string LuaHelper::readParam(lua_State *L, int index) { size_t length; std::string result; diff --git a/src/script/common/helper.h b/src/script/common/helper.h index 7a794dc9b..6491e73cf 100644 --- a/src/script/common/helper.h +++ b/src/script/common/helper.h @@ -38,7 +38,8 @@ protected: * @param index Lua Index to read * @return read value from Lua */ - template <typename T> static T readParam(lua_State *L, int index); + template <typename T> + static T readParam(lua_State *L, int index); /** * Read a value using a template type T from Lua State L and index diff --git a/src/script/lua_api/l_mapgen.cpp b/src/script/lua_api/l_mapgen.cpp index 12a497b1e..eb3d49a5e 100644 --- a/src/script/lua_api/l_mapgen.cpp +++ b/src/script/lua_api/l_mapgen.cpp @@ -482,9 +482,7 @@ int ModApiMapgen::l_get_biome_id(lua_State *L) { NO_MAP_LOCK_REQUIRED; - const char *biome_str = lua_tostring(L, 1); - if (!biome_str) - return 0; + const char *biome_str = luaL_checkstring(L, 1); const BiomeManager *bmgr = getServer(L)->getEmergeManager()->getBiomeManager(); if (!bmgr) @@ -527,30 +525,12 @@ int ModApiMapgen::l_get_heat(lua_State *L) v3s16 pos = read_v3s16(L, 1); - NoiseParams np_heat; - NoiseParams np_heat_blend; - - MapSettingsManager *settingsmgr = - getServer(L)->getEmergeManager()->map_settings_mgr; + const BiomeGen *biomegen = getServer(L)->getEmergeManager()->getBiomeGen(); - if (!settingsmgr->getMapSettingNoiseParams("mg_biome_np_heat", - &np_heat) || - !settingsmgr->getMapSettingNoiseParams("mg_biome_np_heat_blend", - &np_heat_blend)) - return 0; - - std::string value; - if (!settingsmgr->getMapSetting("seed", &value)) - return 0; - std::istringstream ss(value); - u64 seed; - ss >> seed; - - const BiomeManager *bmgr = getServer(L)->getEmergeManager()->getBiomeManager(); - if (!bmgr) + if (!biomegen || biomegen->getType() != BIOMEGEN_ORIGINAL) return 0; - float heat = bmgr->getHeatAtPosOriginal(pos, np_heat, np_heat_blend, seed); + float heat = ((BiomeGenOriginal*) biomegen)->calcHeatAtPoint(pos); lua_pushnumber(L, heat); @@ -566,31 +546,12 @@ int ModApiMapgen::l_get_humidity(lua_State *L) v3s16 pos = read_v3s16(L, 1); - NoiseParams np_humidity; - NoiseParams np_humidity_blend; - - MapSettingsManager *settingsmgr = - getServer(L)->getEmergeManager()->map_settings_mgr; + const BiomeGen *biomegen = getServer(L)->getEmergeManager()->getBiomeGen(); - if (!settingsmgr->getMapSettingNoiseParams("mg_biome_np_humidity", - &np_humidity) || - !settingsmgr->getMapSettingNoiseParams("mg_biome_np_humidity_blend", - &np_humidity_blend)) + if (!biomegen || biomegen->getType() != BIOMEGEN_ORIGINAL) return 0; - std::string value; - if (!settingsmgr->getMapSetting("seed", &value)) - return 0; - std::istringstream ss(value); - u64 seed; - ss >> seed; - - const BiomeManager *bmgr = getServer(L)->getEmergeManager()->getBiomeManager(); - if (!bmgr) - return 0; - - float humidity = bmgr->getHumidityAtPosOriginal(pos, np_humidity, - np_humidity_blend, seed); + float humidity = ((BiomeGenOriginal*) biomegen)->calcHumidityAtPoint(pos); lua_pushnumber(L, humidity); @@ -606,45 +567,11 @@ int ModApiMapgen::l_get_biome_data(lua_State *L) v3s16 pos = read_v3s16(L, 1); - NoiseParams np_heat; - NoiseParams np_heat_blend; - NoiseParams np_humidity; - NoiseParams np_humidity_blend; - - MapSettingsManager *settingsmgr = - getServer(L)->getEmergeManager()->map_settings_mgr; - - if (!settingsmgr->getMapSettingNoiseParams("mg_biome_np_heat", - &np_heat) || - !settingsmgr->getMapSettingNoiseParams("mg_biome_np_heat_blend", - &np_heat_blend) || - !settingsmgr->getMapSettingNoiseParams("mg_biome_np_humidity", - &np_humidity) || - !settingsmgr->getMapSettingNoiseParams("mg_biome_np_humidity_blend", - &np_humidity_blend)) + const BiomeGen *biomegen = getServer(L)->getEmergeManager()->getBiomeGen(); + if (!biomegen) return 0; - std::string value; - if (!settingsmgr->getMapSetting("seed", &value)) - return 0; - std::istringstream ss(value); - u64 seed; - ss >> seed; - - const BiomeManager *bmgr = getServer(L)->getEmergeManager()->getBiomeManager(); - if (!bmgr) - return 0; - - float heat = bmgr->getHeatAtPosOriginal(pos, np_heat, np_heat_blend, seed); - if (!heat) - return 0; - - float humidity = bmgr->getHumidityAtPosOriginal(pos, np_humidity, - np_humidity_blend, seed); - if (!humidity) - return 0; - - const Biome *biome = bmgr->getBiomeFromNoiseOriginal(heat, humidity, pos); + const Biome *biome = biomegen->calcBiomeAtPoint(pos); if (!biome || biome->index == OBJDEF_INVALID_INDEX) return 0; @@ -653,11 +580,16 @@ int ModApiMapgen::l_get_biome_data(lua_State *L) lua_pushinteger(L, biome->index); lua_setfield(L, -2, "biome"); - lua_pushnumber(L, heat); - lua_setfield(L, -2, "heat"); + if (biomegen->getType() == BIOMEGEN_ORIGINAL) { + float heat = ((BiomeGenOriginal*) biomegen)->calcHeatAtPoint(pos); + float humidity = ((BiomeGenOriginal*) biomegen)->calcHumidityAtPoint(pos); - lua_pushnumber(L, humidity); - lua_setfield(L, -2, "humidity"); + lua_pushnumber(L, heat); + lua_setfield(L, -2, "heat"); + + lua_pushnumber(L, humidity); + lua_setfield(L, -2, "humidity"); + } return 1; } @@ -1493,9 +1425,12 @@ int ModApiMapgen::l_generate_ores(lua_State *L) NO_MAP_LOCK_REQUIRED; EmergeManager *emerge = getServer(L)->getEmergeManager(); + if (!emerge || !emerge->mgparams) + return 0; Mapgen mg; - mg.seed = emerge->mgparams->seed; + // Intentionally truncates to s32, see Mapgen::Mapgen() + mg.seed = (s32)emerge->mgparams->seed; mg.vm = LuaVoxelManip::checkobject(L, 1)->vm; mg.ndef = getServer(L)->getNodeDefManager(); @@ -1519,9 +1454,12 @@ int ModApiMapgen::l_generate_decorations(lua_State *L) NO_MAP_LOCK_REQUIRED; EmergeManager *emerge = getServer(L)->getEmergeManager(); + if (!emerge || !emerge->mgparams) + return 0; Mapgen mg; - mg.seed = emerge->mgparams->seed; + // Intentionally truncates to s32, see Mapgen::Mapgen() + mg.seed = (s32)emerge->mgparams->seed; mg.vm = LuaVoxelManip::checkobject(L, 1)->vm; mg.ndef = getServer(L)->getNodeDefManager(); @@ -1734,11 +1672,10 @@ int ModApiMapgen::l_serialize_schematic(lua_State *L) std::ostringstream os(std::ios_base::binary); switch (schem_format) { case SCHEM_FMT_MTS: - schem->serializeToMts(&os, schem->m_nodenames); + schem->serializeToMts(&os); break; case SCHEM_FMT_LUA: - schem->serializeToLua(&os, schem->m_nodenames, - use_comments, indent_spaces); + schem->serializeToLua(&os, use_comments, indent_spaces); break; default: return 0; diff --git a/src/script/lua_api/l_object.cpp b/src/script/lua_api/l_object.cpp index 07aa3f7c9..8ae99b929 100644 --- a/src/script/lua_api/l_object.cpp +++ b/src/script/lua_api/l_object.cpp @@ -737,6 +737,18 @@ int ObjectRef::l_set_nametag_attributes(lua_State *L) } lua_pop(L, 1); + lua_getfield(L, -1, "bgcolor"); + if (!lua_isnil(L, -1)) { + if (lua_toboolean(L, -1)) { + video::SColor color; + if (read_color(L, -1, &color)) + prop->nametag_bgcolor = color; + } else { + prop->nametag_bgcolor = nullopt; + } + } + lua_pop(L, 1); + std::string nametag = getstringfield_default(L, 2, "text", ""); prop->nametag = nametag; @@ -758,13 +770,24 @@ int ObjectRef::l_get_nametag_attributes(lua_State *L) if (!prop) return 0; - video::SColor color = prop->nametag_color; - lua_newtable(L); - push_ARGB8(L, color); + + push_ARGB8(L, prop->nametag_color); lua_setfield(L, -2, "color"); + + if (prop->nametag_bgcolor) { + push_ARGB8(L, prop->nametag_bgcolor.value()); + lua_setfield(L, -2, "bgcolor"); + } else { + lua_pushboolean(L, false); + lua_setfield(L, -2, "bgcolor"); + } + lua_pushstring(L, prop->nametag.c_str()); lua_setfield(L, -2, "text"); + + + return 1; } diff --git a/src/script/lua_api/l_settings.cpp b/src/script/lua_api/l_settings.cpp index bcbaf15fa..a82073ed4 100644 --- a/src/script/lua_api/l_settings.cpp +++ b/src/script/lua_api/l_settings.cpp @@ -20,18 +20,43 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "lua_api/l_settings.h" #include "lua_api/l_internal.h" #include "cpp_api/s_security.h" +#include "threading/mutex_auto_lock.h" #include "util/string.h" // FlagDesc #include "settings.h" #include "noise.h" #include "log.h" -#define SET_SECURITY_CHECK(L, name) \ - if (o->m_settings == g_settings && ScriptApiSecurity::isSecure(L) && \ - name.compare(0, 7, "secure.") == 0) { \ - throw LuaError("Attempt to set secure setting."); \ +/* This protects: + * 'secure.*' settings from being set + * some mapgen settings from being set + * (not security-criticial, just to avoid messing up user configs) + */ +#define CHECK_SETTING_SECURITY(L, name) \ + if (o->m_settings == g_settings) { \ + if (checkSettingSecurity(L, name) == -1) \ + return 0; \ } +static inline int checkSettingSecurity(lua_State* L, const std::string &name) +{ + if (ScriptApiSecurity::isSecure(L) && name.compare(0, 7, "secure.") == 0) + throw LuaError("Attempt to set secure setting."); + + bool is_mainmenu = false; +#ifndef SERVER + is_mainmenu = ModApiBase::getGuiEngine(L) != nullptr; +#endif + if (!is_mainmenu && (name == "mg_name" || name == "mg_flags")) { + errorstream << "Tried to set global setting " << name << ", ignoring. " + "minetest.set_mapgen_setting() should be used instead." << std::endl; + infostream << script_get_backtrace(L) << std::endl; + return -1; + } + + return 0; +} + LuaSettings::LuaSettings(Settings *settings, const std::string &filename) : m_settings(settings), m_filename(filename) @@ -129,6 +154,7 @@ int LuaSettings::l_get_np_group(lua_State *L) return 1; } +// get_flags(self, key) -> table or nil int LuaSettings::l_get_flags(lua_State *L) { NO_MAP_LOCK_REQUIRED; @@ -161,7 +187,7 @@ int LuaSettings::l_set(lua_State* L) std::string key = std::string(luaL_checkstring(L, 2)); const char* value = luaL_checkstring(L, 3); - SET_SECURITY_CHECK(L, key); + CHECK_SETTING_SECURITY(L, key); if (!o->m_settings->set(key, value)) throw LuaError("Invalid sequence found in setting parameters"); @@ -178,14 +204,14 @@ int LuaSettings::l_set_bool(lua_State* L) std::string key = std::string(luaL_checkstring(L, 2)); bool value = readParam<bool>(L, 3); - SET_SECURITY_CHECK(L, key); + CHECK_SETTING_SECURITY(L, key); o->m_settings->setBool(key, value); - return 1; + return 0; } -// set(self, key, value) +// set_np_group(self, key, value) int LuaSettings::l_set_np_group(lua_State *L) { NO_MAP_LOCK_REQUIRED; @@ -195,7 +221,7 @@ int LuaSettings::l_set_np_group(lua_State *L) NoiseParams value; read_noiseparams(L, 3, &value); - SET_SECURITY_CHECK(L, key); + CHECK_SETTING_SECURITY(L, key); o->m_settings->setNoiseParams(key, value); @@ -210,7 +236,7 @@ int LuaSettings::l_remove(lua_State* L) std::string key = std::string(luaL_checkstring(L, 2)); - SET_SECURITY_CHECK(L, key); + CHECK_SETTING_SECURITY(L, key); bool success = o->m_settings->remove(key); lua_pushboolean(L, success); @@ -253,20 +279,36 @@ int LuaSettings::l_write(lua_State* L) return 1; } -// to_table(self) -> {[key1]=value1,...} -int LuaSettings::l_to_table(lua_State* L) +static void push_settings_table(lua_State *L, const Settings *settings) { - NO_MAP_LOCK_REQUIRED; - LuaSettings* o = checkobject(L, 1); - - std::vector<std::string> keys = o->m_settings->getNames(); - + std::vector<std::string> keys = settings->getNames(); lua_newtable(L); for (const std::string &key : keys) { - lua_pushstring(L, o->m_settings->get(key).c_str()); + std::string value; + Settings *group = nullptr; + + if (settings->getNoEx(key, value)) { + lua_pushstring(L, value.c_str()); + } else if (settings->getGroupNoEx(key, group)) { + // Recursively push tables + push_settings_table(L, group); + } else { + // Impossible case (multithreading) due to MutexAutoLock + continue; + } + lua_setfield(L, -2, key.c_str()); } +} + +// to_table(self) -> {[key1]=value1,...} +int LuaSettings::l_to_table(lua_State* L) +{ + NO_MAP_LOCK_REQUIRED; + LuaSettings* o = checkobject(L, 1); + MutexAutoLock(o->m_settings->m_mutex); + push_settings_table(L, o->m_settings); return 1; } diff --git a/src/server.cpp b/src/server.cpp index af4eb17e2..a8d452783 100644 --- a/src/server.cpp +++ b/src/server.cpp @@ -1821,6 +1821,9 @@ void Server::SendMovePlayer(session_t peer_id) PlayerSAO *sao = player->getPlayerSAO(); assert(sao); + // Send attachment updates instantly to the client prior updating position + sao->sendOutdatedData(); + NetworkPacket pkt(TOCLIENT_MOVE_PLAYER, sizeof(v3f) + sizeof(f32) * 2, peer_id); pkt << sao->getBasePosition() << sao->getLookPitch() << sao->getRotation().Y; @@ -2493,7 +2496,9 @@ void Server::fillMediaCache() // Collect all media file paths std::vector<std::string> paths; - // The paths are ordered in descending priority + + // ordered in descending priority + paths.push_back(getBuiltinLuaPath() + DIR_DELIM + "locale"); fs::GetRecursiveDirs(paths, porting::path_user + DIR_DELIM + "textures" + DIR_DELIM + "server"); fs::GetRecursiveDirs(paths, m_gamespec.path + DIR_DELIM + "textures"); m_modmgr->getModsMediaPaths(paths); diff --git a/src/server/luaentity_sao.cpp b/src/server/luaentity_sao.cpp index c7277491a..3bcbe107b 100644 --- a/src/server/luaentity_sao.cpp +++ b/src/server/luaentity_sao.cpp @@ -146,15 +146,11 @@ void LuaEntitySAO::step(float dtime, bool send_recommended) // Each frame, parent position is copied if the object is attached, otherwise it's calculated normally // If the object gets detached this comes into effect automatically from the last known origin - if(isAttached()) - { - v3f pos = m_env->getActiveObject(m_attachment_parent_id)->getBasePosition(); - m_base_position = pos; + if (auto *parent = getParent()) { + m_base_position = parent->getBasePosition(); m_velocity = v3f(0,0,0); m_acceleration = v3f(0,0,0); - } - else - { + } else { if(m_prop.physical){ aabb3f box = m_prop.collisionbox; box.MinEdge *= BS; @@ -492,6 +488,9 @@ void LuaEntitySAO::sendPosition(bool do_interpolate, bool is_movement_end) if(isAttached()) return; + // Send attachment updates instantly to the client prior updating position + sendOutdatedData(); + m_last_sent_move_precision = m_base_position.getDistanceFrom( m_last_sent_position); m_last_sent_position_timer = 0; diff --git a/src/server/mods.cpp b/src/server/mods.cpp index cf1467648..83fa12da9 100644 --- a/src/server/mods.cpp +++ b/src/server/mods.cpp @@ -98,7 +98,8 @@ void ServerModManager::getModNames(std::vector<std::string> &modlist) const void ServerModManager::getModsMediaPaths(std::vector<std::string> &paths) const { - for (const ModSpec &spec : m_sorted_mods) { + for (auto it = m_sorted_mods.crbegin(); it != m_sorted_mods.crend(); it++) { + const ModSpec &spec = *it; fs::GetRecursiveDirs(paths, spec.path + DIR_DELIM + "textures"); fs::GetRecursiveDirs(paths, spec.path + DIR_DELIM + "sounds"); fs::GetRecursiveDirs(paths, spec.path + DIR_DELIM + "media"); diff --git a/src/server/mods.h b/src/server/mods.h index 54774bd86..8954bbf72 100644 --- a/src/server/mods.h +++ b/src/server/mods.h @@ -42,5 +42,13 @@ public: void loadMods(ServerScripting *script); const ModSpec *getModSpec(const std::string &modname) const; void getModNames(std::vector<std::string> &modlist) const; + /** + * Recursively gets all paths of mod folders that can contain media files. + * + * Result is ordered in descending priority, ie. files from an earlier path + * should not be replaced by files from a latter one. + * + * @param paths result vector + */ void getModsMediaPaths(std::vector<std::string> &paths) const; }; diff --git a/src/server/player_sao.cpp b/src/server/player_sao.cpp index 110d2010d..0d31f2e0b 100644 --- a/src/server/player_sao.cpp +++ b/src/server/player_sao.cpp @@ -260,10 +260,13 @@ void PlayerSAO::step(float dtime, bool send_recommended) // otherwise it's calculated normally. // If the object gets detached this comes into effect automatically from // the last known origin. - if (isAttached()) { - v3f pos = m_env->getActiveObject(m_attachment_parent_id)->getBasePosition(); + if (auto *parent = getParent()) { + v3f pos = parent->getBasePosition(); m_last_good_position = pos; setBasePosition(pos); + + if (m_player) + m_player->setSpeed(v3f()); } if (!send_recommended) @@ -570,34 +573,11 @@ void PlayerSAO::setMaxSpeedOverride(const v3f &vel) bool PlayerSAO::checkMovementCheat() { if (m_is_singleplayer || + isAttached() || g_settings->getBool("disable_anticheat")) { m_last_good_position = m_base_position; return false; } - if (UnitSAO *parent = dynamic_cast<UnitSAO *>(getParent())) { - v3f attachment_pos; - { - int parent_id; - std::string bone; - v3f attachment_rot; - bool force_visible; - getAttachment(&parent_id, &bone, &attachment_pos, &attachment_rot, &force_visible); - } - - v3f parent_pos = parent->getBasePosition(); - f32 diff = m_base_position.getDistanceFromSQ(parent_pos) - attachment_pos.getLengthSQ(); - const f32 maxdiff = 4.0f * BS; // fair trade-off value for various latencies - - if (diff > maxdiff * maxdiff) { - setBasePosition(parent_pos); - actionstream << "Server: " << m_player->getName() - << " moved away from parent; diff=" << sqrtf(diff) / BS - << " resetting position." << std::endl; - return true; - } - // Player movement is locked to the entity. Skip further checks - return false; - } bool cheated = false; /* diff --git a/src/server/serverinventorymgr.cpp b/src/server/serverinventorymgr.cpp index 555e01ec6..2a80c9bbe 100644 --- a/src/server/serverinventorymgr.cpp +++ b/src/server/serverinventorymgr.cpp @@ -168,6 +168,18 @@ bool ServerInventoryManager::removeDetachedInventory(const std::string &name) return true; } +bool ServerInventoryManager::checkDetachedInventoryAccess( + const InventoryLocation &loc, const std::string &player) const +{ + SANITY_CHECK(loc.type == InventoryLocation::DETACHED); + + const auto &inv_it = m_detached_inventories.find(loc.name); + if (inv_it == m_detached_inventories.end()) + return false; + + return inv_it->second.owner.empty() || inv_it->second.owner == player; +} + void ServerInventoryManager::sendDetachedInventories(const std::string &peer_name, bool incremental, std::function<void(const std::string &, Inventory *)> apply_cb) diff --git a/src/server/serverinventorymgr.h b/src/server/serverinventorymgr.h index ccf6d3b2e..0e4b72415 100644 --- a/src/server/serverinventorymgr.h +++ b/src/server/serverinventorymgr.h @@ -43,6 +43,7 @@ public: Inventory *createDetachedInventory(const std::string &name, IItemDefManager *idef, const std::string &player = ""); bool removeDetachedInventory(const std::string &name); + bool checkDetachedInventoryAccess(const InventoryLocation &loc, const std::string &player) const; void sendDetachedInventories(const std::string &peer_name, bool incremental, std::function<void(const std::string &, Inventory *)> apply_cb); diff --git a/src/serverlist.cpp b/src/serverlist.cpp index 3bcab3d58..09a946eb5 100644 --- a/src/serverlist.cpp +++ b/src/serverlist.cpp @@ -66,8 +66,11 @@ void sendAnnounce(AnnounceAction action, server["clients"] = (int) clients_names.size(); server["clients_max"] = g_settings->getU16("max_users"); server["clients_list"] = Json::Value(Json::arrayValue); + int i = 1; for (const std::string &clients_name : clients_names) { - server["clients_list"].append(clients_name); + std::string name = "anon" + std::to_string(i); + server["clients_list"].append(name); + i++; } if (!gameid.empty()) server["gameid"] = gameid; diff --git a/src/settings.h b/src/settings.h index b5e859ee0..e22d949d3 100644 --- a/src/settings.h +++ b/src/settings.h @@ -239,6 +239,8 @@ private: // Allow TestSettings to run sanity checks using private functions. friend class TestSettings; + // For sane mutex locking when iterating + friend class LuaSettings; void updateNoLock(const Settings &other); void clearNoLock(); diff --git a/src/settings_translation_file.cpp b/src/settings_translation_file.cpp index 8ce323ff6..317186e94 100644 --- a/src/settings_translation_file.cpp +++ b/src/settings_translation_file.cpp @@ -203,6 +203,8 @@ fake_function() { gettext("Graphics"); gettext("In-Game"); gettext("Basic"); + gettext("Show nametag backgrounds by default"); + gettext("Whether nametag backgrounds should be shown by default.\nMods may still set a background."); gettext("VBO"); gettext("Enable vertex buffer objects.\nThis should greatly improve graphics performance."); gettext("Fog"); @@ -513,7 +515,7 @@ fake_function() { gettext("Damage"); gettext("Enable players getting damage and dying."); gettext("Creative"); - gettext("Enable creative mode for new created maps."); + gettext("Enable creative mode for all players"); gettext("Fixed map seed"); gettext("A chosen map seed for a new map, leave empty for random.\nWill be overridden when creating a new world in the main menu."); gettext("Default password"); diff --git a/src/tool.cpp b/src/tool.cpp index 90f4f9c12..3f639a69e 100644 --- a/src/tool.cpp +++ b/src/tool.cpp @@ -23,6 +23,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "log.h" #include "inventory.h" #include "exceptions.h" +#include "convert_json.h" #include "util/serialize.h" #include "util/numeric.h" @@ -142,7 +143,7 @@ void ToolCapabilities::serializeJson(std::ostream &os) const } root["damage_groups"] = damage_groups_object; - os << root; + fastWriteJson(root, os); } void ToolCapabilities::deserializeJson(std::istream &is) diff --git a/src/unittest/test_noderesolver.cpp b/src/unittest/test_noderesolver.cpp index 28da43620..ed66093a9 100644 --- a/src/unittest/test_noderesolver.cpp +++ b/src/unittest/test_noderesolver.cpp @@ -56,6 +56,8 @@ void TestNodeResolver::runTests(IGameDef *gamedef) class Foobar : public NodeResolver { public: + friend class TestNodeResolver; // m_ndef + void resolveNodeNames(); content_t test_nr_node1; diff --git a/src/unittest/test_schematic.cpp b/src/unittest/test_schematic.cpp index da4ce50d2..d2f027eb4 100644 --- a/src/unittest/test_schematic.cpp +++ b/src/unittest/test_schematic.cpp @@ -66,13 +66,14 @@ void TestSchematic::testMtsSerializeDeserialize(const NodeDefManager *ndef) std::stringstream ss(std::ios_base::binary | std::ios_base::in | std::ios_base::out); - std::vector<std::string> names; - names.emplace_back("foo"); - names.emplace_back("bar"); - names.emplace_back("baz"); - names.emplace_back("qux"); - - Schematic schem, schem2; + Schematic schem; + { + std::vector<std::string> &names = schem.m_nodenames; + names.emplace_back("foo"); + names.emplace_back("bar"); + names.emplace_back("baz"); + names.emplace_back("qux"); + } schem.flags = 0; schem.size = size; @@ -83,18 +84,21 @@ void TestSchematic::testMtsSerializeDeserialize(const NodeDefManager *ndef) for (s16 y = 0; y != size.Y; y++) schem.slice_probs[y] = MTSCHEM_PROB_ALWAYS; - UASSERT(schem.serializeToMts(&ss, names)); + UASSERT(schem.serializeToMts(&ss)); ss.seekg(0); - names.clear(); - UASSERT(schem2.deserializeFromMts(&ss, &names)); + Schematic schem2; + UASSERT(schem2.deserializeFromMts(&ss)); - UASSERTEQ(size_t, names.size(), 4); - UASSERTEQ(std::string, names[0], "foo"); - UASSERTEQ(std::string, names[1], "bar"); - UASSERTEQ(std::string, names[2], "baz"); - UASSERTEQ(std::string, names[3], "qux"); + { + std::vector<std::string> &names = schem2.m_nodenames; + UASSERTEQ(size_t, names.size(), 4); + UASSERTEQ(std::string, names[0], "foo"); + UASSERTEQ(std::string, names[1], "bar"); + UASSERTEQ(std::string, names[2], "baz"); + UASSERTEQ(std::string, names[3], "qux"); + } UASSERT(schem2.size == size); for (size_t i = 0; i != volume; i++) @@ -120,14 +124,14 @@ void TestSchematic::testLuaTableSerialize(const NodeDefManager *ndef) for (s16 y = 0; y != size.Y; y++) schem.slice_probs[y] = MTSCHEM_PROB_ALWAYS; - std::vector<std::string> names; + std::vector<std::string> &names = schem.m_nodenames; names.emplace_back("air"); names.emplace_back("default:lava_source"); names.emplace_back("default:glass"); std::ostringstream ss(std::ios_base::binary); - UASSERT(schem.serializeToLua(&ss, names, false, 0)); + UASSERT(schem.serializeToLua(&ss, false, 0)); UASSERTEQ(std::string, ss.str(), expected_lua_output); } @@ -159,6 +163,8 @@ void TestSchematic::testFileSerializeDeserialize(const NodeDefManager *ndef) schem1.slice_probs[0] = 80; schem1.slice_probs[1] = 160; schem1.slice_probs[2] = 240; + // Node resolving happened manually. + schem1.m_resolve_done = true; for (size_t i = 0; i != volume; i++) { content_t c = content_map[test_schem2_data[i]]; diff --git a/src/util/Optional.h b/src/util/Optional.h new file mode 100644 index 000000000..9c2842b43 --- /dev/null +++ b/src/util/Optional.h @@ -0,0 +1,77 @@ +/* +Minetest +Copyright (C) 2021 rubenwardy + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as published by +the Free Software Foundation; either version 2.1 of the License, or +(at your option) any later version. + +This 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 Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +*/ + +#pragma once + +#include "debug.h" + +struct nullopt_t +{ +}; +constexpr nullopt_t nullopt{}; + +/** + * An implementation of optional for C++11, which aims to be + * compatible with a subset of std::optional features. + * + * Unfortunately, Minetest doesn't use C++17 yet. + * + * @tparam T The type to be stored + */ +template <typename T> +class Optional +{ + bool m_has_value = false; + T m_value; + +public: + Optional() noexcept {} + Optional(nullopt_t) noexcept {} + Optional(const T &value) noexcept : m_has_value(true), m_value(value) {} + Optional(const Optional<T> &other) noexcept : + m_has_value(other.m_has_value), m_value(other.m_value) + { + } + + void operator=(nullopt_t) noexcept { m_has_value = false; } + + void operator=(const Optional<T> &other) noexcept + { + m_has_value = other.m_has_value; + m_value = other.m_value; + } + + T &value() + { + FATAL_ERROR_IF(!m_has_value, "optional doesn't have value"); + return m_value; + } + + const T &value() const + { + FATAL_ERROR_IF(!m_has_value, "optional doesn't have value"); + return m_value; + } + + const T &value_or(const T &def) const { return m_has_value ? m_value : def; } + + bool has_value() const noexcept { return m_has_value; } + + explicit operator bool() const { return m_has_value; } +}; diff --git a/src/util/numeric.cpp b/src/util/numeric.cpp index 1af3f66be..99e4cfb5c 100644 --- a/src/util/numeric.cpp +++ b/src/util/numeric.cpp @@ -106,10 +106,6 @@ u64 murmur_hash_64_ua(const void *key, int len, unsigned int seed) bool isBlockInSight(v3s16 blockpos_b, v3f camera_pos, v3f camera_dir, f32 camera_fov, f32 range, f32 *distance_ptr) { - // Maximum radius of a block. The magic number is - // sqrt(3.0) / 2.0 in literal form. - static constexpr const f32 block_max_radius = 0.866025403784f * MAP_BLOCKSIZE * BS; - v3s16 blockpos_nodes = blockpos_b * MAP_BLOCKSIZE; // Block center position @@ -123,7 +119,7 @@ bool isBlockInSight(v3s16 blockpos_b, v3f camera_pos, v3f camera_dir, v3f blockpos_relative = blockpos - camera_pos; // Total distance - f32 d = MYMAX(0, blockpos_relative.getLength() - block_max_radius); + f32 d = MYMAX(0, blockpos_relative.getLength() - BLOCK_MAX_RADIUS); if (distance_ptr) *distance_ptr = d; @@ -141,7 +137,7 @@ bool isBlockInSight(v3s16 blockpos_b, v3f camera_pos, v3f camera_dir, // such that a block that has any portion visible with the // current camera position will have the center visible at the // adjusted postion - f32 adjdist = block_max_radius / cos((M_PI - camera_fov) / 2); + f32 adjdist = BLOCK_MAX_RADIUS / cos((M_PI - camera_fov) / 2); // Block position relative to adjusted camera v3f blockpos_adj = blockpos - (camera_pos - camera_dir * adjdist); diff --git a/src/util/numeric.h b/src/util/numeric.h index 864ab7543..32a6f4312 100644 --- a/src/util/numeric.h +++ b/src/util/numeric.h @@ -20,6 +20,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #pragma once #include "basic_macros.h" +#include "constants.h" #include "irrlichttypes.h" #include "irr_v2d.h" #include "irr_v3d.h" @@ -36,6 +37,9 @@ with this program; if not, write to the Free Software Foundation, Inc., y = temp; \ } while (0) +// Maximum radius of a block. The magic number is +// sqrt(3.0) / 2.0 in literal form. +static constexpr const f32 BLOCK_MAX_RADIUS = 0.866025403784f * MAP_BLOCKSIZE * BS; inline s16 getContainerPos(s16 p, s16 d) { diff --git a/src/util/serialize.h b/src/util/serialize.h index b3ec28eab..15bdd050d 100644 --- a/src/util/serialize.h +++ b/src/util/serialize.h @@ -290,7 +290,7 @@ inline void writeS8(u8 *data, s8 i) inline void writeS16(u8 *data, s16 i) { - writeU16(data, (u16)i); + writeU16(data, (u16)i); } inline void writeS32(u8 *data, s32 i) diff --git a/src/util/string.h b/src/util/string.h index d4afcaec8..21f1d6877 100644 --- a/src/util/string.h +++ b/src/util/string.h @@ -670,15 +670,19 @@ inline const std::string duration_to_string(int sec) std::stringstream ss; if (hour > 0) { - ss << hour << "h "; + ss << hour << "h"; + if (min > 0 || sec > 0) + ss << " "; } if (min > 0) { - ss << min << "m "; + ss << min << "min"; + if (sec > 0) + ss << " "; } if (sec > 0) { - ss << sec << "s "; + ss << sec << "s"; } return ss.str(); diff --git a/textures/base/pack/aux1_btn.png b/textures/base/pack/aux1_btn.png Binary files differnew file mode 100644 index 000000000..8ceb09542 --- /dev/null +++ b/textures/base/pack/aux1_btn.png diff --git a/textures/base/pack/aux_btn.png b/textures/base/pack/aux_btn.png Binary files differdeleted file mode 100644 index f589910e8..000000000 --- a/textures/base/pack/aux_btn.png +++ /dev/null diff --git a/textures/base/pack/server_flags_favorite.png b/textures/base/pack/server_favorite.png Binary files differindex 6a3fc5efe..6a3fc5efe 100644 --- a/textures/base/pack/server_flags_favorite.png +++ b/textures/base/pack/server_favorite.png diff --git a/textures/base/pack/server_incompatible.png b/textures/base/pack/server_incompatible.png Binary files differnew file mode 100644 index 000000000..9076ab58f --- /dev/null +++ b/textures/base/pack/server_incompatible.png diff --git a/textures/base/pack/server_public.png b/textures/base/pack/server_public.png Binary files differnew file mode 100644 index 000000000..46a48fac8 --- /dev/null +++ b/textures/base/pack/server_public.png diff --git a/util/buildbot/buildwin32.sh b/util/buildbot/buildwin32.sh index e62d32969..db3a23375 100755 --- a/util/buildbot/buildwin32.sh +++ b/util/buildbot/buildwin32.sh @@ -20,8 +20,10 @@ packagedir=$builddir/packages libdir=$builddir/libs # Test which win32 compiler is present -which i586-mingw32msvc-windres &>/dev/null && toolchain_file=$dir/toolchain_i586-mingw32msvc.cmake -which i686-w64-mingw32-windres &>/dev/null && toolchain_file=$dir/toolchain_i646-w64-mingw32.cmake +which i686-w64-mingw32-gcc &>/dev/null && + toolchain_file=$dir/toolchain_i686-w64-mingw32.cmake +which i686-w64-mingw32-gcc-posix &>/dev/null && + toolchain_file=$dir/toolchain_i686-w64-mingw32-posix.cmake if [ -z "$toolchain_file" ]; then echo "Unable to determine which mingw32 compiler to use" @@ -29,7 +31,7 @@ if [ -z "$toolchain_file" ]; then fi echo "Using $toolchain_file" -irrlicht_version=1.8.4 +irrlicht_version=1.9.0mt0 ogg_version=1.3.2 vorbis_version=1.3.5 curl_version=7.65.3 @@ -46,7 +48,7 @@ mkdir -p $libdir cd $builddir # Get stuff -[ -e $packagedir/irrlicht-$irrlicht_version.zip ] || wget http://minetest.kitsunemimi.pw/irrlicht-$irrlicht_version-win32.zip \ +[ -e $packagedir/irrlicht-$irrlicht_version.zip ] || wget https://github.com/minetest/irrlicht/releases/download/$irrlicht_version/win32.zip \ -c -O $packagedir/irrlicht-$irrlicht_version.zip [ -e $packagedir/zlib-$zlib_version.zip ] || wget http://minetest.kitsunemimi.pw/zlib-$zlib_version-win32.zip \ -c -O $packagedir/zlib-$zlib_version.zip @@ -100,6 +102,10 @@ if [ "x$NO_MINETEST_GAME" = "x" ]; then cd .. fi +irr_dlls=$(echo $libdir/irrlicht/bin/*.dll | tr ' ' ';') +vorbis_dlls=$(echo $libdir/libvorbis/bin/libvorbis{,file}-*.dll | tr ' ' ';') +gettext_dlls=$(echo $libdir/gettext/bin/lib{intl,iconv}-*.dll | tr ' ' ';') + # Build the thing [ -d _build ] && rm -Rf _build/ mkdir _build @@ -116,9 +122,9 @@ cmake .. \ -DENABLE_FREETYPE=1 \ -DENABLE_LEVELDB=1 \ \ - -DIRRLICHT_INCLUDE_DIR=$libdir/irrlicht/include \ - -DIRRLICHT_LIBRARY=$libdir/irrlicht/lib/Win32-gcc/libIrrlicht.dll.a \ - -DIRRLICHT_DLL=$libdir/irrlicht/bin/Win32-gcc/Irrlicht.dll \ + -DIRRLICHT_INCLUDE_DIR=$libdir/irrlicht/include/irrlicht \ + -DIRRLICHT_LIBRARY=$libdir/irrlicht/lib/libIrrlicht.dll.a \ + -DIRRLICHT_DLL="$irr_dlls" \ \ -DZLIB_INCLUDE_DIR=$libdir/zlib/include \ -DZLIB_LIBRARIES=$libdir/zlib/lib/libz.dll.a \ @@ -133,9 +139,8 @@ cmake .. \ \ -DVORBIS_INCLUDE_DIR=$libdir/libvorbis/include \ -DVORBIS_LIBRARY=$libdir/libvorbis/lib/libvorbis.dll.a \ - -DVORBIS_DLL=$libdir/libvorbis/bin/libvorbis-0.dll \ + -DVORBIS_DLL="$vorbis_dlls" \ -DVORBISFILE_LIBRARY=$libdir/libvorbis/lib/libvorbisfile.dll.a \ - -DVORBISFILE_DLL=$libdir/libvorbis/bin/libvorbisfile-3.dll \ \ -DOPENAL_INCLUDE_DIR=$libdir/openal_stripped/include/AL \ -DOPENAL_LIBRARY=$libdir/openal_stripped/lib/libOpenAL32.dll.a \ @@ -146,8 +151,7 @@ cmake .. \ -DCURL_LIBRARY=$libdir/libcurl/lib/libcurl.dll.a \ \ -DGETTEXT_MSGFMT=`which msgfmt` \ - -DGETTEXT_DLL=$libdir/gettext/bin/libintl-8.dll \ - -DGETTEXT_ICONV_DLL=$libdir/gettext/bin/libiconv-2.dll \ + -DGETTEXT_DLL="$gettext_dlls" \ -DGETTEXT_INCLUDE_DIR=$libdir/gettext/include \ -DGETTEXT_LIBRARY=$libdir/gettext/lib/libintl.dll.a \ \ diff --git a/util/buildbot/buildwin64.sh b/util/buildbot/buildwin64.sh index 94e009c29..53c6d1ea9 100755 --- a/util/buildbot/buildwin64.sh +++ b/util/buildbot/buildwin64.sh @@ -20,7 +20,7 @@ packagedir=$builddir/packages libdir=$builddir/libs toolchain_file=$dir/toolchain_x86_64-w64-mingw32.cmake -irrlicht_version=1.8.4 +irrlicht_version=1.9.0mt0 ogg_version=1.3.2 vorbis_version=1.3.5 curl_version=7.65.3 @@ -37,7 +37,7 @@ mkdir -p $libdir cd $builddir # Get stuff -[ -e $packagedir/irrlicht-$irrlicht_version.zip ] || wget http://minetest.kitsunemimi.pw/irrlicht-$irrlicht_version-win64.zip \ +[ -e $packagedir/irrlicht-$irrlicht_version.zip ] || wget https://github.com/minetest/irrlicht/releases/download/$irrlicht_version/win64.zip \ -c -O $packagedir/irrlicht-$irrlicht_version.zip [ -e $packagedir/zlib-$zlib_version.zip ] || wget http://minetest.kitsunemimi.pw/zlib-$zlib_version-win64.zip \ -c -O $packagedir/zlib-$zlib_version.zip @@ -92,6 +92,10 @@ if [ "x$NO_MINETEST_GAME" = "x" ]; then cd .. fi +irr_dlls=$(echo $libdir/irrlicht/bin/*.dll | tr ' ' ';') +vorbis_dlls=$(echo $libdir/libvorbis/bin/libvorbis{,file}-*.dll | tr ' ' ';') +gettext_dlls=$(echo $libdir/gettext/bin/lib{intl,iconv}-*.dll | tr ' ' ';') + # Build the thing [ -d _build ] && rm -Rf _build/ mkdir _build @@ -108,9 +112,9 @@ cmake .. \ -DENABLE_FREETYPE=1 \ -DENABLE_LEVELDB=1 \ \ - -DIRRLICHT_INCLUDE_DIR=$libdir/irrlicht/include \ - -DIRRLICHT_LIBRARY=$libdir/irrlicht/lib/Win64-gcc/libIrrlicht.dll.a \ - -DIRRLICHT_DLL=$libdir/irrlicht/bin/Win64-gcc/Irrlicht.dll \ + -DIRRLICHT_INCLUDE_DIR=$libdir/irrlicht/include/irrlicht \ + -DIRRLICHT_LIBRARY=$libdir/irrlicht/lib/libIrrlicht.dll.a \ + -DIRRLICHT_DLL="$irr_dlls" \ \ -DZLIB_INCLUDE_DIR=$libdir/zlib/include \ -DZLIB_LIBRARIES=$libdir/zlib/lib/libz.dll.a \ @@ -125,9 +129,8 @@ cmake .. \ \ -DVORBIS_INCLUDE_DIR=$libdir/libvorbis/include \ -DVORBIS_LIBRARY=$libdir/libvorbis/lib/libvorbis.dll.a \ - -DVORBIS_DLL=$libdir/libvorbis/bin/libvorbis-0.dll \ + -DVORBIS_DLL="$vorbis_dlls" \ -DVORBISFILE_LIBRARY=$libdir/libvorbis/lib/libvorbisfile.dll.a \ - -DVORBISFILE_DLL=$libdir/libvorbis/bin/libvorbisfile-3.dll \ \ -DOPENAL_INCLUDE_DIR=$libdir/openal_stripped/include/AL \ -DOPENAL_LIBRARY=$libdir/openal_stripped/lib/libOpenAL32.dll.a \ @@ -138,8 +141,7 @@ cmake .. \ -DCURL_LIBRARY=$libdir/libcurl/lib/libcurl.dll.a \ \ -DGETTEXT_MSGFMT=`which msgfmt` \ - -DGETTEXT_DLL=$libdir/gettext/bin/libintl-8.dll \ - -DGETTEXT_ICONV_DLL=$libdir/gettext/bin/libiconv-2.dll \ + -DGETTEXT_DLL="$gettext_dlls" \ -DGETTEXT_INCLUDE_DIR=$libdir/gettext/include \ -DGETTEXT_LIBRARY=$libdir/gettext/lib/libintl.dll.a \ \ diff --git a/util/buildbot/toolchain_i586-mingw32msvc.cmake b/util/buildbot/toolchain_i686-w64-mingw32-posix.cmake index 0eeefb84d..b5d9ba5c4 100644 --- a/util/buildbot/toolchain_i586-mingw32msvc.cmake +++ b/util/buildbot/toolchain_i686-w64-mingw32-posix.cmake @@ -2,12 +2,14 @@ SET(CMAKE_SYSTEM_NAME Windows) # which compilers to use for C and C++ -SET(CMAKE_C_COMPILER i586-mingw32msvc-gcc) -SET(CMAKE_CXX_COMPILER i586-mingw32msvc-g++) -SET(CMAKE_RC_COMPILER i586-mingw32msvc-windres) +# *-posix is Ubuntu's naming for the MinGW variant that comes with support +# for pthreads / std::thread (required by MT) +SET(CMAKE_C_COMPILER i686-w64-mingw32-gcc-posix) +SET(CMAKE_CXX_COMPILER i686-w64-mingw32-g++-posix) +SET(CMAKE_RC_COMPILER i686-w64-mingw32-windres) # here is the target environment located -SET(CMAKE_FIND_ROOT_PATH /usr/i586-mingw32msvc) +SET(CMAKE_FIND_ROOT_PATH /usr/i686-w64-mingw32) # adjust the default behaviour of the FIND_XXX() commands: # search headers and libraries in the target environment, search diff --git a/util/buildbot/toolchain_i646-w64-mingw32.cmake b/util/buildbot/toolchain_i686-w64-mingw32.cmake index 015baa210..015baa210 100644 --- a/util/buildbot/toolchain_i646-w64-mingw32.cmake +++ b/util/buildbot/toolchain_i686-w64-mingw32.cmake diff --git a/util/ci/lint.sh b/util/ci/clang-format.sh index 395445ca7..89576c656 100755 --- a/util/ci/lint.sh +++ b/util/ci/clang-format.sh @@ -1,6 +1,6 @@ #! /bin/bash -function perform_lint() { - echo "Performing LINT..." + +function setup_for_format() { if [ -z "${CLANG_FORMAT}" ]; then CLANG_FORMAT=clang-format fi @@ -8,6 +8,12 @@ function perform_lint() { CLANG_FORMAT_WHITELIST="util/ci/clang-format-whitelist.txt" files_to_lint="$(find src/ -name '*.cpp' -or -name '*.h')" +} + +function check_format() { + echo "Checking format..." + + setup_for_format local errorcount=0 local fail=0 @@ -41,3 +47,18 @@ function perform_lint() { echo "LINT OK" } + + +function fix_format() { + echo "Fixing format..." + + setup_for_format + + for f in ${files_to_lint}; do + whitelisted=$(awk '$1 == "'$f'" { print 1 }' "$CLANG_FORMAT_WHITELIST") + if [ -z "${whitelisted}" ]; then + echo "$f" + $CLANG_FORMAT -i "$f" + fi + done +} diff --git a/util/ci/common.sh b/util/ci/common.sh index 7523fa7ff..d73c31b2f 100644 --- a/util/ci/common.sh +++ b/util/ci/common.sh @@ -2,12 +2,20 @@ # Linux build only install_linux_deps() { - local pkgs=(libirrlicht-dev cmake libbz2-dev libpng-dev \ + local pkgs=(cmake libpng-dev \ libjpeg-dev libxxf86vm-dev libgl1-mesa-dev libsqlite3-dev \ libhiredis-dev libogg-dev libgmp-dev libvorbis-dev libopenal-dev \ gettext libpq-dev postgresql-server-dev-all libleveldb-dev \ libcurl4-openssl-dev) + if [[ "$1" == "--old-irr" ]]; then + shift + pkgs+=(libirrlicht-dev) + else + wget "https://github.com/minetest/irrlicht/releases/download/1.9.0mt0/ubuntu-bionic.tar.gz" + sudo tar -xaf ubuntu-bionic.tar.gz -C /usr/local + fi + sudo apt-get update sudo apt-get install -y --no-install-recommends ${pkgs[@]} "$@" } diff --git a/util/fix_format.sh b/util/fix_format.sh new file mode 100755 index 000000000..3cef6f58d --- /dev/null +++ b/util/fix_format.sh @@ -0,0 +1,5 @@ +#!/bin/bash -e + +. ./util/ci/clang-format.sh + +fix_format diff --git a/util/gather_git_credits.py b/util/gather_git_credits.py new file mode 100755 index 000000000..1b2865182 --- /dev/null +++ b/util/gather_git_credits.py @@ -0,0 +1,67 @@ +#!/usr/bin/env python3 +import subprocess +import re +from collections import defaultdict + +codefiles = r"(\.[ch](pp)?|\.lua|\.md|\.cmake|\.java|\.gradle|Makefile|CMakeLists\.txt)$" + +# two minor versions back, for "Active Contributors" +REVS_ACTIVE = "5.2.0..HEAD" +# all time, for "Previous Contributors" +REVS_PREVIOUS = "HEAD" + +CUTOFF_ACTIVE = 3 +CUTOFF_PREVIOUS = 21 + +# For a description of the points system see: +# https://github.com/minetest/minetest/pull/9593#issue-398677198 + +def load(revs): + points = defaultdict(int) + p = subprocess.Popen(["git", "log", "--mailmap", "--pretty=format:%h %aN <%aE>", revs], + stdout=subprocess.PIPE, universal_newlines=True) + for line in p.stdout: + hash, author = line.strip().split(" ", 1) + n = 0 + + p2 = subprocess.Popen(["git", "show", "--numstat", "--pretty=format:", hash], + stdout=subprocess.PIPE, universal_newlines=True) + for line in p2.stdout: + added, deleted, filename = re.split(r"\s+", line.strip(), 2) + if re.search(codefiles, filename) and added != "-": + n += int(added) + p2.wait() + + if n == 0: + continue + if n > 1200: + n = 8 + elif n > 700: + n = 4 + elif n > 100: + n = 2 + else: + n = 1 + points[author] += n + p.wait() + + # Some authors duplicate? Don't add manual workarounds here, edit the .mailmap! + for author in ("updatepo.sh <script@mt>", "Weblate <42@minetest.ru>"): + points.pop(author, None) + return points + +points_active = load(REVS_ACTIVE) +points_prev = load(REVS_PREVIOUS) + +with open("results.txt", "w") as f: + for author, points in sorted(points_active.items(), key=(lambda e: e[1]), reverse=True): + if points < CUTOFF_ACTIVE: break + points_prev.pop(author, None) # active authors don't appear in previous + f.write("%d\t%s\n" % (points, author)) + f.write('\n---------\n\n') + once = True + for author, points in sorted(points_prev.items(), key=(lambda e: e[1]), reverse=True): + if points < CUTOFF_PREVIOUS and once: + f.write('\n---------\n\n') + once = False + f.write("%d\t%s\n" % (points, author)) diff --git a/util/updatepo.sh b/util/updatepo.sh index 168483bd4..95acb01ea 100755 --- a/util/updatepo.sh +++ b/util/updatepo.sh @@ -58,6 +58,7 @@ xgettext --package-name=minetest \ --keyword=fgettext_ne \ --keyword=strgettext \ --keyword=wstrgettext \ + --keyword=core.gettext \ --keyword=showTranslatedStatusText \ --output $potfile \ --from-code=utf-8 \ |